From 23b5780f987f08d1c8d42b5aa9120b47ec5bf81e Mon Sep 17 00:00:00 2001 From: spencer kelly Date: Thu, 28 Nov 2019 10:54:03 -0500 Subject: [PATCH] 12.0.0 --- builds/compromise.js | 20 +++++++++++++++++--- builds/compromise.js.map | 2 +- builds/compromise.min.js | 2 +- builds/compromise.mjs | 20 +++++++++++++++++--- package.json | 2 +- src/_version.js | 2 +- 6 files changed, 38 insertions(+), 10 deletions(-) diff --git a/builds/compromise.js b/builds/compromise.js index 175fcd7ac..f634c6d49 100644 --- a/builds/compromise.js +++ b/builds/compromise.js @@ -3104,7 +3104,7 @@ fromJSON: fromJSON }; - var _version = '12.0.0-rc3'; + var _version = '12.0.0'; var _data = { "Comparative": "true¦better", @@ -8462,7 +8462,7 @@ var methods$5 = {}; // allow helper methods like .adjectives() and .adverbs() - var arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['money', '#Money'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']]; + var arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']]; arr.forEach(function (a) { methods$5[a[0]] = function (n) { var m = this.match(a[1]); @@ -8490,6 +8490,18 @@ return m; }; + /** money + currency pair */ + + + methods$5.money = function (n) { + var m = this.match('#Money #Currency?'); + + if (typeof n === 'number') { + m = m.get(n); + } + + return m; + }; /** return all cities, countries, addresses, and regions */ @@ -10435,7 +10447,9 @@ val.match('#Value [#PresentTense]').tag('Plural', 'value-presentTense'); //money - val.match('#Value+ #Currency').tag('Money', 'value-currency').lastTerm().tag('Unit', 'money-unit'); + var m = val.match('#Value+ #Currency'); + m.lastTerm().tag('Unit', 'money-unit'); + m.match('#Value+').tag('Money', 'value-currency'); } //5 kg. diff --git a/builds/compromise.js.map b/builds/compromise.js.map index 56e92ade3..6f5669a27 100644 --- a/builds/compromise.js.map +++ b/builds/compromise.js.map @@ -1 +1 @@ -{"version":3,"file":"compromise.js","sources":["../src/Term/_id.js","../src/Term/normalize/unicode.js","../src/Term/normalize/isAcronym.js","../src/Term/normalize/clean.js","../src/Term/normalize/reduce.js","../src/Term/parse.js","../src/Term/methods/01-case.js","../src/Term/methods/02-punctuation.js","../src/Term/methods/_doesMatch.js","../src/Term/methods/03-misc.js","../src/Term/methods/04-text.js","../src/Term/methods/_bestTag.js","../src/Term/methods/05-json.js","../src/Term/methods/index.js","../src/Term/tag/fns.js","../src/Term/tag/add.js","../src/Term/tag/unTag.js","../src/Term/tag/canBe.js","../src/Term/tag/index.js","../src/Term/Term.js","../src/Phrase/methods/01-utils.js","../src/Phrase/methods/02-text.js","../src/Phrase/methods/03-change.js","../src/Phrase/insert/append.js","../src/Phrase/insert/prepend.js","../src/Phrase/insert/delete.js","../src/Phrase/methods/04-insert.js","../src/Phrase/methods/05-json.js","../src/Phrase/methods/06-lookahead.js","../src/Phrase/methods/index.js","../src/Phrase/match/02-failFast.js","../src/Phrase/match/03-tryMatch.js","../src/Doc/match/parseToken.js","../src/Doc/match/syntax.js","../src/Phrase/match/01-matchAll.js","../src/Phrase/match/not.js","../src/Phrase/match/index.js","../src/Phrase/Phrase.js","../src/01-tokenizer/Pool.js","../src/01-tokenizer/01-sentences.js","../src/01-tokenizer/02-words.js","../src/01-tokenizer/index.js","../src/_version.js","../src/World/_data.js","../src/World/tags/tags/nouns.js","../src/World/tags/tags/verbs.js","../src/World/tags/tags/values.js","../src/World/tags/tags/misc.js","../src/World/tags/inference/_color.js","../src/World/tags/inference/_isA.js","../src/World/tags/inference/_notA.js","../src/World/tags/inference/_lineage.js","../src/World/tags/inference/index.js","../src/World/tags/index.js","../node_modules/efrt-unpack/efrt-unpack.min.js","../src/World/addWords.js","../src/World/addIrregulars.js","../src/World/data/misc.js","../src/World/data/plurals.js","../src/World/data/conjugations.js","../src/transforms/conjugate/suffixes.js","../src/transforms/conjugate/01-suffixes.js","../src/transforms/conjugate/02-generic.js","../src/transforms/conjugate/index.js","../src/transforms/adjectives/toSuperlative.js","../src/transforms/adjectives/toComparative.js","../src/transforms/adjectives/index.js","../src/transforms/toPlural/_rules.js","../src/transforms/toPlural/index.js","../src/transforms/toSingular/_rules.js","../src/transforms/toSingular/index.js","../src/transforms/toInfinitive/_transform.js","../src/transforms/toInfinitive/_guess.js","../src/transforms/toInfinitive/index.js","../src/World/World.js","../src/Doc/methods/01-utils.js","../src/Doc/methods/02-accessors.js","../src/Doc/methods/03-match.js","../src/Doc/methods/_setTag.js","../src/Doc/methods/04-tag.js","../src/Doc/methods/05-loops.js","../src/Doc/methods/06-lookup.js","../src/Doc/methods/insert/01-replace.js","../src/Doc/methods/insert/02-insert.js","../src/Doc/methods/output/01-text.js","../src/Doc/methods/output/02-json.js","../src/world/tags/tags/nouns.js","../src/world/tags/tags/verbs.js","../src/world/tags/tags/values.js","../src/world/tags/tags/misc.js","../src/world/tags/inference/_color.js","../src/world/tags/inference/_isA.js","../src/world/tags/inference/_notA.js","../src/world/tags/inference/_lineage.js","../src/world/tags/inference/index.js","../src/world/tags/index.js","../src/Doc/methods/_debug.js","../src/Doc/methods/output/_topk.js","../src/Doc/methods/output/03-out.js","../src/Doc/methods/output/04-export.js","../src/Doc/methods/transform/01-sort.js","../src/Doc/methods/transform/_methods.js","../src/Doc/methods/transform/02-normalize.js","../src/Doc/methods/transform/03-split.js","../src/Doc/methods/transform/04-case.js","../src/Doc/methods/transform/05-whitespace.js","../src/Doc/methods/transform/06-join.js","../src/Doc/methods/transform/07-contract.js","../src/Doc/methods/index.js","../src/Subset/_simple.js","../src/02-tagger/01-init/01-lexicon.js","../src/02-tagger/01-init/02-punctuation.js","../src/02-tagger/01-init/data/startsWith.js","../src/02-tagger/01-init/03-prefixes.js","../src/02-tagger/01-init/data/endsWith.js","../src/02-tagger/01-init/data/suffixMap.js","../src/02-tagger/01-init/04-suffixes.js","../src/02-tagger/01-init/data/emoticons.js","../src/02-tagger/01-init/05-emoji.js","../src/02-tagger/01-init/index.js","../src/02-tagger/02-fallbacks/data/markov.js","../src/02-tagger/02-fallbacks/01-neighbours.js","../src/02-tagger/02-fallbacks/02-case.js","../src/02-tagger/02-fallbacks/03-stem.js","../src/02-tagger/02-fallbacks/data/isPlural.js","../src/02-tagger/02-fallbacks/04-plurals.js","../src/02-tagger/02-fallbacks/data/organizations.js","../src/02-tagger/02-fallbacks/05-organizations.js","../src/02-tagger/02-fallbacks/index.js","../src/02-tagger/03-contractions/01-negative.js","../src/02-tagger/03-contractions/02-simple.js","../src/02-tagger/03-contractions/03-irregulars.js","../src/02-tagger/03-contractions/04-possessive.js","../src/02-tagger/03-contractions/05-perfectTense.js","../src/02-tagger/03-contractions/06-ranges.js","../src/02-tagger/03-contractions/index.js","../src/02-tagger/04-correction/fixMisc.js","../src/02-tagger/04-correction/fixThe.js","../src/02-tagger/04-correction/fixNouns.js","../src/02-tagger/04-correction/fixPerson.js","../src/02-tagger/04-correction/fixVerb.js","../src/02-tagger/04-correction/fixAdjective.js","../src/02-tagger/04-correction/fixValue.js","../src/02-tagger/04-correction/fixDates.js","../src/02-tagger/04-correction/index.js","../src/02-tagger/index.js","../src/Subset/Abbreviations.js","../src/Subset/Acronyms.js","../src/Subset/Clauses.js","../src/Subset/Contractions.js","../src/Subset/Lists.js","../src/Subset/Nouns/plural/hasPlural.js","../src/Subset/Nouns/getArticle.js","../src/Subset/Nouns/plural/isPlural/_rules.js","../src/Subset/Nouns/plural/isPlural/index.js","../src/Subset/Nouns/toPossessive.js","../src/Subset/Nouns/parse.js","../src/Subset/Nouns/methods.js","../src/Subset/Nouns/index.js","../src/Subset/Parentheses.js","../src/Subset/Possessives.js","../src/Subset/Quotations.js","../src/Subset/Verbs/toInfinitive/index.js","../src/Subset/Verbs/isPlural.js","../src/Subset/Verbs/toNegative.js","../src/Subset/Verbs/parse.js","../src/Subset/Verbs/conjugate/toBe.js","../src/Subset/Verbs/conjugate/index.js","../src/Subset/Verbs/methods.js","../src/Subset/Verbs/index.js","../src/Subset/People.js","../src/Subset/index.js","../src/Doc/Doc.js","../src/index.js"],"sourcesContent":["//this is a not-well-thought-out way to reduce our dependence on `object===object` stuff\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split('')\n\n//generates a unique id for this term\nfunction makeId(str) {\n str = str || '_'\n let text = str + '-'\n for (let i = 0; i < 7; i++) {\n text += chars[Math.floor(Math.random() * chars.length)]\n }\n return text\n}\n\nmodule.exports = makeId\n","//a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii.\n//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n//http://en.wikipedia.org/wiki/List_of_Unicode_characters\n//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\nlet compact = {\n '!': '¡',\n '?': '¿Ɂ',\n '\"': '“”\"❝❞',\n \"'\": '‘‛❛❜',\n '-': '—–',\n a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ',\n b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ',\n d: 'ÐĎďĐđƉƊȡƋƌǷ',\n e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ',\n f: 'ƑƒϜϝӺӻҒғſ',\n g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n I: 'ÌÍÎÏ',\n i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії',\n j: 'ĴĵǰȷɈɉϳЈј',\n k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n m: 'ΜϺϻМмӍӎ',\n n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ',\n p: 'ƤƿΡρϷϸϼРрҎҏÞ',\n q: 'Ɋɋ',\n r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ',\n v: 'νѴѵѶѷ',\n w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ',\n}\n//decompress data into two hashes\nlet unicode = {}\nObject.keys(compact).forEach(function(k) {\n compact[k].split('').forEach(function(s) {\n unicode[s] = k\n })\n})\n\nconst killUnicode = str => {\n let chars = str.split('')\n chars.forEach((s, i) => {\n if (unicode[s]) {\n chars[i] = unicode[s]\n }\n })\n return chars.join('')\n}\nmodule.exports = killUnicode\n// console.log(killUnicode('bjŏȒk—Ɏó'));\n","const periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/\nconst oneLetterAcronym = /^[A-Z]\\.,?$/\nconst noPeriodAcronym = /[A-Z]{2,}('s|,)?$/\nconst lowerCaseAcronym = /([a-z]\\.){2,}[a-z]\\.?$/\n\nconst isAcronym = function(str) {\n //like N.D.A\n if (periodAcronym.test(str) === true) {\n return true\n }\n //like c.e.o\n if (lowerCaseAcronym.test(str) === true) {\n return true\n }\n //like 'F.'\n if (oneLetterAcronym.test(str) === true) {\n return true\n }\n //like NDA\n if (noPeriodAcronym.test(str) === true) {\n return true\n }\n return false\n}\nmodule.exports = isAcronym\n","const killUnicode = require('./unicode')\nconst isAcronym = require('./isAcronym')\nconst hasSlash = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/\n\n/** some basic operations on a string to reduce noise */\nconst clean = function(str) {\n str = str || ''\n str = str.toLowerCase()\n str = str.trim()\n let original = str\n //(very) rough ASCII transliteration - bjŏrk -> bjork\n str = killUnicode(str)\n //rough handling of slashes - 'see/saw'\n if (hasSlash.test(str) === true) {\n str = str.replace(/\\/.*/, '')\n }\n //#tags, @mentions\n str = str.replace(/^[#@]/, '')\n //punctuation\n str = str.replace(/[,;.!?]+$/, '')\n // coerce single curly quotes\n str = str.replace(/[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]+/g, \"'\")\n // coerce double curly quotes\n str = str.replace(\n /[\\u0022\\u00AB\\u00BB\\u201C\\u201D\\u201E\\u201F\\u2033\\u2034\\u2036\\u2037\\u2E42\\u301D\\u301E\\u301F\\uFF02]+/g,\n '\"'\n )\n //coerce Unicode ellipses\n str = str.replace(/\\u2026/g, '...')\n //en-dash\n str = str.replace(/\\u2013/g, '-')\n //lookin'->looking (make it easier for conjugation)\n if (/[a-z][^aeiou]in['’]$/.test(str) === true) {\n str = str.replace(/in['’]$/, 'ing')\n }\n //turn re-enactment to reenactment\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n str = str.replace('-', '')\n }\n //strip leading & trailing grammatical punctuation\n if (/^[:;]/.test(str) === false) {\n str = str.replace(/\\.{3,}$/g, '')\n str = str.replace(/[\",\\.!:;\\?\\)]+$/g, '')\n str = str.replace(/^['\"\\(]+/g, '')\n }\n //do this again..\n str = str.trim()\n //oh shucks,\n if (str === '') {\n str = original\n }\n //compact acronyms\n if (isAcronym(str)) {\n str = str.replace(/\\./g, '')\n }\n //nice-numbers\n str = str.replace(/([0-9]),([0-9])/g, '$1$2')\n return str\n}\n\nmodule.exports = clean\n// console.log(normalize('Dr. V Cooper'));\n","/** reduced is one step further than clean */\nconst reduced = function(str) {\n // remove apostrophes\n str = str.replace(/['’]s$/, '')\n str = str.replace(/s['’]$/, 's')\n return str\n}\nmodule.exports = reduced\n","const normalize = require('./normalize/clean')\nconst reduce = require('./normalize/reduce')\n// basically, tokenize for terms.\n\n//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n//we have slightly different rules for start/end - like #hashtags.\nconst startings = /^[ \\n\\t\\.’'\\[\\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\\-?‘’;\\/⁄·\\&*\\•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~|‖¦©℗®℠™¤₳฿\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F]+/\nconst endings = /[ \\n\\t\\.’'\\[\\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\\-?‘’;\\/⁄·\\&*@\\•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~|‖¦©℗®℠™¤₳฿\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E]+$/\n\n//money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\nconst hasSlash = /\\//\nconst hasApostrophe = /['’]/\nconst minusNumber = /^[-+\\.][0-9]/\n\n/** turn given text into a parsed-up object\n * seperate the 'meat' of the word from the whitespace+punctuation\n */\nconst parseTerm = str => {\n let original = str\n let pre = ''\n let post = ''\n str = str.replace(startings, found => {\n pre = found\n // support '-40'\n if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) {\n pre = ''\n return found\n }\n return ''\n })\n str = str.replace(endings, found => {\n post = found\n // keep s-apostrophe - \"flanders'\" or \"chillin'\"\n if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) {\n post = post.replace(hasApostrophe, '')\n return `'`\n }\n return ''\n })\n //we went too far..\n if (str === '') {\n // do a very mild parse, and hope for the best.\n original = original.replace(/ *$/, after => {\n post = after || ''\n return ''\n })\n str = original\n pre = ''\n post = post\n }\n\n // create the various forms of our text,\n let clean = normalize(str)\n const parsed = {\n text: str,\n clean: clean,\n reduced: reduce(clean),\n pre: pre,\n post: post,\n }\n // support aliases for slashes\n if (hasSlash.test(str)) {\n str.split(hasSlash).forEach(word => {\n parsed.alias = parsed.alias || {}\n parsed.alias[word.trim()] = true\n })\n }\n return parsed\n}\nmodule.exports = parseTerm\n","const titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/\nconst upperCase = /^[A-Z]+s?$/\n\n/** convert all text to uppercase */\nexports.toUpperCase = function() {\n this.text = this.text.toUpperCase()\n return this\n}\n\n/** convert all text to lowercase */\nexports.toLowerCase = function() {\n this.text = this.text.toLowerCase()\n return this\n}\n\n/** only set the first letter to uppercase\n * leave any existing uppercase alone\n */\nexports.toTitleCase = function() {\n this.text = this.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, x => x.toUpperCase()) //support unicode?\n return this\n}\n\n/** if all letters are uppercase */\nexports.isUpperCase = function() {\n return upperCase.test(this.text)\n}\n/** if the first letter is uppercase, and the rest are lowercase */\nexports.isTitleCase = function() {\n return titleCase.test(this.text)\n}\nexports.titleCase = exports.isTitleCase\n","// these methods are called with '@hasComma' in the match syntax\n// various unicode quotation-mark formats\nconst startQuote =\n '(\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F)'\nconst endQuote =\n '(\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E)'\n\n/** search the term's 'post' punctuation */\nexports.hasPost = function(punct) {\n return this.post.indexOf(punct) !== -1\n}\n/** search the term's 'pre' punctuation */\nexports.hasPre = function(punct) {\n return this.pre.indexOf(punct) !== -1\n}\n\n/** does it have a quotation symbol? */\nexports.hasQuote = function() {\n return startQuote.test(this.pre) || endQuote.test(this.post)\n}\n\n/** does it have a comma? */\nexports.hasComma = function() {\n return this.hasPost(',')\n}\n\n/** does it end in a period? */\nexports.hasPeriod = function() {\n return this.hasPost('.') === true && this.hasPost('...') === false\n}\n\n/** does it end in an exclamation */\nexports.hasExclamation = function() {\n return this.hasPost('!')\n}\n\n/** does it end with a question mark? */\nexports.hasQuestionMark = function() {\n return this.hasPost('?') || this.hasPost('¿')\n}\n\n/** is there a ... at the end? */\nexports.hasEllipses = function() {\n return this.hasPost('..') || this.hasPost('…')\n}\n\n/** is there a semicolon after this word? */\nexports.hasSemicolon = function() {\n return this.hasPost(';')\n}\n\n/** is there a slash '/' in this word? */\nexports.hasSlash = function() {\n return /\\//.test(this.text)\n}\n\n/** a hyphen connects two words like-this */\nexports.hasHyphen = function() {\n const hyphen = /(-|–|—)/\n return hyphen.test(this.post) || hyphen.test(this.pre)\n}\n/** a dash separates words - like that */\nexports.hasDash = function() {\n const hyphen = / (-|–|—) /\n return hyphen.test(this.post) || hyphen.test(this.pre)\n}\n\n/** is it multiple words combinded */\nexports.hasContraction = function() {\n return Boolean(this.implicit)\n}\n\n/** try to sensibly put this punctuation mark into the term */\nexports.addPunctuation = function(punct) {\n // dont add doubles\n if (punct === ',' || punct === ';') {\n this.post = this.post.replace(punct, '')\n }\n this.post = punct + this.post\n return this\n}\n","//declare it up here\nlet wrapMatch = function() {}\n\n/** ignore optional/greedy logic, straight-up term match*/\nconst doesMatch = function(t, reg, index, length) {\n // support id matches\n if (reg.id === t.id) {\n return true\n }\n // support '.'\n if (reg.anything === true) {\n return true\n }\n // support '^' (in parentheses)\n if (reg.start === true && index !== 0) {\n return false\n }\n // support '$' (in parentheses)\n if (reg.end === true && index !== length - 1) {\n return false\n }\n //support a text match\n if (reg.word !== undefined) {\n //match contractions\n if (t.implicit !== null && t.implicit === reg.word) {\n return true\n }\n // term aliases for slashes and things\n if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) {\n return true\n }\n // support ~ match\n if (reg.soft === true && reg.word === t.root) {\n return true\n }\n //match either .clean or .text\n return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced\n }\n //support #Tag\n if (reg.tag !== undefined) {\n return t.tags[reg.tag] === true\n }\n //support @method\n if (reg.method !== undefined) {\n if (typeof t[reg.method] === 'function' && t[reg.method]() === true) {\n return true\n }\n return false\n }\n //support /reg/\n if (reg.regex !== undefined) {\n return reg.regex.test(t.clean)\n }\n //support (one|two)\n if (reg.choices !== undefined) {\n // try to support && operator\n if (reg.operator === 'and') {\n // must match them all\n return reg.choices.every(r => wrapMatch(t, r, index, length))\n }\n // or must match one\n return reg.choices.some(r => wrapMatch(t, r, index, length))\n }\n return false\n}\n\n// wrap result for !negative match logic\nwrapMatch = function(t, reg, index, length) {\n let result = doesMatch(t, reg, index, length)\n if (reg.negative === true) {\n return !result\n }\n return result\n}\n\nmodule.exports = wrapMatch\n","const doesMatch = require('./_doesMatch')\nconst isAcronym = require('../normalize/isAcronym')\n\n// these tags aren't juicy-enough\nconst boring = {}\n\n/** check a match object against this term */\nexports.doesMatch = function(reg, index, length) {\n return doesMatch(this, reg, index, length)\n}\n\n/** does this term look like an acronym? */\nexports.isAcronym = function() {\n return isAcronym(this.text)\n}\n\n/** is this term implied by a contraction? */\nexports.isImplicit = function() {\n return this.text === '' && Boolean(this.implicit)\n}\n\n/** does the term have at least one good tag? */\nexports.isKnown = function() {\n return Object.keys(this.tags).some(t => boring[t] !== true)\n}\n\n/** cache the root property of the term */\nexports.setRoot = function(world) {\n let transform = world.transforms\n let str = this.implicit || this.clean\n if (this.tags.Plural) {\n str = transform.toSingular(str, world)\n }\n if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) {\n let tense = null\n if (this.tags.PastTense) {\n tense = 'PastTense'\n } else if (this.tags.Gerund) {\n tense = 'Gerund'\n } else if (this.tags.PresentTense) {\n tense = 'PresentTense'\n } else if (this.tags.Participle) {\n tense = 'Participle'\n } else if (this.tags.Actor) {\n tense = 'Actor'\n }\n str = transform.toInfinitive(str, world, tense)\n }\n this.root = str\n}\n","const killUnicode = require('../normalize/unicode')\nconst hasSpace = /[\\s-]/\nconst isUpperCase = /^[A-Z-]+$/\n\n// const titleCase = str => {\n// return str.charAt(0).toUpperCase() + str.substr(1)\n// }\n\n/** return various text formats of this term */\nexports.textOut = function(options, showPre, showPost) {\n options = options || {}\n let word = this.text\n let before = this.pre\n let after = this.post\n\n // -word-\n if (options.reduced === true) {\n word = this.reduced || ''\n }\n if (options.root === true) {\n word = this.root || ''\n }\n if (options.implicit === true && this.implicit) {\n word = this.implicit || ''\n }\n if (options.normal === true) {\n word = this.clean || this.text || ''\n }\n if (options.root === true) {\n word = this.root || this.reduced || ''\n }\n if (options.unicode === true) {\n word = killUnicode(word)\n }\n // cleanup case\n if (options.titlecase === true) {\n if (this.tags.ProperNoun && !this.titleCase()) {\n // word = titleCase(word)\n } else if (this.tags.Acronym) {\n word = word.toUpperCase() //uppercase acronyms\n } else if (isUpperCase.test(word) && !this.tags.Acronym) {\n // lowercase everything else\n word = word.toLowerCase()\n }\n }\n if (options.lowercase === true) {\n word = word.toLowerCase()\n }\n // remove the '.'s from 'F.B.I.' (safely)\n if (options.acronyms === true && this.tags.Acronym) {\n word = word.replace(/\\./g, '')\n }\n\n // -before/after-\n if (options.whitespace === true || options.root) {\n before = ''\n after = ' '\n if ((hasSpace.test(this.post) === false || options.last) && !this.implicit) {\n after = ''\n }\n }\n if (options.punctuation === true && !options.root) {\n //normalized end punctuation\n if (this.hasPost('.') === true) {\n after = '.' + after\n } else if (this.hasPost('?') === true) {\n after = '?' + after\n } else if (this.hasPost('!') === true) {\n after = '!' + after\n } else if (this.hasPost(',') === true) {\n after = ',' + after\n } else if (this.hasEllipses() === true) {\n after = '...' + after\n }\n }\n if (showPre !== true) {\n before = ''\n }\n if (showPost !== true) {\n // let keep = after.match(/\\)/) || ''\n after = '' //keep //after.replace(/[ .?!,]+/, '')\n }\n // remove the '.' from 'Mrs.' (safely)\n if (options.abbreviations === true && this.tags.Abbreviation) {\n after = after.replace(/^\\./, '')\n }\n return before + word + after\n}\n","const boringTags = {\n Auxiliary: 1,\n Possessive: 1,\n}\n\n/** a subjective ranking of tags kinda tfidf-based */\nconst rankTags = function(term, world) {\n let tags = Object.keys(term.tags)\n const tagSet = world.tags\n tags = tags.sort((a, b) => {\n //bury the tags we dont want\n if (boringTags[b] || !tagSet[b]) {\n return -1\n }\n // unknown tags are interesting\n if (!tagSet[b]) {\n return 1\n }\n if (!tagSet[a]) {\n return 0\n }\n // then sort by #of parent tags (most-specific tags first)\n if (tagSet[a].lineage.length > tagSet[b].lineage.length) {\n return 1\n }\n if (tagSet[a].isA.length > tagSet[b].isA.length) {\n return -1\n }\n return 0\n })\n return tags\n}\nmodule.exports = rankTags\n","const rankTags = require('./_bestTag')\n\nconst jsonDefault = {\n text: true,\n tags: true,\n implicit: true,\n\n clean: false,\n id: false,\n index: false,\n offset: false,\n whitespace: false,\n bestTag: false,\n}\n\n/** return various metadata for this term */\nexports.json = function(options, world) {\n options = options || {}\n options = Object.assign({}, jsonDefault, options)\n let result = {}\n\n // default on\n if (options.text) {\n result.text = this.text\n }\n if (options.normal) {\n result.normal = this.normal\n }\n\n if (options.tags) {\n result.tags = Object.keys(this.tags)\n }\n\n // default off\n if (options.clean) {\n result.clean = this.clean\n }\n if (options.id || options.offset) {\n result.id = this.id\n }\n if (options.implicit && this.implicit !== null) {\n result.implicit = this.implicit\n }\n if (options.whitespace) {\n result.pre = this.pre\n result.post = this.post\n }\n if (options.bestTag) {\n result.bestTag = rankTags(this, world)[0]\n }\n\n return result\n}\n","module.exports = Object.assign(\n {},\n require('./01-case'),\n require('./02-punctuation'),\n require('./03-misc'),\n require('./04-text'),\n require('./05-json')\n)\n","/** add spaces at the end */\nconst padEnd = function(str, width) {\n str = str.toString()\n while (str.length < width) {\n str += ' '\n }\n return str\n}\n\n/** output for verbose-mode */\nexports.logTag = function(t, tag, reason) {\n let log = '\\x1b[33m' + padEnd(t.clean, 15) + '\\x1b[0m + \\x1b[32m' + tag + '\\x1b[0m '\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason + ''\n }\n console.log(log)\n}\n\n/** output for verbose mode */\nexports.logUntag = function(t, tag, reason) {\n let log = '\\x1b[33m' + padEnd(t.clean, 3) + ' \\x1b[31m - #' + tag + '\\x1b[0m '\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason\n }\n console.log(log)\n}\n\nexports.isArray = function(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nexports.titleCase = str => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n","const fns = require('./fns')\n\n/** add a tag, and its descendents, to a term */\nconst addTag = function(t, tag, reason, world) {\n let tagset = world.tags\n //support '.' or '-' notation for skipping the tag\n if (tag === '' || tag === '.' || tag === '-') {\n return\n }\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '')\n }\n tag = fns.titleCase(tag)\n //if we already got this one\n if (t.tags[tag] === true) {\n return\n }\n // log it?\n const isVerbose = world.isVerbose()\n if (isVerbose === true) {\n fns.logTag(t, tag, reason)\n }\n //add tag\n t.tags[tag] = true //whee!\n\n //check tagset for any additional things to do...\n if (tagset.hasOwnProperty(tag) === true) {\n //add parent Tags\n tagset[tag].isA.forEach(down => {\n t.tags[down] = true\n if (isVerbose === true) {\n fns.logTag(t, '→ ' + down)\n }\n })\n //remove any contrary tags\n t.unTag(tagset[tag].notA, '←', world)\n }\n}\n\n/** support an array of tags */\nconst addTags = function(term, tags, reason, world) {\n if (fns.isArray(tags) === true) {\n tags.forEach(tag => addTag(term, tag, reason, world))\n } else {\n addTag(term, tags, reason, world)\n }\n}\nmodule.exports = addTags\n","const fns = require('./fns')\n\n/** remove this tag, and its descentents from the term */\nconst unTag = function(t, tag, reason, world) {\n const isVerbose = world.isVerbose()\n //support '*' for removing all tags\n if (tag === '*') {\n t.tags = {}\n return t\n }\n // remove the tag\n if (t.tags[tag] === true && t.tags.hasOwnProperty(tag) === true) {\n delete t.tags[tag]\n //log in verbose-mode\n if (isVerbose === true) {\n fns.logUntag(t, tag, reason)\n }\n }\n //delete downstream tags too\n const tagset = world.tags\n if (tagset[tag]) {\n let lineage = tagset[tag].lineage\n for (let i = 0; i < lineage.length; i++) {\n // unTag(t, also[i], ' - - - ', world) //recursive\n if (t.tags[lineage[i]] === true) {\n delete t.tags[lineage[i]]\n if (isVerbose === true) {\n fns.logUntag(t, ' - ' + lineage[i])\n }\n }\n }\n }\n return t\n}\n\n//handle an array of tags\nconst untagAll = function(term, tags, reason, world) {\n if (fns.isArray(tags) === true) {\n tags.forEach(tag => unTag(term, tag, reason, world))\n } else {\n unTag(term, tags, reason, world)\n }\n}\nmodule.exports = untagAll\n","'use strict'\n\n//recursively-check compatibility of this tag and term\nconst canBe = function(term, tag, world) {\n const tagset = world.tags\n // cleanup tag\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '')\n }\n //fail-fast\n if (tagset[tag] === undefined) {\n return true\n }\n //loop through tag's contradictory tags\n let enemies = tagset[tag].notA || []\n for (let i = 0; i < enemies.length; i++) {\n if (term.tags[enemies[i]] === true) {\n return false\n }\n }\n if (tagset[tag].isA !== undefined) {\n return canBe(term, tagset[tag].isA, world) //recursive\n }\n return true\n}\n\nmodule.exports = canBe\n","const add = require('./add')\nconst unTag = require('./unTag')\nconst canBe = require('./canBe')\n\n/** add a tag or tags, and their descendents to this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\nexports.tag = function(tags, reason, world) {\n add(this, tags, reason, world)\n return this\n}\n\n/** only tag this term if it's consistent with it's current tags */\nexports.tagSafe = function(tags, reason, world) {\n if (canBe(this, tags, world)) {\n add(this, tags, reason, world)\n }\n return this\n}\n\n/** remove a tag or tags, and their descendents from this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\nexports.unTag = function(tags, reason, world) {\n unTag(this, tags, reason, world)\n return this\n}\n\n/** is this tag consistent with the word's current tags?\n * @param {string | string[]} tags - a tag or tags\n * @returns {boolean}\n */\nexports.canBe = function(tags, world) {\n return canBe(this, tags, world)\n}\n","const makeId = require('./_id')\nconst parseTerm = require('./parse')\nconst methods = require('./methods')\nconst tagMethods = require('./tag')\n\nclass Term {\n constructor(text = '') {\n text = String(text)\n let obj = parseTerm(text)\n // the various forms of our text\n this.text = obj.text || ''\n this.clean = obj.clean\n this.reduced = obj.reduced\n this.root = obj.root || null\n this.implicit = obj.implicit || null\n\n this.pre = obj.pre || ''\n this.post = obj.post || ''\n this.tags = {}\n this.prev = null\n this.next = null\n this.id = makeId(obj.clean)\n this.isA = 'Term' // easier than .constructor...\n // support alternative matches\n if (obj.alias) {\n this.alias = obj.alias\n }\n }\n /** set the text of the Term to something else*/\n set(str) {\n let obj = parseTerm(str)\n this.text = obj.text\n this.clean = obj.clean\n return this\n }\n}\n\n/** create a deep-copy of this term */\nTerm.prototype.clone = function() {\n let term = new Term(this.text)\n term.pre = this.pre\n term.post = this.post\n term.tags = Object.assign({}, this.tags)\n //use the old id, so it can be matched with .match(doc)\n // term.id = this.id\n return term\n}\n\nObject.assign(Term.prototype, methods)\nObject.assign(Term.prototype, tagMethods)\n\nmodule.exports = Term\n","/** return a flat array of Term objects */\nexports.terms = function(n) {\n let terms = [this.pool.get(this.start)]\n if (this.length === 0) {\n return []\n }\n for (let i = 0; i < this.length - 1; i += 1) {\n let id = terms[terms.length - 1].next\n if (id === null) {\n // throw new Error('linked-list broken')\n console.error(\"Compromise error: Linked list broken in phrase '\" + this.start + \"'\")\n break\n }\n let term = this.pool.get(id)\n terms.push(term)\n //return this one?\n if (n !== undefined && n === i) {\n return terms[n]\n }\n }\n if (n !== undefined) {\n return terms[n]\n }\n return terms\n}\n\n/** return a shallow or deep copy of this phrase */\nexports.clone = function(isShallow) {\n if (isShallow) {\n return this.buildFrom(this.start, this.length)\n }\n //how do we clone part of the pool?\n let terms = this.terms()\n let newTerms = terms.map(t => t.clone())\n //connect these new ids up\n newTerms.forEach((t, i) => {\n //add it to the pool..\n this.pool.add(t)\n if (newTerms[i + 1]) {\n t.next = newTerms[i + 1].id\n }\n if (newTerms[i - 1]) {\n t.prev = newTerms[i - 1].id\n }\n })\n return this.buildFrom(newTerms[0].id, newTerms.length)\n}\n\n/** return last term object */\nexports.lastTerm = function() {\n let terms = this.terms()\n return terms[terms.length - 1]\n}\n\n/** quick lookup for a term id */\nexports.hasId = function(wantId) {\n if (this.length === 0 || !wantId) {\n return false\n }\n if (this.start === wantId) {\n return true\n }\n let lastId = this.start\n for (let i = 0; i < this.length - 1; i += 1) {\n let term = this.pool.get(lastId)\n if (term === undefined) {\n console.error(`Compromise error: Linked list broken. Missing term '${lastId}' in phrase '${this.start}'\\n`)\n // throw new Error('linked List error')\n return false\n }\n if (term.next === wantId) {\n return true\n }\n lastId = term.next\n }\n return false\n}\n\n/** how many seperate, non-empty words is it? */\nexports.wordCount = function() {\n return this.terms().filter(t => t.text !== '').length\n}\n","const trimEnd = function(str) {\n return str.replace(/ +$/, '')\n}\n\n/** produce output in the given format */\nexports.text = function(options = {}, isFirst, isLast) {\n if (typeof options === 'string') {\n if (options === 'normal') {\n options = {\n whitespace: true,\n unicode: true,\n lowercase: true,\n punctuation: true,\n acronyms: true,\n abbreviations: true,\n implicit: true,\n normal: true,\n }\n } else if (options === 'clean') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n }\n } else if (options === 'reduced') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: false, //FIXME: reversed\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: true,\n }\n } else if (options === 'root') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n root: true,\n }\n } else {\n options = {}\n }\n }\n let terms = this.terms()\n //this this phrase a complete sentence?\n let isFull = false\n if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) {\n isFull = true\n }\n let text = terms.reduce((str, t, i) => {\n options.last = isLast && i === terms.length - 1\n let showPre = true\n let showPost = true\n if (isFull === false) {\n // dont show beginning whitespace\n if (i === 0 && isFirst) {\n showPre = false\n }\n // dont show end-whitespace\n if (i === terms.length - 1 && isLast) {\n showPost = false\n }\n }\n let txt = t.textOut(options, showPre, showPost)\n // if (options.titlecase && i === 0) {\n // txt = titleCase(txt)\n // }\n return str + txt\n }, '')\n //full-phrases show punctuation, but not whitespace\n if (isFull === true && isLast) {\n text = trimEnd(text)\n }\n if (options.trim) {\n text = text.trim()\n }\n return text\n}\n","/** remove start and end whitespace */\nexports.trim = function() {\n let terms = this.terms()\n if (terms.length > 0) {\n //trim starting\n terms[0].pre = terms[0].pre.replace(/^\\s+/, '')\n //trim ending\n let lastTerm = terms[terms.length - 1]\n lastTerm.post = lastTerm.post.replace(/\\s+$/, '')\n }\n return this\n}\n","const endOfSentence = /[.?!]\\s*$/\n\n// replacing a 'word.' with a 'word!'\nconst combinePost = function(before, after) {\n //only transfer the whitespace\n if (endOfSentence.test(after)) {\n let whitespace = before.match(/\\s*$/)\n return after + whitespace\n }\n return before\n}\n\n//add whitespace to the start of the second bit\nconst addWhitespace = function(beforeTerms, newTerms) {\n // add any existing pre-whitespace to beginning\n newTerms[0].pre = beforeTerms[0].pre\n let lastTerm = beforeTerms[beforeTerms.length - 1]\n\n //add any existing punctuation to end of our new terms\n let newTerm = newTerms[newTerms.length - 1]\n newTerm.post = combinePost(lastTerm.post, newTerm.post)\n // remove existing punctuation\n lastTerm.post = ''\n\n //before ←[space] - after\n if (lastTerm.post === '') {\n lastTerm.post += ' '\n }\n}\n\n//insert this segment into the linked-list\nconst stitchIn = function(main, newPhrase) {\n // console.log(main.text(), newPhrase.text())\n let afterId = main.lastTerm().next\n //connect ours in (main → newPhrase)\n main.lastTerm().next = newPhrase.start\n //stich the end in (newPhrase → after)\n newPhrase.lastTerm().next = afterId\n //do it backwards, too\n if (afterId) {\n // newPhrase ← after\n let afterTerm = main.pool.get(afterId)\n afterTerm.prev = newPhrase.lastTerm().id\n }\n // before ← newPhrase\n let beforeId = main.terms(0).id\n if (beforeId) {\n let newTerm = newPhrase.terms(0)\n newTerm.prev = beforeId\n }\n}\n\n// avoid stretching a phrase twice.\nconst unique = function(list) {\n return list.filter((o, i) => {\n return list.indexOf(o) === i\n })\n}\n\n//append one phrase onto another.\nconst appendPhrase = function(before, newPhrase, doc) {\n let beforeTerms = before.terms()\n //spruce-up the whitespace issues\n addWhitespace(beforeTerms, newPhrase.terms())\n //insert this segment into the linked-list\n stitchIn(before, newPhrase)\n\n // stretch!\n // make each effected phrase longer\n let toStretch = [before]\n let hasId = before.start\n let docs = [doc]\n\n docs = docs.concat(doc.parents()) // find them all!\n\n docs.forEach(parent => {\n // only the phrases that should change\n let shouldChange = parent.list.filter(p => {\n return p.hasId(hasId)\n })\n toStretch = toStretch.concat(shouldChange)\n })\n // don't double-count a phrase\n toStretch = unique(toStretch)\n // console.log(toStretch)\n toStretch.forEach(p => {\n p.length += newPhrase.length\n })\n return before\n}\nmodule.exports = appendPhrase\n","const hasSpace = / /\n\n//a new space needs to be added, either on the new phrase, or the old one\n// '[new] [◻old]' -or- '[old] [◻new] [old]'\nconst addWhitespace = function(newTerms) {\n //add a space before our new text?\n\n // add a space after our text\n let lastTerm = newTerms[newTerms.length - 1]\n if (hasSpace.test(lastTerm.post) === false) {\n lastTerm.post += ' '\n }\n\n // let term = original.pool.get(original.start)\n // if (term.prev) {\n // //add our space ahead of our new terms\n // let firstWord = newTerms[0]\n // if (hasSpace.test(firstWord.post) === false) {\n // firstWord.post += ' '\n // }\n // return\n // }\n\n //otherwise, add our space to the start of original\n // if (hasSpace.test(term.pre) === false) {\n // term.pre = ' ' + term.pre\n // }\n return\n}\n\n//insert this segment into the linked-list\nconst stitchIn = function(main, newPhrase, newTerms) {\n // [newPhrase] → [main]\n let lastTerm = newTerms[newTerms.length - 1]\n lastTerm.next = main.start\n // [before] → [main]\n let pool = main.pool\n let start = pool.get(main.start)\n if (start.prev) {\n let before = pool.get(start.prev)\n before.next = newPhrase.start\n }\n //do it backwards, too\n // before ← newPhrase\n newTerms[0].prev = main.terms(0).prev\n // newPhrase ← main\n main.terms(0).prev = lastTerm.id\n}\n\n//recursively increase the length of all parent phrases\n// const stretchAll = function(doc, oldStart, newPhrase) {\n// //find our phrase to stretch\n// let phrase = doc.list.find(p => p.hasId(oldStart) || p.hasId(newPhrase.start))\n// if (phrase === undefined) {\n// console.error('compromise error: Prepend missing start - ' + oldStart)\n// return\n// }\n// //should we update the phrase's starting?\n// if (phrase.start === oldStart) {\n// phrase.start = newPhrase.start\n// }\n// // console.log(newPhrase)\n// phrase.length += newPhrase.length\n// if (doc.from) {\n// stretchAll(doc.from, oldStart, newPhrase)\n// }\n// }\nconst unique = function(list) {\n return list.filter((o, i) => {\n return list.indexOf(o) === i\n })\n}\n\n//append one phrase onto another\nconst joinPhrase = function(original, newPhrase, doc) {\n const starterId = original.start\n let newTerms = newPhrase.terms()\n //spruce-up the whitespace issues\n addWhitespace(newTerms, original)\n //insert this segment into the linked-list\n stitchIn(original, newPhrase, newTerms)\n //increase the length of our phrases\n let toStretch = [original]\n let docs = [doc]\n docs = docs.concat(doc.parents())\n docs.forEach(d => {\n // only the phrases that should change\n let shouldChange = d.list.filter(p => {\n return p.hasId(starterId) || p.hasId(newPhrase.start)\n })\n toStretch = toStretch.concat(shouldChange)\n })\n // don't double-count\n toStretch = unique(toStretch)\n // stretch these phrases\n toStretch.forEach(p => {\n p.length += newPhrase.length\n // change the start too, if necessary\n if (p.start === starterId) {\n p.start = newPhrase.start\n }\n })\n return original\n}\nmodule.exports = joinPhrase\n","//recursively decrease the length of all the parent phrases\nconst shrinkAll = function(doc, id, deleteLength, after) {\n let arr = doc.parents()\n arr.push(doc)\n\n arr.forEach(d => {\n //find our phrase to shrink\n let phrase = d.list.find(p => p.hasId(id))\n if (!phrase) {\n return\n }\n phrase.length -= deleteLength\n // does it start with this soon-removed word?\n if (phrase.start === id) {\n phrase.start = after.id\n }\n })\n // cleanup empty phrase objects\n doc.list = doc.list.filter(p => {\n if (!p.start || !p.length) {\n return false\n }\n return true\n })\n}\n\n/** wrap the linked-list around these terms\n * so they don't appear any more\n */\nconst deletePhrase = function(phrase, doc) {\n let pool = doc.pool()\n let terms = phrase.terms()\n\n //grab both sides of the chain,\n let prev = pool.get(terms[0].prev) || {}\n let after = pool.get(terms[terms.length - 1].next) || {}\n\n if (terms[0].implicit && prev.implicit) {\n prev.set(prev.implicit)\n prev.post += ' '\n }\n\n // //first, change phrase lengths\n shrinkAll(doc, phrase.start, phrase.length, after)\n\n // connect [prev]->[after]\n if (prev) {\n prev.next = after.id\n }\n // connect [prev]<-[after]\n if (after) {\n after.prev = prev.id\n }\n\n // lastly, actually delete the terms from the pool?\n // for (let i = 0; i < terms.length; i++) {\n // pool.remove(terms[i].id)\n // }\n}\nmodule.exports = deletePhrase\n","const append = require('../insert/append')\nconst prepend = require('../insert/prepend')\nconst deletePhrase = require('../insert/delete')\n// const tokenize = require('../../01-tokenizer')\n\n/** put this text at the end */\nexports.append = function(newPhrase, doc) {\n append(this, newPhrase, doc)\n return this\n}\n\n/** add this text to the beginning */\nexports.prepend = function(newPhrase, doc) {\n prepend(this, newPhrase, doc)\n return this\n}\n\nexports.delete = function(doc) {\n deletePhrase(this, doc)\n return this\n}\n\n// stich-in newPhrase, stretch 'doc' + parents\nexports.replace = function(newPhrase, doc) {\n // doc.debug()\n //add it do the end\n let firstLength = this.length\n append(this, newPhrase, doc)\n\n //delete original terms\n let tmp = this.buildFrom(this.start, this.length)\n tmp.length = firstLength\n // console.log(tmp)\n deletePhrase(tmp, doc)\n // return doc\n}\n\n/**\n * Turn this phrase object into 3 phrase objects\n */\nexports.splitOn = function(p) {\n let terms = this.terms()\n let result = {\n before: null,\n match: null,\n after: null,\n }\n let index = terms.findIndex(t => t.id === p.start)\n if (index === -1) {\n return result\n }\n //make all three sections into phrase-objects\n let start = terms.slice(0, index)\n if (start.length > 0) {\n result.before = this.buildFrom(start[0].id, start.length)\n }\n let match = terms.slice(index, index + p.length)\n if (match.length > 0) {\n result.match = this.buildFrom(match[0].id, match.length)\n }\n let end = terms.slice(index + p.length, terms.length)\n if (end.length > 0) {\n result.after = this.buildFrom(end[0].id, end.length, this.pool)\n }\n return result\n}\n","/** return json metadata for this phrase */\nexports.json = function(options = {}, world) {\n let res = {}\n // text data\n if (options.text) {\n res.text = this.text()\n }\n if (options.normal) {\n res.normal = this.text('normal')\n }\n if (options.clean) {\n res.clean = this.text('clean')\n }\n if (options.reduced) {\n res.reduced = this.text('reduced')\n }\n if (options.root) {\n res.root = this.text('root')\n }\n if (options.trim) {\n if (res.text) {\n res.text = res.text.trim()\n }\n if (res.normal) {\n res.normal = res.normal.trim()\n }\n if (res.reduced) {\n res.reduced = res.reduced.trim()\n }\n }\n // terms data\n if (options.terms) {\n if (options.terms === true) {\n options.terms = {}\n }\n res.terms = this.terms().map(t => t.json(options.terms, world))\n }\n return res\n}\n","/** match any terms after this phrase */\nexports.lookAhead = function(regs) {\n // if empty match string, return everything after\n if (!regs) {\n regs = '.*'\n }\n let pool = this.pool\n // get a list of all terms preceding our start\n let terms = []\n const getAfter = function(id) {\n let term = pool.get(id)\n if (!term) {\n return\n }\n terms.push(term)\n if (term.prev) {\n getAfter(term.next) //recursion\n }\n }\n let all = this.terms()\n let lastTerm = all[all.length - 1]\n getAfter(lastTerm.next)\n if (terms.length === 0) {\n return []\n }\n // got the terms, make a phrase from them\n let p = this.buildFrom(terms[0].id, terms.length)\n return p.match(regs)\n}\n\n/** match any terms before this phrase */\nexports.lookBehind = function(regs) {\n // if empty match string, return everything before\n if (!regs) {\n regs = '.*'\n }\n let pool = this.pool\n // get a list of all terms preceding our start\n let terms = []\n const getBefore = function(id) {\n let term = pool.get(id)\n if (!term) {\n return\n }\n terms.push(term)\n if (term.prev) {\n getBefore(term.prev) //recursion\n }\n }\n let term = pool.get(this.start)\n getBefore(term.prev)\n if (terms.length === 0) {\n return []\n }\n // got the terms, make a phrase from them\n let p = this.buildFrom(terms[terms.length - 1].id, terms.length)\n return p.match(regs)\n}\n","module.exports = Object.assign(\n {},\n require('./01-utils'),\n require('./02-text'),\n require('./03-change'),\n require('./04-insert'),\n require('./05-json'),\n require('./06-lookahead')\n)\n","// try to avoid doing the match\nconst failFast = function(p, regs) {\n if (regs.length === 0) {\n return true\n }\n for (let i = 0; i < regs.length; i += 1) {\n let reg = regs[i]\n\n // //logical quick-ones\n if (reg.optional !== true && reg.negative !== true) {\n //start/end impossibilites\n if (reg.start === true && i > 0) {\n return true\n }\n // has almost no effect\n if (p.cache.words !== undefined && reg.word !== undefined && p.cache.words.hasOwnProperty(reg.word) !== true) {\n // console.log('skip')\n return true\n }\n }\n //this is not possible\n if (reg.anything === true && reg.negative === true) {\n return true\n }\n }\n return false\n}\nmodule.exports = failFast\n","// i formally apologize for how complicated this is.\n\n//found a match? it's greedy? keep going!\nconst getGreedy = function(terms, t, reg, until, index, length) {\n let start = t\n for (; t < terms.length; t += 1) {\n //stop for next-reg match\n if (until && terms[t].doesMatch(until, index + t, length)) {\n return t\n }\n let count = t - start + 1\n // is it max-length now?\n if (reg.max !== undefined && count === reg.max) {\n return t\n }\n //stop here\n if (terms[t].doesMatch(reg, index + t, length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null\n }\n return t\n }\n }\n return t\n}\n\n//'unspecific greedy' is a weird situation.\nconst greedyTo = function(terms, t, nextReg, index, length) {\n //if there's no next one, just go off the end!\n if (!nextReg) {\n return terms.length\n }\n //otherwise, we're looking for the next one\n for (; t < terms.length; t += 1) {\n if (terms[t].doesMatch(nextReg, index + t, length) === true) {\n return t\n }\n }\n //guess it doesn't exist, then.\n return null\n}\n\n/** tries to match a sequence of terms, starting from here */\nconst tryHere = function(terms, regs, index, length) {\n let captures = []\n let t = 0\n // we must satisfy each rule in 'regs'\n for (let r = 0; r < regs.length; r += 1) {\n let reg = regs[r]\n\n //should we fail here?\n if (!terms[t]) {\n //are all remaining regs optional?\n const hasNeeds = regs.slice(r).some(remain => !remain.optional)\n if (hasNeeds === false) {\n break\n }\n // have unmet needs\n return false\n }\n\n //support 'unspecific greedy' .* properly\n if (reg.anything === true && reg.greedy === true) {\n let skipto = greedyTo(terms, t, regs[r + 1], reg, index, length)\n // ensure it's long enough\n if (reg.min !== undefined && skipto - t < reg.min) {\n return false\n }\n // reduce it back, if it's too long\n if (reg.max !== undefined && skipto - t > reg.max) {\n t = t + reg.max\n continue\n }\n //TODO: support [*] properly\n if (skipto === null) {\n return false //couldn't find it\n }\n t = skipto\n continue\n }\n\n //if it looks like a match, continue\n if (reg.anything === true || terms[t].doesMatch(reg, index + t, length) === true) {\n let startAt = t\n // okay, it was a match, but if it optional too,\n // we should check the next reg too, to skip it?\n if (reg.optional && regs[r + 1]) {\n // does the next reg match it too?\n if (terms[t].doesMatch(regs[r + 1], index + t, length) === true) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n if (!terms[t + 1] || terms[t + 1].doesMatch(regs[r + 1], index + t, length) === false) {\n r += 1\n }\n }\n }\n //advance to the next term!\n t += 1\n //check any ending '$' flags\n if (reg.end === true) {\n //if this isn't the last term, refuse the match\n if (t !== terms.length && reg.greedy !== true) {\n return false\n }\n }\n //try keep it going!\n if (reg.greedy === true) {\n t = getGreedy(terms, t, reg, regs[r + 1], index, length)\n if (t === null) {\n return false //greedy was too short\n }\n }\n if (reg.capture) {\n captures.push(startAt)\n //add greedy-end to capture\n if (t > 1 && reg.greedy) {\n captures.push(t - 1)\n }\n }\n continue\n }\n\n //bah, who cares, keep going\n if (reg.optional === true) {\n continue\n }\n // should we skip-over an implicit word?\n if (terms[t].isImplicit() && regs[r - 1] && terms[t + 1]) {\n // does the next one match?\n if (terms[t + 1].doesMatch(reg, index + t, length)) {\n t += 2\n continue\n }\n }\n // console.log(' ❌\\n\\n')\n return false\n }\n\n //we got to the end of the regs, and haven't failed!\n //try to only return our [captured] segment\n if (captures.length > 0) {\n //make sure the array is the full-length we'd return anyways\n let arr = terms.slice(captures[0], captures[captures.length - 1] + 1)\n //make sure the array is t-length (so we skip ahead full-length)\n for (let tmp = 0; tmp < t; tmp++) {\n arr[tmp] = arr[tmp] || null //these get cleaned-up after\n }\n return arr\n }\n //return our result\n return terms.slice(0, t)\n}\nmodule.exports = tryHere\n","/* break-down a match expression into this:\n{\n word:'',\n tag:'',\n regex:'',\n\n start:false,\n end:false,\n negative:false,\n anything:false,\n greedy:false,\n optional:false,\n\n capture:false,\n choices:[],\n}\n*/\nconst hasMinMax = /\\{([0-9]+,?[0-9]*)\\}/\nconst andSign = /&&/\n\nconst titleCase = str => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\nconst end = function(str) {\n return str[str.length - 1]\n}\nconst start = function(str) {\n return str[0]\n}\nconst stripStart = function(str) {\n return str.substr(1)\n}\nconst stripEnd = function(str) {\n return str.substr(0, str.length - 1)\n}\nconst stripBoth = function(str) {\n str = stripStart(str)\n str = stripEnd(str)\n return str\n}\n\n//\nconst parseToken = function(w) {\n let obj = {}\n //collect any flags (do it twice)\n for (let i = 0; i < 2; i += 1) {\n //back-flags\n if (end(w) === '+') {\n obj.greedy = true\n w = stripEnd(w)\n }\n if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n obj.greedy = true\n w = stripEnd(w)\n }\n if (end(w) === '?') {\n obj.optional = true\n w = stripEnd(w)\n }\n if (end(w) === '$') {\n obj.end = true\n w = stripEnd(w)\n }\n //front-flags\n if (start(w) === '^') {\n obj.start = true\n w = stripStart(w)\n }\n if (start(w) === '!') {\n obj.negative = true\n w = stripStart(w)\n }\n //wrapped-flags\n if (start(w) === '(' && end(w) === ')') {\n // support (one && two)\n if (andSign.test(w)) {\n obj.choices = w.split(andSign)\n obj.operator = 'and'\n } else {\n obj.choices = w.split('|')\n obj.operator = 'or'\n }\n //remove '(' and ')'\n obj.choices[0] = stripStart(obj.choices[0])\n let last = obj.choices.length - 1\n obj.choices[last] = stripEnd(obj.choices[last])\n // clean up the results\n obj.choices = obj.choices.map(s => s.trim())\n obj.choices = obj.choices.filter(s => s)\n //recursion alert!\n obj.choices = obj.choices.map(parseToken)\n w = ''\n }\n //capture group (this one can span multiple-terms)\n if (start(w) === '[' || end(w) === ']') {\n obj.capture = true\n w = w.replace(/^\\[/, '')\n w = w.replace(/\\]$/, '')\n }\n //regex\n if (start(w) === '/' && end(w) === '/') {\n w = stripBoth(w)\n obj.regex = new RegExp(w)\n return obj\n }\n //soft-match\n if (start(w) === '~' && end(w) === '~') {\n w = stripBoth(w)\n obj.soft = true\n obj.word = w\n return obj\n }\n }\n // support #Tag{0,9}\n if (hasMinMax.test(w) === true) {\n w = w.replace(hasMinMax, (a, b) => {\n let arr = b.split(/,/g)\n if (arr.length === 1) {\n // '{3}'\tExactly three times\n obj.min = Number(arr[0])\n obj.max = Number(arr[0])\n } else {\n // '{2,4}' Two to four times\n // '{3,}' Three or more times\n obj.min = Number(arr[0])\n obj.max = Number(arr[1] || 999)\n }\n obj.greedy = true\n return ''\n })\n }\n\n //do the actual token content\n if (start(w) === '#') {\n obj.tag = stripStart(w)\n obj.tag = titleCase(obj.tag)\n return obj\n }\n //dynamic function on a term object\n if (start(w) === '@') {\n obj.method = stripStart(w)\n return obj\n }\n if (w === '.') {\n obj.anything = true\n return obj\n }\n //support alone-astrix\n if (w === '*') {\n obj.anything = true\n obj.greedy = true\n obj.optional = true\n return obj\n }\n if (w) {\n //somehow handle encoded-chars?\n w = w.replace('\\\\*', '*')\n w = w.replace('\\\\.', '.')\n obj.word = w.toLowerCase()\n }\n return obj\n}\nmodule.exports = parseToken\n","const parseToken = require('./parseToken')\n\nconst isArray = function(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\n//split-up by (these things)\nconst byParentheses = function(str) {\n let arr = str.split(/([\\^\\[\\!]*\\(.*?\\)[?+*]*\\]?\\$?)/)\n arr = arr.map(s => s.trim())\n return arr\n}\n\nconst byWords = function(arr) {\n let words = []\n arr.forEach(a => {\n //keep brackets lumped together\n if (/^[[^_/]?\\(/.test(a[0])) {\n words.push(a)\n return\n }\n let list = a.split(' ')\n list = list.filter(w => w)\n words = words.concat(list)\n })\n return words\n}\n\n//turn an array into a 'choices' list\nconst byArray = function(arr) {\n return [\n {\n choices: arr.map(s => {\n return {\n word: s,\n }\n }),\n },\n ]\n}\n\nconst postProcess = function(tokens) {\n //ensure there's only one consecutive capture group.\n let count = tokens.filter(t => t.capture === true).length\n if (count > 1) {\n let captureArr = tokens.map(t => t.capture)\n let first = captureArr.indexOf(true)\n let last = captureArr.length - 1 - captureArr.reverse().indexOf(true)\n //'fill in' capture groups between start-end\n for (let i = first; i < last; i++) {\n tokens[i].capture = true\n }\n }\n return tokens\n}\n\nconst fromDoc = function(doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return []\n }\n let ids = []\n doc.list.forEach(p => {\n p.terms().forEach(t => {\n ids.push({ id: t.id })\n })\n })\n return [{ choices: ids, greedy: true }]\n}\n\n/** parse a match-syntax string into json */\nconst syntax = function(input) {\n // fail-fast\n if (input === null || input === undefined || input === '') {\n return []\n }\n //try to support a ton of different formats:\n if (typeof input === 'object') {\n if (isArray(input)) {\n if (input.length === 0 || !input[0]) {\n return []\n }\n\n //is it a pre-parsed reg-list?\n if (typeof input[0] === 'object') {\n return input\n }\n //support a flat array of normalized words\n if (typeof input[0] === 'string') {\n return byArray(input)\n }\n }\n //support passing-in a compromise object as a match\n if (input && input.isA === 'Doc') {\n return fromDoc(input)\n }\n return []\n }\n if (typeof input === 'number') {\n input = String(input) //go for it?\n }\n let tokens = byParentheses(input)\n tokens = byWords(tokens)\n tokens = tokens.map(parseToken)\n //clean up anything weird\n tokens = postProcess(tokens)\n // console.log(JSON.stringify(tokens, null, 2))\n return tokens\n}\nmodule.exports = syntax\n","const failFast = require('./02-failFast')\nconst tryMatch = require('./03-tryMatch')\nconst syntax = require('../../Doc/match/syntax')\n\n/** returns a simple array of arrays */\nconst matchAll = function(p, regs, matchOne = false) {\n //if we forgot to parse it..\n if (typeof regs === 'string') {\n regs = syntax(regs)\n }\n //try to dismiss it, at-once\n if (failFast(p, regs) === true) {\n return []\n }\n\n //any match needs to be this long, at least\n const minLength = regs.filter(r => r.optional !== true).length\n let terms = p.cache.terms || p.terms()\n let matches = []\n\n //optimisation for '^' start logic\n if (regs[0].start === true) {\n let match = tryMatch(terms, regs, 0, terms.length)\n if (match !== false && match.length > 0) {\n matches.push(match)\n }\n // remove (intentional) null results\n matches = matches.map(arr => {\n return arr.filter(t => t)\n })\n return matches\n }\n //try starting, from every term\n for (let i = 0; i < terms.length; i += 1) {\n // slice may be too short\n if (i + minLength > terms.length) {\n break\n }\n //try it!\n\n let match = tryMatch(terms.slice(i), regs, i, terms.length)\n if (match !== false && match.length > 0) {\n //zoom forward!\n i += match.length - 1\n //[capture-groups] return some null responses\n match = match.filter(m => m)\n matches.push(match)\n //ok, maybe that's enough?\n if (matchOne === true) {\n return matches\n }\n }\n }\n return matches\n}\nmodule.exports = matchAll\n","const matchAll = require('./01-matchAll')\n\n/** return anything that doesn't match.\n * returns a simple array of arrays\n */\nconst notMatch = function(p, regs) {\n let found = {}\n let arr = matchAll(p, regs)\n arr.forEach(ts => {\n ts.forEach(t => {\n found[t.id] = true\n })\n })\n //return anything not found\n let terms = p.terms()\n let result = []\n let current = []\n terms.forEach(t => {\n if (found[t.id] === true) {\n if (current.length > 0) {\n result.push(current)\n current = []\n }\n return\n }\n current.push(t)\n })\n if (current.length > 0) {\n result.push(current)\n }\n return result\n}\nmodule.exports = notMatch\n","const matchAll = require('./01-matchAll')\nconst notMatch = require('./not')\n\n/** return an array of matching phrases */\nexports.match = function(str) {\n let matches = matchAll(this, str)\n //make them phrase objects\n matches = matches.map(list => {\n return this.buildFrom(list[0].id, list.length)\n })\n return matches\n}\n\n/** return boolean if one match is found */\nexports.has = function(str) {\n let matches = matchAll(this, str, true)\n return matches.length > 0\n}\n\n/** remove all matches from the result */\nexports.not = function(str) {\n let matches = notMatch(this, str)\n //make them phrase objects\n matches = matches.map(list => {\n return this.buildFrom(list[0].id, list.length)\n })\n return matches\n}\n\n/** return a list of phrases that can have this tag */\nexports.canBe = function(tag, world) {\n let results = []\n let terms = this.terms()\n let previous = false\n for (let i = 0; i < terms.length; i += 1) {\n let can = terms[i].canBe(tag, world)\n if (can === true) {\n if (previous === true) {\n //add it to the end\n results[results.length - 1].push(terms[i])\n } else {\n results.push([terms[i]]) //make a new one\n }\n previous = can\n }\n }\n //turn them into Phrase objects\n results = results\n .filter(a => a.length > 0)\n .map(arr => {\n return this.buildFrom(arr[0].id, arr.length)\n })\n return results\n}\n","const methods = require('./methods')\nconst matchMethods = require('./match')\n// const tokenize = require('../01-tokenizer')\n\nclass Phrase {\n constructor(id, length, pool) {\n this.start = id\n this.length = length\n this.isA = 'Phrase' // easier than .constructor...\n Object.defineProperty(this, 'pool', {\n enumerable: false,\n writable: true,\n value: pool,\n })\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n writable: true,\n value: {},\n })\n }\n}\n\n/** create a new Phrase object from an id and length */\nPhrase.prototype.buildFrom = function(id, length) {\n let p = new Phrase(id, length, this.pool)\n if (this.cache) {\n p.cache = this.cache\n p.cache.terms = null\n }\n return p\n}\n// Phrase.prototype.fromString = function(str) {\n// console.log(tokenize)\n// return tokenize.fromText(str)\n// }\n\n//apply methods\nObject.assign(Phrase.prototype, matchMethods)\nObject.assign(Phrase.prototype, methods)\n\n//apply aliases\nconst aliases = {\n term: 'terms',\n}\nObject.keys(aliases).forEach(k => (Phrase.prototype[k] = Phrase.prototype[aliases[k]]))\n\nmodule.exports = Phrase\n","/** a key-value store of all terms in our Document */\nclass Pool {\n constructor(words = {}) {\n //quiet this property in console.logs\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: words,\n })\n }\n /** throw a new term object in */\n add(term) {\n this.words[term.id] = term\n return this\n }\n /** find a term by it's id */\n get(id) {\n return this.words[id]\n }\n /** find a term by it's id */\n remove(id) {\n delete this.words[id]\n }\n merge(pool) {\n Object.assign(this.words, pool.words)\n return this\n }\n /** helper method */\n stats() {\n return {\n words: Object.keys(this.words).length,\n }\n }\n}\n\n/** make a deep-copy of all terms */\nPool.prototype.clone = function() {\n let keys = Object.keys(this.words)\n let words = keys.reduce((h, k) => {\n let t = this.words[k].clone()\n h[t.id] = t\n return h\n }, {})\n return new Pool(words)\n}\n\nmodule.exports = Pool\n","//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.\n// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n// @spencermountain 2017 MIT\n\n//proper nouns with exclamation marks\n// const blacklist = {\n// yahoo: true,\n// joomla: true,\n// jeopardy: true,\n// }\n\n//regs-\nconst initSplit = /(\\S.+?[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049])(?=\\s+|$)/g\nconst hasSomething = /\\S/\n\nconst isAcronym = /[ .][A-Z]\\.? *$/i\nconst hasEllipse = /(?:\\u2026|\\.{2,}) *$/\nconst newLine = /((?:\\r?\\n|\\r)+)/ // Match different new-line formats\nconst hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff]/i\n\nconst startWhitespace = /^\\s+/\n\n// Start with a regex:\nconst naiive_split = function(text) {\n let all = []\n //first, split by newline\n let lines = text.split(newLine)\n for (let i = 0; i < lines.length; i++) {\n //split by period, question-mark, and exclamation-mark\n let arr = lines[i].split(initSplit)\n for (let o = 0; o < arr.length; o++) {\n all.push(arr[o])\n }\n }\n return all\n}\n\n/** does this look like a sentence? */\nconst isSentence = function(str, abbrevs) {\n // check for 'F.B.I.'\n if (isAcronym.test(str) === true) {\n return false\n }\n //check for '...'\n if (hasEllipse.test(str) === true) {\n return false\n }\n // must have a letter\n if (hasLetter.test(str) === false) {\n return false\n }\n\n let txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '')\n let words = txt.split(' ')\n let lastWord = words[words.length - 1].toLowerCase()\n // check for 'Mr.'\n if (abbrevs.hasOwnProperty(lastWord)) {\n return false\n }\n // //check for jeopardy!\n // if (blacklist.hasOwnProperty(lastWord)) {\n // return false\n // }\n return true\n}\n\nconst splitSentences = function(text, world) {\n let abbrevs = world.cache.abbreviations\n\n text = text || ''\n text = String(text)\n let sentences = []\n // First do a greedy-split..\n let chunks = []\n // Ensure it 'smells like' a sentence\n if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n return sentences\n }\n // Start somewhere:\n let splits = naiive_split(text)\n // Filter-out the crap ones\n for (let i = 0; i < splits.length; i++) {\n let s = splits[i]\n if (s === undefined || s === '') {\n continue\n }\n //this is meaningful whitespace\n if (hasSomething.test(s) === false) {\n //add it to the last one\n if (chunks[chunks.length - 1]) {\n chunks[chunks.length - 1] += s\n continue\n } else if (splits[i + 1]) {\n //add it to the next one\n splits[i + 1] = s + splits[i + 1]\n continue\n }\n }\n //else, only whitespace, no terms, no sentence\n chunks.push(s)\n }\n\n //detection of non-sentence chunks:\n //loop through these chunks, and join the non-sentence chunks back together..\n for (let i = 0; i < chunks.length; i++) {\n let c = chunks[i]\n //should this chunk be combined with the next one?\n if (chunks[i + 1] && isSentence(c, abbrevs) === false) {\n chunks[i + 1] = c + (chunks[i + 1] || '')\n } else if (c && c.length > 0) {\n //&& hasLetter.test(c)\n //this chunk is a proper sentence..\n sentences.push(c)\n chunks[i] = ''\n }\n }\n //if we never got a sentence, return the given text\n if (sentences.length === 0) {\n return [text]\n }\n\n //move whitespace to the ends of sentences, when possible\n //['hello',' world'] -> ['hello ','world']\n for (let i = 1; i < sentences.length; i += 1) {\n let ws = sentences[i].match(startWhitespace)\n if (ws !== null) {\n sentences[i - 1] += ws[0]\n sentences[i] = sentences[i].replace(startWhitespace, '')\n }\n }\n return sentences\n}\n\nmodule.exports = splitSentences\n// console.log(sentence_parser('john f. kennedy'));\n","const wordlike = /\\S/\nconst isBoundary = /^[!?.]+$/\nconst naiiveSplit = /(\\S+)/\nconst isSlash = /\\/\\W*$/\n\nconst notWord = {\n '.': true,\n '-': true, //dash\n '–': true, //en-dash\n '—': true, //em-dash\n '--': true,\n '...': true,\n // '/': true, // 'one / two'\n}\n\nconst hasHyphen = function(str) {\n //dont split 're-do'\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n return false\n }\n //letter-number\n let reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)(-|–|—)([a-z0-9\\u00C0-\\u00FF].*)/i\n if (reg.test(str) === true) {\n return true\n }\n //support weird number-emdash combo '2010–2011'\n // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i\n // if (reg2.test(str)) {\n // return true\n // }\n return false\n}\n\n// 'he / she' should be one word\nconst combineSlashes = function(arr) {\n for (let i = 1; i < arr.length - 1; i++) {\n if (isSlash.test(arr[i])) {\n arr[i - 1] += arr[i] + arr[i + 1]\n arr[i] = null\n arr[i + 1] = null\n }\n }\n return arr\n}\n\nconst splitHyphens = function(word) {\n let arr = []\n //support multiple-hyphenated-terms\n const hyphens = word.split(/[-–—]/)\n for (let o = 0; o < hyphens.length; o++) {\n if (o === hyphens.length - 1) {\n arr.push(hyphens[o])\n } else {\n arr.push(hyphens[o] + '-')\n }\n }\n return arr\n}\n\n//turn a string into an array of terms (naiive for now, lumped later)\nconst splitWords = function(str) {\n let result = []\n let arr = []\n //start with a naiive split\n str = str || ''\n if (typeof str === 'number') {\n str = String(str)\n }\n\n const words = str.split(naiiveSplit)\n for (let i = 0; i < words.length; i++) {\n //split 'one-two'\n if (hasHyphen(words[i]) === true) {\n arr = arr.concat(splitHyphens(words[i]))\n continue\n }\n arr.push(words[i])\n }\n\n //greedy merge whitespace+arr to the right\n let carry = ''\n for (let i = 0; i < arr.length; i++) {\n let word = arr[i]\n //if it's more than a whitespace\n if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n //put whitespace on end of previous term, if possible\n if (result.length > 0) {\n result[result.length - 1] += carry\n result.push(word)\n } else {\n //otherwise, but whitespace before\n result.push(carry + word)\n }\n carry = ''\n } else {\n carry += word\n }\n }\n //handle last one\n if (carry && result.length > 0) {\n result[result.length - 1] += carry //put it on the end\n }\n // combine 'one / two'\n result = combineSlashes(result)\n // remove empty results\n result = result.filter(s => s)\n return result\n}\nmodule.exports = splitWords\n","const Term = require('../Term/Term')\nconst Phrase = require('../Phrase/Phrase')\nconst Pool = require('./Pool')\n\nconst splitSentences = require('./01-sentences')\nconst splitTerms = require('./02-words')\n\n//add forward/backward 'linked-list' prev/next ids\nconst addLinks = terms => {\n terms.forEach((term, i) => {\n if (i > 0) {\n term.prev = terms[i - 1].id\n }\n if (terms[i + 1]) {\n term.next = terms[i + 1].id\n }\n })\n}\n\n/** turn a string into an array of Phrase objects */\nconst fromText = function(text = '', world, pool) {\n //a bit of validation, first\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text)\n }\n }\n //tokenize into words\n let sentences = splitSentences(text, world)\n sentences = sentences.map(str => splitTerms(str))\n\n //turn them into proper objects\n pool = pool || new Pool()\n\n let phrases = sentences.map(terms => {\n terms = terms.map(str => {\n let term = new Term(str)\n pool.add(term)\n return term\n })\n //add next/previous ids\n addLinks(terms)\n\n //return phrase objects\n return new Phrase(terms[0].id, terms.length, pool)\n })\n //return them ready for a Document object\n return phrases\n}\n\n// parse the compressed format '3,2|2,4'\nconst parseTags = function(text, tagList) {\n return text.split('|').map(str => {\n let numList = str.split(',')\n numList = numList.map(n => parseInt(n, 10))\n // convert a list pf numbers into an array of tag names\n return numList.map(num => {\n if (!tagList[num]) {\n console.warn('Compromise import: missing tag at index ' + num)\n }\n return tagList[num]\n })\n })\n}\n\n/** create a word-pool and Phrase objects from .export() json*/\nconst fromJSON = function(json, world) {\n if (typeof json === 'string') {\n json = JSON.parse(json)\n }\n let pool = new Pool()\n //create Phrase objects\n let phrases = json.list.map(o => {\n // tokenize words from sentence text\n let terms = splitTerms(o[0])\n // unpack the tag data for each term\n let tagArr = parseTags(o[1], json.tags)\n //create Term objects\n terms = terms.map((str, i) => {\n let term = new Term(str)\n tagArr[i].forEach(tag => term.tag(tag, '', world))\n pool.add(term)\n return term\n })\n //add prev/next links\n addLinks(terms)\n // return a proper Phrase object\n return new Phrase(terms[0].id, terms.length, pool)\n })\n return phrases\n}\n\nmodule.exports = {\n fromText,\n fromJSON,\n}\n","module.exports = '12.0.0-rc3'","module.exports={\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a8b7c5e3f2here,ie,lit,m1no doubt,p0tce,vs;d,l;a,d;t,y;g,sp,tc,x0;!p;a,ca,o0;l,rp;a,c,l;d,l,rc\",\n \"Copula\": \"true¦a1is,w0;as,ere;m,re\",\n \"PastTense\": \"true¦be3came,d2had,meant,sa2taken,w0;as,e0;nt,re;id;en,gan\",\n \"Condition\": \"true¦if,unless\",\n \"Gerund\": \"true¦accord0be0develop0go0result0stain0;ing\",\n \"Negative\": \"true¦n0;ever,o0;!n,t\",\n \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n \"Plural\": \"true¦records\",\n \"Conjunction\": \"true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:0X;1:10;a0Wb0Kc0Bd04e02fXgShOici1jel0kitty,lNmJnIoHpDquestion mark,rBs7t4u2womW;nc0Rs 2;doll0Dst0F; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;ist0Pky,omeone,t2uper bowl,yst0W;ep3ri1u2;de0Pff;faMmoM;al0i1o2;om,se;a4i0Jr3u2;dLrpoD;erogaVobl0O;rt,te0I;bjSceGthers;othi1umb0E;a4ee04o2;del,m2nopo0th0C;!my;n,yf0;i0unch;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt\",\n \"Honorific\": \"true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al\",\n \"SportsTeam\": \"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls\",\n \"Uncountable\": \"true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics\",\n \"Infinitive\": \"true¦0:6H;1:6V;2:55;3:6S;4:6T;5:5W;6:64;7:6R;8:6N;9:6F;A:6P;B:6M;C:6A;D:6W;a67b5Wc4Yd46e3Qf3Dg37h30i2Nj2Lk2Jl2Am20n1Xo1Tp1Eques3Er0Ms01tTuPvMwFyE;awn,ield;aHe1Thist6iGoEre60;nd0rE;k,ry;pe,sh,th0;lk,nFrEsh,tCve;n,raD;d0t;aFiEo7;ew,sB;l68ry;nFpEr3se;gra4Jli3W;dEi7lo5O;er47o;aKeJhIoHrFuEwi8;ne,rn;aEe0Ki5Ku8y;de,in,nsf0p,v5C;r2VuC;ank,reat2L;nd,st;lk,rg1Ms7;aXcUeThRi48kip,lQmPnee3Ho4WpOtHuEwitC;bmBck,ff0gge8ppFrEspe5;ge,pri1rou4Tvi4;ly,o32;aJeIoHrFuE;dy,mb6;a4NeEi4;ngth2Bss,tC;p,re;m,p;in,ke,r0Oy;la50oil,rink6;e1Vi6o3F;am,ip;a2iv0oE;ck,ut;arCem,le5n1r4tt6;aFo2rE;atCew;le,re;il,ve;a03eGisk,oFuE;in,le,sh;am,ll;aZcXdu9fWgVje5lSmRnt,pOquNsItHvEwa5L;eEiew,o32;al,l,rE;se,t;a41i2u3Y;eHi8oGtE;!o2rE;i5uc1W;l4rt;mb6nt,r4;e8i2;air,eFlEo3XreseD;a9y;at;a3Remb0i3To4;aFeEi4y;a1nt;te,x;a53r0F;act1Uer,le5u1;a0Zei4k5FoEyc6;gni28nci6rd;ch,li27s5D;i1nE;ge,k;aRerQiPlMoKrGuE;b1Xll,mp,rEsh;cha1s4G;ai1eGiDoE;cEdu9greAhibBmi1te8vi2R;eAlaim;di5pa2ss,veD;iDp,rtr3WsEur;e,t;aFuE;g,n3;n,y;ck,le;fo2YmBsi8;ck,iDrt4Css,u1;bGccur,ff0pera7utweFverEwe;co3Xlap,ta1Yu1whelm;igh;ser4ta2Y;eFotE;e,i9;ed,gle5;aJeIiGoFuE;ltip3Ard0;nit10ve;nErr0Z;d,g6us;asu2lt,n0Mr3ssa3;inta2Ona3rFtE;ch,t0;ch,kEry;et;aKeJiGoEu1A;aEck,ok,ve;d,n;ft,ke,mBnFstEve;!en;e,k;a2Bc0Ct;b0Lck,uE;gh,nC;iEno2W;ck,ll,ss;am,o29uE;d3mp;gno2mOnEss39;cMdica7flu0KhLsItGvE;eEol4;nt,st;erErodu9;a5fe2;i8tE;aEru5;ll;abBibB;lu1Cr1A;agi20pE;lemeDo1Yro4;aIeGi2oFuE;nt,rry;n00pe,st;aElp;d,t;nd6ppErm,te;en;aIloAove1KrGuE;arEeAi11;ant30d;aEip,umb6;b,sp;in,th0ze;aOeaNiLlJoGracFuncE;ti3A;tu2;cus,lFrE;ce,eca8m,s2S;d,l1W;a1ToE;at,od,w;gu2lEni1Rx;e,l;r,tu2;il,vE;or;a11cho,le5mQnNstLvalua7xE;a08cJerIi8pEte15;a14eFla12oEreA;rt,se;ct,riE;en9;ci1t;el,han3;abEima7;li1D;ab6couVdFfor9ga3han9j01riCsu2t0vE;isi2Ny;!u2;body,er3pE;hasiEow0;ze;a04eSiJoIrFuE;mp;aFeAiE;ft;g,in;d3ubt;ff0p,re5sFvE;iWor9;aIcFliEmiApl13tingui0Y;ke;oEuA;uEv0;ra3;gr1QppE;ear,ro4;cLem,fJliv0ma0Bny,pIsFterE;mi0C;cribe,er4iFtrE;oy;gn,re;a07e06i5osB;eEi07y;at,ct;iGlFrE;ea1;a2i03;de;ma3n9re,te;a08e07h04i7l02oHrE;aFeEoAu0Dy;a7dB;ck,ve;llXmQnFok,py,uEv0;gh,nt;ceNdu5fKsItGvE;eEin9;rt,y;aNin0PrE;a8ibu7ol;iEtitu7;d0st;iFoEroD;rm;gu2rm;rn;biJfoImaHpE;a2laE;in;re;nd;rt;ne;ap1e5;aEip,o1;im,w;aFeE;at,ck,w;llen3n3r3se;a1nt0;ll,ncFrEt0u1;e,ry;el;aNeKloJoHruGuE;lEry;ly;sh;a8mb,o8rrEth0un9;ow;ck;ar,lFnefBtrE;ay;ie4ong;ng,se;band0Hc09d04ffo03gr02id,lZmu1nWppRrOsIttEvoid,waB;acGeFra5;ct;m0Dnd;h,k;k,sE;eGiFocia7uE;me;gn,st;mb6rt;le;chFgEri4;ue;!i4;eaHlGroE;aCve;ch;aud,y;l,r;noun9sw0tE;icipa7;ce;lFt0;er;e3ow;ee;rd;aPdGju8mBoP;it;st;!reA;ss;cHhie4knowled3tiva7;te;ge;ve;eGouDu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:16;a11b0Zc0Ld0Ke0If0Dg09h06in0Ejoule0k00lYmNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Kb,d0Qears old,o1;tt0E;att0b;able4b3e2on1sp;!ne0;a2r0A;!l,sp;spo01; ft,uare 1;c0Fd0Ef3i0Ckilo0Gm1ya0B;e0Jil1;e0li0E;eet0o0A;t,uart0;ascals,e2i1ou0Mt;c0Jnt0;rcent,tZ;hms,uVz;an0GewtQ;/s,b,e7g,i3l,m2p1²,³;h,s;!²;!/h,cro3l1;e1li05;! DsC²;g05s0A;gPter1;! 2s1;! 1;per second;b,iZm,u1x;men0x0;b,elvin0g,ilo2m1nQ;!/h,ph,²;byYgWmeter1;! 2s1;! 1;per hour;e1g,z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s\",\n \"Organization\": \"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c\",\n \"Demonym\": \"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n \"Possessive\": \"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne\",\n \"Currency\": \"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s\",\n \"City\": \"true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg\",\n \"Abbreviation\": \"true¦a08b05cZdXeUfSgRhQiPjNkanMlKmGnEoDpCque,rAs6t4u3v2w0;is0y00;!c;a,s,t;niv,safa,t;ce,e0;nn,x;ask,e1fc,gt,ir,r,t,u0;pt,rg;nDp0;!t;d,e0;pAs,v;a,d,ennGhd,l,rof,vt;ct,kla,nt,p,rd;eb0ov;!r;a2d,essrs,i1lle,me,r5s0t;!tr;nn,ster;!j,r;it,lb,t0;!d;!s;an,r,u0;l,n;a,da,e,nc;on,wy;a,en,ov;eb,l0t,y;!a;g,s1tc,x0;!p;p,q;ak,e0ist,r;c,pt,t;a3ca,l,m2o0pl,res,t;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d3l2pr,r1ss0tty,ug,ve;n,t;c,iz;!ta;!j,m,v\",\n \"Place\": \"true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s\",\n \"Country\": \"true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an\",\n \"Region\": \"true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma\",\n \"FemaleName\": \"true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:EP;6:ER;7:FS;8:GF;9:EZ;A:GB;B:E5;C:FO;D:FL;E:G8;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et5onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s7;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs7tGwa0;ia0um;a,yn;iGya;a,ka,s7;a4e4iGmCAra;!ka;a,t7;at7it7;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet5ie,y;anGi8;!a,e,nG;aDe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs7vannaD;aDi0;ra,y;aGi4;nt7ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lE;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaD;chGe,i0mo0n5EquCDvCy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et5in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t5;aQePiJoGy6;eHrG;aDeCma;ll1mi;aKcIkGla,na,s7ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s7;cy,et5;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eC;h75il9t2;a,cSgOiJjor2l6In2s7tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lEna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri5;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alEd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket5z2;a,et5;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes7na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as7is7oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stC;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s7;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlEri0y;ar5Cer5Cie,leCr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelEd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lEph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et5iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lEquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aDnaD;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolE;acHetGisel9;a,chC;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et5i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileCkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eCis,la,othGthy;ea,y;an09naDonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraDra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et5iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleC;en,t5;aIeoHotG;il4B;!pat4;ir8rIudG;et5iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot5;n1t5;!sa;d4el1PtG;al,el1O;cHlG;es5i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleCrEy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwEok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaDvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt7yl;adHiG;ce;et5iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes7;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t5;an19elG;le;aYdWeUgQiOja,nHtoGya;inet5n3;!aJeHiGmI;e,ka;!mGt5;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t5;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is7jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naD;c7da,leCmLnslKsG;haDlG;inGyW;g,n;!h;ey;ee;en;at7g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lEsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah\",\n \"WeekDay\": \"true¦fri4mon4s2t1wed0;!nesd4;hurs2ues2;at0un1;!urd1;!d0;ay0;!s\",\n \"Month\": \"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il\",\n \"FirstName\": \"true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is\",\n \"LastName\": \"true¦0:34;1:39;2:3B;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs1;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu2;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps1;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar2lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch2dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins1;c6ve0F;ci,hards1;ir2os;aEeAh8ic6ow20;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils1guy5ix1owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin2;!o;aCe8i6op2uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen2o6u3;h6nYu3;an6ns1;ss1;ki0Es5;cks1nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs1;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr2;ayli3ub0;m2nzal2;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand2;d7insteHsposi6vaL;to;is1wards;aCeBi9omin8u6;bo6rand;is;gu2;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s1;on;eks7iy8var2;ez;ej6;ev;ams\",\n \"MaleName\": \"true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:9V;6:BZ;7:AT;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde5sB;!l7t1;de,lCrr6yB;l1ne;lBt3;a93y;aEern1iB;cCha0nceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l7;lom1nA3uB;leyma8ta;dBl7Jm1;!n7;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n7olfo,ri68;co,ky;bAe9U;cBl7;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub6x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw6;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e5;a78ik;house,o03t1;e,olB;aj;ah,hBk7;a4eB;al,l;hClv2rB;le,ri5v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe5;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha5tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe5;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a5ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd6kGmFrDsCvi3yB;!d6s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d6;an,s0;lEo4FrDuBv7;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr7rge;bri4l6rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym6zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl7nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e5ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne5rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro5y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl7y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n7rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid6ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd6eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on\",\n \"Person\": \"true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er\",\n \"Verb\": \"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en\",\n \"PhrasalVerb\": \"true¦0:71;1:6P;2:7D;3:73;4:6I;5:7G;6:75;7:6O;8:6B;9:6C;A:5H;B:70;C:6Z;a7Gb62c5Cd59e57f45g3Nh37iron0j33k2Yl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit52;d 1k2Q;mp0n49pe0r8s8;eel Bip 7K;aEiD;gh 06rd0;n Br 3C;it 5Jk8lk6rm 0Qsh 73t66v4O;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Fup;ade YiDot0y 32;ckle67p 79;ne66p Ds4C;d2o6Kup;ck FdEe Dgh5Sme0p o0Dre0;aw3ba4d2in,up;e5Jy 1;by,o6U;ink Drow 5U;ba4ov7up;aDe 4Hll4N;m 1r W;ckCke Elk D;ov7u4N;aDba4d2in,o30up;ba4ft7p4Sw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6O; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1LiD;ke 5Xn2X;p Drm1O;by,in,o6A;n2Yr 1tc3H;c2Xmp0nd Dr6Gve6y 1;ba4d2up;d2o66up;ar2Uell0ill4TlErDurC;ingCuc8;a32it 3T;be4Brt0;ap 4Dow B;ash 4Yoke0;eep EiDow 9;c3Mp 1;in,oD;ff,v7;gn Eng2Yt Dz8;d2o5up;in,o5up;aFoDu4E;ot Dut0w 5W;aw3ba4f36o5Q;c2EdeAk4Rve6;e Hll0nd GtD; Dtl42;d2in,o5upD;!on;aw3ba4d2in,o1Xup;o5to;al4Kout0rap4K;il6v8;at0eKiJoGuD;b 4Dle0n Dstl8;aDba4d2in52o3Ft2Zu3D;c1Ww3;ot EuD;g2Jnd6;a1Wf2Qo5;ng 4Np6;aDel6inAnt0;c4Xd D;o2Su0C;aQePiOlMoKrHsyc29uD;ll Ft D;aDba4d2in,o1Gt33up;p38w3;ap37d2in,o5t31up;attleCess EiGoD;p 1;ah1Gon;iDp 52re3Lur44wer 52;nt0;ay3YuD;gAmp 9;ck 52g0leCn 9p3V;el 46ncilA;c3Oir 2Hn0ss FtEy D;ba4o4Q; d2c1X;aw3ba4o11;pDw3J;e3It B;arrow3Serd0oD;d6te3R;aJeHiGoEuD;ddl8ll36;c16p 1uth6ve D;al3Ad2in,o5up;ss0x 1;asur8lt 9ss D;a19up;ke Dn 9r2Zs1Kx0;do,o3Xup;aOeMiHoDuck0;a16c36g 0AoDse0;k Dse34;aft7ba4d2forw2Ain3Vov7uD;nd7p;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fr Dt 1;fDof;rom;in,oO;cZm 1nDve it;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:75;1:7K;2:7Q;3:7J;4:7C;5:5C;6:48;7:49;8:4S;9:61;A:7H;B:70;C:6Z;D:73;E:5X;a6Jb65c5Rd57e4Tf49g41h3Qi35j33k32l2Rm2Gn27o1Rp1Aquack,r10s0Gt09uQvNwFyear5;arp0eJholeIiHoF;man5oFu6C;d6Ezy;despr75s5G;!sa7;eGlFste26;co1Il o4L;!k5;aGiFola4B;b7Tce versa,ol55;ca2gabo63nilla;ltWnJpGrb5Asu4tterF;!moC; f34b1OpGsFti1H;ca7et,ide dMtairs;er,i3N;aPbeco6Rconvin27deMeLfair,ivers4knKprecedYrIsGwF;iel20ritt5Z;i1VuF;pervis0specti3;eFu5;cognLgul6Hl6H;own;ndi3v5Txpect0;cid0rF;!grou5OsF;iz0tood;b7ppeaLssu6GuthorF;iz0;i24ra;aJeHhough4PoGrF;i1oubl0;geth8p,rpB;en5QlFm50rr2Ust0;li3;boo,lFn;ent0;aXcWeUhTiRmug,nobbi3EoPpOqueami3EtJuFymb64;bHi gener55pFrprisi3;erFre0L;! dup8b,i29;du0seq4U;anda6UeIi0PrFy38;aightFip0; fFfF;or5B;adfaCreotyp0;aEec2Gir1JlendBot on; call0le,mb8phist1XrFu0Xvi42;dBry;gnifica2nF;ceEg7;am2Pe8ocki3ut;cFda1em5lfi2Yni1Wpa69re6;o1Gr3W;at58ient28reec58;cr0me,ns serif;aMeIiGoF;buCtt4UuSy4;ghtFv4;!-29f9;ar,bel,condi1du63fres52lHpublic3WsFtard0;is48oF;lu1na2;e1Euc46;bBciF;al,st;aQeOicayu6lacBopuliCrGuF;bl5Amp0;eJiGoF;!b0AfuDmi32p8;mGor,sFva1;ti6;a4We;ciDmF;a0IiF;er,um;ac20rFti1;feAma2Uplexi3v34;rFst;allelHtF;-tiFi4;me;!ed;bQffOkNld fashion0nMpLrg1Hth8utKvF;al,erF;!aHniGt,wF;eiFrouF;ght;ll;do0Ver,g2Msi46;en,posi1; boa5Gg2Kli6;!ay; gua5EbFli6;eat;eHsF;cFer0Hole1;e6uE;d2Tse;ak0eMiLoFua4P;nJrGtF;ab7;thF;!eF;rn;chala2descri50stop;ght5;arby,cessa3Xighbor5xt;aNeLiIoFultip7;bi7derGlFnth5ot,st;dy;a1n;nFx0;iaFor;tuE;di4FnaFre;ci3;cFgenta,in,j03keshift,le,mmoth,ny,sculi6;abEho;aOeJiGoFu13;uti12vi3;mGteraF;l,te;it0;ftIgFth4;al,eGitiF;ma1;nda3D;!-0C;nguBst,tt8;ap1Tind5no0A;agg0uF;niOstifi0veni7;de4gno4Clleg4mSnHpso 1WrF;a1releF;va2; NaMbr0corLdJfluenTiTnIsHtF;aAenDoxF;ic37;a6i2S;a1er,oce2;iGoF;or;reA;deq3Kppr2Z;fFsitu,vitro;ro2;mJpF;arHerfeAoFrop8;li1rtF;a2ed;ti4;eFi0R;d2RnD;aKelJiHoFumdr3C;neCok0rrFs07ur5;if2T;ghfalut1PspF;an2R;liZpf9;lInHrF;d05roF;wi3;dy,gi3;f,low0;ainf9ener2Kiga23lLoKraHuF;ilFng ho;ty;cGtF;ef9is;ef9;ne,od;ea2Eob4;aUeOinNlMoHrF;a1UeFoz1L;e2Eq13tf9;oHrF; keeps,eFm8tuna1;g05ign;liF;sh;ag30ue2;al,i1;dJmGrF;ti7;a7ini6;ne;le; up;bl0i2lDr Gux,voF;ri1uri1;oFreac1F;ff;aOfficie2lNmiMnKreAthere4veJxF;aAcess,peHtraGuF;be2Ml0I;!va1E;ct0rt;n,ryday; Fcouragi3tiE;rou1sui1;ne2;abo23dQe18i1;g8sF;t,ygF;oi3;er;aVeNiHoFrea15ue;mina2ne,ubF;le,tf9;dact1Bfficu1OsGvF;erD;creHeas0gruntl0honeCordGtF;a2ress0;er5;et; LadpKfJgene1PliHrang0spe1PtGvoF;ut;ail0ermin0;be1Mca1ghF;tf9;ia2;an;facto;i5magFngeroZs0I;ed,i3;ly;ertaRhief,ivil,oHrF;aFowd0u0H;mp0v02z0;loNmLnGoi3rrFve0P;eAu1I;cre1grIsHtF;emFra0F;po0D;ta2;ue2;mer08pleF;te,x;ni4ss4;in;aPeLizarElJoGrF;and new,isk,okP;gGna fiWttom,urgeoF;is;us;ank,iI;re;autif9hiGlov0nFst,yoG;eVt;nd;ul;ckGnkru0XrrF;en;!wards; priori,b0Nc0Kd0AfraBg05h04lZma06ntiquYpUrOsMttracti07utheLvIwF;aGkF;wa0U;ke,re;ant garGerF;age;de;ntV;leep,tonisF;hi3;ab,bitIroHtiF;fiF;ci4;ga2;raF;ry;pFt;are2etiPrF;oprF;ia1;at0;arIcohGeFiMl,oof;rt;olF;ic;mi3;ead;ainCgressiGoniF;zi3;ve;st;id; MeKuJvF;aGerD;se;nc0;ed;lt;pt,qF;ua1;hoc,infinitF;um;cuGtu4u1;al;ra1;erPlOoMruLsGuF;nda2;e2oGtraA;ct;lu1rbi3;ng;te;pt;aFve;rd;aze,e;ra2;nt\",\n \"Comparable\": \"true¦0:40;1:4H;2:44;3:4A;4:2X;5:3W;a4Nb43c3Nd3Ce34f2Qg2Eh23i1Uj1Tk1Ql1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell26ou3;aBe9hi1Xi7r6;o3y;ck0Mde,l6n1ry,se;d,y;a6i4Lt;k,ry;n1Sr6sI;m,y;a7e6ulgar;nge5rda2xi3;gue,in,st;g0n6pco3Lse5;like0ti1;aAen9hi8i7ough,r6;anqu2Pen1ue;dy,g3Tme0ny,r09;ck,n,rs2Q;d41se;ll,me,rt,s6wd46;te5;aVcarUeThRiQkin0FlMmKoHpGqua1GtAu7w6;eet,ift;b7dd14per0Gr6;e,re2I;sta2Gt4;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Gn0V;a1ep,rn;le,rk;e23i3Gright0;ci29ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g36m6;!y;ek,nd3E;ck,l0mp4;a6iTort,rill,y;dy,ll0Yrp;cu0Sve0Sxy;ce,ed,y;d,fe,int0l1Wv15;aBe9i8o6ude;mantic,o1Jsy,u6;gh,nd;ch,pe,tzy;a6d,mo0I;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1RlCoBr8u6;ny,r6;e,p4;egna2ic7o6;fouZud;ey,k0;li05or,te1C;ain,easa2;ny;in5le;dd,f6i0ld,ranR;fi11;aAe8i7o6;b4isy,rm16sy;ce,mb4;a6w;r,t;ive,rr02;aAe8ild,o7u6;nda1Ate;ist,o1;a6ek,llY;n,s0ty;d,tuR;aCeBi9o6ucky;f0Vn7o1Eu6ve0w18y0U;d,sy;e0g;g1Uke0tt4v6;e0i3;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b4id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t4uiY;u1y;aIeeb4iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e5i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd\",\n \"TextValue\": \"true¦bMeIfChundredNmMnin9one,qu8s6t0zeroN;enMh3rLw0;e0o;l0ntC;fGve;ir0ousandIree;d,t5;e0ix7;cond,ptEven6xtE;adrDintD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en1;illion0;!th\",\n \"Ordinal\": \"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th\",\n \"Cardinal\": \"true¦bGeDf7hundred,mGnine9one,qu6s4t0zero;en,h2rFw0;e0o;lve,n7;irt8ousand,ree;e0ix4;ptAven3xtA;adr9int9;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion\",\n \"Expression\": \"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAu7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la\",\n \"Adverb\": \"true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Preposition\": \"true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Determiner\": \"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n}","const entity = ['Person', 'Place', 'Organization']\n\nmodule.exports = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb'],\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural',\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun',\n },\n\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization'],\n },\n FirstName: {\n isA: 'Person',\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName'],\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName'],\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName'],\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName'],\n },\n\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization'],\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City'],\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country'],\n },\n Region: {\n isA: ['Place', 'ProperNoun'],\n },\n Address: {\n isA: 'Place',\n },\n\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place'],\n },\n SportsTeam: {\n isA: 'Organization',\n },\n School: {\n isA: 'Organization',\n },\n Company: {\n isA: 'Organization',\n },\n\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular'],\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun',\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity,\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity,\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place'],\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity,\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity,\n },\n //`john's`\n Possessive: {\n isA: 'Noun',\n // notA: 'Pronoun',\n },\n}\n","module.exports = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value'],\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'Copula', 'FutureTense'],\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund'],\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense'],\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense'],\n },\n // will walk\n FutureTense: {\n isA: 'Verb',\n },\n\n // is\n Copula: {\n isA: 'Verb',\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive'],\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund',\n },\n Pluperfect: {\n isA: 'Verb',\n },\n // shown\n Participle: {\n isA: 'Verb',\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb',\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb',\n },\n}\n","module.exports = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb'],\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal'],\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal'],\n },\n RomanNumeral: {\n isA: 'Cardinal', //can be a person, too\n notA: ['Ordinal', 'TextValue'],\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue'],\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue'],\n },\n Money: {\n isA: 'Cardinal',\n },\n Percent: {\n isA: 'Value',\n },\n}\n","const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value']\n\nmodule.exports = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value'],\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective'],\n },\n // better\n Comparative: {\n isA: ['Adjective'],\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative'],\n },\n\n NumberRange: {\n isA: ['Contraction'],\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value'],\n },\n\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Conjunction', 'Adverb', 'Preposition', 'Adjective'],\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time'],\n },\n WeekDay: {\n isA: ['Date', 'Noun'],\n },\n\n //glue\n Determiner: {\n notA: anything,\n },\n Conjunction: {\n notA: anything,\n },\n Preposition: {\n notA: anything,\n },\n\n // what, who, why\n QuestionWord: {\n notA: ['Determiner'],\n },\n\n // peso, euro\n Currency: {},\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb'],\n },\n // dr.\n Abbreviation: {},\n\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email'],\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n\n //non-exclusive\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value'],\n },\n Acronym: {\n notA: ['Plural', 'RomanNumeral'],\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value'],\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value'],\n },\n}\n","// i just made these up\nconst colorMap = {\n Noun: 'blue',\n\n Verb: 'green',\n Negative: 'green',\n\n Date: 'red',\n Value: 'red',\n\n Adjective: 'magenta',\n\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan',\n}\n\n/** add a debug color to some tags */\nconst addColors = function(tags) {\n Object.keys(tags).forEach(k => {\n if (colorMap[k]) {\n tags[k].color = colorMap[k]\n return\n }\n tags[k].isA.some(t => {\n if (colorMap[t]) {\n tags[k].color = colorMap[t]\n return true\n }\n return false\n })\n })\n return tags\n}\n\nmodule.exports = addColors\n","const unique = function(arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i)\n}\n\n//add 'downward' tags (that immediately depend on this one)\nconst inferIsA = function(tags) {\n Object.keys(tags).forEach(k => {\n let tag = tags[k]\n let len = tag.isA.length\n for (let i = 0; i < len; i++) {\n let down = tag.isA[i]\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA)\n }\n }\n // clean it up\n tag.isA = unique(tag.isA)\n })\n return tags\n}\nmodule.exports = inferIsA\n","const unique = function(arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i)\n}\n\n// crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\nconst inferNotA = function(tags) {\n let keys = Object.keys(tags)\n keys.forEach(k => {\n let tag = tags[k]\n tag.notA = tag.notA || []\n tag.isA.forEach(down => {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n let notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || []\n tag.notA = tag.notA.concat(notA)\n }\n })\n // any tag that lists us as a conflict, we conflict it back.\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key)\n }\n }\n // clean it up\n tag.notA = unique(tag.notA)\n })\n return tags\n}\nmodule.exports = inferNotA\n","// a lineage is all 'incoming' tags that have this as 'isA'\nconst inferLineage = function(tags) {\n let keys = Object.keys(tags)\n keys.forEach(k => {\n let tag = tags[k]\n tag.lineage = []\n // find all tags with it in their 'isA' set\n for (let i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i])\n }\n }\n })\n return tags\n}\nmodule.exports = inferLineage\n","const inferColor = require('./_color')\nconst inferIsA = require('./_isA')\nconst inferNotA = require('./_notA')\nconst lineage = require('./_lineage')\n\nconst validate = function(tags) {\n // cleanup format\n Object.keys(tags).forEach(k => {\n let tag = tags[k]\n // ensure isA is an array\n tag.isA = tag.isA || []\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA]\n }\n // ensure notA is an array\n tag.notA = tag.notA || []\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA]\n }\n })\n return tags\n}\n\n// build-out the tag-graph structure\nconst inferTags = function(tags) {\n // validate data\n tags = validate(tags)\n // build its 'down tags'\n tags = inferIsA(tags)\n // infer the conflicts\n tags = inferNotA(tags)\n // debug tag color\n tags = inferColor(tags)\n // find incoming links\n tags = lineage(tags)\n return tags\n}\nmodule.exports = inferTags\n","const nouns = require('./tags/nouns')\nconst verbs = require('./tags/verbs')\nconst values = require('./tags/values')\nconst misc = require('./tags/misc')\nconst inferTags = require('./inference/index')\n\n//extend tagset with new tags\nconst addIn = function(obj, tags) {\n Object.keys(obj).forEach(k => {\n tags[k] = obj[k]\n })\n}\n\nconst build = () => {\n let tags = {}\n addIn(nouns, tags)\n addIn(verbs, tags)\n addIn(values, tags)\n addIn(misc, tags)\n // do the graph-stuff\n tags = inferTags(tags)\n return tags\n}\nmodule.exports = build()\n","\"use strict\";const BASE=36,seq=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",cache=seq.split(\"\").reduce(function(n,o,e){return n[o]=e,n},{}),toAlphaCode=function(n){if(void 0!==seq[n])return seq[n];let o=1,e=36,t=\"\";for(;n>=e;n-=e,o++,e*=36);for(;o--;){const o=n%36;t=String.fromCharCode((o<10?48:55)+o)+t,n=(n-o)/36}return t},fromAlphaCode=function(n){if(void 0!==cache[n])return cache[n];let o=0,e=1,t=36,r=1;for(;e=0;e--,r*=36){let t=n.charCodeAt(e)-48;t>10&&(t-=7),o+=t*r}return o};var encoding={toAlphaCode:toAlphaCode,fromAlphaCode:fromAlphaCode},symbols=function(n){const o=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let e=0;e{let s=n.nodes[t];\"!\"===s[0]&&(o.push(r),s=s.slice(1));const c=s.split(/([A-Z0-9,]+)/g);for(let s=0;s{const e=o.split(\"¦\");return n[e[0]]=e[1],n},{}),e={};return Object.keys(o).forEach(function(n){const t=unpack_1(o[n]);\"true\"===n&&(n=!0);for(let o=0;o 1) {\n //cache the beginning word\n world.hasCompound[words[0]] = true\n }\n // inflect our nouns\n if (tag === 'Singular') {\n let plural = transform.toPlural(word, world)\n lexicon[plural] = lexicon[plural] || 'Plural' // only if it's safe\n }\n //conjugate our verbs\n if (tag === 'Infinitive') {\n let conj = transform.conjugate(word, world)\n let tags = Object.keys(conj)\n for (let i = 0; i < tags.length; i++) {\n let w = conj[tags[i]]\n lexicon[w] = lexicon[w] || tags[i] // only if it's safe\n }\n }\n //derive more adjective forms\n if (tag === 'Comparable') {\n let conj = transform.adjectives(word)\n let tags = Object.keys(conj)\n for (let i = 0; i < tags.length; i++) {\n let w = conj[tags[i]]\n lexicon[w] = lexicon[w] || tags[i] // only if it's safe\n }\n }\n //conjugate phrasal-verbs\n if (tag === 'PhrasalVerb') {\n //add original form\n addWord(word, 'Infinitive', lexicon)\n //conjugate first word\n let conj = transform.conjugate(words[0], world)\n let tags = Object.keys(conj)\n for (let i = 0; i < tags.length; i++) {\n //add it to our cache\n world.hasCompound[conj[tags[i]]] = true\n //first + last words\n let w = conj[tags[i]] + ' ' + words[1]\n\n addWord(w, tags[i], lexicon)\n addWord(w, 'PhrasalVerb', lexicon)\n }\n }\n // inflect our demonyms - 'germans'\n if (tag === 'Demonym') {\n let plural = transform.toPlural(word, world)\n lexicon[plural] = lexicon[plural] || ['Demonym', 'Plural'] // only if it's safe\n }\n}\n\n// throw a bunch of words in our lexicon\n// const doWord = function(words, tag, world) {\n// let lexicon = world.words\n// for (let i = 0; i < words.length; i++) {\n// addWord(words[i], tag, lexicon)\n// // do some fancier stuff\n// addMore(words[i], tag, world)\n// }\n// }\nmodule.exports = {\n addWord: addWord,\n addMore: addMore,\n}\n","// add words from plurals and conjugations data\nconst addIrregulars = function(world) {\n //add irregular plural nouns\n let nouns = world.irregulars.nouns\n let words = Object.keys(nouns)\n for (let i = 0; i < words.length; i++) {\n const w = words[i]\n world.words[w] = 'Singular'\n world.words[nouns[w]] = 'Plural'\n }\n\n // add irregular verb conjugations\n let verbs = world.irregulars.verbs\n let keys = Object.keys(verbs)\n for (let i = 0; i < keys.length; i++) {\n const inf = keys[i]\n //add only if it it's safe...\n world.words[inf] = world.words[inf] || 'Infinitive'\n let forms = world.transforms.conjugate(inf, world)\n forms = Object.assign(forms, verbs[inf])\n //add the others\n Object.keys(forms).forEach(tag => {\n world.words[forms[tag]] = world.words[forms[tag]] || tag\n })\n }\n}\nmodule.exports = addIrregulars\n","//words that can't be compressed, for whatever reason\nmodule.exports = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n '7-eleven': 'Organization',\n g8: 'Organization',\n 'motel 6': 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date',\n}\n","//nouns with irregular plural/singular forms\n//used in noun.inflect, and also in the lexicon.\n\nmodule.exports = {\n addendum: 'addenda',\n alga: 'algae',\n alumna: 'alumnae',\n alumnus: 'alumni',\n analysis: 'analyses',\n antenna: 'antennae',\n appendix: 'appendices',\n avocado: 'avocados',\n axis: 'axes',\n bacillus: 'bacilli',\n barracks: 'barracks',\n beau: 'beaux',\n bus: 'buses',\n cactus: 'cacti',\n chateau: 'chateaux',\n child: 'children',\n circus: 'circuses',\n clothes: 'clothes',\n corpus: 'corpora',\n criterion: 'criteria',\n curriculum: 'curricula',\n database: 'databases',\n deer: 'deer',\n diagnosis: 'diagnoses',\n echo: 'echoes',\n embargo: 'embargoes',\n epoch: 'epochs',\n foot: 'feet',\n formula: 'formulae',\n fungus: 'fungi',\n genus: 'genera',\n goose: 'geese',\n halo: 'halos',\n hippopotamus: 'hippopotami',\n index: 'indices',\n larva: 'larvae',\n leaf: 'leaves',\n libretto: 'libretti',\n loaf: 'loaves',\n man: 'men',\n matrix: 'matrices',\n memorandum: 'memoranda',\n modulus: 'moduli',\n mosquito: 'mosquitoes',\n mouse: 'mice',\n move: 'moves',\n nebula: 'nebulae',\n nucleus: 'nuclei',\n octopus: 'octopi',\n opus: 'opera',\n ovum: 'ova',\n ox: 'oxen',\n parenthesis: 'parentheses',\n person: 'people',\n phenomenon: 'phenomena',\n prognosis: 'prognoses',\n quiz: 'quizzes',\n radius: 'radii',\n referendum: 'referenda',\n rodeo: 'rodeos',\n sex: 'sexes',\n shoe: 'shoes',\n sombrero: 'sombreros',\n stimulus: 'stimuli',\n stomach: 'stomachs',\n syllabus: 'syllabi',\n synopsis: 'synopses',\n tableau: 'tableaux',\n thesis: 'theses',\n thief: 'thieves',\n tooth: 'teeth',\n tornado: 'tornados',\n tuxedo: 'tuxedos',\n vertebra: 'vertebrae',\n // virus: 'viri',\n // zero: 'zeros',\n}\n","// a list of irregular verb conjugations\n// used in verbs().conjugate()\n// but also added to our lexicon\n\n//use shorter key-names\nconst mapping = {\n g: 'Gerund',\n prt: 'Participle',\n perf: 'PerfectTense',\n pst: 'PastTense',\n fut: 'FuturePerfect',\n pres: 'PresentTense',\n pluperf: 'Pluperfect',\n a: 'Actor',\n}\n\n// '_' in conjugations is the infinitive form\nlet conjugations = {\n act: {\n a: '_or',\n },\n age: {\n g: 'ageing',\n pst: 'aged',\n pres: 'ages',\n },\n aim: {\n a: '_er',\n g: '_ing',\n pst: '_ed',\n },\n arise: {\n prt: '_n',\n pst: 'arose',\n },\n babysit: {\n a: '_ter',\n pst: 'babysat',\n },\n ban: {\n a: '',\n g: '_ning',\n pst: '_ned',\n },\n be: {\n a: '',\n g: 'am',\n prt: 'been',\n pst: 'was',\n pres: 'is',\n },\n beat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n },\n become: {\n prt: '_',\n },\n begin: {\n g: '_ning',\n prt: 'begun',\n pst: 'began',\n },\n being: {\n g: 'are',\n pst: 'were',\n pres: 'are',\n },\n bend: {\n prt: 'bent',\n },\n bet: {\n a: '_ter',\n prt: '_',\n },\n bind: {\n pst: 'bound',\n },\n bite: {\n g: 'biting',\n prt: 'bitten',\n pst: 'bit',\n },\n bleed: {\n prt: 'bled',\n pst: 'bled',\n },\n blow: {\n prt: '_n',\n pst: 'blew',\n },\n boil: {\n a: '_er',\n },\n brake: {\n prt: 'broken',\n },\n break: {\n pst: 'broke',\n },\n breed: {\n pst: 'bred',\n },\n bring: {\n prt: 'brought',\n pst: 'brought',\n },\n broadcast: {\n pst: '_',\n },\n budget: {\n pst: '_ed',\n },\n build: {\n prt: 'built',\n pst: 'built',\n },\n burn: {\n prt: '_ed',\n },\n burst: {\n prt: '_',\n },\n buy: {\n prt: 'bought',\n pst: 'bought',\n },\n can: {\n a: '',\n fut: '_',\n g: '',\n pst: 'could',\n perf: 'could',\n pluperf: 'could',\n pres: '_',\n },\n catch: {\n pst: 'caught',\n },\n choose: {\n g: 'choosing',\n prt: 'chosen',\n pst: 'chose',\n },\n cling: {\n prt: 'clung',\n },\n come: {\n prt: '_',\n pst: 'came',\n },\n compete: {\n a: 'competitor',\n g: 'competing',\n pst: '_d',\n },\n cost: {\n pst: '_',\n },\n creep: {\n prt: 'crept',\n },\n cut: {\n prt: '_',\n },\n deal: {\n prt: '_t',\n pst: '_t',\n },\n develop: {\n a: '_er',\n g: '_ing',\n pst: '_ed',\n },\n die: {\n g: 'dying',\n pst: '_d',\n },\n dig: {\n g: '_ging',\n prt: 'dug',\n pst: 'dug',\n },\n dive: {\n prt: '_d',\n },\n do: {\n pst: 'did',\n pres: '_es',\n },\n draw: {\n prt: '_n',\n pst: 'drew',\n },\n dream: {\n prt: '_t',\n },\n drink: {\n prt: 'drunk',\n pst: 'drank',\n },\n drive: {\n g: 'driving',\n prt: '_n',\n pst: 'drove',\n },\n drop: {\n g: '_ping',\n pst: '_ped',\n },\n eat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n pst: 'ate',\n },\n edit: {\n g: '_ing',\n },\n egg: {\n pst: '_ed',\n },\n fall: {\n prt: '_en',\n pst: 'fell',\n },\n feed: {\n prt: 'fed',\n pst: 'fed',\n },\n feel: {\n a: '_er',\n pst: 'felt',\n },\n fight: {\n prt: 'fought',\n pst: 'fought',\n },\n find: {\n pst: 'found',\n },\n flee: {\n g: '_ing',\n prt: 'fled',\n },\n fling: {\n prt: 'flung',\n },\n fly: {\n prt: 'flown',\n pst: 'flew',\n },\n forbid: {\n pst: 'forbade',\n },\n forget: {\n g: '_ing',\n prt: 'forgotten',\n pst: 'forgot',\n },\n forgive: {\n g: 'forgiving',\n prt: '_n',\n pst: 'forgave',\n },\n free: {\n a: '',\n g: '_ing',\n },\n freeze: {\n g: 'freezing',\n prt: 'frozen',\n pst: 'froze',\n },\n get: {\n pst: 'got',\n prt: 'gotten',\n },\n give: {\n g: 'giving',\n prt: '_n',\n pst: 'gave',\n },\n go: {\n prt: '_ne',\n pst: 'went',\n pres: 'goes',\n },\n grow: {\n prt: '_n',\n },\n hang: {\n prt: 'hung',\n pst: 'hung',\n },\n have: {\n g: 'having',\n prt: 'had',\n pst: 'had',\n pres: 'has',\n },\n hear: {\n prt: '_d',\n pst: '_d',\n },\n hide: {\n prt: 'hidden',\n pst: 'hid',\n },\n hit: {\n prt: '_',\n },\n hold: {\n prt: 'held',\n pst: 'held',\n },\n hurt: {\n prt: '_',\n pst: '_',\n },\n ice: {\n g: 'icing',\n pst: '_d',\n },\n imply: {\n pst: 'implied',\n pres: 'implies',\n },\n is: {\n a: '',\n g: 'being',\n pst: 'was',\n pres: '_',\n },\n keep: {\n prt: 'kept',\n },\n kneel: {\n prt: 'knelt',\n },\n know: {\n prt: '_n',\n },\n lay: {\n prt: 'laid',\n pst: 'laid',\n },\n lead: {\n prt: 'led',\n pst: 'led',\n },\n leap: {\n prt: '_t',\n },\n leave: {\n prt: 'left',\n pst: 'left',\n },\n lend: {\n prt: 'lent',\n },\n lie: {\n g: 'lying',\n pst: 'lay',\n },\n light: {\n prt: 'lit',\n pst: 'lit',\n },\n log: {\n g: '_ging',\n pst: '_ged',\n },\n loose: {\n prt: 'lost',\n },\n lose: {\n g: 'losing',\n pst: 'lost',\n },\n make: {\n prt: 'made',\n pst: 'made',\n },\n mean: {\n prt: '_t',\n pst: '_t',\n },\n meet: {\n a: '_er',\n g: '_ing',\n prt: 'met',\n pst: 'met',\n },\n miss: {\n pres: '_',\n },\n pay: {\n prt: 'paid',\n pst: 'paid',\n },\n prove: {\n prt: '_n',\n },\n puke: {\n g: 'puking',\n },\n put: {\n prt: '_',\n },\n quit: {\n prt: '_',\n },\n read: {\n prt: '_',\n pst: '_',\n },\n ride: {\n prt: 'ridden',\n },\n ring: {\n prt: 'rung',\n pst: 'rang',\n },\n rise: {\n fut: 'will have _n',\n g: 'rising',\n prt: '_n',\n pst: 'rose',\n pluperf: 'had _n',\n },\n rub: {\n g: '_bing',\n pst: '_bed',\n },\n run: {\n g: '_ning',\n prt: '_',\n pst: 'ran',\n },\n say: {\n prt: 'said',\n pst: 'said',\n pres: '_s',\n },\n seat: {\n prt: 'sat',\n },\n see: {\n g: '_ing',\n prt: '_n',\n pst: 'saw',\n },\n seek: {\n prt: 'sought',\n },\n sell: {\n prt: 'sold',\n pst: 'sold',\n },\n send: {\n prt: 'sent',\n },\n set: {\n prt: '_',\n },\n sew: {\n prt: '_n',\n },\n shake: {\n prt: '_n',\n },\n shave: {\n prt: '_d',\n },\n shed: {\n g: '_ding',\n pst: '_',\n pres: '_s',\n },\n shine: {\n prt: 'shone',\n pst: 'shone',\n },\n shoot: {\n prt: 'shot',\n pst: 'shot',\n },\n show: {\n pst: '_ed',\n },\n shut: {\n prt: '_',\n },\n sing: {\n prt: 'sung',\n pst: 'sang',\n },\n sink: {\n pst: 'sank',\n pluperf: 'had sunk',\n },\n sit: {\n pst: 'sat',\n },\n ski: {\n pst: '_ied',\n },\n slay: {\n prt: 'slain',\n },\n sleep: {\n prt: 'slept',\n },\n slide: {\n prt: 'slid',\n pst: 'slid',\n },\n smash: {\n pres: '_es',\n },\n sneak: {\n prt: 'snuck',\n },\n speak: {\n fut: 'will have spoken',\n prt: 'spoken',\n pst: 'spoke',\n perf: 'have spoken',\n pluperf: 'had spoken',\n },\n speed: {\n prt: 'sped',\n },\n spend: {\n prt: 'spent',\n },\n spill: {\n prt: '_ed',\n pst: 'spilt',\n },\n spin: {\n g: '_ning',\n prt: 'spun',\n pst: 'spun',\n },\n spit: {\n prt: 'spat',\n },\n split: {\n prt: '_',\n },\n spread: {\n pst: '_',\n },\n spring: {\n prt: 'sprung',\n },\n stand: {\n pst: 'stood',\n },\n steal: {\n a: '_er',\n pst: 'stole',\n },\n stick: {\n pst: 'stuck',\n },\n sting: {\n pst: 'stung',\n },\n stink: {\n prt: 'stunk',\n pst: 'stunk',\n },\n stream: {\n a: '_er',\n },\n strew: {\n prt: '_n',\n },\n strike: {\n g: 'striking',\n pst: 'struck',\n },\n suit: {\n a: '_er',\n g: '_ing',\n pst: '_ed',\n },\n sware: {\n prt: 'sworn',\n },\n swear: {\n pst: 'swore',\n },\n sweep: {\n prt: 'swept',\n },\n swim: {\n g: '_ming',\n pst: 'swam',\n },\n swing: {\n pst: 'swung',\n },\n take: {\n fut: 'will have _n',\n pst: 'took',\n perf: 'have _n',\n pluperf: 'had _n',\n },\n teach: {\n pst: 'taught',\n pres: '_es',\n },\n tear: {\n pst: 'tore',\n },\n tell: {\n pst: 'told',\n },\n think: {\n pst: 'thought',\n },\n thrive: {\n prt: '_d',\n },\n tie: {\n g: 'tying',\n pst: '_d',\n },\n undergo: {\n prt: '_ne',\n },\n understand: {\n pst: 'understood',\n },\n upset: {\n prt: '_',\n },\n wait: {\n a: '_er',\n g: '_ing',\n pst: '_ed',\n },\n wake: {\n pst: 'woke',\n },\n wear: {\n pst: 'wore',\n },\n weave: {\n prt: 'woven',\n },\n weep: {\n prt: 'wept',\n },\n win: {\n g: '_ning',\n pst: 'won',\n },\n wind: {\n prt: 'wound',\n },\n withdraw: {\n pst: 'withdrew',\n },\n wring: {\n prt: 'wrung',\n },\n write: {\n g: 'writing',\n prt: 'written',\n pst: 'wrote',\n },\n}\n\n//uncompress our ad-hoc compression scheme\nlet keys = Object.keys(conjugations)\nfor (let i = 0; i < keys.length; i++) {\n const inf = keys[i]\n let final = {}\n Object.keys(conjugations[inf]).forEach(key => {\n let str = conjugations[inf][key]\n //swap-in infinitives for '_'\n str = str.replace('_', inf)\n\n let full = mapping[key]\n final[full] = str\n })\n //over-write original\n conjugations[inf] = final\n}\n\nmodule.exports = conjugations\n","const endsWith = {\n b: [\n {\n reg: /([^aeiou][aeiou])b$/i,\n repl: {\n pr: '$1bs',\n pa: '$1bbed',\n gr: '$1bbing',\n },\n },\n ],\n d: [\n {\n reg: /(end)$/i,\n repl: {\n pr: '$1s',\n pa: 'ent',\n gr: '$1ing',\n ar: '$1er',\n },\n },\n {\n reg: /(eed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n ar: '$1er',\n },\n },\n {\n reg: /(ed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ded',\n ar: '$1der',\n gr: '$1ding',\n },\n },\n {\n reg: /([^aeiou][ou])d$/i,\n repl: {\n pr: '$1ds',\n pa: '$1dded',\n gr: '$1dding',\n },\n },\n ],\n e: [\n {\n reg: /(eave)$/i,\n repl: {\n pr: '$1s',\n pa: '$1d',\n gr: 'eaving',\n ar: '$1r',\n },\n },\n {\n reg: /(ide)$/i,\n repl: {\n pr: '$1s',\n pa: 'ode',\n gr: 'iding',\n ar: 'ider',\n },\n },\n {\n reg: /(ake)$/i,\n repl: {\n pr: '$1s',\n pa: 'ook',\n gr: 'aking',\n ar: '$1r',\n },\n },\n {\n reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing',\n prt: '$1en',\n },\n },\n {\n reg: /([bd]l)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n {\n reg: /(om)e$/i,\n repl: {\n pr: '$1es',\n pa: 'ame',\n gr: '$1ing',\n },\n },\n ],\n\n g: [\n {\n reg: /([^aeiou][ou])g$/i,\n repl: {\n pr: '$1gs',\n pa: '$1gged',\n gr: '$1gging',\n },\n },\n ],\n h: [\n {\n reg: /(..)([cs]h)$/i,\n repl: {\n pr: '$1$2es',\n pa: '$1$2ed',\n gr: '$1$2ing',\n },\n },\n ],\n k: [\n {\n reg: /(ink)$/i,\n repl: {\n pr: '$1s',\n pa: 'unk',\n gr: '$1ing',\n ar: '$1er',\n },\n },\n ],\n\n m: [\n {\n reg: /([^aeiou][aeiou])m$/i,\n repl: {\n pr: '$1ms',\n pa: '$1mmed',\n gr: '$1mming',\n },\n },\n ],\n\n n: [\n {\n reg: /(en)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n ],\n p: [\n {\n reg: /(e)(ep)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1pt',\n gr: '$1$2ing',\n ar: '$1$2er',\n },\n },\n {\n reg: /([^aeiou][aeiou])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1pped',\n gr: '$1pping',\n },\n },\n {\n reg: /([aeiu])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1p',\n gr: '$1pping',\n },\n },\n ],\n\n r: [\n {\n reg: /([td]er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n {\n reg: /(er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n ],\n s: [\n {\n reg: /(ish|tch|ess)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n ],\n\n t: [\n {\n reg: /(ion|end|e[nc]t)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n {\n reg: /(.eat)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n {\n reg: /([aeiu])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1t',\n gr: '$1tting',\n },\n },\n {\n reg: /([^aeiou][aeiou])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1tted',\n gr: '$1tting',\n },\n },\n ],\n\n w: [\n {\n reg: /(..)(ow)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1ew',\n gr: '$1$2ing',\n prt: '$1$2n',\n },\n },\n ],\n y: [\n {\n reg: /([i|f|rr])y$/i,\n repl: {\n pr: '$1ies',\n pa: '$1ied',\n gr: '$1ying',\n },\n },\n ],\n\n z: [\n {\n reg: /([aeiou]zz)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n ],\n}\n\nmodule.exports = endsWith\n","const suffixes = require('./suffixes')\nconst posMap = {\n pr: 'PresentTense',\n pa: 'PastTense',\n gr: 'Gerund',\n prt: 'Participle',\n ar: 'Actor',\n}\n\nconst doTransform = function(str, obj) {\n let found = {}\n let keys = Object.keys(obj.repl)\n for (let i = 0; i < keys.length; i += 1) {\n let pos = keys[i]\n found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos])\n }\n return found\n}\n\n//look at the end of the word for clues\nconst checkSuffix = function(str = '') {\n let c = str[str.length - 1]\n if (suffixes.hasOwnProperty(c) === true) {\n for (let r = 0; r < suffixes[c].length; r += 1) {\n const reg = suffixes[c][r].reg\n if (reg.test(str) === true) {\n return doTransform(str, suffixes[c][r])\n }\n }\n }\n return {}\n}\nmodule.exports = checkSuffix\n","//non-specifc, 'hail-mary' transforms from infinitive, into other forms\nconst hasY = /[bcdfghjklmnpqrstvwxz]y$/\n\nconst generic = {\n Gerund: inf => {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf.replace(/e$/, 'ing')\n }\n return inf + 'ing'\n },\n\n PresentTense: inf => {\n if (inf.charAt(inf.length - 1) === 's') {\n return inf + 'es'\n }\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ies'\n }\n return inf + 's'\n },\n\n PastTense: inf => {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf + 'd'\n }\n if (inf.substr(-2) === 'ed') {\n return inf\n }\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ied'\n }\n return inf + 'ed'\n },\n}\n\nmodule.exports = generic\n","const checkSuffix = require('./01-suffixes')\nconst genericFill = require('./02-generic')\n\n//we run this on every verb in the lexicon, so please keep it fast\n//we assume the input word is a proper infinitive\nconst conjugate = function(str = '', world) {\n let found = {}\n // 1. look at irregulars\n //the lexicon doesn't pass this in\n if (world && world.irregulars) {\n if (world.irregulars.verbs.hasOwnProperty(str) === true) {\n found = Object.assign({}, world.irregulars.verbs[str])\n }\n }\n //2. rule-based regex\n found = Object.assign({}, checkSuffix(str), found)\n\n //3. generic transformations\n //'buzzing'\n if (found.Gerund === undefined) {\n found.Gerund = genericFill.Gerund(str)\n }\n //'buzzed'\n if (found.PastTense === undefined) {\n found.PastTense = genericFill.PastTense(str)\n }\n //'buzzes'\n if (found.PresentTense === undefined) {\n found.PresentTense = genericFill.PresentTense(str)\n }\n return found\n}\nmodule.exports = conjugate\n","//turn 'quick' into 'quickest'\nconst do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]\nconst dont_rules = [/ary$/]\n\nconst irregulars = {\n nice: 'nicest',\n late: 'latest',\n hard: 'hardest',\n inner: 'innermost',\n outer: 'outermost',\n far: 'furthest',\n worse: 'worst',\n bad: 'worst',\n good: 'best',\n big: 'biggest',\n large: 'largest',\n}\n\nconst transforms = [\n {\n reg: /y$/i,\n repl: 'iest',\n },\n {\n reg: /([aeiou])t$/i,\n repl: '$1ttest',\n },\n {\n reg: /([aeou])de$/i,\n repl: '$1dest',\n },\n {\n reg: /nge$/i,\n repl: 'ngest',\n },\n {\n reg: /([aeiou])te$/i,\n repl: '$1test',\n },\n]\n\nconst to_superlative = function(str) {\n //irregulars\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str]\n }\n //known transforms\n for (let i = 0; i < transforms.length; i++) {\n if (transforms[i].reg.test(str)) {\n return str.replace(transforms[i].reg, transforms[i].repl)\n }\n }\n //dont-rules\n for (let i = 0; i < dont_rules.length; i++) {\n if (dont_rules[i].test(str) === true) {\n return null\n }\n }\n //do-rules\n for (let i = 0; i < do_rules.length; i++) {\n if (do_rules[i].test(str) === true) {\n if (str.charAt(str.length - 1) === 'e') {\n return str + 'st'\n }\n return str + 'est'\n }\n }\n return str + 'est'\n}\n\nmodule.exports = to_superlative\n","//turn 'quick' into 'quickly'\nconst do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]\nconst dont_rules = [/ary$/, /ous$/]\n\nconst irregulars = {\n grey: 'greyer',\n gray: 'grayer',\n green: 'greener',\n yellow: 'yellower',\n red: 'redder',\n good: 'better',\n well: 'better',\n bad: 'worse',\n sad: 'sadder',\n big: 'bigger',\n}\n\nconst transforms = [\n {\n reg: /y$/i,\n repl: 'ier',\n },\n {\n reg: /([aeiou])t$/i,\n repl: '$1tter',\n },\n {\n reg: /([aeou])de$/i,\n repl: '$1der',\n },\n {\n reg: /nge$/i,\n repl: 'nger',\n },\n]\n\nconst to_comparative = function(str) {\n //known-irregulars\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str]\n }\n //known-transforms\n for (let i = 0; i < transforms.length; i++) {\n if (transforms[i].reg.test(str) === true) {\n return str.replace(transforms[i].reg, transforms[i].repl)\n }\n }\n //dont-patterns\n for (let i = 0; i < dont_rules.length; i++) {\n if (dont_rules[i].test(str) === true) {\n return null\n }\n }\n //do-patterns\n for (let i = 0; i < do_rules.length; i++) {\n if (do_rules[i].test(str) === true) {\n return str + 'er'\n }\n }\n //easy-one\n if (/e$/.test(str) === true) {\n return str + 'r'\n }\n return str + 'er'\n}\n\nmodule.exports = to_comparative\n","const fns = {\n toSuperlative: require('./toSuperlative'),\n toComparative: require('./toComparative'),\n}\n\n/** conjugate an adjective into other forms */\nconst conjugate = function(w) {\n let res = {}\n // 'greatest'\n let sup = fns.toSuperlative(w)\n if (sup) {\n res.Superlative = sup\n }\n // 'greater'\n let comp = fns.toComparative(w)\n if (comp) {\n res.Comparative = comp\n }\n return res\n}\nmodule.exports = conjugate\n","/** patterns for turning 'bus' to 'buses'*/\nconst suffixes = {\n a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']],\n\n e: [\n [/(kn|l|w)ife$/i, '$1ives'],\n [/(hive)$/i, '$1s'],\n [/([m|l])ouse$/i, '$1ice'],\n [/([m|l])ice$/i, '$1ice'],\n ],\n\n f: [\n [/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'],\n [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves'],\n ],\n\n i: [[/(octop|vir)i$/i, '$1i']],\n\n m: [[/([ti])um$/i, '$1a']],\n\n n: [[/^(oxen)$/i, '$1']],\n\n o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']],\n\n s: [\n [/(ax|test)is$/i, '$1es'],\n [/(alias|status)$/i, '$1es'],\n [/sis$/i, 'ses'],\n [/(bu)s$/i, '$1ses'],\n [/(sis)$/i, 'ses'],\n [/^(?!talis|.*hu)(.*)man$/i, '$1men'],\n [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i'],\n ],\n\n x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']],\n\n y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n\n z: [[/(quiz)$/i, '$1zes']],\n}\n\nmodule.exports = suffixes\n","const rules = require('./_rules')\nconst addE = /(x|ch|sh|s|z)$/\n\nconst trySuffix = function(str) {\n let c = str[str.length - 1]\n if (rules.hasOwnProperty(c) === true) {\n for (let i = 0; i < rules[c].length; i += 1) {\n let reg = rules[c][i][0]\n if (reg.test(str) === true) {\n return str.replace(reg, rules[c][i][1])\n }\n }\n }\n return null\n}\n\n/** Turn a singular noun into a plural\n * assume the given string is singular\n */\nconst pluralize = function(str = '', world) {\n let irregulars = world.irregulars.nouns\n\n // check irregulars list\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str]\n }\n\n //we have some rules to try-out\n let plural = trySuffix(str)\n if (plural !== null) {\n return plural\n }\n //like 'church'\n if (addE.test(str)) {\n return str + 'es'\n }\n // ¯\\_(ツ)_/¯\n return str + 's'\n}\nmodule.exports = pluralize\n","//patterns for turning 'dwarves' to 'dwarf'\nmodule.exports = [\n [/([^v])ies$/i, '$1y'],\n [/ises$/i, 'isis'],\n [/(kn|[^o]l|w)ives$/i, '$1ife'],\n [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'],\n [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'],\n [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'],\n [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'],\n [/(buffal|tomat|tornad)(oes)$/i, '$1o'],\n // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],\n [/(..[aeiou]s)es$/i, '$1'],\n [/(vert|ind|cort)(ices)$/i, '$1ex'],\n [/(matr|append)(ices)$/i, '$1ix'],\n [/(x|ch|ss|sh|z|o)es$/i, '$1'],\n [/men$/i, 'man'],\n [/(n)ews$/i, '$1ews'],\n [/([ti])a$/i, '$1um'],\n [/([^aeiouy]|qu)ies$/i, '$1y'],\n [/(s)eries$/i, '$1eries'],\n [/(m)ovies$/i, '$1ovie'],\n [/([m|l])ice$/i, '$1ouse'],\n [/(cris|ax|test)es$/i, '$1is'],\n [/(alias|status)es$/i, '$1'],\n [/(ss)$/i, '$1'],\n [/(ics)$/i, '$1'],\n [/s$/i, ''],\n]\n","const rules = require('./_rules')\n\nconst invertObj = function(obj) {\n return Object.keys(obj).reduce((h, k) => {\n h[obj[k]] = k\n return h\n }, {})\n}\n\nconst toSingular = function(str, world) {\n let irregulars = world.irregulars.nouns\n let invert = invertObj(irregulars)\n\n // check irregulars list\n if (invert.hasOwnProperty(str)) {\n return invert[str]\n }\n\n // go through our regexes\n for (let i = 0; i < rules.length; i++) {\n if (rules[i][0].test(str) === true) {\n str = str.replace(rules[i][0], rules[i][1])\n return str\n }\n }\n return str\n}\nmodule.exports = toSingular\n","//rules for turning a verb into infinitive form\nlet rules = {\n Participle: [\n {\n reg: /own$/i,\n to: 'ow',\n },\n {\n reg: /(.)un([g|k])$/i,\n to: '$1in$2',\n },\n ],\n\n Actor: [\n {\n reg: /(er)er$/i,\n to: '$1',\n },\n ],\n\n PresentTense: [\n {\n reg: /(..)(ies)$/i,\n to: '$1y',\n },\n {\n reg: /(tch|sh)es$/i,\n to: '$1',\n },\n {\n reg: /(ss|zz)es$/i,\n to: '$1',\n },\n {\n reg: /([tzlshicgrvdnkmu])es$/i,\n to: '$1e',\n },\n {\n reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,\n to: '$1',\n },\n {\n reg: /(ow)s$/i,\n to: '$1',\n },\n {\n reg: /(op)s$/i,\n to: '$1',\n },\n {\n reg: /([eirs])ts$/i,\n to: '$1t',\n },\n {\n reg: /(ll)s$/i,\n to: '$1',\n },\n {\n reg: /(el)s$/i,\n to: '$1',\n },\n {\n reg: /(ip)es$/i,\n to: '$1e',\n },\n {\n reg: /ss$/i,\n to: 'ss',\n },\n {\n reg: /s$/i,\n to: '',\n },\n ],\n\n Gerund: [\n {\n reg: /pping$/i,\n to: 'p',\n },\n {\n reg: /lling$/i,\n to: 'll',\n },\n {\n reg: /tting$/i,\n to: 't',\n },\n {\n reg: /dding$/i,\n to: 'd',\n },\n {\n reg: /ssing$/i,\n to: 'ss',\n },\n {\n reg: /(..)gging$/i,\n to: '$1g',\n },\n {\n reg: /([^aeiou])ying$/i,\n to: '$1y',\n },\n {\n reg: /([^ae]i.)ing$/i,\n to: '$1e',\n },\n {\n reg: /(ea.)ing$/i,\n to: '$1',\n },\n {\n reg: /(u[rtcb]|[bdtpkg]l|n[cg]|a[gdkvtc]|[ua]s|[dr]g|yz|o[rlsp]|cre)ing$/i,\n to: '$1e',\n },\n {\n reg: /(ch|sh)ing$/i,\n to: '$1',\n },\n {\n reg: /(..)ing$/i,\n to: '$1',\n },\n ],\n\n PastTense: [\n {\n reg: /(ued)$/i,\n to: 'ue',\n },\n {\n reg: /a([^aeiouy])ed$/i,\n to: 'a$1e',\n },\n {\n reg: /([aeiou]zz)ed$/i,\n to: '$1',\n },\n {\n reg: /(e|i)lled$/i,\n to: '$1ll',\n },\n {\n reg: /(.)(sh|ch)ed$/i,\n to: '$1$2',\n },\n {\n reg: /(tl|gl)ed$/i,\n to: '$1e',\n },\n {\n reg: /(um?pt?)ed$/i,\n to: '$1',\n },\n {\n reg: /(ss)ed$/i,\n to: '$1',\n },\n {\n reg: /pped$/i,\n to: 'p',\n },\n {\n reg: /tted$/i,\n to: 't',\n },\n {\n reg: /(..)gged$/i,\n to: '$1g',\n },\n {\n reg: /(..)lked$/i,\n to: '$1lk',\n },\n {\n reg: /([^aeiouy][aeiou])ked$/i,\n to: '$1ke',\n },\n {\n reg: /(.[aeiou])led$/i,\n to: '$1l',\n },\n {\n reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,\n to: '$1$2',\n },\n {\n reg: /(.ut)ed$/i,\n to: '$1e',\n },\n {\n reg: /(.pt)ed$/i,\n to: '$1',\n },\n {\n reg: /(us)ed$/i,\n to: '$1e',\n },\n {\n reg: /(..[^aeiouy])ed$/i,\n to: '$1e',\n },\n {\n reg: /(..)ied$/i,\n to: '$1y',\n },\n {\n reg: /(.o)ed$/i,\n to: '$1o',\n },\n {\n reg: /(..i)ed$/i,\n to: '$1',\n },\n {\n reg: /(.a[^aeiou])ed$/i,\n to: '$1',\n },\n {\n reg: /([rl])ew$/i,\n to: '$1ow',\n },\n {\n reg: /([pl])t$/i,\n to: '$1t',\n },\n ],\n}\nmodule.exports = rules\n","let guessVerb = {\n Gerund: ['ing'],\n Actor: ['erer'],\n Infinitive: [\n 'ate',\n 'ize',\n 'tion',\n 'rify',\n 'then',\n 'ress',\n 'ify',\n 'age',\n 'nce',\n 'ect',\n 'ise',\n 'ine',\n 'ish',\n 'ace',\n 'ash',\n 'ure',\n 'tch',\n 'end',\n 'ack',\n 'and',\n 'ute',\n 'ade',\n 'ock',\n 'ite',\n 'ase',\n 'ose',\n 'use',\n 'ive',\n 'int',\n 'nge',\n 'lay',\n 'est',\n 'ain',\n 'ant',\n 'ent',\n 'eed',\n 'er',\n 'le',\n 'own',\n 'unk',\n 'ung',\n 'en',\n ],\n PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'],\n PresentTense: [\n 'rks',\n 'cks',\n 'nks',\n 'ngs',\n 'mps',\n 'tes',\n 'zes',\n 'ers',\n 'les',\n 'acks',\n 'ends',\n 'ands',\n 'ocks',\n 'lays',\n 'eads',\n 'lls',\n 'els',\n 'ils',\n 'ows',\n 'nds',\n 'ays',\n 'ams',\n 'ars',\n 'ops',\n 'ffs',\n 'als',\n 'urs',\n 'lds',\n 'ews',\n 'ips',\n 'es',\n 'ts',\n 'ns',\n ],\n}\n//flip it into a lookup object\nguessVerb = Object.keys(guessVerb).reduce((h, k) => {\n guessVerb[k].forEach(a => (h[a] = k))\n return h\n}, {})\nmodule.exports = guessVerb\n","const rules = require('./_transform')\nconst guess = require('./_guess')\n\n/** it helps to know what we're conjugating from */\nconst guessTense = function(str) {\n let three = str.substr(str.length - 3)\n if (guess.hasOwnProperty(three) === true) {\n return guess[three]\n }\n let two = str.substr(str.length - 2)\n if (guess.hasOwnProperty(two) === true) {\n return guess[two]\n }\n let one = str.substr(str.length - 1)\n if (one === 's') {\n return 'PresentTense'\n }\n return null\n}\n\nconst toInfinitive = function(str, world, tense) {\n if (!str) {\n return ''\n }\n //1. look at known irregulars\n if (world.words.hasOwnProperty(str) === true) {\n let irregs = world.irregulars.verbs\n let keys = Object.keys(irregs)\n for (let i = 0; i < keys.length; i++) {\n let forms = Object.keys(irregs[keys[i]])\n for (let o = 0; o < forms.length; o++) {\n if (str === irregs[keys[i]][forms[o]]) {\n return keys[i]\n }\n }\n }\n }\n\n // give'r!\n tense = tense || guessTense(str)\n if (tense && rules[tense]) {\n for (let i = 0; i < rules[tense].length; i++) {\n const rule = rules[tense][i]\n if (rule.reg.test(str) === true) {\n return str.replace(rule.reg, rule.to)\n }\n }\n }\n return str\n}\nmodule.exports = toInfinitive\n","const lexData = require('./_data')\nconst defaultTags = require('./tags')\nconst unpack = require('efrt-unpack')\nconst addLex = require('./addWords')\nconst addIrregulars = require('./addIrregulars')\nconst inferTagSet = require('./tags/inference')\n\nlet misc = require('./data/misc')\n\n//these let users change inflection / verb conjugation\nconst irregulars = {\n nouns: require('./data/plurals'),\n verbs: require('./data/conjugations'),\n}\n\n//these behaviours are configurable & shared across some plugins\nconst transforms = {\n conjugate: require('../transforms/conjugate'),\n adjectives: require('../transforms/adjectives'),\n toPlural: require('../transforms/toPlural'),\n toSingular: require('../transforms/toSingular'),\n toInfinitive: require('../transforms/toInfinitive'),\n}\n\nlet isVerbose = false\n\n/** all configurable linguistic data */\nclass World {\n constructor() {\n // quiet these properties from a console.log\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: misc,\n writable: true,\n })\n Object.defineProperty(this, 'hasCompound', {\n enumerable: false,\n value: {},\n writable: true,\n })\n Object.defineProperty(this, 'irregulars', {\n enumerable: false,\n value: irregulars,\n writable: true,\n })\n Object.defineProperty(this, 'tags', {\n enumerable: false,\n value: Object.assign({}, defaultTags),\n writable: true,\n })\n Object.defineProperty(this, 'transforms', {\n enumerable: false,\n value: transforms,\n writable: true,\n })\n\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true,\n })\n // add our compressed data to lexicon\n this.unpackWords(lexData)\n // add our irregulars to lexicon\n this.addIrregulars()\n\n // cache our abbreviations for our sentence-parser\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: this.getByTag('Abbreviation'),\n },\n })\n }\n\n /** more logs for debugging */\n verbose(bool) {\n isVerbose = bool\n return this\n }\n isVerbose() {\n return isVerbose\n }\n\n /** get all terms in our lexicon with this tag */\n getByTag(tag) {\n let lex = this.words\n let res = {}\n let words = Object.keys(lex)\n for (let i = 0; i < words.length; i++) {\n if (typeof lex[words[i]] === 'string') {\n if (lex[words[i]] === tag) {\n res[words[i]] = true\n }\n } else if (lex[words[i]].some(t => t === tag)) {\n res[words[i]] = true\n }\n }\n return res\n }\n\n /** augment our lingustic data with new data */\n unpackWords(lex) {\n let tags = Object.keys(lex)\n for (let i = 0; i < tags.length; i++) {\n let words = Object.keys(unpack(lex[tags[i]]))\n for (let w = 0; w < words.length; w++) {\n addLex.addWord(words[w], tags[i], this.words)\n // do some fancier stuff\n addLex.addMore(words[w], tags[i], this)\n }\n }\n }\n /** put new words into our lexicon, properly */\n addWords(obj) {\n let keys = Object.keys(obj)\n for (let i = 0; i < keys.length; i++) {\n let word = keys[i].toLowerCase()\n addLex.addWord(word, obj[keys[i]], this.words)\n // do some fancier stuff\n addLex.addMore(word, obj[keys[i]], this)\n }\n }\n\n addIrregulars() {\n addIrregulars(this)\n return this\n }\n\n /** extend the compromise tagset */\n addTags(tags) {\n tags = Object.assign({}, tags)\n this.tags = Object.assign(this.tags, tags)\n // calculate graph implications for the new tags\n this.tags = inferTagSet(this.tags)\n return this\n }\n /** call methods after tagger runs */\n postProcess(fn) {\n this.taggers.push(fn)\n return this\n }\n\n /** helper method for logging + debugging */\n stats() {\n return {\n words: Object.keys(this.words).length,\n plurals: Object.keys(this.irregular.plurals).length,\n conjugations: Object.keys(this.irregular.conjugations).length,\n compounds: Object.keys(this.hasCompound).length,\n postProcessors: this.taggers.length,\n }\n }\n}\n\n// ¯\\_(:/)_/¯\nconst clone = function(obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\n/** produce a deep-copy of all lingustic data */\nWorld.prototype.clone = function() {\n let w2 = new World()\n // these are simple to copy:\n w2.words = Object.assign({}, this.words)\n w2.hasCompound = Object.assign({}, this.hasCompound)\n //these ones are nested:\n w2.irregulars = clone(this.irregulars)\n w2.tags = clone(this.tags)\n // these are functions\n w2.transforms = this.transforms\n w2.taggers = this.taggers\n return w2\n}\nmodule.exports = World\n","// const cache = require('./_setCache')\n\n/** return the root, first document */\nexports.all = function() {\n return this.parents()[0] || this\n}\n\n/** return the previous result */\nexports.parent = function() {\n if (this.from) {\n return this.from\n }\n return this\n}\n\n/** return a list of all previous results */\nexports.parents = function(n) {\n let arr = []\n const addParent = function(doc) {\n if (doc.from) {\n arr.push(doc.from)\n addParent(doc.from)\n }\n }\n addParent(this)\n arr = arr.reverse()\n if (typeof n === 'number') {\n return arr[n]\n }\n return arr\n}\n\n/** deep-copy the document, so that no references remain */\nexports.clone = function(doShallow) {\n let list = this.list.map(ts => ts.clone(doShallow))\n let tmp = this.buildFrom(list)\n return tmp\n}\n\n/** how many seperate terms does the document have? */\nexports.wordCount = function() {\n return this.list.reduce((count, p) => {\n count += p.wordCount()\n return count\n }, 0)\n}\nexports.wordcount = exports.wordCount\n\n/** turn on logging for decision-debugging */\n// exports.verbose = function(bool) {\n// if (bool === undefined) {\n// bool = true\n// }\n// this.world.verbose = bool\n// }\n\n/** freeze the current state of the document, for speed-purposes*/\nexports.cache = function(options) {\n options = options || {}\n this.list.forEach(p => {\n let words = {}\n p.cache = p.cache || {}\n p.cache.terms = p.cache.terms || p.terms()\n // cache all the terms\n p.cache.terms.forEach(t => {\n words[t.clean] = true\n words[t.reduced] = true\n words[t.text.toLowerCase()] = true\n if (t.implicit) {\n words[t.implicit] = true\n }\n if (t.root) {\n words[t.root] = true\n }\n if (t.alias !== undefined) {\n words = Object.assign(words, t.alias)\n }\n if (options.root) {\n t.setRoot(this.world)\n words[t.root] = true\n }\n })\n delete words['']\n p.cache.words = words\n })\n return this\n}\n\n/** un-freezes the current state of the document, so it may be transformed */\nexports.uncache = function() {\n this.list.forEach(p => {\n p.cache = {}\n })\n // do parents too?\n this.parents().forEach(doc => {\n doc.list.forEach(p => {\n p.cache = {}\n })\n })\n return this\n}\n","/** use only the first result(s) */\nexports.first = function(n) {\n if (n === undefined) {\n return this.get(0)\n }\n return this.slice(0, n)\n}\n\n/** use only the last result(s) */\nexports.last = function(n) {\n if (n === undefined) {\n return this.get(this.list.length - 1)\n }\n let end = this.list.length\n return this.slice(end - n, end)\n}\n\n/** grab a given subset of the results*/\nexports.slice = function(start, end) {\n let list = this.list.slice(start, end)\n return this.buildFrom(list)\n}\n\n/* grab nth result */\nexports.eq = function(n) {\n let p = this.list[n]\n if (p === undefined) {\n return this.buildFrom([])\n }\n return this.buildFrom([p])\n}\nexports.get = exports.eq\n\n/** grab term[0] for every match */\nexports.firstTerm = function() {\n return this.match('^.')\n}\n/** grab the last term for every match */\nexports.lastTerm = function() {\n return this.match('.$')\n}\n\n/** return a flat array of term objects */\nexports.termList = function(num) {\n let arr = []\n //'reduce' but faster\n for (let i = 0; i < this.list.length; i++) {\n let terms = this.list[i].terms()\n for (let o = 0; o < terms.length; o++) {\n arr.push(terms[o])\n //support .termList(4)\n if (num !== undefined && arr[num] !== undefined) {\n return arr[num]\n }\n }\n }\n return arr\n}\n","const parseSyntax = require('../match/syntax')\n\n/** return a new Doc, with this one as a parent */\nexports.match = function(reg) {\n //parse-up the input expression\n let regs = parseSyntax(reg)\n if (regs.length === 0) {\n return this.buildFrom([])\n }\n //try expression on each phrase\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.match(regs))\n }, [])\n return this.buildFrom(matches)\n}\n\n/** return all results except for this */\nexports.not = function(reg) {\n //parse-up the input expression\n let regs = parseSyntax(reg)\n //if it's empty, return them all!\n if (regs.length === 0) {\n return this\n }\n //try expression on each phrase\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.not(regs))\n }, [])\n return this.buildFrom(matches)\n}\n\n/** return only the first match */\nexports.matchOne = function(reg) {\n let regs = parseSyntax(reg)\n for (let i = 0; i < this.list.length; i++) {\n let match = this.list[i].match(regs)\n return this.buildFrom(match)\n }\n return this.buildFrom([])\n}\n\n/** return each current phrase, only if it contains this match */\nexports.if = function(reg) {\n let regs = parseSyntax(reg)\n let found = this.list.filter(p => p.match(regs).length > 0)\n return this.buildFrom(found)\n}\n\n/** Filter-out any current phrases that have this match*/\nexports.ifNo = function(reg) {\n let regs = parseSyntax(reg)\n let found = this.list.filter(p => p.match(regs).length === 0)\n return this.buildFrom(found)\n}\n\n/**Return a boolean if this match exists */\nexports.has = function(reg) {\n let regs = parseSyntax(reg)\n return this.list.some(p => p.has(regs) === true)\n}\n\n/** match any terms after our matches, within the sentence */\nexports.lookAhead = function(reg) {\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*'\n }\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n matches = matches.concat(p.lookAhead(regs))\n })\n matches = matches.filter(p => p)\n return this.buildFrom(matches)\n}\nexports.lookAfter = exports.lookAhead\n\n/** match any terms before our matches, within the sentence */\nexports.lookBehind = function(reg) {\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*'\n }\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n matches = matches.concat(p.lookBehind(regs))\n })\n matches = matches.filter(p => p)\n return this.buildFrom(matches)\n}\nexports.lookBefore = exports.lookBehind\n\n/** return all terms before a match, in each phrase */\nexports.before = function(reg) {\n let regs = parseSyntax(reg)\n //only the phrases we care about\n let phrases = this.if(regs).list\n let befores = phrases.map(p => {\n let ids = p.terms().map(t => t.id)\n //run the search again\n let m = p.match(regs)[0]\n let index = ids.indexOf(m.start)\n //nothing is before a first-term match\n if (index === 0 || index === -1) {\n return null\n }\n return p.buildFrom(p.start, index)\n })\n befores = befores.filter(p => p !== null)\n return this.buildFrom(befores)\n}\n\n/** return all terms after a match, in each phrase */\nexports.after = function(reg) {\n let regs = parseSyntax(reg)\n //only the phrases we care about\n let phrases = this.if(regs).list\n let befores = phrases.map(p => {\n let terms = p.terms()\n let ids = terms.map(t => t.id)\n //run the search again\n let m = p.match(regs)[0]\n let index = ids.indexOf(m.start)\n //skip if nothing is after it\n if (index === -1 || !terms[index + m.length]) {\n return null\n }\n //create the new phrase, after our match.\n let id = terms[index + m.length].id\n let len = p.length - index - m.length\n return p.buildFrom(id, len)\n })\n befores = befores.filter(p => p !== null)\n return this.buildFrom(befores)\n}\n","/** apply a tag, or tags to all terms */\nconst tagTerms = function(tag, doc, safe, reason) {\n let tagList = []\n if (typeof tag === 'string') {\n tagList = tag.split(' ')\n }\n\n // console.log(doc.parents().length)\n //do indepenent tags for each term:\n doc.list.forEach(p => {\n let terms = p.terms()\n // tagSafe - apply only to fitting terms\n if (safe === true) {\n terms = terms.filter(t => t.canBe(tag, doc.world))\n }\n terms.forEach((t, i) => {\n //fancy version:\n if (tagList.length > 1) {\n if (tagList[i] && tagList[i] !== '.') {\n t.tag(tagList[i], reason, doc.world)\n }\n } else {\n //non-fancy version (same tag for all terms)\n t.tag(tag, reason, doc.world)\n }\n })\n })\n return\n}\nmodule.exports = tagTerms\n","const setTag = require('./_setTag')\n\n/** Give all terms the given tag */\nexports.tag = function(tags, why) {\n if (!tags) {\n return this\n }\n setTag(tags, this, false, why)\n return this\n}\n\n/** Only apply tag to terms if it is consistent with current tags */\nexports.tagSafe = function(tags, why) {\n if (!tags) {\n return this\n }\n setTag(tags, this, true, why)\n return this\n}\n\n/** Remove this term from the given terms */\nexports.unTag = function(tags, why) {\n this.list.forEach(p => {\n p.terms().forEach(t => t.unTag(tags, why, this.world))\n })\n return this\n}\n\n/** return only the terms that can be this tag*/\nexports.canBe = function(tag) {\n if (!tag) {\n return this\n }\n let world = this.world\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.canBe(tag, world))\n }, [])\n return this.buildFrom(matches)\n}\n","/* run each phrase through a function, and create a new document */\nexports.map = function(fn) {\n if (!fn) {\n return this\n }\n let list = this.list.map((p, i) => {\n let doc = this.buildFrom([p])\n doc.from = null //it's not a child/parent\n let res = fn(doc, i)\n if (res.list && res.list[0]) {\n return res.list[0]\n }\n return res\n })\n if (list.length === 0) {\n return this.buildFrom(list)\n }\n // if it is not a list of Phrase objects, then don't try to make a Doc object\n if (typeof list[0] !== 'object' || list[0].isA !== 'Phrase') {\n return list\n }\n return this.buildFrom(list)\n}\n\n/** run a function on each phrase */\nexports.forEach = function(fn, detachParent) {\n if (!fn) {\n return this\n }\n this.list.forEach((p, i) => {\n let sub = this.buildFrom([p])\n // if we're doing fancy insertions, we may want to skip updating the parent each time.\n if (detachParent === true) {\n sub.from = null //\n }\n // let len\n // console.log(sub.from.list[0].text())\n fn(sub, i)\n // console.log(sub.from.list[0].text())\n })\n return this\n}\n\n/** return only the phrases that return true */\nexports.filter = function(fn) {\n if (!fn) {\n return this\n }\n let list = this.list.filter((p, i) => {\n let doc = this.buildFrom([p])\n doc.from = null //it's not a child/parent\n return fn(doc, i)\n })\n return this.buildFrom(list)\n}\n\n/** return a document with only the first phrase that matches */\nexports.find = function(fn) {\n if (!fn) {\n return this\n }\n let phrase = this.list.find((p, i) => {\n let doc = this.buildFrom([p])\n doc.from = null //it's not a child/parent\n return fn(doc, i)\n })\n if (phrase) {\n return this.buildFrom([phrase])\n }\n return undefined\n}\n\n/** return true or false if there is one matching phrase */\nexports.some = function(fn) {\n if (!fn) {\n return this\n }\n return this.list.some((p, i) => {\n let doc = this.buildFrom([p])\n doc.from = null //it's not a child/parent\n return fn(doc, i)\n })\n}\n\n/** sample a subset of the results */\nexports.random = function(n) {\n if (!this.found) {\n return this\n }\n let r = Math.floor(Math.random() * this.list.length)\n if (n === undefined) {\n let list = [this.list[r]]\n return this.buildFrom(list)\n }\n //prevent it from going over the end\n if (r + n > this.length) {\n r = this.length - n\n r = r < 0 ? 0 : r\n }\n return this.slice(r, r + n)\n}\n\n/** combine each phrase into a new data-structure */\n// exports.reduce = function(fn, h) {\n// let list = this.list.reduce((_h, ts) => {\n// let doc = this.buildFrom([ts])\n// doc.from = null //it's not a child/parent\n// return fn(_h, doc)\n// }, h)\n// return this.buildFrom(list)\n// }\n","const tokenize = require('../../01-tokenizer/02-words')\n\n// compare one term and one match\nconst doesMatch = function(term, str) {\n if (str === '') {\n return false\n }\n return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str\n}\n\n// is this lookup found in these terms?\nconst findStart = function(arr, terms) {\n //find the start\n for (let i = 0; i < terms.length; i++) {\n if (doesMatch(terms[i], arr[0])) {\n if (arr.every((a, n) => doesMatch(terms[i + n], a) === true)) {\n return terms[i].id\n }\n }\n }\n return false\n}\n\n/** lookup an array of words or phrases */\nexports.lookup = function(arr) {\n if (typeof arr === 'string') {\n arr = [arr]\n }\n let lookups = arr.map(str => {\n str = str.toLowerCase()\n let words = tokenize(str)\n words = words.map(s => s.trim())\n return words\n })\n this.cache()\n let found = []\n // try each lookup\n lookups.forEach(a => {\n //try each phrase\n this.list.forEach(p => {\n // cache-miss, skip.\n if (p.cache.words[a[0]] !== true) {\n return\n }\n //we found a potential match\n let terms = p.terms()\n let id = findStart(a, terms)\n if (id !== false) {\n // create the actual phrase\n let phrase = p.buildFrom(id, a.length)\n found.push(phrase)\n return\n }\n })\n })\n return this.buildFrom(found)\n}\n","const tokenize = require('../../../01-tokenizer')\n\nconst titleCase = str => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\n/** substitute-in new content */\nexports.replaceWith = function(replace, keepTags, keepCase) {\n if (!replace) {\n return this.delete()\n }\n // clear the cache\n this.uncache()\n // return this\n this.list.forEach(p => {\n let input = replace\n // accept a function for replace\n if (typeof replace === 'function') {\n input = replace(p)\n }\n let newPhrases\n // accept a Doc object to replace\n if (input && typeof input === 'object' && input.isA === 'Doc') {\n newPhrases = input.list\n this.pool().merge(input.pool())\n } else if (typeof input === 'string') {\n //input is a string\n if (keepCase === true && p.terms(0).isTitleCase()) {\n input = titleCase(input)\n }\n newPhrases = tokenize.fromText(input, this.world, this.pool())\n //tag the new phrases\n let tmpDoc = this.buildFrom(newPhrases)\n tmpDoc.tagger()\n } else {\n return //don't even bother\n }\n\n // try to keep its old tags, if appropriate\n if (keepTags === true) {\n let oldTags = p.json({ terms: { tags: true } }).terms\n newPhrases[0].terms().forEach((t, i) => {\n if (oldTags[i]) {\n t.tagSafe(oldTags[i].tags, 'keptTag', this.world)\n }\n })\n }\n p.replace(newPhrases[0], this) //Oneday: support multi-sentence replacements\n })\n return this\n}\n\n/** search and replace match with new content */\nexports.replace = function(match, replace, keepTags, keepCase) {\n // if there's no 2nd param, use replaceWith\n if (replace === undefined) {\n return this.replaceWith(match)\n }\n this.match(match).replaceWith(replace, keepTags, keepCase)\n return this\n}\n","const tokenize = require('../../../01-tokenizer')\n\n/** add these new terms to the end*/\nexports.append = function(str) {\n if (!str) {\n return this\n }\n // clear the cache\n this.uncache()\n //add it to end of every phrase\n this.list.forEach(p => {\n //build it\n let phrase = tokenize.fromText(str, this.world, this.pool())[0] //assume it's one sentence, for now\n //tag it\n let tmpDoc = this.buildFrom([phrase])\n tmpDoc.tagger()\n // push it onto the end\n p.append(phrase, this)\n })\n return this\n}\nexports.insertAfter = exports.append\nexports.insertAt = exports.append\n\n/** add these new terms to the front*/\nexports.prepend = function(str) {\n if (!str) {\n return this\n }\n // clear the cache\n this.uncache()\n //add it to start of every phrase\n this.list.forEach(p => {\n //build it\n let phrase = tokenize.fromText(str, this.world, this.pool())[0] //assume it's one sentence, for now\n //tag it\n let tmpDoc = this.buildFrom([phrase])\n tmpDoc.tagger()\n // add it to the start\n p.prepend(phrase, this)\n })\n return this\n}\nexports.insertBefore = exports.prepend\n\n/** add these new things to the end*/\nexports.concat = function() {\n // clear the cache\n this.uncache()\n let list = this.list.slice(0)\n //repeat for any number of params\n for (let i = 0; i < arguments.length; i++) {\n let arg = arguments[i]\n //support a fresh string\n if (typeof arg === 'string') {\n let arr = tokenize.fromText(arg, this.world)\n //TODO: phrase.tagger()?\n list = list.concat(arr)\n } else if (arg.isA === 'Doc') {\n list = list.concat(arg.list)\n } else if (arg.isA === 'Phrase') {\n list.push(arg)\n }\n }\n return this.buildFrom(list)\n}\n\n/** fully remove these terms from the document */\nexports.delete = function(match) {\n // clear the cache\n this.uncache()\n let toRemove = this\n if (match) {\n toRemove = this.match(match)\n }\n toRemove.list.forEach(phrase => phrase.delete(this))\n return this\n}\n// aliases\nexports.remove = exports.delete\n","/** return the document as text */\nexports.text = function(options) {\n options = options || {}\n //are we showing every phrase?\n let showFull = false\n if (this.parents().length === 0) {\n showFull = true\n }\n // cache roots, if necessary\n if (options === 'root' || (typeof options === 'object' && options.root)) {\n this.list.forEach(p => {\n p.terms().forEach(t => {\n if (t.root === null) {\n t.setRoot(this.world)\n }\n })\n })\n }\n\n return this.list.reduce((str, p, i) => {\n const trimPre = !showFull && i === 0\n const trimPost = !showFull && i === this.list.length - 1\n return str + p.text(options, trimPre, trimPost)\n }, '')\n}\n","const jsonDefaults = { text: true, terms: true, trim: true }\n\n// get all character startings in doc\nconst termOffsets = function(doc) {\n let elapsed = 0\n let index = 0\n let offsets = {}\n doc.termList().forEach(term => {\n offsets[term.id] = {\n index: index,\n start: elapsed + term.pre.length,\n length: term.text.length,\n }\n elapsed += term.pre.length + term.text.length + term.post.length\n index += 1\n })\n return offsets\n}\n\n/** pull out desired metadata from the document */\nexports.json = function(options = {}) {\n //support json(3) format\n if (typeof options === 'number' && this.list[options]) {\n return this.list[options].json(jsonDefaults)\n }\n options = Object.assign({}, jsonDefaults, options)\n\n // cache roots, if necessary\n if (options === 'root' || (typeof options === 'object' && options.root)) {\n this.list.forEach(p => {\n p.terms().forEach(t => {\n if (t.root === null) {\n t.setRoot(this.world)\n }\n })\n })\n }\n\n if (options.unique) {\n options.reduced = true\n }\n if (options.offset) {\n options.terms = options.terms === true ? {} : options.terms\n options.terms.offset = true\n }\n if (options.index || options.terms.index) {\n options.terms = options.terms === true ? {} : options.terms\n options.terms.id = true\n }\n let result = this.list.map(p => {\n return p.json(options, this.world)\n })\n // add offset and index data for each term\n if (options.terms.offset || options.offset || options.terms.index || options.index) {\n // calculate them, (from beginning of doc)\n let offsets = termOffsets(this.all())\n // add index values\n if (options.terms.index || options.index) {\n result.forEach(o => {\n o.terms.forEach(t => {\n t.index = offsets[t.id].index\n })\n o.index = o.terms[0].index\n })\n }\n // add offset values\n if (options.terms.offset || options.offset) {\n result.forEach(o => {\n o.terms.forEach(t => {\n t.offset = offsets[t.id] || {}\n })\n let len = o.terms.reduce((n, t) => {\n n += t.offset.length || 0\n return n\n }, 0)\n o.offset = o.terms[0].offset\n o.offset.length = len\n })\n }\n }\n // add frequency #s\n if (options.frequency || options.freq || options.count) {\n let obj = {}\n this.list.forEach(p => {\n let str = p.text('reduced')\n obj[str] = obj[str] || 0\n obj[str] += 1\n })\n this.list.forEach((p, i) => {\n result[i].count = obj[p.text('reduced')]\n })\n }\n // remove duplicates\n if (options.unique) {\n let already = {}\n result = result.filter(o => {\n if (already[o.reduced] === true) {\n return false\n }\n already[o.reduced] = true\n return true\n })\n }\n return result\n}\n\n//aliases\nexports.data = exports.json\n","const entity = ['Person', 'Place', 'Organization']\n\nmodule.exports = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb'],\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural',\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun',\n },\n\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization'],\n },\n FirstName: {\n isA: 'Person',\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName'],\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName'],\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName'],\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName'],\n },\n\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization'],\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City'],\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country'],\n },\n Region: {\n isA: ['Place', 'ProperNoun'],\n },\n Address: {\n isA: 'Place',\n },\n\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place'],\n },\n SportsTeam: {\n isA: 'Organization',\n },\n School: {\n isA: 'Organization',\n },\n Company: {\n isA: 'Organization',\n },\n\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular'],\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun',\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity,\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity,\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place'],\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity,\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity,\n },\n //`john's`\n Possessive: {\n isA: 'Noun',\n // notA: 'Pronoun',\n },\n}\n","module.exports = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value'],\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'Copula', 'FutureTense'],\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund'],\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense'],\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense'],\n },\n // will walk\n FutureTense: {\n isA: 'Verb',\n },\n\n // is\n Copula: {\n isA: 'Verb',\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive'],\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund',\n },\n Pluperfect: {\n isA: 'Verb',\n },\n // shown\n Participle: {\n isA: 'Verb',\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb',\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb',\n },\n}\n","module.exports = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb'],\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal'],\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal'],\n },\n RomanNumeral: {\n isA: 'Cardinal', //can be a person, too\n notA: ['Ordinal', 'TextValue'],\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue'],\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue'],\n },\n Money: {\n isA: 'Cardinal',\n },\n Percent: {\n isA: 'Value',\n },\n}\n","const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value']\n\nmodule.exports = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value'],\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective'],\n },\n // better\n Comparative: {\n isA: ['Adjective'],\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative'],\n },\n\n NumberRange: {\n isA: ['Contraction'],\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value'],\n },\n\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Conjunction', 'Adverb', 'Preposition', 'Adjective'],\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time'],\n },\n WeekDay: {\n isA: ['Date', 'Noun'],\n },\n\n //glue\n Determiner: {\n notA: anything,\n },\n Conjunction: {\n notA: anything,\n },\n Preposition: {\n notA: anything,\n },\n\n // what, who, why\n QuestionWord: {\n notA: ['Determiner'],\n },\n\n // peso, euro\n Currency: {},\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb'],\n },\n // dr.\n Abbreviation: {},\n\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email'],\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n\n //non-exclusive\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value'],\n },\n Acronym: {\n notA: ['Plural', 'RomanNumeral'],\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value'],\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value'],\n },\n}\n","// i just made these up\nconst colorMap = {\n Noun: 'blue',\n\n Verb: 'green',\n Negative: 'green',\n\n Date: 'red',\n Value: 'red',\n\n Adjective: 'magenta',\n\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan',\n}\n\n/** add a debug color to some tags */\nconst addColors = function(tags) {\n Object.keys(tags).forEach(k => {\n if (colorMap[k]) {\n tags[k].color = colorMap[k]\n return\n }\n tags[k].isA.some(t => {\n if (colorMap[t]) {\n tags[k].color = colorMap[t]\n return true\n }\n return false\n })\n })\n return tags\n}\n\nmodule.exports = addColors\n","const unique = function(arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i)\n}\n\n//add 'downward' tags (that immediately depend on this one)\nconst inferIsA = function(tags) {\n Object.keys(tags).forEach(k => {\n let tag = tags[k]\n let len = tag.isA.length\n for (let i = 0; i < len; i++) {\n let down = tag.isA[i]\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA)\n }\n }\n // clean it up\n tag.isA = unique(tag.isA)\n })\n return tags\n}\nmodule.exports = inferIsA\n","const unique = function(arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i)\n}\n\n// crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\nconst inferNotA = function(tags) {\n let keys = Object.keys(tags)\n keys.forEach(k => {\n let tag = tags[k]\n tag.notA = tag.notA || []\n tag.isA.forEach(down => {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n let notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || []\n tag.notA = tag.notA.concat(notA)\n }\n })\n // any tag that lists us as a conflict, we conflict it back.\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key)\n }\n }\n // clean it up\n tag.notA = unique(tag.notA)\n })\n return tags\n}\nmodule.exports = inferNotA\n","// a lineage is all 'incoming' tags that have this as 'isA'\nconst inferLineage = function(tags) {\n let keys = Object.keys(tags)\n keys.forEach(k => {\n let tag = tags[k]\n tag.lineage = []\n // find all tags with it in their 'isA' set\n for (let i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i])\n }\n }\n })\n return tags\n}\nmodule.exports = inferLineage\n","const inferColor = require('./_color')\nconst inferIsA = require('./_isA')\nconst inferNotA = require('./_notA')\nconst lineage = require('./_lineage')\n\nconst validate = function(tags) {\n // cleanup format\n Object.keys(tags).forEach(k => {\n let tag = tags[k]\n // ensure isA is an array\n tag.isA = tag.isA || []\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA]\n }\n // ensure notA is an array\n tag.notA = tag.notA || []\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA]\n }\n })\n return tags\n}\n\n// build-out the tag-graph structure\nconst inferTags = function(tags) {\n // validate data\n tags = validate(tags)\n // build its 'down tags'\n tags = inferIsA(tags)\n // infer the conflicts\n tags = inferNotA(tags)\n // debug tag color\n tags = inferColor(tags)\n // find incoming links\n tags = lineage(tags)\n return tags\n}\nmodule.exports = inferTags\n","const nouns = require('./tags/nouns')\nconst verbs = require('./tags/verbs')\nconst values = require('./tags/values')\nconst misc = require('./tags/misc')\nconst inferTags = require('./inference/index')\n\n//extend tagset with new tags\nconst addIn = function(obj, tags) {\n Object.keys(obj).forEach(k => {\n tags[k] = obj[k]\n })\n}\n\nconst build = () => {\n let tags = {}\n addIn(nouns, tags)\n addIn(verbs, tags)\n addIn(values, tags)\n addIn(misc, tags)\n // do the graph-stuff\n tags = inferTags(tags)\n return tags\n}\nmodule.exports = build()\n","const tagset = require('../../world/tags')\n\n// https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\nconst reset = '\\x1b[0m'\n\nconst padEnd = function(str, width) {\n str = str.toString()\n while (str.length < width) {\n str += ' '\n }\n return str\n}\n\n//cheaper than requiring chalk\nconst cli = {\n green: function(str) {\n return '\\x1b[32m' + str + reset\n },\n red: function(str) {\n return '\\x1b[31m' + str + reset\n },\n blue: function(str) {\n return '\\x1b[34m' + str + reset\n },\n magenta: function(str) {\n return '\\x1b[35m' + str + reset\n },\n cyan: function(str) {\n return '\\x1b[36m' + str + reset\n },\n yellow: function(str) {\n return '\\x1b[33m' + str + reset\n },\n black: function(str) {\n return '\\x1b[30m' + str + reset\n },\n}\n\nconst tagString = function(tags) {\n tags = tags.map(tag => {\n if (!tagset.hasOwnProperty(tag)) {\n return tag\n }\n const c = tagset[tag].color || 'blue'\n return cli[c](tag)\n })\n return tags.join(', ')\n}\n\n//output some helpful stuff to the console\nconst debug = function(doc) {\n console.log(cli.blue('====='))\n doc.list.forEach(p => {\n console.log(cli.blue(' -----'))\n p.terms().forEach(t => {\n let tags = Object.keys(t.tags)\n let text = t.text || '-'\n if (t.implicit) {\n text = '[' + t.implicit + ']'\n }\n if (typeof module !== undefined) {\n text = cli.yellow(text)\n }\n let word = \"'\" + text + \"'\"\n word = padEnd(word, 18)\n let str = cli.blue(' | ') + word + ' - ' + tagString(tags)\n console.log(str)\n })\n })\n console.log('')\n return doc\n}\nmodule.exports = debug\n","const topk = function(doc) {\n let list = doc.json({ text: false, terms: false, reduced: true })\n // combine them\n let obj = {}\n list.forEach(o => {\n if (!obj[o.reduced]) {\n o.count = 0\n obj[o.reduced] = o\n }\n obj[o.reduced].count += 1\n })\n let arr = Object.keys(obj).map(k => obj[k])\n // sort them\n arr.sort((a, b) => {\n if (a.count > b.count) {\n return -1\n } else if (a.count < b.count) {\n return 1\n }\n return 0\n })\n return arr\n}\nmodule.exports = topk\n","const debug = require('../_debug')\nconst topk = require('./_topk')\n\n/** pretty-print the current document and its tags */\nexports.debug = function() {\n debug(this)\n return this\n}\n\n/** some named output formats */\nexports.out = function(method) {\n if (method === 'text') {\n return this.text()\n }\n if (method === 'normal') {\n return this.text('normal')\n }\n if (method === 'json') {\n return this.json()\n }\n if (method === 'offset' || method === 'offsets') {\n return this.json({ offset: true })\n }\n if (method === 'array') {\n return this.json({ terms: false }).map(obj => obj.text)\n }\n if (method === 'freq' || method === 'frequency') {\n return topk(this)\n }\n if (method === 'terms') {\n let list = []\n this.json({ text: false, terms: { text: true } }).forEach(obj => {\n let terms = obj.terms.map(t => t.text)\n terms = terms.filter(t => t)\n list = list.concat(terms)\n })\n return list\n }\n if (method === 'tags') {\n return this.list.map(p => {\n return p.terms().reduce((h, t) => {\n h[t.clean || t.implicit] = Object.keys(t.tags)\n return h\n }, {})\n })\n }\n if (method === 'debug') {\n debug(this)\n return this\n }\n return this.text()\n}\n","// compress a list of things by frequency\nconst topk = function(list) {\n let counts = {}\n list.forEach(a => {\n counts[a] = counts[a] || 0\n counts[a] += 1\n })\n let arr = Object.keys(counts)\n arr = arr.sort((a, b) => {\n if (counts[a] > counts[b]) {\n return -1\n } else {\n return 1\n }\n })\n // arr = arr.filter(a => counts[a] > 1)\n return arr.map(a => [a, counts[a]])\n}\n\n// remove implied tags, like 'Noun' when we have 'Plural'\nconst reduceTags = function(tags, world) {\n let tagset = world.tags\n let implied = []\n tags.forEach(tag => {\n if (tagset[tag] && tagset[tag].isA) {\n implied = implied.concat(tagset[tag].isA)\n }\n })\n implied = implied.reduce((h, tag) => {\n h[tag] = true\n return h\n }, {})\n tags = tags.filter(tag => !implied[tag])\n // tags\n return tags\n}\n\n/** store a parsed document for later use */\nexports.export = function() {\n let phraseList = this.json({ text: true, trim: false, terms: { tags: true, whitespace: true } })\n // let phraseList = json.map(p => p.terms)\n let allTags = []\n phraseList.forEach(p => {\n p.terms.forEach(t => {\n // reduce redundant tags\n let tags = reduceTags(t.tags, this.world)\n allTags = allTags.concat(tags)\n })\n })\n // compress the top tags\n allTags = topk(allTags)\n let tagMap = {}\n allTags.forEach((a, i) => {\n tagMap[a[0]] = i\n })\n\n //use index numbers instead of redundant tag-names\n phraseList = phraseList.map(p => {\n let terms = p.terms.map(term => {\n let tags = term.tags\n tags = reduceTags(tags, this.world)\n tags = tags.map(tag => tagMap[tag])\n tags = tags.join(',')\n return tags\n })\n terms = terms.join('|')\n return [p.text, terms]\n })\n\n return {\n tags: Object.keys(tagMap),\n // words: {},\n list: phraseList,\n }\n}\n","const methods = {\n /** alphabetical order */\n alpha: (a, b) => {\n let left = a.text('clean')\n let right = b.text('clean')\n if (left < right) {\n return -1\n }\n if (left > right) {\n return 1\n }\n return 0\n },\n\n /** count the # of characters of each match */\n length: (a, b) => {\n let left = a.text().trim().length\n let right = b.text().trim().length\n if (left < right) {\n return 1\n }\n if (left > right) {\n return -1\n }\n return 0\n },\n\n /** count the # of terms in each match */\n wordCount: (a, b) => {\n let left = a.wordCount()\n let right = b.wordCount()\n if (left < right) {\n return 1\n }\n if (left > right) {\n return -1\n }\n return 0\n },\n}\n\n/** sort by # of duplicates in the document*/\nconst byFreq = function(doc) {\n let counts = {}\n const options = {\n case: true,\n punctuation: false,\n whitespace: true,\n unicode: true,\n }\n doc.list.forEach(p => {\n let str = p.text(options)\n counts[str] = counts[str] || 0\n counts[str] += 1\n })\n // sort by freq\n doc.list.sort((a, b) => {\n let left = counts[a.text(options)]\n let right = counts[b.text(options)]\n if (left < right) {\n return 1\n }\n if (left > right) {\n return -1\n }\n return 0\n })\n return doc\n}\n\n// order results 'chronologically', or document-order\nconst sortSequential = function(doc) {\n let order = {}\n doc.json({ terms: { offset: true } }).forEach(o => {\n order[o.terms[0].id] = o.terms[0].offset.start\n })\n doc.list = doc.list.sort((a, b) => {\n if (order[a.start] > order[b.start]) {\n return 1\n } else if (order[a.start] < order[b.start]) {\n return -1\n }\n return 0\n })\n return doc\n}\n\n//aliases\nmethods.alphabetical = methods.alpha\nmethods.wordcount = methods.wordCount\n\n// aliases for sequential ordering\nconst seqNames = {\n index: true,\n sequence: true,\n seq: true,\n sequential: true,\n chron: true,\n chronological: true,\n}\n\n/** re-arrange the order of the matches (in place) */\nexports.sort = function(input) {\n input = input || 'alpha'\n //do this one up-front\n if (input === 'freq' || input === 'frequency' || input === 'topk') {\n return byFreq(this)\n }\n if (seqNames.hasOwnProperty(input)) {\n return sortSequential(this)\n }\n\n input = methods[input] || input\n // apply sort method on each phrase\n if (typeof input === 'function') {\n this.list = this.list.sort(input)\n return this\n }\n return this\n}\n\n/** reverse the order of the matches, but not the words */\nexports.reverse = function() {\n let list = [].concat(this.list)\n list = list.reverse()\n return this.buildFrom(list)\n}\n\n/** remove any duplicate matches */\nexports.unique = function() {\n let list = [].concat(this.list)\n let obj = {}\n list = list.filter(p => {\n let str = p.text('reduced').trim()\n if (obj.hasOwnProperty(str) === true) {\n return false\n }\n obj[str] = true\n return true\n })\n return this.buildFrom(list)\n}\n","const killUnicode = require('../../../Term/normalize/unicode')\nconst isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g\nconst quotes = /['‘’“”\"′″‴]+/g\n\nconst methods = {\n // cleanup newlines and extra spaces\n whitespace: function(doc) {\n let termArr = doc.list.map(ts => ts.terms())\n termArr.forEach((terms, o) => {\n terms.forEach((t, i) => {\n // keep dashes between words\n if (t.hasDash() === true) {\n t.post = ' - '\n return\n }\n // remove existing spaces\n t.pre = t.pre.replace(/\\s/g, '')\n t.post = t.post.replace(/\\s/g, '')\n //last word? ensure there's a next sentence.\n if (terms.length - 1 === i && !termArr[o + 1]) {\n return\n }\n // no extra spaces for contractions\n if (t.implicit && Boolean(t.text) === true) {\n return\n }\n // no extra spaces for hyphenated words\n if (t.hasHyphen() === true) {\n return\n }\n\n t.post += ' '\n })\n })\n },\n\n punctuation: function(termList) {\n termList.forEach(t => {\n // space between hyphenated words\n if (t.hasHyphen() === true) {\n t.post = ' '\n }\n t.pre = t.pre.replace(isPunct, '')\n t.post = t.post.replace(isPunct, '')\n // elipses\n t.post = t.post.replace(/\\.\\.\\./, '')\n // only allow one exclamation\n if (/!/.test(t.post) === true) {\n t.post = t.post.replace(/!/g, '')\n t.post = '!' + t.post\n }\n // only allow one question mark\n if (/\\?/.test(t.post) === true) {\n t.post = t.post.replace(/[\\?!]*/, '')\n t.post = '?' + t.post\n }\n })\n },\n\n unicode: function(termList) {\n termList.forEach(t => {\n if (t.isImplicit() === true) {\n return\n }\n t.text = killUnicode(t.text)\n })\n },\n\n quotations: function(termList) {\n termList.forEach(t => {\n t.post = t.post.replace(quotes, '')\n t.pre = t.pre.replace(quotes, '')\n })\n },\n\n adverbs: function(doc) {\n doc\n .match('#Adverb')\n .not('(not|nary|seldom|never|barely|almost|basically|so)')\n .remove()\n },\n\n // remove the '.' from 'Mrs.' (safely)\n abbreviations: function(doc) {\n doc.list.forEach(ts => {\n let terms = ts.terms()\n terms.forEach((t, i) => {\n if (t.tags.Abbreviation === true && terms[i + 1]) {\n t.post = t.post.replace(/^\\./, '')\n }\n })\n })\n },\n}\nmodule.exports = methods\n","const methods = require('./_methods')\n\nconst defaults = {\n // light\n whitespace: true,\n unicode: true,\n punctuation: true,\n emoji: true,\n acronyms: true,\n abbreviations: true,\n\n // medium\n case: false,\n contractions: false,\n parentheses: false,\n quotations: false,\n adverbs: false,\n\n // heavy (loose legibility)\n possessives: false,\n verbs: false,\n nouns: false,\n honorifics: false,\n\n // pronouns: true,\n}\nconst mapping = {\n light: {},\n medium: { case: true, contractions: true, parentheses: true, quotations: true, adverbs: true },\n}\nmapping.heavy = Object.assign({}, mapping.medium, { possessives: true, verbs: true, nouns: true, honorifics: true })\n\n/** common ways to clean-up the document, and reduce noise */\nexports.normalize = function(options) {\n options = options || {}\n // support named forms\n if (typeof options === 'string') {\n options = mapping[options] || {}\n }\n // set defaults\n options = Object.assign({}, defaults, options)\n // clear the cache\n this.uncache()\n\n let termList = this.termList()\n\n // lowercase things\n if (options.case) {\n this.toLowerCase()\n }\n\n //whitespace\n if (options.whitespace) {\n methods.whitespace(this)\n }\n\n // unicode: é -> e\n if (options.unicode) {\n methods.unicode(termList)\n }\n\n //punctuation - keep sentence punctation, quotes, parenths\n if (options.punctuation) {\n methods.punctuation(termList)\n }\n\n // remove ':)'\n if (options.emoji) {\n this.remove('(#Emoji|#Emoticon)')\n }\n\n // 'f.b.i.' -> 'FBI'\n if (options.acronyms) {\n this.acronyms().strip()\n // .toUpperCase()\n }\n // remove period from abbreviations\n if (options.abbreviations) {\n methods.abbreviations(this)\n }\n\n // --Medium methods--\n\n // `isn't` -> 'is not'\n if (options.contraction || options.contractions) {\n this.contractions().expand()\n }\n\n // '(word)' -> 'word'\n if (options.parentheses) {\n this.parentheses().unwrap()\n }\n // remove \"\" punctuation\n if (options.quotations || options.quotes) {\n methods.quotations(termList)\n }\n\n // remove any un-necessary adverbs\n if (options.adverbs) {\n methods.adverbs(this)\n }\n\n // --Heavy methods--\n\n // `cory hart's -> cory hart'\n if (options.possessive || options.possessives) {\n this.possessives().strip()\n }\n // 'he walked' -> 'he walk'\n if (options.verbs) {\n this.verbs().toInfinitive()\n }\n // 'three dogs' -> 'three dog'\n if (options.nouns || options.plurals) {\n this.nouns().toSingular()\n }\n // remove 'Mr.' from 'Mr John Smith'\n if (options.honorifics) {\n this.remove('#Honorific')\n }\n\n return this\n}\n","const parseSyntax = require('../../match/syntax')\n\n/** return a Document with three parts for every match\n * seperate everything before the word, as a new phrase\n */\nexports.splitOn = function(reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent()\n return parent.splitOn(this)\n }\n //start looking for a match..\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n let foundEm = p.match(regs)\n //no match here, add full sentence\n if (foundEm.length === 0) {\n matches.push(p)\n return\n }\n // we found something here.\n let carry = p\n foundEm.forEach(found => {\n let parts = carry.splitOn(found)\n // add em in\n if (parts.before) {\n matches.push(parts.before)\n }\n if (parts.match) {\n matches.push(parts.match)\n }\n // start matching now on the end\n carry = parts.after\n })\n // add that last part\n if (carry) {\n matches.push(carry)\n }\n })\n return this.buildFrom(matches)\n}\n\n/** return a Document with two parts for every match\n * seperate everything after the word, as a new phrase\n */\nexports.splitAfter = function(reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent()\n return parent.splitAfter(this)\n }\n // start looking for our matches\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n let foundEm = p.match(regs)\n //no match here, add full sentence\n if (foundEm.length === 0) {\n matches.push(p)\n return\n }\n // we found something here.\n let carry = p\n foundEm.forEach(found => {\n let parts = carry.splitOn(found)\n // add em in\n if (parts.before && parts.match) {\n // merge these two together\n parts.before.length += parts.match.length\n matches.push(parts.before)\n } else if (parts.match) {\n matches.push(parts.match)\n }\n // start matching now on the end\n carry = parts.after\n })\n // add that last part\n if (carry) {\n matches.push(carry)\n }\n })\n return this.buildFrom(matches)\n}\nexports.split = exports.splitAfter //i guess?\n\n/** return a Document with two parts for every match */\nexports.splitBefore = function(reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent()\n return parent.splitBefore(this)\n }\n //start looking for a match..\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n let foundEm = p.match(regs)\n //no match here, add full sentence\n if (foundEm.length === 0) {\n matches.push(p)\n return\n }\n // we found something here.\n let carry = p\n foundEm.forEach(found => {\n let parts = carry.splitOn(found)\n // add before part in\n if (parts.before) {\n matches.push(parts.before)\n }\n // merge match+after\n if (parts.match && parts.after) {\n parts.match.length += parts.after.length\n }\n // start matching now on the end\n carry = parts.match\n })\n // add that last part\n if (carry) {\n matches.push(carry)\n }\n })\n return this.buildFrom(matches)\n}\n\n/** split a document into labeled sections */\nexports.segment = function(regs, options) {\n regs = regs || {}\n options = options || { text: true }\n let doc = this\n let keys = Object.keys(regs)\n // split em\n keys.forEach(k => {\n doc = doc.splitOn(k)\n })\n //add labels for each section\n doc.list.forEach(p => {\n for (let i = 0; i < keys.length; i += 1) {\n if (p.has(keys[i])) {\n p.segment = regs[keys[i]]\n return\n }\n }\n })\n return doc.list.map(p => {\n let res = p.json(options)\n res.segment = p.segment || null\n return res\n })\n}\n","const eachTerm = function(doc, fn) {\n let world = doc.world\n doc.list.forEach(p => {\n p.terms().forEach(t => t[fn](world))\n })\n return doc\n}\n\n/** turn every letter of every term to lower-cse */\nexports.toLowerCase = function() {\n return eachTerm(this, 'toLowerCase')\n}\n\n/** turn every letter of every term to upper case */\nexports.toUpperCase = function() {\n return eachTerm(this, 'toUpperCase')\n}\n\n/** upper-case the first letter of each term */\nexports.toTitleCase = function() {\n this.tag('TitleCase')\n return eachTerm(this, 'toTitleCase')\n}\n/** remove whitespace and title-case each term */\nexports.toCamelCase = function() {\n this.list.forEach(p => {\n //remove whitespace\n let terms = p.terms()\n terms.forEach((t, i) => {\n if (i !== 0) {\n t.toTitleCase()\n }\n if (i !== terms.length - 1) {\n t.post = ''\n }\n })\n })\n // this.tag('#CamelCase', 'toCamelCase')\n return this\n}\n","/** add this punctuation or whitespace before each match: */\nexports.pre = function(str) {\n if (str === undefined) {\n return this.list[0].terms(0).pre\n }\n this.list.forEach(p => {\n let term = p.terms(0)\n term.pre = str\n })\n return this\n}\n\n/** add this punctuation or whitespace after each match: */\nexports.post = function(str) {\n // return array of post strings\n if (str === undefined) {\n return this.list.map(p => {\n let terms = p.terms()\n let term = terms[terms.length - 1]\n return term.post\n })\n }\n // set post string on all ends\n this.list.forEach(p => {\n let terms = p.terms()\n let term = terms[terms.length - 1]\n term.post = str\n })\n return this\n}\n\n/** remove start and end whitespace */\nexports.trim = function() {\n this.list = this.list.map(p => p.trim())\n return this\n}\n\n/** connect words with hyphen, and remove whitespace */\nexports.hyphenate = function() {\n this.list.forEach(p => {\n let terms = p.terms()\n //remove whitespace\n terms.forEach((t, i) => {\n if (i !== 0) {\n t.pre = ''\n }\n if (terms[i + 1]) {\n t.post = '-'\n }\n })\n })\n return this\n}\n\n/** remove hyphens between words, and set whitespace */\nexports.dehyphenate = function() {\n const hasHyphen = /(-|–|—)/\n this.list.forEach(p => {\n let terms = p.terms()\n //remove whitespace\n terms.forEach(t => {\n if (hasHyphen.test(t.post)) {\n t.post = ' '\n }\n })\n })\n return this\n}\nexports.deHyphenate = exports.dehyphenate\n\n/** add quotations around these matches */\nexports.toQuotations = function(start, end) {\n start = start || `\"`\n end = end || `\"`\n this.list.forEach(p => {\n let terms = p.terms()\n terms[0].pre = start + terms[0].pre\n let last = terms[terms.length - 1]\n last.post = end + last.post\n })\n return this\n}\nexports.toQuotation = exports.toQuotations\n\n/** add brackets around these matches */\nexports.toParentheses = function(start, end) {\n start = start || `(`\n end = end || `)`\n this.list.forEach(p => {\n let terms = p.terms()\n terms[0].pre = start + terms[0].pre\n let last = terms[terms.length - 1]\n last.post = end + last.post\n })\n return this\n}\n","/** make all phrases into one phrase */\nexports.join = function(str) {\n // clear the cache\n this.uncache()\n // make one large phrase - 'main'\n let main = this.list[0]\n let before = main.length\n let removed = {}\n for (let i = 1; i < this.list.length; i++) {\n const p = this.list[i]\n removed[p.start] = true\n let term = main.lastTerm()\n // add whitespace between them\n if (str) {\n term.post += str\n }\n // main -> p\n term.next = p.start\n // main <- p\n p.terms(0).prev = term.id\n main.length += p.length\n }\n\n // parents are bigger than than their children.\n // when we increase a child, we increase their parent too.\n let increase = main.length - before\n this.parents().forEach(doc => {\n // increase length on each effected phrase\n doc.list.forEach(p => {\n let terms = p.terms()\n for (let i = 0; i < terms.length; i++) {\n if (terms[i].id === main.start) {\n p.length += increase\n break\n }\n }\n })\n // remove redundant phrases now\n doc.list = doc.list.filter(p => removed[p.start] !== true)\n })\n // return one major phrase\n return this.buildFrom([main])\n}\n","const postPunct = /[,\\)\"';:\\-–—\\.…]/\n// const irregulars = {\n// 'will not': `won't`,\n// 'i am': `i'm`,\n// }\n\nconst setContraction = function(m, suffix) {\n if (!m.found) {\n return\n }\n let terms = m.termList()\n //avoid any problematic punctuation\n for (let i = 0; i < terms.length - 1; i++) {\n const t = terms[i]\n if (postPunct.test(t.post)) {\n return\n }\n }\n\n // set them as implict\n terms.forEach(t => {\n t.implicit = t.clean\n })\n // perform the contraction\n terms[0].text += suffix\n // clean-up the others\n terms.slice(1).forEach(t => {\n t.text = ''\n })\n for (let i = 0; i < terms.length - 1; i++) {\n const t = terms[i]\n t.post = t.post.replace(/ /, '')\n }\n}\n\n/** turn 'i am' into i'm */\nexports.contract = function() {\n let doc = this.not('@hasContraction')\n // we are -> we're\n let m = doc.match('(we|they|you) are')\n setContraction(m, `'re`)\n // they will -> they'll\n m = doc.match('(he|she|they|it|we|you) will')\n setContraction(m, `'ll`)\n // she is -> she's\n m = doc.match('(he|she|they|it|we) is')\n setContraction(m, `'s`)\n // spencer is -> spencer's\n m = doc.match('#Person is')\n setContraction(m, `'s`)\n // spencer would -> spencer'd\n m = doc.match('#Person would')\n setContraction(m, `'d`)\n // would not -> wouldn't\n m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not')\n setContraction(m, `n't`)\n // i have -> i've\n m = doc.match('(i|we|they) have')\n setContraction(m, `'ve`)\n // would have -> would've\n m = doc.match('(would|should|could) have')\n setContraction(m, `'ve`)\n // i am -> i'm\n m = doc.match('i am')\n setContraction(m, `'m`)\n // going to -> gonna\n m = doc.match('going to')\n return this\n}\n","module.exports = Object.assign(\n {},\n require('./01-utils'),\n require('./02-accessors'),\n require('./03-match'),\n require('./04-tag'),\n require('./05-loops'),\n require('./06-lookup'),\n\n require('./insert/01-replace'),\n require('./insert/02-insert'),\n\n require('./output/01-text'),\n require('./output/02-json'),\n require('./output/03-out'),\n require('./output/04-export'),\n\n require('./transform/01-sort'),\n require('./transform/02-normalize'),\n require('./transform/03-split'),\n require('./transform/04-case'),\n require('./transform/05-whitespace'),\n require('./transform/06-join'),\n require('./transform/07-contract')\n)\n","let methods = {}\n\n// allow helper methods like .adjectives() and .adverbs()\nconst arr = [\n ['terms', '.'],\n ['hyphenated', '@hasHyphen .'],\n ['adjectives', '#Adjective'],\n ['hashTags', '#HashTag'],\n ['emails', '#Email'],\n ['emoji', '#Emoji'],\n ['emoticons', '#Emoticon'],\n ['atMentions', '#AtMention'],\n ['urls', '#Url'],\n ['adverbs', '#Adverb'],\n ['pronouns', '#Pronoun'],\n ['money', '#Money'],\n ['conjunctions', '#Conjunction'],\n ['prepositions', '#Preposition'],\n]\narr.forEach(a => {\n methods[a[0]] = function(n) {\n let m = this.match(a[1])\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n }\n})\n// aliases\nmethods.emojis = methods.emoji\nmethods.atmentions = methods.atMentions\nmethods.words = methods.terms\n\n/** return anything tagged as a phone number */\nmethods.phoneNumbers = function(n) {\n let m = this.splitAfter('@hasComma')\n m = m.match('#PhoneNumber+')\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n}\n\n/** return all cities, countries, addresses, and regions */\nmethods.places = function(n) {\n // don't split 'paris, france'\n let keep = this.match('(#City && @hasComma) (#Region|#Country)')\n // but split the other commas\n let m = this.not(keep).splitAfter('@hasComma')\n // combine them back together\n m = m.concat(keep)\n m.sort('index')\n m = m.match('#Place+')\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n}\n\n/** return all schools, businesses and institutions */\nmethods.organizations = function(n) {\n let m = this.clauses()\n m = m.match('#Organization+')\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n}\n\n//combine them with .topics() method\nmethods.entities = function(n) {\n let r = this.clauses()\n // Find people, places, and organizations\n let yup = r.people()\n yup = yup.concat(r.places())\n yup = yup.concat(r.organizations())\n let ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father']\n yup = yup.not(ignore)\n //return them to normal ordering\n yup.sort('sequence')\n // yup.unique() //? not sure\n if (typeof n === 'number') {\n yup = yup.get(n)\n }\n return yup\n}\n//aliases\nmethods.things = methods.entities\nmethods.topics = methods.entities\n\n/** alias for .all() until it gets overloaded by plugin */\nmethods.sentences = function() {\n return this.all()\n}\n\nmodule.exports = methods\n","/** match a word-sequence, like 'super bowl' in the lexicon */\nconst tryMultiple = function(terms, t, world) {\n let lex = world.words\n //try a two-word version\n let txt = terms[t].reduced + ' ' + terms[t + 1].reduced\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-two', world)\n terms[t + 1].tag(lex[txt], 'lexicon-two', world)\n return 1\n }\n //try a three-word version?\n if (t + 2 < terms.length) {\n txt += ' ' + terms[t + 2].reduced\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-three', world)\n terms[t + 1].tag(lex[txt], 'lexicon-three', world)\n terms[t + 2].tag(lex[txt], 'lexicon-three', world)\n return 2\n }\n }\n //try a four-word version?\n if (t + 3 < terms.length) {\n txt += ' ' + terms[t + 3].reduced\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-four', world)\n terms[t + 1].tag(lex[txt], 'lexicon-four', world)\n terms[t + 2].tag(lex[txt], 'lexicon-four', world)\n terms[t + 3].tag(lex[txt], 'lexicon-four', world)\n return 3\n }\n }\n return 0\n}\n\n/** look at each word in our list of known-words */\nconst checkLexicon = function(terms, world) {\n let lex = world.words\n let hasCompound = world.hasCompound // use reduced?\n //go through each term, and check the lexicon\n for (let t = 0; t < terms.length; t += 1) {\n let str = terms[t].clean\n //is it the start of a compound word, like 'super bowl'?\n if (hasCompound[str] === true && t + 1 < terms.length) {\n let foundWords = tryMultiple(terms, t, world)\n if (foundWords > 0) {\n t += foundWords //skip any already-found words\n continue\n }\n }\n //try one-word lexicon\n if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) {\n terms[t].tag(lex[str], 'lexicon', world)\n }\n // look at reduced version of term, too\n if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) {\n terms[t].tag(lex[terms[t].reduced], 'lexicon', world)\n }\n }\n return terms\n}\nmodule.exports = checkLexicon\n","const apostrophes = /[\\'‘’‛‵′`´]$/\nconst oneLetterAcronym = /^[A-Z]('s|,)?$/\n\nconst oneLetterWord = {\n I: true,\n A: true,\n}\n\nconst isAcronym = function(term, world) {\n let str = term.reduced\n // a known acronym like fbi\n if (term.tags.Acronym) {\n return true\n }\n // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) {\n // return false\n // }\n // 'PIZZA' is not an acronym.\n if (str.length > 4 && world.words[str]) {\n return false\n }\n return term.isAcronym()\n}\n\n//\nconst checkPunctuation = function(terms, i, world) {\n let term = terms[i]\n\n //check hyphenation\n // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') {\n // term.tag('Hyphenated', 'has-hyphen', world)\n // }\n\n //an end-tick (trailing apostrophe) - flanders', or Carlos'\n if (apostrophes.test(term.text)) {\n if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) {\n let endChar = term.clean[term.clean.length - 2]\n //flanders'\n if (endChar === 's') {\n term.tag(['Possessive', 'Noun'], 'end-tick', world)\n return\n }\n //chillin'\n if (endChar === 'n') {\n term.tag(['Gerund'], 'chillin', world)\n }\n }\n }\n // 'NASA' is, but not 'i REALLY love it.'\n if (isAcronym(term, world)) {\n term.tag('Acronym', 'acronym-step', world)\n term.tag('Noun', 'acronym-infer', world)\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n term.tag('Acronym', 'one-letter-acronym', world)\n term.tag('Noun', 'one-letter-infer', world)\n }\n}\nmodule.exports = checkPunctuation\n","//these are regexes applied to t.text, instead of t.clean\n// order matters.\nmodule.exports = [\n //phone numbers\n [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809\n [/^[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809\n\n //money\n [/^[-+]?[$€¥£][0-9]+(.[0-9]{1,2})?([a-z]{1,4})?$/, ['Money', 'Value']], //like $5.30\n [/^[-+]?[$€¥£][0-9]{1,3}(,[0-9]{3})+(.[0-9]{1,2})?$/, ['Money', 'Value']], //like $5,231.30\n [/^[-+]?[0-9]([0-9,.]+)?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //like 400usd\n\n //web tags\n [/^\\w+@\\w+\\.[a-z]{2,3}$/, 'Email'], //not fancy\n [/^#[a-z0-9_\\u00C0-\\u00FF]{2,}$/, 'HashTag'],\n [/^@\\w{2,}$/, 'AtMention'],\n [/^(https?:\\/\\/|www\\.)\\w+\\.[a-z]{2,3}/, 'Url'], //with http/www\n [/^[\\w\\.\\/]+\\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain\n\n //dates/times\n [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32\n [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/, 'Time'], //4pm\n [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/, 'Time'], //4:00pm\n [/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs\n [/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+\n [/^[a-z0-9]*? o\\'?clock$/, 'Time'], //3 oclock\n [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89\n [/^[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,4}$/, 'Date'], // 03/02/89\n\n //names\n [/^ma?c\\'.*/, 'LastName'], //mc'adams\n [/^o\\'[drlkn].*/, 'LastName'], //o'douggan\n [/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes\n\n //slang things\n [/^(lol)+[sz]$/, 'Expression'], //lol\n [/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb'],\n [/^[\\-\\+]?[0-9]+(\\.[0-9])*$/, ['Cardinal', 'NumericValue']],\n [/^(over|under)[a-z]{2,}/, 'Adjective'],\n [/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date'], // 03-02-89\n\n //numbers\n [/^[\\-\\+]?[0-9][0-9,]*(\\.[0-9])*$/, ['Cardinal', 'NumericValue']], //like 5\n [/^[-+]?[0-9]+(.[0-9]+)?$/, ['Cardinal', 'NumericValue']], //like +5.0\n [/^[0-9\\.]{1,4}(st|nd|rd|th)?[-–][0-9\\.]{1,4}(st|nd|rd|th)?$/, 'NumberRange'], //5-7\n [/^[-+]?[0-9.,]{1,3}(,[0-9.,]{3})+(.[0-9]+)?$/, 'NumericValue'], //like 5,999.0\n [/^.?[0-9]+([0-9,.]+)?%$/, ['Percent', 'Cardinal', 'NumericValue']], //7% ..\n [/^[0-9]{1,4}\\/[0-9]{1,4}$/, 'Fraction'], //3/2ths\n [/^[0-9\\.]{1,2}[-–][0-9]{1,2}$/, ['Value', 'NumberRange']], //7-8\n [/^[0-9][0-9,\\.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th\n [/[0-9]\\+$/, ['Cardinal', 'NumericValue']], //10+\n [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th\n [/^[0-9\\.]+([a-z]{1,4})$/, 'Value'], //like 5tbsp\n]\n","const regex = require('./data/startsWith')\n\nconst romanNumeral = /^[IVXLCDM]{2,}$/\nconst romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/ // https://stackoverflow.com/a/267405/168877\n\n//try each of the ^regexes in our list\nconst checkRegex = function(term, world) {\n let str = term.text\n // do them all!\n for (let r = 0; r < regex.length; r += 1) {\n if (regex[r][0].test(str) === true) {\n term.tagSafe(regex[r][1], 'regex #' + r, world)\n break\n }\n }\n // do some more!\n //roman numberals - XVII\n if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) {\n term.tag('RomanNumeral', 'xvii', world)\n }\n}\nmodule.exports = checkRegex\n","//regex suffix patterns and their most common parts of speech,\n//built using wordnet, by spencer kelly.\n//this mapping shrinks-down the uglified build\nconst Adj = 'Adjective'\nconst Inf = 'Infinitive'\nconst Pres = 'PresentTense'\nconst Sing = 'Singular'\nconst Past = 'PastTense'\nconst Adverb = 'Adverb'\nconst Exp = 'Expression'\nconst Actor = 'Actor'\nconst Verb = 'Verb'\nconst Noun = 'Noun'\nconst Last = 'LastName'\n//the order here matters.\n\n//regexes indexed by mandated last-character\nmodule.exports = {\n a: [\n [/.[aeiou]na$/, Noun],\n [/.[oau][wvl]ska$/, Last], //polish (female)\n [/.[^aeiou]ica$/, Sing],\n [/^([hyj]a)+$/, Exp], //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj]],\n d: [\n [/.[ia]sed$/, Adj],\n [/.[gt]led$/, Adj],\n [/.[td]ed$/, Past],\n [/.[aeiou]red$/, Past],\n [/.[^aeiou]led$/, Past], //rumbled\n [/[^aeiou]ard$/, Sing],\n [/[aeiou][^aeiou]id$/, Adj],\n [/[aeiou]c?ked$/, Past], //hooked\n [/[^aeiou][aeiou][tvx]ed$/, Past], //boxed\n [/.[vrl]id$/, Adj],\n ],\n e: [\n [/.[lnr]ize$/, Inf],\n [/.[^aeiou]ise$/, Inf],\n [/.[aeiou]te$/, Inf],\n [/.[^aeiou][ai]ble$/, Adj],\n [/.[^aeiou]eable$/, Adj],\n [/.[ts]ive$/, Adj],\n ],\n h: [\n [/.[^aeiouf]ish$/, Adj],\n [/.v[iy]ch$/, Last], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp], //uhoh\n ],\n i: [\n [/.[oau][wvl]ski$/, Last], //polish (male)\n ],\n k: [\n [/^(k)+$/, Exp], //kkkk\n ],\n l: [\n [/.[gl]ial$/, Adj],\n [/.[^aeiou]ful$/, Adj],\n [/.[nrtumcd]al$/, Adj],\n [/.[^aeiou][ei]al$/, Adj],\n ],\n m: [\n [/.[^aeiou]ium$/, Sing],\n [/[^aeiou]ism$/, Sing],\n [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date'],\n ],\n n: [\n [/.[lsrnpb]ian$/, Adj],\n [/[^aeiou]ician$/, Actor],\n ],\n o: [\n [/^no+$/, Exp], //noooo\n [/^(yo)+$/, Exp], //yoyo\n [/^woo+[pt]?$/, Exp], //woo\n ],\n r: [\n [/.[bdfklmst]ler$/, 'Noun'],\n [/.[ilk]er$/, 'Comparative'],\n [/[aeiou][pns]er$/, Sing],\n [/[^i]fer$/, Inf],\n [/.[^aeiou][ao]pher$/, Actor],\n ],\n t: [\n [/.[di]est$/, 'Superlative'],\n [/.[icldtgrv]ent$/, Adj],\n [/[aeiou].*ist$/, Adj],\n [/^[a-z]et$/, Verb],\n ],\n s: [\n [/.[rln]ates$/, Pres],\n [/.[^z]ens$/, Verb],\n [/.[lstrn]us$/, Sing],\n [/[aeiou][^aeiou]is$/, Sing],\n [/[a-z]\\'s$/, Noun],\n [/^yes+$/, Exp], //yessss\n ],\n v: [\n [/.[^aeiou][ai][kln]ov$/, Last], //east-europe\n ],\n y: [\n [/.[cts]hy$/, Adj],\n [/.[st]ty$/, Adj],\n [/.[gk]y$/, Adj],\n [/.[tnl]ary$/, Adj],\n [/.[oe]ry$/, Sing],\n [/[rdntkbhs]ly$/, Adverb],\n [/...lly$/, Adverb],\n [/[bszmp]{2}y$/, Adj],\n [/.(gg|bb|zz)ly$/, Adj],\n [/.[aeiou]my$/, Adj],\n [/[ea]{2}zy$/, Adj],\n [/.[^aeiou]ity$/, Sing],\n ],\n}\n","//just a foolish lookup of known suffixes\nconst Adj = 'Adjective'\nconst Inf = 'Infinitive'\nconst Pres = 'PresentTense'\nconst Sing = 'Singular'\nconst Past = 'PastTense'\nconst Avb = 'Adverb'\nconst Plrl = 'Plural'\nconst Actor = 'Actor'\nconst Vb = 'Verb'\nconst Noun = 'Noun'\nconst Last = 'LastName'\nconst Modal = 'Modal'\n\n// find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\nmodule.exports = [\n null, //0\n null, //1\n {\n //2-letter\n ea: Sing,\n ia: Noun,\n ic: Adj,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb,\n },\n {\n //3-letter\n que: Adj,\n lar: Adj,\n ffy: Adj,\n nny: Adj,\n rmy: Adj,\n azy: Adj,\n oid: Adj,\n mum: Adj,\n ous: Adj,\n end: Vb,\n sis: Sing,\n rol: Sing,\n ize: Inf,\n ify: Inf,\n zes: Pres,\n nes: Pres,\n ing: 'Gerund', //likely to be converted to Adj after lexicon pass\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n },\n {\n //4-letter\n teen: 'Value',\n tors: Noun,\n amed: Past,\n ched: Past,\n ends: Vb,\n oses: Pres,\n fies: Pres,\n ects: Pres,\n nded: Past,\n cede: Inf,\n tage: Inf,\n gate: Inf,\n vice: Sing,\n tion: Sing,\n cted: Past,\n ette: Sing,\n some: Adj,\n llen: Adj,\n ried: Adj,\n gone: Adj,\n made: Adj,\n fore: Avb,\n less: Avb,\n ices: Plrl,\n ions: Plrl,\n ints: Plrl,\n aped: Past,\n lked: Past,\n ould: Modal,\n tive: Actor,\n sson: Last, //swedish male\n czyk: Last, //polish (male)\n chuk: Last, //east-europe\n enko: Last, //east-europe\n akis: Last, //greek\n nsen: Last, //norway\n },\n {\n //5-letter\n fully: Avb,\n where: Avb,\n wards: Avb,\n urned: Past,\n tized: Past,\n eased: Past,\n ances: Plrl,\n tures: Plrl,\n ports: Plrl,\n ettes: Plrl,\n ities: Plrl,\n rough: Adj,\n ology: Noun,\n bound: Adj,\n tieth: 'Ordinal',\n ishes: Pres,\n tches: Pres,\n nssen: Last, //norway\n marek: Last, //polish (male)\n },\n {\n //6-letter\n keeper: Actor,\n logist: Actor,\n auskas: Last, //lithuania\n teenth: 'Value',\n },\n {\n //7-letter\n sdottir: Last, //swedish female\n opoulos: Last, //greek\n },\n]\n","const endsWith = require('./data/endsWith')\nconst suffixMap = require('./data/suffixMap')\n\nconst endRegexs = function(term, world) {\n let str = term.clean\n let char = str[str.length - 1]\n if (endsWith.hasOwnProperty(char) === true) {\n let regs = endsWith[char]\n for (let r = 0; r < regs.length; r += 1) {\n if (regs[r][0].test(str) === true) {\n term.tagSafe(regs[r][1], `endReg ${char} #${r}`, world)\n break\n }\n }\n }\n}\n\n//sweep-through all suffixes\nconst knownSuffixes = function(term, world) {\n const len = term.clean.length\n let max = 7\n if (len <= max) {\n max = len - 1\n }\n for (let i = max; i > 1; i -= 1) {\n let str = term.clean.substr(len - i, len)\n if (suffixMap[str.length].hasOwnProperty(str) === true) {\n let tag = suffixMap[str.length][str]\n term.tagSafe(tag, 'suffix -' + str, world)\n break\n }\n }\n}\n\n//all-the-way-down!\nconst checkRegex = function(term, world) {\n knownSuffixes(term, world)\n endRegexs(term, world)\n}\nmodule.exports = checkRegex\n","//just some of the most common emoticons\n//faster than\n//http://stackoverflow.com/questions/28077049/regex-matching-emoticons\nmodule.exports = {\n ':(': true,\n ':)': true,\n ':P': true,\n ':p': true,\n ':O': true,\n ':3': true,\n ':|': true,\n ':/': true,\n ':\\\\': true,\n ':$': true,\n ':*': true,\n ':@': true,\n ':-(': true,\n ':-)': true,\n ':-P': true,\n ':-p': true,\n ':-O': true,\n ':-3': true,\n ':-|': true,\n ':-/': true,\n ':-\\\\': true,\n ':-$': true,\n ':-*': true,\n ':-@': true,\n ':^(': true,\n ':^)': true,\n ':^P': true,\n ':^p': true,\n ':^O': true,\n ':^3': true,\n ':^|': true,\n ':^/': true,\n ':^\\\\': true,\n ':^$': true,\n ':^*': true,\n ':^@': true,\n '):': true,\n '(:': true,\n '$:': true,\n '*:': true,\n ')-:': true,\n '(-:': true,\n '$-:': true,\n '*-:': true,\n ')^:': true,\n '(^:': true,\n '$^:': true,\n '*^:': true,\n '<3': true,\n ' {\n if (raw.charAt(0) === ':') {\n //end comma can be last or second-last ':haircut_tone3:‍♀️'\n if (raw.match(/:.?$/) === null) {\n return false\n }\n //ensure no spaces\n if (raw.match(' ')) {\n return false\n }\n //reasonably sized\n if (raw.length > 35) {\n return false\n }\n return true\n }\n return false\n}\n\n//check against emoticon whitelist\nconst isEmoticon = str => {\n str = str.replace(/^[:;]/, ':') //normalize the 'eyes'\n return emoticon.hasOwnProperty(str)\n}\n\nconst tagEmoji = (term, world) => {\n let raw = term.pre + term.text + term.post\n raw = raw.trim()\n //test for :keyword: emojis\n if (isCommaEmoji(raw) === true) {\n term.tag('Emoji', 'comma-emoji', world)\n term.text = raw\n term.pre = term.pre.replace(':', '')\n term.post = term.post.replace(':', '')\n }\n //test for unicode emojis\n if (term.text.match(emojiReg)) {\n term.tag('Emoji', 'unicode-emoji', world)\n term.text = raw\n }\n //test for emoticon ':)' emojis\n if (isEmoticon(raw) === true) {\n term.tag('Emoticon', 'emoticon-emoji', world)\n term.text = raw\n }\n}\n\nmodule.exports = tagEmoji\n","const steps = {\n lexicon: require('./01-lexicon'),\n punctuation: require('./02-punctuation'),\n regex: require('./03-prefixes'),\n suffix: require('./04-suffixes'),\n emoji: require('./05-emoji'),\n}\n\n//'lookups' look at a term by itself\nconst lookups = function(doc) {\n let terms = doc.termList()\n let world = doc.world\n //our list of known-words\n steps.lexicon(terms, world)\n\n //try these other methods\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i]\n //or maybe some helpful punctuation\n steps.punctuation(terms, i, world)\n //mostly prefix checks\n steps.regex(term, world)\n //maybe we can guess\n steps.suffix(term, world)\n //emoji and emoticons\n steps.emoji(term, world)\n }\n return doc\n}\nmodule.exports = lookups\n","//markov-like stats about co-occurance, for hints about unknown terms\n//basically, a little-bit better than the noun-fallback\n//just top n-grams from nlp tags, generated from nlp-corpus\n\n//after this word, here's what happens usually\nlet afterThisWord = {\n i: 'Verb', //44% //i walk..\n first: 'Noun', //50% //first principles..\n it: 'Verb', //33%\n there: 'Verb', //35%\n not: 'Verb', //33%\n because: 'Noun', //31%\n if: 'Noun', //32%\n but: 'Noun', //26%\n who: 'Verb', //40%\n this: 'Noun', //37%\n his: 'Noun', //48%\n when: 'Noun', //33%\n you: 'Verb', //35%\n very: 'Adjective', // 39%\n old: 'Noun', //51%\n never: 'Verb', //42%\n before: 'Noun', //28%\n}\n\n//in advance of this word, this is what happens usually\nlet beforeThisWord = {\n there: 'Verb', //23% // be there\n me: 'Verb', //31% //see me\n man: 'Adjective', // 80% //quiet man\n only: 'Verb', //27% //sees only\n him: 'Verb', //32% //show him\n were: 'Noun', //48% //we were\n took: 'Noun', //38% //he took\n himself: 'Verb', //31% //see himself\n went: 'Noun', //43% //he went\n who: 'Noun', //47% //person who\n jr: 'Person',\n}\n\n//following this POS, this is likely\nlet afterThisPOS = {\n Adjective: 'Noun', //36% //blue dress\n Possessive: 'Noun', //41% //his song\n Determiner: 'Noun', //47%\n Adverb: 'Verb', //20%\n Pronoun: 'Verb', //40%\n Value: 'Noun', //47%\n Ordinal: 'Noun', //53%\n Modal: 'Verb', //35%\n Superlative: 'Noun', //43%\n Demonym: 'Noun', //38%\n Honorific: 'Person', //\n}\n\n//in advance of this POS, this is likely\nlet beforeThisPOS = {\n Copula: 'Noun', //44% //spencer is\n PastTense: 'Noun', //33% //spencer walked\n Conjunction: 'Noun', //36%\n Modal: 'Noun', //38%\n Pluperfect: 'Noun', //40%\n PerfectTense: 'Verb', //32%\n}\nmodule.exports = {\n beforeThisWord: beforeThisWord,\n afterThisWord: afterThisWord,\n\n beforeThisPos: beforeThisPOS,\n afterThisPos: afterThisPOS,\n}\n","const markov = require('./data/markov')\nconst afterKeys = Object.keys(markov.afterThisPos)\nconst beforeKeys = Object.keys(markov.beforeThisPos)\n\nconst checkNeighbours = function(terms, world) {\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i]\n //do we still need a tag?\n if (term.isKnown() === true) {\n continue\n }\n //ok, this term needs a tag.\n //look at previous word for clues..\n let lastTerm = terms[i - 1]\n if (lastTerm) {\n // 'foobar term'\n if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) {\n let tag = markov.afterThisWord[lastTerm.clean]\n term.tag(tag, 'after-' + lastTerm.clean, world)\n continue\n }\n // 'Tag term'\n // (look at previous POS tags for clues..)\n let foundTag = afterKeys.find(tag => lastTerm.tags[tag])\n if (foundTag !== undefined) {\n let tag = markov.afterThisPos[foundTag]\n term.tag(tag, 'after-' + foundTag, world)\n continue\n }\n }\n\n //look at next word for clues..\n let nextTerm = terms[i + 1]\n if (nextTerm) {\n // 'term foobar'\n if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) {\n let tag = markov.beforeThisWord[nextTerm.clean]\n term.tag(tag, 'before-' + nextTerm.clean, world)\n continue\n }\n // 'term Tag'\n // (look at next POS tags for clues..)\n let foundTag = beforeKeys.find(tag => nextTerm.tags[tag])\n if (foundTag !== undefined) {\n let tag = markov.beforeThisPos[foundTag]\n term.tag(tag, 'before-' + foundTag, world)\n continue\n }\n }\n }\n}\nmodule.exports = checkNeighbours\n","const titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/\nconst hasNumber = /[0-9]/\n\n/** look for any grammar signals based on capital/lowercase */\nconst checkCase = function(terms, world) {\n terms.forEach((term, i) => {\n //is it a titlecased word?\n if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false) {\n // tag it as titlecase, if possible\n if (i !== 0) {\n term.tag('TitleCase', 'case', world)\n } else if (term.tags.Person || term.tags.Organization || term.tags.Place) {\n term.tag('TitleCase', 'case-person', world)\n }\n // can we call it a noun?\n if (i !== 0) {\n //sure!\n term.tag('ProperNoun', 'case-noun', world)\n }\n }\n })\n}\nmodule.exports = checkCase\n","const hasPrefix = /^(re|un)-?[a-z\\u00C0-\\u00FF]/\nconst prefix = /^(re|un)-?/\n\n/** check 'rewatch' in lexicon as 'watch' */\nconst checkPrefix = function(terms, world) {\n let lex = world.words\n terms.forEach(term => {\n // skip if we have a good tag already\n if (term.isKnown() === true) {\n return\n }\n //does it start with 'un|re'\n if (hasPrefix.test(term.clean) === true) {\n // look for the root word in the lexicon:\n let stem = term.clean.replace(prefix, '')\n if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) {\n term.tag(lex[stem], 'stem-' + stem, world)\n }\n }\n })\n}\nmodule.exports = checkPrefix\n","//similar to plural/singularize rules, but not the same\nconst isPlural = [\n /(^v)ies$/i,\n /ises$/i,\n /ives$/i,\n /(antenn|formul|nebul|vertebr|vit)ae$/i,\n /(octop|vir|radi|nucle|fung|cact|stimul)i$/i,\n /(buffal|tomat|tornad)oes$/i,\n /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,\n /(vert|ind|cort)ices$/i,\n /(matr|append)ices$/i,\n /(x|ch|ss|sh|s|z|o)es$/i,\n /is$/i,\n /men$/i,\n /news$/i,\n /.tia$/i,\n /(^f)ves$/i,\n /(lr)ves$/i,\n /(^aeiouy|qu)ies$/i,\n /(m|l)ice$/i,\n /(cris|ax|test)es$/i,\n /(alias|status)es$/i,\n /ics$/i,\n]\n\n//similar to plural/singularize rules, but not the same\nconst isSingular = [\n /(ax|test)is$/i,\n /(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\n /(octop|vir)i$/i,\n /(rl)f$/i,\n /(alias|status)$/i,\n /(bu)s$/i,\n /(al|ad|at|er|et|ed|ad)o$/i,\n /(ti)um$/i,\n /(ti)a$/i,\n /sis$/i,\n /(?:(^f)fe|(lr)f)$/i,\n /hive$/i,\n /s[aeiou]+ns$/i, // sans, siens\n /(^aeiouy|qu)y$/i,\n /(x|ch|ss|sh|z)$/i,\n /(matr|vert|ind|cort)(ix|ex)$/i,\n /(m|l)ouse$/i,\n /(m|l)ice$/i,\n /(antenn|formul|nebul|vertebr|vit)a$/i,\n /.sis$/i,\n /^(?!talis|.*hu)(.*)man$/i,\n]\nmodule.exports = {\n isSingular: isSingular,\n isPlural: isPlural,\n}\n","//these tags don't have plurals\nconst noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday']\nconst rules = require('./data/isPlural')\nconst notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/]\nconst notSingular = [/i$/, /ae$/]\n\n/** turn nouns into singular/plural */\nconst checkPlural = function(t, world) {\n if (t.tags.Noun && !t.tags.Acronym) {\n let str = t.clean\n //skip existing tags, fast\n if (t.tags.Singular || t.tags.Plural) {\n return\n }\n //too short\n if (str.length <= 3) {\n t.tag('Singular', 'short-singular', world)\n return\n }\n //is it impossible to be plural?\n if (noPlurals.find(tag => t.tags[tag])) {\n return\n }\n // isPlural suffix rules\n if (rules.isPlural.find(reg => reg.test(str))) {\n t.tag('Plural', 'plural-rules', world)\n return\n }\n // isSingular suffix rules\n if (rules.isSingular.find(reg => reg.test(str))) {\n t.tag('Singular', 'singular-rules', world)\n return\n }\n\n // finally, fallback 'looks plural' rules..\n if (/s$/.test(str) === true) {\n //avoid anything too sketchy to be plural\n if (notPlural.find(reg => reg.test(str))) {\n return\n }\n t.tag('Plural', 'plural-fallback', world)\n return\n }\n //avoid anything too sketchy to be singular\n if (notSingular.find(reg => reg.test(str))) {\n return\n }\n t.tag('Singular', 'singular-fallback', world)\n }\n}\nmodule.exports = checkPlural\n","//nouns that also signal the title of an unknown organization\n//todo remove/normalize plural forms\nconst orgWords = [\n 'academy',\n 'administration',\n 'agence',\n 'agences',\n 'agencies',\n 'agency',\n 'airlines',\n 'airways',\n 'army',\n 'assoc',\n 'associates',\n 'association',\n 'assurance',\n 'authority',\n 'autorite',\n 'aviation',\n 'bank',\n 'banque',\n 'board',\n 'boys',\n 'brands',\n 'brewery',\n 'brotherhood',\n 'brothers',\n 'building society',\n 'bureau',\n 'cafe',\n 'caisse',\n 'capital',\n 'care',\n 'cathedral',\n 'center',\n 'central bank',\n 'centre',\n 'chemicals',\n 'choir',\n 'chronicle',\n 'church',\n 'circus',\n 'clinic',\n 'clinique',\n 'club',\n 'co',\n 'coalition',\n 'coffee',\n 'collective',\n 'college',\n 'commission',\n 'committee',\n 'communications',\n 'community',\n 'company',\n 'comprehensive',\n 'computers',\n 'confederation',\n 'conference',\n 'conseil',\n 'consulting',\n 'containers',\n 'corporation',\n 'corps',\n 'corp',\n 'council',\n 'crew',\n 'daily news',\n 'data',\n 'departement',\n 'department',\n 'department store',\n 'departments',\n 'design',\n 'development',\n 'directorate',\n 'division',\n 'drilling',\n 'education',\n 'eglise',\n 'electric',\n 'electricity',\n 'energy',\n 'ensemble',\n 'enterprise',\n 'enterprises',\n 'entertainment',\n 'estate',\n 'etat',\n 'evening news',\n 'faculty',\n 'federation',\n 'financial',\n 'fm',\n 'foundation',\n 'fund',\n 'gas',\n 'gazette',\n 'girls',\n 'government',\n 'group',\n 'guild',\n 'health authority',\n 'herald',\n 'holdings',\n 'hospital',\n 'hotel',\n 'hotels',\n 'inc',\n 'industries',\n 'institut',\n 'institute',\n 'institute of technology',\n 'institutes',\n 'insurance',\n 'international',\n 'interstate',\n 'investment',\n 'investments',\n 'investors',\n 'journal',\n 'laboratory',\n 'labs',\n // 'law',\n 'liberation army',\n 'limited',\n 'local authority',\n 'local health authority',\n 'machines',\n 'magazine',\n 'management',\n 'marine',\n 'marketing',\n 'markets',\n 'media',\n 'memorial',\n 'mercantile exchange',\n 'ministere',\n 'ministry',\n 'military',\n 'mobile',\n 'motor',\n 'motors',\n 'musee',\n 'museum',\n // 'network',\n 'news',\n 'news service',\n 'observatory',\n 'office',\n 'oil',\n 'optical',\n 'orchestra',\n 'organization',\n 'partners',\n 'partnership',\n // 'party',\n \"people's party\",\n 'petrol',\n 'petroleum',\n 'pharmacare',\n 'pharmaceutical',\n 'pharmaceuticals',\n 'pizza',\n 'plc',\n 'police',\n 'polytechnic',\n 'post',\n 'power',\n 'press',\n 'productions',\n 'quartet',\n 'radio',\n 'regional authority',\n 'regional health authority',\n 'reserve',\n 'resources',\n 'restaurant',\n 'restaurants',\n 'savings',\n 'school',\n 'securities',\n 'service',\n 'services',\n 'social club',\n 'societe',\n 'society',\n 'sons',\n 'standard',\n 'state police',\n 'state university',\n 'stock exchange',\n 'subcommittee',\n 'syndicat',\n 'systems',\n 'telecommunications',\n 'telegraph',\n 'television',\n 'times',\n 'tribunal',\n 'tv',\n 'union',\n 'university',\n 'utilities',\n 'workers',\n]\n\nmodule.exports = orgWords.reduce(function(h, str) {\n h[str] = 'Noun'\n return h\n}, {})\n","let orgWords = require('./data/organizations')\n\n//could this word be an organization\nconst maybeOrg = function(t) {\n //must be a noun\n if (!t.tags.Noun) {\n return false\n }\n //can't be these things\n if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) {\n return false\n }\n //must be one of these\n if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) {\n return true\n }\n return false\n}\n\nconst tagOrgs = function(terms, world) {\n for (let i = 0; i < terms.length; i += 1) {\n let t = terms[i]\n if (orgWords[t.clean] !== undefined && orgWords.hasOwnProperty(t.clean) === true) {\n // look-backward - eg. 'Toronto University'\n let lastTerm = terms[i - 1]\n if (lastTerm !== undefined && maybeOrg(lastTerm) === true) {\n lastTerm.tagSafe('Organization', 'org-word-1', world)\n t.tagSafe('Organization', 'org-word-2', world)\n continue\n }\n //look-forward - eg. University of Toronto\n let nextTerm = terms[i + 1]\n if (nextTerm !== undefined && nextTerm.clean === 'of') {\n if (terms[i + 2] && maybeOrg(terms[i + 2])) {\n t.tagSafe('Organization', 'org-of-word-1', world)\n nextTerm.tagSafe('Organization', 'org-of-word-2', world)\n terms[i + 2].tagSafe('Organization', 'org-of-word-3', world)\n continue\n }\n }\n }\n }\n}\nmodule.exports = tagOrgs\n","const step = {\n neighbours: require('./01-neighbours'),\n case: require('./02-case'),\n stem: require('./03-stem'),\n plural: require('./04-plurals'),\n organizations: require('./05-organizations'),\n}\n//\nconst fallbacks = function(doc) {\n let terms = doc.termList()\n let world = doc.world\n\n // if it's empty, consult it's neighbours, first\n step.neighbours(terms, world)\n\n // is there a case-sensitive clue?\n step.case(terms, world)\n\n // check 'rewatch' as 'watch'\n step.stem(terms, world)\n\n // ... fallback to a noun!\n terms.forEach(t => {\n if (t.isKnown() === false) {\n t.tag('Noun', 'noun-fallback', doc.world)\n }\n })\n\n // turn 'Foo University' into an Org\n step.organizations(terms, world)\n\n //are the nouns singular or plural?\n terms.forEach(t => {\n step.plural(t, doc.world)\n })\n\n return doc\n}\nmodule.exports = fallbacks\n","const hasNegative = /n't$/\n\nconst irregulars = {\n \"won't\": ['will', 'not'],\n wont: ['will', 'not'],\n \"can't\": ['can', 'not'],\n cant: ['can', 'not'],\n cannot: ['can', 'not'],\n \"shan't\": ['should', 'not'],\n dont: ['do', 'not'],\n dun: ['do', 'not'],\n // \"ain't\" is ambiguous for is/was\n}\n\nconst checkNegative = function(term) {\n //check named-ones\n if (irregulars.hasOwnProperty(term.clean) === true) {\n return irregulars[term.clean]\n }\n //try it normally\n if (hasNegative.test(term.clean) === true) {\n let main = term.clean.replace(hasNegative, '')\n return [main, 'not']\n }\n return null\n}\nmodule.exports = checkNegative\n","const contraction = /([a-z\\u00C0-\\u00FF]+)'([a-z]{1,2})$/i\n\n//these ones don't seem to be ambiguous\nconst easy = {\n ll: 'will',\n ve: 'have',\n re: 'are',\n m: 'am',\n \"n't\": 'not',\n}\n//\nconst checkApostrophe = function(term) {\n let parts = term.text.match(contraction)\n if (parts === null) {\n return null\n }\n if (easy.hasOwnProperty(parts[2])) {\n return [parts[1], easy[parts[2]]]\n }\n return null\n}\nmodule.exports = checkApostrophe\n","const irregulars = {\n wanna: ['want', 'to'],\n gonna: ['going', 'to'],\n im: ['i', 'am'],\n alot: ['a', 'lot'],\n ive: ['i', 'have'],\n imma: ['I', 'will'],\n\n \"where'd\": ['where', 'did'],\n whered: ['where', 'did'],\n \"when'd\": ['when', 'did'],\n whend: ['when', 'did'],\n \"how'd\": ['how', 'did'],\n howd: ['how', 'did'],\n \"what'd\": ['what', 'did'],\n whatd: ['what', 'did'],\n // \"let's\": ['let', 'us'], //too weird\n\n //multiple word contractions\n dunno: ['do', 'not', 'know'],\n brb: ['be', 'right', 'back'],\n gtg: ['got', 'to', 'go'],\n irl: ['in', 'real', 'life'],\n tbh: ['to', 'be', 'honest'],\n imo: ['in', 'my', 'opinion'],\n til: ['today', 'i', 'learned'],\n rn: ['right', 'now'],\n twas: ['it', 'was'],\n '@': ['at'],\n}\n\n// either 'is not' or 'are not'\nconst doAint = function(term, phrase) {\n let terms = phrase.terms()\n let index = terms.indexOf(term)\n let before = terms.slice(0, index)\n //look for the preceding noun\n let noun = before.find(t => {\n return t.tags.Noun\n })\n if (noun && noun.tags.Plural) {\n return ['are', 'not']\n }\n return ['is', 'not']\n}\n\n//\nconst checkIrregulars = function(term, phrase) {\n //this word needs it's own logic:\n if (term.clean === `ain't` || term.clean === 'aint') {\n return doAint(term, phrase)\n }\n //check white-list\n if (irregulars.hasOwnProperty(term.clean)) {\n return irregulars[term.clean]\n }\n return null\n}\nmodule.exports = checkIrregulars\n","const hasApostropheS = /([a-z\\u00C0-\\u00FF]+)'s$/i\n\nconst blacklist = {\n that: true,\n there: true,\n}\nconst isPossessive = (term, pool) => {\n // if we already know it\n if (term.tags.Possessive) {\n return true\n }\n //a pronoun can't be possessive - \"he's house\"\n if (term.tags.Pronoun || term.tags.QuestionWord) {\n return false\n }\n if (blacklist.hasOwnProperty(term.clean)) {\n return false\n }\n //if end of sentence, it is possessive - \"was spencer's\"\n let nextTerm = pool.get(term.next)\n if (!nextTerm) {\n return true\n }\n //a gerund suggests 'is walking'\n if (nextTerm.tags.Verb) {\n //fix 'jamie's bite'\n if (nextTerm.tags.Infinitive) {\n return true\n }\n return false\n }\n\n //spencer's house\n if (nextTerm.tags.Noun) {\n return true\n }\n //rocket's red glare\n let twoTerm = pool.get(nextTerm.next)\n if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) {\n return true\n }\n //othwerwise, an adjective suggests 'is good'\n if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) {\n return false\n }\n return false\n}\n\nconst isHas = (term, phrase) => {\n let terms = phrase.terms()\n let index = terms.indexOf(term)\n let after = terms.slice(index + 1, index + 3)\n //look for a past-tense verb\n return after.find(t => {\n return t.tags.PastTense\n })\n}\n\nconst checkPossessive = function(term, phrase, world) {\n //the rest of 's\n let found = term.text.match(hasApostropheS)\n if (found !== null) {\n //spencer's thing vs spencer-is\n if (isPossessive(term, phrase.pool) === true) {\n term.tag('#Possessive', 'isPossessive', world)\n return null\n }\n //'spencer is'\n if (found !== null) {\n if (isHas(term, phrase)) {\n return [found[1], 'has']\n }\n return [found[1], 'is']\n }\n }\n return null\n}\nmodule.exports = checkPossessive\n","const hasPerfect = /[a-z\\u00C0-\\u00FF]'d$/\n\n/** split `i'd` into 'i had', or 'i would' */\nconst checkPerfect = function(term, phrase) {\n if (hasPerfect.test(term.clean)) {\n let root = term.clean.replace(/'d$/, '')\n //look at the next few words\n let terms = phrase.terms()\n let index = terms.indexOf(term)\n let after = terms.slice(index + 1, index + 4)\n //is it before a past-tense verb? - 'i'd walked'\n for (let i = 0; i < after.length; i++) {\n let t = after[i]\n if (t.tags.Verb) {\n if (t.tags.PastTense) {\n return [root, 'had']\n }\n return [root, 'would']\n }\n }\n //otherwise, 'i'd walk'\n return [root, 'would']\n }\n return null\n}\nmodule.exports = checkPerfect\n","const isRange = /^([0-9]+)[-–—]([0-9]+)$/i\n\n//split '2-4' into '2 to 4'\nconst checkRange = function(term) {\n if (term.tags.PhoneNumber === true) {\n return null\n }\n let parts = term.text.match(isRange)\n if (parts !== null) {\n return [parts[1], 'to', parts[2]]\n }\n return null\n}\nmodule.exports = checkRange\n","const checkLexicon = require('../01-init/01-lexicon')\nconst tokenize = require('../../01-tokenizer')\nconst checkNegative = require('./01-negative')\nconst checkApostrophe = require('./02-simple')\nconst checkIrregulars = require('./03-irregulars')\nconst checkPossessive = require('./04-possessive')\nconst checkPerfect = require('./05-perfectTense')\nconst checkRange = require('./06-ranges')\nconst isNumber = /^[0-9]+$/\n\nconst createPhrase = function(found, doc) {\n //create phrase from ['would', 'not']\n let phrase = tokenize.fromText(found.join(' '), doc.world, doc.pool())[0]\n //tag it\n let terms = phrase.terms()\n checkLexicon(terms, doc.world)\n //make these terms implicit\n terms.forEach(t => {\n t.implicit = t.text\n t.text = ''\n t.clean = ''\n // remove whitespace for implicit terms\n t.pre = ''\n t.post = ''\n // tag number-ranges\n if (isNumber.test(t.implicit)) {\n t.tags.Number = true\n t.tags.Cardinal = true\n }\n })\n return phrase\n}\n\nconst contractions = function(doc) {\n let world = doc.world\n doc.list.forEach(p => {\n let terms = p.terms()\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i]\n let found = checkNegative(term)\n found = found || checkApostrophe(term)\n found = found || checkIrregulars(term, p)\n found = found || checkPossessive(term, p, world)\n found = found || checkPerfect(term, p)\n found = found || checkRange(term, p)\n //add them in\n if (found !== null) {\n let newPhrase = createPhrase(found, doc)\n //set text as contraction\n let firstTerm = newPhrase.terms(0)\n firstTerm.text = term.text\n //grab sub-phrase to remove\n let match = p.buildFrom(term.id, 1, doc.pool())\n match.replace(newPhrase, doc, true)\n }\n }\n })\n return doc\n}\nmodule.exports = contractions\n","//mostly pos-corections here\nconst miscCorrection = function(doc) {\n //misc:\n //foot/feet\n doc.match('(foot|feet)').tag('Noun', 'foot-noun')\n // blood, sweat, and tears\n doc.match('(#Noun && @hasComma) #Noun (and|or) [#PresentTense]').tag('#Noun', 'noun-list')\n //3 feet\n doc.match('#Value [(foot|feet)]').tag('Unit', 'foot-unit')\n //'u' as pronoun\n doc.match('#Conjunction [u]').tag('Pronoun', 'u-pronoun-2')\n //6 am\n doc.match('#Holiday (day|eve)').tag('Holiday', 'holiday-day')\n // the captain who\n doc.match('#Noun [(who|whom)]').tag('Determiner', 'captain-who')\n //timezones\n doc.match('(standard|daylight|summer|eastern|pacific|central|mountain) standard? time').tag('Time', 'timezone')\n //Brazilian pesos\n doc.match('#Demonym #Currency').tag('Currency', 'demonym-currency')\n //about to go\n doc.match('[about to] #Adverb? #Verb').tag(['Auxiliary', 'Verb'], 'about-to')\n //right of way\n doc.match('(right|rights) of .').tag('Noun', 'right-of')\n // a bit\n doc.match('[much] #Adjective').tag('Adverb', 'bit-1')\n doc.match('a [bit]').tag('Noun', 'bit-2')\n doc.match('a bit much').tag('Determiner Adverb Adjective', 'bit-3')\n doc.match('too much').tag('Adverb Adjective', 'bit-4')\n // u r cool\n doc.match('u r').tag('Pronoun #Copula', 'u r')\n // well, ...\n doc.match('^(well|so|okay)').tag('Expression', 'well-')\n\n // some conditional statements\n let m = doc.clauses()\n\n // had he survived,\n m.match('^had #Noun+ #PastTense')\n .firstTerm()\n .tag('Condition', 'had-he')\n // were he to survive\n m.match('^were #Noun+ to #Infinitive')\n .firstTerm()\n .tag('Condition', 'were-he')\n\n //swear-words as non-expression POS\n //nsfw\n doc.match('holy (shit|fuck|hell)').tag('Expression', 'swears-expression')\n doc.match('#Determiner [(shit|damn|hell)]').tag('Noun', 'swears-noun')\n doc.match('[(shit|damn|fuck)] (#Determiner|#Possessive|them)').tag('Verb', 'swears-verb')\n doc\n .match('#Copula fucked up?')\n .not('#Copula')\n .tag('Adjective', 'swears-adjective')\n\n //ambig prepositions/conjunctions\n let so = doc.if('so')\n if (so.found === true) {\n //so funny\n so.match('[so] #Adjective').tag('Adverb', 'so-adv')\n //so the\n so.match('[so] #Noun').tag('Conjunction', 'so-conj')\n //do so\n so.match('do [so]').tag('Noun', 'so-noun')\n }\n\n let all = doc.if('all')\n if (all.found === true) {\n //all students\n all.match('[all] #Determiner? #Noun').tag('Adjective', 'all-noun')\n //it all fell apart\n all.match('[all] #Verb').tag('Adverb', 'all-verb')\n }\n\n //the ambiguous word 'that' and 'which'\n let which = doc.if('which')\n if (which.found === true) {\n //remind john that\n which.match('#Verb #Adverb? #Noun [(that|which)]').tag('Preposition', 'that-prep')\n //that car goes\n which.match('that #Noun [#Verb]').tag('Determiner', 'that-determiner')\n //work, which has been done.\n which.match('@hasComma [which] (#Pronoun|#Verb)').tag('Preposition', 'which-copula')\n }\n\n //like\n let like = doc.if('like')\n if (like.found === true) {\n like.match('just [like]').tag('Preposition', 'like-preposition')\n //folks like her\n like.match('#Noun [like] #Noun').tag('Preposition', 'noun-like')\n //look like\n like.match('#Verb [like]').tag('Adverb', 'verb-like')\n //exactly like\n like\n .match('#Adverb like')\n .notIf('(really|generally|typically|usually|sometimes|often) [like]')\n .tag('Adverb', 'adverb-like')\n }\n\n let title = doc.if('@titleCase')\n if (title.found === true) {\n //FitBit Inc\n title.match('@titleCase (ltd|co|inc|dept|assn|bros)').tag('Organization', 'org-abbrv')\n //Foo District\n title\n .match('@titleCase+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)')\n .tag('Region', 'foo-district')\n //District of Foo\n title\n .match('(district|region|province|municipality|territory|burough|state) of @titleCase')\n .tag('Region', 'district-of-Foo')\n }\n\n let hyph = doc.if('@hasHyphen')\n if (hyph.found === true) {\n //air-flow\n hyph\n .match('@hasHyphen .')\n .match('#Noun #Verb')\n .tag('Noun', 'hyphen-verb')\n //connect hyphenated expressions - 'ooh-wee'\n hyph\n .if('#Expression')\n .match('@hasHyphen+')\n .tag('Expression', 'ooh-wee')\n }\n\n let place = doc.if('#Place')\n if (place.found === true) {\n //West Norforlk\n place.match('(west|north|south|east|western|northern|southern|eastern)+ #Place').tag('Region', 'west-norfolk')\n //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n place\n .match('#City [#Acronym]')\n .match('(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|or|pa|sc|tn|tx|ut|vt|pr)')\n .tag('Region', 'us-state')\n }\n\n return doc\n}\n\nmodule.exports = miscCorrection\n","//Determiner-signals\nconst fixThe = function(doc) {\n let det = doc.if('#Determiner')\n\n if (det.found === true) {\n let adj = det.if('#Adjective')\n if (adj.found) {\n //the nice swim\n adj.match('(the|this|those|these) #Adjective [#Verb]').tag('Noun', 'the-adj-verb')\n // the truly nice swim\n adj.match('(the|this|those|these) #Adverb #Adjective [#Verb]').tag('Noun', 'correction-determiner4')\n //the orange is\n adj.match('#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)').tag('Noun', 'the-adj-2')\n //the orange.\n adj\n .match('#Determiner #Adjective$')\n .notIf('(#Comparative|#Superlative)')\n .terms(1)\n .tag('Noun', 'the-adj-1')\n }\n\n let inf = det.if('#Infinitive')\n if (inf.found) {\n // a stream runs\n inf.match('(the|this|a|an) [#Infinitive] #Adverb? #Verb').tag('Noun', 'correction-determiner5')\n //the test string\n inf.match('#Determiner [#Infinitive] #Noun').tag('Noun', 'correction-determiner7')\n //by a bear.\n inf.match('#Determiner [#Infinitive]$').tag('Noun', 'a-inf')\n }\n\n //the wait to vote\n det.match('(the|this) [#Verb] #Preposition .').tag('Noun', 'correction-determiner1')\n //a sense of\n det.match('#Determiner [#Verb] of').tag('Noun', 'the-verb-of')\n //the threat of force\n det.match('#Determiner #Noun of [#Verb]').tag('Noun', 'noun-of-noun')\n //a close\n det.match('#Determiner #Adverb? [close]').tag('Adjective', 'a-close')\n //the western line\n det.match('#Determiner [(western|eastern|northern|southern|central)] #Noun').tag('Noun', 'western-line')\n //the swim\n det.match('(the|those|these) [(#Infinitive|#PresentTense|#PastTense)]').tag('Noun', 'correction-determiner2')\n }\n\n let an = doc.if('(a|an)')\n if (an.found === true) {\n //a staggering cost\n an.match('(a|an) [#Gerund]').tag('Adjective', 'correction-a|an')\n //did a 900, paid a 20\n an.match('#Verb (a|an) [#Value]').tag('Singular', 'a-value')\n //a tv show\n an.match('(a|an) #Noun [#Infinitive]').tag('Noun', 'a-noun-inf')\n //a great run\n an.match('(a|an) #Adjective (#Infinitive|#PresentTense)')\n .terms(2)\n .tag('Noun', 'correction-a|an2')\n //'a/an' can mean 1 - \"a hour\"\n an.match('[(a|an)] (#Duration|hundred|thousand|million|billion|trillion)')\n .ifNo('#Plural')\n .tag('Value', 'a-is-one')\n }\n\n return doc\n}\nmodule.exports = fixThe\n","//\nconst fixNouns = function(doc) {\n let noun = doc.if('#Noun')\n if (noun.found === true) {\n //'more' is not always an adverb\n noun.match('more #Noun').tag('Noun', 'more-noun')\n //he quickly foo\n noun.match('#Noun #Adverb [#Noun]').tag('Verb', 'quickly-foo')\n //fix for busted-up phrasalVerbs\n noun.match('#Noun [#Particle]').tag('Preposition', 'repair-noPhrasal')\n //John & Joe's\n noun.match('#Noun (&|n) #Noun').tag('Organization', 'Noun-&-Noun')\n //Aircraft designer\n noun.match('#Noun #Actor').tag('Actor', 'thing-doer')\n //j.k Rowling\n doc.match('#Noun van der? #Noun').tagSafe('#Person', 'von der noun')\n //king of spain\n doc.match('(king|queen|prince|saint|lady) of? #Noun').tagSafe('#Person', 'king-of-noun')\n // addresses\n doc.match('#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)').tag('Address')\n // schools\n doc.match('#Noun+ (public|private) school').tag('School')\n //the word 'second'\n noun\n .match('[second] #Noun')\n .notIf('#Honorific')\n .unTag('Unit')\n .tag('Ordinal', 'second-noun')\n //linear algebra\n noun\n .match('(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun')\n .tag('Noun', 'technical-noun')\n\n //organization\n let org = noun.if('#Organization')\n if (org.found === true) {\n org.match('#Organization of the? @titleCase').tagSafe('Organization', 'org-of-place')\n org.match('#Organization #Country').tag('Organization', 'org-country')\n org.match('(world|global|international|national|#Demonym) #Organization').tag('Organization', 'global-org')\n org\n .match('#TitleCase #Organization')\n .ifNo('@hasComma')\n .tag('Organization', 'titlecase-org')\n }\n\n let plural = noun.if('#Plural')\n if (plural.found === true) {\n //some pressing issues\n plural.match('some [#Verb] #Plural').tag('Noun', 'correction-determiner6')\n\n //this rocks\n noun.match('(this|that) [#Plural]').tag('PresentTense', 'this-verbs')\n }\n }\n\n //acronyms\n let acronym = doc.if('#Acronym')\n if (acronym.found === true) {\n acronym\n .match('the [#Acronym]')\n .notIf('(iou|fomo|yolo|diy|dui|nimby)')\n .tag('Organization', 'the-acronym')\n acronym\n .match('#Acronym')\n .match('#Possessive')\n .tag('Organization', 'possessive-acronym')\n }\n\n //possessives\n let poss = doc.if('#Possessive')\n if (poss.found === true) {\n //my buddy\n poss.match('#Possessive [#FirstName]').unTag('Person', 'possessive-name')\n //spencer kelly's\n poss\n .match('#FirstName #Acronym? #Possessive')\n .ifNo('@hasComma')\n .match('#FirstName #Acronym? #LastName')\n .tag('Possessive')\n //Super Corp's fundraiser\n poss\n .match('#Organization+ #Possessive')\n .ifNo('@hasComma')\n .tag('Possessive')\n //Los Angeles's fundraiser\n poss\n .match('#Place+ #Possessive')\n .ifNo('@hasComma')\n .tag('Possessive')\n //her polling\n poss.match('#Possessive [#Verb]').tag('Noun', 'correction-possessive')\n }\n return doc\n}\nmodule.exports = fixNouns\n","const maybeNoun =\n '(rose|robin|dawn|ray|holly|bill|joy|viola|penny|sky|violet|daisy|melody|kelvin|hope|mercedes|olive|jewel|faith|van|charity|miles|lily|summer|dolly|rod|dick|cliff|lane|reed|kitty|art|jean|trinity)'\nconst maybeVerb = '(pat|wade|ollie|will|rob|buck|bob|mark|jack)'\nconst maybeAdj = '(misty|rusty|dusty|rich|randy)'\nconst maybeDate = '(april|june|may|jan|august|eve)'\nconst maybePlace = '(paris|alexandria|houston|kobe|salvador|sydney)'\n\nconst fixPerson = function(doc) {\n // clues from honorifics\n let hon = doc.if('#Honorific')\n if (hon.found === true) {\n //mr Putin\n doc.match('(mr|mrs|ms|dr) (#TitleCase|#Possessive)+').tag('#Person', 'mr-putin')\n //mr X\n hon.match('#Honorific #Acronym').tag('Person', 'Honorific-TitleCase')\n //remove single 'mr'\n hon.match('^#Honorific$').unTag('Person', 'single-honorific')\n //first general..\n hon.match('[(1st|2nd|first|second)] #Honorific').tag('Honorific', 'ordinal-honorific')\n }\n\n //methods requiring a titlecase\n let title = doc.if('#TitleCase')\n if (title.found === true) {\n title.match('#Acronym #TitleCase').tagSafe('#Person', 'acronym-titlecase')\n //ludwig van beethovan\n title.match('#TitleCase (van|al|bin) #TitleCase').tagSafe('Person', 'titlecase-van-titlecase')\n //jose de Sucre\n title.match('#TitleCase (de|du) la? #TitleCase').tagSafe('Person', 'titlecase-van-titlecase')\n\n //pope francis\n title\n .match('(lady|queen|sister) #TitleCase')\n .ifNo('#Date')\n .ifNo('#Honorific')\n .tag('#FemaleName', 'lady-titlecase')\n title\n .match('(king|pope|father) #TitleCase')\n .ifNo('#Date')\n .tag('#MaleName', 'poe')\n\n // jean Foobar\n title.match(maybeNoun + ' #Acronym? #TitleCase').tagSafe('Person', 'ray-smith')\n // rob Foobar\n title.match(maybeVerb + ' #Acronym? #TitleCase').tag('Person', 'rob-smith')\n // rusty Foobar\n title.match(maybeAdj + ' #Acronym? #TitleCase').tag('Person', 'rusty-smith')\n // june Foobar\n title.match(maybeDate + ' #Acronym? (#TitleCase && !#Month)').tagSafe('Person', 'june-smith')\n }\n\n let person = doc.if('#Person')\n if (person.found === true) {\n //Frank jr\n person.match('#Person (jr|sr|md)').tag('Person', 'person-honorific')\n //peter II\n person.match('#Person #Person the? #RomanNumeral').tag('Person', 'roman-numeral')\n //'Professor Fink', 'General McCarthy'\n person.match('#Honorific #Person').tag('Person', 'Honorific-Person')\n // 'john E rockefeller'\n person.match('#FirstName [/^[^aiurck]$/]').tag(['Acronym', 'Person'], 'john-e')\n //Doctor john smith jr\n person.match('#Honorific #Person').tag('Person', 'honorific-person')\n //general pearson\n person\n .match('[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person')\n .tag('Honorific', 'ambg-honorifics')\n //Morgan Shlkjsfne\n title\n .match('#Person #TitleCase')\n .match('#TitleCase #Noun')\n .tagSafe('Person', 'person-titlecase')\n //a bunch of ambiguous first names\n\n //Nouns: 'viola' or 'sky'\n let ambigNoun = person.if(maybeNoun)\n if (ambigNoun.found === true) {\n // ambigNoun.match('(#Determiner|#Adverb|#Pronoun|#Possessive) [' + maybeNoun + ']').tag('Noun', 'the-ray')\n ambigNoun.match(maybeNoun + ' #Person').tagSafe('Person', 'ray-smith')\n }\n\n //Verbs: 'pat' or 'wade'\n let ambigVerb = person.if(maybeVerb)\n if (ambigVerb === true) {\n ambigVerb.match('(#Modal|#Adverb) [' + maybeVerb + ']').tag('Verb', 'would-mark')\n ambigVerb.match(maybeVerb + ' #Person').tag('Person', 'rob-smith')\n }\n\n //Adjectives: 'rusty' or 'rich'\n let ambigAdj = person.if(maybeAdj)\n if (ambigAdj.found === true) {\n ambigAdj.match('#Adverb [' + maybeAdj + ']').tag('Adjective', 'really-rich')\n ambigAdj.match(maybeAdj + ' #Person').tag('Person', 'randy-smith')\n }\n\n //Dates: 'june' or 'may'\n let ambigDate = person.if(maybeDate)\n if (ambigDate.found === true) {\n ambigDate.match(String(maybeDate) + ' #Person').tagSafe('Person', 'june-smith')\n ambigDate.match('(in|during|on|by|before|#Date) [' + maybeDate + ']').tagSafe('Date', 'in-june')\n ambigDate.match(maybeDate + ' (#Date|#Value)').tagSafe('Date', 'june-5th')\n }\n\n //Places: paris or syndey\n let ambigPlace = person.if(maybePlace)\n if (ambigPlace.found === true) {\n ambigPlace.match('(in|near|at|from|to|#Place) [' + maybePlace + ']').tagSafe('Place', 'in-paris')\n ambigPlace.match('[' + maybePlace + '] #Place').tagSafe('Place', 'paris-france')\n // ambigPlace.match('[' + maybePlace + '] #Person').tagSafe('Person', 'paris-hilton')\n }\n\n //this one is tricky\n let al = person.if('al')\n if (al.found === true) {\n al.match('al (#Person|#TitleCase)').tagSafe('#Person', 'al-borlen')\n al.match('#TitleCase al #TitleCase').tagSafe('#Person', 'arabic-al-arabic')\n }\n\n let firstName = person.if('#FirstName')\n if (firstName.found === true) {\n //ferdinand de almar\n firstName.match('#FirstName de #Noun').tag('#Person', 'firstname-de-noun')\n //Osama bin Laden\n firstName.match('#FirstName (bin|al) #Noun').tag('#Person', 'firstname-al-noun')\n //John L. Foo\n firstName.match('#FirstName #Acronym #TitleCase').tag('Person', 'firstname-acronym-titlecase')\n //Andrew Lloyd Webber\n firstName.match('#FirstName #FirstName #TitleCase').tag('Person', 'firstname-firstname-titlecase')\n //Mr Foo\n firstName.match('#Honorific #FirstName? #TitleCase').tag('Person', 'Honorific-TitleCase')\n //peter the great\n firstName.match('#FirstName the #Adjective').tag('Person', 'determiner5')\n\n //very common-but-ambiguous lastnames\n firstName\n .match('#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)')\n .tag('#Person', 'firstname-maybe')\n\n //John Foo\n firstName\n .match('#FirstName #TitleCase #TitleCase?')\n .match('#Noun+')\n .tag('Person', 'firstname-titlecase')\n //Joe K. Sombrero\n firstName\n .match('#FirstName #Acronym #Noun')\n .ifNo('#Date')\n .tag('#Person', 'n-acro-noun')\n .lastTerm()\n .tag('#LastName', 'n-acro-noun')\n\n // Dwayne 'the rock' Johnson\n firstName\n .match('#FirstName [#Determiner #Noun] #LastName')\n .tag('#NickName', 'first-noun-last')\n .tag('#Person', 'first-noun-last')\n\n //john bodego's\n firstName\n .match('#FirstName (#Singular|#Possessive)')\n .ifNo('(#Date|#Pronoun|#NickName)')\n .tag('#Person', 'first-possessive')\n .lastTerm()\n .tag('#LastName', 'first-possessive')\n\n // Firstname x (dangerous)\n let tmp = firstName\n .match('#FirstName (#Noun|#TitleCase)')\n .ifNo('^#Possessive')\n .ifNo('#ClauseEnd .')\n .ifNo('#Pronoun')\n tmp.lastTerm().tag('#LastName', 'firstname-noun')\n }\n\n let lastName = person.if('#LastName')\n if (lastName.found === true) {\n //is foo Smith\n lastName.match('#Copula [(#Noun|#PresentTense)] #LastName').tag('#FirstName', 'copula-noun-lastname')\n // x Lastname\n lastName\n .match('[#Noun] #LastName')\n .canBe('#FirstName')\n .tag('#FirstName', 'noun-lastname')\n //ambiguous-but-common firstnames\n lastName\n .match(\n '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName'\n )\n .tag('#FirstName', 'maybe-lastname')\n //Jani K. Smith\n lastName\n .match('(#TitleCase|#Singular) #Acronym? #LastName')\n .ifNo('#Date')\n .tag('#Person', 'title-acro-noun')\n .lastTerm()\n .tag('#LastName', 'title-acro-noun')\n }\n }\n\n return doc\n}\nmodule.exports = fixPerson\n","const advb = '(#Adverb|not)+?'\n//\nconst fixVerb = function(doc) {\n let vb = doc.if('#Verb')\n if (vb.found) {\n vb.match('[(do|does|will|have|had)] (not|#Adverb)? #Verb').tag('Auxiliary', 'have-had')\n //still make\n vb.match('[still] #Verb').tag('Adverb', 'still-verb')\n //'u' as pronoun\n vb.match('[u] #Verb').tag('Pronoun', 'u-pronoun-1')\n //is no walk\n vb.match('is no [#Verb]').tag('Noun', 'is-no-verb')\n //different views than\n vb.match('[#Verb] than').tag('Noun', 'correction')\n // smoked poutine is\n vb.match('[#PastTense] #Singular is').tag('#Adjective', 'smoked-poutine')\n // baked onions are\n vb.match('[#PastTense] #Plural are').tag('#Adjective', 'baked-onions')\n // goes to sleep\n vb.match('(go|goes|went) to [#Infinitive]').tag('#Noun', 'goes-to-verb')\n\n //there are reasons\n vb.match('there (are|were) #Adjective? [#PresentTense]').tag('Plural', 'there-are')\n //jack seems guarded\n vb.match('#Singular (seems|appears) #Adverb? [#PastTense$]').tag('Adjective', 'seems-filled')\n //fall over\n vb.match('#PhrasalVerb [#PhrasalVerb]').tag('Particle', 'phrasal-particle')\n //went to sleep\n // vb.match('#Verb to #Verb').lastTerm().tag('Noun', 'verb-to-verb');\n //been walking\n vb.match(`(be|been) ${advb} #Gerund`)\n .not('#Verb$')\n .tag('Auxiliary', 'be-walking')\n\n // directive verb - 'use reverse'\n vb.match('(try|use|attempt|build|make) #Verb')\n .ifNo('(@hasComma|#Negative|#Copula|will|be)')\n .lastTerm()\n .tag('#Noun', 'do-verb')\n //infinitive verbs suggest plural nouns - 'XYZ walk to the store'\n // r.match(`#Singular+ #Infinitive`).match('#Singular+').tag('Plural', 'infinitive-make-plural');\n\n let modal = vb.if('(#Modal|did|had|has)')\n if (modal.found === true) {\n //support a splattering of auxillaries before a verb\n modal\n .match(`(has|had) ${advb} #PastTense`)\n .not('#Verb$')\n .tag('Auxiliary', 'had-walked')\n //would walk\n modal\n .match(`(#Modal|did) ${advb} #Verb`)\n .not('#Verb$')\n .tag('Auxiliary', 'modal-verb')\n //would have had\n modal\n .match(`#Modal ${advb} have ${advb} had ${advb} #Verb`)\n .not('#Verb$')\n .tag('Auxiliary', 'would-have')\n //would be walking\n modal\n .match(`#Modal ${advb} be ${advb} #Verb`)\n .not('#Verb$')\n .tag('Auxiliary', 'would-be')\n //would been walking\n modal\n .match(`(#Modal|had|has) ${advb} been ${advb} #Verb`)\n .not('#Verb$')\n .tag('Auxiliary', 'would-be')\n }\n\n let copula = vb.if('#Copula')\n if (copula.found === true) {\n //was walking\n copula\n .match(`#Copula ${advb} #Gerund`)\n .not('#Verb$')\n .tag('Auxiliary', 'copula-walking')\n //is mark hughes\n copula.match('#Copula [#Infinitive] #Noun').tag('Noun', 'is-pres-noun')\n //\n copula.match('[#Infinitive] #Copula').tag('Noun', 'inf-copula')\n //sometimes not-adverbs\n copula.match('#Copula [(just|alone)]$').tag('Adjective', 'not-adverb')\n //jack is guarded\n copula.match('#Singular is #Adverb? [#PastTense$]').tag('Adjective', 'is-filled')\n //is eager to go\n copula.match('#Copula [#Adjective to] #Verb').tag('Verb', 'adj-to')\n\n //sometimes adverbs - 'pretty good','well above'\n copula\n .match('#Copula (pretty|dead|full|well) (#Adjective|#Noun)')\n .ifNo('@hasComma')\n .tag('#Copula #Adverb #Adjective', 'sometimes-adverb')\n }\n\n //Gerund - 'walking'\n let gerund = vb.if('#Gerund')\n if (gerund.found === true) {\n //walking is cool\n gerund.match('[#Gerund] #Adverb? not? #Copula').tag('Activity', 'gerund-copula')\n //walking should be fun\n gerund.match('[#Gerund] #Modal').tag('Activity', 'gerund-modal')\n //running-a-show\n gerund.match('#Gerund #Determiner [#Infinitive]').tag('Noun', 'running-a-show')\n //setting records\n // doc.match('#Gerund [#PresentTense]').tag('Plural', 'setting-records');\n }\n\n //'will be'\n let willBe = vb.if('will #Adverb? not? #Adverb? be')\n if (willBe.found === true) {\n //will be running (not copula\n if (willBe.has('will #Adverb? not? #Adverb? be #Gerund') === false) {\n //tag it all\n willBe.match('will not? be').tag('Copula', 'will-be-copula')\n //for more complex forms, just tag 'be'\n willBe\n .match('will #Adverb? not? #Adverb? be #Adjective')\n .match('be')\n .tag('Copula', 'be-copula')\n }\n }\n }\n\n //question words\n let m = doc.if('(who|what|where|why|how|when)')\n if (m.found) {\n //the word 'how'\n m.match('^how').tag('QuestionWord', 'how-question')\n m.match('[how] (#Determiner|#Copula|#Modal|#PastTense)').tag('QuestionWord', 'how-is')\n // //the word 'which'\n m.match('^which').tag('QuestionWord', 'which-question')\n m.match('[which] . (#Noun)+ #Pronoun').tag('QuestionWord', 'which-question2')\n m.match('which').tag('QuestionWord', 'which-question3')\n\n //how he is driving\n m.match('[#QuestionWord] #Noun #Copula #Adverb? (#Verb|#Adjective)')\n .unTag('QuestionWord')\n .tag('Conjunction', 'how-he-is-x')\n\n //when i go fishing\n m.match('#QuestionWord #Noun #Adverb? #Infinitive not? #Gerund')\n .unTag('QuestionWord')\n .tag('Conjunction', 'when i go fishing')\n }\n\n return doc\n}\nmodule.exports = fixVerb\n","//\nconst fixAdjective = function(doc) {\n let adj = doc.if('#Adjective')\n if (adj.found) {\n //still good\n adj.match('[still] #Adjective').tag('Adverb', 'still-advb')\n //barely even walk\n adj.match('(barely|hardly) even').tag('#Adverb', 'barely-even')\n //big dreams, critical thinking\n adj.match('#Adjective [#PresentTense]').tag('Noun', 'adj-presentTense')\n //will secure our\n adj.match('will [#Adjective]').tag('Verb', 'will-adj')\n //cheering hard - dropped -ly's\n adj.match('#PresentTense [(hard|quick|long|bright|slow)]').tag('Adverb', 'lazy-ly')\n //his fine\n adj.match('(his|her|its) [#Adjective]').tag('Noun', 'his-fine')\n //he left\n adj.match('#Noun #Adverb? [left]').tag('PastTense', 'left-verb')\n //he disguised the thing\n adj.match('#Pronoun [#Adjective] #Determiner #Adjective? #Noun').tag('Verb', 'he-adj-the')\n }\n return doc\n}\nmodule.exports = fixAdjective\n","const units = '(hundred|thousand|million|billion|trillion|quadrillion|quintillion|sextillion|septillion)'\n\n//\nconst fixValue = function(doc) {\n let val = doc.if('#Value')\n if (val.found === true) {\n //1 800 PhoneNumber\n val.match('1 #Value #PhoneNumber').tag('PhoneNumber', '1-800-Value')\n //(454) 232-9873\n val.match('#NumericValue #PhoneNumber').tag('PhoneNumber', '(800) PhoneNumber')\n //three trains\n val.match('#Value [#PresentTense]').tag('Plural', 'value-presentTense')\n //money\n val\n .match('#Value+ #Currency')\n .tag('Money', 'value-currency')\n .lastTerm()\n .tag('Unit', 'money-unit')\n }\n //5 kg.\n val.match('#Value #Abbreviation').tag('Value', 'value-abbr')\n //seven point five\n val.match('#Value (point|decimal) #Value').tag('Value', 'value-point-value')\n //minus 7\n val.match('(minus|negative) #Value').tag('Value', 'minus-value')\n // ten grand\n val.match('#Value grand').tag('Value', 'value-grand')\n //quarter million\n val.match('(a|the) [(half|quarter)] #Ordinal').tag('Value', 'half-ordinal')\n //eg 'trillion'\n let mult = val.if(units)\n if (mult.found === true) {\n mult.match('a #Value').tag('Value', 'a-value') //?\n // mult.match('#Ordinal (half|quarter)').tag('Value', 'ordinal-half');//not ready\n mult.match(`${units} and #Value`).tag('Value', 'magnitude-and-value')\n }\n return doc\n}\nmodule.exports = fixValue\n","const preps = '(in|by|before|during|on|until|after|of|within|all)' //6\nconst people = '(january|april|may|june|summer|autumn|jan|sep)' //ambiguous month-names\nconst verbs = '(may|march)' //ambiguous month-verbs\n\nconst fixDates = function(doc) {\n //ambiguous month - person forms\n let person = doc.if(people)\n if (person.found === true) {\n //give to april\n person.match(`#Infinitive #Determiner? #Adjective? #Noun? (to|for) [${people}]`).tag('Person', 'ambig-person')\n //remind june\n person.match(`#Infinitive [${people}]`).tag('Person', 'infinitive-person')\n //may waits for\n person.match(`[${people}] #PresentTense (to|for)`).tag('Person', 'ambig-active')\n //april will\n person.match(`[${people}] #Modal`).tag('Person', 'ambig-modal')\n //would april\n person.match(`#Modal [${people}]`).tag('Person', 'modal-ambig')\n //with april\n person.match(`(that|with|for) [${people}]`).tag('Person', 'that-month')\n //it is may\n person.match(`#Copula [${people}]`).tag('Person', 'is-may')\n //may is\n person.match(`[${people}] #Copula`).tag('Person', 'may-is')\n //april the 5th\n person.match(`[${people}] the? #Value`).tag('Month', 'person-value')\n //wednesday april\n person.match(`#Date [${people}]`).tag('Month', 'correction-may')\n //may 5th\n person.match(`[${people}] the? #Value`).tag('Month', 'may-5th')\n //5th of may\n person.match(`#Value of [${people}]`).tag('Month', '5th-of-may')\n //by april\n person\n .match(`${preps} [${people}]`)\n .ifNo('#Holiday')\n .tag('Month', 'preps-month')\n //this april\n person.match(`(next|this|last) [${people}]`).tag('Month', 'correction-may') //maybe not 'this'\n }\n\n //ambiguous month - verb-forms\n let verb = doc.if(verbs)\n if (verb.found === true) {\n //quickly march\n verb.match(`#Adverb [${verbs}]`).tag('Infinitive', 'ambig-verb')\n verb.match(`${verbs} [#Adverb]`).tag('Infinitive', 'ambig-verb')\n //all march\n verb.match(`${preps} [${verbs}]`).tag('Month', 'in-month')\n //this march\n verb.match(`(next|this|last) [${verbs}]`).tag('Month', 'this-month')\n //with date\n verb.match(`[${verbs}] the? #Value`).tag('Month', 'march-5th')\n verb.match(`#Value of? [${verbs}]`).tag('Month', '5th-of-march')\n //nearby\n verb.match(`[${verbs}] .? #Date`).tag('Month', 'march-and-feb')\n verb.match(`#Date .? [${verbs}]`).tag('Month', 'feb-and-march')\n\n let march = doc.if('march')\n if (march.found === true) {\n //march to\n march.match('[march] (up|down|back|to|toward)').tag('Infinitive', 'march-to')\n //must march\n march.match('#Modal [march]').tag('Infinitive', 'must-march')\n }\n }\n //sun 5th\n let sun = doc.if('sun')\n if (sun.found === true) {\n //sun feb 2\n sun.match('[sun] #Date').tag('WeekDay', 'sun-feb')\n //sun the 5th\n sun\n .match('sun the #Ordinal')\n .tag('Date')\n .firstTerm()\n .tag('WeekDay', 'sun-the-5th')\n //the sun\n sun.match('#Determiner [sun]').tag('Singular', 'the-sun')\n }\n\n //sat, nov 5th\n let sat = doc.if('sat')\n if (sat.found) {\n //sat november\n sat.match('[sat] #Date').tag('WeekDay', 'sat-feb')\n //this sat\n sat.match(`${preps} [sat]`).tag('WeekDay', 'sat')\n }\n\n //months:\n let month = doc.if('#Month')\n if (month.found === true) {\n //June 5-7th\n month.match(`#Month #DateRange+`).tag('Date', 'correction-numberRange')\n //5th of March\n month.match('#Value of #Month').tag('Date', 'value-of-month')\n //5 March\n month.match('#Cardinal #Month').tag('Date', 'cardinal-month')\n //march 5 to 7\n month.match('#Month #Value to #Value').tag('Date', 'value-to-value')\n //march the 12th\n month.match('#Month the #Value').tag('Date', 'month-the-value')\n }\n\n //months:\n let val = doc.if('#Value')\n if (val.found === true) {\n //values\n val.match('#Value #Abbreviation').tag('Value', 'value-abbr')\n //seven point five\n val.match('#Value (point|decimal) #Value').tag('Value', 'value-point-value')\n //minus 7\n val.match('(minus|negative) #Value').tag('Value', 'minus-value')\n // ten grand\n val.match('#Value grand').tag('Value', 'value-grand')\n //quarter million\n val.match('(a|the) [(half|quarter)] #Ordinal').tag('Value', 'half-ordinal')\n //june 7\n val\n .match('(#WeekDay|#Month) #Value')\n .ifNo('#Money')\n .tag('Date', 'date-value')\n\n //7 june\n val\n .match('#Value (#WeekDay|#Month)')\n .ifNo('#Money')\n .tag('Date', 'value-date')\n\n //may twenty five\n val\n .match('#TextValue #TextValue')\n .if('#Date')\n .tag('#Date', 'textvalue-date')\n }\n\n return doc\n}\nmodule.exports = fixDates\n","const fixMisc = require('./fixMisc')\nconst fixDeterminer = require('./fixThe')\nconst fixNouns = require('./fixNouns')\nconst fixPerson = require('./fixPerson')\nconst fixVerb = require('./fixVerb')\nconst fixAdjective = require('./fixAdjective')\nconst fixValue = require('./fixValue')\nconst fixDates = require('./fixDates')\n\n// det: 131.338ms\n// verb: 100.828ms\n// dates: 80.874ms\n// person: 66.054ms\n// nouns: 51.340ms\n// adj: 19.760ms\n// value: 12.950ms\n// misc: 43.359ms\n\n//sequence of match-tag statements to correct mis-tags\nconst corrections = function(doc) {\n // console.time('det')\n fixDeterminer(doc) //27\n // console.timeEnd('det')\n\n // console.time('nouns')\n fixNouns(doc) //30\n // // console.timeEnd('nouns')\n\n // // console.time('person')\n fixPerson(doc) //58\n // // console.timeEnd('person')\n\n // // console.time('verb')\n fixVerb(doc) //50\n // // console.timeEnd('verb')\n\n // // console.time('adj')\n fixAdjective(doc) //8\n // // console.timeEnd('adj')\n\n // // console.time('value')\n fixValue(doc) //12\n // // console.timeEnd('value')\n\n // // console.time('dates')\n fixDates(doc) //92\n // // console.timeEnd('dates')\n\n // // console.time('misc')\n fixMisc(doc) //43\n // console.timeEnd('misc')\n return doc\n}\nmodule.exports = corrections\n","const init = require('./01-init')\nconst fallbacks = require('./02-fallbacks')\nconst contractions = require('./03-contractions')\nconst corrections = require('./04-correction')\n\n/** POS-tag all terms in this document */\nconst tagger = function(doc) {\n let terms = doc.termList()\n // check against any known-words\n doc = init(doc, terms)\n\n // everything has gotta be something. ¯\\_(:/)_/¯\n doc = fallbacks(doc, terms)\n\n // support \"didn't\" & \"spencer's\"\n doc = contractions(doc)\n\n //set our cache, to speed things up\n doc.cache()\n\n // wiggle-around the results, so they make more sense\n doc = corrections(doc)\n\n //remove our cache\n // doc.uncache()\n\n // run any user-given tagger functions\n doc.world.taggers.forEach(fn => {\n fn(doc)\n })\n\n return doc\n}\nmodule.exports = tagger\n","const addMethod = function(Doc) {\n /** */\n class Abbreviations extends Doc {\n stripPeriods() {\n this.termList().forEach(t => {\n if (t.tags.Abbreviation === true && t.next) {\n t.post = t.post.replace(/^\\./, '')\n }\n let str = t.text.replace(/\\./, '')\n t.set(str)\n })\n return this\n }\n addPeriods() {\n this.termList().forEach(t => {\n t.post = t.post.replace(/^\\./, '')\n t.post = '.' + t.post\n })\n return this\n }\n }\n Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods\n\n Doc.prototype.abbreviations = function(n) {\n let match = this.match('#Abbreviation')\n if (typeof n === 'number') {\n match = match.get(n)\n }\n return new Abbreviations(match.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** */\n class Acronyms extends Doc {\n stripPeriods() {\n this.termList().forEach(t => {\n let str = t.text.replace(/\\./g, '')\n t.set(str)\n })\n return this\n }\n addPeriods() {\n this.termList().forEach(t => {\n let str = t.text.replace(/\\./g, '')\n str = str.split('').join('.')\n t.set(str)\n })\n return this\n }\n }\n Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods\n Acronyms.prototype.strip = Acronyms.prototype.stripPeriods\n\n Doc.prototype.acronyms = function(n) {\n let match = this.match('#Acronym')\n if (typeof n === 'number') {\n match = match.get(n)\n }\n return new Acronyms(match.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** split into approximate sub-sentence phrases */\n Doc.prototype.clauses = function(n) {\n // an awkward way to disambiguate a comma use\n let commas = this.if('@hasComma')\n .notIf('@hasComma @hasComma') //fun, cool...\n .notIf('@hasComma . .? (and|or) .') //cool, and fun\n .notIf('(#City && @hasComma) #Country') //'toronto, canada'\n .notIf('(#Date && @hasComma) #Year') //'july 6, 1992'\n .notIf('@hasComma (too|also)$') //at end of sentence\n .match('@hasComma')\n let found = this.splitAfter(commas)\n\n let quotes = found.quotations()\n found = found.splitOn(quotes)\n\n let parentheses = found.parentheses()\n found = found.splitOn(parentheses)\n\n // it is cool and it is ..\n let conjunctions = found.if('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction')\n found = found.splitBefore(conjunctions)\n\n // if it is this then that\n let condition = found.if('if .{2,9} then .').match('then')\n found = found.splitBefore(condition)\n\n // misc clause partitions\n found = found.splitBefore('as well as .')\n found = found.splitBefore('such as .')\n found = found.splitBefore('in addition to .')\n\n // semicolons, dashes\n found = found.splitAfter('@hasSemicolon')\n found = found.splitAfter('@hasDash')\n\n // does there appear to have relative/subordinate clause still?\n let tooLong = found.filter(d => d.wordCount() > 5 && d.match('#Verb+').length >= 2)\n if (tooLong.found) {\n let m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+')\n found = found.splitOn(m.eq(0))\n }\n\n if (typeof n === 'number') {\n found = found.get(n)\n }\n return new Doc(found.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** */\n class Contractions extends Doc {\n constructor(list, from, world) {\n super(list, from, world)\n this.contracted = null\n }\n /** turn didn't into 'did not' */\n expand() {\n this.list.forEach(p => {\n let terms = p.terms()\n //change the case?\n let isTitlecase = terms[0].isTitleCase()\n\n terms.forEach((t, i) => {\n //use the implicit text\n // console.log(t.clean)\n t.set(t.implicit || t.text)\n t.implicit = undefined\n\n //add whitespace\n if (i < terms.length - 1 && t.post === '') {\n t.post += ' '\n }\n })\n //set titlecase\n if (isTitlecase) {\n terms[0].toTitleCase()\n }\n })\n return this\n }\n }\n\n //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n Doc.prototype.contractions = function(n) {\n //find currently-contracted\n let found = this.match('@hasContraction+') //(may want to split these up)\n //todo: split consecutive contractions\n if (typeof n === 'number') {\n found = found.get(n)\n }\n return new Contractions(found.list, this, this.world)\n }\n\n //aliases\n Doc.prototype.expanded = Doc.prototype.isExpanded\n Doc.prototype.contracted = Doc.prototype.isContracted\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n //pull it apart..\n const parse = function(doc) {\n let things = doc.splitAfter('@hasComma').not('(and|or) not?')\n let beforeLast = doc.match('[.] (and|or)')\n return {\n things: things,\n conjunction: doc.match('(and|or) not?'),\n beforeLast: beforeLast,\n hasOxford: beforeLast.has('@hasComma'),\n }\n }\n\n /** cool, fun, and nice */\n class Lists extends Doc {\n /** coordinating conjunction */\n conjunctions() {\n return this.match('(and|or)')\n }\n /** split-up by list object */\n parts() {\n return this.splitAfter('(@hasComma|#Conjunction)')\n }\n /** remove the conjunction */\n items() {\n return this.parts().notIf('#Conjunction')\n }\n /** add a new unit to the list */\n add(str) {\n this.forEach(p => {\n let beforeLast = parse(p).beforeLast\n beforeLast.append(str)\n //add a comma to it\n beforeLast.termList(0).addPunctuation(',')\n })\n return this\n }\n /** remove any matching unit from the list */\n remove() {\n return this\n }\n\n /** return only lists that use a serial comma */\n hasOxfordComma() {\n return this.filter(doc => parse(doc).hasOxford)\n }\n addOxfordComma() {\n return this\n }\n removeOxfordComma() {\n return this\n }\n }\n // aliases\n Lists.prototype.things = Lists.prototype.items\n\n Doc.prototype.lists = function(n) {\n let m = this.if('@hasComma+ .? (and|or) not? .')\n\n // person-list\n let nounList = m.match('(#Noun|#Adjective)+ #Conjunction not? #Adjective? #Noun+')\n let adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+')\n let verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+')\n let result = nounList.concat(adjList)\n result = result.concat(verbList)\n result = result.if('@hasComma')\n\n if (typeof n === 'number') {\n result = m.get(n)\n }\n return new Lists(result.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const noPlural =\n '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'\n\n//certain words can't be plural, like 'peace'\nconst hasPlural = function(doc) {\n if (doc.has('#Plural') === true) {\n return true\n }\n // these can't be plural\n if (doc.has(noPlural) === true) {\n return false\n }\n return true\n}\n\nmodule.exports = hasPlural\n","'use strict'\n\n//chooses an indefinite aricle 'a/an' for a word\nconst irregulars = {\n hour: 'an',\n heir: 'an',\n heirloom: 'an',\n honest: 'an',\n honour: 'an',\n honor: 'an',\n uber: 'an', //german u\n}\n//pronounced letters of acronyms that get a 'an'\nconst an_acronyms = {\n a: true,\n e: true,\n f: true,\n h: true,\n i: true,\n l: true,\n m: true,\n n: true,\n o: true,\n r: true,\n s: true,\n x: true,\n}\n//'a' regexes\nconst a_regexs = [\n /^onc?e/i, //'wu' sound of 'o'\n /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n /^eul/i,\n]\n\nconst makeArticle = function(doc) {\n //no 'the john smith', but 'a london hotel'\n if (doc.has('#Person') || doc.has('#Place')) {\n return ''\n }\n //no a/an if it's plural\n if (doc.has('#Plural')) {\n return 'the'\n }\n let str = doc.text('normal').trim()\n //explicit irregular forms\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str]\n }\n //spelled-out acronyms\n let firstLetter = str.substr(0, 1)\n if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) {\n return 'an'\n }\n //'a' regexes\n for (let i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return 'a'\n }\n }\n //basic vowel-startings\n if (/^[aeiou]/i.test(str)) {\n return 'an'\n }\n return 'a'\n}\n\nmodule.exports = makeArticle\n","//similar to plural/singularize rules, but not the same\nconst isPlural = [\n /(antenn|formul|nebul|vertebr|vit)ae$/i,\n /(octop|vir|radi|nucle|fung|cact|stimul)i$/i,\n /men$/i,\n /.tia$/i,\n /(m|l)ice$/i,\n]\n\n//similar to plural/singularize rules, but not the same\nconst isSingular = [\n /(ax|test)is$/i,\n /(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\n /(octop|vir)i$/i,\n /(rl)f$/i,\n /(alias|status)$/i,\n /(bu)s$/i,\n /(al|ad|at|er|et|ed|ad)o$/i,\n /(ti)um$/i,\n /(ti)a$/i,\n /sis$/i,\n /(?:(^f)fe|(lr)f)$/i,\n /hive$/i,\n /(^aeiouy|qu)y$/i,\n /(x|ch|ss|sh|z)$/i,\n /(matr|vert|ind|cort)(ix|ex)$/i,\n /(m|l)ouse$/i,\n /(m|l)ice$/i,\n /(antenn|formul|nebul|vertebr|vit)a$/i,\n /.sis$/i,\n /^(?!talis|.*hu)(.*)man$/i,\n]\nmodule.exports = {\n isSingular: isSingular,\n isPlural: isPlural,\n}\n","const rules = require('./_rules')\nconst endS = /s$/\n// double-check this term, if it is not plural, or singular.\n// (this is a partial copy of ./tagger/fallbacks/plural)\n// fallback plural if it ends in an 's'.\nconst isPlural = function(str) {\n // isSingular suffix rules\n if (rules.isSingular.find(reg => reg.test(str))) {\n return false\n }\n // does it end in an s?\n if (endS.test(str) === true) {\n return true\n }\n // is it a plural like 'fungi'?\n if (rules.isPlural.find(reg => reg.test(str))) {\n return true\n }\n return null\n}\nmodule.exports = isPlural\n","const exceptions = {\n he: 'his',\n she: 'hers',\n they: 'theirs',\n we: 'ours',\n i: 'mine',\n you: 'yours',\n\n her: 'hers',\n their: 'theirs',\n our: 'ours',\n my: 'mine',\n your: 'yours',\n}\n\n// turn \"David\" to \"David's\"\nconst toPossessive = function(doc) {\n let str = doc.text('text').trim()\n // exceptions\n if (exceptions.hasOwnProperty(str)) {\n doc.replaceWith(exceptions[str], true, true)\n doc.tag('Possessive', 'toPossessive')\n return\n }\n // flanders'\n if (/s$/.test(str)) {\n str += \"'\"\n doc.replaceWith(str, true, true)\n doc.tag('Possessive', 'toPossessive')\n return\n }\n //normal form:\n str += \"'s\"\n doc.replaceWith(str, true, true)\n doc.tag('Possessive', 'toPossessive')\n return\n}\nmodule.exports = toPossessive\n","// .nouns() supports some noun-phrase-ish groupings\n// pull these apart, if necessary\nconst parse = function(doc) {\n let res = {\n main: doc,\n }\n //support 'mayor of chicago' as one noun-phrase\n if (doc.has('#Noun (of|by|for) .')) {\n let m = doc.splitAfter('[#Noun+]')\n res.main = m.eq(0)\n res.post = m.eq(1)\n }\n return res\n}\nmodule.exports = parse\n","const hasPlural = require('./plural/hasPlural')\nconst getArticle = require('./getArticle')\nconst isPlural = require('./plural/isPlural')\nconst toPossessive = require('./toPossessive')\nconst parse = require('./parse')\n\nconst methods = {\n /** overload the original json with noun information */\n json: function(options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { text: true, normal: true, trim: true, terms: true }\n let res = []\n this.forEach(doc => {\n let json = doc.json(options)[0]\n json.article = getArticle(doc)\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n\n isPlural: function() {\n return this.if('#Plural') //assume tagger has run?\n },\n hasPlural: function() {\n return this.filter(d => hasPlural(d))\n },\n toPlural: function() {\n let toPlural = this.world.transforms.toPlural\n this.forEach(doc => {\n if (doc.has('#Plural') || hasPlural(doc) === false) {\n return\n }\n // double-check it isn't an un-tagged plural\n let main = parse(doc).main\n let str = main.text()\n if (!main.has('#Singular') && isPlural(str) === true) {\n return\n }\n str = toPlural(str, this.world)\n main.replace(str).tag('#Plural')\n })\n return this\n },\n toSingular: function() {\n let toSingular = this.world.transforms.toSingular\n this.forEach(doc => {\n if (doc.has('#Singular') || hasPlural(doc) === false) {\n return\n }\n // double-check it isn't an un-tagged plural\n let main = parse(doc).main\n let str = main.text()\n if (!main.has('#Plural') && isPlural(str) !== true) {\n return\n }\n str = toSingular(str, this.world)\n main.replace(str).tag('#Singular')\n })\n return this\n },\n toPossessive: function() {\n this.forEach(d => {\n toPossessive(d)\n })\n return this\n },\n}\nmodule.exports = methods\n","const methods = require('./methods')\n\nconst addMethod = function(Doc) {\n /** */\n class Nouns extends Doc {}\n // add-in our methods\n Object.assign(Nouns.prototype, methods)\n\n Doc.prototype.nouns = function(n) {\n let match = this.clauses()\n match = match.match('#Noun+ (of|by)? the? #Noun+?')\n //nouns that we don't want in these results, for weird reasons\n match = match.not('#Pronoun')\n match = match.not('(there|these)')\n match = match.not('(#Month|#WeekDay)') //allow Durations, Holidays\n // //allow possessives like \"spencer's\", but not generic ones like,\n match = match.not('(my|our|your|their|her|his)')\n match = match.not('(of|for|by|the)$')\n\n if (typeof n === 'number') {\n match = match.get(n)\n }\n return new Nouns(match.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const open = /\\(/\nconst close = /\\)/\n\nconst addMethod = function(Doc) {\n /** anything between (these things) */\n class Parentheses extends Doc {\n /** remove the parentheses characters */\n unwrap() {\n this.list.forEach(p => {\n let first = p.terms(0)\n first.pre = first.pre.replace(open, '')\n let last = p.lastTerm()\n last.post = last.post.replace(close, '')\n })\n return this\n }\n }\n\n Doc.prototype.parentheses = function(n) {\n let list = []\n this.list.forEach(p => {\n let terms = p.terms()\n //look for opening brackets\n for (let i = 0; i < terms.length; i += 1) {\n const t = terms[i]\n if (open.test(t.pre)) {\n //look for the closing bracket..\n for (let o = i; o < terms.length; o += 1) {\n if (close.test(terms[o].post)) {\n let len = o - i + 1\n list.push(p.buildFrom(t.id, len))\n i = o\n break\n }\n }\n }\n }\n })\n //support nth result\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]]\n } else {\n list = []\n }\n return new Parentheses(list, this, this.world)\n }\n return new Parentheses(list, this, this.world)\n }\n\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** */\n class Possessives extends Doc {\n constructor(list, from, world) {\n super(list, from, world)\n this.contracted = null\n }\n /** turn didn't into 'did not' */\n strip() {\n this.list.forEach(p => {\n let terms = p.terms()\n terms.forEach(t => {\n let str = t.text.replace(/'s$/, '')\n t.set(str || t.text)\n })\n })\n return this\n }\n }\n\n //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n Doc.prototype.possessives = function(n) {\n //find currently-contracted\n let found = this.match('#Noun+? #Possessive')\n //todo: split consecutive contractions\n if (typeof n === 'number') {\n found = found.get(n)\n }\n return new Possessives(found.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const pairs = {\n '\\u0022': '\\u0022', // 'StraightDoubleQuotes'\n '\\uFF02': '\\uFF02', // 'StraightDoubleQuotesWide'\n '\\u0027': '\\u0027', // 'StraightSingleQuotes'\n '\\u201C': '\\u201D', // 'CommaDoubleQuotes'\n '\\u2018': '\\u2019', // 'CommaSingleQuotes'\n '\\u201F': '\\u201D', // 'CurlyDoubleQuotesReversed'\n '\\u201B': '\\u2019', // 'CurlySingleQuotesReversed'\n '\\u201E': '\\u201D', // 'LowCurlyDoubleQuotes'\n '\\u2E42': '\\u201D', // 'LowCurlyDoubleQuotesReversed'\n '\\u201A': '\\u2019', // 'LowCurlySingleQuotes'\n '\\u00AB': '\\u00BB', // 'AngleDoubleQuotes'\n '\\u2039': '\\u203A', // 'AngleSingleQuotes'\n // Prime 'non quotation'\n '\\u2035': '\\u2032', // 'PrimeSingleQuotes'\n '\\u2036': '\\u2033', // 'PrimeDoubleQuotes'\n '\\u2037': '\\u2034', // 'PrimeTripleQuotes'\n // Prime 'quotation' variation\n '\\u301D': '\\u301E', // 'PrimeDoubleQuotes'\n '\\u0060': '\\u00B4', // 'PrimeSingleQuotes'\n '\\u301F': '\\u301E', // 'LowPrimeDoubleQuotesReversed'\n}\n\nconst hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')')\n\nconst addMethod = function(Doc) {\n /** \"these things\" */\n class Quotations extends Doc {\n /** remove the quote characters */\n unwrap() {\n return this\n }\n }\n\n Doc.prototype.quotations = function(n) {\n let list = []\n this.list.forEach(p => {\n let terms = p.terms()\n //look for opening quotes\n for (let i = 0; i < terms.length; i += 1) {\n const t = terms[i]\n if (hasOpen.test(t.pre)) {\n let char = (t.pre.match(hasOpen) || [])[0]\n let want = pairs[char]\n // if (!want) {\n // console.warn('missing quote char ' + char)\n // }\n //look for the closing bracket..\n for (let o = i; o < terms.length; o += 1) {\n if (terms[o].post.indexOf(want) !== -1) {\n let len = o - i + 1\n list.push(p.buildFrom(t.id, len))\n i = o\n break\n }\n }\n }\n }\n })\n //support nth result\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]]\n } else {\n list = []\n }\n return new Quotations(list, this, this.world)\n }\n return new Quotations(list, this, this.world)\n }\n // alias\n Doc.prototype.quotes = Doc.prototype.quotations\n\n return Doc\n}\nmodule.exports = addMethod\n","// walked => walk - turn a verb into it's root form\nconst toInfinitive = function(parsed, world) {\n let verb = parsed.verb\n\n //1. if it's already infinitive\n let str = verb.text('normal')\n if (verb.has('#Infinitive')) {\n return str\n }\n\n // 2. world transform does the heavy-lifting\n let tense = null\n if (verb.has('#PastTense')) {\n tense = 'PastTense'\n } else if (verb.has('#Gerund')) {\n tense = 'Gerund'\n } else if (verb.has('#PresentTense')) {\n tense = 'PresentTense'\n } else if (verb.has('#Participle')) {\n tense = 'Participle'\n } else if (verb.has('#Actor')) {\n tense = 'Actor'\n }\n return world.transforms.toInfinitive(str, world, tense)\n}\nmodule.exports = toInfinitive\n","// spencer walks -> singular\n// we walk -> plural\n\n// the most-recent noun-phrase, before this verb.\nconst findNoun = function(vb) {\n let noun = vb.lookBehind('#Noun+').last()\n return noun\n}\n\n//sometimes you can tell if a verb is plural/singular, just by the verb\n// i am / we were\n// othertimes you need its subject 'we walk' vs 'i walk'\nconst isPlural = function(parsed) {\n let vb = parsed.verb\n if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) {\n return true\n }\n if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) {\n return false\n }\n //consider its prior noun\n let noun = findNoun(vb)\n if (noun.has('(we|they|you)')) {\n return true\n }\n if (noun.has('#Plural')) {\n return true\n }\n if (noun.has('#Singular')) {\n return false\n }\n return null\n}\nmodule.exports = isPlural\n","const toInfinitive = require('./toInfinitive')\nconst isPlural = require('./isPlural')\n// #Modal : would walk -> 'would not walk'\n// #Copula : is -> 'is not'\n// #PastTense : walked -> did not walk\n// #PresentTense : walks -> does not walk\n// #Gerund : walking: -> not walking\n// #Infinitive : walk -> do not walk\n\nconst toNegative = function(parsed, world) {\n let vb = parsed.verb\n // if it's already negative...\n if (parsed.negative.found) {\n return\n }\n\n // would walk -> would not walk\n if (parsed.auxiliary.found) {\n parsed.auxiliary.eq(0).append('not')\n return\n }\n // is walking -> is not walking\n if (vb.has('(#Copula|will|has|had|do)')) {\n vb.append('not')\n return\n }\n // walked -> did not walk\n if (vb.has('#PastTense')) {\n let inf = toInfinitive(parsed, world)\n vb.replaceWith(inf, true, true)\n vb.prepend('did not')\n return\n }\n // walks -> does not walk\n if (vb.has('#PresentTense')) {\n let inf = toInfinitive(parsed, world)\n vb.replaceWith(inf, true, true)\n if (isPlural(parsed, world)) {\n vb.prepend('do not')\n } else {\n vb.prepend('does not')\n }\n return\n }\n //walking -> not walking\n if (vb.has('#Gerund')) {\n let inf = toInfinitive(parsed, world)\n vb.replaceWith(inf, true, true)\n vb.prepend('not')\n return\n }\n\n //fallback 1: walk -> does not walk\n if (isPlural(parsed, world)) {\n vb.prepend('does not')\n return\n }\n //fallback 2: walk -> do not walk\n vb.prepend('do not')\n return\n}\nmodule.exports = toNegative\n","// turn 'would not really walk up' into parts\nconst parseVerb = function(vb) {\n let parsed = {\n adverb: vb.match('#Adverb+'), // 'really'\n negative: vb.match('#Negative'), // 'not'\n auxiliary: vb.match('#Auxiliary').not('(#Negative|#Adverb)'), // 'will' of 'will go'\n particle: vb.match('#Particle'), // 'up' of 'pull up'\n verb: vb.match('#Verb').not('(#Adverb|#Negative|#Auxiliary|#Particle)'),\n }\n // fallback, if no verb found\n if (!parsed.verb.found) {\n // blank-everything\n Object.keys(parsed).forEach(k => {\n parsed[k] = parsed[k].not('.')\n })\n // it's all the verb\n parsed.verb = vb\n return parsed\n }\n //\n if (parsed.adverb && parsed.adverb.found) {\n let match = parsed.adverb.text('reduced') + '$'\n if (vb.has(match)) {\n parsed.adverbAfter = true\n }\n }\n // console.log(parsed.adverb.json({ index: true })[0])\n return parsed\n}\nmodule.exports = parseVerb\n","const isPlural = require('../isPlural')\n\n/** too many special cases for is/was/will be*/\nconst toBe = parsed => {\n let isI = false\n let plural = isPlural(parsed)\n let isNegative = parsed.negative.found\n //account for 'i is' -> 'i am' irregular\n // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) {\n // isI = true;\n // }\n\n // 'i look', not 'i looks'\n if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n isI = true\n }\n\n let obj = {\n PastTense: 'was',\n PresentTense: 'is',\n FutureTense: 'will be',\n Infinitive: 'is',\n Gerund: 'being',\n Actor: '',\n PerfectTense: 'been',\n Pluperfect: 'been',\n }\n //\"i is\" -> \"i am\"\n if (isI === true) {\n obj.PresentTense = 'am'\n obj.Infinitive = 'am'\n }\n if (plural) {\n obj.PastTense = 'were'\n obj.PresentTense = 'are'\n obj.Infinitive = 'are'\n }\n if (isNegative) {\n obj.PastTense += ' not'\n obj.PresentTense += ' not'\n obj.FutureTense = 'will not be'\n obj.Infinitive += ' not'\n obj.PerfectTense = 'not ' + obj.PerfectTense\n obj.Pluperfect = 'not ' + obj.Pluperfect\n obj.Gerund = 'not ' + obj.Gerund\n }\n return obj\n}\nmodule.exports = toBe\n","const toInfinitive = require('../toInfinitive')\nconst toBe = require('./toBe')\n\nconst conjugate = function(parsed, world) {\n let verb = parsed.verb\n\n //special handling of 'is', 'will be', etc.\n if (verb.has('#Copula') || (verb.out('normal') === 'be' && parsed.auxiliary.has('will'))) {\n return toBe(parsed, world)\n }\n\n let infinitive = toInfinitive(parsed, world)\n if (!infinitive) {\n return {}\n }\n // console.log(infinitive)\n let forms = world.transforms.conjugate(infinitive, world)\n forms.Infinitive = infinitive\n\n // add particle to phrasal verbs ('fall over')\n if (parsed.particle.found) {\n let particle = parsed.particle.text()\n Object.keys(forms).forEach(k => (forms[k] += ' ' + particle))\n }\n //put the adverb at the end?\n if (parsed.adverb.found) {\n let adverb = parsed.adverb.text()\n if (parsed.adverbAfter === true) {\n Object.keys(forms).forEach(k => (forms[k] += ' ' + adverb))\n } else {\n Object.keys(forms).forEach(k => (forms[k] = adverb + ' ' + forms[k]))\n }\n }\n\n //apply negative\n const isNegative = parsed.negative.found\n if (isNegative) {\n forms.PastTense = 'did not ' + forms.Infinitive\n forms.PresentTense = 'does not ' + forms.Infinitive\n forms.Gerund = 'not ' + forms.Gerund\n }\n //future Tense is pretty straightforward\n if (!forms.FutureTense) {\n if (isNegative) {\n forms.FutureTense = 'will not ' + forms.Infinitive\n } else {\n forms.FutureTense = 'will ' + forms.Infinitive\n }\n }\n if (isNegative) {\n forms.Infinitive = 'not ' + forms.Infinitive\n }\n return forms\n}\nmodule.exports = conjugate\n","const toNegative = require('./toNegative')\nconst parseVerb = require('./parse')\nconst isPlural = require('./isPlural')\nconst conjugate = require('./conjugate')\nconst toInfinitive = require('./toInfinitive')\n\nmodule.exports = {\n /** overload the original json with verb information */\n json: function(options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { text: true, normal: true, trim: true, terms: true }\n let res = []\n this.forEach(p => {\n let json = p.json(options)[0]\n let parsed = parseVerb(p)\n json.parts = {}\n Object.keys(parsed).forEach(k => {\n json.parts[k] = parsed[k].text('normal')\n })\n json.isNegative = p.has('#Negative')\n json.conjugations = conjugate(parsed, this.world)\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n\n /** grab the adverbs describing these verbs */\n adverbs: function() {\n let list = []\n // look at internal adverbs\n this.forEach(vb => {\n let advb = parseVerb(vb).adverb\n if (advb.found) {\n list = list.concat(advb.list)\n }\n })\n // look for leading adverbs\n let m = this.lookBehind('#Adverb$')\n if (m.found) {\n list = m.list.concat(list)\n }\n // look for trailing adverbs\n m = this.lookAhead('^#Adverb')\n if (m.found) {\n list = list.concat(m.list)\n }\n return this.buildFrom(list)\n },\n /**return verbs like 'we walk' and not 'spencer walks' */\n isPlural: function() {\n let list = []\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n if (isPlural(parsed, this.world) === true) {\n list.push(vb.list[0])\n }\n })\n return this.buildFrom(list)\n },\n /** return verbs like 'spencer walks' and not 'we walk' */\n isSingular: function() {\n let list = []\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n if (isPlural(parsed, this.world) === false) {\n list.push(vb.list[0])\n }\n })\n return this.buildFrom(list)\n },\n\n /** */\n conjugate: function() {\n let result = []\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let forms = conjugate(parsed, this.world)\n result.push(forms)\n })\n return result\n },\n /** */\n toPastTense: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let str = conjugate(parsed, this.world).PastTense\n if (str) {\n vb.replaceWith(str, false, true)\n // vb.tag('PastTense')\n }\n })\n return this\n },\n /** */\n toPresentTense: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let obj = conjugate(parsed, this.world)\n let str = obj.PresentTense\n // 'i look', not 'i looks'\n if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n str = obj.Infinitive\n }\n if (str) {\n vb.replaceWith(str, false, true)\n vb.tag('PresentTense')\n }\n })\n return this\n },\n /** */\n toFutureTense: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let str = conjugate(parsed, this.world).FutureTense\n if (str) {\n vb.replaceWith(str, false, true)\n vb.tag('FutureTense')\n }\n })\n return this\n },\n /** */\n toInfinitive: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let str = toInfinitive(parsed, this.world)\n if (str) {\n vb.replaceWith(str, false, true)\n vb.tag('Infinitive')\n }\n })\n return this\n },\n /** */\n toGerund: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let str = conjugate(parsed, this.world).Gerund\n if (str) {\n vb.replaceWith(str, false, true)\n vb.tag('Gerund')\n }\n })\n return this\n },\n\n /** return only verbs with 'not'*/\n isNegative: function() {\n return this.if('#Negative')\n },\n /** return only verbs without 'not'*/\n isPositive: function() {\n return this.ifNo('#Negative')\n },\n /** add a 'not' to these verbs */\n toNegative: function() {\n this.list.forEach(p => {\n let doc = this.buildFrom([p])\n let parsed = parseVerb(doc)\n toNegative(parsed, doc.world)\n })\n return this\n },\n /** remove 'not' from these verbs */\n toPositive: function() {\n let m = this.match('do not #Verb')\n if (m.found) {\n m.remove('do not')\n }\n return this.remove('#Negative')\n },\n}\n","const methods = require('./methods')\n\nconst addMethod = function(Doc) {\n /** */\n class Verbs extends Doc {}\n // add-in our methods\n Object.assign(Verbs.prototype, methods)\n\n // aliases\n Verbs.prototype.negate = Verbs.prototype.toNegative\n\n Doc.prototype.verbs = function(n) {\n let match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+')\n // try to ignore leading and trailing adverbs\n match = match.not('^#Adverb+')\n match = match.not('#Adverb+$')\n // handle commas:\n // don't split 'really, really'\n let keep = match.match('(#Adverb && @hasComma) #Adverb')\n // // but split the other commas\n let m = match.not(keep).splitAfter('@hasComma')\n // // combine them back together\n m = m.concat(keep)\n m.sort('index')\n\n //handle slashes?\n\n //ensure there's actually a verb\n m = m.if('#Verb')\n\n //grab (n)th result\n if (typeof n === 'number') {\n m = m.get(n)\n }\n let vb = new Verbs(m.list, this, this.world)\n return vb\n }\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** */\n class People extends Doc {\n // honorifics(){}\n // firstNames(){}\n // lastNames(){}\n // pronouns(){}\n // toPronoun(){}\n // fromPronoun(){}\n }\n\n Doc.prototype.people = function(n) {\n let match = this.splitAfter('@hasComma')\n match = match.match('#Person+')\n\n //grab (n)th result\n if (typeof n === 'number') {\n match = match.get(n)\n }\n return new People(match.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const subsets = require('./_simple')\nconst subclass = [\n require('./Abbreviations'),\n require('./Acronyms'),\n require('./Clauses'),\n require('./Contractions'),\n require('./Lists'),\n require('./Nouns'),\n require('./Parentheses'),\n require('./Possessives'),\n require('./Quotations'),\n require('./Verbs'),\n require('./People'),\n]\n\nconst extend = function(Doc) {\n // add basic methods\n Object.keys(subsets).forEach(k => (Doc.prototype[k] = subsets[k]))\n // add subclassed methods\n subclass.forEach(addFn => addFn(Doc))\n return Doc\n}\nmodule.exports = extend\n","const methods = {\n misc: require('./methods'),\n selections: require('../Subset/_simple'),\n}\nconst tagger = require('../02-tagger')\nconst tokenize = require('../01-tokenizer')\nconst extend = require('../Subset')\n\n/** a parsed text object */\nclass Doc {\n constructor(list, from, world) {\n this.list = list\n //quiet these properties in console.logs\n Object.defineProperty(this, 'from', {\n enumerable: false,\n value: from,\n writable: true,\n })\n //borrow some missing data from parent\n if (world === undefined && from !== undefined) {\n world = from.world\n }\n //'world' getter\n Object.defineProperty(this, 'world', {\n enumerable: false,\n value: world,\n // writable: true, //todo: add me?\n })\n //fast-scans for our data\n\n //'found' getter\n Object.defineProperty(this, 'found', {\n get: () => this.list.length > 0,\n })\n //'length' getter\n Object.defineProperty(this, 'length', {\n get: () => this.list.length,\n })\n // this is way easier than .constructor.name...\n Object.defineProperty(this, 'isA', {\n get: () => 'Doc',\n })\n }\n\n /** run part-of-speech tagger on all results*/\n tagger() {\n return tagger(this)\n }\n\n /** pool is stored on phrase objects */\n pool() {\n if (this.list.length > 0) {\n return this.list[0].pool\n }\n return this.all().list[0].pool\n }\n}\n\n/** create a new Document object */\nDoc.prototype.buildFrom = function(list) {\n list = list.map(p => p.clone(true))\n // new this.constructor()\n let doc = new Doc(list, this, this.world)\n return doc\n}\n\n/** create a new Document from plaintext. */\nDoc.prototype.fromText = function(str) {\n let list = tokenize.fromText(str, this.world, this.pool())\n return this.buildFrom(list)\n}\n\nObject.assign(Doc.prototype, methods.misc)\nObject.assign(Doc.prototype, methods.selections)\n\n//add sub-classes\nextend(Doc)\n\n//aliases\nconst aliases = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if',\n}\nObject.keys(aliases).forEach(k => (Doc.prototype[k] = Doc.prototype[aliases[k]]))\nmodule.exports = Doc\n","const tokenize = require('./01-tokenizer')\nconst version = require('./_version')\nconst World = require('./World/World')\nconst Doc = require('./Doc/Doc')\n\n//blast-out our word-lists, just once\nlet world = new World()\n\n/** parse and tag text into a compromise object */\nconst nlp = function(text = '', lexicon) {\n if (lexicon) {\n world.addWords(lexicon)\n }\n let list = tokenize.fromText(text, world)\n let doc = new Doc(list, null, world)\n doc.tagger()\n return doc\n}\n\n/** parse text into a compromise object, without running POS-tagging */\nnlp.tokenize = function(text = '', lexicon) {\n if (lexicon) {\n world.addWords(lexicon)\n }\n let list = tokenize.fromText(text, world)\n let doc = new Doc(list, null, world)\n return doc\n}\n\n/** mix in a compromise-plugin */\nnlp.extend = function(fn) {\n fn(Doc, world)\n return this\n}\n\n/** make a deep-copy of the library state */\nnlp.clone = function() {\n world = world.clone()\n return this\n}\n\n/** re-generate a Doc object from .json() results */\nnlp.load = function(json) {\n let list = tokenize.fromJSON(json, world)\n return new Doc(list, null, world)\n}\n\n/** log our decision-making for debugging */\nnlp.verbose = function(bool = true) {\n world.verbose(bool)\n return this\n}\n\n/** current version of the library */\nnlp.version = version\n// alias\nnlp.import = nlp.load\n\nmodule.exports = nlp\n"],"names":["chars","split","makeId","str","text","i","Math","floor","random","length","compact","a","b","c","d","e","f","g","h","I","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","unicode","Object","keys","forEach","killUnicode","join","periodAcronym","oneLetterAcronym","noPeriodAcronym","lowerCaseAcronym","isAcronym","test","hasSlash","clean","toLowerCase","trim","original","replace","reduced","startings","endings","hasApostrophe","minusNumber","parseTerm","pre","post","found","after","normalize","parsed","reduce","word","alias","titleCase","upperCase","exports","toUpperCase","isTitleCase","startQuote","endQuote","punct","indexOf","hasPost","hyphen","Boolean","implicit","wrapMatch","doesMatch","reg","index","id","anything","start","end","undefined","hasOwnProperty","soft","root","tag","tags","method","regex","choices","operator","every","some","result","negative","boring","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","hasSpace","isUpperCase","options","showPre","showPost","before","normal","titlecase","ProperNoun","Acronym","lowercase","acronyms","whitespace","last","punctuation","hasEllipses","abbreviations","Abbreviation","boringTags","Auxiliary","Possessive","rankTags","term","tagSet","sort","lineage","isA","jsonDefault","offset","bestTag","assign","require$$0","require$$1","require$$2","require$$3","require$$4","padEnd","width","toString","reason","log","console","arr","prototype","call","charAt","substr","addTag","tagset","fns","isVerbose","logTag","down","unTag","notA","addTags","isArray","logUntag","untagAll","canBe","enemies","add","Term","String","obj","prev","next","clone","methods","tagMethods","terms","pool","get","error","push","isShallow","buildFrom","newTerms","map","wantId","lastId","filter","trimEnd","isFirst","isLast","isFull","txt","textOut","lastTerm","endOfSentence","combinePost","match","addWhitespace","beforeTerms","newTerm","stitchIn","main","newPhrase","afterId","afterTerm","beforeId","unique","list","appendPhrase","doc","toStretch","hasId","docs","concat","parents","parent","shouldChange","joinPhrase","starterId","shrinkAll","deleteLength","phrase","find","deletePhrase","set","append","prepend","firstLength","tmp","findIndex","slice","res","json","regs","getAfter","all","getBefore","require$$5","failFast","optional","cache","words","getGreedy","until","count","max","min","greedyTo","nextReg","tryHere","captures","hasNeeds","remain","greedy","skipto","startAt","capture","isImplicit","hasMinMax","andSign","stripStart","stripEnd","stripBoth","parseToken","RegExp","Number","byParentheses","byWords","byArray","postProcess","tokens","captureArr","first","reverse","fromDoc","ids","syntax","input","matchAll","matchOne","minLength","matches","tryMatch","notMatch","ts","current","results","previous","can","Phrase","defineProperty","enumerable","writable","value","matchMethods","aliases","Pool","initSplit","hasSomething","hasEllipse","newLine","hasLetter","startWhitespace","naiive_split","lines","isSentence","abbrevs","lastWord","splitSentences","sentences","chunks","splits","ws","wordlike","isBoundary","naiiveSplit","isSlash","notWord","hasHyphen","combineSlashes","splitHyphens","hyphens","splitWords","carry","addLinks","fromText","splitTerms","phrases","parseTags","tagList","numList","parseInt","num","warn","fromJSON","JSON","parse","tagArr","entity","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","Value","Ordinal","Cardinal","RomanNumeral","TextValue","NumericValue","Money","Percent","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","inferIsA","len","inferNotA","key","inferLineage","validate","inferTags","inferColor","addIn","build","nouns","verbs","values","misc","seq","toAlphaCode","fromCharCode","fromAlphaCode","charCodeAt","encoding","symbols","nodes","exec","symCount","syms","indexFromRef","toArray","unpack","unpack_1","unpack_1$1","Array","addWord","lex","addMore","lexicon","hasCompound","plural","toPlural","conj","conjugate","adjectives","addIrregulars","irregulars","inf","forms","g8","vh1","q1","q2","q3","q4","addendum","alga","alumna","alumnus","analysis","antenna","appendix","avocado","axis","bacillus","barracks","beau","bus","cactus","chateau","child","circus","clothes","corpus","criterion","curriculum","database","deer","diagnosis","echo","embargo","epoch","foot","formula","fungus","genus","goose","halo","hippopotamus","larva","leaf","libretto","loaf","man","matrix","memorandum","modulus","mosquito","mouse","move","nebula","nucleus","octopus","opus","ovum","ox","parenthesis","person","phenomenon","prognosis","quiz","radius","referendum","rodeo","sex","shoe","sombrero","stimulus","stomach","syllabus","synopsis","tableau","thesis","thief","tooth","tornado","tuxedo","vertebra","mapping","prt","perf","pst","fut","pres","pluperf","conjugations","act","age","aim","arise","babysit","ban","be","beat","become","begin","being","bend","bet","bind","bite","bleed","blow","boil","brake","breed","bring","broadcast","budget","burn","burst","buy","choose","cling","come","compete","cost","creep","cut","deal","develop","die","dig","dive","draw","dream","drink","drive","drop","eat","edit","egg","fall","feed","feel","fight","flee","fling","fly","forbid","forget","forgive","free","freeze","give","go","grow","hang","have","hear","hide","hit","hold","hurt","ice","imply","is","keep","kneel","know","lay","lead","leap","leave","lend","lie","light","loose","lose","make","mean","meet","miss","pay","prove","puke","put","quit","read","ride","ring","rise","rub","run","say","seat","see","seek","sell","send","sew","shake","shave","shed","shine","shoot","show","shut","sing","sink","sit","ski","slay","sleep","slide","smash","sneak","speak","speed","spend","spill","spin","spit","spread","spring","stand","steal","stick","sting","stink","stream","strew","strike","suit","sware","swear","sweep","swim","swing","take","teach","tear","tell","think","thrive","tie","undergo","understand","upset","wait","wake","wear","weave","weep","win","wind","withdraw","wring","write","final","full","endsWith","repl","pr","pa","gr","ar","posMap","doTransform","pos","checkSuffix","suffixes","hasY","generic","genericFill","do_rules","dont_rules","nice","late","hard","inner","outer","far","worse","bad","good","big","large","to_superlative","grey","gray","green","yellow","red","well","sad","to_comparative","toSuperlative","toComparative","sup","comp","addE","trySuffix","rules","pluralize","invertObj","invert","to","guessVerb","guessTense","three","guess","two","one","irregs","rule","require$$6","World","defaultTags","unpackWords","lexData","getByTag","bool","addLex","inferTagSet","fn","taggers","plurals","irregular","compounds","postProcessors","stringify","w2","from","addParent","doShallow","wordCount","setRoot","eq","parseSyntax","not","has","lookAhead","lookBehind","befores","tagTerms","safe","why","setTag","detachParent","sub","findStart","lookups","tokenize","keepTags","keepCase","uncache","newPhrases","merge","tmpDoc","tagger","oldTags","tagSafe","replaceWith","arguments","arg","toRemove","showFull","trimPre","trimPost","jsonDefaults","termOffsets","elapsed","offsets","termList","frequency","freq","already","reset","cli","blue","magenta","cyan","black","tagString","debug","module","topk","counts","reduceTags","implied","phraseList","allTags","tagMap","alpha","left","right","byFreq","sortSequential","order","alphabetical","wordcount","seqNames","sequence","sequential","chron","chronological","isPunct","quotes","termArr","hasDash","quotations","adverbs","remove","defaults","emoji","contractions","parentheses","possessives","honorifics","medium","heavy","strip","contraction","expand","unwrap","possessive","splitOn","foundEm","parts","splitAfter","splitBefore","segment","eachTerm","toTitleCase","dehyphenate","toQuotations","removed","increase","postPunct","setContraction","suffix","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","emojis","atmentions","atMentions","phoneNumbers","places","organizations","clauses","entities","yup","people","ignore","things","topics","tryMultiple","checkLexicon","foundWords","apostrophes","oneLetterWord","A","checkPunctuation","endChar","romanNumeral","romanNumValid","checkRegex","Adj","Inf","Pres","Sing","Past","Exp","Last","Avb","Plrl","Vb","ea","ia","ic","ly","que","lar","ffy","nny","rmy","azy","oid","mum","ous","sis","rol","ize","ify","zes","nes","ing","teen","tors","amed","ched","ends","oses","fies","ects","nded","cede","tage","gate","vice","tion","cted","ette","llen","ried","gone","made","fore","less","ices","ions","ints","aped","lked","ould","tive","sson","czyk","chuk","enko","akis","nsen","fully","where","wards","urned","tized","eased","ances","tures","ports","ettes","ities","rough","ology","bound","tieth","ishes","tches","nssen","marek","keeper","logist","auskas","teenth","sdottir","opoulos","endRegexs","char","knownSuffixes","suffixMap","emojiReg","isCommaEmoji","raw","isEmoticon","emoticon","tagEmoji","steps","afterThisWord","it","there","because","but","who","his","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","beforeThisPos","afterThisPos","afterKeys","markov","beforeKeys","checkNeighbours","isKnown","foundTag","nextTerm","hasNumber","checkCase","hasPrefix","prefix","checkPrefix","stem","isPlural","isSingular","noPlurals","notPlural","notSingular","checkPlural","orgWords","maybeOrg","Comma","tagOrgs","step","neighbours","fallbacks","hasNegative","wont","cant","cannot","dont","dun","checkNegative","easy","ll","ve","re","checkApostrophe","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","doAint","noun","checkIrregulars","hasApostropheS","blacklist","that","isPossessive","twoTerm","isHas","checkPossessive","hasPerfect","checkPerfect","isRange","checkRange","isNumber","createPhrase","firstTerm","miscCorrection","so","which","like","notIf","title","hyph","place","fixThe","det","adj","an","ifNo","fixNouns","org","acronym","poss","maybeNoun","maybeVerb","maybeAdj","maybeDate","maybePlace","fixPerson","hon","ambigNoun","ambigVerb","ambigAdj","ambigDate","ambigPlace","al","firstName","lastName","advb","fixVerb","vb","modal","copula","gerund","willBe","fixAdjective","units","fixValue","val","mult","preps","fixDates","verb","march","sun","sat","month","corrections","fixDeterminer","fixMisc","init","addMethod","Doc","Abbreviations","stripPeriods","Acronyms","commas","conjunctions","condition","tooLong","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","beforeLast","conjunction","hasOxford","Lists","addPunctuation","items","lists","nounList","adjList","verbList","noPlural","hasPlural","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","endS","exceptions","he","she","they","we","her","their","our","my","your","toPossessive","article","getArticle","Nouns","open","close","Parentheses","Possessives","pairs","hasOpen","Quotations","want","findNoun","auxiliary","toNegative","parseVerb","adverb","particle","adverbAfter","toBe","isI","isNegative","out","infinitive","toPastTense","toPresentTense","toFutureTense","toGerund","isPositive","toPositive","Verbs","negate","People","subclass","extend","subsets","addFn","selections","untag","and","onlyIf","nlp","addWords","load","verbose","version"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;EACA,IAAMA,KAAK,GAAG,iEAAiEC,KAAjE,CAAuE,EAAvE,CAAd;;EAGA,SAASC,MAAT,CAAgBC,GAAhB,EAAqB;EACnBA,EAAAA,GAAG,GAAGA,GAAG,IAAI,GAAb;EACA,MAAIC,IAAI,GAAGD,GAAG,GAAG,GAAjB;;EACA,OAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;EAC1BD,IAAAA,IAAI,IAAIJ,KAAK,CAACM,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBR,KAAK,CAACS,MAAjC,CAAD,CAAb;EACD;;EACD,SAAOL,IAAP;EACD;;EAED,OAAc,GAAGF,MAAjB;;ECbA;;;;EAIA,IAAIQ,OAAO,GAAG;EACZ,OAAK,GADO;EAEZ,OAAK,IAFO;EAGZ,OAAK,OAHO;EAIZ,OAAK,MAJO;EAKZ,OAAK,IALO;EAMZC,EAAAA,CAAC,EAAE,uDANS;EAOZC,EAAAA,CAAC,EAAE,0BAPS;EAQZC,EAAAA,CAAC,EAAE,iCARS;EASZC,EAAAA,CAAC,EAAE,aATS;EAUZC,EAAAA,CAAC,EAAE,6DAVS;EAWZC,EAAAA,CAAC,EAAE,WAXS;EAYZC,EAAAA,CAAC,EAAE,iBAZS;EAaZC,EAAAA,CAAC,EAAE,2BAbS;EAcZC,EAAAA,CAAC,EAAE,MAdS;EAeZd,EAAAA,CAAC,EAAE,gCAfS;EAgBZe,EAAAA,CAAC,EAAE,WAhBS;EAiBZC,EAAAA,CAAC,EAAE,yBAjBS;EAkBZC,EAAAA,CAAC,EAAE,sBAlBS;EAmBZC,EAAAA,CAAC,EAAE,SAnBS;EAoBZC,EAAAA,CAAC,EAAE,2CApBS;EAqBZC,EAAAA,CAAC,EAAE,oEArBS;EAsBZC,EAAAA,CAAC,EAAE,cAtBS;EAuBZC,EAAAA,CAAC,EAAE,IAvBS;EAwBZC,EAAAA,CAAC,EAAE,uBAxBS;EAyBZC,EAAAA,CAAC,EAAE,iBAzBS;EA0BZC,EAAAA,CAAC,EAAE,sBA1BS;EA2BZC,EAAAA,CAAC,EAAE,+CA3BS;EA4BZC,EAAAA,CAAC,EAAE,OA5BS;EA6BZC,EAAAA,CAAC,EAAE,gBA7BS;EA8BZC,EAAAA,CAAC,EAAE,eA9BS;EA+BZC,EAAAA,CAAC,EAAE,uCA/BS;EAgCZC,EAAAA,CAAC,EAAE;EAhCS,CAAd;;EAmCA,IAAIC,OAAO,GAAG,EAAd;EACAC,MAAM,CAACC,IAAP,CAAY7B,OAAZ,EAAqB8B,OAArB,CAA6B,UAASnB,CAAT,EAAY;EACvCX,EAAAA,OAAO,CAACW,CAAD,CAAP,CAAWpB,KAAX,CAAiB,EAAjB,EAAqBuC,OAArB,CAA6B,UAASX,CAAT,EAAY;EACvCQ,IAAAA,OAAO,CAACR,CAAD,CAAP,GAAaR,CAAb;EACD,GAFD;EAGD,CAJD;;EAMA,IAAMoB,WAAW,GAAG,SAAdA,WAAc,CAAAtC,GAAG,EAAI;EACzB,MAAIH,KAAK,GAAGG,GAAG,CAACF,KAAJ,CAAU,EAAV,CAAZ;EACAD,EAAAA,KAAK,CAACwC,OAAN,CAAc,UAACX,CAAD,EAAIxB,CAAJ,EAAU;EACtB,QAAIgC,OAAO,CAACR,CAAD,CAAX,EAAgB;EACd7B,MAAAA,KAAK,CAACK,CAAD,CAAL,GAAWgC,OAAO,CAACR,CAAD,CAAlB;EACD;EACF,GAJD;EAKA,SAAO7B,KAAK,CAAC0C,IAAN,CAAW,EAAX,CAAP;EACD,CARD;;EASA,aAAc,GAAGD,WAAjB;;ECvDA,IAAME,aAAa,GAAG,qBAAtB;EACA,IAAMC,gBAAgB,GAAG,aAAzB;EACA,IAAMC,eAAe,GAAG,mBAAxB;EACA,IAAMC,gBAAgB,GAAG,wBAAzB;;EAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAS5C,GAAT,EAAc;;EAE9B,MAAIwC,aAAa,CAACK,IAAd,CAAmB7C,GAAnB,MAA4B,IAAhC,EAAsC;EACpC,WAAO,IAAP;EACD,GAJ6B;;;EAM9B,MAAI2C,gBAAgB,CAACE,IAAjB,CAAsB7C,GAAtB,MAA+B,IAAnC,EAAyC;EACvC,WAAO,IAAP;EACD,GAR6B;;;EAU9B,MAAIyC,gBAAgB,CAACI,IAAjB,CAAsB7C,GAAtB,MAA+B,IAAnC,EAAyC;EACvC,WAAO,IAAP;EACD,GAZ6B;;;EAc9B,MAAI0C,eAAe,CAACG,IAAhB,CAAqB7C,GAArB,MAA8B,IAAlC,EAAwC;EACtC,WAAO,IAAP;EACD;;EACD,SAAO,KAAP;EACD,CAlBD;;EAmBA,eAAc,GAAG4C,SAAjB;;ECtBA,IAAME,QAAQ,GAAG,4CAAjB;;;EAGA,IAAMC,KAAK,GAAG,SAARA,KAAQ,CAAS/C,GAAT,EAAc;EAC1BA,EAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;EACAA,EAAAA,GAAG,GAAGA,GAAG,CAACgD,WAAJ,EAAN;EACAhD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,IAAJ,EAAN;EACA,MAAIC,QAAQ,GAAGlD,GAAf,CAJ0B;;EAM1BA,EAAAA,GAAG,GAAGsC,SAAW,CAACtC,GAAD,CAAjB,CAN0B;;EAQ1B,MAAI8C,QAAQ,CAACD,IAAT,CAAc7C,GAAd,MAAuB,IAA3B,EAAiC;EAC/BA,IAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,MAAZ,EAAoB,EAApB,CAAN;EACD,GAVyB;;;EAY1BnD,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,OAAZ,EAAqB,EAArB,CAAN,CAZ0B;;EAc1BnD,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,WAAZ,EAAyB,EAAzB,CAAN,CAd0B;;EAgB1BnD,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,wEAAZ,EAAsF,GAAtF,CAAN,CAhB0B;;EAkB1BnD,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CACJ,sGADI,EAEJ,GAFI,CAAN,CAlB0B;;EAuB1BnD,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,SAAZ,EAAuB,KAAvB,CAAN,CAvB0B;;EAyB1BnD,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,SAAZ,EAAuB,GAAvB,CAAN,CAzB0B;;EA2B1B,MAAI,uBAAuBN,IAAvB,CAA4B7C,GAA5B,MAAqC,IAAzC,EAA+C;EAC7CA,IAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,SAAZ,EAAuB,KAAvB,CAAN;EACD,GA7ByB;;;EA+B1B,MAAI,sBAAsBN,IAAtB,CAA2B7C,GAA3B,MAAoC,IAAxC,EAA8C;EAC5CA,IAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,GAAZ,EAAiB,EAAjB,CAAN;EACD,GAjCyB;;;EAmC1B,MAAI,QAAQN,IAAR,CAAa7C,GAAb,MAAsB,KAA1B,EAAiC;EAC/BA,IAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,UAAZ,EAAwB,EAAxB,CAAN;EACAnD,IAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,kBAAZ,EAAgC,EAAhC,CAAN;EACAnD,IAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,WAAZ,EAAyB,EAAzB,CAAN;EACD,GAvCyB;;;EAyC1BnD,EAAAA,GAAG,GAAGA,GAAG,CAACiD,IAAJ,EAAN,CAzC0B;;EA2C1B,MAAIjD,GAAG,KAAK,EAAZ,EAAgB;EACdA,IAAAA,GAAG,GAAGkD,QAAN;EACD,GA7CyB;;;EA+C1B,MAAIN,WAAS,CAAC5C,GAAD,CAAb,EAAoB;EAClBA,IAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;EACD,GAjDyB;;;EAmD1BnD,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,kBAAZ,EAAgC,MAAhC,CAAN;EACA,SAAOnD,GAAP;EACD,CArDD;;EAuDA,WAAc,GAAG+C,KAAjB;;EC5DA;EACA,IAAMK,OAAO,GAAG,SAAVA,OAAU,CAASpD,GAAT,EAAc;;EAE5BA,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,QAAZ,EAAsB,EAAtB,CAAN;EACAnD,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,QAAZ,EAAsB,GAAtB,CAAN;EACA,SAAOnD,GAAP;EACD,CALD;;EAMA,UAAc,GAAGoD,OAAjB;;;;;ECDA,IAAMC,SAAS,GAAG,wNAAlB;EACA,IAAMC,OAAO,GAAG,yNAAhB;;EAGA,IAAMR,UAAQ,GAAG,IAAjB;EACA,IAAMS,aAAa,GAAG,MAAtB;EACA,IAAMC,WAAW,GAAG,cAApB;;;;;EAKA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAAzD,GAAG,EAAI;EACvB,MAAIkD,QAAQ,GAAGlD,GAAf;EACA,MAAI0D,GAAG,GAAG,EAAV;EACA,MAAIC,IAAI,GAAG,EAAX;EACA3D,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAYE,SAAZ,EAAuB,UAAAO,KAAK,EAAI;EACpCF,IAAAA,GAAG,GAAGE,KAAN,CADoC;;EAGpC,QAAI,CAACF,GAAG,KAAK,GAAR,IAAeA,GAAG,KAAK,GAAvB,IAA8BA,GAAG,KAAK,GAAvC,KAA+CF,WAAW,CAACX,IAAZ,CAAiB7C,GAAjB,CAAnD,EAA0E;EACxE0D,MAAAA,GAAG,GAAG,EAAN;EACA,aAAOE,KAAP;EACD;;EACD,WAAO,EAAP;EACD,GARK,CAAN;EASA5D,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAYG,OAAZ,EAAqB,UAAAM,KAAK,EAAI;EAClCD,IAAAA,IAAI,GAAGC,KAAP,CADkC;;EAGlC,QAAIL,aAAa,CAACV,IAAd,CAAmBe,KAAnB,KAA6B,YAAYf,IAAZ,CAAiBK,QAAjB,CAA7B,IAA2DK,aAAa,CAACV,IAAd,CAAmBa,GAAnB,MAA4B,KAA3F,EAAkG;EAChGC,MAAAA,IAAI,GAAGA,IAAI,CAACR,OAAL,CAAaI,aAAb,EAA4B,EAA5B,CAAP;EACA;EACD;;EACD,WAAO,EAAP;EACD,GARK,CAAN,CAbuB;;EAuBvB,MAAIvD,GAAG,KAAK,EAAZ,EAAgB;;EAEdkD,IAAAA,QAAQ,GAAGA,QAAQ,CAACC,OAAT,CAAiB,KAAjB,EAAwB,UAAAU,KAAK,EAAI;EAC1CF,MAAAA,IAAI,GAAGE,KAAK,IAAI,EAAhB;EACA,aAAO,EAAP;EACD,KAHU,CAAX;EAIA7D,IAAAA,GAAG,GAAGkD,QAAN;EACAQ,IAAAA,GAAG,GAAG,EAAN;EACAC,IAAAA,IAAI,GAAGA,IAAP;EACD,GAhCsB;;;EAmCvB,MAAIZ,KAAK,GAAGe,OAAS,CAAC9D,GAAD,CAArB;EACA,MAAM+D,MAAM,GAAG;EACb9D,IAAAA,IAAI,EAAED,GADO;EAEb+C,IAAAA,KAAK,EAAEA,KAFM;EAGbK,IAAAA,OAAO,EAAEY,MAAM,CAACjB,KAAD,CAHF;EAIbW,IAAAA,GAAG,EAAEA,GAJQ;EAKbC,IAAAA,IAAI,EAAEA;EALO,GAAf,CApCuB;;EA4CvB,MAAIb,UAAQ,CAACD,IAAT,CAAc7C,GAAd,CAAJ,EAAwB;EACtBA,IAAAA,GAAG,CAACF,KAAJ,CAAUgD,UAAV,EAAoBT,OAApB,CAA4B,UAAA4B,IAAI,EAAI;EAClCF,MAAAA,MAAM,CAACG,KAAP,GAAeH,MAAM,CAACG,KAAP,IAAgB,EAA/B;EACAH,MAAAA,MAAM,CAACG,KAAP,CAAaD,IAAI,CAAChB,IAAL,EAAb,IAA4B,IAA5B;EACD,KAHD;EAID;;EACD,SAAOc,MAAP;EACD,CAnDD;;EAoDA,SAAc,GAAGN,SAAjB;;;;;;;ECrEA,MAAMU,SAAS,GAAG,2BAAlB;EACA,MAAMC,SAAS,GAAG,YAAlB;;;EAGAC,EAAAA,mBAAA,GAAsB,YAAW;EAC/B,SAAKpE,IAAL,GAAY,KAAKA,IAAL,CAAUqE,WAAV,EAAZ;EACA,WAAO,IAAP;EACD,GAHD;;;;EAMAD,EAAAA,mBAAA,GAAsB,YAAW;EAC/B,SAAKpE,IAAL,GAAY,KAAKA,IAAL,CAAU+C,WAAV,EAAZ;EACA,WAAO,IAAP;EACD,GAHD;;;;;;EAQAqB,EAAAA,mBAAA,GAAsB,YAAW;EAC/B,SAAKpE,IAAL,GAAY,KAAKA,IAAL,CAAUkD,OAAV,CAAkB,uBAAlB,EAA2C,UAAApB,CAAC;EAAA,aAAIA,CAAC,CAACuC,WAAF,EAAJ;EAAA,KAA5C,CAAZ,CAD+B;;EAE/B,WAAO,IAAP;EACD,GAHD;;;;EAMAD,EAAAA,mBAAA,GAAsB,YAAW;EAC/B,WAAOD,SAAS,CAACvB,IAAV,CAAe,KAAK5C,IAApB,CAAP;EACD,GAFD;;;;EAIAoE,EAAAA,mBAAA,GAAsB,YAAW;EAC/B,WAAOF,SAAS,CAACtB,IAAV,CAAe,KAAK5C,IAApB,CAAP;EACD,GAFD;;EAGAoE,EAAAA,iBAAA,GAAoBA,OAAO,CAACE,WAA5B;;;;;;;;;EC/BA;;EAEA,IAAMC,UAAU,GACd,iHADF;EAEA,IAAMC,QAAQ,GACZ,oHADF;;;EAIA,WAAe,GAAG,gBAAA,CAASC,KAAT,EAAgB;EAChC,SAAO,KAAKf,IAAL,CAAUgB,OAAV,CAAkBD,KAAlB,MAA6B,CAAC,CAArC;EACD,CAFD;;;;EAIA,UAAc,GAAG,eAAA,CAASA,KAAT,EAAgB;EAC/B,SAAO,KAAKhB,GAAL,CAASiB,OAAT,CAAiBD,KAAjB,MAA4B,CAAC,CAApC;EACD,CAFD;;;;EAKA,YAAgB,GAAG,iBAAA,GAAW;EAC5B,SAAOF,UAAU,CAAC3B,IAAX,CAAgB,KAAKa,GAArB,KAA6Be,QAAQ,CAAC5B,IAAT,CAAc,KAAKc,IAAnB,CAApC;EACD,CAFD;;;;EAKA,YAAgB,GAAG,iBAAA,GAAW;EAC5B,SAAO,KAAKiB,OAAL,CAAa,GAAb,CAAP;EACD,CAFD;;;;EAKA,aAAiB,GAAG,kBAAA,GAAW;EAC7B,SAAO,KAAKA,OAAL,CAAa,GAAb,MAAsB,IAAtB,IAA8B,KAAKA,OAAL,CAAa,KAAb,MAAwB,KAA7D;EACD,CAFD;;;;EAKA,kBAAsB,GAAG,uBAAA,GAAW;EAClC,SAAO,KAAKA,OAAL,CAAa,GAAb,CAAP;EACD,CAFD;;;;EAKA,mBAAuB,GAAG,wBAAA,GAAW;EACnC,SAAO,KAAKA,OAAL,CAAa,GAAb,KAAqB,KAAKA,OAAL,CAAa,GAAb,CAA5B;EACD,CAFD;;;;EAKA,eAAmB,GAAG,oBAAA,GAAW;EAC/B,SAAO,KAAKA,OAAL,CAAa,IAAb,KAAsB,KAAKA,OAAL,CAAa,GAAb,CAA7B;EACD,CAFD;;;;EAKA,gBAAoB,GAAG,qBAAA,GAAW;EAChC,SAAO,KAAKA,OAAL,CAAa,GAAb,CAAP;EACD,CAFD;;;;EAKA,cAAgB,GAAG,iBAAA,GAAW;EAC5B,SAAO,KAAK/B,IAAL,CAAU,KAAK5C,IAAf,CAAP;EACD,CAFD;;;;EAKA,aAAiB,GAAG,kBAAA,GAAW;EAC7B,MAAM4E,MAAM,GAAG,SAAf;EACA,SAAOA,MAAM,CAAChC,IAAP,CAAY,KAAKc,IAAjB,KAA0BkB,MAAM,CAAChC,IAAP,CAAY,KAAKa,GAAjB,CAAjC;EACD,CAHD;;;;EAKA,WAAe,GAAG,gBAAA,GAAW;EAC3B,MAAMmB,MAAM,GAAG,WAAf;EACA,SAAOA,MAAM,CAAChC,IAAP,CAAY,KAAKc,IAAjB,KAA0BkB,MAAM,CAAChC,IAAP,CAAY,KAAKa,GAAjB,CAAjC;EACD,CAHD;;;;EAMA,kBAAsB,GAAG,uBAAA,GAAW;EAClC,SAAOoB,OAAO,CAAC,KAAKC,QAAN,CAAd;EACD,CAFD;;;;EAKA,kBAAsB,GAAG,uBAAA,CAASL,KAAT,EAAgB;;EAEvC,MAAIA,KAAK,KAAK,GAAV,IAAiBA,KAAK,KAAK,GAA/B,EAAoC;EAClC,SAAKf,IAAL,GAAY,KAAKA,IAAL,CAAUR,OAAV,CAAkBuB,KAAlB,EAAyB,EAAzB,CAAZ;EACD;;EACD,OAAKf,IAAL,GAAYe,KAAK,GAAG,KAAKf,IAAzB;EACA,SAAO,IAAP;EACD,CAPD;;;;;;;;;;;;;;;;;;;ECzEA;EACA,IAAIqB,SAAS,GAAG,qBAAW,EAA3B;;;;EAGA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAStD,CAAT,EAAYuD,GAAZ,EAAiBC,KAAjB,EAAwB7E,MAAxB,EAAgC;;EAEhD,MAAI4E,GAAG,CAACE,EAAJ,KAAWzD,CAAC,CAACyD,EAAjB,EAAqB;EACnB,WAAO,IAAP;EACD,GAJ+C;;;EAMhD,MAAIF,GAAG,CAACG,QAAJ,KAAiB,IAArB,EAA2B;EACzB,WAAO,IAAP;EACD,GAR+C;;;EAUhD,MAAIH,GAAG,CAACI,KAAJ,KAAc,IAAd,IAAsBH,KAAK,KAAK,CAApC,EAAuC;EACrC,WAAO,KAAP;EACD,GAZ+C;;;EAchD,MAAID,GAAG,CAACK,GAAJ,KAAY,IAAZ,IAAoBJ,KAAK,KAAK7E,MAAM,GAAG,CAA3C,EAA8C;EAC5C,WAAO,KAAP;EACD,GAhB+C;;;EAkBhD,MAAI4E,GAAG,CAACjB,IAAJ,KAAauB,SAAjB,EAA4B;;EAE1B,QAAI7D,CAAC,CAACoD,QAAF,KAAe,IAAf,IAAuBpD,CAAC,CAACoD,QAAF,KAAeG,GAAG,CAACjB,IAA9C,EAAoD;EAClD,aAAO,IAAP;EACD,KAJyB;;;EAM1B,QAAItC,CAAC,CAACuC,KAAF,KAAYsB,SAAZ,IAAyB7D,CAAC,CAACuC,KAAF,CAAQuB,cAAR,CAAuBP,GAAG,CAACjB,IAA3B,CAA7B,EAA+D;EAC7D,aAAO,IAAP;EACD,KARyB;;;EAU1B,QAAIiB,GAAG,CAACQ,IAAJ,KAAa,IAAb,IAAqBR,GAAG,CAACjB,IAAJ,KAAatC,CAAC,CAACgE,IAAxC,EAA8C;EAC5C,aAAO,IAAP;EACD,KAZyB;;;EAc1B,WAAOT,GAAG,CAACjB,IAAJ,KAAatC,CAAC,CAACoB,KAAf,IAAwBmC,GAAG,CAACjB,IAAJ,KAAatC,CAAC,CAAC1B,IAAvC,IAA+CiF,GAAG,CAACjB,IAAJ,KAAatC,CAAC,CAACyB,OAArE;EACD,GAjC+C;;;EAmChD,MAAI8B,GAAG,CAACU,GAAJ,KAAYJ,SAAhB,EAA2B;EACzB,WAAO7D,CAAC,CAACkE,IAAF,CAAOX,GAAG,CAACU,GAAX,MAAoB,IAA3B;EACD,GArC+C;;;EAuChD,MAAIV,GAAG,CAACY,MAAJ,KAAeN,SAAnB,EAA8B;EAC5B,QAAI,OAAO7D,CAAC,CAACuD,GAAG,CAACY,MAAL,CAAR,KAAyB,UAAzB,IAAuCnE,CAAC,CAACuD,GAAG,CAACY,MAAL,CAAD,OAAoB,IAA/D,EAAqE;EACnE,aAAO,IAAP;EACD;;EACD,WAAO,KAAP;EACD,GA5C+C;;;EA8ChD,MAAIZ,GAAG,CAACa,KAAJ,KAAcP,SAAlB,EAA6B;EAC3B,WAAON,GAAG,CAACa,KAAJ,CAAUlD,IAAV,CAAelB,CAAC,CAACoB,KAAjB,CAAP;EACD,GAhD+C;;;EAkDhD,MAAImC,GAAG,CAACc,OAAJ,KAAgBR,SAApB,EAA+B;;EAE7B,QAAIN,GAAG,CAACe,QAAJ,KAAiB,KAArB,EAA4B;;EAE1B,aAAOf,GAAG,CAACc,OAAJ,CAAYE,KAAZ,CAAkB,UAAAzE,CAAC;EAAA,eAAIuD,SAAS,CAACrD,CAAD,EAAIF,CAAJ,EAAO0D,KAAP,EAAc7E,MAAd,CAAb;EAAA,OAAnB,CAAP;EACD,KAL4B;;;EAO7B,WAAO4E,GAAG,CAACc,OAAJ,CAAYG,IAAZ,CAAiB,UAAA1E,CAAC;EAAA,aAAIuD,SAAS,CAACrD,CAAD,EAAIF,CAAJ,EAAO0D,KAAP,EAAc7E,MAAd,CAAb;EAAA,KAAlB,CAAP;EACD;;EACD,SAAO,KAAP;EACD,CA5DD;;;EA+DA0E,SAAS,GAAG,mBAASrD,CAAT,EAAYuD,GAAZ,EAAiBC,KAAjB,EAAwB7E,MAAxB,EAAgC;EAC1C,MAAI8F,MAAM,GAAGnB,SAAS,CAACtD,CAAD,EAAIuD,GAAJ,EAASC,KAAT,EAAgB7E,MAAhB,CAAtB;;EACA,MAAI4E,GAAG,CAACmB,QAAJ,KAAiB,IAArB,EAA2B;EACzB,WAAO,CAACD,MAAR;EACD;;EACD,SAAOA,MAAP;EACD,CAND;;EAQA,cAAc,GAAGpB,SAAjB;;ECvEA,IAAMsB,MAAM,GAAG,EAAf;;;EAGA,eAAiB,GAAG,oBAAA,CAASpB,GAAT,EAAcC,KAAd,EAAqB7E,MAArB,EAA6B;EAC/C,SAAO2E,UAAS,CAAC,IAAD,EAAOC,GAAP,EAAYC,KAAZ,EAAmB7E,MAAnB,CAAhB;EACD,CAFD;;;;EAKA,iBAAiB,GAAG,sBAAA,GAAW;EAC7B,SAAOsC,WAAS,CAAC,KAAK3C,IAAN,CAAhB;EACD,CAFD;;;;EAKA,cAAkB,GAAG,mBAAA,GAAW;EAC9B,SAAO,KAAKA,IAAL,KAAc,EAAd,IAAoB6E,OAAO,CAAC,KAAKC,QAAN,CAAlC;EACD,CAFD;;;;EAKA,WAAe,GAAG,gBAAA,GAAW;EAC3B,SAAO5C,MAAM,CAACC,IAAP,CAAY,KAAKyD,IAAjB,EAAuBM,IAAvB,CAA4B,UAAAxE,CAAC;EAAA,WAAI2E,MAAM,CAAC3E,CAAD,CAAN,KAAc,IAAlB;EAAA,GAA7B,CAAP;EACD,CAFD;;;;EAKA,WAAe,GAAG,gBAAA,CAAS4E,KAAT,EAAgB;EAChC,MAAIC,SAAS,GAAGD,KAAK,CAACE,UAAtB;EACA,MAAIzG,GAAG,GAAG,KAAK+E,QAAL,IAAiB,KAAKhC,KAAhC;;EACA,MAAI,KAAK8C,IAAL,CAAUa,MAAd,EAAsB;EACpB1G,IAAAA,GAAG,GAAGwG,SAAS,CAACG,UAAV,CAAqB3G,GAArB,EAA0BuG,KAA1B,CAAN;EACD;;EACD,MAAI,KAAKV,IAAL,CAAUe,IAAV,IAAkB,CAAC,KAAKf,IAAL,CAAUgB,QAA7B,IAAyC,CAAC,KAAKhB,IAAL,CAAUiB,UAAxD,EAAoE;EAClE,QAAIC,KAAK,GAAG,IAAZ;;EACA,QAAI,KAAKlB,IAAL,CAAUmB,SAAd,EAAyB;EACvBD,MAAAA,KAAK,GAAG,WAAR;EACD,KAFD,MAEO,IAAI,KAAKlB,IAAL,CAAUoB,MAAd,EAAsB;EAC3BF,MAAAA,KAAK,GAAG,QAAR;EACD,KAFM,MAEA,IAAI,KAAKlB,IAAL,CAAUqB,YAAd,EAA4B;EACjCH,MAAAA,KAAK,GAAG,cAAR;EACD,KAFM,MAEA,IAAI,KAAKlB,IAAL,CAAUsB,UAAd,EAA0B;EAC/BJ,MAAAA,KAAK,GAAG,YAAR;EACD,KAFM,MAEA,IAAI,KAAKlB,IAAL,CAAUuB,KAAd,EAAqB;EAC1BL,MAAAA,KAAK,GAAG,OAAR;EACD;;EACD/G,IAAAA,GAAG,GAAGwG,SAAS,CAACa,YAAV,CAAuBrH,GAAvB,EAA4BuG,KAA5B,EAAmCQ,KAAnC,CAAN;EACD;;EACD,OAAKpB,IAAL,GAAY3F,GAAZ;EACD,CAtBD;;;;;;;;;;EC1BA,IAAMsH,QAAQ,GAAG,OAAjB;EACA,IAAMC,WAAW,GAAG,WAApB;;;;;;EAOA,WAAe,GAAG,gBAAA,CAASC,OAAT,EAAkBC,OAAlB,EAA2BC,QAA3B,EAAqC;EACrDF,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACA,MAAIvD,IAAI,GAAG,KAAKhE,IAAhB;EACA,MAAI0H,MAAM,GAAG,KAAKjE,GAAlB;EACA,MAAIG,KAAK,GAAG,KAAKF,IAAjB,CAJqD;;EAOrD,MAAI6D,OAAO,CAACpE,OAAR,KAAoB,IAAxB,EAA8B;EAC5Ba,IAAAA,IAAI,GAAG,KAAKb,OAAL,IAAgB,EAAvB;EACD;;EACD,MAAIoE,OAAO,CAAC7B,IAAR,KAAiB,IAArB,EAA2B;EACzB1B,IAAAA,IAAI,GAAG,KAAK0B,IAAL,IAAa,EAApB;EACD;;EACD,MAAI6B,OAAO,CAACzC,QAAR,KAAqB,IAArB,IAA6B,KAAKA,QAAtC,EAAgD;EAC9Cd,IAAAA,IAAI,GAAG,KAAKc,QAAL,IAAiB,EAAxB;EACD;;EACD,MAAIyC,OAAO,CAACI,MAAR,KAAmB,IAAvB,EAA6B;EAC3B3D,IAAAA,IAAI,GAAG,KAAKlB,KAAL,IAAc,KAAK9C,IAAnB,IAA2B,EAAlC;EACD;;EACD,MAAIuH,OAAO,CAAC7B,IAAR,KAAiB,IAArB,EAA2B;EACzB1B,IAAAA,IAAI,GAAG,KAAK0B,IAAL,IAAa,KAAKvC,OAAlB,IAA6B,EAApC;EACD;;EACD,MAAIoE,OAAO,CAACtF,OAAR,KAAoB,IAAxB,EAA8B;EAC5B+B,IAAAA,IAAI,GAAG3B,SAAW,CAAC2B,IAAD,CAAlB;EACD,GAxBoD;;;EA0BrD,MAAIuD,OAAO,CAACK,SAAR,KAAsB,IAA1B,EAAgC;EAC9B,QAAI,KAAKhC,IAAL,CAAUiC,UAAV,IAAwB,CAAC,KAAK3D,SAAL,EAA7B,EAA+C,CAA/C,MAEO,IAAI,KAAK0B,IAAL,CAAUkC,OAAd,EAAuB;EAC5B9D,MAAAA,IAAI,GAAGA,IAAI,CAACK,WAAL,EAAP,CAD4B;EAE7B,KAFM,MAEA,IAAIiD,WAAW,CAAC1E,IAAZ,CAAiBoB,IAAjB,KAA0B,CAAC,KAAK4B,IAAL,CAAUkC,OAAzC,EAAkD;;EAEvD9D,MAAAA,IAAI,GAAGA,IAAI,CAACjB,WAAL,EAAP;EACD;EACF;;EACD,MAAIwE,OAAO,CAACQ,SAAR,KAAsB,IAA1B,EAAgC;EAC9B/D,IAAAA,IAAI,GAAGA,IAAI,CAACjB,WAAL,EAAP;EACD,GAtCoD;;;EAwCrD,MAAIwE,OAAO,CAACS,QAAR,KAAqB,IAArB,IAA6B,KAAKpC,IAAL,CAAUkC,OAA3C,EAAoD;EAClD9D,IAAAA,IAAI,GAAGA,IAAI,CAACd,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;EACD,GA1CoD;;;EA6CrD,MAAIqE,OAAO,CAACU,UAAR,KAAuB,IAAvB,IAA+BV,OAAO,CAAC7B,IAA3C,EAAiD;EAC/CgC,IAAAA,MAAM,GAAG,EAAT;EACA9D,IAAAA,KAAK,GAAG,GAAR;;EACA,QAAI,CAACyD,QAAQ,CAACzE,IAAT,CAAc,KAAKc,IAAnB,MAA6B,KAA7B,IAAsC6D,OAAO,CAACW,IAA/C,KAAwD,CAAC,KAAKpD,QAAlE,EAA4E;EAC1ElB,MAAAA,KAAK,GAAG,EAAR;EACD;EACF;;EACD,MAAI2D,OAAO,CAACY,WAAR,KAAwB,IAAxB,IAAgC,CAACZ,OAAO,CAAC7B,IAA7C,EAAmD;;EAEjD,QAAI,KAAKf,OAAL,CAAa,GAAb,MAAsB,IAA1B,EAAgC;EAC9Bf,MAAAA,KAAK,GAAG,MAAMA,KAAd;EACD,KAFD,MAEO,IAAI,KAAKe,OAAL,CAAa,GAAb,MAAsB,IAA1B,EAAgC;EACrCf,MAAAA,KAAK,GAAG,MAAMA,KAAd;EACD,KAFM,MAEA,IAAI,KAAKe,OAAL,CAAa,GAAb,MAAsB,IAA1B,EAAgC;EACrCf,MAAAA,KAAK,GAAG,MAAMA,KAAd;EACD,KAFM,MAEA,IAAI,KAAKe,OAAL,CAAa,GAAb,MAAsB,IAA1B,EAAgC;EACrCf,MAAAA,KAAK,GAAG,MAAMA,KAAd;EACD,KAFM,MAEA,IAAI,KAAKwE,WAAL,OAAuB,IAA3B,EAAiC;EACtCxE,MAAAA,KAAK,GAAG,QAAQA,KAAhB;EACD;EACF;;EACD,MAAI4D,OAAO,KAAK,IAAhB,EAAsB;EACpBE,IAAAA,MAAM,GAAG,EAAT;EACD;;EACD,MAAID,QAAQ,KAAK,IAAjB,EAAuB;;EAErB7D,IAAAA,KAAK,GAAG,EAAR,CAFqB;EAGtB,GAxEoD;;;EA0ErD,MAAI2D,OAAO,CAACc,aAAR,KAA0B,IAA1B,IAAkC,KAAKzC,IAAL,CAAU0C,YAAhD,EAA8D;EAC5D1E,IAAAA,KAAK,GAAGA,KAAK,CAACV,OAAN,CAAc,KAAd,EAAqB,EAArB,CAAR;EACD;;EACD,SAAOwE,MAAM,GAAG1D,IAAT,GAAgBJ,KAAvB;EACD,CA9ED;;;;;;ECTA,IAAM2E,UAAU,GAAG;EACjBC,EAAAA,SAAS,EAAE,CADM;EAEjBC,EAAAA,UAAU,EAAE;EAFK,CAAnB;;;EAMA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAASC,IAAT,EAAerC,KAAf,EAAsB;EACrC,MAAIV,IAAI,GAAG1D,MAAM,CAACC,IAAP,CAAYwG,IAAI,CAAC/C,IAAjB,CAAX;EACA,MAAMgD,MAAM,GAAGtC,KAAK,CAACV,IAArB;EACAA,EAAAA,IAAI,GAAGA,IAAI,CAACiD,IAAL,CAAU,UAACtI,CAAD,EAAIC,CAAJ,EAAU;;EAEzB,QAAI+H,UAAU,CAAC/H,CAAD,CAAV,IAAiB,CAACoI,MAAM,CAACpI,CAAD,CAA5B,EAAiC;EAC/B,aAAO,CAAC,CAAR;EACD,KAJwB;;;EAMzB,QAAI,CAACoI,MAAM,CAACpI,CAAD,CAAX,EAAgB;EACd,aAAO,CAAP;EACD;;EACD,QAAI,CAACoI,MAAM,CAACrI,CAAD,CAAX,EAAgB;EACd,aAAO,CAAP;EACD,KAXwB;;;EAazB,QAAIqI,MAAM,CAACrI,CAAD,CAAN,CAAUuI,OAAV,CAAkBzI,MAAlB,GAA2BuI,MAAM,CAACpI,CAAD,CAAN,CAAUsI,OAAV,CAAkBzI,MAAjD,EAAyD;EACvD,aAAO,CAAP;EACD;;EACD,QAAIuI,MAAM,CAACrI,CAAD,CAAN,CAAUwI,GAAV,CAAc1I,MAAd,GAAuBuI,MAAM,CAACpI,CAAD,CAAN,CAAUuI,GAAV,CAAc1I,MAAzC,EAAiD;EAC/C,aAAO,CAAC,CAAR;EACD;;EACD,WAAO,CAAP;EACD,GApBM,CAAP;EAqBA,SAAOuF,IAAP;EACD,CAzBD;;EA0BA,YAAc,GAAG8C,QAAjB;;EC9BA,IAAMM,WAAW,GAAG;EAClBhJ,EAAAA,IAAI,EAAE,IADY;EAElB4F,EAAAA,IAAI,EAAE,IAFY;EAGlBd,EAAAA,QAAQ,EAAE,IAHQ;EAKlBhC,EAAAA,KAAK,EAAE,KALW;EAMlBqC,EAAAA,EAAE,EAAE,KANc;EAOlBD,EAAAA,KAAK,EAAE,KAPW;EAQlB+D,EAAAA,MAAM,EAAE,KARU;EASlBhB,EAAAA,UAAU,EAAE,KATM;EAUlBiB,EAAAA,OAAO,EAAE;EAVS,CAApB;;;EAcA,QAAY,GAAG,aAAA,CAAS3B,OAAT,EAAkBjB,KAAlB,EAAyB;EACtCiB,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACAA,EAAAA,OAAO,GAAGrF,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkBH,WAAlB,EAA+BzB,OAA/B,CAAV;EACA,MAAIpB,MAAM,GAAG,EAAb,CAHsC;;EAMtC,MAAIoB,OAAO,CAACvH,IAAZ,EAAkB;EAChBmG,IAAAA,MAAM,CAACnG,IAAP,GAAc,KAAKA,IAAnB;EACD;;EACD,MAAIuH,OAAO,CAACI,MAAZ,EAAoB;EAClBxB,IAAAA,MAAM,CAACwB,MAAP,GAAgB,KAAKA,MAArB;EACD;;EAED,MAAIJ,OAAO,CAAC3B,IAAZ,EAAkB;EAChBO,IAAAA,MAAM,CAACP,IAAP,GAAc1D,MAAM,CAACC,IAAP,CAAY,KAAKyD,IAAjB,CAAd;EACD,GAfqC;;;EAkBtC,MAAI2B,OAAO,CAACzE,KAAZ,EAAmB;EACjBqD,IAAAA,MAAM,CAACrD,KAAP,GAAe,KAAKA,KAApB;EACD;;EACD,MAAIyE,OAAO,CAACpC,EAAR,IAAcoC,OAAO,CAAC0B,MAA1B,EAAkC;EAChC9C,IAAAA,MAAM,CAAChB,EAAP,GAAY,KAAKA,EAAjB;EACD;;EACD,MAAIoC,OAAO,CAACzC,QAAR,IAAoB,KAAKA,QAAL,KAAkB,IAA1C,EAAgD;EAC9CqB,IAAAA,MAAM,CAACrB,QAAP,GAAkB,KAAKA,QAAvB;EACD;;EACD,MAAIyC,OAAO,CAACU,UAAZ,EAAwB;EACtB9B,IAAAA,MAAM,CAAC1C,GAAP,GAAa,KAAKA,GAAlB;EACA0C,IAAAA,MAAM,CAACzC,IAAP,GAAc,KAAKA,IAAnB;EACD;;EACD,MAAI6D,OAAO,CAAC2B,OAAZ,EAAqB;EACnB/C,IAAAA,MAAM,CAAC+C,OAAP,GAAiBR,QAAQ,CAAC,IAAD,EAAOpC,KAAP,CAAR,CAAsB,CAAtB,CAAjB;EACD;;EAED,SAAOH,MAAP;EACD,CApCD;;;;;;EChBA,WAAc,GAAGjE,MAAM,CAACiH,MAAP,CACf,EADe,EAEfC,OAFe,EAGfC,cAHe,EAIfC,OAJe,EAKfC,OALe,EAMfC,OANe,CAAjB;;ECAA;EACA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAS1J,GAAT,EAAc2J,KAAd,EAAqB;EAClC3J,EAAAA,GAAG,GAAGA,GAAG,CAAC4J,QAAJ,EAAN;;EACA,SAAO5J,GAAG,CAACM,MAAJ,GAAaqJ,KAApB,EAA2B;EACzB3J,IAAAA,GAAG,IAAI,GAAP;EACD;;EACD,SAAOA,GAAP;EACD,CAND;;;;EASA,UAAc,GAAG,eAAA,CAAS2B,CAAT,EAAYiE,GAAZ,EAAiBiE,MAAjB,EAAyB;EACxC,MAAIC,GAAG,GAAG,aAAaJ,MAAM,CAAC/H,CAAC,CAACoB,KAAH,EAAU,EAAV,CAAnB,GAAmC,oBAAnC,GAA0D6C,GAA1D,GAAgE,UAA1E;;EACA,MAAIiE,MAAJ,EAAY;EACVC,IAAAA,GAAG,GAAGJ,MAAM,CAACI,GAAD,EAAM,EAAN,CAAN,GAAkB,GAAlB,GAAwBD,MAAxB,GAAiC,EAAvC;EACD;;EACDE,EAAAA,OAAO,CAACD,GAAR,CAAYA,GAAZ;EACD,CAND;;;;EASA,YAAgB,GAAG,iBAAA,CAASnI,CAAT,EAAYiE,GAAZ,EAAiBiE,MAAjB,EAAyB;EAC1C,MAAIC,GAAG,GAAG,aAAaJ,MAAM,CAAC/H,CAAC,CAACoB,KAAH,EAAU,CAAV,CAAnB,GAAkC,eAAlC,GAAoD6C,GAApD,GAA0D,UAApE;;EACA,MAAIiE,MAAJ,EAAY;EACVC,IAAAA,GAAG,GAAGJ,MAAM,CAACI,GAAD,EAAM,EAAN,CAAN,GAAkB,GAAlB,GAAwBD,MAA9B;EACD;;EACDE,EAAAA,OAAO,CAACD,GAAR,CAAYA,GAAZ;EACD,CAND;;EAQA,WAAe,GAAG,gBAAA,CAASE,GAAT,EAAc;EAC9B,SAAO7H,MAAM,CAAC8H,SAAP,CAAiBL,QAAjB,CAA0BM,IAA1B,CAA+BF,GAA/B,MAAwC,gBAA/C;EACD,CAFD;;EAIA,aAAiB,GAAG,kBAAA,CAAAhK,GAAG,EAAI;EACzB,SAAOA,GAAG,CAACmK,MAAJ,CAAW,CAAX,EAAc7F,WAAd,KAA8BtE,GAAG,CAACoK,MAAJ,CAAW,CAAX,CAArC;EACD,CAFD;;;;;;;;;EC7BA;;EACA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAS1I,CAAT,EAAYiE,GAAZ,EAAiBiE,MAAjB,EAAyBtD,KAAzB,EAAgC;EAC7C,MAAI+D,MAAM,GAAG/D,KAAK,CAACV,IAAnB,CAD6C;;EAG7C,MAAID,GAAG,KAAK,EAAR,IAAcA,GAAG,KAAK,GAAtB,IAA6BA,GAAG,KAAK,GAAzC,EAA8C;EAC5C;EACD;;EACD,MAAIA,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBA,IAAAA,GAAG,GAAGA,GAAG,CAACzC,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACD;;EACDyC,EAAAA,GAAG,GAAG2E,GAAG,CAACpG,SAAJ,CAAcyB,GAAd,CAAN,CAT6C;;EAW7C,MAAIjE,CAAC,CAACkE,IAAF,CAAOD,GAAP,MAAgB,IAApB,EAA0B;EACxB;EACD,GAb4C;;;EAe7C,MAAM4E,SAAS,GAAGjE,KAAK,CAACiE,SAAN,EAAlB;;EACA,MAAIA,SAAS,KAAK,IAAlB,EAAwB;EACtBD,IAAAA,GAAG,CAACE,MAAJ,CAAW9I,CAAX,EAAciE,GAAd,EAAmBiE,MAAnB;EACD,GAlB4C;;;EAoB7ClI,EAAAA,CAAC,CAACkE,IAAF,CAAOD,GAAP,IAAc,IAAd,CApB6C;;;EAuB7C,MAAI0E,MAAM,CAAC7E,cAAP,CAAsBG,GAAtB,MAA+B,IAAnC,EAAyC;;EAEvC0E,IAAAA,MAAM,CAAC1E,GAAD,CAAN,CAAYoD,GAAZ,CAAgB3G,OAAhB,CAAwB,UAAAqI,IAAI,EAAI;EAC9B/I,MAAAA,CAAC,CAACkE,IAAF,CAAO6E,IAAP,IAAe,IAAf;;EACA,UAAIF,SAAS,KAAK,IAAlB,EAAwB;EACtBD,QAAAA,GAAG,CAACE,MAAJ,CAAW9I,CAAX,EAAc,OAAO+I,IAArB;EACD;EACF,KALD,EAFuC;;EASvC/I,IAAAA,CAAC,CAACgJ,KAAF,CAAQL,MAAM,CAAC1E,GAAD,CAAN,CAAYgF,IAApB,EAA0B,GAA1B,EAA+BrE,KAA/B;EACD;EACF,CAlCD;;;;EAqCA,IAAMsE,OAAO,GAAG,SAAVA,OAAU,CAASjC,IAAT,EAAe/C,IAAf,EAAqBgE,MAArB,EAA6BtD,KAA7B,EAAoC;EAClD,MAAIgE,GAAG,CAACO,OAAJ,CAAYjF,IAAZ,MAAsB,IAA1B,EAAgC;EAC9BA,IAAAA,IAAI,CAACxD,OAAL,CAAa,UAAAuD,GAAG;EAAA,aAAIyE,MAAM,CAACzB,IAAD,EAAOhD,GAAP,EAAYiE,MAAZ,EAAoBtD,KAApB,CAAV;EAAA,KAAhB;EACD,GAFD,MAEO;EACL8D,IAAAA,MAAM,CAACzB,IAAD,EAAO/C,IAAP,EAAagE,MAAb,EAAqBtD,KAArB,CAAN;EACD;EACF,CAND;;EAOA,OAAc,GAAGsE,OAAjB;;EC7CA;;EACA,IAAMF,KAAK,GAAG,SAARA,KAAQ,CAAShJ,CAAT,EAAYiE,GAAZ,EAAiBiE,MAAjB,EAAyBtD,KAAzB,EAAgC;EAC5C,MAAMiE,SAAS,GAAGjE,KAAK,CAACiE,SAAN,EAAlB,CAD4C;;EAG5C,MAAI5E,GAAG,KAAK,GAAZ,EAAiB;EACfjE,IAAAA,CAAC,CAACkE,IAAF,GAAS,EAAT;EACA,WAAOlE,CAAP;EACD,GAN2C;;;EAQ5C,MAAIA,CAAC,CAACkE,IAAF,CAAOD,GAAP,MAAgB,IAAhB,IAAwBjE,CAAC,CAACkE,IAAF,CAAOJ,cAAP,CAAsBG,GAAtB,MAA+B,IAA3D,EAAiE;EAC/D,WAAOjE,CAAC,CAACkE,IAAF,CAAOD,GAAP,CAAP,CAD+D;;EAG/D,QAAI4E,SAAS,KAAK,IAAlB,EAAwB;EACtBD,MAAAA,GAAG,CAACQ,QAAJ,CAAapJ,CAAb,EAAgBiE,GAAhB,EAAqBiE,MAArB;EACD;EACF,GAd2C;;;EAgB5C,MAAMS,MAAM,GAAG/D,KAAK,CAACV,IAArB;;EACA,MAAIyE,MAAM,CAAC1E,GAAD,CAAV,EAAiB;EACf,QAAImD,OAAO,GAAGuB,MAAM,CAAC1E,GAAD,CAAN,CAAYmD,OAA1B;;EACA,SAAK,IAAI7I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6I,OAAO,CAACzI,MAA5B,EAAoCJ,CAAC,EAArC,EAAyC;;EAEvC,UAAIyB,CAAC,CAACkE,IAAF,CAAOkD,OAAO,CAAC7I,CAAD,CAAd,MAAuB,IAA3B,EAAiC;EAC/B,eAAOyB,CAAC,CAACkE,IAAF,CAAOkD,OAAO,CAAC7I,CAAD,CAAd,CAAP;;EACA,YAAIsK,SAAS,KAAK,IAAlB,EAAwB;EACtBD,UAAAA,GAAG,CAACQ,QAAJ,CAAapJ,CAAb,EAAgB,QAAQoH,OAAO,CAAC7I,CAAD,CAA/B;EACD;EACF;EACF;EACF;;EACD,SAAOyB,CAAP;EACD,CA9BD;;;EAiCA,IAAMqJ,QAAQ,GAAG,SAAXA,QAAW,CAASpC,IAAT,EAAe/C,IAAf,EAAqBgE,MAArB,EAA6BtD,KAA7B,EAAoC;EACnD,MAAIgE,GAAG,CAACO,OAAJ,CAAYjF,IAAZ,MAAsB,IAA1B,EAAgC;EAC9BA,IAAAA,IAAI,CAACxD,OAAL,CAAa,UAAAuD,GAAG;EAAA,aAAI+E,KAAK,CAAC/B,IAAD,EAAOhD,GAAP,EAAYiE,MAAZ,EAAoBtD,KAApB,CAAT;EAAA,KAAhB;EACD,GAFD,MAEO;EACLoE,IAAAA,KAAK,CAAC/B,IAAD,EAAO/C,IAAP,EAAagE,MAAb,EAAqBtD,KAArB,CAAL;EACD;EACF,CAND;;EAOA,WAAc,GAAGyE,QAAjB;;ECxCA,IAAMC,KAAK,GAAG,SAARA,KAAQ,CAASrC,IAAT,EAAehD,GAAf,EAAoBW,KAApB,EAA2B;EACvC,MAAM+D,MAAM,GAAG/D,KAAK,CAACV,IAArB,CADuC;;EAGvC,MAAID,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBA,IAAAA,GAAG,GAAGA,GAAG,CAACzC,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;EACD,GALsC;;;EAOvC,MAAImH,MAAM,CAAC1E,GAAD,CAAN,KAAgBJ,SAApB,EAA+B;EAC7B,WAAO,IAAP;EACD,GATsC;;;EAWvC,MAAI0F,OAAO,GAAGZ,MAAM,CAAC1E,GAAD,CAAN,CAAYgF,IAAZ,IAAoB,EAAlC;;EACA,OAAK,IAAI1K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgL,OAAO,CAAC5K,MAA5B,EAAoCJ,CAAC,EAArC,EAAyC;EACvC,QAAI0I,IAAI,CAAC/C,IAAL,CAAUqF,OAAO,CAAChL,CAAD,CAAjB,MAA0B,IAA9B,EAAoC;EAClC,aAAO,KAAP;EACD;EACF;;EACD,MAAIoK,MAAM,CAAC1E,GAAD,CAAN,CAAYoD,GAAZ,KAAoBxD,SAAxB,EAAmC;EACjC,WAAOyF,KAAK,CAACrC,IAAD,EAAO0B,MAAM,CAAC1E,GAAD,CAAN,CAAYoD,GAAnB,EAAwBzC,KAAxB,CAAZ,CADiC;EAElC;;EACD,SAAO,IAAP;EACD,CArBD;;EAuBA,WAAc,GAAG0E,KAAjB;;ECtBA;;;;;EAIA,SAAW,GAAG,cAAA,CAASpF,IAAT,EAAegE,MAAf,EAAuBtD,KAAvB,EAA8B;EAC1C4E,EAAAA,GAAG,CAAC,IAAD,EAAOtF,IAAP,EAAagE,MAAb,EAAqBtD,KAArB,CAAH;EACA,SAAO,IAAP;EACD,CAHD;;;;EAMA,WAAe,GAAG,gBAAA,CAASV,IAAT,EAAegE,MAAf,EAAuBtD,KAAvB,EAA8B;EAC9C,MAAI0E,OAAK,CAAC,IAAD,EAAOpF,IAAP,EAAaU,KAAb,CAAT,EAA8B;EAC5B4E,IAAAA,GAAG,CAAC,IAAD,EAAOtF,IAAP,EAAagE,MAAb,EAAqBtD,KAArB,CAAH;EACD;;EACD,SAAO,IAAP;EACD,CALD;;;;;;;EAWA,aAAa,GAAG,kBAAA,CAASV,IAAT,EAAegE,MAAf,EAAuBtD,KAAvB,EAA8B;EAC5CoE,EAAAA,OAAK,CAAC,IAAD,EAAO9E,IAAP,EAAagE,MAAb,EAAqBtD,KAArB,CAAL;EACA,SAAO,IAAP;EACD,CAHD;;;;;;;EASA,aAAa,GAAG,kBAAA,CAASV,IAAT,EAAeU,KAAf,EAAsB;EACpC,SAAO0E,OAAK,CAAC,IAAD,EAAOpF,IAAP,EAAaU,KAAb,CAAZ;EACD,CAFD;;;;;;;;;MC7BM6E;;;EACJ,kBAAuB;EAAA,QAAXnL,IAAW,uEAAJ,EAAI;;EAAA;;EACrBA,IAAAA,IAAI,GAAGoL,MAAM,CAACpL,IAAD,CAAb;EACA,QAAIqL,GAAG,GAAG7H,KAAS,CAACxD,IAAD,CAAnB,CAFqB;;EAIrB,SAAKA,IAAL,GAAYqL,GAAG,CAACrL,IAAJ,IAAY,EAAxB;EACA,SAAK8C,KAAL,GAAauI,GAAG,CAACvI,KAAjB;EACA,SAAKK,OAAL,GAAekI,GAAG,CAAClI,OAAnB;EACA,SAAKuC,IAAL,GAAY2F,CAAY,IAAxB;EACA,SAAKvG,QAAL,GAAgBuG,CAAgB,IAAhC;EAEA,SAAK5H,GAAL,GAAW4H,GAAG,CAAC5H,GAAJ,IAAW,EAAtB;EACA,SAAKC,IAAL,GAAY2H,GAAG,CAAC3H,IAAJ,IAAY,EAAxB;EACA,SAAKkC,IAAL,GAAY,EAAZ;EACA,SAAK0F,IAAL,GAAY,IAAZ;EACA,SAAKC,IAAL,GAAY,IAAZ;EACA,SAAKpG,EAAL,GAAUrF,GAAM,CAACuL,GAAG,CAACvI,KAAL,CAAhB;EACA,SAAKiG,GAAL,GAAW,MAAX,CAhBqB;;;EAkBrB,QAAIsC,GAAG,CAACpH,KAAR,EAAe;EACb,WAAKA,KAAL,GAAaoH,GAAG,CAACpH,KAAjB;EACD;EACF;;;;;;0BAEGlE,KAAK;EACP,UAAIsL,GAAG,GAAG7H,KAAS,CAACzD,GAAD,CAAnB;EACA,WAAKC,IAAL,GAAYqL,GAAG,CAACrL,IAAhB;EACA,WAAK8C,KAAL,GAAauI,GAAG,CAACvI,KAAjB;EACA,aAAO,IAAP;EACD;;;;;;;;EAIHqI,IAAI,CAACnB,SAAL,CAAewB,KAAf,GAAuB,YAAW;EAChC,MAAI7C,IAAI,GAAG,IAAIwC,IAAJ,CAAS,KAAKnL,IAAd,CAAX;EACA2I,EAAAA,IAAI,CAAClF,GAAL,GAAW,KAAKA,GAAhB;EACAkF,EAAAA,IAAI,CAACjF,IAAL,GAAY,KAAKA,IAAjB;EACAiF,EAAAA,IAAI,CAAC/C,IAAL,GAAY1D,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkB,KAAKvD,IAAvB,CAAZ,CAJgC;;;EAOhC,SAAO+C,IAAP;EACD,CARD;;EAUAzG,MAAM,CAACiH,MAAP,CAAcgC,IAAI,CAACnB,SAAnB,EAA8ByB,OAA9B;EACAvJ,MAAM,CAACiH,MAAP,CAAcgC,IAAI,CAACnB,SAAnB,EAA8B0B,GAA9B;EAEA,UAAc,GAAGP,IAAjB;;ECnDA;EACA,SAAa,GAAG,eAAS/J,CAAT,EAAY;EAC1B,MAAIuK,KAAK,GAAG,CAAC,KAAKC,IAAL,CAAUC,GAAV,CAAc,KAAKxG,KAAnB,CAAD,CAAZ;;EACA,MAAI,KAAKhF,MAAL,KAAgB,CAApB,EAAuB;EACrB,WAAO,EAAP;EACD;;EACD,OAAK,IAAIJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKI,MAAL,GAAc,CAAlC,EAAqCJ,CAAC,IAAI,CAA1C,EAA6C;EAC3C,QAAIkF,EAAE,GAAGwG,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAL,CAAwBkL,IAAjC;;EACA,QAAIpG,EAAE,KAAK,IAAX,EAAiB;;EAEf2E,MAAAA,OAAO,CAACgC,KAAR,CAAc,qDAAqD,KAAKzG,KAA1D,GAAkE,GAAhF;EACA;EACD;;EACD,QAAIsD,IAAI,GAAG,KAAKiD,IAAL,CAAUC,GAAV,CAAc1G,EAAd,CAAX;EACAwG,IAAAA,KAAK,CAACI,IAAN,CAAWpD,IAAX,EAR2C;;EAU3C,QAAIvH,CAAC,KAAKmE,SAAN,IAAmBnE,CAAC,KAAKnB,CAA7B,EAAgC;EAC9B,aAAO0L,KAAK,CAACvK,CAAD,CAAZ;EACD;EACF;;EACD,MAAIA,CAAC,KAAKmE,SAAV,EAAqB;EACnB,WAAOoG,KAAK,CAACvK,CAAD,CAAZ;EACD;;EACD,SAAOuK,KAAP;EACD,CAvBD;;;;EA0BA,SAAa,GAAG,cAAA,CAASK,SAAT,EAAoB;EAAA;;EAClC,MAAIA,SAAJ,EAAe;EACb,WAAO,KAAKC,SAAL,CAAe,KAAK5G,KAApB,EAA2B,KAAKhF,MAAhC,CAAP;EACD,GAHiC;;;EAKlC,MAAIsL,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,MAAIO,QAAQ,GAAGP,KAAK,CAACQ,GAAN,CAAU,UAAAzK,CAAC;EAAA,WAAIA,CAAC,CAAC8J,KAAF,EAAJ;EAAA,GAAX,CAAf,CANkC;;EAQlCU,EAAAA,QAAQ,CAAC9J,OAAT,CAAiB,UAACV,CAAD,EAAIzB,CAAJ,EAAU;;EAEzB,IAAA,KAAI,CAAC2L,IAAL,CAAUV,GAAV,CAAcxJ,CAAd;;EACA,QAAIwK,QAAQ,CAACjM,CAAC,GAAG,CAAL,CAAZ,EAAqB;EACnByB,MAAAA,CAAC,CAAC6J,IAAF,GAASW,QAAQ,CAACjM,CAAC,GAAG,CAAL,CAAR,CAAgBkF,EAAzB;EACD;;EACD,QAAI+G,QAAQ,CAACjM,CAAC,GAAG,CAAL,CAAZ,EAAqB;EACnByB,MAAAA,CAAC,CAAC4J,IAAF,GAASY,QAAQ,CAACjM,CAAC,GAAG,CAAL,CAAR,CAAgBkF,EAAzB;EACD;EACF,GATD;EAUA,SAAO,KAAK8G,SAAL,CAAeC,QAAQ,CAAC,CAAD,CAAR,CAAY/G,EAA3B,EAA+B+G,QAAQ,CAAC7L,MAAxC,CAAP;EACD,CAnBD;;;;EAsBA,YAAgB,GAAG,iBAAA,GAAW;EAC5B,MAAIsL,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,SAAOA,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAZ;EACD,CAHD;;;;EAMA,SAAa,GAAG,cAAA,CAAS+L,MAAT,EAAiB;EAC/B,MAAI,KAAK/L,MAAL,KAAgB,CAAhB,IAAqB,CAAC+L,MAA1B,EAAkC;EAChC,WAAO,KAAP;EACD;;EACD,MAAI,KAAK/G,KAAL,KAAe+G,MAAnB,EAA2B;EACzB,WAAO,IAAP;EACD;;EACD,MAAIC,MAAM,GAAG,KAAKhH,KAAlB;;EACA,OAAK,IAAIpF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKI,MAAL,GAAc,CAAlC,EAAqCJ,CAAC,IAAI,CAA1C,EAA6C;EAC3C,QAAI0I,IAAI,GAAG,KAAKiD,IAAL,CAAUC,GAAV,CAAcQ,MAAd,CAAX;;EACA,QAAI1D,IAAI,KAAKpD,SAAb,EAAwB;EACtBuE,MAAAA,OAAO,CAACgC,KAAR,+DAAqEO,MAArE,0BAA2F,KAAKhH,KAAhG,UADsB;;EAGtB,aAAO,KAAP;EACD;;EACD,QAAIsD,IAAI,CAAC4C,IAAL,KAAca,MAAlB,EAA0B;EACxB,aAAO,IAAP;EACD;;EACDC,IAAAA,MAAM,GAAG1D,IAAI,CAAC4C,IAAd;EACD;;EACD,SAAO,KAAP;EACD,CArBD;;;;EAwBA,aAAiB,GAAG,kBAAA,GAAW;EAC7B,SAAO,KAAKI,KAAL,GAAaW,MAAb,CAAoB,UAAA5K,CAAC;EAAA,WAAIA,CAAC,CAAC1B,IAAF,KAAW,EAAf;EAAA,GAArB,EAAwCK,MAA/C;EACD,CAFD;;;;;;;;;;EC/EA,IAAMkM,OAAO,GAAG,SAAVA,OAAU,CAASxM,GAAT,EAAc;EAC5B,SAAOA,GAAG,CAACmD,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAP;EACD,CAFD;;;;EAKA,QAAY,GAAG,gBAAwC;EAAA,MAA/BqE,OAA+B,uEAArB,EAAqB;EAAA,MAAjBiF,OAAiB;EAAA,MAARC,MAAQ;;EACrD,MAAI,OAAOlF,OAAP,KAAmB,QAAvB,EAAiC;EAC/B,QAAIA,OAAO,KAAK,QAAhB,EAA0B;EACxBA,MAAAA,OAAO,GAAG;EACRU,QAAAA,UAAU,EAAE,IADJ;EAERhG,QAAAA,OAAO,EAAE,IAFD;EAGR8F,QAAAA,SAAS,EAAE,IAHH;EAIRI,QAAAA,WAAW,EAAE,IAJL;EAKRH,QAAAA,QAAQ,EAAE,IALF;EAMRK,QAAAA,aAAa,EAAE,IANP;EAORvD,QAAAA,QAAQ,EAAE,IAPF;EAQR6C,QAAAA,MAAM,EAAE;EARA,OAAV;EAUD,KAXD,MAWO,IAAIJ,OAAO,KAAK,OAAhB,EAAyB;EAC9BA,MAAAA,OAAO,GAAG;EACRK,QAAAA,SAAS,EAAE,KADH;EAERG,QAAAA,SAAS,EAAE,IAFH;EAGRI,QAAAA,WAAW,EAAE,IAHL;EAIRF,QAAAA,UAAU,EAAE,IAJJ;EAKRhG,QAAAA,OAAO,EAAE,IALD;EAMR6C,QAAAA,QAAQ,EAAE;EANF,OAAV;EAQD,KATM,MASA,IAAIyC,OAAO,KAAK,SAAhB,EAA2B;EAChCA,MAAAA,OAAO,GAAG;EACRK,QAAAA,SAAS,EAAE,KADH;EAERG,QAAAA,SAAS,EAAE,IAFH;EAGRI,QAAAA,WAAW,EAAE,KAHL;;EAIRF,QAAAA,UAAU,EAAE,IAJJ;EAKRhG,QAAAA,OAAO,EAAE,IALD;EAMR6C,QAAAA,QAAQ,EAAE,IANF;EAOR3B,QAAAA,OAAO,EAAE;EAPD,OAAV;EASD,KAVM,MAUA,IAAIoE,OAAO,KAAK,MAAhB,EAAwB;EAC7BA,MAAAA,OAAO,GAAG;EACRK,QAAAA,SAAS,EAAE,KADH;EAERG,QAAAA,SAAS,EAAE,IAFH;EAGRI,QAAAA,WAAW,EAAE,IAHL;EAIRF,QAAAA,UAAU,EAAE,IAJJ;EAKRhG,QAAAA,OAAO,EAAE,IALD;EAMR6C,QAAAA,QAAQ,EAAE,IANF;EAORY,QAAAA,IAAI,EAAE;EAPE,OAAV;EASD,KAVM,MAUA;EACL6B,MAAAA,OAAO,GAAG,EAAV;EACD;EACF;;EACD,MAAIoE,KAAK,GAAG,KAAKA,KAAL,EAAZ,CA9CqD;;EAgDrD,MAAIe,MAAM,GAAG,KAAb;;EACA,MAAIf,KAAK,CAAC,CAAD,CAAL,IAAYA,KAAK,CAAC,CAAD,CAAL,CAASL,IAAT,KAAkB,IAA9B,IAAsCK,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAL,CAAwBkL,IAAxB,KAAiC,IAA3E,EAAiF;EAC/EmB,IAAAA,MAAM,GAAG,IAAT;EACD;;EACD,MAAI1M,IAAI,GAAG2L,KAAK,CAAC5H,MAAN,CAAa,UAAChE,GAAD,EAAM2B,CAAN,EAASzB,CAAT,EAAe;EACrCsH,IAAAA,OAAO,CAACW,IAAR,GAAeuE,MAAM,IAAIxM,CAAC,KAAK0L,KAAK,CAACtL,MAAN,GAAe,CAA9C;EACA,QAAImH,OAAO,GAAG,IAAd;EACA,QAAIC,QAAQ,GAAG,IAAf;;EACA,QAAIiF,MAAM,KAAK,KAAf,EAAsB;;EAEpB,UAAIzM,CAAC,KAAK,CAAN,IAAWuM,OAAf,EAAwB;EACtBhF,QAAAA,OAAO,GAAG,KAAV;EACD,OAJmB;;;EAMpB,UAAIvH,CAAC,KAAK0L,KAAK,CAACtL,MAAN,GAAe,CAArB,IAA0BoM,MAA9B,EAAsC;EACpChF,QAAAA,QAAQ,GAAG,KAAX;EACD;EACF;;EACD,QAAIkF,GAAG,GAAGjL,CAAC,CAACkL,OAAF,CAAUrF,OAAV,EAAmBC,OAAnB,EAA4BC,QAA5B,CAAV,CAdqC;;;;EAkBrC,WAAO1H,GAAG,GAAG4M,GAAb;EACD,GAnBU,EAmBR,EAnBQ,CAAX,CApDqD;;EAyErD,MAAID,MAAM,KAAK,IAAX,IAAmBD,MAAvB,EAA+B;EAC7BzM,IAAAA,IAAI,GAAGuM,OAAO,CAACvM,IAAD,CAAd;EACD;;EACD,MAAIuH,OAAO,CAACvE,IAAZ,EAAkB;EAChBhD,IAAAA,IAAI,GAAGA,IAAI,CAACgD,IAAL,EAAP;EACD;;EACD,SAAOhD,IAAP;EACD,CAhFD;;;;;;ECLA;EACA,QAAY,GAAG,aAAA,GAAW;EACxB,MAAI2L,KAAK,GAAG,KAAKA,KAAL,EAAZ;;EACA,MAAIA,KAAK,CAACtL,MAAN,GAAe,CAAnB,EAAsB;;EAEpBsL,IAAAA,KAAK,CAAC,CAAD,CAAL,CAASlI,GAAT,GAAekI,KAAK,CAAC,CAAD,CAAL,CAASlI,GAAT,CAAaP,OAAb,CAAqB,MAArB,EAA6B,EAA7B,CAAf,CAFoB;;EAIpB,QAAI2J,QAAQ,GAAGlB,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAApB;EACAwM,IAAAA,QAAQ,CAACnJ,IAAT,GAAgBmJ,QAAQ,CAACnJ,IAAT,CAAcR,OAAd,CAAsB,MAAtB,EAA8B,EAA9B,CAAhB;EACD;;EACD,SAAO,IAAP;EACD,CAVD;;;;;;ECDA,IAAM4J,aAAa,GAAG,WAAtB;;EAGA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAASrF,MAAT,EAAiB9D,KAAjB,EAAwB;;EAE1C,MAAIkJ,aAAa,CAAClK,IAAd,CAAmBgB,KAAnB,CAAJ,EAA+B;EAC7B,QAAIqE,UAAU,GAAGP,MAAM,CAACsF,KAAP,CAAa,MAAb,CAAjB;EACA,WAAOpJ,KAAK,GAAGqE,UAAf;EACD;;EACD,SAAOP,MAAP;EACD,CAPD;;;EAUA,IAAMuF,aAAa,GAAG,SAAhBA,aAAgB,CAASC,WAAT,EAAsBhB,QAAtB,EAAgC;;EAEpDA,EAAAA,QAAQ,CAAC,CAAD,CAAR,CAAYzI,GAAZ,GAAkByJ,WAAW,CAAC,CAAD,CAAX,CAAezJ,GAAjC;EACA,MAAIoJ,QAAQ,GAAGK,WAAW,CAACA,WAAW,CAAC7M,MAAZ,GAAqB,CAAtB,CAA1B,CAHoD;;EAMpD,MAAI8M,OAAO,GAAGjB,QAAQ,CAACA,QAAQ,CAAC7L,MAAT,GAAkB,CAAnB,CAAtB;EACA8M,EAAAA,OAAO,CAACzJ,IAAR,GAAeqJ,WAAW,CAACF,QAAQ,CAACnJ,IAAV,EAAgByJ,OAAO,CAACzJ,IAAxB,CAA1B,CAPoD;;EASpDmJ,EAAAA,QAAQ,CAACnJ,IAAT,GAAgB,EAAhB,CAToD;;EAYpD,MAAImJ,QAAQ,CAACnJ,IAAT,KAAkB,EAAtB,EAA0B;EACxBmJ,IAAAA,QAAQ,CAACnJ,IAAT,IAAiB,GAAjB;EACD;EACF,CAfD;;;EAkBA,IAAM0J,QAAQ,GAAG,SAAXA,QAAW,CAASC,IAAT,EAAeC,SAAf,EAA0B;;EAEzC,MAAIC,OAAO,GAAGF,IAAI,CAACR,QAAL,GAAgBtB,IAA9B,CAFyC;;EAIzC8B,EAAAA,IAAI,CAACR,QAAL,GAAgBtB,IAAhB,GAAuB+B,SAAS,CAACjI,KAAjC,CAJyC;;EAMzCiI,EAAAA,SAAS,CAACT,QAAV,GAAqBtB,IAArB,GAA4BgC,OAA5B,CANyC;;EAQzC,MAAIA,OAAJ,EAAa;;EAEX,QAAIC,SAAS,GAAGH,IAAI,CAACzB,IAAL,CAAUC,GAAV,CAAc0B,OAAd,CAAhB;EACAC,IAAAA,SAAS,CAAClC,IAAV,GAAiBgC,SAAS,CAACT,QAAV,GAAqB1H,EAAtC;EACD,GAZwC;;;EAczC,MAAIsI,QAAQ,GAAGJ,IAAI,CAAC1B,KAAL,CAAW,CAAX,EAAcxG,EAA7B;;EACA,MAAIsI,QAAJ,EAAc;EACZ,QAAIN,OAAO,GAAGG,SAAS,CAAC3B,KAAV,CAAgB,CAAhB,CAAd;EACAwB,IAAAA,OAAO,CAAC7B,IAAR,GAAemC,QAAf;EACD;EACF,CAnBD;;;EAsBA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAASC,IAAT,EAAe;EAC5B,SAAOA,IAAI,CAACrB,MAAL,CAAY,UAACjL,CAAD,EAAIpB,CAAJ,EAAU;EAC3B,WAAO0N,IAAI,CAACjJ,OAAL,CAAarD,CAAb,MAAoBpB,CAA3B;EACD,GAFM,CAAP;EAGD,CAJD;;;EAOA,IAAM2N,YAAY,GAAG,SAAfA,YAAe,CAASlG,MAAT,EAAiB4F,SAAjB,EAA4BO,GAA5B,EAAiC;EACpD,MAAIX,WAAW,GAAGxF,MAAM,CAACiE,KAAP,EAAlB,CADoD;;EAGpDsB,EAAAA,aAAa,CAACC,WAAD,EAAcI,SAAS,CAAC3B,KAAV,EAAd,CAAb,CAHoD;;EAKpDyB,EAAAA,QAAQ,CAAC1F,MAAD,EAAS4F,SAAT,CAAR,CALoD;;;EASpD,MAAIQ,SAAS,GAAG,CAACpG,MAAD,CAAhB;EACA,MAAIqG,KAAK,GAAGrG,MAAM,CAACrC,KAAnB;EACA,MAAI2I,IAAI,GAAG,CAACH,GAAD,CAAX;EAEAG,EAAAA,IAAI,GAAGA,IAAI,CAACC,MAAL,CAAYJ,GAAG,CAACK,OAAJ,EAAZ,CAAP,CAboD;;EAepDF,EAAAA,IAAI,CAAC5L,OAAL,CAAa,UAAA+L,MAAM,EAAI;;EAErB,QAAIC,YAAY,GAAGD,MAAM,CAACR,IAAP,CAAYrB,MAAZ,CAAmB,UAAAhL,CAAC,EAAI;EACzC,aAAOA,CAAC,CAACyM,KAAF,CAAQA,KAAR,CAAP;EACD,KAFkB,CAAnB;EAGAD,IAAAA,SAAS,GAAGA,SAAS,CAACG,MAAV,CAAiBG,YAAjB,CAAZ;EACD,GAND,EAfoD;;EAuBpDN,EAAAA,SAAS,GAAGJ,MAAM,CAACI,SAAD,CAAlB,CAvBoD;;EAyBpDA,EAAAA,SAAS,CAAC1L,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrBA,IAAAA,CAAC,CAACjB,MAAF,IAAYiN,SAAS,CAACjN,MAAtB;EACD,GAFD;EAGA,SAAOqH,MAAP;EACD,CA7BD;;EA8BA,UAAc,GAAGkG,YAAjB;;EC1FA,IAAMvG,UAAQ,GAAG,GAAjB;;;EAIA,IAAM4F,eAAa,GAAG,SAAhBA,aAAgB,CAASf,QAAT,EAAmB;;;EAIvC,MAAIW,QAAQ,GAAGX,QAAQ,CAACA,QAAQ,CAAC7L,MAAT,GAAkB,CAAnB,CAAvB;;EACA,MAAIgH,UAAQ,CAACzE,IAAT,CAAciK,QAAQ,CAACnJ,IAAvB,MAAiC,KAArC,EAA4C;EAC1CmJ,IAAAA,QAAQ,CAACnJ,IAAT,IAAiB,GAAjB;EACD,GAPsC;;;;;;;;;;;;;;;EAuBvC;EACD,CAxBD;;;EA2BA,IAAM0J,UAAQ,GAAG,SAAXA,QAAW,CAASC,IAAT,EAAeC,SAAf,EAA0BpB,QAA1B,EAAoC;;EAEnD,MAAIW,QAAQ,GAAGX,QAAQ,CAACA,QAAQ,CAAC7L,MAAT,GAAkB,CAAnB,CAAvB;EACAwM,EAAAA,QAAQ,CAACtB,IAAT,GAAgB8B,IAAI,CAAChI,KAArB,CAHmD;;EAKnD,MAAIuG,IAAI,GAAGyB,IAAI,CAACzB,IAAhB;EACA,MAAIvG,KAAK,GAAGuG,IAAI,CAACC,GAAL,CAASwB,IAAI,CAAChI,KAAd,CAAZ;;EACA,MAAIA,KAAK,CAACiG,IAAV,EAAgB;EACd,QAAI5D,MAAM,GAAGkE,IAAI,CAACC,GAAL,CAASxG,KAAK,CAACiG,IAAf,CAAb;EACA5D,IAAAA,MAAM,CAAC6D,IAAP,GAAc+B,SAAS,CAACjI,KAAxB;EACD,GAVkD;;;;EAanD6G,EAAAA,QAAQ,CAAC,CAAD,CAAR,CAAYZ,IAAZ,GAAmB+B,IAAI,CAAC1B,KAAL,CAAW,CAAX,EAAcL,IAAjC,CAbmD;;EAenD+B,EAAAA,IAAI,CAAC1B,KAAL,CAAW,CAAX,EAAcL,IAAd,GAAqBuB,QAAQ,CAAC1H,EAA9B;EACD,CAhBD;;;;;;;;;;;;;;;;;;;;EAoCA,IAAMuI,QAAM,GAAG,SAATA,MAAS,CAASC,IAAT,EAAe;EAC5B,SAAOA,IAAI,CAACrB,MAAL,CAAY,UAACjL,CAAD,EAAIpB,CAAJ,EAAU;EAC3B,WAAO0N,IAAI,CAACjJ,OAAL,CAAarD,CAAb,MAAoBpB,CAA3B;EACD,GAFM,CAAP;EAGD,CAJD;;;EAOA,IAAMoO,UAAU,GAAG,SAAbA,UAAa,CAASpL,QAAT,EAAmBqK,SAAnB,EAA8BO,GAA9B,EAAmC;EACpD,MAAMS,SAAS,GAAGrL,QAAQ,CAACoC,KAA3B;EACA,MAAI6G,QAAQ,GAAGoB,SAAS,CAAC3B,KAAV,EAAf,CAFoD;;EAIpDsB,EAAAA,eAAa,CAACf,QAAD,AAAA,CAAb,CAJoD;;EAMpDkB,EAAAA,UAAQ,CAACnK,QAAD,EAAWqK,SAAX,EAAsBpB,QAAtB,CAAR,CANoD;;EAQpD,MAAI4B,SAAS,GAAG,CAAC7K,QAAD,CAAhB;EACA,MAAI+K,IAAI,GAAG,CAACH,GAAD,CAAX;EACAG,EAAAA,IAAI,GAAGA,IAAI,CAACC,MAAL,CAAYJ,GAAG,CAACK,OAAJ,EAAZ,CAAP;EACAF,EAAAA,IAAI,CAAC5L,OAAL,CAAa,UAAA1B,CAAC,EAAI;;EAEhB,QAAI0N,YAAY,GAAG1N,CAAC,CAACiN,IAAF,CAAOrB,MAAP,CAAc,UAAAhL,CAAC,EAAI;EACpC,aAAOA,CAAC,CAACyM,KAAF,CAAQO,SAAR,KAAsBhN,CAAC,CAACyM,KAAF,CAAQT,SAAS,CAACjI,KAAlB,CAA7B;EACD,KAFkB,CAAnB;EAGAyI,IAAAA,SAAS,GAAGA,SAAS,CAACG,MAAV,CAAiBG,YAAjB,CAAZ;EACD,GAND,EAXoD;;EAmBpDN,EAAAA,SAAS,GAAGJ,QAAM,CAACI,SAAD,CAAlB,CAnBoD;;EAqBpDA,EAAAA,SAAS,CAAC1L,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrBA,IAAAA,CAAC,CAACjB,MAAF,IAAYiN,SAAS,CAACjN,MAAtB,CADqB;;EAGrB,QAAIiB,CAAC,CAAC+D,KAAF,KAAYiJ,SAAhB,EAA2B;EACzBhN,MAAAA,CAAC,CAAC+D,KAAF,GAAUiI,SAAS,CAACjI,KAApB;EACD;EACF,GAND;EAOA,SAAOpC,QAAP;EACD,CA7BD;;EA8BA,WAAc,GAAGoL,UAAjB;;ECxGA;EACA,IAAME,SAAS,GAAG,SAAZA,SAAY,CAASV,GAAT,EAAc1I,EAAd,EAAkBqJ,YAAlB,EAAgC5K,KAAhC,EAAuC;EACvD,MAAImG,GAAG,GAAG8D,GAAG,CAACK,OAAJ,EAAV;EACAnE,EAAAA,GAAG,CAACgC,IAAJ,CAAS8B,GAAT;EAEA9D,EAAAA,GAAG,CAAC3H,OAAJ,CAAY,UAAA1B,CAAC,EAAI;;EAEf,QAAI+N,MAAM,GAAG/N,CAAC,CAACiN,IAAF,CAAOe,IAAP,CAAY,UAAApN,CAAC;EAAA,aAAIA,CAAC,CAACyM,KAAF,CAAQ5I,EAAR,CAAJ;EAAA,KAAb,CAAb;;EACA,QAAI,CAACsJ,MAAL,EAAa;EACX;EACD;;EACDA,IAAAA,MAAM,CAACpO,MAAP,IAAiBmO,YAAjB,CANe;;EAQf,QAAIC,MAAM,CAACpJ,KAAP,KAAiBF,EAArB,EAAyB;EACvBsJ,MAAAA,MAAM,CAACpJ,KAAP,GAAezB,KAAK,CAACuB,EAArB;EACD;EACF,GAXD,EAJuD;;EAiBvD0I,EAAAA,GAAG,CAACF,IAAJ,GAAWE,GAAG,CAACF,IAAJ,CAASrB,MAAT,CAAgB,UAAAhL,CAAC,EAAI;EAC9B,QAAI,CAACA,CAAC,CAAC+D,KAAH,IAAY,CAAC/D,CAAC,CAACjB,MAAnB,EAA2B;EACzB,aAAO,KAAP;EACD;;EACD,WAAO,IAAP;EACD,GALU,CAAX;EAMD,CAvBD;;;;;;EA4BA,IAAMsO,YAAY,GAAG,SAAfA,YAAe,CAASF,MAAT,EAAiBZ,GAAjB,EAAsB;EACzC,MAAIjC,IAAI,GAAGiC,GAAG,CAACjC,IAAJ,EAAX;EACA,MAAID,KAAK,GAAG8C,MAAM,CAAC9C,KAAP,EAAZ,CAFyC;;EAKzC,MAAIL,IAAI,GAAGM,IAAI,CAACC,GAAL,CAASF,KAAK,CAAC,CAAD,CAAL,CAASL,IAAlB,KAA2B,EAAtC;EACA,MAAI1H,KAAK,GAAGgI,IAAI,CAACC,GAAL,CAASF,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAL,CAAwBkL,IAAjC,KAA0C,EAAtD;;EAEA,MAAII,KAAK,CAAC,CAAD,CAAL,CAAS7G,QAAT,IAAqBwG,IAAI,CAACxG,QAA9B,EAAwC;EACtCwG,IAAAA,IAAI,CAACsD,GAAL,CAAStD,IAAI,CAACxG,QAAd;EACAwG,IAAAA,IAAI,CAAC5H,IAAL,IAAa,GAAb;EACD,GAXwC;;;EAczC6K,EAAAA,SAAS,CAACV,GAAD,EAAMY,MAAM,CAACpJ,KAAb,EAAoBoJ,MAAM,CAACpO,MAA3B,EAAmCuD,KAAnC,CAAT,CAdyC;;EAiBzC,MAAI0H,IAAJ,EAAU;EACRA,IAAAA,IAAI,CAACC,IAAL,GAAY3H,KAAK,CAACuB,EAAlB;EACD,GAnBwC;;;EAqBzC,MAAIvB,KAAJ,EAAW;EACTA,IAAAA,KAAK,CAAC0H,IAAN,GAAaA,IAAI,CAACnG,EAAlB;EACD,GAvBwC;;;;;EA6B1C,CA7BD;;EA8BA,WAAc,GAAGwJ,YAAjB;;;;ECrDA,YAAc,GAAG,iBAAA,CAASrB,SAAT,EAAoBO,GAApB,EAAyB;EACxCgB,EAAAA,MAAM,CAAC,IAAD,EAAOvB,SAAP,EAAkBO,GAAlB,CAAN;EACA,SAAO,IAAP;EACD,CAHD;;;;EAMA,aAAe,GAAG,kBAAA,CAASP,SAAT,EAAoBO,GAApB,EAAyB;EACzCiB,EAAAA,OAAO,CAAC,IAAD,EAAOxB,SAAP,EAAkBO,GAAlB,CAAP;EACA,SAAO,IAAP;EACD,CAHD;;EAKA,YAAc,GAAG,iBAAA,CAASA,GAAT,EAAc;EAC7Bc,EAAAA,OAAY,CAAC,IAAD,EAAOd,GAAP,CAAZ;EACA,SAAO,IAAP;EACD,CAHD;;;EAMA,WAAe,GAAG,gBAAA,CAASP,SAAT,EAAoBO,GAApB,EAAyB;;;EAGzC,MAAIkB,WAAW,GAAG,KAAK1O,MAAvB;EACAwO,EAAAA,MAAM,CAAC,IAAD,EAAOvB,SAAP,EAAkBO,GAAlB,CAAN,CAJyC;;EAOzC,MAAImB,GAAG,GAAG,KAAK/C,SAAL,CAAe,KAAK5G,KAApB,EAA2B,KAAKhF,MAAhC,CAAV;EACA2O,EAAAA,GAAG,CAAC3O,MAAJ,GAAa0O,WAAb,CARyC;;EAUzCJ,EAAAA,OAAY,CAACK,GAAD,EAAMnB,GAAN,CAAZ,CAVyC;EAY1C,CAZD;;;;;;EAiBA,WAAe,GAAG,gBAAA,CAASvM,CAAT,EAAY;EAC5B,MAAIqK,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,MAAIxF,MAAM,GAAG;EACXuB,IAAAA,MAAM,EAAE,IADG;EAEXsF,IAAAA,KAAK,EAAE,IAFI;EAGXpJ,IAAAA,KAAK,EAAE;EAHI,GAAb;EAKA,MAAIsB,KAAK,GAAGyG,KAAK,CAACsD,SAAN,CAAgB,UAAAvN,CAAC;EAAA,WAAIA,CAAC,CAACyD,EAAF,KAAS7D,CAAC,CAAC+D,KAAf;EAAA,GAAjB,CAAZ;;EACA,MAAIH,KAAK,KAAK,CAAC,CAAf,EAAkB;EAChB,WAAOiB,MAAP;EACD,GAV2B;;;EAY5B,MAAId,KAAK,GAAGsG,KAAK,CAACuD,KAAN,CAAY,CAAZ,EAAehK,KAAf,CAAZ;;EACA,MAAIG,KAAK,CAAChF,MAAN,GAAe,CAAnB,EAAsB;EACpB8F,IAAAA,MAAM,CAACuB,MAAP,GAAgB,KAAKuE,SAAL,CAAe5G,KAAK,CAAC,CAAD,CAAL,CAASF,EAAxB,EAA4BE,KAAK,CAAChF,MAAlC,CAAhB;EACD;;EACD,MAAI2M,KAAK,GAAGrB,KAAK,CAACuD,KAAN,CAAYhK,KAAZ,EAAmBA,KAAK,GAAG5D,CAAC,CAACjB,MAA7B,CAAZ;;EACA,MAAI2M,KAAK,CAAC3M,MAAN,GAAe,CAAnB,EAAsB;EACpB8F,IAAAA,MAAM,CAAC6G,KAAP,GAAe,KAAKf,SAAL,CAAee,KAAK,CAAC,CAAD,CAAL,CAAS7H,EAAxB,EAA4B6H,KAAK,CAAC3M,MAAlC,CAAf;EACD;;EACD,MAAIiF,GAAG,GAAGqG,KAAK,CAACuD,KAAN,CAAYhK,KAAK,GAAG5D,CAAC,CAACjB,MAAtB,EAA8BsL,KAAK,CAACtL,MAApC,CAAV;;EACA,MAAIiF,GAAG,CAACjF,MAAJ,GAAa,CAAjB,EAAoB;EAClB8F,IAAAA,MAAM,CAACvC,KAAP,GAAe,KAAKqI,SAAL,CAAe3G,GAAG,CAAC,CAAD,CAAH,CAAOH,EAAtB,EAA0BG,GAAG,CAACjF,MAA9B,EAAsC,KAAKuL,IAA3C,CAAf;EACD;;EACD,SAAOzF,MAAP;EACD,CAzBD;;;;;;;;;;ECxCA;EACA,UAAY,GAAG,aAAA,GAA8B;EAAA,MAArBoB,OAAqB,uEAAX,EAAW;EAAA,MAAPjB,KAAO;EAC3C,MAAI6I,GAAG,GAAG,EAAV,CAD2C;;EAG3C,MAAI5H,OAAO,CAACvH,IAAZ,EAAkB;EAChBmP,IAAAA,GAAG,CAACnP,IAAJ,GAAW,KAAKA,IAAL,EAAX;EACD;;EACD,MAAIuH,OAAO,CAACI,MAAZ,EAAoB;EAClBwH,IAAAA,GAAG,CAACxH,MAAJ,GAAa,KAAK3H,IAAL,CAAU,QAAV,CAAb;EACD;;EACD,MAAIuH,OAAO,CAACzE,KAAZ,EAAmB;EACjBqM,IAAAA,GAAG,CAACrM,KAAJ,GAAY,KAAK9C,IAAL,CAAU,OAAV,CAAZ;EACD;;EACD,MAAIuH,OAAO,CAACpE,OAAZ,EAAqB;EACnBgM,IAAAA,GAAG,CAAChM,OAAJ,GAAc,KAAKnD,IAAL,CAAU,SAAV,CAAd;EACD;;EACD,MAAIuH,OAAO,CAAC7B,IAAZ,EAAkB;EAChByJ,IAAAA,GAAG,CAACzJ,IAAJ,GAAW,KAAK1F,IAAL,CAAU,MAAV,CAAX;EACD;;EACD,MAAIuH,OAAO,CAACvE,IAAZ,EAAkB;EAChB,QAAImM,GAAG,CAACnP,IAAR,EAAc;EACZmP,MAAAA,GAAG,CAACnP,IAAJ,GAAWmP,GAAG,CAACnP,IAAJ,CAASgD,IAAT,EAAX;EACD;;EACD,QAAImM,GAAG,CAACxH,MAAR,EAAgB;EACdwH,MAAAA,GAAG,CAACxH,MAAJ,GAAawH,GAAG,CAACxH,MAAJ,CAAW3E,IAAX,EAAb;EACD;;EACD,QAAImM,GAAG,CAAChM,OAAR,EAAiB;EACfgM,MAAAA,GAAG,CAAChM,OAAJ,GAAcgM,GAAG,CAAChM,OAAJ,CAAYH,IAAZ,EAAd;EACD;EACF,GA5B0C;;;EA8B3C,MAAIuE,OAAO,CAACoE,KAAZ,EAAmB;EACjB,QAAIpE,OAAO,CAACoE,KAAR,KAAkB,IAAtB,EAA4B;EAC1BpE,MAAAA,OAAO,CAACoE,KAAR,GAAgB,EAAhB;EACD;;EACDwD,IAAAA,GAAG,CAACxD,KAAJ,GAAY,KAAKA,KAAL,GAAaQ,GAAb,CAAiB,UAAAzK,CAAC;EAAA,aAAIA,CAAC,CAAC0N,IAAF,CAAO7H,OAAO,CAACoE,KAAf,EAAsBrF,KAAtB,CAAJ;EAAA,KAAlB,CAAZ;EACD;;EACD,SAAO6I,GAAP;EACD,CArCD;;;;;;ECDA;EACA,aAAiB,GAAG,kBAAA,CAASE,IAAT,EAAe;;EAEjC,MAAI,CAACA,IAAL,EAAW;EACTA,IAAAA,IAAI,GAAG,IAAP;EACD;;EACD,MAAIzD,IAAI,GAAG,KAAKA,IAAhB,CALiC;;EAOjC,MAAID,KAAK,GAAG,EAAZ;;EACA,MAAM2D,QAAQ,GAAG,SAAXA,QAAW,CAASnK,EAAT,EAAa;EAC5B,QAAIwD,IAAI,GAAGiD,IAAI,CAACC,GAAL,CAAS1G,EAAT,CAAX;;EACA,QAAI,CAACwD,IAAL,EAAW;EACT;EACD;;EACDgD,IAAAA,KAAK,CAACI,IAAN,CAAWpD,IAAX;;EACA,QAAIA,IAAI,CAAC2C,IAAT,EAAe;EACbgE,MAAAA,QAAQ,CAAC3G,IAAI,CAAC4C,IAAN,CAAR,CADa;EAEd;EACF,GATD;;EAUA,MAAIgE,GAAG,GAAG,KAAK5D,KAAL,EAAV;EACA,MAAIkB,QAAQ,GAAG0C,GAAG,CAACA,GAAG,CAAClP,MAAJ,GAAa,CAAd,CAAlB;EACAiP,EAAAA,QAAQ,CAACzC,QAAQ,CAACtB,IAAV,CAAR;;EACA,MAAII,KAAK,CAACtL,MAAN,KAAiB,CAArB,EAAwB;EACtB,WAAO,EAAP;EACD,GAvBgC;;;EAyBjC,MAAIiB,CAAC,GAAG,KAAK2K,SAAL,CAAeN,KAAK,CAAC,CAAD,CAAL,CAASxG,EAAxB,EAA4BwG,KAAK,CAACtL,MAAlC,CAAR;EACA,SAAOiB,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,CAAP;EACD,CA3BD;;;;EA8BA,cAAkB,GAAG,mBAAA,CAASA,IAAT,EAAe;;EAElC,MAAI,CAACA,IAAL,EAAW;EACTA,IAAAA,IAAI,GAAG,IAAP;EACD;;EACD,MAAIzD,IAAI,GAAG,KAAKA,IAAhB,CALkC;;EAOlC,MAAID,KAAK,GAAG,EAAZ;;EACA,MAAM6D,SAAS,GAAG,SAAZA,SAAY,CAASrK,EAAT,EAAa;EAC7B,QAAIwD,IAAI,GAAGiD,IAAI,CAACC,GAAL,CAAS1G,EAAT,CAAX;;EACA,QAAI,CAACwD,IAAL,EAAW;EACT;EACD;;EACDgD,IAAAA,KAAK,CAACI,IAAN,CAAWpD,IAAX;;EACA,QAAIA,IAAI,CAAC2C,IAAT,EAAe;EACbkE,MAAAA,SAAS,CAAC7G,IAAI,CAAC2C,IAAN,CAAT,CADa;EAEd;EACF,GATD;;EAUA,MAAI3C,IAAI,GAAGiD,IAAI,CAACC,GAAL,CAAS,KAAKxG,KAAd,CAAX;EACAmK,EAAAA,SAAS,CAAC7G,IAAI,CAAC2C,IAAN,CAAT;;EACA,MAAIK,KAAK,CAACtL,MAAN,KAAiB,CAArB,EAAwB;EACtB,WAAO,EAAP;EACD,GAtBiC;;;EAwBlC,MAAIiB,CAAC,GAAG,KAAK2K,SAAL,CAAeN,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAL,CAAwB8E,EAAvC,EAA2CwG,KAAK,CAACtL,MAAjD,CAAR;EACA,SAAOiB,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,CAAP;EACD,CA1BD;;;;;;;EC/BA,aAAc,GAAGnN,MAAM,CAACiH,MAAP,CACf,EADe,EAEfC,QAFe,EAGfC,OAHe,EAIfC,SAJe,EAKfC,SALe,EAMfC,SANe,EAOfiG,YAPe,CAAjB;;ECAA;EACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAASpO,CAAT,EAAY+N,IAAZ,EAAkB;EACjC,MAAIA,IAAI,CAAChP,MAAL,KAAgB,CAApB,EAAuB;EACrB,WAAO,IAAP;EACD;;EACD,OAAK,IAAIJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoP,IAAI,CAAChP,MAAzB,EAAiCJ,CAAC,IAAI,CAAtC,EAAyC;EACvC,QAAIgF,GAAG,GAAGoK,IAAI,CAACpP,CAAD,CAAd,CADuC;;EAIvC,QAAIgF,GAAG,CAAC0K,QAAJ,KAAiB,IAAjB,IAAyB1K,GAAG,CAACmB,QAAJ,KAAiB,IAA9C,EAAoD;;EAElD,UAAInB,GAAG,CAACI,KAAJ,KAAc,IAAd,IAAsBpF,CAAC,GAAG,CAA9B,EAAiC;EAC/B,eAAO,IAAP;EACD,OAJiD;;;EAMlD,UAAIqB,CAAC,CAACsO,KAAF,CAAQC,KAAR,KAAkBtK,SAAlB,IAA+BN,GAAG,CAACjB,IAAJ,KAAauB,SAA5C,IAAyDjE,CAAC,CAACsO,KAAF,CAAQC,KAAR,CAAcrK,cAAd,CAA6BP,GAAG,CAACjB,IAAjC,MAA2C,IAAxG,EAA8G;;EAE5G,eAAO,IAAP;EACD;EACF,KAdsC;;;EAgBvC,QAAIiB,GAAG,CAACG,QAAJ,KAAiB,IAAjB,IAAyBH,GAAG,CAACmB,QAAJ,KAAiB,IAA9C,EAAoD;EAClD,aAAO,IAAP;EACD;EACF;;EACD,SAAO,KAAP;EACD,CAzBD;;EA0BA,eAAc,GAAGsJ,QAAjB;;EC3BA;;EAGA,IAAMI,SAAS,GAAG,SAAZA,SAAY,CAASnE,KAAT,EAAgBjK,CAAhB,EAAmBuD,GAAnB,EAAwB8K,KAAxB,EAA+B7K,KAA/B,EAAsC7E,MAAtC,EAA8C;EAC9D,MAAIgF,KAAK,GAAG3D,CAAZ;;EACA,SAAOA,CAAC,GAAGiK,KAAK,CAACtL,MAAjB,EAAyBqB,CAAC,IAAI,CAA9B,EAAiC;;EAE/B,QAAIqO,KAAK,IAAIpE,KAAK,CAACjK,CAAD,CAAL,CAASsD,SAAT,CAAmB+K,KAAnB,EAA0B7K,KAAK,GAAGxD,CAAlC,EAAqCrB,MAArC,CAAb,EAA2D;EACzD,aAAOqB,CAAP;EACD;;EACD,QAAIsO,KAAK,GAAGtO,CAAC,GAAG2D,KAAJ,GAAY,CAAxB,CAL+B;;EAO/B,QAAIJ,GAAG,CAACgL,GAAJ,KAAY1K,SAAZ,IAAyByK,KAAK,KAAK/K,GAAG,CAACgL,GAA3C,EAAgD;EAC9C,aAAOvO,CAAP;EACD,KAT8B;;;EAW/B,QAAIiK,KAAK,CAACjK,CAAD,CAAL,CAASsD,SAAT,CAAmBC,GAAnB,EAAwBC,KAAK,GAAGxD,CAAhC,EAAmCrB,MAAnC,MAA+C,KAAnD,EAA0D;;EAExD,UAAI4E,GAAG,CAACiL,GAAJ,KAAY3K,SAAZ,IAAyByK,KAAK,GAAG/K,GAAG,CAACiL,GAAzC,EAA8C;EAC5C,eAAO,IAAP;EACD;;EACD,aAAOxO,CAAP;EACD;EACF;;EACD,SAAOA,CAAP;EACD,CAtBD;;;EAyBA,IAAMyO,QAAQ,GAAG,SAAXA,QAAW,CAASxE,KAAT,EAAgBjK,CAAhB,EAAmB0O,OAAnB,EAA4BlL,KAA5B,EAAmC7E,MAAnC,EAA2C;;EAE1D,MAAI,CAAC+P,OAAL,EAAc;EACZ,WAAOzE,KAAK,CAACtL,MAAb;EACD,GAJyD;;;EAM1D,SAAOqB,CAAC,GAAGiK,KAAK,CAACtL,MAAjB,EAAyBqB,CAAC,IAAI,CAA9B,EAAiC;EAC/B,QAAIiK,KAAK,CAACjK,CAAD,CAAL,CAASsD,SAAT,CAAmBoL,OAAnB,EAA4BlL,KAAK,GAAGxD,CAApC,EAAuCrB,MAAvC,MAAmD,IAAvD,EAA6D;EAC3D,aAAOqB,CAAP;EACD;EACF,GAVyD;;;EAY1D,SAAO,IAAP;EACD,CAbD;;;;EAgBA,IAAM2O,OAAO,GAAG,SAAVA,OAAU,CAAS1E,KAAT,EAAgB0D,IAAhB,EAAsBnK,KAAtB,EAA6B7E,MAA7B,EAAqC;EACnD,MAAIiQ,QAAQ,GAAG,EAAf;EACA,MAAI5O,CAAC,GAAG,CAAR,CAFmD;;EAInD,OAAK,IAAIF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6N,IAAI,CAAChP,MAAzB,EAAiCmB,CAAC,IAAI,CAAtC,EAAyC;EACvC,QAAIyD,GAAG,GAAGoK,IAAI,CAAC7N,CAAD,CAAd,CADuC;;EAIvC,QAAI,CAACmK,KAAK,CAACjK,CAAD,CAAV,EAAe;;EAEb,UAAM6O,QAAQ,GAAGlB,IAAI,CAACH,KAAL,CAAW1N,CAAX,EAAc0E,IAAd,CAAmB,UAAAsK,MAAM;EAAA,eAAI,CAACA,MAAM,CAACb,QAAZ;EAAA,OAAzB,CAAjB;;EACA,UAAIY,QAAQ,KAAK,KAAjB,EAAwB;EACtB;EACD,OALY;;;EAOb,aAAO,KAAP;EACD,KAZsC;;;EAevC,QAAItL,GAAG,CAACG,QAAJ,KAAiB,IAAjB,IAAyBH,GAAG,CAACwL,MAAJ,KAAe,IAA5C,EAAkD;EAChD,UAAIC,MAAM,GAAGP,QAAQ,CAACxE,KAAD,EAAQjK,CAAR,EAAW2N,IAAI,CAAC7N,CAAC,GAAG,CAAL,CAAf,EAAwByD,GAAxB,EAA6BC,KAA7B,AAAA,CAArB,CADgD;;EAGhD,UAAID,GAAG,CAACiL,GAAJ,KAAY3K,SAAZ,IAAyBmL,MAAM,GAAGhP,CAAT,GAAauD,GAAG,CAACiL,GAA9C,EAAmD;EACjD,eAAO,KAAP;EACD,OAL+C;;;EAOhD,UAAIjL,GAAG,CAACgL,GAAJ,KAAY1K,SAAZ,IAAyBmL,MAAM,GAAGhP,CAAT,GAAauD,GAAG,CAACgL,GAA9C,EAAmD;EACjDvO,QAAAA,CAAC,GAAGA,CAAC,GAAGuD,GAAG,CAACgL,GAAZ;EACA;EACD,OAV+C;;;EAYhD,UAAIS,MAAM,KAAK,IAAf,EAAqB;EACnB,eAAO,KAAP,CADmB;EAEpB;;EACDhP,MAAAA,CAAC,GAAGgP,MAAJ;EACA;EACD,KAhCsC;;;EAmCvC,QAAIzL,GAAG,CAACG,QAAJ,KAAiB,IAAjB,IAAyBuG,KAAK,CAACjK,CAAD,CAAL,CAASsD,SAAT,CAAmBC,GAAnB,EAAwBC,KAAK,GAAGxD,CAAhC,EAAmCrB,MAAnC,MAA+C,IAA5E,EAAkF;EAChF,UAAIsQ,OAAO,GAAGjP,CAAd,CADgF;;;EAIhF,UAAIuD,GAAG,CAAC0K,QAAJ,IAAgBN,IAAI,CAAC7N,CAAC,GAAG,CAAL,CAAxB,EAAiC;;EAE/B,YAAImK,KAAK,CAACjK,CAAD,CAAL,CAASsD,SAAT,CAAmBqK,IAAI,CAAC7N,CAAC,GAAG,CAAL,CAAvB,EAAgC0D,KAAK,GAAGxD,CAAxC,EAA2CrB,MAA3C,MAAuD,IAA3D,EAAiE;;;EAG/D,cAAI,CAACsL,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAN,IAAiBiK,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAasD,SAAb,CAAuBqK,IAAI,CAAC7N,CAAC,GAAG,CAAL,CAA3B,EAAoC0D,KAAK,GAAGxD,CAA5C,EAA+CrB,MAA/C,MAA2D,KAAhF,EAAuF;EACrFmB,YAAAA,CAAC,IAAI,CAAL;EACD;EACF;EACF,OAb+E;;;EAehFE,MAAAA,CAAC,IAAI,CAAL,CAfgF;;EAiBhF,UAAIuD,GAAG,CAACK,GAAJ,KAAY,IAAhB,EAAsB;;EAEpB,YAAI5D,CAAC,KAAKiK,KAAK,CAACtL,MAAZ,IAAsB4E,GAAG,CAACwL,MAAJ,KAAe,IAAzC,EAA+C;EAC7C,iBAAO,KAAP;EACD;EACF,OAtB+E;;;EAwBhF,UAAIxL,GAAG,CAACwL,MAAJ,KAAe,IAAnB,EAAyB;EACvB/O,QAAAA,CAAC,GAAGoO,SAAS,CAACnE,KAAD,EAAQjK,CAAR,EAAWuD,GAAX,EAAgBoK,IAAI,CAAC7N,CAAC,GAAG,CAAL,CAApB,EAA6B0D,KAA7B,EAAoC7E,MAApC,CAAb;;EACA,YAAIqB,CAAC,KAAK,IAAV,EAAgB;EACd,iBAAO,KAAP,CADc;EAEf;EACF;;EACD,UAAIuD,GAAG,CAAC2L,OAAR,EAAiB;EACfN,QAAAA,QAAQ,CAACvE,IAAT,CAAc4E,OAAd,EADe;;EAGf,YAAIjP,CAAC,GAAG,CAAJ,IAASuD,GAAG,CAACwL,MAAjB,EAAyB;EACvBH,UAAAA,QAAQ,CAACvE,IAAT,CAAcrK,CAAC,GAAG,CAAlB;EACD;EACF;;EACD;EACD,KAzEsC;;;EA4EvC,QAAIuD,GAAG,CAAC0K,QAAJ,KAAiB,IAArB,EAA2B;EACzB;EACD,KA9EsC;;;EAgFvC,QAAIhE,KAAK,CAACjK,CAAD,CAAL,CAASmP,UAAT,MAAyBxB,IAAI,CAAC7N,CAAC,GAAG,CAAL,CAA7B,IAAwCmK,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAjD,EAA0D;;EAExD,UAAIiK,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAasD,SAAb,CAAuBC,GAAvB,EAA4BC,KAAK,GAAGxD,CAApC,EAAuCrB,MAAvC,CAAJ,EAAoD;EAClDqB,QAAAA,CAAC,IAAI,CAAL;EACA;EACD;EACF,KAtFsC;;;EAwFvC,WAAO,KAAP;EACD,GA7FkD;;;;EAiGnD,MAAI4O,QAAQ,CAACjQ,MAAT,GAAkB,CAAtB,EAAyB;;EAEvB,QAAI0J,GAAG,GAAG4B,KAAK,CAACuD,KAAN,CAAYoB,QAAQ,CAAC,CAAD,CAApB,EAAyBA,QAAQ,CAACA,QAAQ,CAACjQ,MAAT,GAAkB,CAAnB,CAAR,GAAgC,CAAzD,CAAV,CAFuB;;EAIvB,SAAK,IAAI2O,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAGtN,CAAxB,EAA2BsN,GAAG,EAA9B,EAAkC;EAChCjF,MAAAA,GAAG,CAACiF,GAAD,CAAH,GAAWjF,GAAG,CAACiF,GAAD,CAAH,IAAY,IAAvB,CADgC;EAEjC;;EACD,WAAOjF,GAAP;EACD,GAzGkD;;;EA2GnD,SAAO4B,KAAK,CAACuD,KAAN,CAAY,CAAZ,EAAexN,CAAf,CAAP;EACD,CA5GD;;EA6GA,eAAc,GAAG2O,OAAjB;;ECzJA;;;;;;;;;;;;;;;;;EAiBA,IAAMS,SAAS,GAAG,sBAAlB;EACA,IAAMC,OAAO,GAAG,IAAhB;;EAEA,IAAM7M,WAAS,GAAG,SAAZA,SAAY,CAAAnE,GAAG,EAAI;EACvB,SAAOA,GAAG,CAACmK,MAAJ,CAAW,CAAX,EAAc7F,WAAd,KAA8BtE,GAAG,CAACoK,MAAJ,CAAW,CAAX,CAArC;EACD,CAFD;;EAIA,IAAM7E,GAAG,GAAG,SAANA,GAAM,CAASvF,GAAT,EAAc;EACxB,SAAOA,GAAG,CAACA,GAAG,CAACM,MAAJ,GAAa,CAAd,CAAV;EACD,CAFD;;EAGA,IAAMgF,KAAK,GAAG,SAARA,KAAQ,CAAStF,GAAT,EAAc;EAC1B,SAAOA,GAAG,CAAC,CAAD,CAAV;EACD,CAFD;;EAGA,IAAMiR,UAAU,GAAG,SAAbA,UAAa,CAASjR,GAAT,EAAc;EAC/B,SAAOA,GAAG,CAACoK,MAAJ,CAAW,CAAX,CAAP;EACD,CAFD;;EAGA,IAAM8G,QAAQ,GAAG,SAAXA,QAAW,CAASlR,GAAT,EAAc;EAC7B,SAAOA,GAAG,CAACoK,MAAJ,CAAW,CAAX,EAAcpK,GAAG,CAACM,MAAJ,GAAa,CAA3B,CAAP;EACD,CAFD;;EAGA,IAAM6Q,SAAS,GAAG,SAAZA,SAAY,CAASnR,GAAT,EAAc;EAC9BA,EAAAA,GAAG,GAAGiR,UAAU,CAACjR,GAAD,CAAhB;EACAA,EAAAA,GAAG,GAAGkR,QAAQ,CAAClR,GAAD,CAAd;EACA,SAAOA,GAAP;EACD,CAJD;;;EAOA,IAAMoR,UAAU,GAAG,SAAbA,UAAa,CAAStP,CAAT,EAAY;EAC7B,MAAIwJ,GAAG,GAAG,EAAV,CAD6B;;EAG7B,OAAK,IAAIpL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,IAAI,CAA5B,EAA+B;;EAE7B,QAAIqF,GAAG,CAACzD,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBwJ,MAAAA,GAAG,CAACoF,MAAJ,GAAa,IAAb;EACA5O,MAAAA,CAAC,GAAGoP,QAAQ,CAACpP,CAAD,CAAZ;EACD;;EACD,QAAIA,CAAC,KAAK,GAAN,IAAayD,GAAG,CAACzD,CAAD,CAAH,KAAW,GAAxB,IAA+BA,CAAC,KAAK,KAAzC,EAAgD;EAC9CwJ,MAAAA,GAAG,CAACoF,MAAJ,GAAa,IAAb;EACA5O,MAAAA,CAAC,GAAGoP,QAAQ,CAACpP,CAAD,CAAZ;EACD;;EACD,QAAIyD,GAAG,CAACzD,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBwJ,MAAAA,GAAG,CAACsE,QAAJ,GAAe,IAAf;EACA9N,MAAAA,CAAC,GAAGoP,QAAQ,CAACpP,CAAD,CAAZ;EACD;;EACD,QAAIyD,GAAG,CAACzD,CAAD,CAAH,KAAW,GAAf,EAAoB;EAClBwJ,MAAAA,GAAG,CAAC/F,GAAJ,GAAU,IAAV;EACAzD,MAAAA,CAAC,GAAGoP,QAAQ,CAACpP,CAAD,CAAZ;EACD,KAjB4B;;;EAmB7B,QAAIwD,KAAK,CAACxD,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBwJ,MAAAA,GAAG,CAAChG,KAAJ,GAAY,IAAZ;EACAxD,MAAAA,CAAC,GAAGmP,UAAU,CAACnP,CAAD,CAAd;EACD;;EACD,QAAIwD,KAAK,CAACxD,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBwJ,MAAAA,GAAG,CAACjF,QAAJ,GAAe,IAAf;EACAvE,MAAAA,CAAC,GAAGmP,UAAU,CAACnP,CAAD,CAAd;EACD,KA1B4B;;;EA4B7B,QAAIwD,KAAK,CAACxD,CAAD,CAAL,KAAa,GAAb,IAAoByD,GAAG,CAACzD,CAAD,CAAH,KAAW,GAAnC,EAAwC;;EAEtC,UAAIkP,OAAO,CAACnO,IAAR,CAAaf,CAAb,CAAJ,EAAqB;EACnBwJ,QAAAA,GAAG,CAACtF,OAAJ,GAAclE,CAAC,CAAChC,KAAF,CAAQkR,OAAR,CAAd;EACA1F,QAAAA,GAAG,CAACrF,QAAJ,GAAe,KAAf;EACD,OAHD,MAGO;EACLqF,QAAAA,GAAG,CAACtF,OAAJ,GAAclE,CAAC,CAAChC,KAAF,CAAQ,GAAR,CAAd;EACAwL,QAAAA,GAAG,CAACrF,QAAJ,GAAe,IAAf;EACD,OARqC;;;EAUtCqF,MAAAA,GAAG,CAACtF,OAAJ,CAAY,CAAZ,IAAiBiL,UAAU,CAAC3F,GAAG,CAACtF,OAAJ,CAAY,CAAZ,CAAD,CAA3B;EACA,UAAImC,IAAI,GAAGmD,GAAG,CAACtF,OAAJ,CAAY1F,MAAZ,GAAqB,CAAhC;EACAgL,MAAAA,GAAG,CAACtF,OAAJ,CAAYmC,IAAZ,IAAoB+I,QAAQ,CAAC5F,GAAG,CAACtF,OAAJ,CAAYmC,IAAZ,CAAD,CAA5B,CAZsC;;EActCmD,MAAAA,GAAG,CAACtF,OAAJ,GAAcsF,GAAG,CAACtF,OAAJ,CAAYoG,GAAZ,CAAgB,UAAA1K,CAAC;EAAA,eAAIA,CAAC,CAACuB,IAAF,EAAJ;EAAA,OAAjB,CAAd;EACAqI,MAAAA,GAAG,CAACtF,OAAJ,GAAcsF,GAAG,CAACtF,OAAJ,CAAYuG,MAAZ,CAAmB,UAAA7K,CAAC;EAAA,eAAIA,CAAJ;EAAA,OAApB,CAAd,CAfsC;;EAiBtC4J,MAAAA,GAAG,CAACtF,OAAJ,GAAcsF,GAAG,CAACtF,OAAJ,CAAYoG,GAAZ,CAAgBgF,UAAhB,CAAd;EACAtP,MAAAA,CAAC,GAAG,EAAJ;EACD,KA/C4B;;;EAiD7B,QAAIwD,KAAK,CAACxD,CAAD,CAAL,KAAa,GAAb,IAAoByD,GAAG,CAACzD,CAAD,CAAH,KAAW,GAAnC,EAAwC;EACtCwJ,MAAAA,GAAG,CAACuF,OAAJ,GAAc,IAAd;EACA/O,MAAAA,CAAC,GAAGA,CAAC,CAACqB,OAAF,CAAU,KAAV,EAAiB,EAAjB,CAAJ;EACArB,MAAAA,CAAC,GAAGA,CAAC,CAACqB,OAAF,CAAU,KAAV,EAAiB,EAAjB,CAAJ;EACD,KArD4B;;;EAuD7B,QAAImC,KAAK,CAACxD,CAAD,CAAL,KAAa,GAAb,IAAoByD,GAAG,CAACzD,CAAD,CAAH,KAAW,GAAnC,EAAwC;EACtCA,MAAAA,CAAC,GAAGqP,SAAS,CAACrP,CAAD,CAAb;EACAwJ,MAAAA,GAAG,CAACvF,KAAJ,GAAY,IAAIsL,MAAJ,CAAWvP,CAAX,CAAZ;EACA,aAAOwJ,GAAP;EACD,KA3D4B;;;EA6D7B,QAAIhG,KAAK,CAACxD,CAAD,CAAL,KAAa,GAAb,IAAoByD,GAAG,CAACzD,CAAD,CAAH,KAAW,GAAnC,EAAwC;EACtCA,MAAAA,CAAC,GAAGqP,SAAS,CAACrP,CAAD,CAAb;EACAwJ,MAAAA,GAAG,CAAC5F,IAAJ,GAAW,IAAX;EACA4F,MAAAA,GAAG,CAACrH,IAAJ,GAAWnC,CAAX;EACA,aAAOwJ,GAAP;EACD;EACF,GAtE4B;;;EAwE7B,MAAIyF,SAAS,CAAClO,IAAV,CAAef,CAAf,MAAsB,IAA1B,EAAgC;EAC9BA,IAAAA,CAAC,GAAGA,CAAC,CAACqB,OAAF,CAAU4N,SAAV,EAAqB,UAACvQ,CAAD,EAAIC,CAAJ,EAAU;EACjC,UAAIuJ,GAAG,GAAGvJ,CAAC,CAACX,KAAF,CAAQ,IAAR,CAAV;;EACA,UAAIkK,GAAG,CAAC1J,MAAJ,KAAe,CAAnB,EAAsB;;EAEpBgL,QAAAA,GAAG,CAAC6E,GAAJ,GAAUmB,MAAM,CAACtH,GAAG,CAAC,CAAD,CAAJ,CAAhB;EACAsB,QAAAA,GAAG,CAAC4E,GAAJ,GAAUoB,MAAM,CAACtH,GAAG,CAAC,CAAD,CAAJ,CAAhB;EACD,OAJD,MAIO;;;EAGLsB,QAAAA,GAAG,CAAC6E,GAAJ,GAAUmB,MAAM,CAACtH,GAAG,CAAC,CAAD,CAAJ,CAAhB;EACAsB,QAAAA,GAAG,CAAC4E,GAAJ,GAAUoB,MAAM,CAACtH,GAAG,CAAC,CAAD,CAAH,IAAU,GAAX,CAAhB;EACD;;EACDsB,MAAAA,GAAG,CAACoF,MAAJ,GAAa,IAAb;EACA,aAAO,EAAP;EACD,KAdG,CAAJ;EAeD,GAxF4B;;;EA2F7B,MAAIpL,KAAK,CAACxD,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBwJ,IAAAA,GAAG,CAAC1F,GAAJ,GAAUqL,UAAU,CAACnP,CAAD,CAApB;EACAwJ,IAAAA,GAAG,CAAC1F,GAAJ,GAAUzB,WAAS,CAACmH,GAAG,CAAC1F,GAAL,CAAnB;EACA,WAAO0F,GAAP;EACD,GA/F4B;;;EAiG7B,MAAIhG,KAAK,CAACxD,CAAD,CAAL,KAAa,GAAjB,EAAsB;EACpBwJ,IAAAA,GAAG,CAACxF,MAAJ,GAAamL,UAAU,CAACnP,CAAD,CAAvB;EACA,WAAOwJ,GAAP;EACD;;EACD,MAAIxJ,CAAC,KAAK,GAAV,EAAe;EACbwJ,IAAAA,GAAG,CAACjG,QAAJ,GAAe,IAAf;EACA,WAAOiG,GAAP;EACD,GAxG4B;;;EA0G7B,MAAIxJ,CAAC,KAAK,GAAV,EAAe;EACbwJ,IAAAA,GAAG,CAACjG,QAAJ,GAAe,IAAf;EACAiG,IAAAA,GAAG,CAACoF,MAAJ,GAAa,IAAb;EACApF,IAAAA,GAAG,CAACsE,QAAJ,GAAe,IAAf;EACA,WAAOtE,GAAP;EACD;;EACD,MAAIxJ,CAAJ,EAAO;;EAELA,IAAAA,CAAC,GAAGA,CAAC,CAACqB,OAAF,CAAU,KAAV,EAAiB,GAAjB,CAAJ;EACArB,IAAAA,CAAC,GAAGA,CAAC,CAACqB,OAAF,CAAU,KAAV,EAAiB,GAAjB,CAAJ;EACAmI,IAAAA,GAAG,CAACrH,IAAJ,GAAWnC,CAAC,CAACkB,WAAF,EAAX;EACD;;EACD,SAAOsI,GAAP;EACD,CAvHD;;EAwHA,gBAAc,GAAG8F,UAAjB;;ECjKA,IAAMtG,SAAO,GAAG,SAAVA,OAAU,CAASd,GAAT,EAAc;EAC5B,SAAO7H,MAAM,CAAC8H,SAAP,CAAiBL,QAAjB,CAA0BM,IAA1B,CAA+BF,GAA/B,MAAwC,gBAA/C;EACD,CAFD;;;EAKA,IAAMuH,aAAa,GAAG,SAAhBA,aAAgB,CAASvR,GAAT,EAAc;EAClC,MAAIgK,GAAG,GAAGhK,GAAG,CAACF,KAAJ,CAAU,gCAAV,CAAV;EACAkK,EAAAA,GAAG,GAAGA,GAAG,CAACoC,GAAJ,CAAQ,UAAA1K,CAAC;EAAA,WAAIA,CAAC,CAACuB,IAAF,EAAJ;EAAA,GAAT,CAAN;EACA,SAAO+G,GAAP;EACD,CAJD;;EAMA,IAAMwH,OAAO,GAAG,SAAVA,OAAU,CAASxH,GAAT,EAAc;EAC5B,MAAI8F,KAAK,GAAG,EAAZ;EACA9F,EAAAA,GAAG,CAAC3H,OAAJ,CAAY,UAAA7B,CAAC,EAAI;;EAEf,QAAI,aAAaqC,IAAb,CAAkBrC,CAAC,CAAC,CAAD,CAAnB,CAAJ,EAA6B;EAC3BsP,MAAAA,KAAK,CAAC9D,IAAN,CAAWxL,CAAX;EACA;EACD;;EACD,QAAIoN,IAAI,GAAGpN,CAAC,CAACV,KAAF,CAAQ,GAAR,CAAX;EACA8N,IAAAA,IAAI,GAAGA,IAAI,CAACrB,MAAL,CAAY,UAAAzK,CAAC;EAAA,aAAIA,CAAJ;EAAA,KAAb,CAAP;EACAgO,IAAAA,KAAK,GAAGA,KAAK,CAAC5B,MAAN,CAAaN,IAAb,CAAR;EACD,GATD;EAUA,SAAOkC,KAAP;EACD,CAbD;;;EAgBA,IAAM2B,OAAO,GAAG,SAAVA,OAAU,CAASzH,GAAT,EAAc;EAC5B,SAAO,CACL;EACEhE,IAAAA,OAAO,EAAEgE,GAAG,CAACoC,GAAJ,CAAQ,UAAA1K,CAAC,EAAI;EACpB,aAAO;EACLuC,QAAAA,IAAI,EAAEvC;EADD,OAAP;EAGD,KAJQ;EADX,GADK,CAAP;EASD,CAVD;;EAYA,IAAMgQ,WAAW,GAAG,SAAdA,WAAc,CAASC,MAAT,EAAiB;;EAEnC,MAAI1B,KAAK,GAAG0B,MAAM,CAACpF,MAAP,CAAc,UAAA5K,CAAC;EAAA,WAAIA,CAAC,CAACkP,OAAF,KAAc,IAAlB;EAAA,GAAf,EAAuCvQ,MAAnD;;EACA,MAAI2P,KAAK,GAAG,CAAZ,EAAe;EACb,QAAI2B,UAAU,GAAGD,MAAM,CAACvF,GAAP,CAAW,UAAAzK,CAAC;EAAA,aAAIA,CAAC,CAACkP,OAAN;EAAA,KAAZ,CAAjB;EACA,QAAIgB,KAAK,GAAGD,UAAU,CAACjN,OAAX,CAAmB,IAAnB,CAAZ;EACA,QAAIwD,IAAI,GAAGyJ,UAAU,CAACtR,MAAX,GAAoB,CAApB,GAAwBsR,UAAU,CAACE,OAAX,GAAqBnN,OAArB,CAA6B,IAA7B,CAAnC,CAHa;;EAKb,SAAK,IAAIzE,CAAC,GAAG2R,KAAb,EAAoB3R,CAAC,GAAGiI,IAAxB,EAA8BjI,CAAC,EAA/B,EAAmC;EACjCyR,MAAAA,MAAM,CAACzR,CAAD,CAAN,CAAU2Q,OAAV,GAAoB,IAApB;EACD;EACF;;EACD,SAAOc,MAAP;EACD,CAbD;;EAeA,IAAMI,OAAO,GAAG,SAAVA,OAAU,CAASjE,GAAT,EAAc;EAC5B,MAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACF,IAAb,IAAqB,CAACE,GAAG,CAACF,IAAJ,CAAS,CAAT,CAA1B,EAAuC;EACrC,WAAO,EAAP;EACD;;EACD,MAAIoE,GAAG,GAAG,EAAV;EACAlE,EAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpBA,IAAAA,CAAC,CAACqK,KAAF,GAAUvJ,OAAV,CAAkB,UAAAV,CAAC,EAAI;EACrBqQ,MAAAA,GAAG,CAAChG,IAAJ,CAAS;EAAE5G,QAAAA,EAAE,EAAEzD,CAAC,CAACyD;EAAR,OAAT;EACD,KAFD;EAGD,GAJD;EAKA,SAAO,CAAC;EAAEY,IAAAA,OAAO,EAAEgM,GAAX;EAAgBtB,IAAAA,MAAM,EAAE;EAAxB,GAAD,CAAP;EACD,CAXD;;;;EAcA,IAAMuB,MAAM,GAAG,SAATA,MAAS,CAASC,KAAT,EAAgB;;EAE7B,MAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK1M,SAA5B,IAAyC0M,KAAK,KAAK,EAAvD,EAA2D;EACzD,WAAO,EAAP;EACD,GAJ4B;;;EAM7B,MAAI,QAAOA,KAAP,MAAiB,QAArB,EAA+B;EAC7B,QAAIpH,SAAO,CAACoH,KAAD,CAAX,EAAoB;EAClB,UAAIA,KAAK,CAAC5R,MAAN,KAAiB,CAAjB,IAAsB,CAAC4R,KAAK,CAAC,CAAD,CAAhC,EAAqC;EACnC,eAAO,EAAP;EACD,OAHiB;;;EAMlB,UAAI,QAAOA,KAAK,CAAC,CAAD,CAAZ,MAAoB,QAAxB,EAAkC;EAChC,eAAOA,KAAP;EACD,OARiB;;;EAUlB,UAAI,OAAOA,KAAK,CAAC,CAAD,CAAZ,KAAoB,QAAxB,EAAkC;EAChC,eAAOT,OAAO,CAACS,KAAD,CAAd;EACD;EACF,KAd4B;;;EAgB7B,QAAIA,KAAK,IAAIA,KAAK,CAAClJ,GAAN,KAAc,KAA3B,EAAkC;EAChC,aAAO+I,OAAO,CAACG,KAAD,CAAd;EACD;;EACD,WAAO,EAAP;EACD;;EACD,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;EAC7BA,IAAAA,KAAK,GAAG7G,MAAM,CAAC6G,KAAD,CAAd,CAD6B;EAE9B;;EACD,MAAIP,MAAM,GAAGJ,aAAa,CAACW,KAAD,CAA1B;EACAP,EAAAA,MAAM,GAAGH,OAAO,CAACG,MAAD,CAAhB;EACAA,EAAAA,MAAM,GAAGA,MAAM,CAACvF,GAAP,CAAWgF,YAAX,CAAT,CAhC6B;;EAkC7BO,EAAAA,MAAM,GAAGD,WAAW,CAACC,MAAD,CAApB,CAlC6B;;EAoC7B,SAAOA,MAAP;EACD,CArCD;;EAsCA,YAAc,GAAGM,MAAjB;;ECxGA;;EACA,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAAS5Q,CAAT,EAAY+N,IAAZ,EAAoC;EAAA,MAAlB8C,QAAkB,uEAAP,KAAO;;;EAEnD,MAAI,OAAO9C,IAAP,KAAgB,QAApB,EAA8B;EAC5BA,IAAAA,IAAI,GAAG2C,QAAM,CAAC3C,IAAD,CAAb;EACD,GAJkD;;;EAMnD,MAAIK,WAAQ,CAACpO,CAAD,EAAI+N,IAAJ,CAAR,KAAsB,IAA1B,EAAgC;EAC9B,WAAO,EAAP;EACD,GARkD;;;EAWnD,MAAM+C,SAAS,GAAG/C,IAAI,CAAC/C,MAAL,CAAY,UAAA9K,CAAC;EAAA,WAAIA,CAAC,CAACmO,QAAF,KAAe,IAAnB;EAAA,GAAb,EAAsCtP,MAAxD;EACA,MAAIsL,KAAK,GAAGrK,CAAC,CAACsO,KAAF,CAAQjE,KAAR,IAAiBrK,CAAC,CAACqK,KAAF,EAA7B;EACA,MAAI0G,OAAO,GAAG,EAAd,CAbmD;;EAgBnD,MAAIhD,IAAI,CAAC,CAAD,CAAJ,CAAQhK,KAAR,KAAkB,IAAtB,EAA4B;EAC1B,QAAI2H,KAAK,GAAGsF,WAAQ,CAAC3G,KAAD,EAAQ0D,IAAR,EAAc,CAAd,EAAiB1D,KAAK,CAACtL,MAAvB,CAApB;;EACA,QAAI2M,KAAK,KAAK,KAAV,IAAmBA,KAAK,CAAC3M,MAAN,GAAe,CAAtC,EAAyC;EACvCgS,MAAAA,OAAO,CAACtG,IAAR,CAAaiB,KAAb;EACD,KAJyB;;;EAM1BqF,IAAAA,OAAO,GAAGA,OAAO,CAAClG,GAAR,CAAY,UAAApC,GAAG,EAAI;EAC3B,aAAOA,GAAG,CAACuC,MAAJ,CAAW,UAAA5K,CAAC;EAAA,eAAIA,CAAJ;EAAA,OAAZ,CAAP;EACD,KAFS,CAAV;EAGA,WAAO2Q,OAAP;EACD,GA1BkD;;;EA4BnD,OAAK,IAAIpS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,IAAI,CAAvC,EAA0C;;EAExC,QAAIA,CAAC,GAAGmS,SAAJ,GAAgBzG,KAAK,CAACtL,MAA1B,EAAkC;EAChC;EACD,KAJuC;;;EAOxC,QAAI2M,MAAK,GAAGsF,WAAQ,CAAC3G,KAAK,CAACuD,KAAN,CAAYjP,CAAZ,CAAD,EAAiBoP,IAAjB,EAAuBpP,CAAvB,EAA0B0L,KAAK,CAACtL,MAAhC,CAApB;;EACA,QAAI2M,MAAK,KAAK,KAAV,IAAmBA,MAAK,CAAC3M,MAAN,GAAe,CAAtC,EAAyC;;EAEvCJ,MAAAA,CAAC,IAAI+M,MAAK,CAAC3M,MAAN,GAAe,CAApB,CAFuC;;EAIvC2M,MAAAA,MAAK,GAAGA,MAAK,CAACV,MAAN,CAAa,UAAAnL,CAAC;EAAA,eAAIA,CAAJ;EAAA,OAAd,CAAR;EACAkR,MAAAA,OAAO,CAACtG,IAAR,CAAaiB,MAAb,EALuC;;EAOvC,UAAImF,QAAQ,KAAK,IAAjB,EAAuB;EACrB,eAAOE,OAAP;EACD;EACF;EACF;;EACD,SAAOA,OAAP;EACD,CAjDD;;EAkDA,eAAc,GAAGH,QAAjB;;ECrDA;;;;EAGA,IAAMK,QAAQ,GAAG,SAAXA,QAAW,CAASjR,CAAT,EAAY+N,IAAZ,EAAkB;EACjC,MAAI1L,KAAK,GAAG,EAAZ;EACA,MAAIoG,GAAG,GAAGmI,WAAQ,CAAC5Q,CAAD,EAAI+N,IAAJ,CAAlB;EACAtF,EAAAA,GAAG,CAAC3H,OAAJ,CAAY,UAAAoQ,EAAE,EAAI;EAChBA,IAAAA,EAAE,CAACpQ,OAAH,CAAW,UAAAV,CAAC,EAAI;EACdiC,MAAAA,KAAK,CAACjC,CAAC,CAACyD,EAAH,CAAL,GAAc,IAAd;EACD,KAFD;EAGD,GAJD,EAHiC;;EASjC,MAAIwG,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACA,MAAIxF,MAAM,GAAG,EAAb;EACA,MAAIsM,OAAO,GAAG,EAAd;EACA9G,EAAAA,KAAK,CAACvJ,OAAN,CAAc,UAAAV,CAAC,EAAI;EACjB,QAAIiC,KAAK,CAACjC,CAAC,CAACyD,EAAH,CAAL,KAAgB,IAApB,EAA0B;EACxB,UAAIsN,OAAO,CAACpS,MAAR,GAAiB,CAArB,EAAwB;EACtB8F,QAAAA,MAAM,CAAC4F,IAAP,CAAY0G,OAAZ;EACAA,QAAAA,OAAO,GAAG,EAAV;EACD;;EACD;EACD;;EACDA,IAAAA,OAAO,CAAC1G,IAAR,CAAarK,CAAb;EACD,GATD;;EAUA,MAAI+Q,OAAO,CAACpS,MAAR,GAAiB,CAArB,EAAwB;EACtB8F,IAAAA,MAAM,CAAC4F,IAAP,CAAY0G,OAAZ;EACD;;EACD,SAAOtM,MAAP;EACD,CA1BD;;EA2BA,OAAc,GAAGoM,QAAjB;;EC7BA;;EACA,WAAa,GAAG,gBAAA,CAASxS,GAAT,EAAc;EAAA;;EAC5B,MAAIsS,OAAO,GAAGH,WAAQ,CAAC,IAAD,EAAOnS,GAAP,CAAtB,CAD4B;;EAG5BsS,EAAAA,OAAO,GAAGA,OAAO,CAAClG,GAAR,CAAY,UAAAwB,IAAI,EAAI;EAC5B,WAAO,KAAI,CAAC1B,SAAL,CAAe0B,IAAI,CAAC,CAAD,CAAJ,CAAQxI,EAAvB,EAA2BwI,IAAI,CAACtN,MAAhC,CAAP;EACD,GAFS,CAAV;EAGA,SAAOgS,OAAP;EACD,CAPD;;;;EAUA,OAAW,GAAG,YAAA,CAAStS,GAAT,EAAc;EAC1B,MAAIsS,OAAO,GAAGH,WAAQ,CAAC,IAAD,EAAOnS,GAAP,EAAY,IAAZ,CAAtB;EACA,SAAOsS,OAAO,CAAChS,MAAR,GAAiB,CAAxB;EACD,CAHD;;;;EAMA,SAAW,GAAG,cAAA,CAASN,GAAT,EAAc;EAAA;;EAC1B,MAAIsS,OAAO,GAAGE,GAAQ,CAAC,IAAD,EAAOxS,GAAP,CAAtB,CAD0B;;EAG1BsS,EAAAA,OAAO,GAAGA,OAAO,CAAClG,GAAR,CAAY,UAAAwB,IAAI,EAAI;EAC5B,WAAO,MAAI,CAAC1B,SAAL,CAAe0B,IAAI,CAAC,CAAD,CAAJ,CAAQxI,EAAvB,EAA2BwI,IAAI,CAACtN,MAAhC,CAAP;EACD,GAFS,CAAV;EAGA,SAAOgS,OAAP;EACD,CAPD;;;;EAUA,WAAa,GAAG,cAAA,CAAS1M,GAAT,EAAcW,KAAd,EAAqB;EAAA;;EACnC,MAAIoM,OAAO,GAAG,EAAd;EACA,MAAI/G,KAAK,GAAG,KAAKA,KAAL,EAAZ;EACA,MAAIgH,QAAQ,GAAG,KAAf;;EACA,OAAK,IAAI1S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAI2S,GAAG,GAAGjH,KAAK,CAAC1L,CAAD,CAAL,CAAS+K,KAAT,CAAerF,GAAf,EAAoBW,KAApB,CAAV;;EACA,QAAIsM,GAAG,KAAK,IAAZ,EAAkB;EAChB,UAAID,QAAQ,KAAK,IAAjB,EAAuB;;EAErBD,QAAAA,OAAO,CAACA,OAAO,CAACrS,MAAR,GAAiB,CAAlB,CAAP,CAA4B0L,IAA5B,CAAiCJ,KAAK,CAAC1L,CAAD,CAAtC;EACD,OAHD,MAGO;EACLyS,QAAAA,OAAO,CAAC3G,IAAR,CAAa,CAACJ,KAAK,CAAC1L,CAAD,CAAN,CAAb,EADK;EAEN;;EACD0S,MAAAA,QAAQ,GAAGC,GAAX;EACD;EACF,GAfkC;;;EAiBnCF,EAAAA,OAAO,GAAGA,OAAO,CACdpG,MADO,CACA,UAAA/L,CAAC;EAAA,WAAIA,CAAC,CAACF,MAAF,GAAW,CAAf;EAAA,GADD,EAEP8L,GAFO,CAEH,UAAApC,GAAG,EAAI;EACV,WAAO,MAAI,CAACkC,SAAL,CAAelC,GAAG,CAAC,CAAD,CAAH,CAAO5E,EAAtB,EAA0B4E,GAAG,CAAC1J,MAA9B,CAAP;EACD,GAJO,CAAV;EAKA,SAAOqS,OAAP;EACD,CAvBD;;;;;;;;;MC1BMG,SACJ,gBAAY1N,EAAZ,EAAgB9E,MAAhB,EAAwBuL,IAAxB,EAA8B;EAAA;;EAC5B,OAAKvG,KAAL,GAAaF,EAAb;EACA,OAAK9E,MAAL,GAAcA,MAAd;EACA,OAAK0I,GAAL,GAAW,QAAX,CAH4B;;EAI5B7G,EAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;EAClCC,IAAAA,UAAU,EAAE,KADsB;EAElCC,IAAAA,QAAQ,EAAE,IAFwB;EAGlCC,IAAAA,KAAK,EAAErH;EAH2B,GAApC;EAKA1J,EAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCC,IAAAA,UAAU,EAAE,KADuB;EAEnCC,IAAAA,QAAQ,EAAE,IAFyB;EAGnCC,IAAAA,KAAK,EAAE;EAH4B,GAArC;EAKD;;;;EAIHJ,MAAM,CAAC7I,SAAP,CAAiBiC,SAAjB,GAA6B,UAAS9G,EAAT,EAAa9E,MAAb,EAAqB;EAChD,MAAIiB,CAAC,GAAG,IAAIuR,MAAJ,CAAW1N,EAAX,EAAe9E,MAAf,EAAuB,KAAKuL,IAA5B,CAAR;;EACA,MAAI,KAAKgE,KAAT,EAAgB;EACdtO,IAAAA,CAAC,CAACsO,KAAF,GAAU,KAAKA,KAAf;EACAtO,IAAAA,CAAC,CAACsO,KAAF,CAAQjE,KAAR,GAAgB,IAAhB;EACD;;EACD,SAAOrK,CAAP;EACD,CAPD;;;;;;;EAcAY,MAAM,CAACiH,MAAP,CAAc0J,MAAM,CAAC7I,SAArB,EAAgCkJ,KAAhC;EACAhR,MAAM,CAACiH,MAAP,CAAc0J,MAAM,CAAC7I,SAArB,EAAgCyB,SAAhC;;EAGA,IAAM0H,OAAO,GAAG;EACdxK,EAAAA,IAAI,EAAE;EADQ,CAAhB;EAGAzG,MAAM,CAACC,IAAP,CAAYgR,OAAZ,EAAqB/Q,OAArB,CAA6B,UAAAnB,CAAC;EAAA,SAAK4R,MAAM,CAAC7I,SAAP,CAAiB/I,CAAjB,IAAsB4R,MAAM,CAAC7I,SAAP,CAAiBmJ,OAAO,CAAClS,CAAD,CAAxB,CAA3B;EAAA,CAA9B;EAEA,YAAc,GAAG4R,MAAjB;;EC9CA;MACMO;;;EACJ,kBAAwB;EAAA,QAAZvD,KAAY,uEAAJ,EAAI;;EAAA;;;EAEtB3N,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCC,MAAAA,UAAU,EAAE,KADuB;EAEnCE,MAAAA,KAAK,EAAEpD;EAF4B,KAArC;EAID;;;;;;0BAEGlH,MAAM;EACR,WAAKkH,KAAL,CAAWlH,IAAI,CAACxD,EAAhB,IAAsBwD,IAAtB;EACA,aAAO,IAAP;EACD;;;;;0BAEGxD,IAAI;EACN,aAAO,KAAK0K,KAAL,CAAW1K,EAAX,CAAP;EACD;;;;;6BAEMA,IAAI;EACT,aAAO,KAAK0K,KAAL,CAAW1K,EAAX,CAAP;EACD;;;4BACKyG,MAAM;EACV1J,MAAAA,MAAM,CAACiH,MAAP,CAAc,KAAK0G,KAAnB,EAA0BjE,IAAI,CAACiE,KAA/B;EACA,aAAO,IAAP;EACD;;;;;8BAEO;EACN,aAAO;EACLA,QAAAA,KAAK,EAAE3N,MAAM,CAACC,IAAP,CAAY,KAAK0N,KAAjB,EAAwBxP;EAD1B,OAAP;EAGD;;;;;;;;EAIH+S,IAAI,CAACpJ,SAAL,CAAewB,KAAf,GAAuB,YAAW;EAAA;;EAChC,MAAIrJ,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAY,KAAK0N,KAAjB,CAAX;EACA,MAAIA,KAAK,GAAG1N,IAAI,CAAC4B,MAAL,CAAY,UAACjD,CAAD,EAAIG,CAAJ,EAAU;EAChC,QAAIS,CAAC,GAAG,KAAI,CAACmO,KAAL,CAAW5O,CAAX,EAAcuK,KAAd,EAAR;;EACA1K,IAAAA,CAAC,CAACY,CAAC,CAACyD,EAAH,CAAD,GAAUzD,CAAV;EACA,WAAOZ,CAAP;EACD,GAJW,EAIT,EAJS,CAAZ;EAKA,SAAO,IAAIsS,IAAJ,CAASvD,KAAT,CAAP;EACD,CARD;;EAUA,UAAc,GAAGuD,IAAjB;;EC7CA;;;;;;;;;;EAYA,IAAMC,SAAS,GAAG,uDAAlB;EACA,IAAMC,YAAY,GAAG,IAArB;EAEA,IAAM3Q,WAAS,GAAG,kBAAlB;EACA,IAAM4Q,UAAU,GAAG,sBAAnB;EACA,IAAMC,OAAO,GAAG,iBAAhB;;EACA,IAAMC,SAAS,GAAG,sHAAlB;EAEA,IAAMC,eAAe,GAAG,MAAxB;;EAGA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAS3T,IAAT,EAAe;EAClC,MAAIuP,GAAG,GAAG,EAAV,CADkC;;EAGlC,MAAIqE,KAAK,GAAG5T,IAAI,CAACH,KAAL,CAAW2T,OAAX,CAAZ;;EACA,OAAK,IAAIvT,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2T,KAAK,CAACvT,MAA1B,EAAkCJ,CAAC,EAAnC,EAAuC;;EAErC,QAAI8J,GAAG,GAAG6J,KAAK,CAAC3T,CAAD,CAAL,CAASJ,KAAT,CAAewT,SAAf,CAAV;;EACA,SAAK,IAAIhS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0I,GAAG,CAAC1J,MAAxB,EAAgCgB,CAAC,EAAjC,EAAqC;EACnCkO,MAAAA,GAAG,CAACxD,IAAJ,CAAShC,GAAG,CAAC1I,CAAD,CAAZ;EACD;EACF;;EACD,SAAOkO,GAAP;EACD,CAZD;;;;EAeA,IAAMsE,UAAU,GAAG,SAAbA,UAAa,CAAS9T,GAAT,EAAc+T,OAAd,EAAuB;;EAExC,MAAInR,WAAS,CAACC,IAAV,CAAe7C,GAAf,MAAwB,IAA5B,EAAkC;EAChC,WAAO,KAAP;EACD,GAJuC;;;EAMxC,MAAIwT,UAAU,CAAC3Q,IAAX,CAAgB7C,GAAhB,MAAyB,IAA7B,EAAmC;EACjC,WAAO,KAAP;EACD,GARuC;;;EAUxC,MAAI0T,SAAS,CAAC7Q,IAAV,CAAe7C,GAAf,MAAwB,KAA5B,EAAmC;EACjC,WAAO,KAAP;EACD;;EAED,MAAI4M,GAAG,GAAG5M,GAAG,CAACmD,OAAJ,CAAY,yCAAZ,EAAuD,EAAvD,CAAV;EACA,MAAI2M,KAAK,GAAGlD,GAAG,CAAC9M,KAAJ,CAAU,GAAV,CAAZ;EACA,MAAIkU,QAAQ,GAAGlE,KAAK,CAACA,KAAK,CAACxP,MAAN,GAAe,CAAhB,CAAL,CAAwB0C,WAAxB,EAAf,CAhBwC;;EAkBxC,MAAI+Q,OAAO,CAACtO,cAAR,CAAuBuO,QAAvB,CAAJ,EAAsC;EACpC,WAAO,KAAP;EACD,GApBuC;;;;;;EAyBxC,SAAO,IAAP;EACD,CA1BD;;EA4BA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAShU,IAAT,EAAesG,KAAf,EAAsB;EAC3C,MAAIwN,OAAO,GAAGxN,KAAK,CAACsJ,KAAN,CAAYvH,aAA1B;EAEArI,EAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;EACAA,EAAAA,IAAI,GAAGoL,MAAM,CAACpL,IAAD,CAAb;EACA,MAAIiU,SAAS,GAAG,EAAhB,CAL2C;;EAO3C,MAAIC,MAAM,GAAG,EAAb,CAP2C;;EAS3C,MAAI,CAAClU,IAAD,IAAS,OAAOA,IAAP,KAAgB,QAAzB,IAAqCsT,YAAY,CAAC1Q,IAAb,CAAkB5C,IAAlB,MAA4B,KAArE,EAA4E;EAC1E,WAAOiU,SAAP;EACD,GAX0C;;;EAa3C,MAAIE,MAAM,GAAGR,YAAY,CAAC3T,IAAD,CAAzB,CAb2C;;EAe3C,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkU,MAAM,CAAC9T,MAA3B,EAAmCJ,CAAC,EAApC,EAAwC;EACtC,QAAIwB,CAAC,GAAG0S,MAAM,CAAClU,CAAD,CAAd;;EACA,QAAIwB,CAAC,KAAK8D,SAAN,IAAmB9D,CAAC,KAAK,EAA7B,EAAiC;EAC/B;EACD,KAJqC;;;EAMtC,QAAI6R,YAAY,CAAC1Q,IAAb,CAAkBnB,CAAlB,MAAyB,KAA7B,EAAoC;;EAElC,UAAIyS,MAAM,CAACA,MAAM,CAAC7T,MAAP,GAAgB,CAAjB,CAAV,EAA+B;EAC7B6T,QAAAA,MAAM,CAACA,MAAM,CAAC7T,MAAP,GAAgB,CAAjB,CAAN,IAA6BoB,CAA7B;EACA;EACD,OAHD,MAGO,IAAI0S,MAAM,CAAClU,CAAC,GAAG,CAAL,CAAV,EAAmB;;EAExBkU,QAAAA,MAAM,CAAClU,CAAC,GAAG,CAAL,CAAN,GAAgBwB,CAAC,GAAG0S,MAAM,CAAClU,CAAC,GAAG,CAAL,CAA1B;EACA;EACD;EACF,KAhBqC;;;EAkBtCiU,IAAAA,MAAM,CAACnI,IAAP,CAAYtK,CAAZ;EACD,GAlC0C;;;;EAsC3C,OAAK,IAAIxB,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGiU,MAAM,CAAC7T,MAA3B,EAAmCJ,EAAC,EAApC,EAAwC;EACtC,QAAIQ,CAAC,GAAGyT,MAAM,CAACjU,EAAD,CAAd,CADsC;;EAGtC,QAAIiU,MAAM,CAACjU,EAAC,GAAG,CAAL,CAAN,IAAiB4T,UAAU,CAACpT,CAAD,EAAIqT,OAAJ,CAAV,KAA2B,KAAhD,EAAuD;EACrDI,MAAAA,MAAM,CAACjU,EAAC,GAAG,CAAL,CAAN,GAAgBQ,CAAC,IAAIyT,MAAM,CAACjU,EAAC,GAAG,CAAL,CAAN,IAAiB,EAArB,CAAjB;EACD,KAFD,MAEO,IAAIQ,CAAC,IAAIA,CAAC,CAACJ,MAAF,GAAW,CAApB,EAAuB;;;EAG5B4T,MAAAA,SAAS,CAAClI,IAAV,CAAetL,CAAf;EACAyT,MAAAA,MAAM,CAACjU,EAAD,CAAN,GAAY,EAAZ;EACD;EACF,GAjD0C;;;EAmD3C,MAAIgU,SAAS,CAAC5T,MAAV,KAAqB,CAAzB,EAA4B;EAC1B,WAAO,CAACL,IAAD,CAAP;EACD,GArD0C;;;;EAyD3C,OAAK,IAAIC,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGgU,SAAS,CAAC5T,MAA9B,EAAsCJ,GAAC,IAAI,CAA3C,EAA8C;EAC5C,QAAImU,EAAE,GAAGH,SAAS,CAAChU,GAAD,CAAT,CAAa+M,KAAb,CAAmB0G,eAAnB,CAAT;;EACA,QAAIU,EAAE,KAAK,IAAX,EAAiB;EACfH,MAAAA,SAAS,CAAChU,GAAC,GAAG,CAAL,CAAT,IAAoBmU,EAAE,CAAC,CAAD,CAAtB;EACAH,MAAAA,SAAS,CAAChU,GAAD,CAAT,GAAegU,SAAS,CAAChU,GAAD,CAAT,CAAaiD,OAAb,CAAqBwQ,eAArB,EAAsC,EAAtC,CAAf;EACD;EACF;;EACD,SAAOO,SAAP;EACD,CAjED;;EAmEA,gBAAc,GAAGD,cAAjB;;ECrIA,IAAMK,QAAQ,GAAG,IAAjB;EACA,IAAMC,UAAU,GAAG,UAAnB;EACA,IAAMC,WAAW,GAAG,OAApB;EACA,IAAMC,OAAO,GAAG,QAAhB;EAEA,IAAMC,OAAO,GAAG;EACd,OAAK,IADS;EAEd,OAAK,IAFS;;EAGd,OAAK,IAHS;;EAId,OAAK,IAJS;;EAKd,QAAM,IALQ;EAMd,SAAO,IANO;;EAAA,CAAhB;;EAUA,IAAMC,WAAS,GAAG,SAAZA,SAAY,CAAS3U,GAAT,EAAc;;EAE9B,MAAI,sBAAsB6C,IAAtB,CAA2B7C,GAA3B,MAAoC,IAAxC,EAA8C;EAC5C,WAAO,KAAP;EACD,GAJ6B;;;EAM9B,MAAIkF,GAAG,GAAG,6DAAV;;EACA,MAAIA,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,MAAkB,IAAtB,EAA4B;EAC1B,WAAO,IAAP;EACD,GAT6B;;;;;;;EAe9B,SAAO,KAAP;EACD,CAhBD;;;EAmBA,IAAM4U,cAAc,GAAG,SAAjBA,cAAiB,CAAS5K,GAAT,EAAc;EACnC,OAAK,IAAI9J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8J,GAAG,CAAC1J,MAAJ,GAAa,CAAjC,EAAoCJ,CAAC,EAArC,EAAyC;EACvC,QAAIuU,OAAO,CAAC5R,IAAR,CAAamH,GAAG,CAAC9J,CAAD,CAAhB,CAAJ,EAA0B;EACxB8J,MAAAA,GAAG,CAAC9J,CAAC,GAAG,CAAL,CAAH,IAAc8J,GAAG,CAAC9J,CAAD,CAAH,GAAS8J,GAAG,CAAC9J,CAAC,GAAG,CAAL,CAA1B;EACA8J,MAAAA,GAAG,CAAC9J,CAAD,CAAH,GAAS,IAAT;EACA8J,MAAAA,GAAG,CAAC9J,CAAC,GAAG,CAAL,CAAH,GAAa,IAAb;EACD;EACF;;EACD,SAAO8J,GAAP;EACD,CATD;;EAWA,IAAM6K,YAAY,GAAG,SAAfA,YAAe,CAAS5Q,IAAT,EAAe;EAClC,MAAI+F,GAAG,GAAG,EAAV,CADkC;;EAGlC,MAAM8K,OAAO,GAAG7Q,IAAI,CAACnE,KAAL,CAAW,OAAX,CAAhB;;EACA,OAAK,IAAIwB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwT,OAAO,CAACxU,MAA5B,EAAoCgB,CAAC,EAArC,EAAyC;EACvC,QAAIA,CAAC,KAAKwT,OAAO,CAACxU,MAAR,GAAiB,CAA3B,EAA8B;EAC5B0J,MAAAA,GAAG,CAACgC,IAAJ,CAAS8I,OAAO,CAACxT,CAAD,CAAhB;EACD,KAFD,MAEO;EACL0I,MAAAA,GAAG,CAACgC,IAAJ,CAAS8I,OAAO,CAACxT,CAAD,CAAP,GAAa,GAAtB;EACD;EACF;;EACD,SAAO0I,GAAP;EACD,CAZD;;;EAeA,IAAM+K,UAAU,GAAG,SAAbA,UAAa,CAAS/U,GAAT,EAAc;EAC/B,MAAIoG,MAAM,GAAG,EAAb;EACA,MAAI4D,GAAG,GAAG,EAAV,CAF+B;;EAI/BhK,EAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;;EACA,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;EAC3BA,IAAAA,GAAG,GAAGqL,MAAM,CAACrL,GAAD,CAAZ;EACD;;EAED,MAAM8P,KAAK,GAAG9P,GAAG,CAACF,KAAJ,CAAU0U,WAAV,CAAd;;EACA,OAAK,IAAItU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4P,KAAK,CAACxP,MAA1B,EAAkCJ,CAAC,EAAnC,EAAuC;;EAErC,QAAIyU,WAAS,CAAC7E,KAAK,CAAC5P,CAAD,CAAN,CAAT,KAAwB,IAA5B,EAAkC;EAChC8J,MAAAA,GAAG,GAAGA,GAAG,CAACkE,MAAJ,CAAW2G,YAAY,CAAC/E,KAAK,CAAC5P,CAAD,CAAN,CAAvB,CAAN;EACA;EACD;;EACD8J,IAAAA,GAAG,CAACgC,IAAJ,CAAS8D,KAAK,CAAC5P,CAAD,CAAd;EACD,GAjB8B;;;EAoB/B,MAAI8U,KAAK,GAAG,EAAZ;;EACA,OAAK,IAAI9U,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG8J,GAAG,CAAC1J,MAAxB,EAAgCJ,EAAC,EAAjC,EAAqC;EACnC,QAAI+D,IAAI,GAAG+F,GAAG,CAAC9J,EAAD,CAAd,CADmC;;EAGnC,QAAIoU,QAAQ,CAACzR,IAAT,CAAcoB,IAAd,MAAwB,IAAxB,IAAgCyQ,OAAO,CAACjP,cAAR,CAAuBxB,IAAvB,MAAiC,KAAjE,IAA0EsQ,UAAU,CAAC1R,IAAX,CAAgBoB,IAAhB,MAA0B,KAAxG,EAA+G;;EAE7G,UAAImC,MAAM,CAAC9F,MAAP,GAAgB,CAApB,EAAuB;EACrB8F,QAAAA,MAAM,CAACA,MAAM,CAAC9F,MAAP,GAAgB,CAAjB,CAAN,IAA6B0U,KAA7B;EACA5O,QAAAA,MAAM,CAAC4F,IAAP,CAAY/H,IAAZ;EACD,OAHD,MAGO;;EAELmC,QAAAA,MAAM,CAAC4F,IAAP,CAAYgJ,KAAK,GAAG/Q,IAApB;EACD;;EACD+Q,MAAAA,KAAK,GAAG,EAAR;EACD,KAVD,MAUO;EACLA,MAAAA,KAAK,IAAI/Q,IAAT;EACD;EACF,GArC8B;;;EAuC/B,MAAI+Q,KAAK,IAAI5O,MAAM,CAAC9F,MAAP,GAAgB,CAA7B,EAAgC;EAC9B8F,IAAAA,MAAM,CAACA,MAAM,CAAC9F,MAAP,GAAgB,CAAjB,CAAN,IAA6B0U,KAA7B,CAD8B;EAE/B,GAzC8B;;;EA2C/B5O,EAAAA,MAAM,GAAGwO,cAAc,CAACxO,MAAD,CAAvB,CA3C+B;;EA6C/BA,EAAAA,MAAM,GAAGA,MAAM,CAACmG,MAAP,CAAc,UAAA7K,CAAC;EAAA,WAAIA,CAAJ;EAAA,GAAf,CAAT;EACA,SAAO0E,MAAP;EACD,CA/CD;;EAgDA,YAAc,GAAG2O,UAAjB;;ECpGA,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAAArJ,KAAK,EAAI;EACxBA,EAAAA,KAAK,CAACvJ,OAAN,CAAc,UAACuG,IAAD,EAAO1I,CAAP,EAAa;EACzB,QAAIA,CAAC,GAAG,CAAR,EAAW;EACT0I,MAAAA,IAAI,CAAC2C,IAAL,GAAYK,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAAL,CAAakF,EAAzB;EACD;;EACD,QAAIwG,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAAT,EAAkB;EAChB0I,MAAAA,IAAI,CAAC4C,IAAL,GAAYI,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAAL,CAAakF,EAAzB;EACD;EACF,GAPD;EAQD,CATD;;;;EAYA,IAAM8P,QAAQ,GAAG,SAAXA,QAAW,GAAiC;EAAA,MAAxBjV,IAAwB,uEAAjB,EAAiB;EAAA,MAAbsG,KAAa;EAAA,MAANsF,IAAM;;;EAEhD,MAAI,OAAO5L,IAAP,KAAgB,QAApB,EAA8B;EAC5B,QAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;EAC5BA,MAAAA,IAAI,GAAGoL,MAAM,CAACpL,IAAD,CAAb;EACD;EACF,GAN+C;;;EAQhD,MAAIiU,SAAS,GAAGD,YAAc,CAAChU,IAAD,EAAOsG,KAAP,CAA9B;EACA2N,EAAAA,SAAS,GAAGA,SAAS,CAAC9H,GAAV,CAAc,UAAApM,GAAG;EAAA,WAAImV,QAAU,CAACnV,GAAD,CAAd;EAAA,GAAjB,CAAZ,CATgD;;EAYhD6L,EAAAA,IAAI,GAAGA,IAAI,IAAI,IAAIwH,MAAJ,EAAf;EAEA,MAAI+B,OAAO,GAAGlB,SAAS,CAAC9H,GAAV,CAAc,UAAAR,KAAK,EAAI;EACnCA,IAAAA,KAAK,GAAGA,KAAK,CAACQ,GAAN,CAAU,UAAApM,GAAG,EAAI;EACvB,UAAI4I,IAAI,GAAG,IAAIwC,MAAJ,CAASpL,GAAT,CAAX;EACA6L,MAAAA,IAAI,CAACV,GAAL,CAASvC,IAAT;EACA,aAAOA,IAAP;EACD,KAJO,CAAR,CADmC;;EAOnCqM,IAAAA,QAAQ,CAACrJ,KAAD,CAAR,CAPmC;;EAUnC,WAAO,IAAIkH,QAAJ,CAAWlH,KAAK,CAAC,CAAD,CAAL,CAASxG,EAApB,EAAwBwG,KAAK,CAACtL,MAA9B,EAAsCuL,IAAtC,CAAP;EACD,GAXa,CAAd,CAdgD;;EA2BhD,SAAOuJ,OAAP;EACD,CA5BD;;;EA+BA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAASpV,IAAT,EAAeqV,OAAf,EAAwB;EACxC,SAAOrV,IAAI,CAACH,KAAL,CAAW,GAAX,EAAgBsM,GAAhB,CAAoB,UAAApM,GAAG,EAAI;EAChC,QAAIuV,OAAO,GAAGvV,GAAG,CAACF,KAAJ,CAAU,GAAV,CAAd;EACAyV,IAAAA,OAAO,GAAGA,OAAO,CAACnJ,GAAR,CAAY,UAAA/K,CAAC;EAAA,aAAImU,QAAQ,CAACnU,CAAD,EAAI,EAAJ,CAAZ;EAAA,KAAb,CAAV,CAFgC;;EAIhC,WAAOkU,OAAO,CAACnJ,GAAR,CAAY,UAAAqJ,GAAG,EAAI;EACxB,UAAI,CAACH,OAAO,CAACG,GAAD,CAAZ,EAAmB;EACjB1L,QAAAA,OAAO,CAAC2L,IAAR,CAAa,6CAA6CD,GAA1D;EACD;;EACD,aAAOH,OAAO,CAACG,GAAD,CAAd;EACD,KALM,CAAP;EAMD,GAVM,CAAP;EAWD,CAZD;;;;EAeA,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAAStG,IAAT,EAAe9I,KAAf,EAAsB;EACrC,MAAI,OAAO8I,IAAP,KAAgB,QAApB,EAA8B;EAC5BA,IAAAA,IAAI,GAAGuG,IAAI,CAACC,KAAL,CAAWxG,IAAX,CAAP;EACD;;EACD,MAAIxD,IAAI,GAAG,IAAIwH,MAAJ,EAAX,CAJqC;;EAMrC,MAAI+B,OAAO,GAAG/F,IAAI,CAACzB,IAAL,CAAUxB,GAAV,CAAc,UAAA9K,CAAC,EAAI;;EAE/B,QAAIsK,KAAK,GAAGuJ,QAAU,CAAC7T,CAAC,CAAC,CAAD,CAAF,CAAtB,CAF+B;;EAI/B,QAAIwU,MAAM,GAAGT,SAAS,CAAC/T,CAAC,CAAC,CAAD,CAAF,EAAO+N,IAAI,CAACxJ,IAAZ,CAAtB,CAJ+B;;EAM/B+F,IAAAA,KAAK,GAAGA,KAAK,CAACQ,GAAN,CAAU,UAACpM,GAAD,EAAME,CAAN,EAAY;EAC5B,UAAI0I,IAAI,GAAG,IAAIwC,MAAJ,CAASpL,GAAT,CAAX;EACA8V,MAAAA,MAAM,CAAC5V,CAAD,CAAN,CAAUmC,OAAV,CAAkB,UAAAuD,GAAG;EAAA,eAAIgD,IAAI,CAAChD,GAAL,CAASA,GAAT,EAAc,EAAd,EAAkBW,KAAlB,CAAJ;EAAA,OAArB;EACAsF,MAAAA,IAAI,CAACV,GAAL,CAASvC,IAAT;EACA,aAAOA,IAAP;EACD,KALO,CAAR,CAN+B;;EAa/BqM,IAAAA,QAAQ,CAACrJ,KAAD,CAAR,CAb+B;;EAe/B,WAAO,IAAIkH,QAAJ,CAAWlH,KAAK,CAAC,CAAD,CAAL,CAASxG,EAApB,EAAwBwG,KAAK,CAACtL,MAA9B,EAAsCuL,IAAtC,CAAP;EACD,GAhBa,CAAd;EAiBA,SAAOuJ,OAAP;EACD,CAxBD;;EA0BA,gBAAc,GAAG;EACfF,EAAAA,QAAQ,EAARA,QADe;EAEfS,EAAAA,QAAQ,EAARA;EAFe,CAAjB;;EC5FA,YAAc,GAAG,YAAjB;;ECAA,SAAc,GAAC;EACb,iBAAe,aADF;EAEb,iBAAe,cAFF;EAGb,kBAAgB,gBAHH;EAIb,WAAS,YAJI;EAKb,UAAQ,oGALK;EAMb,YAAU,0BANG;EAOb,eAAa,4DAPA;EAQb,eAAa,gBARA;EASb,YAAU,6CATG;EAUb,cAAY,sBAVC;EAWb,kBAAgB,+CAXH;EAYb,YAAU,cAZG;EAab,iBAAe,0KAbF;EAcb,aAAW,gFAdE;EAeb,cAAY,wuBAfC;EAgBb,WAAS,+WAhBI;EAiBb,eAAa,2cAjBA;EAkBb,gBAAc,+8CAlBD;EAmBb,iBAAe,wgCAnBF;EAoBb,gBAAc,ghFApBD;EAqBb,UAAQ,8rBArBK;EAsBb,kBAAgB,u1EAtBH;EAuBb,aAAW,gzBAvBE;EAwBb,gBAAc,qGAxBD;EAyBb,cAAY,8SAzBC;EA0Bb,UAAQ,8lDA1BK;EA2Bb,kBAAgB,ubA3BH;EA4Bb,WAAS,ufA5BI;EA6Bb,aAAW,yyDA7BE;EA8Bb,YAAU,kvCA9BG;EA+Bb,gBAAc,0wKA/BD;EAgCb,aAAW,gEAhCE;EAiCb,WAAS,kGAjCI;EAkCb,eAAa,sLAlCA;EAmCb,cAAY,mhDAnCC;EAoCb,cAAY,88HApCC;EAqCb,YAAU,8gBArCG;EAsCb,UAAQ,kHAtCK;EAuCb,iBAAe,g5FAvCF;EAwCb,WAAS,wEAxCI;EAyCb,eAAa,6+FAzCA;EA0Cb,gBAAc,sqDA1CD;EA2Cb,eAAa,qNA3CA;EA4Cb,aAAW,8KA5CE;EA6Cb,cAAY,8JA7CC;EA8Cb,gBAAc,wUA9CD;EA+Cb,YAAU,4hBA/CG;EAgDb,iBAAe,wTAhDF;EAiDb,gBAAc;EAjDD,CAAf;;ECAA,IAAMI,MAAM,GAAG,CAAC,QAAD,EAAW,OAAX,EAAoB,cAApB,CAAf;EAEA,SAAc,GAAG;EACfC,EAAAA,IAAI,EAAE;EACJpL,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB;EADF,GADS;;EAKfqL,EAAAA,QAAQ,EAAE;EACRjN,IAAAA,GAAG,EAAE,MADG;EAER4B,IAAAA,IAAI,EAAE;EAFE,GALK;;EAUf9C,EAAAA,UAAU,EAAE;EACVkB,IAAAA,GAAG,EAAE;EADK,GAVG;;EAefkN,EAAAA,MAAM,EAAE;EACNlN,IAAAA,GAAG,EAAE,CAAC,YAAD,EAAe,UAAf,CADC;EAEN4B,IAAAA,IAAI,EAAE,CAAC,OAAD,EAAU,cAAV;EAFA,GAfO;EAmBfuL,EAAAA,SAAS,EAAE;EACTnN,IAAAA,GAAG,EAAE;EADI,GAnBI;EAsBfoN,EAAAA,QAAQ,EAAE;EACRpN,IAAAA,GAAG,EAAE,WADG;EAER4B,IAAAA,IAAI,EAAE,CAAC,YAAD,EAAe,UAAf;EAFE,GAtBK;EA0BfyL,EAAAA,UAAU,EAAE;EACVrN,IAAAA,GAAG,EAAE,WADK;EAEV4B,IAAAA,IAAI,EAAE,CAAC,UAAD,EAAa,UAAb;EAFI,GA1BG;EA8Bf0L,EAAAA,QAAQ,EAAE;EACRtN,IAAAA,GAAG,EAAE,QADG;EAER4B,IAAAA,IAAI,EAAE,CAAC,WAAD;EAFE,GA9BK;EAkCf2L,EAAAA,SAAS,EAAE;EACTvN,IAAAA,GAAG,EAAE,MADI;EAET4B,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,UAAd;EAFG,GAlCI;;EAwCf4L,EAAAA,KAAK,EAAE;EACLxN,IAAAA,GAAG,EAAE,UADA;EAEL4B,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,cAAX;EAFD,GAxCQ;EA4Cf6L,EAAAA,OAAO,EAAE;EACPzN,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV,CADE;EAEP4B,IAAAA,IAAI,EAAE,CAAC,MAAD;EAFC,GA5CM;EAgDf8L,EAAAA,IAAI,EAAE;EACJ1N,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV,CADD;EAEJ4B,IAAAA,IAAI,EAAE,CAAC,SAAD;EAFF,GAhDS;EAoDf+L,EAAAA,MAAM,EAAE;EACN3N,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV;EADC,GApDO;EAuDf4N,EAAAA,OAAO,EAAE;EACP5N,IAAAA,GAAG,EAAE;EADE,GAvDM;;EA4Df6N,EAAAA,YAAY,EAAE;EACZ7N,IAAAA,GAAG,EAAE,CAAC,UAAD,EAAa,YAAb,CADO;EAEZ4B,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,OAAX;EAFM,GA5DC;EAgEfkM,EAAAA,UAAU,EAAE;EACV9N,IAAAA,GAAG,EAAE;EADK,GAhEG;EAmEf+N,EAAAA,MAAM,EAAE;EACN/N,IAAAA,GAAG,EAAE;EADC,GAnEO;EAsEfgO,EAAAA,OAAO,EAAE;EACPhO,IAAAA,GAAG,EAAE;EADE,GAtEM;;EA2EftC,EAAAA,MAAM,EAAE;EACNsC,IAAAA,GAAG,EAAE,MADC;EAEN4B,IAAAA,IAAI,EAAE,CAAC,UAAD;EAFA,GA3EO;;EAgFfqM,EAAAA,WAAW,EAAE;EACXjO,IAAAA,GAAG,EAAE;EADM,GAhFE;EAmFfkO,EAAAA,OAAO,EAAE;EACPlO,IAAAA,GAAG,EAAE,MADE;EAEP4B,IAAAA,IAAI,EAAEmL;EAFC,GAnFM;;EAwFf3O,EAAAA,KAAK,EAAE;EACL4B,IAAAA,GAAG,EAAE,MADA;EAEL4B,IAAAA,IAAI,EAAEmL;EAFD,GAxFQ;;EA6FfoB,EAAAA,QAAQ,EAAE;EACRnO,IAAAA,GAAG,EAAE,MADG;EAER4B,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,OAAX;EAFE,GA7FK;;EAkGfwM,EAAAA,IAAI,EAAE;EACJpO,IAAAA,GAAG,EAAE,MADD;EAEJ4B,IAAAA,IAAI,EAAEmL;EAFF,GAlGS;;EAuGfsB,EAAAA,OAAO,EAAE;EACPrO,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,YAAT,CADE;EAEP4B,IAAAA,IAAI,EAAEmL;EAFC,GAvGM;;EA4GfrN,EAAAA,UAAU,EAAE;EACVM,IAAAA,GAAG,EAAE,MADK;;EAAA;EA5GG,CAAjB;;ECFA,SAAc,GAAG;EACfpC,EAAAA,IAAI,EAAE;EACJgE,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB,EAAgC,OAAhC;EADF,GADS;;EAKf1D,EAAAA,YAAY,EAAE;EACZ8B,IAAAA,GAAG,EAAE,MADO;EAEZ4B,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,QAAd,EAAwB,aAAxB;EAFM,GALC;;EAUf9D,EAAAA,UAAU,EAAE;EACVkC,IAAAA,GAAG,EAAE,cADK;EAEV4B,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,QAAd;EAFI,GAVG;;EAef3D,EAAAA,MAAM,EAAE;EACN+B,IAAAA,GAAG,EAAE,cADC;EAEN4B,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,QAAd,EAAwB,aAAxB;EAFA,GAfO;;EAoBf5D,EAAAA,SAAS,EAAE;EACTgC,IAAAA,GAAG,EAAE,MADI;EAET4B,IAAAA,IAAI,EAAE,CAAC,aAAD;EAFG,GApBI;;EAyBf0M,EAAAA,WAAW,EAAE;EACXtO,IAAAA,GAAG,EAAE;EADM,GAzBE;;EA8BfuO,EAAAA,MAAM,EAAE;EACNvO,IAAAA,GAAG,EAAE;EADC,GA9BO;;EAkCfwO,EAAAA,KAAK,EAAE;EACLxO,IAAAA,GAAG,EAAE,MADA;EAEL4B,IAAAA,IAAI,EAAE,CAAC,YAAD;EAFD,GAlCQ;;EAuCf6M,EAAAA,YAAY,EAAE;EACZzO,IAAAA,GAAG,EAAE,MADO;EAEZ4B,IAAAA,IAAI,EAAE;EAFM,GAvCC;EA2Cf8M,EAAAA,UAAU,EAAE;EACV1O,IAAAA,GAAG,EAAE;EADK,GA3CG;;EA+Cf7B,EAAAA,UAAU,EAAE;EACV6B,IAAAA,GAAG,EAAE;EADK,GA/CG;;EAmDf2O,EAAAA,WAAW,EAAE;EACX3O,IAAAA,GAAG,EAAE;EADM,GAnDE;;EAuDf4O,EAAAA,QAAQ,EAAE;EACR5O,IAAAA,GAAG,EAAE;EADG;EAvDK,CAAjB;;ECAA,UAAc,GAAG;EACf6O,EAAAA,KAAK,EAAE;EACLjN,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB;EADD,GADQ;EAIfkN,EAAAA,OAAO,EAAE;EACP9O,IAAAA,GAAG,EAAE,OADE;EAEP4B,IAAAA,IAAI,EAAE,CAAC,UAAD;EAFC,GAJM;EAQfmN,EAAAA,QAAQ,EAAE;EACR/O,IAAAA,GAAG,EAAE,OADG;EAER4B,IAAAA,IAAI,EAAE,CAAC,SAAD;EAFE,GARK;EAYfoN,EAAAA,YAAY,EAAE;EACZhP,IAAAA,GAAG,EAAE,UADO;;EAEZ4B,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,WAAZ;EAFM,GAZC;EAgBfqN,EAAAA,SAAS,EAAE;EACTjP,IAAAA,GAAG,EAAE,OADI;EAET4B,IAAAA,IAAI,EAAE,CAAC,cAAD;EAFG,GAhBI;EAoBfsN,EAAAA,YAAY,EAAE;EACZlP,IAAAA,GAAG,EAAE,OADO;EAEZ4B,IAAAA,IAAI,EAAE,CAAC,WAAD;EAFM,GApBC;EAwBfuN,EAAAA,KAAK,EAAE;EACLnP,IAAAA,GAAG,EAAE;EADA,GAxBQ;EA2BfoP,EAAAA,OAAO,EAAE;EACPpP,IAAAA,GAAG,EAAE;EADE;EA3BM,CAAjB;;ECAA,IAAM3D,QAAQ,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,WAAjB,EAA8B,QAA9B,EAAwC,OAAxC,CAAjB;EAEA,QAAc,GAAG;;EAEfgT,EAAAA,SAAS,EAAE;EACTzN,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,OAA3B;EADG,GAFI;;EAMf0N,EAAAA,UAAU,EAAE;EACVtP,IAAAA,GAAG,EAAE,CAAC,WAAD;EADK,GANG;;EAUfuP,EAAAA,WAAW,EAAE;EACXvP,IAAAA,GAAG,EAAE,CAAC,WAAD;EADM,GAVE;;EAcfwP,EAAAA,WAAW,EAAE;EACXxP,IAAAA,GAAG,EAAE,CAAC,WAAD,CADM;EAEX4B,IAAAA,IAAI,EAAE,CAAC,aAAD;EAFK,GAdE;EAmBf6N,EAAAA,WAAW,EAAE;EACXzP,IAAAA,GAAG,EAAE,CAAC,aAAD;EADM,GAnBE;EAsBf0P,EAAAA,MAAM,EAAE;EACN9N,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,WAAjB,EAA8B,OAA9B;EADA,GAtBO;;;EA4Bf+N,EAAAA,IAAI,EAAE;EACJ/N,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,aAAT,EAAwB,QAAxB,EAAkC,aAAlC,EAAiD,WAAjD;EADF,GA5BS;EA+BfgO,EAAAA,KAAK,EAAE;EACL5P,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,UAAT,CADA;EAEL4B,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,SAAT,EAAoB,MAApB;EAFD,GA/BQ;EAmCfiO,EAAAA,OAAO,EAAE;EACP7P,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADE,GAnCM;;EAwCf8P,EAAAA,UAAU,EAAE;EACVlO,IAAAA,IAAI,EAAEvF;EADI,GAxCG;EA2Cf0T,EAAAA,WAAW,EAAE;EACXnO,IAAAA,IAAI,EAAEvF;EADK,GA3CE;EA8Cf2T,EAAAA,WAAW,EAAE;EACXpO,IAAAA,IAAI,EAAEvF;EADK,GA9CE;;EAmDf4T,EAAAA,YAAY,EAAE;EACZrO,IAAAA,IAAI,EAAE,CAAC,YAAD;EADM,GAnDC;;EAwDfsO,EAAAA,QAAQ,EAAE,EAxDK;;EA0DfC,EAAAA,UAAU,EAAE;EACVvO,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,MAAtB,EAA8B,QAA9B;EADI,GA1DG;;EA8DfrC,EAAAA,YAAY,EAAE,EA9DC;;EAiEf6Q,EAAAA,GAAG,EAAE;EACHxO,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,aAAZ,EAA2B,MAA3B,EAAmC,WAAnC,EAAgD,OAAhD,EAAyD,WAAzD,EAAsE,OAAtE;EADH,GAjEU;EAoEfyO,EAAAA,WAAW,EAAE;EACXzO,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C,EAAuD,OAAvD;EADK,GApEE;EAuEf0O,EAAAA,OAAO,EAAE,EAvEM;EAwEfC,EAAAA,SAAS,EAAE;EACTvQ,IAAAA,GAAG,EAAE,CAAC,MAAD,CADI;EAET4B,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,OAA1C;EAFG,GAxEI;EA4Ef4O,EAAAA,KAAK,EAAE;EACL5O,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADD,GA5EQ;EA+Ef6O,EAAAA,QAAQ,EAAE;EACR7O,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADE,GA/EK;EAkFf8O,EAAAA,KAAK,EAAE;EACL9O,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADD,GAlFQ;;EAuFfnC,EAAAA,SAAS,EAAE;EACTmC,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,OAAtB;EADG,GAvFI;EA0Ff7C,EAAAA,OAAO,EAAE;EACP6C,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,cAAX;EADC,GA1FM;EA6Ff/D,EAAAA,QAAQ,EAAE;EACR+D,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,OAAtB;EADE,GA7FK;;EAiGf+O,EAAAA,SAAS,EAAE;EACT/O,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,MAAtB,EAA8B,OAA9B;EADG;EAjGI,CAAjB;;ECFA;EACA,IAAMgP,QAAQ,GAAG;EACf5D,EAAAA,IAAI,EAAE,MADS;EAGfpP,EAAAA,IAAI,EAAE,OAHS;EAIfC,EAAAA,QAAQ,EAAE,OAJK;EAMf8R,EAAAA,IAAI,EAAE,KANS;EAOfd,EAAAA,KAAK,EAAE,KAPQ;EASfQ,EAAAA,SAAS,EAAE,SATI;EAWfW,EAAAA,WAAW,EAAE,MAXE;EAYfD,EAAAA,WAAW,EAAE,MAZE;EAafD,EAAAA,UAAU,EAAE,MAbG;EAcfJ,EAAAA,MAAM,EAAE;EAdO,CAAjB;;;EAkBA,IAAMmB,SAAS,GAAG,SAAZA,SAAY,CAAShU,IAAT,EAAe;EAC/B1D,EAAAA,MAAM,CAACC,IAAP,CAAYyD,IAAZ,EAAkBxD,OAAlB,CAA0B,UAAAnB,CAAC,EAAI;EAC7B,QAAI0Y,QAAQ,CAAC1Y,CAAD,CAAZ,EAAiB;EACf2E,MAAAA,IAAI,CAAC3E,CAAD,CAAJ,CAAQ4Y,KAAR,GAAgBF,QAAQ,CAAC1Y,CAAD,CAAxB;EACA;EACD;;EACD2E,IAAAA,IAAI,CAAC3E,CAAD,CAAJ,CAAQ8H,GAAR,CAAY7C,IAAZ,CAAiB,UAAAxE,CAAC,EAAI;EACpB,UAAIiY,QAAQ,CAACjY,CAAD,CAAZ,EAAiB;EACfkE,QAAAA,IAAI,CAAC3E,CAAD,CAAJ,CAAQ4Y,KAAR,GAAgBF,QAAQ,CAACjY,CAAD,CAAxB;EACA,eAAO,IAAP;EACD;;EACD,aAAO,KAAP;EACD,KAND;EAOD,GAZD;EAaA,SAAOkE,IAAP;EACD,CAfD;;EAiBA,UAAc,GAAGgU,SAAjB;;ECpCA,IAAMlM,QAAM,GAAG,SAATA,MAAS,CAAS3D,GAAT,EAAc;EAC3B,SAAOA,GAAG,CAACuC,MAAJ,CAAW,UAAC1K,CAAD,EAAI3B,CAAJ,EAAOM,CAAP;EAAA,WAAaA,CAAC,CAACmE,OAAF,CAAU9C,CAAV,MAAiB3B,CAA9B;EAAA,GAAX,CAAP;EACD,CAFD;;;EAKA,IAAM6Z,QAAQ,GAAG,SAAXA,QAAW,CAASlU,IAAT,EAAe;EAC9B1D,EAAAA,MAAM,CAACC,IAAP,CAAYyD,IAAZ,EAAkBxD,OAAlB,CAA0B,UAAAnB,CAAC,EAAI;EAC7B,QAAI0E,GAAG,GAAGC,IAAI,CAAC3E,CAAD,CAAd;EACA,QAAI8Y,GAAG,GAAGpU,GAAG,CAACoD,GAAJ,CAAQ1I,MAAlB;;EACA,SAAK,IAAIJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8Z,GAApB,EAAyB9Z,CAAC,EAA1B,EAA8B;EAC5B,UAAIwK,IAAI,GAAG9E,GAAG,CAACoD,GAAJ,CAAQ9I,CAAR,CAAX;;EACA,UAAI2F,IAAI,CAAC6E,IAAD,CAAR,EAAgB;EACd9E,QAAAA,GAAG,CAACoD,GAAJ,GAAUpD,GAAG,CAACoD,GAAJ,CAAQkF,MAAR,CAAerI,IAAI,CAAC6E,IAAD,CAAJ,CAAW1B,GAA1B,CAAV;EACD;EACF,KAR4B;;;EAU7BpD,IAAAA,GAAG,CAACoD,GAAJ,GAAU2E,QAAM,CAAC/H,GAAG,CAACoD,GAAL,CAAhB;EACD,GAXD;EAYA,SAAOnD,IAAP;EACD,CAdD;;EAeA,QAAc,GAAGkU,QAAjB;;ECpBA,IAAMpM,QAAM,GAAG,SAATA,MAAS,CAAS3D,GAAT,EAAc;EAC3B,SAAOA,GAAG,CAACuC,MAAJ,CAAW,UAAC1K,CAAD,EAAI3B,CAAJ,EAAOM,CAAP;EAAA,WAAaA,CAAC,CAACmE,OAAF,CAAU9C,CAAV,MAAiB3B,CAA9B;EAAA,GAAX,CAAP;EACD,CAFD;;;;EAMA,IAAM+Z,SAAS,GAAG,SAAZA,SAAY,CAASpU,IAAT,EAAe;EAC/B,MAAIzD,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYyD,IAAZ,CAAX;EACAzD,EAAAA,IAAI,CAACC,OAAL,CAAa,UAAAnB,CAAC,EAAI;EAChB,QAAI0E,GAAG,GAAGC,IAAI,CAAC3E,CAAD,CAAd;EACA0E,IAAAA,GAAG,CAACgF,IAAJ,GAAWhF,GAAG,CAACgF,IAAJ,IAAY,EAAvB;EACAhF,IAAAA,GAAG,CAACoD,GAAJ,CAAQ3G,OAAR,CAAgB,UAAAqI,IAAI,EAAI;EACtB,UAAI7E,IAAI,CAAC6E,IAAD,CAAJ,IAAc7E,IAAI,CAAC6E,IAAD,CAAJ,CAAWE,IAA7B,EAAmC;;EAEjC,YAAIA,IAAI,GAAG,OAAO/E,IAAI,CAAC6E,IAAD,CAAJ,CAAWE,IAAlB,KAA2B,QAA3B,GAAsC,CAAC/E,IAAI,CAAC6E,IAAD,CAAJ,CAAW1B,GAAZ,CAAtC,GAAyDnD,IAAI,CAAC6E,IAAD,CAAJ,CAAWE,IAAX,IAAmB,EAAvF;EACAhF,QAAAA,GAAG,CAACgF,IAAJ,GAAWhF,GAAG,CAACgF,IAAJ,CAASsD,MAAT,CAAgBtD,IAAhB,CAAX;EACD;EACF,KAND,EAHgB;;EAWhB,SAAK,IAAI1K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EACpC,UAAMga,GAAG,GAAG9X,IAAI,CAAClC,CAAD,CAAhB;;EACA,UAAI2F,IAAI,CAACqU,GAAD,CAAJ,CAAUtP,IAAV,CAAejG,OAAf,CAAuBzD,CAAvB,MAA8B,CAAC,CAAnC,EAAsC;EACpC0E,QAAAA,GAAG,CAACgF,IAAJ,CAASoB,IAAT,CAAckO,GAAd;EACD;EACF,KAhBe;;;EAkBhBtU,IAAAA,GAAG,CAACgF,IAAJ,GAAW+C,QAAM,CAAC/H,GAAG,CAACgF,IAAL,CAAjB;EACD,GAnBD;EAoBA,SAAO/E,IAAP;EACD,CAvBD;;EAwBA,SAAc,GAAGoU,SAAjB;;EC9BA;EACA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAAStU,IAAT,EAAe;EAClC,MAAIzD,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYyD,IAAZ,CAAX;EACAzD,EAAAA,IAAI,CAACC,OAAL,CAAa,UAAAnB,CAAC,EAAI;EAChB,QAAI0E,GAAG,GAAGC,IAAI,CAAC3E,CAAD,CAAd;EACA0E,IAAAA,GAAG,CAACmD,OAAJ,GAAc,EAAd,CAFgB;;EAIhB,SAAK,IAAI7I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EACpC,UAAI2F,IAAI,CAACzD,IAAI,CAAClC,CAAD,CAAL,CAAJ,CAAc8I,GAAd,CAAkBrE,OAAlB,CAA0BzD,CAA1B,MAAiC,CAAC,CAAtC,EAAyC;EACvC0E,QAAAA,GAAG,CAACmD,OAAJ,CAAYiD,IAAZ,CAAiB5J,IAAI,CAAClC,CAAD,CAArB;EACD;EACF;EACF,GATD;EAUA,SAAO2F,IAAP;EACD,CAbD;;EAcA,YAAc,GAAGsU,YAAjB;;ECVA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAASvU,IAAT,EAAe;;EAE9B1D,EAAAA,MAAM,CAACC,IAAP,CAAYyD,IAAZ,EAAkBxD,OAAlB,CAA0B,UAAAnB,CAAC,EAAI;EAC7B,QAAI0E,GAAG,GAAGC,IAAI,CAAC3E,CAAD,CAAd,CAD6B;;EAG7B0E,IAAAA,GAAG,CAACoD,GAAJ,GAAUpD,GAAG,CAACoD,GAAJ,IAAW,EAArB;;EACA,QAAI,OAAOpD,GAAG,CAACoD,GAAX,KAAmB,QAAvB,EAAiC;EAC/BpD,MAAAA,GAAG,CAACoD,GAAJ,GAAU,CAACpD,GAAG,CAACoD,GAAL,CAAV;EACD,KAN4B;;;EAQ7BpD,IAAAA,GAAG,CAACgF,IAAJ,GAAWhF,GAAG,CAACgF,IAAJ,IAAY,EAAvB;;EACA,QAAI,OAAOhF,GAAG,CAACgF,IAAX,KAAoB,QAAxB,EAAkC;EAChChF,MAAAA,GAAG,CAACgF,IAAJ,GAAW,CAAChF,GAAG,CAACgF,IAAL,CAAX;EACD;EACF,GAZD;EAaA,SAAO/E,IAAP;EACD,CAhBD;;;EAmBA,IAAMwU,SAAS,GAAG,SAAZA,SAAY,CAASxU,IAAT,EAAe;;EAE/BA,EAAAA,IAAI,GAAGuU,QAAQ,CAACvU,IAAD,CAAf,CAF+B;;EAI/BA,EAAAA,IAAI,GAAGkU,IAAQ,CAAClU,IAAD,CAAf,CAJ+B;;EAM/BA,EAAAA,IAAI,GAAGoU,KAAS,CAACpU,IAAD,CAAhB,CAN+B;;EAQ/BA,EAAAA,IAAI,GAAGyU,MAAU,CAACzU,IAAD,CAAjB,CAR+B;;EAU/BA,EAAAA,IAAI,GAAGkD,QAAO,CAAClD,IAAD,CAAd;EACA,SAAOA,IAAP;EACD,CAZD;;EAaA,aAAc,GAAGwU,SAAjB;;EC9BA,IAAME,KAAK,GAAG,SAARA,KAAQ,CAASjP,GAAT,EAAczF,IAAd,EAAoB;EAChC1D,EAAAA,MAAM,CAACC,IAAP,CAAYkJ,GAAZ,EAAiBjJ,OAAjB,CAAyB,UAAAnB,CAAC,EAAI;EAC5B2E,IAAAA,IAAI,CAAC3E,CAAD,CAAJ,GAAUoK,GAAG,CAACpK,CAAD,CAAb;EACD,GAFD;EAGD,CAJD;;EAMA,IAAMsZ,KAAK,GAAG,SAARA,KAAQ,GAAM;EAClB,MAAI3U,IAAI,GAAG,EAAX;EACA0U,EAAAA,KAAK,CAACE,KAAD,EAAQ5U,IAAR,CAAL;EACA0U,EAAAA,KAAK,CAACG,KAAD,EAAQ7U,IAAR,CAAL;EACA0U,EAAAA,KAAK,CAACI,MAAD,EAAS9U,IAAT,CAAL;EACA0U,EAAAA,KAAK,CAACK,IAAD,EAAO/U,IAAP,CAAL,CALkB;;EAOlBA,EAAAA,IAAI,GAAGwU,SAAS,CAACxU,IAAD,CAAhB;EACA,SAAOA,IAAP;EACD,CATD;;EAUA,QAAc,GAAG2U,KAAK,EAAtB;;MCvB2BK,GAAG,GAAC,sCAAlB;EAAA,IAAyDhL,KAAK,GAACgL,GAAG,CAAC/a,KAAJ,CAAU,EAAV,EAAckE,MAAd,CAAqB,UAAS3C,CAAT,EAAWC,CAAX,EAAaV,CAAb,EAAe;EAAC,SAAOS,CAAC,CAACC,CAAD,CAAD,GAAKV,CAAL,EAAOS,CAAd;EAAgB,CAArD,EAAsD,EAAtD,CAA/D;EAAA,IAAyHyZ,WAAW,GAAC,SAAZA,WAAY,CAASzZ,CAAT,EAAW;EAAC,MAAG,KAAK,CAAL,KAASwZ,GAAG,CAACxZ,CAAD,CAAf,EAAmB,OAAOwZ,GAAG,CAACxZ,CAAD,CAAV;EAAc,MAAIC,CAAC,GAAC,CAAN;EAAA,MAAQV,CAAC,GAAC,EAAV;EAAA,MAAae,CAAC,GAAC,EAAf;;EAAkB,SAAKN,CAAC,IAAET,CAAR,EAAUS,CAAC,IAAET,CAAH,EAAKU,CAAC,EAAN,EAASV,CAAC,IAAE,EAAtB;AAAyB,EAAzB;;EAA0B,SAAKU,CAAC,EAAN,GAAU;EAAC,QAAMA,EAAC,GAACD,CAAC,GAAC,EAAV;;EAAaM,IAAAA,CAAC,GAAC0J,MAAM,CAAC0P,YAAP,CAAoB,CAACzZ,EAAC,GAAC,EAAF,GAAK,EAAL,GAAQ,EAAT,IAAaA,EAAjC,IAAoCK,CAAtC,EAAwCN,CAAC,GAAC,CAACA,CAAC,GAACC,EAAH,IAAM,EAAhD;EAAmD;;EAAA,SAAOK,CAAP;EAAS,CAAlT;EAAA,IAAmTqZ,aAAa,GAAC,SAAdA,aAAc,CAAS3Z,CAAT,EAAW;EAAC,MAAG,KAAK,CAAL,KAASwO,KAAK,CAACxO,CAAD,CAAjB,EAAqB,OAAOwO,KAAK,CAACxO,CAAD,CAAZ;EAAgB,MAAIC,CAAC,GAAC,CAAN;EAAA,MAAQV,CAAC,GAAC,CAAV;EAAA,MAAYe,CAAC,GAAC,EAAd;EAAA,MAAiBF,CAAC,GAAC,CAAnB;;EAAqB,SAAKb,CAAC,GAACS,CAAC,CAACf,MAAT,EAAgBgB,CAAC,IAAEK,CAAH,EAAKf,CAAC,EAAN,EAASe,CAAC,IAAE,EAA5B;AAA+B,EAA/B;;EAAgC,OAAI,IAAIf,EAAC,GAACS,CAAC,CAACf,MAAF,GAAS,CAAnB,EAAqBM,EAAC,IAAE,CAAxB,EAA0BA,EAAC,IAAGa,CAAC,IAAE,EAAjC,EAAoC;EAAC,QAAIE,EAAC,GAACN,CAAC,CAAC4Z,UAAF,CAAara,EAAb,IAAgB,EAAtB;;EAAyBe,IAAAA,EAAC,GAAC,EAAF,KAAOA,EAAC,IAAE,CAAV,GAAaL,CAAC,IAAEK,EAAC,GAACF,CAAlB;EAAoB;;EAAA,SAAOH,CAAP;EAAS,CAAlgB;;EAAmgB,IAAI4Z,QAAQ,GAAC;EAACJ,EAAAA,WAAW,EAACA,WAAb;EAAyBE,EAAAA,aAAa,EAACA;EAAvC,CAAb;EAAA,IAAmEG,OAAO,GAAC,SAARA,OAAQ,CAAS9Z,CAAT,EAAW;EAAC,MAAMC,CAAC,GAAC,IAAI+P,MAAJ,CAAW,yBAAX,CAAR;;EAA8C,OAAI,IAAIzQ,CAAC,GAAC,CAAV,EAAYA,CAAC,GAACS,CAAC,CAAC+Z,KAAF,CAAQ9a,MAAtB,EAA6BM,CAAC,EAA9B,EAAiC;EAAC,QAAMe,CAAC,GAACL,CAAC,CAAC+Z,IAAF,CAAOha,CAAC,CAAC+Z,KAAF,CAAQxa,CAAR,CAAP,CAAR;;EAA2B,QAAG,CAACe,CAAJ,EAAM;EAACN,MAAAA,CAAC,CAACia,QAAF,GAAW1a,CAAX;EAAa;EAAM;;EAAAS,IAAAA,CAAC,CAACka,IAAF,CAAOL,QAAQ,CAACF,aAAT,CAAuBrZ,CAAC,CAAC,CAAD,CAAxB,CAAP,IAAqCuZ,QAAQ,CAACF,aAAT,CAAuBrZ,CAAC,CAAC,CAAD,CAAxB,CAArC;EAAkE;;EAAAN,EAAAA,CAAC,CAAC+Z,KAAF,GAAQ/Z,CAAC,CAAC+Z,KAAF,CAAQjM,KAAR,CAAc9N,CAAC,CAACia,QAAhB,EAAyBja,CAAC,CAAC+Z,KAAF,CAAQ9a,MAAjC,CAAR;EAAiD,CAA/U;;EAAgV,IAAMkb,YAAY,GAAC,SAAbA,YAAa,CAASna,CAAT,EAAWC,CAAX,EAAaV,CAAb,EAAe;EAAC,MAAMe,CAAC,GAACuZ,QAAQ,CAACF,aAAT,CAAuB1Z,CAAvB,CAAR;EAAkC,SAAOK,CAAC,GAACN,CAAC,CAACia,QAAJ,GAAaja,CAAC,CAACka,IAAF,CAAO5Z,CAAP,CAAb,GAAuBf,CAAC,GAACe,CAAF,GAAI,CAAJ,GAAMN,CAAC,CAACia,QAAtC;EAA+C,CAApH;EAAA,IAAqHG,OAAO,GAAC,SAARA,OAAQ,CAASpa,CAAT,EAAW;EAAC,MAAMC,CAAC,GAAC,EAAR;EAAA,MAAWV,CAAC,GAAC,SAAFA,CAAE,CAACe,CAAD,EAAGF,CAAH,EAAO;EAAC,QAAIC,CAAC,GAACL,CAAC,CAAC+Z,KAAF,CAAQzZ,CAAR,CAAN;EAAiB,YAAMD,CAAC,CAAC,CAAD,CAAP,KAAaJ,CAAC,CAAC0K,IAAF,CAAOvK,CAAP,GAAUC,CAAC,GAACA,CAAC,CAACyN,KAAF,CAAQ,CAAR,CAAzB;EAAqC,QAAMzO,CAAC,GAACgB,CAAC,CAAC5B,KAAF,CAAQ,eAAR,CAAR;;EAAiC,SAAI,IAAI4B,EAAC,GAAC,CAAV,EAAYA,EAAC,GAAChB,CAAC,CAACJ,MAAhB,EAAuBoB,EAAC,IAAE,CAA1B,EAA4B;EAAC,UAAME,CAAC,GAAClB,CAAC,CAACgB,EAAD,CAAT;EAAA,UAAaxB,CAAC,GAACQ,CAAC,CAACgB,EAAC,GAAC,CAAH,CAAhB;EAAsB,UAAG,CAACE,CAAJ,EAAM;EAAS,UAAMT,CAAC,GAACM,CAAC,GAACG,CAAV;;EAAY,UAAG,QAAM1B,CAAN,IAAS,KAAK,CAAL,KAASA,CAArB,EAAuB;EAACoB,QAAAA,CAAC,CAAC0K,IAAF,CAAO7K,CAAP;EAAU;EAAS;;EAAA,UAAMN,CAAC,GAAC2a,YAAY,CAACna,CAAD,EAAGnB,CAAH,EAAKyB,CAAL,CAApB;EAA4Bf,MAAAA,CAAC,CAACC,CAAD,EAAGM,CAAH,CAAD;EAAO;EAAC,GAAzQ;;EAA0Q,SAAOP,CAAC,CAAC,CAAD,EAAG,EAAH,CAAD,EAAQU,CAAf;EAAiB,CAApa;EAAA,IAAqaoa,MAAM,GAAC,SAAPA,MAAO,CAASra,CAAT,EAAW;EAAC,MAAMC,CAAC,GAAC;EAAC8Z,IAAAA,KAAK,EAAC/Z,CAAC,CAACvB,KAAF,CAAQ,GAAR,CAAP;EAAoByb,IAAAA,IAAI,EAAC,EAAzB;EAA4BD,IAAAA,QAAQ,EAAC;EAArC,GAAR;EAAgD,SAAOja,CAAC,CAAC4L,KAAF,CAAQ,GAAR,KAAckO,OAAO,CAAC7Z,CAAD,CAArB,EAAyBma,OAAO,CAACna,CAAD,CAAvC;EAA2C,CAAnhB;;EAAohB,IAAIqa,QAAQ,GAACD,MAAb;EAAA,IAAoBE,UAAU,GAAC,SAAXA,UAAW,CAASva,CAAT,EAAW;EAAC,MAAMC,CAAC,GAACD,CAAC,CAACvB,KAAF,CAAQ,GAAR,EAAakE,MAAb,CAAoB,UAAC3C,CAAD,EAAGC,CAAH,EAAO;EAAC,QAAMV,CAAC,GAACU,CAAC,CAACxB,KAAF,CAAQ,GAAR,CAAR;EAAqB,WAAOuB,CAAC,CAACT,CAAC,CAAC,CAAD,CAAF,CAAD,GAAQA,CAAC,CAAC,CAAD,CAAT,EAAaS,CAApB;EAAsB,GAAvE,EAAwE,EAAxE,CAAR;EAAA,MAAoFT,CAAC,GAAC,EAAtF;EAAyF,SAAOuB,MAAM,CAACC,IAAP,CAAYd,CAAZ,EAAee,OAAf,CAAuB,UAAShB,CAAT,EAAW;EAAC,QAAMM,CAAC,GAACga,QAAQ,CAACra,CAAC,CAACD,CAAD,CAAF,CAAhB;EAAuB,eAASA,CAAT,KAAaA,CAAC,GAAC,CAAC,CAAhB;;EAAmB,SAAI,IAAIC,GAAC,GAAC,CAAV,EAAYA,GAAC,GAACK,CAAC,CAACrB,MAAhB,EAAuBgB,GAAC,EAAxB,EAA2B;EAAC,UAAMG,CAAC,GAACE,CAAC,CAACL,GAAD,CAAT;EAAa,OAAC,CAAD,KAAKV,CAAC,CAAC6E,cAAF,CAAiBhE,CAAjB,CAAL,GAAyB,CAAC,CAAD,KAAKoa,KAAK,CAAC/Q,OAAN,CAAclK,CAAC,CAACa,CAAD,CAAf,CAAL,GAAyBb,CAAC,CAACa,CAAD,CAAD,GAAK,CAACb,CAAC,CAACa,CAAD,CAAF,EAAMJ,CAAN,CAA9B,GAAuCT,CAAC,CAACa,CAAD,CAAD,CAAKuK,IAAL,CAAU3K,CAAV,CAAhE,GAA6ET,CAAC,CAACa,CAAD,CAAD,GAAKJ,CAAlF;EAAoF;EAAC,GAA3M,GAA6MT,CAApN;EAAsN,CAA1V;;EAA2V,kBAAc,GAACgb,UAAf;;ECA/sD;EACA,IAAME,OAAO,GAAG,SAAVA,OAAU,CAAS7X,IAAT,EAAe2B,GAAf,EAAoBmW,GAApB,EAAyB;EACvC,MAAIA,GAAG,CAAC9X,IAAD,CAAH,KAAcuB,SAAlB,EAA6B;EAC3B,QAAI,OAAOuW,GAAG,CAAC9X,IAAD,CAAV,KAAqB,QAAzB,EAAmC;EACjC8X,MAAAA,GAAG,CAAC9X,IAAD,CAAH,GAAY,CAAC8X,GAAG,CAAC9X,IAAD,CAAJ,CAAZ;EACD;;EACD8X,IAAAA,GAAG,CAAC9X,IAAD,CAAH,CAAU+H,IAAV,CAAepG,GAAf;EACD,GALD,MAKO;EACLmW,IAAAA,GAAG,CAAC9X,IAAD,CAAH,GAAY2B,GAAZ;EACD;EACF,CATD;;;EAYA,IAAMoW,OAAO,GAAG,SAAVA,OAAU,CAAS/X,IAAT,EAAe2B,GAAf,EAAoBW,KAApB,EAA2B;EACzC,MAAI0V,OAAO,GAAG1V,KAAK,CAACuJ,KAApB;EACA,MAAItJ,SAAS,GAAGD,KAAK,CAACE,UAAtB,CAFyC;;EAKzC,MAAIqJ,KAAK,GAAG7L,IAAI,CAACnE,KAAL,CAAW,GAAX,CAAZ;;EACA,MAAIgQ,KAAK,CAACxP,MAAN,GAAe,CAAnB,EAAsB;;EAEpBiG,IAAAA,KAAK,CAAC2V,WAAN,CAAkBpM,KAAK,CAAC,CAAD,CAAvB,IAA8B,IAA9B;EACD,GATwC;;;EAWzC,MAAIlK,GAAG,KAAK,UAAZ,EAAwB;EACtB,QAAIuW,MAAM,GAAG3V,SAAS,CAAC4V,QAAV,CAAmBnY,IAAnB,EAAyBsC,KAAzB,CAAb;EACA0V,IAAAA,OAAO,CAACE,MAAD,CAAP,GAAkBF,OAAO,CAACE,MAAD,CAAP,IAAmB,QAArC,CAFsB;EAGvB,GAdwC;;;EAgBzC,MAAIvW,GAAG,KAAK,YAAZ,EAA0B;EACxB,QAAIyW,IAAI,GAAG7V,SAAS,CAAC8V,SAAV,CAAoBrY,IAApB,EAA0BsC,KAA1B,CAAX;EACA,QAAIV,IAAI,GAAG1D,MAAM,CAACC,IAAP,CAAYia,IAAZ,CAAX;;EACA,SAAK,IAAInc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2F,IAAI,CAACvF,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EACpC,UAAI4B,CAAC,GAAGua,IAAI,CAACxW,IAAI,CAAC3F,CAAD,CAAL,CAAZ;EACA+b,MAAAA,OAAO,CAACna,CAAD,CAAP,GAAama,OAAO,CAACna,CAAD,CAAP,IAAc+D,IAAI,CAAC3F,CAAD,CAA/B,CAFoC;EAGrC;EACF,GAvBwC;;;EAyBzC,MAAI0F,GAAG,KAAK,YAAZ,EAA0B;EACxB,QAAIyW,KAAI,GAAG7V,SAAS,CAAC+V,UAAV,CAAqBtY,IAArB,CAAX;;EACA,QAAI4B,KAAI,GAAG1D,MAAM,CAACC,IAAP,CAAYia,KAAZ,CAAX;;EACA,SAAK,IAAInc,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG2F,KAAI,CAACvF,MAAzB,EAAiCJ,EAAC,EAAlC,EAAsC;EACpC,UAAI4B,EAAC,GAAGua,KAAI,CAACxW,KAAI,CAAC3F,EAAD,CAAL,CAAZ;EACA+b,MAAAA,OAAO,CAACna,EAAD,CAAP,GAAama,OAAO,CAACna,EAAD,CAAP,IAAc+D,KAAI,CAAC3F,EAAD,CAA/B,CAFoC;EAGrC;EACF,GAhCwC;;;EAkCzC,MAAI0F,GAAG,KAAK,aAAZ,EAA2B;;EAEzBkW,IAAAA,OAAO,CAAC7X,IAAD,EAAO,YAAP,EAAqBgY,OAArB,CAAP,CAFyB;;EAIzB,QAAII,MAAI,GAAG7V,SAAS,CAAC8V,SAAV,CAAoBxM,KAAK,CAAC,CAAD,CAAzB,EAA8BvJ,KAA9B,CAAX;;EACA,QAAIV,MAAI,GAAG1D,MAAM,CAACC,IAAP,CAAYia,MAAZ,CAAX;;EACA,SAAK,IAAInc,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG2F,MAAI,CAACvF,MAAzB,EAAiCJ,GAAC,EAAlC,EAAsC;;EAEpCqG,MAAAA,KAAK,CAAC2V,WAAN,CAAkBG,MAAI,CAACxW,MAAI,CAAC3F,GAAD,CAAL,CAAtB,IAAmC,IAAnC,CAFoC;;EAIpC,UAAI4B,GAAC,GAAGua,MAAI,CAACxW,MAAI,CAAC3F,GAAD,CAAL,CAAJ,GAAgB,GAAhB,GAAsB4P,KAAK,CAAC,CAAD,CAAnC;;EAEAgM,MAAAA,OAAO,CAACha,GAAD,EAAI+D,MAAI,CAAC3F,GAAD,CAAR,EAAa+b,OAAb,CAAP;EACAH,MAAAA,OAAO,CAACha,GAAD,EAAI,aAAJ,EAAmBma,OAAnB,CAAP;EACD;EACF,GAjDwC;;;EAmDzC,MAAIrW,GAAG,KAAK,SAAZ,EAAuB;EACrB,QAAIuW,OAAM,GAAG3V,SAAS,CAAC4V,QAAV,CAAmBnY,IAAnB,EAAyBsC,KAAzB,CAAb;;EACA0V,IAAAA,OAAO,CAACE,OAAD,CAAP,GAAkBF,OAAO,CAACE,OAAD,CAAP,IAAmB,CAAC,SAAD,EAAY,QAAZ,CAArC,CAFqB;EAGtB;EACF,CAvDD;;;;;;;;;;;EAkEA,YAAc,GAAG;EACfL,EAAAA,OAAO,EAAEA,OADM;EAEfE,EAAAA,OAAO,EAAEA;EAFM,CAAjB;;EC/EA;EACA,IAAMQ,aAAa,GAAG,SAAhBA,aAAgB,CAASjW,KAAT,EAAgB;;EAEpC,MAAIkU,KAAK,GAAGlU,KAAK,CAACkW,UAAN,CAAiBhC,KAA7B;EACA,MAAI3K,KAAK,GAAG3N,MAAM,CAACC,IAAP,CAAYqY,KAAZ,CAAZ;;EACA,OAAK,IAAIva,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4P,KAAK,CAACxP,MAA1B,EAAkCJ,CAAC,EAAnC,EAAuC;EACrC,QAAM4B,CAAC,GAAGgO,KAAK,CAAC5P,CAAD,CAAf;EACAqG,IAAAA,KAAK,CAACuJ,KAAN,CAAYhO,CAAZ,IAAiB,UAAjB;EACAyE,IAAAA,KAAK,CAACuJ,KAAN,CAAY2K,KAAK,CAAC3Y,CAAD,CAAjB,IAAwB,QAAxB;EACD,GARmC;;;EAWpC,MAAI4Y,KAAK,GAAGnU,KAAK,CAACkW,UAAN,CAAiB/B,KAA7B;EACA,MAAItY,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYsY,KAAZ,CAAX;;EAZoC,6BAa3Bxa,EAb2B;EAclC,QAAMwc,GAAG,GAAGta,IAAI,CAAClC,EAAD,CAAhB,CAdkC;;EAgBlCqG,IAAAA,KAAK,CAACuJ,KAAN,CAAY4M,GAAZ,IAAmBnW,KAAK,CAACuJ,KAAN,CAAY4M,GAAZ,KAAoB,YAAvC;EACA,QAAIC,KAAK,GAAGpW,KAAK,CAACE,UAAN,CAAiB6V,SAAjB,CAA2BI,GAA3B,EAAgCnW,KAAhC,CAAZ;EACAoW,IAAAA,KAAK,GAAGxa,MAAM,CAACiH,MAAP,CAAcuT,KAAd,EAAqBjC,KAAK,CAACgC,GAAD,CAA1B,CAAR,CAlBkC;;EAoBlCva,IAAAA,MAAM,CAACC,IAAP,CAAYua,KAAZ,EAAmBta,OAAnB,CAA2B,UAAAuD,GAAG,EAAI;EAChCW,MAAAA,KAAK,CAACuJ,KAAN,CAAY6M,KAAK,CAAC/W,GAAD,CAAjB,IAA0BW,KAAK,CAACuJ,KAAN,CAAY6M,KAAK,CAAC/W,GAAD,CAAjB,KAA2BA,GAArD;EACD,KAFD;EApBkC;;EAapC,OAAK,IAAI1F,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,EAAC,EAAlC,EAAsC;EAAA,UAA7BA,EAA6B;EAUrC;EACF,CAxBD;;EAyBA,mBAAc,GAAGsc,aAAjB;;EC1BA;EACA,UAAc,GAAG;;EAEf,sBAAoB,cAFL;;EAIf,cAAY,cAJG;EAKf,cAAY,cALG;EAMfI,EAAAA,EAAE,EAAE,cANW;EAOf,aAAW,cAPI;EAQfC,EAAAA,GAAG,EAAE,cARU;EASfC,EAAAA,EAAE,EAAE,MATW;EAUfC,EAAAA,EAAE,EAAE,MAVW;EAWfC,EAAAA,EAAE,EAAE,MAXW;EAYfC,EAAAA,EAAE,EAAE;EAZW,CAAjB;;ECDA;;EAGA,WAAc,GAAG;EACfC,EAAAA,QAAQ,EAAE,SADK;EAEfC,EAAAA,IAAI,EAAE,OAFS;EAGfC,EAAAA,MAAM,EAAE,SAHO;EAIfC,EAAAA,OAAO,EAAE,QAJM;EAKfC,EAAAA,QAAQ,EAAE,UALK;EAMfC,EAAAA,OAAO,EAAE,UANM;EAOfC,EAAAA,QAAQ,EAAE,YAPK;EAQfC,EAAAA,OAAO,EAAE,UARM;EASfC,EAAAA,IAAI,EAAE,MATS;EAUfC,EAAAA,QAAQ,EAAE,SAVK;EAWfC,EAAAA,QAAQ,EAAE,UAXK;EAYfC,EAAAA,IAAI,EAAE,OAZS;EAafC,EAAAA,GAAG,EAAE,OAbU;EAcfC,EAAAA,MAAM,EAAE,OAdO;EAefC,EAAAA,OAAO,EAAE,UAfM;EAgBfC,EAAAA,KAAK,EAAE,UAhBQ;EAiBfC,EAAAA,MAAM,EAAE,UAjBO;EAkBfC,EAAAA,OAAO,EAAE,SAlBM;EAmBfC,EAAAA,MAAM,EAAE,SAnBO;EAoBfC,EAAAA,SAAS,EAAE,UApBI;EAqBfC,EAAAA,UAAU,EAAE,WArBG;EAsBfC,EAAAA,QAAQ,EAAE,WAtBK;EAuBfC,EAAAA,IAAI,EAAE,MAvBS;EAwBfC,EAAAA,SAAS,EAAE,WAxBI;EAyBfC,EAAAA,IAAI,EAAE,QAzBS;EA0BfC,EAAAA,OAAO,EAAE,WA1BM;EA2BfC,EAAAA,KAAK,EAAE,QA3BQ;EA4BfC,EAAAA,IAAI,EAAE,MA5BS;EA6BfC,EAAAA,OAAO,EAAE,UA7BM;EA8BfC,EAAAA,MAAM,EAAE,OA9BO;EA+BfC,EAAAA,KAAK,EAAE,QA/BQ;EAgCfC,EAAAA,KAAK,EAAE,OAhCQ;EAiCfC,EAAAA,IAAI,EAAE,OAjCS;EAkCfC,EAAAA,YAAY,EAAE,aAlCC;EAmCfha,EAAAA,KAAK,EAAE,SAnCQ;EAoCfia,EAAAA,KAAK,EAAE,QApCQ;EAqCfC,EAAAA,IAAI,EAAE,QArCS;EAsCfC,EAAAA,QAAQ,EAAE,UAtCK;EAuCfC,EAAAA,IAAI,EAAE,QAvCS;EAwCfC,EAAAA,GAAG,EAAE,KAxCU;EAyCfC,EAAAA,MAAM,EAAE,UAzCO;EA0CfC,EAAAA,UAAU,EAAE,WA1CG;EA2CfC,EAAAA,OAAO,EAAE,QA3CM;EA4CfC,EAAAA,QAAQ,EAAE,YA5CK;EA6CfC,EAAAA,KAAK,EAAE,MA7CQ;EA8CfC,EAAAA,IAAI,EAAE,OA9CS;EA+CfC,EAAAA,MAAM,EAAE,SA/CO;EAgDfC,EAAAA,OAAO,EAAE,QAhDM;EAiDfC,EAAAA,OAAO,EAAE,QAjDM;EAkDfC,EAAAA,IAAI,EAAE,OAlDS;EAmDfC,EAAAA,IAAI,EAAE,KAnDS;EAoDfC,EAAAA,EAAE,EAAE,MApDW;EAqDfC,EAAAA,WAAW,EAAE,aArDE;EAsDfC,EAAAA,MAAM,EAAE,QAtDO;EAuDfC,EAAAA,UAAU,EAAE,WAvDG;EAwDfC,EAAAA,SAAS,EAAE,WAxDI;EAyDfC,EAAAA,IAAI,EAAE,SAzDS;EA0DfC,EAAAA,MAAM,EAAE,OA1DO;EA2DfC,EAAAA,UAAU,EAAE,WA3DG;EA4DfC,EAAAA,KAAK,EAAE,QA5DQ;EA6DfC,EAAAA,GAAG,EAAE,OA7DU;EA8DfC,EAAAA,IAAI,EAAE,OA9DS;EA+DfC,EAAAA,QAAQ,EAAE,WA/DK;EAgEfC,EAAAA,QAAQ,EAAE,SAhEK;EAiEfC,EAAAA,OAAO,EAAE,UAjEM;EAkEfC,EAAAA,QAAQ,EAAE,SAlEK;EAmEfC,EAAAA,QAAQ,EAAE,UAnEK;EAoEfC,EAAAA,OAAO,EAAE,UApEM;EAqEfC,EAAAA,MAAM,EAAE,QArEO;EAsEfC,EAAAA,KAAK,EAAE,SAtEQ;EAuEfC,EAAAA,KAAK,EAAE,OAvEQ;EAwEfC,EAAAA,OAAO,EAAE,UAxEM;EAyEfC,EAAAA,MAAM,EAAE,SAzEO;EA0EfC,EAAAA,QAAQ,EAAE,WA1EK;;;EAAA,CAAjB;;ECHA;;;;EAKA,IAAMC,OAAO,GAAG;EACd7gB,EAAAA,CAAC,EAAE,QADW;EAEd8gB,EAAAA,GAAG,EAAE,YAFS;EAGdC,EAAAA,IAAI,EAAE,cAHQ;EAIdC,EAAAA,GAAG,EAAE,WAJS;EAKdC,EAAAA,GAAG,EAAE,eALS;EAMdC,EAAAA,IAAI,EAAE,cANQ;EAOdC,EAAAA,OAAO,EAAE,YAPK;EAQdzhB,EAAAA,CAAC,EAAE;EARW,CAAhB;;EAYA,IAAI0hB,YAAY,GAAG;EACjBC,EAAAA,GAAG,EAAE;EACH3hB,IAAAA,CAAC,EAAE;EADA,GADY;EAIjB4hB,EAAAA,GAAG,EAAE;EACHthB,IAAAA,CAAC,EAAE,QADA;EAEHghB,IAAAA,GAAG,EAAE,MAFF;EAGHE,IAAAA,IAAI,EAAE;EAHH,GAJY;EASjBK,EAAAA,GAAG,EAAE;EACH7hB,IAAAA,CAAC,EAAE,KADA;EAEHM,IAAAA,CAAC,EAAE,MAFA;EAGHghB,IAAAA,GAAG,EAAE;EAHF,GATY;EAcjBQ,EAAAA,KAAK,EAAE;EACLV,IAAAA,GAAG,EAAE,IADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAdU;EAkBjBS,EAAAA,OAAO,EAAE;EACP/hB,IAAAA,CAAC,EAAE,MADI;EAEPshB,IAAAA,GAAG,EAAE;EAFE,GAlBQ;EAsBjBU,EAAAA,GAAG,EAAE;EACHhiB,IAAAA,CAAC,EAAE,EADA;EAEHM,IAAAA,CAAC,EAAE,OAFA;EAGHghB,IAAAA,GAAG,EAAE;EAHF,GAtBY;EA2BjBW,EAAAA,EAAE,EAAE;EACFjiB,IAAAA,CAAC,EAAE,EADD;EAEFM,IAAAA,CAAC,EAAE,IAFD;EAGF8gB,IAAAA,GAAG,EAAE,MAHH;EAIFE,IAAAA,GAAG,EAAE,KAJH;EAKFE,IAAAA,IAAI,EAAE;EALJ,GA3Ba;EAkCjBU,EAAAA,IAAI,EAAE;EACJliB,IAAAA,CAAC,EAAE,KADC;EAEJM,IAAAA,CAAC,EAAE,MAFC;EAGJ8gB,IAAAA,GAAG,EAAE;EAHD,GAlCW;EAuCjBe,EAAAA,MAAM,EAAE;EACNf,IAAAA,GAAG,EAAE;EADC,GAvCS;EA0CjBgB,EAAAA,KAAK,EAAE;EACL9hB,IAAAA,CAAC,EAAE,OADE;EAEL8gB,IAAAA,GAAG,EAAE,OAFA;EAGLE,IAAAA,GAAG,EAAE;EAHA,GA1CU;EA+CjBe,EAAAA,KAAK,EAAE;EACL/hB,IAAAA,CAAC,EAAE,KADE;EAELghB,IAAAA,GAAG,EAAE,MAFA;EAGLE,IAAAA,IAAI,EAAE;EAHD,GA/CU;EAoDjBc,EAAAA,IAAI,EAAE;EACJlB,IAAAA,GAAG,EAAE;EADD,GApDW;EAuDjBmB,EAAAA,GAAG,EAAE;EACHviB,IAAAA,CAAC,EAAE,MADA;EAEHohB,IAAAA,GAAG,EAAE;EAFF,GAvDY;EA2DjBoB,EAAAA,IAAI,EAAE;EACJlB,IAAAA,GAAG,EAAE;EADD,GA3DW;EA8DjBmB,EAAAA,IAAI,EAAE;EACJniB,IAAAA,CAAC,EAAE,QADC;EAEJ8gB,IAAAA,GAAG,EAAE,QAFD;EAGJE,IAAAA,GAAG,EAAE;EAHD,GA9DW;EAmEjBoB,EAAAA,KAAK,EAAE;EACLtB,IAAAA,GAAG,EAAE,MADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAnEU;EAuEjBqB,EAAAA,IAAI,EAAE;EACJvB,IAAAA,GAAG,EAAE,IADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAvEW;EA2EjBsB,EAAAA,IAAI,EAAE;EACJ5iB,IAAAA,CAAC,EAAE;EADC,GA3EW;EA8EjB6iB,EAAAA,KAAK,EAAE;EACLzB,IAAAA,GAAG,EAAE;EADA,GA9EU;EAiFjB,WAAO;EACLE,IAAAA,GAAG,EAAE;EADA,GAjFU;EAoFjBwB,EAAAA,KAAK,EAAE;EACLxB,IAAAA,GAAG,EAAE;EADA,GApFU;EAuFjByB,EAAAA,KAAK,EAAE;EACL3B,IAAAA,GAAG,EAAE,SADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAvFU;EA2FjB0B,EAAAA,SAAS,EAAE;EACT1B,IAAAA,GAAG,EAAE;EADI,GA3FM;EA8FjB2B,EAAAA,MAAM,EAAE;EACN3B,IAAAA,GAAG,EAAE;EADC,GA9FS;EAiGjBtH,EAAAA,KAAK,EAAE;EACLoH,IAAAA,GAAG,EAAE,OADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAjGU;EAqGjB4B,EAAAA,IAAI,EAAE;EACJ9B,IAAAA,GAAG,EAAE;EADD,GArGW;EAwGjB+B,EAAAA,KAAK,EAAE;EACL/B,IAAAA,GAAG,EAAE;EADA,GAxGU;EA2GjBgC,EAAAA,GAAG,EAAE;EACHhC,IAAAA,GAAG,EAAE,QADF;EAEHE,IAAAA,GAAG,EAAE;EAFF,GA3GY;EA+GjBjP,EAAAA,GAAG,EAAE;EACHrS,IAAAA,CAAC,EAAE,EADA;EAEHuhB,IAAAA,GAAG,EAAE,GAFF;EAGHjhB,IAAAA,CAAC,EAAE,EAHA;EAIHghB,IAAAA,GAAG,EAAE,OAJF;EAKHD,IAAAA,IAAI,EAAE,OALH;EAMHI,IAAAA,OAAO,EAAE,OANN;EAOHD,IAAAA,IAAI,EAAE;EAPH,GA/GY;EAwHjB,WAAO;EACLF,IAAAA,GAAG,EAAE;EADA,GAxHU;EA2HjB+B,EAAAA,MAAM,EAAE;EACN/iB,IAAAA,CAAC,EAAE,UADG;EAEN8gB,IAAAA,GAAG,EAAE,QAFC;EAGNE,IAAAA,GAAG,EAAE;EAHC,GA3HS;EAgIjBgC,EAAAA,KAAK,EAAE;EACLlC,IAAAA,GAAG,EAAE;EADA,GAhIU;EAmIjBmC,EAAAA,IAAI,EAAE;EACJnC,IAAAA,GAAG,EAAE,GADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAnIW;EAuIjBkC,EAAAA,OAAO,EAAE;EACPxjB,IAAAA,CAAC,EAAE,YADI;EAEPM,IAAAA,CAAC,EAAE,WAFI;EAGPghB,IAAAA,GAAG,EAAE;EAHE,GAvIQ;EA4IjBmC,EAAAA,IAAI,EAAE;EACJnC,IAAAA,GAAG,EAAE;EADD,GA5IW;EA+IjBoC,EAAAA,KAAK,EAAE;EACLtC,IAAAA,GAAG,EAAE;EADA,GA/IU;EAkJjBuC,EAAAA,GAAG,EAAE;EACHvC,IAAAA,GAAG,EAAE;EADF,GAlJY;EAqJjBwC,EAAAA,IAAI,EAAE;EACJxC,IAAAA,GAAG,EAAE,IADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GArJW;EAyJjBuC,EAAAA,OAAO,EAAE;EACP7jB,IAAAA,CAAC,EAAE,KADI;EAEPM,IAAAA,CAAC,EAAE,MAFI;EAGPghB,IAAAA,GAAG,EAAE;EAHE,GAzJQ;EA8JjBwC,EAAAA,GAAG,EAAE;EACHxjB,IAAAA,CAAC,EAAE,OADA;EAEHghB,IAAAA,GAAG,EAAE;EAFF,GA9JY;EAkKjByC,EAAAA,GAAG,EAAE;EACHzjB,IAAAA,CAAC,EAAE,OADA;EAEH8gB,IAAAA,GAAG,EAAE,KAFF;EAGHE,IAAAA,GAAG,EAAE;EAHF,GAlKY;EAuKjB0C,EAAAA,IAAI,EAAE;EACJ5C,IAAAA,GAAG,EAAE;EADD,GAvKW;EA0KjB,QAAI;EACFE,IAAAA,GAAG,EAAE,KADH;EAEFE,IAAAA,IAAI,EAAE;EAFJ,GA1Ka;EA8KjByC,EAAAA,IAAI,EAAE;EACJ7C,IAAAA,GAAG,EAAE,IADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA9KW;EAkLjB4C,EAAAA,KAAK,EAAE;EACL9C,IAAAA,GAAG,EAAE;EADA,GAlLU;EAqLjB+C,EAAAA,KAAK,EAAE;EACL/C,IAAAA,GAAG,EAAE,OADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GArLU;EAyLjB8C,EAAAA,KAAK,EAAE;EACL9jB,IAAAA,CAAC,EAAE,SADE;EAEL8gB,IAAAA,GAAG,EAAE,IAFA;EAGLE,IAAAA,GAAG,EAAE;EAHA,GAzLU;EA8LjB+C,EAAAA,IAAI,EAAE;EACJ/jB,IAAAA,CAAC,EAAE,OADC;EAEJghB,IAAAA,GAAG,EAAE;EAFD,GA9LW;EAkMjBgD,EAAAA,GAAG,EAAE;EACHtkB,IAAAA,CAAC,EAAE,KADA;EAEHM,IAAAA,CAAC,EAAE,MAFA;EAGH8gB,IAAAA,GAAG,EAAE,KAHF;EAIHE,IAAAA,GAAG,EAAE;EAJF,GAlMY;EAwMjBiD,EAAAA,IAAI,EAAE;EACJjkB,IAAAA,CAAC,EAAE;EADC,GAxMW;EA2MjBkkB,EAAAA,GAAG,EAAE;EACHlD,IAAAA,GAAG,EAAE;EADF,GA3MY;EA8MjBmD,EAAAA,IAAI,EAAE;EACJrD,IAAAA,GAAG,EAAE,KADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA9MW;EAkNjBoD,EAAAA,IAAI,EAAE;EACJtD,IAAAA,GAAG,EAAE,KADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAlNW;EAsNjBqD,EAAAA,IAAI,EAAE;EACJ3kB,IAAAA,CAAC,EAAE,KADC;EAEJshB,IAAAA,GAAG,EAAE;EAFD,GAtNW;EA0NjBsD,EAAAA,KAAK,EAAE;EACLxD,IAAAA,GAAG,EAAE,QADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GA1NU;EA8NjBnT,EAAAA,IAAI,EAAE;EACJmT,IAAAA,GAAG,EAAE;EADD,GA9NW;EAiOjBuD,EAAAA,IAAI,EAAE;EACJvkB,IAAAA,CAAC,EAAE,MADC;EAEJ8gB,IAAAA,GAAG,EAAE;EAFD,GAjOW;EAqOjB0D,EAAAA,KAAK,EAAE;EACL1D,IAAAA,GAAG,EAAE;EADA,GArOU;EAwOjB2D,EAAAA,GAAG,EAAE;EACH3D,IAAAA,GAAG,EAAE,OADF;EAEHE,IAAAA,GAAG,EAAE;EAFF,GAxOY;EA4OjB0D,EAAAA,MAAM,EAAE;EACN1D,IAAAA,GAAG,EAAE;EADC,GA5OS;EA+OjB2D,EAAAA,MAAM,EAAE;EACN3kB,IAAAA,CAAC,EAAE,MADG;EAEN8gB,IAAAA,GAAG,EAAE,WAFC;EAGNE,IAAAA,GAAG,EAAE;EAHC,GA/OS;EAoPjB4D,EAAAA,OAAO,EAAE;EACP5kB,IAAAA,CAAC,EAAE,WADI;EAEP8gB,IAAAA,GAAG,EAAE,IAFE;EAGPE,IAAAA,GAAG,EAAE;EAHE,GApPQ;EAyPjB6D,EAAAA,IAAI,EAAE;EACJnlB,IAAAA,CAAC,EAAE,EADC;EAEJM,IAAAA,CAAC,EAAE;EAFC,GAzPW;EA6PjB8kB,EAAAA,MAAM,EAAE;EACN9kB,IAAAA,CAAC,EAAE,UADG;EAEN8gB,IAAAA,GAAG,EAAE,QAFC;EAGNE,IAAAA,GAAG,EAAE;EAHC,GA7PS;EAkQjBhW,EAAAA,GAAG,EAAE;EACHgW,IAAAA,GAAG,EAAE,KADF;EAEHF,IAAAA,GAAG,EAAE;EAFF,GAlQY;EAsQjBiE,EAAAA,IAAI,EAAE;EACJ/kB,IAAAA,CAAC,EAAE,QADC;EAEJ8gB,IAAAA,GAAG,EAAE,IAFD;EAGJE,IAAAA,GAAG,EAAE;EAHD,GAtQW;EA2QjBgE,EAAAA,EAAE,EAAE;EACFlE,IAAAA,GAAG,EAAE,KADH;EAEFE,IAAAA,GAAG,EAAE,MAFH;EAGFE,IAAAA,IAAI,EAAE;EAHJ,GA3Qa;EAgRjB+D,EAAAA,IAAI,EAAE;EACJnE,IAAAA,GAAG,EAAE;EADD,GAhRW;EAmRjBoE,EAAAA,IAAI,EAAE;EACJpE,IAAAA,GAAG,EAAE,MADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAnRW;EAuRjBmE,EAAAA,IAAI,EAAE;EACJnlB,IAAAA,CAAC,EAAE,QADC;EAEJ8gB,IAAAA,GAAG,EAAE,KAFD;EAGJE,IAAAA,GAAG,EAAE,KAHD;EAIJE,IAAAA,IAAI,EAAE;EAJF,GAvRW;EA6RjBkE,EAAAA,IAAI,EAAE;EACJtE,IAAAA,GAAG,EAAE,IADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA7RW;EAiSjBqE,EAAAA,IAAI,EAAE;EACJvE,IAAAA,GAAG,EAAE,QADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAjSW;EAqSjBsE,EAAAA,GAAG,EAAE;EACHxE,IAAAA,GAAG,EAAE;EADF,GArSY;EAwSjByE,EAAAA,IAAI,EAAE;EACJzE,IAAAA,GAAG,EAAE,MADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAxSW;EA4SjBwE,EAAAA,IAAI,EAAE;EACJ1E,IAAAA,GAAG,EAAE,GADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA5SW;EAgTjByE,EAAAA,GAAG,EAAE;EACHzlB,IAAAA,CAAC,EAAE,OADA;EAEHghB,IAAAA,GAAG,EAAE;EAFF,GAhTY;EAoTjB0E,EAAAA,KAAK,EAAE;EACL1E,IAAAA,GAAG,EAAE,SADA;EAELE,IAAAA,IAAI,EAAE;EAFD,GApTU;EAwTjByE,EAAAA,EAAE,EAAE;EACFjmB,IAAAA,CAAC,EAAE,EADD;EAEFM,IAAAA,CAAC,EAAE,OAFD;EAGFghB,IAAAA,GAAG,EAAE,KAHH;EAIFE,IAAAA,IAAI,EAAE;EAJJ,GAxTa;EA8TjB0E,EAAAA,IAAI,EAAE;EACJ9E,IAAAA,GAAG,EAAE;EADD,GA9TW;EAiUjB+E,EAAAA,KAAK,EAAE;EACL/E,IAAAA,GAAG,EAAE;EADA,GAjUU;EAoUjBgF,EAAAA,IAAI,EAAE;EACJhF,IAAAA,GAAG,EAAE;EADD,GApUW;EAuUjBiF,EAAAA,GAAG,EAAE;EACHjF,IAAAA,GAAG,EAAE,MADF;EAEHE,IAAAA,GAAG,EAAE;EAFF,GAvUY;EA2UjBgF,EAAAA,IAAI,EAAE;EACJlF,IAAAA,GAAG,EAAE,KADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA3UW;EA+UjBiF,EAAAA,IAAI,EAAE;EACJnF,IAAAA,GAAG,EAAE;EADD,GA/UW;EAkVjBoF,EAAAA,KAAK,EAAE;EACLpF,IAAAA,GAAG,EAAE,MADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAlVU;EAsVjBmF,EAAAA,IAAI,EAAE;EACJrF,IAAAA,GAAG,EAAE;EADD,GAtVW;EAyVjBsF,EAAAA,GAAG,EAAE;EACHpmB,IAAAA,CAAC,EAAE,OADA;EAEHghB,IAAAA,GAAG,EAAE;EAFF,GAzVY;EA6VjBqF,EAAAA,KAAK,EAAE;EACLvF,IAAAA,GAAG,EAAE,KADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GA7VU;EAiWjBhY,EAAAA,GAAG,EAAE;EACHhJ,IAAAA,CAAC,EAAE,OADA;EAEHghB,IAAAA,GAAG,EAAE;EAFF,GAjWY;EAqWjBsF,EAAAA,KAAK,EAAE;EACLxF,IAAAA,GAAG,EAAE;EADA,GArWU;EAwWjByF,EAAAA,IAAI,EAAE;EACJvmB,IAAAA,CAAC,EAAE,QADC;EAEJghB,IAAAA,GAAG,EAAE;EAFD,GAxWW;EA4WjBwF,EAAAA,IAAI,EAAE;EACJ1F,IAAAA,GAAG,EAAE,MADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA5WW;EAgXjByF,EAAAA,IAAI,EAAE;EACJ3F,IAAAA,GAAG,EAAE,IADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAhXW;EAoXjB0F,EAAAA,IAAI,EAAE;EACJhnB,IAAAA,CAAC,EAAE,KADC;EAEJM,IAAAA,CAAC,EAAE,MAFC;EAGJ8gB,IAAAA,GAAG,EAAE,KAHD;EAIJE,IAAAA,GAAG,EAAE;EAJD,GApXW;EA0XjB2F,EAAAA,IAAI,EAAE;EACJzF,IAAAA,IAAI,EAAE;EADF,GA1XW;EA6XjB0F,EAAAA,GAAG,EAAE;EACH9F,IAAAA,GAAG,EAAE,MADF;EAEHE,IAAAA,GAAG,EAAE;EAFF,GA7XY;EAiYjB6F,EAAAA,KAAK,EAAE;EACL/F,IAAAA,GAAG,EAAE;EADA,GAjYU;EAoYjBgG,EAAAA,IAAI,EAAE;EACJ9mB,IAAAA,CAAC,EAAE;EADC,GApYW;EAuYjB+mB,EAAAA,GAAG,EAAE;EACHjG,IAAAA,GAAG,EAAE;EADF,GAvYY;EA0YjBkG,EAAAA,IAAI,EAAE;EACJlG,IAAAA,GAAG,EAAE;EADD,GA1YW;EA6YjBmG,EAAAA,IAAI,EAAE;EACJnG,IAAAA,GAAG,EAAE,GADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA7YW;EAiZjBkG,EAAAA,IAAI,EAAE;EACJpG,IAAAA,GAAG,EAAE;EADD,GAjZW;EAoZjBqG,EAAAA,IAAI,EAAE;EACJrG,IAAAA,GAAG,EAAE,MADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GApZW;EAwZjBoG,EAAAA,IAAI,EAAE;EACJnG,IAAAA,GAAG,EAAE,cADD;EAEJjhB,IAAAA,CAAC,EAAE,QAFC;EAGJ8gB,IAAAA,GAAG,EAAE,IAHD;EAIJE,IAAAA,GAAG,EAAE,MAJD;EAKJG,IAAAA,OAAO,EAAE;EALL,GAxZW;EA+ZjBkG,EAAAA,GAAG,EAAE;EACHrnB,IAAAA,CAAC,EAAE,OADA;EAEHghB,IAAAA,GAAG,EAAE;EAFF,GA/ZY;EAmajBsG,EAAAA,GAAG,EAAE;EACHtnB,IAAAA,CAAC,EAAE,OADA;EAEH8gB,IAAAA,GAAG,EAAE,GAFF;EAGHE,IAAAA,GAAG,EAAE;EAHF,GAnaY;EAwajBuG,EAAAA,GAAG,EAAE;EACHzG,IAAAA,GAAG,EAAE,MADF;EAEHE,IAAAA,GAAG,EAAE,MAFF;EAGHE,IAAAA,IAAI,EAAE;EAHH,GAxaY;EA6ajBsG,EAAAA,IAAI,EAAE;EACJ1G,IAAAA,GAAG,EAAE;EADD,GA7aW;EAgbjB2G,EAAAA,GAAG,EAAE;EACHznB,IAAAA,CAAC,EAAE,MADA;EAEH8gB,IAAAA,GAAG,EAAE,IAFF;EAGHE,IAAAA,GAAG,EAAE;EAHF,GAhbY;EAqbjB0G,EAAAA,IAAI,EAAE;EACJ5G,IAAAA,GAAG,EAAE;EADD,GArbW;EAwbjB6G,EAAAA,IAAI,EAAE;EACJ7G,IAAAA,GAAG,EAAE,MADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GAxbW;EA4bjB4G,EAAAA,IAAI,EAAE;EACJ9G,IAAAA,GAAG,EAAE;EADD,GA5bW;EA+bjB/S,EAAAA,GAAG,EAAE;EACH+S,IAAAA,GAAG,EAAE;EADF,GA/bY;EAkcjB+G,EAAAA,GAAG,EAAE;EACH/G,IAAAA,GAAG,EAAE;EADF,GAlcY;EAqcjBgH,EAAAA,KAAK,EAAE;EACLhH,IAAAA,GAAG,EAAE;EADA,GArcU;EAwcjBiH,EAAAA,KAAK,EAAE;EACLjH,IAAAA,GAAG,EAAE;EADA,GAxcU;EA2cjBkH,EAAAA,IAAI,EAAE;EACJhoB,IAAAA,CAAC,EAAE,OADC;EAEJghB,IAAAA,GAAG,EAAE,GAFD;EAGJE,IAAAA,IAAI,EAAE;EAHF,GA3cW;EAgdjB+G,EAAAA,KAAK,EAAE;EACLnH,IAAAA,GAAG,EAAE,OADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAhdU;EAodjBkH,EAAAA,KAAK,EAAE;EACLpH,IAAAA,GAAG,EAAE,MADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GApdU;EAwdjBmH,EAAAA,IAAI,EAAE;EACJnH,IAAAA,GAAG,EAAE;EADD,GAxdW;EA2djBoH,EAAAA,IAAI,EAAE;EACJtH,IAAAA,GAAG,EAAE;EADD,GA3dW;EA8djBuH,EAAAA,IAAI,EAAE;EACJvH,IAAAA,GAAG,EAAE,MADD;EAEJE,IAAAA,GAAG,EAAE;EAFD,GA9dW;EAkejBsH,EAAAA,IAAI,EAAE;EACJtH,IAAAA,GAAG,EAAE,MADD;EAEJG,IAAAA,OAAO,EAAE;EAFL,GAleW;EAsejBoH,EAAAA,GAAG,EAAE;EACHvH,IAAAA,GAAG,EAAE;EADF,GAteY;EAyejBwH,EAAAA,GAAG,EAAE;EACHxH,IAAAA,GAAG,EAAE;EADF,GAzeY;EA4ejByH,EAAAA,IAAI,EAAE;EACJ3H,IAAAA,GAAG,EAAE;EADD,GA5eW;EA+ejB4H,EAAAA,KAAK,EAAE;EACL5H,IAAAA,GAAG,EAAE;EADA,GA/eU;EAkfjB6H,EAAAA,KAAK,EAAE;EACL7H,IAAAA,GAAG,EAAE,MADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAlfU;EAsfjB4H,EAAAA,KAAK,EAAE;EACL1H,IAAAA,IAAI,EAAE;EADD,GAtfU;EAyfjB2H,EAAAA,KAAK,EAAE;EACL/H,IAAAA,GAAG,EAAE;EADA,GAzfU;EA4fjBgI,EAAAA,KAAK,EAAE;EACL7H,IAAAA,GAAG,EAAE,kBADA;EAELH,IAAAA,GAAG,EAAE,QAFA;EAGLE,IAAAA,GAAG,EAAE,OAHA;EAILD,IAAAA,IAAI,EAAE,aAJD;EAKLI,IAAAA,OAAO,EAAE;EALJ,GA5fU;EAmgBjB4H,EAAAA,KAAK,EAAE;EACLjI,IAAAA,GAAG,EAAE;EADA,GAngBU;EAsgBjBkI,EAAAA,KAAK,EAAE;EACLlI,IAAAA,GAAG,EAAE;EADA,GAtgBU;EAygBjBmI,EAAAA,KAAK,EAAE;EACLnI,IAAAA,GAAG,EAAE,KADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GAzgBU;EA6gBjBkI,EAAAA,IAAI,EAAE;EACJlpB,IAAAA,CAAC,EAAE,OADC;EAEJ8gB,IAAAA,GAAG,EAAE,MAFD;EAGJE,IAAAA,GAAG,EAAE;EAHD,GA7gBW;EAkhBjBmI,EAAAA,IAAI,EAAE;EACJrI,IAAAA,GAAG,EAAE;EADD,GAlhBW;EAqhBjB9hB,EAAAA,KAAK,EAAE;EACL8hB,IAAAA,GAAG,EAAE;EADA,GArhBU;EAwhBjBsI,EAAAA,MAAM,EAAE;EACNpI,IAAAA,GAAG,EAAE;EADC,GAxhBS;EA2hBjBqI,EAAAA,MAAM,EAAE;EACNvI,IAAAA,GAAG,EAAE;EADC,GA3hBS;EA8hBjBwI,EAAAA,KAAK,EAAE;EACLtI,IAAAA,GAAG,EAAE;EADA,GA9hBU;EAiiBjBuI,EAAAA,KAAK,EAAE;EACL7pB,IAAAA,CAAC,EAAE,KADE;EAELshB,IAAAA,GAAG,EAAE;EAFA,GAjiBU;EAqiBjBwI,EAAAA,KAAK,EAAE;EACLxI,IAAAA,GAAG,EAAE;EADA,GAriBU;EAwiBjByI,EAAAA,KAAK,EAAE;EACLzI,IAAAA,GAAG,EAAE;EADA,GAxiBU;EA2iBjB0I,EAAAA,KAAK,EAAE;EACL5I,IAAAA,GAAG,EAAE,OADA;EAELE,IAAAA,GAAG,EAAE;EAFA,GA3iBU;EA+iBjB2I,EAAAA,MAAM,EAAE;EACNjqB,IAAAA,CAAC,EAAE;EADG,GA/iBS;EAkjBjBkqB,EAAAA,KAAK,EAAE;EACL9I,IAAAA,GAAG,EAAE;EADA,GAljBU;EAqjBjB+I,EAAAA,MAAM,EAAE;EACN7pB,IAAAA,CAAC,EAAE,UADG;EAENghB,IAAAA,GAAG,EAAE;EAFC,GArjBS;EAyjBjB8I,EAAAA,IAAI,EAAE;EACJpqB,IAAAA,CAAC,EAAE,KADC;EAEJM,IAAAA,CAAC,EAAE,MAFC;EAGJghB,IAAAA,GAAG,EAAE;EAHD,GAzjBW;EA8jBjB+I,EAAAA,KAAK,EAAE;EACLjJ,IAAAA,GAAG,EAAE;EADA,GA9jBU;EAikBjBkJ,EAAAA,KAAK,EAAE;EACLhJ,IAAAA,GAAG,EAAE;EADA,GAjkBU;EAokBjBiJ,EAAAA,KAAK,EAAE;EACLnJ,IAAAA,GAAG,EAAE;EADA,GApkBU;EAukBjBoJ,EAAAA,IAAI,EAAE;EACJlqB,IAAAA,CAAC,EAAE,OADC;EAEJghB,IAAAA,GAAG,EAAE;EAFD,GAvkBW;EA2kBjBmJ,EAAAA,KAAK,EAAE;EACLnJ,IAAAA,GAAG,EAAE;EADA,GA3kBU;EA8kBjBoJ,EAAAA,IAAI,EAAE;EACJnJ,IAAAA,GAAG,EAAE,cADD;EAEJD,IAAAA,GAAG,EAAE,MAFD;EAGJD,IAAAA,IAAI,EAAE,SAHF;EAIJI,IAAAA,OAAO,EAAE;EAJL,GA9kBW;EAolBjBkJ,EAAAA,KAAK,EAAE;EACLrJ,IAAAA,GAAG,EAAE,QADA;EAELE,IAAAA,IAAI,EAAE;EAFD,GAplBU;EAwlBjBoJ,EAAAA,IAAI,EAAE;EACJtJ,IAAAA,GAAG,EAAE;EADD,GAxlBW;EA2lBjBuJ,EAAAA,IAAI,EAAE;EACJvJ,IAAAA,GAAG,EAAE;EADD,GA3lBW;EA8lBjBwJ,EAAAA,KAAK,EAAE;EACLxJ,IAAAA,GAAG,EAAE;EADA,GA9lBU;EAimBjByJ,EAAAA,MAAM,EAAE;EACN3J,IAAAA,GAAG,EAAE;EADC,GAjmBS;EAomBjB4J,EAAAA,GAAG,EAAE;EACH1qB,IAAAA,CAAC,EAAE,OADA;EAEHghB,IAAAA,GAAG,EAAE;EAFF,GApmBY;EAwmBjB2J,EAAAA,OAAO,EAAE;EACP7J,IAAAA,GAAG,EAAE;EADE,GAxmBQ;EA2mBjB8J,EAAAA,UAAU,EAAE;EACV5J,IAAAA,GAAG,EAAE;EADK,GA3mBK;EA8mBjB6J,EAAAA,KAAK,EAAE;EACL/J,IAAAA,GAAG,EAAE;EADA,GA9mBU;EAinBjBgK,EAAAA,IAAI,EAAE;EACJprB,IAAAA,CAAC,EAAE,KADC;EAEJM,IAAAA,CAAC,EAAE,MAFC;EAGJghB,IAAAA,GAAG,EAAE;EAHD,GAjnBW;EAsnBjB+J,EAAAA,IAAI,EAAE;EACJ/J,IAAAA,GAAG,EAAE;EADD,GAtnBW;EAynBjBgK,EAAAA,IAAI,EAAE;EACJhK,IAAAA,GAAG,EAAE;EADD,GAznBW;EA4nBjBiK,EAAAA,KAAK,EAAE;EACLnK,IAAAA,GAAG,EAAE;EADA,GA5nBU;EA+nBjBoK,EAAAA,IAAI,EAAE;EACJpK,IAAAA,GAAG,EAAE;EADD,GA/nBW;EAkoBjBqK,EAAAA,GAAG,EAAE;EACHnrB,IAAAA,CAAC,EAAE,OADA;EAEHghB,IAAAA,GAAG,EAAE;EAFF,GAloBY;EAsoBjBoK,EAAAA,IAAI,EAAE;EACJtK,IAAAA,GAAG,EAAE;EADD,GAtoBW;EAyoBjBuK,EAAAA,QAAQ,EAAE;EACRrK,IAAAA,GAAG,EAAE;EADG,GAzoBO;EA4oBjBsK,EAAAA,KAAK,EAAE;EACLxK,IAAAA,GAAG,EAAE;EADA,GA5oBU;EA+oBjByK,EAAAA,KAAK,EAAE;EACLvrB,IAAAA,CAAC,EAAE,SADE;EAEL8gB,IAAAA,GAAG,EAAE,SAFA;EAGLE,IAAAA,GAAG,EAAE;EAHA;EA/oBU,CAAnB;;EAupBA,IAAI1f,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAY8f,YAAZ,CAAX;;6BACShiB;EACP,MAAMwc,GAAG,GAAGta,IAAI,CAAClC,CAAD,CAAhB;EACA,MAAIosB,MAAK,GAAG,EAAZ;EACAnqB,EAAAA,MAAM,CAACC,IAAP,CAAY8f,YAAY,CAACxF,GAAD,CAAxB,EAA+Bra,OAA/B,CAAuC,UAAA6X,GAAG,EAAI;EAC5C,QAAIla,GAAG,GAAGkiB,YAAY,CAACxF,GAAD,CAAZ,CAAkBxC,GAAlB,CAAV,CAD4C;;EAG5Cla,IAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,GAAZ,EAAiBuZ,GAAjB,CAAN;EAEA,QAAI6P,IAAI,GAAG5K,OAAO,CAACzH,GAAD,CAAlB;EACAoS,IAAAA,MAAK,CAACC,IAAD,CAAL,GAAcvsB,GAAd;EACD,GAPD;;EASAkiB,EAAAA,YAAY,CAACxF,GAAD,CAAZ,GAAoB4P,MAApB;;;EAZF,KAAK,IAAIpsB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EAAA,QAA7BA,CAA6B;EAarC;;EAED,kBAAc,GAAGgiB,YAAjB;;ECxrBA,IAAMsK,QAAQ,GAAG;EACf/rB,EAAAA,CAAC,EAAE,CACD;EACEyE,IAAAA,GAAG,EAAE,sBADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,CADY;EAWfjsB,EAAAA,CAAC,EAAE,CACD;EACEuE,IAAAA,GAAG,EAAE,SADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFR,GADC,EAUD;EACE3nB,IAAAA,GAAG,EAAE,SADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFR,GAVC,EAmBD;EACE3nB,IAAAA,GAAG,EAAE,QADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,OAFA;EAGJE,MAAAA,EAAE,EAAE,OAHA;EAIJD,MAAAA,EAAE,EAAE;EAJA;EAFR,GAnBC,EA4BD;EACE1nB,IAAAA,GAAG,EAAE,mBADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GA5BC,CAXY;EAgDfhsB,EAAAA,CAAC,EAAE,CACD;EACEsE,IAAAA,GAAG,EAAE,UADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,QAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFR,GADC,EAUD;EACE3nB,IAAAA,GAAG,EAAE,SADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFR,GAVC,EAmBD;EACE3nB,IAAAA,GAAG,EAAE,SADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFR,GAnBC,EA4BD;EACE3nB,IAAAA,GAAG,EAAE,8BADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJhL,MAAAA,GAAG,EAAE;EAJD;EAFR,GA5BC,EAqCD;EACE1c,IAAAA,GAAG,EAAE,YADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GArCC,EA6CD;EACE1nB,IAAAA,GAAG,EAAE,SADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GA7CC,CAhDY;EAuGf9rB,EAAAA,CAAC,EAAE,CACD;EACEoE,IAAAA,GAAG,EAAE,mBADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,CAvGY;EAiHf7rB,EAAAA,CAAC,EAAE,CACD;EACEmE,IAAAA,GAAG,EAAE,eADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,QADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,CAjHY;EA2Hf1rB,EAAAA,CAAC,EAAE,CACD;EACEgE,IAAAA,GAAG,EAAE,SADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE,OAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFR,GADC,CA3HY;EAuIfzrB,EAAAA,CAAC,EAAE,CACD;EACE8D,IAAAA,GAAG,EAAE,sBADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,CAvIY;EAkJfvrB,EAAAA,CAAC,EAAE,CACD;EACE6D,IAAAA,GAAG,EAAE,QADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,CAlJY;EA4JfrrB,EAAAA,CAAC,EAAE,CACD;EACE2D,IAAAA,GAAG,EAAE,WADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,OADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,SAHA;EAIJC,MAAAA,EAAE,EAAE;EAJA;EAFR,GADC,EAUD;EACE3nB,IAAAA,GAAG,EAAE,sBADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GAVC,EAkBD;EACE1nB,IAAAA,GAAG,EAAE,aADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GAlBC,CA5JY;EAwLfnrB,EAAAA,CAAC,EAAE,CACD;EACEyD,IAAAA,GAAG,EAAE,YADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,EASD;EACE1nB,IAAAA,GAAG,EAAE,QADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GATC,CAxLY;EA0MflrB,EAAAA,CAAC,EAAE,CACD;EACEwD,IAAAA,GAAG,EAAE,iBADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,CA1MY;EAqNfjrB,EAAAA,CAAC,EAAE,CACD;EACEuD,IAAAA,GAAG,EAAE,oBADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,EASD;EACE1nB,IAAAA,GAAG,EAAE,UADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,KADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GATC,EAiBD;EACE1nB,IAAAA,GAAG,EAAE,aADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,KAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GAjBC,EAyBD;EACE1nB,IAAAA,GAAG,EAAE,sBADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,QAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GAzBC,CArNY;EAwPf9qB,EAAAA,CAAC,EAAE,CACD;EACEoD,IAAAA,GAAG,EAAE,YADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,OADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE,SAHA;EAIJhL,MAAAA,GAAG,EAAE;EAJD;EAFR,GADC,CAxPY;EAmQf5f,EAAAA,CAAC,EAAE,CACD;EACEkD,IAAAA,GAAG,EAAE,eADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,OADA;EAEJC,MAAAA,EAAE,EAAE,OAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC,CAnQY;EA8Qf3qB,EAAAA,CAAC,EAAE,CACD;EACEiD,IAAAA,GAAG,EAAE,eADP;EAEEunB,IAAAA,IAAI,EAAE;EACJC,MAAAA,EAAE,EAAE,MADA;EAEJC,MAAAA,EAAE,EAAE,MAFA;EAGJC,MAAAA,EAAE,EAAE;EAHA;EAFR,GADC;EA9QY,CAAjB;EA0RA,YAAc,GAAGJ,QAAjB;;ECzRA,IAAMM,MAAM,GAAG;EACbJ,EAAAA,EAAE,EAAE,cADS;EAEbC,EAAAA,EAAE,EAAE,WAFS;EAGbC,EAAAA,EAAE,EAAE,QAHS;EAIbhL,EAAAA,GAAG,EAAE,YAJQ;EAKbiL,EAAAA,EAAE,EAAE;EALS,CAAf;;EAQA,IAAME,WAAW,GAAG,SAAdA,WAAc,CAAS/sB,GAAT,EAAcsL,GAAd,EAAmB;EACrC,MAAI1H,KAAK,GAAG,EAAZ;EACA,MAAIxB,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYkJ,GAAG,CAACmhB,IAAhB,CAAX;;EACA,OAAK,IAAIvsB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,IAAI,CAAtC,EAAyC;EACvC,QAAI8sB,GAAG,GAAG5qB,IAAI,CAAClC,CAAD,CAAd;EACA0D,IAAAA,KAAK,CAACkpB,MAAM,CAACE,GAAD,CAAP,CAAL,GAAqBhtB,GAAG,CAACmD,OAAJ,CAAYmI,GAAG,CAACpG,GAAhB,EAAqBoG,GAAG,CAACmhB,IAAJ,CAASO,GAAT,CAArB,CAArB;EACD;;EACD,SAAOppB,KAAP;EACD,CARD;;;EAWA,IAAMqpB,WAAW,GAAG,SAAdA,WAAc,GAAmB;EAAA,MAAVjtB,GAAU,uEAAJ,EAAI;EACrC,MAAIU,CAAC,GAAGV,GAAG,CAACA,GAAG,CAACM,MAAJ,GAAa,CAAd,CAAX;;EACA,MAAI4sB,QAAQ,CAACznB,cAAT,CAAwB/E,CAAxB,MAA+B,IAAnC,EAAyC;EACvC,SAAK,IAAIe,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyrB,QAAQ,CAACxsB,CAAD,CAAR,CAAYJ,MAAhC,EAAwCmB,CAAC,IAAI,CAA7C,EAAgD;EAC9C,UAAMyD,GAAG,GAAGgoB,QAAQ,CAACxsB,CAAD,CAAR,CAAYe,CAAZ,EAAeyD,GAA3B;;EACA,UAAIA,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,MAAkB,IAAtB,EAA4B;EAC1B,eAAO+sB,WAAW,CAAC/sB,GAAD,EAAMktB,QAAQ,CAACxsB,CAAD,CAAR,CAAYe,CAAZ,CAAN,CAAlB;EACD;EACF;EACF;;EACD,SAAO,EAAP;EACD,CAXD;;EAYA,eAAc,GAAGwrB,WAAjB;;EChCA;EACA,IAAME,IAAI,GAAG,0BAAb;EAEA,IAAMC,OAAO,GAAG;EACdnmB,EAAAA,MAAM,EAAE,gBAAAyV,GAAG,EAAI;EACb,QAAIA,GAAG,CAACvS,MAAJ,CAAWuS,GAAG,CAACpc,MAAJ,GAAa,CAAxB,MAA+B,GAAnC,EAAwC;EACtC,aAAOoc,GAAG,CAACvZ,OAAJ,CAAY,IAAZ,EAAkB,KAAlB,CAAP;EACD;;EACD,WAAOuZ,GAAG,GAAG,KAAb;EACD,GANa;EAQdxV,EAAAA,YAAY,EAAE,sBAAAwV,GAAG,EAAI;EACnB,QAAIA,GAAG,CAACvS,MAAJ,CAAWuS,GAAG,CAACpc,MAAJ,GAAa,CAAxB,MAA+B,GAAnC,EAAwC;EACtC,aAAOoc,GAAG,GAAG,IAAb;EACD;;EACD,QAAIyQ,IAAI,CAACtqB,IAAL,CAAU6Z,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,aAAOA,GAAG,CAACvN,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,IAAmB,KAA1B;EACD;;EACD,WAAOuN,GAAG,GAAG,GAAb;EACD,GAhBa;EAkBd1V,EAAAA,SAAS,EAAE,mBAAA0V,GAAG,EAAI;EAChB,QAAIA,GAAG,CAACvS,MAAJ,CAAWuS,GAAG,CAACpc,MAAJ,GAAa,CAAxB,MAA+B,GAAnC,EAAwC;EACtC,aAAOoc,GAAG,GAAG,GAAb;EACD;;EACD,QAAIA,GAAG,CAACtS,MAAJ,CAAW,CAAC,CAAZ,MAAmB,IAAvB,EAA6B;EAC3B,aAAOsS,GAAP;EACD;;EACD,QAAIyQ,IAAI,CAACtqB,IAAL,CAAU6Z,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,aAAOA,GAAG,CAACvN,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,IAAmB,KAA1B;EACD;;EACD,WAAOuN,GAAG,GAAG,IAAb;EACD;EA7Ba,CAAhB;EAgCA,cAAc,GAAG0Q,OAAjB;;;;EC9BA,IAAM9Q,SAAS,GAAG,SAAZA,SAAY,GAA0B;EAAA,MAAjBtc,GAAiB,uEAAX,EAAW;EAAA,MAAPuG,KAAO;EAC1C,MAAI3C,KAAK,GAAG,EAAZ,CAD0C;;;EAI1C,MAAI2C,KAAK,IAAIA,KAAK,CAACkW,UAAnB,EAA+B;EAC7B,QAAIlW,KAAK,CAACkW,UAAN,CAAiB/B,KAAjB,CAAuBjV,cAAvB,CAAsCzF,GAAtC,MAA+C,IAAnD,EAAyD;EACvD4D,MAAAA,KAAK,GAAGzB,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkB7C,KAAK,CAACkW,UAAN,CAAiB/B,KAAjB,CAAuB1a,GAAvB,CAAlB,CAAR;EACD;EACF,GARyC;;;EAU1C4D,EAAAA,KAAK,GAAGzB,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkB6jB,WAAW,CAACjtB,GAAD,CAA7B,EAAoC4D,KAApC,CAAR,CAV0C;;;EAc1C,MAAIA,KAAK,CAACqD,MAAN,KAAiBzB,SAArB,EAAgC;EAC9B5B,IAAAA,KAAK,CAACqD,MAAN,GAAeomB,UAAW,CAACpmB,MAAZ,CAAmBjH,GAAnB,CAAf;EACD,GAhByC;;;EAkB1C,MAAI4D,KAAK,CAACoD,SAAN,KAAoBxB,SAAxB,EAAmC;EACjC5B,IAAAA,KAAK,CAACoD,SAAN,GAAkBqmB,UAAW,CAACrmB,SAAZ,CAAsBhH,GAAtB,CAAlB;EACD,GApByC;;;EAsB1C,MAAI4D,KAAK,CAACsD,YAAN,KAAuB1B,SAA3B,EAAsC;EACpC5B,IAAAA,KAAK,CAACsD,YAAN,GAAqBmmB,UAAW,CAACnmB,YAAZ,CAAyBlH,GAAzB,CAArB;EACD;;EACD,SAAO4D,KAAP;EACD,CA1BD;;EA2BA,eAAc,GAAG0Y,SAAjB;;EChCA;EACA,IAAMgR,QAAQ,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,OAAjB,EAA0B,MAA1B,EAAkC,MAAlC,EAA0C,SAA1C,EAAqD,KAArD,EAA4D,MAA5D,EAAoE,OAApE,CAAjB;EACA,IAAMC,UAAU,GAAG,CAAC,MAAD,CAAnB;EAEA,IAAM9Q,UAAU,GAAG;EACjB+Q,EAAAA,IAAI,EAAE,QADW;EAEjBC,EAAAA,IAAI,EAAE,QAFW;EAGjBC,EAAAA,IAAI,EAAE,SAHW;EAIjBC,EAAAA,KAAK,EAAE,WAJU;EAKjBC,EAAAA,KAAK,EAAE,WALU;EAMjBC,EAAAA,GAAG,EAAE,UANY;EAOjBC,EAAAA,KAAK,EAAE,OAPU;EAQjBC,EAAAA,GAAG,EAAE,OARY;EASjBC,EAAAA,IAAI,EAAE,MATW;EAUjBC,EAAAA,GAAG,EAAE,SAVY;EAWjBC,EAAAA,KAAK,EAAE;EAXU,CAAnB;EAcA,IAAMznB,UAAU,GAAG,CACjB;EACEvB,EAAAA,GAAG,EAAE,KADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CADiB,EAKjB;EACEvnB,EAAAA,GAAG,EAAE,cADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CALiB,EASjB;EACEvnB,EAAAA,GAAG,EAAE,cADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CATiB,EAajB;EACEvnB,EAAAA,GAAG,EAAE,OADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CAbiB,EAiBjB;EACEvnB,EAAAA,GAAG,EAAE,eADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CAjBiB,CAAnB;;EAuBA,IAAM0B,cAAc,GAAG,SAAjBA,cAAiB,CAASnuB,GAAT,EAAc;;EAEnC,MAAIyc,UAAU,CAAChX,cAAX,CAA0BzF,GAA1B,CAAJ,EAAoC;EAClC,WAAOyc,UAAU,CAACzc,GAAD,CAAjB;EACD,GAJkC;;;EAMnC,OAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuG,UAAU,CAACnG,MAA/B,EAAuCJ,CAAC,EAAxC,EAA4C;EAC1C,QAAIuG,UAAU,CAACvG,CAAD,CAAV,CAAcgF,GAAd,CAAkBrC,IAAlB,CAAuB7C,GAAvB,CAAJ,EAAiC;EAC/B,aAAOA,GAAG,CAACmD,OAAJ,CAAYsD,UAAU,CAACvG,CAAD,CAAV,CAAcgF,GAA1B,EAA+BuB,UAAU,CAACvG,CAAD,CAAV,CAAcusB,IAA7C,CAAP;EACD;EACF,GAVkC;;;EAYnC,OAAK,IAAIvsB,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGqtB,UAAU,CAACjtB,MAA/B,EAAuCJ,EAAC,EAAxC,EAA4C;EAC1C,QAAIqtB,UAAU,CAACrtB,EAAD,CAAV,CAAc2C,IAAd,CAAmB7C,GAAnB,MAA4B,IAAhC,EAAsC;EACpC,aAAO,IAAP;EACD;EACF,GAhBkC;;;EAkBnC,OAAK,IAAIE,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGotB,QAAQ,CAAChtB,MAA7B,EAAqCJ,GAAC,EAAtC,EAA0C;EACxC,QAAIotB,QAAQ,CAACptB,GAAD,CAAR,CAAY2C,IAAZ,CAAiB7C,GAAjB,MAA0B,IAA9B,EAAoC;EAClC,UAAIA,GAAG,CAACmK,MAAJ,CAAWnK,GAAG,CAACM,MAAJ,GAAa,CAAxB,MAA+B,GAAnC,EAAwC;EACtC,eAAON,GAAG,GAAG,IAAb;EACD;;EACD,aAAOA,GAAG,GAAG,KAAb;EACD;EACF;;EACD,SAAOA,GAAG,GAAG,KAAb;EACD,CA3BD;;EA6BA,iBAAc,GAAGmuB,cAAjB;;ECtEA;EACA,IAAMb,UAAQ,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,OAAjB,EAA0B,MAA1B,EAAkC,MAAlC,EAA0C,SAA1C,EAAqD,KAArD,EAA4D,MAA5D,EAAoE,MAApE,EAA4E,SAA5E,CAAjB;EACA,IAAMC,YAAU,GAAG,CAAC,MAAD,EAAS,MAAT,CAAnB;EAEA,IAAM9Q,YAAU,GAAG;EACjB2R,EAAAA,IAAI,EAAE,QADW;EAEjBC,EAAAA,IAAI,EAAE,QAFW;EAGjBC,EAAAA,KAAK,EAAE,SAHU;EAIjBC,EAAAA,MAAM,EAAE,UAJS;EAKjBC,EAAAA,GAAG,EAAE,QALY;EAMjBR,EAAAA,IAAI,EAAE,QANW;EAOjBS,EAAAA,IAAI,EAAE,QAPW;EAQjBV,EAAAA,GAAG,EAAE,OARY;EASjBW,EAAAA,GAAG,EAAE,QATY;EAUjBT,EAAAA,GAAG,EAAE;EAVY,CAAnB;EAaA,IAAMxnB,YAAU,GAAG,CACjB;EACEvB,EAAAA,GAAG,EAAE,KADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CADiB,EAKjB;EACEvnB,EAAAA,GAAG,EAAE,cADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CALiB,EASjB;EACEvnB,EAAAA,GAAG,EAAE,cADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CATiB,EAajB;EACEvnB,EAAAA,GAAG,EAAE,OADP;EAEEunB,EAAAA,IAAI,EAAE;EAFR,CAbiB,CAAnB;;EAmBA,IAAMkC,cAAc,GAAG,SAAjBA,cAAiB,CAAS3uB,GAAT,EAAc;;EAEnC,MAAIyc,YAAU,CAAChX,cAAX,CAA0BzF,GAA1B,CAAJ,EAAoC;EAClC,WAAOyc,YAAU,CAACzc,GAAD,CAAjB;EACD,GAJkC;;;EAMnC,OAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuG,YAAU,CAACnG,MAA/B,EAAuCJ,CAAC,EAAxC,EAA4C;EAC1C,QAAIuG,YAAU,CAACvG,CAAD,CAAV,CAAcgF,GAAd,CAAkBrC,IAAlB,CAAuB7C,GAAvB,MAAgC,IAApC,EAA0C;EACxC,aAAOA,GAAG,CAACmD,OAAJ,CAAYsD,YAAU,CAACvG,CAAD,CAAV,CAAcgF,GAA1B,EAA+BuB,YAAU,CAACvG,CAAD,CAAV,CAAcusB,IAA7C,CAAP;EACD;EACF,GAVkC;;;EAYnC,OAAK,IAAIvsB,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGqtB,YAAU,CAACjtB,MAA/B,EAAuCJ,EAAC,EAAxC,EAA4C;EAC1C,QAAIqtB,YAAU,CAACrtB,EAAD,CAAV,CAAc2C,IAAd,CAAmB7C,GAAnB,MAA4B,IAAhC,EAAsC;EACpC,aAAO,IAAP;EACD;EACF,GAhBkC;;;EAkBnC,OAAK,IAAIE,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGotB,UAAQ,CAAChtB,MAA7B,EAAqCJ,GAAC,EAAtC,EAA0C;EACxC,QAAIotB,UAAQ,CAACptB,GAAD,CAAR,CAAY2C,IAAZ,CAAiB7C,GAAjB,MAA0B,IAA9B,EAAoC;EAClC,aAAOA,GAAG,GAAG,IAAb;EACD;EACF,GAtBkC;;;EAwBnC,MAAI,KAAK6C,IAAL,CAAU7C,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,WAAOA,GAAG,GAAG,GAAb;EACD;;EACD,SAAOA,GAAG,GAAG,IAAb;EACD,CA5BD;;EA8BA,iBAAc,GAAG2uB,cAAjB;;EClEA,IAAMpkB,KAAG,GAAG;EACVqkB,EAAAA,aAAa,EAAEvlB,aADL;EAEVwlB,EAAAA,aAAa,EAAEvlB;EAFL,CAAZ;;;EAMA,IAAMgT,WAAS,GAAG,SAAZA,SAAY,CAASxa,CAAT,EAAY;EAC5B,MAAIsN,GAAG,GAAG,EAAV,CAD4B;;EAG5B,MAAI0f,GAAG,GAAGvkB,KAAG,CAACqkB,aAAJ,CAAkB9sB,CAAlB,CAAV;;EACA,MAAIgtB,GAAJ,EAAS;EACP1f,IAAAA,GAAG,CAACoJ,WAAJ,GAAkBsW,GAAlB;EACD,GAN2B;;;EAQ5B,MAAIC,IAAI,GAAGxkB,KAAG,CAACskB,aAAJ,CAAkB/sB,CAAlB,CAAX;;EACA,MAAIitB,IAAJ,EAAU;EACR3f,IAAAA,GAAG,CAACmJ,WAAJ,GAAkBwW,IAAlB;EACD;;EACD,SAAO3f,GAAP;EACD,CAbD;;EAcA,cAAc,GAAGkN,WAAjB;;ECpBA;EACA,IAAM4Q,UAAQ,GAAG;EACf1sB,EAAAA,CAAC,EAAE,CAAC,CAAC,sCAAD,EAAyC,MAAzC,CAAD,EAAmD,CAAC,WAAD,EAAc,KAAd,CAAnD,CADY;EAGfI,EAAAA,CAAC,EAAE,CACD,CAAC,eAAD,EAAkB,QAAlB,CADC,EAED,CAAC,UAAD,EAAa,KAAb,CAFC,EAGD,CAAC,eAAD,EAAkB,OAAlB,CAHC,EAID,CAAC,cAAD,EAAiB,OAAjB,CAJC,CAHY;EAUfC,EAAAA,CAAC,EAAE,CACD,CAAC,sCAAD,EAAyC,OAAzC,CADC,EAED,CAAC,kEAAD,EAAqE,OAArE,CAFC,CAVY;EAefX,EAAAA,CAAC,EAAE,CAAC,CAAC,gBAAD,EAAmB,KAAnB,CAAD,CAfY;EAiBfkB,EAAAA,CAAC,EAAE,CAAC,CAAC,YAAD,EAAe,KAAf,CAAD,CAjBY;EAmBfC,EAAAA,CAAC,EAAE,CAAC,CAAC,WAAD,EAAc,IAAd,CAAD,CAnBY;EAqBfC,EAAAA,CAAC,EAAE,CAAC,CAAC,2BAAD,EAA8B,OAA9B,CAAD,CArBY;EAuBfI,EAAAA,CAAC,EAAE,CACD,CAAC,eAAD,EAAkB,MAAlB,CADC,EAED,CAAC,kBAAD,EAAqB,MAArB,CAFC,EAGD,CAAC,OAAD,EAAU,KAAV,CAHC,EAID,CAAC,SAAD,EAAY,OAAZ,CAJC,EAKD,CAAC,SAAD,EAAY,KAAZ,CALC,EAMD,CAAC,0BAAD,EAA6B,OAA7B,CANC,EAOD,CAAC,6CAAD,EAAgD,KAAhD,CAPC,CAvBY;EAiCfK,EAAAA,CAAC,EAAE,CAAC,CAAC,+BAAD,EAAkC,QAAlC,CAAD,EAA8C,CAAC,SAAD,EAAY,MAAZ,CAA9C,CAjCY;EAmCfC,EAAAA,CAAC,EAAE,CAAC,CAAC,mBAAD,EAAsB,OAAtB,CAAD,CAnCY;EAqCfC,EAAAA,CAAC,EAAE,CAAC,CAAC,UAAD,EAAa,OAAb,CAAD;EArCY,CAAjB;EAwCA,UAAc,GAAGirB,UAAjB;;ECxCA,IAAM8B,IAAI,GAAG,gBAAb;;EAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAASjvB,GAAT,EAAc;EAC9B,MAAIU,CAAC,GAAGV,GAAG,CAACA,GAAG,CAACM,MAAJ,GAAa,CAAd,CAAX;;EACA,MAAI4uB,MAAK,CAACzpB,cAAN,CAAqB/E,CAArB,MAA4B,IAAhC,EAAsC;EACpC,SAAK,IAAIR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgvB,MAAK,CAACxuB,CAAD,CAAL,CAASJ,MAA7B,EAAqCJ,CAAC,IAAI,CAA1C,EAA6C;EAC3C,UAAIgF,GAAG,GAAGgqB,MAAK,CAACxuB,CAAD,CAAL,CAASR,CAAT,EAAY,CAAZ,CAAV;;EACA,UAAIgF,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,MAAkB,IAAtB,EAA4B;EAC1B,eAAOA,GAAG,CAACmD,OAAJ,CAAY+B,GAAZ,EAAiBgqB,MAAK,CAACxuB,CAAD,CAAL,CAASR,CAAT,EAAY,CAAZ,CAAjB,CAAP;EACD;EACF;EACF;;EACD,SAAO,IAAP;EACD,CAXD;;;;;;EAgBA,IAAMivB,SAAS,GAAG,SAAZA,SAAY,GAA0B;EAAA,MAAjBnvB,GAAiB,uEAAX,EAAW;EAAA,MAAPuG,KAAO;EAC1C,MAAIkW,UAAU,GAAGlW,KAAK,CAACkW,UAAN,CAAiBhC,KAAlC,CAD0C;;EAI1C,MAAIgC,UAAU,CAAChX,cAAX,CAA0BzF,GAA1B,CAAJ,EAAoC;EAClC,WAAOyc,UAAU,CAACzc,GAAD,CAAjB;EACD,GANyC;;;EAS1C,MAAImc,MAAM,GAAG8S,SAAS,CAACjvB,GAAD,CAAtB;;EACA,MAAImc,MAAM,KAAK,IAAf,EAAqB;EACnB,WAAOA,MAAP;EACD,GAZyC;;;EAc1C,MAAI6S,IAAI,CAACnsB,IAAL,CAAU7C,GAAV,CAAJ,EAAoB;EAClB,WAAOA,GAAG,GAAG,IAAb;EACD,GAhByC;;;EAkB1C,SAAOA,GAAG,GAAG,GAAb;EACD,CAnBD;;EAoBA,YAAc,GAAGmvB,SAAjB;;ECvCA;EACA,YAAc,GAAG,CACf,CAAC,aAAD,EAAgB,KAAhB,CADe,EAEf,CAAC,QAAD,EAAW,MAAX,CAFe,EAGf,CAAC,oBAAD,EAAuB,OAAvB,CAHe,EAIf,CAAC,oEAAD,EAAuE,KAAvE,CAJe,EAKf,CAAC,wCAAD,EAA2C,KAA3C,CALe,EAMf,CAAC,uCAAD,EAA0C,KAA1C,CANe,EAOf,CAAC,8CAAD,EAAiD,MAAjD,CAPe,EAQf,CAAC,8BAAD,EAAiC,KAAjC,CARe;EAUf,CAAC,kBAAD,EAAqB,IAArB,CAVe,EAWf,CAAC,yBAAD,EAA4B,MAA5B,CAXe,EAYf,CAAC,uBAAD,EAA0B,MAA1B,CAZe,EAaf,CAAC,sBAAD,EAAyB,IAAzB,CAbe,EAcf,CAAC,OAAD,EAAU,KAAV,CAde,EAef,CAAC,UAAD,EAAa,OAAb,CAfe,EAgBf,CAAC,WAAD,EAAc,MAAd,CAhBe,EAiBf,CAAC,qBAAD,EAAwB,KAAxB,CAjBe,EAkBf,CAAC,YAAD,EAAe,SAAf,CAlBe,EAmBf,CAAC,YAAD,EAAe,QAAf,CAnBe,EAoBf,CAAC,cAAD,EAAiB,QAAjB,CApBe,EAqBf,CAAC,oBAAD,EAAuB,MAAvB,CArBe,EAsBf,CAAC,oBAAD,EAAuB,IAAvB,CAtBe,EAuBf,CAAC,QAAD,EAAW,IAAX,CAvBe,EAwBf,CAAC,SAAD,EAAY,IAAZ,CAxBe,EAyBf,CAAC,KAAD,EAAQ,EAAR,CAzBe,CAAjB;;ECCA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAS9jB,GAAT,EAAc;EAC9B,SAAOnJ,MAAM,CAACC,IAAP,CAAYkJ,GAAZ,EAAiBtH,MAAjB,CAAwB,UAACjD,CAAD,EAAIG,CAAJ,EAAU;EACvCH,IAAAA,CAAC,CAACuK,GAAG,CAACpK,CAAD,CAAJ,CAAD,GAAYA,CAAZ;EACA,WAAOH,CAAP;EACD,GAHM,EAGJ,EAHI,CAAP;EAID,CALD;;EAOA,IAAM4F,UAAU,GAAG,SAAbA,UAAa,CAAS3G,GAAT,EAAcuG,KAAd,EAAqB;EACtC,MAAIkW,UAAU,GAAGlW,KAAK,CAACkW,UAAN,CAAiBhC,KAAlC;EACA,MAAI4U,MAAM,GAAGD,SAAS,CAAC3S,UAAD,CAAtB,CAFsC;;EAKtC,MAAI4S,MAAM,CAAC5pB,cAAP,CAAsBzF,GAAtB,CAAJ,EAAgC;EAC9B,WAAOqvB,MAAM,CAACrvB,GAAD,CAAb;EACD,GAPqC;;;EAUtC,OAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgvB,QAAK,CAAC5uB,MAA1B,EAAkCJ,CAAC,EAAnC,EAAuC;EACrC,QAAIgvB,QAAK,CAAChvB,CAAD,CAAL,CAAS,CAAT,EAAY2C,IAAZ,CAAiB7C,GAAjB,MAA0B,IAA9B,EAAoC;EAClCA,MAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY+rB,QAAK,CAAChvB,CAAD,CAAL,CAAS,CAAT,CAAZ,EAAyBgvB,QAAK,CAAChvB,CAAD,CAAL,CAAS,CAAT,CAAzB,CAAN;EACA,aAAOF,GAAP;EACD;EACF;;EACD,SAAOA,GAAP;EACD,CAjBD;;EAkBA,gBAAc,GAAG2G,UAAjB;;EC3BA;EACA,IAAIuoB,KAAK,GAAG;EACV/nB,EAAAA,UAAU,EAAE,CACV;EACEjC,IAAAA,GAAG,EAAE,OADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GADU,EAKV;EACEpqB,IAAAA,GAAG,EAAE,gBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GALU,CADF;EAYVloB,EAAAA,KAAK,EAAE,CACL;EACElC,IAAAA,GAAG,EAAE,UADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GADK,CAZG;EAmBVpoB,EAAAA,YAAY,EAAE,CACZ;EACEhC,IAAAA,GAAG,EAAE,aADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GADY,EAKZ;EACEpqB,IAAAA,GAAG,EAAE,cADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GALY,EASZ;EACEpqB,IAAAA,GAAG,EAAE,aADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GATY,EAaZ;EACEpqB,IAAAA,GAAG,EAAE,yBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAbY,EAiBZ;EACEpqB,IAAAA,GAAG,EAAE,0CADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjBY,EAqBZ;EACEpqB,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArBY,EAyBZ;EACEpqB,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzBY,EA6BZ;EACEpqB,IAAAA,GAAG,EAAE,cADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7BY,EAiCZ;EACEpqB,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjCY,EAqCZ;EACEpqB,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArCY,EAyCZ;EACEpqB,IAAAA,GAAG,EAAE,UADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzCY,EA6CZ;EACEpqB,IAAAA,GAAG,EAAE,MADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7CY,EAiDZ;EACEpqB,IAAAA,GAAG,EAAE,KADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjDY,CAnBJ;EA0EVroB,EAAAA,MAAM,EAAE,CACN;EACE/B,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GADM,EAKN;EACEpqB,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GALM,EASN;EACEpqB,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GATM,EAaN;EACEpqB,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAbM,EAiBN;EACEpqB,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjBM,EAqBN;EACEpqB,IAAAA,GAAG,EAAE,aADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArBM,EAyBN;EACEpqB,IAAAA,GAAG,EAAE,kBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzBM,EA6BN;EACEpqB,IAAAA,GAAG,EAAE,gBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7BM,EAiCN;EACEpqB,IAAAA,GAAG,EAAE,YADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjCM,EAqCN;EACEpqB,IAAAA,GAAG,EAAE,qEADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArCM,EAyCN;EACEpqB,IAAAA,GAAG,EAAE,cADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzCM,EA6CN;EACEpqB,IAAAA,GAAG,EAAE,WADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7CM,CA1EE;EA6HVtoB,EAAAA,SAAS,EAAE,CACT;EACE9B,IAAAA,GAAG,EAAE,SADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GADS,EAKT;EACEpqB,IAAAA,GAAG,EAAE,kBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GALS,EAST;EACEpqB,IAAAA,GAAG,EAAE,iBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GATS,EAaT;EACEpqB,IAAAA,GAAG,EAAE,aADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAbS,EAiBT;EACEpqB,IAAAA,GAAG,EAAE,gBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjBS,EAqBT;EACEpqB,IAAAA,GAAG,EAAE,aADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArBS,EAyBT;EACEpqB,IAAAA,GAAG,EAAE,cADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzBS,EA6BT;EACEpqB,IAAAA,GAAG,EAAE,UADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7BS,EAiCT;EACEpqB,IAAAA,GAAG,EAAE,QADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjCS,EAqCT;EACEpqB,IAAAA,GAAG,EAAE,QADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArCS,EAyCT;EACEpqB,IAAAA,GAAG,EAAE,YADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzCS,EA6CT;EACEpqB,IAAAA,GAAG,EAAE,YADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7CS,EAiDT;EACEpqB,IAAAA,GAAG,EAAE,yBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjDS,EAqDT;EACEpqB,IAAAA,GAAG,EAAE,iBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArDS,EAyDT;EACEpqB,IAAAA,GAAG,EAAE,wFADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzDS,EA6DT;EACEpqB,IAAAA,GAAG,EAAE,WADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7DS,EAiET;EACEpqB,IAAAA,GAAG,EAAE,WADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjES,EAqET;EACEpqB,IAAAA,GAAG,EAAE,UADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArES,EAyET;EACEpqB,IAAAA,GAAG,EAAE,mBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzES,EA6ET;EACEpqB,IAAAA,GAAG,EAAE,WADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7ES,EAiFT;EACEpqB,IAAAA,GAAG,EAAE,UADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjFS,EAqFT;EACEpqB,IAAAA,GAAG,EAAE,WADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GArFS,EAyFT;EACEpqB,IAAAA,GAAG,EAAE,kBADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAzFS,EA6FT;EACEpqB,IAAAA,GAAG,EAAE,YADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GA7FS,EAiGT;EACEpqB,IAAAA,GAAG,EAAE,WADP;EAEEoqB,IAAAA,EAAE,EAAE;EAFN,GAjGS;EA7HD,CAAZ;EAoOA,cAAc,GAAGJ,KAAjB;;ECrOA,IAAIK,SAAS,GAAG;EACdtoB,EAAAA,MAAM,EAAE,CAAC,KAAD,CADM;EAEdG,EAAAA,KAAK,EAAE,CAAC,MAAD,CAFO;EAGdN,EAAAA,UAAU,EAAE,CACV,KADU,EAEV,KAFU,EAGV,MAHU,EAIV,MAJU,EAKV,MALU,EAMV,MANU,EAOV,KAPU,EAQV,KARU,EASV,KATU,EAUV,KAVU,EAWV,KAXU,EAYV,KAZU,EAaV,KAbU,EAcV,KAdU,EAeV,KAfU,EAgBV,KAhBU,EAiBV,KAjBU,EAkBV,KAlBU,EAmBV,KAnBU,EAoBV,KApBU,EAqBV,KArBU,EAsBV,KAtBU,EAuBV,KAvBU,EAwBV,KAxBU,EAyBV,KAzBU,EA0BV,KA1BU,EA2BV,KA3BU,EA4BV,KA5BU,EA6BV,KA7BU,EA8BV,KA9BU,EA+BV,KA/BU,EAgCV,KAhCU,EAiCV,KAjCU,EAkCV,KAlCU,EAmCV,KAnCU,EAoCV,KApCU,EAqCV,IArCU,EAsCV,IAtCU,EAuCV,KAvCU,EAwCV,KAxCU,EAyCV,KAzCU,EA0CV,IA1CU,CAHE;EA+CdE,EAAAA,SAAS,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyB,IAAzB,EAA+B,IAA/B,CA/CG;EAgDdE,EAAAA,YAAY,EAAE,CACZ,KADY,EAEZ,KAFY,EAGZ,KAHY,EAIZ,KAJY,EAKZ,KALY,EAMZ,KANY,EAOZ,KAPY,EAQZ,KARY,EASZ,KATY,EAUZ,MAVY,EAWZ,MAXY,EAYZ,MAZY,EAaZ,MAbY,EAcZ,MAdY,EAeZ,MAfY,EAgBZ,KAhBY,EAiBZ,KAjBY,EAkBZ,KAlBY,EAmBZ,KAnBY,EAoBZ,KApBY,EAqBZ,KArBY,EAsBZ,KAtBY,EAuBZ,KAvBY,EAwBZ,KAxBY,EAyBZ,KAzBY,EA0BZ,KA1BY,EA2BZ,KA3BY,EA4BZ,KA5BY,EA6BZ,KA7BY,EA8BZ,KA9BY,EA+BZ,IA/BY,EAgCZ,IAhCY,EAiCZ,IAjCY;EAhDA,CAAhB;;EAqFAqoB,SAAS,GAAGptB,MAAM,CAACC,IAAP,CAAYmtB,SAAZ,EAAuBvrB,MAAvB,CAA8B,UAACjD,CAAD,EAAIG,CAAJ,EAAU;EAClDquB,EAAAA,SAAS,CAACruB,CAAD,CAAT,CAAamB,OAAb,CAAqB,UAAA7B,CAAC;EAAA,WAAKO,CAAC,CAACP,CAAD,CAAD,GAAOU,CAAZ;EAAA,GAAtB;EACA,SAAOH,CAAP;EACD,CAHW,EAGT,EAHS,CAAZ;EAIA,UAAc,GAAGwuB,SAAjB;;ECtFA;;EACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAASxvB,GAAT,EAAc;EAC/B,MAAIyvB,KAAK,GAAGzvB,GAAG,CAACoK,MAAJ,CAAWpK,GAAG,CAACM,MAAJ,GAAa,CAAxB,CAAZ;;EACA,MAAIovB,MAAK,CAACjqB,cAAN,CAAqBgqB,KAArB,MAAgC,IAApC,EAA0C;EACxC,WAAOC,MAAK,CAACD,KAAD,CAAZ;EACD;;EACD,MAAIE,GAAG,GAAG3vB,GAAG,CAACoK,MAAJ,CAAWpK,GAAG,CAACM,MAAJ,GAAa,CAAxB,CAAV;;EACA,MAAIovB,MAAK,CAACjqB,cAAN,CAAqBkqB,GAArB,MAA8B,IAAlC,EAAwC;EACtC,WAAOD,MAAK,CAACC,GAAD,CAAZ;EACD;;EACD,MAAIC,GAAG,GAAG5vB,GAAG,CAACoK,MAAJ,CAAWpK,GAAG,CAACM,MAAJ,GAAa,CAAxB,CAAV;;EACA,MAAIsvB,GAAG,KAAK,GAAZ,EAAiB;EACf,WAAO,cAAP;EACD;;EACD,SAAO,IAAP;EACD,CAdD;;EAgBA,IAAMvoB,YAAY,GAAG,SAAfA,YAAe,CAASrH,GAAT,EAAcuG,KAAd,EAAqBQ,KAArB,EAA4B;EAC/C,MAAI,CAAC/G,GAAL,EAAU;EACR,WAAO,EAAP;EACD,GAH8C;;;EAK/C,MAAIuG,KAAK,CAACuJ,KAAN,CAAYrK,cAAZ,CAA2BzF,GAA3B,MAAoC,IAAxC,EAA8C;EAC5C,QAAI6vB,MAAM,GAAGtpB,KAAK,CAACkW,UAAN,CAAiB/B,KAA9B;EACA,QAAItY,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYytB,MAAZ,CAAX;;EACA,SAAK,IAAI3vB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EACpC,UAAIyc,KAAK,GAAGxa,MAAM,CAACC,IAAP,CAAYytB,MAAM,CAACztB,IAAI,CAAClC,CAAD,CAAL,CAAlB,CAAZ;;EACA,WAAK,IAAIoB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqb,KAAK,CAACrc,MAA1B,EAAkCgB,CAAC,EAAnC,EAAuC;EACrC,YAAItB,GAAG,KAAK6vB,MAAM,CAACztB,IAAI,CAAClC,CAAD,CAAL,CAAN,CAAgByc,KAAK,CAACrb,CAAD,CAArB,CAAZ,EAAuC;EACrC,iBAAOc,IAAI,CAAClC,CAAD,CAAX;EACD;EACF;EACF;EACF,GAhB8C;;;EAmB/C6G,EAAAA,KAAK,GAAGA,KAAK,IAAIyoB,UAAU,CAACxvB,GAAD,CAA3B;;EACA,MAAI+G,KAAK,IAAImoB,UAAK,CAACnoB,KAAD,CAAlB,EAA2B;EACzB,SAAK,IAAI7G,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGgvB,UAAK,CAACnoB,KAAD,CAAL,CAAazG,MAAjC,EAAyCJ,EAAC,EAA1C,EAA8C;EAC5C,UAAM4vB,IAAI,GAAGZ,UAAK,CAACnoB,KAAD,CAAL,CAAa7G,EAAb,CAAb;;EACA,UAAI4vB,IAAI,CAAC5qB,GAAL,CAASrC,IAAT,CAAc7C,GAAd,MAAuB,IAA3B,EAAiC;EAC/B,eAAOA,GAAG,CAACmD,OAAJ,CAAY2sB,IAAI,CAAC5qB,GAAjB,EAAsB4qB,IAAI,CAACR,EAA3B,CAAP;EACD;EACF;EACF;;EACD,SAAOtvB,GAAP;EACD,CA7BD;;EA8BA,kBAAc,GAAGqH,YAAjB;;ECxCA,IAAMoV,YAAU,GAAG;EACjBhC,EAAAA,KAAK,EAAEpR,OADU;EAEjBqR,EAAAA,KAAK,EAAEpR;EAFU,CAAnB;;EAMA,IAAM7C,YAAU,GAAG;EACjB6V,EAAAA,SAAS,EAAE/S,WADM;EAEjBgT,EAAAA,UAAU,EAAE/S,UAFK;EAGjB4S,EAAAA,QAAQ,EAAE3S,QAHO;EAIjB9C,EAAAA,UAAU,EAAE+I,YAJK;EAKjBrI,EAAAA,YAAY,EAAE0oB;EALG,CAAnB;EAQA,IAAIvlB,UAAS,GAAG,KAAhB;;;MAGMwlB;;;EACJ,mBAAc;EAAA;;;EAEZ7tB,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCC,MAAAA,UAAU,EAAE,KADuB;EAEnCE,MAAAA,KAAK,EAAE0H,MAF4B;EAGnC3H,MAAAA,QAAQ,EAAE;EAHyB,KAArC;EAKA9Q,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,aAA5B,EAA2C;EACzCC,MAAAA,UAAU,EAAE,KAD6B;EAEzCE,MAAAA,KAAK,EAAE,EAFkC;EAGzCD,MAAAA,QAAQ,EAAE;EAH+B,KAA3C;EAKA9Q,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,YAA5B,EAA0C;EACxCC,MAAAA,UAAU,EAAE,KAD4B;EAExCE,MAAAA,KAAK,EAAEuJ,YAFiC;EAGxCxJ,MAAAA,QAAQ,EAAE;EAH8B,KAA1C;EAKA9Q,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;EAClCC,MAAAA,UAAU,EAAE,KADsB;EAElCE,MAAAA,KAAK,EAAE/Q,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkB6mB,IAAlB,CAF2B;EAGlChd,MAAAA,QAAQ,EAAE;EAHwB,KAApC;EAKA9Q,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,YAA5B,EAA0C;EACxCC,MAAAA,UAAU,EAAE,KAD4B;EAExCE,MAAAA,KAAK,EAAEzM,YAFiC;EAGxCwM,MAAAA,QAAQ,EAAE;EAH8B,KAA1C;EAMA9Q,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;EACrCC,MAAAA,UAAU,EAAE,KADyB;EAErCE,MAAAA,KAAK,EAAE,EAF8B;EAGrCD,MAAAA,QAAQ,EAAE;EAH2B,KAAvC,EA5BY;;EAkCZ,SAAKid,WAAL,CAAiBC,KAAjB,EAlCY;;EAoCZ,SAAK3T,aAAL,GApCY;;EAuCZra,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCC,MAAAA,UAAU,EAAE,KADuB;EAEnCE,MAAAA,KAAK,EAAE;EACL5K,QAAAA,aAAa,EAAE,KAAK8nB,QAAL,CAAc,cAAd;EADV;EAF4B,KAArC;EAMD;;;;;;8BAGOC,MAAM;EACZ7lB,MAAAA,UAAS,GAAG6lB,IAAZ;EACA,aAAO,IAAP;EACD;;;kCACW;EACV,aAAO7lB,UAAP;EACD;;;;;+BAGQ5E,KAAK;EACZ,UAAImW,GAAG,GAAG,KAAKjM,KAAf;EACA,UAAIV,GAAG,GAAG,EAAV;EACA,UAAIU,KAAK,GAAG3N,MAAM,CAACC,IAAP,CAAY2Z,GAAZ,CAAZ;;EACA,WAAK,IAAI7b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4P,KAAK,CAACxP,MAA1B,EAAkCJ,CAAC,EAAnC,EAAuC;EACrC,YAAI,OAAO6b,GAAG,CAACjM,KAAK,CAAC5P,CAAD,CAAN,CAAV,KAAyB,QAA7B,EAAuC;EACrC,cAAI6b,GAAG,CAACjM,KAAK,CAAC5P,CAAD,CAAN,CAAH,KAAkB0F,GAAtB,EAA2B;EACzBwJ,YAAAA,GAAG,CAACU,KAAK,CAAC5P,CAAD,CAAN,CAAH,GAAgB,IAAhB;EACD;EACF,SAJD,MAIO,IAAI6b,GAAG,CAACjM,KAAK,CAAC5P,CAAD,CAAN,CAAH,CAAciG,IAAd,CAAmB,UAAAxE,CAAC;EAAA,iBAAIA,CAAC,KAAKiE,GAAV;EAAA,SAApB,CAAJ,EAAwC;EAC7CwJ,UAAAA,GAAG,CAACU,KAAK,CAAC5P,CAAD,CAAN,CAAH,GAAgB,IAAhB;EACD;EACF;;EACD,aAAOkP,GAAP;EACD;;;;;kCAGW2M,KAAK;EACf,UAAIlW,IAAI,GAAG1D,MAAM,CAACC,IAAP,CAAY2Z,GAAZ,CAAX;;EACA,WAAK,IAAI7b,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2F,IAAI,CAACvF,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EACpC,YAAI4P,KAAK,GAAG3N,MAAM,CAACC,IAAP,CAAYsZ,cAAM,CAACK,GAAG,CAAClW,IAAI,CAAC3F,CAAD,CAAL,CAAJ,CAAlB,CAAZ;;EACA,aAAK,IAAI4B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgO,KAAK,CAACxP,MAA1B,EAAkCwB,CAAC,EAAnC,EAAuC;EACrCwuB,UAAAA,QAAM,CAACxU,OAAP,CAAehM,KAAK,CAAChO,CAAD,CAApB,EAAyB+D,IAAI,CAAC3F,CAAD,CAA7B,EAAkC,KAAK4P,KAAvC,EADqC;;EAGrCwgB,UAAAA,QAAM,CAACtU,OAAP,CAAelM,KAAK,CAAChO,CAAD,CAApB,EAAyB+D,IAAI,CAAC3F,CAAD,CAA7B,EAAkC,IAAlC;EACD;EACF;EACF;;;;;iCAEQoL,KAAK;EACZ,UAAIlJ,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYkJ,GAAZ,CAAX;;EACA,WAAK,IAAIpL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EACpC,YAAI+D,IAAI,GAAG7B,IAAI,CAAClC,CAAD,CAAJ,CAAQ8C,WAAR,EAAX;EACAstB,QAAAA,QAAM,CAACxU,OAAP,CAAe7X,IAAf,EAAqBqH,GAAG,CAAClJ,IAAI,CAAClC,CAAD,CAAL,CAAxB,EAAmC,KAAK4P,KAAxC,EAFoC;;EAIpCwgB,QAAAA,QAAM,CAACtU,OAAP,CAAe/X,IAAf,EAAqBqH,GAAG,CAAClJ,IAAI,CAAClC,CAAD,CAAL,CAAxB,EAAmC,IAAnC;EACD;EACF;;;sCAEe;EACdsc,MAAAA,eAAa,CAAC,IAAD,CAAb;;EACA,aAAO,IAAP;EACD;;;;;8BAGO3W,MAAM;EACZA,MAAAA,IAAI,GAAG1D,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkBvD,IAAlB,CAAP;EACA,WAAKA,IAAL,GAAY1D,MAAM,CAACiH,MAAP,CAAc,KAAKvD,IAAnB,EAAyBA,IAAzB,CAAZ,CAFY;;EAIZ,WAAKA,IAAL,GAAY0qB,SAAW,CAAC,KAAK1qB,IAAN,CAAvB;EACA,aAAO,IAAP;EACD;;;;;kCAEW2qB,IAAI;EACd,WAAKC,OAAL,CAAazkB,IAAb,CAAkBwkB,EAAlB;EACA,aAAO,IAAP;EACD;;;;;8BAGO;EACN,aAAO;EACL1gB,QAAAA,KAAK,EAAE3N,MAAM,CAACC,IAAP,CAAY,KAAK0N,KAAjB,EAAwBxP,MAD1B;EAELowB,QAAAA,OAAO,EAAEvuB,MAAM,CAACC,IAAP,CAAY,KAAKuuB,SAAL,CAAeD,OAA3B,EAAoCpwB,MAFxC;EAGL4hB,QAAAA,YAAY,EAAE/f,MAAM,CAACC,IAAP,CAAY,KAAKuuB,SAAL,CAAezO,YAA3B,EAAyC5hB,MAHlD;EAILswB,QAAAA,SAAS,EAAEzuB,MAAM,CAACC,IAAP,CAAY,KAAK8Z,WAAjB,EAA8B5b,MAJpC;EAKLuwB,QAAAA,cAAc,EAAE,KAAKJ,OAAL,CAAanwB;EALxB,OAAP;EAOD;;;;;;;EAIH,IAAMmL,OAAK,GAAG,SAARA,KAAQ,CAASH,GAAT,EAAc;EAC1B,SAAOsK,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACkb,SAAL,CAAexlB,GAAf,CAAX,CAAP;EACD,CAFD;;;;EAKA0kB,KAAK,CAAC/lB,SAAN,CAAgBwB,KAAhB,GAAwB,YAAW;EACjC,MAAIslB,EAAE,GAAG,IAAIf,KAAJ,EAAT,CADiC;;EAGjCe,EAAAA,EAAE,CAACjhB,KAAH,GAAW3N,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkB,KAAK0G,KAAvB,CAAX;EACAihB,EAAAA,EAAE,CAAC7U,WAAH,GAAiB/Z,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkB,KAAK8S,WAAvB,CAAjB,CAJiC;;EAMjC6U,EAAAA,EAAE,CAACtU,UAAH,GAAgBhR,OAAK,CAAC,KAAKgR,UAAN,CAArB;EACAsU,EAAAA,EAAE,CAAClrB,IAAH,GAAU4F,OAAK,CAAC,KAAK5F,IAAN,CAAf,CAPiC;;EASjCkrB,EAAAA,EAAE,CAACtqB,UAAH,GAAgB,KAAKA,UAArB;EACAsqB,EAAAA,EAAE,CAACN,OAAH,GAAa,KAAKA,OAAlB;EACA,SAAOM,EAAP;EACD,CAZD;;EAaA,WAAc,GAAGf,KAAjB;;;EC9KA;;;EAGA3rB,EAAAA,WAAA,GAAc,YAAW;EACvB,WAAO,KAAK8J,OAAL,GAAe,CAAf,KAAqB,IAA5B;EACD,GAFD;;;;EAKA9J,EAAAA,cAAA,GAAiB,YAAW;EAC1B,QAAI,KAAK2sB,IAAT,EAAe;EACb,aAAO,KAAKA,IAAZ;EACD;;EACD,WAAO,IAAP;EACD,GALD;;;;EAQA3sB,EAAAA,eAAA,GAAkB,UAAShD,CAAT,EAAY;EAC5B,QAAI2I,GAAG,GAAG,EAAV;;EACA,QAAMinB,SAAS,GAAG,SAAZA,SAAY,CAASnjB,GAAT,EAAc;EAC9B,UAAIA,GAAG,CAACkjB,IAAR,EAAc;EACZhnB,QAAAA,GAAG,CAACgC,IAAJ,CAAS8B,GAAG,CAACkjB,IAAb;EACAC,QAAAA,SAAS,CAACnjB,GAAG,CAACkjB,IAAL,CAAT;EACD;EACF,KALD;;EAMAC,IAAAA,SAAS,CAAC,IAAD,CAAT;EACAjnB,IAAAA,GAAG,GAAGA,GAAG,CAAC8H,OAAJ,EAAN;;EACA,QAAI,OAAOzQ,CAAP,KAAa,QAAjB,EAA2B;EACzB,aAAO2I,GAAG,CAAC3I,CAAD,CAAV;EACD;;EACD,WAAO2I,GAAP;EACD,GAdD;;;;EAiBA3F,EAAAA,aAAA,GAAgB,UAAS6sB,SAAT,EAAoB;EAClC,QAAItjB,IAAI,GAAG,KAAKA,IAAL,CAAUxB,GAAV,CAAc,UAAAqG,EAAE;EAAA,aAAIA,EAAE,CAAChH,KAAH,CAASylB,SAAT,CAAJ;EAAA,KAAhB,CAAX;EACA,QAAIjiB,GAAG,GAAG,KAAK/C,SAAL,CAAe0B,IAAf,CAAV;EACA,WAAOqB,GAAP;EACD,GAJD;;;;EAOA5K,EAAAA,iBAAA,GAAoB,YAAW;EAC7B,WAAO,KAAKuJ,IAAL,CAAU5J,MAAV,CAAiB,UAACiM,KAAD,EAAQ1O,CAAR,EAAc;EACpC0O,MAAAA,KAAK,IAAI1O,CAAC,CAAC4vB,SAAF,EAAT;EACA,aAAOlhB,KAAP;EACD,KAHM,EAGJ,CAHI,CAAP;EAID,GALD;;EAMA5L,EAAAA,iBAAA,GAAoBA,OAAO,CAAC8sB,SAA5B;;;;;;;;;;;EAWA9sB,EAAAA,aAAA,GAAgB,UAASmD,OAAT,EAAkB;EAAA;;EAChCA,IAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;EACA,SAAKoG,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIuO,KAAK,GAAG,EAAZ;EACAvO,MAAAA,CAAC,CAACsO,KAAF,GAAUtO,CAAC,CAACsO,KAAF,IAAW,EAArB;EACAtO,MAAAA,CAAC,CAACsO,KAAF,CAAQjE,KAAR,GAAgBrK,CAAC,CAACsO,KAAF,CAAQjE,KAAR,IAAiBrK,CAAC,CAACqK,KAAF,EAAjC,CAHqB;;EAKrBrK,MAAAA,CAAC,CAACsO,KAAF,CAAQjE,KAAR,CAAcvJ,OAAd,CAAsB,UAAAV,CAAC,EAAI;EACzBmO,QAAAA,KAAK,CAACnO,CAAC,CAACoB,KAAH,CAAL,GAAiB,IAAjB;EACA+M,QAAAA,KAAK,CAACnO,CAAC,CAACyB,OAAH,CAAL,GAAmB,IAAnB;EACA0M,QAAAA,KAAK,CAACnO,CAAC,CAAC1B,IAAF,CAAO+C,WAAP,EAAD,CAAL,GAA8B,IAA9B;;EACA,YAAIrB,CAAC,CAACoD,QAAN,EAAgB;EACd+K,UAAAA,KAAK,CAACnO,CAAC,CAACoD,QAAH,CAAL,GAAoB,IAApB;EACD;;EACD,YAAIpD,CAAC,CAACgE,IAAN,EAAY;EACVmK,UAAAA,KAAK,CAACnO,CAAC,CAACgE,IAAH,CAAL,GAAgB,IAAhB;EACD;;EACD,YAAIhE,CAAC,CAACuC,KAAF,KAAYsB,SAAhB,EAA2B;EACzBsK,UAAAA,KAAK,GAAG3N,MAAM,CAACiH,MAAP,CAAc0G,KAAd,EAAqBnO,CAAC,CAACuC,KAAvB,CAAR;EACD;;EACD,YAAIsD,OAAO,CAAC7B,IAAZ,EAAkB;EAChBhE,UAAAA,CAAC,CAACyvB,OAAF,CAAU,KAAI,CAAC7qB,KAAf;EACAuJ,UAAAA,KAAK,CAACnO,CAAC,CAACgE,IAAH,CAAL,GAAgB,IAAhB;EACD;EACF,OAjBD;EAkBA,aAAOmK,KAAK,CAAC,EAAD,CAAZ;EACAvO,MAAAA,CAAC,CAACsO,KAAF,CAAQC,KAAR,GAAgBA,KAAhB;EACD,KAzBD;EA0BA,WAAO,IAAP;EACD,GA7BD;;;;EAgCAzL,EAAAA,eAAA,GAAkB,YAAW;EAC3B,SAAKuJ,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrBA,MAAAA,CAAC,CAACsO,KAAF,GAAU,EAAV;EACD,KAFD,EAD2B;;EAK3B,SAAK1B,OAAL,GAAe9L,OAAf,CAAuB,UAAAyL,GAAG,EAAI;EAC5BA,MAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpBA,QAAAA,CAAC,CAACsO,KAAF,GAAU,EAAV;EACD,OAFD;EAGD,KAJD;EAKA,WAAO,IAAP;EACD,GAXD;;;;;;;;;;;;ECzFA;EACAxL,EAAAA,aAAA,GAAgB,UAAShD,CAAT,EAAY;EAC1B,QAAIA,CAAC,KAAKmE,SAAV,EAAqB;EACnB,aAAO,KAAKsG,GAAL,CAAS,CAAT,CAAP;EACD;;EACD,WAAO,KAAKqD,KAAL,CAAW,CAAX,EAAc9N,CAAd,CAAP;EACD,GALD;;;;EAQAgD,EAAAA,YAAA,GAAe,UAAShD,CAAT,EAAY;EACzB,QAAIA,CAAC,KAAKmE,SAAV,EAAqB;EACnB,aAAO,KAAKsG,GAAL,CAAS,KAAK8B,IAAL,CAAUtN,MAAV,GAAmB,CAA5B,CAAP;EACD;;EACD,QAAIiF,GAAG,GAAG,KAAKqI,IAAL,CAAUtN,MAApB;EACA,WAAO,KAAK6O,KAAL,CAAW5J,GAAG,GAAGlE,CAAjB,EAAoBkE,GAApB,CAAP;EACD,GAND;;;;EASAlB,EAAAA,aAAA,GAAgB,UAASiB,KAAT,EAAgBC,GAAhB,EAAqB;EACnC,QAAIqI,IAAI,GAAG,KAAKA,IAAL,CAAUuB,KAAV,CAAgB7J,KAAhB,EAAuBC,GAAvB,CAAX;EACA,WAAO,KAAK2G,SAAL,CAAe0B,IAAf,CAAP;EACD,GAHD;;;;EAMAvJ,EAAAA,UAAA,GAAa,UAAShD,CAAT,EAAY;EACvB,QAAIE,CAAC,GAAG,KAAKqM,IAAL,CAAUvM,CAAV,CAAR;;EACA,QAAIE,CAAC,KAAKiE,SAAV,EAAqB;EACnB,aAAO,KAAK0G,SAAL,CAAe,EAAf,CAAP;EACD;;EACD,WAAO,KAAKA,SAAL,CAAe,CAAC3K,CAAD,CAAf,CAAP;EACD,GAND;;EAOA8C,EAAAA,WAAA,GAAcA,OAAO,CAACgtB,EAAtB;;;EAGAhtB,EAAAA,iBAAA,GAAoB,YAAW;EAC7B,WAAO,KAAK4I,KAAL,CAAW,IAAX,CAAP;EACD,GAFD;;;;EAIA5I,EAAAA,gBAAA,GAAmB,YAAW;EAC5B,WAAO,KAAK4I,KAAL,CAAW,IAAX,CAAP;EACD,GAFD;;;;EAKA5I,EAAAA,gBAAA,GAAmB,UAASoR,GAAT,EAAc;EAC/B,QAAIzL,GAAG,GAAG,EAAV,CAD+B;;EAG/B,SAAK,IAAI9J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0N,IAAL,CAAUtN,MAA9B,EAAsCJ,CAAC,EAAvC,EAA2C;EACzC,UAAI0L,KAAK,GAAG,KAAKgC,IAAL,CAAU1N,CAAV,EAAa0L,KAAb,EAAZ;;EACA,WAAK,IAAItK,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsK,KAAK,CAACtL,MAA1B,EAAkCgB,CAAC,EAAnC,EAAuC;EACrC0I,QAAAA,GAAG,CAACgC,IAAJ,CAASJ,KAAK,CAACtK,CAAD,CAAd,EADqC;;EAGrC,YAAImU,GAAG,KAAKjQ,SAAR,IAAqBwE,GAAG,CAACyL,GAAD,CAAH,KAAajQ,SAAtC,EAAiD;EAC/C,iBAAOwE,GAAG,CAACyL,GAAD,CAAV;EACD;EACF;EACF;;EACD,WAAOzL,GAAP;EACD,GAdD;;;;;;;;;;;;ECzCA;EACA3F,EAAAA,aAAA,GAAgB,UAASa,GAAT,EAAc;;EAE5B,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;;EACA,QAAIoK,IAAI,CAAChP,MAAL,KAAgB,CAApB,EAAuB;EACrB,aAAO,KAAK4L,SAAL,CAAe,EAAf,CAAP;EACD,KAL2B;;;EAO5B,QAAIoG,OAAO,GAAG,KAAK1E,IAAL,CAAU5J,MAAV,CAAiB,UAACgG,GAAD,EAAMzI,CAAN,EAAY;EACzC,aAAOyI,GAAG,CAACkE,MAAJ,CAAW3M,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,CAAX,CAAP;EACD,KAFa,EAEX,EAFW,CAAd;EAGA,WAAO,KAAKpD,SAAL,CAAeoG,OAAf,CAAP;EACD,GAXD;;;;EAcAjO,EAAAA,WAAA,GAAc,UAASa,GAAT,EAAc;;EAE1B,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB,CAF0B;;EAI1B,QAAIoK,IAAI,CAAChP,MAAL,KAAgB,CAApB,EAAuB;EACrB,aAAO,IAAP;EACD,KANyB;;;EAQ1B,QAAIgS,OAAO,GAAG,KAAK1E,IAAL,CAAU5J,MAAV,CAAiB,UAACgG,GAAD,EAAMzI,CAAN,EAAY;EACzC,aAAOyI,GAAG,CAACkE,MAAJ,CAAW3M,CAAC,CAACgwB,GAAF,CAAMjiB,IAAN,CAAX,CAAP;EACD,KAFa,EAEX,EAFW,CAAd;EAGA,WAAO,KAAKpD,SAAL,CAAeoG,OAAf,CAAP;EACD,GAZD;;;;EAeAjO,EAAAA,gBAAA,GAAmB,UAASa,GAAT,EAAc;EAC/B,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;;EACA,SAAK,IAAIhF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0N,IAAL,CAAUtN,MAA9B,EAAsCJ,CAAC,EAAvC,EAA2C;EACzC,UAAI+M,KAAK,GAAG,KAAKW,IAAL,CAAU1N,CAAV,EAAa+M,KAAb,CAAmBqC,IAAnB,CAAZ;EACA,aAAO,KAAKpD,SAAL,CAAee,KAAf,CAAP;EACD;;EACD,WAAO,KAAKf,SAAL,CAAe,EAAf,CAAP;EACD,GAPD;;;;EAUA7H,EAAAA,aAAA,GAAa,UAASa,GAAT,EAAc;EACzB,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;EACA,QAAItB,KAAK,GAAG,KAAKgK,IAAL,CAAUrB,MAAV,CAAiB,UAAAhL,CAAC;EAAA,aAAIA,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,EAAchP,MAAd,GAAuB,CAA3B;EAAA,KAAlB,CAAZ;EACA,WAAO,KAAK4L,SAAL,CAAetI,KAAf,CAAP;EACD,GAJD;;;;EAOAS,EAAAA,YAAA,GAAe,UAASa,GAAT,EAAc;EAC3B,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;EACA,QAAItB,KAAK,GAAG,KAAKgK,IAAL,CAAUrB,MAAV,CAAiB,UAAAhL,CAAC;EAAA,aAAIA,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,EAAchP,MAAd,KAAyB,CAA7B;EAAA,KAAlB,CAAZ;EACA,WAAO,KAAK4L,SAAL,CAAetI,KAAf,CAAP;EACD,GAJD;;;;EAOAS,EAAAA,WAAA,GAAc,UAASa,GAAT,EAAc;EAC1B,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;EACA,WAAO,KAAK0I,IAAL,CAAUzH,IAAV,CAAe,UAAA5E,CAAC;EAAA,aAAIA,CAAC,CAACiwB,GAAF,CAAMliB,IAAN,MAAgB,IAApB;EAAA,KAAhB,CAAP;EACD,GAHD;;;;EAMAjL,EAAAA,iBAAA,GAAoB,UAASa,GAAT,EAAc;;EAEhC,QAAI,CAACA,GAAL,EAAU;EACRA,MAAAA,GAAG,GAAG,IAAN;EACD;;EACD,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;EACA,QAAIoN,OAAO,GAAG,EAAd;EACA,SAAK1E,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB+Q,MAAAA,OAAO,GAAGA,OAAO,CAACpE,MAAR,CAAe3M,CAAC,CAACkwB,SAAF,CAAYniB,IAAZ,CAAf,CAAV;EACD,KAFD;EAGAgD,IAAAA,OAAO,GAAGA,OAAO,CAAC/F,MAAR,CAAe,UAAAhL,CAAC;EAAA,aAAIA,CAAJ;EAAA,KAAhB,CAAV;EACA,WAAO,KAAK2K,SAAL,CAAeoG,OAAf,CAAP;EACD,GAZD;;EAaAjO,EAAAA,iBAAA,GAAoBA,OAAO,CAACotB,SAA5B;;;EAGAptB,EAAAA,kBAAA,GAAqB,UAASa,GAAT,EAAc;;EAEjC,QAAI,CAACA,GAAL,EAAU;EACRA,MAAAA,GAAG,GAAG,IAAN;EACD;;EACD,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;EACA,QAAIoN,OAAO,GAAG,EAAd;EACA,SAAK1E,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB+Q,MAAAA,OAAO,GAAGA,OAAO,CAACpE,MAAR,CAAe3M,CAAC,CAACmwB,UAAF,CAAapiB,IAAb,CAAf,CAAV;EACD,KAFD;EAGAgD,IAAAA,OAAO,GAAGA,OAAO,CAAC/F,MAAR,CAAe,UAAAhL,CAAC;EAAA,aAAIA,CAAJ;EAAA,KAAhB,CAAV;EACA,WAAO,KAAK2K,SAAL,CAAeoG,OAAf,CAAP;EACD,GAZD;;EAaAjO,EAAAA,kBAAA,GAAqBA,OAAO,CAACqtB,UAA7B;;;EAGArtB,EAAAA,cAAA,GAAiB,UAASa,GAAT,EAAc;EAC7B,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB,CAD6B;;EAG7B,QAAIkQ,OAAO,GAAG,WAAQ9F,IAAR,EAAc1B,IAA5B;EACA,QAAI+jB,OAAO,GAAGvc,OAAO,CAAChJ,GAAR,CAAY,UAAA7K,CAAC,EAAI;EAC7B,UAAIyQ,GAAG,GAAGzQ,CAAC,CAACqK,KAAF,GAAUQ,GAAV,CAAc,UAAAzK,CAAC;EAAA,eAAIA,CAAC,CAACyD,EAAN;EAAA,OAAf,CAAV,CAD6B;;EAG7B,UAAIhE,CAAC,GAAGG,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,EAAc,CAAd,CAAR;EACA,UAAInK,KAAK,GAAG6M,GAAG,CAACrN,OAAJ,CAAYvD,CAAC,CAACkE,KAAd,CAAZ,CAJ6B;;EAM7B,UAAIH,KAAK,KAAK,CAAV,IAAeA,KAAK,KAAK,CAAC,CAA9B,EAAiC;EAC/B,eAAO,IAAP;EACD;;EACD,aAAO5D,CAAC,CAAC2K,SAAF,CAAY3K,CAAC,CAAC+D,KAAd,EAAqBH,KAArB,CAAP;EACD,KAVa,CAAd;EAWAwsB,IAAAA,OAAO,GAAGA,OAAO,CAACplB,MAAR,CAAe,UAAAhL,CAAC;EAAA,aAAIA,CAAC,KAAK,IAAV;EAAA,KAAhB,CAAV;EACA,WAAO,KAAK2K,SAAL,CAAeylB,OAAf,CAAP;EACD,GAjBD;;;;EAoBAttB,EAAAA,aAAA,GAAgB,UAASa,GAAT,EAAc;EAC5B,QAAIoK,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB,CAD4B;;EAG5B,QAAIkQ,OAAO,GAAG,WAAQ9F,IAAR,EAAc1B,IAA5B;EACA,QAAI+jB,OAAO,GAAGvc,OAAO,CAAChJ,GAAR,CAAY,UAAA7K,CAAC,EAAI;EAC7B,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACA,UAAIoG,GAAG,GAAGpG,KAAK,CAACQ,GAAN,CAAU,UAAAzK,CAAC;EAAA,eAAIA,CAAC,CAACyD,EAAN;EAAA,OAAX,CAAV,CAF6B;;EAI7B,UAAIhE,CAAC,GAAGG,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,EAAc,CAAd,CAAR;EACA,UAAInK,KAAK,GAAG6M,GAAG,CAACrN,OAAJ,CAAYvD,CAAC,CAACkE,KAAd,CAAZ,CAL6B;;EAO7B,UAAIH,KAAK,KAAK,CAAC,CAAX,IAAgB,CAACyG,KAAK,CAACzG,KAAK,GAAG/D,CAAC,CAACd,MAAX,CAA1B,EAA8C;EAC5C,eAAO,IAAP;EACD,OAT4B;;;EAW7B,UAAI8E,EAAE,GAAGwG,KAAK,CAACzG,KAAK,GAAG/D,CAAC,CAACd,MAAX,CAAL,CAAwB8E,EAAjC;EACA,UAAI4U,GAAG,GAAGzY,CAAC,CAACjB,MAAF,GAAW6E,KAAX,GAAmB/D,CAAC,CAACd,MAA/B;EACA,aAAOiB,CAAC,CAAC2K,SAAF,CAAY9G,EAAZ,EAAgB4U,GAAhB,CAAP;EACD,KAda,CAAd;EAeA2X,IAAAA,OAAO,GAAGA,OAAO,CAACplB,MAAR,CAAe,UAAAhL,CAAC;EAAA,aAAIA,CAAC,KAAK,IAAV;EAAA,KAAhB,CAAV;EACA,WAAO,KAAK2K,SAAL,CAAeylB,OAAf,CAAP;EACD,GArBD;;;;;;;;;;;;;;EClHA;EACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAShsB,GAAT,EAAckI,GAAd,EAAmB+jB,IAAnB,EAAyBhoB,MAAzB,EAAiC;EAChD,MAAIyL,OAAO,GAAG,EAAd;;EACA,MAAI,OAAO1P,GAAP,KAAe,QAAnB,EAA6B;EAC3B0P,IAAAA,OAAO,GAAG1P,GAAG,CAAC9F,KAAJ,CAAU,GAAV,CAAV;EACD,GAJ+C;;;;EAQhDgO,EAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpB,QAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ,CADoB;;EAGpB,QAAIimB,IAAI,KAAK,IAAb,EAAmB;EACjBjmB,MAAAA,KAAK,GAAGA,KAAK,CAACW,MAAN,CAAa,UAAA5K,CAAC;EAAA,eAAIA,CAAC,CAACsJ,KAAF,CAAQrF,GAAR,EAAakI,GAAG,CAACvH,KAAjB,CAAJ;EAAA,OAAd,CAAR;EACD;;EACDqF,IAAAA,KAAK,CAACvJ,OAAN,CAAc,UAACV,CAAD,EAAIzB,CAAJ,EAAU;;EAEtB,UAAIoV,OAAO,CAAChV,MAAR,GAAiB,CAArB,EAAwB;EACtB,YAAIgV,OAAO,CAACpV,CAAD,CAAP,IAAcoV,OAAO,CAACpV,CAAD,CAAP,KAAe,GAAjC,EAAsC;EACpCyB,UAAAA,CAAC,CAACiE,GAAF,CAAM0P,OAAO,CAACpV,CAAD,CAAb,EAAkB2J,MAAlB,EAA0BiE,GAAG,CAACvH,KAA9B;EACD;EACF,OAJD,MAIO;;EAEL5E,QAAAA,CAAC,CAACiE,GAAF,CAAMA,GAAN,EAAWiE,MAAX,EAAmBiE,GAAG,CAACvH,KAAvB;EACD;EACF,KAVD;EAWD,GAjBD;EAkBA;EACD,CA3BD;;EA4BA,WAAc,GAAGqrB,QAAjB;;EC3BA;;EACA,SAAW,GAAG,YAAA,CAAS/rB,IAAT,EAAeisB,GAAf,EAAoB;EAChC,MAAI,CAACjsB,IAAL,EAAW;EACT,WAAO,IAAP;EACD;;EACDksB,EAAAA,OAAM,CAAClsB,IAAD,EAAO,IAAP,EAAa,KAAb,EAAoBisB,GAApB,CAAN;EACA,SAAO,IAAP;EACD,CAND;;;;EASA,aAAe,GAAG,gBAAA,CAASjsB,IAAT,EAAeisB,GAAf,EAAoB;EACpC,MAAI,CAACjsB,IAAL,EAAW;EACT,WAAO,IAAP;EACD;;EACDksB,EAAAA,OAAM,CAAClsB,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmBisB,GAAnB,CAAN;EACA,SAAO,IAAP;EACD,CAND;;;;EASA,WAAa,GAAG,cAAA,CAASjsB,IAAT,EAAeisB,GAAf,EAAoB;EAAA;;EAClC,OAAKlkB,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrBA,IAAAA,CAAC,CAACqK,KAAF,GAAUvJ,OAAV,CAAkB,UAAAV,CAAC;EAAA,aAAIA,CAAC,CAACgJ,KAAF,CAAQ9E,IAAR,EAAcisB,GAAd,EAAmB,KAAI,CAACvrB,KAAxB,CAAJ;EAAA,KAAnB;EACD,GAFD;EAGA,SAAO,IAAP;EACD,CALD;;;;EAQA,WAAa,GAAG,cAAA,CAASX,GAAT,EAAc;EAC5B,MAAI,CAACA,GAAL,EAAU;EACR,WAAO,IAAP;EACD;;EACD,MAAIW,KAAK,GAAG,KAAKA,KAAjB;EACA,MAAI+L,OAAO,GAAG,KAAK1E,IAAL,CAAU5J,MAAV,CAAiB,UAACgG,GAAD,EAAMzI,CAAN,EAAY;EACzC,WAAOyI,GAAG,CAACkE,MAAJ,CAAW3M,CAAC,CAAC0J,KAAF,CAAQrF,GAAR,EAAaW,KAAb,CAAX,CAAP;EACD,GAFa,EAEX,EAFW,CAAd;EAGA,SAAO,KAAK2F,SAAL,CAAeoG,OAAf,CAAP;EACD,CATD;;;;;;;;;EC7BA;EACA,OAAW,GAAG,YAAA,CAASke,EAAT,EAAa;EAAA;;EACzB,MAAI,CAACA,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EACD,MAAI5iB,IAAI,GAAG,KAAKA,IAAL,CAAUxB,GAAV,CAAc,UAAC7K,CAAD,EAAIrB,CAAJ,EAAU;EACjC,QAAI4N,GAAG,GAAG,KAAI,CAAC5B,SAAL,CAAe,CAAC3K,CAAD,CAAf,CAAV;;EACAuM,IAAAA,GAAG,CAACkjB,IAAJ,GAAW,IAAX,CAFiC;;EAGjC,QAAI5hB,GAAG,GAAGohB,EAAE,CAAC1iB,GAAD,EAAM5N,CAAN,CAAZ;;EACA,QAAIkP,GAAG,CAACxB,IAAJ,IAAYwB,GAAG,CAACxB,IAAJ,CAAS,CAAT,CAAhB,EAA6B;EAC3B,aAAOwB,GAAG,CAACxB,IAAJ,CAAS,CAAT,CAAP;EACD;;EACD,WAAOwB,GAAP;EACD,GARU,CAAX;;EASA,MAAIxB,IAAI,CAACtN,MAAL,KAAgB,CAApB,EAAuB;EACrB,WAAO,KAAK4L,SAAL,CAAe0B,IAAf,CAAP;EACD,GAfwB;;;EAiBzB,MAAI,QAAOA,IAAI,CAAC,CAAD,CAAX,MAAmB,QAAnB,IAA+BA,IAAI,CAAC,CAAD,CAAJ,CAAQ5E,GAAR,KAAgB,QAAnD,EAA6D;EAC3D,WAAO4E,IAAP;EACD;;EACD,SAAO,KAAK1B,SAAL,CAAe0B,IAAf,CAAP;EACD,CArBD;;;;EAwBA,WAAe,GAAG,gBAAA,CAAS4iB,EAAT,EAAawB,YAAb,EAA2B;EAAA;;EAC3C,MAAI,CAACxB,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EACD,OAAK5iB,IAAL,CAAUvL,OAAV,CAAkB,UAACd,CAAD,EAAIrB,CAAJ,EAAU;EAC1B,QAAI+xB,GAAG,GAAG,MAAI,CAAC/lB,SAAL,CAAe,CAAC3K,CAAD,CAAf,CAAV,CAD0B;;;EAG1B,QAAIywB,YAAY,KAAK,IAArB,EAA2B;EACzBC,MAAAA,GAAG,CAACjB,IAAJ,GAAW,IAAX,CADyB;EAE1B,KALyB;;;;EAQ1BR,IAAAA,EAAE,CAACyB,GAAD,EAAM/xB,CAAN,CAAF,CAR0B;EAU3B,GAVD;EAWA,SAAO,IAAP;EACD,CAhBD;;;;EAmBA,UAAc,GAAG,eAAA,CAASswB,EAAT,EAAa;EAAA;;EAC5B,MAAI,CAACA,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EACD,MAAI5iB,IAAI,GAAG,KAAKA,IAAL,CAAUrB,MAAV,CAAiB,UAAChL,CAAD,EAAIrB,CAAJ,EAAU;EACpC,QAAI4N,GAAG,GAAG,MAAI,CAAC5B,SAAL,CAAe,CAAC3K,CAAD,CAAf,CAAV;;EACAuM,IAAAA,GAAG,CAACkjB,IAAJ,GAAW,IAAX,CAFoC;;EAGpC,WAAOR,EAAE,CAAC1iB,GAAD,EAAM5N,CAAN,CAAT;EACD,GAJU,CAAX;EAKA,SAAO,KAAKgM,SAAL,CAAe0B,IAAf,CAAP;EACD,CAVD;;;;EAaA,QAAY,GAAG,aAAA,CAAS4iB,EAAT,EAAa;EAAA;;EAC1B,MAAI,CAACA,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EACD,MAAI9hB,MAAM,GAAG,KAAKd,IAAL,CAAUe,IAAV,CAAe,UAACpN,CAAD,EAAIrB,CAAJ,EAAU;EACpC,QAAI4N,GAAG,GAAG,MAAI,CAAC5B,SAAL,CAAe,CAAC3K,CAAD,CAAf,CAAV;;EACAuM,IAAAA,GAAG,CAACkjB,IAAJ,GAAW,IAAX,CAFoC;;EAGpC,WAAOR,EAAE,CAAC1iB,GAAD,EAAM5N,CAAN,CAAT;EACD,GAJY,CAAb;;EAKA,MAAIwO,MAAJ,EAAY;EACV,WAAO,KAAKxC,SAAL,CAAe,CAACwC,MAAD,CAAf,CAAP;EACD;;EACD,SAAOlJ,SAAP;EACD,CAbD;;;;EAgBA,QAAY,GAAG,aAAA,CAASgrB,EAAT,EAAa;EAAA;;EAC1B,MAAI,CAACA,EAAL,EAAS;EACP,WAAO,IAAP;EACD;;EACD,SAAO,KAAK5iB,IAAL,CAAUzH,IAAV,CAAe,UAAC5E,CAAD,EAAIrB,CAAJ,EAAU;EAC9B,QAAI4N,GAAG,GAAG,MAAI,CAAC5B,SAAL,CAAe,CAAC3K,CAAD,CAAf,CAAV;;EACAuM,IAAAA,GAAG,CAACkjB,IAAJ,GAAW,IAAX,CAF8B;;EAG9B,WAAOR,EAAE,CAAC1iB,GAAD,EAAM5N,CAAN,CAAT;EACD,GAJM,CAAP;EAKD,CATD;;;;EAYA,UAAc,GAAG,eAAA,CAASmB,CAAT,EAAY;EAC3B,MAAI,CAAC,KAAKuC,KAAV,EAAiB;EACf,WAAO,IAAP;EACD;;EACD,MAAInC,CAAC,GAAGtB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgB,KAAKuN,IAAL,CAAUtN,MAArC,CAAR;;EACA,MAAIe,CAAC,KAAKmE,SAAV,EAAqB;EACnB,QAAIoI,IAAI,GAAG,CAAC,KAAKA,IAAL,CAAUnM,CAAV,CAAD,CAAX;EACA,WAAO,KAAKyK,SAAL,CAAe0B,IAAf,CAAP;EACD,GAR0B;;;EAU3B,MAAInM,CAAC,GAAGJ,CAAJ,GAAQ,KAAKf,MAAjB,EAAyB;EACvBmB,IAAAA,CAAC,GAAG,KAAKnB,MAAL,GAAce,CAAlB;EACAI,IAAAA,CAAC,GAAGA,CAAC,GAAG,CAAJ,GAAQ,CAAR,GAAYA,CAAhB;EACD;;EACD,SAAO,KAAK0N,KAAL,CAAW1N,CAAX,EAAcA,CAAC,GAAGJ,CAAlB,CAAP;EACD,CAfD;;;;;;;;;;;;;;;;;;;;;EClFA,IAAM4D,WAAS,GAAG,SAAZA,SAAY,CAAS2D,IAAT,EAAe5I,GAAf,EAAoB;EACpC,MAAIA,GAAG,KAAK,EAAZ,EAAgB;EACd,WAAO,KAAP;EACD;;EACD,SAAO4I,IAAI,CAACxF,OAAL,KAAiBpD,GAAjB,IAAwB4I,IAAI,CAAC7D,QAAL,KAAkB/E,GAA1C,IAAiD4I,IAAI,CAACjD,IAAL,KAAc3F,GAA/D,IAAsE4I,IAAI,CAAC3I,IAAL,CAAU+C,WAAV,OAA4BhD,GAAzG;EACD,CALD;;;EAQA,IAAMkyB,SAAS,GAAG,SAAZA,SAAY,CAASloB,GAAT,EAAc4B,KAAd,EAAqB;EAAA,6BAE5B1L,CAF4B;EAGnC,QAAI+E,WAAS,CAAC2G,KAAK,CAAC1L,CAAD,CAAN,EAAW8J,GAAG,CAAC,CAAD,CAAd,CAAb,EAAiC;EAC/B,UAAIA,GAAG,CAAC9D,KAAJ,CAAU,UAAC1F,CAAD,EAAIa,CAAJ;EAAA,eAAU4D,WAAS,CAAC2G,KAAK,CAAC1L,CAAC,GAAGmB,CAAL,CAAN,EAAeb,CAAf,CAAT,KAA+B,IAAzC;EAAA,OAAV,CAAJ,EAA8D;EAC5D;EAAA,aAAOoL,KAAK,CAAC1L,CAAD,CAAL,CAASkF;EAAhB;EACD;EACF;EAPkC;;;EAErC,OAAK,IAAIlF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,EAAnC,EAAuC;EAAA,qBAA9BA,CAA8B;;EAAA;EAMtC;;EACD,SAAO,KAAP;EACD,CAVD;;;;EAaA,UAAc,GAAG,eAAA,CAAS8J,GAAT,EAAc;EAAA;;EAC7B,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;EAC3BA,IAAAA,GAAG,GAAG,CAACA,GAAD,CAAN;EACD;;EACD,MAAImoB,OAAO,GAAGnoB,GAAG,CAACoC,GAAJ,CAAQ,UAAApM,GAAG,EAAI;EAC3BA,IAAAA,GAAG,GAAGA,GAAG,CAACgD,WAAJ,EAAN;EACA,QAAI8M,KAAK,GAAGsiB,QAAQ,CAACpyB,GAAD,CAApB;EACA8P,IAAAA,KAAK,GAAGA,KAAK,CAAC1D,GAAN,CAAU,UAAA1K,CAAC;EAAA,aAAIA,CAAC,CAACuB,IAAF,EAAJ;EAAA,KAAX,CAAR;EACA,WAAO6M,KAAP;EACD,GALa,CAAd;EAMA,OAAKD,KAAL;EACA,MAAIjM,KAAK,GAAG,EAAZ,CAX6B;;EAa7BuuB,EAAAA,OAAO,CAAC9vB,OAAR,CAAgB,UAAA7B,CAAC,EAAI;;EAEnB,IAAA,KAAI,CAACoN,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;;EAErB,UAAIA,CAAC,CAACsO,KAAF,CAAQC,KAAR,CAActP,CAAC,CAAC,CAAD,CAAf,MAAwB,IAA5B,EAAkC;EAChC;EACD,OAJoB;;;EAMrB,UAAIoL,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACA,UAAIxG,EAAE,GAAG8sB,SAAS,CAAC1xB,CAAD,EAAIoL,KAAJ,CAAlB;;EACA,UAAIxG,EAAE,KAAK,KAAX,EAAkB;;EAEhB,YAAIsJ,MAAM,GAAGnN,CAAC,CAAC2K,SAAF,CAAY9G,EAAZ,EAAgB5E,CAAC,CAACF,MAAlB,CAAb;EACAsD,QAAAA,KAAK,CAACoI,IAAN,CAAW0C,MAAX;EACA;EACD;EACF,KAdD;EAeD,GAjBD;EAkBA,SAAO,KAAKxC,SAAL,CAAetI,KAAf,CAAP;EACD,CAhCD;;;;;;ECtBA,IAAMO,WAAS,GAAG,SAAZA,SAAY,CAAAnE,GAAG,EAAI;EACvB,SAAOA,GAAG,CAACmK,MAAJ,CAAW,CAAX,EAAc7F,WAAd,KAA8BtE,GAAG,CAACoK,MAAJ,CAAW,CAAX,CAArC;EACD,CAFD;;;;EAKA,eAAmB,GAAG,oBAAA,CAASjH,OAAT,EAAkBkvB,QAAlB,EAA4BC,QAA5B,EAAsC;EAAA;;EAC1D,MAAI,CAACnvB,OAAL,EAAc;EACZ,WAAO,gBAAP;EACD,GAHyD;;;EAK1D,OAAKovB,OAAL,GAL0D;;EAO1D,OAAK3kB,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,QAAI2Q,KAAK,GAAG/O,OAAZ,CADqB;;EAGrB,QAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;EACjC+O,MAAAA,KAAK,GAAG/O,OAAO,CAAC5B,CAAD,CAAf;EACD;;EACD,QAAIixB,UAAJ,CANqB;;EAQrB,QAAItgB,KAAK,IAAI,QAAOA,KAAP,MAAiB,QAA1B,IAAsCA,KAAK,CAAClJ,GAAN,KAAc,KAAxD,EAA+D;EAC7DwpB,MAAAA,UAAU,GAAGtgB,KAAK,CAACtE,IAAnB;;EACA,MAAA,KAAI,CAAC/B,IAAL,GAAY4mB,KAAZ,CAAkBvgB,KAAK,CAACrG,IAAN,EAAlB;EACD,KAHD,MAGO,IAAI,OAAOqG,KAAP,KAAiB,QAArB,EAA+B;;EAEpC,UAAIogB,QAAQ,KAAK,IAAb,IAAqB/wB,CAAC,CAACqK,KAAF,CAAQ,CAAR,EAAWrH,WAAX,EAAzB,EAAmD;EACjD2N,QAAAA,KAAK,GAAG/N,WAAS,CAAC+N,KAAD,CAAjB;EACD;;EACDsgB,MAAAA,UAAU,GAAGJ,YAAQ,CAACld,QAAT,CAAkBhD,KAAlB,EAAyB,KAAI,CAAC3L,KAA9B,EAAqC,KAAI,CAACsF,IAAL,EAArC,CAAb,CALoC;;EAOpC,UAAI6mB,MAAM,GAAG,KAAI,CAACxmB,SAAL,CAAesmB,UAAf,CAAb;;EACAE,MAAAA,MAAM,CAACC,MAAP;EACD,KATM,MASA;EACL,aADK;EAEN,KAtBoB;;;EAyBrB,QAAIN,QAAQ,KAAK,IAAjB,EAAuB;EACrB,UAAIO,OAAO,GAAGrxB,CAAC,CAAC8N,IAAF,CAAO;EAAEzD,QAAAA,KAAK,EAAE;EAAE/F,UAAAA,IAAI,EAAE;EAAR;EAAT,OAAP,EAAkC+F,KAAhD;EACA4mB,MAAAA,UAAU,CAAC,CAAD,CAAV,CAAc5mB,KAAd,GAAsBvJ,OAAtB,CAA8B,UAACV,CAAD,EAAIzB,CAAJ,EAAU;EACtC,YAAI0yB,OAAO,CAAC1yB,CAAD,CAAX,EAAgB;EACdyB,UAAAA,CAAC,CAACkxB,OAAF,CAAUD,OAAO,CAAC1yB,CAAD,CAAP,CAAW2F,IAArB,EAA2B,SAA3B,EAAsC,KAAI,CAACU,KAA3C;EACD;EACF,OAJD;EAKD;;EACDhF,IAAAA,CAAC,CAAC4B,OAAF,CAAUqvB,UAAU,CAAC,CAAD,CAApB,EAAyB,KAAzB,EAjCqB;EAkCtB,GAlCD;EAmCA,SAAO,IAAP;EACD,CA3CD;;;;EA8CA,aAAe,GAAG,iBAASvlB,KAAT,EAAgB9J,QAAhB,EAAyBkvB,QAAzB,EAAmCC,QAAnC,EAA6C;;EAE7D,MAAInvB,QAAO,KAAKqC,SAAhB,EAA2B;EACzB,WAAO,KAAKstB,WAAL,CAAiB7lB,KAAjB,CAAP;EACD;;EACD,OAAKA,KAAL,CAAWA,KAAX,EAAkB6lB,WAAlB,CAA8B3vB,QAA9B,EAAuCkvB,QAAvC,EAAiDC,QAAjD;EACA,SAAO,IAAP;EACD,CAPD;;;;;;;;ECnDA;EACAjuB,EAAAA,cAAA,GAAiB,UAASrE,GAAT,EAAc;EAAA;;EAC7B,QAAI,CAACA,GAAL,EAAU;EACR,aAAO,IAAP;EACD,KAH4B;;;EAK7B,SAAKuyB,OAAL,GAL6B;;EAO7B,SAAK3kB,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;;EAErB,UAAImN,MAAM,GAAG0jB,YAAQ,CAACld,QAAT,CAAkBlV,GAAlB,EAAuB,KAAI,CAACuG,KAA5B,EAAmC,KAAI,CAACsF,IAAL,EAAnC,EAAgD,CAAhD,CAAb,CAFqB;;;EAIrB,UAAI6mB,MAAM,GAAG,KAAI,CAACxmB,SAAL,CAAe,CAACwC,MAAD,CAAf,CAAb;;EACAgkB,MAAAA,MAAM,CAACC,MAAP,GALqB;;EAOrBpxB,MAAAA,CAAC,CAACuN,MAAF,CAASJ,MAAT,EAAiB,KAAjB;EACD,KARD;EASA,WAAO,IAAP;EACD,GAjBD;;EAkBArK,EAAAA,mBAAA,GAAsBA,OAAO,CAACyK,MAA9B;EACAzK,EAAAA,gBAAA,GAAmBA,OAAO,CAACyK,MAA3B;;;EAGAzK,EAAAA,eAAA,GAAkB,UAASrE,GAAT,EAAc;EAAA;;EAC9B,QAAI,CAACA,GAAL,EAAU;EACR,aAAO,IAAP;EACD,KAH6B;;;EAK9B,SAAKuyB,OAAL,GAL8B;;EAO9B,SAAK3kB,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;;EAErB,UAAImN,MAAM,GAAG0jB,YAAQ,CAACld,QAAT,CAAkBlV,GAAlB,EAAuB,MAAI,CAACuG,KAA5B,EAAmC,MAAI,CAACsF,IAAL,EAAnC,EAAgD,CAAhD,CAAb,CAFqB;;;EAIrB,UAAI6mB,MAAM,GAAG,MAAI,CAACxmB,SAAL,CAAe,CAACwC,MAAD,CAAf,CAAb;;EACAgkB,MAAAA,MAAM,CAACC,MAAP,GALqB;;EAOrBpxB,MAAAA,CAAC,CAACwN,OAAF,CAAUL,MAAV,EAAkB,MAAlB;EACD,KARD;EASA,WAAO,IAAP;EACD,GAjBD;;EAkBArK,EAAAA,oBAAA,GAAuBA,OAAO,CAAC0K,OAA/B;;;EAGA1K,EAAAA,cAAA,GAAiB,YAAW;;EAE1B,SAAKkuB,OAAL;EACA,QAAI3kB,IAAI,GAAG,KAAKA,IAAL,CAAUuB,KAAV,CAAgB,CAAhB,CAAX,CAH0B;;EAK1B,SAAK,IAAIjP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6yB,SAAS,CAACzyB,MAA9B,EAAsCJ,CAAC,EAAvC,EAA2C;EACzC,UAAI8yB,GAAG,GAAGD,SAAS,CAAC7yB,CAAD,CAAnB,CADyC;;EAGzC,UAAI,OAAO8yB,GAAP,KAAe,QAAnB,EAA6B;EAC3B,YAAIhpB,GAAG,GAAGooB,YAAQ,CAACld,QAAT,CAAkB8d,GAAlB,EAAuB,KAAKzsB,KAA5B,CAAV,CAD2B;;EAG3BqH,QAAAA,IAAI,GAAGA,IAAI,CAACM,MAAL,CAAYlE,GAAZ,CAAP;EACD,OAJD,MAIO,IAAIgpB,GAAG,CAAChqB,GAAJ,KAAY,KAAhB,EAAuB;EAC5B4E,QAAAA,IAAI,GAAGA,IAAI,CAACM,MAAL,CAAY8kB,GAAG,CAACplB,IAAhB,CAAP;EACD,OAFM,MAEA,IAAIolB,GAAG,CAAChqB,GAAJ,KAAY,QAAhB,EAA0B;EAC/B4E,QAAAA,IAAI,CAAC5B,IAAL,CAAUgnB,GAAV;EACD;EACF;;EACD,WAAO,KAAK9mB,SAAL,CAAe0B,IAAf,CAAP;EACD,GAnBD;;;;EAsBAvJ,EAAAA,iBAAA,GAAiB,UAAS4I,KAAT,EAAgB;EAAA;;;EAE/B,SAAKslB,OAAL;EACA,QAAIU,QAAQ,GAAG,IAAf;;EACA,QAAIhmB,KAAJ,EAAW;EACTgmB,MAAAA,QAAQ,GAAG,KAAKhmB,KAAL,CAAWA,KAAX,CAAX;EACD;;EACDgmB,IAAAA,QAAQ,CAACrlB,IAAT,CAAcvL,OAAd,CAAsB,UAAAqM,MAAM;EAAA,aAAIA,MAAM,UAAN,CAAc,MAAd,CAAJ;EAAA,KAA5B;EACA,WAAO,IAAP;EACD,GATD;;;EAWArK,EAAAA,cAAA,GAAiBA,OAAO,UAAxB;;;;;;;;;;EC/EA;EACA,UAAY,GAAG,aAAA,CAASmD,OAAT,EAAkB;EAAA;;EAC/BA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB,CAD+B;;EAG/B,MAAI0rB,QAAQ,GAAG,KAAf;;EACA,MAAI,KAAK/kB,OAAL,GAAe7N,MAAf,KAA0B,CAA9B,EAAiC;EAC/B4yB,IAAAA,QAAQ,GAAG,IAAX;EACD,GAN8B;;;EAQ/B,MAAI1rB,OAAO,KAAK,MAAZ,IAAuB,QAAOA,OAAP,MAAmB,QAAnB,IAA+BA,OAAO,CAAC7B,IAAlE,EAAyE;EACvE,SAAKiI,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrBA,MAAAA,CAAC,CAACqK,KAAF,GAAUvJ,OAAV,CAAkB,UAAAV,CAAC,EAAI;EACrB,YAAIA,CAAC,CAACgE,IAAF,KAAW,IAAf,EAAqB;EACnBhE,UAAAA,CAAC,CAACyvB,OAAF,CAAU,KAAI,CAAC7qB,KAAf;EACD;EACF,OAJD;EAKD,KAND;EAOD;;EAED,SAAO,KAAKqH,IAAL,CAAU5J,MAAV,CAAiB,UAAChE,GAAD,EAAMuB,CAAN,EAASrB,CAAT,EAAe;EACrC,QAAMizB,OAAO,GAAG,CAACD,QAAD,IAAahzB,CAAC,KAAK,CAAnC;EACA,QAAMkzB,QAAQ,GAAG,CAACF,QAAD,IAAahzB,CAAC,KAAK,KAAI,CAAC0N,IAAL,CAAUtN,MAAV,GAAmB,CAAvD;EACA,WAAON,GAAG,GAAGuB,CAAC,CAACtB,IAAF,CAAOuH,OAAP,EAAgB2rB,OAAhB,EAAyBC,QAAzB,CAAb;EACD,GAJM,EAIJ,EAJI,CAAP;EAKD,CAvBD;;;;;;;ECDA,MAAMC,YAAY,GAAG;EAAEpzB,IAAAA,IAAI,EAAE,IAAR;EAAc2L,IAAAA,KAAK,EAAE,IAArB;EAA2B3I,IAAAA,IAAI,EAAE;EAAjC,GAArB;;EAGA,MAAMqwB,WAAW,GAAG,SAAdA,WAAc,CAASxlB,GAAT,EAAc;EAChC,QAAIylB,OAAO,GAAG,CAAd;EACA,QAAIpuB,KAAK,GAAG,CAAZ;EACA,QAAIquB,OAAO,GAAG,EAAd;EACA1lB,IAAAA,GAAG,CAAC2lB,QAAJ,GAAepxB,OAAf,CAAuB,UAAAuG,IAAI,EAAI;EAC7B4qB,MAAAA,OAAO,CAAC5qB,IAAI,CAACxD,EAAN,CAAP,GAAmB;EACjBD,QAAAA,KAAK,EAAEA,KADU;EAEjBG,QAAAA,KAAK,EAAEiuB,OAAO,GAAG3qB,IAAI,CAAClF,GAAL,CAASpD,MAFT;EAGjBA,QAAAA,MAAM,EAAEsI,IAAI,CAAC3I,IAAL,CAAUK;EAHD,OAAnB;EAKAizB,MAAAA,OAAO,IAAI3qB,IAAI,CAAClF,GAAL,CAASpD,MAAT,GAAkBsI,IAAI,CAAC3I,IAAL,CAAUK,MAA5B,GAAqCsI,IAAI,CAACjF,IAAL,CAAUrD,MAA1D;EACA6E,MAAAA,KAAK,IAAI,CAAT;EACD,KARD;EASA,WAAOquB,OAAP;EACD,GAdD;;;;EAiBAnvB,EAAAA,YAAA,GAAe,YAAuB;EAAA;;EAAA,QAAdmD,OAAc,uEAAJ,EAAI;;;EAEpC,QAAI,OAAOA,OAAP,KAAmB,QAAnB,IAA+B,KAAKoG,IAAL,CAAUpG,OAAV,CAAnC,EAAuD;EACrD,aAAO,KAAKoG,IAAL,CAAUpG,OAAV,EAAmB6H,IAAnB,CAAwBgkB,YAAxB,CAAP;EACD;;EACD7rB,IAAAA,OAAO,GAAGrF,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkBiqB,YAAlB,EAAgC7rB,OAAhC,CAAV,CALoC;;EAQpC,QAAIA,OAAO,KAAK,MAAZ,IAAuB,QAAOA,OAAP,MAAmB,QAAnB,IAA+BA,OAAO,CAAC7B,IAAlE,EAAyE;EACvE,WAAKiI,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrBA,QAAAA,CAAC,CAACqK,KAAF,GAAUvJ,OAAV,CAAkB,UAAAV,CAAC,EAAI;EACrB,cAAIA,CAAC,CAACgE,IAAF,KAAW,IAAf,EAAqB;EACnBhE,YAAAA,CAAC,CAACyvB,OAAF,CAAU,KAAI,CAAC7qB,KAAf;EACD;EACF,SAJD;EAKD,OAND;EAOD;;EAED,QAAIiB,OAAO,CAACmG,MAAZ,EAAoB;EAClBnG,MAAAA,OAAO,CAACpE,OAAR,GAAkB,IAAlB;EACD;;EACD,QAAIoE,OAAO,CAAC0B,MAAZ,EAAoB;EAClB1B,MAAAA,OAAO,CAACoE,KAAR,GAAgBpE,OAAO,CAACoE,KAAR,KAAkB,IAAlB,GAAyB,EAAzB,GAA8BpE,OAAO,CAACoE,KAAtD;EACApE,MAAAA,OAAO,CAACoE,KAAR,CAAc1C,MAAd,GAAuB,IAAvB;EACD;;EACD,QAAI1B,OAAO,CAACrC,KAAR,IAAiBqC,OAAO,CAACoE,KAAR,CAAczG,KAAnC,EAA0C;EACxCqC,MAAAA,OAAO,CAACoE,KAAR,GAAgBpE,OAAO,CAACoE,KAAR,KAAkB,IAAlB,GAAyB,EAAzB,GAA8BpE,OAAO,CAACoE,KAAtD;EACApE,MAAAA,OAAO,CAACoE,KAAR,CAAcxG,EAAd,GAAmB,IAAnB;EACD;;EACD,QAAIgB,MAAM,GAAG,KAAKwH,IAAL,CAAUxB,GAAV,CAAc,UAAA7K,CAAC,EAAI;EAC9B,aAAOA,CAAC,CAAC8N,IAAF,CAAO7H,OAAP,EAAgB,KAAI,CAACjB,KAArB,CAAP;EACD,KAFY,CAAb,CA7BoC;;EAiCpC,QAAIiB,OAAO,CAACoE,KAAR,CAAc1C,MAAd,IAAwB1B,OAAO,CAAC0B,MAAhC,IAA0C1B,OAAO,CAACoE,KAAR,CAAczG,KAAxD,IAAiEqC,OAAO,CAACrC,KAA7E,EAAoF;;EAElF,UAAIquB,OAAO,GAAGF,WAAW,CAAC,KAAK9jB,GAAL,EAAD,CAAzB,CAFkF;;EAIlF,UAAIhI,OAAO,CAACoE,KAAR,CAAczG,KAAd,IAAuBqC,OAAO,CAACrC,KAAnC,EAA0C;EACxCiB,QAAAA,MAAM,CAAC/D,OAAP,CAAe,UAAAf,CAAC,EAAI;EAClBA,UAAAA,CAAC,CAACsK,KAAF,CAAQvJ,OAAR,CAAgB,UAAAV,CAAC,EAAI;EACnBA,YAAAA,CAAC,CAACwD,KAAF,GAAUquB,OAAO,CAAC7xB,CAAC,CAACyD,EAAH,CAAP,CAAcD,KAAxB;EACD,WAFD;EAGA7D,UAAAA,CAAC,CAAC6D,KAAF,GAAU7D,CAAC,CAACsK,KAAF,CAAQ,CAAR,EAAWzG,KAArB;EACD,SALD;EAMD,OAXiF;;;EAalF,UAAIqC,OAAO,CAACoE,KAAR,CAAc1C,MAAd,IAAwB1B,OAAO,CAAC0B,MAApC,EAA4C;EAC1C9C,QAAAA,MAAM,CAAC/D,OAAP,CAAe,UAAAf,CAAC,EAAI;EAClBA,UAAAA,CAAC,CAACsK,KAAF,CAAQvJ,OAAR,CAAgB,UAAAV,CAAC,EAAI;EACnBA,YAAAA,CAAC,CAACuH,MAAF,GAAWsqB,OAAO,CAAC7xB,CAAC,CAACyD,EAAH,CAAP,IAAiB,EAA5B;EACD,WAFD;EAGA,cAAI4U,GAAG,GAAG1Y,CAAC,CAACsK,KAAF,CAAQ5H,MAAR,CAAe,UAAC3C,CAAD,EAAIM,CAAJ,EAAU;EACjCN,YAAAA,CAAC,IAAIM,CAAC,CAACuH,MAAF,CAAS5I,MAAT,IAAmB,CAAxB;EACA,mBAAOe,CAAP;EACD,WAHS,EAGP,CAHO,CAAV;EAIAC,UAAAA,CAAC,CAAC4H,MAAF,GAAW5H,CAAC,CAACsK,KAAF,CAAQ,CAAR,EAAW1C,MAAtB;EACA5H,UAAAA,CAAC,CAAC4H,MAAF,CAAS5I,MAAT,GAAkB0Z,GAAlB;EACD,SAVD;EAWD;EACF,KA3DmC;;;EA6DpC,QAAIxS,OAAO,CAACksB,SAAR,IAAqBlsB,OAAO,CAACmsB,IAA7B,IAAqCnsB,OAAO,CAACyI,KAAjD,EAAwD;EACtD,UAAI3E,GAAG,GAAG,EAAV;EACA,WAAKsC,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,YAAIvB,GAAG,GAAGuB,CAAC,CAACtB,IAAF,CAAO,SAAP,CAAV;EACAqL,QAAAA,GAAG,CAACtL,GAAD,CAAH,GAAWsL,GAAG,CAACtL,GAAD,CAAH,IAAY,CAAvB;EACAsL,QAAAA,GAAG,CAACtL,GAAD,CAAH,IAAY,CAAZ;EACD,OAJD;EAKA,WAAK4N,IAAL,CAAUvL,OAAV,CAAkB,UAACd,CAAD,EAAIrB,CAAJ,EAAU;EAC1BkG,QAAAA,MAAM,CAAClG,CAAD,CAAN,CAAU+P,KAAV,GAAkB3E,GAAG,CAAC/J,CAAC,CAACtB,IAAF,CAAO,SAAP,CAAD,CAArB;EACD,OAFD;EAGD,KAvEmC;;;EAyEpC,QAAIuH,OAAO,CAACmG,MAAZ,EAAoB;EAClB,UAAIimB,OAAO,GAAG,EAAd;EACAxtB,MAAAA,MAAM,GAAGA,MAAM,CAACmG,MAAP,CAAc,UAAAjL,CAAC,EAAI;EAC1B,YAAIsyB,OAAO,CAACtyB,CAAC,CAAC8B,OAAH,CAAP,KAAuB,IAA3B,EAAiC;EAC/B,iBAAO,KAAP;EACD;;EACDwwB,QAAAA,OAAO,CAACtyB,CAAC,CAAC8B,OAAH,CAAP,GAAqB,IAArB;EACA,eAAO,IAAP;EACD,OANQ,CAAT;EAOD;;EACD,WAAOgD,MAAP;EACD,GApFD;;;EAuFA/B,EAAAA,YAAA,GAAeA,OAAO,CAACgL,IAAvB;;;;;EC3GA,IAAM0G,QAAM,GAAG,CAAC,QAAD,EAAW,OAAX,EAAoB,cAApB,CAAf;EAEA,WAAc,GAAG;EACfC,EAAAA,IAAI,EAAE;EACJpL,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB;EADF,GADS;;EAKfqL,EAAAA,QAAQ,EAAE;EACRjN,IAAAA,GAAG,EAAE,MADG;EAER4B,IAAAA,IAAI,EAAE;EAFE,GALK;;EAUf9C,EAAAA,UAAU,EAAE;EACVkB,IAAAA,GAAG,EAAE;EADK,GAVG;;EAefkN,EAAAA,MAAM,EAAE;EACNlN,IAAAA,GAAG,EAAE,CAAC,YAAD,EAAe,UAAf,CADC;EAEN4B,IAAAA,IAAI,EAAE,CAAC,OAAD,EAAU,cAAV;EAFA,GAfO;EAmBfuL,EAAAA,SAAS,EAAE;EACTnN,IAAAA,GAAG,EAAE;EADI,GAnBI;EAsBfoN,EAAAA,QAAQ,EAAE;EACRpN,IAAAA,GAAG,EAAE,WADG;EAER4B,IAAAA,IAAI,EAAE,CAAC,YAAD,EAAe,UAAf;EAFE,GAtBK;EA0BfyL,EAAAA,UAAU,EAAE;EACVrN,IAAAA,GAAG,EAAE,WADK;EAEV4B,IAAAA,IAAI,EAAE,CAAC,UAAD,EAAa,UAAb;EAFI,GA1BG;EA8Bf0L,EAAAA,QAAQ,EAAE;EACRtN,IAAAA,GAAG,EAAE,QADG;EAER4B,IAAAA,IAAI,EAAE,CAAC,WAAD;EAFE,GA9BK;EAkCf2L,EAAAA,SAAS,EAAE;EACTvN,IAAAA,GAAG,EAAE,MADI;EAET4B,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,UAAd;EAFG,GAlCI;;EAwCf4L,EAAAA,KAAK,EAAE;EACLxN,IAAAA,GAAG,EAAE,UADA;EAEL4B,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,cAAX;EAFD,GAxCQ;EA4Cf6L,EAAAA,OAAO,EAAE;EACPzN,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV,CADE;EAEP4B,IAAAA,IAAI,EAAE,CAAC,MAAD;EAFC,GA5CM;EAgDf8L,EAAAA,IAAI,EAAE;EACJ1N,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV,CADD;EAEJ4B,IAAAA,IAAI,EAAE,CAAC,SAAD;EAFF,GAhDS;EAoDf+L,EAAAA,MAAM,EAAE;EACN3N,IAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,YAAV;EADC,GApDO;EAuDf4N,EAAAA,OAAO,EAAE;EACP5N,IAAAA,GAAG,EAAE;EADE,GAvDM;;EA4Df6N,EAAAA,YAAY,EAAE;EACZ7N,IAAAA,GAAG,EAAE,CAAC,UAAD,EAAa,YAAb,CADO;EAEZ4B,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,OAAX;EAFM,GA5DC;EAgEfkM,EAAAA,UAAU,EAAE;EACV9N,IAAAA,GAAG,EAAE;EADK,GAhEG;EAmEf+N,EAAAA,MAAM,EAAE;EACN/N,IAAAA,GAAG,EAAE;EADC,GAnEO;EAsEfgO,EAAAA,OAAO,EAAE;EACPhO,IAAAA,GAAG,EAAE;EADE,GAtEM;;EA2EftC,EAAAA,MAAM,EAAE;EACNsC,IAAAA,GAAG,EAAE,MADC;EAEN4B,IAAAA,IAAI,EAAE,CAAC,UAAD;EAFA,GA3EO;;EAgFfqM,EAAAA,WAAW,EAAE;EACXjO,IAAAA,GAAG,EAAE;EADM,GAhFE;EAmFfkO,EAAAA,OAAO,EAAE;EACPlO,IAAAA,GAAG,EAAE,MADE;EAEP4B,IAAAA,IAAI,EAAEmL;EAFC,GAnFM;;EAwFf3O,EAAAA,KAAK,EAAE;EACL4B,IAAAA,GAAG,EAAE,MADA;EAEL4B,IAAAA,IAAI,EAAEmL;EAFD,GAxFQ;;EA6FfoB,EAAAA,QAAQ,EAAE;EACRnO,IAAAA,GAAG,EAAE,MADG;EAER4B,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,OAAX;EAFE,GA7FK;;EAkGfwM,EAAAA,IAAI,EAAE;EACJpO,IAAAA,GAAG,EAAE,MADD;EAEJ4B,IAAAA,IAAI,EAAEmL;EAFF,GAlGS;;EAuGfsB,EAAAA,OAAO,EAAE;EACPrO,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,YAAT,CADE;EAEP4B,IAAAA,IAAI,EAAEmL;EAFC,GAvGM;;EA4GfrN,EAAAA,UAAU,EAAE;EACVM,IAAAA,GAAG,EAAE,MADK;;EAAA;EA5GG,CAAjB;;ECFA,WAAc,GAAG;EACfpC,EAAAA,IAAI,EAAE;EACJgE,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB,EAAgC,OAAhC;EADF,GADS;;EAKf1D,EAAAA,YAAY,EAAE;EACZ8B,IAAAA,GAAG,EAAE,MADO;EAEZ4B,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,QAAd,EAAwB,aAAxB;EAFM,GALC;;EAUf9D,EAAAA,UAAU,EAAE;EACVkC,IAAAA,GAAG,EAAE,cADK;EAEV4B,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,QAAd;EAFI,GAVG;;EAef3D,EAAAA,MAAM,EAAE;EACN+B,IAAAA,GAAG,EAAE,cADC;EAEN4B,IAAAA,IAAI,EAAE,CAAC,WAAD,EAAc,QAAd,EAAwB,aAAxB;EAFA,GAfO;;EAoBf5D,EAAAA,SAAS,EAAE;EACTgC,IAAAA,GAAG,EAAE,MADI;EAET4B,IAAAA,IAAI,EAAE,CAAC,aAAD;EAFG,GApBI;;EAyBf0M,EAAAA,WAAW,EAAE;EACXtO,IAAAA,GAAG,EAAE;EADM,GAzBE;;EA8BfuO,EAAAA,MAAM,EAAE;EACNvO,IAAAA,GAAG,EAAE;EADC,GA9BO;;EAkCfwO,EAAAA,KAAK,EAAE;EACLxO,IAAAA,GAAG,EAAE,MADA;EAEL4B,IAAAA,IAAI,EAAE,CAAC,YAAD;EAFD,GAlCQ;;EAuCf6M,EAAAA,YAAY,EAAE;EACZzO,IAAAA,GAAG,EAAE,MADO;EAEZ4B,IAAAA,IAAI,EAAE;EAFM,GAvCC;EA2Cf8M,EAAAA,UAAU,EAAE;EACV1O,IAAAA,GAAG,EAAE;EADK,GA3CG;;EA+Cf7B,EAAAA,UAAU,EAAE;EACV6B,IAAAA,GAAG,EAAE;EADK,GA/CG;;EAmDf2O,EAAAA,WAAW,EAAE;EACX3O,IAAAA,GAAG,EAAE;EADM,GAnDE;;EAuDf4O,EAAAA,QAAQ,EAAE;EACR5O,IAAAA,GAAG,EAAE;EADG;EAvDK,CAAjB;;ECAA,YAAc,GAAG;EACf6O,EAAAA,KAAK,EAAE;EACLjN,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,QAAtB;EADD,GADQ;EAIfkN,EAAAA,OAAO,EAAE;EACP9O,IAAAA,GAAG,EAAE,OADE;EAEP4B,IAAAA,IAAI,EAAE,CAAC,UAAD;EAFC,GAJM;EAQfmN,EAAAA,QAAQ,EAAE;EACR/O,IAAAA,GAAG,EAAE,OADG;EAER4B,IAAAA,IAAI,EAAE,CAAC,SAAD;EAFE,GARK;EAYfoN,EAAAA,YAAY,EAAE;EACZhP,IAAAA,GAAG,EAAE,UADO;;EAEZ4B,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,WAAZ;EAFM,GAZC;EAgBfqN,EAAAA,SAAS,EAAE;EACTjP,IAAAA,GAAG,EAAE,OADI;EAET4B,IAAAA,IAAI,EAAE,CAAC,cAAD;EAFG,GAhBI;EAoBfsN,EAAAA,YAAY,EAAE;EACZlP,IAAAA,GAAG,EAAE,OADO;EAEZ4B,IAAAA,IAAI,EAAE,CAAC,WAAD;EAFM,GApBC;EAwBfuN,EAAAA,KAAK,EAAE;EACLnP,IAAAA,GAAG,EAAE;EADA,GAxBQ;EA2BfoP,EAAAA,OAAO,EAAE;EACPpP,IAAAA,GAAG,EAAE;EADE;EA3BM,CAAjB;;ECAA,IAAM3D,UAAQ,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,WAAjB,EAA8B,QAA9B,EAAwC,OAAxC,CAAjB;EAEA,UAAc,GAAG;;EAEfgT,EAAAA,SAAS,EAAE;EACTzN,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,OAA3B;EADG,GAFI;;EAMf0N,EAAAA,UAAU,EAAE;EACVtP,IAAAA,GAAG,EAAE,CAAC,WAAD;EADK,GANG;;EAUfuP,EAAAA,WAAW,EAAE;EACXvP,IAAAA,GAAG,EAAE,CAAC,WAAD;EADM,GAVE;;EAcfwP,EAAAA,WAAW,EAAE;EACXxP,IAAAA,GAAG,EAAE,CAAC,WAAD,CADM;EAEX4B,IAAAA,IAAI,EAAE,CAAC,aAAD;EAFK,GAdE;EAmBf6N,EAAAA,WAAW,EAAE;EACXzP,IAAAA,GAAG,EAAE,CAAC,aAAD;EADM,GAnBE;EAsBf0P,EAAAA,MAAM,EAAE;EACN9N,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,WAAjB,EAA8B,OAA9B;EADA,GAtBO;;;EA4Bf+N,EAAAA,IAAI,EAAE;EACJ/N,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,aAAT,EAAwB,QAAxB,EAAkC,aAAlC,EAAiD,WAAjD;EADF,GA5BS;EA+BfgO,EAAAA,KAAK,EAAE;EACL5P,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,UAAT,CADA;EAEL4B,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,SAAT,EAAoB,MAApB;EAFD,GA/BQ;EAmCfiO,EAAAA,OAAO,EAAE;EACP7P,IAAAA,GAAG,EAAE,CAAC,MAAD,EAAS,MAAT;EADE,GAnCM;;EAwCf8P,EAAAA,UAAU,EAAE;EACVlO,IAAAA,IAAI,EAAEvF;EADI,GAxCG;EA2Cf0T,EAAAA,WAAW,EAAE;EACXnO,IAAAA,IAAI,EAAEvF;EADK,GA3CE;EA8Cf2T,EAAAA,WAAW,EAAE;EACXpO,IAAAA,IAAI,EAAEvF;EADK,GA9CE;;EAmDf4T,EAAAA,YAAY,EAAE;EACZrO,IAAAA,IAAI,EAAE,CAAC,YAAD;EADM,GAnDC;;EAwDfsO,EAAAA,QAAQ,EAAE,EAxDK;;EA0DfC,EAAAA,UAAU,EAAE;EACVvO,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,MAAtB,EAA8B,QAA9B;EADI,GA1DG;;EA8DfrC,EAAAA,YAAY,EAAE,EA9DC;;EAiEf6Q,EAAAA,GAAG,EAAE;EACHxO,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,aAAZ,EAA2B,MAA3B,EAAmC,WAAnC,EAAgD,OAAhD,EAAyD,WAAzD,EAAsE,OAAtE;EADH,GAjEU;EAoEfyO,EAAAA,WAAW,EAAE;EACXzO,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C,EAAuD,OAAvD;EADK,GApEE;EAuEf0O,EAAAA,OAAO,EAAE,EAvEM;EAwEfC,EAAAA,SAAS,EAAE;EACTvQ,IAAAA,GAAG,EAAE,CAAC,MAAD,CADI;EAET4B,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,OAA1C;EAFG,GAxEI;EA4Ef4O,EAAAA,KAAK,EAAE;EACL5O,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADD,GA5EQ;EA+Ef6O,EAAAA,QAAQ,EAAE;EACR7O,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADE,GA/EK;EAkFf8O,EAAAA,KAAK,EAAE;EACL9O,IAAAA,IAAI,EAAE,CAAC,SAAD,EAAY,MAAZ,EAAoB,WAApB,EAAiC,OAAjC,EAA0C,WAA1C;EADD,GAlFQ;;EAuFfnC,EAAAA,SAAS,EAAE;EACTmC,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,OAAtB;EADG,GAvFI;EA0Ff7C,EAAAA,OAAO,EAAE;EACP6C,IAAAA,IAAI,EAAE,CAAC,QAAD,EAAW,cAAX;EADC,GA1FM;EA6Ff/D,EAAAA,QAAQ,EAAE;EACR+D,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,OAAtB;EADE,GA7FK;;EAiGf+O,EAAAA,SAAS,EAAE;EACT/O,IAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,WAAT,EAAsB,MAAtB,EAA8B,OAA9B;EADG;EAjGI,CAAjB;;ECFA;EACA,IAAMgP,UAAQ,GAAG;EACf5D,EAAAA,IAAI,EAAE,MADS;EAGfpP,EAAAA,IAAI,EAAE,OAHS;EAIfC,EAAAA,QAAQ,EAAE,OAJK;EAMf8R,EAAAA,IAAI,EAAE,KANS;EAOfd,EAAAA,KAAK,EAAE,KAPQ;EASfQ,EAAAA,SAAS,EAAE,SATI;EAWfW,EAAAA,WAAW,EAAE,MAXE;EAYfD,EAAAA,WAAW,EAAE,MAZE;EAafD,EAAAA,UAAU,EAAE,MAbG;EAcfJ,EAAAA,MAAM,EAAE;EAdO,CAAjB;;;EAkBA,IAAMmB,WAAS,GAAG,SAAZA,SAAY,CAAShU,IAAT,EAAe;EAC/B1D,EAAAA,MAAM,CAACC,IAAP,CAAYyD,IAAZ,EAAkBxD,OAAlB,CAA0B,UAAAnB,CAAC,EAAI;EAC7B,QAAI0Y,UAAQ,CAAC1Y,CAAD,CAAZ,EAAiB;EACf2E,MAAAA,IAAI,CAAC3E,CAAD,CAAJ,CAAQ4Y,KAAR,GAAgBF,UAAQ,CAAC1Y,CAAD,CAAxB;EACA;EACD;;EACD2E,IAAAA,IAAI,CAAC3E,CAAD,CAAJ,CAAQ8H,GAAR,CAAY7C,IAAZ,CAAiB,UAAAxE,CAAC,EAAI;EACpB,UAAIiY,UAAQ,CAACjY,CAAD,CAAZ,EAAiB;EACfkE,QAAAA,IAAI,CAAC3E,CAAD,CAAJ,CAAQ4Y,KAAR,GAAgBF,UAAQ,CAACjY,CAAD,CAAxB;EACA,eAAO,IAAP;EACD;;EACD,aAAO,KAAP;EACD,KAND;EAOD,GAZD;EAaA,SAAOkE,IAAP;EACD,CAfD;;EAiBA,YAAc,GAAGgU,WAAjB;;ECpCA,IAAMlM,QAAM,GAAG,SAATA,MAAS,CAAS3D,GAAT,EAAc;EAC3B,SAAOA,GAAG,CAACuC,MAAJ,CAAW,UAAC1K,CAAD,EAAI3B,CAAJ,EAAOM,CAAP;EAAA,WAAaA,CAAC,CAACmE,OAAF,CAAU9C,CAAV,MAAiB3B,CAA9B;EAAA,GAAX,CAAP;EACD,CAFD;;;EAKA,IAAM6Z,UAAQ,GAAG,SAAXA,QAAW,CAASlU,IAAT,EAAe;EAC9B1D,EAAAA,MAAM,CAACC,IAAP,CAAYyD,IAAZ,EAAkBxD,OAAlB,CAA0B,UAAAnB,CAAC,EAAI;EAC7B,QAAI0E,GAAG,GAAGC,IAAI,CAAC3E,CAAD,CAAd;EACA,QAAI8Y,GAAG,GAAGpU,GAAG,CAACoD,GAAJ,CAAQ1I,MAAlB;;EACA,SAAK,IAAIJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8Z,GAApB,EAAyB9Z,CAAC,EAA1B,EAA8B;EAC5B,UAAIwK,IAAI,GAAG9E,GAAG,CAACoD,GAAJ,CAAQ9I,CAAR,CAAX;;EACA,UAAI2F,IAAI,CAAC6E,IAAD,CAAR,EAAgB;EACd9E,QAAAA,GAAG,CAACoD,GAAJ,GAAUpD,GAAG,CAACoD,GAAJ,CAAQkF,MAAR,CAAerI,IAAI,CAAC6E,IAAD,CAAJ,CAAW1B,GAA1B,CAAV;EACD;EACF,KAR4B;;;EAU7BpD,IAAAA,GAAG,CAACoD,GAAJ,GAAU2E,QAAM,CAAC/H,GAAG,CAACoD,GAAL,CAAhB;EACD,GAXD;EAYA,SAAOnD,IAAP;EACD,CAdD;;EAeA,UAAc,GAAGkU,UAAjB;;ECpBA,IAAMpM,QAAM,GAAG,SAATA,MAAS,CAAS3D,GAAT,EAAc;EAC3B,SAAOA,GAAG,CAACuC,MAAJ,CAAW,UAAC1K,CAAD,EAAI3B,CAAJ,EAAOM,CAAP;EAAA,WAAaA,CAAC,CAACmE,OAAF,CAAU9C,CAAV,MAAiB3B,CAA9B;EAAA,GAAX,CAAP;EACD,CAFD;;;;EAMA,IAAM+Z,WAAS,GAAG,SAAZA,SAAY,CAASpU,IAAT,EAAe;EAC/B,MAAIzD,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYyD,IAAZ,CAAX;EACAzD,EAAAA,IAAI,CAACC,OAAL,CAAa,UAAAnB,CAAC,EAAI;EAChB,QAAI0E,GAAG,GAAGC,IAAI,CAAC3E,CAAD,CAAd;EACA0E,IAAAA,GAAG,CAACgF,IAAJ,GAAWhF,GAAG,CAACgF,IAAJ,IAAY,EAAvB;EACAhF,IAAAA,GAAG,CAACoD,GAAJ,CAAQ3G,OAAR,CAAgB,UAAAqI,IAAI,EAAI;EACtB,UAAI7E,IAAI,CAAC6E,IAAD,CAAJ,IAAc7E,IAAI,CAAC6E,IAAD,CAAJ,CAAWE,IAA7B,EAAmC;;EAEjC,YAAIA,IAAI,GAAG,OAAO/E,IAAI,CAAC6E,IAAD,CAAJ,CAAWE,IAAlB,KAA2B,QAA3B,GAAsC,CAAC/E,IAAI,CAAC6E,IAAD,CAAJ,CAAW1B,GAAZ,CAAtC,GAAyDnD,IAAI,CAAC6E,IAAD,CAAJ,CAAWE,IAAX,IAAmB,EAAvF;EACAhF,QAAAA,GAAG,CAACgF,IAAJ,GAAWhF,GAAG,CAACgF,IAAJ,CAASsD,MAAT,CAAgBtD,IAAhB,CAAX;EACD;EACF,KAND,EAHgB;;EAWhB,SAAK,IAAI1K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EACpC,UAAMga,GAAG,GAAG9X,IAAI,CAAClC,CAAD,CAAhB;;EACA,UAAI2F,IAAI,CAACqU,GAAD,CAAJ,CAAUtP,IAAV,CAAejG,OAAf,CAAuBzD,CAAvB,MAA8B,CAAC,CAAnC,EAAsC;EACpC0E,QAAAA,GAAG,CAACgF,IAAJ,CAASoB,IAAT,CAAckO,GAAd;EACD;EACF,KAhBe;;;EAkBhBtU,IAAAA,GAAG,CAACgF,IAAJ,GAAW+C,QAAM,CAAC/H,GAAG,CAACgF,IAAL,CAAjB;EACD,GAnBD;EAoBA,SAAO/E,IAAP;EACD,CAvBD;;EAwBA,WAAc,GAAGoU,WAAjB;;EC9BA;EACA,IAAME,cAAY,GAAG,SAAfA,YAAe,CAAStU,IAAT,EAAe;EAClC,MAAIzD,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYyD,IAAZ,CAAX;EACAzD,EAAAA,IAAI,CAACC,OAAL,CAAa,UAAAnB,CAAC,EAAI;EAChB,QAAI0E,GAAG,GAAGC,IAAI,CAAC3E,CAAD,CAAd;EACA0E,IAAAA,GAAG,CAACmD,OAAJ,GAAc,EAAd,CAFgB;;EAIhB,SAAK,IAAI7I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,EAAlC,EAAsC;EACpC,UAAI2F,IAAI,CAACzD,IAAI,CAAClC,CAAD,CAAL,CAAJ,CAAc8I,GAAd,CAAkBrE,OAAlB,CAA0BzD,CAA1B,MAAiC,CAAC,CAAtC,EAAyC;EACvC0E,QAAAA,GAAG,CAACmD,OAAJ,CAAYiD,IAAZ,CAAiB5J,IAAI,CAAClC,CAAD,CAArB;EACD;EACF;EACF,GATD;EAUA,SAAO2F,IAAP;EACD,CAbD;;EAcA,cAAc,GAAGsU,cAAjB;;ECVA,IAAMC,UAAQ,GAAG,SAAXA,QAAW,CAASvU,IAAT,EAAe;;EAE9B1D,EAAAA,MAAM,CAACC,IAAP,CAAYyD,IAAZ,EAAkBxD,OAAlB,CAA0B,UAAAnB,CAAC,EAAI;EAC7B,QAAI0E,GAAG,GAAGC,IAAI,CAAC3E,CAAD,CAAd,CAD6B;;EAG7B0E,IAAAA,GAAG,CAACoD,GAAJ,GAAUpD,GAAG,CAACoD,GAAJ,IAAW,EAArB;;EACA,QAAI,OAAOpD,GAAG,CAACoD,GAAX,KAAmB,QAAvB,EAAiC;EAC/BpD,MAAAA,GAAG,CAACoD,GAAJ,GAAU,CAACpD,GAAG,CAACoD,GAAL,CAAV;EACD,KAN4B;;;EAQ7BpD,IAAAA,GAAG,CAACgF,IAAJ,GAAWhF,GAAG,CAACgF,IAAJ,IAAY,EAAvB;;EACA,QAAI,OAAOhF,GAAG,CAACgF,IAAX,KAAoB,QAAxB,EAAkC;EAChChF,MAAAA,GAAG,CAACgF,IAAJ,GAAW,CAAChF,GAAG,CAACgF,IAAL,CAAX;EACD;EACF,GAZD;EAaA,SAAO/E,IAAP;EACD,CAhBD;;;EAmBA,IAAMwU,WAAS,GAAG,SAAZA,SAAY,CAASxU,IAAT,EAAe;;EAE/BA,EAAAA,IAAI,GAAGuU,UAAQ,CAACvU,IAAD,CAAf,CAF+B;;EAI/BA,EAAAA,IAAI,GAAGkU,MAAQ,CAAClU,IAAD,CAAf,CAJ+B;;EAM/BA,EAAAA,IAAI,GAAGoU,OAAS,CAACpU,IAAD,CAAhB,CAN+B;;EAQ/BA,EAAAA,IAAI,GAAGyU,QAAU,CAACzU,IAAD,CAAjB,CAR+B;;EAU/BA,EAAAA,IAAI,GAAGkD,UAAO,CAAClD,IAAD,CAAd;EACA,SAAOA,IAAP;EACD,CAZD;;EAaA,eAAc,GAAGwU,WAAjB;;EC9BA,IAAME,OAAK,GAAG,SAARA,KAAQ,CAASjP,GAAT,EAAczF,IAAd,EAAoB;EAChC1D,EAAAA,MAAM,CAACC,IAAP,CAAYkJ,GAAZ,EAAiBjJ,OAAjB,CAAyB,UAAAnB,CAAC,EAAI;EAC5B2E,IAAAA,IAAI,CAAC3E,CAAD,CAAJ,GAAUoK,GAAG,CAACpK,CAAD,CAAb;EACD,GAFD;EAGD,CAJD;;EAMA,IAAMsZ,OAAK,GAAG,SAARA,KAAQ,GAAM;EAClB,MAAI3U,IAAI,GAAG,EAAX;EACA0U,EAAAA,OAAK,CAACE,OAAD,EAAQ5U,IAAR,CAAL;EACA0U,EAAAA,OAAK,CAACG,OAAD,EAAQ7U,IAAR,CAAL;EACA0U,EAAAA,OAAK,CAACI,QAAD,EAAS9U,IAAT,CAAL;EACA0U,EAAAA,OAAK,CAACK,MAAD,EAAO/U,IAAP,CAAL,CALkB;;EAOlBA,EAAAA,IAAI,GAAGwU,WAAS,CAACxU,IAAD,CAAhB;EACA,SAAOA,IAAP;EACD,CATD;;EAUA,UAAc,GAAG2U,OAAK,EAAtB;;;ECrBA;EACA,MAAMqZ,KAAK,GAAG,SAAd;;EAEA,MAAMnqB,MAAM,GAAG,SAATA,MAAS,CAAS1J,GAAT,EAAc2J,KAAd,EAAqB;EAClC3J,IAAAA,GAAG,GAAGA,GAAG,CAAC4J,QAAJ,EAAN;;EACA,WAAO5J,GAAG,CAACM,MAAJ,GAAaqJ,KAApB,EAA2B;EACzB3J,MAAAA,GAAG,IAAI,GAAP;EACD;;EACD,WAAOA,GAAP;EACD,GAND;;;EASA,MAAM8zB,GAAG,GAAG;EACVxF,IAAAA,KAAK,EAAE,eAAStuB,GAAT,EAAc;EACnB,aAAO,aAAaA,GAAb,GAAmB6zB,KAA1B;EACD,KAHS;EAIVrF,IAAAA,GAAG,EAAE,aAASxuB,GAAT,EAAc;EACjB,aAAO,aAAaA,GAAb,GAAmB6zB,KAA1B;EACD,KANS;EAOVE,IAAAA,IAAI,EAAE,cAAS/zB,GAAT,EAAc;EAClB,aAAO,aAAaA,GAAb,GAAmB6zB,KAA1B;EACD,KATS;EAUVG,IAAAA,OAAO,EAAE,iBAASh0B,GAAT,EAAc;EACrB,aAAO,aAAaA,GAAb,GAAmB6zB,KAA1B;EACD,KAZS;EAaVI,IAAAA,IAAI,EAAE,cAASj0B,GAAT,EAAc;EAClB,aAAO,aAAaA,GAAb,GAAmB6zB,KAA1B;EACD,KAfS;EAgBVtF,IAAAA,MAAM,EAAE,gBAASvuB,GAAT,EAAc;EACpB,aAAO,aAAaA,GAAb,GAAmB6zB,KAA1B;EACD,KAlBS;EAmBVK,IAAAA,KAAK,EAAE,eAASl0B,GAAT,EAAc;EACnB,aAAO,aAAaA,GAAb,GAAmB6zB,KAA1B;EACD;EArBS,GAAZ;;EAwBA,MAAMM,SAAS,GAAG,SAAZA,SAAY,CAAStuB,IAAT,EAAe;EAC/BA,IAAAA,IAAI,GAAGA,IAAI,CAACuG,GAAL,CAAS,UAAAxG,GAAG,EAAI;EACrB,UAAI,CAAC0E,MAAM,CAAC7E,cAAP,CAAsBG,GAAtB,CAAL,EAAiC;EAC/B,eAAOA,GAAP;EACD;;EACD,UAAMlF,CAAC,GAAG4J,MAAM,CAAC1E,GAAD,CAAN,CAAYkU,KAAZ,IAAqB,MAA/B;EACA,aAAOga,GAAG,CAACpzB,CAAD,CAAH,CAAOkF,GAAP,CAAP;EACD,KANM,CAAP;EAOA,WAAOC,IAAI,CAACtD,IAAL,CAAU,IAAV,CAAP;EACD,GATD;;;EAYA,MAAM6xB,KAAK,GAAG,SAARA,KAAQ,CAAStmB,GAAT,EAAc;EAC1B/D,IAAAA,OAAO,CAACD,GAAR,CAAYgqB,GAAG,CAACC,IAAJ,CAAS,OAAT,CAAZ;EACAjmB,IAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpBwI,MAAAA,OAAO,CAACD,GAAR,CAAYgqB,GAAG,CAACC,IAAJ,CAAS,SAAT,CAAZ;EACAxyB,MAAAA,CAAC,CAACqK,KAAF,GAAUvJ,OAAV,CAAkB,UAAAV,CAAC,EAAI;EACrB,YAAIkE,IAAI,GAAG1D,MAAM,CAACC,IAAP,CAAYT,CAAC,CAACkE,IAAd,CAAX;EACA,YAAI5F,IAAI,GAAG0B,CAAC,CAAC1B,IAAF,IAAU,GAArB;;EACA,YAAI0B,CAAC,CAACoD,QAAN,EAAgB;EACd9E,UAAAA,IAAI,GAAG,MAAM0B,CAAC,CAACoD,QAAR,GAAmB,GAA1B;EACD;;EACD,QAAiC;EAC/B9E,UAAAA,IAAI,GAAG6zB,GAAG,CAACvF,MAAJ,CAAWtuB,IAAX,CAAP;EACD;;EACD,YAAIgE,IAAI,GAAG,MAAMhE,IAAN,GAAa,GAAxB;EACAgE,QAAAA,IAAI,GAAGyF,MAAM,CAACzF,IAAD,EAAO,EAAP,CAAb;EACA,YAAIjE,GAAG,GAAG8zB,GAAG,CAACC,IAAJ,CAAS,MAAT,IAAmB9vB,IAAnB,GAA0B,MAA1B,GAAmCkwB,SAAS,CAACtuB,IAAD,CAAtD;EACAkE,QAAAA,OAAO,CAACD,GAAR,CAAY9J,GAAZ;EACD,OAbD;EAcD,KAhBD;EAiBA+J,IAAAA,OAAO,CAACD,GAAR,CAAY,EAAZ;EACA,WAAOgE,GAAP;EACD,GArBD;;EAsBAumB,EAAAA,cAAA,GAAiBD,KAAjB;;;ECxEA,IAAME,IAAI,GAAG,SAAPA,IAAO,CAASxmB,GAAT,EAAc;EACzB,MAAIF,IAAI,GAAGE,GAAG,CAACuB,IAAJ,CAAS;EAAEpP,IAAAA,IAAI,EAAE,KAAR;EAAe2L,IAAAA,KAAK,EAAE,KAAtB;EAA6BxI,IAAAA,OAAO,EAAE;EAAtC,GAAT,CAAX,CADyB;;EAGzB,MAAIkI,GAAG,GAAG,EAAV;EACAsC,EAAAA,IAAI,CAACvL,OAAL,CAAa,UAAAf,CAAC,EAAI;EAChB,QAAI,CAACgK,GAAG,CAAChK,CAAC,CAAC8B,OAAH,CAAR,EAAqB;EACnB9B,MAAAA,CAAC,CAAC2O,KAAF,GAAU,CAAV;EACA3E,MAAAA,GAAG,CAAChK,CAAC,CAAC8B,OAAH,CAAH,GAAiB9B,CAAjB;EACD;;EACDgK,IAAAA,GAAG,CAAChK,CAAC,CAAC8B,OAAH,CAAH,CAAe6M,KAAf,IAAwB,CAAxB;EACD,GAND;EAOA,MAAIjG,GAAG,GAAG7H,MAAM,CAACC,IAAP,CAAYkJ,GAAZ,EAAiBc,GAAjB,CAAqB,UAAAlL,CAAC;EAAA,WAAIoK,GAAG,CAACpK,CAAD,CAAP;EAAA,GAAtB,CAAV,CAXyB;;EAazB8I,EAAAA,GAAG,CAAClB,IAAJ,CAAS,UAACtI,CAAD,EAAIC,CAAJ,EAAU;EACjB,QAAID,CAAC,CAACyP,KAAF,GAAUxP,CAAC,CAACwP,KAAhB,EAAuB;EACrB,aAAO,CAAC,CAAR;EACD,KAFD,MAEO,IAAIzP,CAAC,CAACyP,KAAF,GAAUxP,CAAC,CAACwP,KAAhB,EAAuB;EAC5B,aAAO,CAAP;EACD;;EACD,WAAO,CAAP;EACD,GAPD;EAQA,SAAOjG,GAAP;EACD,CAtBD;;EAuBA,SAAc,GAAGsqB,IAAjB;;ECpBA;;EACA,WAAa,GAAG,gBAAA,GAAW;EACzBF,EAAAA,MAAK,CAAC,IAAD,CAAL;EACA,SAAO,IAAP;EACD,CAHD;;;;EAMA,OAAW,GAAG,YAAA,CAAStuB,MAAT,EAAiB;EAC7B,MAAIA,MAAM,KAAK,MAAf,EAAuB;EACrB,WAAO,KAAK7F,IAAL,EAAP;EACD;;EACD,MAAI6F,MAAM,KAAK,QAAf,EAAyB;EACvB,WAAO,KAAK7F,IAAL,CAAU,QAAV,CAAP;EACD;;EACD,MAAI6F,MAAM,KAAK,MAAf,EAAuB;EACrB,WAAO,KAAKuJ,IAAL,EAAP;EACD;;EACD,MAAIvJ,MAAM,KAAK,QAAX,IAAuBA,MAAM,KAAK,SAAtC,EAAiD;EAC/C,WAAO,KAAKuJ,IAAL,CAAU;EAAEnG,MAAAA,MAAM,EAAE;EAAV,KAAV,CAAP;EACD;;EACD,MAAIpD,MAAM,KAAK,OAAf,EAAwB;EACtB,WAAO,KAAKuJ,IAAL,CAAU;EAAEzD,MAAAA,KAAK,EAAE;EAAT,KAAV,EAA4BQ,GAA5B,CAAgC,UAAAd,GAAG;EAAA,aAAIA,GAAG,CAACrL,IAAR;EAAA,KAAnC,CAAP;EACD;;EACD,MAAI6F,MAAM,KAAK,MAAX,IAAqBA,MAAM,KAAK,WAApC,EAAiD;EAC/C,WAAOwuB,KAAI,CAAC,IAAD,CAAX;EACD;;EACD,MAAIxuB,MAAM,KAAK,OAAf,EAAwB;EACtB,QAAI8H,IAAI,GAAG,EAAX;EACA,SAAKyB,IAAL,CAAU;EAAEpP,MAAAA,IAAI,EAAE,KAAR;EAAe2L,MAAAA,KAAK,EAAE;EAAE3L,QAAAA,IAAI,EAAE;EAAR;EAAtB,KAAV,EAAkDoC,OAAlD,CAA0D,UAAAiJ,GAAG,EAAI;EAC/D,UAAIM,KAAK,GAAGN,GAAG,CAACM,KAAJ,CAAUQ,GAAV,CAAc,UAAAzK,CAAC;EAAA,eAAIA,CAAC,CAAC1B,IAAN;EAAA,OAAf,CAAZ;EACA2L,MAAAA,KAAK,GAAGA,KAAK,CAACW,MAAN,CAAa,UAAA5K,CAAC;EAAA,eAAIA,CAAJ;EAAA,OAAd,CAAR;EACAiM,MAAAA,IAAI,GAAGA,IAAI,CAACM,MAAL,CAAYtC,KAAZ,CAAP;EACD,KAJD;EAKA,WAAOgC,IAAP;EACD;;EACD,MAAI9H,MAAM,KAAK,MAAf,EAAuB;EACrB,WAAO,KAAK8H,IAAL,CAAUxB,GAAV,CAAc,UAAA7K,CAAC,EAAI;EACxB,aAAOA,CAAC,CAACqK,KAAF,GAAU5H,MAAV,CAAiB,UAACjD,CAAD,EAAIY,CAAJ,EAAU;EAChCZ,QAAAA,CAAC,CAACY,CAAC,CAACoB,KAAF,IAAWpB,CAAC,CAACoD,QAAd,CAAD,GAA2B5C,MAAM,CAACC,IAAP,CAAYT,CAAC,CAACkE,IAAd,CAA3B;EACA,eAAO9E,CAAP;EACD,OAHM,EAGJ,EAHI,CAAP;EAID,KALM,CAAP;EAMD;;EACD,MAAI+E,MAAM,KAAK,OAAf,EAAwB;EACtBsuB,IAAAA,MAAK,CAAC,IAAD,CAAL;EACA,WAAO,IAAP;EACD;;EACD,SAAO,KAAKn0B,IAAL,EAAP;EACD,CAzCD;;;;;;;ECVA;EACA,IAAMq0B,MAAI,GAAG,SAAPA,IAAO,CAAS1mB,IAAT,EAAe;EAC1B,MAAI2mB,MAAM,GAAG,EAAb;EACA3mB,EAAAA,IAAI,CAACvL,OAAL,CAAa,UAAA7B,CAAC,EAAI;EAChB+zB,IAAAA,MAAM,CAAC/zB,CAAD,CAAN,GAAY+zB,MAAM,CAAC/zB,CAAD,CAAN,IAAa,CAAzB;EACA+zB,IAAAA,MAAM,CAAC/zB,CAAD,CAAN,IAAa,CAAb;EACD,GAHD;EAIA,MAAIwJ,GAAG,GAAG7H,MAAM,CAACC,IAAP,CAAYmyB,MAAZ,CAAV;EACAvqB,EAAAA,GAAG,GAAGA,GAAG,CAAClB,IAAJ,CAAS,UAACtI,CAAD,EAAIC,CAAJ,EAAU;EACvB,QAAI8zB,MAAM,CAAC/zB,CAAD,CAAN,GAAY+zB,MAAM,CAAC9zB,CAAD,CAAtB,EAA2B;EACzB,aAAO,CAAC,CAAR;EACD,KAFD,MAEO;EACL,aAAO,CAAP;EACD;EACF,GANK,CAAN,CAP0B;;EAe1B,SAAOuJ,GAAG,CAACoC,GAAJ,CAAQ,UAAA5L,CAAC;EAAA,WAAI,CAACA,CAAD,EAAI+zB,MAAM,CAAC/zB,CAAD,CAAV,CAAJ;EAAA,GAAT,CAAP;EACD,CAhBD;;;EAmBA,IAAMg0B,UAAU,GAAG,SAAbA,UAAa,CAAS3uB,IAAT,EAAeU,KAAf,EAAsB;EACvC,MAAI+D,MAAM,GAAG/D,KAAK,CAACV,IAAnB;EACA,MAAI4uB,OAAO,GAAG,EAAd;EACA5uB,EAAAA,IAAI,CAACxD,OAAL,CAAa,UAAAuD,GAAG,EAAI;EAClB,QAAI0E,MAAM,CAAC1E,GAAD,CAAN,IAAe0E,MAAM,CAAC1E,GAAD,CAAN,CAAYoD,GAA/B,EAAoC;EAClCyrB,MAAAA,OAAO,GAAGA,OAAO,CAACvmB,MAAR,CAAe5D,MAAM,CAAC1E,GAAD,CAAN,CAAYoD,GAA3B,CAAV;EACD;EACF,GAJD;EAKAyrB,EAAAA,OAAO,GAAGA,OAAO,CAACzwB,MAAR,CAAe,UAACjD,CAAD,EAAI6E,GAAJ,EAAY;EACnC7E,IAAAA,CAAC,CAAC6E,GAAD,CAAD,GAAS,IAAT;EACA,WAAO7E,CAAP;EACD,GAHS,EAGP,EAHO,CAAV;EAIA8E,EAAAA,IAAI,GAAGA,IAAI,CAAC0G,MAAL,CAAY,UAAA3G,GAAG;EAAA,WAAI,CAAC6uB,OAAO,CAAC7uB,GAAD,CAAZ;EAAA,GAAf,CAAP,CAZuC;;EAcvC,SAAOC,IAAP;EACD,CAfD;;;;EAkBA,YAAc,GAAG,iBAAA,GAAW;EAAA;;EAC1B,MAAI6uB,UAAU,GAAG,KAAKrlB,IAAL,CAAU;EAAEpP,IAAAA,IAAI,EAAE,IAAR;EAAcgD,IAAAA,IAAI,EAAE,KAApB;EAA2B2I,IAAAA,KAAK,EAAE;EAAE/F,MAAAA,IAAI,EAAE,IAAR;EAAcqC,MAAAA,UAAU,EAAE;EAA1B;EAAlC,GAAV,CAAjB,CAD0B;;EAG1B,MAAIysB,OAAO,GAAG,EAAd;EACAD,EAAAA,UAAU,CAACryB,OAAX,CAAmB,UAAAd,CAAC,EAAI;EACtBA,IAAAA,CAAC,CAACqK,KAAF,CAAQvJ,OAAR,CAAgB,UAAAV,CAAC,EAAI;;EAEnB,UAAIkE,IAAI,GAAG2uB,UAAU,CAAC7yB,CAAC,CAACkE,IAAH,EAAS,KAAI,CAACU,KAAd,CAArB;EACAouB,MAAAA,OAAO,GAAGA,OAAO,CAACzmB,MAAR,CAAerI,IAAf,CAAV;EACD,KAJD;EAKD,GAND,EAJ0B;;EAY1B8uB,EAAAA,OAAO,GAAGL,MAAI,CAACK,OAAD,CAAd;EACA,MAAIC,MAAM,GAAG,EAAb;EACAD,EAAAA,OAAO,CAACtyB,OAAR,CAAgB,UAAC7B,CAAD,EAAIN,CAAJ,EAAU;EACxB00B,IAAAA,MAAM,CAACp0B,CAAC,CAAC,CAAD,CAAF,CAAN,GAAeN,CAAf;EACD,GAFD,EAd0B;;EAmB1Bw0B,EAAAA,UAAU,GAAGA,UAAU,CAACtoB,GAAX,CAAe,UAAA7K,CAAC,EAAI;EAC/B,QAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,CAAQQ,GAAR,CAAY,UAAAxD,IAAI,EAAI;EAC9B,UAAI/C,IAAI,GAAG+C,IAAI,CAAC/C,IAAhB;EACAA,MAAAA,IAAI,GAAG2uB,UAAU,CAAC3uB,IAAD,EAAO,KAAI,CAACU,KAAZ,CAAjB;EACAV,MAAAA,IAAI,GAAGA,IAAI,CAACuG,GAAL,CAAS,UAAAxG,GAAG;EAAA,eAAIgvB,MAAM,CAAChvB,GAAD,CAAV;EAAA,OAAZ,CAAP;EACAC,MAAAA,IAAI,GAAGA,IAAI,CAACtD,IAAL,CAAU,GAAV,CAAP;EACA,aAAOsD,IAAP;EACD,KANW,CAAZ;EAOA+F,IAAAA,KAAK,GAAGA,KAAK,CAACrJ,IAAN,CAAW,GAAX,CAAR;EACA,WAAO,CAAChB,CAAC,CAACtB,IAAH,EAAS2L,KAAT,CAAP;EACD,GAVY,CAAb;EAYA,SAAO;EACL/F,IAAAA,IAAI,EAAE1D,MAAM,CAACC,IAAP,CAAYwyB,MAAZ,CADD;;EAGLhnB,IAAAA,IAAI,EAAE8mB;EAHD,GAAP;EAKD,CApCD;;;;;;ECtCA,IAAMhpB,SAAO,GAAG;;EAEdmpB,EAAAA,KAAK,EAAE,eAACr0B,CAAD,EAAIC,CAAJ,EAAU;EACf,QAAIq0B,IAAI,GAAGt0B,CAAC,CAACP,IAAF,CAAO,OAAP,CAAX;EACA,QAAI80B,KAAK,GAAGt0B,CAAC,CAACR,IAAF,CAAO,OAAP,CAAZ;;EACA,QAAI60B,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAC,CAAR;EACD;;EACD,QAAID,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAP;EACD;;EACD,WAAO,CAAP;EACD,GAZa;;;EAedz0B,EAAAA,MAAM,EAAE,gBAACE,CAAD,EAAIC,CAAJ,EAAU;EAChB,QAAIq0B,IAAI,GAAGt0B,CAAC,CAACP,IAAF,GAASgD,IAAT,GAAgB3C,MAA3B;EACA,QAAIy0B,KAAK,GAAGt0B,CAAC,CAACR,IAAF,GAASgD,IAAT,GAAgB3C,MAA5B;;EACA,QAAIw0B,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAP;EACD;;EACD,QAAID,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAC,CAAR;EACD;;EACD,WAAO,CAAP;EACD,GAzBa;;;EA4Bd5D,EAAAA,SAAS,EAAE,mBAAC3wB,CAAD,EAAIC,CAAJ,EAAU;EACnB,QAAIq0B,IAAI,GAAGt0B,CAAC,CAAC2wB,SAAF,EAAX;EACA,QAAI4D,KAAK,GAAGt0B,CAAC,CAAC0wB,SAAF,EAAZ;;EACA,QAAI2D,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAP;EACD;;EACD,QAAID,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAC,CAAR;EACD;;EACD,WAAO,CAAP;EACD;EAtCa,CAAhB;;;EA0CA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAASlnB,GAAT,EAAc;EAC3B,MAAIymB,MAAM,GAAG,EAAb;EACA,MAAM/sB,OAAO,GAAG;EACd,YAAM,IADQ;EAEdY,IAAAA,WAAW,EAAE,KAFC;EAGdF,IAAAA,UAAU,EAAE,IAHE;EAIdhG,IAAAA,OAAO,EAAE;EAJK,GAAhB;EAMA4L,EAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpB,QAAIvB,GAAG,GAAGuB,CAAC,CAACtB,IAAF,CAAOuH,OAAP,CAAV;EACA+sB,IAAAA,MAAM,CAACv0B,GAAD,CAAN,GAAcu0B,MAAM,CAACv0B,GAAD,CAAN,IAAe,CAA7B;EACAu0B,IAAAA,MAAM,CAACv0B,GAAD,CAAN,IAAe,CAAf;EACD,GAJD,EAR2B;;EAc3B8N,EAAAA,GAAG,CAACF,IAAJ,CAAS9E,IAAT,CAAc,UAACtI,CAAD,EAAIC,CAAJ,EAAU;EACtB,QAAIq0B,IAAI,GAAGP,MAAM,CAAC/zB,CAAC,CAACP,IAAF,CAAOuH,OAAP,CAAD,CAAjB;EACA,QAAIutB,KAAK,GAAGR,MAAM,CAAC9zB,CAAC,CAACR,IAAF,CAAOuH,OAAP,CAAD,CAAlB;;EACA,QAAIstB,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAP;EACD;;EACD,QAAID,IAAI,GAAGC,KAAX,EAAkB;EAChB,aAAO,CAAC,CAAR;EACD;;EACD,WAAO,CAAP;EACD,GAVD;EAWA,SAAOjnB,GAAP;EACD,CA1BD;;;EA6BA,IAAMmnB,cAAc,GAAG,SAAjBA,cAAiB,CAASnnB,GAAT,EAAc;EACnC,MAAIonB,KAAK,GAAG,EAAZ;EACApnB,EAAAA,GAAG,CAACuB,IAAJ,CAAS;EAAEzD,IAAAA,KAAK,EAAE;EAAE1C,MAAAA,MAAM,EAAE;EAAV;EAAT,GAAT,EAAsC7G,OAAtC,CAA8C,UAAAf,CAAC,EAAI;EACjD4zB,IAAAA,KAAK,CAAC5zB,CAAC,CAACsK,KAAF,CAAQ,CAAR,EAAWxG,EAAZ,CAAL,GAAuB9D,CAAC,CAACsK,KAAF,CAAQ,CAAR,EAAW1C,MAAX,CAAkB5D,KAAzC;EACD,GAFD;EAGAwI,EAAAA,GAAG,CAACF,IAAJ,GAAWE,GAAG,CAACF,IAAJ,CAAS9E,IAAT,CAAc,UAACtI,CAAD,EAAIC,CAAJ,EAAU;EACjC,QAAIy0B,KAAK,CAAC10B,CAAC,CAAC8E,KAAH,CAAL,GAAiB4vB,KAAK,CAACz0B,CAAC,CAAC6E,KAAH,CAA1B,EAAqC;EACnC,aAAO,CAAP;EACD,KAFD,MAEO,IAAI4vB,KAAK,CAAC10B,CAAC,CAAC8E,KAAH,CAAL,GAAiB4vB,KAAK,CAACz0B,CAAC,CAAC6E,KAAH,CAA1B,EAAqC;EAC1C,aAAO,CAAC,CAAR;EACD;;EACD,WAAO,CAAP;EACD,GAPU,CAAX;EAQA,SAAOwI,GAAP;EACD,CAdD;;;AAiBApC,WAAO,CAACypB,YAAR,GAAuBzpB,SAAO,CAACmpB,KAA/B;AACAnpB,WAAO,CAAC0pB,SAAR,GAAoB1pB,SAAO,CAACylB,SAA5B;;EAGA,IAAMkE,QAAQ,GAAG;EACflwB,EAAAA,KAAK,EAAE,IADQ;EAEfmwB,EAAAA,QAAQ,EAAE,IAFK;EAGfza,EAAAA,GAAG,EAAE,IAHU;EAIf0a,EAAAA,UAAU,EAAE,IAJG;EAKfC,EAAAA,KAAK,EAAE,IALQ;EAMfC,EAAAA,aAAa,EAAE;EANA,CAAjB;;;EAUA,QAAY,GAAG,aAAA,CAASvjB,KAAT,EAAgB;EAC7BA,EAAAA,KAAK,GAAGA,KAAK,IAAI,OAAjB,CAD6B;;EAG7B,MAAIA,KAAK,KAAK,MAAV,IAAoBA,KAAK,KAAK,WAA9B,IAA6CA,KAAK,KAAK,MAA3D,EAAmE;EACjE,WAAO8iB,MAAM,CAAC,IAAD,CAAb;EACD;;EACD,MAAIK,QAAQ,CAAC5vB,cAAT,CAAwByM,KAAxB,CAAJ,EAAoC;EAClC,WAAO+iB,cAAc,CAAC,IAAD,CAArB;EACD;;EAED/iB,EAAAA,KAAK,GAAGxG,SAAO,CAACwG,KAAD,CAAP,IAAkBA,KAA1B,CAV6B;;EAY7B,MAAI,OAAOA,KAAP,KAAiB,UAArB,EAAiC;EAC/B,SAAKtE,IAAL,GAAY,KAAKA,IAAL,CAAU9E,IAAV,CAAeoJ,KAAf,CAAZ;EACA,WAAO,IAAP;EACD;;EACD,SAAO,IAAP;EACD,CAjBD;;;;EAoBA,WAAe,GAAG,gBAAA,GAAW;EAC3B,MAAItE,IAAI,GAAG,GAAGM,MAAH,CAAU,KAAKN,IAAf,CAAX;EACAA,EAAAA,IAAI,GAAGA,IAAI,CAACkE,OAAL,EAAP;EACA,SAAO,KAAK5F,SAAL,CAAe0B,IAAf,CAAP;EACD,CAJD;;;;EAOA,YAAc,GAAG,eAAA,GAAW;EAC1B,MAAIA,IAAI,GAAG,GAAGM,MAAH,CAAU,KAAKN,IAAf,CAAX;EACA,MAAItC,GAAG,GAAG,EAAV;EACAsC,EAAAA,IAAI,GAAGA,IAAI,CAACrB,MAAL,CAAY,UAAAhL,CAAC,EAAI;EACtB,QAAIvB,GAAG,GAAGuB,CAAC,CAACtB,IAAF,CAAO,SAAP,EAAkBgD,IAAlB,EAAV;;EACA,QAAIqI,GAAG,CAAC7F,cAAJ,CAAmBzF,GAAnB,MAA4B,IAAhC,EAAsC;EACpC,aAAO,KAAP;EACD;;EACDsL,IAAAA,GAAG,CAACtL,GAAD,CAAH,GAAW,IAAX;EACA,WAAO,IAAP;EACD,GAPM,CAAP;EAQA,SAAO,KAAKkM,SAAL,CAAe0B,IAAf,CAAP;EACD,CAZD;;;;;;;;EChIA,IAAM8nB,OAAO,GAAG,mEAAhB;EACA,IAAMC,MAAM,GAAG,eAAf;EAEA,IAAMjqB,SAAO,GAAG;;EAEdxD,EAAAA,UAAU,EAAE,oBAAS4F,GAAT,EAAc;EACxB,QAAI8nB,OAAO,GAAG9nB,GAAG,CAACF,IAAJ,CAASxB,GAAT,CAAa,UAAAqG,EAAE;EAAA,aAAIA,EAAE,CAAC7G,KAAH,EAAJ;EAAA,KAAf,CAAd;EACAgqB,IAAAA,OAAO,CAACvzB,OAAR,CAAgB,UAACuJ,KAAD,EAAQtK,CAAR,EAAc;EAC5BsK,MAAAA,KAAK,CAACvJ,OAAN,CAAc,UAACV,CAAD,EAAIzB,CAAJ,EAAU;;EAEtB,YAAIyB,CAAC,CAACk0B,OAAF,OAAgB,IAApB,EAA0B;EACxBl0B,UAAAA,CAAC,CAACgC,IAAF,GAAS,KAAT;EACA;EACD,SALqB;;;EAOtBhC,QAAAA,CAAC,CAAC+B,GAAF,GAAQ/B,CAAC,CAAC+B,GAAF,CAAMP,OAAN,CAAc,KAAd,EAAqB,EAArB,CAAR;EACAxB,QAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT,CARsB;;EAUtB,YAAIyI,KAAK,CAACtL,MAAN,GAAe,CAAf,KAAqBJ,CAArB,IAA0B,CAAC01B,OAAO,CAACt0B,CAAC,GAAG,CAAL,CAAtC,EAA+C;EAC7C;EACD,SAZqB;;;EActB,YAAIK,CAAC,CAACoD,QAAF,IAAcD,OAAO,CAACnD,CAAC,CAAC1B,IAAH,CAAP,KAAoB,IAAtC,EAA4C;EAC1C;EACD,SAhBqB;;;EAkBtB,YAAI0B,CAAC,CAACgT,SAAF,OAAkB,IAAtB,EAA4B;EAC1B;EACD;;EAEDhT,QAAAA,CAAC,CAACgC,IAAF,IAAU,GAAV;EACD,OAvBD;EAwBD,KAzBD;EA0BD,GA9Ba;EAgCdyE,EAAAA,WAAW,EAAE,qBAASqrB,QAAT,EAAmB;EAC9BA,IAAAA,QAAQ,CAACpxB,OAAT,CAAiB,UAAAV,CAAC,EAAI;;EAEpB,UAAIA,CAAC,CAACgT,SAAF,OAAkB,IAAtB,EAA4B;EAC1BhT,QAAAA,CAAC,CAACgC,IAAF,GAAS,GAAT;EACD;;EACDhC,MAAAA,CAAC,CAAC+B,GAAF,GAAQ/B,CAAC,CAAC+B,GAAF,CAAMP,OAAN,CAAcuyB,OAAd,EAAuB,EAAvB,CAAR;EACA/zB,MAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAeuyB,OAAf,EAAwB,EAAxB,CAAT,CANoB;;EAQpB/zB,MAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAe,QAAf,EAAyB,EAAzB,CAAT,CARoB;;EAUpB,UAAI,IAAIN,IAAJ,CAASlB,CAAC,CAACgC,IAAX,MAAqB,IAAzB,EAA+B;EAC7BhC,QAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAe,IAAf,EAAqB,EAArB,CAAT;EACAxB,QAAAA,CAAC,CAACgC,IAAF,GAAS,MAAMhC,CAAC,CAACgC,IAAjB;EACD,OAbmB;;;EAepB,UAAI,KAAKd,IAAL,CAAUlB,CAAC,CAACgC,IAAZ,MAAsB,IAA1B,EAAgC;EAC9BhC,QAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAe,QAAf,EAAyB,EAAzB,CAAT;EACAxB,QAAAA,CAAC,CAACgC,IAAF,GAAS,MAAMhC,CAAC,CAACgC,IAAjB;EACD;EACF,KAnBD;EAoBD,GArDa;EAuDdzB,EAAAA,OAAO,EAAE,iBAASuxB,QAAT,EAAmB;EAC1BA,IAAAA,QAAQ,CAACpxB,OAAT,CAAiB,UAAAV,CAAC,EAAI;EACpB,UAAIA,CAAC,CAACmP,UAAF,OAAmB,IAAvB,EAA6B;EAC3B;EACD;;EACDnP,MAAAA,CAAC,CAAC1B,IAAF,GAASqC,SAAW,CAACX,CAAC,CAAC1B,IAAH,CAApB;EACD,KALD;EAMD,GA9Da;EAgEd61B,EAAAA,UAAU,EAAE,oBAASrC,QAAT,EAAmB;EAC7BA,IAAAA,QAAQ,CAACpxB,OAAT,CAAiB,UAAAV,CAAC,EAAI;EACpBA,MAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAewyB,MAAf,EAAuB,EAAvB,CAAT;EACAh0B,MAAAA,CAAC,CAAC+B,GAAF,GAAQ/B,CAAC,CAAC+B,GAAF,CAAMP,OAAN,CAAcwyB,MAAd,EAAsB,EAAtB,CAAR;EACD,KAHD;EAID,GArEa;EAuEdI,EAAAA,OAAO,EAAE,iBAASjoB,GAAT,EAAc;EACrBA,IAAAA,GAAG,CACAb,KADH,CACS,SADT,EAEGskB,GAFH,CAEO,oDAFP,EAGGyE,MAHH;EAID,GA5Ea;;EA+Ed1tB,EAAAA,aAAa,EAAE,uBAASwF,GAAT,EAAc;EAC3BA,IAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAoQ,EAAE,EAAI;EACrB,UAAI7G,KAAK,GAAG6G,EAAE,CAAC7G,KAAH,EAAZ;EACAA,MAAAA,KAAK,CAACvJ,OAAN,CAAc,UAACV,CAAD,EAAIzB,CAAJ,EAAU;EACtB,YAAIyB,CAAC,CAACkE,IAAF,CAAO0C,YAAP,KAAwB,IAAxB,IAAgCqD,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAAzC,EAAkD;EAChDyB,UAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACD;EACF,OAJD;EAKD,KAPD;EAQD;EAxFa,CAAhB;EA0FA,YAAc,GAAGuI,SAAjB;;EC5FA,IAAMuqB,QAAQ,GAAG;;EAEf/tB,EAAAA,UAAU,EAAE,IAFG;EAGfhG,EAAAA,OAAO,EAAE,IAHM;EAIfkG,EAAAA,WAAW,EAAE,IAJE;EAKf8tB,EAAAA,KAAK,EAAE,IALQ;EAMfjuB,EAAAA,QAAQ,EAAE,IANK;EAOfK,EAAAA,aAAa,EAAE,IAPA;;EAUf,UAAM,KAVS;EAWf6tB,EAAAA,YAAY,EAAE,KAXC;EAYfC,EAAAA,WAAW,EAAE,KAZE;EAafN,EAAAA,UAAU,EAAE,KAbG;EAcfC,EAAAA,OAAO,EAAE,KAdM;;EAiBfM,EAAAA,WAAW,EAAE,KAjBE;EAkBf3b,EAAAA,KAAK,EAAE,KAlBQ;EAmBfD,EAAAA,KAAK,EAAE,KAnBQ;EAoBf6b,EAAAA,UAAU,EAAE,KApBG;;EAAA,CAAjB;EAwBA,IAAM3U,SAAO,GAAG;EACdwF,EAAAA,KAAK,EAAE,EADO;EAEdoP,EAAAA,MAAM,EAAE;EAAE,YAAM,IAAR;EAAcJ,IAAAA,YAAY,EAAE,IAA5B;EAAkCC,IAAAA,WAAW,EAAE,IAA/C;EAAqDN,IAAAA,UAAU,EAAE,IAAjE;EAAuEC,IAAAA,OAAO,EAAE;EAAhF;EAFM,CAAhB;AAIApU,WAAO,CAAC6U,KAAR,GAAgBr0B,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkBuY,SAAO,CAAC4U,MAA1B,EAAkC;EAAEF,EAAAA,WAAW,EAAE,IAAf;EAAqB3b,EAAAA,KAAK,EAAE,IAA5B;EAAkCD,EAAAA,KAAK,EAAE,IAAzC;EAA+C6b,EAAAA,UAAU,EAAE;EAA3D,CAAlC,CAAhB;;;EAGA,aAAiB,GAAG,kBAAA,CAAS9uB,OAAT,EAAkB;EACpCA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB,CADoC;;EAGpC,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;EAC/BA,IAAAA,OAAO,GAAGma,SAAO,CAACna,OAAD,CAAP,IAAoB,EAA9B;EACD,GALmC;;;EAOpCA,EAAAA,OAAO,GAAGrF,MAAM,CAACiH,MAAP,CAAc,EAAd,EAAkB6sB,QAAlB,EAA4BzuB,OAA5B,CAAV,CAPoC;;EASpC,OAAK+qB,OAAL;EAEA,MAAIkB,QAAQ,GAAG,KAAKA,QAAL,EAAf,CAXoC;;EAcpC,MAAIjsB,OAAO,QAAX,EAAkB;EAChB,SAAKxE,WAAL;EACD,GAhBmC;;;EAmBpC,MAAIwE,OAAO,CAACU,UAAZ,EAAwB;EACtBwD,IAAAA,QAAO,CAACxD,UAAR,CAAmB,IAAnB;EACD,GArBmC;;;EAwBpC,MAAIV,OAAO,CAACtF,OAAZ,EAAqB;EACnBwJ,IAAAA,QAAO,CAACxJ,OAAR,CAAgBuxB,QAAhB;EACD,GA1BmC;;;EA6BpC,MAAIjsB,OAAO,CAACY,WAAZ,EAAyB;EACvBsD,IAAAA,QAAO,CAACtD,WAAR,CAAoBqrB,QAApB;EACD,GA/BmC;;;EAkCpC,MAAIjsB,OAAO,CAAC0uB,KAAZ,EAAmB;EACjB,SAAKF,MAAL,CAAY,oBAAZ;EACD,GApCmC;;;EAuCpC,MAAIxuB,OAAO,CAACS,QAAZ,EAAsB;EACpB,SAAKA,QAAL,GAAgBwuB,KAAhB,GADoB;EAGrB,GA1CmC;;;EA4CpC,MAAIjvB,OAAO,CAACc,aAAZ,EAA2B;EACzBoD,IAAAA,QAAO,CAACpD,aAAR,CAAsB,IAAtB;EACD,GA9CmC;;;;EAmDpC,MAAId,OAAO,CAACkvB,WAAR,IAAuBlvB,OAAO,CAAC2uB,YAAnC,EAAiD;EAC/C,SAAKA,YAAL,GAAoBQ,MAApB;EACD,GArDmC;;;EAwDpC,MAAInvB,OAAO,CAAC4uB,WAAZ,EAAyB;EACvB,SAAKA,WAAL,GAAmBQ,MAAnB;EACD,GA1DmC;;;EA4DpC,MAAIpvB,OAAO,CAACsuB,UAAR,IAAsBtuB,OAAO,CAACmuB,MAAlC,EAA0C;EACxCjqB,IAAAA,QAAO,CAACoqB,UAAR,CAAmBrC,QAAnB;EACD,GA9DmC;;;EAiEpC,MAAIjsB,OAAO,CAACuuB,OAAZ,EAAqB;EACnBrqB,IAAAA,QAAO,CAACqqB,OAAR,CAAgB,IAAhB;EACD,GAnEmC;;;;EAwEpC,MAAIvuB,OAAO,CAACqvB,UAAR,IAAsBrvB,OAAO,CAAC6uB,WAAlC,EAA+C;EAC7C,SAAKA,WAAL,GAAmBI,KAAnB;EACD,GA1EmC;;;EA4EpC,MAAIjvB,OAAO,CAACkT,KAAZ,EAAmB;EACjB,SAAKA,KAAL,GAAarT,YAAb;EACD,GA9EmC;;;EAgFpC,MAAIG,OAAO,CAACiT,KAAR,IAAiBjT,OAAO,CAACkpB,OAA7B,EAAsC;EACpC,SAAKjW,KAAL,GAAa9T,UAAb;EACD,GAlFmC;;;EAoFpC,MAAIa,OAAO,CAAC8uB,UAAZ,EAAwB;EACtB,SAAKN,MAAL,CAAY,YAAZ;EACD;;EAED,SAAO,IAAP;EACD,CAzFD;;;;;;;EC/BA;;;EAGA3xB,EAAAA,eAAA,GAAkB,UAASa,GAAT,EAAc;;EAE9B,QAAI,CAACA,GAAL,EAAU;EACR,UAAIkJ,MAAM,GAAG,KAAKA,MAAL,EAAb;EACA,aAAOA,MAAM,CAAC0oB,OAAP,CAAe,IAAf,CAAP;EACD,KAL6B;;;EAO9B,QAAIxnB,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;EACA,QAAIoN,OAAO,GAAG,EAAd;EACA,SAAK1E,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIw1B,OAAO,GAAGx1B,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,CAAd,CADqB;;EAGrB,UAAIynB,OAAO,CAACz2B,MAAR,KAAmB,CAAvB,EAA0B;EACxBgS,QAAAA,OAAO,CAACtG,IAAR,CAAazK,CAAb;EACA;EACD,OANoB;;;EAQrB,UAAIyT,KAAK,GAAGzT,CAAZ;EACAw1B,MAAAA,OAAO,CAAC10B,OAAR,CAAgB,UAAAuB,KAAK,EAAI;EACvB,YAAIozB,KAAK,GAAGhiB,KAAK,CAAC8hB,OAAN,CAAclzB,KAAd,CAAZ,CADuB;;EAGvB,YAAIozB,KAAK,CAACrvB,MAAV,EAAkB;EAChB2K,UAAAA,OAAO,CAACtG,IAAR,CAAagrB,KAAK,CAACrvB,MAAnB;EACD;;EACD,YAAIqvB,KAAK,CAAC/pB,KAAV,EAAiB;EACfqF,UAAAA,OAAO,CAACtG,IAAR,CAAagrB,KAAK,CAAC/pB,KAAnB;EACD,SARsB;;;EAUvB+H,QAAAA,KAAK,GAAGgiB,KAAK,CAACnzB,KAAd;EACD,OAXD,EATqB;;EAsBrB,UAAImR,KAAJ,EAAW;EACT1C,QAAAA,OAAO,CAACtG,IAAR,CAAagJ,KAAb;EACD;EACF,KAzBD;EA0BA,WAAO,KAAK9I,SAAL,CAAeoG,OAAf,CAAP;EACD,GApCD;;;;;;EAyCAjO,EAAAA,kBAAA,GAAqB,UAASa,GAAT,EAAc;;EAEjC,QAAI,CAACA,GAAL,EAAU;EACR,UAAIkJ,MAAM,GAAG,KAAKA,MAAL,EAAb;EACA,aAAOA,MAAM,CAAC6oB,UAAP,CAAkB,IAAlB,CAAP;EACD,KALgC;;;EAOjC,QAAI3nB,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;EACA,QAAIoN,OAAO,GAAG,EAAd;EACA,SAAK1E,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIw1B,OAAO,GAAGx1B,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,CAAd,CADqB;;EAGrB,UAAIynB,OAAO,CAACz2B,MAAR,KAAmB,CAAvB,EAA0B;EACxBgS,QAAAA,OAAO,CAACtG,IAAR,CAAazK,CAAb;EACA;EACD,OANoB;;;EAQrB,UAAIyT,KAAK,GAAGzT,CAAZ;EACAw1B,MAAAA,OAAO,CAAC10B,OAAR,CAAgB,UAAAuB,KAAK,EAAI;EACvB,YAAIozB,KAAK,GAAGhiB,KAAK,CAAC8hB,OAAN,CAAclzB,KAAd,CAAZ,CADuB;;EAGvB,YAAIozB,KAAK,CAACrvB,MAAN,IAAgBqvB,KAAK,CAAC/pB,KAA1B,EAAiC;;EAE/B+pB,UAAAA,KAAK,CAACrvB,MAAN,CAAarH,MAAb,IAAuB02B,KAAK,CAAC/pB,KAAN,CAAY3M,MAAnC;EACAgS,UAAAA,OAAO,CAACtG,IAAR,CAAagrB,KAAK,CAACrvB,MAAnB;EACD,SAJD,MAIO,IAAIqvB,KAAK,CAAC/pB,KAAV,EAAiB;EACtBqF,UAAAA,OAAO,CAACtG,IAAR,CAAagrB,KAAK,CAAC/pB,KAAnB;EACD,SATsB;;;EAWvB+H,QAAAA,KAAK,GAAGgiB,KAAK,CAACnzB,KAAd;EACD,OAZD,EATqB;;EAuBrB,UAAImR,KAAJ,EAAW;EACT1C,QAAAA,OAAO,CAACtG,IAAR,CAAagJ,KAAb;EACD;EACF,KA1BD;EA2BA,WAAO,KAAK9I,SAAL,CAAeoG,OAAf,CAAP;EACD,GArCD;;EAsCAjO,EAAAA,aAAA,GAAgBA,OAAO,CAAC4yB,UAAxB;;;;EAGA5yB,EAAAA,mBAAA,GAAsB,UAASa,GAAT,EAAc;;EAElC,QAAI,CAACA,GAAL,EAAU;EACR,UAAIkJ,MAAM,GAAG,KAAKA,MAAL,EAAb;EACA,aAAOA,MAAM,CAAC8oB,WAAP,CAAmB,IAAnB,CAAP;EACD,KALiC;;;EAOlC,QAAI5nB,IAAI,GAAGgiB,QAAW,CAACpsB,GAAD,CAAtB;EACA,QAAIoN,OAAO,GAAG,EAAd;EACA,SAAK1E,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIw1B,OAAO,GAAGx1B,CAAC,CAAC0L,KAAF,CAAQqC,IAAR,CAAd,CADqB;;EAGrB,UAAIynB,OAAO,CAACz2B,MAAR,KAAmB,CAAvB,EAA0B;EACxBgS,QAAAA,OAAO,CAACtG,IAAR,CAAazK,CAAb;EACA;EACD,OANoB;;;EAQrB,UAAIyT,KAAK,GAAGzT,CAAZ;EACAw1B,MAAAA,OAAO,CAAC10B,OAAR,CAAgB,UAAAuB,KAAK,EAAI;EACvB,YAAIozB,KAAK,GAAGhiB,KAAK,CAAC8hB,OAAN,CAAclzB,KAAd,CAAZ,CADuB;;EAGvB,YAAIozB,KAAK,CAACrvB,MAAV,EAAkB;EAChB2K,UAAAA,OAAO,CAACtG,IAAR,CAAagrB,KAAK,CAACrvB,MAAnB;EACD,SALsB;;;EAOvB,YAAIqvB,KAAK,CAAC/pB,KAAN,IAAe+pB,KAAK,CAACnzB,KAAzB,EAAgC;EAC9BmzB,UAAAA,KAAK,CAAC/pB,KAAN,CAAY3M,MAAZ,IAAsB02B,KAAK,CAACnzB,KAAN,CAAYvD,MAAlC;EACD,SATsB;;;EAWvB0U,QAAAA,KAAK,GAAGgiB,KAAK,CAAC/pB,KAAd;EACD,OAZD,EATqB;;EAuBrB,UAAI+H,KAAJ,EAAW;EACT1C,QAAAA,OAAO,CAACtG,IAAR,CAAagJ,KAAb;EACD;EACF,KA1BD;EA2BA,WAAO,KAAK9I,SAAL,CAAeoG,OAAf,CAAP;EACD,GArCD;;;;EAwCAjO,EAAAA,eAAA,GAAkB,UAASiL,IAAT,EAAe9H,OAAf,EAAwB;EACxC8H,IAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;EACA9H,IAAAA,OAAO,GAAGA,OAAO,IAAI;EAAEvH,MAAAA,IAAI,EAAE;EAAR,KAArB;EACA,QAAI6N,GAAG,GAAG,IAAV;EACA,QAAI1L,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYkN,IAAZ,CAAX,CAJwC;;EAMxClN,IAAAA,IAAI,CAACC,OAAL,CAAa,UAAAnB,CAAC,EAAI;EAChB4M,MAAAA,GAAG,GAAGA,GAAG,CAACgpB,OAAJ,CAAY51B,CAAZ,CAAN;EACD,KAFD,EANwC;;EAUxC4M,IAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpB,WAAK,IAAIrB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,IAAI,CAAC9B,MAAzB,EAAiCJ,CAAC,IAAI,CAAtC,EAAyC;EACvC,YAAIqB,CAAC,CAACiwB,GAAF,CAAMpvB,IAAI,CAAClC,CAAD,CAAV,CAAJ,EAAoB;EAClBqB,UAAAA,CAAC,CAAC41B,OAAF,GAAY7nB,IAAI,CAAClN,IAAI,CAAClC,CAAD,CAAL,CAAhB;EACA;EACD;EACF;EACF,KAPD;EAQA,WAAO4N,GAAG,CAACF,IAAJ,CAASxB,GAAT,CAAa,UAAA7K,CAAC,EAAI;EACvB,UAAI6N,GAAG,GAAG7N,CAAC,CAAC8N,IAAF,CAAO7H,OAAP,CAAV;EACA4H,MAAAA,GAAG,CAAC+nB,OAAJ,GAAc51B,CAAC,CAAC41B,OAAF,IAAa,IAA3B;EACA,aAAO/nB,GAAP;EACD,KAJM,CAAP;EAKD,GAvBD;;;;;;;;EC/HA,IAAMgoB,QAAQ,GAAG,SAAXA,QAAW,CAAStpB,GAAT,EAAc0iB,EAAd,EAAkB;EACjC,MAAIjqB,KAAK,GAAGuH,GAAG,CAACvH,KAAhB;EACAuH,EAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpBA,IAAAA,CAAC,CAACqK,KAAF,GAAUvJ,OAAV,CAAkB,UAAAV,CAAC;EAAA,aAAIA,CAAC,CAAC6uB,EAAD,CAAD,CAAMjqB,KAAN,CAAJ;EAAA,KAAnB;EACD,GAFD;EAGA,SAAOuH,GAAP;EACD,CAND;;;;EASA,eAAmB,GAAG,oBAAA,GAAW;EAC/B,SAAOspB,QAAQ,CAAC,IAAD,EAAO,aAAP,CAAf;EACD,CAFD;;;;EAKA,eAAmB,GAAG,oBAAA,GAAW;EAC/B,SAAOA,QAAQ,CAAC,IAAD,EAAO,aAAP,CAAf;EACD,CAFD;;;;EAKA,eAAmB,GAAG,oBAAA,GAAW;EAC/B,OAAKxxB,GAAL,CAAS,WAAT;EACA,SAAOwxB,QAAQ,CAAC,IAAD,EAAO,aAAP,CAAf;EACD,CAHD;;;;EAKA,eAAmB,GAAG,oBAAA,GAAW;EAC/B,OAAKxpB,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;;EAErB,QAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACAA,IAAAA,KAAK,CAACvJ,OAAN,CAAc,UAACV,CAAD,EAAIzB,CAAJ,EAAU;EACtB,UAAIA,CAAC,KAAK,CAAV,EAAa;EACXyB,QAAAA,CAAC,CAAC01B,WAAF;EACD;;EACD,UAAIn3B,CAAC,KAAK0L,KAAK,CAACtL,MAAN,GAAe,CAAzB,EAA4B;EAC1BqB,QAAAA,CAAC,CAACgC,IAAF,GAAS,EAAT;EACD;EACF,KAPD;EAQD,GAXD,EAD+B;;EAc/B,SAAO,IAAP;EACD,CAfD;;;;;;;;;;ECxBA;EACAU,EAAAA,WAAA,GAAc,UAASrE,GAAT,EAAc;EAC1B,QAAIA,GAAG,KAAKwF,SAAZ,EAAuB;EACrB,aAAO,KAAKoI,IAAL,CAAU,CAAV,EAAahC,KAAb,CAAmB,CAAnB,EAAsBlI,GAA7B;EACD;;EACD,SAAKkK,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIqH,IAAI,GAAGrH,CAAC,CAACqK,KAAF,CAAQ,CAAR,CAAX;EACAhD,MAAAA,IAAI,CAAClF,GAAL,GAAW1D,GAAX;EACD,KAHD;EAIA,WAAO,IAAP;EACD,GATD;;;;EAYAqE,EAAAA,YAAA,GAAe,UAASrE,GAAT,EAAc;;EAE3B,QAAIA,GAAG,KAAKwF,SAAZ,EAAuB;EACrB,aAAO,KAAKoI,IAAL,CAAUxB,GAAV,CAAc,UAAA7K,CAAC,EAAI;EACxB,YAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACA,YAAIhD,IAAI,GAAGgD,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAhB;EACA,eAAOsI,IAAI,CAACjF,IAAZ;EACD,OAJM,CAAP;EAKD,KAR0B;;;EAU3B,SAAKiK,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACA,UAAIhD,IAAI,GAAGgD,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAhB;EACAsI,MAAAA,IAAI,CAACjF,IAAL,GAAY3D,GAAZ;EACD,KAJD;EAKA,WAAO,IAAP;EACD,GAhBD;;;;EAmBAqE,EAAAA,YAAA,GAAe,YAAW;EACxB,SAAKuJ,IAAL,GAAY,KAAKA,IAAL,CAAUxB,GAAV,CAAc,UAAA7K,CAAC;EAAA,aAAIA,CAAC,CAAC0B,IAAF,EAAJ;EAAA,KAAf,CAAZ;EACA,WAAO,IAAP;EACD,GAHD;;;;EAMAoB,EAAAA,iBAAA,GAAoB,YAAW;EAC7B,SAAKuJ,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ,CADqB;;EAGrBA,MAAAA,KAAK,CAACvJ,OAAN,CAAc,UAACV,CAAD,EAAIzB,CAAJ,EAAU;EACtB,YAAIA,CAAC,KAAK,CAAV,EAAa;EACXyB,UAAAA,CAAC,CAAC+B,GAAF,GAAQ,EAAR;EACD;;EACD,YAAIkI,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAAT,EAAkB;EAChByB,UAAAA,CAAC,CAACgC,IAAF,GAAS,GAAT;EACD;EACF,OAPD;EAQD,KAXD;EAYA,WAAO,IAAP;EACD,GAdD;;;;EAiBAU,EAAAA,mBAAA,GAAsB,YAAW;EAC/B,QAAMsQ,SAAS,GAAG,SAAlB;EACA,SAAK/G,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ,CADqB;;EAGrBA,MAAAA,KAAK,CAACvJ,OAAN,CAAc,UAAAV,CAAC,EAAI;EACjB,YAAIgT,SAAS,CAAC9R,IAAV,CAAelB,CAAC,CAACgC,IAAjB,CAAJ,EAA4B;EAC1BhC,UAAAA,CAAC,CAACgC,IAAF,GAAS,GAAT;EACD;EACF,OAJD;EAKD,KARD;EASA,WAAO,IAAP;EACD,GAZD;;EAaAU,EAAAA,mBAAA,GAAsBA,OAAO,CAACizB,WAA9B;;;EAGAjzB,EAAAA,oBAAA,GAAuB,UAASiB,KAAT,EAAgBC,GAAhB,EAAqB;EAC1CD,IAAAA,KAAK,GAAGA,KAAK,QAAb;EACAC,IAAAA,GAAG,GAAGA,GAAG,QAAT;EACA,SAAKqI,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACAA,MAAAA,KAAK,CAAC,CAAD,CAAL,CAASlI,GAAT,GAAe4B,KAAK,GAAGsG,KAAK,CAAC,CAAD,CAAL,CAASlI,GAAhC;EACA,UAAIyE,IAAI,GAAGyD,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAhB;EACA6H,MAAAA,IAAI,CAACxE,IAAL,GAAY4B,GAAG,GAAG4C,IAAI,CAACxE,IAAvB;EACD,KALD;EAMA,WAAO,IAAP;EACD,GAVD;;EAWAU,EAAAA,mBAAA,GAAsBA,OAAO,CAACkzB,YAA9B;;;EAGAlzB,EAAAA,qBAAA,GAAwB,UAASiB,KAAT,EAAgBC,GAAhB,EAAqB;EAC3CD,IAAAA,KAAK,GAAGA,KAAK,OAAb;EACAC,IAAAA,GAAG,GAAGA,GAAG,OAAT;EACA,SAAKqI,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACAA,MAAAA,KAAK,CAAC,CAAD,CAAL,CAASlI,GAAT,GAAe4B,KAAK,GAAGsG,KAAK,CAAC,CAAD,CAAL,CAASlI,GAAhC;EACA,UAAIyE,IAAI,GAAGyD,KAAK,CAACA,KAAK,CAACtL,MAAN,GAAe,CAAhB,CAAhB;EACA6H,MAAAA,IAAI,CAACxE,IAAL,GAAY4B,GAAG,GAAG4C,IAAI,CAACxE,IAAvB;EACD,KALD;EAMA,WAAO,IAAP;EACD,GAVD;;;;;;;;;;;;ECrFA;EACA,QAAY,GAAG,aAAA,CAAS3D,GAAT,EAAc;;EAE3B,OAAKuyB,OAAL,GAF2B;;EAI3B,MAAIjlB,IAAI,GAAG,KAAKM,IAAL,CAAU,CAAV,CAAX;EACA,MAAIjG,MAAM,GAAG2F,IAAI,CAAChN,MAAlB;EACA,MAAIk3B,OAAO,GAAG,EAAd;;EACA,OAAK,IAAIt3B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK0N,IAAL,CAAUtN,MAA9B,EAAsCJ,CAAC,EAAvC,EAA2C;EACzC,QAAMqB,CAAC,GAAG,KAAKqM,IAAL,CAAU1N,CAAV,CAAV;EACAs3B,IAAAA,OAAO,CAACj2B,CAAC,CAAC+D,KAAH,CAAP,GAAmB,IAAnB;EACA,QAAIsD,IAAI,GAAG0E,IAAI,CAACR,QAAL,EAAX,CAHyC;;EAKzC,QAAI9M,GAAJ,EAAS;EACP4I,MAAAA,IAAI,CAACjF,IAAL,IAAa3D,GAAb;EACD,KAPwC;;;EASzC4I,IAAAA,IAAI,CAAC4C,IAAL,GAAYjK,CAAC,CAAC+D,KAAd,CATyC;;EAWzC/D,IAAAA,CAAC,CAACqK,KAAF,CAAQ,CAAR,EAAWL,IAAX,GAAkB3C,IAAI,CAACxD,EAAvB;EACAkI,IAAAA,IAAI,CAAChN,MAAL,IAAeiB,CAAC,CAACjB,MAAjB;EACD,GApB0B;;;;EAwB3B,MAAIm3B,QAAQ,GAAGnqB,IAAI,CAAChN,MAAL,GAAcqH,MAA7B;EACA,OAAKwG,OAAL,GAAe9L,OAAf,CAAuB,UAAAyL,GAAG,EAAI;;EAE5BA,IAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpB,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;;EACA,WAAK,IAAI1L,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,EAAC,EAAnC,EAAuC;EACrC,YAAI0L,KAAK,CAAC1L,EAAD,CAAL,CAASkF,EAAT,KAAgBkI,IAAI,CAAChI,KAAzB,EAAgC;EAC9B/D,UAAAA,CAAC,CAACjB,MAAF,IAAYm3B,QAAZ;EACA;EACD;EACF;EACF,KARD,EAF4B;;EAY5B3pB,IAAAA,GAAG,CAACF,IAAJ,GAAWE,GAAG,CAACF,IAAJ,CAASrB,MAAT,CAAgB,UAAAhL,CAAC;EAAA,aAAIi2B,OAAO,CAACj2B,CAAC,CAAC+D,KAAH,CAAP,KAAqB,IAAzB;EAAA,KAAjB,CAAX;EACD,GAbD,EAzB2B;;EAwC3B,SAAO,KAAK4G,SAAL,CAAe,CAACoB,IAAD,CAAf,CAAP;EACD,CAzCD;;;;;;ECDA,IAAMoqB,SAAS,GAAG,kBAAlB;;;;;EAMA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAASv2B,CAAT,EAAYw2B,MAAZ,EAAoB;EACzC,MAAI,CAACx2B,CAAC,CAACwC,KAAP,EAAc;EACZ;EACD;;EACD,MAAIgI,KAAK,GAAGxK,CAAC,CAACqyB,QAAF,EAAZ,CAJyC;;EAMzC,OAAK,IAAIvzB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAAN,GAAe,CAAnC,EAAsCJ,CAAC,EAAvC,EAA2C;EACzC,QAAMyB,CAAC,GAAGiK,KAAK,CAAC1L,CAAD,CAAf;;EACA,QAAIw3B,SAAS,CAAC70B,IAAV,CAAelB,CAAC,CAACgC,IAAjB,CAAJ,EAA4B;EAC1B;EACD;EACF,GAXwC;;;EAczCiI,EAAAA,KAAK,CAACvJ,OAAN,CAAc,UAAAV,CAAC,EAAI;EACjBA,IAAAA,CAAC,CAACoD,QAAF,GAAapD,CAAC,CAACoB,KAAf;EACD,GAFD,EAdyC;;EAkBzC6I,EAAAA,KAAK,CAAC,CAAD,CAAL,CAAS3L,IAAT,IAAiB23B,MAAjB,CAlByC;;EAoBzChsB,EAAAA,KAAK,CAACuD,KAAN,CAAY,CAAZ,EAAe9M,OAAf,CAAuB,UAAAV,CAAC,EAAI;EAC1BA,IAAAA,CAAC,CAAC1B,IAAF,GAAS,EAAT;EACD,GAFD;;EAGA,OAAK,IAAIC,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG0L,KAAK,CAACtL,MAAN,GAAe,CAAnC,EAAsCJ,EAAC,EAAvC,EAA2C;EACzC,QAAMyB,EAAC,GAAGiK,KAAK,CAAC1L,EAAD,CAAf;EACAyB,IAAAA,EAAC,CAACgC,IAAF,GAAShC,EAAC,CAACgC,IAAF,CAAOR,OAAP,CAAe,GAAf,EAAoB,EAApB,CAAT;EACD;EACF,CA3BD;;;;EA8BA,YAAgB,GAAG,iBAAA,GAAW;EAC5B,MAAI2K,GAAG,GAAG,KAAKyjB,GAAL,CAAS,iBAAT,CAAV,CAD4B;;EAG5B,MAAInwB,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,mBAAV,CAAR;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,QAAd,CAJ4B;;EAM5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,8BAAV,CAAJ;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,QAAd,CAP4B;;EAS5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,wBAAV,CAAJ;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,OAAd,CAV4B;;EAY5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,YAAV,CAAJ;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,OAAd,CAb4B;;EAe5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,eAAV,CAAJ;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,OAAd,CAhB4B;;EAkB5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,0DAAV,CAAJ;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,QAAd,CAnB4B;;EAqB5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,kBAAV,CAAJ;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,QAAd,CAtB4B;;EAwB5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,2BAAV,CAAJ;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,QAAd,CAzB4B;;EA2B5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,MAAV,CAAJ;EACA0qB,EAAAA,cAAc,CAACv2B,CAAD,OAAd,CA5B4B;;EA8B5BA,EAAAA,CAAC,GAAG0M,GAAG,CAACb,KAAJ,CAAU,UAAV,CAAJ;EACA,SAAO,IAAP;EACD,CAhCD;;;;;;ECpCA,aAAc,GAAG9K,MAAM,CAACiH,MAAP,CACf,EADe,EAEfC,UAFe,EAGfC,YAHe,EAIfC,QAJe,EAKfC,MALe,EAMfC,QANe,EAOfiG,SAPe,EASfqgB,UATe,EAUf8H,SAVe,EAYfC,OAZe,EAafC,OAbe,EAcfC,MAde,EAefC,SAfe,EAiBfC,OAjBe,EAkBfC,YAlBe,EAmBfC,QAnBe,EAoBfC,OApBe,EAqBfC,aArBe,EAsBfC,OAtBe,EAuBfC,WAvBe,CAAjB;;ECAA,IAAI9sB,SAAO,GAAG,EAAd;;EAGA,IAAM1B,GAAG,GAAG,CACV,CAAC,OAAD,EAAU,GAAV,CADU,EAEV,CAAC,YAAD,EAAe,cAAf,CAFU,EAGV,CAAC,YAAD,EAAe,YAAf,CAHU,EAIV,CAAC,UAAD,EAAa,UAAb,CAJU,EAKV,CAAC,QAAD,EAAW,QAAX,CALU,EAMV,CAAC,OAAD,EAAU,QAAV,CANU,EAOV,CAAC,WAAD,EAAc,WAAd,CAPU,EAQV,CAAC,YAAD,EAAe,YAAf,CARU,EASV,CAAC,MAAD,EAAS,MAAT,CATU,EAUV,CAAC,SAAD,EAAY,SAAZ,CAVU,EAWV,CAAC,UAAD,EAAa,UAAb,CAXU,EAYV,CAAC,OAAD,EAAU,QAAV,CAZU,EAaV,CAAC,cAAD,EAAiB,cAAjB,CAbU,EAcV,CAAC,cAAD,EAAiB,cAAjB,CAdU,CAAZ;EAgBAA,GAAG,CAAC3H,OAAJ,CAAY,UAAA7B,CAAC,EAAI;EACfkL,EAAAA,SAAO,CAAClL,CAAC,CAAC,CAAD,CAAF,CAAP,GAAgB,UAASa,CAAT,EAAY;EAC1B,QAAID,CAAC,GAAG,KAAK6L,KAAL,CAAWzM,CAAC,CAAC,CAAD,CAAZ,CAAR;;EACA,QAAI,OAAOa,CAAP,KAAa,QAAjB,EAA2B;EACzBD,MAAAA,CAAC,GAAGA,CAAC,CAAC0K,GAAF,CAAMzK,CAAN,CAAJ;EACD;;EACD,WAAOD,CAAP;EACD,GAND;EAOD,CARD;;AAUAsK,WAAO,CAAC+sB,MAAR,GAAiB/sB,SAAO,CAACwqB,KAAzB;AACAxqB,WAAO,CAACgtB,UAAR,GAAqBhtB,SAAO,CAACitB,UAA7B;AACAjtB,WAAO,CAACoE,KAAR,GAAgBpE,SAAO,CAACE,KAAxB;;;AAGAF,WAAO,CAACktB,YAAR,GAAuB,UAASv3B,CAAT,EAAY;EACjC,MAAID,CAAC,GAAG,KAAK61B,UAAL,CAAgB,WAAhB,CAAR;EACA71B,EAAAA,CAAC,GAAGA,CAAC,CAAC6L,KAAF,CAAQ,eAAR,CAAJ;;EACA,MAAI,OAAO5L,CAAP,KAAa,QAAjB,EAA2B;EACzBD,IAAAA,CAAC,GAAGA,CAAC,CAAC0K,GAAF,CAAMzK,CAAN,CAAJ;EACD;;EACD,SAAOD,CAAP;EACD,CAPD;;;;AAUAsK,WAAO,CAACmtB,MAAR,GAAiB,UAASx3B,CAAT,EAAY;;EAE3B,MAAIqlB,IAAI,GAAG,KAAKzZ,KAAL,CAAW,yCAAX,CAAX,CAF2B;;EAI3B,MAAI7L,CAAC,GAAG,KAAKmwB,GAAL,CAAS7K,IAAT,EAAeuQ,UAAf,CAA0B,WAA1B,CAAR,CAJ2B;;EAM3B71B,EAAAA,CAAC,GAAGA,CAAC,CAAC8M,MAAF,CAASwY,IAAT,CAAJ;EACAtlB,EAAAA,CAAC,CAAC0H,IAAF,CAAO,OAAP;EACA1H,EAAAA,CAAC,GAAGA,CAAC,CAAC6L,KAAF,CAAQ,SAAR,CAAJ;;EACA,MAAI,OAAO5L,CAAP,KAAa,QAAjB,EAA2B;EACzBD,IAAAA,CAAC,GAAGA,CAAC,CAAC0K,GAAF,CAAMzK,CAAN,CAAJ;EACD;;EACD,SAAOD,CAAP;EACD,CAbD;;;;AAgBAsK,WAAO,CAACotB,aAAR,GAAwB,UAASz3B,CAAT,EAAY;EAClC,MAAID,CAAC,GAAG,KAAK23B,OAAL,EAAR;EACA33B,EAAAA,CAAC,GAAGA,CAAC,CAAC6L,KAAF,CAAQ,gBAAR,CAAJ;;EACA,MAAI,OAAO5L,CAAP,KAAa,QAAjB,EAA2B;EACzBD,IAAAA,CAAC,GAAGA,CAAC,CAAC0K,GAAF,CAAMzK,CAAN,CAAJ;EACD;;EACD,SAAOD,CAAP;EACD,CAPD;;;AAUAsK,WAAO,CAACstB,QAAR,GAAmB,UAAS33B,CAAT,EAAY;EAC7B,MAAII,CAAC,GAAG,KAAKs3B,OAAL,EAAR,CAD6B;;EAG7B,MAAIE,GAAG,GAAGx3B,CAAC,CAACy3B,MAAF,EAAV;EACAD,EAAAA,GAAG,GAAGA,GAAG,CAAC/qB,MAAJ,CAAWzM,CAAC,CAACo3B,MAAF,EAAX,CAAN;EACAI,EAAAA,GAAG,GAAGA,GAAG,CAAC/qB,MAAJ,CAAWzM,CAAC,CAACq3B,aAAF,EAAX,CAAN;EACA,MAAIK,MAAM,GAAG,CAAC,SAAD,EAAY,KAAZ,EAAmB,OAAnB,EAA4B,QAA5B,EAAsC,SAAtC,EAAiD,QAAjD,EAA2D,QAA3D,CAAb;EACAF,EAAAA,GAAG,GAAGA,GAAG,CAAC1H,GAAJ,CAAQ4H,MAAR,CAAN,CAP6B;;EAS7BF,EAAAA,GAAG,CAACnwB,IAAJ,CAAS,UAAT,EAT6B;;EAW7B,MAAI,OAAOzH,CAAP,KAAa,QAAjB,EAA2B;EACzB43B,IAAAA,GAAG,GAAGA,GAAG,CAACntB,GAAJ,CAAQzK,CAAR,CAAN;EACD;;EACD,SAAO43B,GAAP;EACD,CAfD;;;AAiBAvtB,WAAO,CAAC0tB,MAAR,GAAiB1tB,SAAO,CAACstB,QAAzB;AACAttB,WAAO,CAAC2tB,MAAR,GAAiB3tB,SAAO,CAACstB,QAAzB;;;AAGAttB,WAAO,CAACwI,SAAR,GAAoB,YAAW;EAC7B,SAAO,KAAK1E,GAAL,EAAP;EACD,CAFD;;EAIA,WAAc,GAAG9D,SAAjB;;EC/FA;EACA,IAAM4tB,WAAW,GAAG,SAAdA,WAAc,CAAS1tB,KAAT,EAAgBjK,CAAhB,EAAmB4E,KAAnB,EAA0B;EAC5C,MAAIwV,GAAG,GAAGxV,KAAK,CAACuJ,KAAhB,CAD4C;;EAG5C,MAAIlD,GAAG,GAAGhB,KAAK,CAACjK,CAAD,CAAL,CAASyB,OAAT,GAAmB,GAAnB,GAAyBwI,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAayB,OAAhD;;EACA,MAAI2Y,GAAG,CAACnP,GAAD,CAAH,KAAapH,SAAb,IAA0BuW,GAAG,CAACtW,cAAJ,CAAmBmH,GAAnB,MAA4B,IAA1D,EAAgE;EAC9DhB,IAAAA,KAAK,CAACjK,CAAD,CAAL,CAASiE,GAAT,CAAamW,GAAG,CAACnP,GAAD,CAAhB,EAAuB,aAAvB,EAAsCrG,KAAtC;EACAqF,IAAAA,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAaiE,GAAb,CAAiBmW,GAAG,CAACnP,GAAD,CAApB,EAA2B,aAA3B,EAA0CrG,KAA1C;EACA,WAAO,CAAP;EACD,GAR2C;;;EAU5C,MAAI5E,CAAC,GAAG,CAAJ,GAAQiK,KAAK,CAACtL,MAAlB,EAA0B;EACxBsM,IAAAA,GAAG,IAAI,MAAMhB,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAayB,OAA1B;;EACA,QAAI2Y,GAAG,CAACnP,GAAD,CAAH,KAAapH,SAAb,IAA0BuW,GAAG,CAACtW,cAAJ,CAAmBmH,GAAnB,MAA4B,IAA1D,EAAgE;EAC9DhB,MAAAA,KAAK,CAACjK,CAAD,CAAL,CAASiE,GAAT,CAAamW,GAAG,CAACnP,GAAD,CAAhB,EAAuB,eAAvB,EAAwCrG,KAAxC;EACAqF,MAAAA,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAaiE,GAAb,CAAiBmW,GAAG,CAACnP,GAAD,CAApB,EAA2B,eAA3B,EAA4CrG,KAA5C;EACAqF,MAAAA,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAaiE,GAAb,CAAiBmW,GAAG,CAACnP,GAAD,CAApB,EAA2B,eAA3B,EAA4CrG,KAA5C;EACA,aAAO,CAAP;EACD;EACF,GAlB2C;;;EAoB5C,MAAI5E,CAAC,GAAG,CAAJ,GAAQiK,KAAK,CAACtL,MAAlB,EAA0B;EACxBsM,IAAAA,GAAG,IAAI,MAAMhB,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAayB,OAA1B;;EACA,QAAI2Y,GAAG,CAACnP,GAAD,CAAH,KAAapH,SAAb,IAA0BuW,GAAG,CAACtW,cAAJ,CAAmBmH,GAAnB,MAA4B,IAA1D,EAAgE;EAC9DhB,MAAAA,KAAK,CAACjK,CAAD,CAAL,CAASiE,GAAT,CAAamW,GAAG,CAACnP,GAAD,CAAhB,EAAuB,cAAvB,EAAuCrG,KAAvC;EACAqF,MAAAA,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAaiE,GAAb,CAAiBmW,GAAG,CAACnP,GAAD,CAApB,EAA2B,cAA3B,EAA2CrG,KAA3C;EACAqF,MAAAA,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAaiE,GAAb,CAAiBmW,GAAG,CAACnP,GAAD,CAApB,EAA2B,cAA3B,EAA2CrG,KAA3C;EACAqF,MAAAA,KAAK,CAACjK,CAAC,GAAG,CAAL,CAAL,CAAaiE,GAAb,CAAiBmW,GAAG,CAACnP,GAAD,CAApB,EAA2B,cAA3B,EAA2CrG,KAA3C;EACA,aAAO,CAAP;EACD;EACF;;EACD,SAAO,CAAP;EACD,CA/BD;;;;EAkCA,IAAMgzB,YAAY,GAAG,SAAfA,YAAe,CAAS3tB,KAAT,EAAgBrF,KAAhB,EAAuB;EAC1C,MAAIwV,GAAG,GAAGxV,KAAK,CAACuJ,KAAhB;EACA,MAAIoM,WAAW,GAAG3V,KAAK,CAAC2V,WAAxB,CAF0C;;;EAI1C,OAAK,IAAIva,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiK,KAAK,CAACtL,MAA1B,EAAkCqB,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAI3B,GAAG,GAAG4L,KAAK,CAACjK,CAAD,CAAL,CAASoB,KAAnB,CADwC;;EAGxC,QAAImZ,WAAW,CAAClc,GAAD,CAAX,KAAqB,IAArB,IAA6B2B,CAAC,GAAG,CAAJ,GAAQiK,KAAK,CAACtL,MAA/C,EAAuD;EACrD,UAAIk5B,UAAU,GAAGF,WAAW,CAAC1tB,KAAD,EAAQjK,CAAR,EAAW4E,KAAX,CAA5B;;EACA,UAAIizB,UAAU,GAAG,CAAjB,EAAoB;EAClB73B,QAAAA,CAAC,IAAI63B,UAAL,CADkB;;EAElB;EACD;EACF,KATuC;;;EAWxC,QAAIzd,GAAG,CAAC/b,GAAD,CAAH,KAAawF,SAAb,IAA0BuW,GAAG,CAACtW,cAAJ,CAAmBzF,GAAnB,MAA4B,IAA1D,EAAgE;EAC9D4L,MAAAA,KAAK,CAACjK,CAAD,CAAL,CAASiE,GAAT,CAAamW,GAAG,CAAC/b,GAAD,CAAhB,EAAuB,SAAvB,EAAkCuG,KAAlC;EACD,KAbuC;;;EAexC,QAAIvG,GAAG,KAAK4L,KAAK,CAACjK,CAAD,CAAL,CAASyB,OAAjB,IAA4B2Y,GAAG,CAACtW,cAAJ,CAAmBmG,KAAK,CAACjK,CAAD,CAAL,CAASyB,OAA5B,MAAyC,IAAzE,EAA+E;EAC7EwI,MAAAA,KAAK,CAACjK,CAAD,CAAL,CAASiE,GAAT,CAAamW,GAAG,CAACnQ,KAAK,CAACjK,CAAD,CAAL,CAASyB,OAAV,CAAhB,EAAoC,SAApC,EAA+CmD,KAA/C;EACD;EACF;;EACD,SAAOqF,KAAP;EACD,CAxBD;;EAyBA,cAAc,GAAG2tB,YAAjB;;EC5DA,IAAME,WAAW,GAAG,cAApB;EACA,IAAMh3B,kBAAgB,GAAG,gBAAzB;EAEA,IAAMi3B,aAAa,GAAG;EACpB14B,EAAAA,CAAC,EAAE,IADiB;EAEpB24B,EAAAA,CAAC,EAAE;EAFiB,CAAtB;;EAKA,IAAM/2B,WAAS,GAAG,SAAZA,SAAY,CAASgG,IAAT,EAAerC,KAAf,EAAsB;EACtC,MAAIvG,GAAG,GAAG4I,IAAI,CAACxF,OAAf,CADsC;;EAGtC,MAAIwF,IAAI,CAAC/C,IAAL,CAAUkC,OAAd,EAAuB;EACrB,WAAO,IAAP;EACD,GALqC;;;;;;EAUtC,MAAI/H,GAAG,CAACM,MAAJ,GAAa,CAAb,IAAkBiG,KAAK,CAACuJ,KAAN,CAAY9P,GAAZ,CAAtB,EAAwC;EACtC,WAAO,KAAP;EACD;;EACD,SAAO4I,IAAI,CAAChG,SAAL,EAAP;EACD,CAdD;;;EAiBA,IAAMg3B,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAShuB,KAAT,EAAgB1L,CAAhB,EAAmBqG,KAAnB,EAA0B;EACjD,MAAIqC,IAAI,GAAGgD,KAAK,CAAC1L,CAAD,CAAhB,CADiD;;;;;;EASjD,MAAIu5B,WAAW,CAAC52B,IAAZ,CAAiB+F,IAAI,CAAC3I,IAAtB,CAAJ,EAAiC;EAC/B,QAAI,CAACw5B,WAAW,CAAC52B,IAAZ,CAAiB+F,IAAI,CAAClF,GAAtB,CAAD,IAA+B,CAAC+1B,WAAW,CAAC52B,IAAZ,CAAiB+F,IAAI,CAACjF,IAAtB,CAAhC,IAA+DiF,IAAI,CAAC7F,KAAL,CAAWzC,MAAX,GAAoB,CAAvF,EAA0F;EACxF,UAAIu5B,OAAO,GAAGjxB,IAAI,CAAC7F,KAAL,CAAW6F,IAAI,CAAC7F,KAAL,CAAWzC,MAAX,GAAoB,CAA/B,CAAd,CADwF;;EAGxF,UAAIu5B,OAAO,KAAK,GAAhB,EAAqB;EACnBjxB,QAAAA,IAAI,CAAChD,GAAL,CAAS,CAAC,YAAD,EAAe,MAAf,CAAT,EAAiC,UAAjC,EAA6CW,KAA7C;EACA;EACD,OANuF;;;EAQxF,UAAIszB,OAAO,KAAK,GAAhB,EAAqB;EACnBjxB,QAAAA,IAAI,CAAChD,GAAL,CAAS,CAAC,QAAD,CAAT,EAAqB,SAArB,EAAgCW,KAAhC;EACD;EACF;EACF,GAtBgD;;;EAwBjD,MAAI3D,WAAS,CAACgG,IAAD,EAAOrC,KAAP,CAAb,EAA4B;EAC1BqC,IAAAA,IAAI,CAAChD,GAAL,CAAS,SAAT,EAAoB,cAApB,EAAoCW,KAApC;EACAqC,IAAAA,IAAI,CAAChD,GAAL,CAAS,MAAT,EAAiB,eAAjB,EAAkCW,KAAlC;EACD,GAHD,MAGO,IAAI,CAACmzB,aAAa,CAACj0B,cAAd,CAA6BmD,IAAI,CAAC3I,IAAlC,CAAD,IAA4CwC,kBAAgB,CAACI,IAAjB,CAAsB+F,IAAI,CAAC3I,IAA3B,CAAhD,EAAkF;EACvF2I,IAAAA,IAAI,CAAChD,GAAL,CAAS,SAAT,EAAoB,oBAApB,EAA0CW,KAA1C;EACAqC,IAAAA,IAAI,CAAChD,GAAL,CAAS,MAAT,EAAiB,kBAAjB,EAAqCW,KAArC;EACD;EACF,CA/BD;;EAgCA,oBAAc,GAAGqzB,gBAAjB;;ECzDA;;EAEA,cAAc,GAAG;EAEf,CAAC,qBAAD,EAAwB,aAAxB,CAFe;EAGf,CAAC,kCAAD,EAAqC,aAArC,CAHe;;EAMf,CAAC,gDAAD,EAAmD,CAAC,OAAD,EAAU,OAAV,CAAnD,CANe;EAOf,CAAC,mDAAD,EAAsD,CAAC,OAAD,EAAU,OAAV,CAAtD,CAPe;EAQf,CAAC,0EAAD,EAA6E,CAAC,OAAD,EAAU,OAAV,CAA7E,CARe;;EAWf,CAAC,uBAAD,EAA0B,OAA1B,CAXe;EAYf,CAAC,+BAAD,EAAkC,SAAlC,CAZe,EAaf,CAAC,WAAD,EAAc,WAAd,CAbe,EAcf,CAAC,qCAAD,EAAwC,KAAxC,CAde;EAef,CAAC,iEAAD,EAAoE,KAApE,CAfe;;EAkBf,CAAC,yCAAD,EAA4C,MAA5C,CAlBe;EAmBf,CAAC,oDAAD,EAAuD,MAAvD,CAnBe;EAoBf,CAAC,oDAAD,EAAuD,MAAvD,CApBe;EAqBf,CAAC,YAAD,EAAe,MAAf,CArBe;EAsBf,CAAC,qBAAD,EAAwB,MAAxB,CAtBe;EAuBf,CAAC,wBAAD,EAA2B,MAA3B,CAvBe;EAwBf,CAAC,oCAAD,EAAuC,MAAvC,CAxBe;EAyBf,CAAC,sCAAD,EAAyC,MAAzC,CAzBe;;EA4Bf,CAAC,WAAD,EAAc,UAAd,CA5Be;EA6Bf,CAAC,eAAD,EAAkB,UAAlB,CA7Be;EA8Bf,CAAC,eAAD,EAAkB,UAAlB,CA9Be;;EAiCf,CAAC,cAAD,EAAiB,YAAjB,CAjCe;EAkCf,CAAC,qCAAD,EAAwC,MAAxC,CAlCe,EAmCf,CAAC,2BAAD,EAA8B,CAAC,UAAD,EAAa,cAAb,CAA9B,CAnCe,EAoCf,CAAC,wBAAD,EAA2B,WAA3B,CApCe,EAqCf,CAAC,sCAAD,EAAyC,MAAzC,CArCe;;EAwCf,CAAC,iCAAD,EAAoC,CAAC,UAAD,EAAa,cAAb,CAApC,CAxCe;EAyCf,CAAC,yBAAD,EAA4B,CAAC,UAAD,EAAa,cAAb,CAA5B,CAzCe;EA0Cf,CAAC,4DAAD,EAA+D,aAA/D,CA1Ce;EA2Cf,CAAC,6CAAD,EAAgD,cAAhD,CA3Ce;EA4Cf,CAAC,wBAAD,EAA2B,CAAC,SAAD,EAAY,UAAZ,EAAwB,cAAxB,CAA3B,CA5Ce;EA6Cf,CAAC,0BAAD,EAA6B,UAA7B,CA7Ce;EA8Cf,CAAC,8BAAD,EAAiC,CAAC,OAAD,EAAU,aAAV,CAAjC,CA9Ce;EA+Cf,CAAC,iCAAD,EAAoC,CAAC,cAAD,EAAiB,SAAjB,CAApC,CA/Ce;EAgDf,CAAC,UAAD,EAAa,CAAC,UAAD,EAAa,cAAb,CAAb,CAhDe;EAiDf,CAAC,uBAAD,EAA0B,SAA1B,CAjDe;EAkDf,CAAC,wBAAD,EAA2B,OAA3B,CAlDe;EAAA,CAAjB;;ECAA,IAAME,YAAY,GAAG,iBAArB;EACA,IAAMC,aAAa,GAAG,0DAAtB;;;EAGA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAASpxB,IAAT,EAAerC,KAAf,EAAsB;EACvC,MAAIvG,GAAG,GAAG4I,IAAI,CAAC3I,IAAf,CADuC;;EAGvC,OAAK,IAAIwB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsE,UAAK,CAACzF,MAA1B,EAAkCmB,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAIsE,UAAK,CAACtE,CAAD,CAAL,CAAS,CAAT,EAAYoB,IAAZ,CAAiB7C,GAAjB,MAA0B,IAA9B,EAAoC;EAClC4I,MAAAA,IAAI,CAACiqB,OAAL,CAAa9sB,UAAK,CAACtE,CAAD,CAAL,CAAS,CAAT,CAAb,EAA0B,YAAYA,CAAtC,EAAyC8E,KAAzC;EACA;EACD;EACF,GARsC;;;;EAWvC,MAAIqC,IAAI,CAAC3I,IAAL,CAAUK,MAAV,IAAoB,CAApB,IAAyBw5B,YAAY,CAACj3B,IAAb,CAAkB7C,GAAlB,CAAzB,IAAmD+5B,aAAa,CAACl3B,IAAd,CAAmB7C,GAAnB,CAAvD,EAAgF;EAC9E4I,IAAAA,IAAI,CAAChD,GAAL,CAAS,cAAT,EAAyB,MAAzB,EAAiCW,KAAjC;EACD;EACF,CAdD;;EAeA,eAAc,GAAGyzB,UAAjB;;ECrBA;;;EAGA,IAAMC,GAAG,GAAG,WAAZ;EACA,IAAMC,GAAG,GAAG,YAAZ;EACA,IAAMC,IAAI,GAAG,cAAb;EACA,IAAMC,IAAI,GAAG,UAAb;EACA,IAAMC,IAAI,GAAG,WAAb;EACA,IAAM3hB,MAAM,GAAG,QAAf;EACA,IAAM4hB,GAAG,GAAG,YAAZ;EACA,IAAMlzB,KAAK,GAAG,OAAd;EACA,IAAMR,IAAI,GAAG,MAAb;EACA,IAAMoP,IAAI,GAAG,MAAb;EACA,IAAMukB,IAAI,GAAG,UAAb;;;EAIA,cAAc,GAAG;EACf/5B,EAAAA,CAAC,EAAE,CACD,CAAC,aAAD,EAAgBwV,IAAhB,CADC,EAED,CAAC,iBAAD,EAAoBukB,IAApB,CAFC;EAGD,GAAC,eAAD,EAAkBH,IAAlB,CAHC,EAID,CAAC,aAAD,EAAgBE,GAAhB,CAJC;EAAA,GADY;EAOf55B,EAAAA,CAAC,EAAE,CAAC,CAAC,cAAD,EAAiBu5B,GAAjB,CAAD,CAPY;EAQft5B,EAAAA,CAAC,EAAE,CACD,CAAC,WAAD,EAAcs5B,GAAd,CADC,EAED,CAAC,WAAD,EAAcA,GAAd,CAFC,EAGD,CAAC,UAAD,EAAaI,IAAb,CAHC,EAID,CAAC,cAAD,EAAiBA,IAAjB,CAJC,EAKD,CAAC,eAAD,EAAkBA,IAAlB,CALC;EAMD,GAAC,cAAD,EAAiBD,IAAjB,CANC,EAOD,CAAC,oBAAD,EAAuBH,GAAvB,CAPC,EAQD,CAAC,eAAD,EAAkBI,IAAlB,CARC;EASD,GAAC,yBAAD,EAA4BA,IAA5B,CATC;EAUD,GAAC,WAAD,EAAcJ,GAAd,CAVC,CARY;EAoBfr5B,EAAAA,CAAC,EAAE,CACD,CAAC,YAAD,EAAes5B,GAAf,CADC,EAED,CAAC,eAAD,EAAkBA,GAAlB,CAFC,EAGD,CAAC,aAAD,EAAgBA,GAAhB,CAHC,EAID,CAAC,mBAAD,EAAsBD,GAAtB,CAJC,EAKD,CAAC,iBAAD,EAAoBA,GAApB,CALC,EAMD,CAAC,WAAD,EAAcA,GAAd,CANC,CApBY;EA4Bfl5B,EAAAA,CAAC,EAAE,CACD,CAAC,gBAAD,EAAmBk5B,GAAnB,CADC,EAED,CAAC,WAAD,EAAcM,IAAd,CAFC;EAGD,GAAC,SAAD,EAAYD,GAAZ,CAHC;EAID,GAAC,aAAD,EAAgBA,GAAhB,CAJC;EAAA,GA5BY;EAkCfp6B,EAAAA,CAAC,EAAE,CACD,CAAC,iBAAD,EAAoBq6B,IAApB,CADC;EAAA,GAlCY;EAqCfr5B,EAAAA,CAAC,EAAE,CACD,CAAC,QAAD,EAAWo5B,GAAX,CADC;EAAA,GArCY;EAwCfn5B,EAAAA,CAAC,EAAE,CACD,CAAC,WAAD,EAAc84B,GAAd,CADC,EAED,CAAC,eAAD,EAAkBA,GAAlB,CAFC,EAGD,CAAC,eAAD,EAAkBA,GAAlB,CAHC,EAID,CAAC,kBAAD,EAAqBA,GAArB,CAJC,CAxCY;EA8Cf74B,EAAAA,CAAC,EAAE,CACD,CAAC,eAAD,EAAkBg5B,IAAlB,CADC,EAED,CAAC,cAAD,EAAiBA,IAAjB,CAFC,EAGD,CAAC,UAAD,EAAaE,GAAb,CAHC;EAID,GAAC,cAAD,EAAiB,MAAjB,CAJC,CA9CY;EAoDfj5B,EAAAA,CAAC,EAAE,CACD,CAAC,eAAD,EAAkB44B,GAAlB,CADC,EAED,CAAC,gBAAD,EAAmB7yB,KAAnB,CAFC,CApDY;EAwDf9F,EAAAA,CAAC,EAAE,CACD,CAAC,OAAD,EAAUg5B,GAAV,CADC;EAED,GAAC,SAAD,EAAYA,GAAZ,CAFC;EAGD,GAAC,aAAD,EAAgBA,GAAhB,CAHC;EAAA,GAxDY;EA6Df74B,EAAAA,CAAC,EAAE,CACD,CAAC,iBAAD,EAAoB,MAApB,CADC,EAED,CAAC,WAAD,EAAc,aAAd,CAFC,EAGD,CAAC,iBAAD,EAAoB24B,IAApB,CAHC,EAID,CAAC,UAAD,EAAaF,GAAb,CAJC,EAKD,CAAC,oBAAD,EAAuB9yB,KAAvB,CALC,CA7DY;EAoEfzF,EAAAA,CAAC,EAAE,CACD,CAAC,WAAD,EAAc,aAAd,CADC,EAED,CAAC,iBAAD,EAAoBs4B,GAApB,CAFC,EAGD,CAAC,eAAD,EAAkBA,GAAlB,CAHC,EAID,CAAC,WAAD,EAAcrzB,IAAd,CAJC,CApEY;EA0EflF,EAAAA,CAAC,EAAE,CACD,CAAC,aAAD,EAAgBy4B,IAAhB,CADC,EAED,CAAC,WAAD,EAAcvzB,IAAd,CAFC,EAGD,CAAC,aAAD,EAAgBwzB,IAAhB,CAHC,EAID,CAAC,oBAAD,EAAuBA,IAAvB,CAJC,EAKD,CAAC,WAAD,EAAcpkB,IAAd,CALC,EAMD,CAAC,QAAD,EAAWskB,GAAX,CANC;EAAA,GA1EY;EAkFfz4B,EAAAA,CAAC,EAAE,CACD,CAAC,uBAAD,EAA0B04B,IAA1B,CADC;EAAA,GAlFY;EAqFfv4B,EAAAA,CAAC,EAAE,CACD,CAAC,WAAD,EAAci4B,GAAd,CADC,EAED,CAAC,UAAD,EAAaA,GAAb,CAFC,EAGD,CAAC,SAAD,EAAYA,GAAZ,CAHC,EAID,CAAC,YAAD,EAAeA,GAAf,CAJC,EAKD,CAAC,UAAD,EAAaG,IAAb,CALC,EAMD,CAAC,eAAD,EAAkB1hB,MAAlB,CANC,EAOD,CAAC,SAAD,EAAYA,MAAZ,CAPC,EAQD,CAAC,cAAD,EAAiBuhB,GAAjB,CARC,EASD,CAAC,gBAAD,EAAmBA,GAAnB,CATC,EAUD,CAAC,aAAD,EAAgBA,GAAhB,CAVC,EAWD,CAAC,YAAD,EAAeA,GAAf,CAXC,EAYD,CAAC,eAAD,EAAkBG,IAAlB,CAZC;EArFY,CAAjB;;ECjBA;EACA,IAAMH,KAAG,GAAG,WAAZ;EACA,IAAMC,KAAG,GAAG,YAAZ;EACA,IAAMC,MAAI,GAAG,cAAb;EACA,IAAMC,MAAI,GAAG,UAAb;EACA,IAAMC,MAAI,GAAG,WAAb;EACA,IAAMG,GAAG,GAAG,QAAZ;EACA,IAAMC,IAAI,GAAG,QAAb;EACA,IAAMrzB,OAAK,GAAG,OAAd;EACA,IAAMszB,EAAE,GAAG,MAAX;EACA,IAAM1kB,MAAI,GAAG,MAAb;EACA,IAAMukB,MAAI,GAAG,UAAb;EACA,IAAM/iB,KAAK,GAAG,OAAd;;EAGA,aAAc,GAAG,CACf,IADe;EAEf,IAFe;EAGf;;EAEEmjB,EAAAA,EAAE,EAAEP,MAFN;EAGEQ,EAAAA,EAAE,EAAE5kB,MAHN;EAIE6kB,EAAAA,EAAE,EAAEZ,KAJN;EAKEa,EAAAA,EAAE,EAAEN,GALN;EAME,QAAME,EANR;EAOE,QAAMA;EAPR,CAHe,EAYf;;EAEEK,EAAAA,GAAG,EAAEd,KAFP;EAGEe,EAAAA,GAAG,EAAEf,KAHP;EAIEgB,EAAAA,GAAG,EAAEhB,KAJP;EAKEiB,EAAAA,GAAG,EAAEjB,KALP;EAMEkB,EAAAA,GAAG,EAAElB,KANP;EAOEmB,EAAAA,GAAG,EAAEnB,KAPP;EAQEoB,EAAAA,GAAG,EAAEpB,KARP;EASEqB,EAAAA,GAAG,EAAErB,KATP;EAUEsB,EAAAA,GAAG,EAAEtB,KAVP;EAWE10B,EAAAA,GAAG,EAAEm1B,EAXP;EAYEc,EAAAA,GAAG,EAAEpB,MAZP;EAaEqB,EAAAA,GAAG,EAAErB,MAbP;EAcEsB,EAAAA,GAAG,EAAExB,KAdP;EAeEyB,EAAAA,GAAG,EAAEzB,KAfP;EAgBE0B,EAAAA,GAAG,EAAEzB,MAhBP;EAiBE0B,EAAAA,GAAG,EAAE1B,MAjBP;EAkBE2B,EAAAA,GAAG,EAAE,QAlBP;;EAmBE,SAAOtB,GAnBT;EAoBE,SAAOhjB,KApBT;EAqBE,SAAO;EArBT,CAZe,EAmCf;;EAEEukB,EAAAA,IAAI,EAAE,OAFR;EAGEC,EAAAA,IAAI,EAAEhmB,MAHR;EAIEimB,EAAAA,IAAI,EAAE5B,MAJR;EAKE6B,EAAAA,IAAI,EAAE7B,MALR;EAME8B,EAAAA,IAAI,EAAEzB,EANR;EAOE0B,EAAAA,IAAI,EAAEjC,MAPR;EAQEkC,EAAAA,IAAI,EAAElC,MARR;EASEmC,EAAAA,IAAI,EAAEnC,MATR;EAUEoC,EAAAA,IAAI,EAAElC,MAVR;EAWEmC,EAAAA,IAAI,EAAEtC,KAXR;EAYEuC,EAAAA,IAAI,EAAEvC,KAZR;EAaEwC,EAAAA,IAAI,EAAExC,KAbR;EAcEyC,EAAAA,IAAI,EAAEvC,MAdR;EAeEwC,EAAAA,IAAI,EAAExC,MAfR;EAgBEyC,EAAAA,IAAI,EAAExC,MAhBR;EAiBEyC,EAAAA,IAAI,EAAE1C,MAjBR;EAkBEj0B,EAAAA,IAAI,EAAE8zB,KAlBR;EAmBE8C,EAAAA,IAAI,EAAE9C,KAnBR;EAoBE+C,EAAAA,IAAI,EAAE/C,KApBR;EAqBEgD,EAAAA,IAAI,EAAEhD,KArBR;EAsBEiD,EAAAA,IAAI,EAAEjD,KAtBR;EAuBEkD,EAAAA,IAAI,EAAE3C,GAvBR;EAwBE4C,EAAAA,IAAI,EAAE5C,GAxBR;EAyBE6C,EAAAA,IAAI,EAAE5C,IAzBR;EA0BE6C,EAAAA,IAAI,EAAE7C,IA1BR;EA2BE8C,EAAAA,IAAI,EAAE9C,IA3BR;EA4BE+C,EAAAA,IAAI,EAAEnD,MA5BR;EA6BEoD,EAAAA,IAAI,EAAEpD,MA7BR;EA8BEqD,EAAAA,IAAI,EAAElmB,KA9BR;EA+BEmmB,EAAAA,IAAI,EAAEv2B,OA/BR;EAgCEw2B,EAAAA,IAAI,EAAErD,MAhCR;;EAiCEsD,EAAAA,IAAI,EAAEtD,MAjCR;;EAkCEuD,EAAAA,IAAI,EAAEvD,MAlCR;;EAmCEwD,EAAAA,IAAI,EAAExD,MAnCR;;EAoCEyD,EAAAA,IAAI,EAAEzD,MApCR;;EAqCE0D,EAAAA,IAAI,EAAE1D,MArCR;;EAAA,CAnCe,EA0Ef;;EAEE2D,EAAAA,KAAK,EAAE1D,GAFT;EAGE2D,EAAAA,KAAK,EAAE3D,GAHT;EAIE4D,EAAAA,KAAK,EAAE5D,GAJT;EAKE6D,EAAAA,KAAK,EAAEhE,MALT;EAMEiE,EAAAA,KAAK,EAAEjE,MANT;EAOEkE,EAAAA,KAAK,EAAElE,MAPT;EAQEmE,EAAAA,KAAK,EAAE/D,IART;EASEgE,EAAAA,KAAK,EAAEhE,IATT;EAUEiE,EAAAA,KAAK,EAAEjE,IAVT;EAWEkE,EAAAA,KAAK,EAAElE,IAXT;EAYEmE,EAAAA,KAAK,EAAEnE,IAZT;EAaEoE,EAAAA,KAAK,EAAE5E,KAbT;EAcE6E,EAAAA,KAAK,EAAE9oB,MAdT;EAeE+oB,EAAAA,KAAK,EAAE9E,KAfT;EAgBE+E,EAAAA,KAAK,EAAE,SAhBT;EAiBEC,EAAAA,KAAK,EAAE9E,MAjBT;EAkBE+E,EAAAA,KAAK,EAAE/E,MAlBT;EAmBEgF,EAAAA,KAAK,EAAE5E,MAnBT;;EAoBE6E,EAAAA,KAAK,EAAE7E,MApBT;;EAAA,CA1Ee,EAgGf;;EAEE8E,EAAAA,MAAM,EAAEj4B,OAFV;EAGEk4B,EAAAA,MAAM,EAAEl4B,OAHV;EAIEm4B,EAAAA,MAAM,EAAEhF,MAJV;;EAKEiF,EAAAA,MAAM,EAAE;EALV,CAhGe,EAuGf;;EAEEC,EAAAA,OAAO,EAAElF,MAFX;;EAGEmF,EAAAA,OAAO,EAAEnF,MAHX;;EAAA,CAvGe,CAAjB;;ECZA,IAAMoF,SAAS,GAAG,SAAZA,SAAY,CAAS/2B,IAAT,EAAerC,KAAf,EAAsB;EACtC,MAAIvG,GAAG,GAAG4I,IAAI,CAAC7F,KAAf;EACA,MAAI68B,KAAI,GAAG5/B,GAAG,CAACA,GAAG,CAACM,MAAJ,GAAa,CAAd,CAAd;;EACA,MAAIksB,UAAQ,CAAC/mB,cAAT,CAAwBm6B,KAAxB,MAAkC,IAAtC,EAA4C;EAC1C,QAAItwB,IAAI,GAAGkd,UAAQ,CAACoT,KAAD,CAAnB;;EACA,SAAK,IAAIn+B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6N,IAAI,CAAChP,MAAzB,EAAiCmB,CAAC,IAAI,CAAtC,EAAyC;EACvC,UAAI6N,IAAI,CAAC7N,CAAD,CAAJ,CAAQ,CAAR,EAAWoB,IAAX,CAAgB7C,GAAhB,MAAyB,IAA7B,EAAmC;EACjC4I,QAAAA,IAAI,CAACiqB,OAAL,CAAavjB,IAAI,CAAC7N,CAAD,CAAJ,CAAQ,CAAR,CAAb,mBAAmCm+B,KAAnC,eAA4Cn+B,CAA5C,GAAiD8E,KAAjD;EACA;EACD;EACF;EACF;EACF,CAZD;;;EAeA,IAAMs5B,aAAa,GAAG,SAAhBA,aAAgB,CAASj3B,IAAT,EAAerC,KAAf,EAAsB;EAC1C,MAAMyT,GAAG,GAAGpR,IAAI,CAAC7F,KAAL,CAAWzC,MAAvB;EACA,MAAI4P,GAAG,GAAG,CAAV;;EACA,MAAI8J,GAAG,IAAI9J,GAAX,EAAgB;EACdA,IAAAA,GAAG,GAAG8J,GAAG,GAAG,CAAZ;EACD;;EACD,OAAK,IAAI9Z,CAAC,GAAGgQ,GAAb,EAAkBhQ,CAAC,GAAG,CAAtB,EAAyBA,CAAC,IAAI,CAA9B,EAAiC;EAC/B,QAAIF,GAAG,GAAG4I,IAAI,CAAC7F,KAAL,CAAWqH,MAAX,CAAkB4P,GAAG,GAAG9Z,CAAxB,EAA2B8Z,GAA3B,CAAV;;EACA,QAAI8lB,SAAS,CAAC9/B,GAAG,CAACM,MAAL,CAAT,CAAsBmF,cAAtB,CAAqCzF,GAArC,MAA8C,IAAlD,EAAwD;EACtD,UAAI4F,GAAG,GAAGk6B,SAAS,CAAC9/B,GAAG,CAACM,MAAL,CAAT,CAAsBN,GAAtB,CAAV;EACA4I,MAAAA,IAAI,CAACiqB,OAAL,CAAajtB,GAAb,EAAkB,aAAa5F,GAA/B,EAAoCuG,KAApC;EACA;EACD;EACF;EACF,CAdD;;;EAiBA,IAAMyzB,YAAU,GAAG,SAAbA,UAAa,CAASpxB,IAAT,EAAerC,KAAf,EAAsB;EACvCs5B,EAAAA,aAAa,CAACj3B,IAAD,EAAOrC,KAAP,CAAb;EACAo5B,EAAAA,SAAS,CAAC/2B,IAAD,EAAOrC,KAAP,CAAT;EACD,CAHD;;EAIA,eAAc,GAAGyzB,YAAjB;;ECvCA;;;EAGA,aAAc,GAAG;EACf,QAAM,IADS;EAEf,QAAM,IAFS;EAGf,QAAM,IAHS;EAIf,QAAM,IAJS;EAKf,QAAM,IALS;EAMf,QAAM,IANS;EAOf,QAAM,IAPS;EAQf,QAAM,IARS;EASf,SAAO,IATQ;EAUf,QAAM,IAVS;EAWf,QAAM,IAXS;EAYf,QAAM,IAZS;EAaf,SAAO,IAbQ;EAcf,SAAO,IAdQ;EAef,SAAO,IAfQ;EAgBf,SAAO,IAhBQ;EAiBf,SAAO,IAjBQ;EAkBf,SAAO,IAlBQ;EAmBf,SAAO,IAnBQ;EAoBf,SAAO,IApBQ;EAqBf,UAAQ,IArBO;EAsBf,SAAO,IAtBQ;EAuBf,SAAO,IAvBQ;EAwBf,SAAO,IAxBQ;EAyBf,SAAO,IAzBQ;EA0Bf,SAAO,IA1BQ;EA2Bf,SAAO,IA3BQ;EA4Bf,SAAO,IA5BQ;EA6Bf,SAAO,IA7BQ;EA8Bf,SAAO,IA9BQ;EA+Bf,SAAO,IA/BQ;EAgCf,SAAO,IAhCQ;EAiCf,UAAQ,IAjCO;EAkCf,SAAO,IAlCQ;EAmCf,SAAO,IAnCQ;EAoCf,SAAO,IApCQ;EAqCf,QAAM,IArCS;EAsCf,QAAM,IAtCS;EAuCf,QAAM,IAvCS;EAwCf,QAAM,IAxCS;EAyCf,SAAO,IAzCQ;EA0Cf,SAAO,IA1CQ;EA2Cf,SAAO,IA3CQ;EA4Cf,SAAO,IA5CQ;EA6Cf,SAAO,IA7CQ;EA8Cf,SAAO,IA9CQ;EA+Cf,SAAO,IA/CQ;EAgDf,SAAO,IAhDQ;EAiDf,QAAM,IAjDS;EAkDf,SAAO,IAlDQ;EAmDf,UAAQ;EAnDO,CAAjB;;ECFA,IAAM+F,QAAQ,GAAG,mGAAjB;;;;;;;EASA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAAC,GAAG,EAAI;EAC1B,MAAIA,GAAG,CAAC91B,MAAJ,CAAW,CAAX,MAAkB,GAAtB,EAA2B;;EAEzB,QAAI81B,GAAG,CAAChzB,KAAJ,CAAU,MAAV,MAAsB,IAA1B,EAAgC;EAC9B,aAAO,KAAP;EACD,KAJwB;;;EAMzB,QAAIgzB,GAAG,CAAChzB,KAAJ,CAAU,GAAV,CAAJ,EAAoB;EAClB,aAAO,KAAP;EACD,KARwB;;;EAUzB,QAAIgzB,GAAG,CAAC3/B,MAAJ,GAAa,EAAjB,EAAqB;EACnB,aAAO,KAAP;EACD;;EACD,WAAO,IAAP;EACD;;EACD,SAAO,KAAP;EACD,CAjBD;;;EAoBA,IAAM4/B,UAAU,GAAG,SAAbA,UAAa,CAAAlgC,GAAG,EAAI;EACxBA,EAAAA,GAAG,GAAGA,GAAG,CAACmD,OAAJ,CAAY,OAAZ,EAAqB,GAArB,CAAN,CADwB;;EAExB,SAAOg9B,SAAQ,CAAC16B,cAAT,CAAwBzF,GAAxB,CAAP;EACD,CAHD;;EAKA,IAAMogC,QAAQ,GAAG,SAAXA,QAAW,CAACx3B,IAAD,EAAOrC,KAAP,EAAiB;EAChC,MAAI05B,GAAG,GAAGr3B,IAAI,CAAClF,GAAL,GAAWkF,IAAI,CAAC3I,IAAhB,GAAuB2I,IAAI,CAACjF,IAAtC;EACAs8B,EAAAA,GAAG,GAAGA,GAAG,CAACh9B,IAAJ,EAAN,CAFgC;;EAIhC,MAAI+8B,YAAY,CAACC,GAAD,CAAZ,KAAsB,IAA1B,EAAgC;EAC9Br3B,IAAAA,IAAI,CAAChD,GAAL,CAAS,OAAT,EAAkB,aAAlB,EAAiCW,KAAjC;EACAqC,IAAAA,IAAI,CAAC3I,IAAL,GAAYggC,GAAZ;EACAr3B,IAAAA,IAAI,CAAClF,GAAL,GAAWkF,IAAI,CAAClF,GAAL,CAASP,OAAT,CAAiB,GAAjB,EAAsB,EAAtB,CAAX;EACAyF,IAAAA,IAAI,CAACjF,IAAL,GAAYiF,IAAI,CAACjF,IAAL,CAAUR,OAAV,CAAkB,GAAlB,EAAuB,EAAvB,CAAZ;EACD,GAT+B;;;EAWhC,MAAIyF,IAAI,CAAC3I,IAAL,CAAUgN,KAAV,CAAgB8yB,QAAhB,CAAJ,EAA+B;EAC7Bn3B,IAAAA,IAAI,CAAChD,GAAL,CAAS,OAAT,EAAkB,eAAlB,EAAmCW,KAAnC;EACAqC,IAAAA,IAAI,CAAC3I,IAAL,GAAYggC,GAAZ;EACD,GAd+B;;;EAgBhC,MAAIC,UAAU,CAACD,GAAD,CAAV,KAAoB,IAAxB,EAA8B;EAC5Br3B,IAAAA,IAAI,CAAChD,GAAL,CAAS,UAAT,EAAqB,gBAArB,EAAuCW,KAAvC;EACAqC,IAAAA,IAAI,CAAC3I,IAAL,GAAYggC,GAAZ;EACD;EACF,CApBD;;EAsBA,YAAc,GAAGG,QAAjB;;ECzDA,IAAMC,KAAK,GAAG;EACZpkB,EAAAA,OAAO,EAAE5S,UADG;EAEZjB,EAAAA,WAAW,EAAEkB,gBAFD;EAGZvD,EAAAA,KAAK,EAAEwD,WAHK;EAIZquB,EAAAA,MAAM,EAAEpuB,WAJI;EAKZ0sB,EAAAA,KAAK,EAAEzsB;EALK,CAAd;;EASA,IAAM0oB,OAAO,GAAG,SAAVA,OAAU,CAASrkB,GAAT,EAAc;EAC5B,MAAIlC,KAAK,GAAGkC,GAAG,CAAC2lB,QAAJ,EAAZ;EACA,MAAIltB,KAAK,GAAGuH,GAAG,CAACvH,KAAhB,CAF4B;;EAI5B85B,EAAAA,KAAK,CAACpkB,OAAN,CAAcrQ,KAAd,EAAqBrF,KAArB,EAJ4B;;EAO5B,OAAK,IAAIrG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAI0I,IAAI,GAAGgD,KAAK,CAAC1L,CAAD,CAAhB,CADwC;;EAGxCmgC,IAAAA,KAAK,CAACj4B,WAAN,CAAkBwD,KAAlB,EAAyB1L,CAAzB,EAA4BqG,KAA5B,EAHwC;;EAKxC85B,IAAAA,KAAK,CAACt6B,KAAN,CAAY6C,IAAZ,EAAkBrC,KAAlB,EALwC;;EAOxC85B,IAAAA,KAAK,CAACzI,MAAN,CAAahvB,IAAb,EAAmBrC,KAAnB,EAPwC;;EASxC85B,IAAAA,KAAK,CAACnK,KAAN,CAAYttB,IAAZ,EAAkBrC,KAAlB;EACD;;EACD,SAAOuH,GAAP;EACD,CAnBD;;EAoBA,WAAc,GAAGqkB,OAAjB;;EC7BA;;;;EAKA,IAAImO,aAAa,GAAG;EAClBpgC,EAAAA,CAAC,EAAE,MADe;;EAElB2R,EAAAA,KAAK,EAAE,MAFW;;EAGlB0uB,EAAAA,EAAE,EAAE,MAHc;;EAIlBC,EAAAA,KAAK,EAAE,MAJW;;EAKlBjP,EAAAA,GAAG,EAAE,MALa;;EAMlBkP,EAAAA,OAAO,EAAE,MANS;;EAOlB,QAAI,MAPc;;EAQlBC,EAAAA,GAAG,EAAE,MARa;;EASlBC,EAAAA,GAAG,EAAE,MATa;;EAUlB,UAAM,MAVY;;EAWlBC,EAAAA,GAAG,EAAE,MAXa;;EAYlBC,EAAAA,IAAI,EAAE,MAZY;;EAalBC,EAAAA,GAAG,EAAE,MAba;;EAclBC,EAAAA,IAAI,EAAE,WAdY;;EAelBC,EAAAA,GAAG,EAAE,MAfa;;EAgBlBC,EAAAA,KAAK,EAAE,MAhBW;;EAiBlBt5B,EAAAA,MAAM,EAAE,MAjBU;;EAAA,CAApB;;EAqBA,IAAIu5B,cAAc,GAAG;EACnBV,EAAAA,KAAK,EAAE,MADY;;EAEnBW,EAAAA,EAAE,EAAE,MAFe;;EAGnB3hB,EAAAA,GAAG,EAAE,WAHc;;EAInB4hB,EAAAA,IAAI,EAAE,MAJa;;EAKnBC,EAAAA,GAAG,EAAE,MALc;;EAMnBC,EAAAA,IAAI,EAAE,MANa;;EAOnBC,EAAAA,IAAI,EAAE,MAPa;;EAQnBC,EAAAA,OAAO,EAAE,MARU;;EASnBC,EAAAA,IAAI,EAAE,MATa;;EAUnBd,EAAAA,GAAG,EAAE,MAVc;;EAWnBe,EAAAA,EAAE,EAAE;EAXe,CAArB;;EAeA,IAAIC,YAAY,GAAG;EACjBtpB,EAAAA,SAAS,EAAE,MADM;;EAEjB3P,EAAAA,UAAU,EAAE,MAFK;;EAGjBoQ,EAAAA,UAAU,EAAE,MAHK;;EAIjBJ,EAAAA,MAAM,EAAE,MAJS;;EAKjBxB,EAAAA,OAAO,EAAE,MALQ;;EAMjBW,EAAAA,KAAK,EAAE,MANU;;EAOjBC,EAAAA,OAAO,EAAE,MAPQ;;EAQjBN,EAAAA,KAAK,EAAE,MARU;;EASjBgB,EAAAA,WAAW,EAAE,MATI;;EAUjBnB,EAAAA,OAAO,EAAE,MAVQ;;EAWjBd,EAAAA,SAAS,EAAE,QAXM;;EAAA,CAAnB;;EAeA,IAAIqrB,aAAa,GAAG;EAClBrqB,EAAAA,MAAM,EAAE,MADU;;EAElBvQ,EAAAA,SAAS,EAAE,MAFO;;EAGlB+R,EAAAA,WAAW,EAAE,MAHK;;EAIlBvB,EAAAA,KAAK,EAAE,MAJW;;EAKlBE,EAAAA,UAAU,EAAE,MALM;;EAMlBD,EAAAA,YAAY,EAAE,MANI;;EAAA,CAApB;EAQA,UAAc,GAAG;EACfypB,EAAAA,cAAc,EAAEA,cADD;EAEfZ,EAAAA,aAAa,EAAEA,aAFA;EAIfuB,EAAAA,aAAa,EAAED,aAJA;EAKfE,EAAAA,YAAY,EAAEH;EALC,CAAjB;;EC/DA,IAAMI,SAAS,GAAG5/B,MAAM,CAACC,IAAP,CAAY4/B,MAAM,CAACF,YAAnB,CAAlB;EACA,IAAMG,UAAU,GAAG9/B,MAAM,CAACC,IAAP,CAAY4/B,MAAM,CAACH,aAAnB,CAAnB;;EAEA,IAAMK,eAAe,GAAG,SAAlBA,eAAkB,CAASt2B,KAAT,EAAgBrF,KAAhB,EAAuB;EAAA,6BACpCrG,CADoC;EAE3C,QAAI0I,IAAI,GAAGgD,KAAK,CAAC1L,CAAD,CAAhB,CAF2C;;EAI3C,QAAI0I,IAAI,CAACu5B,OAAL,OAAmB,IAAvB,EAA6B;EAC3B;EACD,KAN0C;;;;EAS3C,QAAIr1B,QAAQ,GAAGlB,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAApB;;EACA,QAAI4M,QAAJ,EAAc;;EAEZ,UAAIk1B,MAAM,CAAC1B,aAAP,CAAqB76B,cAArB,CAAoCqH,QAAQ,CAAC/J,KAA7C,MAAwD,IAA5D,EAAkE;EAChE,YAAI6C,GAAG,GAAGo8B,MAAM,CAAC1B,aAAP,CAAqBxzB,QAAQ,CAAC/J,KAA9B,CAAV;EACA6F,QAAAA,IAAI,CAAChD,GAAL,CAASA,GAAT,EAAc,WAAWkH,QAAQ,CAAC/J,KAAlC,EAAyCwD,KAAzC;EACA;EACD,OANW;;;;EASZ,UAAI67B,QAAQ,GAAGL,SAAS,CAACpzB,IAAV,CAAe,UAAA/I,GAAG;EAAA,eAAIkH,QAAQ,CAACjH,IAAT,CAAcD,GAAd,CAAJ;EAAA,OAAlB,CAAf;;EACA,UAAIw8B,QAAQ,KAAK58B,SAAjB,EAA4B;EAC1B,YAAII,IAAG,GAAGo8B,MAAM,CAACF,YAAP,CAAoBM,QAApB,CAAV;EACAx5B,QAAAA,IAAI,CAAChD,GAAL,CAASA,IAAT,EAAc,WAAWw8B,QAAzB,EAAmC77B,KAAnC;EACA;EACD;EACF,KAzB0C;;;EA4B3C,QAAI87B,QAAQ,GAAGz2B,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAApB;;EACA,QAAImiC,QAAJ,EAAc;;EAEZ,UAAIL,MAAM,CAACd,cAAP,CAAsBz7B,cAAtB,CAAqC48B,QAAQ,CAACt/B,KAA9C,MAAyD,IAA7D,EAAmE;EACjE,YAAI6C,KAAG,GAAGo8B,MAAM,CAACd,cAAP,CAAsBmB,QAAQ,CAACt/B,KAA/B,CAAV;EACA6F,QAAAA,IAAI,CAAChD,GAAL,CAASA,KAAT,EAAc,YAAYy8B,QAAQ,CAACt/B,KAAnC,EAA0CwD,KAA1C;EACA;EACD,OANW;;;;EASZ,UAAI67B,SAAQ,GAAGH,UAAU,CAACtzB,IAAX,CAAgB,UAAA/I,GAAG;EAAA,eAAIy8B,QAAQ,CAACx8B,IAAT,CAAcD,GAAd,CAAJ;EAAA,OAAnB,CAAf;;EACA,UAAIw8B,SAAQ,KAAK58B,SAAjB,EAA4B;EAC1B,YAAII,KAAG,GAAGo8B,MAAM,CAACH,aAAP,CAAqBO,SAArB,CAAV;EACAx5B,QAAAA,IAAI,CAAChD,GAAL,CAASA,KAAT,EAAc,YAAYw8B,SAA1B,EAAoC77B,KAApC;EACA;EACD;EACF;EA5C0C;;EAC7C,OAAK,IAAIrG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,IAAI,CAAvC,EAA0C;EAAA,qBAAjCA,CAAiC;;EAAA,6BAyCpC;EAGL;EACF,CA9CD;;EA+CA,iBAAc,GAAGgiC,eAAjB;;ECnDA,IAAM/9B,WAAS,GAAG,2BAAlB;EACA,IAAMm+B,SAAS,GAAG,OAAlB;;;EAGA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAS32B,KAAT,EAAgBrF,KAAhB,EAAuB;EACvCqF,EAAAA,KAAK,CAACvJ,OAAN,CAAc,UAACuG,IAAD,EAAO1I,CAAP,EAAa;;EAEzB,QAAIiE,WAAS,CAACtB,IAAV,CAAe+F,IAAI,CAAC3I,IAApB,MAA8B,IAA9B,IAAsCqiC,SAAS,CAACz/B,IAAV,CAAe+F,IAAI,CAAC3I,IAApB,MAA8B,KAAxE,EAA+E;;EAE7E,UAAIC,CAAC,KAAK,CAAV,EAAa;EACX0I,QAAAA,IAAI,CAAChD,GAAL,CAAS,WAAT,EAAsB,MAAtB,EAA8BW,KAA9B;EACD,OAFD,MAEO,IAAIqC,IAAI,CAAC/C,IAAL,CAAUqQ,MAAV,IAAoBtN,IAAI,CAAC/C,IAAL,CAAUgR,YAA9B,IAA8CjO,IAAI,CAAC/C,IAAL,CAAU2Q,KAA5D,EAAmE;EACxE5N,QAAAA,IAAI,CAAChD,GAAL,CAAS,WAAT,EAAsB,aAAtB,EAAqCW,KAArC;EACD,OAN4E;;;EAQ7E,UAAIrG,CAAC,KAAK,CAAV,EAAa;;EAEX0I,QAAAA,IAAI,CAAChD,GAAL,CAAS,YAAT,EAAuB,WAAvB,EAAoCW,KAApC;EACD;EACF;EACF,GAfD;EAgBD,CAjBD;;EAkBA,WAAc,GAAGg8B,SAAjB;;ECtBA,IAAMC,SAAS,GAAG,8BAAlB;EACA,IAAMC,MAAM,GAAG,YAAf;;;EAGA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAS92B,KAAT,EAAgBrF,KAAhB,EAAuB;EACzC,MAAIwV,GAAG,GAAGxV,KAAK,CAACuJ,KAAhB;EACAlE,EAAAA,KAAK,CAACvJ,OAAN,CAAc,UAAAuG,IAAI,EAAI;;EAEpB,QAAIA,IAAI,CAACu5B,OAAL,OAAmB,IAAvB,EAA6B;EAC3B;EACD,KAJmB;;;EAMpB,QAAIK,SAAS,CAAC3/B,IAAV,CAAe+F,IAAI,CAAC7F,KAApB,MAA+B,IAAnC,EAAyC;;EAEvC,UAAI4/B,IAAI,GAAG/5B,IAAI,CAAC7F,KAAL,CAAWI,OAAX,CAAmBs/B,MAAnB,EAA2B,EAA3B,CAAX;;EACA,UAAIE,IAAI,IAAIA,IAAI,CAACriC,MAAL,GAAc,CAAtB,IAA2Byb,GAAG,CAAC4mB,IAAD,CAAH,KAAcn9B,SAAzC,IAAsDuW,GAAG,CAACtW,cAAJ,CAAmBk9B,IAAnB,MAA6B,IAAvF,EAA6F;EAC3F/5B,QAAAA,IAAI,CAAChD,GAAL,CAASmW,GAAG,CAAC4mB,IAAD,CAAZ,EAAoB,UAAUA,IAA9B,EAAoCp8B,KAApC;EACD;EACF;EACF,GAbD;EAcD,CAhBD;;EAiBA,WAAc,GAAGm8B,WAAjB;;ECrBA;EACA,IAAME,QAAQ,GAAG,CACf,WADe,EAEf,QAFe,EAGf,QAHe,EAIf,uCAJe,EAKf,4CALe,EAMf,4BANe,EAOf,kDAPe,EAQf,uBARe,EASf,qBATe,EAUf,wBAVe,EAWf,MAXe,EAYf,OAZe,EAaf,QAbe,EAcf,QAde,EAef,WAfe,EAgBf,WAhBe,EAiBf,mBAjBe,EAkBf,YAlBe,EAmBf,oBAnBe,EAoBf,oBApBe,EAqBf,OArBe,CAAjB;;EAyBA,IAAMC,UAAU,GAAG,CACjB,eADiB,EAEjB,6CAFiB,EAGjB,gBAHiB,EAIjB,SAJiB,EAKjB,kBALiB,EAMjB,SANiB,EAOjB,2BAPiB,EAQjB,UARiB,EASjB,SATiB,EAUjB,OAViB,EAWjB,oBAXiB,EAYjB,QAZiB,EAajB,eAbiB;EAcjB,iBAdiB,EAejB,kBAfiB,EAgBjB,+BAhBiB,EAiBjB,aAjBiB,EAkBjB,YAlBiB,EAmBjB,sCAnBiB,EAoBjB,QApBiB,EAqBjB,0BArBiB,CAAnB;EAuBA,cAAc,GAAG;EACfA,EAAAA,UAAU,EAAEA,UADG;EAEfD,EAAAA,QAAQ,EAAEA;EAFK,CAAjB;;EChDA,IAAME,SAAS,GAAG,CAAC,aAAD,EAAgB,SAAhB,EAA2B,OAA3B,EAAoC,OAApC,EAA6C,QAA7C,EAAuD,OAAvD,EAAgE,SAAhE,EAA2E,SAA3E,CAAlB;EAEA,IAAMC,SAAS,GAAG,CAAC,KAAD,EAAQ,MAAR,EAAgB,gBAAhB,EAAkC,KAAlC,CAAlB;EACA,IAAMC,WAAW,GAAG,CAAC,IAAD,EAAO,KAAP,CAApB;;;EAGA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAASthC,CAAT,EAAY4E,KAAZ,EAAmB;EACrC,MAAI5E,CAAC,CAACkE,IAAF,CAAOmQ,IAAP,IAAe,CAACrU,CAAC,CAACkE,IAAF,CAAOkC,OAA3B,EAAoC;EAClC,QAAI/H,GAAG,GAAG2B,CAAC,CAACoB,KAAZ,CADkC;;EAGlC,QAAIpB,CAAC,CAACkE,IAAF,CAAOoQ,QAAP,IAAmBtU,CAAC,CAACkE,IAAF,CAAOa,MAA9B,EAAsC;EACpC;EACD,KALiC;;;EAOlC,QAAI1G,GAAG,CAACM,MAAJ,IAAc,CAAlB,EAAqB;EACnBqB,MAAAA,CAAC,CAACiE,GAAF,CAAM,UAAN,EAAkB,gBAAlB,EAAoCW,KAApC;EACA;EACD,KAViC;;;EAYlC,QAAIu8B,SAAS,CAACn0B,IAAV,CAAe,UAAA/I,GAAG;EAAA,aAAIjE,CAAC,CAACkE,IAAF,CAAOD,GAAP,CAAJ;EAAA,KAAlB,CAAJ,EAAwC;EACtC;EACD,KAdiC;;;EAgBlC,QAAIspB,UAAK,CAAC0T,QAAN,CAAej0B,IAAf,CAAoB,UAAAzJ,GAAG;EAAA,aAAIA,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,CAAJ;EAAA,KAAvB,CAAJ,EAA+C;EAC7C2B,MAAAA,CAAC,CAACiE,GAAF,CAAM,QAAN,EAAgB,cAAhB,EAAgCW,KAAhC;EACA;EACD,KAnBiC;;;EAqBlC,QAAI2oB,UAAK,CAAC2T,UAAN,CAAiBl0B,IAAjB,CAAsB,UAAAzJ,GAAG;EAAA,aAAIA,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,CAAJ;EAAA,KAAzB,CAAJ,EAAiD;EAC/C2B,MAAAA,CAAC,CAACiE,GAAF,CAAM,UAAN,EAAkB,gBAAlB,EAAoCW,KAApC;EACA;EACD,KAxBiC;;;EA2BlC,QAAI,KAAK1D,IAAL,CAAU7C,GAAV,MAAmB,IAAvB,EAA6B;;EAE3B,UAAI+iC,SAAS,CAACp0B,IAAV,CAAe,UAAAzJ,GAAG;EAAA,eAAIA,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,CAAJ;EAAA,OAAlB,CAAJ,EAA0C;EACxC;EACD;;EACD2B,MAAAA,CAAC,CAACiE,GAAF,CAAM,QAAN,EAAgB,iBAAhB,EAAmCW,KAAnC;EACA;EACD,KAlCiC;;;EAoClC,QAAIy8B,WAAW,CAACr0B,IAAZ,CAAiB,UAAAzJ,GAAG;EAAA,aAAIA,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,CAAJ;EAAA,KAApB,CAAJ,EAA4C;EAC1C;EACD;;EACD2B,IAAAA,CAAC,CAACiE,GAAF,CAAM,UAAN,EAAkB,mBAAlB,EAAuCW,KAAvC;EACD;EACF,CA1CD;;EA2CA,cAAc,GAAG08B,WAAjB;;EClDA;;EAEA,IAAMC,QAAQ,GAAG,CACf,SADe,EAEf,gBAFe,EAGf,QAHe,EAIf,SAJe,EAKf,UALe,EAMf,QANe,EAOf,UAPe,EAQf,SARe,EASf,MATe,EAUf,OAVe,EAWf,YAXe,EAYf,aAZe,EAaf,WAbe,EAcf,WAde,EAef,UAfe,EAgBf,UAhBe,EAiBf,MAjBe,EAkBf,QAlBe,EAmBf,OAnBe,EAoBf,MApBe,EAqBf,QArBe,EAsBf,SAtBe,EAuBf,aAvBe,EAwBf,UAxBe,EAyBf,kBAzBe,EA0Bf,QA1Be,EA2Bf,MA3Be,EA4Bf,QA5Be,EA6Bf,SA7Be,EA8Bf,MA9Be,EA+Bf,WA/Be,EAgCf,QAhCe,EAiCf,cAjCe,EAkCf,QAlCe,EAmCf,WAnCe,EAoCf,OApCe,EAqCf,WArCe,EAsCf,QAtCe,EAuCf,QAvCe,EAwCf,QAxCe,EAyCf,UAzCe,EA0Cf,MA1Ce,EA2Cf,IA3Ce,EA4Cf,WA5Ce,EA6Cf,QA7Ce,EA8Cf,YA9Ce,EA+Cf,SA/Ce,EAgDf,YAhDe,EAiDf,WAjDe,EAkDf,gBAlDe,EAmDf,WAnDe,EAoDf,SApDe,EAqDf,eArDe,EAsDf,WAtDe,EAuDf,eAvDe,EAwDf,YAxDe,EAyDf,SAzDe,EA0Df,YA1De,EA2Df,YA3De,EA4Df,aA5De,EA6Df,OA7De,EA8Df,MA9De,EA+Df,SA/De,EAgEf,MAhEe,EAiEf,YAjEe,EAkEf,MAlEe,EAmEf,aAnEe,EAoEf,YApEe,EAqEf,kBArEe,EAsEf,aAtEe,EAuEf,QAvEe,EAwEf,aAxEe,EAyEf,aAzEe,EA0Ef,UA1Ee,EA2Ef,UA3Ee,EA4Ef,WA5Ee,EA6Ef,QA7Ee,EA8Ef,UA9Ee,EA+Ef,aA/Ee,EAgFf,QAhFe,EAiFf,UAjFe,EAkFf,YAlFe,EAmFf,aAnFe,EAoFf,eApFe,EAqFf,QArFe,EAsFf,MAtFe,EAuFf,cAvFe,EAwFf,SAxFe,EAyFf,YAzFe,EA0Ff,WA1Fe,EA2Ff,IA3Fe,EA4Ff,YA5Fe,EA6Ff,MA7Fe,EA8Ff,KA9Fe,EA+Ff,SA/Fe,EAgGf,OAhGe,EAiGf,YAjGe,EAkGf,OAlGe,EAmGf,OAnGe,EAoGf,kBApGe,EAqGf,QArGe,EAsGf,UAtGe,EAuGf,UAvGe,EAwGf,OAxGe,EAyGf,QAzGe,EA0Gf,KA1Ge,EA2Gf,YA3Ge,EA4Gf,UA5Ge,EA6Gf,WA7Ge,EA8Gf,yBA9Ge,EA+Gf,YA/Ge,EAgHf,WAhHe,EAiHf,eAjHe,EAkHf,YAlHe,EAmHf,YAnHe,EAoHf,aApHe,EAqHf,WArHe,EAsHf,SAtHe,EAuHf,YAvHe,EAwHf,MAxHe;EA0Hf,iBA1He,EA2Hf,SA3He,EA4Hf,iBA5He,EA6Hf,wBA7He,EA8Hf,UA9He,EA+Hf,UA/He,EAgIf,YAhIe,EAiIf,QAjIe,EAkIf,WAlIe,EAmIf,SAnIe,EAoIf,OApIe,EAqIf,UArIe,EAsIf,qBAtIe,EAuIf,WAvIe,EAwIf,UAxIe,EAyIf,UAzIe,EA0If,QA1Ie,EA2If,OA3Ie,EA4If,QA5Ie,EA6If,OA7Ie,EA8If,QA9Ie;EAgJf,MAhJe,EAiJf,cAjJe,EAkJf,aAlJe,EAmJf,QAnJe,EAoJf,KApJe,EAqJf,SArJe,EAsJf,WAtJe,EAuJf,cAvJe,EAwJf,UAxJe,EAyJf,aAzJe;EA2Jf,gBA3Je,EA4Jf,QA5Je,EA6Jf,WA7Je,EA8Jf,YA9Je,EA+Jf,gBA/Je,EAgKf,iBAhKe,EAiKf,OAjKe,EAkKf,KAlKe,EAmKf,QAnKe,EAoKf,aApKe,EAqKf,MArKe,EAsKf,OAtKe,EAuKf,OAvKe,EAwKf,aAxKe,EAyKf,SAzKe,EA0Kf,OA1Ke,EA2Kf,oBA3Ke,EA4Kf,2BA5Ke,EA6Kf,SA7Ke,EA8Kf,WA9Ke,EA+Kf,YA/Ke,EAgLf,aAhLe,EAiLf,SAjLe,EAkLf,QAlLe,EAmLf,YAnLe,EAoLf,SApLe,EAqLf,UArLe,EAsLf,aAtLe,EAuLf,SAvLe,EAwLf,SAxLe,EAyLf,MAzLe,EA0Lf,UA1Le,EA2Lf,cA3Le,EA4Lf,kBA5Le,EA6Lf,gBA7Le,EA8Lf,cA9Le,EA+Lf,UA/Le,EAgMf,SAhMe,EAiMf,oBAjMe,EAkMf,WAlMe,EAmMf,YAnMe,EAoMf,OApMe,EAqMf,UArMe,EAsMf,IAtMe,EAuMf,OAvMe,EAwMf,YAxMe,EAyMf,WAzMe,EA0Mf,SA1Me,CAAjB;EA6MA,iBAAc,GAAGA,QAAQ,CAACl/B,MAAT,CAAgB,UAASjD,CAAT,EAAYf,GAAZ,EAAiB;EAChDe,EAAAA,CAAC,CAACf,GAAD,CAAD,GAAS,MAAT;EACA,SAAOe,CAAP;EACD,CAHgB,EAGd,EAHc,CAAjB;;EC5MA,IAAMoiC,QAAQ,GAAG,SAAXA,QAAW,CAASxhC,CAAT,EAAY;;EAE3B,MAAI,CAACA,CAAC,CAACkE,IAAF,CAAOmQ,IAAZ,EAAkB;EAChB,WAAO,KAAP;EACD,GAJ0B;;;EAM3B,MAAIrU,CAAC,CAACkE,IAAF,CAAOqR,OAAP,IAAkBvV,CAAC,CAACkE,IAAF,CAAOu9B,KAAzB,IAAkCzhC,CAAC,CAACkE,IAAF,CAAO6C,UAA7C,EAAyD;EACvD,WAAO,KAAP;EACD,GAR0B;;;EAU3B,MAAI/G,CAAC,CAACkE,IAAF,CAAOgR,YAAP,IAAuBlV,CAAC,CAACkE,IAAF,CAAOkC,OAA9B,IAAyCpG,CAAC,CAACkE,IAAF,CAAO2Q,KAAhD,IAAyD7U,CAAC,CAACwC,SAAF,EAA7D,EAA4E;EAC1E,WAAO,IAAP;EACD;;EACD,SAAO,KAAP;EACD,CAdD;;EAgBA,IAAMk/B,OAAO,GAAG,SAAVA,OAAU,CAASz3B,KAAT,EAAgBrF,KAAhB,EAAuB;EACrC,OAAK,IAAIrG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,IAAI,CAAvC,EAA0C;EACxC,QAAIyB,CAAC,GAAGiK,KAAK,CAAC1L,CAAD,CAAb;;EACA,QAAIgjC,aAAQ,CAACvhC,CAAC,CAACoB,KAAH,CAAR,KAAsByC,SAAtB,IAAmC09B,aAAQ,CAACz9B,cAAT,CAAwB9D,CAAC,CAACoB,KAA1B,MAAqC,IAA5E,EAAkF;;EAEhF,UAAI+J,QAAQ,GAAGlB,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAApB;;EACA,UAAI4M,QAAQ,KAAKtH,SAAb,IAA0B29B,QAAQ,CAACr2B,QAAD,CAAR,KAAuB,IAArD,EAA2D;EACzDA,QAAAA,QAAQ,CAAC+lB,OAAT,CAAiB,cAAjB,EAAiC,YAAjC,EAA+CtsB,KAA/C;EACA5E,QAAAA,CAAC,CAACkxB,OAAF,CAAU,cAAV,EAA0B,YAA1B,EAAwCtsB,KAAxC;EACA;EACD,OAP+E;;;EAShF,UAAI87B,QAAQ,GAAGz2B,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAApB;;EACA,UAAImiC,QAAQ,KAAK78B,SAAb,IAA0B68B,QAAQ,CAACt/B,KAAT,KAAmB,IAAjD,EAAuD;EACrD,YAAI6I,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAAL,IAAgBijC,QAAQ,CAACv3B,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAAN,CAA5B,EAA4C;EAC1CyB,UAAAA,CAAC,CAACkxB,OAAF,CAAU,cAAV,EAA0B,eAA1B,EAA2CtsB,KAA3C;EACA87B,UAAAA,QAAQ,CAACxP,OAAT,CAAiB,cAAjB,EAAiC,eAAjC,EAAkDtsB,KAAlD;EACAqF,UAAAA,KAAK,CAAC1L,CAAC,GAAG,CAAL,CAAL,CAAa2yB,OAAb,CAAqB,cAArB,EAAqC,eAArC,EAAsDtsB,KAAtD;EACA;EACD;EACF;EACF;EACF;EACF,CAvBD;;EAwBA,oBAAc,GAAG88B,OAAjB;;EC3CA,IAAMC,IAAI,GAAG;EACXC,EAAAA,UAAU,EAAEl6B,aADD;EAEX,UAAMC,OAFK;EAGXq5B,EAAAA,IAAI,EAAEp5B,OAHK;EAIX4S,EAAAA,MAAM,EAAE3S,UAJG;EAKXsvB,EAAAA,aAAa,EAAErvB;EALJ,CAAb;;EAQA,IAAM+5B,SAAS,GAAG,SAAZA,SAAY,CAAS11B,GAAT,EAAc;EAC9B,MAAIlC,KAAK,GAAGkC,GAAG,CAAC2lB,QAAJ,EAAZ;EACA,MAAIltB,KAAK,GAAGuH,GAAG,CAACvH,KAAhB,CAF8B;;EAK9B+8B,EAAAA,IAAI,CAACC,UAAL,CAAgB33B,KAAhB,EAAuBrF,KAAvB,EAL8B;;EAQ9B+8B,EAAAA,IAAI,QAAJ,CAAU13B,KAAV,EAAiBrF,KAAjB,EAR8B;;EAW9B+8B,EAAAA,IAAI,CAACX,IAAL,CAAU/2B,KAAV,EAAiBrF,KAAjB,EAX8B;;EAc9BqF,EAAAA,KAAK,CAACvJ,OAAN,CAAc,UAAAV,CAAC,EAAI;EACjB,QAAIA,CAAC,CAACwgC,OAAF,OAAgB,KAApB,EAA2B;EACzBxgC,MAAAA,CAAC,CAACiE,GAAF,CAAM,MAAN,EAAc,eAAd,EAA+BkI,GAAG,CAACvH,KAAnC;EACD;EACF,GAJD,EAd8B;;EAqB9B+8B,EAAAA,IAAI,CAACxK,aAAL,CAAmBltB,KAAnB,EAA0BrF,KAA1B,EArB8B;;EAwB9BqF,EAAAA,KAAK,CAACvJ,OAAN,CAAc,UAAAV,CAAC,EAAI;EACjB2hC,IAAAA,IAAI,CAACnnB,MAAL,CAAYxa,CAAZ,EAAemM,GAAG,CAACvH,KAAnB;EACD,GAFD;EAIA,SAAOuH,GAAP;EACD,CA7BD;;EA8BA,gBAAc,GAAG01B,SAAjB;;ECtCA,IAAMC,WAAW,GAAG,MAApB;EAEA,IAAMhnB,YAAU,GAAG;EACjB,WAAS,CAAC,MAAD,EAAS,KAAT,CADQ;EAEjBinB,EAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,KAAT,CAFW;EAGjB,WAAS,CAAC,KAAD,EAAQ,KAAR,CAHQ;EAIjBC,EAAAA,IAAI,EAAE,CAAC,KAAD,EAAQ,KAAR,CAJW;EAKjBC,EAAAA,MAAM,EAAE,CAAC,KAAD,EAAQ,KAAR,CALS;EAMjB,YAAU,CAAC,QAAD,EAAW,KAAX,CANO;EAOjBC,EAAAA,IAAI,EAAE,CAAC,IAAD,EAAO,KAAP,CAPW;EAQjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,KAAP,CARY;;EAAA,CAAnB;;EAYA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAASn7B,IAAT,EAAe;;EAEnC,MAAI6T,YAAU,CAAChX,cAAX,CAA0BmD,IAAI,CAAC7F,KAA/B,MAA0C,IAA9C,EAAoD;EAClD,WAAO0Z,YAAU,CAAC7T,IAAI,CAAC7F,KAAN,CAAjB;EACD,GAJkC;;;EAMnC,MAAI0gC,WAAW,CAAC5gC,IAAZ,CAAiB+F,IAAI,CAAC7F,KAAtB,MAAiC,IAArC,EAA2C;EACzC,QAAIuK,IAAI,GAAG1E,IAAI,CAAC7F,KAAL,CAAWI,OAAX,CAAmBsgC,WAAnB,EAAgC,EAAhC,CAAX;EACA,WAAO,CAACn2B,IAAD,EAAO,KAAP,CAAP;EACD;;EACD,SAAO,IAAP;EACD,CAXD;;EAYA,eAAc,GAAGy2B,aAAjB;;EC1BA,IAAMrN,WAAW,GAAG,sCAApB;;EAGA,IAAMsN,IAAI,GAAG;EACXC,EAAAA,EAAE,EAAE,MADO;EAEXC,EAAAA,EAAE,EAAE,MAFO;EAGXC,EAAAA,EAAE,EAAE,KAHO;EAIX/iC,EAAAA,CAAC,EAAE,IAJQ;EAKX,SAAO;EALI,CAAb;;EAQA,IAAMgjC,eAAe,GAAG,SAAlBA,eAAkB,CAASx7B,IAAT,EAAe;EACrC,MAAIouB,KAAK,GAAGpuB,IAAI,CAAC3I,IAAL,CAAUgN,KAAV,CAAgBypB,WAAhB,CAAZ;;EACA,MAAIM,KAAK,KAAK,IAAd,EAAoB;EAClB,WAAO,IAAP;EACD;;EACD,MAAIgN,IAAI,CAACv+B,cAAL,CAAoBuxB,KAAK,CAAC,CAAD,CAAzB,CAAJ,EAAmC;EACjC,WAAO,CAACA,KAAK,CAAC,CAAD,CAAN,EAAWgN,IAAI,CAAChN,KAAK,CAAC,CAAD,CAAN,CAAf,CAAP;EACD;;EACD,SAAO,IAAP;EACD,CATD;;EAUA,aAAc,GAAGoN,eAAjB;;ECrBA,IAAM3nB,YAAU,GAAG;EACjB4nB,EAAAA,KAAK,EAAE,CAAC,MAAD,EAAS,IAAT,CADU;EAEjBC,EAAAA,KAAK,EAAE,CAAC,OAAD,EAAU,IAAV,CAFU;EAGjBC,EAAAA,EAAE,EAAE,CAAC,GAAD,EAAM,IAAN,CAHa;EAIjBC,EAAAA,IAAI,EAAE,CAAC,GAAD,EAAM,KAAN,CAJW;EAKjBC,EAAAA,GAAG,EAAE,CAAC,GAAD,EAAM,MAAN,CALY;EAMjBC,EAAAA,IAAI,EAAE,CAAC,GAAD,EAAM,MAAN,CANW;EAQjB,aAAW,CAAC,OAAD,EAAU,KAAV,CARM;EASjBC,EAAAA,MAAM,EAAE,CAAC,OAAD,EAAU,KAAV,CATS;EAUjB,YAAU,CAAC,MAAD,EAAS,KAAT,CAVO;EAWjBC,EAAAA,KAAK,EAAE,CAAC,MAAD,EAAS,KAAT,CAXU;EAYjB,WAAS,CAAC,KAAD,EAAQ,KAAR,CAZQ;EAajBC,EAAAA,IAAI,EAAE,CAAC,KAAD,EAAQ,KAAR,CAbW;EAcjB,YAAU,CAAC,MAAD,EAAS,KAAT,CAdO;EAejBC,EAAAA,KAAK,EAAE,CAAC,MAAD,EAAS,KAAT,CAfU;;;EAmBjBC,EAAAA,KAAK,EAAE,CAAC,IAAD,EAAO,KAAP,EAAc,MAAd,CAnBU;EAoBjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,OAAP,EAAgB,MAAhB,CApBY;EAqBjBC,EAAAA,GAAG,EAAE,CAAC,KAAD,EAAQ,IAAR,EAAc,IAAd,CArBY;EAsBjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,MAAP,EAAe,MAAf,CAtBY;EAuBjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,QAAb,CAvBY;EAwBjBC,EAAAA,GAAG,EAAE,CAAC,IAAD,EAAO,IAAP,EAAa,SAAb,CAxBY;EAyBjBC,EAAAA,GAAG,EAAE,CAAC,OAAD,EAAU,GAAV,EAAe,SAAf,CAzBY;EA0BjBC,EAAAA,EAAE,EAAE,CAAC,OAAD,EAAU,KAAV,CA1Ba;EA2BjBC,EAAAA,IAAI,EAAE,CAAC,IAAD,EAAO,KAAP,CA3BW;EA4BjB,OAAK,CAAC,IAAD;EA5BY,CAAnB;;EAgCA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAS58B,IAAT,EAAe8F,MAAf,EAAuB;EACpC,MAAI9C,KAAK,GAAG8C,MAAM,CAAC9C,KAAP,EAAZ;EACA,MAAIzG,KAAK,GAAGyG,KAAK,CAACjH,OAAN,CAAciE,IAAd,CAAZ;EACA,MAAIjB,MAAM,GAAGiE,KAAK,CAACuD,KAAN,CAAY,CAAZ,EAAehK,KAAf,CAAb,CAHoC;;EAKpC,MAAIsgC,IAAI,GAAG99B,MAAM,CAACgH,IAAP,CAAY,UAAAhN,CAAC,EAAI;EAC1B,WAAOA,CAAC,CAACkE,IAAF,CAAOmQ,IAAd;EACD,GAFU,CAAX;;EAGA,MAAIyvB,IAAI,IAAIA,IAAI,CAAC5/B,IAAL,CAAUa,MAAtB,EAA8B;EAC5B,WAAO,CAAC,KAAD,EAAQ,KAAR,CAAP;EACD;;EACD,SAAO,CAAC,IAAD,EAAO,KAAP,CAAP;EACD,CAZD;;;EAeA,IAAMg/B,eAAe,GAAG,SAAlBA,eAAkB,CAAS98B,IAAT,EAAe8F,MAAf,EAAuB;;EAE7C,MAAI9F,IAAI,CAAC7F,KAAL,gBAA0B6F,IAAI,CAAC7F,KAAL,KAAe,MAA7C,EAAqD;EACnD,WAAOyiC,MAAM,CAAC58B,IAAD,EAAO8F,MAAP,CAAb;EACD,GAJ4C;;;EAM7C,MAAI+N,YAAU,CAAChX,cAAX,CAA0BmD,IAAI,CAAC7F,KAA/B,CAAJ,EAA2C;EACzC,WAAO0Z,YAAU,CAAC7T,IAAI,CAAC7F,KAAN,CAAjB;EACD;;EACD,SAAO,IAAP;EACD,CAVD;;EAWA,iBAAc,GAAG2iC,eAAjB;;EC1DA,IAAMC,cAAc,GAAG,2BAAvB;EAEA,IAAMC,SAAS,GAAG;EAChBC,EAAAA,IAAI,EAAE,IADU;EAEhBrF,EAAAA,KAAK,EAAE;EAFS,CAAlB;;EAIA,IAAMsF,YAAY,GAAG,SAAfA,YAAe,CAACl9B,IAAD,EAAOiD,IAAP,EAAgB;;EAEnC,MAAIjD,IAAI,CAAC/C,IAAL,CAAU6C,UAAd,EAA0B;EACxB,WAAO,IAAP;EACD,GAJkC;;;EAMnC,MAAIE,IAAI,CAAC/C,IAAL,CAAUqR,OAAV,IAAqBtO,IAAI,CAAC/C,IAAL,CAAUoT,YAAnC,EAAiD;EAC/C,WAAO,KAAP;EACD;;EACD,MAAI2sB,SAAS,CAACngC,cAAV,CAAyBmD,IAAI,CAAC7F,KAA9B,CAAJ,EAA0C;EACxC,WAAO,KAAP;EACD,GAXkC;;;EAanC,MAAIs/B,QAAQ,GAAGx2B,IAAI,CAACC,GAAL,CAASlD,IAAI,CAAC4C,IAAd,CAAf;;EACA,MAAI,CAAC62B,QAAL,EAAe;EACb,WAAO,IAAP;EACD,GAhBkC;;;EAkBnC,MAAIA,QAAQ,CAACx8B,IAAT,CAAce,IAAlB,EAAwB;;EAEtB,QAAIy7B,QAAQ,CAACx8B,IAAT,CAAciB,UAAlB,EAA8B;EAC5B,aAAO,IAAP;EACD;;EACD,WAAO,KAAP;EACD,GAxBkC;;;EA2BnC,MAAIu7B,QAAQ,CAACx8B,IAAT,CAAcmQ,IAAlB,EAAwB;EACtB,WAAO,IAAP;EACD,GA7BkC;;;EA+BnC,MAAI+vB,OAAO,GAAGl6B,IAAI,CAACC,GAAL,CAASu2B,QAAQ,CAAC72B,IAAlB,CAAd;;EACA,MAAIu6B,OAAO,IAAIA,OAAO,CAAClgC,IAAR,CAAamQ,IAAxB,IAAgC,CAAC+vB,OAAO,CAAClgC,IAAR,CAAaqR,OAAlD,EAA2D;EACzD,WAAO,IAAP;EACD,GAlCkC;;;EAoCnC,MAAImrB,QAAQ,CAACx8B,IAAT,CAAcwS,SAAd,IAA2BgqB,QAAQ,CAACx8B,IAAT,CAAc6S,MAAzC,IAAmD2pB,QAAQ,CAACx8B,IAAT,CAAce,IAArE,EAA2E;EACzE,WAAO,KAAP;EACD;;EACD,SAAO,KAAP;EACD,CAxCD;;EA0CA,IAAMo/B,KAAK,GAAG,SAARA,KAAQ,CAACp9B,IAAD,EAAO8F,MAAP,EAAkB;EAC9B,MAAI9C,KAAK,GAAG8C,MAAM,CAAC9C,KAAP,EAAZ;EACA,MAAIzG,KAAK,GAAGyG,KAAK,CAACjH,OAAN,CAAciE,IAAd,CAAZ;EACA,MAAI/E,KAAK,GAAG+H,KAAK,CAACuD,KAAN,CAAYhK,KAAK,GAAG,CAApB,EAAuBA,KAAK,GAAG,CAA/B,CAAZ,CAH8B;;EAK9B,SAAOtB,KAAK,CAAC8K,IAAN,CAAW,UAAAhN,CAAC,EAAI;EACrB,WAAOA,CAAC,CAACkE,IAAF,CAAOmB,SAAd;EACD,GAFM,CAAP;EAGD,CARD;;EAUA,IAAMi/B,eAAe,GAAG,SAAlBA,eAAkB,CAASr9B,IAAT,EAAe8F,MAAf,EAAuBnI,KAAvB,EAA8B;;EAEpD,MAAI3C,KAAK,GAAGgF,IAAI,CAAC3I,IAAL,CAAUgN,KAAV,CAAgB04B,cAAhB,CAAZ;;EACA,MAAI/hC,KAAK,KAAK,IAAd,EAAoB;;EAElB,QAAIkiC,YAAY,CAACl9B,IAAD,EAAO8F,MAAM,CAAC7C,IAAd,CAAZ,KAAoC,IAAxC,EAA8C;EAC5CjD,MAAAA,IAAI,CAAChD,GAAL,CAAS,aAAT,EAAwB,cAAxB,EAAwCW,KAAxC;EACA,aAAO,IAAP;EACD,KALiB;;;EAOlB,QAAI3C,KAAK,KAAK,IAAd,EAAoB;EAClB,UAAIoiC,KAAK,CAACp9B,IAAD,EAAO8F,MAAP,CAAT,EAAyB;EACvB,eAAO,CAAC9K,KAAK,CAAC,CAAD,CAAN,EAAW,KAAX,CAAP;EACD;;EACD,aAAO,CAACA,KAAK,CAAC,CAAD,CAAN,EAAW,IAAX,CAAP;EACD;EACF;;EACD,SAAO,IAAP;EACD,CAlBD;;EAmBA,iBAAc,GAAGqiC,eAAjB;;EC7EA,IAAMC,UAAU,GAAG,uBAAnB;;;EAGA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAASv9B,IAAT,EAAe8F,MAAf,EAAuB;EAC1C,MAAIw3B,UAAU,CAACrjC,IAAX,CAAgB+F,IAAI,CAAC7F,KAArB,CAAJ,EAAiC;EAC/B,QAAI4C,IAAI,GAAGiD,IAAI,CAAC7F,KAAL,CAAWI,OAAX,CAAmB,KAAnB,EAA0B,EAA1B,CAAX,CAD+B;;EAG/B,QAAIyI,KAAK,GAAG8C,MAAM,CAAC9C,KAAP,EAAZ;EACA,QAAIzG,KAAK,GAAGyG,KAAK,CAACjH,OAAN,CAAciE,IAAd,CAAZ;EACA,QAAI/E,KAAK,GAAG+H,KAAK,CAACuD,KAAN,CAAYhK,KAAK,GAAG,CAApB,EAAuBA,KAAK,GAAG,CAA/B,CAAZ,CAL+B;;EAO/B,SAAK,IAAIjF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2D,KAAK,CAACvD,MAA1B,EAAkCJ,CAAC,EAAnC,EAAuC;EACrC,UAAIyB,CAAC,GAAGkC,KAAK,CAAC3D,CAAD,CAAb;;EACA,UAAIyB,CAAC,CAACkE,IAAF,CAAOe,IAAX,EAAiB;EACf,YAAIjF,CAAC,CAACkE,IAAF,CAAOmB,SAAX,EAAsB;EACpB,iBAAO,CAACrB,IAAD,EAAO,KAAP,CAAP;EACD;;EACD,eAAO,CAACA,IAAD,EAAO,OAAP,CAAP;EACD;EACF,KAf8B;;;EAiB/B,WAAO,CAACA,IAAD,EAAO,OAAP,CAAP;EACD;;EACD,SAAO,IAAP;EACD,CArBD;;EAsBA,mBAAc,GAAGwgC,YAAjB;;ECzBA,IAAMC,OAAO,GAAG,0BAAhB;;EAGA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAASz9B,IAAT,EAAe;EAChC,MAAIA,IAAI,CAAC/C,IAAL,CAAUwT,WAAV,KAA0B,IAA9B,EAAoC;EAClC,WAAO,IAAP;EACD;;EACD,MAAI2d,KAAK,GAAGpuB,IAAI,CAAC3I,IAAL,CAAUgN,KAAV,CAAgBm5B,OAAhB,CAAZ;;EACA,MAAIpP,KAAK,KAAK,IAAd,EAAoB;EAClB,WAAO,CAACA,KAAK,CAAC,CAAD,CAAN,EAAW,IAAX,EAAiBA,KAAK,CAAC,CAAD,CAAtB,CAAP;EACD;;EACD,SAAO,IAAP;EACD,CATD;;EAUA,aAAc,GAAGqP,UAAjB;;ECLA,IAAMC,QAAQ,GAAG,UAAjB;;EAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAS3iC,KAAT,EAAgBkK,GAAhB,EAAqB;;EAExC,MAAIY,MAAM,GAAG0jB,YAAQ,CAACld,QAAT,CAAkBtR,KAAK,CAACrB,IAAN,CAAW,GAAX,CAAlB,EAAmCuL,GAAG,CAACvH,KAAvC,EAA8CuH,GAAG,CAACjC,IAAJ,EAA9C,EAA0D,CAA1D,CAAb,CAFwC;;EAIxC,MAAID,KAAK,GAAG8C,MAAM,CAAC9C,KAAP,EAAZ;EACA2tB,EAAAA,UAAY,CAAC3tB,KAAD,EAAQkC,GAAG,CAACvH,KAAZ,CAAZ,CALwC;;EAOxCqF,EAAAA,KAAK,CAACvJ,OAAN,CAAc,UAAAV,CAAC,EAAI;EACjBA,IAAAA,CAAC,CAACoD,QAAF,GAAapD,CAAC,CAAC1B,IAAf;EACA0B,IAAAA,CAAC,CAAC1B,IAAF,GAAS,EAAT;EACA0B,IAAAA,CAAC,CAACoB,KAAF,GAAU,EAAV,CAHiB;;EAKjBpB,IAAAA,CAAC,CAAC+B,GAAF,GAAQ,EAAR;EACA/B,IAAAA,CAAC,CAACgC,IAAF,GAAS,EAAT,CANiB;;EAQjB,QAAI2iC,QAAQ,CAACzjC,IAAT,CAAclB,CAAC,CAACoD,QAAhB,CAAJ,EAA+B;EAC7BpD,MAAAA,CAAC,CAACkE,IAAF,CAAOyL,MAAP,GAAgB,IAAhB;EACA3P,MAAAA,CAAC,CAACkE,IAAF,CAAOkS,QAAP,GAAkB,IAAlB;EACD;EACF,GAZD;EAaA,SAAOrJ,MAAP;EACD,CArBD;;EAuBA,IAAMynB,YAAY,GAAG,SAAfA,YAAe,CAASroB,GAAT,EAAc;EACjC,MAAIvH,KAAK,GAAGuH,GAAG,CAACvH,KAAhB;EACAuH,EAAAA,GAAG,CAACF,IAAJ,CAASvL,OAAT,CAAiB,UAAAd,CAAC,EAAI;EACpB,QAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;;EACA,SAAK,IAAI1L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,IAAI,CAAvC,EAA0C;EACxC,UAAI0I,IAAI,GAAGgD,KAAK,CAAC1L,CAAD,CAAhB;EACA,UAAI0D,KAAK,GAAGmgC,WAAa,CAACn7B,IAAD,CAAzB;EACAhF,MAAAA,KAAK,GAAGA,KAAK,IAAIwgC,SAAe,CAACx7B,IAAD,CAAhC;EACAhF,MAAAA,KAAK,GAAGA,KAAK,IAAI8hC,aAAe,CAAC98B,IAAD,EAAOrH,CAAP,CAAhC;EACAqC,MAAAA,KAAK,GAAGA,KAAK,IAAIqiC,aAAe,CAACr9B,IAAD,EAAOrH,CAAP,EAAUgF,KAAV,CAAhC;EACA3C,MAAAA,KAAK,GAAGA,KAAK,IAAIuiC,eAAY,CAACv9B,IAAD,EAAOrH,CAAP,CAA7B;EACAqC,MAAAA,KAAK,GAAGA,KAAK,IAAIyiC,SAAU,CAACz9B,IAAD,AAAA,CAA3B,CAPwC;;EASxC,UAAIhF,KAAK,KAAK,IAAd,EAAoB;EAClB,YAAI2J,SAAS,GAAGg5B,YAAY,CAAC3iC,KAAD,EAAQkK,GAAR,CAA5B,CADkB;;EAGlB,YAAI04B,SAAS,GAAGj5B,SAAS,CAAC3B,KAAV,CAAgB,CAAhB,CAAhB;EACA46B,QAAAA,SAAS,CAACvmC,IAAV,GAAiB2I,IAAI,CAAC3I,IAAtB,CAJkB;;EAMlB,YAAIgN,KAAK,GAAG1L,CAAC,CAAC2K,SAAF,CAAYtD,IAAI,CAACxD,EAAjB,EAAqB,CAArB,EAAwB0I,GAAG,CAACjC,IAAJ,EAAxB,CAAZ;EACAoB,QAAAA,KAAK,CAAC9J,OAAN,CAAcoK,SAAd,EAAyBO,GAAzB,EAA8B,IAA9B;EACD;EACF;EACF,GArBD;EAsBA,SAAOA,GAAP;EACD,CAzBD;;EA0BA,mBAAc,GAAGqoB,YAAjB;;EC3DA;EACA,IAAMsQ,cAAc,GAAG,SAAjBA,cAAiB,CAAS34B,GAAT,EAAc;;;EAGnCA,EAAAA,GAAG,CAACb,KAAJ,CAAU,aAAV,EAAyBrH,GAAzB,CAA6B,MAA7B,EAAqC,WAArC,EAHmC;;EAKnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,qDAAV,EAAiErH,GAAjE,CAAqE,OAArE,EAA8E,WAA9E,EALmC;;EAOnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,sBAAV,EAAkCrH,GAAlC,CAAsC,MAAtC,EAA8C,WAA9C,EAPmC;;EASnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,kBAAV,EAA8BrH,GAA9B,CAAkC,SAAlC,EAA6C,aAA7C,EATmC;;EAWnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,oBAAV,EAAgCrH,GAAhC,CAAoC,SAApC,EAA+C,aAA/C,EAXmC;;EAanCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,oBAAV,EAAgCrH,GAAhC,CAAoC,YAApC,EAAkD,aAAlD,EAbmC;;EAenCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,4EAAV,EAAwFrH,GAAxF,CAA4F,MAA5F,EAAoG,UAApG,EAfmC;;EAiBnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,oBAAV,EAAgCrH,GAAhC,CAAoC,UAApC,EAAgD,kBAAhD,EAjBmC;;EAmBnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,2BAAV,EAAuCrH,GAAvC,CAA2C,CAAC,WAAD,EAAc,MAAd,CAA3C,EAAkE,UAAlE,EAnBmC;;EAqBnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,qBAAV,EAAiCrH,GAAjC,CAAqC,MAArC,EAA6C,UAA7C,EArBmC;;EAuBnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,mBAAV,EAA+BrH,GAA/B,CAAmC,QAAnC,EAA6C,OAA7C;EACAkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,SAAV,EAAqBrH,GAArB,CAAyB,MAAzB,EAAiC,OAAjC;EACAkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,YAAV,EAAwBrH,GAAxB,CAA4B,6BAA5B,EAA2D,OAA3D;EACAkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,UAAV,EAAsBrH,GAAtB,CAA0B,kBAA1B,EAA8C,OAA9C,EA1BmC;;EA4BnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,KAAV,EAAiBrH,GAAjB,CAAqB,iBAArB,EAAwC,KAAxC,EA5BmC;;EA8BnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,iBAAV,EAA6BrH,GAA7B,CAAiC,YAAjC,EAA+C,OAA/C,EA9BmC;;EAiCnC,MAAIxE,CAAC,GAAG0M,GAAG,CAACirB,OAAJ,EAAR,CAjCmC;;EAoCnC33B,EAAAA,CAAC,CAAC6L,KAAF,CAAQ,wBAAR,EACGu5B,SADH,GAEG5gC,GAFH,CAEO,WAFP,EAEoB,QAFpB,EApCmC;;EAwCnCxE,EAAAA,CAAC,CAAC6L,KAAF,CAAQ,6BAAR,EACGu5B,SADH,GAEG5gC,GAFH,CAEO,WAFP,EAEoB,SAFpB,EAxCmC;;;EA8CnCkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,uBAAV,EAAmCrH,GAAnC,CAAuC,YAAvC,EAAqD,mBAArD;EACAkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,gCAAV,EAA4CrH,GAA5C,CAAgD,MAAhD,EAAwD,aAAxD;EACAkI,EAAAA,GAAG,CAACb,KAAJ,CAAU,mDAAV,EAA+DrH,GAA/D,CAAmE,MAAnE,EAA2E,aAA3E;EACAkI,EAAAA,GAAG,CACAb,KADH,CACS,oBADT,EAEGskB,GAFH,CAEO,SAFP,EAGG3rB,GAHH,CAGO,WAHP,EAGoB,kBAHpB,EAjDmC;;EAuDnC,MAAI8gC,EAAE,GAAG54B,GAAG,MAAH,CAAO,IAAP,CAAT;;EACA,MAAI44B,EAAE,CAAC9iC,KAAH,KAAa,IAAjB,EAAuB;;EAErB8iC,IAAAA,EAAE,CAACz5B,KAAH,CAAS,iBAAT,EAA4BrH,GAA5B,CAAgC,QAAhC,EAA0C,QAA1C,EAFqB;;EAIrB8gC,IAAAA,EAAE,CAACz5B,KAAH,CAAS,YAAT,EAAuBrH,GAAvB,CAA2B,aAA3B,EAA0C,SAA1C,EAJqB;;EAMrB8gC,IAAAA,EAAE,CAACz5B,KAAH,CAAS,SAAT,EAAoBrH,GAApB,CAAwB,MAAxB,EAAgC,SAAhC;EACD;;EAED,MAAI4J,GAAG,GAAG1B,GAAG,MAAH,CAAO,KAAP,CAAV;;EACA,MAAI0B,GAAG,CAAC5L,KAAJ,KAAc,IAAlB,EAAwB;;EAEtB4L,IAAAA,GAAG,CAACvC,KAAJ,CAAU,0BAAV,EAAsCrH,GAAtC,CAA0C,WAA1C,EAAuD,UAAvD,EAFsB;;EAItB4J,IAAAA,GAAG,CAACvC,KAAJ,CAAU,aAAV,EAAyBrH,GAAzB,CAA6B,QAA7B,EAAuC,UAAvC;EACD,GAvEkC;;;EA0EnC,MAAI+gC,KAAK,GAAG74B,GAAG,MAAH,CAAO,OAAP,CAAZ;;EACA,MAAI64B,KAAK,CAAC/iC,KAAN,KAAgB,IAApB,EAA0B;;EAExB+iC,IAAAA,KAAK,CAAC15B,KAAN,CAAY,qCAAZ,EAAmDrH,GAAnD,CAAuD,aAAvD,EAAsE,WAAtE,EAFwB;;EAIxB+gC,IAAAA,KAAK,CAAC15B,KAAN,CAAY,oBAAZ,EAAkCrH,GAAlC,CAAsC,YAAtC,EAAoD,iBAApD,EAJwB;;EAMxB+gC,IAAAA,KAAK,CAAC15B,KAAN,CAAY,oCAAZ,EAAkDrH,GAAlD,CAAsD,aAAtD,EAAqE,cAArE;EACD,GAlFkC;;;EAqFnC,MAAIghC,IAAI,GAAG94B,GAAG,MAAH,CAAO,MAAP,CAAX;;EACA,MAAI84B,IAAI,CAAChjC,KAAL,KAAe,IAAnB,EAAyB;EACvBgjC,IAAAA,IAAI,CAAC35B,KAAL,CAAW,aAAX,EAA0BrH,GAA1B,CAA8B,aAA9B,EAA6C,kBAA7C,EADuB;;EAGvBghC,IAAAA,IAAI,CAAC35B,KAAL,CAAW,oBAAX,EAAiCrH,GAAjC,CAAqC,aAArC,EAAoD,WAApD,EAHuB;;EAKvBghC,IAAAA,IAAI,CAAC35B,KAAL,CAAW,cAAX,EAA2BrH,GAA3B,CAA+B,QAA/B,EAAyC,WAAzC,EALuB;;EAOvBghC,IAAAA,IAAI,CACD35B,KADH,CACS,cADT,EAEG45B,KAFH,CAES,6DAFT,EAGGjhC,GAHH,CAGO,QAHP,EAGiB,aAHjB;EAID;;EAED,MAAIkhC,KAAK,GAAGh5B,GAAG,MAAH,CAAO,YAAP,CAAZ;;EACA,MAAIg5B,KAAK,CAACljC,KAAN,KAAgB,IAApB,EAA0B;;EAExBkjC,IAAAA,KAAK,CAAC75B,KAAN,CAAY,wCAAZ,EAAsDrH,GAAtD,CAA0D,cAA1D,EAA0E,WAA1E,EAFwB;;EAIxBkhC,IAAAA,KAAK,CACF75B,KADH,CACS,qGADT,EAEGrH,GAFH,CAEO,QAFP,EAEiB,cAFjB,EAJwB;;EAQxBkhC,IAAAA,KAAK,CACF75B,KADH,CACS,+EADT,EAEGrH,GAFH,CAEO,QAFP,EAEiB,iBAFjB;EAGD;;EAED,MAAImhC,IAAI,GAAGj5B,GAAG,MAAH,CAAO,YAAP,CAAX;;EACA,MAAIi5B,IAAI,CAACnjC,KAAL,KAAe,IAAnB,EAAyB;;EAEvBmjC,IAAAA,IAAI,CACD95B,KADH,CACS,cADT,EAEGA,KAFH,CAES,aAFT,EAGGrH,GAHH,CAGO,MAHP,EAGe,aAHf,EAFuB;;EAOvBmhC,IAAAA,IAAI,MAAJ,CACM,aADN,EAEG95B,KAFH,CAES,aAFT,EAGGrH,GAHH,CAGO,YAHP,EAGqB,SAHrB;EAID;;EAED,MAAIohC,KAAK,GAAGl5B,GAAG,MAAH,CAAO,QAAP,CAAZ;;EACA,MAAIk5B,KAAK,CAACpjC,KAAN,KAAgB,IAApB,EAA0B;;EAExBojC,IAAAA,KAAK,CAAC/5B,KAAN,CAAY,mEAAZ,EAAiFrH,GAAjF,CAAqF,QAArF,EAA+F,cAA/F,EAFwB;;EAIxBohC,IAAAA,KAAK,CACF/5B,KADH,CACS,kBADT,EAEGA,KAFH,CAES,2EAFT,EAGGrH,GAHH,CAGO,QAHP,EAGiB,UAHjB;EAID;;EAED,SAAOkI,GAAP;EACD,CA3ID;;EA6IA,WAAc,GAAG24B,cAAjB;;EC9IA;EACA,IAAMQ,MAAM,GAAG,SAATA,MAAS,CAASn5B,GAAT,EAAc;EAC3B,MAAIo5B,GAAG,GAAGp5B,GAAG,MAAH,CAAO,aAAP,CAAV;;EAEA,MAAIo5B,GAAG,CAACtjC,KAAJ,KAAc,IAAlB,EAAwB;EACtB,QAAIujC,GAAG,GAAGD,GAAG,MAAH,CAAO,YAAP,CAAV;;EACA,QAAIC,GAAG,CAACvjC,KAAR,EAAe;;EAEbujC,MAAAA,GAAG,CAACl6B,KAAJ,CAAU,2CAAV,EAAuDrH,GAAvD,CAA2D,MAA3D,EAAmE,cAAnE,EAFa;;EAIbuhC,MAAAA,GAAG,CAACl6B,KAAJ,CAAU,mDAAV,EAA+DrH,GAA/D,CAAmE,MAAnE,EAA2E,wBAA3E,EAJa;;EAMbuhC,MAAAA,GAAG,CAACl6B,KAAJ,CAAU,0DAAV,EAAsErH,GAAtE,CAA0E,MAA1E,EAAkF,WAAlF,EANa;;EAQbuhC,MAAAA,GAAG,CACAl6B,KADH,CACS,yBADT,EAEG45B,KAFH,CAES,6BAFT,EAGGj7B,KAHH,CAGS,CAHT,EAIGhG,GAJH,CAIO,MAJP,EAIe,WAJf;EAKD;;EAED,QAAI8W,GAAG,GAAGwqB,GAAG,MAAH,CAAO,aAAP,CAAV;;EACA,QAAIxqB,GAAG,CAAC9Y,KAAR,EAAe;;EAEb8Y,MAAAA,GAAG,CAACzP,KAAJ,CAAU,8CAAV,EAA0DrH,GAA1D,CAA8D,MAA9D,EAAsE,wBAAtE,EAFa;;EAIb8W,MAAAA,GAAG,CAACzP,KAAJ,CAAU,iCAAV,EAA6CrH,GAA7C,CAAiD,MAAjD,EAAyD,wBAAzD,EAJa;;EAMb8W,MAAAA,GAAG,CAACzP,KAAJ,CAAU,4BAAV,EAAwCrH,GAAxC,CAA4C,MAA5C,EAAoD,OAApD;EACD,KAzBqB;;;EA4BtBshC,IAAAA,GAAG,CAACj6B,KAAJ,CAAU,mCAAV,EAA+CrH,GAA/C,CAAmD,MAAnD,EAA2D,wBAA3D,EA5BsB;;EA8BtBshC,IAAAA,GAAG,CAACj6B,KAAJ,CAAU,wBAAV,EAAoCrH,GAApC,CAAwC,MAAxC,EAAgD,aAAhD,EA9BsB;;EAgCtBshC,IAAAA,GAAG,CAACj6B,KAAJ,CAAU,8BAAV,EAA0CrH,GAA1C,CAA8C,MAA9C,EAAsD,cAAtD,EAhCsB;;EAkCtBshC,IAAAA,GAAG,CAACj6B,KAAJ,CAAU,8BAAV,EAA0CrH,GAA1C,CAA8C,WAA9C,EAA2D,SAA3D,EAlCsB;;EAoCtBshC,IAAAA,GAAG,CAACj6B,KAAJ,CAAU,iEAAV,EAA6ErH,GAA7E,CAAiF,MAAjF,EAAyF,cAAzF,EApCsB;;EAsCtBshC,IAAAA,GAAG,CAACj6B,KAAJ,CAAU,4DAAV,EAAwErH,GAAxE,CAA4E,MAA5E,EAAoF,wBAApF;EACD;;EAED,MAAIwhC,EAAE,GAAGt5B,GAAG,MAAH,CAAO,QAAP,CAAT;;EACA,MAAIs5B,EAAE,CAACxjC,KAAH,KAAa,IAAjB,EAAuB;;EAErBwjC,IAAAA,EAAE,CAACn6B,KAAH,CAAS,kBAAT,EAA6BrH,GAA7B,CAAiC,WAAjC,EAA8C,iBAA9C,EAFqB;;EAIrBwhC,IAAAA,EAAE,CAACn6B,KAAH,CAAS,uBAAT,EAAkCrH,GAAlC,CAAsC,UAAtC,EAAkD,SAAlD,EAJqB;;EAMrBwhC,IAAAA,EAAE,CAACn6B,KAAH,CAAS,4BAAT,EAAuCrH,GAAvC,CAA2C,MAA3C,EAAmD,YAAnD,EANqB;;EAQrBwhC,IAAAA,EAAE,CAACn6B,KAAH,CAAS,+CAAT,EACGrB,KADH,CACS,CADT,EAEGhG,GAFH,CAEO,MAFP,EAEe,kBAFf,EARqB;;EAYrBwhC,IAAAA,EAAE,CAACn6B,KAAH,CAAS,gEAAT,EACGo6B,IADH,CACQ,SADR,EAEGzhC,GAFH,CAEO,OAFP,EAEgB,UAFhB;EAGD;;EAED,SAAOkI,GAAP;EACD,CA/DD;;EAgEA,YAAc,GAAGm5B,MAAjB;;ECjEA;EACA,IAAMK,QAAQ,GAAG,SAAXA,QAAW,CAASx5B,GAAT,EAAc;EAC7B,MAAI23B,IAAI,GAAG33B,GAAG,MAAH,CAAO,OAAP,CAAX;;EACA,MAAI23B,IAAI,CAAC7hC,KAAL,KAAe,IAAnB,EAAyB;;EAEvB6hC,IAAAA,IAAI,CAACx4B,KAAL,CAAW,YAAX,EAAyBrH,GAAzB,CAA6B,MAA7B,EAAqC,WAArC,EAFuB;;EAIvB6/B,IAAAA,IAAI,CAACx4B,KAAL,CAAW,uBAAX,EAAoCrH,GAApC,CAAwC,MAAxC,EAAgD,aAAhD,EAJuB;;EAMvB6/B,IAAAA,IAAI,CAACx4B,KAAL,CAAW,mBAAX,EAAgCrH,GAAhC,CAAoC,aAApC,EAAmD,kBAAnD,EANuB;;EAQvB6/B,IAAAA,IAAI,CAACx4B,KAAL,CAAW,mBAAX,EAAgCrH,GAAhC,CAAoC,cAApC,EAAoD,aAApD,EARuB;;EAUvB6/B,IAAAA,IAAI,CAACx4B,KAAL,CAAW,cAAX,EAA2BrH,GAA3B,CAA+B,OAA/B,EAAwC,YAAxC,EAVuB;;EAYvBkI,IAAAA,GAAG,CAACb,KAAJ,CAAU,sBAAV,EAAkC4lB,OAAlC,CAA0C,SAA1C,EAAqD,cAArD,EAZuB;;EAcvB/kB,IAAAA,GAAG,CAACb,KAAJ,CAAU,0CAAV,EAAsD4lB,OAAtD,CAA8D,SAA9D,EAAyE,cAAzE,EAduB;;EAgBvB/kB,IAAAA,GAAG,CAACb,KAAJ,CAAU,wEAAV,EAAoFrH,GAApF,CAAwF,SAAxF,EAhBuB;;EAkBvBkI,IAAAA,GAAG,CAACb,KAAJ,CAAU,gCAAV,EAA4CrH,GAA5C,CAAgD,QAAhD,EAlBuB;;EAoBvB6/B,IAAAA,IAAI,CACDx4B,KADH,CACS,gBADT,EAEG45B,KAFH,CAES,YAFT,EAGGl8B,KAHH,CAGS,MAHT,EAIG/E,GAJH,CAIO,SAJP,EAIkB,aAJlB,EApBuB;;EA0BvB6/B,IAAAA,IAAI,CACDx4B,KADH,CACS,kGADT,EAEGrH,GAFH,CAEO,MAFP,EAEe,gBAFf,EA1BuB;;EA+BvB,QAAI2hC,GAAG,GAAG9B,IAAI,MAAJ,CAAQ,eAAR,CAAV;;EACA,QAAI8B,GAAG,CAAC3jC,KAAJ,KAAc,IAAlB,EAAwB;EACtB2jC,MAAAA,GAAG,CAACt6B,KAAJ,CAAU,kCAAV,EAA8C4lB,OAA9C,CAAsD,cAAtD,EAAsE,cAAtE;EACA0U,MAAAA,GAAG,CAACt6B,KAAJ,CAAU,wBAAV,EAAoCrH,GAApC,CAAwC,cAAxC,EAAwD,aAAxD;EACA2hC,MAAAA,GAAG,CAACt6B,KAAJ,CAAU,8DAAV,EAA0ErH,GAA1E,CAA8E,cAA9E,EAA8F,YAA9F;EACA2hC,MAAAA,GAAG,CACAt6B,KADH,CACS,0BADT,EAEGo6B,IAFH,CAEQ,WAFR,EAGGzhC,GAHH,CAGO,cAHP,EAGuB,eAHvB;EAID;;EAED,QAAIuW,MAAM,GAAGspB,IAAI,MAAJ,CAAQ,SAAR,CAAb;;EACA,QAAItpB,MAAM,CAACvY,KAAP,KAAiB,IAArB,EAA2B;;EAEzBuY,MAAAA,MAAM,CAAClP,KAAP,CAAa,sBAAb,EAAqCrH,GAArC,CAAyC,MAAzC,EAAiD,wBAAjD,EAFyB;;EAKzB6/B,MAAAA,IAAI,CAACx4B,KAAL,CAAW,uBAAX,EAAoCrH,GAApC,CAAwC,cAAxC,EAAwD,YAAxD;EACD;EACF,GApD4B;;;EAuD7B,MAAI4hC,OAAO,GAAG15B,GAAG,MAAH,CAAO,UAAP,CAAd;;EACA,MAAI05B,OAAO,CAAC5jC,KAAR,KAAkB,IAAtB,EAA4B;EAC1B4jC,IAAAA,OAAO,CACJv6B,KADH,CACS,gBADT,EAEG45B,KAFH,CAES,+BAFT,EAGGjhC,GAHH,CAGO,cAHP,EAGuB,aAHvB;EAIA4hC,IAAAA,OAAO,CACJv6B,KADH,CACS,UADT,EAEGA,KAFH,CAES,aAFT,EAGGrH,GAHH,CAGO,cAHP,EAGuB,oBAHvB;EAID,GAjE4B;;;EAoE7B,MAAI6hC,IAAI,GAAG35B,GAAG,MAAH,CAAO,aAAP,CAAX;;EACA,MAAI25B,IAAI,CAAC7jC,KAAL,KAAe,IAAnB,EAAyB;;EAEvB6jC,IAAAA,IAAI,CAACx6B,KAAL,CAAW,0BAAX,EAAuCtC,KAAvC,CAA6C,QAA7C,EAAuD,iBAAvD,EAFuB;;EAIvB88B,IAAAA,IAAI,CACDx6B,KADH,CACS,kCADT,EAEGo6B,IAFH,CAEQ,WAFR,EAGGp6B,KAHH,CAGS,gCAHT,EAIGrH,GAJH,CAIO,YAJP,EAJuB;;EAUvB6hC,IAAAA,IAAI,CACDx6B,KADH,CACS,4BADT,EAEGo6B,IAFH,CAEQ,WAFR,EAGGzhC,GAHH,CAGO,YAHP,EAVuB;;EAevB6hC,IAAAA,IAAI,CACDx6B,KADH,CACS,qBADT,EAEGo6B,IAFH,CAEQ,WAFR,EAGGzhC,GAHH,CAGO,YAHP,EAfuB;;EAoBvB6hC,IAAAA,IAAI,CAACx6B,KAAL,CAAW,qBAAX,EAAkCrH,GAAlC,CAAsC,MAAtC,EAA8C,uBAA9C;EACD;;EACD,SAAOkI,GAAP;EACD,CA5FD;;EA6FA,cAAc,GAAGw5B,QAAjB;;EC9FA,IAAMI,SAAS,GACb,qMADF;EAEA,IAAMC,SAAS,GAAG,8CAAlB;EACA,IAAMC,QAAQ,GAAG,gCAAjB;EACA,IAAMC,SAAS,GAAG,iCAAlB;EACA,IAAMC,UAAU,GAAG,iDAAnB;;EAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAASj6B,GAAT,EAAc;;EAE9B,MAAIk6B,GAAG,GAAGl6B,GAAG,MAAH,CAAO,YAAP,CAAV;;EACA,MAAIk6B,GAAG,CAACpkC,KAAJ,KAAc,IAAlB,EAAwB;;EAEtBkK,IAAAA,GAAG,CAACb,KAAJ,CAAU,0CAAV,EAAsDrH,GAAtD,CAA0D,SAA1D,EAAqE,UAArE,EAFsB;;EAItBoiC,IAAAA,GAAG,CAAC/6B,KAAJ,CAAU,qBAAV,EAAiCrH,GAAjC,CAAqC,QAArC,EAA+C,qBAA/C,EAJsB;;EAMtBoiC,IAAAA,GAAG,CAAC/6B,KAAJ,CAAU,cAAV,EAA0BtC,KAA1B,CAAgC,QAAhC,EAA0C,kBAA1C,EANsB;;EAQtBq9B,IAAAA,GAAG,CAAC/6B,KAAJ,CAAU,qCAAV,EAAiDrH,GAAjD,CAAqD,WAArD,EAAkE,mBAAlE;EACD,GAZ6B;;;EAe9B,MAAIkhC,KAAK,GAAGh5B,GAAG,MAAH,CAAO,YAAP,CAAZ;;EACA,MAAIg5B,KAAK,CAACljC,KAAN,KAAgB,IAApB,EAA0B;EACxBkjC,IAAAA,KAAK,CAAC75B,KAAN,CAAY,qBAAZ,EAAmC4lB,OAAnC,CAA2C,SAA3C,EAAsD,mBAAtD,EADwB;;EAGxBiU,IAAAA,KAAK,CAAC75B,KAAN,CAAY,oCAAZ,EAAkD4lB,OAAlD,CAA0D,QAA1D,EAAoE,yBAApE,EAHwB;;EAKxBiU,IAAAA,KAAK,CAAC75B,KAAN,CAAY,mCAAZ,EAAiD4lB,OAAjD,CAAyD,QAAzD,EAAmE,yBAAnE,EALwB;;EAQxBiU,IAAAA,KAAK,CACF75B,KADH,CACS,gCADT,EAEGo6B,IAFH,CAEQ,OAFR,EAGGA,IAHH,CAGQ,YAHR,EAIGzhC,GAJH,CAIO,aAJP,EAIsB,gBAJtB;EAKAkhC,IAAAA,KAAK,CACF75B,KADH,CACS,+BADT,EAEGo6B,IAFH,CAEQ,OAFR,EAGGzhC,GAHH,CAGO,WAHP,EAGoB,KAHpB,EAbwB;;EAmBxBkhC,IAAAA,KAAK,CAAC75B,KAAN,CAAYy6B,SAAS,GAAG,uBAAxB,EAAiD7U,OAAjD,CAAyD,QAAzD,EAAmE,WAAnE,EAnBwB;;EAqBxBiU,IAAAA,KAAK,CAAC75B,KAAN,CAAY06B,SAAS,GAAG,uBAAxB,EAAiD/hC,GAAjD,CAAqD,QAArD,EAA+D,WAA/D,EArBwB;;EAuBxBkhC,IAAAA,KAAK,CAAC75B,KAAN,CAAY26B,QAAQ,GAAG,uBAAvB,EAAgDhiC,GAAhD,CAAoD,QAApD,EAA8D,aAA9D,EAvBwB;;EAyBxBkhC,IAAAA,KAAK,CAAC75B,KAAN,CAAY46B,SAAS,GAAG,oCAAxB,EAA8DhV,OAA9D,CAAsE,QAAtE,EAAgF,YAAhF;EACD;;EAED,MAAIvS,MAAM,GAAGxS,GAAG,MAAH,CAAO,SAAP,CAAb;;EACA,MAAIwS,MAAM,CAAC1c,KAAP,KAAiB,IAArB,EAA2B;;EAEzB0c,IAAAA,MAAM,CAACrT,KAAP,CAAa,oBAAb,EAAmCrH,GAAnC,CAAuC,QAAvC,EAAiD,kBAAjD,EAFyB;;EAIzB0a,IAAAA,MAAM,CAACrT,KAAP,CAAa,oCAAb,EAAmDrH,GAAnD,CAAuD,QAAvD,EAAiE,eAAjE,EAJyB;;EAMzB0a,IAAAA,MAAM,CAACrT,KAAP,CAAa,oBAAb,EAAmCrH,GAAnC,CAAuC,QAAvC,EAAiD,kBAAjD,EANyB;;EAQzB0a,IAAAA,MAAM,CAACrT,KAAP,CAAa,4BAAb,EAA2CrH,GAA3C,CAA+C,CAAC,SAAD,EAAY,QAAZ,CAA/C,EAAsE,QAAtE,EARyB;;EAUzB0a,IAAAA,MAAM,CAACrT,KAAP,CAAa,oBAAb,EAAmCrH,GAAnC,CAAuC,QAAvC,EAAiD,kBAAjD,EAVyB;;EAYzB0a,IAAAA,MAAM,CACHrT,KADH,CACS,oFADT,EAEGrH,GAFH,CAEO,WAFP,EAEoB,iBAFpB,EAZyB;;EAgBzBkhC,IAAAA,KAAK,CACF75B,KADH,CACS,oBADT,EAEGA,KAFH,CAES,kBAFT,EAGG4lB,OAHH,CAGW,QAHX,EAGqB,kBAHrB,EAhByB;;;EAuBzB,QAAIoV,SAAS,GAAG3nB,MAAM,MAAN,CAAUonB,SAAV,CAAhB;;EACA,QAAIO,SAAS,CAACrkC,KAAV,KAAoB,IAAxB,EAA8B;;EAE5BqkC,MAAAA,SAAS,CAACh7B,KAAV,CAAgBy6B,SAAS,GAAG,UAA5B,EAAwC7U,OAAxC,CAAgD,QAAhD,EAA0D,WAA1D;EACD,KA3BwB;;;EA8BzB,QAAIqV,SAAS,GAAG5nB,MAAM,MAAN,CAAUqnB,SAAV,CAAhB;;EACA,QAAIO,SAAS,KAAK,IAAlB,EAAwB;EACtBA,MAAAA,SAAS,CAACj7B,KAAV,CAAgB,uBAAuB06B,SAAvB,GAAmC,GAAnD,EAAwD/hC,GAAxD,CAA4D,MAA5D,EAAoE,YAApE;EACAsiC,MAAAA,SAAS,CAACj7B,KAAV,CAAgB06B,SAAS,GAAG,UAA5B,EAAwC/hC,GAAxC,CAA4C,QAA5C,EAAsD,WAAtD;EACD,KAlCwB;;;EAqCzB,QAAIuiC,QAAQ,GAAG7nB,MAAM,MAAN,CAAUsnB,QAAV,CAAf;;EACA,QAAIO,QAAQ,CAACvkC,KAAT,KAAmB,IAAvB,EAA6B;EAC3BukC,MAAAA,QAAQ,CAACl7B,KAAT,CAAe,cAAc26B,QAAd,GAAyB,GAAxC,EAA6ChiC,GAA7C,CAAiD,WAAjD,EAA8D,aAA9D;EACAuiC,MAAAA,QAAQ,CAACl7B,KAAT,CAAe26B,QAAQ,GAAG,UAA1B,EAAsChiC,GAAtC,CAA0C,QAA1C,EAAoD,aAApD;EACD,KAzCwB;;;EA4CzB,QAAIwiC,SAAS,GAAG9nB,MAAM,MAAN,CAAUunB,SAAV,CAAhB;;EACA,QAAIO,SAAS,CAACxkC,KAAV,KAAoB,IAAxB,EAA8B;EAC5BwkC,MAAAA,SAAS,CAACn7B,KAAV,CAAgB5B,MAAM,CAACw8B,SAAD,CAAN,GAAoB,UAApC,EAAgDhV,OAAhD,CAAwD,QAAxD,EAAkE,YAAlE;EACAuV,MAAAA,SAAS,CAACn7B,KAAV,CAAgB,qCAAqC46B,SAArC,GAAiD,GAAjE,EAAsEhV,OAAtE,CAA8E,MAA9E,EAAsF,SAAtF;EACAuV,MAAAA,SAAS,CAACn7B,KAAV,CAAgB46B,SAAS,GAAG,iBAA5B,EAA+ChV,OAA/C,CAAuD,MAAvD,EAA+D,UAA/D;EACD,KAjDwB;;;EAoDzB,QAAIwV,UAAU,GAAG/nB,MAAM,MAAN,CAAUwnB,UAAV,CAAjB;;EACA,QAAIO,UAAU,CAACzkC,KAAX,KAAqB,IAAzB,EAA+B;EAC7BykC,MAAAA,UAAU,CAACp7B,KAAX,CAAiB,kCAAkC66B,UAAlC,GAA+C,GAAhE,EAAqEjV,OAArE,CAA6E,OAA7E,EAAsF,UAAtF;EACAwV,MAAAA,UAAU,CAACp7B,KAAX,CAAiB,MAAM66B,UAAN,GAAmB,UAApC,EAAgDjV,OAAhD,CAAwD,OAAxD,EAAiE,cAAjE,EAF6B;EAI9B,KAzDwB;;;EA4DzB,QAAIyV,EAAE,GAAGhoB,MAAM,MAAN,CAAU,IAAV,CAAT;;EACA,QAAIgoB,EAAE,CAAC1kC,KAAH,KAAa,IAAjB,EAAuB;EACrB0kC,MAAAA,EAAE,CAACr7B,KAAH,CAAS,yBAAT,EAAoC4lB,OAApC,CAA4C,SAA5C,EAAuD,WAAvD;EACAyV,MAAAA,EAAE,CAACr7B,KAAH,CAAS,0BAAT,EAAqC4lB,OAArC,CAA6C,SAA7C,EAAwD,kBAAxD;EACD;;EAED,QAAI0V,SAAS,GAAGjoB,MAAM,MAAN,CAAU,YAAV,CAAhB;;EACA,QAAIioB,SAAS,CAAC3kC,KAAV,KAAoB,IAAxB,EAA8B;;EAE5B2kC,MAAAA,SAAS,CAACt7B,KAAV,CAAgB,qBAAhB,EAAuCrH,GAAvC,CAA2C,SAA3C,EAAsD,mBAAtD,EAF4B;;EAI5B2iC,MAAAA,SAAS,CAACt7B,KAAV,CAAgB,2BAAhB,EAA6CrH,GAA7C,CAAiD,SAAjD,EAA4D,mBAA5D,EAJ4B;;EAM5B2iC,MAAAA,SAAS,CAACt7B,KAAV,CAAgB,gCAAhB,EAAkDrH,GAAlD,CAAsD,QAAtD,EAAgE,6BAAhE,EAN4B;;EAQ5B2iC,MAAAA,SAAS,CAACt7B,KAAV,CAAgB,kCAAhB,EAAoDrH,GAApD,CAAwD,QAAxD,EAAkE,+BAAlE,EAR4B;;EAU5B2iC,MAAAA,SAAS,CAACt7B,KAAV,CAAgB,mCAAhB,EAAqDrH,GAArD,CAAyD,QAAzD,EAAmE,qBAAnE,EAV4B;;EAY5B2iC,MAAAA,SAAS,CAACt7B,KAAV,CAAgB,2BAAhB,EAA6CrH,GAA7C,CAAiD,QAAjD,EAA2D,aAA3D,EAZ4B;;EAe5B2iC,MAAAA,SAAS,CACNt7B,KADH,CACS,qEADT,EAEGrH,GAFH,CAEO,SAFP,EAEkB,iBAFlB,EAf4B;;EAoB5B2iC,MAAAA,SAAS,CACNt7B,KADH,CACS,mCADT,EAEGA,KAFH,CAES,QAFT,EAGGrH,GAHH,CAGO,QAHP,EAGiB,qBAHjB,EApB4B;;EAyB5B2iC,MAAAA,SAAS,CACNt7B,KADH,CACS,2BADT,EAEGo6B,IAFH,CAEQ,OAFR,EAGGzhC,GAHH,CAGO,SAHP,EAGkB,aAHlB,EAIGkH,QAJH,GAKGlH,GALH,CAKO,WALP,EAKoB,aALpB,EAzB4B;;EAiC5B2iC,MAAAA,SAAS,CACNt7B,KADH,CACS,0CADT,EAEGrH,GAFH,CAEO,WAFP,EAEoB,iBAFpB,EAGGA,GAHH,CAGO,SAHP,EAGkB,iBAHlB,EAjC4B;;EAuC5B2iC,MAAAA,SAAS,CACNt7B,KADH,CACS,oCADT,EAEGo6B,IAFH,CAEQ,4BAFR,EAGGzhC,GAHH,CAGO,SAHP,EAGkB,kBAHlB,EAIGkH,QAJH,GAKGlH,GALH,CAKO,WALP,EAKoB,kBALpB,EAvC4B;;EA+C5B,UAAIqJ,GAAG,GAAGs5B,SAAS,CAChBt7B,KADO,CACD,+BADC,EAEPo6B,IAFO,CAEF,cAFE,EAGPA,IAHO,CAGF,cAHE,EAIPA,IAJO,CAIF,UAJE,CAAV;EAKAp4B,MAAAA,GAAG,CAACnC,QAAJ,GAAelH,GAAf,CAAmB,WAAnB,EAAgC,gBAAhC;EACD;;EAED,QAAI4iC,QAAQ,GAAGloB,MAAM,MAAN,CAAU,WAAV,CAAf;;EACA,QAAIkoB,QAAQ,CAAC5kC,KAAT,KAAmB,IAAvB,EAA6B;;EAE3B4kC,MAAAA,QAAQ,CAACv7B,KAAT,CAAe,2CAAf,EAA4DrH,GAA5D,CAAgE,YAAhE,EAA8E,sBAA9E,EAF2B;;EAI3B4iC,MAAAA,QAAQ,CACLv7B,KADH,CACS,mBADT,EAEGhC,KAFH,CAES,YAFT,EAGGrF,GAHH,CAGO,YAHP,EAGqB,eAHrB,EAJ2B;;EAS3B4iC,MAAAA,QAAQ,CACLv7B,KADH,CAEI,0GAFJ,EAIGrH,GAJH,CAIO,YAJP,EAIqB,gBAJrB,EAT2B;;EAe3B4iC,MAAAA,QAAQ,CACLv7B,KADH,CACS,4CADT,EAEGo6B,IAFH,CAEQ,OAFR,EAGGzhC,GAHH,CAGO,SAHP,EAGkB,iBAHlB,EAIGkH,QAJH,GAKGlH,GALH,CAKO,WALP,EAKoB,iBALpB;EAMD;EACF;;EAED,SAAOkI,GAAP;EACD,CAjMD;;EAkMA,eAAc,GAAGi6B,SAAjB;;ECzMA,IAAMU,IAAI,GAAG,iBAAb;;EAEA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAAS56B,GAAT,EAAc;EAC5B,MAAI66B,EAAE,GAAG76B,GAAG,MAAH,CAAO,OAAP,CAAT;;EACA,MAAI66B,EAAE,CAAC/kC,KAAP,EAAc;EACZ+kC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,gDAAT,EAA2DrH,GAA3D,CAA+D,WAA/D,EAA4E,UAA5E,EADY;;EAGZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,eAAT,EAA0BrH,GAA1B,CAA8B,QAA9B,EAAwC,YAAxC,EAHY;;EAKZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,WAAT,EAAsBrH,GAAtB,CAA0B,SAA1B,EAAqC,aAArC,EALY;;EAOZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,eAAT,EAA0BrH,GAA1B,CAA8B,MAA9B,EAAsC,YAAtC,EAPY;;EASZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,cAAT,EAAyBrH,GAAzB,CAA6B,MAA7B,EAAqC,YAArC,EATY;;EAWZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,2BAAT,EAAsCrH,GAAtC,CAA0C,YAA1C,EAAwD,gBAAxD,EAXY;;EAaZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,0BAAT,EAAqCrH,GAArC,CAAyC,YAAzC,EAAuD,cAAvD,EAbY;;EAeZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,iCAAT,EAA4CrH,GAA5C,CAAgD,OAAhD,EAAyD,cAAzD,EAfY;;EAkBZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,8CAAT,EAAyDrH,GAAzD,CAA6D,QAA7D,EAAuE,WAAvE,EAlBY;;EAoBZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,kDAAT,EAA6DrH,GAA7D,CAAiE,WAAjE,EAA8E,cAA9E,EApBY;;EAsBZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,6BAAT,EAAwCrH,GAAxC,CAA4C,UAA5C,EAAwD,kBAAxD,EAtBY;;;;EA0BZ+iC,IAAAA,EAAE,CAAC17B,KAAH,qBAAsBw7B,IAAtB,eACGlX,GADH,CACO,QADP,EAEG3rB,GAFH,CAEO,WAFP,EAEoB,YAFpB,EA1BY;;EA+BZ+iC,IAAAA,EAAE,CAAC17B,KAAH,CAAS,oCAAT,EACGo6B,IADH,CACQ,uCADR,EAEGv6B,QAFH,GAGGlH,GAHH,CAGO,OAHP,EAGgB,SAHhB,EA/BY;;;EAsCZ,QAAIgjC,KAAK,GAAGD,EAAE,MAAF,CAAM,sBAAN,CAAZ;;EACA,QAAIC,KAAK,CAAChlC,KAAN,KAAgB,IAApB,EAA0B;;EAExBglC,MAAAA,KAAK,CACF37B,KADH,qBACsBw7B,IADtB,kBAEGlX,GAFH,CAEO,QAFP,EAGG3rB,GAHH,CAGO,WAHP,EAGoB,YAHpB,EAFwB;;EAOxBgjC,MAAAA,KAAK,CACF37B,KADH,wBACyBw7B,IADzB,aAEGlX,GAFH,CAEO,QAFP,EAGG3rB,GAHH,CAGO,WAHP,EAGoB,YAHpB,EAPwB;;EAYxBgjC,MAAAA,KAAK,CACF37B,KADH,kBACmBw7B,IADnB,mBACgCA,IADhC,kBAC4CA,IAD5C,aAEGlX,GAFH,CAEO,QAFP,EAGG3rB,GAHH,CAGO,WAHP,EAGoB,YAHpB,EAZwB;;EAiBxBgjC,MAAAA,KAAK,CACF37B,KADH,kBACmBw7B,IADnB,iBAC8BA,IAD9B,aAEGlX,GAFH,CAEO,QAFP,EAGG3rB,GAHH,CAGO,WAHP,EAGoB,UAHpB,EAjBwB;;EAsBxBgjC,MAAAA,KAAK,CACF37B,KADH,4BAC6Bw7B,IAD7B,mBAC0CA,IAD1C,aAEGlX,GAFH,CAEO,QAFP,EAGG3rB,GAHH,CAGO,WAHP,EAGoB,UAHpB;EAID;;EAED,QAAIijC,MAAM,GAAGF,EAAE,MAAF,CAAM,SAAN,CAAb;;EACA,QAAIE,MAAM,CAACjlC,KAAP,KAAiB,IAArB,EAA2B;;EAEzBilC,MAAAA,MAAM,CACH57B,KADH,mBACoBw7B,IADpB,eAEGlX,GAFH,CAEO,QAFP,EAGG3rB,GAHH,CAGO,WAHP,EAGoB,gBAHpB,EAFyB;;EAOzBijC,MAAAA,MAAM,CAAC57B,KAAP,CAAa,6BAAb,EAA4CrH,GAA5C,CAAgD,MAAhD,EAAwD,cAAxD,EAPyB;;EASzBijC,MAAAA,MAAM,CAAC57B,KAAP,CAAa,uBAAb,EAAsCrH,GAAtC,CAA0C,MAA1C,EAAkD,YAAlD,EATyB;;EAWzBijC,MAAAA,MAAM,CAAC57B,KAAP,CAAa,yBAAb,EAAwCrH,GAAxC,CAA4C,WAA5C,EAAyD,YAAzD,EAXyB;;EAazBijC,MAAAA,MAAM,CAAC57B,KAAP,CAAa,qCAAb,EAAoDrH,GAApD,CAAwD,WAAxD,EAAqE,WAArE,EAbyB;;EAezBijC,MAAAA,MAAM,CAAC57B,KAAP,CAAa,+BAAb,EAA8CrH,GAA9C,CAAkD,MAAlD,EAA0D,QAA1D,EAfyB;;EAkBzBijC,MAAAA,MAAM,CACH57B,KADH,CACS,oDADT,EAEGo6B,IAFH,CAEQ,WAFR,EAGGzhC,GAHH,CAGO,4BAHP,EAGqC,kBAHrC;EAID,KA1FW;;;EA6FZ,QAAIkjC,MAAM,GAAGH,EAAE,MAAF,CAAM,SAAN,CAAb;;EACA,QAAIG,MAAM,CAACllC,KAAP,KAAiB,IAArB,EAA2B;;EAEzBklC,MAAAA,MAAM,CAAC77B,KAAP,CAAa,iCAAb,EAAgDrH,GAAhD,CAAoD,UAApD,EAAgE,eAAhE,EAFyB;;EAIzBkjC,MAAAA,MAAM,CAAC77B,KAAP,CAAa,kBAAb,EAAiCrH,GAAjC,CAAqC,UAArC,EAAiD,cAAjD,EAJyB;;EAMzBkjC,MAAAA,MAAM,CAAC77B,KAAP,CAAa,mCAAb,EAAkDrH,GAAlD,CAAsD,MAAtD,EAA8D,gBAA9D,EANyB;;EAS1B,KAvGW;;;EA0GZ,QAAImjC,MAAM,GAAGJ,EAAE,MAAF,CAAM,gCAAN,CAAb;;EACA,QAAII,MAAM,CAACnlC,KAAP,KAAiB,IAArB,EAA2B;;EAEzB,UAAImlC,MAAM,CAACvX,GAAP,CAAW,wCAAX,MAAyD,KAA7D,EAAoE;;EAElEuX,QAAAA,MAAM,CAAC97B,KAAP,CAAa,cAAb,EAA6BrH,GAA7B,CAAiC,QAAjC,EAA2C,gBAA3C,EAFkE;;EAIlEmjC,QAAAA,MAAM,CACH97B,KADH,CACS,2CADT,EAEGA,KAFH,CAES,IAFT,EAGGrH,GAHH,CAGO,QAHP,EAGiB,WAHjB;EAID;EACF;EACF,GAzH2B;;;EA4H5B,MAAIxE,CAAC,GAAG0M,GAAG,MAAH,CAAO,+BAAP,CAAR;;EACA,MAAI1M,CAAC,CAACwC,KAAN,EAAa;;EAEXxC,IAAAA,CAAC,CAAC6L,KAAF,CAAQ,MAAR,EAAgBrH,GAAhB,CAAoB,cAApB,EAAoC,cAApC;EACAxE,IAAAA,CAAC,CAAC6L,KAAF,CAAQ,+CAAR,EAAyDrH,GAAzD,CAA6D,cAA7D,EAA6E,QAA7E,EAHW;;EAKXxE,IAAAA,CAAC,CAAC6L,KAAF,CAAQ,QAAR,EAAkBrH,GAAlB,CAAsB,cAAtB,EAAsC,gBAAtC;EACAxE,IAAAA,CAAC,CAAC6L,KAAF,CAAQ,6BAAR,EAAuCrH,GAAvC,CAA2C,cAA3C,EAA2D,iBAA3D;EACAxE,IAAAA,CAAC,CAAC6L,KAAF,CAAQ,OAAR,EAAiBrH,GAAjB,CAAqB,cAArB,EAAqC,iBAArC,EAPW;;EAUXxE,IAAAA,CAAC,CAAC6L,KAAF,CAAQ,2DAAR,EACGtC,KADH,CACS,cADT,EAEG/E,GAFH,CAEO,aAFP,EAEsB,aAFtB,EAVW;;EAeXxE,IAAAA,CAAC,CAAC6L,KAAF,CAAQ,uDAAR,EACGtC,KADH,CACS,cADT,EAEG/E,GAFH,CAEO,aAFP,EAEsB,mBAFtB;EAGD;;EAED,SAAOkI,GAAP;EACD,CAlJD;;EAmJA,aAAc,GAAG46B,OAAjB;;ECrJA;EACA,IAAMM,YAAY,GAAG,SAAfA,YAAe,CAASl7B,GAAT,EAAc;EACjC,MAAIq5B,GAAG,GAAGr5B,GAAG,MAAH,CAAO,YAAP,CAAV;;EACA,MAAIq5B,GAAG,CAACvjC,KAAR,EAAe;;EAEbujC,IAAAA,GAAG,CAACl6B,KAAJ,CAAU,oBAAV,EAAgCrH,GAAhC,CAAoC,QAApC,EAA8C,YAA9C,EAFa;;EAIbuhC,IAAAA,GAAG,CAACl6B,KAAJ,CAAU,sBAAV,EAAkCrH,GAAlC,CAAsC,SAAtC,EAAiD,aAAjD,EAJa;;EAMbuhC,IAAAA,GAAG,CAACl6B,KAAJ,CAAU,4BAAV,EAAwCrH,GAAxC,CAA4C,MAA5C,EAAoD,kBAApD,EANa;;EAQbuhC,IAAAA,GAAG,CAACl6B,KAAJ,CAAU,mBAAV,EAA+BrH,GAA/B,CAAmC,MAAnC,EAA2C,UAA3C,EARa;;EAUbuhC,IAAAA,GAAG,CAACl6B,KAAJ,CAAU,+CAAV,EAA2DrH,GAA3D,CAA+D,QAA/D,EAAyE,SAAzE,EAVa;;EAYbuhC,IAAAA,GAAG,CAACl6B,KAAJ,CAAU,4BAAV,EAAwCrH,GAAxC,CAA4C,MAA5C,EAAoD,UAApD,EAZa;;EAcbuhC,IAAAA,GAAG,CAACl6B,KAAJ,CAAU,uBAAV,EAAmCrH,GAAnC,CAAuC,WAAvC,EAAoD,WAApD,EAda;;EAgBbuhC,IAAAA,GAAG,CAACl6B,KAAJ,CAAU,qDAAV,EAAiErH,GAAjE,CAAqE,MAArE,EAA6E,YAA7E;EACD;;EACD,SAAOkI,GAAP;EACD,CArBD;;EAsBA,kBAAc,GAAGk7B,YAAjB;;ECvBA,IAAMC,KAAK,GAAG,2FAAd;;EAGA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAASp7B,GAAT,EAAc;EAC7B,MAAIq7B,GAAG,GAAGr7B,GAAG,MAAH,CAAO,QAAP,CAAV;;EACA,MAAIq7B,GAAG,CAACvlC,KAAJ,KAAc,IAAlB,EAAwB;;EAEtBulC,IAAAA,GAAG,CAACl8B,KAAJ,CAAU,uBAAV,EAAmCrH,GAAnC,CAAuC,aAAvC,EAAsD,aAAtD,EAFsB;;EAItBujC,IAAAA,GAAG,CAACl8B,KAAJ,CAAU,4BAAV,EAAwCrH,GAAxC,CAA4C,aAA5C,EAA2D,mBAA3D,EAJsB;;EAMtBujC,IAAAA,GAAG,CAACl8B,KAAJ,CAAU,wBAAV,EAAoCrH,GAApC,CAAwC,QAAxC,EAAkD,oBAAlD,EANsB;;EAQtBujC,IAAAA,GAAG,CACAl8B,KADH,CACS,mBADT,EAEGrH,GAFH,CAEO,OAFP,EAEgB,gBAFhB,EAGGkH,QAHH,GAIGlH,GAJH,CAIO,MAJP,EAIe,YAJf;EAKD,GAf4B;;;EAiB7BujC,EAAAA,GAAG,CAACl8B,KAAJ,CAAU,sBAAV,EAAkCrH,GAAlC,CAAsC,OAAtC,EAA+C,YAA/C,EAjB6B;;EAmB7BujC,EAAAA,GAAG,CAACl8B,KAAJ,CAAU,+BAAV,EAA2CrH,GAA3C,CAA+C,OAA/C,EAAwD,mBAAxD,EAnB6B;;EAqB7BujC,EAAAA,GAAG,CAACl8B,KAAJ,CAAU,yBAAV,EAAqCrH,GAArC,CAAyC,OAAzC,EAAkD,aAAlD,EArB6B;;EAuB7BujC,EAAAA,GAAG,CAACl8B,KAAJ,CAAU,cAAV,EAA0BrH,GAA1B,CAA8B,OAA9B,EAAuC,aAAvC,EAvB6B;;EAyB7BujC,EAAAA,GAAG,CAACl8B,KAAJ,CAAU,mCAAV,EAA+CrH,GAA/C,CAAmD,OAAnD,EAA4D,cAA5D,EAzB6B;;EA2B7B,MAAIwjC,IAAI,GAAGD,GAAG,MAAH,CAAOF,KAAP,CAAX;;EACA,MAAIG,IAAI,CAACxlC,KAAL,KAAe,IAAnB,EAAyB;EACvBwlC,IAAAA,IAAI,CAACn8B,KAAL,CAAW,UAAX,EAAuBrH,GAAvB,CAA2B,OAA3B,EAAoC,SAApC,EADuB;;;EAGvBwjC,IAAAA,IAAI,CAACn8B,KAAL,WAAcg8B,KAAd,kBAAkCrjC,GAAlC,CAAsC,OAAtC,EAA+C,qBAA/C;EACD;;EACD,SAAOkI,GAAP;EACD,CAlCD;;EAmCA,cAAc,GAAGo7B,QAAjB;;ECtCA,IAAMG,KAAK,GAAG,oDAAd;;EACA,IAAMnQ,MAAM,GAAG,gDAAf;;EACA,IAAMxe,OAAK,GAAG,aAAd;;EAEA,IAAM4uB,QAAQ,GAAG,SAAXA,QAAW,CAASx7B,GAAT,EAAc;;EAE7B,MAAIwS,MAAM,GAAGxS,GAAG,MAAH,CAAOorB,MAAP,CAAb;;EACA,MAAI5Y,MAAM,CAAC1c,KAAP,KAAiB,IAArB,EAA2B;;EAEzB0c,IAAAA,MAAM,CAACrT,KAAP,iEAAsEisB,MAAtE,QAAiFtzB,GAAjF,CAAqF,QAArF,EAA+F,cAA/F,EAFyB;;EAIzB0a,IAAAA,MAAM,CAACrT,KAAP,wBAA6BisB,MAA7B,QAAwCtzB,GAAxC,CAA4C,QAA5C,EAAsD,mBAAtD,EAJyB;;EAMzB0a,IAAAA,MAAM,CAACrT,KAAP,YAAiBisB,MAAjB,+BAAmDtzB,GAAnD,CAAuD,QAAvD,EAAiE,cAAjE,EANyB;;EAQzB0a,IAAAA,MAAM,CAACrT,KAAP,YAAiBisB,MAAjB,eAAmCtzB,GAAnC,CAAuC,QAAvC,EAAiD,aAAjD,EARyB;;EAUzB0a,IAAAA,MAAM,CAACrT,KAAP,mBAAwBisB,MAAxB,QAAmCtzB,GAAnC,CAAuC,QAAvC,EAAiD,aAAjD,EAVyB;;EAYzB0a,IAAAA,MAAM,CAACrT,KAAP,4BAAiCisB,MAAjC,QAA4CtzB,GAA5C,CAAgD,QAAhD,EAA0D,YAA1D,EAZyB;;EAczB0a,IAAAA,MAAM,CAACrT,KAAP,oBAAyBisB,MAAzB,QAAoCtzB,GAApC,CAAwC,QAAxC,EAAkD,QAAlD,EAdyB;;EAgBzB0a,IAAAA,MAAM,CAACrT,KAAP,YAAiBisB,MAAjB,gBAAoCtzB,GAApC,CAAwC,QAAxC,EAAkD,QAAlD,EAhByB;;EAkBzB0a,IAAAA,MAAM,CAACrT,KAAP,YAAiBisB,MAAjB,oBAAwCtzB,GAAxC,CAA4C,OAA5C,EAAqD,cAArD,EAlByB;;EAoBzB0a,IAAAA,MAAM,CAACrT,KAAP,kBAAuBisB,MAAvB,QAAkCtzB,GAAlC,CAAsC,OAAtC,EAA+C,gBAA/C,EApByB;;EAsBzB0a,IAAAA,MAAM,CAACrT,KAAP,YAAiBisB,MAAjB,oBAAwCtzB,GAAxC,CAA4C,OAA5C,EAAqD,SAArD,EAtByB;;EAwBzB0a,IAAAA,MAAM,CAACrT,KAAP,sBAA2BisB,MAA3B,QAAsCtzB,GAAtC,CAA0C,OAA1C,EAAmD,YAAnD,EAxByB;;EA0BzB0a,IAAAA,MAAM,CACHrT,KADH,WACYo8B,KADZ,eACsBnQ,MADtB,QAEGmO,IAFH,CAEQ,UAFR,EAGGzhC,GAHH,CAGO,OAHP,EAGgB,aAHhB,EA1ByB;;EA+BzB0a,IAAAA,MAAM,CAACrT,KAAP,6BAAkCisB,MAAlC,QAA6CtzB,GAA7C,CAAiD,OAAjD,EAA0D,gBAA1D,EA/ByB;EAgC1B,GAnC4B;;;EAsC7B,MAAI2jC,IAAI,GAAGz7B,GAAG,MAAH,CAAO4M,OAAP,CAAX;;EACA,MAAI6uB,IAAI,CAAC3lC,KAAL,KAAe,IAAnB,EAAyB;;EAEvB2lC,IAAAA,IAAI,CAACt8B,KAAL,oBAAuByN,OAAvB,QAAiC9U,GAAjC,CAAqC,YAArC,EAAmD,YAAnD;EACA2jC,IAAAA,IAAI,CAACt8B,KAAL,WAAcyN,OAAd,iBAAiC9U,GAAjC,CAAqC,YAArC,EAAmD,YAAnD,EAHuB;;EAKvB2jC,IAAAA,IAAI,CAACt8B,KAAL,WAAco8B,KAAd,eAAwB3uB,OAAxB,QAAkC9U,GAAlC,CAAsC,OAAtC,EAA+C,UAA/C,EALuB;;EAOvB2jC,IAAAA,IAAI,CAACt8B,KAAL,6BAAgCyN,OAAhC,QAA0C9U,GAA1C,CAA8C,OAA9C,EAAuD,YAAvD,EAPuB;;EASvB2jC,IAAAA,IAAI,CAACt8B,KAAL,YAAeyN,OAAf,oBAAqC9U,GAArC,CAAyC,OAAzC,EAAkD,WAAlD;EACA2jC,IAAAA,IAAI,CAACt8B,KAAL,uBAA0ByN,OAA1B,QAAoC9U,GAApC,CAAwC,OAAxC,EAAiD,cAAjD,EAVuB;;EAYvB2jC,IAAAA,IAAI,CAACt8B,KAAL,YAAeyN,OAAf,iBAAkC9U,GAAlC,CAAsC,OAAtC,EAA+C,eAA/C;EACA2jC,IAAAA,IAAI,CAACt8B,KAAL,qBAAwByN,OAAxB,QAAkC9U,GAAlC,CAAsC,OAAtC,EAA+C,eAA/C;EAEA,QAAI4jC,KAAK,GAAG17B,GAAG,MAAH,CAAO,OAAP,CAAZ;;EACA,QAAI07B,KAAK,CAAC5lC,KAAN,KAAgB,IAApB,EAA0B;;EAExB4lC,MAAAA,KAAK,CAACv8B,KAAN,CAAY,kCAAZ,EAAgDrH,GAAhD,CAAoD,YAApD,EAAkE,UAAlE,EAFwB;;EAIxB4jC,MAAAA,KAAK,CAACv8B,KAAN,CAAY,gBAAZ,EAA8BrH,GAA9B,CAAkC,YAAlC,EAAgD,YAAhD;EACD;EACF,GA7D4B;;;EA+D7B,MAAI6jC,GAAG,GAAG37B,GAAG,MAAH,CAAO,KAAP,CAAV;;EACA,MAAI27B,GAAG,CAAC7lC,KAAJ,KAAc,IAAlB,EAAwB;;EAEtB6lC,IAAAA,GAAG,CAACx8B,KAAJ,CAAU,aAAV,EAAyBrH,GAAzB,CAA6B,SAA7B,EAAwC,SAAxC,EAFsB;;EAItB6jC,IAAAA,GAAG,CACAx8B,KADH,CACS,kBADT,EAEGrH,GAFH,CAEO,MAFP,EAGG4gC,SAHH,GAIG5gC,GAJH,CAIO,SAJP,EAIkB,aAJlB,EAJsB;;EAUtB6jC,IAAAA,GAAG,CAACx8B,KAAJ,CAAU,mBAAV,EAA+BrH,GAA/B,CAAmC,UAAnC,EAA+C,SAA/C;EACD,GA3E4B;;;EA8E7B,MAAI8jC,GAAG,GAAG57B,GAAG,MAAH,CAAO,KAAP,CAAV;;EACA,MAAI47B,GAAG,CAAC9lC,KAAR,EAAe;;EAEb8lC,IAAAA,GAAG,CAACz8B,KAAJ,CAAU,aAAV,EAAyBrH,GAAzB,CAA6B,SAA7B,EAAwC,SAAxC,EAFa;;EAIb8jC,IAAAA,GAAG,CAACz8B,KAAJ,WAAao8B,KAAb,aAA4BzjC,GAA5B,CAAgC,SAAhC,EAA2C,KAA3C;EACD,GApF4B;;;EAuF7B,MAAI+jC,KAAK,GAAG77B,GAAG,MAAH,CAAO,QAAP,CAAZ;;EACA,MAAI67B,KAAK,CAAC/lC,KAAN,KAAgB,IAApB,EAA0B;;EAExB+lC,IAAAA,KAAK,CAAC18B,KAAN,uBAAkCrH,GAAlC,CAAsC,MAAtC,EAA8C,wBAA9C,EAFwB;;EAIxB+jC,IAAAA,KAAK,CAAC18B,KAAN,CAAY,kBAAZ,EAAgCrH,GAAhC,CAAoC,MAApC,EAA4C,gBAA5C,EAJwB;;EAMxB+jC,IAAAA,KAAK,CAAC18B,KAAN,CAAY,kBAAZ,EAAgCrH,GAAhC,CAAoC,MAApC,EAA4C,gBAA5C,EANwB;;EAQxB+jC,IAAAA,KAAK,CAAC18B,KAAN,CAAY,yBAAZ,EAAuCrH,GAAvC,CAA2C,MAA3C,EAAmD,gBAAnD,EARwB;;EAUxB+jC,IAAAA,KAAK,CAAC18B,KAAN,CAAY,mBAAZ,EAAiCrH,GAAjC,CAAqC,MAArC,EAA6C,iBAA7C;EACD,GAnG4B;;;EAsG7B,MAAIujC,GAAG,GAAGr7B,GAAG,MAAH,CAAO,QAAP,CAAV;;EACA,MAAIq7B,GAAG,CAACvlC,KAAJ,KAAc,IAAlB,EAAwB;;EAEtBulC,IAAAA,GAAG,CAACl8B,KAAJ,CAAU,sBAAV,EAAkCrH,GAAlC,CAAsC,OAAtC,EAA+C,YAA/C,EAFsB;;EAItBujC,IAAAA,GAAG,CAACl8B,KAAJ,CAAU,+BAAV,EAA2CrH,GAA3C,CAA+C,OAA/C,EAAwD,mBAAxD,EAJsB;;EAMtBujC,IAAAA,GAAG,CAACl8B,KAAJ,CAAU,yBAAV,EAAqCrH,GAArC,CAAyC,OAAzC,EAAkD,aAAlD,EANsB;;EAQtBujC,IAAAA,GAAG,CAACl8B,KAAJ,CAAU,cAAV,EAA0BrH,GAA1B,CAA8B,OAA9B,EAAuC,aAAvC,EARsB;;EAUtBujC,IAAAA,GAAG,CAACl8B,KAAJ,CAAU,mCAAV,EAA+CrH,GAA/C,CAAmD,OAAnD,EAA4D,cAA5D,EAVsB;;EAYtBujC,IAAAA,GAAG,CACAl8B,KADH,CACS,0BADT,EAEGo6B,IAFH,CAEQ,QAFR,EAGGzhC,GAHH,CAGO,MAHP,EAGe,YAHf,EAZsB;;EAkBtBujC,IAAAA,GAAG,CACAl8B,KADH,CACS,0BADT,EAEGo6B,IAFH,CAEQ,QAFR,EAGGzhC,GAHH,CAGO,MAHP,EAGe,YAHf,EAlBsB;;EAwBtBujC,IAAAA,GAAG,CACAl8B,KADH,CACS,uBADT,QAEM,OAFN,EAGGrH,GAHH,CAGO,OAHP,EAGgB,gBAHhB;EAID;;EAED,SAAOkI,GAAP;EACD,CAtID;;EAuIA,cAAc,GAAGw7B,QAAjB;;;;;;;;;;;ECxHA,IAAMM,WAAW,GAAG,SAAdA,WAAc,CAAS97B,GAAT,EAAc;;EAEhC+7B,EAAAA,QAAa,CAAC/7B,GAAD,CAAb,CAFgC;;;;EAMhCw5B,EAAAA,UAAQ,CAACx5B,GAAD,CAAR,CANgC;;;;EAUhCi6B,EAAAA,WAAS,CAACj6B,GAAD,CAAT,CAVgC;;;;EAchC46B,EAAAA,SAAO,CAAC56B,GAAD,CAAP,CAdgC;;;;EAkBhCk7B,EAAAA,cAAY,CAACl7B,GAAD,CAAZ,CAlBgC;;;;EAsBhCo7B,EAAAA,UAAQ,CAACp7B,GAAD,CAAR,CAtBgC;;;;EA0BhCw7B,EAAAA,UAAQ,CAACx7B,GAAD,CAAR,CA1BgC;;;;EA8BhCg8B,EAAAA,OAAO,CAACh8B,GAAD,CAAP,CA9BgC;;;EAgChC,SAAOA,GAAP;EACD,CAjCD;;EAkCA,iBAAc,GAAG87B,WAAjB;;EChDA;;EACA,IAAMjX,MAAM,GAAG,SAATA,MAAS,CAAS7kB,GAAT,EAAc;EAC3B,MAAIlC,KAAK,GAAGkC,GAAG,CAAC2lB,QAAJ,EAAZ,CAD2B;;EAG3B3lB,EAAAA,GAAG,GAAGi8B,OAAI,CAACj8B,GAAD,AAAA,CAAV,CAH2B;;EAM3BA,EAAAA,GAAG,GAAG01B,YAAS,CAAC11B,GAAD,AAAA,CAAf,CAN2B;;EAS3BA,EAAAA,GAAG,GAAGqoB,eAAY,CAACroB,GAAD,CAAlB,CAT2B;;EAY3BA,EAAAA,GAAG,CAAC+B,KAAJ,GAZ2B;;EAe3B/B,EAAAA,GAAG,GAAG87B,aAAW,CAAC97B,GAAD,CAAjB,CAf2B;;;;EAqB3BA,EAAAA,GAAG,CAACvH,KAAJ,CAAUkqB,OAAV,CAAkBpuB,OAAlB,CAA0B,UAAAmuB,EAAE,EAAI;EAC9BA,IAAAA,EAAE,CAAC1iB,GAAD,CAAF;EACD,GAFD;EAIA,SAAOA,GAAP;EACD,CA1BD;;EA2BA,aAAc,GAAG6kB,MAAjB;;ECjCA,IAAMqX,SAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExBC,aAFwB;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;EAAA,qCAGb;EACb,aAAKzW,QAAL,GAAgBpxB,OAAhB,CAAwB,UAAAV,CAAC,EAAI;EAC3B,cAAIA,CAAC,CAACkE,IAAF,CAAO0C,YAAP,KAAwB,IAAxB,IAAgC5G,CAAC,CAAC6J,IAAtC,EAA4C;EAC1C7J,YAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACD;;EACD,cAAInD,GAAG,GAAG2B,CAAC,CAAC1B,IAAF,CAAOkD,OAAP,CAAe,IAAf,EAAqB,EAArB,CAAV;EACAxB,UAAAA,CAAC,CAACkN,GAAF,CAAM7O,GAAN;EACD,SAND;EAOA,eAAO,IAAP;EACD;EAZ2B;EAAA;EAAA,mCAaf;EACX,aAAKyzB,QAAL,GAAgBpxB,OAAhB,CAAwB,UAAAV,CAAC,EAAI;EAC3BA,UAAAA,CAAC,CAACgC,IAAF,GAAShC,CAAC,CAACgC,IAAF,CAAOR,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAT;EACAxB,UAAAA,CAAC,CAACgC,IAAF,GAAS,MAAMhC,CAAC,CAACgC,IAAjB;EACD,SAHD;EAIA,eAAO,IAAP;EACD;EAnB2B;;EAAA;EAAA,IAEFsmC,GAFE;;EAqB9BC,EAAAA,aAAa,CAACjgC,SAAd,CAAwB2sB,MAAxB,GAAiCsT,aAAa,CAACjgC,SAAd,CAAwBkgC,YAAzD;;EAEAF,EAAAA,GAAG,CAAChgC,SAAJ,CAAc3B,aAAd,GAA8B,UAASjH,CAAT,EAAY;EACxC,QAAI4L,KAAK,GAAG,KAAKA,KAAL,CAAW,eAAX,CAAZ;;EACA,QAAI,OAAO5L,CAAP,KAAa,QAAjB,EAA2B;EACzB4L,MAAAA,KAAK,GAAGA,KAAK,CAACnB,GAAN,CAAUzK,CAAV,CAAR;EACD;;EACD,WAAO,IAAI6oC,aAAJ,CAAkBj9B,KAAK,CAACW,IAAxB,EAA8B,IAA9B,EAAoC,KAAKrH,KAAzC,CAAP;EACD,GAND;;EAOA,SAAO0jC,GAAP;EACD,CA/BD;;EAgCA,iBAAc,GAAGD,SAAjB;;EChCA,IAAMA,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExBG,QAFwB;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;EAAA,qCAGb;EACb,aAAK3W,QAAL,GAAgBpxB,OAAhB,CAAwB,UAAAV,CAAC,EAAI;EAC3B,cAAI3B,GAAG,GAAG2B,CAAC,CAAC1B,IAAF,CAAOkD,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAV;EACAxB,UAAAA,CAAC,CAACkN,GAAF,CAAM7O,GAAN;EACD,SAHD;EAIA,eAAO,IAAP;EACD;EAT2B;EAAA;EAAA,mCAUf;EACX,aAAKyzB,QAAL,GAAgBpxB,OAAhB,CAAwB,UAAAV,CAAC,EAAI;EAC3B,cAAI3B,GAAG,GAAG2B,CAAC,CAAC1B,IAAF,CAAOkD,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAV;EACAnD,UAAAA,GAAG,GAAGA,GAAG,CAACF,KAAJ,CAAU,EAAV,EAAcyC,IAAd,CAAmB,GAAnB,CAAN;EACAZ,UAAAA,CAAC,CAACkN,GAAF,CAAM7O,GAAN;EACD,SAJD;EAKA,eAAO,IAAP;EACD;EAjB2B;;EAAA;EAAA,IAEPiqC,GAFO;;EAmB9BG,EAAAA,QAAQ,CAACngC,SAAT,CAAmB2sB,MAAnB,GAA4BwT,QAAQ,CAACngC,SAAT,CAAmBkgC,YAA/C;EACAC,EAAAA,QAAQ,CAACngC,SAAT,CAAmBwsB,KAAnB,GAA2B2T,QAAQ,CAACngC,SAAT,CAAmBkgC,YAA9C;;EAEAF,EAAAA,GAAG,CAAChgC,SAAJ,CAAchC,QAAd,GAAyB,UAAS5G,CAAT,EAAY;EACnC,QAAI4L,KAAK,GAAG,KAAKA,KAAL,CAAW,UAAX,CAAZ;;EACA,QAAI,OAAO5L,CAAP,KAAa,QAAjB,EAA2B;EACzB4L,MAAAA,KAAK,GAAGA,KAAK,CAACnB,GAAN,CAAUzK,CAAV,CAAR;EACD;;EACD,WAAO,IAAI+oC,QAAJ,CAAan9B,KAAK,CAACW,IAAnB,EAAyB,IAAzB,EAA+B,KAAKrH,KAApC,CAAP;EACD,GAND;;EAOA,SAAO0jC,GAAP;EACD,CA9BD;;EA+BA,YAAc,GAAGD,WAAjB;;EC/BA,IAAMA,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAE9BA,EAAAA,GAAG,CAAChgC,SAAJ,CAAc8uB,OAAd,GAAwB,UAAS13B,CAAT,EAAY;;EAElC,QAAIgpC,MAAM,GAAG,WAAQ,WAAR,EACVxD,KADU,CACJ,qBADI;EAAA,KAEVA,KAFU,CAEJ,2BAFI;EAAA,KAGVA,KAHU,CAGJ,+BAHI;EAAA,KAIVA,KAJU,CAIJ,4BAJI;EAAA,KAKVA,KALU,CAKJ,uBALI;EAAA,KAMV55B,KANU,CAMJ,WANI,CAAb;EAOA,QAAIrJ,KAAK,GAAG,KAAKqzB,UAAL,CAAgBoT,MAAhB,CAAZ;EAEA,QAAI1U,MAAM,GAAG/xB,KAAK,CAACkyB,UAAN,EAAb;EACAlyB,IAAAA,KAAK,GAAGA,KAAK,CAACkzB,OAAN,CAAcnB,MAAd,CAAR;EAEA,QAAIS,WAAW,GAAGxyB,KAAK,CAACwyB,WAAN,EAAlB;EACAxyB,IAAAA,KAAK,GAAGA,KAAK,CAACkzB,OAAN,CAAcV,WAAd,CAAR,CAfkC;;EAkBlC,QAAIkU,YAAY,GAAG1mC,KAAK,MAAL,CAAS,8DAAT,EAAyEqJ,KAAzE,CAA+E,cAA/E,CAAnB;EACArJ,IAAAA,KAAK,GAAGA,KAAK,CAACszB,WAAN,CAAkBoT,YAAlB,CAAR,CAnBkC;;EAsBlC,QAAIC,SAAS,GAAG3mC,KAAK,MAAL,CAAS,kBAAT,EAA6BqJ,KAA7B,CAAmC,MAAnC,CAAhB;EACArJ,IAAAA,KAAK,GAAGA,KAAK,CAACszB,WAAN,CAAkBqT,SAAlB,CAAR,CAvBkC;;EA0BlC3mC,IAAAA,KAAK,GAAGA,KAAK,CAACszB,WAAN,CAAkB,cAAlB,CAAR;EACAtzB,IAAAA,KAAK,GAAGA,KAAK,CAACszB,WAAN,CAAkB,WAAlB,CAAR;EACAtzB,IAAAA,KAAK,GAAGA,KAAK,CAACszB,WAAN,CAAkB,kBAAlB,CAAR,CA5BkC;;EA+BlCtzB,IAAAA,KAAK,GAAGA,KAAK,CAACqzB,UAAN,CAAiB,eAAjB,CAAR;EACArzB,IAAAA,KAAK,GAAGA,KAAK,CAACqzB,UAAN,CAAiB,UAAjB,CAAR,CAhCkC;;EAmClC,QAAIuT,OAAO,GAAG5mC,KAAK,CAAC2I,MAAN,CAAa,UAAA5L,CAAC;EAAA,aAAIA,CAAC,CAACwwB,SAAF,KAAgB,CAAhB,IAAqBxwB,CAAC,CAACsM,KAAF,CAAQ,QAAR,EAAkB3M,MAAlB,IAA4B,CAArD;EAAA,KAAd,CAAd;;EACA,QAAIkqC,OAAO,CAAC5mC,KAAZ,EAAmB;EACjB,UAAIxC,CAAC,GAAGopC,OAAO,CAACvT,UAAR,CAAmB,0BAAnB,CAAR;EACArzB,MAAAA,KAAK,GAAGA,KAAK,CAACkzB,OAAN,CAAc11B,CAAC,CAACiwB,EAAF,CAAK,CAAL,CAAd,CAAR;EACD;;EAED,QAAI,OAAOhwB,CAAP,KAAa,QAAjB,EAA2B;EACzBuC,MAAAA,KAAK,GAAGA,KAAK,CAACkI,GAAN,CAAUzK,CAAV,CAAR;EACD;;EACD,WAAO,IAAI4oC,GAAJ,CAAQrmC,KAAK,CAACgK,IAAd,EAAoB,IAApB,EAA0B,KAAKrH,KAA/B,CAAP;EACD,GA7CD;;EA8CA,SAAO0jC,GAAP;EACD,CAjDD;;EAkDA,WAAc,GAAGD,WAAjB;;EClDA,IAAMA,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExBQ,YAFwB;EAAA;EAAA;EAAA;;EAG5B,0BAAY78B,IAAZ,EAAkBojB,IAAlB,EAAwBzqB,KAAxB,EAA+B;EAAA;;EAAA;;EAC7B,wFAAMqH,IAAN,EAAYojB,IAAZ,EAAkBzqB,KAAlB;EACA,YAAKmkC,UAAL,GAAkB,IAAlB;EAF6B;EAG9B;;;;EAN2B;EAAA;EAAA,+BAQnB;EACP,aAAK98B,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,cAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ,CADqB;;EAGrB,cAAI++B,WAAW,GAAG/+B,KAAK,CAAC,CAAD,CAAL,CAASrH,WAAT,EAAlB;EAEAqH,UAAAA,KAAK,CAACvJ,OAAN,CAAc,UAACV,CAAD,EAAIzB,CAAJ,EAAU;;;EAGtByB,YAAAA,CAAC,CAACkN,GAAF,CAAMlN,CAAC,CAACoD,QAAF,IAAcpD,CAAC,CAAC1B,IAAtB;EACA0B,YAAAA,CAAC,CAACoD,QAAF,GAAaS,SAAb,CAJsB;;EAOtB,gBAAItF,CAAC,GAAG0L,KAAK,CAACtL,MAAN,GAAe,CAAnB,IAAwBqB,CAAC,CAACgC,IAAF,KAAW,EAAvC,EAA2C;EACzChC,cAAAA,CAAC,CAACgC,IAAF,IAAU,GAAV;EACD;EACF,WAVD,EALqB;;EAiBrB,cAAIgnC,WAAJ,EAAiB;EACf/+B,YAAAA,KAAK,CAAC,CAAD,CAAL,CAASyrB,WAAT;EACD;EACF,SApBD;EAqBA,eAAO,IAAP;EACD;EA/B2B;;EAAA;EAAA,IAEH4S,GAFG;;;;;;;;;;;EA4C9BA,EAAAA,GAAG,CAAChgC,SAAJ,CAAcksB,YAAd,GAA6B,UAAS90B,CAAT,EAAY;;EAEvC,QAAIuC,KAAK,GAAG,KAAKqJ,KAAL,CAAW,kBAAX,CAAZ,CAFuC;;;EAIvC,QAAI,OAAO5L,CAAP,KAAa,QAAjB,EAA2B;EACzBuC,MAAAA,KAAK,GAAGA,KAAK,CAACkI,GAAN,CAAUzK,CAAV,CAAR;EACD;;EACD,WAAO,IAAIopC,YAAJ,CAAiB7mC,KAAK,CAACgK,IAAvB,EAA6B,IAA7B,EAAmC,KAAKrH,KAAxC,CAAP;EACD,GARD,CA5C8B;;;EAuD9B0jC,EAAAA,GAAG,CAAChgC,SAAJ,CAAc2gC,QAAd,GAAyBX,GAAG,CAAChgC,SAAJ,CAAc4gC,UAAvC;EACAZ,EAAAA,GAAG,CAAChgC,SAAJ,CAAcygC,UAAd,GAA2BT,GAAG,CAAChgC,SAAJ,CAAc6gC,YAAzC;EACA,SAAOb,GAAP;EACD,CA1DD;;EA2DA,gBAAc,GAAGD,WAAjB;;EC3DA,IAAMA,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAE9B,MAAMp0B,KAAK,GAAG,SAARA,KAAQ,CAAS/H,GAAT,EAAc;EAC1B,QAAIsrB,MAAM,GAAGtrB,GAAG,CAACmpB,UAAJ,CAAe,WAAf,EAA4B1F,GAA5B,CAAgC,eAAhC,CAAb;EACA,QAAIwZ,UAAU,GAAGj9B,GAAG,CAACb,KAAJ,CAAU,cAAV,CAAjB;EACA,WAAO;EACLmsB,MAAAA,MAAM,EAAEA,MADH;EAEL4R,MAAAA,WAAW,EAAEl9B,GAAG,CAACb,KAAJ,CAAU,eAAV,CAFR;EAGL89B,MAAAA,UAAU,EAAEA,UAHP;EAILE,MAAAA,SAAS,EAAEF,UAAU,CAACvZ,GAAX,CAAe,WAAf;EAJN,KAAP;EAMD,GATD;;;;EAF8B,MAcxB0Z,KAdwB;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;;EAAA,qCAgBb;EACb,eAAO,KAAKj+B,KAAL,CAAW,UAAX,CAAP;EACD;;;EAlB2B;EAAA;EAAA,8BAoBpB;EACN,eAAO,KAAKgqB,UAAL,CAAgB,0BAAhB,CAAP;EACD;;;EAtB2B;EAAA;EAAA,8BAwBpB;EACN,eAAO,KAAKD,KAAL,GAAa6P,KAAb,CAAmB,cAAnB,CAAP;EACD;;;EA1B2B;EAAA;EAAA,0BA4BxB7mC,GA5BwB,EA4BnB;EACP,aAAKqC,OAAL,CAAa,UAAAd,CAAC,EAAI;EAChB,cAAIwpC,UAAU,GAAGl1B,KAAK,CAACtU,CAAD,CAAL,CAASwpC,UAA1B;EACAA,UAAAA,UAAU,CAACj8B,MAAX,CAAkB9O,GAAlB,EAFgB;;EAIhB+qC,UAAAA,UAAU,CAACtX,QAAX,CAAoB,CAApB,EAAuB0X,cAAvB,CAAsC,GAAtC;EACD,SALD;EAMA,eAAO,IAAP;EACD;;;EApC2B;EAAA;EAAA,+BAsCnB;EACP,eAAO,IAAP;EACD;;;EAxC2B;EAAA;EAAA,uCA2CX;EACf,eAAO,KAAK5+B,MAAL,CAAY,UAAAuB,GAAG;EAAA,iBAAI+H,KAAK,CAAC/H,GAAD,CAAL,CAAWm9B,SAAf;EAAA,SAAf,CAAP;EACD;EA7C2B;EAAA;EAAA,uCA8CX;EACf,eAAO,IAAP;EACD;EAhD2B;EAAA;EAAA,0CAiDR;EAClB,eAAO,IAAP;EACD;EAnD2B;;EAAA;EAAA,IAcVhB,GAdU;;;EAsD9BiB,EAAAA,KAAK,CAACjhC,SAAN,CAAgBmvB,MAAhB,GAAyB8R,KAAK,CAACjhC,SAAN,CAAgBmhC,KAAzC;;EAEAnB,EAAAA,GAAG,CAAChgC,SAAJ,CAAcohC,KAAd,GAAsB,UAAShqC,CAAT,EAAY;EAChC,QAAID,CAAC,GAAG,WAAQ,+BAAR,CAAR,CADgC;;EAIhC,QAAIkqC,QAAQ,GAAGlqC,CAAC,CAAC6L,KAAF,CAAQ,0DAAR,CAAf;EACA,QAAIs+B,OAAO,GAAGnqC,CAAC,CAAC6L,KAAF,CAAQ,8DAAR,CAAd;EACA,QAAIu+B,QAAQ,GAAGpqC,CAAC,CAAC6L,KAAF,CAAQ,oDAAR,CAAf;EACA,QAAI7G,MAAM,GAAGklC,QAAQ,CAACp9B,MAAT,CAAgBq9B,OAAhB,CAAb;EACAnlC,IAAAA,MAAM,GAAGA,MAAM,CAAC8H,MAAP,CAAcs9B,QAAd,CAAT;EACAplC,IAAAA,MAAM,GAAGA,MAAM,MAAN,CAAU,WAAV,CAAT;;EAEA,QAAI,OAAO/E,CAAP,KAAa,QAAjB,EAA2B;EACzB+E,MAAAA,MAAM,GAAGhF,CAAC,CAAC0K,GAAF,CAAMzK,CAAN,CAAT;EACD;;EACD,WAAO,IAAI6pC,KAAJ,CAAU9kC,MAAM,CAACwH,IAAjB,EAAuB,IAAvB,EAA6B,KAAKrH,KAAlC,CAAP;EACD,GAfD;;EAgBA,SAAO0jC,GAAP;EACD,CAzED;;EA0EA,SAAc,GAAGD,WAAjB;;EC1EA,IAAMyB,QAAQ,GACZ,oFADF;;EAIA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAS59B,GAAT,EAAc;EAC9B,MAAIA,GAAG,CAAC0jB,GAAJ,CAAQ,SAAR,MAAuB,IAA3B,EAAiC;EAC/B,WAAO,IAAP;EACD,GAH6B;;;EAK9B,MAAI1jB,GAAG,CAAC0jB,GAAJ,CAAQia,QAAR,MAAsB,IAA1B,EAAgC;EAC9B,WAAO,KAAP;EACD;;EACD,SAAO,IAAP;EACD,CATD;;EAWA,eAAc,GAAGC,SAAjB;;ECZA,IAAMjvB,YAAU,GAAG;EACjBkvB,EAAAA,IAAI,EAAE,IADW;EAEjBC,EAAAA,IAAI,EAAE,IAFW;EAGjBC,EAAAA,QAAQ,EAAE,IAHO;EAIjBC,EAAAA,MAAM,EAAE,IAJS;EAKjBC,EAAAA,MAAM,EAAE,IALS;EAMjBC,EAAAA,KAAK,EAAE,IANU;EAOjBC,EAAAA,IAAI,EAAE,IAPW;;EAAA,CAAnB;;EAUA,IAAMC,WAAW,GAAG;EAClB1rC,EAAAA,CAAC,EAAE,IADe;EAElBI,EAAAA,CAAC,EAAE,IAFe;EAGlBC,EAAAA,CAAC,EAAE,IAHe;EAIlBE,EAAAA,CAAC,EAAE,IAJe;EAKlBb,EAAAA,CAAC,EAAE,IALe;EAMlBiB,EAAAA,CAAC,EAAE,IANe;EAOlBC,EAAAA,CAAC,EAAE,IAPe;EAQlBC,EAAAA,CAAC,EAAE,IARe;EASlBC,EAAAA,CAAC,EAAE,IATe;EAUlBG,EAAAA,CAAC,EAAE,IAVe;EAWlBC,EAAAA,CAAC,EAAE,IAXe;EAYlBK,EAAAA,CAAC,EAAE;EAZe,CAApB;;EAeA,IAAMoqC,QAAQ,GAAG,CACf,SADe;EAEf,yBAFe;EAGf,OAHe,CAAjB;;EAMA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAASt+B,GAAT,EAAc;;EAEhC,MAAIA,GAAG,CAAC0jB,GAAJ,CAAQ,SAAR,KAAsB1jB,GAAG,CAAC0jB,GAAJ,CAAQ,QAAR,CAA1B,EAA6C;EAC3C,WAAO,EAAP;EACD,GAJ+B;;;EAMhC,MAAI1jB,GAAG,CAAC0jB,GAAJ,CAAQ,SAAR,CAAJ,EAAwB;EACtB,WAAO,KAAP;EACD;;EACD,MAAIxxB,GAAG,GAAG8N,GAAG,CAAC7N,IAAJ,CAAS,QAAT,EAAmBgD,IAAnB,EAAV,CATgC;;EAWhC,MAAIwZ,YAAU,CAAChX,cAAX,CAA0BzF,GAA1B,CAAJ,EAAoC;EAClC,WAAOyc,YAAU,CAACzc,GAAD,CAAjB;EACD,GAb+B;;;EAehC,MAAIqsC,WAAW,GAAGrsC,GAAG,CAACoK,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAlB;;EACA,MAAI0D,GAAG,CAAC0jB,GAAJ,CAAQ,aAAR,KAA0B0a,WAAW,CAACzmC,cAAZ,CAA2B4mC,WAA3B,CAA9B,EAAuE;EACrE,WAAO,IAAP;EACD,GAlB+B;;;EAoBhC,OAAK,IAAInsC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGisC,QAAQ,CAAC7rC,MAA7B,EAAqCJ,CAAC,EAAtC,EAA0C;EACxC,QAAIisC,QAAQ,CAACjsC,CAAD,CAAR,CAAY2C,IAAZ,CAAiB7C,GAAjB,CAAJ,EAA2B;EACzB,aAAO,GAAP;EACD;EACF,GAxB+B;;;EA0BhC,MAAI,YAAY6C,IAAZ,CAAiB7C,GAAjB,CAAJ,EAA2B;EACzB,WAAO,IAAP;EACD;;EACD,SAAO,GAAP;EACD,CA9BD;;EAgCA,cAAc,GAAGosC,WAAjB;;EClEA;EACA,IAAMxJ,UAAQ,GAAG,CACf,uCADe,EAEf,4CAFe,EAGf,OAHe,EAIf,QAJe,EAKf,YALe,CAAjB;;EASA,IAAMC,YAAU,GAAG,CACjB,eADiB,EAEjB,6CAFiB,EAGjB,gBAHiB,EAIjB,SAJiB,EAKjB,kBALiB,EAMjB,SANiB,EAOjB,2BAPiB,EAQjB,UARiB,EASjB,SATiB,EAUjB,OAViB,EAWjB,oBAXiB,EAYjB,QAZiB,EAajB,iBAbiB,EAcjB,kBAdiB,EAejB,+BAfiB,EAgBjB,aAhBiB,EAiBjB,YAjBiB,EAkBjB,sCAlBiB,EAmBjB,QAnBiB,EAoBjB,0BApBiB,CAAnB;EAsBA,YAAc,GAAG;EACfA,EAAAA,UAAU,EAAEA,YADG;EAEfD,EAAAA,QAAQ,EAAEA;EAFK,CAAjB;;EC/BA,IAAM0J,IAAI,GAAG,IAAb;;;;EAIA,IAAM1J,UAAQ,GAAG,SAAXA,QAAW,CAAS5iC,GAAT,EAAc;;EAE7B,MAAIkvB,QAAK,CAAC2T,UAAN,CAAiBl0B,IAAjB,CAAsB,UAAAzJ,GAAG;EAAA,WAAIA,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,CAAJ;EAAA,GAAzB,CAAJ,EAAiD;EAC/C,WAAO,KAAP;EACD,GAJ4B;;;EAM7B,MAAIssC,IAAI,CAACzpC,IAAL,CAAU7C,GAAV,MAAmB,IAAvB,EAA6B;EAC3B,WAAO,IAAP;EACD,GAR4B;;;EAU7B,MAAIkvB,QAAK,CAAC0T,QAAN,CAAej0B,IAAf,CAAoB,UAAAzJ,GAAG;EAAA,WAAIA,GAAG,CAACrC,IAAJ,CAAS7C,GAAT,CAAJ;EAAA,GAAvB,CAAJ,EAA+C;EAC7C,WAAO,IAAP;EACD;;EACD,SAAO,IAAP;EACD,CAdD;;EAeA,gBAAc,GAAG4iC,UAAjB;;ECpBA,IAAM2J,UAAU,GAAG;EACjBC,EAAAA,EAAE,EAAE,KADa;EAEjBC,EAAAA,GAAG,EAAE,MAFY;EAGjBC,EAAAA,IAAI,EAAE,QAHW;EAIjBC,EAAAA,EAAE,EAAE,MAJa;EAKjBzsC,EAAAA,CAAC,EAAE,MALc;EAMjB4gC,EAAAA,GAAG,EAAE,OANY;EAQjB8L,EAAAA,GAAG,EAAE,MARY;EASjBC,EAAAA,KAAK,EAAE,QATU;EAUjBC,EAAAA,GAAG,EAAE,MAVY;EAWjBC,EAAAA,EAAE,EAAE,MAXa;EAYjBC,EAAAA,IAAI,EAAE;EAZW,CAAnB;;EAgBA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAASn/B,GAAT,EAAc;EACjC,MAAI9N,GAAG,GAAG8N,GAAG,CAAC7N,IAAJ,CAAS,MAAT,EAAiBgD,IAAjB,EAAV,CADiC;;EAGjC,MAAIspC,UAAU,CAAC9mC,cAAX,CAA0BzF,GAA1B,CAAJ,EAAoC;EAClC8N,IAAAA,GAAG,CAACglB,WAAJ,CAAgByZ,UAAU,CAACvsC,GAAD,CAA1B,EAAiC,IAAjC,EAAuC,IAAvC;EACA8N,IAAAA,GAAG,CAAClI,GAAJ,CAAQ,YAAR,EAAsB,cAAtB;EACA;EACD,GAPgC;;;EASjC,MAAI,KAAK/C,IAAL,CAAU7C,GAAV,CAAJ,EAAoB;EAClBA,IAAAA,GAAG,IAAI,GAAP;EACA8N,IAAAA,GAAG,CAACglB,WAAJ,CAAgB9yB,GAAhB,EAAqB,IAArB,EAA2B,IAA3B;EACA8N,IAAAA,GAAG,CAAClI,GAAJ,CAAQ,YAAR,EAAsB,cAAtB;EACA;EACD,GAdgC;;;EAgBjC5F,EAAAA,GAAG,IAAI,IAAP;EACA8N,EAAAA,GAAG,CAACglB,WAAJ,CAAgB9yB,GAAhB,EAAqB,IAArB,EAA2B,IAA3B;EACA8N,EAAAA,GAAG,CAAClI,GAAJ,CAAQ,YAAR,EAAsB,cAAtB;EACA;EACD,CApBD;;EAqBA,kBAAc,GAAGqnC,YAAjB;;ECrCA;;EAEA,IAAMp3B,OAAK,GAAG,SAARA,KAAQ,CAAS/H,GAAT,EAAc;EAC1B,MAAIsB,GAAG,GAAG;EACR9B,IAAAA,IAAI,EAAEQ;EADE,GAAV,CAD0B;;EAK1B,MAAIA,GAAG,CAAC0jB,GAAJ,CAAQ,qBAAR,CAAJ,EAAoC;EAClC,QAAIpwB,CAAC,GAAG0M,GAAG,CAACmpB,UAAJ,CAAe,UAAf,CAAR;EACA7nB,IAAAA,GAAG,CAAC9B,IAAJ,GAAWlM,CAAC,CAACiwB,EAAF,CAAK,CAAL,CAAX;EACAjiB,IAAAA,GAAG,CAACzL,IAAJ,GAAWvC,CAAC,CAACiwB,EAAF,CAAK,CAAL,CAAX;EACD;;EACD,SAAOjiB,GAAP;EACD,CAXD;;EAYA,WAAc,GAAGyG,OAAjB;;ECRA,IAAMnK,SAAO,GAAG;;EAEd2D,EAAAA,IAAI,EAAE,cAAS7H,OAAT,EAAkB;EACtB,QAAInG,CAAC,GAAG,IAAR;;EACA,QAAI,OAAOmG,OAAP,KAAmB,QAAvB,EAAiC;EAC/BnG,MAAAA,CAAC,GAAGmG,OAAJ;EACAA,MAAAA,OAAO,GAAG,IAAV;EACD;;EACDA,IAAAA,OAAO,GAAGA,OAAO,IAAI;EAAEvH,MAAAA,IAAI,EAAE,IAAR;EAAc2H,MAAAA,MAAM,EAAE,IAAtB;EAA4B3E,MAAAA,IAAI,EAAE,IAAlC;EAAwC2I,MAAAA,KAAK,EAAE;EAA/C,KAArB;EACA,QAAIwD,GAAG,GAAG,EAAV;EACA,SAAK/M,OAAL,CAAa,UAAAyL,GAAG,EAAI;EAClB,UAAIuB,IAAI,GAAGvB,GAAG,CAACuB,IAAJ,CAAS7H,OAAT,EAAkB,CAAlB,CAAX;EACA6H,MAAAA,IAAI,CAAC69B,OAAL,GAAeC,UAAU,CAACr/B,GAAD,CAAzB;EACAsB,MAAAA,GAAG,CAACpD,IAAJ,CAASqD,IAAT;EACD,KAJD;;EAKA,QAAIhO,CAAC,KAAK,IAAV,EAAgB;EACd,aAAO+N,GAAG,CAAC/N,CAAD,CAAV;EACD;;EACD,WAAO+N,GAAP;EACD,GAnBa;EAqBdwzB,EAAAA,QAAQ,EAAE,oBAAW;EACnB,WAAO,WAAQ,SAAR,CAAP,CADmB;EAEpB,GAvBa;EAwBd8I,EAAAA,SAAS,EAAE,qBAAW;EACpB,WAAO,KAAKn/B,MAAL,CAAY,UAAA5L,CAAC;EAAA,aAAI+qC,WAAS,CAAC/qC,CAAD,CAAb;EAAA,KAAb,CAAP;EACD,GA1Ba;EA2Bdyb,EAAAA,QAAQ,EAAE,oBAAW;EAAA;;EACnB,QAAIA,QAAQ,GAAG,KAAK7V,KAAL,CAAWE,UAAX,CAAsB2V,QAArC;EACA,SAAK/Z,OAAL,CAAa,UAAAyL,GAAG,EAAI;EAClB,UAAIA,GAAG,CAAC0jB,GAAJ,CAAQ,SAAR,KAAsBka,WAAS,CAAC59B,GAAD,CAAT,KAAmB,KAA7C,EAAoD;EAClD;EACD,OAHiB;;;EAKlB,UAAIR,IAAI,GAAGuI,OAAK,CAAC/H,GAAD,CAAL,CAAWR,IAAtB;EACA,UAAItN,GAAG,GAAGsN,IAAI,CAACrN,IAAL,EAAV;;EACA,UAAI,CAACqN,IAAI,CAACkkB,GAAL,CAAS,WAAT,CAAD,IAA0BoR,YAAQ,CAAC5iC,GAAD,CAAR,KAAkB,IAAhD,EAAsD;EACpD;EACD;;EACDA,MAAAA,GAAG,GAAGoc,QAAQ,CAACpc,GAAD,EAAM,KAAI,CAACuG,KAAX,CAAd;EACA+G,MAAAA,IAAI,CAACnK,OAAL,CAAanD,GAAb,EAAkB4F,GAAlB,CAAsB,SAAtB;EACD,KAZD;EAaA,WAAO,IAAP;EACD,GA3Ca;EA4Cde,EAAAA,UAAU,EAAE,sBAAW;EAAA;;EACrB,QAAIA,UAAU,GAAG,KAAKJ,KAAL,CAAWE,UAAX,CAAsBE,UAAvC;EACA,SAAKtE,OAAL,CAAa,UAAAyL,GAAG,EAAI;EAClB,UAAIA,GAAG,CAAC0jB,GAAJ,CAAQ,WAAR,KAAwBka,WAAS,CAAC59B,GAAD,CAAT,KAAmB,KAA/C,EAAsD;EACpD;EACD,OAHiB;;;EAKlB,UAAIR,IAAI,GAAGuI,OAAK,CAAC/H,GAAD,CAAL,CAAWR,IAAtB;EACA,UAAItN,GAAG,GAAGsN,IAAI,CAACrN,IAAL,EAAV;;EACA,UAAI,CAACqN,IAAI,CAACkkB,GAAL,CAAS,SAAT,CAAD,IAAwBoR,YAAQ,CAAC5iC,GAAD,CAAR,KAAkB,IAA9C,EAAoD;EAClD;EACD;;EACDA,MAAAA,GAAG,GAAG2G,UAAU,CAAC3G,GAAD,EAAM,MAAI,CAACuG,KAAX,CAAhB;EACA+G,MAAAA,IAAI,CAACnK,OAAL,CAAanD,GAAb,EAAkB4F,GAAlB,CAAsB,WAAtB;EACD,KAZD;EAaA,WAAO,IAAP;EACD,GA5Da;EA6DdqnC,EAAAA,YAAY,EAAE,wBAAW;EACvB,SAAK5qC,OAAL,CAAa,UAAA1B,CAAC,EAAI;EAChBssC,MAAAA,cAAY,CAACtsC,CAAD,CAAZ;EACD,KAFD;EAGA,WAAO,IAAP;EACD;EAlEa,CAAhB;EAoEA,aAAc,GAAG+K,SAAjB;;ECxEA,IAAMs+B,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExBmD,KAFwB;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA,IAEVnD,GAFU;;;EAI9B9nC,EAAAA,MAAM,CAACiH,MAAP,CAAcgkC,KAAK,CAACnjC,SAApB,EAA+ByB,SAA/B;;EAEAu+B,EAAAA,GAAG,CAAChgC,SAAJ,CAAcwQ,KAAd,GAAsB,UAASpZ,CAAT,EAAY;EAChC,QAAI4L,KAAK,GAAG,KAAK8rB,OAAL,EAAZ;EACA9rB,IAAAA,KAAK,GAAGA,KAAK,CAACA,KAAN,CAAY,8BAAZ,CAAR,CAFgC;;EAIhCA,IAAAA,KAAK,GAAGA,KAAK,CAACskB,GAAN,CAAU,UAAV,CAAR;EACAtkB,IAAAA,KAAK,GAAGA,KAAK,CAACskB,GAAN,CAAU,eAAV,CAAR;EACAtkB,IAAAA,KAAK,GAAGA,KAAK,CAACskB,GAAN,CAAU,mBAAV,CAAR,CANgC;;;EAQhCtkB,IAAAA,KAAK,GAAGA,KAAK,CAACskB,GAAN,CAAU,6BAAV,CAAR;EACAtkB,IAAAA,KAAK,GAAGA,KAAK,CAACskB,GAAN,CAAU,kBAAV,CAAR;;EAEA,QAAI,OAAOlwB,CAAP,KAAa,QAAjB,EAA2B;EACzB4L,MAAAA,KAAK,GAAGA,KAAK,CAACnB,GAAN,CAAUzK,CAAV,CAAR;EACD;;EACD,WAAO,IAAI+rC,KAAJ,CAAUngC,KAAK,CAACW,IAAhB,EAAsB,IAAtB,EAA4B,KAAKrH,KAAjC,CAAP;EACD,GAfD;;EAgBA,SAAO0jC,GAAP;EACD,CAvBD;;EAwBA,SAAc,GAAGD,WAAjB;;EC1BA,IAAMqD,IAAI,GAAG,IAAb;EACA,IAAMC,KAAK,GAAG,IAAd;;EAEA,IAAMtD,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExBsD,WAFwB;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;;EAAA,+BAInB;EACP,aAAK3/B,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,cAAIsQ,KAAK,GAAGtQ,CAAC,CAACqK,KAAF,CAAQ,CAAR,CAAZ;EACAiG,UAAAA,KAAK,CAACnO,GAAN,GAAYmO,KAAK,CAACnO,GAAN,CAAUP,OAAV,CAAkBkqC,IAAlB,EAAwB,EAAxB,CAAZ;EACA,cAAIllC,IAAI,GAAG5G,CAAC,CAACuL,QAAF,EAAX;EACA3E,UAAAA,IAAI,CAACxE,IAAL,GAAYwE,IAAI,CAACxE,IAAL,CAAUR,OAAV,CAAkBmqC,KAAlB,EAAyB,EAAzB,CAAZ;EACD,SALD;EAMA,eAAO,IAAP;EACD;EAZ2B;;EAAA;EAAA,IAEJrD,GAFI;;EAe9BA,EAAAA,GAAG,CAAChgC,SAAJ,CAAcmsB,WAAd,GAA4B,UAAS/0B,CAAT,EAAY;EACtC,QAAIuM,IAAI,GAAG,EAAX;EACA,SAAKA,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ,CADqB;;EAGrB,WAAK,IAAI1L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,IAAI,CAAvC,EAA0C;EACxC,YAAMyB,CAAC,GAAGiK,KAAK,CAAC1L,CAAD,CAAf;;EACA,YAAImtC,IAAI,CAACxqC,IAAL,CAAUlB,CAAC,CAAC+B,GAAZ,CAAJ,EAAsB;;EAEpB,eAAK,IAAIpC,CAAC,GAAGpB,CAAb,EAAgBoB,CAAC,GAAGsK,KAAK,CAACtL,MAA1B,EAAkCgB,CAAC,IAAI,CAAvC,EAA0C;EACxC,gBAAIgsC,KAAK,CAACzqC,IAAN,CAAW+I,KAAK,CAACtK,CAAD,CAAL,CAASqC,IAApB,CAAJ,EAA+B;EAC7B,kBAAIqW,GAAG,GAAG1Y,CAAC,GAAGpB,CAAJ,GAAQ,CAAlB;EACA0N,cAAAA,IAAI,CAAC5B,IAAL,CAAUzK,CAAC,CAAC2K,SAAF,CAAYvK,CAAC,CAACyD,EAAd,EAAkB4U,GAAlB,CAAV;EACA9Z,cAAAA,CAAC,GAAGoB,CAAJ;EACA;EACD;EACF;EACF;EACF;EACF,KAjBD,EAFsC;;EAqBtC,QAAI,OAAOD,CAAP,KAAa,QAAjB,EAA2B;EACzB,UAAIuM,IAAI,CAACvM,CAAD,CAAR,EAAa;EACXuM,QAAAA,IAAI,GAAG,CAACA,IAAI,CAACvM,CAAD,CAAL,CAAP;EACD,OAFD,MAEO;EACLuM,QAAAA,IAAI,GAAG,EAAP;EACD;;EACD,aAAO,IAAI2/B,WAAJ,CAAgB3/B,IAAhB,EAAsB,IAAtB,EAA4B,KAAKrH,KAAjC,CAAP;EACD;;EACD,WAAO,IAAIgnC,WAAJ,CAAgB3/B,IAAhB,EAAsB,IAAtB,EAA4B,KAAKrH,KAAjC,CAAP;EACD,GA9BD;;EAgCA,SAAO0jC,GAAP;EACD,CAhDD;;EAiDA,eAAc,GAAGD,WAAjB;;ECpDA,IAAMA,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExBuD,WAFwB;EAAA;EAAA;EAAA;;EAG5B,yBAAY5/B,IAAZ,EAAkBojB,IAAlB,EAAwBzqB,KAAxB,EAA+B;EAAA;;EAAA;;EAC7B,uFAAMqH,IAAN,EAAYojB,IAAZ,EAAkBzqB,KAAlB;EACA,YAAKmkC,UAAL,GAAkB,IAAlB;EAF6B;EAG9B;;;;EAN2B;EAAA;EAAA,8BAQpB;EACN,aAAK98B,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,cAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ;EACAA,UAAAA,KAAK,CAACvJ,OAAN,CAAc,UAAAV,CAAC,EAAI;EACjB,gBAAI3B,GAAG,GAAG2B,CAAC,CAAC1B,IAAF,CAAOkD,OAAP,CAAe,KAAf,EAAsB,EAAtB,CAAV;EACAxB,YAAAA,CAAC,CAACkN,GAAF,CAAM7O,GAAG,IAAI2B,CAAC,CAAC1B,IAAf;EACD,WAHD;EAID,SAND;EAOA,eAAO,IAAP;EACD;EAjB2B;;EAAA;EAAA,IAEJgqC,GAFI;;;;;;;;;;;EA8B9BA,EAAAA,GAAG,CAAChgC,SAAJ,CAAcosB,WAAd,GAA4B,UAASh1B,CAAT,EAAY;;EAEtC,QAAIuC,KAAK,GAAG,KAAKqJ,KAAL,CAAW,qBAAX,CAAZ,CAFsC;;EAItC,QAAI,OAAO5L,CAAP,KAAa,QAAjB,EAA2B;EACzBuC,MAAAA,KAAK,GAAGA,KAAK,CAACkI,GAAN,CAAUzK,CAAV,CAAR;EACD;;EACD,WAAO,IAAImsC,WAAJ,CAAgB5pC,KAAK,CAACgK,IAAtB,EAA4B,IAA5B,EAAkC,KAAKrH,KAAvC,CAAP;EACD,GARD;;EASA,SAAO0jC,GAAP;EACD,CAxCD;;EAyCA,eAAc,GAAGD,WAAjB;;ECzCA,IAAMyD,KAAK,GAAG;EACZ,QAAU,IADE;;EAEZ,YAAU,QAFE;;EAGZ,OAAU,GAHE;;EAIZ,YAAU,QAJE;;EAKZ,YAAU,QALE;;EAMZ,YAAU,QANE;;EAOZ,YAAU,QAPE;;EAQZ,YAAU,QARE;;EASZ,YAAU,QATE;;EAUZ,YAAU,QAVE;;EAWZ,UAAU,MAXE;;EAYZ,YAAU,QAZE;;;EAcZ,YAAU,QAdE;;EAeZ,YAAU,QAfE;;EAgBZ,YAAU,QAhBE;;;EAkBZ,YAAU,QAlBE;;EAmBZ,OAAU,MAnBE;;EAoBZ,YAAU,QApBE;;EAAA,CAAd;EAuBA,IAAMC,OAAO,GAAGr8B,MAAM,CAAC,MAAMlP,MAAM,CAACC,IAAP,CAAYqrC,KAAZ,EAAmBlrC,IAAnB,CAAwB,GAAxB,CAAN,GAAqC,GAAtC,CAAtB;;EAEA,IAAMynC,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExB0D,UAFwB;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;;EAAA,+BAInB;EACP,eAAO,IAAP;EACD;EAN2B;;EAAA;EAAA,IAEL1D,GAFK;;EAS9BA,EAAAA,GAAG,CAAChgC,SAAJ,CAAc6rB,UAAd,GAA2B,UAASz0B,CAAT,EAAY;EACrC,QAAIuM,IAAI,GAAG,EAAX;EACA,SAAKA,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIqK,KAAK,GAAGrK,CAAC,CAACqK,KAAF,EAAZ,CADqB;;EAGrB,WAAK,IAAI1L,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0L,KAAK,CAACtL,MAA1B,EAAkCJ,CAAC,IAAI,CAAvC,EAA0C;EACxC,YAAMyB,CAAC,GAAGiK,KAAK,CAAC1L,CAAD,CAAf;;EACA,YAAIwtC,OAAO,CAAC7qC,IAAR,CAAalB,CAAC,CAAC+B,GAAf,CAAJ,EAAyB;EACvB,cAAIk8B,KAAI,GAAG,CAACj+B,CAAC,CAAC+B,GAAF,CAAMuJ,KAAN,CAAYygC,OAAZ,KAAwB,EAAzB,EAA6B,CAA7B,CAAX;EACA,cAAIE,IAAI,GAAGH,KAAK,CAAC7N,KAAD,CAAhB,CAFuB;;;;;EAOvB,eAAK,IAAIt+B,CAAC,GAAGpB,CAAb,EAAgBoB,CAAC,GAAGsK,KAAK,CAACtL,MAA1B,EAAkCgB,CAAC,IAAI,CAAvC,EAA0C;EACxC,gBAAIsK,KAAK,CAACtK,CAAD,CAAL,CAASqC,IAAT,CAAcgB,OAAd,CAAsBipC,IAAtB,MAAgC,CAAC,CAArC,EAAwC;EACtC,kBAAI5zB,GAAG,GAAG1Y,CAAC,GAAGpB,CAAJ,GAAQ,CAAlB;EACA0N,cAAAA,IAAI,CAAC5B,IAAL,CAAUzK,CAAC,CAAC2K,SAAF,CAAYvK,CAAC,CAACyD,EAAd,EAAkB4U,GAAlB,CAAV;EACA9Z,cAAAA,CAAC,GAAGoB,CAAJ;EACA;EACD;EACF;EACF;EACF;EACF,KAtBD,EAFqC;;EA0BrC,QAAI,OAAOD,CAAP,KAAa,QAAjB,EAA2B;EACzB,UAAIuM,IAAI,CAACvM,CAAD,CAAR,EAAa;EACXuM,QAAAA,IAAI,GAAG,CAACA,IAAI,CAACvM,CAAD,CAAL,CAAP;EACD,OAFD,MAEO;EACLuM,QAAAA,IAAI,GAAG,EAAP;EACD;;EACD,aAAO,IAAI+/B,UAAJ,CAAe//B,IAAf,EAAqB,IAArB,EAA2B,KAAKrH,KAAhC,CAAP;EACD;;EACD,WAAO,IAAIonC,UAAJ,CAAe//B,IAAf,EAAqB,IAArB,EAA2B,KAAKrH,KAAhC,CAAP;EACD,GAnCD,CAT8B;;;EA8C9B0jC,EAAAA,GAAG,CAAChgC,SAAJ,CAAc0rB,MAAd,GAAuBsU,GAAG,CAAChgC,SAAJ,CAAc6rB,UAArC;EAEA,SAAOmU,GAAP;EACD,CAjDD;;EAkDA,cAAc,GAAGD,WAAjB;;EC3EA;EACA,IAAM3iC,cAAY,GAAG,SAAfA,YAAe,CAAStD,MAAT,EAAiBwC,KAAjB,EAAwB;EAC3C,MAAIgjC,IAAI,GAAGxlC,MAAM,CAACwlC,IAAlB,CAD2C;;EAI3C,MAAIvpC,GAAG,GAAGupC,IAAI,CAACtpC,IAAL,CAAU,QAAV,CAAV;;EACA,MAAIspC,IAAI,CAAC/X,GAAL,CAAS,aAAT,CAAJ,EAA6B;EAC3B,WAAOxxB,GAAP;EACD,GAP0C;;;EAU3C,MAAI+G,KAAK,GAAG,IAAZ;;EACA,MAAIwiC,IAAI,CAAC/X,GAAL,CAAS,YAAT,CAAJ,EAA4B;EAC1BzqB,IAAAA,KAAK,GAAG,WAAR;EACD,GAFD,MAEO,IAAIwiC,IAAI,CAAC/X,GAAL,CAAS,SAAT,CAAJ,EAAyB;EAC9BzqB,IAAAA,KAAK,GAAG,QAAR;EACD,GAFM,MAEA,IAAIwiC,IAAI,CAAC/X,GAAL,CAAS,eAAT,CAAJ,EAA+B;EACpCzqB,IAAAA,KAAK,GAAG,cAAR;EACD,GAFM,MAEA,IAAIwiC,IAAI,CAAC/X,GAAL,CAAS,aAAT,CAAJ,EAA6B;EAClCzqB,IAAAA,KAAK,GAAG,YAAR;EACD,GAFM,MAEA,IAAIwiC,IAAI,CAAC/X,GAAL,CAAS,QAAT,CAAJ,EAAwB;EAC7BzqB,IAAAA,KAAK,GAAG,OAAR;EACD;;EACD,SAAOR,KAAK,CAACE,UAAN,CAAiBY,YAAjB,CAA8BrH,GAA9B,EAAmCuG,KAAnC,EAA0CQ,KAA1C,CAAP;EACD,CAvBD;;EAwBA,oBAAc,GAAGM,cAAjB;;ECzBA;;;EAIA,IAAMwmC,QAAQ,GAAG,SAAXA,QAAW,CAASlF,EAAT,EAAa;EAC5B,MAAIlD,IAAI,GAAGkD,EAAE,CAACjX,UAAH,CAAc,QAAd,EAAwBvpB,IAAxB,EAAX;EACA,SAAOs9B,IAAP;EACD,CAHD;;;;;EAQA,IAAM7C,UAAQ,GAAG,SAAXA,QAAW,CAAS7+B,MAAT,EAAiB;EAChC,MAAI4kC,EAAE,GAAG5kC,MAAM,CAACwlC,IAAhB;;EACA,MAAIZ,EAAE,CAACnX,GAAH,CAAO,iBAAP,KAA6BztB,MAAM,CAAC+pC,SAAP,CAAiBtc,GAAjB,CAAqB,iBAArB,CAAjC,EAA0E;EACxE,WAAO,IAAP;EACD;;EACD,MAAImX,EAAE,CAACnX,GAAH,CAAO,gBAAP,KAA4BztB,MAAM,CAAC+pC,SAAP,CAAiBtc,GAAjB,CAAqB,gBAArB,CAAhC,EAAwE;EACtE,WAAO,KAAP;EACD,GAP+B;;;EAShC,MAAIiU,IAAI,GAAGoI,QAAQ,CAAClF,EAAD,CAAnB;;EACA,MAAIlD,IAAI,CAACjU,GAAL,CAAS,eAAT,CAAJ,EAA+B;EAC7B,WAAO,IAAP;EACD;;EACD,MAAIiU,IAAI,CAACjU,GAAL,CAAS,SAAT,CAAJ,EAAyB;EACvB,WAAO,IAAP;EACD;;EACD,MAAIiU,IAAI,CAACjU,GAAL,CAAS,WAAT,CAAJ,EAA2B;EACzB,WAAO,KAAP;EACD;;EACD,SAAO,IAAP;EACD,CApBD;;EAqBA,gBAAc,GAAGoR,UAAjB;;;;;;;;ECxBA,IAAMmL,UAAU,GAAG,SAAbA,UAAa,CAAShqC,MAAT,EAAiBwC,KAAjB,EAAwB;EACzC,MAAIoiC,EAAE,GAAG5kC,MAAM,CAACwlC,IAAhB,CADyC;;EAGzC,MAAIxlC,MAAM,CAACsC,QAAP,CAAgBzC,KAApB,EAA2B;EACzB;EACD,GALwC;;;EAQzC,MAAIG,MAAM,CAAC+pC,SAAP,CAAiBlqC,KAArB,EAA4B;EAC1BG,IAAAA,MAAM,CAAC+pC,SAAP,CAAiBzc,EAAjB,CAAoB,CAApB,EAAuBviB,MAAvB,CAA8B,KAA9B;EACA;EACD,GAXwC;;;EAazC,MAAI65B,EAAE,CAACnX,GAAH,CAAO,2BAAP,CAAJ,EAAyC;EACvCmX,IAAAA,EAAE,CAAC75B,MAAH,CAAU,KAAV;EACA;EACD,GAhBwC;;;EAkBzC,MAAI65B,EAAE,CAACnX,GAAH,CAAO,YAAP,CAAJ,EAA0B;EACxB,QAAI9U,GAAG,GAAGrV,gBAAY,CAACtD,MAAD,EAASwC,KAAT,CAAtB;EACAoiC,IAAAA,EAAE,CAAC7V,WAAH,CAAepW,GAAf,EAAoB,IAApB,EAA0B,IAA1B;EACAisB,IAAAA,EAAE,CAAC55B,OAAH,CAAW,SAAX;EACA;EACD,GAvBwC;;;EAyBzC,MAAI45B,EAAE,CAACnX,GAAH,CAAO,eAAP,CAAJ,EAA6B;EAC3B,QAAI9U,IAAG,GAAGrV,gBAAY,CAACtD,MAAD,EAASwC,KAAT,CAAtB;;EACAoiC,IAAAA,EAAE,CAAC7V,WAAH,CAAepW,IAAf,EAAoB,IAApB,EAA0B,IAA1B;;EACA,QAAIkmB,YAAQ,CAAC7+B,MAAD,AAAA,CAAZ,EAA6B;EAC3B4kC,MAAAA,EAAE,CAAC55B,OAAH,CAAW,QAAX;EACD,KAFD,MAEO;EACL45B,MAAAA,EAAE,CAAC55B,OAAH,CAAW,UAAX;EACD;;EACD;EACD,GAlCwC;;;EAoCzC,MAAI45B,EAAE,CAACnX,GAAH,CAAO,SAAP,CAAJ,EAAuB;EACrB,QAAI9U,KAAG,GAAGrV,gBAAY,CAACtD,MAAD,EAASwC,KAAT,CAAtB;;EACAoiC,IAAAA,EAAE,CAAC7V,WAAH,CAAepW,KAAf,EAAoB,IAApB,EAA0B,IAA1B;EACAisB,IAAAA,EAAE,CAAC55B,OAAH,CAAW,KAAX;EACA;EACD,GAzCwC;;;EA4CzC,MAAI6zB,YAAQ,CAAC7+B,MAAD,AAAA,CAAZ,EAA6B;EAC3B4kC,IAAAA,EAAE,CAAC55B,OAAH,CAAW,UAAX;EACA;EACD,GA/CwC;;;EAiDzC45B,EAAAA,EAAE,CAAC55B,OAAH,CAAW,QAAX;EACA;EACD,CAnDD;;EAoDA,gBAAc,GAAGg/B,UAAjB;;EC7DA;EACA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAASrF,EAAT,EAAa;EAC7B,MAAI5kC,MAAM,GAAG;EACXkqC,IAAAA,MAAM,EAAEtF,EAAE,CAAC17B,KAAH,CAAS,UAAT,CADG;;EAEX5G,IAAAA,QAAQ,EAAEsiC,EAAE,CAAC17B,KAAH,CAAS,WAAT,CAFC;;EAGX6gC,IAAAA,SAAS,EAAEnF,EAAE,CAAC17B,KAAH,CAAS,YAAT,EAAuBskB,GAAvB,CAA2B,qBAA3B,CAHA;;EAIX2c,IAAAA,QAAQ,EAAEvF,EAAE,CAAC17B,KAAH,CAAS,WAAT,CAJC;;EAKXs8B,IAAAA,IAAI,EAAEZ,EAAE,CAAC17B,KAAH,CAAS,OAAT,EAAkBskB,GAAlB,CAAsB,0CAAtB;EALK,GAAb,CAD6B;;EAS7B,MAAI,CAACxtB,MAAM,CAACwlC,IAAP,CAAY3lC,KAAjB,EAAwB;;EAEtBzB,IAAAA,MAAM,CAACC,IAAP,CAAY2B,MAAZ,EAAoB1B,OAApB,CAA4B,UAAAnB,CAAC,EAAI;EAC/B6C,MAAAA,MAAM,CAAC7C,CAAD,CAAN,GAAY6C,MAAM,CAAC7C,CAAD,CAAN,CAAUqwB,GAAV,CAAc,GAAd,CAAZ;EACD,KAFD,EAFsB;;EAMtBxtB,IAAAA,MAAM,CAACwlC,IAAP,GAAcZ,EAAd;EACA,WAAO5kC,MAAP;EACD,GAjB4B;;;EAmB7B,MAAIA,MAAM,CAACkqC,MAAP,IAAiBlqC,MAAM,CAACkqC,MAAP,CAAcrqC,KAAnC,EAA0C;EACxC,QAAIqJ,KAAK,GAAGlJ,MAAM,CAACkqC,MAAP,CAAchuC,IAAd,CAAmB,SAAnB,IAAgC,GAA5C;;EACA,QAAI0oC,EAAE,CAACnX,GAAH,CAAOvkB,KAAP,CAAJ,EAAmB;EACjBlJ,MAAAA,MAAM,CAACoqC,WAAP,GAAqB,IAArB;EACD;EACF,GAxB4B;;;EA0B7B,SAAOpqC,MAAP;EACD,CA3BD;;EA4BA,WAAc,GAAGiqC,SAAjB;;EC3BA;;EACA,IAAMI,IAAI,GAAG,SAAPA,IAAO,CAAArqC,MAAM,EAAI;EACrB,MAAIsqC,GAAG,GAAG,KAAV;EACA,MAAIlyB,MAAM,GAAGymB,YAAQ,CAAC7+B,MAAD,CAArB;EACA,MAAIuqC,UAAU,GAAGvqC,MAAM,CAACsC,QAAP,CAAgBzC,KAAjC,CAHqB;;;;;;EAUrB,MAAIG,MAAM,CAACwlC,IAAP,CAAY7X,UAAZ,CAAuB,0BAAvB,EAAmD9tB,KAAvD,EAA8D;EAC5DyqC,IAAAA,GAAG,GAAG,IAAN;EACD;;EAED,MAAI/iC,GAAG,GAAG;EACRtE,IAAAA,SAAS,EAAE,KADH;EAERE,IAAAA,YAAY,EAAE,IAFN;EAGRoQ,IAAAA,WAAW,EAAE,SAHL;EAIRxQ,IAAAA,UAAU,EAAE,IAJJ;EAKRG,IAAAA,MAAM,EAAE,OALA;EAMRG,IAAAA,KAAK,EAAE,EANC;EAORqQ,IAAAA,YAAY,EAAE,MAPN;EAQRC,IAAAA,UAAU,EAAE;EARJ,GAAV,CAdqB;;EAyBrB,MAAI22B,GAAG,KAAK,IAAZ,EAAkB;EAChB/iC,IAAAA,GAAG,CAACpE,YAAJ,GAAmB,IAAnB;EACAoE,IAAAA,GAAG,CAACxE,UAAJ,GAAiB,IAAjB;EACD;;EACD,MAAIqV,MAAJ,EAAY;EACV7Q,IAAAA,GAAG,CAACtE,SAAJ,GAAgB,MAAhB;EACAsE,IAAAA,GAAG,CAACpE,YAAJ,GAAmB,KAAnB;EACAoE,IAAAA,GAAG,CAACxE,UAAJ,GAAiB,KAAjB;EACD;;EACD,MAAIwnC,UAAJ,EAAgB;EACdhjC,IAAAA,GAAG,CAACtE,SAAJ,IAAiB,MAAjB;EACAsE,IAAAA,GAAG,CAACpE,YAAJ,IAAoB,MAApB;EACAoE,IAAAA,GAAG,CAACgM,WAAJ,GAAkB,aAAlB;EACAhM,IAAAA,GAAG,CAACxE,UAAJ,IAAkB,MAAlB;EACAwE,IAAAA,GAAG,CAACmM,YAAJ,GAAmB,SAASnM,GAAG,CAACmM,YAAhC;EACAnM,IAAAA,GAAG,CAACoM,UAAJ,GAAiB,SAASpM,GAAG,CAACoM,UAA9B;EACApM,IAAAA,GAAG,CAACrE,MAAJ,GAAa,SAASqE,GAAG,CAACrE,MAA1B;EACD;;EACD,SAAOqE,GAAP;EACD,CA5CD;;EA6CA,UAAc,GAAG8iC,IAAjB;;EC7CA,IAAM9xB,WAAS,GAAG,SAAZA,SAAY,CAASvY,MAAT,EAAiBwC,KAAjB,EAAwB;EACxC,MAAIgjC,IAAI,GAAGxlC,MAAM,CAACwlC,IAAlB,CADwC;;EAIxC,MAAIA,IAAI,CAAC/X,GAAL,CAAS,SAAT,KAAwB+X,IAAI,CAACgF,GAAL,CAAS,QAAT,MAAuB,IAAvB,IAA+BxqC,MAAM,CAAC+pC,SAAP,CAAiBtc,GAAjB,CAAqB,MAArB,CAA3D,EAA0F;EACxF,WAAO4c,MAAI,CAACrqC,MAAD,AAAA,CAAX;EACD;;EAED,MAAIyqC,UAAU,GAAGnnC,gBAAY,CAACtD,MAAD,EAASwC,KAAT,CAA7B;;EACA,MAAI,CAACioC,UAAL,EAAiB;EACf,WAAO,EAAP;EACD,GAXuC;;;EAaxC,MAAI7xB,KAAK,GAAGpW,KAAK,CAACE,UAAN,CAAiB6V,SAAjB,CAA2BkyB,UAA3B,EAAuCjoC,KAAvC,CAAZ;EACAoW,EAAAA,KAAK,CAAC7V,UAAN,GAAmB0nC,UAAnB,CAdwC;;EAiBxC,MAAIzqC,MAAM,CAACmqC,QAAP,CAAgBtqC,KAApB,EAA2B;EACzB,QAAIsqC,QAAQ,GAAGnqC,MAAM,CAACmqC,QAAP,CAAgBjuC,IAAhB,EAAf;EACAkC,IAAAA,MAAM,CAACC,IAAP,CAAYua,KAAZ,EAAmBta,OAAnB,CAA2B,UAAAnB,CAAC;EAAA,aAAKyb,KAAK,CAACzb,CAAD,CAAL,IAAY,MAAMgtC,QAAvB;EAAA,KAA5B;EACD,GApBuC;;;EAsBxC,MAAInqC,MAAM,CAACkqC,MAAP,CAAcrqC,KAAlB,EAAyB;EACvB,QAAIqqC,MAAM,GAAGlqC,MAAM,CAACkqC,MAAP,CAAchuC,IAAd,EAAb;;EACA,QAAI8D,MAAM,CAACoqC,WAAP,KAAuB,IAA3B,EAAiC;EAC/BhsC,MAAAA,MAAM,CAACC,IAAP,CAAYua,KAAZ,EAAmBta,OAAnB,CAA2B,UAAAnB,CAAC;EAAA,eAAKyb,KAAK,CAACzb,CAAD,CAAL,IAAY,MAAM+sC,MAAvB;EAAA,OAA5B;EACD,KAFD,MAEO;EACL9rC,MAAAA,MAAM,CAACC,IAAP,CAAYua,KAAZ,EAAmBta,OAAnB,CAA2B,UAAAnB,CAAC;EAAA,eAAKyb,KAAK,CAACzb,CAAD,CAAL,GAAW+sC,MAAM,GAAG,GAAT,GAAetxB,KAAK,CAACzb,CAAD,CAApC;EAAA,OAA5B;EACD;EACF,GA7BuC;;;EAgCxC,MAAMotC,UAAU,GAAGvqC,MAAM,CAACsC,QAAP,CAAgBzC,KAAnC;;EACA,MAAI0qC,UAAJ,EAAgB;EACd3xB,IAAAA,KAAK,CAAC3V,SAAN,GAAkB,aAAa2V,KAAK,CAAC7V,UAArC;EACA6V,IAAAA,KAAK,CAACzV,YAAN,GAAqB,cAAcyV,KAAK,CAAC7V,UAAzC;EACA6V,IAAAA,KAAK,CAAC1V,MAAN,GAAe,SAAS0V,KAAK,CAAC1V,MAA9B;EACD,GArCuC;;;EAuCxC,MAAI,CAAC0V,KAAK,CAACrF,WAAX,EAAwB;EACtB,QAAIg3B,UAAJ,EAAgB;EACd3xB,MAAAA,KAAK,CAACrF,WAAN,GAAoB,cAAcqF,KAAK,CAAC7V,UAAxC;EACD,KAFD,MAEO;EACL6V,MAAAA,KAAK,CAACrF,WAAN,GAAoB,UAAUqF,KAAK,CAAC7V,UAApC;EACD;EACF;;EACD,MAAIwnC,UAAJ,EAAgB;EACd3xB,IAAAA,KAAK,CAAC7V,UAAN,GAAmB,SAAS6V,KAAK,CAAC7V,UAAlC;EACD;;EACD,SAAO6V,KAAP;EACD,CAlDD;;EAmDA,iBAAc,GAAGL,WAAjB;;EChDA,aAAc,GAAG;;EAEfjN,EAAAA,IAAI,EAAE,cAAS7H,OAAT,EAAkB;EAAA;;EACtB,QAAInG,CAAC,GAAG,IAAR;;EACA,QAAI,OAAOmG,OAAP,KAAmB,QAAvB,EAAiC;EAC/BnG,MAAAA,CAAC,GAAGmG,OAAJ;EACAA,MAAAA,OAAO,GAAG,IAAV;EACD;;EACDA,IAAAA,OAAO,GAAGA,OAAO,IAAI;EAAEvH,MAAAA,IAAI,EAAE,IAAR;EAAc2H,MAAAA,MAAM,EAAE,IAAtB;EAA4B3E,MAAAA,IAAI,EAAE,IAAlC;EAAwC2I,MAAAA,KAAK,EAAE;EAA/C,KAArB;EACA,QAAIwD,GAAG,GAAG,EAAV;EACA,SAAK/M,OAAL,CAAa,UAAAd,CAAC,EAAI;EAChB,UAAI8N,IAAI,GAAG9N,CAAC,CAAC8N,IAAF,CAAO7H,OAAP,EAAgB,CAAhB,CAAX;EACA,UAAIzD,MAAM,GAAGiqC,OAAS,CAACzsC,CAAD,CAAtB;EACA8N,MAAAA,IAAI,CAAC2nB,KAAL,GAAa,EAAb;EACA70B,MAAAA,MAAM,CAACC,IAAP,CAAY2B,MAAZ,EAAoB1B,OAApB,CAA4B,UAAAnB,CAAC,EAAI;EAC/BmO,QAAAA,IAAI,CAAC2nB,KAAL,CAAW91B,CAAX,IAAgB6C,MAAM,CAAC7C,CAAD,CAAN,CAAUjB,IAAV,CAAe,QAAf,CAAhB;EACD,OAFD;EAGAoP,MAAAA,IAAI,CAACi/B,UAAL,GAAkB/sC,CAAC,CAACiwB,GAAF,CAAM,WAAN,CAAlB;EACAniB,MAAAA,IAAI,CAAC6S,YAAL,GAAoB5F,aAAS,CAACvY,MAAD,EAAS,KAAI,CAACwC,KAAd,CAA7B;EACA6I,MAAAA,GAAG,CAACpD,IAAJ,CAASqD,IAAT;EACD,KAVD;;EAWA,QAAIhO,CAAC,KAAK,IAAV,EAAgB;EACd,aAAO+N,GAAG,CAAC/N,CAAD,CAAV;EACD;;EACD,WAAO+N,GAAP;EACD,GAzBc;;;EA4Bf2mB,EAAAA,OAAO,EAAE,mBAAW;EAClB,QAAInoB,IAAI,GAAG,EAAX,CADkB;;EAGlB,SAAKvL,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAIF,IAAI,GAAGuF,OAAS,CAACrF,EAAD,CAAT,CAAcsF,MAAzB;;EACA,UAAIxF,IAAI,CAAC7kC,KAAT,EAAgB;EACdgK,QAAAA,IAAI,GAAGA,IAAI,CAACM,MAAL,CAAYu6B,IAAI,CAAC76B,IAAjB,CAAP;EACD;EACF,KALD,EAHkB;;EAUlB,QAAIxM,CAAC,GAAG,KAAKswB,UAAL,CAAgB,UAAhB,CAAR;;EACA,QAAItwB,CAAC,CAACwC,KAAN,EAAa;EACXgK,MAAAA,IAAI,GAAGxM,CAAC,CAACwM,IAAF,CAAOM,MAAP,CAAcN,IAAd,CAAP;EACD,KAbiB;;;EAelBxM,IAAAA,CAAC,GAAG,KAAKqwB,SAAL,CAAe,UAAf,CAAJ;;EACA,QAAIrwB,CAAC,CAACwC,KAAN,EAAa;EACXgK,MAAAA,IAAI,GAAGA,IAAI,CAACM,MAAL,CAAY9M,CAAC,CAACwM,IAAd,CAAP;EACD;;EACD,WAAO,KAAK1B,SAAL,CAAe0B,IAAf,CAAP;EACD,GAhDc;;;EAkDfg1B,EAAAA,QAAQ,EAAE,oBAAW;EAAA;;EACnB,QAAIh1B,IAAI,GAAG,EAAX;EACA,SAAKvL,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAI5kC,MAAM,GAAGiqC,OAAS,CAACrF,EAAD,CAAtB;;EACA,UAAI/F,YAAQ,CAAC7+B,MAAD,EAAS,MAAI,CAACwC,KAAd,CAAR,KAAiC,IAArC,EAA2C;EACzCqH,QAAAA,IAAI,CAAC5B,IAAL,CAAU28B,EAAE,CAAC/6B,IAAH,CAAQ,CAAR,CAAV;EACD;EACF,KALD;EAMA,WAAO,KAAK1B,SAAL,CAAe0B,IAAf,CAAP;EACD,GA3Dc;;;EA6Dfi1B,EAAAA,UAAU,EAAE,sBAAW;EAAA;;EACrB,QAAIj1B,IAAI,GAAG,EAAX;EACA,SAAKvL,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAI5kC,MAAM,GAAGiqC,OAAS,CAACrF,EAAD,CAAtB;;EACA,UAAI/F,YAAQ,CAAC7+B,MAAD,EAAS,MAAI,CAACwC,KAAd,CAAR,KAAiC,KAArC,EAA4C;EAC1CqH,QAAAA,IAAI,CAAC5B,IAAL,CAAU28B,EAAE,CAAC/6B,IAAH,CAAQ,CAAR,CAAV;EACD;EACF,KALD;EAMA,WAAO,KAAK1B,SAAL,CAAe0B,IAAf,CAAP;EACD,GAtEc;;;EAyEf0O,EAAAA,SAAS,EAAE,qBAAW;EAAA;;EACpB,QAAIlW,MAAM,GAAG,EAAb;EACA,SAAK/D,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAI5kC,MAAM,GAAGiqC,OAAS,CAACrF,EAAD,CAAtB;;EACA,UAAIhsB,KAAK,GAAGL,aAAS,CAACvY,MAAD,EAAS,MAAI,CAACwC,KAAd,CAArB;;EACAH,MAAAA,MAAM,CAAC4F,IAAP,CAAY2Q,KAAZ;EACD,KAJD;EAKA,WAAOvW,MAAP;EACD,GAjFc;;;EAmFfqoC,EAAAA,WAAW,EAAE,uBAAW;EAAA;;EACtB,SAAKpsC,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAI5kC,MAAM,GAAGiqC,OAAS,CAACrF,EAAD,CAAtB;;EACA,UAAI3oC,GAAG,GAAGsc,aAAS,CAACvY,MAAD,EAAS,MAAI,CAACwC,KAAd,CAAT,CAA8BS,SAAxC;;EACA,UAAIhH,GAAJ,EAAS;EACP2oC,QAAAA,EAAE,CAAC7V,WAAH,CAAe9yB,GAAf,EAAoB,KAApB,EAA2B,IAA3B,EADO;EAGR;EACF,KAPD;EAQA,WAAO,IAAP;EACD,GA7Fc;;;EA+Ff0uC,EAAAA,cAAc,EAAE,0BAAW;EAAA;;EACzB,SAAKrsC,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAI5kC,MAAM,GAAGiqC,OAAS,CAACrF,EAAD,CAAtB;;EACA,UAAIr9B,GAAG,GAAGgR,aAAS,CAACvY,MAAD,EAAS,MAAI,CAACwC,KAAd,CAAnB;;EACA,UAAIvG,GAAG,GAAGsL,GAAG,CAACpE,YAAd,CAHiB;;EAKjB,UAAIyhC,EAAE,CAACjX,UAAH,CAAc,0BAAd,EAA0C9tB,KAA9C,EAAqD;EACnD5D,QAAAA,GAAG,GAAGsL,GAAG,CAACxE,UAAV;EACD;;EACD,UAAI9G,GAAJ,EAAS;EACP2oC,QAAAA,EAAE,CAAC7V,WAAH,CAAe9yB,GAAf,EAAoB,KAApB,EAA2B,IAA3B;EACA2oC,QAAAA,EAAE,CAAC/iC,GAAH,CAAO,cAAP;EACD;EACF,KAZD;EAaA,WAAO,IAAP;EACD,GA9Gc;;;EAgHf+oC,EAAAA,aAAa,EAAE,yBAAW;EAAA;;EACxB,SAAKtsC,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAI5kC,MAAM,GAAGiqC,OAAS,CAACrF,EAAD,CAAtB;;EACA,UAAI3oC,GAAG,GAAGsc,aAAS,CAACvY,MAAD,EAAS,MAAI,CAACwC,KAAd,CAAT,CAA8B+Q,WAAxC;;EACA,UAAItX,GAAJ,EAAS;EACP2oC,QAAAA,EAAE,CAAC7V,WAAH,CAAe9yB,GAAf,EAAoB,KAApB,EAA2B,IAA3B;EACA2oC,QAAAA,EAAE,CAAC/iC,GAAH,CAAO,aAAP;EACD;EACF,KAPD;EAQA,WAAO,IAAP;EACD,GA1Hc;;;EA4HfyB,EAAAA,YAAY,EAAE,wBAAW;EAAA;;EACvB,SAAKhF,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAI5kC,MAAM,GAAGiqC,OAAS,CAACrF,EAAD,CAAtB;;EACA,UAAI3oC,GAAG,GAAGqH,gBAAY,CAACtD,MAAD,EAAS,MAAI,CAACwC,KAAd,CAAtB;;EACA,UAAIvG,GAAJ,EAAS;EACP2oC,QAAAA,EAAE,CAAC7V,WAAH,CAAe9yB,GAAf,EAAoB,KAApB,EAA2B,IAA3B;EACA2oC,QAAAA,EAAE,CAAC/iC,GAAH,CAAO,YAAP;EACD;EACF,KAPD;EAQA,WAAO,IAAP;EACD,GAtIc;;;EAwIfgpC,EAAAA,QAAQ,EAAE,oBAAW;EAAA;;EACnB,SAAKvsC,OAAL,CAAa,UAAAsmC,EAAE,EAAI;EACjB,UAAI5kC,MAAM,GAAGiqC,OAAS,CAACrF,EAAD,CAAtB;;EACA,UAAI3oC,GAAG,GAAGsc,aAAS,CAACvY,MAAD,EAAS,MAAI,CAACwC,KAAd,CAAT,CAA8BU,MAAxC;;EACA,UAAIjH,GAAJ,EAAS;EACP2oC,QAAAA,EAAE,CAAC7V,WAAH,CAAe9yB,GAAf,EAAoB,KAApB,EAA2B,IAA3B;EACA2oC,QAAAA,EAAE,CAAC/iC,GAAH,CAAO,QAAP;EACD;EACF,KAPD;EAQA,WAAO,IAAP;EACD,GAlJc;;;EAqJf0oC,EAAAA,UAAU,EAAE,sBAAW;EACrB,WAAO,WAAQ,WAAR,CAAP;EACD,GAvJc;;;EAyJfO,EAAAA,UAAU,EAAE,sBAAW;EACrB,WAAO,KAAKxH,IAAL,CAAU,WAAV,CAAP;EACD,GA3Jc;;;EA6Jf0G,EAAAA,UAAU,EAAE,sBAAW;EAAA;;EACrB,SAAKngC,IAAL,CAAUvL,OAAV,CAAkB,UAAAd,CAAC,EAAI;EACrB,UAAIuM,GAAG,GAAG,OAAI,CAAC5B,SAAL,CAAe,CAAC3K,CAAD,CAAf,CAAV;;EACA,UAAIwC,MAAM,GAAGiqC,OAAS,CAAClgC,GAAD,CAAtB;;EACAigC,MAAAA,YAAU,CAAChqC,MAAD,EAAS+J,GAAG,CAACvH,KAAb,CAAV;EACD,KAJD;EAKA,WAAO,IAAP;EACD,GApKc;;;EAsKfuoC,EAAAA,UAAU,EAAE,sBAAW;EACrB,QAAI1tC,CAAC,GAAG,KAAK6L,KAAL,CAAW,cAAX,CAAR;;EACA,QAAI7L,CAAC,CAACwC,KAAN,EAAa;EACXxC,MAAAA,CAAC,CAAC40B,MAAF,CAAS,QAAT;EACD;;EACD,WAAO,KAAKA,MAAL,CAAY,WAAZ,CAAP;EACD;EA5Kc,CAAjB;;ECJA,IAAMgU,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExB8E,KAFwB;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA,IAEV9E,GAFU;;;EAI9B9nC,EAAAA,MAAM,CAACiH,MAAP,CAAc2lC,KAAK,CAAC9kC,SAApB,EAA+ByB,SAA/B,EAJ8B;;EAO9BqjC,EAAAA,KAAK,CAAC9kC,SAAN,CAAgB+kC,MAAhB,GAAyBD,KAAK,CAAC9kC,SAAN,CAAgB8jC,UAAzC;;EAEA9D,EAAAA,GAAG,CAAChgC,SAAJ,CAAcyQ,KAAd,GAAsB,UAASrZ,CAAT,EAAY;EAChC,QAAI4L,KAAK,GAAG,KAAKA,KAAL,CAAW,iDAAX,CAAZ,CADgC;;EAGhCA,IAAAA,KAAK,GAAGA,KAAK,CAACskB,GAAN,CAAU,WAAV,CAAR;EACAtkB,IAAAA,KAAK,GAAGA,KAAK,CAACskB,GAAN,CAAU,WAAV,CAAR,CAJgC;;;EAOhC,QAAI7K,IAAI,GAAGzZ,KAAK,CAACA,KAAN,CAAY,gCAAZ,CAAX,CAPgC;;EAShC,QAAI7L,CAAC,GAAG6L,KAAK,CAACskB,GAAN,CAAU7K,IAAV,EAAgBuQ,UAAhB,CAA2B,WAA3B,CAAR,CATgC;;EAWhC71B,IAAAA,CAAC,GAAGA,CAAC,CAAC8M,MAAF,CAASwY,IAAT,CAAJ;EACAtlB,IAAAA,CAAC,CAAC0H,IAAF,CAAO,OAAP,EAZgC;;;EAiBhC1H,IAAAA,CAAC,GAAGA,CAAC,MAAD,CAAK,OAAL,CAAJ,CAjBgC;;EAoBhC,QAAI,OAAOC,CAAP,KAAa,QAAjB,EAA2B;EACzBD,MAAAA,CAAC,GAAGA,CAAC,CAAC0K,GAAF,CAAMzK,CAAN,CAAJ;EACD;;EACD,QAAIsnC,EAAE,GAAG,IAAIoG,KAAJ,CAAU3tC,CAAC,CAACwM,IAAZ,EAAkB,IAAlB,EAAwB,KAAKrH,KAA7B,CAAT;EACA,WAAOoiC,EAAP;EACD,GAzBD;;EA0BA,SAAOsB,GAAP;EACD,CApCD;;EAqCA,SAAc,GAAGD,WAAjB;;ECvCA,IAAMA,WAAS,GAAG,SAAZA,SAAY,CAASC,GAAT,EAAc;;EAAA,MAExBgF,MAFwB;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA,IAEThF,GAFS;;EAW9BA,EAAAA,GAAG,CAAChgC,SAAJ,CAAcivB,MAAd,GAAuB,UAAS73B,CAAT,EAAY;EACjC,QAAI4L,KAAK,GAAG,KAAKgqB,UAAL,CAAgB,WAAhB,CAAZ;EACAhqB,IAAAA,KAAK,GAAGA,KAAK,CAACA,KAAN,CAAY,UAAZ,CAAR,CAFiC;;EAKjC,QAAI,OAAO5L,CAAP,KAAa,QAAjB,EAA2B;EACzB4L,MAAAA,KAAK,GAAGA,KAAK,CAACnB,GAAN,CAAUzK,CAAV,CAAR;EACD;;EACD,WAAO,IAAI4tC,MAAJ,CAAWhiC,KAAK,CAACW,IAAjB,EAAuB,IAAvB,EAA6B,KAAKrH,KAAlC,CAAP;EACD,GATD;;EAUA,SAAO0jC,GAAP;EACD,CAtBD;;EAuBA,UAAc,GAAGD,WAAjB;;ECtBA,IAAMkF,QAAQ,GAAG,CACf7lC,aADe,EAEfC,QAFe,EAGfC,OAHe,EAIfC,YAJe,EAKfC,KALe,EAMfiG,KANe,EAOfqgB,WAPe,EAQf8H,WARe,EASfC,UATe,EAUfC,KAVe,EAWfC,MAXe,CAAjB;;EAcA,IAAMmX,MAAM,GAAG,SAATA,MAAS,CAASlF,GAAT,EAAc;;EAE3B9nC,EAAAA,MAAM,CAACC,IAAP,CAAYgtC,OAAZ,EAAqB/sC,OAArB,CAA6B,UAAAnB,CAAC;EAAA,WAAK+oC,GAAG,CAAChgC,SAAJ,CAAc/I,CAAd,IAAmBkuC,OAAO,CAACluC,CAAD,CAA/B;EAAA,GAA9B,EAF2B;;EAI3BguC,EAAAA,QAAQ,CAAC7sC,OAAT,CAAiB,UAAAgtC,KAAK;EAAA,WAAIA,KAAK,CAACpF,GAAD,CAAT;EAAA,GAAtB;EACA,SAAOA,GAAP;EACD,CAND;;EAOA,UAAc,GAAGkF,MAAjB;;ECtBA,IAAMzjC,SAAO,GAAG;EACdkP,EAAAA,IAAI,EAAEvR,SADQ;EAEdimC,EAAAA,UAAU,EAAEhmC;EAFE,CAAhB;;;MASM2gC;;;EACJ,eAAYr8B,IAAZ,EAAkBojB,IAAlB,EAAwBzqB,KAAxB,EAA+B;EAAA;;EAAA;;EAC7B,SAAKqH,IAAL,GAAYA,IAAZ,CAD6B;;EAG7BzL,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;EAClCC,MAAAA,UAAU,EAAE,KADsB;EAElCE,MAAAA,KAAK,EAAE8d,IAF2B;EAGlC/d,MAAAA,QAAQ,EAAE;EAHwB,KAApC,EAH6B;;EAS7B,QAAI1M,KAAK,KAAKf,SAAV,IAAuBwrB,IAAI,KAAKxrB,SAApC,EAA+C;EAC7Ce,MAAAA,KAAK,GAAGyqB,IAAI,CAACzqB,KAAb;EACD,KAX4B;;;EAa7BpE,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCC,MAAAA,UAAU,EAAE,KADuB;EAEnCE,MAAAA,KAAK,EAAE3M,KAF4B;;EAAA,KAArC,EAb6B;;;EAqB7BpE,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,OAA5B,EAAqC;EACnCjH,MAAAA,GAAG,EAAE;EAAA,eAAM,KAAI,CAAC8B,IAAL,CAAUtN,MAAV,GAAmB,CAAzB;EAAA;EAD8B,KAArC,EArB6B;;EAyB7B6B,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;EACpCjH,MAAAA,GAAG,EAAE;EAAA,eAAM,KAAI,CAAC8B,IAAL,CAAUtN,MAAhB;EAAA;EAD+B,KAAtC,EAzB6B;;EA6B7B6B,IAAAA,MAAM,CAAC4Q,cAAP,CAAsB,IAAtB,EAA4B,KAA5B,EAAmC;EACjCjH,MAAAA,GAAG,EAAE;EAAA,eAAM,KAAN;EAAA;EAD4B,KAAnC;EAGD;;;;;;+BAGQ;EACP,aAAO6mB,SAAM,CAAC,IAAD,CAAb;EACD;;;;;6BAGM;EACL,UAAI,KAAK/kB,IAAL,CAAUtN,MAAV,GAAmB,CAAvB,EAA0B;EACxB,eAAO,KAAKsN,IAAL,CAAU,CAAV,EAAa/B,IAApB;EACD;;EACD,aAAO,KAAK2D,GAAL,GAAW5B,IAAX,CAAgB,CAAhB,EAAmB/B,IAA1B;EACD;;;;;;;;EAIHo+B,GAAG,CAAChgC,SAAJ,CAAciC,SAAd,GAA0B,UAAS0B,IAAT,EAAe;EACvCA,EAAAA,IAAI,GAAGA,IAAI,CAACxB,GAAL,CAAS,UAAA7K,CAAC;EAAA,WAAIA,CAAC,CAACkK,KAAF,CAAQ,IAAR,CAAJ;EAAA,GAAV,CAAP,CADuC;;EAGvC,MAAIqC,GAAG,GAAG,IAAIm8B,GAAJ,CAAQr8B,IAAR,EAAc,IAAd,EAAoB,KAAKrH,KAAzB,CAAV;EACA,SAAOuH,GAAP;EACD,CALD;;;;EAQAm8B,GAAG,CAAChgC,SAAJ,CAAciL,QAAd,GAAyB,UAASlV,GAAT,EAAc;EACrC,MAAI4N,IAAI,GAAGwkB,YAAQ,CAACld,QAAT,CAAkBlV,GAAlB,EAAuB,KAAKuG,KAA5B,EAAmC,KAAKsF,IAAL,EAAnC,CAAX;EACA,SAAO,KAAKK,SAAL,CAAe0B,IAAf,CAAP;EACD,CAHD;;EAKAzL,MAAM,CAACiH,MAAP,CAAc6gC,GAAG,CAAChgC,SAAlB,EAA6ByB,SAAO,CAACkP,IAArC;EACAzY,MAAM,CAACiH,MAAP,CAAc6gC,GAAG,CAAChgC,SAAlB,EAA6ByB,SAAO,CAAC4jC,UAArC;;AAGAH,QAAM,CAAClF,GAAD,CAAN;;EAGA,IAAM72B,SAAO,GAAG;EACdm8B,EAAAA,KAAK,EAAE,OADO;EAEdC,EAAAA,GAAG,EAAE,OAFS;EAGd3I,EAAAA,KAAK,EAAE,MAHO;EAIdzF,EAAAA,IAAI,EAAE,IAJQ;EAKdqO,EAAAA,MAAM,EAAE;EALM,CAAhB;EAOAttC,MAAM,CAACC,IAAP,CAAYgR,SAAZ,EAAqB/Q,OAArB,CAA6B,UAAAnB,CAAC;EAAA,SAAK+oC,GAAG,CAAChgC,SAAJ,CAAc/I,CAAd,IAAmB+oC,GAAG,CAAChgC,SAAJ,CAAcmJ,SAAO,CAAClS,CAAD,CAArB,CAAxB;EAAA,CAA9B;EACA,SAAc,GAAG+oC,GAAjB;;ECjFA,IAAI1jC,KAAK,GAAG,IAAIypB,OAAJ,EAAZ;;;EAGA,IAAM0f,GAAG,GAAG,SAANA,GAAM,GAA6B;EAAA,MAApBzvC,IAAoB,uEAAb,EAAa;EAAA,MAATgc,OAAS;;EACvC,MAAIA,OAAJ,EAAa;EACX1V,IAAAA,KAAK,CAACopC,QAAN,CAAe1zB,OAAf;EACD;;EACD,MAAIrO,IAAI,GAAGwkB,YAAQ,CAACld,QAAT,CAAkBjV,IAAlB,EAAwBsG,KAAxB,CAAX;EACA,MAAIuH,GAAG,GAAG,IAAIm8B,KAAJ,CAAQr8B,IAAR,EAAc,IAAd,EAAoBrH,KAApB,CAAV;EACAuH,EAAAA,GAAG,CAAC6kB,MAAJ;EACA,SAAO7kB,GAAP;EACD,CARD;;;;EAWA4hC,GAAG,CAACtd,QAAJ,GAAe,YAA6B;EAAA,MAApBnyB,IAAoB,uEAAb,EAAa;EAAA,MAATgc,OAAS;;EAC1C,MAAIA,OAAJ,EAAa;EACX1V,IAAAA,KAAK,CAACopC,QAAN,CAAe1zB,OAAf;EACD;;EACD,MAAIrO,IAAI,GAAGwkB,YAAQ,CAACld,QAAT,CAAkBjV,IAAlB,EAAwBsG,KAAxB,CAAX;EACA,MAAIuH,GAAG,GAAG,IAAIm8B,KAAJ,CAAQr8B,IAAR,EAAc,IAAd,EAAoBrH,KAApB,CAAV;EACA,SAAOuH,GAAP;EACD,CAPD;;;;EAUA4hC,GAAG,CAACP,MAAJ,GAAa,UAAS3e,EAAT,EAAa;EACxBA,EAAAA,EAAE,CAACyZ,KAAD,EAAM1jC,KAAN,CAAF;EACA,SAAO,IAAP;EACD,CAHD;;;;EAMAmpC,GAAG,CAACjkC,KAAJ,GAAY,YAAW;EACrBlF,EAAAA,KAAK,GAAGA,KAAK,CAACkF,KAAN,EAAR;EACA,SAAO,IAAP;EACD,CAHD;;;;EAMAikC,GAAG,CAACE,IAAJ,GAAW,UAASvgC,IAAT,EAAe;EACxB,MAAIzB,IAAI,GAAGwkB,YAAQ,CAACzc,QAAT,CAAkBtG,IAAlB,EAAwB9I,KAAxB,CAAX;EACA,SAAO,IAAI0jC,KAAJ,CAAQr8B,IAAR,EAAc,IAAd,EAAoBrH,KAApB,CAAP;EACD,CAHD;;;;EAMAmpC,GAAG,CAACG,OAAJ,GAAc,YAAsB;EAAA,MAAbxf,IAAa,uEAAN,IAAM;EAClC9pB,EAAAA,KAAK,CAACspC,OAAN,CAAcxf,IAAd;EACA,SAAO,IAAP;EACD,CAHD;;;;EAMAqf,GAAG,CAACI,OAAJ,GAAcA,QAAd;;EAEAJ,GAAG,UAAH,GAAaA,GAAG,CAACE,IAAjB;EAEA,OAAc,GAAGF,GAAjB;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"compromise.js","sources":["../src/Term/_id.js","../src/Term/normalize/unicode.js","../src/Term/normalize/isAcronym.js","../src/Term/normalize/clean.js","../src/Term/normalize/reduce.js","../src/Term/parse.js","../src/Term/methods/01-case.js","../src/Term/methods/02-punctuation.js","../src/Term/methods/_doesMatch.js","../src/Term/methods/03-misc.js","../src/Term/methods/04-text.js","../src/Term/methods/_bestTag.js","../src/Term/methods/05-json.js","../src/Term/methods/index.js","../src/Term/tag/fns.js","../src/Term/tag/add.js","../src/Term/tag/unTag.js","../src/Term/tag/canBe.js","../src/Term/tag/index.js","../src/Term/Term.js","../src/Phrase/methods/01-utils.js","../src/Phrase/methods/02-text.js","../src/Phrase/methods/03-change.js","../src/Phrase/insert/append.js","../src/Phrase/insert/prepend.js","../src/Phrase/insert/delete.js","../src/Phrase/methods/04-insert.js","../src/Phrase/methods/05-json.js","../src/Phrase/methods/06-lookahead.js","../src/Phrase/methods/index.js","../src/Phrase/match/02-failFast.js","../src/Phrase/match/03-tryMatch.js","../src/Doc/match/parseToken.js","../src/Doc/match/syntax.js","../src/Phrase/match/01-matchAll.js","../src/Phrase/match/not.js","../src/Phrase/match/index.js","../src/Phrase/Phrase.js","../src/01-tokenizer/Pool.js","../src/01-tokenizer/01-sentences.js","../src/01-tokenizer/02-words.js","../src/01-tokenizer/index.js","../src/_version.js","../src/World/_data.js","../src/World/tags/tags/nouns.js","../src/World/tags/tags/verbs.js","../src/World/tags/tags/values.js","../src/World/tags/tags/misc.js","../src/World/tags/inference/_color.js","../src/World/tags/inference/_isA.js","../src/World/tags/inference/_notA.js","../src/World/tags/inference/_lineage.js","../src/World/tags/inference/index.js","../src/World/tags/index.js","../node_modules/efrt-unpack/efrt-unpack.min.js","../src/World/addWords.js","../src/World/addIrregulars.js","../src/World/data/misc.js","../src/World/data/plurals.js","../src/World/data/conjugations.js","../src/transforms/conjugate/suffixes.js","../src/transforms/conjugate/01-suffixes.js","../src/transforms/conjugate/02-generic.js","../src/transforms/conjugate/index.js","../src/transforms/adjectives/toSuperlative.js","../src/transforms/adjectives/toComparative.js","../src/transforms/adjectives/index.js","../src/transforms/toPlural/_rules.js","../src/transforms/toPlural/index.js","../src/transforms/toSingular/_rules.js","../src/transforms/toSingular/index.js","../src/transforms/toInfinitive/_transform.js","../src/transforms/toInfinitive/_guess.js","../src/transforms/toInfinitive/index.js","../src/World/World.js","../src/Doc/methods/01-utils.js","../src/Doc/methods/02-accessors.js","../src/Doc/methods/03-match.js","../src/Doc/methods/_setTag.js","../src/Doc/methods/04-tag.js","../src/Doc/methods/05-loops.js","../src/Doc/methods/06-lookup.js","../src/Doc/methods/insert/01-replace.js","../src/Doc/methods/insert/02-insert.js","../src/Doc/methods/output/01-text.js","../src/Doc/methods/output/02-json.js","../src/world/tags/tags/nouns.js","../src/world/tags/tags/verbs.js","../src/world/tags/tags/values.js","../src/world/tags/tags/misc.js","../src/world/tags/inference/_color.js","../src/world/tags/inference/_isA.js","../src/world/tags/inference/_notA.js","../src/world/tags/inference/_lineage.js","../src/world/tags/inference/index.js","../src/world/tags/index.js","../src/Doc/methods/_debug.js","../src/Doc/methods/output/_topk.js","../src/Doc/methods/output/03-out.js","../src/Doc/methods/output/04-export.js","../src/Doc/methods/transform/01-sort.js","../src/Doc/methods/transform/_methods.js","../src/Doc/methods/transform/02-normalize.js","../src/Doc/methods/transform/03-split.js","../src/Doc/methods/transform/04-case.js","../src/Doc/methods/transform/05-whitespace.js","../src/Doc/methods/transform/06-join.js","../src/Doc/methods/transform/07-contract.js","../src/Doc/methods/index.js","../src/Subset/_simple.js","../src/02-tagger/01-init/01-lexicon.js","../src/02-tagger/01-init/02-punctuation.js","../src/02-tagger/01-init/data/startsWith.js","../src/02-tagger/01-init/03-prefixes.js","../src/02-tagger/01-init/data/endsWith.js","../src/02-tagger/01-init/data/suffixMap.js","../src/02-tagger/01-init/04-suffixes.js","../src/02-tagger/01-init/data/emoticons.js","../src/02-tagger/01-init/05-emoji.js","../src/02-tagger/01-init/index.js","../src/02-tagger/02-fallbacks/data/markov.js","../src/02-tagger/02-fallbacks/01-neighbours.js","../src/02-tagger/02-fallbacks/02-case.js","../src/02-tagger/02-fallbacks/03-stem.js","../src/02-tagger/02-fallbacks/data/isPlural.js","../src/02-tagger/02-fallbacks/04-plurals.js","../src/02-tagger/02-fallbacks/data/organizations.js","../src/02-tagger/02-fallbacks/05-organizations.js","../src/02-tagger/02-fallbacks/index.js","../src/02-tagger/03-contractions/01-negative.js","../src/02-tagger/03-contractions/02-simple.js","../src/02-tagger/03-contractions/03-irregulars.js","../src/02-tagger/03-contractions/04-possessive.js","../src/02-tagger/03-contractions/05-perfectTense.js","../src/02-tagger/03-contractions/06-ranges.js","../src/02-tagger/03-contractions/index.js","../src/02-tagger/04-correction/fixMisc.js","../src/02-tagger/04-correction/fixThe.js","../src/02-tagger/04-correction/fixNouns.js","../src/02-tagger/04-correction/fixPerson.js","../src/02-tagger/04-correction/fixVerb.js","../src/02-tagger/04-correction/fixAdjective.js","../src/02-tagger/04-correction/fixValue.js","../src/02-tagger/04-correction/fixDates.js","../src/02-tagger/04-correction/index.js","../src/02-tagger/index.js","../src/Subset/Abbreviations.js","../src/Subset/Acronyms.js","../src/Subset/Clauses.js","../src/Subset/Contractions.js","../src/Subset/Lists.js","../src/Subset/Nouns/plural/hasPlural.js","../src/Subset/Nouns/getArticle.js","../src/Subset/Nouns/plural/isPlural/_rules.js","../src/Subset/Nouns/plural/isPlural/index.js","../src/Subset/Nouns/toPossessive.js","../src/Subset/Nouns/parse.js","../src/Subset/Nouns/methods.js","../src/Subset/Nouns/index.js","../src/Subset/Parentheses.js","../src/Subset/Possessives.js","../src/Subset/Quotations.js","../src/Subset/Verbs/toInfinitive/index.js","../src/Subset/Verbs/isPlural.js","../src/Subset/Verbs/toNegative.js","../src/Subset/Verbs/parse.js","../src/Subset/Verbs/conjugate/toBe.js","../src/Subset/Verbs/conjugate/index.js","../src/Subset/Verbs/methods.js","../src/Subset/Verbs/index.js","../src/Subset/People.js","../src/Subset/index.js","../src/Doc/Doc.js","../src/index.js"],"sourcesContent":["//this is a not-well-thought-out way to reduce our dependence on `object===object` stuff\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split('')\n\n//generates a unique id for this term\nfunction makeId(str) {\n str = str || '_'\n let text = str + '-'\n for (let i = 0; i < 7; i++) {\n text += chars[Math.floor(Math.random() * chars.length)]\n }\n return text\n}\n\nmodule.exports = makeId\n","//a hugely-ignorant, and widely subjective transliteration of latin, cryllic, greek unicode characters to english ascii.\n//approximate visual (not semantic or phonetic) relationship between unicode and ascii characters\n//http://en.wikipedia.org/wiki/List_of_Unicode_characters\n//https://docs.google.com/spreadsheet/ccc?key=0Ah46z755j7cVdFRDM1A2YVpwa1ZYWlpJM2pQZ003M0E\nlet compact = {\n '!': '¡',\n '?': '¿Ɂ',\n '\"': '“”\"❝❞',\n \"'\": '‘‛❛❜',\n '-': '—–',\n a: 'ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАадѦѧӐӑӒӓƛɅæ',\n b: 'ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ',\n c: '¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼͽϲϹϽϾСсєҀҁҪҫ',\n d: 'ÐĎďĐđƉƊȡƋƌǷ',\n e: 'ÈÉÊËèéêëĒēĔĕĖėĘęĚěƎƏƐǝȄȅȆȇȨȩɆɇΈΕΞΣέεξϱϵ϶ЀЁЕЭеѐёҼҽҾҿӖӗӘәӚӛӬӭ',\n f: 'ƑƒϜϝӺӻҒғſ',\n g: 'ĜĝĞğĠġĢģƓǤǥǦǧǴǵ',\n h: 'ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ',\n I: 'ÌÍÎÏ',\n i: 'ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇії',\n j: 'ĴĵǰȷɈɉϳЈј',\n k: 'ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ',\n l: 'ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ',\n m: 'ΜϺϻМмӍӎ',\n n: 'ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ',\n o: 'ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϭϴОФоѲѳӦӧӨөӪӫ',\n p: 'ƤƿΡρϷϸϼРрҎҏÞ',\n q: 'Ɋɋ',\n r: 'ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ',\n s: 'ŚśŜŝŞşŠšƧƨȘșȿЅѕ',\n t: 'ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт',\n u: 'µÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰμυϋύ',\n v: 'νѴѵѶѷ',\n w: 'ŴŵƜωώϖϢϣШЩшщѡѿ',\n x: '×ΧχϗϰХхҲҳӼӽӾӿ',\n y: 'ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ',\n z: 'ŹźŻżŽžƩƵƶȤȥɀΖζ',\n}\n//decompress data into two hashes\nlet unicode = {}\nObject.keys(compact).forEach(function(k) {\n compact[k].split('').forEach(function(s) {\n unicode[s] = k\n })\n})\n\nconst killUnicode = str => {\n let chars = str.split('')\n chars.forEach((s, i) => {\n if (unicode[s]) {\n chars[i] = unicode[s]\n }\n })\n return chars.join('')\n}\nmodule.exports = killUnicode\n// console.log(killUnicode('bjŏȒk—Ɏó'));\n","const periodAcronym = /([A-Z]\\.)+[A-Z]?,?$/\nconst oneLetterAcronym = /^[A-Z]\\.,?$/\nconst noPeriodAcronym = /[A-Z]{2,}('s|,)?$/\nconst lowerCaseAcronym = /([a-z]\\.){2,}[a-z]\\.?$/\n\nconst isAcronym = function(str) {\n //like N.D.A\n if (periodAcronym.test(str) === true) {\n return true\n }\n //like c.e.o\n if (lowerCaseAcronym.test(str) === true) {\n return true\n }\n //like 'F.'\n if (oneLetterAcronym.test(str) === true) {\n return true\n }\n //like NDA\n if (noPeriodAcronym.test(str) === true) {\n return true\n }\n return false\n}\nmodule.exports = isAcronym\n","const killUnicode = require('./unicode')\nconst isAcronym = require('./isAcronym')\nconst hasSlash = /[a-z\\u00C0-\\u00FF] ?\\/ ?[a-z\\u00C0-\\u00FF]/\n\n/** some basic operations on a string to reduce noise */\nconst clean = function(str) {\n str = str || ''\n str = str.toLowerCase()\n str = str.trim()\n let original = str\n //(very) rough ASCII transliteration - bjŏrk -> bjork\n str = killUnicode(str)\n //rough handling of slashes - 'see/saw'\n if (hasSlash.test(str) === true) {\n str = str.replace(/\\/.*/, '')\n }\n //#tags, @mentions\n str = str.replace(/^[#@]/, '')\n //punctuation\n str = str.replace(/[,;.!?]+$/, '')\n // coerce single curly quotes\n str = str.replace(/[\\u0027\\u0060\\u00B4\\u2018\\u2019\\u201A\\u201B\\u2032\\u2035\\u2039\\u203A]+/g, \"'\")\n // coerce double curly quotes\n str = str.replace(\n /[\\u0022\\u00AB\\u00BB\\u201C\\u201D\\u201E\\u201F\\u2033\\u2034\\u2036\\u2037\\u2E42\\u301D\\u301E\\u301F\\uFF02]+/g,\n '\"'\n )\n //coerce Unicode ellipses\n str = str.replace(/\\u2026/g, '...')\n //en-dash\n str = str.replace(/\\u2013/g, '-')\n //lookin'->looking (make it easier for conjugation)\n if (/[a-z][^aeiou]in['’]$/.test(str) === true) {\n str = str.replace(/in['’]$/, 'ing')\n }\n //turn re-enactment to reenactment\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n str = str.replace('-', '')\n }\n //strip leading & trailing grammatical punctuation\n if (/^[:;]/.test(str) === false) {\n str = str.replace(/\\.{3,}$/g, '')\n str = str.replace(/[\",\\.!:;\\?\\)]+$/g, '')\n str = str.replace(/^['\"\\(]+/g, '')\n }\n //do this again..\n str = str.trim()\n //oh shucks,\n if (str === '') {\n str = original\n }\n //compact acronyms\n if (isAcronym(str)) {\n str = str.replace(/\\./g, '')\n }\n //nice-numbers\n str = str.replace(/([0-9]),([0-9])/g, '$1$2')\n return str\n}\n\nmodule.exports = clean\n// console.log(normalize('Dr. V Cooper'));\n","/** reduced is one step further than clean */\nconst reduced = function(str) {\n // remove apostrophes\n str = str.replace(/['’]s$/, '')\n str = str.replace(/s['’]$/, 's')\n return str\n}\nmodule.exports = reduced\n","const normalize = require('./normalize/clean')\nconst reduce = require('./normalize/reduce')\n// basically, tokenize for terms.\n\n//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation\n//we have slightly different rules for start/end - like #hashtags.\nconst startings = /^[ \\n\\t\\.’'\\[\\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\\-?‘’;\\/⁄·\\&*\\•^†‡°¡¿※№÷׺ª%‰+−=‱¶′″‴§~|‖¦©℗®℠™¤₳฿\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F]+/\nconst endings = /[ \\n\\t\\.’'\\[\\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\\-?‘’;\\/⁄·\\&*@\\•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~|‖¦©℗®℠™¤₳฿\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E]+$/\n\n//money = ₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥\nconst hasSlash = /\\//\nconst hasApostrophe = /['’]/\nconst minusNumber = /^[-+\\.][0-9]/\n\n/** turn given text into a parsed-up object\n * seperate the 'meat' of the word from the whitespace+punctuation\n */\nconst parseTerm = str => {\n let original = str\n let pre = ''\n let post = ''\n str = str.replace(startings, found => {\n pre = found\n // support '-40'\n if ((pre === '-' || pre === '+' || pre === '.') && minusNumber.test(str)) {\n pre = ''\n return found\n }\n return ''\n })\n str = str.replace(endings, found => {\n post = found\n // keep s-apostrophe - \"flanders'\" or \"chillin'\"\n if (hasApostrophe.test(found) && /[sn]['’]$/.test(original) && hasApostrophe.test(pre) === false) {\n post = post.replace(hasApostrophe, '')\n return `'`\n }\n return ''\n })\n //we went too far..\n if (str === '') {\n // do a very mild parse, and hope for the best.\n original = original.replace(/ *$/, after => {\n post = after || ''\n return ''\n })\n str = original\n pre = ''\n post = post\n }\n\n // create the various forms of our text,\n let clean = normalize(str)\n const parsed = {\n text: str,\n clean: clean,\n reduced: reduce(clean),\n pre: pre,\n post: post,\n }\n // support aliases for slashes\n if (hasSlash.test(str)) {\n str.split(hasSlash).forEach(word => {\n parsed.alias = parsed.alias || {}\n parsed.alias[word.trim()] = true\n })\n }\n return parsed\n}\nmodule.exports = parseTerm\n","const titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/\nconst upperCase = /^[A-Z]+s?$/\n\n/** convert all text to uppercase */\nexports.toUpperCase = function() {\n this.text = this.text.toUpperCase()\n return this\n}\n\n/** convert all text to lowercase */\nexports.toLowerCase = function() {\n this.text = this.text.toLowerCase()\n return this\n}\n\n/** only set the first letter to uppercase\n * leave any existing uppercase alone\n */\nexports.toTitleCase = function() {\n this.text = this.text.replace(/^ *[a-z\\u00C0-\\u00FF]/, x => x.toUpperCase()) //support unicode?\n return this\n}\n\n/** if all letters are uppercase */\nexports.isUpperCase = function() {\n return upperCase.test(this.text)\n}\n/** if the first letter is uppercase, and the rest are lowercase */\nexports.isTitleCase = function() {\n return titleCase.test(this.text)\n}\nexports.titleCase = exports.isTitleCase\n","// these methods are called with '@hasComma' in the match syntax\n// various unicode quotation-mark formats\nconst startQuote =\n '(\\u0022|\\uFF02|\\u0027|\\u201C|\\u2018|\\u201F|\\u201B|\\u201E|\\u2E42|\\u201A|\\u00AB|\\u2039|\\u2035|\\u2036|\\u2037|\\u301D|\\u0060|\\u301F)'\nconst endQuote =\n '(\\u0022|\\uFF02|\\u0027|\\u201D|\\u2019|\\u201D|\\u2019|\\u201D|\\u201D|\\u2019|\\u00BB|\\u203A|\\u2032|\\u2033|\\u2034|\\u301E|\\u00B4|\\u301E)'\n\n/** search the term's 'post' punctuation */\nexports.hasPost = function(punct) {\n return this.post.indexOf(punct) !== -1\n}\n/** search the term's 'pre' punctuation */\nexports.hasPre = function(punct) {\n return this.pre.indexOf(punct) !== -1\n}\n\n/** does it have a quotation symbol? */\nexports.hasQuote = function() {\n return startQuote.test(this.pre) || endQuote.test(this.post)\n}\n\n/** does it have a comma? */\nexports.hasComma = function() {\n return this.hasPost(',')\n}\n\n/** does it end in a period? */\nexports.hasPeriod = function() {\n return this.hasPost('.') === true && this.hasPost('...') === false\n}\n\n/** does it end in an exclamation */\nexports.hasExclamation = function() {\n return this.hasPost('!')\n}\n\n/** does it end with a question mark? */\nexports.hasQuestionMark = function() {\n return this.hasPost('?') || this.hasPost('¿')\n}\n\n/** is there a ... at the end? */\nexports.hasEllipses = function() {\n return this.hasPost('..') || this.hasPost('…')\n}\n\n/** is there a semicolon after this word? */\nexports.hasSemicolon = function() {\n return this.hasPost(';')\n}\n\n/** is there a slash '/' in this word? */\nexports.hasSlash = function() {\n return /\\//.test(this.text)\n}\n\n/** a hyphen connects two words like-this */\nexports.hasHyphen = function() {\n const hyphen = /(-|–|—)/\n return hyphen.test(this.post) || hyphen.test(this.pre)\n}\n/** a dash separates words - like that */\nexports.hasDash = function() {\n const hyphen = / (-|–|—) /\n return hyphen.test(this.post) || hyphen.test(this.pre)\n}\n\n/** is it multiple words combinded */\nexports.hasContraction = function() {\n return Boolean(this.implicit)\n}\n\n/** try to sensibly put this punctuation mark into the term */\nexports.addPunctuation = function(punct) {\n // dont add doubles\n if (punct === ',' || punct === ';') {\n this.post = this.post.replace(punct, '')\n }\n this.post = punct + this.post\n return this\n}\n","//declare it up here\nlet wrapMatch = function() {}\n\n/** ignore optional/greedy logic, straight-up term match*/\nconst doesMatch = function(t, reg, index, length) {\n // support id matches\n if (reg.id === t.id) {\n return true\n }\n // support '.'\n if (reg.anything === true) {\n return true\n }\n // support '^' (in parentheses)\n if (reg.start === true && index !== 0) {\n return false\n }\n // support '$' (in parentheses)\n if (reg.end === true && index !== length - 1) {\n return false\n }\n //support a text match\n if (reg.word !== undefined) {\n //match contractions\n if (t.implicit !== null && t.implicit === reg.word) {\n return true\n }\n // term aliases for slashes and things\n if (t.alias !== undefined && t.alias.hasOwnProperty(reg.word)) {\n return true\n }\n // support ~ match\n if (reg.soft === true && reg.word === t.root) {\n return true\n }\n //match either .clean or .text\n return reg.word === t.clean || reg.word === t.text || reg.word === t.reduced\n }\n //support #Tag\n if (reg.tag !== undefined) {\n return t.tags[reg.tag] === true\n }\n //support @method\n if (reg.method !== undefined) {\n if (typeof t[reg.method] === 'function' && t[reg.method]() === true) {\n return true\n }\n return false\n }\n //support /reg/\n if (reg.regex !== undefined) {\n return reg.regex.test(t.clean)\n }\n //support (one|two)\n if (reg.choices !== undefined) {\n // try to support && operator\n if (reg.operator === 'and') {\n // must match them all\n return reg.choices.every(r => wrapMatch(t, r, index, length))\n }\n // or must match one\n return reg.choices.some(r => wrapMatch(t, r, index, length))\n }\n return false\n}\n\n// wrap result for !negative match logic\nwrapMatch = function(t, reg, index, length) {\n let result = doesMatch(t, reg, index, length)\n if (reg.negative === true) {\n return !result\n }\n return result\n}\n\nmodule.exports = wrapMatch\n","const doesMatch = require('./_doesMatch')\nconst isAcronym = require('../normalize/isAcronym')\n\n// these tags aren't juicy-enough\nconst boring = {}\n\n/** check a match object against this term */\nexports.doesMatch = function(reg, index, length) {\n return doesMatch(this, reg, index, length)\n}\n\n/** does this term look like an acronym? */\nexports.isAcronym = function() {\n return isAcronym(this.text)\n}\n\n/** is this term implied by a contraction? */\nexports.isImplicit = function() {\n return this.text === '' && Boolean(this.implicit)\n}\n\n/** does the term have at least one good tag? */\nexports.isKnown = function() {\n return Object.keys(this.tags).some(t => boring[t] !== true)\n}\n\n/** cache the root property of the term */\nexports.setRoot = function(world) {\n let transform = world.transforms\n let str = this.implicit || this.clean\n if (this.tags.Plural) {\n str = transform.toSingular(str, world)\n }\n if (this.tags.Verb && !this.tags.Negative && !this.tags.Infinitive) {\n let tense = null\n if (this.tags.PastTense) {\n tense = 'PastTense'\n } else if (this.tags.Gerund) {\n tense = 'Gerund'\n } else if (this.tags.PresentTense) {\n tense = 'PresentTense'\n } else if (this.tags.Participle) {\n tense = 'Participle'\n } else if (this.tags.Actor) {\n tense = 'Actor'\n }\n str = transform.toInfinitive(str, world, tense)\n }\n this.root = str\n}\n","const killUnicode = require('../normalize/unicode')\nconst hasSpace = /[\\s-]/\nconst isUpperCase = /^[A-Z-]+$/\n\n// const titleCase = str => {\n// return str.charAt(0).toUpperCase() + str.substr(1)\n// }\n\n/** return various text formats of this term */\nexports.textOut = function(options, showPre, showPost) {\n options = options || {}\n let word = this.text\n let before = this.pre\n let after = this.post\n\n // -word-\n if (options.reduced === true) {\n word = this.reduced || ''\n }\n if (options.root === true) {\n word = this.root || ''\n }\n if (options.implicit === true && this.implicit) {\n word = this.implicit || ''\n }\n if (options.normal === true) {\n word = this.clean || this.text || ''\n }\n if (options.root === true) {\n word = this.root || this.reduced || ''\n }\n if (options.unicode === true) {\n word = killUnicode(word)\n }\n // cleanup case\n if (options.titlecase === true) {\n if (this.tags.ProperNoun && !this.titleCase()) {\n // word = titleCase(word)\n } else if (this.tags.Acronym) {\n word = word.toUpperCase() //uppercase acronyms\n } else if (isUpperCase.test(word) && !this.tags.Acronym) {\n // lowercase everything else\n word = word.toLowerCase()\n }\n }\n if (options.lowercase === true) {\n word = word.toLowerCase()\n }\n // remove the '.'s from 'F.B.I.' (safely)\n if (options.acronyms === true && this.tags.Acronym) {\n word = word.replace(/\\./g, '')\n }\n\n // -before/after-\n if (options.whitespace === true || options.root) {\n before = ''\n after = ' '\n if ((hasSpace.test(this.post) === false || options.last) && !this.implicit) {\n after = ''\n }\n }\n if (options.punctuation === true && !options.root) {\n //normalized end punctuation\n if (this.hasPost('.') === true) {\n after = '.' + after\n } else if (this.hasPost('?') === true) {\n after = '?' + after\n } else if (this.hasPost('!') === true) {\n after = '!' + after\n } else if (this.hasPost(',') === true) {\n after = ',' + after\n } else if (this.hasEllipses() === true) {\n after = '...' + after\n }\n }\n if (showPre !== true) {\n before = ''\n }\n if (showPost !== true) {\n // let keep = after.match(/\\)/) || ''\n after = '' //keep //after.replace(/[ .?!,]+/, '')\n }\n // remove the '.' from 'Mrs.' (safely)\n if (options.abbreviations === true && this.tags.Abbreviation) {\n after = after.replace(/^\\./, '')\n }\n return before + word + after\n}\n","const boringTags = {\n Auxiliary: 1,\n Possessive: 1,\n}\n\n/** a subjective ranking of tags kinda tfidf-based */\nconst rankTags = function(term, world) {\n let tags = Object.keys(term.tags)\n const tagSet = world.tags\n tags = tags.sort((a, b) => {\n //bury the tags we dont want\n if (boringTags[b] || !tagSet[b]) {\n return -1\n }\n // unknown tags are interesting\n if (!tagSet[b]) {\n return 1\n }\n if (!tagSet[a]) {\n return 0\n }\n // then sort by #of parent tags (most-specific tags first)\n if (tagSet[a].lineage.length > tagSet[b].lineage.length) {\n return 1\n }\n if (tagSet[a].isA.length > tagSet[b].isA.length) {\n return -1\n }\n return 0\n })\n return tags\n}\nmodule.exports = rankTags\n","const rankTags = require('./_bestTag')\n\nconst jsonDefault = {\n text: true,\n tags: true,\n implicit: true,\n\n clean: false,\n id: false,\n index: false,\n offset: false,\n whitespace: false,\n bestTag: false,\n}\n\n/** return various metadata for this term */\nexports.json = function(options, world) {\n options = options || {}\n options = Object.assign({}, jsonDefault, options)\n let result = {}\n\n // default on\n if (options.text) {\n result.text = this.text\n }\n if (options.normal) {\n result.normal = this.normal\n }\n\n if (options.tags) {\n result.tags = Object.keys(this.tags)\n }\n\n // default off\n if (options.clean) {\n result.clean = this.clean\n }\n if (options.id || options.offset) {\n result.id = this.id\n }\n if (options.implicit && this.implicit !== null) {\n result.implicit = this.implicit\n }\n if (options.whitespace) {\n result.pre = this.pre\n result.post = this.post\n }\n if (options.bestTag) {\n result.bestTag = rankTags(this, world)[0]\n }\n\n return result\n}\n","module.exports = Object.assign(\n {},\n require('./01-case'),\n require('./02-punctuation'),\n require('./03-misc'),\n require('./04-text'),\n require('./05-json')\n)\n","/** add spaces at the end */\nconst padEnd = function(str, width) {\n str = str.toString()\n while (str.length < width) {\n str += ' '\n }\n return str\n}\n\n/** output for verbose-mode */\nexports.logTag = function(t, tag, reason) {\n let log = '\\x1b[33m' + padEnd(t.clean, 15) + '\\x1b[0m + \\x1b[32m' + tag + '\\x1b[0m '\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason + ''\n }\n console.log(log)\n}\n\n/** output for verbose mode */\nexports.logUntag = function(t, tag, reason) {\n let log = '\\x1b[33m' + padEnd(t.clean, 3) + ' \\x1b[31m - #' + tag + '\\x1b[0m '\n if (reason) {\n log = padEnd(log, 35) + ' ' + reason\n }\n console.log(log)\n}\n\nexports.isArray = function(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\nexports.titleCase = str => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n","const fns = require('./fns')\n\n/** add a tag, and its descendents, to a term */\nconst addTag = function(t, tag, reason, world) {\n let tagset = world.tags\n //support '.' or '-' notation for skipping the tag\n if (tag === '' || tag === '.' || tag === '-') {\n return\n }\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '')\n }\n tag = fns.titleCase(tag)\n //if we already got this one\n if (t.tags[tag] === true) {\n return\n }\n // log it?\n const isVerbose = world.isVerbose()\n if (isVerbose === true) {\n fns.logTag(t, tag, reason)\n }\n //add tag\n t.tags[tag] = true //whee!\n\n //check tagset for any additional things to do...\n if (tagset.hasOwnProperty(tag) === true) {\n //add parent Tags\n tagset[tag].isA.forEach(down => {\n t.tags[down] = true\n if (isVerbose === true) {\n fns.logTag(t, '→ ' + down)\n }\n })\n //remove any contrary tags\n t.unTag(tagset[tag].notA, '←', world)\n }\n}\n\n/** support an array of tags */\nconst addTags = function(term, tags, reason, world) {\n if (fns.isArray(tags) === true) {\n tags.forEach(tag => addTag(term, tag, reason, world))\n } else {\n addTag(term, tags, reason, world)\n }\n}\nmodule.exports = addTags\n","const fns = require('./fns')\n\n/** remove this tag, and its descentents from the term */\nconst unTag = function(t, tag, reason, world) {\n const isVerbose = world.isVerbose()\n //support '*' for removing all tags\n if (tag === '*') {\n t.tags = {}\n return t\n }\n // remove the tag\n if (t.tags[tag] === true && t.tags.hasOwnProperty(tag) === true) {\n delete t.tags[tag]\n //log in verbose-mode\n if (isVerbose === true) {\n fns.logUntag(t, tag, reason)\n }\n }\n //delete downstream tags too\n const tagset = world.tags\n if (tagset[tag]) {\n let lineage = tagset[tag].lineage\n for (let i = 0; i < lineage.length; i++) {\n // unTag(t, also[i], ' - - - ', world) //recursive\n if (t.tags[lineage[i]] === true) {\n delete t.tags[lineage[i]]\n if (isVerbose === true) {\n fns.logUntag(t, ' - ' + lineage[i])\n }\n }\n }\n }\n return t\n}\n\n//handle an array of tags\nconst untagAll = function(term, tags, reason, world) {\n if (fns.isArray(tags) === true) {\n tags.forEach(tag => unTag(term, tag, reason, world))\n } else {\n unTag(term, tags, reason, world)\n }\n}\nmodule.exports = untagAll\n","'use strict'\n\n//recursively-check compatibility of this tag and term\nconst canBe = function(term, tag, world) {\n const tagset = world.tags\n // cleanup tag\n if (tag[0] === '#') {\n tag = tag.replace(/^#/, '')\n }\n //fail-fast\n if (tagset[tag] === undefined) {\n return true\n }\n //loop through tag's contradictory tags\n let enemies = tagset[tag].notA || []\n for (let i = 0; i < enemies.length; i++) {\n if (term.tags[enemies[i]] === true) {\n return false\n }\n }\n if (tagset[tag].isA !== undefined) {\n return canBe(term, tagset[tag].isA, world) //recursive\n }\n return true\n}\n\nmodule.exports = canBe\n","const add = require('./add')\nconst unTag = require('./unTag')\nconst canBe = require('./canBe')\n\n/** add a tag or tags, and their descendents to this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\nexports.tag = function(tags, reason, world) {\n add(this, tags, reason, world)\n return this\n}\n\n/** only tag this term if it's consistent with it's current tags */\nexports.tagSafe = function(tags, reason, world) {\n if (canBe(this, tags, world)) {\n add(this, tags, reason, world)\n }\n return this\n}\n\n/** remove a tag or tags, and their descendents from this term\n * @param {string | string[]} tags - a tag or tags\n * @param {string?} [reason] a clue for debugging\n */\nexports.unTag = function(tags, reason, world) {\n unTag(this, tags, reason, world)\n return this\n}\n\n/** is this tag consistent with the word's current tags?\n * @param {string | string[]} tags - a tag or tags\n * @returns {boolean}\n */\nexports.canBe = function(tags, world) {\n return canBe(this, tags, world)\n}\n","const makeId = require('./_id')\nconst parseTerm = require('./parse')\nconst methods = require('./methods')\nconst tagMethods = require('./tag')\n\nclass Term {\n constructor(text = '') {\n text = String(text)\n let obj = parseTerm(text)\n // the various forms of our text\n this.text = obj.text || ''\n this.clean = obj.clean\n this.reduced = obj.reduced\n this.root = obj.root || null\n this.implicit = obj.implicit || null\n\n this.pre = obj.pre || ''\n this.post = obj.post || ''\n this.tags = {}\n this.prev = null\n this.next = null\n this.id = makeId(obj.clean)\n this.isA = 'Term' // easier than .constructor...\n // support alternative matches\n if (obj.alias) {\n this.alias = obj.alias\n }\n }\n /** set the text of the Term to something else*/\n set(str) {\n let obj = parseTerm(str)\n this.text = obj.text\n this.clean = obj.clean\n return this\n }\n}\n\n/** create a deep-copy of this term */\nTerm.prototype.clone = function() {\n let term = new Term(this.text)\n term.pre = this.pre\n term.post = this.post\n term.tags = Object.assign({}, this.tags)\n //use the old id, so it can be matched with .match(doc)\n // term.id = this.id\n return term\n}\n\nObject.assign(Term.prototype, methods)\nObject.assign(Term.prototype, tagMethods)\n\nmodule.exports = Term\n","/** return a flat array of Term objects */\nexports.terms = function(n) {\n let terms = [this.pool.get(this.start)]\n if (this.length === 0) {\n return []\n }\n for (let i = 0; i < this.length - 1; i += 1) {\n let id = terms[terms.length - 1].next\n if (id === null) {\n // throw new Error('linked-list broken')\n console.error(\"Compromise error: Linked list broken in phrase '\" + this.start + \"'\")\n break\n }\n let term = this.pool.get(id)\n terms.push(term)\n //return this one?\n if (n !== undefined && n === i) {\n return terms[n]\n }\n }\n if (n !== undefined) {\n return terms[n]\n }\n return terms\n}\n\n/** return a shallow or deep copy of this phrase */\nexports.clone = function(isShallow) {\n if (isShallow) {\n return this.buildFrom(this.start, this.length)\n }\n //how do we clone part of the pool?\n let terms = this.terms()\n let newTerms = terms.map(t => t.clone())\n //connect these new ids up\n newTerms.forEach((t, i) => {\n //add it to the pool..\n this.pool.add(t)\n if (newTerms[i + 1]) {\n t.next = newTerms[i + 1].id\n }\n if (newTerms[i - 1]) {\n t.prev = newTerms[i - 1].id\n }\n })\n return this.buildFrom(newTerms[0].id, newTerms.length)\n}\n\n/** return last term object */\nexports.lastTerm = function() {\n let terms = this.terms()\n return terms[terms.length - 1]\n}\n\n/** quick lookup for a term id */\nexports.hasId = function(wantId) {\n if (this.length === 0 || !wantId) {\n return false\n }\n if (this.start === wantId) {\n return true\n }\n let lastId = this.start\n for (let i = 0; i < this.length - 1; i += 1) {\n let term = this.pool.get(lastId)\n if (term === undefined) {\n console.error(`Compromise error: Linked list broken. Missing term '${lastId}' in phrase '${this.start}'\\n`)\n // throw new Error('linked List error')\n return false\n }\n if (term.next === wantId) {\n return true\n }\n lastId = term.next\n }\n return false\n}\n\n/** how many seperate, non-empty words is it? */\nexports.wordCount = function() {\n return this.terms().filter(t => t.text !== '').length\n}\n","const trimEnd = function(str) {\n return str.replace(/ +$/, '')\n}\n\n/** produce output in the given format */\nexports.text = function(options = {}, isFirst, isLast) {\n if (typeof options === 'string') {\n if (options === 'normal') {\n options = {\n whitespace: true,\n unicode: true,\n lowercase: true,\n punctuation: true,\n acronyms: true,\n abbreviations: true,\n implicit: true,\n normal: true,\n }\n } else if (options === 'clean') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n }\n } else if (options === 'reduced') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: false, //FIXME: reversed\n whitespace: true,\n unicode: true,\n implicit: true,\n reduced: true,\n }\n } else if (options === 'root') {\n options = {\n titlecase: false,\n lowercase: true,\n punctuation: true,\n whitespace: true,\n unicode: true,\n implicit: true,\n root: true,\n }\n } else {\n options = {}\n }\n }\n let terms = this.terms()\n //this this phrase a complete sentence?\n let isFull = false\n if (terms[0] && terms[0].prev === null && terms[terms.length - 1].next === null) {\n isFull = true\n }\n let text = terms.reduce((str, t, i) => {\n options.last = isLast && i === terms.length - 1\n let showPre = true\n let showPost = true\n if (isFull === false) {\n // dont show beginning whitespace\n if (i === 0 && isFirst) {\n showPre = false\n }\n // dont show end-whitespace\n if (i === terms.length - 1 && isLast) {\n showPost = false\n }\n }\n let txt = t.textOut(options, showPre, showPost)\n // if (options.titlecase && i === 0) {\n // txt = titleCase(txt)\n // }\n return str + txt\n }, '')\n //full-phrases show punctuation, but not whitespace\n if (isFull === true && isLast) {\n text = trimEnd(text)\n }\n if (options.trim) {\n text = text.trim()\n }\n return text\n}\n","/** remove start and end whitespace */\nexports.trim = function() {\n let terms = this.terms()\n if (terms.length > 0) {\n //trim starting\n terms[0].pre = terms[0].pre.replace(/^\\s+/, '')\n //trim ending\n let lastTerm = terms[terms.length - 1]\n lastTerm.post = lastTerm.post.replace(/\\s+$/, '')\n }\n return this\n}\n","const endOfSentence = /[.?!]\\s*$/\n\n// replacing a 'word.' with a 'word!'\nconst combinePost = function(before, after) {\n //only transfer the whitespace\n if (endOfSentence.test(after)) {\n let whitespace = before.match(/\\s*$/)\n return after + whitespace\n }\n return before\n}\n\n//add whitespace to the start of the second bit\nconst addWhitespace = function(beforeTerms, newTerms) {\n // add any existing pre-whitespace to beginning\n newTerms[0].pre = beforeTerms[0].pre\n let lastTerm = beforeTerms[beforeTerms.length - 1]\n\n //add any existing punctuation to end of our new terms\n let newTerm = newTerms[newTerms.length - 1]\n newTerm.post = combinePost(lastTerm.post, newTerm.post)\n // remove existing punctuation\n lastTerm.post = ''\n\n //before ←[space] - after\n if (lastTerm.post === '') {\n lastTerm.post += ' '\n }\n}\n\n//insert this segment into the linked-list\nconst stitchIn = function(main, newPhrase) {\n // console.log(main.text(), newPhrase.text())\n let afterId = main.lastTerm().next\n //connect ours in (main → newPhrase)\n main.lastTerm().next = newPhrase.start\n //stich the end in (newPhrase → after)\n newPhrase.lastTerm().next = afterId\n //do it backwards, too\n if (afterId) {\n // newPhrase ← after\n let afterTerm = main.pool.get(afterId)\n afterTerm.prev = newPhrase.lastTerm().id\n }\n // before ← newPhrase\n let beforeId = main.terms(0).id\n if (beforeId) {\n let newTerm = newPhrase.terms(0)\n newTerm.prev = beforeId\n }\n}\n\n// avoid stretching a phrase twice.\nconst unique = function(list) {\n return list.filter((o, i) => {\n return list.indexOf(o) === i\n })\n}\n\n//append one phrase onto another.\nconst appendPhrase = function(before, newPhrase, doc) {\n let beforeTerms = before.terms()\n //spruce-up the whitespace issues\n addWhitespace(beforeTerms, newPhrase.terms())\n //insert this segment into the linked-list\n stitchIn(before, newPhrase)\n\n // stretch!\n // make each effected phrase longer\n let toStretch = [before]\n let hasId = before.start\n let docs = [doc]\n\n docs = docs.concat(doc.parents()) // find them all!\n\n docs.forEach(parent => {\n // only the phrases that should change\n let shouldChange = parent.list.filter(p => {\n return p.hasId(hasId)\n })\n toStretch = toStretch.concat(shouldChange)\n })\n // don't double-count a phrase\n toStretch = unique(toStretch)\n // console.log(toStretch)\n toStretch.forEach(p => {\n p.length += newPhrase.length\n })\n return before\n}\nmodule.exports = appendPhrase\n","const hasSpace = / /\n\n//a new space needs to be added, either on the new phrase, or the old one\n// '[new] [◻old]' -or- '[old] [◻new] [old]'\nconst addWhitespace = function(newTerms) {\n //add a space before our new text?\n\n // add a space after our text\n let lastTerm = newTerms[newTerms.length - 1]\n if (hasSpace.test(lastTerm.post) === false) {\n lastTerm.post += ' '\n }\n\n // let term = original.pool.get(original.start)\n // if (term.prev) {\n // //add our space ahead of our new terms\n // let firstWord = newTerms[0]\n // if (hasSpace.test(firstWord.post) === false) {\n // firstWord.post += ' '\n // }\n // return\n // }\n\n //otherwise, add our space to the start of original\n // if (hasSpace.test(term.pre) === false) {\n // term.pre = ' ' + term.pre\n // }\n return\n}\n\n//insert this segment into the linked-list\nconst stitchIn = function(main, newPhrase, newTerms) {\n // [newPhrase] → [main]\n let lastTerm = newTerms[newTerms.length - 1]\n lastTerm.next = main.start\n // [before] → [main]\n let pool = main.pool\n let start = pool.get(main.start)\n if (start.prev) {\n let before = pool.get(start.prev)\n before.next = newPhrase.start\n }\n //do it backwards, too\n // before ← newPhrase\n newTerms[0].prev = main.terms(0).prev\n // newPhrase ← main\n main.terms(0).prev = lastTerm.id\n}\n\n//recursively increase the length of all parent phrases\n// const stretchAll = function(doc, oldStart, newPhrase) {\n// //find our phrase to stretch\n// let phrase = doc.list.find(p => p.hasId(oldStart) || p.hasId(newPhrase.start))\n// if (phrase === undefined) {\n// console.error('compromise error: Prepend missing start - ' + oldStart)\n// return\n// }\n// //should we update the phrase's starting?\n// if (phrase.start === oldStart) {\n// phrase.start = newPhrase.start\n// }\n// // console.log(newPhrase)\n// phrase.length += newPhrase.length\n// if (doc.from) {\n// stretchAll(doc.from, oldStart, newPhrase)\n// }\n// }\nconst unique = function(list) {\n return list.filter((o, i) => {\n return list.indexOf(o) === i\n })\n}\n\n//append one phrase onto another\nconst joinPhrase = function(original, newPhrase, doc) {\n const starterId = original.start\n let newTerms = newPhrase.terms()\n //spruce-up the whitespace issues\n addWhitespace(newTerms, original)\n //insert this segment into the linked-list\n stitchIn(original, newPhrase, newTerms)\n //increase the length of our phrases\n let toStretch = [original]\n let docs = [doc]\n docs = docs.concat(doc.parents())\n docs.forEach(d => {\n // only the phrases that should change\n let shouldChange = d.list.filter(p => {\n return p.hasId(starterId) || p.hasId(newPhrase.start)\n })\n toStretch = toStretch.concat(shouldChange)\n })\n // don't double-count\n toStretch = unique(toStretch)\n // stretch these phrases\n toStretch.forEach(p => {\n p.length += newPhrase.length\n // change the start too, if necessary\n if (p.start === starterId) {\n p.start = newPhrase.start\n }\n })\n return original\n}\nmodule.exports = joinPhrase\n","//recursively decrease the length of all the parent phrases\nconst shrinkAll = function(doc, id, deleteLength, after) {\n let arr = doc.parents()\n arr.push(doc)\n\n arr.forEach(d => {\n //find our phrase to shrink\n let phrase = d.list.find(p => p.hasId(id))\n if (!phrase) {\n return\n }\n phrase.length -= deleteLength\n // does it start with this soon-removed word?\n if (phrase.start === id) {\n phrase.start = after.id\n }\n })\n // cleanup empty phrase objects\n doc.list = doc.list.filter(p => {\n if (!p.start || !p.length) {\n return false\n }\n return true\n })\n}\n\n/** wrap the linked-list around these terms\n * so they don't appear any more\n */\nconst deletePhrase = function(phrase, doc) {\n let pool = doc.pool()\n let terms = phrase.terms()\n\n //grab both sides of the chain,\n let prev = pool.get(terms[0].prev) || {}\n let after = pool.get(terms[terms.length - 1].next) || {}\n\n if (terms[0].implicit && prev.implicit) {\n prev.set(prev.implicit)\n prev.post += ' '\n }\n\n // //first, change phrase lengths\n shrinkAll(doc, phrase.start, phrase.length, after)\n\n // connect [prev]->[after]\n if (prev) {\n prev.next = after.id\n }\n // connect [prev]<-[after]\n if (after) {\n after.prev = prev.id\n }\n\n // lastly, actually delete the terms from the pool?\n // for (let i = 0; i < terms.length; i++) {\n // pool.remove(terms[i].id)\n // }\n}\nmodule.exports = deletePhrase\n","const append = require('../insert/append')\nconst prepend = require('../insert/prepend')\nconst deletePhrase = require('../insert/delete')\n// const tokenize = require('../../01-tokenizer')\n\n/** put this text at the end */\nexports.append = function(newPhrase, doc) {\n append(this, newPhrase, doc)\n return this\n}\n\n/** add this text to the beginning */\nexports.prepend = function(newPhrase, doc) {\n prepend(this, newPhrase, doc)\n return this\n}\n\nexports.delete = function(doc) {\n deletePhrase(this, doc)\n return this\n}\n\n// stich-in newPhrase, stretch 'doc' + parents\nexports.replace = function(newPhrase, doc) {\n // doc.debug()\n //add it do the end\n let firstLength = this.length\n append(this, newPhrase, doc)\n\n //delete original terms\n let tmp = this.buildFrom(this.start, this.length)\n tmp.length = firstLength\n // console.log(tmp)\n deletePhrase(tmp, doc)\n // return doc\n}\n\n/**\n * Turn this phrase object into 3 phrase objects\n */\nexports.splitOn = function(p) {\n let terms = this.terms()\n let result = {\n before: null,\n match: null,\n after: null,\n }\n let index = terms.findIndex(t => t.id === p.start)\n if (index === -1) {\n return result\n }\n //make all three sections into phrase-objects\n let start = terms.slice(0, index)\n if (start.length > 0) {\n result.before = this.buildFrom(start[0].id, start.length)\n }\n let match = terms.slice(index, index + p.length)\n if (match.length > 0) {\n result.match = this.buildFrom(match[0].id, match.length)\n }\n let end = terms.slice(index + p.length, terms.length)\n if (end.length > 0) {\n result.after = this.buildFrom(end[0].id, end.length, this.pool)\n }\n return result\n}\n","/** return json metadata for this phrase */\nexports.json = function(options = {}, world) {\n let res = {}\n // text data\n if (options.text) {\n res.text = this.text()\n }\n if (options.normal) {\n res.normal = this.text('normal')\n }\n if (options.clean) {\n res.clean = this.text('clean')\n }\n if (options.reduced) {\n res.reduced = this.text('reduced')\n }\n if (options.root) {\n res.root = this.text('root')\n }\n if (options.trim) {\n if (res.text) {\n res.text = res.text.trim()\n }\n if (res.normal) {\n res.normal = res.normal.trim()\n }\n if (res.reduced) {\n res.reduced = res.reduced.trim()\n }\n }\n // terms data\n if (options.terms) {\n if (options.terms === true) {\n options.terms = {}\n }\n res.terms = this.terms().map(t => t.json(options.terms, world))\n }\n return res\n}\n","/** match any terms after this phrase */\nexports.lookAhead = function(regs) {\n // if empty match string, return everything after\n if (!regs) {\n regs = '.*'\n }\n let pool = this.pool\n // get a list of all terms preceding our start\n let terms = []\n const getAfter = function(id) {\n let term = pool.get(id)\n if (!term) {\n return\n }\n terms.push(term)\n if (term.prev) {\n getAfter(term.next) //recursion\n }\n }\n let all = this.terms()\n let lastTerm = all[all.length - 1]\n getAfter(lastTerm.next)\n if (terms.length === 0) {\n return []\n }\n // got the terms, make a phrase from them\n let p = this.buildFrom(terms[0].id, terms.length)\n return p.match(regs)\n}\n\n/** match any terms before this phrase */\nexports.lookBehind = function(regs) {\n // if empty match string, return everything before\n if (!regs) {\n regs = '.*'\n }\n let pool = this.pool\n // get a list of all terms preceding our start\n let terms = []\n const getBefore = function(id) {\n let term = pool.get(id)\n if (!term) {\n return\n }\n terms.push(term)\n if (term.prev) {\n getBefore(term.prev) //recursion\n }\n }\n let term = pool.get(this.start)\n getBefore(term.prev)\n if (terms.length === 0) {\n return []\n }\n // got the terms, make a phrase from them\n let p = this.buildFrom(terms[terms.length - 1].id, terms.length)\n return p.match(regs)\n}\n","module.exports = Object.assign(\n {},\n require('./01-utils'),\n require('./02-text'),\n require('./03-change'),\n require('./04-insert'),\n require('./05-json'),\n require('./06-lookahead')\n)\n","// try to avoid doing the match\nconst failFast = function(p, regs) {\n if (regs.length === 0) {\n return true\n }\n for (let i = 0; i < regs.length; i += 1) {\n let reg = regs[i]\n\n // //logical quick-ones\n if (reg.optional !== true && reg.negative !== true) {\n //start/end impossibilites\n if (reg.start === true && i > 0) {\n return true\n }\n // has almost no effect\n if (p.cache.words !== undefined && reg.word !== undefined && p.cache.words.hasOwnProperty(reg.word) !== true) {\n // console.log('skip')\n return true\n }\n }\n //this is not possible\n if (reg.anything === true && reg.negative === true) {\n return true\n }\n }\n return false\n}\nmodule.exports = failFast\n","// i formally apologize for how complicated this is.\n\n//found a match? it's greedy? keep going!\nconst getGreedy = function(terms, t, reg, until, index, length) {\n let start = t\n for (; t < terms.length; t += 1) {\n //stop for next-reg match\n if (until && terms[t].doesMatch(until, index + t, length)) {\n return t\n }\n let count = t - start + 1\n // is it max-length now?\n if (reg.max !== undefined && count === reg.max) {\n return t\n }\n //stop here\n if (terms[t].doesMatch(reg, index + t, length) === false) {\n // is it too short?\n if (reg.min !== undefined && count < reg.min) {\n return null\n }\n return t\n }\n }\n return t\n}\n\n//'unspecific greedy' is a weird situation.\nconst greedyTo = function(terms, t, nextReg, index, length) {\n //if there's no next one, just go off the end!\n if (!nextReg) {\n return terms.length\n }\n //otherwise, we're looking for the next one\n for (; t < terms.length; t += 1) {\n if (terms[t].doesMatch(nextReg, index + t, length) === true) {\n return t\n }\n }\n //guess it doesn't exist, then.\n return null\n}\n\n/** tries to match a sequence of terms, starting from here */\nconst tryHere = function(terms, regs, index, length) {\n let captures = []\n let t = 0\n // we must satisfy each rule in 'regs'\n for (let r = 0; r < regs.length; r += 1) {\n let reg = regs[r]\n\n //should we fail here?\n if (!terms[t]) {\n //are all remaining regs optional?\n const hasNeeds = regs.slice(r).some(remain => !remain.optional)\n if (hasNeeds === false) {\n break\n }\n // have unmet needs\n return false\n }\n\n //support 'unspecific greedy' .* properly\n if (reg.anything === true && reg.greedy === true) {\n let skipto = greedyTo(terms, t, regs[r + 1], reg, index, length)\n // ensure it's long enough\n if (reg.min !== undefined && skipto - t < reg.min) {\n return false\n }\n // reduce it back, if it's too long\n if (reg.max !== undefined && skipto - t > reg.max) {\n t = t + reg.max\n continue\n }\n //TODO: support [*] properly\n if (skipto === null) {\n return false //couldn't find it\n }\n t = skipto\n continue\n }\n\n //if it looks like a match, continue\n if (reg.anything === true || terms[t].doesMatch(reg, index + t, length) === true) {\n let startAt = t\n // okay, it was a match, but if it optional too,\n // we should check the next reg too, to skip it?\n if (reg.optional && regs[r + 1]) {\n // does the next reg match it too?\n if (terms[t].doesMatch(regs[r + 1], index + t, length) === true) {\n // but does the next reg match the next term??\n // only skip if it doesn't\n if (!terms[t + 1] || terms[t + 1].doesMatch(regs[r + 1], index + t, length) === false) {\n r += 1\n }\n }\n }\n //advance to the next term!\n t += 1\n //check any ending '$' flags\n if (reg.end === true) {\n //if this isn't the last term, refuse the match\n if (t !== terms.length && reg.greedy !== true) {\n return false\n }\n }\n //try keep it going!\n if (reg.greedy === true) {\n t = getGreedy(terms, t, reg, regs[r + 1], index, length)\n if (t === null) {\n return false //greedy was too short\n }\n }\n if (reg.capture) {\n captures.push(startAt)\n //add greedy-end to capture\n if (t > 1 && reg.greedy) {\n captures.push(t - 1)\n }\n }\n continue\n }\n\n //bah, who cares, keep going\n if (reg.optional === true) {\n continue\n }\n // should we skip-over an implicit word?\n if (terms[t].isImplicit() && regs[r - 1] && terms[t + 1]) {\n // does the next one match?\n if (terms[t + 1].doesMatch(reg, index + t, length)) {\n t += 2\n continue\n }\n }\n // console.log(' ❌\\n\\n')\n return false\n }\n\n //we got to the end of the regs, and haven't failed!\n //try to only return our [captured] segment\n if (captures.length > 0) {\n //make sure the array is the full-length we'd return anyways\n let arr = terms.slice(captures[0], captures[captures.length - 1] + 1)\n //make sure the array is t-length (so we skip ahead full-length)\n for (let tmp = 0; tmp < t; tmp++) {\n arr[tmp] = arr[tmp] || null //these get cleaned-up after\n }\n return arr\n }\n //return our result\n return terms.slice(0, t)\n}\nmodule.exports = tryHere\n","/* break-down a match expression into this:\n{\n word:'',\n tag:'',\n regex:'',\n\n start:false,\n end:false,\n negative:false,\n anything:false,\n greedy:false,\n optional:false,\n\n capture:false,\n choices:[],\n}\n*/\nconst hasMinMax = /\\{([0-9]+,?[0-9]*)\\}/\nconst andSign = /&&/\n\nconst titleCase = str => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\nconst end = function(str) {\n return str[str.length - 1]\n}\nconst start = function(str) {\n return str[0]\n}\nconst stripStart = function(str) {\n return str.substr(1)\n}\nconst stripEnd = function(str) {\n return str.substr(0, str.length - 1)\n}\nconst stripBoth = function(str) {\n str = stripStart(str)\n str = stripEnd(str)\n return str\n}\n\n//\nconst parseToken = function(w) {\n let obj = {}\n //collect any flags (do it twice)\n for (let i = 0; i < 2; i += 1) {\n //back-flags\n if (end(w) === '+') {\n obj.greedy = true\n w = stripEnd(w)\n }\n if (w !== '*' && end(w) === '*' && w !== '\\\\*') {\n obj.greedy = true\n w = stripEnd(w)\n }\n if (end(w) === '?') {\n obj.optional = true\n w = stripEnd(w)\n }\n if (end(w) === '$') {\n obj.end = true\n w = stripEnd(w)\n }\n //front-flags\n if (start(w) === '^') {\n obj.start = true\n w = stripStart(w)\n }\n if (start(w) === '!') {\n obj.negative = true\n w = stripStart(w)\n }\n //wrapped-flags\n if (start(w) === '(' && end(w) === ')') {\n // support (one && two)\n if (andSign.test(w)) {\n obj.choices = w.split(andSign)\n obj.operator = 'and'\n } else {\n obj.choices = w.split('|')\n obj.operator = 'or'\n }\n //remove '(' and ')'\n obj.choices[0] = stripStart(obj.choices[0])\n let last = obj.choices.length - 1\n obj.choices[last] = stripEnd(obj.choices[last])\n // clean up the results\n obj.choices = obj.choices.map(s => s.trim())\n obj.choices = obj.choices.filter(s => s)\n //recursion alert!\n obj.choices = obj.choices.map(parseToken)\n w = ''\n }\n //capture group (this one can span multiple-terms)\n if (start(w) === '[' || end(w) === ']') {\n obj.capture = true\n w = w.replace(/^\\[/, '')\n w = w.replace(/\\]$/, '')\n }\n //regex\n if (start(w) === '/' && end(w) === '/') {\n w = stripBoth(w)\n obj.regex = new RegExp(w)\n return obj\n }\n //soft-match\n if (start(w) === '~' && end(w) === '~') {\n w = stripBoth(w)\n obj.soft = true\n obj.word = w\n return obj\n }\n }\n // support #Tag{0,9}\n if (hasMinMax.test(w) === true) {\n w = w.replace(hasMinMax, (a, b) => {\n let arr = b.split(/,/g)\n if (arr.length === 1) {\n // '{3}'\tExactly three times\n obj.min = Number(arr[0])\n obj.max = Number(arr[0])\n } else {\n // '{2,4}' Two to four times\n // '{3,}' Three or more times\n obj.min = Number(arr[0])\n obj.max = Number(arr[1] || 999)\n }\n obj.greedy = true\n return ''\n })\n }\n\n //do the actual token content\n if (start(w) === '#') {\n obj.tag = stripStart(w)\n obj.tag = titleCase(obj.tag)\n return obj\n }\n //dynamic function on a term object\n if (start(w) === '@') {\n obj.method = stripStart(w)\n return obj\n }\n if (w === '.') {\n obj.anything = true\n return obj\n }\n //support alone-astrix\n if (w === '*') {\n obj.anything = true\n obj.greedy = true\n obj.optional = true\n return obj\n }\n if (w) {\n //somehow handle encoded-chars?\n w = w.replace('\\\\*', '*')\n w = w.replace('\\\\.', '.')\n obj.word = w.toLowerCase()\n }\n return obj\n}\nmodule.exports = parseToken\n","const parseToken = require('./parseToken')\n\nconst isArray = function(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n\n//split-up by (these things)\nconst byParentheses = function(str) {\n let arr = str.split(/([\\^\\[\\!]*\\(.*?\\)[?+*]*\\]?\\$?)/)\n arr = arr.map(s => s.trim())\n return arr\n}\n\nconst byWords = function(arr) {\n let words = []\n arr.forEach(a => {\n //keep brackets lumped together\n if (/^[[^_/]?\\(/.test(a[0])) {\n words.push(a)\n return\n }\n let list = a.split(' ')\n list = list.filter(w => w)\n words = words.concat(list)\n })\n return words\n}\n\n//turn an array into a 'choices' list\nconst byArray = function(arr) {\n return [\n {\n choices: arr.map(s => {\n return {\n word: s,\n }\n }),\n },\n ]\n}\n\nconst postProcess = function(tokens) {\n //ensure there's only one consecutive capture group.\n let count = tokens.filter(t => t.capture === true).length\n if (count > 1) {\n let captureArr = tokens.map(t => t.capture)\n let first = captureArr.indexOf(true)\n let last = captureArr.length - 1 - captureArr.reverse().indexOf(true)\n //'fill in' capture groups between start-end\n for (let i = first; i < last; i++) {\n tokens[i].capture = true\n }\n }\n return tokens\n}\n\nconst fromDoc = function(doc) {\n if (!doc || !doc.list || !doc.list[0]) {\n return []\n }\n let ids = []\n doc.list.forEach(p => {\n p.terms().forEach(t => {\n ids.push({ id: t.id })\n })\n })\n return [{ choices: ids, greedy: true }]\n}\n\n/** parse a match-syntax string into json */\nconst syntax = function(input) {\n // fail-fast\n if (input === null || input === undefined || input === '') {\n return []\n }\n //try to support a ton of different formats:\n if (typeof input === 'object') {\n if (isArray(input)) {\n if (input.length === 0 || !input[0]) {\n return []\n }\n\n //is it a pre-parsed reg-list?\n if (typeof input[0] === 'object') {\n return input\n }\n //support a flat array of normalized words\n if (typeof input[0] === 'string') {\n return byArray(input)\n }\n }\n //support passing-in a compromise object as a match\n if (input && input.isA === 'Doc') {\n return fromDoc(input)\n }\n return []\n }\n if (typeof input === 'number') {\n input = String(input) //go for it?\n }\n let tokens = byParentheses(input)\n tokens = byWords(tokens)\n tokens = tokens.map(parseToken)\n //clean up anything weird\n tokens = postProcess(tokens)\n // console.log(JSON.stringify(tokens, null, 2))\n return tokens\n}\nmodule.exports = syntax\n","const failFast = require('./02-failFast')\nconst tryMatch = require('./03-tryMatch')\nconst syntax = require('../../Doc/match/syntax')\n\n/** returns a simple array of arrays */\nconst matchAll = function(p, regs, matchOne = false) {\n //if we forgot to parse it..\n if (typeof regs === 'string') {\n regs = syntax(regs)\n }\n //try to dismiss it, at-once\n if (failFast(p, regs) === true) {\n return []\n }\n\n //any match needs to be this long, at least\n const minLength = regs.filter(r => r.optional !== true).length\n let terms = p.cache.terms || p.terms()\n let matches = []\n\n //optimisation for '^' start logic\n if (regs[0].start === true) {\n let match = tryMatch(terms, regs, 0, terms.length)\n if (match !== false && match.length > 0) {\n matches.push(match)\n }\n // remove (intentional) null results\n matches = matches.map(arr => {\n return arr.filter(t => t)\n })\n return matches\n }\n //try starting, from every term\n for (let i = 0; i < terms.length; i += 1) {\n // slice may be too short\n if (i + minLength > terms.length) {\n break\n }\n //try it!\n\n let match = tryMatch(terms.slice(i), regs, i, terms.length)\n if (match !== false && match.length > 0) {\n //zoom forward!\n i += match.length - 1\n //[capture-groups] return some null responses\n match = match.filter(m => m)\n matches.push(match)\n //ok, maybe that's enough?\n if (matchOne === true) {\n return matches\n }\n }\n }\n return matches\n}\nmodule.exports = matchAll\n","const matchAll = require('./01-matchAll')\n\n/** return anything that doesn't match.\n * returns a simple array of arrays\n */\nconst notMatch = function(p, regs) {\n let found = {}\n let arr = matchAll(p, regs)\n arr.forEach(ts => {\n ts.forEach(t => {\n found[t.id] = true\n })\n })\n //return anything not found\n let terms = p.terms()\n let result = []\n let current = []\n terms.forEach(t => {\n if (found[t.id] === true) {\n if (current.length > 0) {\n result.push(current)\n current = []\n }\n return\n }\n current.push(t)\n })\n if (current.length > 0) {\n result.push(current)\n }\n return result\n}\nmodule.exports = notMatch\n","const matchAll = require('./01-matchAll')\nconst notMatch = require('./not')\n\n/** return an array of matching phrases */\nexports.match = function(str) {\n let matches = matchAll(this, str)\n //make them phrase objects\n matches = matches.map(list => {\n return this.buildFrom(list[0].id, list.length)\n })\n return matches\n}\n\n/** return boolean if one match is found */\nexports.has = function(str) {\n let matches = matchAll(this, str, true)\n return matches.length > 0\n}\n\n/** remove all matches from the result */\nexports.not = function(str) {\n let matches = notMatch(this, str)\n //make them phrase objects\n matches = matches.map(list => {\n return this.buildFrom(list[0].id, list.length)\n })\n return matches\n}\n\n/** return a list of phrases that can have this tag */\nexports.canBe = function(tag, world) {\n let results = []\n let terms = this.terms()\n let previous = false\n for (let i = 0; i < terms.length; i += 1) {\n let can = terms[i].canBe(tag, world)\n if (can === true) {\n if (previous === true) {\n //add it to the end\n results[results.length - 1].push(terms[i])\n } else {\n results.push([terms[i]]) //make a new one\n }\n previous = can\n }\n }\n //turn them into Phrase objects\n results = results\n .filter(a => a.length > 0)\n .map(arr => {\n return this.buildFrom(arr[0].id, arr.length)\n })\n return results\n}\n","const methods = require('./methods')\nconst matchMethods = require('./match')\n// const tokenize = require('../01-tokenizer')\n\nclass Phrase {\n constructor(id, length, pool) {\n this.start = id\n this.length = length\n this.isA = 'Phrase' // easier than .constructor...\n Object.defineProperty(this, 'pool', {\n enumerable: false,\n writable: true,\n value: pool,\n })\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n writable: true,\n value: {},\n })\n }\n}\n\n/** create a new Phrase object from an id and length */\nPhrase.prototype.buildFrom = function(id, length) {\n let p = new Phrase(id, length, this.pool)\n if (this.cache) {\n p.cache = this.cache\n p.cache.terms = null\n }\n return p\n}\n// Phrase.prototype.fromString = function(str) {\n// console.log(tokenize)\n// return tokenize.fromText(str)\n// }\n\n//apply methods\nObject.assign(Phrase.prototype, matchMethods)\nObject.assign(Phrase.prototype, methods)\n\n//apply aliases\nconst aliases = {\n term: 'terms',\n}\nObject.keys(aliases).forEach(k => (Phrase.prototype[k] = Phrase.prototype[aliases[k]]))\n\nmodule.exports = Phrase\n","/** a key-value store of all terms in our Document */\nclass Pool {\n constructor(words = {}) {\n //quiet this property in console.logs\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: words,\n })\n }\n /** throw a new term object in */\n add(term) {\n this.words[term.id] = term\n return this\n }\n /** find a term by it's id */\n get(id) {\n return this.words[id]\n }\n /** find a term by it's id */\n remove(id) {\n delete this.words[id]\n }\n merge(pool) {\n Object.assign(this.words, pool.words)\n return this\n }\n /** helper method */\n stats() {\n return {\n words: Object.keys(this.words).length,\n }\n }\n}\n\n/** make a deep-copy of all terms */\nPool.prototype.clone = function() {\n let keys = Object.keys(this.words)\n let words = keys.reduce((h, k) => {\n let t = this.words[k].clone()\n h[t.id] = t\n return h\n }, {})\n return new Pool(words)\n}\n\nmodule.exports = Pool\n","//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.\n// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.\n// @spencermountain 2017 MIT\n\n//proper nouns with exclamation marks\n// const blacklist = {\n// yahoo: true,\n// joomla: true,\n// jeopardy: true,\n// }\n\n//regs-\nconst initSplit = /(\\S.+?[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049])(?=\\s+|$)/g\nconst hasSomething = /\\S/\n\nconst isAcronym = /[ .][A-Z]\\.? *$/i\nconst hasEllipse = /(?:\\u2026|\\.{2,}) *$/\nconst newLine = /((?:\\r?\\n|\\r)+)/ // Match different new-line formats\nconst hasLetter = /[a-z0-9\\u00C0-\\u00FF\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff]/i\n\nconst startWhitespace = /^\\s+/\n\n// Start with a regex:\nconst naiive_split = function(text) {\n let all = []\n //first, split by newline\n let lines = text.split(newLine)\n for (let i = 0; i < lines.length; i++) {\n //split by period, question-mark, and exclamation-mark\n let arr = lines[i].split(initSplit)\n for (let o = 0; o < arr.length; o++) {\n all.push(arr[o])\n }\n }\n return all\n}\n\n/** does this look like a sentence? */\nconst isSentence = function(str, abbrevs) {\n // check for 'F.B.I.'\n if (isAcronym.test(str) === true) {\n return false\n }\n //check for '...'\n if (hasEllipse.test(str) === true) {\n return false\n }\n // must have a letter\n if (hasLetter.test(str) === false) {\n return false\n }\n\n let txt = str.replace(/[.!?\\u203D\\u2E18\\u203C\\u2047-\\u2049] *$/, '')\n let words = txt.split(' ')\n let lastWord = words[words.length - 1].toLowerCase()\n // check for 'Mr.'\n if (abbrevs.hasOwnProperty(lastWord)) {\n return false\n }\n // //check for jeopardy!\n // if (blacklist.hasOwnProperty(lastWord)) {\n // return false\n // }\n return true\n}\n\nconst splitSentences = function(text, world) {\n let abbrevs = world.cache.abbreviations\n\n text = text || ''\n text = String(text)\n let sentences = []\n // First do a greedy-split..\n let chunks = []\n // Ensure it 'smells like' a sentence\n if (!text || typeof text !== 'string' || hasSomething.test(text) === false) {\n return sentences\n }\n // Start somewhere:\n let splits = naiive_split(text)\n // Filter-out the crap ones\n for (let i = 0; i < splits.length; i++) {\n let s = splits[i]\n if (s === undefined || s === '') {\n continue\n }\n //this is meaningful whitespace\n if (hasSomething.test(s) === false) {\n //add it to the last one\n if (chunks[chunks.length - 1]) {\n chunks[chunks.length - 1] += s\n continue\n } else if (splits[i + 1]) {\n //add it to the next one\n splits[i + 1] = s + splits[i + 1]\n continue\n }\n }\n //else, only whitespace, no terms, no sentence\n chunks.push(s)\n }\n\n //detection of non-sentence chunks:\n //loop through these chunks, and join the non-sentence chunks back together..\n for (let i = 0; i < chunks.length; i++) {\n let c = chunks[i]\n //should this chunk be combined with the next one?\n if (chunks[i + 1] && isSentence(c, abbrevs) === false) {\n chunks[i + 1] = c + (chunks[i + 1] || '')\n } else if (c && c.length > 0) {\n //&& hasLetter.test(c)\n //this chunk is a proper sentence..\n sentences.push(c)\n chunks[i] = ''\n }\n }\n //if we never got a sentence, return the given text\n if (sentences.length === 0) {\n return [text]\n }\n\n //move whitespace to the ends of sentences, when possible\n //['hello',' world'] -> ['hello ','world']\n for (let i = 1; i < sentences.length; i += 1) {\n let ws = sentences[i].match(startWhitespace)\n if (ws !== null) {\n sentences[i - 1] += ws[0]\n sentences[i] = sentences[i].replace(startWhitespace, '')\n }\n }\n return sentences\n}\n\nmodule.exports = splitSentences\n// console.log(sentence_parser('john f. kennedy'));\n","const wordlike = /\\S/\nconst isBoundary = /^[!?.]+$/\nconst naiiveSplit = /(\\S+)/\nconst isSlash = /\\/\\W*$/\n\nconst notWord = {\n '.': true,\n '-': true, //dash\n '–': true, //en-dash\n '—': true, //em-dash\n '--': true,\n '...': true,\n // '/': true, // 'one / two'\n}\n\nconst hasHyphen = function(str) {\n //dont split 're-do'\n if (/^(re|un)-?[^aeiou]./.test(str) === true) {\n return false\n }\n //letter-number\n let reg = /^([a-z\\u00C0-\\u00FF`\"'/]+)(-|–|—)([a-z0-9\\u00C0-\\u00FF].*)/i\n if (reg.test(str) === true) {\n return true\n }\n //support weird number-emdash combo '2010–2011'\n // let reg2 = /^([0-9]+)(–|—)([0-9].*)/i\n // if (reg2.test(str)) {\n // return true\n // }\n return false\n}\n\n// 'he / she' should be one word\nconst combineSlashes = function(arr) {\n for (let i = 1; i < arr.length - 1; i++) {\n if (isSlash.test(arr[i])) {\n arr[i - 1] += arr[i] + arr[i + 1]\n arr[i] = null\n arr[i + 1] = null\n }\n }\n return arr\n}\n\nconst splitHyphens = function(word) {\n let arr = []\n //support multiple-hyphenated-terms\n const hyphens = word.split(/[-–—]/)\n for (let o = 0; o < hyphens.length; o++) {\n if (o === hyphens.length - 1) {\n arr.push(hyphens[o])\n } else {\n arr.push(hyphens[o] + '-')\n }\n }\n return arr\n}\n\n//turn a string into an array of terms (naiive for now, lumped later)\nconst splitWords = function(str) {\n let result = []\n let arr = []\n //start with a naiive split\n str = str || ''\n if (typeof str === 'number') {\n str = String(str)\n }\n\n const words = str.split(naiiveSplit)\n for (let i = 0; i < words.length; i++) {\n //split 'one-two'\n if (hasHyphen(words[i]) === true) {\n arr = arr.concat(splitHyphens(words[i]))\n continue\n }\n arr.push(words[i])\n }\n\n //greedy merge whitespace+arr to the right\n let carry = ''\n for (let i = 0; i < arr.length; i++) {\n let word = arr[i]\n //if it's more than a whitespace\n if (wordlike.test(word) === true && notWord.hasOwnProperty(word) === false && isBoundary.test(word) === false) {\n //put whitespace on end of previous term, if possible\n if (result.length > 0) {\n result[result.length - 1] += carry\n result.push(word)\n } else {\n //otherwise, but whitespace before\n result.push(carry + word)\n }\n carry = ''\n } else {\n carry += word\n }\n }\n //handle last one\n if (carry && result.length > 0) {\n result[result.length - 1] += carry //put it on the end\n }\n // combine 'one / two'\n result = combineSlashes(result)\n // remove empty results\n result = result.filter(s => s)\n return result\n}\nmodule.exports = splitWords\n","const Term = require('../Term/Term')\nconst Phrase = require('../Phrase/Phrase')\nconst Pool = require('./Pool')\n\nconst splitSentences = require('./01-sentences')\nconst splitTerms = require('./02-words')\n\n//add forward/backward 'linked-list' prev/next ids\nconst addLinks = terms => {\n terms.forEach((term, i) => {\n if (i > 0) {\n term.prev = terms[i - 1].id\n }\n if (terms[i + 1]) {\n term.next = terms[i + 1].id\n }\n })\n}\n\n/** turn a string into an array of Phrase objects */\nconst fromText = function(text = '', world, pool) {\n //a bit of validation, first\n if (typeof text !== 'string') {\n if (typeof text === 'number') {\n text = String(text)\n }\n }\n //tokenize into words\n let sentences = splitSentences(text, world)\n sentences = sentences.map(str => splitTerms(str))\n\n //turn them into proper objects\n pool = pool || new Pool()\n\n let phrases = sentences.map(terms => {\n terms = terms.map(str => {\n let term = new Term(str)\n pool.add(term)\n return term\n })\n //add next/previous ids\n addLinks(terms)\n\n //return phrase objects\n return new Phrase(terms[0].id, terms.length, pool)\n })\n //return them ready for a Document object\n return phrases\n}\n\n// parse the compressed format '3,2|2,4'\nconst parseTags = function(text, tagList) {\n return text.split('|').map(str => {\n let numList = str.split(',')\n numList = numList.map(n => parseInt(n, 10))\n // convert a list pf numbers into an array of tag names\n return numList.map(num => {\n if (!tagList[num]) {\n console.warn('Compromise import: missing tag at index ' + num)\n }\n return tagList[num]\n })\n })\n}\n\n/** create a word-pool and Phrase objects from .export() json*/\nconst fromJSON = function(json, world) {\n if (typeof json === 'string') {\n json = JSON.parse(json)\n }\n let pool = new Pool()\n //create Phrase objects\n let phrases = json.list.map(o => {\n // tokenize words from sentence text\n let terms = splitTerms(o[0])\n // unpack the tag data for each term\n let tagArr = parseTags(o[1], json.tags)\n //create Term objects\n terms = terms.map((str, i) => {\n let term = new Term(str)\n tagArr[i].forEach(tag => term.tag(tag, '', world))\n pool.add(term)\n return term\n })\n //add prev/next links\n addLinks(terms)\n // return a proper Phrase object\n return new Phrase(terms[0].id, terms.length, pool)\n })\n return phrases\n}\n\nmodule.exports = {\n fromText,\n fromJSON,\n}\n","module.exports = '12.0.0'","module.exports={\n \"Comparative\": \"true¦better\",\n \"Superlative\": \"true¦earlier\",\n \"PresentTense\": \"true¦is,sounds\",\n \"Value\": \"true¦a few\",\n \"Noun\": \"true¦a8b7c5e3f2here,ie,lit,m1no doubt,p0tce,vs;d,l;a,d;t,y;g,sp,tc,x0;!p;a,ca,o0;l,rp;a,c,l;d,l,rc\",\n \"Copula\": \"true¦a1is,w0;as,ere;m,re\",\n \"PastTense\": \"true¦be3came,d2had,meant,sa2taken,w0;as,e0;nt,re;id;en,gan\",\n \"Condition\": \"true¦if,unless\",\n \"Gerund\": \"true¦accord0be0develop0go0result0stain0;ing\",\n \"Negative\": \"true¦n0;ever,o0;!n,t\",\n \"QuestionWord\": \"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s\",\n \"Plural\": \"true¦records\",\n \"Conjunction\": \"true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh\",\n \"Pronoun\": \"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s\",\n \"Singular\": \"true¦0:0X;1:10;a0Wb0Kc0Bd04e02fXgShOici1jel0kitty,lNmJnIoHpDquestion mark,rBs7t4u2womW;nc0Rs 2;doll0Dst0F; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;ist0Pky,omeone,t2uper bowl,yst0W;ep3ri1u2;de0Pff;faMmoM;al0i1o2;om,se;a4i0Jr3u2;dLrpoD;erogaVobl0O;rt,te0I;bjSceGthers;othi1umb0E;a4ee04o2;del,m2nopo0th0C;!my;n,yf0;i0unch;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em\",\n \"Actor\": \"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt\",\n \"Honorific\": \"true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al\",\n \"SportsTeam\": \"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls\",\n \"Uncountable\": \"true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics\",\n \"Infinitive\": \"true¦0:6H;1:6V;2:55;3:6S;4:6T;5:5W;6:64;7:6R;8:6N;9:6F;A:6P;B:6M;C:6A;D:6W;a67b5Wc4Yd46e3Qf3Dg37h30i2Nj2Lk2Jl2Am20n1Xo1Tp1Eques3Er0Ms01tTuPvMwFyE;awn,ield;aHe1Thist6iGoEre60;nd0rE;k,ry;pe,sh,th0;lk,nFrEsh,tCve;n,raD;d0t;aFiEo7;ew,sB;l68ry;nFpEr3se;gra4Jli3W;dEi7lo5O;er47o;aKeJhIoHrFuEwi8;ne,rn;aEe0Ki5Ku8y;de,in,nsf0p,v5C;r2VuC;ank,reat2L;nd,st;lk,rg1Ms7;aXcUeThRi48kip,lQmPnee3Ho4WpOtHuEwitC;bmBck,ff0gge8ppFrEspe5;ge,pri1rou4Tvi4;ly,o32;aJeIoHrFuE;dy,mb6;a4NeEi4;ngth2Bss,tC;p,re;m,p;in,ke,r0Oy;la50oil,rink6;e1Vi6o3F;am,ip;a2iv0oE;ck,ut;arCem,le5n1r4tt6;aFo2rE;atCew;le,re;il,ve;a03eGisk,oFuE;in,le,sh;am,ll;aZcXdu9fWgVje5lSmRnt,pOquNsItHvEwa5L;eEiew,o32;al,l,rE;se,t;a41i2u3Y;eHi8oGtE;!o2rE;i5uc1W;l4rt;mb6nt,r4;e8i2;air,eFlEo3XreseD;a9y;at;a3Remb0i3To4;aFeEi4y;a1nt;te,x;a53r0F;act1Uer,le5u1;a0Zei4k5FoEyc6;gni28nci6rd;ch,li27s5D;i1nE;ge,k;aRerQiPlMoKrGuE;b1Xll,mp,rEsh;cha1s4G;ai1eGiDoE;cEdu9greAhibBmi1te8vi2R;eAlaim;di5pa2ss,veD;iDp,rtr3WsEur;e,t;aFuE;g,n3;n,y;ck,le;fo2YmBsi8;ck,iDrt4Css,u1;bGccur,ff0pera7utweFverEwe;co3Xlap,ta1Yu1whelm;igh;ser4ta2Y;eFotE;e,i9;ed,gle5;aJeIiGoFuE;ltip3Ard0;nit10ve;nErr0Z;d,g6us;asu2lt,n0Mr3ssa3;inta2Ona3rFtE;ch,t0;ch,kEry;et;aKeJiGoEu1A;aEck,ok,ve;d,n;ft,ke,mBnFstEve;!en;e,k;a2Bc0Ct;b0Lck,uE;gh,nC;iEno2W;ck,ll,ss;am,o29uE;d3mp;gno2mOnEss39;cMdica7flu0KhLsItGvE;eEol4;nt,st;erErodu9;a5fe2;i8tE;aEru5;ll;abBibB;lu1Cr1A;agi20pE;lemeDo1Yro4;aIeGi2oFuE;nt,rry;n00pe,st;aElp;d,t;nd6ppErm,te;en;aIloAove1KrGuE;arEeAi11;ant30d;aEip,umb6;b,sp;in,th0ze;aOeaNiLlJoGracFuncE;ti3A;tu2;cus,lFrE;ce,eca8m,s2S;d,l1W;a1ToE;at,od,w;gu2lEni1Rx;e,l;r,tu2;il,vE;or;a11cho,le5mQnNstLvalua7xE;a08cJerIi8pEte15;a14eFla12oEreA;rt,se;ct,riE;en9;ci1t;el,han3;abEima7;li1D;ab6couVdFfor9ga3han9j01riCsu2t0vE;isi2Ny;!u2;body,er3pE;hasiEow0;ze;a04eSiJoIrFuE;mp;aFeAiE;ft;g,in;d3ubt;ff0p,re5sFvE;iWor9;aIcFliEmiApl13tingui0Y;ke;oEuA;uEv0;ra3;gr1QppE;ear,ro4;cLem,fJliv0ma0Bny,pIsFterE;mi0C;cribe,er4iFtrE;oy;gn,re;a07e06i5osB;eEi07y;at,ct;iGlFrE;ea1;a2i03;de;ma3n9re,te;a08e07h04i7l02oHrE;aFeEoAu0Dy;a7dB;ck,ve;llXmQnFok,py,uEv0;gh,nt;ceNdu5fKsItGvE;eEin9;rt,y;aNin0PrE;a8ibu7ol;iEtitu7;d0st;iFoEroD;rm;gu2rm;rn;biJfoImaHpE;a2laE;in;re;nd;rt;ne;ap1e5;aEip,o1;im,w;aFeE;at,ck,w;llen3n3r3se;a1nt0;ll,ncFrEt0u1;e,ry;el;aNeKloJoHruGuE;lEry;ly;sh;a8mb,o8rrEth0un9;ow;ck;ar,lFnefBtrE;ay;ie4ong;ng,se;band0Hc09d04ffo03gr02id,lZmu1nWppRrOsIttEvoid,waB;acGeFra5;ct;m0Dnd;h,k;k,sE;eGiFocia7uE;me;gn,st;mb6rt;le;chFgEri4;ue;!i4;eaHlGroE;aCve;ch;aud,y;l,r;noun9sw0tE;icipa7;ce;lFt0;er;e3ow;ee;rd;aPdGju8mBoP;it;st;!reA;ss;cHhie4knowled3tiva7;te;ge;ve;eGouDu1;se;nt;pt;on\",\n \"Unit\": \"true¦0:16;a11b0Zc0Ld0Ke0If0Dg09h06in0Ejoule0k00lYmNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Kb,d0Qears old,o1;tt0E;att0b;able4b3e2on1sp;!ne0;a2r0A;!l,sp;spo01; ft,uare 1;c0Fd0Ef3i0Ckilo0Gm1ya0B;e0Jil1;e0li0E;eet0o0A;t,uart0;ascals,e2i1ou0Mt;c0Jnt0;rcent,tZ;hms,uVz;an0GewtQ;/s,b,e7g,i3l,m2p1²,³;h,s;!²;!/h,cro3l1;e1li05;! DsC²;g05s0A;gPter1;! 2s1;! 1;per second;b,iZm,u1x;men0x0;b,elvin0g,ilo2m1nQ;!/h,ph,²;byYgWmeter1;! 2s1;! 1;per hour;e1g,z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s\",\n \"Organization\": \"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c\",\n \"Demonym\": \"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an\",\n \"Possessive\": \"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne\",\n \"Currency\": \"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s\",\n \"City\": \"true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg\",\n \"Abbreviation\": \"true¦a08b05cZdXeUfSgRhQiPjNkanMlKmGnEoDpCque,rAs6t4u3v2w0;is0y00;!c;a,s,t;niv,safa,t;ce,e0;nn,x;ask,e1fc,gt,ir,r,t,u0;pt,rg;nDp0;!t;d,e0;pAs,v;a,d,ennGhd,l,rof,vt;ct,kla,nt,p,rd;eb0ov;!r;a2d,essrs,i1lle,me,r5s0t;!tr;nn,ster;!j,r;it,lb,t0;!d;!s;an,r,u0;l,n;a,da,e,nc;on,wy;a,en,ov;eb,l0t,y;!a;g,s1tc,x0;!p;p,q;ak,e0ist,r;c,pt,t;a3ca,l,m2o0pl,res,t;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d3l2pr,r1ss0tty,ug,ve;n,t;c,iz;!ta;!j,m,v\",\n \"Place\": \"true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s\",\n \"Country\": \"true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an\",\n \"Region\": \"true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma\",\n \"FemaleName\": \"true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:EP;6:ER;7:FS;8:GF;9:EZ;A:GB;B:E5;C:FO;D:FL;E:G8;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et5onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s7;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs7tGwa0;ia0um;a,yn;iGya;a,ka,s7;a4e4iGmCAra;!ka;a,t7;at7it7;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet5ie,y;anGi8;!a,e,nG;aDe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs7vannaD;aDi0;ra,y;aGi4;nt7ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lE;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaD;chGe,i0mo0n5EquCDvCy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et5in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t5;aQePiJoGy6;eHrG;aDeCma;ll1mi;aKcIkGla,na,s7ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s7;cy,et5;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eC;h75il9t2;a,cSgOiJjor2l6In2s7tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lEna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri5;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alEd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket5z2;a,et5;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes7na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as7is7oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stC;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s7;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlEri0y;ar5Cer5Cie,leCr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelEd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lEph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et5iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lEquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aDnaD;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolE;acHetGisel9;a,chC;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et5i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileCkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eCis,la,othGthy;ea,y;an09naDonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraDra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et5iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleC;en,t5;aIeoHotG;il4B;!pat4;ir8rIudG;et5iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot5;n1t5;!sa;d4el1PtG;al,el1O;cHlG;es5i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleCrEy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwEok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaDvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt7yl;adHiG;ce;et5iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes7;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t5;an19elG;le;aYdWeUgQiOja,nHtoGya;inet5n3;!aJeHiGmI;e,ka;!mGt5;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t5;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is7jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naD;c7da,leCmLnslKsG;haDlG;inGyW;g,n;!h;ey;ee;en;at7g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lEsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah\",\n \"WeekDay\": \"true¦fri4mon4s2t1wed0;!nesd4;hurs2ues2;at0un1;!urd1;!d0;ay0;!s\",\n \"Month\": \"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il\",\n \"FirstName\": \"true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is\",\n \"LastName\": \"true¦0:34;1:39;2:3B;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs1;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu2;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps1;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar2lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch2dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins1;c6ve0F;ci,hards1;ir2os;aEeAh8ic6ow20;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils1guy5ix1owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin2;!o;aCe8i6op2uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen2o6u3;h6nYu3;an6ns1;ss1;ki0Es5;cks1nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs1;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr2;ayli3ub0;m2nzal2;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand2;d7insteHsposi6vaL;to;is1wards;aCeBi9omin8u6;bo6rand;is;gu2;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s1;on;eks7iy8var2;ez;ej6;ev;ams\",\n \"MaleName\": \"true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:9V;6:BZ;7:AT;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde5sB;!l7t1;de,lCrr6yB;l1ne;lBt3;a93y;aEern1iB;cCha0nceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l7;lom1nA3uB;leyma8ta;dBl7Jm1;!n7;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n7olfo,ri68;co,ky;bAe9U;cBl7;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub6x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw6;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e5;a78ik;house,o03t1;e,olB;aj;ah,hBk7;a4eB;al,l;hClv2rB;le,ri5v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe5;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha5tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe5;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a5ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd6kGmFrDsCvi3yB;!d6s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d6;an,s0;lEo4FrDuBv7;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr7rge;bri4l6rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym6zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl7nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e5ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne5rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro5y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl7y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n7rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid6ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd6eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on\",\n \"Person\": \"true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er\",\n \"Verb\": \"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en\",\n \"PhrasalVerb\": \"true¦0:71;1:6P;2:7D;3:73;4:6I;5:7G;6:75;7:6O;8:6B;9:6C;A:5H;B:70;C:6Z;a7Gb62c5Cd59e57f45g3Nh37iron0j33k2Yl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit52;d 1k2Q;mp0n49pe0r8s8;eel Bip 7K;aEiD;gh 06rd0;n Br 3C;it 5Jk8lk6rm 0Qsh 73t66v4O;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Fup;ade YiDot0y 32;ckle67p 79;ne66p Ds4C;d2o6Kup;ck FdEe Dgh5Sme0p o0Dre0;aw3ba4d2in,up;e5Jy 1;by,o6U;ink Drow 5U;ba4ov7up;aDe 4Hll4N;m 1r W;ckCke Elk D;ov7u4N;aDba4d2in,o30up;ba4ft7p4Sw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6O; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1LiD;ke 5Xn2X;p Drm1O;by,in,o6A;n2Yr 1tc3H;c2Xmp0nd Dr6Gve6y 1;ba4d2up;d2o66up;ar2Uell0ill4TlErDurC;ingCuc8;a32it 3T;be4Brt0;ap 4Dow B;ash 4Yoke0;eep EiDow 9;c3Mp 1;in,oD;ff,v7;gn Eng2Yt Dz8;d2o5up;in,o5up;aFoDu4E;ot Dut0w 5W;aw3ba4f36o5Q;c2EdeAk4Rve6;e Hll0nd GtD; Dtl42;d2in,o5upD;!on;aw3ba4d2in,o1Xup;o5to;al4Kout0rap4K;il6v8;at0eKiJoGuD;b 4Dle0n Dstl8;aDba4d2in52o3Ft2Zu3D;c1Ww3;ot EuD;g2Jnd6;a1Wf2Qo5;ng 4Np6;aDel6inAnt0;c4Xd D;o2Su0C;aQePiOlMoKrHsyc29uD;ll Ft D;aDba4d2in,o1Gt33up;p38w3;ap37d2in,o5t31up;attleCess EiGoD;p 1;ah1Gon;iDp 52re3Lur44wer 52;nt0;ay3YuD;gAmp 9;ck 52g0leCn 9p3V;el 46ncilA;c3Oir 2Hn0ss FtEy D;ba4o4Q; d2c1X;aw3ba4o11;pDw3J;e3It B;arrow3Serd0oD;d6te3R;aJeHiGoEuD;ddl8ll36;c16p 1uth6ve D;al3Ad2in,o5up;ss0x 1;asur8lt 9ss D;a19up;ke Dn 9r2Zs1Kx0;do,o3Xup;aOeMiHoDuck0;a16c36g 0AoDse0;k Dse34;aft7ba4d2forw2Ain3Vov7uD;nd7p;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fr Dt 1;fDof;rom;in,oO;cZm 1nDve it;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut\",\n \"Modal\": \"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld\",\n \"Adjective\": \"true¦0:75;1:7K;2:7Q;3:7J;4:7C;5:5C;6:48;7:49;8:4S;9:61;A:7H;B:70;C:6Z;D:73;E:5X;a6Jb65c5Rd57e4Tf49g41h3Qi35j33k32l2Rm2Gn27o1Rp1Aquack,r10s0Gt09uQvNwFyear5;arp0eJholeIiHoF;man5oFu6C;d6Ezy;despr75s5G;!sa7;eGlFste26;co1Il o4L;!k5;aGiFola4B;b7Tce versa,ol55;ca2gabo63nilla;ltWnJpGrb5Asu4tterF;!moC; f34b1OpGsFti1H;ca7et,ide dMtairs;er,i3N;aPbeco6Rconvin27deMeLfair,ivers4knKprecedYrIsGwF;iel20ritt5Z;i1VuF;pervis0specti3;eFu5;cognLgul6Hl6H;own;ndi3v5Txpect0;cid0rF;!grou5OsF;iz0tood;b7ppeaLssu6GuthorF;iz0;i24ra;aJeHhough4PoGrF;i1oubl0;geth8p,rpB;en5QlFm50rr2Ust0;li3;boo,lFn;ent0;aXcWeUhTiRmug,nobbi3EoPpOqueami3EtJuFymb64;bHi gener55pFrprisi3;erFre0L;! dup8b,i29;du0seq4U;anda6UeIi0PrFy38;aightFip0; fFfF;or5B;adfaCreotyp0;aEec2Gir1JlendBot on; call0le,mb8phist1XrFu0Xvi42;dBry;gnifica2nF;ceEg7;am2Pe8ocki3ut;cFda1em5lfi2Yni1Wpa69re6;o1Gr3W;at58ient28reec58;cr0me,ns serif;aMeIiGoF;buCtt4UuSy4;ghtFv4;!-29f9;ar,bel,condi1du63fres52lHpublic3WsFtard0;is48oF;lu1na2;e1Euc46;bBciF;al,st;aQeOicayu6lacBopuliCrGuF;bl5Amp0;eJiGoF;!b0AfuDmi32p8;mGor,sFva1;ti6;a4We;ciDmF;a0IiF;er,um;ac20rFti1;feAma2Uplexi3v34;rFst;allelHtF;-tiFi4;me;!ed;bQffOkNld fashion0nMpLrg1Hth8utKvF;al,erF;!aHniGt,wF;eiFrouF;ght;ll;do0Ver,g2Msi46;en,posi1; boa5Gg2Kli6;!ay; gua5EbFli6;eat;eHsF;cFer0Hole1;e6uE;d2Tse;ak0eMiLoFua4P;nJrGtF;ab7;thF;!eF;rn;chala2descri50stop;ght5;arby,cessa3Xighbor5xt;aNeLiIoFultip7;bi7derGlFnth5ot,st;dy;a1n;nFx0;iaFor;tuE;di4FnaFre;ci3;cFgenta,in,j03keshift,le,mmoth,ny,sculi6;abEho;aOeJiGoFu13;uti12vi3;mGteraF;l,te;it0;ftIgFth4;al,eGitiF;ma1;nda3D;!-0C;nguBst,tt8;ap1Tind5no0A;agg0uF;niOstifi0veni7;de4gno4Clleg4mSnHpso 1WrF;a1releF;va2; NaMbr0corLdJfluenTiTnIsHtF;aAenDoxF;ic37;a6i2S;a1er,oce2;iGoF;or;reA;deq3Kppr2Z;fFsitu,vitro;ro2;mJpF;arHerfeAoFrop8;li1rtF;a2ed;ti4;eFi0R;d2RnD;aKelJiHoFumdr3C;neCok0rrFs07ur5;if2T;ghfalut1PspF;an2R;liZpf9;lInHrF;d05roF;wi3;dy,gi3;f,low0;ainf9ener2Kiga23lLoKraHuF;ilFng ho;ty;cGtF;ef9is;ef9;ne,od;ea2Eob4;aUeOinNlMoHrF;a1UeFoz1L;e2Eq13tf9;oHrF; keeps,eFm8tuna1;g05ign;liF;sh;ag30ue2;al,i1;dJmGrF;ti7;a7ini6;ne;le; up;bl0i2lDr Gux,voF;ri1uri1;oFreac1F;ff;aOfficie2lNmiMnKreAthere4veJxF;aAcess,peHtraGuF;be2Ml0I;!va1E;ct0rt;n,ryday; Fcouragi3tiE;rou1sui1;ne2;abo23dQe18i1;g8sF;t,ygF;oi3;er;aVeNiHoFrea15ue;mina2ne,ubF;le,tf9;dact1Bfficu1OsGvF;erD;creHeas0gruntl0honeCordGtF;a2ress0;er5;et; LadpKfJgene1PliHrang0spe1PtGvoF;ut;ail0ermin0;be1Mca1ghF;tf9;ia2;an;facto;i5magFngeroZs0I;ed,i3;ly;ertaRhief,ivil,oHrF;aFowd0u0H;mp0v02z0;loNmLnGoi3rrFve0P;eAu1I;cre1grIsHtF;emFra0F;po0D;ta2;ue2;mer08pleF;te,x;ni4ss4;in;aPeLizarElJoGrF;and new,isk,okP;gGna fiWttom,urgeoF;is;us;ank,iI;re;autif9hiGlov0nFst,yoG;eVt;nd;ul;ckGnkru0XrrF;en;!wards; priori,b0Nc0Kd0AfraBg05h04lZma06ntiquYpUrOsMttracti07utheLvIwF;aGkF;wa0U;ke,re;ant garGerF;age;de;ntV;leep,tonisF;hi3;ab,bitIroHtiF;fiF;ci4;ga2;raF;ry;pFt;are2etiPrF;oprF;ia1;at0;arIcohGeFiMl,oof;rt;olF;ic;mi3;ead;ainCgressiGoniF;zi3;ve;st;id; MeKuJvF;aGerD;se;nc0;ed;lt;pt,qF;ua1;hoc,infinitF;um;cuGtu4u1;al;ra1;erPlOoMruLsGuF;nda2;e2oGtraA;ct;lu1rbi3;ng;te;pt;aFve;rd;aze,e;ra2;nt\",\n \"Comparable\": \"true¦0:40;1:4H;2:44;3:4A;4:2X;5:3W;a4Nb43c3Nd3Ce34f2Qg2Eh23i1Uj1Tk1Ql1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell26ou3;aBe9hi1Xi7r6;o3y;ck0Mde,l6n1ry,se;d,y;a6i4Lt;k,ry;n1Sr6sI;m,y;a7e6ulgar;nge5rda2xi3;gue,in,st;g0n6pco3Lse5;like0ti1;aAen9hi8i7ough,r6;anqu2Pen1ue;dy,g3Tme0ny,r09;ck,n,rs2Q;d41se;ll,me,rt,s6wd46;te5;aVcarUeThRiQkin0FlMmKoHpGqua1GtAu7w6;eet,ift;b7dd14per0Gr6;e,re2I;sta2Gt4;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Gn0V;a1ep,rn;le,rk;e23i3Gright0;ci29ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g36m6;!y;ek,nd3E;ck,l0mp4;a6iTort,rill,y;dy,ll0Yrp;cu0Sve0Sxy;ce,ed,y;d,fe,int0l1Wv15;aBe9i8o6ude;mantic,o1Jsy,u6;gh,nd;ch,pe,tzy;a6d,mo0I;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1RlCoBr8u6;ny,r6;e,p4;egna2ic7o6;fouZud;ey,k0;li05or,te1C;ain,easa2;ny;in5le;dd,f6i0ld,ranR;fi11;aAe8i7o6;b4isy,rm16sy;ce,mb4;a6w;r,t;ive,rr02;aAe8ild,o7u6;nda1Ate;ist,o1;a6ek,llY;n,s0ty;d,tuR;aCeBi9o6ucky;f0Vn7o1Eu6ve0w18y0U;d,sy;e0g;g1Uke0tt4v6;e0i3;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b4id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t4uiY;u1y;aIeeb4iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e5i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd\",\n \"TextValue\": \"true¦bMeIfChundredNmMnin9one,qu8s6t0zeroN;enMh3rLw0;e0o;l0ntC;fGve;ir0ousandIree;d,t5;e0ix7;cond,ptEven6xtE;adrDintD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en1;illion0;!th\",\n \"Ordinal\": \"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th\",\n \"Cardinal\": \"true¦bGeDf7hundred,mGnine9one,qu6s4t0zero;en,h2rFw0;e0o;lve,n7;irt8ousand,ree;e0ix4;ptAven3xtA;adr9int9;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion\",\n \"Expression\": \"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAu7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la\",\n \"Adverb\": \"true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori\",\n \"Preposition\": \"true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut\",\n \"Determiner\": \"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er\"\n}","const entity = ['Person', 'Place', 'Organization']\n\nmodule.exports = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb'],\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural',\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun',\n },\n\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization'],\n },\n FirstName: {\n isA: 'Person',\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName'],\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName'],\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName'],\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName'],\n },\n\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization'],\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City'],\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country'],\n },\n Region: {\n isA: ['Place', 'ProperNoun'],\n },\n Address: {\n isA: 'Place',\n },\n\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place'],\n },\n SportsTeam: {\n isA: 'Organization',\n },\n School: {\n isA: 'Organization',\n },\n Company: {\n isA: 'Organization',\n },\n\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular'],\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun',\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity,\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity,\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place'],\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity,\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity,\n },\n //`john's`\n Possessive: {\n isA: 'Noun',\n // notA: 'Pronoun',\n },\n}\n","module.exports = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value'],\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'Copula', 'FutureTense'],\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund'],\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense'],\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense'],\n },\n // will walk\n FutureTense: {\n isA: 'Verb',\n },\n\n // is\n Copula: {\n isA: 'Verb',\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive'],\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund',\n },\n Pluperfect: {\n isA: 'Verb',\n },\n // shown\n Participle: {\n isA: 'Verb',\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb',\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb',\n },\n}\n","module.exports = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb'],\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal'],\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal'],\n },\n RomanNumeral: {\n isA: 'Cardinal', //can be a person, too\n notA: ['Ordinal', 'TextValue'],\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue'],\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue'],\n },\n Money: {\n isA: 'Cardinal',\n },\n Percent: {\n isA: 'Value',\n },\n}\n","const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value']\n\nmodule.exports = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value'],\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective'],\n },\n // better\n Comparative: {\n isA: ['Adjective'],\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative'],\n },\n\n NumberRange: {\n isA: ['Contraction'],\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value'],\n },\n\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Conjunction', 'Adverb', 'Preposition', 'Adjective'],\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time'],\n },\n WeekDay: {\n isA: ['Date', 'Noun'],\n },\n\n //glue\n Determiner: {\n notA: anything,\n },\n Conjunction: {\n notA: anything,\n },\n Preposition: {\n notA: anything,\n },\n\n // what, who, why\n QuestionWord: {\n notA: ['Determiner'],\n },\n\n // peso, euro\n Currency: {},\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb'],\n },\n // dr.\n Abbreviation: {},\n\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email'],\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n\n //non-exclusive\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value'],\n },\n Acronym: {\n notA: ['Plural', 'RomanNumeral'],\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value'],\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value'],\n },\n}\n","// i just made these up\nconst colorMap = {\n Noun: 'blue',\n\n Verb: 'green',\n Negative: 'green',\n\n Date: 'red',\n Value: 'red',\n\n Adjective: 'magenta',\n\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan',\n}\n\n/** add a debug color to some tags */\nconst addColors = function(tags) {\n Object.keys(tags).forEach(k => {\n if (colorMap[k]) {\n tags[k].color = colorMap[k]\n return\n }\n tags[k].isA.some(t => {\n if (colorMap[t]) {\n tags[k].color = colorMap[t]\n return true\n }\n return false\n })\n })\n return tags\n}\n\nmodule.exports = addColors\n","const unique = function(arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i)\n}\n\n//add 'downward' tags (that immediately depend on this one)\nconst inferIsA = function(tags) {\n Object.keys(tags).forEach(k => {\n let tag = tags[k]\n let len = tag.isA.length\n for (let i = 0; i < len; i++) {\n let down = tag.isA[i]\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA)\n }\n }\n // clean it up\n tag.isA = unique(tag.isA)\n })\n return tags\n}\nmodule.exports = inferIsA\n","const unique = function(arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i)\n}\n\n// crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\nconst inferNotA = function(tags) {\n let keys = Object.keys(tags)\n keys.forEach(k => {\n let tag = tags[k]\n tag.notA = tag.notA || []\n tag.isA.forEach(down => {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n let notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || []\n tag.notA = tag.notA.concat(notA)\n }\n })\n // any tag that lists us as a conflict, we conflict it back.\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key)\n }\n }\n // clean it up\n tag.notA = unique(tag.notA)\n })\n return tags\n}\nmodule.exports = inferNotA\n","// a lineage is all 'incoming' tags that have this as 'isA'\nconst inferLineage = function(tags) {\n let keys = Object.keys(tags)\n keys.forEach(k => {\n let tag = tags[k]\n tag.lineage = []\n // find all tags with it in their 'isA' set\n for (let i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i])\n }\n }\n })\n return tags\n}\nmodule.exports = inferLineage\n","const inferColor = require('./_color')\nconst inferIsA = require('./_isA')\nconst inferNotA = require('./_notA')\nconst lineage = require('./_lineage')\n\nconst validate = function(tags) {\n // cleanup format\n Object.keys(tags).forEach(k => {\n let tag = tags[k]\n // ensure isA is an array\n tag.isA = tag.isA || []\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA]\n }\n // ensure notA is an array\n tag.notA = tag.notA || []\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA]\n }\n })\n return tags\n}\n\n// build-out the tag-graph structure\nconst inferTags = function(tags) {\n // validate data\n tags = validate(tags)\n // build its 'down tags'\n tags = inferIsA(tags)\n // infer the conflicts\n tags = inferNotA(tags)\n // debug tag color\n tags = inferColor(tags)\n // find incoming links\n tags = lineage(tags)\n return tags\n}\nmodule.exports = inferTags\n","const nouns = require('./tags/nouns')\nconst verbs = require('./tags/verbs')\nconst values = require('./tags/values')\nconst misc = require('./tags/misc')\nconst inferTags = require('./inference/index')\n\n//extend tagset with new tags\nconst addIn = function(obj, tags) {\n Object.keys(obj).forEach(k => {\n tags[k] = obj[k]\n })\n}\n\nconst build = () => {\n let tags = {}\n addIn(nouns, tags)\n addIn(verbs, tags)\n addIn(values, tags)\n addIn(misc, tags)\n // do the graph-stuff\n tags = inferTags(tags)\n return tags\n}\nmodule.exports = build()\n","\"use strict\";const BASE=36,seq=\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\",cache=seq.split(\"\").reduce(function(n,o,e){return n[o]=e,n},{}),toAlphaCode=function(n){if(void 0!==seq[n])return seq[n];let o=1,e=36,t=\"\";for(;n>=e;n-=e,o++,e*=36);for(;o--;){const o=n%36;t=String.fromCharCode((o<10?48:55)+o)+t,n=(n-o)/36}return t},fromAlphaCode=function(n){if(void 0!==cache[n])return cache[n];let o=0,e=1,t=36,r=1;for(;e=0;e--,r*=36){let t=n.charCodeAt(e)-48;t>10&&(t-=7),o+=t*r}return o};var encoding={toAlphaCode:toAlphaCode,fromAlphaCode:fromAlphaCode},symbols=function(n){const o=new RegExp(\"([0-9A-Z]+):([0-9A-Z]+)\");for(let e=0;e{let s=n.nodes[t];\"!\"===s[0]&&(o.push(r),s=s.slice(1));const c=s.split(/([A-Z0-9,]+)/g);for(let s=0;s{const e=o.split(\"¦\");return n[e[0]]=e[1],n},{}),e={};return Object.keys(o).forEach(function(n){const t=unpack_1(o[n]);\"true\"===n&&(n=!0);for(let o=0;o 1) {\n //cache the beginning word\n world.hasCompound[words[0]] = true\n }\n // inflect our nouns\n if (tag === 'Singular') {\n let plural = transform.toPlural(word, world)\n lexicon[plural] = lexicon[plural] || 'Plural' // only if it's safe\n }\n //conjugate our verbs\n if (tag === 'Infinitive') {\n let conj = transform.conjugate(word, world)\n let tags = Object.keys(conj)\n for (let i = 0; i < tags.length; i++) {\n let w = conj[tags[i]]\n lexicon[w] = lexicon[w] || tags[i] // only if it's safe\n }\n }\n //derive more adjective forms\n if (tag === 'Comparable') {\n let conj = transform.adjectives(word)\n let tags = Object.keys(conj)\n for (let i = 0; i < tags.length; i++) {\n let w = conj[tags[i]]\n lexicon[w] = lexicon[w] || tags[i] // only if it's safe\n }\n }\n //conjugate phrasal-verbs\n if (tag === 'PhrasalVerb') {\n //add original form\n addWord(word, 'Infinitive', lexicon)\n //conjugate first word\n let conj = transform.conjugate(words[0], world)\n let tags = Object.keys(conj)\n for (let i = 0; i < tags.length; i++) {\n //add it to our cache\n world.hasCompound[conj[tags[i]]] = true\n //first + last words\n let w = conj[tags[i]] + ' ' + words[1]\n\n addWord(w, tags[i], lexicon)\n addWord(w, 'PhrasalVerb', lexicon)\n }\n }\n // inflect our demonyms - 'germans'\n if (tag === 'Demonym') {\n let plural = transform.toPlural(word, world)\n lexicon[plural] = lexicon[plural] || ['Demonym', 'Plural'] // only if it's safe\n }\n}\n\n// throw a bunch of words in our lexicon\n// const doWord = function(words, tag, world) {\n// let lexicon = world.words\n// for (let i = 0; i < words.length; i++) {\n// addWord(words[i], tag, lexicon)\n// // do some fancier stuff\n// addMore(words[i], tag, world)\n// }\n// }\nmodule.exports = {\n addWord: addWord,\n addMore: addMore,\n}\n","// add words from plurals and conjugations data\nconst addIrregulars = function(world) {\n //add irregular plural nouns\n let nouns = world.irregulars.nouns\n let words = Object.keys(nouns)\n for (let i = 0; i < words.length; i++) {\n const w = words[i]\n world.words[w] = 'Singular'\n world.words[nouns[w]] = 'Plural'\n }\n\n // add irregular verb conjugations\n let verbs = world.irregulars.verbs\n let keys = Object.keys(verbs)\n for (let i = 0; i < keys.length; i++) {\n const inf = keys[i]\n //add only if it it's safe...\n world.words[inf] = world.words[inf] || 'Infinitive'\n let forms = world.transforms.conjugate(inf, world)\n forms = Object.assign(forms, verbs[inf])\n //add the others\n Object.keys(forms).forEach(tag => {\n world.words[forms[tag]] = world.words[forms[tag]] || tag\n })\n }\n}\nmodule.exports = addIrregulars\n","//words that can't be compressed, for whatever reason\nmodule.exports = {\n // numbers\n '20th century fox': 'Organization',\n // '3m': 'Organization',\n '7 eleven': 'Organization',\n '7-eleven': 'Organization',\n g8: 'Organization',\n 'motel 6': 'Organization',\n vh1: 'Organization',\n q1: 'Date',\n q2: 'Date',\n q3: 'Date',\n q4: 'Date',\n}\n","//nouns with irregular plural/singular forms\n//used in noun.inflect, and also in the lexicon.\n\nmodule.exports = {\n addendum: 'addenda',\n alga: 'algae',\n alumna: 'alumnae',\n alumnus: 'alumni',\n analysis: 'analyses',\n antenna: 'antennae',\n appendix: 'appendices',\n avocado: 'avocados',\n axis: 'axes',\n bacillus: 'bacilli',\n barracks: 'barracks',\n beau: 'beaux',\n bus: 'buses',\n cactus: 'cacti',\n chateau: 'chateaux',\n child: 'children',\n circus: 'circuses',\n clothes: 'clothes',\n corpus: 'corpora',\n criterion: 'criteria',\n curriculum: 'curricula',\n database: 'databases',\n deer: 'deer',\n diagnosis: 'diagnoses',\n echo: 'echoes',\n embargo: 'embargoes',\n epoch: 'epochs',\n foot: 'feet',\n formula: 'formulae',\n fungus: 'fungi',\n genus: 'genera',\n goose: 'geese',\n halo: 'halos',\n hippopotamus: 'hippopotami',\n index: 'indices',\n larva: 'larvae',\n leaf: 'leaves',\n libretto: 'libretti',\n loaf: 'loaves',\n man: 'men',\n matrix: 'matrices',\n memorandum: 'memoranda',\n modulus: 'moduli',\n mosquito: 'mosquitoes',\n mouse: 'mice',\n move: 'moves',\n nebula: 'nebulae',\n nucleus: 'nuclei',\n octopus: 'octopi',\n opus: 'opera',\n ovum: 'ova',\n ox: 'oxen',\n parenthesis: 'parentheses',\n person: 'people',\n phenomenon: 'phenomena',\n prognosis: 'prognoses',\n quiz: 'quizzes',\n radius: 'radii',\n referendum: 'referenda',\n rodeo: 'rodeos',\n sex: 'sexes',\n shoe: 'shoes',\n sombrero: 'sombreros',\n stimulus: 'stimuli',\n stomach: 'stomachs',\n syllabus: 'syllabi',\n synopsis: 'synopses',\n tableau: 'tableaux',\n thesis: 'theses',\n thief: 'thieves',\n tooth: 'teeth',\n tornado: 'tornados',\n tuxedo: 'tuxedos',\n vertebra: 'vertebrae',\n // virus: 'viri',\n // zero: 'zeros',\n}\n","// a list of irregular verb conjugations\n// used in verbs().conjugate()\n// but also added to our lexicon\n\n//use shorter key-names\nconst mapping = {\n g: 'Gerund',\n prt: 'Participle',\n perf: 'PerfectTense',\n pst: 'PastTense',\n fut: 'FuturePerfect',\n pres: 'PresentTense',\n pluperf: 'Pluperfect',\n a: 'Actor',\n}\n\n// '_' in conjugations is the infinitive form\nlet conjugations = {\n act: {\n a: '_or',\n },\n age: {\n g: 'ageing',\n pst: 'aged',\n pres: 'ages',\n },\n aim: {\n a: '_er',\n g: '_ing',\n pst: '_ed',\n },\n arise: {\n prt: '_n',\n pst: 'arose',\n },\n babysit: {\n a: '_ter',\n pst: 'babysat',\n },\n ban: {\n a: '',\n g: '_ning',\n pst: '_ned',\n },\n be: {\n a: '',\n g: 'am',\n prt: 'been',\n pst: 'was',\n pres: 'is',\n },\n beat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n },\n become: {\n prt: '_',\n },\n begin: {\n g: '_ning',\n prt: 'begun',\n pst: 'began',\n },\n being: {\n g: 'are',\n pst: 'were',\n pres: 'are',\n },\n bend: {\n prt: 'bent',\n },\n bet: {\n a: '_ter',\n prt: '_',\n },\n bind: {\n pst: 'bound',\n },\n bite: {\n g: 'biting',\n prt: 'bitten',\n pst: 'bit',\n },\n bleed: {\n prt: 'bled',\n pst: 'bled',\n },\n blow: {\n prt: '_n',\n pst: 'blew',\n },\n boil: {\n a: '_er',\n },\n brake: {\n prt: 'broken',\n },\n break: {\n pst: 'broke',\n },\n breed: {\n pst: 'bred',\n },\n bring: {\n prt: 'brought',\n pst: 'brought',\n },\n broadcast: {\n pst: '_',\n },\n budget: {\n pst: '_ed',\n },\n build: {\n prt: 'built',\n pst: 'built',\n },\n burn: {\n prt: '_ed',\n },\n burst: {\n prt: '_',\n },\n buy: {\n prt: 'bought',\n pst: 'bought',\n },\n can: {\n a: '',\n fut: '_',\n g: '',\n pst: 'could',\n perf: 'could',\n pluperf: 'could',\n pres: '_',\n },\n catch: {\n pst: 'caught',\n },\n choose: {\n g: 'choosing',\n prt: 'chosen',\n pst: 'chose',\n },\n cling: {\n prt: 'clung',\n },\n come: {\n prt: '_',\n pst: 'came',\n },\n compete: {\n a: 'competitor',\n g: 'competing',\n pst: '_d',\n },\n cost: {\n pst: '_',\n },\n creep: {\n prt: 'crept',\n },\n cut: {\n prt: '_',\n },\n deal: {\n prt: '_t',\n pst: '_t',\n },\n develop: {\n a: '_er',\n g: '_ing',\n pst: '_ed',\n },\n die: {\n g: 'dying',\n pst: '_d',\n },\n dig: {\n g: '_ging',\n prt: 'dug',\n pst: 'dug',\n },\n dive: {\n prt: '_d',\n },\n do: {\n pst: 'did',\n pres: '_es',\n },\n draw: {\n prt: '_n',\n pst: 'drew',\n },\n dream: {\n prt: '_t',\n },\n drink: {\n prt: 'drunk',\n pst: 'drank',\n },\n drive: {\n g: 'driving',\n prt: '_n',\n pst: 'drove',\n },\n drop: {\n g: '_ping',\n pst: '_ped',\n },\n eat: {\n a: '_er',\n g: '_ing',\n prt: '_en',\n pst: 'ate',\n },\n edit: {\n g: '_ing',\n },\n egg: {\n pst: '_ed',\n },\n fall: {\n prt: '_en',\n pst: 'fell',\n },\n feed: {\n prt: 'fed',\n pst: 'fed',\n },\n feel: {\n a: '_er',\n pst: 'felt',\n },\n fight: {\n prt: 'fought',\n pst: 'fought',\n },\n find: {\n pst: 'found',\n },\n flee: {\n g: '_ing',\n prt: 'fled',\n },\n fling: {\n prt: 'flung',\n },\n fly: {\n prt: 'flown',\n pst: 'flew',\n },\n forbid: {\n pst: 'forbade',\n },\n forget: {\n g: '_ing',\n prt: 'forgotten',\n pst: 'forgot',\n },\n forgive: {\n g: 'forgiving',\n prt: '_n',\n pst: 'forgave',\n },\n free: {\n a: '',\n g: '_ing',\n },\n freeze: {\n g: 'freezing',\n prt: 'frozen',\n pst: 'froze',\n },\n get: {\n pst: 'got',\n prt: 'gotten',\n },\n give: {\n g: 'giving',\n prt: '_n',\n pst: 'gave',\n },\n go: {\n prt: '_ne',\n pst: 'went',\n pres: 'goes',\n },\n grow: {\n prt: '_n',\n },\n hang: {\n prt: 'hung',\n pst: 'hung',\n },\n have: {\n g: 'having',\n prt: 'had',\n pst: 'had',\n pres: 'has',\n },\n hear: {\n prt: '_d',\n pst: '_d',\n },\n hide: {\n prt: 'hidden',\n pst: 'hid',\n },\n hit: {\n prt: '_',\n },\n hold: {\n prt: 'held',\n pst: 'held',\n },\n hurt: {\n prt: '_',\n pst: '_',\n },\n ice: {\n g: 'icing',\n pst: '_d',\n },\n imply: {\n pst: 'implied',\n pres: 'implies',\n },\n is: {\n a: '',\n g: 'being',\n pst: 'was',\n pres: '_',\n },\n keep: {\n prt: 'kept',\n },\n kneel: {\n prt: 'knelt',\n },\n know: {\n prt: '_n',\n },\n lay: {\n prt: 'laid',\n pst: 'laid',\n },\n lead: {\n prt: 'led',\n pst: 'led',\n },\n leap: {\n prt: '_t',\n },\n leave: {\n prt: 'left',\n pst: 'left',\n },\n lend: {\n prt: 'lent',\n },\n lie: {\n g: 'lying',\n pst: 'lay',\n },\n light: {\n prt: 'lit',\n pst: 'lit',\n },\n log: {\n g: '_ging',\n pst: '_ged',\n },\n loose: {\n prt: 'lost',\n },\n lose: {\n g: 'losing',\n pst: 'lost',\n },\n make: {\n prt: 'made',\n pst: 'made',\n },\n mean: {\n prt: '_t',\n pst: '_t',\n },\n meet: {\n a: '_er',\n g: '_ing',\n prt: 'met',\n pst: 'met',\n },\n miss: {\n pres: '_',\n },\n pay: {\n prt: 'paid',\n pst: 'paid',\n },\n prove: {\n prt: '_n',\n },\n puke: {\n g: 'puking',\n },\n put: {\n prt: '_',\n },\n quit: {\n prt: '_',\n },\n read: {\n prt: '_',\n pst: '_',\n },\n ride: {\n prt: 'ridden',\n },\n ring: {\n prt: 'rung',\n pst: 'rang',\n },\n rise: {\n fut: 'will have _n',\n g: 'rising',\n prt: '_n',\n pst: 'rose',\n pluperf: 'had _n',\n },\n rub: {\n g: '_bing',\n pst: '_bed',\n },\n run: {\n g: '_ning',\n prt: '_',\n pst: 'ran',\n },\n say: {\n prt: 'said',\n pst: 'said',\n pres: '_s',\n },\n seat: {\n prt: 'sat',\n },\n see: {\n g: '_ing',\n prt: '_n',\n pst: 'saw',\n },\n seek: {\n prt: 'sought',\n },\n sell: {\n prt: 'sold',\n pst: 'sold',\n },\n send: {\n prt: 'sent',\n },\n set: {\n prt: '_',\n },\n sew: {\n prt: '_n',\n },\n shake: {\n prt: '_n',\n },\n shave: {\n prt: '_d',\n },\n shed: {\n g: '_ding',\n pst: '_',\n pres: '_s',\n },\n shine: {\n prt: 'shone',\n pst: 'shone',\n },\n shoot: {\n prt: 'shot',\n pst: 'shot',\n },\n show: {\n pst: '_ed',\n },\n shut: {\n prt: '_',\n },\n sing: {\n prt: 'sung',\n pst: 'sang',\n },\n sink: {\n pst: 'sank',\n pluperf: 'had sunk',\n },\n sit: {\n pst: 'sat',\n },\n ski: {\n pst: '_ied',\n },\n slay: {\n prt: 'slain',\n },\n sleep: {\n prt: 'slept',\n },\n slide: {\n prt: 'slid',\n pst: 'slid',\n },\n smash: {\n pres: '_es',\n },\n sneak: {\n prt: 'snuck',\n },\n speak: {\n fut: 'will have spoken',\n prt: 'spoken',\n pst: 'spoke',\n perf: 'have spoken',\n pluperf: 'had spoken',\n },\n speed: {\n prt: 'sped',\n },\n spend: {\n prt: 'spent',\n },\n spill: {\n prt: '_ed',\n pst: 'spilt',\n },\n spin: {\n g: '_ning',\n prt: 'spun',\n pst: 'spun',\n },\n spit: {\n prt: 'spat',\n },\n split: {\n prt: '_',\n },\n spread: {\n pst: '_',\n },\n spring: {\n prt: 'sprung',\n },\n stand: {\n pst: 'stood',\n },\n steal: {\n a: '_er',\n pst: 'stole',\n },\n stick: {\n pst: 'stuck',\n },\n sting: {\n pst: 'stung',\n },\n stink: {\n prt: 'stunk',\n pst: 'stunk',\n },\n stream: {\n a: '_er',\n },\n strew: {\n prt: '_n',\n },\n strike: {\n g: 'striking',\n pst: 'struck',\n },\n suit: {\n a: '_er',\n g: '_ing',\n pst: '_ed',\n },\n sware: {\n prt: 'sworn',\n },\n swear: {\n pst: 'swore',\n },\n sweep: {\n prt: 'swept',\n },\n swim: {\n g: '_ming',\n pst: 'swam',\n },\n swing: {\n pst: 'swung',\n },\n take: {\n fut: 'will have _n',\n pst: 'took',\n perf: 'have _n',\n pluperf: 'had _n',\n },\n teach: {\n pst: 'taught',\n pres: '_es',\n },\n tear: {\n pst: 'tore',\n },\n tell: {\n pst: 'told',\n },\n think: {\n pst: 'thought',\n },\n thrive: {\n prt: '_d',\n },\n tie: {\n g: 'tying',\n pst: '_d',\n },\n undergo: {\n prt: '_ne',\n },\n understand: {\n pst: 'understood',\n },\n upset: {\n prt: '_',\n },\n wait: {\n a: '_er',\n g: '_ing',\n pst: '_ed',\n },\n wake: {\n pst: 'woke',\n },\n wear: {\n pst: 'wore',\n },\n weave: {\n prt: 'woven',\n },\n weep: {\n prt: 'wept',\n },\n win: {\n g: '_ning',\n pst: 'won',\n },\n wind: {\n prt: 'wound',\n },\n withdraw: {\n pst: 'withdrew',\n },\n wring: {\n prt: 'wrung',\n },\n write: {\n g: 'writing',\n prt: 'written',\n pst: 'wrote',\n },\n}\n\n//uncompress our ad-hoc compression scheme\nlet keys = Object.keys(conjugations)\nfor (let i = 0; i < keys.length; i++) {\n const inf = keys[i]\n let final = {}\n Object.keys(conjugations[inf]).forEach(key => {\n let str = conjugations[inf][key]\n //swap-in infinitives for '_'\n str = str.replace('_', inf)\n\n let full = mapping[key]\n final[full] = str\n })\n //over-write original\n conjugations[inf] = final\n}\n\nmodule.exports = conjugations\n","const endsWith = {\n b: [\n {\n reg: /([^aeiou][aeiou])b$/i,\n repl: {\n pr: '$1bs',\n pa: '$1bbed',\n gr: '$1bbing',\n },\n },\n ],\n d: [\n {\n reg: /(end)$/i,\n repl: {\n pr: '$1s',\n pa: 'ent',\n gr: '$1ing',\n ar: '$1er',\n },\n },\n {\n reg: /(eed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n ar: '$1er',\n },\n },\n {\n reg: /(ed)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ded',\n ar: '$1der',\n gr: '$1ding',\n },\n },\n {\n reg: /([^aeiou][ou])d$/i,\n repl: {\n pr: '$1ds',\n pa: '$1dded',\n gr: '$1dding',\n },\n },\n ],\n e: [\n {\n reg: /(eave)$/i,\n repl: {\n pr: '$1s',\n pa: '$1d',\n gr: 'eaving',\n ar: '$1r',\n },\n },\n {\n reg: /(ide)$/i,\n repl: {\n pr: '$1s',\n pa: 'ode',\n gr: 'iding',\n ar: 'ider',\n },\n },\n {\n reg: /(ake)$/i,\n repl: {\n pr: '$1s',\n pa: 'ook',\n gr: 'aking',\n ar: '$1r',\n },\n },\n {\n reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing',\n prt: '$1en',\n },\n },\n {\n reg: /([bd]l)e$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n {\n reg: /(om)e$/i,\n repl: {\n pr: '$1es',\n pa: 'ame',\n gr: '$1ing',\n },\n },\n ],\n\n g: [\n {\n reg: /([^aeiou][ou])g$/i,\n repl: {\n pr: '$1gs',\n pa: '$1gged',\n gr: '$1gging',\n },\n },\n ],\n h: [\n {\n reg: /(..)([cs]h)$/i,\n repl: {\n pr: '$1$2es',\n pa: '$1$2ed',\n gr: '$1$2ing',\n },\n },\n ],\n k: [\n {\n reg: /(ink)$/i,\n repl: {\n pr: '$1s',\n pa: 'unk',\n gr: '$1ing',\n ar: '$1er',\n },\n },\n ],\n\n m: [\n {\n reg: /([^aeiou][aeiou])m$/i,\n repl: {\n pr: '$1ms',\n pa: '$1mmed',\n gr: '$1mming',\n },\n },\n ],\n\n n: [\n {\n reg: /(en)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n ],\n p: [\n {\n reg: /(e)(ep)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1pt',\n gr: '$1$2ing',\n ar: '$1$2er',\n },\n },\n {\n reg: /([^aeiou][aeiou])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1pped',\n gr: '$1pping',\n },\n },\n {\n reg: /([aeiu])p$/i,\n repl: {\n pr: '$1ps',\n pa: '$1p',\n gr: '$1pping',\n },\n },\n ],\n\n r: [\n {\n reg: /([td]er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n {\n reg: /(er)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n ],\n s: [\n {\n reg: /(ish|tch|ess)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n ],\n\n t: [\n {\n reg: /(ion|end|e[nc]t)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n {\n reg: /(.eat)$/i,\n repl: {\n pr: '$1s',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n {\n reg: /([aeiu])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1t',\n gr: '$1tting',\n },\n },\n {\n reg: /([^aeiou][aeiou])t$/i,\n repl: {\n pr: '$1ts',\n pa: '$1tted',\n gr: '$1tting',\n },\n },\n ],\n\n w: [\n {\n reg: /(..)(ow)$/i,\n repl: {\n pr: '$1$2s',\n pa: '$1ew',\n gr: '$1$2ing',\n prt: '$1$2n',\n },\n },\n ],\n y: [\n {\n reg: /([i|f|rr])y$/i,\n repl: {\n pr: '$1ies',\n pa: '$1ied',\n gr: '$1ying',\n },\n },\n ],\n\n z: [\n {\n reg: /([aeiou]zz)$/i,\n repl: {\n pr: '$1es',\n pa: '$1ed',\n gr: '$1ing',\n },\n },\n ],\n}\n\nmodule.exports = endsWith\n","const suffixes = require('./suffixes')\nconst posMap = {\n pr: 'PresentTense',\n pa: 'PastTense',\n gr: 'Gerund',\n prt: 'Participle',\n ar: 'Actor',\n}\n\nconst doTransform = function(str, obj) {\n let found = {}\n let keys = Object.keys(obj.repl)\n for (let i = 0; i < keys.length; i += 1) {\n let pos = keys[i]\n found[posMap[pos]] = str.replace(obj.reg, obj.repl[pos])\n }\n return found\n}\n\n//look at the end of the word for clues\nconst checkSuffix = function(str = '') {\n let c = str[str.length - 1]\n if (suffixes.hasOwnProperty(c) === true) {\n for (let r = 0; r < suffixes[c].length; r += 1) {\n const reg = suffixes[c][r].reg\n if (reg.test(str) === true) {\n return doTransform(str, suffixes[c][r])\n }\n }\n }\n return {}\n}\nmodule.exports = checkSuffix\n","//non-specifc, 'hail-mary' transforms from infinitive, into other forms\nconst hasY = /[bcdfghjklmnpqrstvwxz]y$/\n\nconst generic = {\n Gerund: inf => {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf.replace(/e$/, 'ing')\n }\n return inf + 'ing'\n },\n\n PresentTense: inf => {\n if (inf.charAt(inf.length - 1) === 's') {\n return inf + 'es'\n }\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ies'\n }\n return inf + 's'\n },\n\n PastTense: inf => {\n if (inf.charAt(inf.length - 1) === 'e') {\n return inf + 'd'\n }\n if (inf.substr(-2) === 'ed') {\n return inf\n }\n if (hasY.test(inf) === true) {\n return inf.slice(0, -1) + 'ied'\n }\n return inf + 'ed'\n },\n}\n\nmodule.exports = generic\n","const checkSuffix = require('./01-suffixes')\nconst genericFill = require('./02-generic')\n\n//we run this on every verb in the lexicon, so please keep it fast\n//we assume the input word is a proper infinitive\nconst conjugate = function(str = '', world) {\n let found = {}\n // 1. look at irregulars\n //the lexicon doesn't pass this in\n if (world && world.irregulars) {\n if (world.irregulars.verbs.hasOwnProperty(str) === true) {\n found = Object.assign({}, world.irregulars.verbs[str])\n }\n }\n //2. rule-based regex\n found = Object.assign({}, checkSuffix(str), found)\n\n //3. generic transformations\n //'buzzing'\n if (found.Gerund === undefined) {\n found.Gerund = genericFill.Gerund(str)\n }\n //'buzzed'\n if (found.PastTense === undefined) {\n found.PastTense = genericFill.PastTense(str)\n }\n //'buzzes'\n if (found.PresentTense === undefined) {\n found.PresentTense = genericFill.PresentTense(str)\n }\n return found\n}\nmodule.exports = conjugate\n","//turn 'quick' into 'quickest'\nconst do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /oud$/, /...p$/]\nconst dont_rules = [/ary$/]\n\nconst irregulars = {\n nice: 'nicest',\n late: 'latest',\n hard: 'hardest',\n inner: 'innermost',\n outer: 'outermost',\n far: 'furthest',\n worse: 'worst',\n bad: 'worst',\n good: 'best',\n big: 'biggest',\n large: 'largest',\n}\n\nconst transforms = [\n {\n reg: /y$/i,\n repl: 'iest',\n },\n {\n reg: /([aeiou])t$/i,\n repl: '$1ttest',\n },\n {\n reg: /([aeou])de$/i,\n repl: '$1dest',\n },\n {\n reg: /nge$/i,\n repl: 'ngest',\n },\n {\n reg: /([aeiou])te$/i,\n repl: '$1test',\n },\n]\n\nconst to_superlative = function(str) {\n //irregulars\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str]\n }\n //known transforms\n for (let i = 0; i < transforms.length; i++) {\n if (transforms[i].reg.test(str)) {\n return str.replace(transforms[i].reg, transforms[i].repl)\n }\n }\n //dont-rules\n for (let i = 0; i < dont_rules.length; i++) {\n if (dont_rules[i].test(str) === true) {\n return null\n }\n }\n //do-rules\n for (let i = 0; i < do_rules.length; i++) {\n if (do_rules[i].test(str) === true) {\n if (str.charAt(str.length - 1) === 'e') {\n return str + 'st'\n }\n return str + 'est'\n }\n }\n return str + 'est'\n}\n\nmodule.exports = to_superlative\n","//turn 'quick' into 'quickly'\nconst do_rules = [/ght$/, /nge$/, /ough$/, /ain$/, /uel$/, /[au]ll$/, /ow$/, /old$/, /oud$/, /e[ae]p$/]\nconst dont_rules = [/ary$/, /ous$/]\n\nconst irregulars = {\n grey: 'greyer',\n gray: 'grayer',\n green: 'greener',\n yellow: 'yellower',\n red: 'redder',\n good: 'better',\n well: 'better',\n bad: 'worse',\n sad: 'sadder',\n big: 'bigger',\n}\n\nconst transforms = [\n {\n reg: /y$/i,\n repl: 'ier',\n },\n {\n reg: /([aeiou])t$/i,\n repl: '$1tter',\n },\n {\n reg: /([aeou])de$/i,\n repl: '$1der',\n },\n {\n reg: /nge$/i,\n repl: 'nger',\n },\n]\n\nconst to_comparative = function(str) {\n //known-irregulars\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str]\n }\n //known-transforms\n for (let i = 0; i < transforms.length; i++) {\n if (transforms[i].reg.test(str) === true) {\n return str.replace(transforms[i].reg, transforms[i].repl)\n }\n }\n //dont-patterns\n for (let i = 0; i < dont_rules.length; i++) {\n if (dont_rules[i].test(str) === true) {\n return null\n }\n }\n //do-patterns\n for (let i = 0; i < do_rules.length; i++) {\n if (do_rules[i].test(str) === true) {\n return str + 'er'\n }\n }\n //easy-one\n if (/e$/.test(str) === true) {\n return str + 'r'\n }\n return str + 'er'\n}\n\nmodule.exports = to_comparative\n","const fns = {\n toSuperlative: require('./toSuperlative'),\n toComparative: require('./toComparative'),\n}\n\n/** conjugate an adjective into other forms */\nconst conjugate = function(w) {\n let res = {}\n // 'greatest'\n let sup = fns.toSuperlative(w)\n if (sup) {\n res.Superlative = sup\n }\n // 'greater'\n let comp = fns.toComparative(w)\n if (comp) {\n res.Comparative = comp\n }\n return res\n}\nmodule.exports = conjugate\n","/** patterns for turning 'bus' to 'buses'*/\nconst suffixes = {\n a: [[/(antenn|formul|nebul|vertebr|vit)a$/i, '$1ae'], [/([ti])a$/i, '$1a']],\n\n e: [\n [/(kn|l|w)ife$/i, '$1ives'],\n [/(hive)$/i, '$1s'],\n [/([m|l])ouse$/i, '$1ice'],\n [/([m|l])ice$/i, '$1ice'],\n ],\n\n f: [\n [/^(dwar|handkerchie|hoo|scar|whar)f$/i, '$1ves'],\n [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i, '$1ves'],\n ],\n\n i: [[/(octop|vir)i$/i, '$1i']],\n\n m: [[/([ti])um$/i, '$1a']],\n\n n: [[/^(oxen)$/i, '$1']],\n\n o: [[/(al|ad|at|er|et|ed|ad)o$/i, '$1oes']],\n\n s: [\n [/(ax|test)is$/i, '$1es'],\n [/(alias|status)$/i, '$1es'],\n [/sis$/i, 'ses'],\n [/(bu)s$/i, '$1ses'],\n [/(sis)$/i, 'ses'],\n [/^(?!talis|.*hu)(.*)man$/i, '$1men'],\n [/(octop|vir|radi|nucle|fung|cact|stimul)us$/i, '$1i'],\n ],\n\n x: [[/(matr|vert|ind|cort)(ix|ex)$/i, '$1ices'], [/^(ox)$/i, '$1en']],\n\n y: [[/([^aeiouy]|qu)y$/i, '$1ies']],\n\n z: [[/(quiz)$/i, '$1zes']],\n}\n\nmodule.exports = suffixes\n","const rules = require('./_rules')\nconst addE = /(x|ch|sh|s|z)$/\n\nconst trySuffix = function(str) {\n let c = str[str.length - 1]\n if (rules.hasOwnProperty(c) === true) {\n for (let i = 0; i < rules[c].length; i += 1) {\n let reg = rules[c][i][0]\n if (reg.test(str) === true) {\n return str.replace(reg, rules[c][i][1])\n }\n }\n }\n return null\n}\n\n/** Turn a singular noun into a plural\n * assume the given string is singular\n */\nconst pluralize = function(str = '', world) {\n let irregulars = world.irregulars.nouns\n\n // check irregulars list\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str]\n }\n\n //we have some rules to try-out\n let plural = trySuffix(str)\n if (plural !== null) {\n return plural\n }\n //like 'church'\n if (addE.test(str)) {\n return str + 'es'\n }\n // ¯\\_(ツ)_/¯\n return str + 's'\n}\nmodule.exports = pluralize\n","//patterns for turning 'dwarves' to 'dwarf'\nmodule.exports = [\n [/([^v])ies$/i, '$1y'],\n [/ises$/i, 'isis'],\n [/(kn|[^o]l|w)ives$/i, '$1ife'],\n [/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'],\n [/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'],\n [/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'],\n [/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'],\n [/(buffal|tomat|tornad)(oes)$/i, '$1o'],\n // [/(analy|diagno|parenthe|progno|synop|the)ses$/i, '$1sis'],\n [/(..[aeiou]s)es$/i, '$1'],\n [/(vert|ind|cort)(ices)$/i, '$1ex'],\n [/(matr|append)(ices)$/i, '$1ix'],\n [/(x|ch|ss|sh|z|o)es$/i, '$1'],\n [/men$/i, 'man'],\n [/(n)ews$/i, '$1ews'],\n [/([ti])a$/i, '$1um'],\n [/([^aeiouy]|qu)ies$/i, '$1y'],\n [/(s)eries$/i, '$1eries'],\n [/(m)ovies$/i, '$1ovie'],\n [/([m|l])ice$/i, '$1ouse'],\n [/(cris|ax|test)es$/i, '$1is'],\n [/(alias|status)es$/i, '$1'],\n [/(ss)$/i, '$1'],\n [/(ics)$/i, '$1'],\n [/s$/i, ''],\n]\n","const rules = require('./_rules')\n\nconst invertObj = function(obj) {\n return Object.keys(obj).reduce((h, k) => {\n h[obj[k]] = k\n return h\n }, {})\n}\n\nconst toSingular = function(str, world) {\n let irregulars = world.irregulars.nouns\n let invert = invertObj(irregulars)\n\n // check irregulars list\n if (invert.hasOwnProperty(str)) {\n return invert[str]\n }\n\n // go through our regexes\n for (let i = 0; i < rules.length; i++) {\n if (rules[i][0].test(str) === true) {\n str = str.replace(rules[i][0], rules[i][1])\n return str\n }\n }\n return str\n}\nmodule.exports = toSingular\n","//rules for turning a verb into infinitive form\nlet rules = {\n Participle: [\n {\n reg: /own$/i,\n to: 'ow',\n },\n {\n reg: /(.)un([g|k])$/i,\n to: '$1in$2',\n },\n ],\n\n Actor: [\n {\n reg: /(er)er$/i,\n to: '$1',\n },\n ],\n\n PresentTense: [\n {\n reg: /(..)(ies)$/i,\n to: '$1y',\n },\n {\n reg: /(tch|sh)es$/i,\n to: '$1',\n },\n {\n reg: /(ss|zz)es$/i,\n to: '$1',\n },\n {\n reg: /([tzlshicgrvdnkmu])es$/i,\n to: '$1e',\n },\n {\n reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,\n to: '$1',\n },\n {\n reg: /(ow)s$/i,\n to: '$1',\n },\n {\n reg: /(op)s$/i,\n to: '$1',\n },\n {\n reg: /([eirs])ts$/i,\n to: '$1t',\n },\n {\n reg: /(ll)s$/i,\n to: '$1',\n },\n {\n reg: /(el)s$/i,\n to: '$1',\n },\n {\n reg: /(ip)es$/i,\n to: '$1e',\n },\n {\n reg: /ss$/i,\n to: 'ss',\n },\n {\n reg: /s$/i,\n to: '',\n },\n ],\n\n Gerund: [\n {\n reg: /pping$/i,\n to: 'p',\n },\n {\n reg: /lling$/i,\n to: 'll',\n },\n {\n reg: /tting$/i,\n to: 't',\n },\n {\n reg: /dding$/i,\n to: 'd',\n },\n {\n reg: /ssing$/i,\n to: 'ss',\n },\n {\n reg: /(..)gging$/i,\n to: '$1g',\n },\n {\n reg: /([^aeiou])ying$/i,\n to: '$1y',\n },\n {\n reg: /([^ae]i.)ing$/i,\n to: '$1e',\n },\n {\n reg: /(ea.)ing$/i,\n to: '$1',\n },\n {\n reg: /(u[rtcb]|[bdtpkg]l|n[cg]|a[gdkvtc]|[ua]s|[dr]g|yz|o[rlsp]|cre)ing$/i,\n to: '$1e',\n },\n {\n reg: /(ch|sh)ing$/i,\n to: '$1',\n },\n {\n reg: /(..)ing$/i,\n to: '$1',\n },\n ],\n\n PastTense: [\n {\n reg: /(ued)$/i,\n to: 'ue',\n },\n {\n reg: /a([^aeiouy])ed$/i,\n to: 'a$1e',\n },\n {\n reg: /([aeiou]zz)ed$/i,\n to: '$1',\n },\n {\n reg: /(e|i)lled$/i,\n to: '$1ll',\n },\n {\n reg: /(.)(sh|ch)ed$/i,\n to: '$1$2',\n },\n {\n reg: /(tl|gl)ed$/i,\n to: '$1e',\n },\n {\n reg: /(um?pt?)ed$/i,\n to: '$1',\n },\n {\n reg: /(ss)ed$/i,\n to: '$1',\n },\n {\n reg: /pped$/i,\n to: 'p',\n },\n {\n reg: /tted$/i,\n to: 't',\n },\n {\n reg: /(..)gged$/i,\n to: '$1g',\n },\n {\n reg: /(..)lked$/i,\n to: '$1lk',\n },\n {\n reg: /([^aeiouy][aeiou])ked$/i,\n to: '$1ke',\n },\n {\n reg: /(.[aeiou])led$/i,\n to: '$1l',\n },\n {\n reg: /(..)(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,\n to: '$1$2',\n },\n {\n reg: /(.ut)ed$/i,\n to: '$1e',\n },\n {\n reg: /(.pt)ed$/i,\n to: '$1',\n },\n {\n reg: /(us)ed$/i,\n to: '$1e',\n },\n {\n reg: /(..[^aeiouy])ed$/i,\n to: '$1e',\n },\n {\n reg: /(..)ied$/i,\n to: '$1y',\n },\n {\n reg: /(.o)ed$/i,\n to: '$1o',\n },\n {\n reg: /(..i)ed$/i,\n to: '$1',\n },\n {\n reg: /(.a[^aeiou])ed$/i,\n to: '$1',\n },\n {\n reg: /([rl])ew$/i,\n to: '$1ow',\n },\n {\n reg: /([pl])t$/i,\n to: '$1t',\n },\n ],\n}\nmodule.exports = rules\n","let guessVerb = {\n Gerund: ['ing'],\n Actor: ['erer'],\n Infinitive: [\n 'ate',\n 'ize',\n 'tion',\n 'rify',\n 'then',\n 'ress',\n 'ify',\n 'age',\n 'nce',\n 'ect',\n 'ise',\n 'ine',\n 'ish',\n 'ace',\n 'ash',\n 'ure',\n 'tch',\n 'end',\n 'ack',\n 'and',\n 'ute',\n 'ade',\n 'ock',\n 'ite',\n 'ase',\n 'ose',\n 'use',\n 'ive',\n 'int',\n 'nge',\n 'lay',\n 'est',\n 'ain',\n 'ant',\n 'ent',\n 'eed',\n 'er',\n 'le',\n 'own',\n 'unk',\n 'ung',\n 'en',\n ],\n PastTense: ['ed', 'lt', 'nt', 'pt', 'ew', 'ld'],\n PresentTense: [\n 'rks',\n 'cks',\n 'nks',\n 'ngs',\n 'mps',\n 'tes',\n 'zes',\n 'ers',\n 'les',\n 'acks',\n 'ends',\n 'ands',\n 'ocks',\n 'lays',\n 'eads',\n 'lls',\n 'els',\n 'ils',\n 'ows',\n 'nds',\n 'ays',\n 'ams',\n 'ars',\n 'ops',\n 'ffs',\n 'als',\n 'urs',\n 'lds',\n 'ews',\n 'ips',\n 'es',\n 'ts',\n 'ns',\n ],\n}\n//flip it into a lookup object\nguessVerb = Object.keys(guessVerb).reduce((h, k) => {\n guessVerb[k].forEach(a => (h[a] = k))\n return h\n}, {})\nmodule.exports = guessVerb\n","const rules = require('./_transform')\nconst guess = require('./_guess')\n\n/** it helps to know what we're conjugating from */\nconst guessTense = function(str) {\n let three = str.substr(str.length - 3)\n if (guess.hasOwnProperty(three) === true) {\n return guess[three]\n }\n let two = str.substr(str.length - 2)\n if (guess.hasOwnProperty(two) === true) {\n return guess[two]\n }\n let one = str.substr(str.length - 1)\n if (one === 's') {\n return 'PresentTense'\n }\n return null\n}\n\nconst toInfinitive = function(str, world, tense) {\n if (!str) {\n return ''\n }\n //1. look at known irregulars\n if (world.words.hasOwnProperty(str) === true) {\n let irregs = world.irregulars.verbs\n let keys = Object.keys(irregs)\n for (let i = 0; i < keys.length; i++) {\n let forms = Object.keys(irregs[keys[i]])\n for (let o = 0; o < forms.length; o++) {\n if (str === irregs[keys[i]][forms[o]]) {\n return keys[i]\n }\n }\n }\n }\n\n // give'r!\n tense = tense || guessTense(str)\n if (tense && rules[tense]) {\n for (let i = 0; i < rules[tense].length; i++) {\n const rule = rules[tense][i]\n if (rule.reg.test(str) === true) {\n return str.replace(rule.reg, rule.to)\n }\n }\n }\n return str\n}\nmodule.exports = toInfinitive\n","const lexData = require('./_data')\nconst defaultTags = require('./tags')\nconst unpack = require('efrt-unpack')\nconst addLex = require('./addWords')\nconst addIrregulars = require('./addIrregulars')\nconst inferTagSet = require('./tags/inference')\n\nlet misc = require('./data/misc')\n\n//these let users change inflection / verb conjugation\nconst irregulars = {\n nouns: require('./data/plurals'),\n verbs: require('./data/conjugations'),\n}\n\n//these behaviours are configurable & shared across some plugins\nconst transforms = {\n conjugate: require('../transforms/conjugate'),\n adjectives: require('../transforms/adjectives'),\n toPlural: require('../transforms/toPlural'),\n toSingular: require('../transforms/toSingular'),\n toInfinitive: require('../transforms/toInfinitive'),\n}\n\nlet isVerbose = false\n\n/** all configurable linguistic data */\nclass World {\n constructor() {\n // quiet these properties from a console.log\n Object.defineProperty(this, 'words', {\n enumerable: false,\n value: misc,\n writable: true,\n })\n Object.defineProperty(this, 'hasCompound', {\n enumerable: false,\n value: {},\n writable: true,\n })\n Object.defineProperty(this, 'irregulars', {\n enumerable: false,\n value: irregulars,\n writable: true,\n })\n Object.defineProperty(this, 'tags', {\n enumerable: false,\n value: Object.assign({}, defaultTags),\n writable: true,\n })\n Object.defineProperty(this, 'transforms', {\n enumerable: false,\n value: transforms,\n writable: true,\n })\n\n Object.defineProperty(this, 'taggers', {\n enumerable: false,\n value: [],\n writable: true,\n })\n // add our compressed data to lexicon\n this.unpackWords(lexData)\n // add our irregulars to lexicon\n this.addIrregulars()\n\n // cache our abbreviations for our sentence-parser\n Object.defineProperty(this, 'cache', {\n enumerable: false,\n value: {\n abbreviations: this.getByTag('Abbreviation'),\n },\n })\n }\n\n /** more logs for debugging */\n verbose(bool) {\n isVerbose = bool\n return this\n }\n isVerbose() {\n return isVerbose\n }\n\n /** get all terms in our lexicon with this tag */\n getByTag(tag) {\n let lex = this.words\n let res = {}\n let words = Object.keys(lex)\n for (let i = 0; i < words.length; i++) {\n if (typeof lex[words[i]] === 'string') {\n if (lex[words[i]] === tag) {\n res[words[i]] = true\n }\n } else if (lex[words[i]].some(t => t === tag)) {\n res[words[i]] = true\n }\n }\n return res\n }\n\n /** augment our lingustic data with new data */\n unpackWords(lex) {\n let tags = Object.keys(lex)\n for (let i = 0; i < tags.length; i++) {\n let words = Object.keys(unpack(lex[tags[i]]))\n for (let w = 0; w < words.length; w++) {\n addLex.addWord(words[w], tags[i], this.words)\n // do some fancier stuff\n addLex.addMore(words[w], tags[i], this)\n }\n }\n }\n /** put new words into our lexicon, properly */\n addWords(obj) {\n let keys = Object.keys(obj)\n for (let i = 0; i < keys.length; i++) {\n let word = keys[i].toLowerCase()\n addLex.addWord(word, obj[keys[i]], this.words)\n // do some fancier stuff\n addLex.addMore(word, obj[keys[i]], this)\n }\n }\n\n addIrregulars() {\n addIrregulars(this)\n return this\n }\n\n /** extend the compromise tagset */\n addTags(tags) {\n tags = Object.assign({}, tags)\n this.tags = Object.assign(this.tags, tags)\n // calculate graph implications for the new tags\n this.tags = inferTagSet(this.tags)\n return this\n }\n /** call methods after tagger runs */\n postProcess(fn) {\n this.taggers.push(fn)\n return this\n }\n\n /** helper method for logging + debugging */\n stats() {\n return {\n words: Object.keys(this.words).length,\n plurals: Object.keys(this.irregular.plurals).length,\n conjugations: Object.keys(this.irregular.conjugations).length,\n compounds: Object.keys(this.hasCompound).length,\n postProcessors: this.taggers.length,\n }\n }\n}\n\n// ¯\\_(:/)_/¯\nconst clone = function(obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\n/** produce a deep-copy of all lingustic data */\nWorld.prototype.clone = function() {\n let w2 = new World()\n // these are simple to copy:\n w2.words = Object.assign({}, this.words)\n w2.hasCompound = Object.assign({}, this.hasCompound)\n //these ones are nested:\n w2.irregulars = clone(this.irregulars)\n w2.tags = clone(this.tags)\n // these are functions\n w2.transforms = this.transforms\n w2.taggers = this.taggers\n return w2\n}\nmodule.exports = World\n","// const cache = require('./_setCache')\n\n/** return the root, first document */\nexports.all = function() {\n return this.parents()[0] || this\n}\n\n/** return the previous result */\nexports.parent = function() {\n if (this.from) {\n return this.from\n }\n return this\n}\n\n/** return a list of all previous results */\nexports.parents = function(n) {\n let arr = []\n const addParent = function(doc) {\n if (doc.from) {\n arr.push(doc.from)\n addParent(doc.from)\n }\n }\n addParent(this)\n arr = arr.reverse()\n if (typeof n === 'number') {\n return arr[n]\n }\n return arr\n}\n\n/** deep-copy the document, so that no references remain */\nexports.clone = function(doShallow) {\n let list = this.list.map(ts => ts.clone(doShallow))\n let tmp = this.buildFrom(list)\n return tmp\n}\n\n/** how many seperate terms does the document have? */\nexports.wordCount = function() {\n return this.list.reduce((count, p) => {\n count += p.wordCount()\n return count\n }, 0)\n}\nexports.wordcount = exports.wordCount\n\n/** turn on logging for decision-debugging */\n// exports.verbose = function(bool) {\n// if (bool === undefined) {\n// bool = true\n// }\n// this.world.verbose = bool\n// }\n\n/** freeze the current state of the document, for speed-purposes*/\nexports.cache = function(options) {\n options = options || {}\n this.list.forEach(p => {\n let words = {}\n p.cache = p.cache || {}\n p.cache.terms = p.cache.terms || p.terms()\n // cache all the terms\n p.cache.terms.forEach(t => {\n words[t.clean] = true\n words[t.reduced] = true\n words[t.text.toLowerCase()] = true\n if (t.implicit) {\n words[t.implicit] = true\n }\n if (t.root) {\n words[t.root] = true\n }\n if (t.alias !== undefined) {\n words = Object.assign(words, t.alias)\n }\n if (options.root) {\n t.setRoot(this.world)\n words[t.root] = true\n }\n })\n delete words['']\n p.cache.words = words\n })\n return this\n}\n\n/** un-freezes the current state of the document, so it may be transformed */\nexports.uncache = function() {\n this.list.forEach(p => {\n p.cache = {}\n })\n // do parents too?\n this.parents().forEach(doc => {\n doc.list.forEach(p => {\n p.cache = {}\n })\n })\n return this\n}\n","/** use only the first result(s) */\nexports.first = function(n) {\n if (n === undefined) {\n return this.get(0)\n }\n return this.slice(0, n)\n}\n\n/** use only the last result(s) */\nexports.last = function(n) {\n if (n === undefined) {\n return this.get(this.list.length - 1)\n }\n let end = this.list.length\n return this.slice(end - n, end)\n}\n\n/** grab a given subset of the results*/\nexports.slice = function(start, end) {\n let list = this.list.slice(start, end)\n return this.buildFrom(list)\n}\n\n/* grab nth result */\nexports.eq = function(n) {\n let p = this.list[n]\n if (p === undefined) {\n return this.buildFrom([])\n }\n return this.buildFrom([p])\n}\nexports.get = exports.eq\n\n/** grab term[0] for every match */\nexports.firstTerm = function() {\n return this.match('^.')\n}\n/** grab the last term for every match */\nexports.lastTerm = function() {\n return this.match('.$')\n}\n\n/** return a flat array of term objects */\nexports.termList = function(num) {\n let arr = []\n //'reduce' but faster\n for (let i = 0; i < this.list.length; i++) {\n let terms = this.list[i].terms()\n for (let o = 0; o < terms.length; o++) {\n arr.push(terms[o])\n //support .termList(4)\n if (num !== undefined && arr[num] !== undefined) {\n return arr[num]\n }\n }\n }\n return arr\n}\n","const parseSyntax = require('../match/syntax')\n\n/** return a new Doc, with this one as a parent */\nexports.match = function(reg) {\n //parse-up the input expression\n let regs = parseSyntax(reg)\n if (regs.length === 0) {\n return this.buildFrom([])\n }\n //try expression on each phrase\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.match(regs))\n }, [])\n return this.buildFrom(matches)\n}\n\n/** return all results except for this */\nexports.not = function(reg) {\n //parse-up the input expression\n let regs = parseSyntax(reg)\n //if it's empty, return them all!\n if (regs.length === 0) {\n return this\n }\n //try expression on each phrase\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.not(regs))\n }, [])\n return this.buildFrom(matches)\n}\n\n/** return only the first match */\nexports.matchOne = function(reg) {\n let regs = parseSyntax(reg)\n for (let i = 0; i < this.list.length; i++) {\n let match = this.list[i].match(regs)\n return this.buildFrom(match)\n }\n return this.buildFrom([])\n}\n\n/** return each current phrase, only if it contains this match */\nexports.if = function(reg) {\n let regs = parseSyntax(reg)\n let found = this.list.filter(p => p.match(regs).length > 0)\n return this.buildFrom(found)\n}\n\n/** Filter-out any current phrases that have this match*/\nexports.ifNo = function(reg) {\n let regs = parseSyntax(reg)\n let found = this.list.filter(p => p.match(regs).length === 0)\n return this.buildFrom(found)\n}\n\n/**Return a boolean if this match exists */\nexports.has = function(reg) {\n let regs = parseSyntax(reg)\n return this.list.some(p => p.has(regs) === true)\n}\n\n/** match any terms after our matches, within the sentence */\nexports.lookAhead = function(reg) {\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*'\n }\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n matches = matches.concat(p.lookAhead(regs))\n })\n matches = matches.filter(p => p)\n return this.buildFrom(matches)\n}\nexports.lookAfter = exports.lookAhead\n\n/** match any terms before our matches, within the sentence */\nexports.lookBehind = function(reg) {\n // find everything afterwards, by default\n if (!reg) {\n reg = '.*'\n }\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n matches = matches.concat(p.lookBehind(regs))\n })\n matches = matches.filter(p => p)\n return this.buildFrom(matches)\n}\nexports.lookBefore = exports.lookBehind\n\n/** return all terms before a match, in each phrase */\nexports.before = function(reg) {\n let regs = parseSyntax(reg)\n //only the phrases we care about\n let phrases = this.if(regs).list\n let befores = phrases.map(p => {\n let ids = p.terms().map(t => t.id)\n //run the search again\n let m = p.match(regs)[0]\n let index = ids.indexOf(m.start)\n //nothing is before a first-term match\n if (index === 0 || index === -1) {\n return null\n }\n return p.buildFrom(p.start, index)\n })\n befores = befores.filter(p => p !== null)\n return this.buildFrom(befores)\n}\n\n/** return all terms after a match, in each phrase */\nexports.after = function(reg) {\n let regs = parseSyntax(reg)\n //only the phrases we care about\n let phrases = this.if(regs).list\n let befores = phrases.map(p => {\n let terms = p.terms()\n let ids = terms.map(t => t.id)\n //run the search again\n let m = p.match(regs)[0]\n let index = ids.indexOf(m.start)\n //skip if nothing is after it\n if (index === -1 || !terms[index + m.length]) {\n return null\n }\n //create the new phrase, after our match.\n let id = terms[index + m.length].id\n let len = p.length - index - m.length\n return p.buildFrom(id, len)\n })\n befores = befores.filter(p => p !== null)\n return this.buildFrom(befores)\n}\n","/** apply a tag, or tags to all terms */\nconst tagTerms = function(tag, doc, safe, reason) {\n let tagList = []\n if (typeof tag === 'string') {\n tagList = tag.split(' ')\n }\n\n // console.log(doc.parents().length)\n //do indepenent tags for each term:\n doc.list.forEach(p => {\n let terms = p.terms()\n // tagSafe - apply only to fitting terms\n if (safe === true) {\n terms = terms.filter(t => t.canBe(tag, doc.world))\n }\n terms.forEach((t, i) => {\n //fancy version:\n if (tagList.length > 1) {\n if (tagList[i] && tagList[i] !== '.') {\n t.tag(tagList[i], reason, doc.world)\n }\n } else {\n //non-fancy version (same tag for all terms)\n t.tag(tag, reason, doc.world)\n }\n })\n })\n return\n}\nmodule.exports = tagTerms\n","const setTag = require('./_setTag')\n\n/** Give all terms the given tag */\nexports.tag = function(tags, why) {\n if (!tags) {\n return this\n }\n setTag(tags, this, false, why)\n return this\n}\n\n/** Only apply tag to terms if it is consistent with current tags */\nexports.tagSafe = function(tags, why) {\n if (!tags) {\n return this\n }\n setTag(tags, this, true, why)\n return this\n}\n\n/** Remove this term from the given terms */\nexports.unTag = function(tags, why) {\n this.list.forEach(p => {\n p.terms().forEach(t => t.unTag(tags, why, this.world))\n })\n return this\n}\n\n/** return only the terms that can be this tag*/\nexports.canBe = function(tag) {\n if (!tag) {\n return this\n }\n let world = this.world\n let matches = this.list.reduce((arr, p) => {\n return arr.concat(p.canBe(tag, world))\n }, [])\n return this.buildFrom(matches)\n}\n","/* run each phrase through a function, and create a new document */\nexports.map = function(fn) {\n if (!fn) {\n return this\n }\n let list = this.list.map((p, i) => {\n let doc = this.buildFrom([p])\n doc.from = null //it's not a child/parent\n let res = fn(doc, i)\n if (res.list && res.list[0]) {\n return res.list[0]\n }\n return res\n })\n if (list.length === 0) {\n return this.buildFrom(list)\n }\n // if it is not a list of Phrase objects, then don't try to make a Doc object\n if (typeof list[0] !== 'object' || list[0].isA !== 'Phrase') {\n return list\n }\n return this.buildFrom(list)\n}\n\n/** run a function on each phrase */\nexports.forEach = function(fn, detachParent) {\n if (!fn) {\n return this\n }\n this.list.forEach((p, i) => {\n let sub = this.buildFrom([p])\n // if we're doing fancy insertions, we may want to skip updating the parent each time.\n if (detachParent === true) {\n sub.from = null //\n }\n // let len\n // console.log(sub.from.list[0].text())\n fn(sub, i)\n // console.log(sub.from.list[0].text())\n })\n return this\n}\n\n/** return only the phrases that return true */\nexports.filter = function(fn) {\n if (!fn) {\n return this\n }\n let list = this.list.filter((p, i) => {\n let doc = this.buildFrom([p])\n doc.from = null //it's not a child/parent\n return fn(doc, i)\n })\n return this.buildFrom(list)\n}\n\n/** return a document with only the first phrase that matches */\nexports.find = function(fn) {\n if (!fn) {\n return this\n }\n let phrase = this.list.find((p, i) => {\n let doc = this.buildFrom([p])\n doc.from = null //it's not a child/parent\n return fn(doc, i)\n })\n if (phrase) {\n return this.buildFrom([phrase])\n }\n return undefined\n}\n\n/** return true or false if there is one matching phrase */\nexports.some = function(fn) {\n if (!fn) {\n return this\n }\n return this.list.some((p, i) => {\n let doc = this.buildFrom([p])\n doc.from = null //it's not a child/parent\n return fn(doc, i)\n })\n}\n\n/** sample a subset of the results */\nexports.random = function(n) {\n if (!this.found) {\n return this\n }\n let r = Math.floor(Math.random() * this.list.length)\n if (n === undefined) {\n let list = [this.list[r]]\n return this.buildFrom(list)\n }\n //prevent it from going over the end\n if (r + n > this.length) {\n r = this.length - n\n r = r < 0 ? 0 : r\n }\n return this.slice(r, r + n)\n}\n\n/** combine each phrase into a new data-structure */\n// exports.reduce = function(fn, h) {\n// let list = this.list.reduce((_h, ts) => {\n// let doc = this.buildFrom([ts])\n// doc.from = null //it's not a child/parent\n// return fn(_h, doc)\n// }, h)\n// return this.buildFrom(list)\n// }\n","const tokenize = require('../../01-tokenizer/02-words')\n\n// compare one term and one match\nconst doesMatch = function(term, str) {\n if (str === '') {\n return false\n }\n return term.reduced === str || term.implicit === str || term.root === str || term.text.toLowerCase() === str\n}\n\n// is this lookup found in these terms?\nconst findStart = function(arr, terms) {\n //find the start\n for (let i = 0; i < terms.length; i++) {\n if (doesMatch(terms[i], arr[0])) {\n if (arr.every((a, n) => doesMatch(terms[i + n], a) === true)) {\n return terms[i].id\n }\n }\n }\n return false\n}\n\n/** lookup an array of words or phrases */\nexports.lookup = function(arr) {\n if (typeof arr === 'string') {\n arr = [arr]\n }\n let lookups = arr.map(str => {\n str = str.toLowerCase()\n let words = tokenize(str)\n words = words.map(s => s.trim())\n return words\n })\n this.cache()\n let found = []\n // try each lookup\n lookups.forEach(a => {\n //try each phrase\n this.list.forEach(p => {\n // cache-miss, skip.\n if (p.cache.words[a[0]] !== true) {\n return\n }\n //we found a potential match\n let terms = p.terms()\n let id = findStart(a, terms)\n if (id !== false) {\n // create the actual phrase\n let phrase = p.buildFrom(id, a.length)\n found.push(phrase)\n return\n }\n })\n })\n return this.buildFrom(found)\n}\n","const tokenize = require('../../../01-tokenizer')\n\nconst titleCase = str => {\n return str.charAt(0).toUpperCase() + str.substr(1)\n}\n\n/** substitute-in new content */\nexports.replaceWith = function(replace, keepTags, keepCase) {\n if (!replace) {\n return this.delete()\n }\n // clear the cache\n this.uncache()\n // return this\n this.list.forEach(p => {\n let input = replace\n // accept a function for replace\n if (typeof replace === 'function') {\n input = replace(p)\n }\n let newPhrases\n // accept a Doc object to replace\n if (input && typeof input === 'object' && input.isA === 'Doc') {\n newPhrases = input.list\n this.pool().merge(input.pool())\n } else if (typeof input === 'string') {\n //input is a string\n if (keepCase === true && p.terms(0).isTitleCase()) {\n input = titleCase(input)\n }\n newPhrases = tokenize.fromText(input, this.world, this.pool())\n //tag the new phrases\n let tmpDoc = this.buildFrom(newPhrases)\n tmpDoc.tagger()\n } else {\n return //don't even bother\n }\n\n // try to keep its old tags, if appropriate\n if (keepTags === true) {\n let oldTags = p.json({ terms: { tags: true } }).terms\n newPhrases[0].terms().forEach((t, i) => {\n if (oldTags[i]) {\n t.tagSafe(oldTags[i].tags, 'keptTag', this.world)\n }\n })\n }\n p.replace(newPhrases[0], this) //Oneday: support multi-sentence replacements\n })\n return this\n}\n\n/** search and replace match with new content */\nexports.replace = function(match, replace, keepTags, keepCase) {\n // if there's no 2nd param, use replaceWith\n if (replace === undefined) {\n return this.replaceWith(match)\n }\n this.match(match).replaceWith(replace, keepTags, keepCase)\n return this\n}\n","const tokenize = require('../../../01-tokenizer')\n\n/** add these new terms to the end*/\nexports.append = function(str) {\n if (!str) {\n return this\n }\n // clear the cache\n this.uncache()\n //add it to end of every phrase\n this.list.forEach(p => {\n //build it\n let phrase = tokenize.fromText(str, this.world, this.pool())[0] //assume it's one sentence, for now\n //tag it\n let tmpDoc = this.buildFrom([phrase])\n tmpDoc.tagger()\n // push it onto the end\n p.append(phrase, this)\n })\n return this\n}\nexports.insertAfter = exports.append\nexports.insertAt = exports.append\n\n/** add these new terms to the front*/\nexports.prepend = function(str) {\n if (!str) {\n return this\n }\n // clear the cache\n this.uncache()\n //add it to start of every phrase\n this.list.forEach(p => {\n //build it\n let phrase = tokenize.fromText(str, this.world, this.pool())[0] //assume it's one sentence, for now\n //tag it\n let tmpDoc = this.buildFrom([phrase])\n tmpDoc.tagger()\n // add it to the start\n p.prepend(phrase, this)\n })\n return this\n}\nexports.insertBefore = exports.prepend\n\n/** add these new things to the end*/\nexports.concat = function() {\n // clear the cache\n this.uncache()\n let list = this.list.slice(0)\n //repeat for any number of params\n for (let i = 0; i < arguments.length; i++) {\n let arg = arguments[i]\n //support a fresh string\n if (typeof arg === 'string') {\n let arr = tokenize.fromText(arg, this.world)\n //TODO: phrase.tagger()?\n list = list.concat(arr)\n } else if (arg.isA === 'Doc') {\n list = list.concat(arg.list)\n } else if (arg.isA === 'Phrase') {\n list.push(arg)\n }\n }\n return this.buildFrom(list)\n}\n\n/** fully remove these terms from the document */\nexports.delete = function(match) {\n // clear the cache\n this.uncache()\n let toRemove = this\n if (match) {\n toRemove = this.match(match)\n }\n toRemove.list.forEach(phrase => phrase.delete(this))\n return this\n}\n// aliases\nexports.remove = exports.delete\n","/** return the document as text */\nexports.text = function(options) {\n options = options || {}\n //are we showing every phrase?\n let showFull = false\n if (this.parents().length === 0) {\n showFull = true\n }\n // cache roots, if necessary\n if (options === 'root' || (typeof options === 'object' && options.root)) {\n this.list.forEach(p => {\n p.terms().forEach(t => {\n if (t.root === null) {\n t.setRoot(this.world)\n }\n })\n })\n }\n\n return this.list.reduce((str, p, i) => {\n const trimPre = !showFull && i === 0\n const trimPost = !showFull && i === this.list.length - 1\n return str + p.text(options, trimPre, trimPost)\n }, '')\n}\n","const jsonDefaults = { text: true, terms: true, trim: true }\n\n// get all character startings in doc\nconst termOffsets = function(doc) {\n let elapsed = 0\n let index = 0\n let offsets = {}\n doc.termList().forEach(term => {\n offsets[term.id] = {\n index: index,\n start: elapsed + term.pre.length,\n length: term.text.length,\n }\n elapsed += term.pre.length + term.text.length + term.post.length\n index += 1\n })\n return offsets\n}\n\n/** pull out desired metadata from the document */\nexports.json = function(options = {}) {\n //support json(3) format\n if (typeof options === 'number' && this.list[options]) {\n return this.list[options].json(jsonDefaults)\n }\n options = Object.assign({}, jsonDefaults, options)\n\n // cache roots, if necessary\n if (options === 'root' || (typeof options === 'object' && options.root)) {\n this.list.forEach(p => {\n p.terms().forEach(t => {\n if (t.root === null) {\n t.setRoot(this.world)\n }\n })\n })\n }\n\n if (options.unique) {\n options.reduced = true\n }\n if (options.offset) {\n options.terms = options.terms === true ? {} : options.terms\n options.terms.offset = true\n }\n if (options.index || options.terms.index) {\n options.terms = options.terms === true ? {} : options.terms\n options.terms.id = true\n }\n let result = this.list.map(p => {\n return p.json(options, this.world)\n })\n // add offset and index data for each term\n if (options.terms.offset || options.offset || options.terms.index || options.index) {\n // calculate them, (from beginning of doc)\n let offsets = termOffsets(this.all())\n // add index values\n if (options.terms.index || options.index) {\n result.forEach(o => {\n o.terms.forEach(t => {\n t.index = offsets[t.id].index\n })\n o.index = o.terms[0].index\n })\n }\n // add offset values\n if (options.terms.offset || options.offset) {\n result.forEach(o => {\n o.terms.forEach(t => {\n t.offset = offsets[t.id] || {}\n })\n let len = o.terms.reduce((n, t) => {\n n += t.offset.length || 0\n return n\n }, 0)\n o.offset = o.terms[0].offset\n o.offset.length = len\n })\n }\n }\n // add frequency #s\n if (options.frequency || options.freq || options.count) {\n let obj = {}\n this.list.forEach(p => {\n let str = p.text('reduced')\n obj[str] = obj[str] || 0\n obj[str] += 1\n })\n this.list.forEach((p, i) => {\n result[i].count = obj[p.text('reduced')]\n })\n }\n // remove duplicates\n if (options.unique) {\n let already = {}\n result = result.filter(o => {\n if (already[o.reduced] === true) {\n return false\n }\n already[o.reduced] = true\n return true\n })\n }\n return result\n}\n\n//aliases\nexports.data = exports.json\n","const entity = ['Person', 'Place', 'Organization']\n\nmodule.exports = {\n Noun: {\n notA: ['Verb', 'Adjective', 'Adverb'],\n },\n // - singular\n Singular: {\n isA: 'Noun',\n notA: 'Plural',\n },\n //a specific thing that's capitalized\n ProperNoun: {\n isA: 'Noun',\n },\n\n // -- people\n Person: {\n isA: ['ProperNoun', 'Singular'],\n notA: ['Place', 'Organization'],\n },\n FirstName: {\n isA: 'Person',\n },\n MaleName: {\n isA: 'FirstName',\n notA: ['FemaleName', 'LastName'],\n },\n FemaleName: {\n isA: 'FirstName',\n notA: ['MaleName', 'LastName'],\n },\n LastName: {\n isA: 'Person',\n notA: ['FirstName'],\n },\n Honorific: {\n isA: 'Noun',\n notA: ['FirstName', 'LastName'],\n },\n\n // -- places\n Place: {\n isA: 'Singular',\n notA: ['Person', 'Organization'],\n },\n Country: {\n isA: ['Place', 'ProperNoun'],\n notA: ['City'],\n },\n City: {\n isA: ['Place', 'ProperNoun'],\n notA: ['Country'],\n },\n Region: {\n isA: ['Place', 'ProperNoun'],\n },\n Address: {\n isA: 'Place',\n },\n\n //---Orgs---\n Organization: {\n isA: ['Singular', 'ProperNoun'],\n notA: ['Person', 'Place'],\n },\n SportsTeam: {\n isA: 'Organization',\n },\n School: {\n isA: 'Organization',\n },\n Company: {\n isA: 'Organization',\n },\n\n // - plural\n Plural: {\n isA: 'Noun',\n notA: ['Singular'],\n },\n //(not plural or singular)\n Uncountable: {\n isA: 'Noun',\n },\n Pronoun: {\n isA: 'Noun',\n notA: entity,\n },\n //a word for someone doing something -'plumber'\n Actor: {\n isA: 'Noun',\n notA: entity,\n },\n //a gerund-as-noun - 'swimming'\n Activity: {\n isA: 'Noun',\n notA: ['Person', 'Place'],\n },\n //'kilograms'\n Unit: {\n isA: 'Noun',\n notA: entity,\n },\n //'Canadians'\n Demonym: {\n isA: ['Noun', 'ProperNoun'],\n notA: entity,\n },\n //`john's`\n Possessive: {\n isA: 'Noun',\n // notA: 'Pronoun',\n },\n}\n","module.exports = {\n Verb: {\n notA: ['Noun', 'Adjective', 'Adverb', 'Value'],\n },\n // walks\n PresentTense: {\n isA: 'Verb',\n notA: ['PastTense', 'Copula', 'FutureTense'],\n },\n // neutral form - 'walk'\n Infinitive: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Gerund'],\n },\n // walking\n Gerund: {\n isA: 'PresentTense',\n notA: ['PastTense', 'Copula', 'FutureTense'],\n },\n // walked\n PastTense: {\n isA: 'Verb',\n notA: ['FutureTense'],\n },\n // will walk\n FutureTense: {\n isA: 'Verb',\n },\n\n // is\n Copula: {\n isA: 'Verb',\n },\n // would have\n Modal: {\n isA: 'Verb',\n notA: ['Infinitive'],\n },\n // had walked\n PerfectTense: {\n isA: 'Verb',\n notA: 'Gerund',\n },\n Pluperfect: {\n isA: 'Verb',\n },\n // shown\n Participle: {\n isA: 'Verb',\n },\n // show up\n PhrasalVerb: {\n isA: 'Verb',\n },\n //'up' part\n Particle: {\n isA: 'PhrasalVerb',\n },\n}\n","module.exports = {\n Value: {\n notA: ['Verb', 'Adjective', 'Adverb'],\n },\n Ordinal: {\n isA: 'Value',\n notA: ['Cardinal'],\n },\n Cardinal: {\n isA: 'Value',\n notA: ['Ordinal'],\n },\n RomanNumeral: {\n isA: 'Cardinal', //can be a person, too\n notA: ['Ordinal', 'TextValue'],\n },\n TextValue: {\n isA: 'Value',\n notA: ['NumericValue'],\n },\n NumericValue: {\n isA: 'Value',\n notA: ['TextValue'],\n },\n Money: {\n isA: 'Cardinal',\n },\n Percent: {\n isA: 'Value',\n },\n}\n","const anything = ['Noun', 'Verb', 'Adjective', 'Adverb', 'Value']\n\nmodule.exports = {\n //--Adjectives--\n Adjective: {\n notA: ['Noun', 'Verb', 'Adverb', 'Value'],\n },\n // adjectives that can conjugate\n Comparable: {\n isA: ['Adjective'],\n },\n // better\n Comparative: {\n isA: ['Adjective'],\n },\n // best\n Superlative: {\n isA: ['Adjective'],\n notA: ['Comparative'],\n },\n\n NumberRange: {\n isA: ['Contraction'],\n },\n Adverb: {\n notA: ['Noun', 'Verb', 'Adjective', 'Value'],\n },\n\n // Dates:\n //not a noun, but usually is\n Date: {\n notA: ['Verb', 'Conjunction', 'Adverb', 'Preposition', 'Adjective'],\n },\n Month: {\n isA: ['Date', 'Singular'],\n notA: ['Year', 'WeekDay', 'Time'],\n },\n WeekDay: {\n isA: ['Date', 'Noun'],\n },\n\n //glue\n Determiner: {\n notA: anything,\n },\n Conjunction: {\n notA: anything,\n },\n Preposition: {\n notA: anything,\n },\n\n // what, who, why\n QuestionWord: {\n notA: ['Determiner'],\n },\n\n // peso, euro\n Currency: {},\n // ughh\n Expression: {\n notA: ['Noun', 'Adjective', 'Verb', 'Adverb'],\n },\n // dr.\n Abbreviation: {},\n\n // internet tags\n Url: {\n notA: ['HashTag', 'PhoneNumber', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n },\n PhoneNumber: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention', 'Email'],\n },\n HashTag: {},\n AtMention: {\n isA: ['Noun'],\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'Email'],\n },\n Emoji: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n Emoticon: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n Email: {\n notA: ['HashTag', 'Verb', 'Adjective', 'Value', 'AtMention'],\n },\n\n //non-exclusive\n Auxiliary: {\n notA: ['Noun', 'Adjective', 'Value'],\n },\n Acronym: {\n notA: ['Plural', 'RomanNumeral'],\n },\n Negative: {\n notA: ['Noun', 'Adjective', 'Value'],\n },\n // if, unless, were\n Condition: {\n notA: ['Verb', 'Adjective', 'Noun', 'Value'],\n },\n}\n","// i just made these up\nconst colorMap = {\n Noun: 'blue',\n\n Verb: 'green',\n Negative: 'green',\n\n Date: 'red',\n Value: 'red',\n\n Adjective: 'magenta',\n\n Preposition: 'cyan',\n Conjunction: 'cyan',\n Determiner: 'cyan',\n Adverb: 'cyan',\n}\n\n/** add a debug color to some tags */\nconst addColors = function(tags) {\n Object.keys(tags).forEach(k => {\n if (colorMap[k]) {\n tags[k].color = colorMap[k]\n return\n }\n tags[k].isA.some(t => {\n if (colorMap[t]) {\n tags[k].color = colorMap[t]\n return true\n }\n return false\n })\n })\n return tags\n}\n\nmodule.exports = addColors\n","const unique = function(arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i)\n}\n\n//add 'downward' tags (that immediately depend on this one)\nconst inferIsA = function(tags) {\n Object.keys(tags).forEach(k => {\n let tag = tags[k]\n let len = tag.isA.length\n for (let i = 0; i < len; i++) {\n let down = tag.isA[i]\n if (tags[down]) {\n tag.isA = tag.isA.concat(tags[down].isA)\n }\n }\n // clean it up\n tag.isA = unique(tag.isA)\n })\n return tags\n}\nmodule.exports = inferIsA\n","const unique = function(arr) {\n return arr.filter((v, i, a) => a.indexOf(v) === i)\n}\n\n// crawl the tag-graph and infer any conflicts\n// faster than doing this at tag-time\nconst inferNotA = function(tags) {\n let keys = Object.keys(tags)\n keys.forEach(k => {\n let tag = tags[k]\n tag.notA = tag.notA || []\n tag.isA.forEach(down => {\n if (tags[down] && tags[down].notA) {\n // borrow its conflicts\n let notA = typeof tags[down].notA === 'string' ? [tags[down].isA] : tags[down].notA || []\n tag.notA = tag.notA.concat(notA)\n }\n })\n // any tag that lists us as a conflict, we conflict it back.\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (tags[key].notA.indexOf(k) !== -1) {\n tag.notA.push(key)\n }\n }\n // clean it up\n tag.notA = unique(tag.notA)\n })\n return tags\n}\nmodule.exports = inferNotA\n","// a lineage is all 'incoming' tags that have this as 'isA'\nconst inferLineage = function(tags) {\n let keys = Object.keys(tags)\n keys.forEach(k => {\n let tag = tags[k]\n tag.lineage = []\n // find all tags with it in their 'isA' set\n for (let i = 0; i < keys.length; i++) {\n if (tags[keys[i]].isA.indexOf(k) !== -1) {\n tag.lineage.push(keys[i])\n }\n }\n })\n return tags\n}\nmodule.exports = inferLineage\n","const inferColor = require('./_color')\nconst inferIsA = require('./_isA')\nconst inferNotA = require('./_notA')\nconst lineage = require('./_lineage')\n\nconst validate = function(tags) {\n // cleanup format\n Object.keys(tags).forEach(k => {\n let tag = tags[k]\n // ensure isA is an array\n tag.isA = tag.isA || []\n if (typeof tag.isA === 'string') {\n tag.isA = [tag.isA]\n }\n // ensure notA is an array\n tag.notA = tag.notA || []\n if (typeof tag.notA === 'string') {\n tag.notA = [tag.notA]\n }\n })\n return tags\n}\n\n// build-out the tag-graph structure\nconst inferTags = function(tags) {\n // validate data\n tags = validate(tags)\n // build its 'down tags'\n tags = inferIsA(tags)\n // infer the conflicts\n tags = inferNotA(tags)\n // debug tag color\n tags = inferColor(tags)\n // find incoming links\n tags = lineage(tags)\n return tags\n}\nmodule.exports = inferTags\n","const nouns = require('./tags/nouns')\nconst verbs = require('./tags/verbs')\nconst values = require('./tags/values')\nconst misc = require('./tags/misc')\nconst inferTags = require('./inference/index')\n\n//extend tagset with new tags\nconst addIn = function(obj, tags) {\n Object.keys(obj).forEach(k => {\n tags[k] = obj[k]\n })\n}\n\nconst build = () => {\n let tags = {}\n addIn(nouns, tags)\n addIn(verbs, tags)\n addIn(values, tags)\n addIn(misc, tags)\n // do the graph-stuff\n tags = inferTags(tags)\n return tags\n}\nmodule.exports = build()\n","const tagset = require('../../world/tags')\n\n// https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color\nconst reset = '\\x1b[0m'\n\nconst padEnd = function(str, width) {\n str = str.toString()\n while (str.length < width) {\n str += ' '\n }\n return str\n}\n\n//cheaper than requiring chalk\nconst cli = {\n green: function(str) {\n return '\\x1b[32m' + str + reset\n },\n red: function(str) {\n return '\\x1b[31m' + str + reset\n },\n blue: function(str) {\n return '\\x1b[34m' + str + reset\n },\n magenta: function(str) {\n return '\\x1b[35m' + str + reset\n },\n cyan: function(str) {\n return '\\x1b[36m' + str + reset\n },\n yellow: function(str) {\n return '\\x1b[33m' + str + reset\n },\n black: function(str) {\n return '\\x1b[30m' + str + reset\n },\n}\n\nconst tagString = function(tags) {\n tags = tags.map(tag => {\n if (!tagset.hasOwnProperty(tag)) {\n return tag\n }\n const c = tagset[tag].color || 'blue'\n return cli[c](tag)\n })\n return tags.join(', ')\n}\n\n//output some helpful stuff to the console\nconst debug = function(doc) {\n console.log(cli.blue('====='))\n doc.list.forEach(p => {\n console.log(cli.blue(' -----'))\n p.terms().forEach(t => {\n let tags = Object.keys(t.tags)\n let text = t.text || '-'\n if (t.implicit) {\n text = '[' + t.implicit + ']'\n }\n if (typeof module !== undefined) {\n text = cli.yellow(text)\n }\n let word = \"'\" + text + \"'\"\n word = padEnd(word, 18)\n let str = cli.blue(' | ') + word + ' - ' + tagString(tags)\n console.log(str)\n })\n })\n console.log('')\n return doc\n}\nmodule.exports = debug\n","const topk = function(doc) {\n let list = doc.json({ text: false, terms: false, reduced: true })\n // combine them\n let obj = {}\n list.forEach(o => {\n if (!obj[o.reduced]) {\n o.count = 0\n obj[o.reduced] = o\n }\n obj[o.reduced].count += 1\n })\n let arr = Object.keys(obj).map(k => obj[k])\n // sort them\n arr.sort((a, b) => {\n if (a.count > b.count) {\n return -1\n } else if (a.count < b.count) {\n return 1\n }\n return 0\n })\n return arr\n}\nmodule.exports = topk\n","const debug = require('../_debug')\nconst topk = require('./_topk')\n\n/** pretty-print the current document and its tags */\nexports.debug = function() {\n debug(this)\n return this\n}\n\n/** some named output formats */\nexports.out = function(method) {\n if (method === 'text') {\n return this.text()\n }\n if (method === 'normal') {\n return this.text('normal')\n }\n if (method === 'json') {\n return this.json()\n }\n if (method === 'offset' || method === 'offsets') {\n return this.json({ offset: true })\n }\n if (method === 'array') {\n return this.json({ terms: false }).map(obj => obj.text)\n }\n if (method === 'freq' || method === 'frequency') {\n return topk(this)\n }\n if (method === 'terms') {\n let list = []\n this.json({ text: false, terms: { text: true } }).forEach(obj => {\n let terms = obj.terms.map(t => t.text)\n terms = terms.filter(t => t)\n list = list.concat(terms)\n })\n return list\n }\n if (method === 'tags') {\n return this.list.map(p => {\n return p.terms().reduce((h, t) => {\n h[t.clean || t.implicit] = Object.keys(t.tags)\n return h\n }, {})\n })\n }\n if (method === 'debug') {\n debug(this)\n return this\n }\n return this.text()\n}\n","// compress a list of things by frequency\nconst topk = function(list) {\n let counts = {}\n list.forEach(a => {\n counts[a] = counts[a] || 0\n counts[a] += 1\n })\n let arr = Object.keys(counts)\n arr = arr.sort((a, b) => {\n if (counts[a] > counts[b]) {\n return -1\n } else {\n return 1\n }\n })\n // arr = arr.filter(a => counts[a] > 1)\n return arr.map(a => [a, counts[a]])\n}\n\n// remove implied tags, like 'Noun' when we have 'Plural'\nconst reduceTags = function(tags, world) {\n let tagset = world.tags\n let implied = []\n tags.forEach(tag => {\n if (tagset[tag] && tagset[tag].isA) {\n implied = implied.concat(tagset[tag].isA)\n }\n })\n implied = implied.reduce((h, tag) => {\n h[tag] = true\n return h\n }, {})\n tags = tags.filter(tag => !implied[tag])\n // tags\n return tags\n}\n\n/** store a parsed document for later use */\nexports.export = function() {\n let phraseList = this.json({ text: true, trim: false, terms: { tags: true, whitespace: true } })\n // let phraseList = json.map(p => p.terms)\n let allTags = []\n phraseList.forEach(p => {\n p.terms.forEach(t => {\n // reduce redundant tags\n let tags = reduceTags(t.tags, this.world)\n allTags = allTags.concat(tags)\n })\n })\n // compress the top tags\n allTags = topk(allTags)\n let tagMap = {}\n allTags.forEach((a, i) => {\n tagMap[a[0]] = i\n })\n\n //use index numbers instead of redundant tag-names\n phraseList = phraseList.map(p => {\n let terms = p.terms.map(term => {\n let tags = term.tags\n tags = reduceTags(tags, this.world)\n tags = tags.map(tag => tagMap[tag])\n tags = tags.join(',')\n return tags\n })\n terms = terms.join('|')\n return [p.text, terms]\n })\n\n return {\n tags: Object.keys(tagMap),\n // words: {},\n list: phraseList,\n }\n}\n","const methods = {\n /** alphabetical order */\n alpha: (a, b) => {\n let left = a.text('clean')\n let right = b.text('clean')\n if (left < right) {\n return -1\n }\n if (left > right) {\n return 1\n }\n return 0\n },\n\n /** count the # of characters of each match */\n length: (a, b) => {\n let left = a.text().trim().length\n let right = b.text().trim().length\n if (left < right) {\n return 1\n }\n if (left > right) {\n return -1\n }\n return 0\n },\n\n /** count the # of terms in each match */\n wordCount: (a, b) => {\n let left = a.wordCount()\n let right = b.wordCount()\n if (left < right) {\n return 1\n }\n if (left > right) {\n return -1\n }\n return 0\n },\n}\n\n/** sort by # of duplicates in the document*/\nconst byFreq = function(doc) {\n let counts = {}\n const options = {\n case: true,\n punctuation: false,\n whitespace: true,\n unicode: true,\n }\n doc.list.forEach(p => {\n let str = p.text(options)\n counts[str] = counts[str] || 0\n counts[str] += 1\n })\n // sort by freq\n doc.list.sort((a, b) => {\n let left = counts[a.text(options)]\n let right = counts[b.text(options)]\n if (left < right) {\n return 1\n }\n if (left > right) {\n return -1\n }\n return 0\n })\n return doc\n}\n\n// order results 'chronologically', or document-order\nconst sortSequential = function(doc) {\n let order = {}\n doc.json({ terms: { offset: true } }).forEach(o => {\n order[o.terms[0].id] = o.terms[0].offset.start\n })\n doc.list = doc.list.sort((a, b) => {\n if (order[a.start] > order[b.start]) {\n return 1\n } else if (order[a.start] < order[b.start]) {\n return -1\n }\n return 0\n })\n return doc\n}\n\n//aliases\nmethods.alphabetical = methods.alpha\nmethods.wordcount = methods.wordCount\n\n// aliases for sequential ordering\nconst seqNames = {\n index: true,\n sequence: true,\n seq: true,\n sequential: true,\n chron: true,\n chronological: true,\n}\n\n/** re-arrange the order of the matches (in place) */\nexports.sort = function(input) {\n input = input || 'alpha'\n //do this one up-front\n if (input === 'freq' || input === 'frequency' || input === 'topk') {\n return byFreq(this)\n }\n if (seqNames.hasOwnProperty(input)) {\n return sortSequential(this)\n }\n\n input = methods[input] || input\n // apply sort method on each phrase\n if (typeof input === 'function') {\n this.list = this.list.sort(input)\n return this\n }\n return this\n}\n\n/** reverse the order of the matches, but not the words */\nexports.reverse = function() {\n let list = [].concat(this.list)\n list = list.reverse()\n return this.buildFrom(list)\n}\n\n/** remove any duplicate matches */\nexports.unique = function() {\n let list = [].concat(this.list)\n let obj = {}\n list = list.filter(p => {\n let str = p.text('reduced').trim()\n if (obj.hasOwnProperty(str) === true) {\n return false\n }\n obj[str] = true\n return true\n })\n return this.buildFrom(list)\n}\n","const killUnicode = require('../../../Term/normalize/unicode')\nconst isPunct = /[\\[\\]{}⟨⟩:,،、‒–—―…‹›«»‐\\-;\\/⁄·*\\•^†‡°¡¿※№÷׺ª%‰=‱¶§~|‖¦©℗®℠™¤₳฿]/g\nconst quotes = /['‘’“”\"′″‴]+/g\n\nconst methods = {\n // cleanup newlines and extra spaces\n whitespace: function(doc) {\n let termArr = doc.list.map(ts => ts.terms())\n termArr.forEach((terms, o) => {\n terms.forEach((t, i) => {\n // keep dashes between words\n if (t.hasDash() === true) {\n t.post = ' - '\n return\n }\n // remove existing spaces\n t.pre = t.pre.replace(/\\s/g, '')\n t.post = t.post.replace(/\\s/g, '')\n //last word? ensure there's a next sentence.\n if (terms.length - 1 === i && !termArr[o + 1]) {\n return\n }\n // no extra spaces for contractions\n if (t.implicit && Boolean(t.text) === true) {\n return\n }\n // no extra spaces for hyphenated words\n if (t.hasHyphen() === true) {\n return\n }\n\n t.post += ' '\n })\n })\n },\n\n punctuation: function(termList) {\n termList.forEach(t => {\n // space between hyphenated words\n if (t.hasHyphen() === true) {\n t.post = ' '\n }\n t.pre = t.pre.replace(isPunct, '')\n t.post = t.post.replace(isPunct, '')\n // elipses\n t.post = t.post.replace(/\\.\\.\\./, '')\n // only allow one exclamation\n if (/!/.test(t.post) === true) {\n t.post = t.post.replace(/!/g, '')\n t.post = '!' + t.post\n }\n // only allow one question mark\n if (/\\?/.test(t.post) === true) {\n t.post = t.post.replace(/[\\?!]*/, '')\n t.post = '?' + t.post\n }\n })\n },\n\n unicode: function(termList) {\n termList.forEach(t => {\n if (t.isImplicit() === true) {\n return\n }\n t.text = killUnicode(t.text)\n })\n },\n\n quotations: function(termList) {\n termList.forEach(t => {\n t.post = t.post.replace(quotes, '')\n t.pre = t.pre.replace(quotes, '')\n })\n },\n\n adverbs: function(doc) {\n doc\n .match('#Adverb')\n .not('(not|nary|seldom|never|barely|almost|basically|so)')\n .remove()\n },\n\n // remove the '.' from 'Mrs.' (safely)\n abbreviations: function(doc) {\n doc.list.forEach(ts => {\n let terms = ts.terms()\n terms.forEach((t, i) => {\n if (t.tags.Abbreviation === true && terms[i + 1]) {\n t.post = t.post.replace(/^\\./, '')\n }\n })\n })\n },\n}\nmodule.exports = methods\n","const methods = require('./_methods')\n\nconst defaults = {\n // light\n whitespace: true,\n unicode: true,\n punctuation: true,\n emoji: true,\n acronyms: true,\n abbreviations: true,\n\n // medium\n case: false,\n contractions: false,\n parentheses: false,\n quotations: false,\n adverbs: false,\n\n // heavy (loose legibility)\n possessives: false,\n verbs: false,\n nouns: false,\n honorifics: false,\n\n // pronouns: true,\n}\nconst mapping = {\n light: {},\n medium: { case: true, contractions: true, parentheses: true, quotations: true, adverbs: true },\n}\nmapping.heavy = Object.assign({}, mapping.medium, { possessives: true, verbs: true, nouns: true, honorifics: true })\n\n/** common ways to clean-up the document, and reduce noise */\nexports.normalize = function(options) {\n options = options || {}\n // support named forms\n if (typeof options === 'string') {\n options = mapping[options] || {}\n }\n // set defaults\n options = Object.assign({}, defaults, options)\n // clear the cache\n this.uncache()\n\n let termList = this.termList()\n\n // lowercase things\n if (options.case) {\n this.toLowerCase()\n }\n\n //whitespace\n if (options.whitespace) {\n methods.whitespace(this)\n }\n\n // unicode: é -> e\n if (options.unicode) {\n methods.unicode(termList)\n }\n\n //punctuation - keep sentence punctation, quotes, parenths\n if (options.punctuation) {\n methods.punctuation(termList)\n }\n\n // remove ':)'\n if (options.emoji) {\n this.remove('(#Emoji|#Emoticon)')\n }\n\n // 'f.b.i.' -> 'FBI'\n if (options.acronyms) {\n this.acronyms().strip()\n // .toUpperCase()\n }\n // remove period from abbreviations\n if (options.abbreviations) {\n methods.abbreviations(this)\n }\n\n // --Medium methods--\n\n // `isn't` -> 'is not'\n if (options.contraction || options.contractions) {\n this.contractions().expand()\n }\n\n // '(word)' -> 'word'\n if (options.parentheses) {\n this.parentheses().unwrap()\n }\n // remove \"\" punctuation\n if (options.quotations || options.quotes) {\n methods.quotations(termList)\n }\n\n // remove any un-necessary adverbs\n if (options.adverbs) {\n methods.adverbs(this)\n }\n\n // --Heavy methods--\n\n // `cory hart's -> cory hart'\n if (options.possessive || options.possessives) {\n this.possessives().strip()\n }\n // 'he walked' -> 'he walk'\n if (options.verbs) {\n this.verbs().toInfinitive()\n }\n // 'three dogs' -> 'three dog'\n if (options.nouns || options.plurals) {\n this.nouns().toSingular()\n }\n // remove 'Mr.' from 'Mr John Smith'\n if (options.honorifics) {\n this.remove('#Honorific')\n }\n\n return this\n}\n","const parseSyntax = require('../../match/syntax')\n\n/** return a Document with three parts for every match\n * seperate everything before the word, as a new phrase\n */\nexports.splitOn = function(reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent()\n return parent.splitOn(this)\n }\n //start looking for a match..\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n let foundEm = p.match(regs)\n //no match here, add full sentence\n if (foundEm.length === 0) {\n matches.push(p)\n return\n }\n // we found something here.\n let carry = p\n foundEm.forEach(found => {\n let parts = carry.splitOn(found)\n // add em in\n if (parts.before) {\n matches.push(parts.before)\n }\n if (parts.match) {\n matches.push(parts.match)\n }\n // start matching now on the end\n carry = parts.after\n })\n // add that last part\n if (carry) {\n matches.push(carry)\n }\n })\n return this.buildFrom(matches)\n}\n\n/** return a Document with two parts for every match\n * seperate everything after the word, as a new phrase\n */\nexports.splitAfter = function(reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent()\n return parent.splitAfter(this)\n }\n // start looking for our matches\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n let foundEm = p.match(regs)\n //no match here, add full sentence\n if (foundEm.length === 0) {\n matches.push(p)\n return\n }\n // we found something here.\n let carry = p\n foundEm.forEach(found => {\n let parts = carry.splitOn(found)\n // add em in\n if (parts.before && parts.match) {\n // merge these two together\n parts.before.length += parts.match.length\n matches.push(parts.before)\n } else if (parts.match) {\n matches.push(parts.match)\n }\n // start matching now on the end\n carry = parts.after\n })\n // add that last part\n if (carry) {\n matches.push(carry)\n }\n })\n return this.buildFrom(matches)\n}\nexports.split = exports.splitAfter //i guess?\n\n/** return a Document with two parts for every match */\nexports.splitBefore = function(reg) {\n // if there's no match, split parent, instead\n if (!reg) {\n let parent = this.parent()\n return parent.splitBefore(this)\n }\n //start looking for a match..\n let regs = parseSyntax(reg)\n let matches = []\n this.list.forEach(p => {\n let foundEm = p.match(regs)\n //no match here, add full sentence\n if (foundEm.length === 0) {\n matches.push(p)\n return\n }\n // we found something here.\n let carry = p\n foundEm.forEach(found => {\n let parts = carry.splitOn(found)\n // add before part in\n if (parts.before) {\n matches.push(parts.before)\n }\n // merge match+after\n if (parts.match && parts.after) {\n parts.match.length += parts.after.length\n }\n // start matching now on the end\n carry = parts.match\n })\n // add that last part\n if (carry) {\n matches.push(carry)\n }\n })\n return this.buildFrom(matches)\n}\n\n/** split a document into labeled sections */\nexports.segment = function(regs, options) {\n regs = regs || {}\n options = options || { text: true }\n let doc = this\n let keys = Object.keys(regs)\n // split em\n keys.forEach(k => {\n doc = doc.splitOn(k)\n })\n //add labels for each section\n doc.list.forEach(p => {\n for (let i = 0; i < keys.length; i += 1) {\n if (p.has(keys[i])) {\n p.segment = regs[keys[i]]\n return\n }\n }\n })\n return doc.list.map(p => {\n let res = p.json(options)\n res.segment = p.segment || null\n return res\n })\n}\n","const eachTerm = function(doc, fn) {\n let world = doc.world\n doc.list.forEach(p => {\n p.terms().forEach(t => t[fn](world))\n })\n return doc\n}\n\n/** turn every letter of every term to lower-cse */\nexports.toLowerCase = function() {\n return eachTerm(this, 'toLowerCase')\n}\n\n/** turn every letter of every term to upper case */\nexports.toUpperCase = function() {\n return eachTerm(this, 'toUpperCase')\n}\n\n/** upper-case the first letter of each term */\nexports.toTitleCase = function() {\n this.tag('TitleCase')\n return eachTerm(this, 'toTitleCase')\n}\n/** remove whitespace and title-case each term */\nexports.toCamelCase = function() {\n this.list.forEach(p => {\n //remove whitespace\n let terms = p.terms()\n terms.forEach((t, i) => {\n if (i !== 0) {\n t.toTitleCase()\n }\n if (i !== terms.length - 1) {\n t.post = ''\n }\n })\n })\n // this.tag('#CamelCase', 'toCamelCase')\n return this\n}\n","/** add this punctuation or whitespace before each match: */\nexports.pre = function(str) {\n if (str === undefined) {\n return this.list[0].terms(0).pre\n }\n this.list.forEach(p => {\n let term = p.terms(0)\n term.pre = str\n })\n return this\n}\n\n/** add this punctuation or whitespace after each match: */\nexports.post = function(str) {\n // return array of post strings\n if (str === undefined) {\n return this.list.map(p => {\n let terms = p.terms()\n let term = terms[terms.length - 1]\n return term.post\n })\n }\n // set post string on all ends\n this.list.forEach(p => {\n let terms = p.terms()\n let term = terms[terms.length - 1]\n term.post = str\n })\n return this\n}\n\n/** remove start and end whitespace */\nexports.trim = function() {\n this.list = this.list.map(p => p.trim())\n return this\n}\n\n/** connect words with hyphen, and remove whitespace */\nexports.hyphenate = function() {\n this.list.forEach(p => {\n let terms = p.terms()\n //remove whitespace\n terms.forEach((t, i) => {\n if (i !== 0) {\n t.pre = ''\n }\n if (terms[i + 1]) {\n t.post = '-'\n }\n })\n })\n return this\n}\n\n/** remove hyphens between words, and set whitespace */\nexports.dehyphenate = function() {\n const hasHyphen = /(-|–|—)/\n this.list.forEach(p => {\n let terms = p.terms()\n //remove whitespace\n terms.forEach(t => {\n if (hasHyphen.test(t.post)) {\n t.post = ' '\n }\n })\n })\n return this\n}\nexports.deHyphenate = exports.dehyphenate\n\n/** add quotations around these matches */\nexports.toQuotations = function(start, end) {\n start = start || `\"`\n end = end || `\"`\n this.list.forEach(p => {\n let terms = p.terms()\n terms[0].pre = start + terms[0].pre\n let last = terms[terms.length - 1]\n last.post = end + last.post\n })\n return this\n}\nexports.toQuotation = exports.toQuotations\n\n/** add brackets around these matches */\nexports.toParentheses = function(start, end) {\n start = start || `(`\n end = end || `)`\n this.list.forEach(p => {\n let terms = p.terms()\n terms[0].pre = start + terms[0].pre\n let last = terms[terms.length - 1]\n last.post = end + last.post\n })\n return this\n}\n","/** make all phrases into one phrase */\nexports.join = function(str) {\n // clear the cache\n this.uncache()\n // make one large phrase - 'main'\n let main = this.list[0]\n let before = main.length\n let removed = {}\n for (let i = 1; i < this.list.length; i++) {\n const p = this.list[i]\n removed[p.start] = true\n let term = main.lastTerm()\n // add whitespace between them\n if (str) {\n term.post += str\n }\n // main -> p\n term.next = p.start\n // main <- p\n p.terms(0).prev = term.id\n main.length += p.length\n }\n\n // parents are bigger than than their children.\n // when we increase a child, we increase their parent too.\n let increase = main.length - before\n this.parents().forEach(doc => {\n // increase length on each effected phrase\n doc.list.forEach(p => {\n let terms = p.terms()\n for (let i = 0; i < terms.length; i++) {\n if (terms[i].id === main.start) {\n p.length += increase\n break\n }\n }\n })\n // remove redundant phrases now\n doc.list = doc.list.filter(p => removed[p.start] !== true)\n })\n // return one major phrase\n return this.buildFrom([main])\n}\n","const postPunct = /[,\\)\"';:\\-–—\\.…]/\n// const irregulars = {\n// 'will not': `won't`,\n// 'i am': `i'm`,\n// }\n\nconst setContraction = function(m, suffix) {\n if (!m.found) {\n return\n }\n let terms = m.termList()\n //avoid any problematic punctuation\n for (let i = 0; i < terms.length - 1; i++) {\n const t = terms[i]\n if (postPunct.test(t.post)) {\n return\n }\n }\n\n // set them as implict\n terms.forEach(t => {\n t.implicit = t.clean\n })\n // perform the contraction\n terms[0].text += suffix\n // clean-up the others\n terms.slice(1).forEach(t => {\n t.text = ''\n })\n for (let i = 0; i < terms.length - 1; i++) {\n const t = terms[i]\n t.post = t.post.replace(/ /, '')\n }\n}\n\n/** turn 'i am' into i'm */\nexports.contract = function() {\n let doc = this.not('@hasContraction')\n // we are -> we're\n let m = doc.match('(we|they|you) are')\n setContraction(m, `'re`)\n // they will -> they'll\n m = doc.match('(he|she|they|it|we|you) will')\n setContraction(m, `'ll`)\n // she is -> she's\n m = doc.match('(he|she|they|it|we) is')\n setContraction(m, `'s`)\n // spencer is -> spencer's\n m = doc.match('#Person is')\n setContraction(m, `'s`)\n // spencer would -> spencer'd\n m = doc.match('#Person would')\n setContraction(m, `'d`)\n // would not -> wouldn't\n m = doc.match('(is|was|had|would|should|could|do|does|have|has|can) not')\n setContraction(m, `n't`)\n // i have -> i've\n m = doc.match('(i|we|they) have')\n setContraction(m, `'ve`)\n // would have -> would've\n m = doc.match('(would|should|could) have')\n setContraction(m, `'ve`)\n // i am -> i'm\n m = doc.match('i am')\n setContraction(m, `'m`)\n // going to -> gonna\n m = doc.match('going to')\n return this\n}\n","module.exports = Object.assign(\n {},\n require('./01-utils'),\n require('./02-accessors'),\n require('./03-match'),\n require('./04-tag'),\n require('./05-loops'),\n require('./06-lookup'),\n\n require('./insert/01-replace'),\n require('./insert/02-insert'),\n\n require('./output/01-text'),\n require('./output/02-json'),\n require('./output/03-out'),\n require('./output/04-export'),\n\n require('./transform/01-sort'),\n require('./transform/02-normalize'),\n require('./transform/03-split'),\n require('./transform/04-case'),\n require('./transform/05-whitespace'),\n require('./transform/06-join'),\n require('./transform/07-contract')\n)\n","let methods = {}\n\n// allow helper methods like .adjectives() and .adverbs()\nconst arr = [\n ['terms', '.'],\n ['hyphenated', '@hasHyphen .'],\n ['adjectives', '#Adjective'],\n ['hashTags', '#HashTag'],\n ['emails', '#Email'],\n ['emoji', '#Emoji'],\n ['emoticons', '#Emoticon'],\n ['atMentions', '#AtMention'],\n ['urls', '#Url'],\n ['adverbs', '#Adverb'],\n ['pronouns', '#Pronoun'],\n ['conjunctions', '#Conjunction'],\n ['prepositions', '#Preposition'],\n]\narr.forEach(a => {\n methods[a[0]] = function(n) {\n let m = this.match(a[1])\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n }\n})\n// aliases\nmethods.emojis = methods.emoji\nmethods.atmentions = methods.atMentions\nmethods.words = methods.terms\n\n/** return anything tagged as a phone number */\nmethods.phoneNumbers = function(n) {\n let m = this.splitAfter('@hasComma')\n m = m.match('#PhoneNumber+')\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n}\n\n/** money + currency pair */\nmethods.money = function(n) {\n let m = this.match('#Money #Currency?')\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n}\n\n/** return all cities, countries, addresses, and regions */\nmethods.places = function(n) {\n // don't split 'paris, france'\n let keep = this.match('(#City && @hasComma) (#Region|#Country)')\n // but split the other commas\n let m = this.not(keep).splitAfter('@hasComma')\n // combine them back together\n m = m.concat(keep)\n m.sort('index')\n m = m.match('#Place+')\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n}\n\n/** return all schools, businesses and institutions */\nmethods.organizations = function(n) {\n let m = this.clauses()\n m = m.match('#Organization+')\n if (typeof n === 'number') {\n m = m.get(n)\n }\n return m\n}\n\n//combine them with .topics() method\nmethods.entities = function(n) {\n let r = this.clauses()\n // Find people, places, and organizations\n let yup = r.people()\n yup = yup.concat(r.places())\n yup = yup.concat(r.organizations())\n let ignore = ['someone', 'man', 'woman', 'mother', 'brother', 'sister', 'father']\n yup = yup.not(ignore)\n //return them to normal ordering\n yup.sort('sequence')\n // yup.unique() //? not sure\n if (typeof n === 'number') {\n yup = yup.get(n)\n }\n return yup\n}\n//aliases\nmethods.things = methods.entities\nmethods.topics = methods.entities\n\n/** alias for .all() until it gets overloaded by plugin */\nmethods.sentences = function() {\n return this.all()\n}\n\nmodule.exports = methods\n","/** match a word-sequence, like 'super bowl' in the lexicon */\nconst tryMultiple = function(terms, t, world) {\n let lex = world.words\n //try a two-word version\n let txt = terms[t].reduced + ' ' + terms[t + 1].reduced\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-two', world)\n terms[t + 1].tag(lex[txt], 'lexicon-two', world)\n return 1\n }\n //try a three-word version?\n if (t + 2 < terms.length) {\n txt += ' ' + terms[t + 2].reduced\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-three', world)\n terms[t + 1].tag(lex[txt], 'lexicon-three', world)\n terms[t + 2].tag(lex[txt], 'lexicon-three', world)\n return 2\n }\n }\n //try a four-word version?\n if (t + 3 < terms.length) {\n txt += ' ' + terms[t + 3].reduced\n if (lex[txt] !== undefined && lex.hasOwnProperty(txt) === true) {\n terms[t].tag(lex[txt], 'lexicon-four', world)\n terms[t + 1].tag(lex[txt], 'lexicon-four', world)\n terms[t + 2].tag(lex[txt], 'lexicon-four', world)\n terms[t + 3].tag(lex[txt], 'lexicon-four', world)\n return 3\n }\n }\n return 0\n}\n\n/** look at each word in our list of known-words */\nconst checkLexicon = function(terms, world) {\n let lex = world.words\n let hasCompound = world.hasCompound // use reduced?\n //go through each term, and check the lexicon\n for (let t = 0; t < terms.length; t += 1) {\n let str = terms[t].clean\n //is it the start of a compound word, like 'super bowl'?\n if (hasCompound[str] === true && t + 1 < terms.length) {\n let foundWords = tryMultiple(terms, t, world)\n if (foundWords > 0) {\n t += foundWords //skip any already-found words\n continue\n }\n }\n //try one-word lexicon\n if (lex[str] !== undefined && lex.hasOwnProperty(str) === true) {\n terms[t].tag(lex[str], 'lexicon', world)\n }\n // look at reduced version of term, too\n if (str !== terms[t].reduced && lex.hasOwnProperty(terms[t].reduced) === true) {\n terms[t].tag(lex[terms[t].reduced], 'lexicon', world)\n }\n }\n return terms\n}\nmodule.exports = checkLexicon\n","const apostrophes = /[\\'‘’‛‵′`´]$/\nconst oneLetterAcronym = /^[A-Z]('s|,)?$/\n\nconst oneLetterWord = {\n I: true,\n A: true,\n}\n\nconst isAcronym = function(term, world) {\n let str = term.reduced\n // a known acronym like fbi\n if (term.tags.Acronym) {\n return true\n }\n // if (term.tags.Adverb || term.tags.Verb || term.tags.Value || term.tags.Plural) {\n // return false\n // }\n // 'PIZZA' is not an acronym.\n if (str.length > 4 && world.words[str]) {\n return false\n }\n return term.isAcronym()\n}\n\n//\nconst checkPunctuation = function(terms, i, world) {\n let term = terms[i]\n\n //check hyphenation\n // if (term.post.indexOf('-') !== -1 && terms[i + 1] && terms[i + 1].pre === '') {\n // term.tag('Hyphenated', 'has-hyphen', world)\n // }\n\n //an end-tick (trailing apostrophe) - flanders', or Carlos'\n if (apostrophes.test(term.text)) {\n if (!apostrophes.test(term.pre) && !apostrophes.test(term.post) && term.clean.length > 2) {\n let endChar = term.clean[term.clean.length - 2]\n //flanders'\n if (endChar === 's') {\n term.tag(['Possessive', 'Noun'], 'end-tick', world)\n return\n }\n //chillin'\n if (endChar === 'n') {\n term.tag(['Gerund'], 'chillin', world)\n }\n }\n }\n // 'NASA' is, but not 'i REALLY love it.'\n if (isAcronym(term, world)) {\n term.tag('Acronym', 'acronym-step', world)\n term.tag('Noun', 'acronym-infer', world)\n } else if (!oneLetterWord.hasOwnProperty(term.text) && oneLetterAcronym.test(term.text)) {\n term.tag('Acronym', 'one-letter-acronym', world)\n term.tag('Noun', 'one-letter-infer', world)\n }\n}\nmodule.exports = checkPunctuation\n","//these are regexes applied to t.text, instead of t.clean\n// order matters.\nmodule.exports = [\n //phone numbers\n [/^[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //589-3809\n [/^[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/, 'PhoneNumber'], //632-589-3809\n\n //money\n [/^[-+]?[$€¥£][0-9]+(.[0-9]{1,2})?([a-z]{1,4})?$/, ['Money', 'Value']], //like $5.30\n [/^[-+]?[$€¥£][0-9]{1,3}(,[0-9]{3})+(.[0-9]{1,2})?$/, ['Money', 'Value']], //like $5,231.30\n [/^[-+]?[0-9]([0-9,.]+)?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i, ['Money', 'Value']], //like 400usd\n\n //web tags\n [/^\\w+@\\w+\\.[a-z]{2,3}$/, 'Email'], //not fancy\n [/^#[a-z0-9_\\u00C0-\\u00FF]{2,}$/, 'HashTag'],\n [/^@\\w{2,}$/, 'AtMention'],\n [/^(https?:\\/\\/|www\\.)\\w+\\.[a-z]{2,3}/, 'Url'], //with http/www\n [/^[\\w\\.\\/]+\\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/, 'Url'], //http://mostpopularwebsites.net/top-level-domain\n\n //dates/times\n [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/, 'Time'], //4:32:32\n [/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/, 'Time'], //4pm\n [/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/, 'Time'], //4:00pm\n [/^[PMCE]ST$/, 'Time'], //PST, time zone abbrevs\n [/^utc ?[+-]?[0-9]+?$/, 'Time'], //UTC 8+\n [/^[a-z0-9]*? o\\'?clock$/, 'Time'], //3 oclock\n [/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/, 'Date'], // 03-02-89\n [/^[0-9]{1,4}\\/[0-9]{1,2}\\/[0-9]{1,4}$/, 'Date'], // 03/02/89\n\n //names\n [/^ma?c\\'.*/, 'LastName'], //mc'adams\n [/^o\\'[drlkn].*/, 'LastName'], //o'douggan\n [/^ma?cd[aeiou]/, 'LastName'], //macdonell - Last patterns https://en.wikipedia.org/wiki/List_of_family_name_affixes\n\n //slang things\n [/^(lol)+[sz]$/, 'Expression'], //lol\n [/^(un|de|re)\\\\-[a-z\\u00C0-\\u00FF]{2}/, 'Verb'],\n [/^[\\-\\+]?[0-9]+(\\.[0-9])*$/, ['Cardinal', 'NumericValue']],\n [/^(over|under)[a-z]{2,}/, 'Adjective'],\n [/^[0-9]{1,4}\\.[0-9]{1,2}\\.[0-9]{1,4}$/, 'Date'], // 03-02-89\n\n //numbers\n [/^[\\-\\+]?[0-9][0-9,]*(\\.[0-9])*$/, ['Cardinal', 'NumericValue']], //like 5\n [/^[-+]?[0-9]+(.[0-9]+)?$/, ['Cardinal', 'NumericValue']], //like +5.0\n [/^[0-9\\.]{1,4}(st|nd|rd|th)?[-–][0-9\\.]{1,4}(st|nd|rd|th)?$/, 'NumberRange'], //5-7\n [/^[-+]?[0-9.,]{1,3}(,[0-9.,]{3})+(.[0-9]+)?$/, 'NumericValue'], //like 5,999.0\n [/^.?[0-9]+([0-9,.]+)?%$/, ['Percent', 'Cardinal', 'NumericValue']], //7% ..\n [/^[0-9]{1,4}\\/[0-9]{1,4}$/, 'Fraction'], //3/2ths\n [/^[0-9\\.]{1,2}[-–][0-9]{1,2}$/, ['Value', 'NumberRange']], //7-8\n [/^[0-9][0-9,\\.]*(st|nd|rd|r?th)$/, ['NumericValue', 'Ordinal']], //like 5th\n [/[0-9]\\+$/, ['Cardinal', 'NumericValue']], //10+\n [/^[0-9]+(st|nd|rd|th)$/, 'Ordinal'], //like 5th\n [/^[0-9\\.]+([a-z]{1,4})$/, 'Value'], //like 5tbsp\n]\n","const regex = require('./data/startsWith')\n\nconst romanNumeral = /^[IVXLCDM]{2,}$/\nconst romanNumValid = /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/ // https://stackoverflow.com/a/267405/168877\n\n//try each of the ^regexes in our list\nconst checkRegex = function(term, world) {\n let str = term.text\n // do them all!\n for (let r = 0; r < regex.length; r += 1) {\n if (regex[r][0].test(str) === true) {\n term.tagSafe(regex[r][1], 'regex #' + r, world)\n break\n }\n }\n // do some more!\n //roman numberals - XVII\n if (term.text.length >= 2 && romanNumeral.test(str) && romanNumValid.test(str)) {\n term.tag('RomanNumeral', 'xvii', world)\n }\n}\nmodule.exports = checkRegex\n","//regex suffix patterns and their most common parts of speech,\n//built using wordnet, by spencer kelly.\n//this mapping shrinks-down the uglified build\nconst Adj = 'Adjective'\nconst Inf = 'Infinitive'\nconst Pres = 'PresentTense'\nconst Sing = 'Singular'\nconst Past = 'PastTense'\nconst Adverb = 'Adverb'\nconst Exp = 'Expression'\nconst Actor = 'Actor'\nconst Verb = 'Verb'\nconst Noun = 'Noun'\nconst Last = 'LastName'\n//the order here matters.\n\n//regexes indexed by mandated last-character\nmodule.exports = {\n a: [\n [/.[aeiou]na$/, Noun],\n [/.[oau][wvl]ska$/, Last], //polish (female)\n [/.[^aeiou]ica$/, Sing],\n [/^([hyj]a)+$/, Exp], //hahah\n ],\n c: [[/.[^aeiou]ic$/, Adj]],\n d: [\n [/.[ia]sed$/, Adj],\n [/.[gt]led$/, Adj],\n [/.[td]ed$/, Past],\n [/.[aeiou]red$/, Past],\n [/.[^aeiou]led$/, Past], //rumbled\n [/[^aeiou]ard$/, Sing],\n [/[aeiou][^aeiou]id$/, Adj],\n [/[aeiou]c?ked$/, Past], //hooked\n [/[^aeiou][aeiou][tvx]ed$/, Past], //boxed\n [/.[vrl]id$/, Adj],\n ],\n e: [\n [/.[lnr]ize$/, Inf],\n [/.[^aeiou]ise$/, Inf],\n [/.[aeiou]te$/, Inf],\n [/.[^aeiou][ai]ble$/, Adj],\n [/.[^aeiou]eable$/, Adj],\n [/.[ts]ive$/, Adj],\n ],\n h: [\n [/.[^aeiouf]ish$/, Adj],\n [/.v[iy]ch$/, Last], //east-europe\n [/^ug?h+$/, Exp], //uhh\n [/^uh[ -]?oh$/, Exp], //uhoh\n ],\n i: [\n [/.[oau][wvl]ski$/, Last], //polish (male)\n ],\n k: [\n [/^(k)+$/, Exp], //kkkk\n ],\n l: [\n [/.[gl]ial$/, Adj],\n [/.[^aeiou]ful$/, Adj],\n [/.[nrtumcd]al$/, Adj],\n [/.[^aeiou][ei]al$/, Adj],\n ],\n m: [\n [/.[^aeiou]ium$/, Sing],\n [/[^aeiou]ism$/, Sing],\n [/^h*u*m+$/, Exp], //mmmmmmm / ummmm / huuuuuummmmmm\n [/^\\d+ ?[ap]m$/, 'Date'],\n ],\n n: [\n [/.[lsrnpb]ian$/, Adj],\n [/[^aeiou]ician$/, Actor],\n ],\n o: [\n [/^no+$/, Exp], //noooo\n [/^(yo)+$/, Exp], //yoyo\n [/^woo+[pt]?$/, Exp], //woo\n ],\n r: [\n [/.[bdfklmst]ler$/, 'Noun'],\n [/.[ilk]er$/, 'Comparative'],\n [/[aeiou][pns]er$/, Sing],\n [/[^i]fer$/, Inf],\n [/.[^aeiou][ao]pher$/, Actor],\n ],\n t: [\n [/.[di]est$/, 'Superlative'],\n [/.[icldtgrv]ent$/, Adj],\n [/[aeiou].*ist$/, Adj],\n [/^[a-z]et$/, Verb],\n ],\n s: [\n [/.[rln]ates$/, Pres],\n [/.[^z]ens$/, Verb],\n [/.[lstrn]us$/, Sing],\n [/[aeiou][^aeiou]is$/, Sing],\n [/[a-z]\\'s$/, Noun],\n [/^yes+$/, Exp], //yessss\n ],\n v: [\n [/.[^aeiou][ai][kln]ov$/, Last], //east-europe\n ],\n y: [\n [/.[cts]hy$/, Adj],\n [/.[st]ty$/, Adj],\n [/.[gk]y$/, Adj],\n [/.[tnl]ary$/, Adj],\n [/.[oe]ry$/, Sing],\n [/[rdntkbhs]ly$/, Adverb],\n [/...lly$/, Adverb],\n [/[bszmp]{2}y$/, Adj],\n [/.(gg|bb|zz)ly$/, Adj],\n [/.[aeiou]my$/, Adj],\n [/[ea]{2}zy$/, Adj],\n [/.[^aeiou]ity$/, Sing],\n ],\n}\n","//just a foolish lookup of known suffixes\nconst Adj = 'Adjective'\nconst Inf = 'Infinitive'\nconst Pres = 'PresentTense'\nconst Sing = 'Singular'\nconst Past = 'PastTense'\nconst Avb = 'Adverb'\nconst Plrl = 'Plural'\nconst Actor = 'Actor'\nconst Vb = 'Verb'\nconst Noun = 'Noun'\nconst Last = 'LastName'\nconst Modal = 'Modal'\n\n// find any issues - https://observablehq.com/@spencermountain/suffix-word-lookup\nmodule.exports = [\n null, //0\n null, //1\n {\n //2-letter\n ea: Sing,\n ia: Noun,\n ic: Adj,\n ly: Avb,\n \"'n\": Vb,\n \"'t\": Vb,\n },\n {\n //3-letter\n que: Adj,\n lar: Adj,\n ffy: Adj,\n nny: Adj,\n rmy: Adj,\n azy: Adj,\n oid: Adj,\n mum: Adj,\n ous: Adj,\n end: Vb,\n sis: Sing,\n rol: Sing,\n ize: Inf,\n ify: Inf,\n zes: Pres,\n nes: Pres,\n ing: 'Gerund', //likely to be converted to Adj after lexicon pass\n ' so': Avb,\n \"'ll\": Modal,\n \"'re\": 'Copula',\n },\n {\n //4-letter\n teen: 'Value',\n tors: Noun,\n amed: Past,\n ched: Past,\n ends: Vb,\n oses: Pres,\n fies: Pres,\n ects: Pres,\n nded: Past,\n cede: Inf,\n tage: Inf,\n gate: Inf,\n vice: Sing,\n tion: Sing,\n cted: Past,\n ette: Sing,\n some: Adj,\n llen: Adj,\n ried: Adj,\n gone: Adj,\n made: Adj,\n fore: Avb,\n less: Avb,\n ices: Plrl,\n ions: Plrl,\n ints: Plrl,\n aped: Past,\n lked: Past,\n ould: Modal,\n tive: Actor,\n sson: Last, //swedish male\n czyk: Last, //polish (male)\n chuk: Last, //east-europe\n enko: Last, //east-europe\n akis: Last, //greek\n nsen: Last, //norway\n },\n {\n //5-letter\n fully: Avb,\n where: Avb,\n wards: Avb,\n urned: Past,\n tized: Past,\n eased: Past,\n ances: Plrl,\n tures: Plrl,\n ports: Plrl,\n ettes: Plrl,\n ities: Plrl,\n rough: Adj,\n ology: Noun,\n bound: Adj,\n tieth: 'Ordinal',\n ishes: Pres,\n tches: Pres,\n nssen: Last, //norway\n marek: Last, //polish (male)\n },\n {\n //6-letter\n keeper: Actor,\n logist: Actor,\n auskas: Last, //lithuania\n teenth: 'Value',\n },\n {\n //7-letter\n sdottir: Last, //swedish female\n opoulos: Last, //greek\n },\n]\n","const endsWith = require('./data/endsWith')\nconst suffixMap = require('./data/suffixMap')\n\nconst endRegexs = function(term, world) {\n let str = term.clean\n let char = str[str.length - 1]\n if (endsWith.hasOwnProperty(char) === true) {\n let regs = endsWith[char]\n for (let r = 0; r < regs.length; r += 1) {\n if (regs[r][0].test(str) === true) {\n term.tagSafe(regs[r][1], `endReg ${char} #${r}`, world)\n break\n }\n }\n }\n}\n\n//sweep-through all suffixes\nconst knownSuffixes = function(term, world) {\n const len = term.clean.length\n let max = 7\n if (len <= max) {\n max = len - 1\n }\n for (let i = max; i > 1; i -= 1) {\n let str = term.clean.substr(len - i, len)\n if (suffixMap[str.length].hasOwnProperty(str) === true) {\n let tag = suffixMap[str.length][str]\n term.tagSafe(tag, 'suffix -' + str, world)\n break\n }\n }\n}\n\n//all-the-way-down!\nconst checkRegex = function(term, world) {\n knownSuffixes(term, world)\n endRegexs(term, world)\n}\nmodule.exports = checkRegex\n","//just some of the most common emoticons\n//faster than\n//http://stackoverflow.com/questions/28077049/regex-matching-emoticons\nmodule.exports = {\n ':(': true,\n ':)': true,\n ':P': true,\n ':p': true,\n ':O': true,\n ':3': true,\n ':|': true,\n ':/': true,\n ':\\\\': true,\n ':$': true,\n ':*': true,\n ':@': true,\n ':-(': true,\n ':-)': true,\n ':-P': true,\n ':-p': true,\n ':-O': true,\n ':-3': true,\n ':-|': true,\n ':-/': true,\n ':-\\\\': true,\n ':-$': true,\n ':-*': true,\n ':-@': true,\n ':^(': true,\n ':^)': true,\n ':^P': true,\n ':^p': true,\n ':^O': true,\n ':^3': true,\n ':^|': true,\n ':^/': true,\n ':^\\\\': true,\n ':^$': true,\n ':^*': true,\n ':^@': true,\n '):': true,\n '(:': true,\n '$:': true,\n '*:': true,\n ')-:': true,\n '(-:': true,\n '$-:': true,\n '*-:': true,\n ')^:': true,\n '(^:': true,\n '$^:': true,\n '*^:': true,\n '<3': true,\n ' {\n if (raw.charAt(0) === ':') {\n //end comma can be last or second-last ':haircut_tone3:‍♀️'\n if (raw.match(/:.?$/) === null) {\n return false\n }\n //ensure no spaces\n if (raw.match(' ')) {\n return false\n }\n //reasonably sized\n if (raw.length > 35) {\n return false\n }\n return true\n }\n return false\n}\n\n//check against emoticon whitelist\nconst isEmoticon = str => {\n str = str.replace(/^[:;]/, ':') //normalize the 'eyes'\n return emoticon.hasOwnProperty(str)\n}\n\nconst tagEmoji = (term, world) => {\n let raw = term.pre + term.text + term.post\n raw = raw.trim()\n //test for :keyword: emojis\n if (isCommaEmoji(raw) === true) {\n term.tag('Emoji', 'comma-emoji', world)\n term.text = raw\n term.pre = term.pre.replace(':', '')\n term.post = term.post.replace(':', '')\n }\n //test for unicode emojis\n if (term.text.match(emojiReg)) {\n term.tag('Emoji', 'unicode-emoji', world)\n term.text = raw\n }\n //test for emoticon ':)' emojis\n if (isEmoticon(raw) === true) {\n term.tag('Emoticon', 'emoticon-emoji', world)\n term.text = raw\n }\n}\n\nmodule.exports = tagEmoji\n","const steps = {\n lexicon: require('./01-lexicon'),\n punctuation: require('./02-punctuation'),\n regex: require('./03-prefixes'),\n suffix: require('./04-suffixes'),\n emoji: require('./05-emoji'),\n}\n\n//'lookups' look at a term by itself\nconst lookups = function(doc) {\n let terms = doc.termList()\n let world = doc.world\n //our list of known-words\n steps.lexicon(terms, world)\n\n //try these other methods\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i]\n //or maybe some helpful punctuation\n steps.punctuation(terms, i, world)\n //mostly prefix checks\n steps.regex(term, world)\n //maybe we can guess\n steps.suffix(term, world)\n //emoji and emoticons\n steps.emoji(term, world)\n }\n return doc\n}\nmodule.exports = lookups\n","//markov-like stats about co-occurance, for hints about unknown terms\n//basically, a little-bit better than the noun-fallback\n//just top n-grams from nlp tags, generated from nlp-corpus\n\n//after this word, here's what happens usually\nlet afterThisWord = {\n i: 'Verb', //44% //i walk..\n first: 'Noun', //50% //first principles..\n it: 'Verb', //33%\n there: 'Verb', //35%\n not: 'Verb', //33%\n because: 'Noun', //31%\n if: 'Noun', //32%\n but: 'Noun', //26%\n who: 'Verb', //40%\n this: 'Noun', //37%\n his: 'Noun', //48%\n when: 'Noun', //33%\n you: 'Verb', //35%\n very: 'Adjective', // 39%\n old: 'Noun', //51%\n never: 'Verb', //42%\n before: 'Noun', //28%\n}\n\n//in advance of this word, this is what happens usually\nlet beforeThisWord = {\n there: 'Verb', //23% // be there\n me: 'Verb', //31% //see me\n man: 'Adjective', // 80% //quiet man\n only: 'Verb', //27% //sees only\n him: 'Verb', //32% //show him\n were: 'Noun', //48% //we were\n took: 'Noun', //38% //he took\n himself: 'Verb', //31% //see himself\n went: 'Noun', //43% //he went\n who: 'Noun', //47% //person who\n jr: 'Person',\n}\n\n//following this POS, this is likely\nlet afterThisPOS = {\n Adjective: 'Noun', //36% //blue dress\n Possessive: 'Noun', //41% //his song\n Determiner: 'Noun', //47%\n Adverb: 'Verb', //20%\n Pronoun: 'Verb', //40%\n Value: 'Noun', //47%\n Ordinal: 'Noun', //53%\n Modal: 'Verb', //35%\n Superlative: 'Noun', //43%\n Demonym: 'Noun', //38%\n Honorific: 'Person', //\n}\n\n//in advance of this POS, this is likely\nlet beforeThisPOS = {\n Copula: 'Noun', //44% //spencer is\n PastTense: 'Noun', //33% //spencer walked\n Conjunction: 'Noun', //36%\n Modal: 'Noun', //38%\n Pluperfect: 'Noun', //40%\n PerfectTense: 'Verb', //32%\n}\nmodule.exports = {\n beforeThisWord: beforeThisWord,\n afterThisWord: afterThisWord,\n\n beforeThisPos: beforeThisPOS,\n afterThisPos: afterThisPOS,\n}\n","const markov = require('./data/markov')\nconst afterKeys = Object.keys(markov.afterThisPos)\nconst beforeKeys = Object.keys(markov.beforeThisPos)\n\nconst checkNeighbours = function(terms, world) {\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i]\n //do we still need a tag?\n if (term.isKnown() === true) {\n continue\n }\n //ok, this term needs a tag.\n //look at previous word for clues..\n let lastTerm = terms[i - 1]\n if (lastTerm) {\n // 'foobar term'\n if (markov.afterThisWord.hasOwnProperty(lastTerm.clean) === true) {\n let tag = markov.afterThisWord[lastTerm.clean]\n term.tag(tag, 'after-' + lastTerm.clean, world)\n continue\n }\n // 'Tag term'\n // (look at previous POS tags for clues..)\n let foundTag = afterKeys.find(tag => lastTerm.tags[tag])\n if (foundTag !== undefined) {\n let tag = markov.afterThisPos[foundTag]\n term.tag(tag, 'after-' + foundTag, world)\n continue\n }\n }\n\n //look at next word for clues..\n let nextTerm = terms[i + 1]\n if (nextTerm) {\n // 'term foobar'\n if (markov.beforeThisWord.hasOwnProperty(nextTerm.clean) === true) {\n let tag = markov.beforeThisWord[nextTerm.clean]\n term.tag(tag, 'before-' + nextTerm.clean, world)\n continue\n }\n // 'term Tag'\n // (look at next POS tags for clues..)\n let foundTag = beforeKeys.find(tag => nextTerm.tags[tag])\n if (foundTag !== undefined) {\n let tag = markov.beforeThisPos[foundTag]\n term.tag(tag, 'before-' + foundTag, world)\n continue\n }\n }\n }\n}\nmodule.exports = checkNeighbours\n","const titleCase = /^[A-Z][a-z'\\u00C0-\\u00FF]/\nconst hasNumber = /[0-9]/\n\n/** look for any grammar signals based on capital/lowercase */\nconst checkCase = function(terms, world) {\n terms.forEach((term, i) => {\n //is it a titlecased word?\n if (titleCase.test(term.text) === true && hasNumber.test(term.text) === false) {\n // tag it as titlecase, if possible\n if (i !== 0) {\n term.tag('TitleCase', 'case', world)\n } else if (term.tags.Person || term.tags.Organization || term.tags.Place) {\n term.tag('TitleCase', 'case-person', world)\n }\n // can we call it a noun?\n if (i !== 0) {\n //sure!\n term.tag('ProperNoun', 'case-noun', world)\n }\n }\n })\n}\nmodule.exports = checkCase\n","const hasPrefix = /^(re|un)-?[a-z\\u00C0-\\u00FF]/\nconst prefix = /^(re|un)-?/\n\n/** check 'rewatch' in lexicon as 'watch' */\nconst checkPrefix = function(terms, world) {\n let lex = world.words\n terms.forEach(term => {\n // skip if we have a good tag already\n if (term.isKnown() === true) {\n return\n }\n //does it start with 'un|re'\n if (hasPrefix.test(term.clean) === true) {\n // look for the root word in the lexicon:\n let stem = term.clean.replace(prefix, '')\n if (stem && stem.length > 3 && lex[stem] !== undefined && lex.hasOwnProperty(stem) === true) {\n term.tag(lex[stem], 'stem-' + stem, world)\n }\n }\n })\n}\nmodule.exports = checkPrefix\n","//similar to plural/singularize rules, but not the same\nconst isPlural = [\n /(^v)ies$/i,\n /ises$/i,\n /ives$/i,\n /(antenn|formul|nebul|vertebr|vit)ae$/i,\n /(octop|vir|radi|nucle|fung|cact|stimul)i$/i,\n /(buffal|tomat|tornad)oes$/i,\n /(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,\n /(vert|ind|cort)ices$/i,\n /(matr|append)ices$/i,\n /(x|ch|ss|sh|s|z|o)es$/i,\n /is$/i,\n /men$/i,\n /news$/i,\n /.tia$/i,\n /(^f)ves$/i,\n /(lr)ves$/i,\n /(^aeiouy|qu)ies$/i,\n /(m|l)ice$/i,\n /(cris|ax|test)es$/i,\n /(alias|status)es$/i,\n /ics$/i,\n]\n\n//similar to plural/singularize rules, but not the same\nconst isSingular = [\n /(ax|test)is$/i,\n /(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\n /(octop|vir)i$/i,\n /(rl)f$/i,\n /(alias|status)$/i,\n /(bu)s$/i,\n /(al|ad|at|er|et|ed|ad)o$/i,\n /(ti)um$/i,\n /(ti)a$/i,\n /sis$/i,\n /(?:(^f)fe|(lr)f)$/i,\n /hive$/i,\n /s[aeiou]+ns$/i, // sans, siens\n /(^aeiouy|qu)y$/i,\n /(x|ch|ss|sh|z)$/i,\n /(matr|vert|ind|cort)(ix|ex)$/i,\n /(m|l)ouse$/i,\n /(m|l)ice$/i,\n /(antenn|formul|nebul|vertebr|vit)a$/i,\n /.sis$/i,\n /^(?!talis|.*hu)(.*)man$/i,\n]\nmodule.exports = {\n isSingular: isSingular,\n isPlural: isPlural,\n}\n","//these tags don't have plurals\nconst noPlurals = ['Uncountable', 'Pronoun', 'Place', 'Value', 'Person', 'Month', 'WeekDay', 'Holiday']\nconst rules = require('./data/isPlural')\nconst notPlural = [/ss$/, /sis$/, /[^aeiou][uo]s$/, /'s$/]\nconst notSingular = [/i$/, /ae$/]\n\n/** turn nouns into singular/plural */\nconst checkPlural = function(t, world) {\n if (t.tags.Noun && !t.tags.Acronym) {\n let str = t.clean\n //skip existing tags, fast\n if (t.tags.Singular || t.tags.Plural) {\n return\n }\n //too short\n if (str.length <= 3) {\n t.tag('Singular', 'short-singular', world)\n return\n }\n //is it impossible to be plural?\n if (noPlurals.find(tag => t.tags[tag])) {\n return\n }\n // isPlural suffix rules\n if (rules.isPlural.find(reg => reg.test(str))) {\n t.tag('Plural', 'plural-rules', world)\n return\n }\n // isSingular suffix rules\n if (rules.isSingular.find(reg => reg.test(str))) {\n t.tag('Singular', 'singular-rules', world)\n return\n }\n\n // finally, fallback 'looks plural' rules..\n if (/s$/.test(str) === true) {\n //avoid anything too sketchy to be plural\n if (notPlural.find(reg => reg.test(str))) {\n return\n }\n t.tag('Plural', 'plural-fallback', world)\n return\n }\n //avoid anything too sketchy to be singular\n if (notSingular.find(reg => reg.test(str))) {\n return\n }\n t.tag('Singular', 'singular-fallback', world)\n }\n}\nmodule.exports = checkPlural\n","//nouns that also signal the title of an unknown organization\n//todo remove/normalize plural forms\nconst orgWords = [\n 'academy',\n 'administration',\n 'agence',\n 'agences',\n 'agencies',\n 'agency',\n 'airlines',\n 'airways',\n 'army',\n 'assoc',\n 'associates',\n 'association',\n 'assurance',\n 'authority',\n 'autorite',\n 'aviation',\n 'bank',\n 'banque',\n 'board',\n 'boys',\n 'brands',\n 'brewery',\n 'brotherhood',\n 'brothers',\n 'building society',\n 'bureau',\n 'cafe',\n 'caisse',\n 'capital',\n 'care',\n 'cathedral',\n 'center',\n 'central bank',\n 'centre',\n 'chemicals',\n 'choir',\n 'chronicle',\n 'church',\n 'circus',\n 'clinic',\n 'clinique',\n 'club',\n 'co',\n 'coalition',\n 'coffee',\n 'collective',\n 'college',\n 'commission',\n 'committee',\n 'communications',\n 'community',\n 'company',\n 'comprehensive',\n 'computers',\n 'confederation',\n 'conference',\n 'conseil',\n 'consulting',\n 'containers',\n 'corporation',\n 'corps',\n 'corp',\n 'council',\n 'crew',\n 'daily news',\n 'data',\n 'departement',\n 'department',\n 'department store',\n 'departments',\n 'design',\n 'development',\n 'directorate',\n 'division',\n 'drilling',\n 'education',\n 'eglise',\n 'electric',\n 'electricity',\n 'energy',\n 'ensemble',\n 'enterprise',\n 'enterprises',\n 'entertainment',\n 'estate',\n 'etat',\n 'evening news',\n 'faculty',\n 'federation',\n 'financial',\n 'fm',\n 'foundation',\n 'fund',\n 'gas',\n 'gazette',\n 'girls',\n 'government',\n 'group',\n 'guild',\n 'health authority',\n 'herald',\n 'holdings',\n 'hospital',\n 'hotel',\n 'hotels',\n 'inc',\n 'industries',\n 'institut',\n 'institute',\n 'institute of technology',\n 'institutes',\n 'insurance',\n 'international',\n 'interstate',\n 'investment',\n 'investments',\n 'investors',\n 'journal',\n 'laboratory',\n 'labs',\n // 'law',\n 'liberation army',\n 'limited',\n 'local authority',\n 'local health authority',\n 'machines',\n 'magazine',\n 'management',\n 'marine',\n 'marketing',\n 'markets',\n 'media',\n 'memorial',\n 'mercantile exchange',\n 'ministere',\n 'ministry',\n 'military',\n 'mobile',\n 'motor',\n 'motors',\n 'musee',\n 'museum',\n // 'network',\n 'news',\n 'news service',\n 'observatory',\n 'office',\n 'oil',\n 'optical',\n 'orchestra',\n 'organization',\n 'partners',\n 'partnership',\n // 'party',\n \"people's party\",\n 'petrol',\n 'petroleum',\n 'pharmacare',\n 'pharmaceutical',\n 'pharmaceuticals',\n 'pizza',\n 'plc',\n 'police',\n 'polytechnic',\n 'post',\n 'power',\n 'press',\n 'productions',\n 'quartet',\n 'radio',\n 'regional authority',\n 'regional health authority',\n 'reserve',\n 'resources',\n 'restaurant',\n 'restaurants',\n 'savings',\n 'school',\n 'securities',\n 'service',\n 'services',\n 'social club',\n 'societe',\n 'society',\n 'sons',\n 'standard',\n 'state police',\n 'state university',\n 'stock exchange',\n 'subcommittee',\n 'syndicat',\n 'systems',\n 'telecommunications',\n 'telegraph',\n 'television',\n 'times',\n 'tribunal',\n 'tv',\n 'union',\n 'university',\n 'utilities',\n 'workers',\n]\n\nmodule.exports = orgWords.reduce(function(h, str) {\n h[str] = 'Noun'\n return h\n}, {})\n","let orgWords = require('./data/organizations')\n\n//could this word be an organization\nconst maybeOrg = function(t) {\n //must be a noun\n if (!t.tags.Noun) {\n return false\n }\n //can't be these things\n if (t.tags.Pronoun || t.tags.Comma || t.tags.Possessive) {\n return false\n }\n //must be one of these\n if (t.tags.Organization || t.tags.Acronym || t.tags.Place || t.titleCase()) {\n return true\n }\n return false\n}\n\nconst tagOrgs = function(terms, world) {\n for (let i = 0; i < terms.length; i += 1) {\n let t = terms[i]\n if (orgWords[t.clean] !== undefined && orgWords.hasOwnProperty(t.clean) === true) {\n // look-backward - eg. 'Toronto University'\n let lastTerm = terms[i - 1]\n if (lastTerm !== undefined && maybeOrg(lastTerm) === true) {\n lastTerm.tagSafe('Organization', 'org-word-1', world)\n t.tagSafe('Organization', 'org-word-2', world)\n continue\n }\n //look-forward - eg. University of Toronto\n let nextTerm = terms[i + 1]\n if (nextTerm !== undefined && nextTerm.clean === 'of') {\n if (terms[i + 2] && maybeOrg(terms[i + 2])) {\n t.tagSafe('Organization', 'org-of-word-1', world)\n nextTerm.tagSafe('Organization', 'org-of-word-2', world)\n terms[i + 2].tagSafe('Organization', 'org-of-word-3', world)\n continue\n }\n }\n }\n }\n}\nmodule.exports = tagOrgs\n","const step = {\n neighbours: require('./01-neighbours'),\n case: require('./02-case'),\n stem: require('./03-stem'),\n plural: require('./04-plurals'),\n organizations: require('./05-organizations'),\n}\n//\nconst fallbacks = function(doc) {\n let terms = doc.termList()\n let world = doc.world\n\n // if it's empty, consult it's neighbours, first\n step.neighbours(terms, world)\n\n // is there a case-sensitive clue?\n step.case(terms, world)\n\n // check 'rewatch' as 'watch'\n step.stem(terms, world)\n\n // ... fallback to a noun!\n terms.forEach(t => {\n if (t.isKnown() === false) {\n t.tag('Noun', 'noun-fallback', doc.world)\n }\n })\n\n // turn 'Foo University' into an Org\n step.organizations(terms, world)\n\n //are the nouns singular or plural?\n terms.forEach(t => {\n step.plural(t, doc.world)\n })\n\n return doc\n}\nmodule.exports = fallbacks\n","const hasNegative = /n't$/\n\nconst irregulars = {\n \"won't\": ['will', 'not'],\n wont: ['will', 'not'],\n \"can't\": ['can', 'not'],\n cant: ['can', 'not'],\n cannot: ['can', 'not'],\n \"shan't\": ['should', 'not'],\n dont: ['do', 'not'],\n dun: ['do', 'not'],\n // \"ain't\" is ambiguous for is/was\n}\n\nconst checkNegative = function(term) {\n //check named-ones\n if (irregulars.hasOwnProperty(term.clean) === true) {\n return irregulars[term.clean]\n }\n //try it normally\n if (hasNegative.test(term.clean) === true) {\n let main = term.clean.replace(hasNegative, '')\n return [main, 'not']\n }\n return null\n}\nmodule.exports = checkNegative\n","const contraction = /([a-z\\u00C0-\\u00FF]+)'([a-z]{1,2})$/i\n\n//these ones don't seem to be ambiguous\nconst easy = {\n ll: 'will',\n ve: 'have',\n re: 'are',\n m: 'am',\n \"n't\": 'not',\n}\n//\nconst checkApostrophe = function(term) {\n let parts = term.text.match(contraction)\n if (parts === null) {\n return null\n }\n if (easy.hasOwnProperty(parts[2])) {\n return [parts[1], easy[parts[2]]]\n }\n return null\n}\nmodule.exports = checkApostrophe\n","const irregulars = {\n wanna: ['want', 'to'],\n gonna: ['going', 'to'],\n im: ['i', 'am'],\n alot: ['a', 'lot'],\n ive: ['i', 'have'],\n imma: ['I', 'will'],\n\n \"where'd\": ['where', 'did'],\n whered: ['where', 'did'],\n \"when'd\": ['when', 'did'],\n whend: ['when', 'did'],\n \"how'd\": ['how', 'did'],\n howd: ['how', 'did'],\n \"what'd\": ['what', 'did'],\n whatd: ['what', 'did'],\n // \"let's\": ['let', 'us'], //too weird\n\n //multiple word contractions\n dunno: ['do', 'not', 'know'],\n brb: ['be', 'right', 'back'],\n gtg: ['got', 'to', 'go'],\n irl: ['in', 'real', 'life'],\n tbh: ['to', 'be', 'honest'],\n imo: ['in', 'my', 'opinion'],\n til: ['today', 'i', 'learned'],\n rn: ['right', 'now'],\n twas: ['it', 'was'],\n '@': ['at'],\n}\n\n// either 'is not' or 'are not'\nconst doAint = function(term, phrase) {\n let terms = phrase.terms()\n let index = terms.indexOf(term)\n let before = terms.slice(0, index)\n //look for the preceding noun\n let noun = before.find(t => {\n return t.tags.Noun\n })\n if (noun && noun.tags.Plural) {\n return ['are', 'not']\n }\n return ['is', 'not']\n}\n\n//\nconst checkIrregulars = function(term, phrase) {\n //this word needs it's own logic:\n if (term.clean === `ain't` || term.clean === 'aint') {\n return doAint(term, phrase)\n }\n //check white-list\n if (irregulars.hasOwnProperty(term.clean)) {\n return irregulars[term.clean]\n }\n return null\n}\nmodule.exports = checkIrregulars\n","const hasApostropheS = /([a-z\\u00C0-\\u00FF]+)'s$/i\n\nconst blacklist = {\n that: true,\n there: true,\n}\nconst isPossessive = (term, pool) => {\n // if we already know it\n if (term.tags.Possessive) {\n return true\n }\n //a pronoun can't be possessive - \"he's house\"\n if (term.tags.Pronoun || term.tags.QuestionWord) {\n return false\n }\n if (blacklist.hasOwnProperty(term.clean)) {\n return false\n }\n //if end of sentence, it is possessive - \"was spencer's\"\n let nextTerm = pool.get(term.next)\n if (!nextTerm) {\n return true\n }\n //a gerund suggests 'is walking'\n if (nextTerm.tags.Verb) {\n //fix 'jamie's bite'\n if (nextTerm.tags.Infinitive) {\n return true\n }\n return false\n }\n\n //spencer's house\n if (nextTerm.tags.Noun) {\n return true\n }\n //rocket's red glare\n let twoTerm = pool.get(nextTerm.next)\n if (twoTerm && twoTerm.tags.Noun && !twoTerm.tags.Pronoun) {\n return true\n }\n //othwerwise, an adjective suggests 'is good'\n if (nextTerm.tags.Adjective || nextTerm.tags.Adverb || nextTerm.tags.Verb) {\n return false\n }\n return false\n}\n\nconst isHas = (term, phrase) => {\n let terms = phrase.terms()\n let index = terms.indexOf(term)\n let after = terms.slice(index + 1, index + 3)\n //look for a past-tense verb\n return after.find(t => {\n return t.tags.PastTense\n })\n}\n\nconst checkPossessive = function(term, phrase, world) {\n //the rest of 's\n let found = term.text.match(hasApostropheS)\n if (found !== null) {\n //spencer's thing vs spencer-is\n if (isPossessive(term, phrase.pool) === true) {\n term.tag('#Possessive', 'isPossessive', world)\n return null\n }\n //'spencer is'\n if (found !== null) {\n if (isHas(term, phrase)) {\n return [found[1], 'has']\n }\n return [found[1], 'is']\n }\n }\n return null\n}\nmodule.exports = checkPossessive\n","const hasPerfect = /[a-z\\u00C0-\\u00FF]'d$/\n\n/** split `i'd` into 'i had', or 'i would' */\nconst checkPerfect = function(term, phrase) {\n if (hasPerfect.test(term.clean)) {\n let root = term.clean.replace(/'d$/, '')\n //look at the next few words\n let terms = phrase.terms()\n let index = terms.indexOf(term)\n let after = terms.slice(index + 1, index + 4)\n //is it before a past-tense verb? - 'i'd walked'\n for (let i = 0; i < after.length; i++) {\n let t = after[i]\n if (t.tags.Verb) {\n if (t.tags.PastTense) {\n return [root, 'had']\n }\n return [root, 'would']\n }\n }\n //otherwise, 'i'd walk'\n return [root, 'would']\n }\n return null\n}\nmodule.exports = checkPerfect\n","const isRange = /^([0-9]+)[-–—]([0-9]+)$/i\n\n//split '2-4' into '2 to 4'\nconst checkRange = function(term) {\n if (term.tags.PhoneNumber === true) {\n return null\n }\n let parts = term.text.match(isRange)\n if (parts !== null) {\n return [parts[1], 'to', parts[2]]\n }\n return null\n}\nmodule.exports = checkRange\n","const checkLexicon = require('../01-init/01-lexicon')\nconst tokenize = require('../../01-tokenizer')\nconst checkNegative = require('./01-negative')\nconst checkApostrophe = require('./02-simple')\nconst checkIrregulars = require('./03-irregulars')\nconst checkPossessive = require('./04-possessive')\nconst checkPerfect = require('./05-perfectTense')\nconst checkRange = require('./06-ranges')\nconst isNumber = /^[0-9]+$/\n\nconst createPhrase = function(found, doc) {\n //create phrase from ['would', 'not']\n let phrase = tokenize.fromText(found.join(' '), doc.world, doc.pool())[0]\n //tag it\n let terms = phrase.terms()\n checkLexicon(terms, doc.world)\n //make these terms implicit\n terms.forEach(t => {\n t.implicit = t.text\n t.text = ''\n t.clean = ''\n // remove whitespace for implicit terms\n t.pre = ''\n t.post = ''\n // tag number-ranges\n if (isNumber.test(t.implicit)) {\n t.tags.Number = true\n t.tags.Cardinal = true\n }\n })\n return phrase\n}\n\nconst contractions = function(doc) {\n let world = doc.world\n doc.list.forEach(p => {\n let terms = p.terms()\n for (let i = 0; i < terms.length; i += 1) {\n let term = terms[i]\n let found = checkNegative(term)\n found = found || checkApostrophe(term)\n found = found || checkIrregulars(term, p)\n found = found || checkPossessive(term, p, world)\n found = found || checkPerfect(term, p)\n found = found || checkRange(term, p)\n //add them in\n if (found !== null) {\n let newPhrase = createPhrase(found, doc)\n //set text as contraction\n let firstTerm = newPhrase.terms(0)\n firstTerm.text = term.text\n //grab sub-phrase to remove\n let match = p.buildFrom(term.id, 1, doc.pool())\n match.replace(newPhrase, doc, true)\n }\n }\n })\n return doc\n}\nmodule.exports = contractions\n","//mostly pos-corections here\nconst miscCorrection = function(doc) {\n //misc:\n //foot/feet\n doc.match('(foot|feet)').tag('Noun', 'foot-noun')\n // blood, sweat, and tears\n doc.match('(#Noun && @hasComma) #Noun (and|or) [#PresentTense]').tag('#Noun', 'noun-list')\n //3 feet\n doc.match('#Value [(foot|feet)]').tag('Unit', 'foot-unit')\n //'u' as pronoun\n doc.match('#Conjunction [u]').tag('Pronoun', 'u-pronoun-2')\n //6 am\n doc.match('#Holiday (day|eve)').tag('Holiday', 'holiday-day')\n // the captain who\n doc.match('#Noun [(who|whom)]').tag('Determiner', 'captain-who')\n //timezones\n doc.match('(standard|daylight|summer|eastern|pacific|central|mountain) standard? time').tag('Time', 'timezone')\n //Brazilian pesos\n doc.match('#Demonym #Currency').tag('Currency', 'demonym-currency')\n //about to go\n doc.match('[about to] #Adverb? #Verb').tag(['Auxiliary', 'Verb'], 'about-to')\n //right of way\n doc.match('(right|rights) of .').tag('Noun', 'right-of')\n // a bit\n doc.match('[much] #Adjective').tag('Adverb', 'bit-1')\n doc.match('a [bit]').tag('Noun', 'bit-2')\n doc.match('a bit much').tag('Determiner Adverb Adjective', 'bit-3')\n doc.match('too much').tag('Adverb Adjective', 'bit-4')\n // u r cool\n doc.match('u r').tag('Pronoun #Copula', 'u r')\n // well, ...\n doc.match('^(well|so|okay)').tag('Expression', 'well-')\n\n // some conditional statements\n let m = doc.clauses()\n\n // had he survived,\n m.match('^had #Noun+ #PastTense')\n .firstTerm()\n .tag('Condition', 'had-he')\n // were he to survive\n m.match('^were #Noun+ to #Infinitive')\n .firstTerm()\n .tag('Condition', 'were-he')\n\n //swear-words as non-expression POS\n //nsfw\n doc.match('holy (shit|fuck|hell)').tag('Expression', 'swears-expression')\n doc.match('#Determiner [(shit|damn|hell)]').tag('Noun', 'swears-noun')\n doc.match('[(shit|damn|fuck)] (#Determiner|#Possessive|them)').tag('Verb', 'swears-verb')\n doc\n .match('#Copula fucked up?')\n .not('#Copula')\n .tag('Adjective', 'swears-adjective')\n\n //ambig prepositions/conjunctions\n let so = doc.if('so')\n if (so.found === true) {\n //so funny\n so.match('[so] #Adjective').tag('Adverb', 'so-adv')\n //so the\n so.match('[so] #Noun').tag('Conjunction', 'so-conj')\n //do so\n so.match('do [so]').tag('Noun', 'so-noun')\n }\n\n let all = doc.if('all')\n if (all.found === true) {\n //all students\n all.match('[all] #Determiner? #Noun').tag('Adjective', 'all-noun')\n //it all fell apart\n all.match('[all] #Verb').tag('Adverb', 'all-verb')\n }\n\n //the ambiguous word 'that' and 'which'\n let which = doc.if('which')\n if (which.found === true) {\n //remind john that\n which.match('#Verb #Adverb? #Noun [(that|which)]').tag('Preposition', 'that-prep')\n //that car goes\n which.match('that #Noun [#Verb]').tag('Determiner', 'that-determiner')\n //work, which has been done.\n which.match('@hasComma [which] (#Pronoun|#Verb)').tag('Preposition', 'which-copula')\n }\n\n //like\n let like = doc.if('like')\n if (like.found === true) {\n like.match('just [like]').tag('Preposition', 'like-preposition')\n //folks like her\n like.match('#Noun [like] #Noun').tag('Preposition', 'noun-like')\n //look like\n like.match('#Verb [like]').tag('Adverb', 'verb-like')\n //exactly like\n like\n .match('#Adverb like')\n .notIf('(really|generally|typically|usually|sometimes|often) [like]')\n .tag('Adverb', 'adverb-like')\n }\n\n let title = doc.if('@titleCase')\n if (title.found === true) {\n //FitBit Inc\n title.match('@titleCase (ltd|co|inc|dept|assn|bros)').tag('Organization', 'org-abbrv')\n //Foo District\n title\n .match('@titleCase+ (district|region|province|county|prefecture|municipality|territory|burough|reservation)')\n .tag('Region', 'foo-district')\n //District of Foo\n title\n .match('(district|region|province|municipality|territory|burough|state) of @titleCase')\n .tag('Region', 'district-of-Foo')\n }\n\n let hyph = doc.if('@hasHyphen')\n if (hyph.found === true) {\n //air-flow\n hyph\n .match('@hasHyphen .')\n .match('#Noun #Verb')\n .tag('Noun', 'hyphen-verb')\n //connect hyphenated expressions - 'ooh-wee'\n hyph\n .if('#Expression')\n .match('@hasHyphen+')\n .tag('Expression', 'ooh-wee')\n }\n\n let place = doc.if('#Place')\n if (place.found === true) {\n //West Norforlk\n place.match('(west|north|south|east|western|northern|southern|eastern)+ #Place').tag('Region', 'west-norfolk')\n //some us-state acronyms (exlude: al, in, la, mo, hi, me, md, ok..)\n place\n .match('#City [#Acronym]')\n .match('(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|or|pa|sc|tn|tx|ut|vt|pr)')\n .tag('Region', 'us-state')\n }\n\n return doc\n}\n\nmodule.exports = miscCorrection\n","//Determiner-signals\nconst fixThe = function(doc) {\n let det = doc.if('#Determiner')\n\n if (det.found === true) {\n let adj = det.if('#Adjective')\n if (adj.found) {\n //the nice swim\n adj.match('(the|this|those|these) #Adjective [#Verb]').tag('Noun', 'the-adj-verb')\n // the truly nice swim\n adj.match('(the|this|those|these) #Adverb #Adjective [#Verb]').tag('Noun', 'correction-determiner4')\n //the orange is\n adj.match('#Determiner [#Adjective] (#Copula|#PastTense|#Auxiliary)').tag('Noun', 'the-adj-2')\n //the orange.\n adj\n .match('#Determiner #Adjective$')\n .notIf('(#Comparative|#Superlative)')\n .terms(1)\n .tag('Noun', 'the-adj-1')\n }\n\n let inf = det.if('#Infinitive')\n if (inf.found) {\n // a stream runs\n inf.match('(the|this|a|an) [#Infinitive] #Adverb? #Verb').tag('Noun', 'correction-determiner5')\n //the test string\n inf.match('#Determiner [#Infinitive] #Noun').tag('Noun', 'correction-determiner7')\n //by a bear.\n inf.match('#Determiner [#Infinitive]$').tag('Noun', 'a-inf')\n }\n\n //the wait to vote\n det.match('(the|this) [#Verb] #Preposition .').tag('Noun', 'correction-determiner1')\n //a sense of\n det.match('#Determiner [#Verb] of').tag('Noun', 'the-verb-of')\n //the threat of force\n det.match('#Determiner #Noun of [#Verb]').tag('Noun', 'noun-of-noun')\n //a close\n det.match('#Determiner #Adverb? [close]').tag('Adjective', 'a-close')\n //the western line\n det.match('#Determiner [(western|eastern|northern|southern|central)] #Noun').tag('Noun', 'western-line')\n //the swim\n det.match('(the|those|these) [(#Infinitive|#PresentTense|#PastTense)]').tag('Noun', 'correction-determiner2')\n }\n\n let an = doc.if('(a|an)')\n if (an.found === true) {\n //a staggering cost\n an.match('(a|an) [#Gerund]').tag('Adjective', 'correction-a|an')\n //did a 900, paid a 20\n an.match('#Verb (a|an) [#Value]').tag('Singular', 'a-value')\n //a tv show\n an.match('(a|an) #Noun [#Infinitive]').tag('Noun', 'a-noun-inf')\n //a great run\n an.match('(a|an) #Adjective (#Infinitive|#PresentTense)')\n .terms(2)\n .tag('Noun', 'correction-a|an2')\n //'a/an' can mean 1 - \"a hour\"\n an.match('[(a|an)] (#Duration|hundred|thousand|million|billion|trillion)')\n .ifNo('#Plural')\n .tag('Value', 'a-is-one')\n }\n\n return doc\n}\nmodule.exports = fixThe\n","//\nconst fixNouns = function(doc) {\n let noun = doc.if('#Noun')\n if (noun.found === true) {\n //'more' is not always an adverb\n noun.match('more #Noun').tag('Noun', 'more-noun')\n //he quickly foo\n noun.match('#Noun #Adverb [#Noun]').tag('Verb', 'quickly-foo')\n //fix for busted-up phrasalVerbs\n noun.match('#Noun [#Particle]').tag('Preposition', 'repair-noPhrasal')\n //John & Joe's\n noun.match('#Noun (&|n) #Noun').tag('Organization', 'Noun-&-Noun')\n //Aircraft designer\n noun.match('#Noun #Actor').tag('Actor', 'thing-doer')\n //j.k Rowling\n doc.match('#Noun van der? #Noun').tagSafe('#Person', 'von der noun')\n //king of spain\n doc.match('(king|queen|prince|saint|lady) of? #Noun').tagSafe('#Person', 'king-of-noun')\n // addresses\n doc.match('#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)').tag('Address')\n // schools\n doc.match('#Noun+ (public|private) school').tag('School')\n //the word 'second'\n noun\n .match('[second] #Noun')\n .notIf('#Honorific')\n .unTag('Unit')\n .tag('Ordinal', 'second-noun')\n //linear algebra\n noun\n .match('(#Determiner|#Value) [(linear|binary|mobile|lexical|technical|computer|scientific|formal)] #Noun')\n .tag('Noun', 'technical-noun')\n\n //organization\n let org = noun.if('#Organization')\n if (org.found === true) {\n org.match('#Organization of the? @titleCase').tagSafe('Organization', 'org-of-place')\n org.match('#Organization #Country').tag('Organization', 'org-country')\n org.match('(world|global|international|national|#Demonym) #Organization').tag('Organization', 'global-org')\n org\n .match('#TitleCase #Organization')\n .ifNo('@hasComma')\n .tag('Organization', 'titlecase-org')\n }\n\n let plural = noun.if('#Plural')\n if (plural.found === true) {\n //some pressing issues\n plural.match('some [#Verb] #Plural').tag('Noun', 'correction-determiner6')\n\n //this rocks\n noun.match('(this|that) [#Plural]').tag('PresentTense', 'this-verbs')\n }\n }\n\n //acronyms\n let acronym = doc.if('#Acronym')\n if (acronym.found === true) {\n acronym\n .match('the [#Acronym]')\n .notIf('(iou|fomo|yolo|diy|dui|nimby)')\n .tag('Organization', 'the-acronym')\n acronym\n .match('#Acronym')\n .match('#Possessive')\n .tag('Organization', 'possessive-acronym')\n }\n\n //possessives\n let poss = doc.if('#Possessive')\n if (poss.found === true) {\n //my buddy\n poss.match('#Possessive [#FirstName]').unTag('Person', 'possessive-name')\n //spencer kelly's\n poss\n .match('#FirstName #Acronym? #Possessive')\n .ifNo('@hasComma')\n .match('#FirstName #Acronym? #LastName')\n .tag('Possessive')\n //Super Corp's fundraiser\n poss\n .match('#Organization+ #Possessive')\n .ifNo('@hasComma')\n .tag('Possessive')\n //Los Angeles's fundraiser\n poss\n .match('#Place+ #Possessive')\n .ifNo('@hasComma')\n .tag('Possessive')\n //her polling\n poss.match('#Possessive [#Verb]').tag('Noun', 'correction-possessive')\n }\n return doc\n}\nmodule.exports = fixNouns\n","const maybeNoun =\n '(rose|robin|dawn|ray|holly|bill|joy|viola|penny|sky|violet|daisy|melody|kelvin|hope|mercedes|olive|jewel|faith|van|charity|miles|lily|summer|dolly|rod|dick|cliff|lane|reed|kitty|art|jean|trinity)'\nconst maybeVerb = '(pat|wade|ollie|will|rob|buck|bob|mark|jack)'\nconst maybeAdj = '(misty|rusty|dusty|rich|randy)'\nconst maybeDate = '(april|june|may|jan|august|eve)'\nconst maybePlace = '(paris|alexandria|houston|kobe|salvador|sydney)'\n\nconst fixPerson = function(doc) {\n // clues from honorifics\n let hon = doc.if('#Honorific')\n if (hon.found === true) {\n //mr Putin\n doc.match('(mr|mrs|ms|dr) (#TitleCase|#Possessive)+').tag('#Person', 'mr-putin')\n //mr X\n hon.match('#Honorific #Acronym').tag('Person', 'Honorific-TitleCase')\n //remove single 'mr'\n hon.match('^#Honorific$').unTag('Person', 'single-honorific')\n //first general..\n hon.match('[(1st|2nd|first|second)] #Honorific').tag('Honorific', 'ordinal-honorific')\n }\n\n //methods requiring a titlecase\n let title = doc.if('#TitleCase')\n if (title.found === true) {\n title.match('#Acronym #TitleCase').tagSafe('#Person', 'acronym-titlecase')\n //ludwig van beethovan\n title.match('#TitleCase (van|al|bin) #TitleCase').tagSafe('Person', 'titlecase-van-titlecase')\n //jose de Sucre\n title.match('#TitleCase (de|du) la? #TitleCase').tagSafe('Person', 'titlecase-van-titlecase')\n\n //pope francis\n title\n .match('(lady|queen|sister) #TitleCase')\n .ifNo('#Date')\n .ifNo('#Honorific')\n .tag('#FemaleName', 'lady-titlecase')\n title\n .match('(king|pope|father) #TitleCase')\n .ifNo('#Date')\n .tag('#MaleName', 'poe')\n\n // jean Foobar\n title.match(maybeNoun + ' #Acronym? #TitleCase').tagSafe('Person', 'ray-smith')\n // rob Foobar\n title.match(maybeVerb + ' #Acronym? #TitleCase').tag('Person', 'rob-smith')\n // rusty Foobar\n title.match(maybeAdj + ' #Acronym? #TitleCase').tag('Person', 'rusty-smith')\n // june Foobar\n title.match(maybeDate + ' #Acronym? (#TitleCase && !#Month)').tagSafe('Person', 'june-smith')\n }\n\n let person = doc.if('#Person')\n if (person.found === true) {\n //Frank jr\n person.match('#Person (jr|sr|md)').tag('Person', 'person-honorific')\n //peter II\n person.match('#Person #Person the? #RomanNumeral').tag('Person', 'roman-numeral')\n //'Professor Fink', 'General McCarthy'\n person.match('#Honorific #Person').tag('Person', 'Honorific-Person')\n // 'john E rockefeller'\n person.match('#FirstName [/^[^aiurck]$/]').tag(['Acronym', 'Person'], 'john-e')\n //Doctor john smith jr\n person.match('#Honorific #Person').tag('Person', 'honorific-person')\n //general pearson\n person\n .match('[(private|general|major|corporal|lord|lady|secretary|premier)] #Honorific? #Person')\n .tag('Honorific', 'ambg-honorifics')\n //Morgan Shlkjsfne\n title\n .match('#Person #TitleCase')\n .match('#TitleCase #Noun')\n .tagSafe('Person', 'person-titlecase')\n //a bunch of ambiguous first names\n\n //Nouns: 'viola' or 'sky'\n let ambigNoun = person.if(maybeNoun)\n if (ambigNoun.found === true) {\n // ambigNoun.match('(#Determiner|#Adverb|#Pronoun|#Possessive) [' + maybeNoun + ']').tag('Noun', 'the-ray')\n ambigNoun.match(maybeNoun + ' #Person').tagSafe('Person', 'ray-smith')\n }\n\n //Verbs: 'pat' or 'wade'\n let ambigVerb = person.if(maybeVerb)\n if (ambigVerb === true) {\n ambigVerb.match('(#Modal|#Adverb) [' + maybeVerb + ']').tag('Verb', 'would-mark')\n ambigVerb.match(maybeVerb + ' #Person').tag('Person', 'rob-smith')\n }\n\n //Adjectives: 'rusty' or 'rich'\n let ambigAdj = person.if(maybeAdj)\n if (ambigAdj.found === true) {\n ambigAdj.match('#Adverb [' + maybeAdj + ']').tag('Adjective', 'really-rich')\n ambigAdj.match(maybeAdj + ' #Person').tag('Person', 'randy-smith')\n }\n\n //Dates: 'june' or 'may'\n let ambigDate = person.if(maybeDate)\n if (ambigDate.found === true) {\n ambigDate.match(String(maybeDate) + ' #Person').tagSafe('Person', 'june-smith')\n ambigDate.match('(in|during|on|by|before|#Date) [' + maybeDate + ']').tagSafe('Date', 'in-june')\n ambigDate.match(maybeDate + ' (#Date|#Value)').tagSafe('Date', 'june-5th')\n }\n\n //Places: paris or syndey\n let ambigPlace = person.if(maybePlace)\n if (ambigPlace.found === true) {\n ambigPlace.match('(in|near|at|from|to|#Place) [' + maybePlace + ']').tagSafe('Place', 'in-paris')\n ambigPlace.match('[' + maybePlace + '] #Place').tagSafe('Place', 'paris-france')\n // ambigPlace.match('[' + maybePlace + '] #Person').tagSafe('Person', 'paris-hilton')\n }\n\n //this one is tricky\n let al = person.if('al')\n if (al.found === true) {\n al.match('al (#Person|#TitleCase)').tagSafe('#Person', 'al-borlen')\n al.match('#TitleCase al #TitleCase').tagSafe('#Person', 'arabic-al-arabic')\n }\n\n let firstName = person.if('#FirstName')\n if (firstName.found === true) {\n //ferdinand de almar\n firstName.match('#FirstName de #Noun').tag('#Person', 'firstname-de-noun')\n //Osama bin Laden\n firstName.match('#FirstName (bin|al) #Noun').tag('#Person', 'firstname-al-noun')\n //John L. Foo\n firstName.match('#FirstName #Acronym #TitleCase').tag('Person', 'firstname-acronym-titlecase')\n //Andrew Lloyd Webber\n firstName.match('#FirstName #FirstName #TitleCase').tag('Person', 'firstname-firstname-titlecase')\n //Mr Foo\n firstName.match('#Honorific #FirstName? #TitleCase').tag('Person', 'Honorific-TitleCase')\n //peter the great\n firstName.match('#FirstName the #Adjective').tag('Person', 'determiner5')\n\n //very common-but-ambiguous lastnames\n firstName\n .match('#FirstName (green|white|brown|hall|young|king|hill|cook|gray|price)')\n .tag('#Person', 'firstname-maybe')\n\n //John Foo\n firstName\n .match('#FirstName #TitleCase #TitleCase?')\n .match('#Noun+')\n .tag('Person', 'firstname-titlecase')\n //Joe K. Sombrero\n firstName\n .match('#FirstName #Acronym #Noun')\n .ifNo('#Date')\n .tag('#Person', 'n-acro-noun')\n .lastTerm()\n .tag('#LastName', 'n-acro-noun')\n\n // Dwayne 'the rock' Johnson\n firstName\n .match('#FirstName [#Determiner #Noun] #LastName')\n .tag('#NickName', 'first-noun-last')\n .tag('#Person', 'first-noun-last')\n\n //john bodego's\n firstName\n .match('#FirstName (#Singular|#Possessive)')\n .ifNo('(#Date|#Pronoun|#NickName)')\n .tag('#Person', 'first-possessive')\n .lastTerm()\n .tag('#LastName', 'first-possessive')\n\n // Firstname x (dangerous)\n let tmp = firstName\n .match('#FirstName (#Noun|#TitleCase)')\n .ifNo('^#Possessive')\n .ifNo('#ClauseEnd .')\n .ifNo('#Pronoun')\n tmp.lastTerm().tag('#LastName', 'firstname-noun')\n }\n\n let lastName = person.if('#LastName')\n if (lastName.found === true) {\n //is foo Smith\n lastName.match('#Copula [(#Noun|#PresentTense)] #LastName').tag('#FirstName', 'copula-noun-lastname')\n // x Lastname\n lastName\n .match('[#Noun] #LastName')\n .canBe('#FirstName')\n .tag('#FirstName', 'noun-lastname')\n //ambiguous-but-common firstnames\n lastName\n .match(\n '[(will|may|april|june|said|rob|wade|ray|rusty|drew|miles|jack|chuck|randy|jan|pat|cliff|bill)] #LastName'\n )\n .tag('#FirstName', 'maybe-lastname')\n //Jani K. Smith\n lastName\n .match('(#TitleCase|#Singular) #Acronym? #LastName')\n .ifNo('#Date')\n .tag('#Person', 'title-acro-noun')\n .lastTerm()\n .tag('#LastName', 'title-acro-noun')\n }\n }\n\n return doc\n}\nmodule.exports = fixPerson\n","const advb = '(#Adverb|not)+?'\n//\nconst fixVerb = function(doc) {\n let vb = doc.if('#Verb')\n if (vb.found) {\n vb.match('[(do|does|will|have|had)] (not|#Adverb)? #Verb').tag('Auxiliary', 'have-had')\n //still make\n vb.match('[still] #Verb').tag('Adverb', 'still-verb')\n //'u' as pronoun\n vb.match('[u] #Verb').tag('Pronoun', 'u-pronoun-1')\n //is no walk\n vb.match('is no [#Verb]').tag('Noun', 'is-no-verb')\n //different views than\n vb.match('[#Verb] than').tag('Noun', 'correction')\n // smoked poutine is\n vb.match('[#PastTense] #Singular is').tag('#Adjective', 'smoked-poutine')\n // baked onions are\n vb.match('[#PastTense] #Plural are').tag('#Adjective', 'baked-onions')\n // goes to sleep\n vb.match('(go|goes|went) to [#Infinitive]').tag('#Noun', 'goes-to-verb')\n\n //there are reasons\n vb.match('there (are|were) #Adjective? [#PresentTense]').tag('Plural', 'there-are')\n //jack seems guarded\n vb.match('#Singular (seems|appears) #Adverb? [#PastTense$]').tag('Adjective', 'seems-filled')\n //fall over\n vb.match('#PhrasalVerb [#PhrasalVerb]').tag('Particle', 'phrasal-particle')\n //went to sleep\n // vb.match('#Verb to #Verb').lastTerm().tag('Noun', 'verb-to-verb');\n //been walking\n vb.match(`(be|been) ${advb} #Gerund`)\n .not('#Verb$')\n .tag('Auxiliary', 'be-walking')\n\n // directive verb - 'use reverse'\n vb.match('(try|use|attempt|build|make) #Verb')\n .ifNo('(@hasComma|#Negative|#Copula|will|be)')\n .lastTerm()\n .tag('#Noun', 'do-verb')\n //infinitive verbs suggest plural nouns - 'XYZ walk to the store'\n // r.match(`#Singular+ #Infinitive`).match('#Singular+').tag('Plural', 'infinitive-make-plural');\n\n let modal = vb.if('(#Modal|did|had|has)')\n if (modal.found === true) {\n //support a splattering of auxillaries before a verb\n modal\n .match(`(has|had) ${advb} #PastTense`)\n .not('#Verb$')\n .tag('Auxiliary', 'had-walked')\n //would walk\n modal\n .match(`(#Modal|did) ${advb} #Verb`)\n .not('#Verb$')\n .tag('Auxiliary', 'modal-verb')\n //would have had\n modal\n .match(`#Modal ${advb} have ${advb} had ${advb} #Verb`)\n .not('#Verb$')\n .tag('Auxiliary', 'would-have')\n //would be walking\n modal\n .match(`#Modal ${advb} be ${advb} #Verb`)\n .not('#Verb$')\n .tag('Auxiliary', 'would-be')\n //would been walking\n modal\n .match(`(#Modal|had|has) ${advb} been ${advb} #Verb`)\n .not('#Verb$')\n .tag('Auxiliary', 'would-be')\n }\n\n let copula = vb.if('#Copula')\n if (copula.found === true) {\n //was walking\n copula\n .match(`#Copula ${advb} #Gerund`)\n .not('#Verb$')\n .tag('Auxiliary', 'copula-walking')\n //is mark hughes\n copula.match('#Copula [#Infinitive] #Noun').tag('Noun', 'is-pres-noun')\n //\n copula.match('[#Infinitive] #Copula').tag('Noun', 'inf-copula')\n //sometimes not-adverbs\n copula.match('#Copula [(just|alone)]$').tag('Adjective', 'not-adverb')\n //jack is guarded\n copula.match('#Singular is #Adverb? [#PastTense$]').tag('Adjective', 'is-filled')\n //is eager to go\n copula.match('#Copula [#Adjective to] #Verb').tag('Verb', 'adj-to')\n\n //sometimes adverbs - 'pretty good','well above'\n copula\n .match('#Copula (pretty|dead|full|well) (#Adjective|#Noun)')\n .ifNo('@hasComma')\n .tag('#Copula #Adverb #Adjective', 'sometimes-adverb')\n }\n\n //Gerund - 'walking'\n let gerund = vb.if('#Gerund')\n if (gerund.found === true) {\n //walking is cool\n gerund.match('[#Gerund] #Adverb? not? #Copula').tag('Activity', 'gerund-copula')\n //walking should be fun\n gerund.match('[#Gerund] #Modal').tag('Activity', 'gerund-modal')\n //running-a-show\n gerund.match('#Gerund #Determiner [#Infinitive]').tag('Noun', 'running-a-show')\n //setting records\n // doc.match('#Gerund [#PresentTense]').tag('Plural', 'setting-records');\n }\n\n //'will be'\n let willBe = vb.if('will #Adverb? not? #Adverb? be')\n if (willBe.found === true) {\n //will be running (not copula\n if (willBe.has('will #Adverb? not? #Adverb? be #Gerund') === false) {\n //tag it all\n willBe.match('will not? be').tag('Copula', 'will-be-copula')\n //for more complex forms, just tag 'be'\n willBe\n .match('will #Adverb? not? #Adverb? be #Adjective')\n .match('be')\n .tag('Copula', 'be-copula')\n }\n }\n }\n\n //question words\n let m = doc.if('(who|what|where|why|how|when)')\n if (m.found) {\n //the word 'how'\n m.match('^how').tag('QuestionWord', 'how-question')\n m.match('[how] (#Determiner|#Copula|#Modal|#PastTense)').tag('QuestionWord', 'how-is')\n // //the word 'which'\n m.match('^which').tag('QuestionWord', 'which-question')\n m.match('[which] . (#Noun)+ #Pronoun').tag('QuestionWord', 'which-question2')\n m.match('which').tag('QuestionWord', 'which-question3')\n\n //how he is driving\n m.match('[#QuestionWord] #Noun #Copula #Adverb? (#Verb|#Adjective)')\n .unTag('QuestionWord')\n .tag('Conjunction', 'how-he-is-x')\n\n //when i go fishing\n m.match('#QuestionWord #Noun #Adverb? #Infinitive not? #Gerund')\n .unTag('QuestionWord')\n .tag('Conjunction', 'when i go fishing')\n }\n\n return doc\n}\nmodule.exports = fixVerb\n","//\nconst fixAdjective = function(doc) {\n let adj = doc.if('#Adjective')\n if (adj.found) {\n //still good\n adj.match('[still] #Adjective').tag('Adverb', 'still-advb')\n //barely even walk\n adj.match('(barely|hardly) even').tag('#Adverb', 'barely-even')\n //big dreams, critical thinking\n adj.match('#Adjective [#PresentTense]').tag('Noun', 'adj-presentTense')\n //will secure our\n adj.match('will [#Adjective]').tag('Verb', 'will-adj')\n //cheering hard - dropped -ly's\n adj.match('#PresentTense [(hard|quick|long|bright|slow)]').tag('Adverb', 'lazy-ly')\n //his fine\n adj.match('(his|her|its) [#Adjective]').tag('Noun', 'his-fine')\n //he left\n adj.match('#Noun #Adverb? [left]').tag('PastTense', 'left-verb')\n //he disguised the thing\n adj.match('#Pronoun [#Adjective] #Determiner #Adjective? #Noun').tag('Verb', 'he-adj-the')\n }\n return doc\n}\nmodule.exports = fixAdjective\n","const units = '(hundred|thousand|million|billion|trillion|quadrillion|quintillion|sextillion|septillion)'\n\n//\nconst fixValue = function(doc) {\n let val = doc.if('#Value')\n if (val.found === true) {\n //1 800 PhoneNumber\n val.match('1 #Value #PhoneNumber').tag('PhoneNumber', '1-800-Value')\n //(454) 232-9873\n val.match('#NumericValue #PhoneNumber').tag('PhoneNumber', '(800) PhoneNumber')\n //three trains\n val.match('#Value [#PresentTense]').tag('Plural', 'value-presentTense')\n //money\n let m = val.match('#Value+ #Currency')\n m.lastTerm().tag('Unit', 'money-unit')\n m.match('#Value+').tag('Money', 'value-currency')\n }\n //5 kg.\n val.match('#Value #Abbreviation').tag('Value', 'value-abbr')\n //seven point five\n val.match('#Value (point|decimal) #Value').tag('Value', 'value-point-value')\n //minus 7\n val.match('(minus|negative) #Value').tag('Value', 'minus-value')\n // ten grand\n val.match('#Value grand').tag('Value', 'value-grand')\n //quarter million\n val.match('(a|the) [(half|quarter)] #Ordinal').tag('Value', 'half-ordinal')\n //eg 'trillion'\n let mult = val.if(units)\n if (mult.found === true) {\n mult.match('a #Value').tag('Value', 'a-value') //?\n // mult.match('#Ordinal (half|quarter)').tag('Value', 'ordinal-half');//not ready\n mult.match(`${units} and #Value`).tag('Value', 'magnitude-and-value')\n }\n return doc\n}\nmodule.exports = fixValue\n","const preps = '(in|by|before|during|on|until|after|of|within|all)' //6\nconst people = '(january|april|may|june|summer|autumn|jan|sep)' //ambiguous month-names\nconst verbs = '(may|march)' //ambiguous month-verbs\n\nconst fixDates = function(doc) {\n //ambiguous month - person forms\n let person = doc.if(people)\n if (person.found === true) {\n //give to april\n person.match(`#Infinitive #Determiner? #Adjective? #Noun? (to|for) [${people}]`).tag('Person', 'ambig-person')\n //remind june\n person.match(`#Infinitive [${people}]`).tag('Person', 'infinitive-person')\n //may waits for\n person.match(`[${people}] #PresentTense (to|for)`).tag('Person', 'ambig-active')\n //april will\n person.match(`[${people}] #Modal`).tag('Person', 'ambig-modal')\n //would april\n person.match(`#Modal [${people}]`).tag('Person', 'modal-ambig')\n //with april\n person.match(`(that|with|for) [${people}]`).tag('Person', 'that-month')\n //it is may\n person.match(`#Copula [${people}]`).tag('Person', 'is-may')\n //may is\n person.match(`[${people}] #Copula`).tag('Person', 'may-is')\n //april the 5th\n person.match(`[${people}] the? #Value`).tag('Month', 'person-value')\n //wednesday april\n person.match(`#Date [${people}]`).tag('Month', 'correction-may')\n //may 5th\n person.match(`[${people}] the? #Value`).tag('Month', 'may-5th')\n //5th of may\n person.match(`#Value of [${people}]`).tag('Month', '5th-of-may')\n //by april\n person\n .match(`${preps} [${people}]`)\n .ifNo('#Holiday')\n .tag('Month', 'preps-month')\n //this april\n person.match(`(next|this|last) [${people}]`).tag('Month', 'correction-may') //maybe not 'this'\n }\n\n //ambiguous month - verb-forms\n let verb = doc.if(verbs)\n if (verb.found === true) {\n //quickly march\n verb.match(`#Adverb [${verbs}]`).tag('Infinitive', 'ambig-verb')\n verb.match(`${verbs} [#Adverb]`).tag('Infinitive', 'ambig-verb')\n //all march\n verb.match(`${preps} [${verbs}]`).tag('Month', 'in-month')\n //this march\n verb.match(`(next|this|last) [${verbs}]`).tag('Month', 'this-month')\n //with date\n verb.match(`[${verbs}] the? #Value`).tag('Month', 'march-5th')\n verb.match(`#Value of? [${verbs}]`).tag('Month', '5th-of-march')\n //nearby\n verb.match(`[${verbs}] .? #Date`).tag('Month', 'march-and-feb')\n verb.match(`#Date .? [${verbs}]`).tag('Month', 'feb-and-march')\n\n let march = doc.if('march')\n if (march.found === true) {\n //march to\n march.match('[march] (up|down|back|to|toward)').tag('Infinitive', 'march-to')\n //must march\n march.match('#Modal [march]').tag('Infinitive', 'must-march')\n }\n }\n //sun 5th\n let sun = doc.if('sun')\n if (sun.found === true) {\n //sun feb 2\n sun.match('[sun] #Date').tag('WeekDay', 'sun-feb')\n //sun the 5th\n sun\n .match('sun the #Ordinal')\n .tag('Date')\n .firstTerm()\n .tag('WeekDay', 'sun-the-5th')\n //the sun\n sun.match('#Determiner [sun]').tag('Singular', 'the-sun')\n }\n\n //sat, nov 5th\n let sat = doc.if('sat')\n if (sat.found) {\n //sat november\n sat.match('[sat] #Date').tag('WeekDay', 'sat-feb')\n //this sat\n sat.match(`${preps} [sat]`).tag('WeekDay', 'sat')\n }\n\n //months:\n let month = doc.if('#Month')\n if (month.found === true) {\n //June 5-7th\n month.match(`#Month #DateRange+`).tag('Date', 'correction-numberRange')\n //5th of March\n month.match('#Value of #Month').tag('Date', 'value-of-month')\n //5 March\n month.match('#Cardinal #Month').tag('Date', 'cardinal-month')\n //march 5 to 7\n month.match('#Month #Value to #Value').tag('Date', 'value-to-value')\n //march the 12th\n month.match('#Month the #Value').tag('Date', 'month-the-value')\n }\n\n //months:\n let val = doc.if('#Value')\n if (val.found === true) {\n //values\n val.match('#Value #Abbreviation').tag('Value', 'value-abbr')\n //seven point five\n val.match('#Value (point|decimal) #Value').tag('Value', 'value-point-value')\n //minus 7\n val.match('(minus|negative) #Value').tag('Value', 'minus-value')\n // ten grand\n val.match('#Value grand').tag('Value', 'value-grand')\n //quarter million\n val.match('(a|the) [(half|quarter)] #Ordinal').tag('Value', 'half-ordinal')\n //june 7\n val\n .match('(#WeekDay|#Month) #Value')\n .ifNo('#Money')\n .tag('Date', 'date-value')\n\n //7 june\n val\n .match('#Value (#WeekDay|#Month)')\n .ifNo('#Money')\n .tag('Date', 'value-date')\n\n //may twenty five\n val\n .match('#TextValue #TextValue')\n .if('#Date')\n .tag('#Date', 'textvalue-date')\n }\n\n return doc\n}\nmodule.exports = fixDates\n","const fixMisc = require('./fixMisc')\nconst fixDeterminer = require('./fixThe')\nconst fixNouns = require('./fixNouns')\nconst fixPerson = require('./fixPerson')\nconst fixVerb = require('./fixVerb')\nconst fixAdjective = require('./fixAdjective')\nconst fixValue = require('./fixValue')\nconst fixDates = require('./fixDates')\n\n// det: 131.338ms\n// verb: 100.828ms\n// dates: 80.874ms\n// person: 66.054ms\n// nouns: 51.340ms\n// adj: 19.760ms\n// value: 12.950ms\n// misc: 43.359ms\n\n//sequence of match-tag statements to correct mis-tags\nconst corrections = function(doc) {\n // console.time('det')\n fixDeterminer(doc) //27\n // console.timeEnd('det')\n\n // console.time('nouns')\n fixNouns(doc) //30\n // // console.timeEnd('nouns')\n\n // // console.time('person')\n fixPerson(doc) //58\n // // console.timeEnd('person')\n\n // // console.time('verb')\n fixVerb(doc) //50\n // // console.timeEnd('verb')\n\n // // console.time('adj')\n fixAdjective(doc) //8\n // // console.timeEnd('adj')\n\n // // console.time('value')\n fixValue(doc) //12\n // // console.timeEnd('value')\n\n // // console.time('dates')\n fixDates(doc) //92\n // // console.timeEnd('dates')\n\n // // console.time('misc')\n fixMisc(doc) //43\n // console.timeEnd('misc')\n return doc\n}\nmodule.exports = corrections\n","const init = require('./01-init')\nconst fallbacks = require('./02-fallbacks')\nconst contractions = require('./03-contractions')\nconst corrections = require('./04-correction')\n\n/** POS-tag all terms in this document */\nconst tagger = function(doc) {\n let terms = doc.termList()\n // check against any known-words\n doc = init(doc, terms)\n\n // everything has gotta be something. ¯\\_(:/)_/¯\n doc = fallbacks(doc, terms)\n\n // support \"didn't\" & \"spencer's\"\n doc = contractions(doc)\n\n //set our cache, to speed things up\n doc.cache()\n\n // wiggle-around the results, so they make more sense\n doc = corrections(doc)\n\n //remove our cache\n // doc.uncache()\n\n // run any user-given tagger functions\n doc.world.taggers.forEach(fn => {\n fn(doc)\n })\n\n return doc\n}\nmodule.exports = tagger\n","const addMethod = function(Doc) {\n /** */\n class Abbreviations extends Doc {\n stripPeriods() {\n this.termList().forEach(t => {\n if (t.tags.Abbreviation === true && t.next) {\n t.post = t.post.replace(/^\\./, '')\n }\n let str = t.text.replace(/\\./, '')\n t.set(str)\n })\n return this\n }\n addPeriods() {\n this.termList().forEach(t => {\n t.post = t.post.replace(/^\\./, '')\n t.post = '.' + t.post\n })\n return this\n }\n }\n Abbreviations.prototype.unwrap = Abbreviations.prototype.stripPeriods\n\n Doc.prototype.abbreviations = function(n) {\n let match = this.match('#Abbreviation')\n if (typeof n === 'number') {\n match = match.get(n)\n }\n return new Abbreviations(match.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** */\n class Acronyms extends Doc {\n stripPeriods() {\n this.termList().forEach(t => {\n let str = t.text.replace(/\\./g, '')\n t.set(str)\n })\n return this\n }\n addPeriods() {\n this.termList().forEach(t => {\n let str = t.text.replace(/\\./g, '')\n str = str.split('').join('.')\n t.set(str)\n })\n return this\n }\n }\n Acronyms.prototype.unwrap = Acronyms.prototype.stripPeriods\n Acronyms.prototype.strip = Acronyms.prototype.stripPeriods\n\n Doc.prototype.acronyms = function(n) {\n let match = this.match('#Acronym')\n if (typeof n === 'number') {\n match = match.get(n)\n }\n return new Acronyms(match.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** split into approximate sub-sentence phrases */\n Doc.prototype.clauses = function(n) {\n // an awkward way to disambiguate a comma use\n let commas = this.if('@hasComma')\n .notIf('@hasComma @hasComma') //fun, cool...\n .notIf('@hasComma . .? (and|or) .') //cool, and fun\n .notIf('(#City && @hasComma) #Country') //'toronto, canada'\n .notIf('(#Date && @hasComma) #Year') //'july 6, 1992'\n .notIf('@hasComma (too|also)$') //at end of sentence\n .match('@hasComma')\n let found = this.splitAfter(commas)\n\n let quotes = found.quotations()\n found = found.splitOn(quotes)\n\n let parentheses = found.parentheses()\n found = found.splitOn(parentheses)\n\n // it is cool and it is ..\n let conjunctions = found.if('#Copula #Adjective #Conjunction (#Pronoun|#Determiner) #Verb').match('#Conjunction')\n found = found.splitBefore(conjunctions)\n\n // if it is this then that\n let condition = found.if('if .{2,9} then .').match('then')\n found = found.splitBefore(condition)\n\n // misc clause partitions\n found = found.splitBefore('as well as .')\n found = found.splitBefore('such as .')\n found = found.splitBefore('in addition to .')\n\n // semicolons, dashes\n found = found.splitAfter('@hasSemicolon')\n found = found.splitAfter('@hasDash')\n\n // does there appear to have relative/subordinate clause still?\n let tooLong = found.filter(d => d.wordCount() > 5 && d.match('#Verb+').length >= 2)\n if (tooLong.found) {\n let m = tooLong.splitAfter('#Noun .* #Verb .* #Noun+')\n found = found.splitOn(m.eq(0))\n }\n\n if (typeof n === 'number') {\n found = found.get(n)\n }\n return new Doc(found.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** */\n class Contractions extends Doc {\n constructor(list, from, world) {\n super(list, from, world)\n this.contracted = null\n }\n /** turn didn't into 'did not' */\n expand() {\n this.list.forEach(p => {\n let terms = p.terms()\n //change the case?\n let isTitlecase = terms[0].isTitleCase()\n\n terms.forEach((t, i) => {\n //use the implicit text\n // console.log(t.clean)\n t.set(t.implicit || t.text)\n t.implicit = undefined\n\n //add whitespace\n if (i < terms.length - 1 && t.post === '') {\n t.post += ' '\n }\n })\n //set titlecase\n if (isTitlecase) {\n terms[0].toTitleCase()\n }\n })\n return this\n }\n }\n\n //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n Doc.prototype.contractions = function(n) {\n //find currently-contracted\n let found = this.match('@hasContraction+') //(may want to split these up)\n //todo: split consecutive contractions\n if (typeof n === 'number') {\n found = found.get(n)\n }\n return new Contractions(found.list, this, this.world)\n }\n\n //aliases\n Doc.prototype.expanded = Doc.prototype.isExpanded\n Doc.prototype.contracted = Doc.prototype.isContracted\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n //pull it apart..\n const parse = function(doc) {\n let things = doc.splitAfter('@hasComma').not('(and|or) not?')\n let beforeLast = doc.match('[.] (and|or)')\n return {\n things: things,\n conjunction: doc.match('(and|or) not?'),\n beforeLast: beforeLast,\n hasOxford: beforeLast.has('@hasComma'),\n }\n }\n\n /** cool, fun, and nice */\n class Lists extends Doc {\n /** coordinating conjunction */\n conjunctions() {\n return this.match('(and|or)')\n }\n /** split-up by list object */\n parts() {\n return this.splitAfter('(@hasComma|#Conjunction)')\n }\n /** remove the conjunction */\n items() {\n return this.parts().notIf('#Conjunction')\n }\n /** add a new unit to the list */\n add(str) {\n this.forEach(p => {\n let beforeLast = parse(p).beforeLast\n beforeLast.append(str)\n //add a comma to it\n beforeLast.termList(0).addPunctuation(',')\n })\n return this\n }\n /** remove any matching unit from the list */\n remove() {\n return this\n }\n\n /** return only lists that use a serial comma */\n hasOxfordComma() {\n return this.filter(doc => parse(doc).hasOxford)\n }\n addOxfordComma() {\n return this\n }\n removeOxfordComma() {\n return this\n }\n }\n // aliases\n Lists.prototype.things = Lists.prototype.items\n\n Doc.prototype.lists = function(n) {\n let m = this.if('@hasComma+ .? (and|or) not? .')\n\n // person-list\n let nounList = m.match('(#Noun|#Adjective)+ #Conjunction not? #Adjective? #Noun+')\n let adjList = m.match('(#Adjective|#Adverb)+ #Conjunction not? #Adverb? #Adjective+')\n let verbList = m.match('(#Verb|#Adverb)+ #Conjunction not? #Adverb? #Verb+')\n let result = nounList.concat(adjList)\n result = result.concat(verbList)\n result = result.if('@hasComma')\n\n if (typeof n === 'number') {\n result = m.get(n)\n }\n return new Lists(result.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const noPlural =\n '(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)'\n\n//certain words can't be plural, like 'peace'\nconst hasPlural = function(doc) {\n if (doc.has('#Plural') === true) {\n return true\n }\n // these can't be plural\n if (doc.has(noPlural) === true) {\n return false\n }\n return true\n}\n\nmodule.exports = hasPlural\n","'use strict'\n\n//chooses an indefinite aricle 'a/an' for a word\nconst irregulars = {\n hour: 'an',\n heir: 'an',\n heirloom: 'an',\n honest: 'an',\n honour: 'an',\n honor: 'an',\n uber: 'an', //german u\n}\n//pronounced letters of acronyms that get a 'an'\nconst an_acronyms = {\n a: true,\n e: true,\n f: true,\n h: true,\n i: true,\n l: true,\n m: true,\n n: true,\n o: true,\n r: true,\n s: true,\n x: true,\n}\n//'a' regexes\nconst a_regexs = [\n /^onc?e/i, //'wu' sound of 'o'\n /^u[bcfhjkqrstn][aeiou]/i, // 'yu' sound for hard 'u'\n /^eul/i,\n]\n\nconst makeArticle = function(doc) {\n //no 'the john smith', but 'a london hotel'\n if (doc.has('#Person') || doc.has('#Place')) {\n return ''\n }\n //no a/an if it's plural\n if (doc.has('#Plural')) {\n return 'the'\n }\n let str = doc.text('normal').trim()\n //explicit irregular forms\n if (irregulars.hasOwnProperty(str)) {\n return irregulars[str]\n }\n //spelled-out acronyms\n let firstLetter = str.substr(0, 1)\n if (doc.has('^@isAcronym') && an_acronyms.hasOwnProperty(firstLetter)) {\n return 'an'\n }\n //'a' regexes\n for (let i = 0; i < a_regexs.length; i++) {\n if (a_regexs[i].test(str)) {\n return 'a'\n }\n }\n //basic vowel-startings\n if (/^[aeiou]/i.test(str)) {\n return 'an'\n }\n return 'a'\n}\n\nmodule.exports = makeArticle\n","//similar to plural/singularize rules, but not the same\nconst isPlural = [\n /(antenn|formul|nebul|vertebr|vit)ae$/i,\n /(octop|vir|radi|nucle|fung|cact|stimul)i$/i,\n /men$/i,\n /.tia$/i,\n /(m|l)ice$/i,\n]\n\n//similar to plural/singularize rules, but not the same\nconst isSingular = [\n /(ax|test)is$/i,\n /(octop|vir|radi|nucle|fung|cact|stimul)us$/i,\n /(octop|vir)i$/i,\n /(rl)f$/i,\n /(alias|status)$/i,\n /(bu)s$/i,\n /(al|ad|at|er|et|ed|ad)o$/i,\n /(ti)um$/i,\n /(ti)a$/i,\n /sis$/i,\n /(?:(^f)fe|(lr)f)$/i,\n /hive$/i,\n /(^aeiouy|qu)y$/i,\n /(x|ch|ss|sh|z)$/i,\n /(matr|vert|ind|cort)(ix|ex)$/i,\n /(m|l)ouse$/i,\n /(m|l)ice$/i,\n /(antenn|formul|nebul|vertebr|vit)a$/i,\n /.sis$/i,\n /^(?!talis|.*hu)(.*)man$/i,\n]\nmodule.exports = {\n isSingular: isSingular,\n isPlural: isPlural,\n}\n","const rules = require('./_rules')\nconst endS = /s$/\n// double-check this term, if it is not plural, or singular.\n// (this is a partial copy of ./tagger/fallbacks/plural)\n// fallback plural if it ends in an 's'.\nconst isPlural = function(str) {\n // isSingular suffix rules\n if (rules.isSingular.find(reg => reg.test(str))) {\n return false\n }\n // does it end in an s?\n if (endS.test(str) === true) {\n return true\n }\n // is it a plural like 'fungi'?\n if (rules.isPlural.find(reg => reg.test(str))) {\n return true\n }\n return null\n}\nmodule.exports = isPlural\n","const exceptions = {\n he: 'his',\n she: 'hers',\n they: 'theirs',\n we: 'ours',\n i: 'mine',\n you: 'yours',\n\n her: 'hers',\n their: 'theirs',\n our: 'ours',\n my: 'mine',\n your: 'yours',\n}\n\n// turn \"David\" to \"David's\"\nconst toPossessive = function(doc) {\n let str = doc.text('text').trim()\n // exceptions\n if (exceptions.hasOwnProperty(str)) {\n doc.replaceWith(exceptions[str], true, true)\n doc.tag('Possessive', 'toPossessive')\n return\n }\n // flanders'\n if (/s$/.test(str)) {\n str += \"'\"\n doc.replaceWith(str, true, true)\n doc.tag('Possessive', 'toPossessive')\n return\n }\n //normal form:\n str += \"'s\"\n doc.replaceWith(str, true, true)\n doc.tag('Possessive', 'toPossessive')\n return\n}\nmodule.exports = toPossessive\n","// .nouns() supports some noun-phrase-ish groupings\n// pull these apart, if necessary\nconst parse = function(doc) {\n let res = {\n main: doc,\n }\n //support 'mayor of chicago' as one noun-phrase\n if (doc.has('#Noun (of|by|for) .')) {\n let m = doc.splitAfter('[#Noun+]')\n res.main = m.eq(0)\n res.post = m.eq(1)\n }\n return res\n}\nmodule.exports = parse\n","const hasPlural = require('./plural/hasPlural')\nconst getArticle = require('./getArticle')\nconst isPlural = require('./plural/isPlural')\nconst toPossessive = require('./toPossessive')\nconst parse = require('./parse')\n\nconst methods = {\n /** overload the original json with noun information */\n json: function(options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { text: true, normal: true, trim: true, terms: true }\n let res = []\n this.forEach(doc => {\n let json = doc.json(options)[0]\n json.article = getArticle(doc)\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n\n isPlural: function() {\n return this.if('#Plural') //assume tagger has run?\n },\n hasPlural: function() {\n return this.filter(d => hasPlural(d))\n },\n toPlural: function() {\n let toPlural = this.world.transforms.toPlural\n this.forEach(doc => {\n if (doc.has('#Plural') || hasPlural(doc) === false) {\n return\n }\n // double-check it isn't an un-tagged plural\n let main = parse(doc).main\n let str = main.text()\n if (!main.has('#Singular') && isPlural(str) === true) {\n return\n }\n str = toPlural(str, this.world)\n main.replace(str).tag('#Plural')\n })\n return this\n },\n toSingular: function() {\n let toSingular = this.world.transforms.toSingular\n this.forEach(doc => {\n if (doc.has('#Singular') || hasPlural(doc) === false) {\n return\n }\n // double-check it isn't an un-tagged plural\n let main = parse(doc).main\n let str = main.text()\n if (!main.has('#Plural') && isPlural(str) !== true) {\n return\n }\n str = toSingular(str, this.world)\n main.replace(str).tag('#Singular')\n })\n return this\n },\n toPossessive: function() {\n this.forEach(d => {\n toPossessive(d)\n })\n return this\n },\n}\nmodule.exports = methods\n","const methods = require('./methods')\n\nconst addMethod = function(Doc) {\n /** */\n class Nouns extends Doc {}\n // add-in our methods\n Object.assign(Nouns.prototype, methods)\n\n Doc.prototype.nouns = function(n) {\n let match = this.clauses()\n match = match.match('#Noun+ (of|by)? the? #Noun+?')\n //nouns that we don't want in these results, for weird reasons\n match = match.not('#Pronoun')\n match = match.not('(there|these)')\n match = match.not('(#Month|#WeekDay)') //allow Durations, Holidays\n // //allow possessives like \"spencer's\", but not generic ones like,\n match = match.not('(my|our|your|their|her|his)')\n match = match.not('(of|for|by|the)$')\n\n if (typeof n === 'number') {\n match = match.get(n)\n }\n return new Nouns(match.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const open = /\\(/\nconst close = /\\)/\n\nconst addMethod = function(Doc) {\n /** anything between (these things) */\n class Parentheses extends Doc {\n /** remove the parentheses characters */\n unwrap() {\n this.list.forEach(p => {\n let first = p.terms(0)\n first.pre = first.pre.replace(open, '')\n let last = p.lastTerm()\n last.post = last.post.replace(close, '')\n })\n return this\n }\n }\n\n Doc.prototype.parentheses = function(n) {\n let list = []\n this.list.forEach(p => {\n let terms = p.terms()\n //look for opening brackets\n for (let i = 0; i < terms.length; i += 1) {\n const t = terms[i]\n if (open.test(t.pre)) {\n //look for the closing bracket..\n for (let o = i; o < terms.length; o += 1) {\n if (close.test(terms[o].post)) {\n let len = o - i + 1\n list.push(p.buildFrom(t.id, len))\n i = o\n break\n }\n }\n }\n }\n })\n //support nth result\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]]\n } else {\n list = []\n }\n return new Parentheses(list, this, this.world)\n }\n return new Parentheses(list, this, this.world)\n }\n\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** */\n class Possessives extends Doc {\n constructor(list, from, world) {\n super(list, from, world)\n this.contracted = null\n }\n /** turn didn't into 'did not' */\n strip() {\n this.list.forEach(p => {\n let terms = p.terms()\n terms.forEach(t => {\n let str = t.text.replace(/'s$/, '')\n t.set(str || t.text)\n })\n })\n return this\n }\n }\n\n //find contractable, expanded-contractions\n // const findExpanded = r => {\n // let remain = r.not('#Contraction')\n // let m = remain.match('(#Noun|#QuestionWord) (#Copula|did|do|have|had|could|would|will)')\n // m.concat(remain.match('(they|we|you|i) have'))\n // m.concat(remain.match('i am'))\n // m.concat(remain.match('(#Copula|#Modal|do|does|have|has|can|will) not'))\n // return m\n // }\n\n Doc.prototype.possessives = function(n) {\n //find currently-contracted\n let found = this.match('#Noun+? #Possessive')\n //todo: split consecutive contractions\n if (typeof n === 'number') {\n found = found.get(n)\n }\n return new Possessives(found.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const pairs = {\n '\\u0022': '\\u0022', // 'StraightDoubleQuotes'\n '\\uFF02': '\\uFF02', // 'StraightDoubleQuotesWide'\n '\\u0027': '\\u0027', // 'StraightSingleQuotes'\n '\\u201C': '\\u201D', // 'CommaDoubleQuotes'\n '\\u2018': '\\u2019', // 'CommaSingleQuotes'\n '\\u201F': '\\u201D', // 'CurlyDoubleQuotesReversed'\n '\\u201B': '\\u2019', // 'CurlySingleQuotesReversed'\n '\\u201E': '\\u201D', // 'LowCurlyDoubleQuotes'\n '\\u2E42': '\\u201D', // 'LowCurlyDoubleQuotesReversed'\n '\\u201A': '\\u2019', // 'LowCurlySingleQuotes'\n '\\u00AB': '\\u00BB', // 'AngleDoubleQuotes'\n '\\u2039': '\\u203A', // 'AngleSingleQuotes'\n // Prime 'non quotation'\n '\\u2035': '\\u2032', // 'PrimeSingleQuotes'\n '\\u2036': '\\u2033', // 'PrimeDoubleQuotes'\n '\\u2037': '\\u2034', // 'PrimeTripleQuotes'\n // Prime 'quotation' variation\n '\\u301D': '\\u301E', // 'PrimeDoubleQuotes'\n '\\u0060': '\\u00B4', // 'PrimeSingleQuotes'\n '\\u301F': '\\u301E', // 'LowPrimeDoubleQuotesReversed'\n}\n\nconst hasOpen = RegExp('(' + Object.keys(pairs).join('|') + ')')\n\nconst addMethod = function(Doc) {\n /** \"these things\" */\n class Quotations extends Doc {\n /** remove the quote characters */\n unwrap() {\n return this\n }\n }\n\n Doc.prototype.quotations = function(n) {\n let list = []\n this.list.forEach(p => {\n let terms = p.terms()\n //look for opening quotes\n for (let i = 0; i < terms.length; i += 1) {\n const t = terms[i]\n if (hasOpen.test(t.pre)) {\n let char = (t.pre.match(hasOpen) || [])[0]\n let want = pairs[char]\n // if (!want) {\n // console.warn('missing quote char ' + char)\n // }\n //look for the closing bracket..\n for (let o = i; o < terms.length; o += 1) {\n if (terms[o].post.indexOf(want) !== -1) {\n let len = o - i + 1\n list.push(p.buildFrom(t.id, len))\n i = o\n break\n }\n }\n }\n }\n })\n //support nth result\n if (typeof n === 'number') {\n if (list[n]) {\n list = [list[n]]\n } else {\n list = []\n }\n return new Quotations(list, this, this.world)\n }\n return new Quotations(list, this, this.world)\n }\n // alias\n Doc.prototype.quotes = Doc.prototype.quotations\n\n return Doc\n}\nmodule.exports = addMethod\n","// walked => walk - turn a verb into it's root form\nconst toInfinitive = function(parsed, world) {\n let verb = parsed.verb\n\n //1. if it's already infinitive\n let str = verb.text('normal')\n if (verb.has('#Infinitive')) {\n return str\n }\n\n // 2. world transform does the heavy-lifting\n let tense = null\n if (verb.has('#PastTense')) {\n tense = 'PastTense'\n } else if (verb.has('#Gerund')) {\n tense = 'Gerund'\n } else if (verb.has('#PresentTense')) {\n tense = 'PresentTense'\n } else if (verb.has('#Participle')) {\n tense = 'Participle'\n } else if (verb.has('#Actor')) {\n tense = 'Actor'\n }\n return world.transforms.toInfinitive(str, world, tense)\n}\nmodule.exports = toInfinitive\n","// spencer walks -> singular\n// we walk -> plural\n\n// the most-recent noun-phrase, before this verb.\nconst findNoun = function(vb) {\n let noun = vb.lookBehind('#Noun+').last()\n return noun\n}\n\n//sometimes you can tell if a verb is plural/singular, just by the verb\n// i am / we were\n// othertimes you need its subject 'we walk' vs 'i walk'\nconst isPlural = function(parsed) {\n let vb = parsed.verb\n if (vb.has('(are|were|does)') || parsed.auxiliary.has('(are|were|does)')) {\n return true\n }\n if (vb.has('(is|am|do|was)') || parsed.auxiliary.has('(is|am|do|was)')) {\n return false\n }\n //consider its prior noun\n let noun = findNoun(vb)\n if (noun.has('(we|they|you)')) {\n return true\n }\n if (noun.has('#Plural')) {\n return true\n }\n if (noun.has('#Singular')) {\n return false\n }\n return null\n}\nmodule.exports = isPlural\n","const toInfinitive = require('./toInfinitive')\nconst isPlural = require('./isPlural')\n// #Modal : would walk -> 'would not walk'\n// #Copula : is -> 'is not'\n// #PastTense : walked -> did not walk\n// #PresentTense : walks -> does not walk\n// #Gerund : walking: -> not walking\n// #Infinitive : walk -> do not walk\n\nconst toNegative = function(parsed, world) {\n let vb = parsed.verb\n // if it's already negative...\n if (parsed.negative.found) {\n return\n }\n\n // would walk -> would not walk\n if (parsed.auxiliary.found) {\n parsed.auxiliary.eq(0).append('not')\n return\n }\n // is walking -> is not walking\n if (vb.has('(#Copula|will|has|had|do)')) {\n vb.append('not')\n return\n }\n // walked -> did not walk\n if (vb.has('#PastTense')) {\n let inf = toInfinitive(parsed, world)\n vb.replaceWith(inf, true, true)\n vb.prepend('did not')\n return\n }\n // walks -> does not walk\n if (vb.has('#PresentTense')) {\n let inf = toInfinitive(parsed, world)\n vb.replaceWith(inf, true, true)\n if (isPlural(parsed, world)) {\n vb.prepend('do not')\n } else {\n vb.prepend('does not')\n }\n return\n }\n //walking -> not walking\n if (vb.has('#Gerund')) {\n let inf = toInfinitive(parsed, world)\n vb.replaceWith(inf, true, true)\n vb.prepend('not')\n return\n }\n\n //fallback 1: walk -> does not walk\n if (isPlural(parsed, world)) {\n vb.prepend('does not')\n return\n }\n //fallback 2: walk -> do not walk\n vb.prepend('do not')\n return\n}\nmodule.exports = toNegative\n","// turn 'would not really walk up' into parts\nconst parseVerb = function(vb) {\n let parsed = {\n adverb: vb.match('#Adverb+'), // 'really'\n negative: vb.match('#Negative'), // 'not'\n auxiliary: vb.match('#Auxiliary').not('(#Negative|#Adverb)'), // 'will' of 'will go'\n particle: vb.match('#Particle'), // 'up' of 'pull up'\n verb: vb.match('#Verb').not('(#Adverb|#Negative|#Auxiliary|#Particle)'),\n }\n // fallback, if no verb found\n if (!parsed.verb.found) {\n // blank-everything\n Object.keys(parsed).forEach(k => {\n parsed[k] = parsed[k].not('.')\n })\n // it's all the verb\n parsed.verb = vb\n return parsed\n }\n //\n if (parsed.adverb && parsed.adverb.found) {\n let match = parsed.adverb.text('reduced') + '$'\n if (vb.has(match)) {\n parsed.adverbAfter = true\n }\n }\n // console.log(parsed.adverb.json({ index: true })[0])\n return parsed\n}\nmodule.exports = parseVerb\n","const isPlural = require('../isPlural')\n\n/** too many special cases for is/was/will be*/\nconst toBe = parsed => {\n let isI = false\n let plural = isPlural(parsed)\n let isNegative = parsed.negative.found\n //account for 'i is' -> 'i am' irregular\n // if (vb.parent && vb.parent.has('i #Adverb? #Copula')) {\n // isI = true;\n // }\n\n // 'i look', not 'i looks'\n if (parsed.verb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n isI = true\n }\n\n let obj = {\n PastTense: 'was',\n PresentTense: 'is',\n FutureTense: 'will be',\n Infinitive: 'is',\n Gerund: 'being',\n Actor: '',\n PerfectTense: 'been',\n Pluperfect: 'been',\n }\n //\"i is\" -> \"i am\"\n if (isI === true) {\n obj.PresentTense = 'am'\n obj.Infinitive = 'am'\n }\n if (plural) {\n obj.PastTense = 'were'\n obj.PresentTense = 'are'\n obj.Infinitive = 'are'\n }\n if (isNegative) {\n obj.PastTense += ' not'\n obj.PresentTense += ' not'\n obj.FutureTense = 'will not be'\n obj.Infinitive += ' not'\n obj.PerfectTense = 'not ' + obj.PerfectTense\n obj.Pluperfect = 'not ' + obj.Pluperfect\n obj.Gerund = 'not ' + obj.Gerund\n }\n return obj\n}\nmodule.exports = toBe\n","const toInfinitive = require('../toInfinitive')\nconst toBe = require('./toBe')\n\nconst conjugate = function(parsed, world) {\n let verb = parsed.verb\n\n //special handling of 'is', 'will be', etc.\n if (verb.has('#Copula') || (verb.out('normal') === 'be' && parsed.auxiliary.has('will'))) {\n return toBe(parsed, world)\n }\n\n let infinitive = toInfinitive(parsed, world)\n if (!infinitive) {\n return {}\n }\n // console.log(infinitive)\n let forms = world.transforms.conjugate(infinitive, world)\n forms.Infinitive = infinitive\n\n // add particle to phrasal verbs ('fall over')\n if (parsed.particle.found) {\n let particle = parsed.particle.text()\n Object.keys(forms).forEach(k => (forms[k] += ' ' + particle))\n }\n //put the adverb at the end?\n if (parsed.adverb.found) {\n let adverb = parsed.adverb.text()\n if (parsed.adverbAfter === true) {\n Object.keys(forms).forEach(k => (forms[k] += ' ' + adverb))\n } else {\n Object.keys(forms).forEach(k => (forms[k] = adverb + ' ' + forms[k]))\n }\n }\n\n //apply negative\n const isNegative = parsed.negative.found\n if (isNegative) {\n forms.PastTense = 'did not ' + forms.Infinitive\n forms.PresentTense = 'does not ' + forms.Infinitive\n forms.Gerund = 'not ' + forms.Gerund\n }\n //future Tense is pretty straightforward\n if (!forms.FutureTense) {\n if (isNegative) {\n forms.FutureTense = 'will not ' + forms.Infinitive\n } else {\n forms.FutureTense = 'will ' + forms.Infinitive\n }\n }\n if (isNegative) {\n forms.Infinitive = 'not ' + forms.Infinitive\n }\n return forms\n}\nmodule.exports = conjugate\n","const toNegative = require('./toNegative')\nconst parseVerb = require('./parse')\nconst isPlural = require('./isPlural')\nconst conjugate = require('./conjugate')\nconst toInfinitive = require('./toInfinitive')\n\nmodule.exports = {\n /** overload the original json with verb information */\n json: function(options) {\n let n = null\n if (typeof options === 'number') {\n n = options\n options = null\n }\n options = options || { text: true, normal: true, trim: true, terms: true }\n let res = []\n this.forEach(p => {\n let json = p.json(options)[0]\n let parsed = parseVerb(p)\n json.parts = {}\n Object.keys(parsed).forEach(k => {\n json.parts[k] = parsed[k].text('normal')\n })\n json.isNegative = p.has('#Negative')\n json.conjugations = conjugate(parsed, this.world)\n res.push(json)\n })\n if (n !== null) {\n return res[n]\n }\n return res\n },\n\n /** grab the adverbs describing these verbs */\n adverbs: function() {\n let list = []\n // look at internal adverbs\n this.forEach(vb => {\n let advb = parseVerb(vb).adverb\n if (advb.found) {\n list = list.concat(advb.list)\n }\n })\n // look for leading adverbs\n let m = this.lookBehind('#Adverb$')\n if (m.found) {\n list = m.list.concat(list)\n }\n // look for trailing adverbs\n m = this.lookAhead('^#Adverb')\n if (m.found) {\n list = list.concat(m.list)\n }\n return this.buildFrom(list)\n },\n /**return verbs like 'we walk' and not 'spencer walks' */\n isPlural: function() {\n let list = []\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n if (isPlural(parsed, this.world) === true) {\n list.push(vb.list[0])\n }\n })\n return this.buildFrom(list)\n },\n /** return verbs like 'spencer walks' and not 'we walk' */\n isSingular: function() {\n let list = []\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n if (isPlural(parsed, this.world) === false) {\n list.push(vb.list[0])\n }\n })\n return this.buildFrom(list)\n },\n\n /** */\n conjugate: function() {\n let result = []\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let forms = conjugate(parsed, this.world)\n result.push(forms)\n })\n return result\n },\n /** */\n toPastTense: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let str = conjugate(parsed, this.world).PastTense\n if (str) {\n vb.replaceWith(str, false, true)\n // vb.tag('PastTense')\n }\n })\n return this\n },\n /** */\n toPresentTense: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let obj = conjugate(parsed, this.world)\n let str = obj.PresentTense\n // 'i look', not 'i looks'\n if (vb.lookBehind('(i|we) (#Adverb|#Verb)?$').found) {\n str = obj.Infinitive\n }\n if (str) {\n vb.replaceWith(str, false, true)\n vb.tag('PresentTense')\n }\n })\n return this\n },\n /** */\n toFutureTense: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let str = conjugate(parsed, this.world).FutureTense\n if (str) {\n vb.replaceWith(str, false, true)\n vb.tag('FutureTense')\n }\n })\n return this\n },\n /** */\n toInfinitive: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let str = toInfinitive(parsed, this.world)\n if (str) {\n vb.replaceWith(str, false, true)\n vb.tag('Infinitive')\n }\n })\n return this\n },\n /** */\n toGerund: function() {\n this.forEach(vb => {\n let parsed = parseVerb(vb)\n let str = conjugate(parsed, this.world).Gerund\n if (str) {\n vb.replaceWith(str, false, true)\n vb.tag('Gerund')\n }\n })\n return this\n },\n\n /** return only verbs with 'not'*/\n isNegative: function() {\n return this.if('#Negative')\n },\n /** return only verbs without 'not'*/\n isPositive: function() {\n return this.ifNo('#Negative')\n },\n /** add a 'not' to these verbs */\n toNegative: function() {\n this.list.forEach(p => {\n let doc = this.buildFrom([p])\n let parsed = parseVerb(doc)\n toNegative(parsed, doc.world)\n })\n return this\n },\n /** remove 'not' from these verbs */\n toPositive: function() {\n let m = this.match('do not #Verb')\n if (m.found) {\n m.remove('do not')\n }\n return this.remove('#Negative')\n },\n}\n","const methods = require('./methods')\n\nconst addMethod = function(Doc) {\n /** */\n class Verbs extends Doc {}\n // add-in our methods\n Object.assign(Verbs.prototype, methods)\n\n // aliases\n Verbs.prototype.negate = Verbs.prototype.toNegative\n\n Doc.prototype.verbs = function(n) {\n let match = this.match('(#Adverb|#Auxiliary|#Verb|#Negative|#Particle)+')\n // try to ignore leading and trailing adverbs\n match = match.not('^#Adverb+')\n match = match.not('#Adverb+$')\n // handle commas:\n // don't split 'really, really'\n let keep = match.match('(#Adverb && @hasComma) #Adverb')\n // // but split the other commas\n let m = match.not(keep).splitAfter('@hasComma')\n // // combine them back together\n m = m.concat(keep)\n m.sort('index')\n\n //handle slashes?\n\n //ensure there's actually a verb\n m = m.if('#Verb')\n\n //grab (n)th result\n if (typeof n === 'number') {\n m = m.get(n)\n }\n let vb = new Verbs(m.list, this, this.world)\n return vb\n }\n return Doc\n}\nmodule.exports = addMethod\n","const addMethod = function(Doc) {\n /** */\n class People extends Doc {\n // honorifics(){}\n // firstNames(){}\n // lastNames(){}\n // pronouns(){}\n // toPronoun(){}\n // fromPronoun(){}\n }\n\n Doc.prototype.people = function(n) {\n let match = this.splitAfter('@hasComma')\n match = match.match('#Person+')\n\n //grab (n)th result\n if (typeof n === 'number') {\n match = match.get(n)\n }\n return new People(match.list, this, this.world)\n }\n return Doc\n}\nmodule.exports = addMethod\n","const subsets = require('./_simple')\nconst subclass = [\n require('./Abbreviations'),\n require('./Acronyms'),\n require('./Clauses'),\n require('./Contractions'),\n require('./Lists'),\n require('./Nouns'),\n require('./Parentheses'),\n require('./Possessives'),\n require('./Quotations'),\n require('./Verbs'),\n require('./People'),\n]\n\nconst extend = function(Doc) {\n // add basic methods\n Object.keys(subsets).forEach(k => (Doc.prototype[k] = subsets[k]))\n // add subclassed methods\n subclass.forEach(addFn => addFn(Doc))\n return Doc\n}\nmodule.exports = extend\n","const methods = {\n misc: require('./methods'),\n selections: require('../Subset/_simple'),\n}\nconst tagger = require('../02-tagger')\nconst tokenize = require('../01-tokenizer')\nconst extend = require('../Subset')\n\n/** a parsed text object */\nclass Doc {\n constructor(list, from, world) {\n this.list = list\n //quiet these properties in console.logs\n Object.defineProperty(this, 'from', {\n enumerable: false,\n value: from,\n writable: true,\n })\n //borrow some missing data from parent\n if (world === undefined && from !== undefined) {\n world = from.world\n }\n //'world' getter\n Object.defineProperty(this, 'world', {\n enumerable: false,\n value: world,\n // writable: true, //todo: add me?\n })\n //fast-scans for our data\n\n //'found' getter\n Object.defineProperty(this, 'found', {\n get: () => this.list.length > 0,\n })\n //'length' getter\n Object.defineProperty(this, 'length', {\n get: () => this.list.length,\n })\n // this is way easier than .constructor.name...\n Object.defineProperty(this, 'isA', {\n get: () => 'Doc',\n })\n }\n\n /** run part-of-speech tagger on all results*/\n tagger() {\n return tagger(this)\n }\n\n /** pool is stored on phrase objects */\n pool() {\n if (this.list.length > 0) {\n return this.list[0].pool\n }\n return this.all().list[0].pool\n }\n}\n\n/** create a new Document object */\nDoc.prototype.buildFrom = function(list) {\n list = list.map(p => p.clone(true))\n // new this.constructor()\n let doc = new Doc(list, this, this.world)\n return doc\n}\n\n/** create a new Document from plaintext. */\nDoc.prototype.fromText = function(str) {\n let list = tokenize.fromText(str, this.world, this.pool())\n return this.buildFrom(list)\n}\n\nObject.assign(Doc.prototype, methods.misc)\nObject.assign(Doc.prototype, methods.selections)\n\n//add sub-classes\nextend(Doc)\n\n//aliases\nconst aliases = {\n untag: 'unTag',\n and: 'match',\n notIf: 'ifNo',\n only: 'if',\n onlyIf: 'if',\n}\nObject.keys(aliases).forEach(k => (Doc.prototype[k] = Doc.prototype[aliases[k]]))\nmodule.exports = Doc\n","const tokenize = require('./01-tokenizer')\nconst version = require('./_version')\nconst World = require('./World/World')\nconst Doc = require('./Doc/Doc')\n\n//blast-out our word-lists, just once\nlet world = new World()\n\n/** parse and tag text into a compromise object */\nconst nlp = function(text = '', lexicon) {\n if (lexicon) {\n world.addWords(lexicon)\n }\n let list = tokenize.fromText(text, world)\n let doc = new Doc(list, null, world)\n doc.tagger()\n return doc\n}\n\n/** parse text into a compromise object, without running POS-tagging */\nnlp.tokenize = function(text = '', lexicon) {\n if (lexicon) {\n world.addWords(lexicon)\n }\n let list = tokenize.fromText(text, world)\n let doc = new Doc(list, null, world)\n return doc\n}\n\n/** mix in a compromise-plugin */\nnlp.extend = function(fn) {\n fn(Doc, world)\n return this\n}\n\n/** make a deep-copy of the library state */\nnlp.clone = function() {\n world = world.clone()\n return this\n}\n\n/** re-generate a Doc object from .json() results */\nnlp.load = function(json) {\n let list = tokenize.fromJSON(json, world)\n return new Doc(list, null, world)\n}\n\n/** log our decision-making for debugging */\nnlp.verbose = function(bool = true) {\n world.verbose(bool)\n return this\n}\n\n/** current version of the library */\nnlp.version = version\n// alias\nnlp.import = nlp.load\n\nmodule.exports = nlp\n"],"names":["chars","split","makeId","str","text","i","Math","floor","random","length","compact","a","b","c","d","e","f","g","h","I","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","unicode","Object","keys","forEach","killUnicode","join","periodAcronym","oneLetterAcronym","noPeriodAcronym","lowerCaseAcronym","isAcronym","test","hasSlash","clean","toLowerCase","trim","original","replace","reduced","startings","endings","hasApostrophe","minusNumber","parseTerm","pre","post","found","after","normalize","parsed","reduce","word","alias","titleCase","upperCase","exports","toUpperCase","isTitleCase","startQuote","endQuote","punct","indexOf","hasPost","hyphen","Boolean","implicit","wrapMatch","doesMatch","reg","index","id","anything","start","end","undefined","hasOwnProperty","soft","root","tag","tags","method","regex","choices","operator","every","some","result","negative","boring","world","transform","transforms","Plural","toSingular","Verb","Negative","Infinitive","tense","PastTense","Gerund","PresentTense","Participle","Actor","toInfinitive","hasSpace","isUpperCase","options","showPre","showPost","before","normal","titlecase","ProperNoun","Acronym","lowercase","acronyms","whitespace","last","punctuation","hasEllipses","abbreviations","Abbreviation","boringTags","Auxiliary","Possessive","rankTags","term","tagSet","sort","lineage","isA","jsonDefault","offset","bestTag","assign","require$$0","require$$1","require$$2","require$$3","require$$4","padEnd","width","toString","reason","log","console","arr","prototype","call","charAt","substr","addTag","tagset","fns","isVerbose","logTag","down","unTag","notA","addTags","isArray","logUntag","untagAll","canBe","enemies","add","Term","String","obj","prev","next","clone","methods","tagMethods","terms","pool","get","error","push","isShallow","buildFrom","newTerms","map","wantId","lastId","filter","trimEnd","isFirst","isLast","isFull","txt","textOut","lastTerm","endOfSentence","combinePost","match","addWhitespace","beforeTerms","newTerm","stitchIn","main","newPhrase","afterId","afterTerm","beforeId","unique","list","appendPhrase","doc","toStretch","hasId","docs","concat","parents","parent","shouldChange","joinPhrase","starterId","shrinkAll","deleteLength","phrase","find","deletePhrase","set","append","prepend","firstLength","tmp","findIndex","slice","res","json","regs","getAfter","all","getBefore","require$$5","failFast","optional","cache","words","getGreedy","until","count","max","min","greedyTo","nextReg","tryHere","captures","hasNeeds","remain","greedy","skipto","startAt","capture","isImplicit","hasMinMax","andSign","stripStart","stripEnd","stripBoth","parseToken","RegExp","Number","byParentheses","byWords","byArray","postProcess","tokens","captureArr","first","reverse","fromDoc","ids","syntax","input","matchAll","matchOne","minLength","matches","tryMatch","notMatch","ts","current","results","previous","can","Phrase","defineProperty","enumerable","writable","value","matchMethods","aliases","Pool","initSplit","hasSomething","hasEllipse","newLine","hasLetter","startWhitespace","naiive_split","lines","isSentence","abbrevs","lastWord","splitSentences","sentences","chunks","splits","ws","wordlike","isBoundary","naiiveSplit","isSlash","notWord","hasHyphen","combineSlashes","splitHyphens","hyphens","splitWords","carry","addLinks","fromText","splitTerms","phrases","parseTags","tagList","numList","parseInt","num","warn","fromJSON","JSON","parse","tagArr","entity","Noun","Singular","Person","FirstName","MaleName","FemaleName","LastName","Honorific","Place","Country","City","Region","Address","Organization","SportsTeam","School","Company","Uncountable","Pronoun","Activity","Unit","Demonym","FutureTense","Copula","Modal","PerfectTense","Pluperfect","PhrasalVerb","Particle","Value","Ordinal","Cardinal","RomanNumeral","TextValue","NumericValue","Money","Percent","Adjective","Comparable","Comparative","Superlative","NumberRange","Adverb","Date","Month","WeekDay","Determiner","Conjunction","Preposition","QuestionWord","Currency","Expression","Url","PhoneNumber","HashTag","AtMention","Emoji","Emoticon","Email","Condition","colorMap","addColors","color","inferIsA","len","inferNotA","key","inferLineage","validate","inferTags","inferColor","addIn","build","nouns","verbs","values","misc","seq","toAlphaCode","fromCharCode","fromAlphaCode","charCodeAt","encoding","symbols","nodes","exec","symCount","syms","indexFromRef","toArray","unpack","unpack_1","unpack_1$1","Array","addWord","lex","addMore","lexicon","hasCompound","plural","toPlural","conj","conjugate","adjectives","addIrregulars","irregulars","inf","forms","g8","vh1","q1","q2","q3","q4","addendum","alga","alumna","alumnus","analysis","antenna","appendix","avocado","axis","bacillus","barracks","beau","bus","cactus","chateau","child","circus","clothes","corpus","criterion","curriculum","database","deer","diagnosis","echo","embargo","epoch","foot","formula","fungus","genus","goose","halo","hippopotamus","larva","leaf","libretto","loaf","man","matrix","memorandum","modulus","mosquito","mouse","move","nebula","nucleus","octopus","opus","ovum","ox","parenthesis","person","phenomenon","prognosis","quiz","radius","referendum","rodeo","sex","shoe","sombrero","stimulus","stomach","syllabus","synopsis","tableau","thesis","thief","tooth","tornado","tuxedo","vertebra","mapping","prt","perf","pst","fut","pres","pluperf","conjugations","act","age","aim","arise","babysit","ban","be","beat","become","begin","being","bend","bet","bind","bite","bleed","blow","boil","brake","breed","bring","broadcast","budget","burn","burst","buy","choose","cling","come","compete","cost","creep","cut","deal","develop","die","dig","dive","draw","dream","drink","drive","drop","eat","edit","egg","fall","feed","feel","fight","flee","fling","fly","forbid","forget","forgive","free","freeze","give","go","grow","hang","have","hear","hide","hit","hold","hurt","ice","imply","is","keep","kneel","know","lay","lead","leap","leave","lend","lie","light","loose","lose","make","mean","meet","miss","pay","prove","puke","put","quit","read","ride","ring","rise","rub","run","say","seat","see","seek","sell","send","sew","shake","shave","shed","shine","shoot","show","shut","sing","sink","sit","ski","slay","sleep","slide","smash","sneak","speak","speed","spend","spill","spin","spit","spread","spring","stand","steal","stick","sting","stink","stream","strew","strike","suit","sware","swear","sweep","swim","swing","take","teach","tear","tell","think","thrive","tie","undergo","understand","upset","wait","wake","wear","weave","weep","win","wind","withdraw","wring","write","final","full","endsWith","repl","pr","pa","gr","ar","posMap","doTransform","pos","checkSuffix","suffixes","hasY","generic","genericFill","do_rules","dont_rules","nice","late","hard","inner","outer","far","worse","bad","good","big","large","to_superlative","grey","gray","green","yellow","red","well","sad","to_comparative","toSuperlative","toComparative","sup","comp","addE","trySuffix","rules","pluralize","invertObj","invert","to","guessVerb","guessTense","three","guess","two","one","irregs","rule","require$$6","World","defaultTags","unpackWords","lexData","getByTag","bool","addLex","inferTagSet","fn","taggers","plurals","irregular","compounds","postProcessors","stringify","w2","from","addParent","doShallow","wordCount","setRoot","eq","parseSyntax","not","has","lookAhead","lookBehind","befores","tagTerms","safe","why","setTag","detachParent","sub","findStart","lookups","tokenize","keepTags","keepCase","uncache","newPhrases","merge","tmpDoc","tagger","oldTags","tagSafe","replaceWith","arguments","arg","toRemove","showFull","trimPre","trimPost","jsonDefaults","termOffsets","elapsed","offsets","termList","frequency","freq","already","reset","cli","blue","magenta","cyan","black","tagString","debug","module","topk","counts","reduceTags","implied","phraseList","allTags","tagMap","alpha","left","right","byFreq","sortSequential","order","alphabetical","wordcount","seqNames","sequence","sequential","chron","chronological","isPunct","quotes","termArr","hasDash","quotations","adverbs","remove","defaults","emoji","contractions","parentheses","possessives","honorifics","medium","heavy","strip","contraction","expand","unwrap","possessive","splitOn","foundEm","parts","splitAfter","splitBefore","segment","eachTerm","toTitleCase","dehyphenate","toQuotations","removed","increase","postPunct","setContraction","suffix","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","emojis","atmentions","atMentions","phoneNumbers","money","places","organizations","clauses","entities","yup","people","ignore","things","topics","tryMultiple","checkLexicon","foundWords","apostrophes","oneLetterWord","A","checkPunctuation","endChar","romanNumeral","romanNumValid","checkRegex","Adj","Inf","Pres","Sing","Past","Exp","Last","Avb","Plrl","Vb","ea","ia","ic","ly","que","lar","ffy","nny","rmy","azy","oid","mum","ous","sis","rol","ize","ify","zes","nes","ing","teen","tors","amed","ched","ends","oses","fies","ects","nded","cede","tage","gate","vice","tion","cted","ette","llen","ried","gone","made","fore","less","ices","ions","ints","aped","lked","ould","tive","sson","czyk","chuk","enko","akis","nsen","fully","where","wards","urned","tized","eased","ances","tures","ports","ettes","ities","rough","ology","bound","tieth","ishes","tches","nssen","marek","keeper","logist","auskas","teenth","sdottir","opoulos","endRegexs","char","knownSuffixes","suffixMap","emojiReg","isCommaEmoji","raw","isEmoticon","emoticon","tagEmoji","steps","afterThisWord","it","there","because","but","who","his","when","you","very","old","never","beforeThisWord","me","only","him","were","took","himself","went","jr","afterThisPOS","beforeThisPOS","beforeThisPos","afterThisPos","afterKeys","markov","beforeKeys","checkNeighbours","isKnown","foundTag","nextTerm","hasNumber","checkCase","hasPrefix","prefix","checkPrefix","stem","isPlural","isSingular","noPlurals","notPlural","notSingular","checkPlural","orgWords","maybeOrg","Comma","tagOrgs","step","neighbours","fallbacks","hasNegative","wont","cant","cannot","dont","dun","checkNegative","easy","ll","ve","re","checkApostrophe","wanna","gonna","im","alot","ive","imma","whered","whend","howd","whatd","dunno","brb","gtg","irl","tbh","imo","til","rn","twas","doAint","noun","checkIrregulars","hasApostropheS","blacklist","that","isPossessive","twoTerm","isHas","checkPossessive","hasPerfect","checkPerfect","isRange","checkRange","isNumber","createPhrase","firstTerm","miscCorrection","so","which","like","notIf","title","hyph","place","fixThe","det","adj","an","ifNo","fixNouns","org","acronym","poss","maybeNoun","maybeVerb","maybeAdj","maybeDate","maybePlace","fixPerson","hon","ambigNoun","ambigVerb","ambigAdj","ambigDate","ambigPlace","al","firstName","lastName","advb","fixVerb","vb","modal","copula","gerund","willBe","fixAdjective","units","fixValue","val","mult","preps","fixDates","verb","march","sun","sat","month","corrections","fixDeterminer","fixMisc","init","addMethod","Doc","Abbreviations","stripPeriods","Acronyms","commas","conjunctions","condition","tooLong","Contractions","contracted","isTitlecase","expanded","isExpanded","isContracted","beforeLast","conjunction","hasOxford","Lists","addPunctuation","items","lists","nounList","adjList","verbList","noPlural","hasPlural","hour","heir","heirloom","honest","honour","honor","uber","an_acronyms","a_regexs","makeArticle","firstLetter","endS","exceptions","he","she","they","we","her","their","our","my","your","toPossessive","article","getArticle","Nouns","open","close","Parentheses","Possessives","pairs","hasOpen","Quotations","want","findNoun","auxiliary","toNegative","parseVerb","adverb","particle","adverbAfter","toBe","isI","isNegative","out","infinitive","toPastTense","toPresentTense","toFutureTense","toGerund","isPositive","toPositive","Verbs","negate","People","subclass","extend","subsets","addFn","selections","untag","and","onlyIf","nlp","addWords","load","verbose","version"],"mappings":"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"} \ No newline at end of file diff --git a/builds/compromise.min.js b/builds/compromise.min.js index 8eee119c4..9d82e1d06 100644 --- a/builds/compromise.min.js +++ b/builds/compromise.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).nlp=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;nr[t].lineage.length?1:r[e].isA.length>r[t].isA.length?-1:0:0:1}))},M={text:!0,tags:!0,implicit:!0,clean:!1,id:!1,index:!1,offset:!1,whitespace:!1,bestTag:!1},S={json:function(e,t){e=e||{};var n={};return(e=Object.assign({},M,e)).text&&(n.text=this.text),e.normal&&(n.normal=this.normal),e.tags&&(n.tags=Object.keys(this.tags)),e.clean&&(n.clean=this.clean),(e.id||e.offset)&&(n.id=this.id),e.implicit&&null!==this.implicit&&(n.implicit=this.implicit),e.whitespace&&(n.pre=this.pre,n.post=this.post),e.bestTag&&(n.bestTag=I(this,t)[0]),n}},L=Object.assign({},F,N,O,z,S),J=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),n=String(n);var r=E(n);this.text=r.text||"",this.clean=r.clean,this.reduced=r.reduced,this.root=null,this.implicit=null,this.pre=r.pre||"",this.post=r.post||"",this.tags={},this.prev=null,this.next=null,this.id=l(r.clean),this.isA="Term",r.alias&&(this.alias=r.alias)}return r(e,[{key:"set",value:function(e){var t=E(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();ee.prototype.clone=function(){var e=new ee(this.text);return e.pre=this.pre,e.post=this.post,e.tags=Object.assign({},this.tags),e},Object.assign(ee.prototype,L),Object.assign(ee.prototype,Y);var te=ee,ne={terms:function(e){var t=[this.pool.get(this.start)];if(0===this.length)return[];for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0}:"reduced"===e?{titlecase:!1,lowercase:!0,punctuation:!1,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var r=this.terms(),a=!1;r[0]&&null===r[0].prev&&null===r[r.length-1].next&&(a=!0);var i=r.reduce((function(i,o,s){e.last=n&&s===r.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===r.length-1&&n&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&n&&(i=re(i)),e.trim&&(i=i.trim()),i}},ie={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},oe=/[.?!]\s*$/,se=function(e,t){t[0].pre=e[0].pre;var n,r,a=e[e.length-1],i=t[t.length-1];i.post=(n=a.post,r=i.post,oe.test(r)?r+n.match(/\s*$/):n),a.post="",""===a.post&&(a.post+=" ")},ue=function(e,t,n){var r=e.terms();se(r,t.terms()),function(e,t){var n=e.lastTerm().next;(e.lastTerm().next=t.start,t.lastTerm().next=n,n)&&(e.pool.get(n).prev=t.lastTerm().id);var r=e.terms(0).id;r&&(t.terms(0).prev=r)}(e,t);var a,i=[e],o=e.start,s=[n];return(s=s.concat(n.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=(a=i).filter((function(e,t){return a.indexOf(e)===t}))).forEach((function(e){e.length+=t.length})),e},le=/ /,ce=function(e,t,n){var r=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===le.test(t.post)&&(t.post+=" ")}(a),function(e,t,n){var r=n[n.length-1];r.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start);n[0].prev=e.terms(0).prev,e.terms(0).prev=r.id}(e,t,a);var i,o=[e],s=[n];return(s=s.concat(n.parents())).forEach((function(e){var n=e.list.filter((function(e){return e.hasId(r)||e.hasId(t.start)}));o=o.concat(n)})),(o=(i=o).filter((function(e,t){return i.indexOf(e)===t}))).forEach((function(e){e.length+=t.length,e.start===r&&(e.start=t.start)})),e},he=function(e,t){var n=t.pool(),r=e.terms(),a=n.get(r[0].prev)||{},i=n.get(r[r.length-1].next)||{};r[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,n,r){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=n,a.start===t&&(a.start=r.id))})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},de={append:function(e,t){return ue(this,e,t),this},prepend:function(e,t){return ce(this,e,t),this},delete:function(e){return he(this,e),this},replace:function(e,t){var n=this.length;ue(this,e,t);var r=this.buildFrom(this.start,this.length);r.length=n,he(r,t)},splitOn:function(e){var t=this.terms(),n={before:null,match:null,after:null},r=t.findIndex((function(t){return t.id===e.start}));if(-1===r)return n;var a=t.slice(0,r);a.length>0&&(n.before=this.buildFrom(a[0].id,a.length));var i=t.slice(r,r+e.length);i.length>0&&(n.match=this.buildFrom(i[0].id,i.length));var o=t.slice(r+e.length,t.length);return o.length>0&&(n.after=this.buildFrom(o[0].id,o.length,this.pool)),n}},fe={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n={};return e.text&&(n.text=this.text()),e.normal&&(n.normal=this.text("normal")),e.clean&&(n.clean=this.text("clean")),e.reduced&&(n.reduced=this.text("reduced")),e.root&&(n.root=this.text("root")),e.trim&&(n.text&&(n.text=n.text.trim()),n.normal&&(n.normal=n.normal.trim()),n.reduced&&(n.reduced=n.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),n.terms=this.terms().map((function(n){return n.json(e.terms,t)}))),n}},me={lookAhead:function(e){e||(e=".*");var t=this.pool,n=[],r=this.terms();return function e(r){var a=t.get(r);a&&(n.push(a),a.prev&&e(a.next))}(r[r.length-1].next),0===n.length?[]:this.buildFrom(n[0].id,n.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,n=[];return function e(r){var a=t.get(r);a&&(n.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===n.length?[]:this.buildFrom(n[n.length-1].id,n.length).match(e)}},pe=Object.assign({},ne,ae,ie,de,fe,me),ge=function(e,t){if(0===t.length)return!0;for(var n=0;n0)return!0;if(void 0!==e.cache.words&&void 0!==r.word&&!0!==e.cache.words.hasOwnProperty(r.word))return!0}if(!0===r.anything&&!0===r.negative)return!0}return!1},ve=function(e,t,n,r,a,i){for(var o=t;t1&&s.greedy&&a.push(i-1))}else{var l=be(e,i,t[o+1],s,n);if(void 0!==s.min&&l-is.max){i+=s.max;continue}if(null===l)return!1;i=l}}if(a.length>0){for(var c=e.slice(a[0],a[a.length-1]+1),h=0;h1)for(var t=e.map((function(e){return e.capture})),n=t.indexOf(!0),r=t.length-1-t.reverse().indexOf(!0),a=n;a2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=Fe(t)),!0===ge(e,t))return[];var r=t.filter((function(e){return!0!==e.optional})).length,a=e.cache.terms||e.terms(),i=[];if(!0===t[0].start){var o=ye(a,t,0,a.length);return!1!==o&&o.length>0&&i.push(o),i=i.map((function(e){return e.filter((function(e){return e}))}))}for(var s=0;sa.length);s+=1){var u=ye(a.slice(s),t,s,a.length);if(!1!==u&&u.length>0&&(s+=u.length-1,u=u.filter((function(e){return e})),i.push(u),!0===n))return i}return i},je=function(e,t){var n={};Ne(e,t).forEach((function(e){e.forEach((function(e){n[e.id]=!0}))}));var r=e.terms(),a=[],i=[];return r.forEach((function(e){!0!==n[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Be={match:function(e){var t=this,n=Ne(this,e);return n=n.map((function(e){return t.buildFrom(e[0].id,e.length)}))},has:function(e){return Ne(this,e,!0).length>0},not:function(e){var t=this,n=je(this,e);return n=n.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var n=this,r=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return n.buildFrom(e[0].id,e.length)}))}},xe=function e(n,r,a){t(this,e),this.start=n,this.length=r,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}})};xe.prototype.buildFrom=function(e,t){var n=new xe(e,t,this.pool);return this.cache&&(n.cache=this.cache,n.cache.terms=null),n},Object.assign(xe.prototype,Be),Object.assign(xe.prototype,pe);var De={term:"terms"};Object.keys(De).forEach((function(e){return xe.prototype[e]=xe.prototype[De[e]]}));var Oe=xe,Te=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:n})}return r(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();Te.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,n){var r=e.words[n].clone();return t[r.id]=r,t}),{});return new Te(t)};for(var Ve=Te,ze=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,He=/\S/,Ie=/[ .][A-Z]\.? *$/i,Me=/(?:\u2026|\.{2,}) *$/,Se=/((?:\r?\n|\r)+)/,Le=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,Je=/^\s+/,We=function(e,t){if(!0===Ie.test(e))return!1;if(!0===Me.test(e))return!1;if(!1===Le.test(e))return!1;var n=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),r=n[n.length-1].toLowerCase();return!t.hasOwnProperty(r)},_e=function(e,t){var n=t.cache.abbreviations;e=e||"";var r=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===He.test(e))return r;for(var i=function(e){for(var t=[],n=e.split(Se),r=0;r0&&(r.push(l),a[u]="")}if(0===r.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&t.length>0&&(t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&(t.prev=e[n-1].id),e[n+1]&&(t.next=e[n+1].id)}))},tt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;"string"!=typeof e&&"number"==typeof e&&(e=String(e));var r=_e(e,t);r=r.map((function(e){return Ye(e)})),n=n||new Ve;var a=r.map((function(e){return e=e.map((function(e){var t=new te(e);return n.add(t),t})),et(e),new Oe(e[0].id,e.length,n)}));return a},nt=function(e,t){"string"==typeof e&&(e=JSON.parse(e));var n=new Ve;return e.list.map((function(r){var a=Ye(r[0]),i=function(e,t){return e.split("|").map((function(e){var n=e.split(",");return(n=n.map((function(e){return parseInt(e,10)}))).map((function(e){return t[e]||console.warn("Compromise import: missing tag at index "+e),t[e]}))}))}(r[1],e.tags);return a=a.map((function(e,r){var a=new te(e);return i[r].forEach((function(e){return a.tag(e,"",t)})),n.add(a),a})),et(a),new Oe(a[0].id,a.length,n)}))},rt={Comparative:"true¦better",Superlative:"true¦earlier",PresentTense:"true¦is,sounds",Value:"true¦a few",Noun:"true¦a8b7c5e3f2here,ie,lit,m1no doubt,p0tce,vs;d,l;a,d;t,y;g,sp,tc,x0;!p;a,ca,o0;l,rp;a,c,l;d,l,rc",Copula:"true¦a1is,w0;as,ere;m,re",PastTense:"true¦be3came,d2had,meant,sa2taken,w0;as,e0;nt,re;id;en,gan",Condition:"true¦if,unless",Gerund:"true¦accord0be0develop0go0result0stain0;ing",Negative:"true¦n0;ever,o0;!n,t",QuestionWord:"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s",Plural:"true¦records",Conjunction:"true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh",Pronoun:"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s",Singular:"true¦0:0X;1:10;a0Wb0Kc0Bd04e02fXgShOici1jel0kitty,lNmJnIoHpDquestion mark,rBs7t4u2womW;nc0Rs 2;doll0Dst0F; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;ist0Pky,omeone,t2uper bowl,yst0W;ep3ri1u2;de0Pff;faMmoM;al0i1o2;om,se;a4i0Jr3u2;dLrpoD;erogaVobl0O;rt,te0I;bjSceGthers;othi1umb0E;a4ee04o2;del,m2nopo0th0C;!my;n,yf0;i0unch;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em",Actor:"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt",Honorific:"true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al",SportsTeam:"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls",Uncountable:"true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics",Infinitive:"true¦0:6H;1:6V;2:55;3:6S;4:6T;5:5W;6:64;7:6R;8:6N;9:6F;A:6P;B:6M;C:6A;D:6W;a67b5Wc4Yd46e3Qf3Dg37h30i2Nj2Lk2Jl2Am20n1Xo1Tp1Eques3Er0Ms01tTuPvMwFyE;awn,ield;aHe1Thist6iGoEre60;nd0rE;k,ry;pe,sh,th0;lk,nFrEsh,tCve;n,raD;d0t;aFiEo7;ew,sB;l68ry;nFpEr3se;gra4Jli3W;dEi7lo5O;er47o;aKeJhIoHrFuEwi8;ne,rn;aEe0Ki5Ku8y;de,in,nsf0p,v5C;r2VuC;ank,reat2L;nd,st;lk,rg1Ms7;aXcUeThRi48kip,lQmPnee3Ho4WpOtHuEwitC;bmBck,ff0gge8ppFrEspe5;ge,pri1rou4Tvi4;ly,o32;aJeIoHrFuE;dy,mb6;a4NeEi4;ngth2Bss,tC;p,re;m,p;in,ke,r0Oy;la50oil,rink6;e1Vi6o3F;am,ip;a2iv0oE;ck,ut;arCem,le5n1r4tt6;aFo2rE;atCew;le,re;il,ve;a03eGisk,oFuE;in,le,sh;am,ll;aZcXdu9fWgVje5lSmRnt,pOquNsItHvEwa5L;eEiew,o32;al,l,rE;se,t;a41i2u3Y;eHi8oGtE;!o2rE;i5uc1W;l4rt;mb6nt,r4;e8i2;air,eFlEo3XreseD;a9y;at;a3Remb0i3To4;aFeEi4y;a1nt;te,x;a53r0F;act1Uer,le5u1;a0Zei4k5FoEyc6;gni28nci6rd;ch,li27s5D;i1nE;ge,k;aRerQiPlMoKrGuE;b1Xll,mp,rEsh;cha1s4G;ai1eGiDoE;cEdu9greAhibBmi1te8vi2R;eAlaim;di5pa2ss,veD;iDp,rtr3WsEur;e,t;aFuE;g,n3;n,y;ck,le;fo2YmBsi8;ck,iDrt4Css,u1;bGccur,ff0pera7utweFverEwe;co3Xlap,ta1Yu1whelm;igh;ser4ta2Y;eFotE;e,i9;ed,gle5;aJeIiGoFuE;ltip3Ard0;nit10ve;nErr0Z;d,g6us;asu2lt,n0Mr3ssa3;inta2Ona3rFtE;ch,t0;ch,kEry;et;aKeJiGoEu1A;aEck,ok,ve;d,n;ft,ke,mBnFstEve;!en;e,k;a2Bc0Ct;b0Lck,uE;gh,nC;iEno2W;ck,ll,ss;am,o29uE;d3mp;gno2mOnEss39;cMdica7flu0KhLsItGvE;eEol4;nt,st;erErodu9;a5fe2;i8tE;aEru5;ll;abBibB;lu1Cr1A;agi20pE;lemeDo1Yro4;aIeGi2oFuE;nt,rry;n00pe,st;aElp;d,t;nd6ppErm,te;en;aIloAove1KrGuE;arEeAi11;ant30d;aEip,umb6;b,sp;in,th0ze;aOeaNiLlJoGracFuncE;ti3A;tu2;cus,lFrE;ce,eca8m,s2S;d,l1W;a1ToE;at,od,w;gu2lEni1Rx;e,l;r,tu2;il,vE;or;a11cho,le5mQnNstLvalua7xE;a08cJerIi8pEte15;a14eFla12oEreA;rt,se;ct,riE;en9;ci1t;el,han3;abEima7;li1D;ab6couVdFfor9ga3han9j01riCsu2t0vE;isi2Ny;!u2;body,er3pE;hasiEow0;ze;a04eSiJoIrFuE;mp;aFeAiE;ft;g,in;d3ubt;ff0p,re5sFvE;iWor9;aIcFliEmiApl13tingui0Y;ke;oEuA;uEv0;ra3;gr1QppE;ear,ro4;cLem,fJliv0ma0Bny,pIsFterE;mi0C;cribe,er4iFtrE;oy;gn,re;a07e06i5osB;eEi07y;at,ct;iGlFrE;ea1;a2i03;de;ma3n9re,te;a08e07h04i7l02oHrE;aFeEoAu0Dy;a7dB;ck,ve;llXmQnFok,py,uEv0;gh,nt;ceNdu5fKsItGvE;eEin9;rt,y;aNin0PrE;a8ibu7ol;iEtitu7;d0st;iFoEroD;rm;gu2rm;rn;biJfoImaHpE;a2laE;in;re;nd;rt;ne;ap1e5;aEip,o1;im,w;aFeE;at,ck,w;llen3n3r3se;a1nt0;ll,ncFrEt0u1;e,ry;el;aNeKloJoHruGuE;lEry;ly;sh;a8mb,o8rrEth0un9;ow;ck;ar,lFnefBtrE;ay;ie4ong;ng,se;band0Hc09d04ffo03gr02id,lZmu1nWppRrOsIttEvoid,waB;acGeFra5;ct;m0Dnd;h,k;k,sE;eGiFocia7uE;me;gn,st;mb6rt;le;chFgEri4;ue;!i4;eaHlGroE;aCve;ch;aud,y;l,r;noun9sw0tE;icipa7;ce;lFt0;er;e3ow;ee;rd;aPdGju8mBoP;it;st;!reA;ss;cHhie4knowled3tiva7;te;ge;ve;eGouDu1;se;nt;pt;on",Unit:"true¦0:16;a11b0Zc0Ld0Ke0If0Dg09h06in0Ejoule0k00lYmNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Kb,d0Qears old,o1;tt0E;att0b;able4b3e2on1sp;!ne0;a2r0A;!l,sp;spo01; ft,uare 1;c0Fd0Ef3i0Ckilo0Gm1ya0B;e0Jil1;e0li0E;eet0o0A;t,uart0;ascals,e2i1ou0Mt;c0Jnt0;rcent,tZ;hms,uVz;an0GewtQ;/s,b,e7g,i3l,m2p1²,³;h,s;!²;!/h,cro3l1;e1li05;! DsC²;g05s0A;gPter1;! 2s1;! 1;per second;b,iZm,u1x;men0x0;b,elvin0g,ilo2m1nQ;!/h,ph,²;byYgWmeter1;! 2s1;! 1;per hour;e1g,z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s",Organization:"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c",Demonym:"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an",Possessive:"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne",Currency:"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s",City:"true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg",Abbreviation:"true¦a08b05cZdXeUfSgRhQiPjNkanMlKmGnEoDpCque,rAs6t4u3v2w0;is0y00;!c;a,s,t;niv,safa,t;ce,e0;nn,x;ask,e1fc,gt,ir,r,t,u0;pt,rg;nDp0;!t;d,e0;pAs,v;a,d,ennGhd,l,rof,vt;ct,kla,nt,p,rd;eb0ov;!r;a2d,essrs,i1lle,me,r5s0t;!tr;nn,ster;!j,r;it,lb,t0;!d;!s;an,r,u0;l,n;a,da,e,nc;on,wy;a,en,ov;eb,l0t,y;!a;g,s1tc,x0;!p;p,q;ak,e0ist,r;c,pt,t;a3ca,l,m2o0pl,res,t;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d3l2pr,r1ss0tty,ug,ve;n,t;c,iz;!ta;!j,m,v",Place:"true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s",Country:"true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an",Region:"true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma",FemaleName:"true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:EP;6:ER;7:FS;8:GF;9:EZ;A:GB;B:E5;C:FO;D:FL;E:G8;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et5onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s7;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs7tGwa0;ia0um;a,yn;iGya;a,ka,s7;a4e4iGmCAra;!ka;a,t7;at7it7;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet5ie,y;anGi8;!a,e,nG;aDe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs7vannaD;aDi0;ra,y;aGi4;nt7ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lE;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaD;chGe,i0mo0n5EquCDvCy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et5in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t5;aQePiJoGy6;eHrG;aDeCma;ll1mi;aKcIkGla,na,s7ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s7;cy,et5;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eC;h75il9t2;a,cSgOiJjor2l6In2s7tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lEna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri5;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alEd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket5z2;a,et5;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes7na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as7is7oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stC;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s7;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlEri0y;ar5Cer5Cie,leCr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelEd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lEph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et5iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lEquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aDnaD;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolE;acHetGisel9;a,chC;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et5i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileCkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eCis,la,othGthy;ea,y;an09naDonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraDra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et5iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleC;en,t5;aIeoHotG;il4B;!pat4;ir8rIudG;et5iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot5;n1t5;!sa;d4el1PtG;al,el1O;cHlG;es5i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleCrEy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwEok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaDvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt7yl;adHiG;ce;et5iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes7;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t5;an19elG;le;aYdWeUgQiOja,nHtoGya;inet5n3;!aJeHiGmI;e,ka;!mGt5;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t5;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is7jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naD;c7da,leCmLnslKsG;haDlG;inGyW;g,n;!h;ey;ee;en;at7g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lEsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah",WeekDay:"true¦fri4mon4s2t1wed0;!nesd4;hurs2ues2;at0un1;!urd1;!d0;ay0;!s",Month:"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il",FirstName:"true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is",LastName:"true¦0:34;1:39;2:3B;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs1;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu2;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps1;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar2lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch2dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins1;c6ve0F;ci,hards1;ir2os;aEeAh8ic6ow20;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils1guy5ix1owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin2;!o;aCe8i6op2uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen2o6u3;h6nYu3;an6ns1;ss1;ki0Es5;cks1nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs1;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr2;ayli3ub0;m2nzal2;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand2;d7insteHsposi6vaL;to;is1wards;aCeBi9omin8u6;bo6rand;is;gu2;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s1;on;eks7iy8var2;ez;ej6;ev;ams",MaleName:"true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:9V;6:BZ;7:AT;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde5sB;!l7t1;de,lCrr6yB;l1ne;lBt3;a93y;aEern1iB;cCha0nceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l7;lom1nA3uB;leyma8ta;dBl7Jm1;!n7;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n7olfo,ri68;co,ky;bAe9U;cBl7;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub6x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw6;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e5;a78ik;house,o03t1;e,olB;aj;ah,hBk7;a4eB;al,l;hClv2rB;le,ri5v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe5;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha5tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe5;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a5ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd6kGmFrDsCvi3yB;!d6s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d6;an,s0;lEo4FrDuBv7;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr7rge;bri4l6rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym6zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl7nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e5ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne5rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro5y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl7y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n7rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid6ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd6eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on",Person:"true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er",Verb:"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en",PhrasalVerb:"true¦0:71;1:6P;2:7D;3:73;4:6I;5:7G;6:75;7:6O;8:6B;9:6C;A:5H;B:70;C:6Z;a7Gb62c5Cd59e57f45g3Nh37iron0j33k2Yl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit52;d 1k2Q;mp0n49pe0r8s8;eel Bip 7K;aEiD;gh 06rd0;n Br 3C;it 5Jk8lk6rm 0Qsh 73t66v4O;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Fup;ade YiDot0y 32;ckle67p 79;ne66p Ds4C;d2o6Kup;ck FdEe Dgh5Sme0p o0Dre0;aw3ba4d2in,up;e5Jy 1;by,o6U;ink Drow 5U;ba4ov7up;aDe 4Hll4N;m 1r W;ckCke Elk D;ov7u4N;aDba4d2in,o30up;ba4ft7p4Sw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6O; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1LiD;ke 5Xn2X;p Drm1O;by,in,o6A;n2Yr 1tc3H;c2Xmp0nd Dr6Gve6y 1;ba4d2up;d2o66up;ar2Uell0ill4TlErDurC;ingCuc8;a32it 3T;be4Brt0;ap 4Dow B;ash 4Yoke0;eep EiDow 9;c3Mp 1;in,oD;ff,v7;gn Eng2Yt Dz8;d2o5up;in,o5up;aFoDu4E;ot Dut0w 5W;aw3ba4f36o5Q;c2EdeAk4Rve6;e Hll0nd GtD; Dtl42;d2in,o5upD;!on;aw3ba4d2in,o1Xup;o5to;al4Kout0rap4K;il6v8;at0eKiJoGuD;b 4Dle0n Dstl8;aDba4d2in52o3Ft2Zu3D;c1Ww3;ot EuD;g2Jnd6;a1Wf2Qo5;ng 4Np6;aDel6inAnt0;c4Xd D;o2Su0C;aQePiOlMoKrHsyc29uD;ll Ft D;aDba4d2in,o1Gt33up;p38w3;ap37d2in,o5t31up;attleCess EiGoD;p 1;ah1Gon;iDp 52re3Lur44wer 52;nt0;ay3YuD;gAmp 9;ck 52g0leCn 9p3V;el 46ncilA;c3Oir 2Hn0ss FtEy D;ba4o4Q; d2c1X;aw3ba4o11;pDw3J;e3It B;arrow3Serd0oD;d6te3R;aJeHiGoEuD;ddl8ll36;c16p 1uth6ve D;al3Ad2in,o5up;ss0x 1;asur8lt 9ss D;a19up;ke Dn 9r2Zs1Kx0;do,o3Xup;aOeMiHoDuck0;a16c36g 0AoDse0;k Dse34;aft7ba4d2forw2Ain3Vov7uD;nd7p;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fr Dt 1;fDof;rom;in,oO;cZm 1nDve it;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut",Modal:"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld",Adjective:"true¦0:75;1:7K;2:7Q;3:7J;4:7C;5:5C;6:48;7:49;8:4S;9:61;A:7H;B:70;C:6Z;D:73;E:5X;a6Jb65c5Rd57e4Tf49g41h3Qi35j33k32l2Rm2Gn27o1Rp1Aquack,r10s0Gt09uQvNwFyear5;arp0eJholeIiHoF;man5oFu6C;d6Ezy;despr75s5G;!sa7;eGlFste26;co1Il o4L;!k5;aGiFola4B;b7Tce versa,ol55;ca2gabo63nilla;ltWnJpGrb5Asu4tterF;!moC; f34b1OpGsFti1H;ca7et,ide dMtairs;er,i3N;aPbeco6Rconvin27deMeLfair,ivers4knKprecedYrIsGwF;iel20ritt5Z;i1VuF;pervis0specti3;eFu5;cognLgul6Hl6H;own;ndi3v5Txpect0;cid0rF;!grou5OsF;iz0tood;b7ppeaLssu6GuthorF;iz0;i24ra;aJeHhough4PoGrF;i1oubl0;geth8p,rpB;en5QlFm50rr2Ust0;li3;boo,lFn;ent0;aXcWeUhTiRmug,nobbi3EoPpOqueami3EtJuFymb64;bHi gener55pFrprisi3;erFre0L;! dup8b,i29;du0seq4U;anda6UeIi0PrFy38;aightFip0; fFfF;or5B;adfaCreotyp0;aEec2Gir1JlendBot on; call0le,mb8phist1XrFu0Xvi42;dBry;gnifica2nF;ceEg7;am2Pe8ocki3ut;cFda1em5lfi2Yni1Wpa69re6;o1Gr3W;at58ient28reec58;cr0me,ns serif;aMeIiGoF;buCtt4UuSy4;ghtFv4;!-29f9;ar,bel,condi1du63fres52lHpublic3WsFtard0;is48oF;lu1na2;e1Euc46;bBciF;al,st;aQeOicayu6lacBopuliCrGuF;bl5Amp0;eJiGoF;!b0AfuDmi32p8;mGor,sFva1;ti6;a4We;ciDmF;a0IiF;er,um;ac20rFti1;feAma2Uplexi3v34;rFst;allelHtF;-tiFi4;me;!ed;bQffOkNld fashion0nMpLrg1Hth8utKvF;al,erF;!aHniGt,wF;eiFrouF;ght;ll;do0Ver,g2Msi46;en,posi1; boa5Gg2Kli6;!ay; gua5EbFli6;eat;eHsF;cFer0Hole1;e6uE;d2Tse;ak0eMiLoFua4P;nJrGtF;ab7;thF;!eF;rn;chala2descri50stop;ght5;arby,cessa3Xighbor5xt;aNeLiIoFultip7;bi7derGlFnth5ot,st;dy;a1n;nFx0;iaFor;tuE;di4FnaFre;ci3;cFgenta,in,j03keshift,le,mmoth,ny,sculi6;abEho;aOeJiGoFu13;uti12vi3;mGteraF;l,te;it0;ftIgFth4;al,eGitiF;ma1;nda3D;!-0C;nguBst,tt8;ap1Tind5no0A;agg0uF;niOstifi0veni7;de4gno4Clleg4mSnHpso 1WrF;a1releF;va2; NaMbr0corLdJfluenTiTnIsHtF;aAenDoxF;ic37;a6i2S;a1er,oce2;iGoF;or;reA;deq3Kppr2Z;fFsitu,vitro;ro2;mJpF;arHerfeAoFrop8;li1rtF;a2ed;ti4;eFi0R;d2RnD;aKelJiHoFumdr3C;neCok0rrFs07ur5;if2T;ghfalut1PspF;an2R;liZpf9;lInHrF;d05roF;wi3;dy,gi3;f,low0;ainf9ener2Kiga23lLoKraHuF;ilFng ho;ty;cGtF;ef9is;ef9;ne,od;ea2Eob4;aUeOinNlMoHrF;a1UeFoz1L;e2Eq13tf9;oHrF; keeps,eFm8tuna1;g05ign;liF;sh;ag30ue2;al,i1;dJmGrF;ti7;a7ini6;ne;le; up;bl0i2lDr Gux,voF;ri1uri1;oFreac1F;ff;aOfficie2lNmiMnKreAthere4veJxF;aAcess,peHtraGuF;be2Ml0I;!va1E;ct0rt;n,ryday; Fcouragi3tiE;rou1sui1;ne2;abo23dQe18i1;g8sF;t,ygF;oi3;er;aVeNiHoFrea15ue;mina2ne,ubF;le,tf9;dact1Bfficu1OsGvF;erD;creHeas0gruntl0honeCordGtF;a2ress0;er5;et; LadpKfJgene1PliHrang0spe1PtGvoF;ut;ail0ermin0;be1Mca1ghF;tf9;ia2;an;facto;i5magFngeroZs0I;ed,i3;ly;ertaRhief,ivil,oHrF;aFowd0u0H;mp0v02z0;loNmLnGoi3rrFve0P;eAu1I;cre1grIsHtF;emFra0F;po0D;ta2;ue2;mer08pleF;te,x;ni4ss4;in;aPeLizarElJoGrF;and new,isk,okP;gGna fiWttom,urgeoF;is;us;ank,iI;re;autif9hiGlov0nFst,yoG;eVt;nd;ul;ckGnkru0XrrF;en;!wards; priori,b0Nc0Kd0AfraBg05h04lZma06ntiquYpUrOsMttracti07utheLvIwF;aGkF;wa0U;ke,re;ant garGerF;age;de;ntV;leep,tonisF;hi3;ab,bitIroHtiF;fiF;ci4;ga2;raF;ry;pFt;are2etiPrF;oprF;ia1;at0;arIcohGeFiMl,oof;rt;olF;ic;mi3;ead;ainCgressiGoniF;zi3;ve;st;id; MeKuJvF;aGerD;se;nc0;ed;lt;pt,qF;ua1;hoc,infinitF;um;cuGtu4u1;al;ra1;erPlOoMruLsGuF;nda2;e2oGtraA;ct;lu1rbi3;ng;te;pt;aFve;rd;aze,e;ra2;nt",Comparable:"true¦0:40;1:4H;2:44;3:4A;4:2X;5:3W;a4Nb43c3Nd3Ce34f2Qg2Eh23i1Uj1Tk1Ql1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell26ou3;aBe9hi1Xi7r6;o3y;ck0Mde,l6n1ry,se;d,y;a6i4Lt;k,ry;n1Sr6sI;m,y;a7e6ulgar;nge5rda2xi3;gue,in,st;g0n6pco3Lse5;like0ti1;aAen9hi8i7ough,r6;anqu2Pen1ue;dy,g3Tme0ny,r09;ck,n,rs2Q;d41se;ll,me,rt,s6wd46;te5;aVcarUeThRiQkin0FlMmKoHpGqua1GtAu7w6;eet,ift;b7dd14per0Gr6;e,re2I;sta2Gt4;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Gn0V;a1ep,rn;le,rk;e23i3Gright0;ci29ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g36m6;!y;ek,nd3E;ck,l0mp4;a6iTort,rill,y;dy,ll0Yrp;cu0Sve0Sxy;ce,ed,y;d,fe,int0l1Wv15;aBe9i8o6ude;mantic,o1Jsy,u6;gh,nd;ch,pe,tzy;a6d,mo0I;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1RlCoBr8u6;ny,r6;e,p4;egna2ic7o6;fouZud;ey,k0;li05or,te1C;ain,easa2;ny;in5le;dd,f6i0ld,ranR;fi11;aAe8i7o6;b4isy,rm16sy;ce,mb4;a6w;r,t;ive,rr02;aAe8ild,o7u6;nda1Ate;ist,o1;a6ek,llY;n,s0ty;d,tuR;aCeBi9o6ucky;f0Vn7o1Eu6ve0w18y0U;d,sy;e0g;g1Uke0tt4v6;e0i3;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b4id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t4uiY;u1y;aIeeb4iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e5i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd",TextValue:"true¦bMeIfChundredNmMnin9one,qu8s6t0zeroN;enMh3rLw0;e0o;l0ntC;fGve;ir0ousandIree;d,t5;e0ix7;cond,ptEven6xtE;adrDintD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en1;illion0;!th",Ordinal:"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th",Cardinal:"true¦bGeDf7hundred,mGnine9one,qu6s4t0zero;en,h2rFw0;e0o;lve,n7;irt8ousand,ree;e0ix4;ptAven3xtA;adr9int9;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion",Expression:"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAu7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la",Adverb:"true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori",Preposition:"true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut",Determiner:"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er"},at=["Person","Place","Organization"],it={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:at},Actor:{isA:"Noun",notA:at},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:at},Demonym:{isA:["Noun","ProperNoun"],notA:at},Possessive:{isA:"Noun"}},ot={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},st={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},ut=["Noun","Verb","Adjective","Adverb","Value"],lt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Determiner:{notA:ut},Conjunction:{notA:ut},Preposition:{notA:ut},QuestionWord:{notA:["Determiner"]},Currency:{},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},ct={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},ht=function(e){return Object.keys(e).forEach((function(t){ct[t]?e[t].color=ct[t]:e[t].isA.some((function(n){return!!ct[n]&&(e[t].color=ct[n],!0)}))})),e},dt=function(e){return Object.keys(e).forEach((function(t){for(var n=e[t],r=n.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},wt=function(e,t,n){var r=At(t);return r1&&(n.hasCompound[i[0]]=!0),"Singular"===t){var o=a.toPlural(e,n);r[o]=r[o]||"Plural"}if("Infinitive"===t)for(var s=a.conjugate(e,n),u=Object.keys(s),l=0;l0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===Tt.hasOwnProperty(t))for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(n=Object.assign({},t.irregulars.verbs[e])),void 0===(n=Object.assign({},Ht(e),n)).Gerund&&(n.Gerund=Mt.Gerund(e)),void 0===n.PastTense&&(n.PastTense=Mt.PastTense(e)),void 0===n.PresentTense&&(n.PresentTense=Mt.PresentTense(e)),n},Lt=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],Jt=[/ary$/],Wt={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},_t=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],qt=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],Rt=[/ary$/,/ous$/],Kt={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},Qt=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],Ut={toSuperlative:function(e){if(Wt.hasOwnProperty(e))return Wt[e];for(var t=0;t<_t.length;t++)if(_t[t].reg.test(e))return e.replace(_t[t].reg,_t[t].repl);for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=t.irregulars.nouns;if(n.hasOwnProperty(e))return n[e];var r=en(e);return null!==r?r:Yt.test(e)?e+"es":e+"s"},nn=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],rn=function(e,t){var n,r=t.irregulars.nouns,a=(n=r,Object.keys(n).reduce((function(e,t){return e[n[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i0}));return this.buildFrom(n)},t.ifNo=function(e){var t=Fe(e),n=this.list.filter((function(e){return 0===e.match(t).length}));return this.buildFrom(n)},t.has=function(e){var t=Fe(e);return this.list.some((function(e){return!0===e.has(t)}))},t.lookAhead=function(e){e||(e=".*");var t=Fe(e),n=[];return this.list.forEach((function(e){n=n.concat(e.lookAhead(t))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookAfter=t.lookAhead,t.lookBehind=function(e){e||(e=".*");var t=Fe(e),n=[];return this.list.forEach((function(e){n=n.concat(e.lookBehind(t))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookBefore=t.lookBehind,t.before=function(e){var t=Fe(e),n=this.if(t).list.map((function(e){var n=e.terms().map((function(e){return e.id})),r=e.match(t)[0],a=n.indexOf(r.start);return 0===a||-1===a?null:e.buildFrom(e.start,a)}));return n=n.filter((function(e){return null!==e})),this.buildFrom(n)},t.after=function(e){var t=Fe(e),n=this.if(t).list.map((function(e){var n=e.terms(),r=n.map((function(e){return e.id})),a=e.match(t)[0],i=r.indexOf(a.start);if(-1===i||!n[i+a.length])return null;var o=n[i+a.length].id,s=e.length-i-a.length;return e.buildFrom(o,s)}));return n=n.filter((function(e){return null!==e})),this.buildFrom(n)}}))),vn=(gn.match,gn.not,gn.matchOne,gn.ifNo,gn.has,gn.lookAhead,gn.lookAfter,gn.lookBehind,gn.lookBefore,gn.before,gn.after,function(e,t,n,r){var a=[];"string"==typeof e&&(a=e.split(" ")),t.list.forEach((function(i){var o=i.terms();!0===n&&(o=o.filter((function(n){return n.canBe(e,t.world)}))),o.forEach((function(n,i){a.length>1?a[i]&&"."!==a[i]&&n.tag(a[i],r,t.world):n.tag(e,r,t.world)}))}))}),bn={tag:function(e,t){return e?(vn(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(vn(e,this,!0,t),this):this},unTag:function(e,t){var n=this;return this.list.forEach((function(r){r.terms().forEach((function(r){return r.unTag(e,t,n.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,n=this.list.reduce((function(n,r){return n.concat(r.canBe(e,t))}),[]);return this.buildFrom(n)}},yn={map:function(t){var n=this;if(!t)return this;var r=this.list.map((function(e,r){var a=n.buildFrom([e]);a.from=null;var i=t(a,r);return i.list&&i.list[0]?i.list[0]:i}));return 0===r.length?this.buildFrom(r):"object"!==e(r[0])||"Phrase"!==r[0].isA?r:this.buildFrom(r)},forEach:function(e,t){var n=this;return e?(this.list.forEach((function(r,a){var i=n.buildFrom([r]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var n=this.list.filter((function(n,r){var a=t.buildFrom([n]);return a.from=null,e(a,r)}));return this.buildFrom(n)},find:function(e){var t=this;if(!e)return this;var n=this.list.find((function(n,r){var a=t.buildFrom([n]);return a.from=null,e(a,r)}));return n?this.buildFrom([n]):void 0},some:function(e){var t=this;return e?this.list.some((function(n,r){var a=t.buildFrom([n]);return a.from=null,e(a,r)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var n=[this.list[t]];return this.buildFrom(n)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},An=function(e,t){return""!==t&&(e.reduced===t||e.implicit===t||e.root===t||e.text.toLowerCase()===t)},wn={lookup:function(t){var n=this;"string"==typeof t&&(t=[t]);var r=t.map((function(e){e=e.toLowerCase();var t=Ye(e);return t=t.map((function(e){return e.trim()}))}));this.cache();var a=[];return r.forEach((function(t){n.list.forEach((function(n){if(!0===n.cache.words[t[0]]){var r=n.terms(),i=function(t,n){for(var r=function(e){if(An(n[e],t[0])&&t.every((function(t,r){return!0===An(n[e+r],t)})))return{v:n[e].id}},a=0;a0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof n&&this.list[n])return this.list[n].json(r);("root"===(n=Object.assign({},r,n))||"object"===e(n)&&n.root)&&this.list.forEach((function(e){e.terms().forEach((function(e){null===e.root&&e.setRoot(t.world)}))})),n.unique&&(n.reduced=!0),n.offset&&(n.terms=!0===n.terms?{}:n.terms,n.terms.offset=!0),(n.index||n.terms.index)&&(n.terms=!0===n.terms?{}:n.terms,n.terms.id=!0);var i=this.list.map((function(e){return e.json(n,t.world)}));if(n.terms.offset||n.offset||n.terms.index||n.index){var o=a(this.all());(n.terms.index||n.index)&&i.forEach((function(e){e.terms.forEach((function(e){e.index=o[e.id].index})),e.index=e.terms[0].index})),(n.terms.offset||n.offset)&&i.forEach((function(e){e.terms.forEach((function(e){e.offset=o[e.id]||{}}));var t=e.terms.reduce((function(e,t){return e+=t.offset.length||0}),0);e.offset=e.terms[0].offset,e.offset.length=t}))}if(n.frequency||n.freq||n.count){var s={};this.list.forEach((function(e){var t=e.text("reduced");s[t]=s[t]||0,s[t]+=1})),this.list.forEach((function(e,t){i[t].count=s[e.text("reduced")]}))}if(n.unique){var u={};i=i.filter((function(e){return!0!==u[e.reduced]&&(u[e.reduced]=!0,!0)}))}return i},n.data=n.json})),En=(Gn.json,Gn.data,["Person","Place","Organization"]),Cn={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:En},Actor:{isA:"Noun",notA:En},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:En},Demonym:{isA:["Noun","ProperNoun"],notA:En},Possessive:{isA:"Noun"}},Fn={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},Nn={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},jn=["Noun","Verb","Adjective","Adverb","Value"],Bn={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Determiner:{notA:jn},Conjunction:{notA:jn},Preposition:{notA:jn},QuestionWord:{notA:["Determiner"]},Currency:{},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},xn={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Dn=function(e){return Object.keys(e).forEach((function(t){xn[t]?e[t].color=xn[t]:e[t].isA.some((function(n){return!!xn[n]&&(e[t].color=xn[n],!0)}))})),e},On=function(e){return Object.keys(e).forEach((function(t){for(var n=e[t],r=n.isA.length,a=0;at.count?-1:e.countt[n]?-1:1}))).map((function(e){return[e,t[e]]}))}(n);var r={};return n.forEach((function(e,t){r[e[0]]=t})),t=t.map((function(t){var n=t.terms.map((function(t){var n=t.tags;return n=(n=(n=Jn(n,e.world)).map((function(e){return r[e]}))).join(",")}));return n=n.join("|"),[t.text,n]})),{tags:Object.keys(r),list:t}}},_n={alpha:function(e,t){var n=e.text("clean"),r=t.text("clean");return nr?1:0},length:function(e,t){var n=e.text().trim().length,r=t.text().trim().length;return nr?-1:0},wordCount:function(e,t){var n=e.wordCount(),r=t.wordCount();return nr?-1:0}};_n.alphabetical=_n.alpha,_n.wordcount=_n.wordCount;var qn={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},Rn={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(n={},r={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(r);n[t]=n[t]||0,n[t]+=1})),t.list.sort((function(e,t){var a=n[e.text(r)],i=n[t.text(r)];return ai?-1:0})),t):qn.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,n){return t[e.start]>t[n.start]?1:t[e.start]0){a+=o;continue}}void 0!==n[i]&&!0===n.hasOwnProperty(i)&&e[a].tag(n[i],"lexicon",t),i!==e[a].reduced&&!0===n.hasOwnProperty(e[a].reduced)&&e[a].tag(n[e[a].reduced],"lexicon",t)}return e},fr=/[\'‘’‛‵′`´]$/,mr=/^[A-Z]('s|,)?$/,pr={I:!0,A:!0},gr=function(e,t,n){var r=e[t];if(fr.test(r.text)&&!fr.test(r.pre)&&!fr.test(r.post)&&r.clean.length>2){var a=r.clean[r.clean.length-2];if("s"===a)return void r.tag(["Possessive","Noun"],"end-tick",n);"n"===a&&r.tag(["Gerund"],"chillin",n)}!function(e,t){var n=e.reduced;return!!e.tags.Acronym||!(n.length>4&&t.words[n])&&e.isAcronym()}(r,n)?!pr.hasOwnProperty(r.text)&&mr.test(r.text)&&(r.tag("Acronym","one-letter-acronym",n),r.tag("Noun","one-letter-infer",n)):(r.tag("Acronym","acronym-step",n),r.tag("Noun","acronym-infer",n))},vr=[[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[$€¥£][0-9]+(.[0-9]{1,2})?([a-z]{1,4})?$/,["Money","Value"]],[/^[-+]?[$€¥£][0-9]{1,3}(,[0-9]{3})+(.[0-9]{1,2})?$/,["Money","Value"]],[/^[-+]?[0-9]([0-9,.]+)?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^\w+@\w+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w\.\/]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[\-\+]?[0-9]+(\.[0-9])*$/,["Cardinal","NumericValue"]],[/^(over|under)[a-z]{2,}/,"Adjective"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[\-\+]?[0-9][0-9,]*(\.[0-9])*$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(.[0-9]+)?$/,["Cardinal","NumericValue"]],[/^[0-9\.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/,"NumberRange"],[/^[-+]?[0-9.,]{1,3}(,[0-9.,]{3})+(.[0-9]+)?$/,"NumericValue"],[/^.?[0-9]+([0-9,.]+)?%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}$/,"Fraction"],[/^[0-9\.]{1,2}[-–][0-9]{1,2}$/,["Value","NumberRange"]],[/^[0-9][0-9,\.]*(st|nd|rd|r?th)$/,["NumericValue","Ordinal"]],[/[0-9]\+$/,["Cardinal","NumericValue"]],[/^[0-9]+(st|nd|rd|th)$/,"Ordinal"],[/^[0-9\.]+([a-z]{1,4})$/,"Value"]],br=/^[IVXLCDM]{2,}$/,yr=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Ar="Adjective",wr="Infinitive",kr="Singular",$r="PastTense",Pr="Expression",Gr="LastName",Er={a:[[/.[aeiou]na$/,"Noun"],[/.[oau][wvl]ska$/,Gr],[/.[^aeiou]ica$/,kr],[/^([hyj]a)+$/,Pr]],c:[[/.[^aeiou]ic$/,Ar]],d:[[/.[ia]sed$/,Ar],[/.[gt]led$/,Ar],[/.[td]ed$/,$r],[/.[aeiou]red$/,$r],[/.[^aeiou]led$/,$r],[/[^aeiou]ard$/,kr],[/[aeiou][^aeiou]id$/,Ar],[/[aeiou]c?ked$/,$r],[/[^aeiou][aeiou][tvx]ed$/,$r],[/.[vrl]id$/,Ar]],e:[[/.[lnr]ize$/,wr],[/.[^aeiou]ise$/,wr],[/.[aeiou]te$/,wr],[/.[^aeiou][ai]ble$/,Ar],[/.[^aeiou]eable$/,Ar],[/.[ts]ive$/,Ar]],h:[[/.[^aeiouf]ish$/,Ar],[/.v[iy]ch$/,Gr],[/^ug?h+$/,Pr],[/^uh[ -]?oh$/,Pr]],i:[[/.[oau][wvl]ski$/,Gr]],k:[[/^(k)+$/,Pr]],l:[[/.[gl]ial$/,Ar],[/.[^aeiou]ful$/,Ar],[/.[nrtumcd]al$/,Ar],[/.[^aeiou][ei]al$/,Ar]],m:[[/.[^aeiou]ium$/,kr],[/[^aeiou]ism$/,kr],[/^h*u*m+$/,Pr],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Ar],[/[^aeiou]ician$/,"Actor"]],o:[[/^no+$/,Pr],[/^(yo)+$/,Pr],[/^woo+[pt]?$/,Pr]],r:[[/.[bdfklmst]ler$/,"Noun"],[/.[ilk]er$/,"Comparative"],[/[aeiou][pns]er$/,kr],[/[^i]fer$/,wr],[/.[^aeiou][ao]pher$/,"Actor"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Ar],[/[aeiou].*ist$/,Ar],[/^[a-z]et$/,"Verb"]],s:[[/.[rln]ates$/,"PresentTense"],[/.[^z]ens$/,"Verb"],[/.[lstrn]us$/,kr],[/[aeiou][^aeiou]is$/,kr],[/[a-z]\'s$/,"Noun"],[/^yes+$/,Pr]],v:[[/.[^aeiou][ai][kln]ov$/,Gr]],y:[[/.[cts]hy$/,Ar],[/.[st]ty$/,Ar],[/.[gk]y$/,Ar],[/.[tnl]ary$/,Ar],[/.[oe]ry$/,kr],[/[rdntkbhs]ly$/,"Adverb"],[/...lly$/,"Adverb"],[/[bszmp]{2}y$/,Ar],[/.(gg|bb|zz)ly$/,Ar],[/.[aeiou]my$/,Ar],[/[ea]{2}zy$/,Ar],[/.[^aeiou]ity$/,kr]]},Cr="Adjective",Fr="Infinitive",Nr="PresentTense",jr="Singular",Br="PastTense",xr="Adverb",Dr="Plural",Or="Verb",Tr="LastName",Vr=[null,null,{ea:jr,ia:"Noun",ic:Cr,ly:xr,"'n":Or,"'t":Or},{que:Cr,lar:Cr,ffy:Cr,nny:Cr,rmy:Cr,azy:Cr,oid:Cr,mum:Cr,ous:Cr,end:Or,sis:jr,rol:jr,ize:Fr,ify:Fr,zes:Nr,nes:Nr,ing:"Gerund"," so":xr,"'ll":"Modal","'re":"Copula"},{teen:"Value",tors:"Noun",amed:Br,ched:Br,ends:Or,oses:Nr,fies:Nr,ects:Nr,nded:Br,cede:Fr,tage:Fr,gate:Fr,vice:jr,tion:jr,cted:Br,ette:jr,some:Cr,llen:Cr,ried:Cr,gone:Cr,made:Cr,fore:xr,less:xr,ices:Dr,ions:Dr,ints:Dr,aped:Br,lked:Br,ould:"Modal",tive:"Actor",sson:Tr,czyk:Tr,chuk:Tr,enko:Tr,akis:Tr,nsen:Tr},{fully:xr,where:xr,wards:xr,urned:Br,tized:Br,eased:Br,ances:Dr,tures:Dr,ports:Dr,ettes:Dr,ities:Dr,rough:Cr,ology:"Noun",bound:Cr,tieth:"Ordinal",ishes:Nr,tches:Nr,nssen:Tr,marek:Tr},{keeper:"Actor",logist:"Actor",auskas:Tr,teenth:"Value"},{sdottir:Tr,opoulos:Tr}],zr={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"=2&&br.test(n)&&yr.test(n)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var n=e.clean.length,r=7;n<=r&&(r=n-1);for(var a=r;a>1;a-=1){var i=e.clean.substr(n-a,n);if(!0===Vr[i.length].hasOwnProperty(i)){var o=Vr[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var n=e.clean,r=n[n.length-1];if(!0===Er.hasOwnProperty(r))for(var a=Er[r],i=0;i35)))}(r=r.trim())&&(e.tag("Emoji","comma-emoji",t),e.text=r,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(Hr)&&(e.tag("Emoji","unicode-emoji",t),e.text=r),!0===(n=(n=r).replace(/^[:;]/,":"),zr.hasOwnProperty(n))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=r)}},Mr=function(e){var t=e.termList(),n=e.world;Ir.lexicon(t,n);for(var r=0;r3&&void 0!==n[r]&&!0===n.hasOwnProperty(r)&&e.tag(n[r],"stem-"+r,t)}}))},Xr={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},Zr=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],Yr=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],ea=[/i$/,/ae$/],ta=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var n=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(n.length<=3)return void e.tag("Singular","short-singular",t);if(Zr.find((function(t){return e.tags[t]})))return;if(Xr.isPlural.find((function(e){return e.test(n)})))return void e.tag("Plural","plural-rules",t);if(Xr.isSingular.find((function(e){return e.test(n)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(n)){if(Yr.find((function(e){return e.test(n)})))return;return void e.tag("Plural","plural-fallback",t)}if(ea.find((function(e){return e.test(n)})))return;e.tag("Singular","singular-fallback",t)}},na=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),ra=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},aa={neighbours:Wr,case:Rr,stem:Ur,plural:ta,organizations:function(e,t){for(var n=0;n5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");r=r.splitOn(l.eq(0))}return"number"==typeof t&&(r=r.get(t)),new e(r.list,this,this.world)},e},Ra=function(e){var n=function(e){function n(e,r,a){var o;return t(this,n),(o=s(this,i(n).call(this,e,r,a))).contracted=null,o}return a(n,e),r(n,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),n=t[0].isTitleCase();t.forEach((function(e,n){e.set(e.implicit||e.text),e.implicit=void 0,n0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return r(e,[{key:"tagger",value:function(){return Ja(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();Pi.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new Pi(e,this,this.world)},Pi.prototype.fromText=function(e){var t=tt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(Pi.prototype,$i.misc),Object.assign(Pi.prototype,$i.selections),ki(Pi);var Gi={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(Gi).forEach((function(e){return Pi.prototype[e]=Pi.prototype[Gi[e]]}));var Ei=Pi,Ci=new fn,Fi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&Ci.addWords(t);var n=tt(e,Ci),r=new Ei(n,null,Ci);return r.tagger(),r};return Fi.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&Ci.addWords(t);var n=tt(e,Ci),r=new Ei(n,null,Ci);return r},Fi.extend=function(e){return e(Ei,Ci),this},Fi.clone=function(){return Ci=Ci.clone(),this},Fi.load=function(e){var t=nt(e,Ci);return new Ei(t,null,Ci)},Fi.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return Ci.verbose(e),this},Fi.version="12.0.0-rc3",Fi.import=Fi.load,Fi})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).nlp=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;nr[t].lineage.length?1:r[e].isA.length>r[t].isA.length?-1:0:0:1}))},M={text:!0,tags:!0,implicit:!0,clean:!1,id:!1,index:!1,offset:!1,whitespace:!1,bestTag:!1},S={json:function(e,t){e=e||{};var n={};return(e=Object.assign({},M,e)).text&&(n.text=this.text),e.normal&&(n.normal=this.normal),e.tags&&(n.tags=Object.keys(this.tags)),e.clean&&(n.clean=this.clean),(e.id||e.offset)&&(n.id=this.id),e.implicit&&null!==this.implicit&&(n.implicit=this.implicit),e.whitespace&&(n.pre=this.pre,n.post=this.post),e.bestTag&&(n.bestTag=I(this,t)[0]),n}},L=Object.assign({},F,N,O,z,S),J=function(e,t){for(e=e.toString();e.length0&&void 0!==arguments[0]?arguments[0]:"";t(this,e),n=String(n);var r=E(n);this.text=r.text||"",this.clean=r.clean,this.reduced=r.reduced,this.root=null,this.implicit=null,this.pre=r.pre||"",this.post=r.post||"",this.tags={},this.prev=null,this.next=null,this.id=l(r.clean),this.isA="Term",r.alias&&(this.alias=r.alias)}return r(e,[{key:"set",value:function(e){var t=E(e);return this.text=t.text,this.clean=t.clean,this}}]),e}();ee.prototype.clone=function(){var e=new ee(this.text);return e.pre=this.pre,e.post=this.post,e.tags=Object.assign({},this.tags),e},Object.assign(ee.prototype,L),Object.assign(ee.prototype,Y);var te=ee,ne={terms:function(e){var t=[this.pool.get(this.start)];if(0===this.length)return[];for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;"string"==typeof e&&(e="normal"===e?{whitespace:!0,unicode:!0,lowercase:!0,punctuation:!0,acronyms:!0,abbreviations:!0,implicit:!0,normal:!0}:"clean"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0}:"reduced"===e?{titlecase:!1,lowercase:!0,punctuation:!1,whitespace:!0,unicode:!0,implicit:!0,reduced:!0}:"root"===e?{titlecase:!1,lowercase:!0,punctuation:!0,whitespace:!0,unicode:!0,implicit:!0,root:!0}:{});var r=this.terms(),a=!1;r[0]&&null===r[0].prev&&null===r[r.length-1].next&&(a=!0);var i=r.reduce((function(i,o,s){e.last=n&&s===r.length-1;var u=!0,l=!0;return!1===a&&(0===s&&t&&(u=!1),s===r.length-1&&n&&(l=!1)),i+o.textOut(e,u,l)}),"");return!0===a&&n&&(i=re(i)),e.trim&&(i=i.trim()),i}},ie={trim:function(){var e=this.terms();if(e.length>0){e[0].pre=e[0].pre.replace(/^\s+/,"");var t=e[e.length-1];t.post=t.post.replace(/\s+$/,"")}return this}},oe=/[.?!]\s*$/,se=function(e,t){t[0].pre=e[0].pre;var n,r,a=e[e.length-1],i=t[t.length-1];i.post=(n=a.post,r=i.post,oe.test(r)?r+n.match(/\s*$/):n),a.post="",""===a.post&&(a.post+=" ")},ue=function(e,t,n){var r=e.terms();se(r,t.terms()),function(e,t){var n=e.lastTerm().next;(e.lastTerm().next=t.start,t.lastTerm().next=n,n)&&(e.pool.get(n).prev=t.lastTerm().id);var r=e.terms(0).id;r&&(t.terms(0).prev=r)}(e,t);var a,i=[e],o=e.start,s=[n];return(s=s.concat(n.parents())).forEach((function(e){var t=e.list.filter((function(e){return e.hasId(o)}));i=i.concat(t)})),(i=(a=i).filter((function(e,t){return a.indexOf(e)===t}))).forEach((function(e){e.length+=t.length})),e},le=/ /,ce=function(e,t,n){var r=e.start,a=t.terms();!function(e){var t=e[e.length-1];!1===le.test(t.post)&&(t.post+=" ")}(a),function(e,t,n){var r=n[n.length-1];r.next=e.start;var a=e.pool,i=a.get(e.start);i.prev&&(a.get(i.prev).next=t.start);n[0].prev=e.terms(0).prev,e.terms(0).prev=r.id}(e,t,a);var i,o=[e],s=[n];return(s=s.concat(n.parents())).forEach((function(e){var n=e.list.filter((function(e){return e.hasId(r)||e.hasId(t.start)}));o=o.concat(n)})),(o=(i=o).filter((function(e,t){return i.indexOf(e)===t}))).forEach((function(e){e.length+=t.length,e.start===r&&(e.start=t.start)})),e},he=function(e,t){var n=t.pool(),r=e.terms(),a=n.get(r[0].prev)||{},i=n.get(r[r.length-1].next)||{};r[0].implicit&&a.implicit&&(a.set(a.implicit),a.post+=" "),function(e,t,n,r){var a=e.parents();a.push(e),a.forEach((function(e){var a=e.list.find((function(e){return e.hasId(t)}));a&&(a.length-=n,a.start===t&&(a.start=r.id))})),e.list=e.list.filter((function(e){return!(!e.start||!e.length)}))}(t,e.start,e.length,i),a&&(a.next=i.id),i&&(i.prev=a.id)},de={append:function(e,t){return ue(this,e,t),this},prepend:function(e,t){return ce(this,e,t),this},delete:function(e){return he(this,e),this},replace:function(e,t){var n=this.length;ue(this,e,t);var r=this.buildFrom(this.start,this.length);r.length=n,he(r,t)},splitOn:function(e){var t=this.terms(),n={before:null,match:null,after:null},r=t.findIndex((function(t){return t.id===e.start}));if(-1===r)return n;var a=t.slice(0,r);a.length>0&&(n.before=this.buildFrom(a[0].id,a.length));var i=t.slice(r,r+e.length);i.length>0&&(n.match=this.buildFrom(i[0].id,i.length));var o=t.slice(r+e.length,t.length);return o.length>0&&(n.after=this.buildFrom(o[0].id,o.length,this.pool)),n}},fe={json:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n={};return e.text&&(n.text=this.text()),e.normal&&(n.normal=this.text("normal")),e.clean&&(n.clean=this.text("clean")),e.reduced&&(n.reduced=this.text("reduced")),e.root&&(n.root=this.text("root")),e.trim&&(n.text&&(n.text=n.text.trim()),n.normal&&(n.normal=n.normal.trim()),n.reduced&&(n.reduced=n.reduced.trim())),e.terms&&(!0===e.terms&&(e.terms={}),n.terms=this.terms().map((function(n){return n.json(e.terms,t)}))),n}},me={lookAhead:function(e){e||(e=".*");var t=this.pool,n=[],r=this.terms();return function e(r){var a=t.get(r);a&&(n.push(a),a.prev&&e(a.next))}(r[r.length-1].next),0===n.length?[]:this.buildFrom(n[0].id,n.length).match(e)},lookBehind:function(e){e||(e=".*");var t=this.pool,n=[];return function e(r){var a=t.get(r);a&&(n.push(a),a.prev&&e(a.prev))}(t.get(this.start).prev),0===n.length?[]:this.buildFrom(n[n.length-1].id,n.length).match(e)}},pe=Object.assign({},ne,ae,ie,de,fe,me),ge=function(e,t){if(0===t.length)return!0;for(var n=0;n0)return!0;if(void 0!==e.cache.words&&void 0!==r.word&&!0!==e.cache.words.hasOwnProperty(r.word))return!0}if(!0===r.anything&&!0===r.negative)return!0}return!1},ve=function(e,t,n,r,a,i){for(var o=t;t1&&s.greedy&&a.push(i-1))}else{var l=be(e,i,t[o+1],s,n);if(void 0!==s.min&&l-is.max){i+=s.max;continue}if(null===l)return!1;i=l}}if(a.length>0){for(var c=e.slice(a[0],a[a.length-1]+1),h=0;h1)for(var t=e.map((function(e){return e.capture})),n=t.indexOf(!0),r=t.length-1-t.reverse().indexOf(!0),a=n;a2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof t&&(t=Fe(t)),!0===ge(e,t))return[];var r=t.filter((function(e){return!0!==e.optional})).length,a=e.cache.terms||e.terms(),i=[];if(!0===t[0].start){var o=ye(a,t,0,a.length);return!1!==o&&o.length>0&&i.push(o),i=i.map((function(e){return e.filter((function(e){return e}))}))}for(var s=0;sa.length);s+=1){var u=ye(a.slice(s),t,s,a.length);if(!1!==u&&u.length>0&&(s+=u.length-1,u=u.filter((function(e){return e})),i.push(u),!0===n))return i}return i},je=function(e,t){var n={};Ne(e,t).forEach((function(e){e.forEach((function(e){n[e.id]=!0}))}));var r=e.terms(),a=[],i=[];return r.forEach((function(e){!0!==n[e.id]?i.push(e):i.length>0&&(a.push(i),i=[])})),i.length>0&&a.push(i),a},Be={match:function(e){var t=this,n=Ne(this,e);return n=n.map((function(e){return t.buildFrom(e[0].id,e.length)}))},has:function(e){return Ne(this,e,!0).length>0},not:function(e){var t=this,n=je(this,e);return n=n.map((function(e){return t.buildFrom(e[0].id,e.length)}))},canBe:function(e,t){for(var n=this,r=[],a=this.terms(),i=!1,o=0;o0})).map((function(e){return n.buildFrom(e[0].id,e.length)}))}},xe=function e(n,r,a){t(this,e),this.start=n,this.length=r,this.isA="Phrase",Object.defineProperty(this,"pool",{enumerable:!1,writable:!0,value:a}),Object.defineProperty(this,"cache",{enumerable:!1,writable:!0,value:{}})};xe.prototype.buildFrom=function(e,t){var n=new xe(e,t,this.pool);return this.cache&&(n.cache=this.cache,n.cache.terms=null),n},Object.assign(xe.prototype,Be),Object.assign(xe.prototype,pe);var De={term:"terms"};Object.keys(De).forEach((function(e){return xe.prototype[e]=xe.prototype[De[e]]}));var Oe=xe,Te=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.defineProperty(this,"words",{enumerable:!1,value:n})}return r(e,[{key:"add",value:function(e){return this.words[e.id]=e,this}},{key:"get",value:function(e){return this.words[e]}},{key:"remove",value:function(e){delete this.words[e]}},{key:"merge",value:function(e){return Object.assign(this.words,e.words),this}},{key:"stats",value:function(){return{words:Object.keys(this.words).length}}}]),e}();Te.prototype.clone=function(){var e=this,t=Object.keys(this.words).reduce((function(t,n){var r=e.words[n].clone();return t[r.id]=r,t}),{});return new Te(t)};for(var Ve=Te,ze=/(\S.+?[.!?\u203D\u2E18\u203C\u2047-\u2049])(?=\s+|$)/g,He=/\S/,Ie=/[ .][A-Z]\.? *$/i,Me=/(?:\u2026|\.{2,}) *$/,Se=/((?:\r?\n|\r)+)/,Le=/[a-z0-9\u00C0-\u00FF\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]/i,Je=/^\s+/,We=function(e,t){if(!0===Ie.test(e))return!1;if(!0===Me.test(e))return!1;if(!1===Le.test(e))return!1;var n=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),r=n[n.length-1].toLowerCase();return!t.hasOwnProperty(r)},_e=function(e,t){var n=t.cache.abbreviations;e=e||"";var r=[],a=[];if(!(e=String(e))||"string"!=typeof e||!1===He.test(e))return r;for(var i=function(e){for(var t=[],n=e.split(Se),r=0;r0&&(r.push(l),a[u]="")}if(0===r.length)return[e];for(var c=1;c0?(t[t.length-1]+=i,t.push(s)):t.push(i+s),i=""):i+=s}return i&&t.length>0&&(t[t.length-1]+=i),t=(t=function(e){for(var t=1;t0&&(t.prev=e[n-1].id),e[n+1]&&(t.next=e[n+1].id)}))},tt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;"string"!=typeof e&&"number"==typeof e&&(e=String(e));var r=_e(e,t);r=r.map((function(e){return Ye(e)})),n=n||new Ve;var a=r.map((function(e){return e=e.map((function(e){var t=new te(e);return n.add(t),t})),et(e),new Oe(e[0].id,e.length,n)}));return a},nt=function(e,t){"string"==typeof e&&(e=JSON.parse(e));var n=new Ve;return e.list.map((function(r){var a=Ye(r[0]),i=function(e,t){return e.split("|").map((function(e){var n=e.split(",");return(n=n.map((function(e){return parseInt(e,10)}))).map((function(e){return t[e]||console.warn("Compromise import: missing tag at index "+e),t[e]}))}))}(r[1],e.tags);return a=a.map((function(e,r){var a=new te(e);return i[r].forEach((function(e){return a.tag(e,"",t)})),n.add(a),a})),et(a),new Oe(a[0].id,a.length,n)}))},rt={Comparative:"true¦better",Superlative:"true¦earlier",PresentTense:"true¦is,sounds",Value:"true¦a few",Noun:"true¦a8b7c5e3f2here,ie,lit,m1no doubt,p0tce,vs;d,l;a,d;t,y;g,sp,tc,x0;!p;a,ca,o0;l,rp;a,c,l;d,l,rc",Copula:"true¦a1is,w0;as,ere;m,re",PastTense:"true¦be3came,d2had,meant,sa2taken,w0;as,e0;nt,re;id;en,gan",Condition:"true¦if,unless",Gerund:"true¦accord0be0develop0go0result0stain0;ing",Negative:"true¦n0;ever,o0;!n,t",QuestionWord:"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s",Plural:"true¦records",Conjunction:"true¦&,aEbAcuz,how8in caDno7o6p4supposing,t1vers5wh0yet;eth8ile;h0o;eref9o0;!uC;l0rovided that;us;r,therwi6; matt1r;!ev0;er;e0ut;cau1f0;ore;se;lthou1nd,s 0;far as,if;gh",Pronoun:"true¦'em,elle,h4i3me,ourselves,she5th1us,we,you0;!rself;e0ou;m,y;!l,t;e0im;!'s",Singular:"true¦0:0X;1:10;a0Wb0Kc0Bd04e02fXgShOici1jel0kitty,lNmJnIoHpDquestion mark,rBs7t4u2womW;nc0Rs 2;doll0Dst0F; rex,a3h2ic,ragedy,v show;ere,i1;l0x return;ist0Pky,omeone,t2uper bowl,yst0W;ep3ri1u2;de0Pff;faMmoM;al0i1o2;om,se;a4i0Jr3u2;dLrpoD;erogaVobl0O;rt,te0I;bjSceGthers;othi1umb0E;a4ee04o2;del,m2nopo0th0C;!my;n,yf0;i0unch;ead start,o2;l0me3u2;se;! run;adf0entlem5irlZlaci04od,rand3u2;l0y; slam,fa2mo2;th01;an;a5ella,ly,ol0r3un2;di1;iTo2;ntiWsN;mi0thV;conomy,gg,ner5veWx2;ampQecu7;ad7e4innSo2ragonf0ude;cumentFg2i0l0or;gy;ath,t2;ec2;tive;!dy;a8eili1h6i4o2redit card;ttage,u2;riJsin;ty,vil w2;ar;andeliGocol2;ate;n2rD;ary;aAel0lesHo6r4u2;n2tterf0;ti1;eakfast,o2;!th8;dy,tt4y2;!fri2;end;le;nki1r2;ri2;er;d4l0noma0u2;nt;ly; homin4verti2;si1;ng;em",Actor:"true¦aJbGcFdCengineIfAgardenIh9instructPjournalLlawyIm8nurse,opeOp5r3s1t0;echnCherapK;ailNcientJoldiGu0;pervKrgeon;e0oofE;ceptionGsearC;hotographClumbColi1r0sychologF;actitionBogrammB;cem6t5;echanic,inist9us4;airdress8ousekeep8;arm7ire0;fight6m2;eputy,iet0;ici0;an;arpent2lerk;ricklay1ut0;ch0;er;ccoun6d2ge7r0ssis6ttenda7;chitect,t0;ist;minist1v0;is1;rat0;or;ta0;nt",Honorific:"true¦a03b00cSdReQfiLgKhon,jr,king,lJmEoDp8queen,r4s0taoiseach,vice7;e1fc,gt,ir,r,u0;ltTpt,rg;c0nDrgeaL;ond liJretary;abbi,e0;ar1pAs,v0;!erend; admirY;astPhd,r0vt;esideEi1of0;!essN;me mini5nce0;!ss;fficOp,rd;a3essrs,i2lle,me,r1s0;!tr;!s;stK;gistrate,j,r6yF;i3lb,t;en,ov;eld mar3rst l0;ady,i0;eutena0;nt;shG;sq,xcellency;et,oct6r,utchess;apt6hance4mdr,o0pl;lonel,m2ngress0unci3;m0wom0;an;dr,mand5;ll0;or;!ain;ldg,rig0;!adi0;er;d0sst,tty,yatullah;j,m0v;!ir0;al",SportsTeam:"true¦0:1A;1:1H;2:1G;a1Eb16c0Td0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Bm01newToQpJqueens parkIreal salt lake,sAt5utah jazz,vancouver whitecaps,w3yW;ashington 3est ham0Rh10;natio1Oredski2wizar0W;ampa bay 6e5o3;ronto 3ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasC;buccanee0ra0K;a7eattle 5heffield0Kporting kansas0Wt3;. louis 3oke0V;c1Frams;marine0s3;eah15ounG;cramento Rn 3;antonio spu0diego 3francisco gJjose earthquak1;char08paA; ran07;a8h5ittsburgh 4ortland t3;imbe0rail blaze0;pirat1steele0;il3oenix su2;adelphia 3li1;eagl1philNunE;dr1;akland 3klahoma city thunder,rlando magic;athle0Mrai3;de0; 3castle01;england 7orleans 6york 3;city fc,g4je0FknXme0Fred bul0Yy3;anke1;ian0D;pelica2sain0C;patrio0Brevolut3;ion;anchester Be9i3ontreal impact;ami 7lwaukee b6nnesota 3;t4u0Fvi3;kings;imberwolv1wi2;rewe0uc0K;dolphi2heat,marli2;mphis grizz3ts;li1;cXu08;a4eicesterVos angeles 3;clippe0dodDla9; galaxy,ke0;ansas city 3nE;chiefs,roya0E; pace0polis colU;astr06dynamo,rockeTtexa2;olden state warrio0reen bay pac3;ke0;.c.Aallas 7e3i05od5;nver 5troit 3;lio2pisto2ti3;ge0;broncZnuggeM;cowbo4maver3;ic00;ys; uQ;arCelKh8incinnati 6leveland 5ol3;orado r3umbus crew sc;api5ocki1;brow2cavalie0india2;bengaWre3;ds;arlotte horAicago 3;b4cubs,fire,wh3;iteB;ea0ulR;diff3olina panthe0; c3;ity;altimore 9lackburn rove0oston 5rooklyn 3uffalo bilN;ne3;ts;cel4red3; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 3;brav1falco2h4u3;nited;aw9;ns;es;on villa,r3;os;c5di3;amondbac3;ks;ardi3;na3;ls",Uncountable:"true¦a1Ib1Ac11d0Ye0Rf0Lg0Hh0Ci08j07knowled1Hl02mUnews,oTpQrLsAt5vi4w0;a2ea05i1oo0;d,l;ldlife,ne;rmth,t17;neg0Yol06tae;e3h2oothpaste,r0una;affPou0;ble,sers,t;ermod1Eund12;a,nnis;a8cene04eri0Oh7il6kittl0Onow,o5p3t1u0;g0Rnshi0H;ati1De0;am,el;ace16e0;ci0Jed;ap,cc0U;k,v0T;eep,ingl0G;d04fe10l0nd;m0St;a3e1ic0;e,ke0D;c0laxa09search;ogni08rea08;bi09in;aJe1hys10last5o0ressV;lit0Zrk,w0J;a0Vtrol;bstetr0Xil,xygen;a5e3ilk,o2u0;mps,s0;ic;nGo0A;a0chan0S;slZt;chine0il,themat0Q; learn05ry;aught08e2i1ogi0Nu0;ck,g0C;ce,ghtn02ngui0LteratH;a0isG;th04;ewel7usti0G;ce,mp0nformaOtself;a0ortan0E;ti0;en0C;a3isto2o0;ck0mework,n0spitali06;ey;ry;ir,libut,ppi7;en01o1r0um,ymna08;a6ound;l0ssip;d,f;i4lour,o1urnit0;ure;od,rgive0uriNwl;ne0;ss;c6sh;conomZduca5lectr4n2quip3thZvery0;body,o0thE;ne;joy0tertain0;ment;iciNonU;tiF;ar1iabet0raugh1;es;ts;a7elcius,h3ivPl2o0urrency;al,ld w0nfusiAttA;ar;assMoth2;aos,e0;e1w0;ing;se;r4sh;a4eef,i1lood,owls,read,utt0;er;lliar1s0;on;ds;g0ss;ga0;ge;c6dvi5ero3ir2mnes1rt,thl0;et7;ty;craft;b4d0naut4;ynam3;ce;id,ou0;st0;ics",Infinitive:"true¦0:6H;1:6V;2:55;3:6S;4:6T;5:5W;6:64;7:6R;8:6N;9:6F;A:6P;B:6M;C:6A;D:6W;a67b5Wc4Yd46e3Qf3Dg37h30i2Nj2Lk2Jl2Am20n1Xo1Tp1Eques3Er0Ms01tTuPvMwFyE;awn,ield;aHe1Thist6iGoEre60;nd0rE;k,ry;pe,sh,th0;lk,nFrEsh,tCve;n,raD;d0t;aFiEo7;ew,sB;l68ry;nFpEr3se;gra4Jli3W;dEi7lo5O;er47o;aKeJhIoHrFuEwi8;ne,rn;aEe0Ki5Ku8y;de,in,nsf0p,v5C;r2VuC;ank,reat2L;nd,st;lk,rg1Ms7;aXcUeThRi48kip,lQmPnee3Ho4WpOtHuEwitC;bmBck,ff0gge8ppFrEspe5;ge,pri1rou4Tvi4;ly,o32;aJeIoHrFuE;dy,mb6;a4NeEi4;ngth2Bss,tC;p,re;m,p;in,ke,r0Oy;la50oil,rink6;e1Vi6o3F;am,ip;a2iv0oE;ck,ut;arCem,le5n1r4tt6;aFo2rE;atCew;le,re;il,ve;a03eGisk,oFuE;in,le,sh;am,ll;aZcXdu9fWgVje5lSmRnt,pOquNsItHvEwa5L;eEiew,o32;al,l,rE;se,t;a41i2u3Y;eHi8oGtE;!o2rE;i5uc1W;l4rt;mb6nt,r4;e8i2;air,eFlEo3XreseD;a9y;at;a3Remb0i3To4;aFeEi4y;a1nt;te,x;a53r0F;act1Uer,le5u1;a0Zei4k5FoEyc6;gni28nci6rd;ch,li27s5D;i1nE;ge,k;aRerQiPlMoKrGuE;b1Xll,mp,rEsh;cha1s4G;ai1eGiDoE;cEdu9greAhibBmi1te8vi2R;eAlaim;di5pa2ss,veD;iDp,rtr3WsEur;e,t;aFuE;g,n3;n,y;ck,le;fo2YmBsi8;ck,iDrt4Css,u1;bGccur,ff0pera7utweFverEwe;co3Xlap,ta1Yu1whelm;igh;ser4ta2Y;eFotE;e,i9;ed,gle5;aJeIiGoFuE;ltip3Ard0;nit10ve;nErr0Z;d,g6us;asu2lt,n0Mr3ssa3;inta2Ona3rFtE;ch,t0;ch,kEry;et;aKeJiGoEu1A;aEck,ok,ve;d,n;ft,ke,mBnFstEve;!en;e,k;a2Bc0Ct;b0Lck,uE;gh,nC;iEno2W;ck,ll,ss;am,o29uE;d3mp;gno2mOnEss39;cMdica7flu0KhLsItGvE;eEol4;nt,st;erErodu9;a5fe2;i8tE;aEru5;ll;abBibB;lu1Cr1A;agi20pE;lemeDo1Yro4;aIeGi2oFuE;nt,rry;n00pe,st;aElp;d,t;nd6ppErm,te;en;aIloAove1KrGuE;arEeAi11;ant30d;aEip,umb6;b,sp;in,th0ze;aOeaNiLlJoGracFuncE;ti3A;tu2;cus,lFrE;ce,eca8m,s2S;d,l1W;a1ToE;at,od,w;gu2lEni1Rx;e,l;r,tu2;il,vE;or;a11cho,le5mQnNstLvalua7xE;a08cJerIi8pEte15;a14eFla12oEreA;rt,se;ct,riE;en9;ci1t;el,han3;abEima7;li1D;ab6couVdFfor9ga3han9j01riCsu2t0vE;isi2Ny;!u2;body,er3pE;hasiEow0;ze;a04eSiJoIrFuE;mp;aFeAiE;ft;g,in;d3ubt;ff0p,re5sFvE;iWor9;aIcFliEmiApl13tingui0Y;ke;oEuA;uEv0;ra3;gr1QppE;ear,ro4;cLem,fJliv0ma0Bny,pIsFterE;mi0C;cribe,er4iFtrE;oy;gn,re;a07e06i5osB;eEi07y;at,ct;iGlFrE;ea1;a2i03;de;ma3n9re,te;a08e07h04i7l02oHrE;aFeEoAu0Dy;a7dB;ck,ve;llXmQnFok,py,uEv0;gh,nt;ceNdu5fKsItGvE;eEin9;rt,y;aNin0PrE;a8ibu7ol;iEtitu7;d0st;iFoEroD;rm;gu2rm;rn;biJfoImaHpE;a2laE;in;re;nd;rt;ne;ap1e5;aEip,o1;im,w;aFeE;at,ck,w;llen3n3r3se;a1nt0;ll,ncFrEt0u1;e,ry;el;aNeKloJoHruGuE;lEry;ly;sh;a8mb,o8rrEth0un9;ow;ck;ar,lFnefBtrE;ay;ie4ong;ng,se;band0Hc09d04ffo03gr02id,lZmu1nWppRrOsIttEvoid,waB;acGeFra5;ct;m0Dnd;h,k;k,sE;eGiFocia7uE;me;gn,st;mb6rt;le;chFgEri4;ue;!i4;eaHlGroE;aCve;ch;aud,y;l,r;noun9sw0tE;icipa7;ce;lFt0;er;e3ow;ee;rd;aPdGju8mBoP;it;st;!reA;ss;cHhie4knowled3tiva7;te;ge;ve;eGouDu1;se;nt;pt;on",Unit:"true¦0:16;a11b0Zc0Ld0Ke0If0Dg09h06in0Ejoule0k00lYmNnMoLpIqHsqCt7volts,w6y4z3°2µ1;g,s;c,f,n;b,e2;a0Kb,d0Qears old,o1;tt0E;att0b;able4b3e2on1sp;!ne0;a2r0A;!l,sp;spo01; ft,uare 1;c0Fd0Ef3i0Ckilo0Gm1ya0B;e0Jil1;e0li0E;eet0o0A;t,uart0;ascals,e2i1ou0Mt;c0Jnt0;rcent,tZ;hms,uVz;an0GewtQ;/s,b,e7g,i3l,m2p1²,³;h,s;!²;!/h,cro3l1;e1li05;! DsC²;g05s0A;gPter1;! 2s1;! 1;per second;b,iZm,u1x;men0x0;b,elvin0g,ilo2m1nQ;!/h,ph,²;byYgWmeter1;! 2s1;! 1;per hour;e1g,z;ct1rtz0;aXogQ;al2b,igAra1;in0m0;!l1;on0;a4emtPl2t1;²,³; oz,uid ou1;nce0;hrenheit0rad0;b,x1;abyH;eciCg,l,mA;arat0eAg,m9oulomb0u1;bic 1p0;c5d4fo3i2meAya1;rd0;nch0;ot0;eci2;enti1;me4;!²,³;lsius0nti1;g2li1me1;ter0;ram0;bl,y1;te0;c4tt1;os1;eco1;nd0;re0;!s",Organization:"true¦0:46;a3Ab2Qc2Ad21e1Xf1Tg1Lh1Gi1Dj19k17l13m0Sn0Go0Dp07qu06rZsStFuBv8w3y1;amaha,m0Xou1w0X;gov,tu2S;a3e1orld trade organizati41;lls fargo,st1;fie22inghou16;l1rner br3D;-m11gree31l street journ25m11;an halNeriz3Wisa,o1;dafo2Gl1;kswagLvo;bs,kip,n2ps,s1;a tod2Rps;es35i1;lev2Xted natio2Uv; mobi2Kaco bePd bMeAgi frida9h3im horto2Tmz,o1witt2W;shiba,y1;ota,s r Y;e 1in lizzy;b3carpen33daily ma2Xguess w2holli0rolling st1Ms1w2;mashing pumpki2Ouprem0;ho;ea1lack eyed pe3Fyrds;ch bo1tl0;ys;l2s1;co,la m12;efoni07us;a6e4ieme2Gnp,o2pice gir5ta1ubaru;rbucks,to2N;ny,undgard1;en;a2Rx pisto1;ls;few25insbu26msu1X;.e.m.,adiohead,b6e3oyal 1yan2X;b1dutch she4;ank;/max,aders dige1Ed 1vl32;bu1c1Uhot chili peppe2Klobst28;ll;c,s;ant2Vizno2F;an5bs,e3fiz24hilip morrBi2r1;emier27octer & gamb1Rudenti14;nk floyd,zza hut;psi28tro1uge08;br2Qchina,n2Q; 2ason1Xda2G;ld navy,pec,range juli2xf1;am;us;a9b8e5fl,h4i3o1sa,wa;kia,tre dame,vart1;is;ke,ntendo,ss0K;l,s;c,st1Etflix,w1; 1sweek;kids on the block,york08;a,c;nd1Us2t1;ional aca2Fo,we0Q;a,cYd0O;aAcdonald9e5i3lb,o1tv,yspace;b1Nnsanto,ody blu0t1;ley crue,or0O;crosoft,t1;as,subisO;dica3rcedes2talli1;ca;!-benz;id,re;'s,s;c's milk,tt13z1Y;'ore09a3e1g,ittle caesa1Ktd;novo,x1;is,mark; pres5-z-boy,bour party;atv,fc,kk,m1od1K;art;iffy lu0Lo3pmorgan1sa;! cha1;se;hnson & johns1Sy d1R;bm,hop,n1tv;c,g,te1;l,rpol; & m,asbro,ewlett-packaTi3o1sbc,yundai;me dep1n1J;ot;tac1zbollah;hi;eneral 6hq,l5mb,o2reen d0Iu1;cci,ns n ros0;ldman sachs,o1;dye1g0B;ar;axo smith kliZencore;electr0Im1;oto0V;a3bi,da,edex,i1leetwood mac,oGrito-l0A;at,nancial1restoV; tim0;cebook,nnie mae;b06sa,u3xxon1; m1m1;ob0H;!rosceptics;aiml0Ae5isney,o3u1;nkin donuts,po0Wran dur1;an;j,w j1;on0;a,f leppa3ll,p2r spiegZstiny's chi1;ld;eche mode,t;rd;aEbc,hBi9nn,o3r1;aigsli5eedence clearwater reviv1ossra05;al;!ca c5l4m1o0Ast05;ca2p1;aq;st;dplMgate;ola;a,sco1tigroup;! systems;ev2i1;ck fil-a,na daily;r0Hy;dbury,pital o1rl's jr;ne;aGbc,eCfAl6mw,ni,o2p,r1;exiteeWos;ei3mbardiJston 1;glo1pizza;be;ng;ack & deckFo2ue c1;roX;ckbuster video,omingda1;le; g1g1;oodriN;cht3e ge0n & jer2rkshire hathaw1;ay;ryH;el;nana republ3s1xt5y5;f,kin robbi1;ns;ic;bXcSdidRerosmith,ig,lLmFnheuser-busEol,ppleAr7s3t&t,v2y1;er;is,on;hland2s1;n,ociated F; o1;il;by4g2m1;co;os; compu2bee1;'s;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 4catel2t1;air;!-luce1;nt;jazeera,qae1;da;as;/dc,a3er,t1;ivisi1;on;demy of scienc0;es;ba,c",Demonym:"true¦0:16;1:13;a0Wb0Nc0Cd0Ae09f07g04h02iYjVkTlPmLnIomHpDqatari,rBs7t5u4v3wel0Rz2;am0Fimbabwe0;enezuel0ietnam0H;g9krai1;aiwThai,rinida0Iu2;ni0Qrkmen;a4cot0Ke3ingapoOlovak,oma0Tpa05udRw2y0X;edi0Kiss;negal0Br08;mo0uU;o6us0Lw2;and0;a3eru0Hhilipp0Po2;li0Ertugu06;kist3lesti1na2raguay0;ma1;ani;amiZi2orweP;caragu0geri2;an,en;a3ex0Mo2;ngo0Erocc0;cedo1la2;gasy,y08;a4eb9i2;b2thua1;e0Dy0;o,t02;azakh,eny0o2uwaiti;re0;a2orda1;ma0Bp2;anN;celandic,nd4r2sraeli,ta02vo06;a2iT;ni0qi;i0oneV;aiDin2ondur0unN;di;amDe2hanai0reek,uatemal0;or2rm0;gi0;i2ren7;lipino,n4;cuadoVgyp6ngliJsto1thiopi0urope0;a2ominXut4;niH;a9h6o4roa3ub0ze2;ch;ti0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el8o6r3ul2;gaG;aziBi2;ti2;sh;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;gent2me1;ine;ba1ge2;ri0;ni0;gh0r2;ic0;an",Possessive:"true¦anyAh5its,m3noCo1sometBthe0yo1;ir1mselves;ur0;!s;i8y0;!se4;er1i0;mse2s;!s0;!e0;lf;o1t0;hing;ne",Currency:"true¦$,aud,bScQdLeurKfJgbp,hkd,iIjpy,kGlEp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotySł;en,uanR;af,of;h0t5;e0il5;k0q0;elM;iel,oubleLp,upeeL;e2ound st0;er0;lingI;n0soH;ceGn0;ies,y;e0i8;i,mpi7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!o8;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;ad,e0ny;nt1;aht,itcoin0;!s",City:"true¦a2Wb26c1Wd1Re1Qf1Og1Ih1Ai18jakar2Hk0Zl0Tm0Gn0Co0ApZquiYrVsLtCuBv8w3y1z0;agreb,uri1Z;ang1Te0okohama;katerin1Hrev34;ars3e2i0rocl3;ckl0Vn0;nipeg,terth0W;llingt1Oxford;aw;a1i0;en2Hlni2Z;lenc2Uncouv0Gr2G;lan bat0Dtrecht;a6bilisi,e5he4i3o2rondheim,u0;nVr0;in,ku;kyo,ronIulouC;anj23l13miso2Jra2A; haJssaloni0X;gucigalpa,hr2Ol av0L;i0llinn,mpe2Bngi07rtu;chu22n2MpT;a3e2h1kopje,t0ydney;ockholm,uttga12;angh1Fenzh1X;o0KvZ;int peters0Ul3n0ppo1F; 0ti1B;jo0salv2;se;v0z0Q;adU;eykjavik,i1o0;me,sario,t25;ga,o de janei17;to;a8e6h5i4o2r0ueb1Qyongya1N;a0etor24;gue;rt0zn24; elizabe3o;ls1Grae24;iladelph1Znom pe07oenix;r0tah tik19;th;lerJr0tr10;is;dessa,s0ttawa;a1Hlo;a2ew 0is;delTtaip0york;ei;goya,nt0Upl0Uv1R;a5e4i3o1u0;mb0Lni0I;nt0scH;evideo,real;l1Mn01skolc;dellín,lbour0S;drid,l5n3r0;ib1se0;ille;or;chest0dalWi0Z;er;mo;a4i1o0vAy01;nd00s angel0F;ege,ma0nz,sbZverpo1;!ss0;ol; pla0Iusan0F;a5hark4i3laipeda,o1rak0uala lump2;ow;be,pavog0sice;ur;ev,ng8;iv;b3mpa0Kndy,ohsiu0Hra0un03;c0j;hi;ncheMstanb0̇zmir;ul;a5e3o0; chi mi1ms,u0;stI;nh;lsin0rakliG;ki;ifa,m0noi,va0A;bu0SiltD;alw4dan3en2hent,iza,othen1raz,ua0;dalaj0Gngzhou;bu0P;eUoa;sk;ay;es,rankfu0;rt;dmont4indhovU;a1ha01oha,u0;blRrb0Eshanbe;e0kar,masc0FugavpiJ;gu,je0;on;a7ebu,h2o0raioJuriti01;lo0nstanJpenhagNrk;gFmbo;enn3i1ristchur0;ch;ang m1c0ttagoL;ago;ai;i0lgary,pe town,rac4;ro;aHeBirminghWogoAr5u0;char3dap3enos air2r0sZ;g0sa;as;es;est;a2isba1usse0;ls;ne;silPtisla0;va;ta;i3lgrade,r0;g1l0n;in;en;ji0rut;ng;ku,n3r0sel;celo1ranquil0;la;na;g1ja lu0;ka;alo0kok;re;aBb9hmedabad,l7m4n2qa1sh0thens,uckland;dod,gabat;ba;k0twerp;ara;m5s0;terd0;am;exandr0maty;ia;idj0u dhabi;an;lbo1rh0;us;rg",Abbreviation:"true¦a08b05cZdXeUfSgRhQiPjNkanMlKmGnEoDpCque,rAs6t4u3v2w0;is0y00;!c;a,s,t;niv,safa,t;ce,e0;nn,x;ask,e1fc,gt,ir,r,t,u0;pt,rg;nDp0;!t;d,e0;pAs,v;a,d,ennGhd,l,rof,vt;ct,kla,nt,p,rd;eb0ov;!r;a2d,essrs,i1lle,me,r5s0t;!tr;nn,ster;!j,r;it,lb,t0;!d;!s;an,r,u0;l,n;a,da,e,nc;on,wy;a,en,ov;eb,l0t,y;!a;g,s1tc,x0;!p;p,q;ak,e0ist,r;c,pt,t;a3ca,l,m2o0pl,res,t;!l0m1nn,rp;!o;dr;!l0pt;!if;a,c,l1r0;ig,os;!dg,vd;d3l2pr,r1ss0tty,ug,ve;n,t;c,iz;!ta;!j,m,v",Place:"true¦a07b05cZdYeXfVgRhQiOjfk,kMlKmHneEoDp9que,rd,s8t5u4v3w0yyz;is1y0;!o;!c;a,t;pYsafa,t;e1he 0;bronx,hamptons;nn,x;ask,fo,oho,t,under6yd;a2e1h0;l,x;k,nnK;!cifX;kla,nt;b1w eng0;land;!r;a1co,i0t,uc;dKnn;libu,nhattS;a0gw,hr;s,x;an0ul;!s;a0cn,da,ndianMst;!x;arlem,kg,nd,wy;a2re0;at 0enwich;britain,lak6;!y village;co,l0ra;!a;urope,verglad2;ak,en,fw,ist,own4xb;al4dg,gk,hina3l2o1r0t;es;lo,nn;!t;town;!if;cn,e0kk,lvd,rooklyn;l air,verly hills;frica,lta,m5ntarct2r1sia,tl0ve;!ant1;ct0iz;ic0; oce0;an;ericas,s",Country:"true¦0:38;1:2L;a2Wb2Dc21d1Xe1Rf1Lg1Bh19i13j11k0Zl0Um0Gn05om3CpZqat1JrXsKtCu6v4wal3yemTz2;a24imbabwe;es,lis and futu2X;a2enezue31ietnam;nuatu,tican city;.5gTkraiZnited 3ruXs2zbeE;a,sr;arab emirat0Kkingdom,states2;! of am2X;k.,s.2; 27a.;a7haBimor-les0Bo6rinidad4u2;nis0rk2valu;ey,me2Xs and caic1T; and 2-2;toba1J;go,kel0Ynga;iw2Vji2nz2R;ki2T;aCcotl1eBi8lov7o5pa2Bri lanka,u4w2yr0;az2ed9itzerl1;il1;d2Qriname;lomon1Vmal0uth 2;afr2IkLsud2O;ak0en0;erra leoEn2;gapo1Wt maart2;en;negKrb0ychellY;int 2moa,n marino,udi arab0;hele24luc0mart1Z;epublic of ir0Com2Cuss0w2;an25;a3eHhilippinTitcairn1Ko2uerto riM;l1rtugE;ki2Bl3nama,pua new0Tra2;gu6;au,esti2;ne;aAe8i6or2;folk1Gth3w2;ay; k2ern mariana1B;or0M;caragua,ger2ue;!ia;p2ther18w zeal1;al;mib0u2;ru;a6exi5icro09o2yanm04;ldova,n2roc4zamb9;a3gol0t2;enegro,serrat;co;c9dagascZl6r4urit3yot2;te;an0i14;shall0Vtin2;ique;a3div2i,ta;es;wi,ys0;ao,ed00;a5e4i2uxembourg;b2echtenste10thu1E;er0ya;ban0Gsotho;os,tv0;azakh1De2iriba02osovo,uwait,yrgyz1D;eling0Jnya;a2erF;ma15p1B;c6nd5r3s2taly,vory coast;le of m19rael;a2el1;n,q;ia,oI;el1;aiSon2ungary;dur0Mg kong;aAermany,ha0Pibralt9re7u2;a5ern4inea2ya0O;!-biss2;au;sey;deloupe,m,tema0P;e2na0M;ce,nl1;ar;bTmb0;a6i5r2;ance,ench 2;guia0Dpoly2;nes0;ji,nl1;lklandTroeT;ast tim6cu5gypt,l salv5ngl1quatorial3ritr4st2thiop0;on0; guin2;ea;ad2;or;enmark,jibou4ominica3r con2;go;!n B;ti;aAentral african 9h7o4roat0u3yprQzech2; 8ia;ba,racao;c3lo2morPngo-brazzaville,okFsta r03te d'ivoiK;mb0;osD;i2ristmasF;le,na;republic;m2naTpe verde,yman9;bod0ero2;on;aFeChut00o8r4u2;lgar0r2;kina faso,ma,undi;azil,itish 2unei;virgin2; is2;lands;liv0nai4snia and herzegoviGtswaGuvet2; isl1;and;re;l2n7rmuF;ar2gium,ize;us;h3ngladesh,rbad2;os;am3ra2;in;as;fghaFlCmAn5r3ustr2zerbaijH;al0ia;genti2men0uba;na;dorra,g4t2;arct6igua and barbu2;da;o2uil2;la;er2;ica;b2ger0;an0;ia;ni2;st2;an",Region:"true¦0:1U;a20b1Sc1Id1Des1Cf19g13h10i0Xj0Vk0Tl0Qm0FnZoXpSqPrMsDtAut9v6w3y1zacatec22;o05u1;cat18kZ;a1est vi4isconsin,yomi14;rwick0shington1;! dc;er2i1;rgin1S;acruz,mont;ah,tar pradesh;a2e1laxca1DuscaA;nnessee,x1R;bas0Kmaulip1QsmJ;a6i4o2taf0Ou1ylh13;ffVrr00s0Y;me10no1Auth 1;cSdR;ber1Ic1naloa;hu0Sily;n2skatchew0Rxo1;ny; luis potosi,ta catari1I;a1hode7;j1ngp02;asth0Mshahi;inghai,u1;e1intana roo;bec,ensWreta0E;ara4e2rince edward1; isU;i,nnsylv1rnambu02;an14;!na;axa0Ndisha,h1klaho1Bntar1reg4x04;io;ayarit,eBo3u1;evo le1nav0L;on;r1tt0Rva scot0X;f6mandy,th1; 1ampton0;c3d2yo1;rk0;ako0Y;aroli0V;olk;bras0Xva01w1; 2foundland1;! and labrador;brunswick,hamp0jers1mexiJyork state;ey;a6i2o1;nta0Nrelos;ch3dlanBn2ss1;issippi,ouri;as geraGneso0M;igQoacQ;dhya,harasht04ine,ni3r1ssachusetts;anhao,y1;land;p1toba;ur;anca0e1incoln0ouis8;e1iH;ds;a1entucky,hul0A;ns08rnata0Dshmir;alis1iangxi;co;daho,llino2nd1owa;ia05;is;a2ert1idalEunA;ford0;mp0waii;ansu,eorgWlou5u1;an2erre1izhou,jarat;ro;ajuato,gdo1;ng;cester0;lori2uji1;an;da;sex;e4o2uran1;go;rs1;et;lawaErby0;a8ea7hi6o1umbrH;ahui4l3nnectic2rsi1ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m1;bridge0peche;a5r4uck1;ingham0;shi1;re;emen,itish columb3;h2ja cal1sque,var2;iforn1;ia;guascalientes,l4r1;izo2kans1;as;na;a2ber1;ta;ba2s1;ka;ma",FemaleName:"true¦0:FY;1:G2;2:FR;3:FD;4:FC;5:EP;6:ER;7:FS;8:GF;9:EZ;A:GB;B:E5;C:FO;D:FL;E:G8;F:EG;aE2bD4cB8dAIe9Gf91g8Hh83i7Sj6Uk60l4Om38n2To2Qp2Fqu2Er1Os0Qt04ursu6vUwOyLzG;aJeHoG;e,la,ra;lGna;da,ma;da,ra;as7EeHol1TvG;et5onB9;le0sen3;an9endBNhiB4iG;lInG;if3AniGo0;e,f39;a,helmi0lGma;a,ow;aMeJiG;cHviG;an9XenG1;kCZtor3;da,l8Vnus,rG;a,nGoniD2;a,iDC;leGnesEC;nDLrG;i1y;aSePhNiMoJrGu6y4;acG3iGu0E;c3na,sG;h9Mta;nHrG;a,i;i9Jya;a5IffaCGna,s7;al3eGomasi0;a,l8Go6Xres1;g7Uo6WrHssG;!a,ie;eFi,ri8;bNliMmKnIrHs7tGwa0;ia0um;a,yn;iGya;a,ka,s7;a4e4iGmCAra;!ka;a,t7;at7it7;a05carlet2Ye04hUiSkye,oQtMuHyG;bFJlvi1;e,sHzG;an2Tet5ie,y;anGi8;!a,e,nG;aDe;aIeG;fGl3DphG;an2;cF8r6;f3nGphi1;d4ia,ja,ya;er4lv3mon1nGobh75;dy;aKeGirlBLo0y6;ba,e0i6lIrG;iGrBPyl;!d70;ia,lBV;ki4nIrHu0w0yG;la,na;i,leAon,ron;a,da,ia,nGon;a,on;l5Yre0;bMdLi9lKmIndHrGs7vannaD;aDi0;ra,y;aGi4;nt7ra;lBNome;e,ie;in1ri0;a02eXhViToHuG;by,thBK;bQcPlOnNsHwe0xG;an94ie,y;aHeGie,lE;ann8ll1marBFtB;!lGnn1;iGyn;e,nG;a,d7W;da,i,na;an9;hel53io;bin,erByn;a,cGkki,na,ta;helBZki;ea,iannDXoG;da,n12;an0bIgi0i0nGta,y0;aGee;!e,ta;a,eG;cARkaD;chGe,i0mo0n5EquCDvCy0;aCCelGi9;!e,le;een2ia0;aMeLhJoIrG;iGudenAW;scil1Uyamva9;lly,rt3;ilome0oebe,ylG;is,lis;arl,ggy,nelope,r6t4;ige,m0Fn4Oo6rvaBBtHulG;a,et5in1;ricGsy,tA8;a,e,ia;ctav3deHfAWlGphAW;a,ga,iv3;l3t5;aQePiJoGy6;eHrG;aDeCma;ll1mi;aKcIkGla,na,s7ta;iGki;!ta;hoB2k8BolG;a,eBH;!mh;l7Tna,risF;dIi5PnHo23taG;li1s7;cy,et5;eAiCO;a01ckenz2eViLoIrignayani,uriBGyG;a,rG;a,na,tAS;i4ll9XnG;a,iG;ca,ka,qB4;a,chOkaNlJmi,nIrGtzi;aGiam;!n9;a,dy,erva,h,n2;a,dIi9JlG;iGy;cent,e;red;!e6;ae6el3G;ag4KgKi,lHrG;edi61isFyl;an2iGliF;nGsAM;a,da;!an,han;b08c9Ed06e,g04i03l01nZrKtJuHv6Sx87yGz2;a,bell,ra;de,rG;a,eC;h75il9t2;a,cSgOiJjor2l6In2s7tIyG;!aGbe5QjaAlou;m,n9S;a,ha,i0;!aIbALeHja,lEna,sGt53;!a,ol,sa;!l06;!h,m,nG;!a,e,n1;arIeHie,oGr3Kueri5;!t;!ry;et3IiB;elGi61y;a,l1;dGon,ue6;akranBy;iGlo36;a,ka,n9;a,re,s2;daGg2;!l2W;alEd2elGge,isBGon0;eiAin1yn;el,le;a0Ie08iWoQuKyG;d3la,nG;!a,dHe9SnGsAQ;!a,e9R;a,sAO;aB1cJelIiFlHna,pGz;e,iB;a,u;a,la;iGy;a2Ae,l25n9;is,l1GrHtt2uG;el6is1;aIeHi8na,rG;a6Zi8;lei,n1tB;!in1;aQbPd3lLnIsHv3zG;!a,be4Ket5z2;a,et5;a,dG;a,sGy;ay,ey,i,y;a,iaIlG;iGy;a8Ge;!n4F;b7Terty;!n5R;aNda,e0iLla,nKoIslARtGx2;iGt2;c3t3;la,nGra;a,ie,o4;a,or1;a,gh,laG;!ni;!h,nG;a,d4e,n4N;cNdon7Si6kes7na,rMtKurIvHxGy6;mi;ern1in3;a,eGie,yn;l,n;as7is7oG;nya,ya;a,isF;ey,ie,y;aZeUhadija,iMoLrIyG;lGra;a,ee,ie;istGy5B;a,en,iGy;!e,n48;ri,urtn9A;aMerLl99mIrGzzy;a,stG;en,in;!berlG;eGi,y;e,y;a,stC;!na,ra;el6PiJlInHrG;a,i,ri;d4na;ey,i,l9Qs2y;ra,s7;c8Wi5XlOma6nyakumari,rMss5LtJviByG;!e,lG;a,eG;e,i78;a5EeHhGi3PlEri0y;ar5Cer5Cie,leCr9Fy;!lyn73;a,en,iGl4Uyn;!ma,n31sF;ei72i,l2;a04eVilToMuG;anKdJliGst56;aHeGsF;!nAt0W;!n8X;i2Ry;a,iB;!anLcelEd5Vel71han6IlJni,sHva0yG;a,ce;eGie;fi0lEph4X;eGie;en,n1;!a,e,n36;!i10lG;!i0Z;anLle0nIrHsG;i5Qsi5Q;i,ri;!a,el6Pif1RnG;a,et5iGy;!e,f1P;a,e72iHnG;a,e71iG;e,n1;cLd1mi,nHqueliAsmin2Uvie4yAzG;min8;a8eHiG;ce,e,n1s;!lGsFt06;e,le;inHk2lEquelG;in1yn;da,ta;lPmNnMo0rLsHvaG;!na;aHiGob6U;do4;!belGdo4;!a,e,l2G;en1i0ma;a,di4es,gr5R;el9ogG;en1;a,eAia0o0se;aNeKilHoGyacin1N;ll2rten1H;aHdGlaH;a,egard;ry;ath0WiHlGnrietBrmiAst0W;en24ga;di;il75lKnJrGtt2yl75z6D;iGmo4Fri4G;etG;!te;aDnaD;ey,l2;aYeTiOlMold12rIwG;enGyne18;!dolE;acHetGisel9;a,chC;e,ieG;!la;adys,enGor3yn1Y;a,da,na;aJgi,lHna,ov71selG;a,e,le;da,liG;an;!n0;mYnIorgHrG;ald35i,m2Stru73;et5i5T;a,eGna;s1Nvieve;briel3Fil,le,rnet,yle;aReOio0loMrG;anHe9iG;da,e9;!cG;esHiGoi0G;n1s3V;!ca;!rG;a,en43;lHrnG;!an9;ec3ic3;rHtiGy8;ma;ah,rah;d0FileCkBl00mUn4ArRsMtLuKvG;aIelHiG;e,ta;in0Ayn;!ngel2H;geni1la,ni3R;h52ta;meral9peranJtG;eHhGrel6;er;l2Pr;za;iGma,nest29yn;cGka,n;a,ka;eJilImG;aGie,y;!liA;ee,i1y;lGrald;da,y;aTeRiMlLma,no4oJsIvG;a,iG;na,ra;a,ie;iGuiG;se;a,en,ie,y;a0c3da,nJsGzaH;aGe;!beG;th;!a,or;anor,nG;!a;in1na;en,iGna,wi0;e,th;aWeKiJoGul2U;lor51miniq3Yn30rGtt2;a,eCis,la,othGthy;ea,y;an09naDonAx2;anPbOde,eNiLja,lImetr3nGsir4U;a,iG;ce,se;a,iHla,orGphiA;es,is;a,l5J;dGrdG;re;!d4Mna;!b2CoraDra;a,d4nG;!a,e;hl3i0mMnKphn1rHvi1WyG;le,na;a,by,cHia,lG;a,en1;ey,ie;a,et5iG;!ca,el1Aka;arGia;is;a0Qe0Mh04i02lUoJrHynG;di,th3;istGy04;al,i0;lOnLrHurG;tn1D;aId28iGn28riA;!nG;a,e,n1;!l1S;n2sG;tanGuelo;ce,za;eGleC;en,t5;aIeoHotG;il4B;!pat4;ir8rIudG;et5iG;a,ne;a,e,iG;ce,sX;a4er4ndG;i,y;aPeMloe,rG;isHyG;stal;sy,tG;aHen,iGy;!an1e,n1;!l;lseHrG;!i8yl;a,y;nLrG;isJlHmG;aiA;a,eGot5;n1t5;!sa;d4el1PtG;al,el1O;cHlG;es5i3F;el3ilG;e,ia,y;iYlXmilWndVrNsLtGy6;aJeIhGri0;erGleCrEy;in1;ri0;li0ri0;a2GsG;a2Fie;a,iMlKmeIolHrG;ie,ol;!e,in1yn;lGn;!a,la;a,eGie,y;ne,y;na,sF;a0Di0D;a,e,l1;isBl2;tlG;in,yn;arb0CeYianXlVoTrG;andRePiIoHyG;an0nn;nwEok8;an2NdgKg0ItG;n27tG;!aHnG;ey,i,y;ny;etG;!t8;an0e,nG;da,na;i8y;bbi8nG;iBn2;ancGossom,ythe;a,he;ca;aRcky,lin9niBrNssMtIulaDvG;!erlG;ey,y;hHsy,tG;e,i0Zy8;!anG;ie,y;!ie;nGt7yl;adHiG;ce;et5iA;!triG;ce,z;a4ie,ra;aliy29b24d1Lg1Hi19l0Sm0Nn01rWsNthe0uJvIyG;anGes7;a,na;a,r25;drIgusHrG;el3;ti0;a,ey,i,y;hHtrG;id;aKlGt1P;eHi8yG;!n;e,iGy;gh;!nG;ti;iIleHpiB;ta;en,n1t5;an19elG;le;aYdWeUgQiOja,nHtoGya;inet5n3;!aJeHiGmI;e,ka;!mGt5;ar2;!belHliFmT;sa;!le;ka,sGta;a,sa;elGie;a,iG;a,ca,n1qG;ue;!t5;te;je6rea;la;!bHmGstas3;ar3;el;aIberHel3iGy;e,na;!ly;l3n9;da;aTba,eNiKlIma,yG;a,c3sG;a,on,sa;iGys0J;e,s0I;a,cHna,sGza;a,ha,on,sa;e,ia;c3is7jaIna,ssaIxG;aGia;!nd4;nd4;ra;ia;i0nHyG;ah,na;a,is,naD;c7da,leCmLnslKsG;haDlG;inGyW;g,n;!h;ey;ee;en;at7g2nG;es;ie;ha;aVdiSelLrG;eIiG;anLenG;a,e,ne;an0;na;aKeJiHyG;nn;a,n1;a,e;!ne;!iG;de;e,lEsG;on;yn;!lG;iAyn;ne;agaJbHiG;!gaI;ey,i8y;!e;il;ah",WeekDay:"true¦fri4mon4s2t1wed0;!nesd4;hurs2ues2;at0un1;!urd1;!d0;ay0;!s",Month:"true¦aBdec9feb7j2mar,nov9oct1sep0;!t8;!o8;an3u0;l1n0;!e;!y;!u1;!ru0;ary;!em0;ber;pr1ug0;!ust;!il",FirstName:"true¦aEblair,cCdevBj8k6lashawn,m3nelly,quinn,re2sh0;ay,e0iloh;a,lby;g1ne;ar1el,org0;an;ion,lo;as8e0r9;ls7nyatta,rry;am0ess1ude;ie,m0;ie;an,on;as0heyenne;ey,sidy;lex1ndra,ubr0;ey;is",LastName:"true¦0:34;1:39;2:3B;3:2Y;4:2E;5:30;a3Bb31c2Od2Ee2Bf25g1Zh1Pi1Kj1Ek17l0Zm0Nn0Jo0Gp05rYsMtHvFwCxBy8zh6;a6ou,u;ng,o;a6eun2Uoshi1Kun;ma6ng;da,guc1Zmo27sh21zaR;iao,u;a7eb0il6o3right,u;li3Bs1;gn0lk0ng,tanabe;a6ivaldi;ssilj37zqu2;a9h8i2Go7r6sui,urn0;an,ynisJ;lst0Prr1Uth;at1Uomps1;kah0Vnaka,ylor;aEchDeChimizu,iBmiAo9t7u6zabo;ar2lliv2AzuE;a6ein0;l23rm0;sa,u3;rn4th;lva,mmo24ngh;mjon4rrano;midt,neid0ulz;ito,n7sa6to;ki;ch2dLtos,z;amBeag1Zi9o7u6;bio,iz,sD;b6dri1MgIj0Tme24osevelt,ssi,ux;erts,ins1;c6ve0F;ci,hards1;ir2os;aEeAh8ic6ow20;as6hl0;so;a6illips;m,n1T;ders5et8r7t6;e0Nr4;ez,ry;ers;h21rk0t6vl4;el,te0J;baBg0Blivei01r6;t6w1O;ega,iz;a6eils1guy5ix1owak,ym1E;gy,ka6var1K;ji6muW;ma;aEeCiBo8u6;ll0n6rr0Bssolini,ñ6;oz;lina,oKr6zart;al0Me6r0U;au,no;hhail4ll0;rci0ssi6y0;!er;eWmmad4r6tsu07;in6tin2;!o;aCe8i6op2uo;!n6u;coln,dholm;fe7n0Qr6w0J;oy;bv6v6;re;mmy,rs5u;aBennedy,imuAle0Lo8u7wo6;k,n;mar,znets4;bay6vacs;asY;ra;hn,rl9to,ur,zl4;aAen9ha3imen2o6u3;h6nYu3;an6ns1;ss1;ki0Es5;cks1nsse0D;glesi9ke8noue,shik7to,vano6;u,v;awa;da;as;aBe8itchcock,o7u6;!a3b0ghNynh;a3ffmann,rvat;mingw7nde6rN;rs1;ay;ns5rrQs7y6;asDes;an4hi6;moJ;a9il,o8r7u6;o,tierr2;ayli3ub0;m2nzal2;nd6o,rcia;hi;erAis9lor8o7uj6;ita;st0urni0;es;ch0;nand2;d7insteHsposi6vaL;to;is1wards;aCeBi9omin8u6;bo6rand;is;gu2;az,mitr4;ov;lgado,vi;nkula,rw7vi6;es,s;in;aFhBlarkAo6;h5l6op0rbyn,x;em7li6;ns;an;!e;an8e7iu,o6ristens5u3we;i,ng,u3w,y;!n,on6u3;!g;mpb7rt0st6;ro;ell;aBe8ha3lanco,oyko,r6yrne;ooks,yant;ng;ck7ethov5nnett;en;er,ham;ch,h8iley,rn6;es,i0;er;k,ng;dDl9nd6;ers6rA;en,on,s1;on;eks7iy8var2;ez;ej6;ev;ams",MaleName:"true¦0:CE;1:BL;2:C2;3:BT;4:B5;5:9V;6:BZ;7:AT;8:BD;9:AX;A:AO;aB4bA8c97d87e7Gf6Yg6Gh5Wi5Ij4Lk4Bl3Rm2Pn2Eo28p22qu20r1As0Qt06u05v00wNxavi3yGzB;aBor0;cBh8Ine;hCkB;!aB1;ar51eB0;ass2i,oCuB;sDu25;nEsDusB;oBsC;uf;ef;at0g;aJeHiCoByaAP;lfgang,odrow;lBn1O;bDey,frBJlB;aA5iB;am,e,s;e89ur;i,nde5sB;!l7t1;de,lCrr6yB;l1ne;lBt3;a93y;aEern1iB;cCha0nceBrg9Bva0;!nt;ente,t5A;lentin49n8Yughn;lyss4Msm0;aTeOhKiIoErCyB;!l3ro8s1;av9QeBist0oy,um0;nt9Iv54y;bDd7XmBny;!as,mBoharu;aAYie,y;i83y;mBt9;!my,othy;adDeoCia7DomB;!as;!do7M;!de9;dErB;en8HrB;an8GeBy;ll,n8F;!dy;dgh,ic9Tnn3req,ts45;aRcotPeNhJiHoFpenc3tBur1Oylve8Hzym1;anDeBua7B;f0phAFvBwa7A;e57ie;!islaw,l7;lom1nA3uB;leyma8ta;dBl7Jm1;!n7;aDeB;lBrm0;d1t1;h6Sne,qu0Uun,wn,y8;aBbasti0k1Xl41rg40th,ymo9I;m9n;!tB;!ie,y;lCmBnti21q4Iul;!mAu4;ik,vato6V;aWeShe92iOoFuCyB;an,ou;b6LdCf9pe6QssB;!elAI;ol2Uy;an,bIcHdGel,geFh0landA9mEnDry,sCyB;!ce;coe,s;!a95nA;an,eo;l3Jr;e4Qg3n7olfo,ri68;co,ky;bAe9U;cBl7;ar5Oc5NhCkBo;!ey,ie,y;a85ie;gCid,ub6x,yBza;ansh,nS;g8WiB;na8Ss;ch5Yfa4lDmCndBpha4sh6Uul,ymo70;al9Yol2By;i9Ion;f,ph;ent2inB;cy,t1;aFeDhilCier62ol,reB;st1;!ip,lip;d9Brcy,tB;ar,e2V;b3Sdra6Ft44ul;ctav2Vliv3m96rFsCtBum8Uw6;is,to;aCc8SvB;al52;ma;i,l49vJ;athJeHiDoB;aBel,l0ma0r2X;h,m;cCg4i3IkB;h6Uola;hol5XkBol5X;!ol5W;al,d,il,ls1vB;il50;anBy;!a4i4;aWeTiKoFuCyB;l21r1;hamCr5ZstaB;fa,p4G;ed,mF;dibo,e,hamDis1XntCsBussa;es,he;e,y;ad,ed,mB;ad,ed;cGgu4kElDnCtchB;!e5;a78ik;house,o03t1;e,olB;aj;ah,hBk7;a4eB;al,l;hClv2rB;le,ri5v2;di,met;ck,hNlLmOnu4rHs1tDuricCxB;!imilian8Cwe5;e,io;eo,hCi52tB;!eo,hew,ia;eBis;us,w;cDio,k86lCqu6Gsha5tBv2;i2Hy;in,on;!el,oKus;achBcolm,ik;ai,y;amBdi,moud;adB;ou;aReNiMlo2RoIuCyB;le,nd1;cEiDkBth3;aBe;!s;gi,s;as,iaB;no;g0nn6RrenDuBwe5;!iB;e,s;!zo;am,on4;a7Bevi,la4SnDoBst3vi;!nB;!a60el;!ny;mCnBr67ur4Twr4T;ce,d1;ar,o4N;aIeDhaled,iBrist4Vu48y3B;er0p,rB;by,k,ollos;en0iEnBrmit,v2;!dCnBt5C;e0Yy;a5ri4N;r,th;na68rBthem;im,l;aYeQiOoDuB;an,liBst2;an,o,us;aqu2eJhnInGrEsB;eChBi7Bue;!ua;!ph;dBge;an,i,on;!aBny;h,s,th4X;!ath4Wie,nA;!l,sBy;ph;an,e,mB;!mA;d,ffGrDsB;sBus;!e;a5JemCmai8oBry;me,ni0O;i6Uy;!e58rB;ey,y;cHd6kGmFrDsCvi3yB;!d6s1;on,p3;ed,od,rBv4M;e4Zod;al,es,is1;e,ob,ub;k,ob,quB;es;aNbrahMchika,gKkeJlija,nuIrGsDtBv0;ai,sB;uki;aBha0i6Fma4sac;ac,iaB;h,s;a,vinBw2;!g;k,nngu52;!r;nacBor;io;im;in,n;aJeFina4VoDuByd56;be25gBmber4CsD;h,o;m3ra33sBwa3X;se2;aDctCitCn4ErB;be20m0;or;th;bKlJmza,nIo,rDsCyB;a43d6;an,s0;lEo4FrDuBv7;hi40ki,tB;a,o;is1y;an,ey;k,s;!im;ib;aQeMiLlenKoIrEuB;illerCsB;!tavo;mo;aDegBov3;!g,orB;io,y;dy,h57nt;nzaBrd1;lo;!n;lbe4Qno,ovan4R;ne,oDrB;aBry;ld,rd4U;ffr7rge;bri4l6rBv2;la1Zr3Eth,y;aReNiLlJorr0IrB;anDedBitz;!dAeBri24;ri23;cDkB;!ie,lB;in,yn;esJisB;!co,zek;etch3oB;yd;d4lBonn;ip;deriDliCng,rnB;an01;pe,x;co;bi0di;arZdUfrTit0lNmGnFo2rCsteb0th0uge8vBym6zra;an,ere2V;gi,iCnBrol,v2w2;est45ie;c07k;och,rique,zo;aGerFiCmB;aFe2P;lCrB;!h0;!io;s1y;nu4;be09d1iEliDmCt1viBwood;n,s;er,o;ot1Ts;!as,j43sB;ha;a2en;!dAg32mEuCwB;a25in;arB;do;o0Su0S;l,nB;est;aYeOiLoErDuCwByl0;ay8ight;a8dl7nc0st2;ag0ew;minFnDri0ugCyB;le;!l03;!a29nBov0;e5ie,y;go,icB;!k;armuCeBll1on,rk;go;id;anIj0lbeHmetri9nFon,rEsDvCwBxt3;ay8ey;en,in;hawn,mo08;ek,ri0F;is,nBv3;is,y;rt;!dB;re;lKmInHrDvB;e,iB;!d;en,iDne5rByl;eBin,yl;l2Vn;n,o,us;!e,i4ny;iBon;an,en,on;e,lB;as;a06e04hWiar0lLoGrEuCyrB;il,us;rtB;!is;aBistobal;ig;dy,lEnCrB;ey,neli9y;or,rB;ad;by,e,in,l2t1;aGeDiByI;fBnt;fo0Ct1;meCt9velaB;nd;nt;rDuCyB;!t1;de;enB;ce;aFeErisCuB;ck;!tB;i0oph3;st3;d,rlBs;eBie;s,y;cBdric,s11;il;lEmer1rB;ey,lCro5y;ll;!os,t1;eb,v2;ar02eUilTlaSoPrCuByr1;ddy,rtI;aJeEiDuCyB;an,ce,on;ce,no;an,ce;nCtB;!t;dCtB;!on;an,on;dCndB;en,on;!foBl7y;rd;bCrByd;is;!by;i8ke;al,lA;nFrBshoi;at,nCtB;!r10;aBie;rd0S;!edict,iCjam2nA;ie,y;to;n7rBt;eBy;tt;ey;ar0Xb0Nd0Jgust2hm0Gid6ja0ElZmXnPputsiOrFsaEuCveBya0ziz;ry;gust9st2;us;hi;aIchHi4jun,maFnDon,tBy0;hBu06;ur;av,oB;ld;an,nd0A;el;ie;ta;aq;dGgel05tB;hoEoB;i8nB;!i02y;ne;ny;reBy;!as,s,w;ir,mBos;ar;an,beOd6eIfFi,lEonDphonHt1vB;aMin;on;so,zo;an,en;onCrB;edP;so;c,jaEksandDssaExB;!and3;er;ar,er;ndB;ro;rtH;ni;en;ad,eB;d,t;in;aColfBri0vik;!o;mBn;!a;dFeEraCuB;!bakr,lfazl;hBm;am;!l;allEel,oulaye,ulB;!lCrahm0;an;ah,o;ah;av,on",Person:"true¦ashton kutchSbRcMdKeIgastNhGinez,jEkDleCmBnettJoAp8r4s3t2v0;a0irgin maG;lentino rossi,n go3;heresa may,iger woods,yra banks;addam hussain,carlett johanssJlobodan milosevic,uB;ay romano,eese witherspoIo1ush limbau0;gh;d stewart,nald0;inho,o;a0ipJ;lmIris hiltD;prah winfrFra;essiaen,itt romnEubarek;bron james,e;anye west,iefer sutherland,obe bryant;aime,effers8k rowli0;ng;alle ber0itlBulk hogan;ry;ff0meril lagasse,zekiel;ie;a0enzel washingt2ick wolf;lt1nte;ar1lint0ruz;on;dinal wols1son0;! palm2;ey;arack obama,rock;er",Verb:"true¦awak9born,cannot,fr8g7h5k3le2m1s0wors9;e8h3;ake sure,sg;ngth6ss6;eep tabs,n0;own;as0e2;!t2;iv1onna;ight0;en",PhrasalVerb:"true¦0:71;1:6P;2:7D;3:73;4:6I;5:7G;6:75;7:6O;8:6B;9:6C;A:5H;B:70;C:6Z;a7Gb62c5Cd59e57f45g3Nh37iron0j33k2Yl2Km2Bn29o27p1Pr1Es09tQuOvacuum 1wGyammerCzD;eroAip EonD;e0k0;by,up;aJeGhFiEorDrit52;d 1k2Q;mp0n49pe0r8s8;eel Bip 7K;aEiD;gh 06rd0;n Br 3C;it 5Jk8lk6rm 0Qsh 73t66v4O;rgeCsD;e 9herA;aRePhNiJoHrFuDype 0N;ckArn D;d2in,o3Fup;ade YiDot0y 32;ckle67p 79;ne66p Ds4C;d2o6Kup;ck FdEe Dgh5Sme0p o0Dre0;aw3ba4d2in,up;e5Jy 1;by,o6U;ink Drow 5U;ba4ov7up;aDe 4Hll4N;m 1r W;ckCke Elk D;ov7u4N;aDba4d2in,o30up;ba4ft7p4Sw3;a0Gc0Fe09h05i02lYmXnWoVpSquare RtJuHwD;earFiD;ngEtch D;aw3ba4o6O; by;ck Dit 1m 1ss0;in,up;aIe0RiHoFrD;aigh1LiD;ke 5Xn2X;p Drm1O;by,in,o6A;n2Yr 1tc3H;c2Xmp0nd Dr6Gve6y 1;ba4d2up;d2o66up;ar2Uell0ill4TlErDurC;ingCuc8;a32it 3T;be4Brt0;ap 4Dow B;ash 4Yoke0;eep EiDow 9;c3Mp 1;in,oD;ff,v7;gn Eng2Yt Dz8;d2o5up;in,o5up;aFoDu4E;ot Dut0w 5W;aw3ba4f36o5Q;c2EdeAk4Rve6;e Hll0nd GtD; Dtl42;d2in,o5upD;!on;aw3ba4d2in,o1Xup;o5to;al4Kout0rap4K;il6v8;at0eKiJoGuD;b 4Dle0n Dstl8;aDba4d2in52o3Ft2Zu3D;c1Ww3;ot EuD;g2Jnd6;a1Wf2Qo5;ng 4Np6;aDel6inAnt0;c4Xd D;o2Su0C;aQePiOlMoKrHsyc29uD;ll Ft D;aDba4d2in,o1Gt33up;p38w3;ap37d2in,o5t31up;attleCess EiGoD;p 1;ah1Gon;iDp 52re3Lur44wer 52;nt0;ay3YuD;gAmp 9;ck 52g0leCn 9p3V;el 46ncilA;c3Oir 2Hn0ss FtEy D;ba4o4Q; d2c1X;aw3ba4o11;pDw3J;e3It B;arrow3Serd0oD;d6te3R;aJeHiGoEuD;ddl8ll36;c16p 1uth6ve D;al3Ad2in,o5up;ss0x 1;asur8lt 9ss D;a19up;ke Dn 9r2Zs1Kx0;do,o3Xup;aOeMiHoDuck0;a16c36g 0AoDse0;k Dse34;aft7ba4d2forw2Ain3Vov7uD;nd7p;e GghtFnEsDv1T;ten 4D;e 1k 1; 1e2Y;ar43d2;av1Ht 2YvelD; o3L;p 1sh DtchCugh6y1U;in3Lo5;eEick6nock D;d2o3H;eDyA;l2Hp D;aw3ba4d2fSin,o05to,up;aFoEuD;ic8mpA;ke2St2W;c31zz 1;aPeKiHoEuD;nker2Ts0U;lDneArse2O;d De 1;ba4d2fast,oZup;de Et D;ba4on,up;aw3o5;aDlp0;d Fr Dt 1;fDof;rom;in,oO;cZm 1nDve it;d Dg 27kerF;d2in,o5;aReLive Jloss1VoFrEunD; f0M;in39ow 23; Dof 0U;aEb17it,oDr35t0Ou12;ff,n,v7;bo5ft7hJw3;aw3ba4d2in,oDup,w3;ff,n,ut;a17ek0t D;aEb11d2oDr2Zup;ff,n,ut,v7;cEhDl1Pr2Xt,w3;ead;ross;d aEnD;g 1;bo5;a08e01iRlNoJrFuD;cDel 1;k 1;eEighten DownCy 1;aw3o2L;eDshe1G; 1z8;lFol D;aDwi19;bo5r2I;d 9;aEeDip0;sh0;g 9ke0mDrD;e 2K;gLlJnHrFsEzzD;le0;h 2H;e Dm 1;aw3ba4up;d0isD;h 1;e Dl 11;aw3fI;ht ba4ure0;eInEsD;s 1;cFd D;fDo1X;or;e B;dQl 1;cHll Drm0t0O;apYbFd2in,oEtD;hrough;ff,ut,v7;a4ehi1S;e E;at0dge0nd Dy8;o1Mup;o09rD;ess 9op D;aw3bNin,o15;aShPlean 9oDross But 0T;me FoEuntD; o1M;k 1l6;aJbIforGin,oFtEuD;nd7;ogeth7;ut,v7;th,wD;ard;a4y;pDr19w3;art;eDipA;ck BeD;r 1;lJncel0rGsFtch EveA; in;o16up;h Bt6;ry EvD;e V;aw3o12;l Dm02;aDba4d2o10up;r0Vw3;a0He08l01oSrHuD;bbleFcklTilZlEndlTrn 05tDy 10zz6;t B;k 9; ov7;anMeaKiDush6;ghHng D;aEba4d2forDin,o5up;th;bo5lDr0Lw3;ong;teD;n 1;k D;d2in,o5up;ch0;arKgJil 9n8oGssFttlEunce Dx B;aw3ba4;e 9; ar0B;k Bt 1;e 1;d2up; d2;d 1;aIeed0oDurt0;cFw D;aw3ba4d2o5up;ck;k D;in,oK;ck0nk0st6; oJaGef 1nd D;d2ov7up;er;up;r0t D;d2in,oDup;ff,ut;ff,nD;to;ck Jil0nFrgEsD;h B;ainCe B;g BkC; on;in,o5; o5;aw3d2o5up;ay;cMdIsk Fuction6; oD;ff;arDo5;ouD;nd;d D;d2oDup;ff,n;own;t D;o5up;ut",Modal:"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to;ay,ight,ust;an,o0;uld",Adjective:"true¦0:75;1:7K;2:7Q;3:7J;4:7C;5:5C;6:48;7:49;8:4S;9:61;A:7H;B:70;C:6Z;D:73;E:5X;a6Jb65c5Rd57e4Tf49g41h3Qi35j33k32l2Rm2Gn27o1Rp1Aquack,r10s0Gt09uQvNwFyear5;arp0eJholeIiHoF;man5oFu6C;d6Ezy;despr75s5G;!sa7;eGlFste26;co1Il o4L;!k5;aGiFola4B;b7Tce versa,ol55;ca2gabo63nilla;ltWnJpGrb5Asu4tterF;!moC; f34b1OpGsFti1H;ca7et,ide dMtairs;er,i3N;aPbeco6Rconvin27deMeLfair,ivers4knKprecedYrIsGwF;iel20ritt5Z;i1VuF;pervis0specti3;eFu5;cognLgul6Hl6H;own;ndi3v5Txpect0;cid0rF;!grou5OsF;iz0tood;b7ppeaLssu6GuthorF;iz0;i24ra;aJeHhough4PoGrF;i1oubl0;geth8p,rpB;en5QlFm50rr2Ust0;li3;boo,lFn;ent0;aXcWeUhTiRmug,nobbi3EoPpOqueami3EtJuFymb64;bHi gener55pFrprisi3;erFre0L;! dup8b,i29;du0seq4U;anda6UeIi0PrFy38;aightFip0; fFfF;or5B;adfaCreotyp0;aEec2Gir1JlendBot on; call0le,mb8phist1XrFu0Xvi42;dBry;gnifica2nF;ceEg7;am2Pe8ocki3ut;cFda1em5lfi2Yni1Wpa69re6;o1Gr3W;at58ient28reec58;cr0me,ns serif;aMeIiGoF;buCtt4UuSy4;ghtFv4;!-29f9;ar,bel,condi1du63fres52lHpublic3WsFtard0;is48oF;lu1na2;e1Euc46;bBciF;al,st;aQeOicayu6lacBopuliCrGuF;bl5Amp0;eJiGoF;!b0AfuDmi32p8;mGor,sFva1;ti6;a4We;ciDmF;a0IiF;er,um;ac20rFti1;feAma2Uplexi3v34;rFst;allelHtF;-tiFi4;me;!ed;bQffOkNld fashion0nMpLrg1Hth8utKvF;al,erF;!aHniGt,wF;eiFrouF;ght;ll;do0Ver,g2Msi46;en,posi1; boa5Gg2Kli6;!ay; gua5EbFli6;eat;eHsF;cFer0Hole1;e6uE;d2Tse;ak0eMiLoFua4P;nJrGtF;ab7;thF;!eF;rn;chala2descri50stop;ght5;arby,cessa3Xighbor5xt;aNeLiIoFultip7;bi7derGlFnth5ot,st;dy;a1n;nFx0;iaFor;tuE;di4FnaFre;ci3;cFgenta,in,j03keshift,le,mmoth,ny,sculi6;abEho;aOeJiGoFu13;uti12vi3;mGteraF;l,te;it0;ftIgFth4;al,eGitiF;ma1;nda3D;!-0C;nguBst,tt8;ap1Tind5no0A;agg0uF;niOstifi0veni7;de4gno4Clleg4mSnHpso 1WrF;a1releF;va2; NaMbr0corLdJfluenTiTnIsHtF;aAenDoxF;ic37;a6i2S;a1er,oce2;iGoF;or;reA;deq3Kppr2Z;fFsitu,vitro;ro2;mJpF;arHerfeAoFrop8;li1rtF;a2ed;ti4;eFi0R;d2RnD;aKelJiHoFumdr3C;neCok0rrFs07ur5;if2T;ghfalut1PspF;an2R;liZpf9;lInHrF;d05roF;wi3;dy,gi3;f,low0;ainf9ener2Kiga23lLoKraHuF;ilFng ho;ty;cGtF;ef9is;ef9;ne,od;ea2Eob4;aUeOinNlMoHrF;a1UeFoz1L;e2Eq13tf9;oHrF; keeps,eFm8tuna1;g05ign;liF;sh;ag30ue2;al,i1;dJmGrF;ti7;a7ini6;ne;le; up;bl0i2lDr Gux,voF;ri1uri1;oFreac1F;ff;aOfficie2lNmiMnKreAthere4veJxF;aAcess,peHtraGuF;be2Ml0I;!va1E;ct0rt;n,ryday; Fcouragi3tiE;rou1sui1;ne2;abo23dQe18i1;g8sF;t,ygF;oi3;er;aVeNiHoFrea15ue;mina2ne,ubF;le,tf9;dact1Bfficu1OsGvF;erD;creHeas0gruntl0honeCordGtF;a2ress0;er5;et; LadpKfJgene1PliHrang0spe1PtGvoF;ut;ail0ermin0;be1Mca1ghF;tf9;ia2;an;facto;i5magFngeroZs0I;ed,i3;ly;ertaRhief,ivil,oHrF;aFowd0u0H;mp0v02z0;loNmLnGoi3rrFve0P;eAu1I;cre1grIsHtF;emFra0F;po0D;ta2;ue2;mer08pleF;te,x;ni4ss4;in;aPeLizarElJoGrF;and new,isk,okP;gGna fiWttom,urgeoF;is;us;ank,iI;re;autif9hiGlov0nFst,yoG;eVt;nd;ul;ckGnkru0XrrF;en;!wards; priori,b0Nc0Kd0AfraBg05h04lZma06ntiquYpUrOsMttracti07utheLvIwF;aGkF;wa0U;ke,re;ant garGerF;age;de;ntV;leep,tonisF;hi3;ab,bitIroHtiF;fiF;ci4;ga2;raF;ry;pFt;are2etiPrF;oprF;ia1;at0;arIcohGeFiMl,oof;rt;olF;ic;mi3;ead;ainCgressiGoniF;zi3;ve;st;id; MeKuJvF;aGerD;se;nc0;ed;lt;pt,qF;ua1;hoc,infinitF;um;cuGtu4u1;al;ra1;erPlOoMruLsGuF;nda2;e2oGtraA;ct;lu1rbi3;ng;te;pt;aFve;rd;aze,e;ra2;nt",Comparable:"true¦0:40;1:4H;2:44;3:4A;4:2X;5:3W;a4Nb43c3Nd3Ce34f2Qg2Eh23i1Uj1Tk1Ql1Hm1Bn15o13p0Tqu0Rr0IsRtKuIvFw7y6za11;ell26ou3;aBe9hi1Xi7r6;o3y;ck0Mde,l6n1ry,se;d,y;a6i4Lt;k,ry;n1Sr6sI;m,y;a7e6ulgar;nge5rda2xi3;gue,in,st;g0n6pco3Lse5;like0ti1;aAen9hi8i7ough,r6;anqu2Pen1ue;dy,g3Tme0ny,r09;ck,n,rs2Q;d41se;ll,me,rt,s6wd46;te5;aVcarUeThRiQkin0FlMmKoHpGqua1GtAu7w6;eet,ift;b7dd14per0Gr6;e,re2I;sta2Gt4;aAe9iff,r7u6;pXr1;a6ict,o3;ig3Gn0V;a1ep,rn;le,rk;e23i3Gright0;ci29ft,l7o6re,ur;n,thi3;emn,id;a6el0ooth;ll,rt;e8i6ow,y;ck,g36m6;!y;ek,nd3E;ck,l0mp4;a6iTort,rill,y;dy,ll0Yrp;cu0Sve0Sxy;ce,ed,y;d,fe,int0l1Wv15;aBe9i8o6ude;mantic,o1Jsy,u6;gh,nd;ch,pe,tzy;a6d,mo0I;dy,l;gg7ndom,p6re,w;id;ed;ai2i6;ck,et;aEhoDi1RlCoBr8u6;ny,r6;e,p4;egna2ic7o6;fouZud;ey,k0;li05or,te1C;ain,easa2;ny;in5le;dd,f6i0ld,ranR;fi11;aAe8i7o6;b4isy,rm16sy;ce,mb4;a6w;r,t;ive,rr02;aAe8ild,o7u6;nda1Ate;ist,o1;a6ek,llY;n,s0ty;d,tuR;aCeBi9o6ucky;f0Vn7o1Eu6ve0w18y0U;d,sy;e0g;g1Uke0tt4v6;e0i3;an,wd;me,r6te;ge;e7i6;nd;en;ol0ui1P;cy,ll,n6;sBt6;e6ima8;llege2r6;es7media6;te;ti3;ecu6ta2;re;aEeBiAo8u6;ge,m6ng1R;b4id;ll6me0t;ow;gh,l0;a6f04sita2;dy,v6;en0y;nd1Hppy,r6te5;d,sh;aGenFhDiClBoofy,r6;a9e8is0o6ue1E;o6ss;vy;at,en,y;nd,y;ad,ib,ooI;a2d1;a6o6;st0;t4uiY;u1y;aIeeb4iDlat,oAr8u6;ll,n6r14;!ny;aHe6iend0;e,sh;a7r6ul;get5mG;my;erce8n6rm,t;an6e;ciC;! ;le;ir,ke,n0Fr,st,t,ulA;aAerie,mp9sse7v6xtre0Q;il;nti6;al;ty;r7s6;tern,y;ly,th0;aFeCi9r7u6;ll,mb;u6y;nk;r7vi6;ne;e,ty;a6ep,nD;d6f,r;!ly;mp,pp03rk;aHhDlAo8r7u6;dd0r0te;isp,uel;ar6ld,mmon,ol,st0ward0zy;se;e6ou1;a6vW;n,r;ar8e6il0;ap,e6;sy;mi3;gey,lm8r6;e5i3;ful;!i3;aNiLlIoEr8u6;r0sy;ly;aAi7o6;ad,wn;ef,g7llia2;nt;ht;sh,ve;ld,r7un6;cy;ed,i3;ng;a7o6ue;nd,o1;ck,nd;g,tt6;er;d,ld,w1;dy;bsu9ng8we6;so6;me;ry;rd",TextValue:"true¦bMeIfChundredNmMnin9one,qu8s6t0zeroN;enMh3rLw0;e0o;l0ntC;fGve;ir0ousandIree;d,t5;e0ix7;cond,ptEven6xtE;adrDintD;e0th;!t0;e9ie8y;i3o0;rt1ur0;!t2;ie4y;ft0rst,ve;e3h,ie2y;ight0lev2;!e1h,ie0y;th;en1;illion0;!th",Ordinal:"true¦bGeDf9hundredHmGnin7qu6s4t0zeroH;enGh1rFwe0;lfFn9;ir0ousandE;d,t4;e0ixt9;cond,ptAvent8xtA;adr9int9;et0th;e6ie8;i2o0;r0urt3;tie5;ft1rst;ight0lev1;e0h,ie2;en1;illion0;th",Cardinal:"true¦bGeDf7hundred,mGnine9one,qu6s4t0zero;en,h2rFw0;e0o;lve,n7;irt8ousand,ree;e0ix4;ptAven3xtA;adr9int9;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illion",Expression:"true¦a02b01dXeVfuck,gShLlImHnGoDpBshAu7voi04w3y0;a1eLu0;ck,p;!a,hoo,y;h1ow,t0;af,f;e0oa;e,w;gh,h0;! 0h,m;huh,oh;eesh,hh,it;ff,hew,l0sst;ease,z;h1o0w,y;h,o,ps;!h;ah,ope;eh,mm;m1ol0;!s;ao,fao;a4e2i,mm,oly1urr0;ah;! mo6;e,ll0y;!o;ha0i;!ha;ah,ee,o0rr;l0odbye;ly;e0h,t cetera,ww;k,p;'oh,a0uh;m0ng;mit,n0;!it;ah,oo,ye; 1h0rgh;!em;la",Adverb:"true¦a07by 05d01eYfShQinPjustOkinda,mMnJoEpCquite,r9s5t2up1very,w0Bye0;p,s; to,wards5;h1o0wiO;o,t6ward;en,us;everal,o0uch;!me1rt0; of;hXtimes,w07;a1e0;alS;ndomRthN;ar excellDer0oint blank; Mhaps;f3n0;ce0ly;! 0;ag00moU; courHten;ewJo0; longEt 0;onHwithstanding;aybe,eanwhiAore0;!ovB;! aboS;deed,steT;en0;ce;or2u0;l9rther0;!moH; 0ev3;examp0good,suF;le;n mas1v0;er;se;e0irect1; 1finite0;ly;ju7trop;far,n0;ow; CbroBd nauseam,gAl5ny2part,side,t 0w3;be5l0mo5wor5;arge,ea4;mo1w0;ay;re;l 1mo0one,ready,so,ways;st;b1t0;hat;ut;ain;ad;lot,posteriori",Preposition:"true¦'o,-,aKbHcGdFexcept,fEinDmidPnotwithstandiQoBpRqua,sAt6u3vi2w0;/o,hereMith0;!in,oQ;a,s-a-vis;n1p0;!on;like,til;h0ill,owards;an,r0;ough0u;!oI;ans,ince,o that;',f0n1ut;!f;!to;or,rom;espite,own,u3;hez,irca;ar1e0oAy;low,sides,tween;ri6;',bo7cross,ft6lo5m3propos,round,s1t0;!op;! long 0;as;id0ong0;!st;ng;er;ut",Determiner:"true¦aAboth,d8e5few,l3mu7neiCown,plenty,some,th2various,wh0;at0ich0;evB;at,e3is,ose;a,e0;!ast,s;a1i6l0nough,very;!se;ch;e0u;!s;!n0;!o0y;th0;er"},at=["Person","Place","Organization"],it={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:at},Actor:{isA:"Noun",notA:at},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:at},Demonym:{isA:["Noun","ProperNoun"],notA:at},Possessive:{isA:"Noun"}},ot={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},st={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},ut=["Noun","Verb","Adjective","Adverb","Value"],lt={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Determiner:{notA:ut},Conjunction:{notA:ut},Preposition:{notA:ut},QuestionWord:{notA:["Determiner"]},Currency:{},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},ct={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},ht=function(e){return Object.keys(e).forEach((function(t){ct[t]?e[t].color=ct[t]:e[t].isA.some((function(n){return!!ct[n]&&(e[t].color=ct[n],!0)}))})),e},dt=function(e){return Object.keys(e).forEach((function(t){for(var n=e[t],r=n.isA.length,a=0;a=0;i--,a*=36){var o=e.charCodeAt(i)-48;o>10&&(o-=7),t+=o*a}return t},wt=function(e,t,n){var r=At(t);return r1&&(n.hasCompound[i[0]]=!0),"Singular"===t){var o=a.toPlural(e,n);r[o]=r[o]||"Plural"}if("Infinitive"===t)for(var s=a.conjugate(e,n),u=Object.keys(s),l=0;l0&&void 0!==arguments[0]?arguments[0]:"",t=e[e.length-1];if(!0===Tt.hasOwnProperty(t))for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n={};return t&&t.irregulars&&!0===t.irregulars.verbs.hasOwnProperty(e)&&(n=Object.assign({},t.irregulars.verbs[e])),void 0===(n=Object.assign({},Ht(e),n)).Gerund&&(n.Gerund=Mt.Gerund(e)),void 0===n.PastTense&&(n.PastTense=Mt.PastTense(e)),void 0===n.PresentTense&&(n.PresentTense=Mt.PresentTense(e)),n},Lt=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/oud$/,/...p$/],Jt=[/ary$/],Wt={nice:"nicest",late:"latest",hard:"hardest",inner:"innermost",outer:"outermost",far:"furthest",worse:"worst",bad:"worst",good:"best",big:"biggest",large:"largest"},_t=[{reg:/y$/i,repl:"iest"},{reg:/([aeiou])t$/i,repl:"$1ttest"},{reg:/([aeou])de$/i,repl:"$1dest"},{reg:/nge$/i,repl:"ngest"},{reg:/([aeiou])te$/i,repl:"$1test"}],qt=[/ght$/,/nge$/,/ough$/,/ain$/,/uel$/,/[au]ll$/,/ow$/,/old$/,/oud$/,/e[ae]p$/],Rt=[/ary$/,/ous$/],Kt={grey:"greyer",gray:"grayer",green:"greener",yellow:"yellower",red:"redder",good:"better",well:"better",bad:"worse",sad:"sadder",big:"bigger"},Qt=[{reg:/y$/i,repl:"ier"},{reg:/([aeiou])t$/i,repl:"$1tter"},{reg:/([aeou])de$/i,repl:"$1der"},{reg:/nge$/i,repl:"nger"}],Ut={toSuperlative:function(e){if(Wt.hasOwnProperty(e))return Wt[e];for(var t=0;t<_t.length;t++)if(_t[t].reg.test(e))return e.replace(_t[t].reg,_t[t].repl);for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n=t.irregulars.nouns;if(n.hasOwnProperty(e))return n[e];var r=en(e);return null!==r?r:Yt.test(e)?e+"es":e+"s"},nn=[[/([^v])ies$/i,"$1y"],[/ises$/i,"isis"],[/(kn|[^o]l|w)ives$/i,"$1ife"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i,"$1f"],[/^(dwar|handkerchie|hoo|scar|whar)ves$/i,"$1f"],[/(antenn|formul|nebul|vertebr|vit)ae$/i,"$1a"],[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i,"$1us"],[/(buffal|tomat|tornad)(oes)$/i,"$1o"],[/(..[aeiou]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/(x|ch|ss|sh|z|o)es$/i,"$1"],[/men$/i,"man"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/([m|l])ice$/i,"$1ouse"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ics)$/i,"$1"],[/s$/i,""]],rn=function(e,t){var n,r=t.irregulars.nouns,a=(n=r,Object.keys(n).reduce((function(e,t){return e[n[t]]=t,e}),{}));if(a.hasOwnProperty(e))return a[e];for(var i=0;i0}));return this.buildFrom(n)},t.ifNo=function(e){var t=Fe(e),n=this.list.filter((function(e){return 0===e.match(t).length}));return this.buildFrom(n)},t.has=function(e){var t=Fe(e);return this.list.some((function(e){return!0===e.has(t)}))},t.lookAhead=function(e){e||(e=".*");var t=Fe(e),n=[];return this.list.forEach((function(e){n=n.concat(e.lookAhead(t))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookAfter=t.lookAhead,t.lookBehind=function(e){e||(e=".*");var t=Fe(e),n=[];return this.list.forEach((function(e){n=n.concat(e.lookBehind(t))})),n=n.filter((function(e){return e})),this.buildFrom(n)},t.lookBefore=t.lookBehind,t.before=function(e){var t=Fe(e),n=this.if(t).list.map((function(e){var n=e.terms().map((function(e){return e.id})),r=e.match(t)[0],a=n.indexOf(r.start);return 0===a||-1===a?null:e.buildFrom(e.start,a)}));return n=n.filter((function(e){return null!==e})),this.buildFrom(n)},t.after=function(e){var t=Fe(e),n=this.if(t).list.map((function(e){var n=e.terms(),r=n.map((function(e){return e.id})),a=e.match(t)[0],i=r.indexOf(a.start);if(-1===i||!n[i+a.length])return null;var o=n[i+a.length].id,s=e.length-i-a.length;return e.buildFrom(o,s)}));return n=n.filter((function(e){return null!==e})),this.buildFrom(n)}}))),vn=(gn.match,gn.not,gn.matchOne,gn.ifNo,gn.has,gn.lookAhead,gn.lookAfter,gn.lookBehind,gn.lookBefore,gn.before,gn.after,function(e,t,n,r){var a=[];"string"==typeof e&&(a=e.split(" ")),t.list.forEach((function(i){var o=i.terms();!0===n&&(o=o.filter((function(n){return n.canBe(e,t.world)}))),o.forEach((function(n,i){a.length>1?a[i]&&"."!==a[i]&&n.tag(a[i],r,t.world):n.tag(e,r,t.world)}))}))}),bn={tag:function(e,t){return e?(vn(e,this,!1,t),this):this},tagSafe:function(e,t){return e?(vn(e,this,!0,t),this):this},unTag:function(e,t){var n=this;return this.list.forEach((function(r){r.terms().forEach((function(r){return r.unTag(e,t,n.world)}))})),this},canBe:function(e){if(!e)return this;var t=this.world,n=this.list.reduce((function(n,r){return n.concat(r.canBe(e,t))}),[]);return this.buildFrom(n)}},yn={map:function(t){var n=this;if(!t)return this;var r=this.list.map((function(e,r){var a=n.buildFrom([e]);a.from=null;var i=t(a,r);return i.list&&i.list[0]?i.list[0]:i}));return 0===r.length?this.buildFrom(r):"object"!==e(r[0])||"Phrase"!==r[0].isA?r:this.buildFrom(r)},forEach:function(e,t){var n=this;return e?(this.list.forEach((function(r,a){var i=n.buildFrom([r]);!0===t&&(i.from=null),e(i,a)})),this):this},filter:function(e){var t=this;if(!e)return this;var n=this.list.filter((function(n,r){var a=t.buildFrom([n]);return a.from=null,e(a,r)}));return this.buildFrom(n)},find:function(e){var t=this;if(!e)return this;var n=this.list.find((function(n,r){var a=t.buildFrom([n]);return a.from=null,e(a,r)}));return n?this.buildFrom([n]):void 0},some:function(e){var t=this;return e?this.list.some((function(n,r){var a=t.buildFrom([n]);return a.from=null,e(a,r)})):this},random:function(e){if(!this.found)return this;var t=Math.floor(Math.random()*this.list.length);if(void 0===e){var n=[this.list[t]];return this.buildFrom(n)}return t+e>this.length&&(t=(t=this.length-e)<0?0:t),this.slice(t,t+e)}},An=function(e,t){return""!==t&&(e.reduced===t||e.implicit===t||e.root===t||e.text.toLowerCase()===t)},wn={lookup:function(t){var n=this;"string"==typeof t&&(t=[t]);var r=t.map((function(e){e=e.toLowerCase();var t=Ye(e);return t=t.map((function(e){return e.trim()}))}));this.cache();var a=[];return r.forEach((function(t){n.list.forEach((function(n){if(!0===n.cache.words[t[0]]){var r=n.terms(),i=function(t,n){for(var r=function(e){if(An(n[e],t[0])&&t.every((function(t,r){return!0===An(n[e+r],t)})))return{v:n[e].id}},a=0;a0&&void 0!==arguments[0]?arguments[0]:{};if("number"==typeof n&&this.list[n])return this.list[n].json(r);("root"===(n=Object.assign({},r,n))||"object"===e(n)&&n.root)&&this.list.forEach((function(e){e.terms().forEach((function(e){null===e.root&&e.setRoot(t.world)}))})),n.unique&&(n.reduced=!0),n.offset&&(n.terms=!0===n.terms?{}:n.terms,n.terms.offset=!0),(n.index||n.terms.index)&&(n.terms=!0===n.terms?{}:n.terms,n.terms.id=!0);var i=this.list.map((function(e){return e.json(n,t.world)}));if(n.terms.offset||n.offset||n.terms.index||n.index){var o=a(this.all());(n.terms.index||n.index)&&i.forEach((function(e){e.terms.forEach((function(e){e.index=o[e.id].index})),e.index=e.terms[0].index})),(n.terms.offset||n.offset)&&i.forEach((function(e){e.terms.forEach((function(e){e.offset=o[e.id]||{}}));var t=e.terms.reduce((function(e,t){return e+=t.offset.length||0}),0);e.offset=e.terms[0].offset,e.offset.length=t}))}if(n.frequency||n.freq||n.count){var s={};this.list.forEach((function(e){var t=e.text("reduced");s[t]=s[t]||0,s[t]+=1})),this.list.forEach((function(e,t){i[t].count=s[e.text("reduced")]}))}if(n.unique){var u={};i=i.filter((function(e){return!0!==u[e.reduced]&&(u[e.reduced]=!0,!0)}))}return i},n.data=n.json})),En=(Gn.json,Gn.data,["Person","Place","Organization"]),Cn={Noun:{notA:["Verb","Adjective","Adverb"]},Singular:{isA:"Noun",notA:"Plural"},ProperNoun:{isA:"Noun"},Person:{isA:["ProperNoun","Singular"],notA:["Place","Organization"]},FirstName:{isA:"Person"},MaleName:{isA:"FirstName",notA:["FemaleName","LastName"]},FemaleName:{isA:"FirstName",notA:["MaleName","LastName"]},LastName:{isA:"Person",notA:["FirstName"]},Honorific:{isA:"Noun",notA:["FirstName","LastName"]},Place:{isA:"Singular",notA:["Person","Organization"]},Country:{isA:["Place","ProperNoun"],notA:["City"]},City:{isA:["Place","ProperNoun"],notA:["Country"]},Region:{isA:["Place","ProperNoun"]},Address:{isA:"Place"},Organization:{isA:["Singular","ProperNoun"],notA:["Person","Place"]},SportsTeam:{isA:"Organization"},School:{isA:"Organization"},Company:{isA:"Organization"},Plural:{isA:"Noun",notA:["Singular"]},Uncountable:{isA:"Noun"},Pronoun:{isA:"Noun",notA:En},Actor:{isA:"Noun",notA:En},Activity:{isA:"Noun",notA:["Person","Place"]},Unit:{isA:"Noun",notA:En},Demonym:{isA:["Noun","ProperNoun"],notA:En},Possessive:{isA:"Noun"}},Fn={Verb:{notA:["Noun","Adjective","Adverb","Value"]},PresentTense:{isA:"Verb",notA:["PastTense","Copula","FutureTense"]},Infinitive:{isA:"PresentTense",notA:["PastTense","Gerund"]},Gerund:{isA:"PresentTense",notA:["PastTense","Copula","FutureTense"]},PastTense:{isA:"Verb",notA:["FutureTense"]},FutureTense:{isA:"Verb"},Copula:{isA:"Verb"},Modal:{isA:"Verb",notA:["Infinitive"]},PerfectTense:{isA:"Verb",notA:"Gerund"},Pluperfect:{isA:"Verb"},Participle:{isA:"Verb"},PhrasalVerb:{isA:"Verb"},Particle:{isA:"PhrasalVerb"}},Nn={Value:{notA:["Verb","Adjective","Adverb"]},Ordinal:{isA:"Value",notA:["Cardinal"]},Cardinal:{isA:"Value",notA:["Ordinal"]},RomanNumeral:{isA:"Cardinal",notA:["Ordinal","TextValue"]},TextValue:{isA:"Value",notA:["NumericValue"]},NumericValue:{isA:"Value",notA:["TextValue"]},Money:{isA:"Cardinal"},Percent:{isA:"Value"}},jn=["Noun","Verb","Adjective","Adverb","Value"],Bn={Adjective:{notA:["Noun","Verb","Adverb","Value"]},Comparable:{isA:["Adjective"]},Comparative:{isA:["Adjective"]},Superlative:{isA:["Adjective"],notA:["Comparative"]},NumberRange:{isA:["Contraction"]},Adverb:{notA:["Noun","Verb","Adjective","Value"]},Date:{notA:["Verb","Conjunction","Adverb","Preposition","Adjective"]},Month:{isA:["Date","Singular"],notA:["Year","WeekDay","Time"]},WeekDay:{isA:["Date","Noun"]},Determiner:{notA:jn},Conjunction:{notA:jn},Preposition:{notA:jn},QuestionWord:{notA:["Determiner"]},Currency:{},Expression:{notA:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{notA:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email"]},PhoneNumber:{notA:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{isA:["Noun"],notA:["HashTag","Verb","Adjective","Value","Email"]},Emoji:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Email:{notA:["HashTag","Verb","Adjective","Value","AtMention"]},Auxiliary:{notA:["Noun","Adjective","Value"]},Acronym:{notA:["Plural","RomanNumeral"]},Negative:{notA:["Noun","Adjective","Value"]},Condition:{notA:["Verb","Adjective","Noun","Value"]}},xn={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Adverb:"cyan"},Dn=function(e){return Object.keys(e).forEach((function(t){xn[t]?e[t].color=xn[t]:e[t].isA.some((function(n){return!!xn[n]&&(e[t].color=xn[n],!0)}))})),e},On=function(e){return Object.keys(e).forEach((function(t){for(var n=e[t],r=n.isA.length,a=0;at.count?-1:e.countt[n]?-1:1}))).map((function(e){return[e,t[e]]}))}(n);var r={};return n.forEach((function(e,t){r[e[0]]=t})),t=t.map((function(t){var n=t.terms.map((function(t){var n=t.tags;return n=(n=(n=Jn(n,e.world)).map((function(e){return r[e]}))).join(",")}));return n=n.join("|"),[t.text,n]})),{tags:Object.keys(r),list:t}}},_n={alpha:function(e,t){var n=e.text("clean"),r=t.text("clean");return nr?1:0},length:function(e,t){var n=e.text().trim().length,r=t.text().trim().length;return nr?-1:0},wordCount:function(e,t){var n=e.wordCount(),r=t.wordCount();return nr?-1:0}};_n.alphabetical=_n.alpha,_n.wordcount=_n.wordCount;var qn={index:!0,sequence:!0,seq:!0,sequential:!0,chron:!0,chronological:!0},Rn={sort:function(e){return"freq"===(e=e||"alpha")||"frequency"===e||"topk"===e?(n={},r={case:!0,punctuation:!1,whitespace:!0,unicode:!0},(t=this).list.forEach((function(e){var t=e.text(r);n[t]=n[t]||0,n[t]+=1})),t.list.sort((function(e,t){var a=n[e.text(r)],i=n[t.text(r)];return ai?-1:0})),t):qn.hasOwnProperty(e)?function(e){var t={};return e.json({terms:{offset:!0}}).forEach((function(e){t[e.terms[0].id]=e.terms[0].offset.start})),e.list=e.list.sort((function(e,n){return t[e.start]>t[n.start]?1:t[e.start]0){a+=o;continue}}void 0!==n[i]&&!0===n.hasOwnProperty(i)&&e[a].tag(n[i],"lexicon",t),i!==e[a].reduced&&!0===n.hasOwnProperty(e[a].reduced)&&e[a].tag(n[e[a].reduced],"lexicon",t)}return e},fr=/[\'‘’‛‵′`´]$/,mr=/^[A-Z]('s|,)?$/,pr={I:!0,A:!0},gr=function(e,t,n){var r=e[t];if(fr.test(r.text)&&!fr.test(r.pre)&&!fr.test(r.post)&&r.clean.length>2){var a=r.clean[r.clean.length-2];if("s"===a)return void r.tag(["Possessive","Noun"],"end-tick",n);"n"===a&&r.tag(["Gerund"],"chillin",n)}!function(e,t){var n=e.reduced;return!!e.tags.Acronym||!(n.length>4&&t.words[n])&&e.isAcronym()}(r,n)?!pr.hasOwnProperty(r.text)&&mr.test(r.text)&&(r.tag("Acronym","one-letter-acronym",n),r.tag("Noun","one-letter-infer",n)):(r.tag("Acronym","acronym-step",n),r.tag("Noun","acronym-infer",n))},vr=[[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber"],[/^[-+]?[$€¥£][0-9]+(.[0-9]{1,2})?([a-z]{1,4})?$/,["Money","Value"]],[/^[-+]?[$€¥£][0-9]{1,3}(,[0-9]{3})+(.[0-9]{1,2})?$/,["Money","Value"]],[/^[-+]?[0-9]([0-9,.]+)?(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"]],[/^\w+@\w+\.[a-z]{2,3}$/,"Email"],[/^#[a-z0-9_\u00C0-\u00FF]{2,}$/,"HashTag"],[/^@\w{2,}$/,"AtMention"],[/^(https?:\/\/|www\.)\w+\.[a-z]{2,3}/,"Url"],[/^[\w\.\/]+\.(com|net|gov|org|ly|edu|info|biz|ru|jp|de|in|uk|br)/,"Url"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/,"Time"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/,"Time"],[/^[PMCE]ST$/,"Time"],[/^utc ?[+-]?[0-9]+?$/,"Time"],[/^[a-z0-9]*? o\'?clock$/,"Time"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date"],[/^[0-9]{1,4}\/[0-9]{1,2}\/[0-9]{1,4}$/,"Date"],[/^ma?c\'.*/,"LastName"],[/^o\'[drlkn].*/,"LastName"],[/^ma?cd[aeiou]/,"LastName"],[/^(lol)+[sz]$/,"Expression"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb"],[/^[\-\+]?[0-9]+(\.[0-9])*$/,["Cardinal","NumericValue"]],[/^(over|under)[a-z]{2,}/,"Adjective"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date"],[/^[\-\+]?[0-9][0-9,]*(\.[0-9])*$/,["Cardinal","NumericValue"]],[/^[-+]?[0-9]+(.[0-9]+)?$/,["Cardinal","NumericValue"]],[/^[0-9\.]{1,4}(st|nd|rd|th)?[-–][0-9\.]{1,4}(st|nd|rd|th)?$/,"NumberRange"],[/^[-+]?[0-9.,]{1,3}(,[0-9.,]{3})+(.[0-9]+)?$/,"NumericValue"],[/^.?[0-9]+([0-9,.]+)?%$/,["Percent","Cardinal","NumericValue"]],[/^[0-9]{1,4}\/[0-9]{1,4}$/,"Fraction"],[/^[0-9\.]{1,2}[-–][0-9]{1,2}$/,["Value","NumberRange"]],[/^[0-9][0-9,\.]*(st|nd|rd|r?th)$/,["NumericValue","Ordinal"]],[/[0-9]\+$/,["Cardinal","NumericValue"]],[/^[0-9]+(st|nd|rd|th)$/,"Ordinal"],[/^[0-9\.]+([a-z]{1,4})$/,"Value"]],br=/^[IVXLCDM]{2,}$/,yr=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,Ar="Adjective",wr="Infinitive",kr="Singular",$r="PastTense",Pr="Expression",Gr="LastName",Er={a:[[/.[aeiou]na$/,"Noun"],[/.[oau][wvl]ska$/,Gr],[/.[^aeiou]ica$/,kr],[/^([hyj]a)+$/,Pr]],c:[[/.[^aeiou]ic$/,Ar]],d:[[/.[ia]sed$/,Ar],[/.[gt]led$/,Ar],[/.[td]ed$/,$r],[/.[aeiou]red$/,$r],[/.[^aeiou]led$/,$r],[/[^aeiou]ard$/,kr],[/[aeiou][^aeiou]id$/,Ar],[/[aeiou]c?ked$/,$r],[/[^aeiou][aeiou][tvx]ed$/,$r],[/.[vrl]id$/,Ar]],e:[[/.[lnr]ize$/,wr],[/.[^aeiou]ise$/,wr],[/.[aeiou]te$/,wr],[/.[^aeiou][ai]ble$/,Ar],[/.[^aeiou]eable$/,Ar],[/.[ts]ive$/,Ar]],h:[[/.[^aeiouf]ish$/,Ar],[/.v[iy]ch$/,Gr],[/^ug?h+$/,Pr],[/^uh[ -]?oh$/,Pr]],i:[[/.[oau][wvl]ski$/,Gr]],k:[[/^(k)+$/,Pr]],l:[[/.[gl]ial$/,Ar],[/.[^aeiou]ful$/,Ar],[/.[nrtumcd]al$/,Ar],[/.[^aeiou][ei]al$/,Ar]],m:[[/.[^aeiou]ium$/,kr],[/[^aeiou]ism$/,kr],[/^h*u*m+$/,Pr],[/^\d+ ?[ap]m$/,"Date"]],n:[[/.[lsrnpb]ian$/,Ar],[/[^aeiou]ician$/,"Actor"]],o:[[/^no+$/,Pr],[/^(yo)+$/,Pr],[/^woo+[pt]?$/,Pr]],r:[[/.[bdfklmst]ler$/,"Noun"],[/.[ilk]er$/,"Comparative"],[/[aeiou][pns]er$/,kr],[/[^i]fer$/,wr],[/.[^aeiou][ao]pher$/,"Actor"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,Ar],[/[aeiou].*ist$/,Ar],[/^[a-z]et$/,"Verb"]],s:[[/.[rln]ates$/,"PresentTense"],[/.[^z]ens$/,"Verb"],[/.[lstrn]us$/,kr],[/[aeiou][^aeiou]is$/,kr],[/[a-z]\'s$/,"Noun"],[/^yes+$/,Pr]],v:[[/.[^aeiou][ai][kln]ov$/,Gr]],y:[[/.[cts]hy$/,Ar],[/.[st]ty$/,Ar],[/.[gk]y$/,Ar],[/.[tnl]ary$/,Ar],[/.[oe]ry$/,kr],[/[rdntkbhs]ly$/,"Adverb"],[/...lly$/,"Adverb"],[/[bszmp]{2}y$/,Ar],[/.(gg|bb|zz)ly$/,Ar],[/.[aeiou]my$/,Ar],[/[ea]{2}zy$/,Ar],[/.[^aeiou]ity$/,kr]]},Cr="Adjective",Fr="Infinitive",Nr="PresentTense",jr="Singular",Br="PastTense",xr="Adverb",Dr="Plural",Or="Verb",Tr="LastName",Vr=[null,null,{ea:jr,ia:"Noun",ic:Cr,ly:xr,"'n":Or,"'t":Or},{que:Cr,lar:Cr,ffy:Cr,nny:Cr,rmy:Cr,azy:Cr,oid:Cr,mum:Cr,ous:Cr,end:Or,sis:jr,rol:jr,ize:Fr,ify:Fr,zes:Nr,nes:Nr,ing:"Gerund"," so":xr,"'ll":"Modal","'re":"Copula"},{teen:"Value",tors:"Noun",amed:Br,ched:Br,ends:Or,oses:Nr,fies:Nr,ects:Nr,nded:Br,cede:Fr,tage:Fr,gate:Fr,vice:jr,tion:jr,cted:Br,ette:jr,some:Cr,llen:Cr,ried:Cr,gone:Cr,made:Cr,fore:xr,less:xr,ices:Dr,ions:Dr,ints:Dr,aped:Br,lked:Br,ould:"Modal",tive:"Actor",sson:Tr,czyk:Tr,chuk:Tr,enko:Tr,akis:Tr,nsen:Tr},{fully:xr,where:xr,wards:xr,urned:Br,tized:Br,eased:Br,ances:Dr,tures:Dr,ports:Dr,ettes:Dr,ities:Dr,rough:Cr,ology:"Noun",bound:Cr,tieth:"Ordinal",ishes:Nr,tches:Nr,nssen:Tr,marek:Tr},{keeper:"Actor",logist:"Actor",auskas:Tr,teenth:"Value"},{sdottir:Tr,opoulos:Tr}],zr={":(":!0,":)":!0,":P":!0,":p":!0,":O":!0,":3":!0,":|":!0,":/":!0,":\\":!0,":$":!0,":*":!0,":@":!0,":-(":!0,":-)":!0,":-P":!0,":-p":!0,":-O":!0,":-3":!0,":-|":!0,":-/":!0,":-\\":!0,":-$":!0,":-*":!0,":-@":!0,":^(":!0,":^)":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0,":^|":!0,":^/":!0,":^\\":!0,":^$":!0,":^*":!0,":^@":!0,"):":!0,"(:":!0,"$:":!0,"*:":!0,")-:":!0,"(-:":!0,"$-:":!0,"*-:":!0,")^:":!0,"(^:":!0,"$^:":!0,"*^:":!0,"<3":!0,"=2&&br.test(n)&&yr.test(n)&&e.tag("RomanNumeral","xvii",t)},suffix:function(e,t){!function(e,t){var n=e.clean.length,r=7;n<=r&&(r=n-1);for(var a=r;a>1;a-=1){var i=e.clean.substr(n-a,n);if(!0===Vr[i.length].hasOwnProperty(i)){var o=Vr[i.length][i];e.tagSafe(o,"suffix -"+i,t);break}}}(e,t),function(e,t){var n=e.clean,r=n[n.length-1];if(!0===Er.hasOwnProperty(r))for(var a=Er[r],i=0;i35)))}(r=r.trim())&&(e.tag("Emoji","comma-emoji",t),e.text=r,e.pre=e.pre.replace(":",""),e.post=e.post.replace(":","")),e.text.match(Hr)&&(e.tag("Emoji","unicode-emoji",t),e.text=r),!0===(n=(n=r).replace(/^[:;]/,":"),zr.hasOwnProperty(n))&&(e.tag("Emoticon","emoticon-emoji",t),e.text=r)}},Mr=function(e){var t=e.termList(),n=e.world;Ir.lexicon(t,n);for(var r=0;r3&&void 0!==n[r]&&!0===n.hasOwnProperty(r)&&e.tag(n[r],"stem-"+r,t)}}))},Xr={isSingular:[/(ax|test)is$/i,/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,/(octop|vir)i$/i,/(rl)f$/i,/(alias|status)$/i,/(bu)s$/i,/(al|ad|at|er|et|ed|ad)o$/i,/(ti)um$/i,/(ti)a$/i,/sis$/i,/(?:(^f)fe|(lr)f)$/i,/hive$/i,/s[aeiou]+ns$/i,/(^aeiouy|qu)y$/i,/(x|ch|ss|sh|z)$/i,/(matr|vert|ind|cort)(ix|ex)$/i,/(m|l)ouse$/i,/(m|l)ice$/i,/(antenn|formul|nebul|vertebr|vit)a$/i,/.sis$/i,/^(?!talis|.*hu)(.*)man$/i],isPlural:[/(^v)ies$/i,/ises$/i,/ives$/i,/(antenn|formul|nebul|vertebr|vit)ae$/i,/(octop|vir|radi|nucle|fung|cact|stimul)i$/i,/(buffal|tomat|tornad)oes$/i,/(analy|ba|diagno|parenthe|progno|synop|the)ses$/i,/(vert|ind|cort)ices$/i,/(matr|append)ices$/i,/(x|ch|ss|sh|s|z|o)es$/i,/is$/i,/men$/i,/news$/i,/.tia$/i,/(^f)ves$/i,/(lr)ves$/i,/(^aeiouy|qu)ies$/i,/(m|l)ice$/i,/(cris|ax|test)es$/i,/(alias|status)es$/i,/ics$/i]},Zr=["Uncountable","Pronoun","Place","Value","Person","Month","WeekDay","Holiday"],Yr=[/ss$/,/sis$/,/[^aeiou][uo]s$/,/'s$/],ea=[/i$/,/ae$/],ta=function(e,t){if(e.tags.Noun&&!e.tags.Acronym){var n=e.clean;if(e.tags.Singular||e.tags.Plural)return;if(n.length<=3)return void e.tag("Singular","short-singular",t);if(Zr.find((function(t){return e.tags[t]})))return;if(Xr.isPlural.find((function(e){return e.test(n)})))return void e.tag("Plural","plural-rules",t);if(Xr.isSingular.find((function(e){return e.test(n)})))return void e.tag("Singular","singular-rules",t);if(!0===/s$/.test(n)){if(Yr.find((function(e){return e.test(n)})))return;return void e.tag("Plural","plural-fallback",t)}if(ea.find((function(e){return e.test(n)})))return;e.tag("Singular","singular-fallback",t)}},na=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","building society","bureau","cafe","caisse","capital","care","cathedral","center","central bank","centre","chemicals","choir","chronicle","church","circus","clinic","clinique","club","co","coalition","coffee","collective","college","commission","committee","communications","community","company","comprehensive","computers","confederation","conference","conseil","consulting","containers","corporation","corps","corp","council","crew","daily news","data","departement","department","department store","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","evening news","faculty","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","health authority","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institute of technology","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","liberation army","limited","local authority","local health authority","machines","magazine","management","marine","marketing","markets","media","memorial","mercantile exchange","ministere","ministry","military","mobile","motor","motors","musee","museum","news","news service","observatory","office","oil","optical","orchestra","organization","partners","partnership","people's party","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","polytechnic","post","power","press","productions","quartet","radio","regional authority","regional health authority","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","social club","societe","society","sons","standard","state police","state university","stock exchange","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((function(e,t){return e[t]="Noun",e}),{}),ra=function(e){return!!e.tags.Noun&&(!(e.tags.Pronoun||e.tags.Comma||e.tags.Possessive)&&!!(e.tags.Organization||e.tags.Acronym||e.tags.Place||e.titleCase()))},aa={neighbours:Wr,case:Rr,stem:Ur,plural:ta,organizations:function(e,t){for(var n=0;n5&&e.match("#Verb+").length>=2}));if(u.found){var l=u.splitAfter("#Noun .* #Verb .* #Noun+");r=r.splitOn(l.eq(0))}return"number"==typeof t&&(r=r.get(t)),new e(r.list,this,this.world)},e},Ra=function(e){var n=function(e){function n(e,r,a){var o;return t(this,n),(o=s(this,i(n).call(this,e,r,a))).contracted=null,o}return a(n,e),r(n,[{key:"expand",value:function(){return this.list.forEach((function(e){var t=e.terms(),n=t[0].isTitleCase();t.forEach((function(e,n){e.set(e.implicit||e.text),e.implicit=void 0,n0}}),Object.defineProperty(this,"length",{get:function(){return i.list.length}}),Object.defineProperty(this,"isA",{get:function(){return"Doc"}})}return r(e,[{key:"tagger",value:function(){return Ja(this)}},{key:"pool",value:function(){return this.list.length>0?this.list[0].pool:this.all().list[0].pool}}]),e}();Pi.prototype.buildFrom=function(e){return e=e.map((function(e){return e.clone(!0)})),new Pi(e,this,this.world)},Pi.prototype.fromText=function(e){var t=tt(e,this.world,this.pool());return this.buildFrom(t)},Object.assign(Pi.prototype,$i.misc),Object.assign(Pi.prototype,$i.selections),ki(Pi);var Gi={untag:"unTag",and:"match",notIf:"ifNo",only:"if",onlyIf:"if"};Object.keys(Gi).forEach((function(e){return Pi.prototype[e]=Pi.prototype[Gi[e]]}));var Ei=Pi,Ci=new fn,Fi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&Ci.addWords(t);var n=tt(e,Ci),r=new Ei(n,null,Ci);return r.tagger(),r};return Fi.tokenize=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;t&&Ci.addWords(t);var n=tt(e,Ci),r=new Ei(n,null,Ci);return r},Fi.extend=function(e){return e(Ei,Ci),this},Fi.clone=function(){return Ci=Ci.clone(),this},Fi.load=function(e){var t=nt(e,Ci);return new Ei(t,null,Ci)},Fi.verbose=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return Ci.verbose(e),this},Fi.version="12.0.0",Fi.import=Fi.load,Fi})); diff --git a/builds/compromise.mjs b/builds/compromise.mjs index 012fc0d53..11f5d4c60 100644 --- a/builds/compromise.mjs +++ b/builds/compromise.mjs @@ -3098,7 +3098,7 @@ var _01Tokenizer = { fromJSON: fromJSON }; -var _version = '12.0.0-rc3'; +var _version = '12.0.0'; var _data = { "Comparative": "true¦better", @@ -8456,7 +8456,7 @@ var methods$4 = Object.assign({}, _01Utils$1, _02Accessors, _03Match, _04Tag, _0 var methods$5 = {}; // allow helper methods like .adjectives() and .adverbs() -var arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['money', '#Money'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']]; +var arr = [['terms', '.'], ['hyphenated', '@hasHyphen .'], ['adjectives', '#Adjective'], ['hashTags', '#HashTag'], ['emails', '#Email'], ['emoji', '#Emoji'], ['emoticons', '#Emoticon'], ['atMentions', '#AtMention'], ['urls', '#Url'], ['adverbs', '#Adverb'], ['pronouns', '#Pronoun'], ['conjunctions', '#Conjunction'], ['prepositions', '#Preposition']]; arr.forEach(function (a) { methods$5[a[0]] = function (n) { var m = this.match(a[1]); @@ -8484,6 +8484,18 @@ methods$5.phoneNumbers = function (n) { return m; }; +/** money + currency pair */ + + +methods$5.money = function (n) { + var m = this.match('#Money #Currency?'); + + if (typeof n === 'number') { + m = m.get(n); + } + + return m; +}; /** return all cities, countries, addresses, and regions */ @@ -10429,7 +10441,9 @@ var fixValue = function fixValue(doc) { val.match('#Value [#PresentTense]').tag('Plural', 'value-presentTense'); //money - val.match('#Value+ #Currency').tag('Money', 'value-currency').lastTerm().tag('Unit', 'money-unit'); + var m = val.match('#Value+ #Currency'); + m.lastTerm().tag('Unit', 'money-unit'); + m.match('#Value+').tag('Money', 'value-currency'); } //5 kg. diff --git a/package.json b/package.json index 7c50c431c..3e4a35345 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "author": "Spencer Kelly (http://spencermounta.in)", "name": "compromise", "description": "natural language processing in the browser", - "version": "12.0.0-rc3", + "version": "12.0.0", "main": "./builds/compromise.js", "unpkg": "./builds/compromise.min.js", "module": "./builds/compromise.mjs", diff --git a/src/_version.js b/src/_version.js index e94cce2c8..ef80e758f 100644 --- a/src/_version.js +++ b/src/_version.js @@ -1 +1 @@ -module.exports = '12.0.0-rc3' \ No newline at end of file +module.exports = '12.0.0' \ No newline at end of file