@visulima/vis 1.0.0-alpha.45 → 1.0.0-alpha.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/bin.js +1 -1
- package/dist/binx.js +1 -1
- package/dist/packem_chunks/CONFIG_FILES.js +3 -3
- package/dist/packem_chunks/agent-instructions.js +11 -0
- package/dist/packem_chunks/bloom-status.js +1 -1
- package/dist/packem_chunks/bloom-sync.js +1 -1
- package/dist/packem_chunks/catalog.js +1 -1
- package/dist/packem_chunks/cli-exec.js +1 -1
- package/dist/packem_chunks/cli-main.js +23 -23
- package/dist/packem_chunks/defineReleasePlugin.js +3 -0
- package/dist/packem_chunks/fix.js +1 -1
- package/dist/packem_chunks/group-tags.js +1 -0
- package/dist/packem_chunks/handler10.js +1 -1
- package/dist/packem_chunks/handler12.js +1 -1
- package/dist/packem_chunks/handler13.js +1 -1
- package/dist/packem_chunks/handler14.js +1 -1
- package/dist/packem_chunks/handler15.js +1 -1
- package/dist/packem_chunks/handler19.js +1 -1
- package/dist/packem_chunks/handler20.js +1 -1
- package/dist/packem_chunks/handler21.js +1 -1
- package/dist/packem_chunks/handler24.js +1 -1
- package/dist/packem_chunks/handler26.js +1 -1
- package/dist/packem_chunks/handler28.js +1 -1
- package/dist/packem_chunks/handler32.js +1 -1
- package/dist/packem_chunks/handler4.js +1 -1
- package/dist/packem_chunks/handler40.js +19 -19
- package/dist/packem_chunks/handler5.js +1 -1
- package/dist/packem_chunks/handler50.js +1 -1
- package/dist/packem_chunks/handler51.js +1 -1
- package/dist/packem_chunks/handler54.js +1 -1
- package/dist/packem_chunks/handler57.js +11 -5
- package/dist/packem_chunks/handler58.js +5 -11
- package/dist/packem_chunks/handler59.js +11 -3
- package/dist/packem_chunks/handler6.js +1 -1
- package/dist/packem_chunks/handler60.js +3 -22
- package/dist/packem_chunks/handler61.js +21 -60
- package/dist/packem_chunks/handler62.js +61 -3
- package/dist/packem_chunks/handler63.js +3 -6
- package/dist/packem_chunks/handler64.js +6 -9
- package/dist/packem_chunks/handler65.js +9 -2
- package/dist/packem_chunks/handler66.js +2 -24
- package/dist/packem_chunks/handler67.js +24 -25
- package/dist/packem_chunks/handler68.js +25 -153
- package/dist/packem_chunks/handler69.js +153 -10
- package/dist/packem_chunks/handler7.js +1 -1
- package/dist/packem_chunks/handler70.js +10 -23
- package/dist/packem_chunks/handler71.js +23 -322
- package/dist/packem_chunks/handler72.js +273 -659
- package/dist/packem_chunks/handler73.js +708 -48
- package/dist/packem_chunks/handler74.js +48 -27
- package/dist/packem_chunks/handler75.js +27 -3
- package/dist/packem_chunks/handler76.js +3 -190
- package/dist/packem_chunks/handler77.js +189 -37
- package/dist/packem_chunks/handler78.js +38 -0
- package/dist/packem_chunks/heal.js +1 -1
- package/dist/packem_chunks/help-command.js +1 -1
- package/dist/packem_chunks/index3.js +1 -1
- package/dist/packem_chunks/keys-refresh.js +1 -1
- package/dist/packem_chunks/list.js +1 -1
- package/dist/packem_chunks/orchestrator.js +26 -23
- package/dist/packem_chunks/prune.js +1 -1
- package/dist/packem_chunks/state.js +3 -3
- package/dist/packem_chunks/status.js +1 -1
- package/dist/packem_chunks/sync.js +1 -1
- package/dist/packem_chunks/sync2.js +1 -1
- package/dist/packem_chunks/tripwire.js +1 -1
- package/dist/packem_chunks/verify-lockfile.js +1 -1
- package/dist/packem_shared/ReleaseClient-BY4OZNCK.js +1 -0
- package/dist/packem_shared/{Table-BGIHvenQ-D2oJtNQj.js → Table-CcVkyULl-DLWu6XHL.js} +1 -1
- package/dist/packem_shared/{advisories-CefYKEPe.js → advisories-B76fBVL-.js} +1 -1
- package/dist/packem_shared/{ai-analysis-rC48NLfB.js → ai-analysis-DF_AfeS3.js} +1 -1
- package/dist/packem_shared/{ai-fix-D_ijV3Rn.js → ai-fix-D1bFLkfk.js} +1 -1
- package/dist/packem_shared/{bin-CPMo34SM.js → bin-BlGVEhl8.js} +1 -1
- package/dist/packem_shared/{build-scripts-MTSK6TNr.js → build-scripts-q__dKE2y.js} +1 -1
- package/dist/packem_shared/{cyclonedx-BeUmPgfO.js → cyclonedx-CmrYQ0vx.js} +1 -1
- package/dist/packem_shared/{docker-CViFYtmM.js → docker-BYqiD711.js} +1 -1
- package/dist/packem_shared/{env-Ct3hMEYB.js → env-DJlbJiFh.js} +1 -1
- package/dist/packem_shared/{failure-log-Dy2G-rKi.js → failure-log-Bt7sW4p7.js} +1 -1
- package/dist/packem_shared/{index-XAb0QGqA.js → index-C6tpgeIV.js} +2 -2
- package/dist/packem_shared/{index-Cntyu-w8.js → index-D6fJJDli.js} +1 -1
- package/dist/packem_shared/{lifecycle-CHcFuWf_.js → lifecycle-XeMei1ED.js} +1 -1
- package/dist/packem_shared/{manifests-WBnsV_Eb.js → manifests-DSBr3-dw.js} +1 -1
- package/dist/packem_shared/{native-config-sync-BFDVK9LH.js → native-config-sync-D-z2Uwqu.js} +1 -1
- package/dist/packem_shared/{osv-bloom-DVMlkcAO.js → osv-bloom-DMhXP184.js} +1 -1
- package/dist/packem_shared/{packument-C-A3Uhhx.js → packument-CY2QDFml.js} +1 -1
- package/dist/packem_shared/plugins.d-ND23R9I3.d.ts +4 -0
- package/dist/packem_shared/{provenance-R2csDSNg.js → provenance-DVHiWZrW.js} +1 -1
- package/dist/packem_shared/{registry-keys-CMnS_Qt_.js → registry-keys-BKEq72qX.js} +1 -1
- package/dist/packem_shared/{resolve-explicit-C4oQMyoB.js → resolve-explicit-UtkNrGKq.js} +1 -1
- package/dist/packem_shared/{runtime-check-BXehSP06.js → runtime-check-qnrPTlma.js} +1 -1
- package/dist/packem_shared/{s1ngularity-BCDt28u0.js → s1ngularity-DUZtU95L.js} +1 -1
- package/dist/packem_shared/{scan-progress-YRpDs90j.js → scan-progress-BgtHexnt.js} +1 -1
- package/dist/packem_shared/{signatures-B3srzCEv.js → signatures-QoCuUv9E.js} +1 -1
- package/dist/packem_shared/target-merge-Dg25Izl5.js +11 -0
- package/dist/packem_shared/{toolchain-C44mPKPu.js → toolchain-Zb3VzZb4.js} +1 -1
- package/dist/packem_shared/{typosquats-CQz-1Y6K.js → typosquats-C12CP_2G.js} +1 -1
- package/dist/packem_shared/{use-measured-height-DHi0xOPO.js → use-measured-height-BpKmrlkw.js} +1 -1
- package/dist/packem_shared/{vis-update-app-B3I14Vfy.js → vis-update-app-BoCQ4ute.js} +1 -1
- package/dist/packem_shared/{watch-loop-JfGKIgKB.js → watch-loop-BZudYfcl.js} +1 -1
- package/dist/release/index.d.ts +39 -2
- package/dist/release/index.js +1 -1
- package/dist/release/plugin-sdk.d.ts +2 -1
- package/dist/release/plugin-sdk.js +1 -1
- package/dist/release/types.d.ts +117 -1
- package/dist/release/types.js +1 -1
- package/index.js +52 -52
- package/package.json +9 -9
- package/schemas/vis-config.schema.json +33 -0
- package/schemas/vis-release-config.schema.json +33 -0
- package/dist/packem_shared/ReleaseClient-YHzBIxYS.js +0 -1
- package/dist/packem_shared/target-merge-DOm6h6tW.js +0 -11
- /package/dist/packem_shared/{readJsonSync-CvkZyKmL-ihoybKvs.js → readJsonSync-DuMMeB3s-ihoybKvs.js} +0 -0
|
@@ -1,38 +1,190 @@
|
|
|
1
|
-
import{createRequire as ps}from"node:module";import{E as De,s as Wt,V as oi,I as Cr,q as ai}from"../packem_shared/index.server-J83sowC4.js";import{T as ms,f as jr,A as At,y as Nr,B as Pt,v as fs,m as St}from"../packem_shared/index-CE6MsgcV.js";import{g as bs}from"../packem_shared/_commonjsHelpers-B5Y90VFO.js";import{fingerprint as yt,scan as ii,scanFiles as vs,inspectRuleset as ys,listRules as Ir,listRequiredValidators as ws,scanGitHistory as $s}from"@visulima/secret-scanner";import{aq as ks,ar as Rr,p as de}from"./cli-main.js";import{o as Ps}from"../packem_shared/MultiSpinner-B9U0-aE3-B-gIXhFk.js";import{a as As}from"../packem_shared/readJsonSync-CvkZyKmL-ihoybKvs.js";const gs=ps(import.meta.url),Tt=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ri=e=>{if(typeof Tt<"u"&&Tt.versions&&Tt.versions.node){const[t,n]=Tt.versions.node.split(".").map(Number);if(t>22||t===22&&n>=3||t===20&&n>=16)return Tt.getBuiltinModule(e)}return gs(e)},{pathToFileURL:si}=ri("node:url"),{execFileSync:xs}=ri("node:child_process"),Cs={one:{},two:{},three:{},four:{}},js={one:{},two:{},three:{}},Ns={},Is=[],ar={methods:Cs,model:js,compute:Ns,hooks:Is},Ts=e=>Object.prototype.toString.call(e)==="[object Array]",Es={compute:function(e){const{world:t}=this,n=t.compute;return typeof e=="string"&&n.hasOwnProperty(e)?n[e](this):Ts(e)?e.forEach(r=>{t.compute.hasOwnProperty(r)?n[r](this):console.warn("no compute:",e)}):typeof e=="function"?e(this):console.warn("no compute:",e),this}},Ds=function(e){return this.fullPointer.forEach((t,n)=>{const r=this.update([t]);e(r,n)}),this},Hs=function(e,t){const n=this.fullPointer.map((o,a)=>{const i=this.update([o]),s=e(i,a);return s===void 0?this.none():s});if(n.length===0)return t||this.update([]);if(n[0]!==void 0&&(typeof n[0]=="string"||typeof n[0]=="object"&&(n[0]===null||!n[0].isView)))return n;let r=[];return n.forEach(o=>{r=r.concat(o.fullPointer)}),this.toView(r)},Gs=function(e){let t=this.fullPointer;return t=t.filter((n,r)=>{const o=this.update([n]);return e(o,r)}),this.update(t)},Os=function(e){const t=this.fullPointer.find((n,r)=>{const o=this.update([n]);return e(o,r)});return this.update([t])},Fs=function(e){return this.fullPointer.some((t,n)=>{const r=this.update([t]);return e(r,n)})},Vs=function(e=1){let t=this.fullPointer,n=Math.floor(Math.random()*t.length);return n+e>this.length&&(n=this.length-e,n=n<0?0:n),t=t.slice(n,n+e),this.update(t)},zs={forEach:Ds,map:Hs,filter:Gs,find:Os,some:Fs,random:Vs},He={termList:function(){return this.methods.one.termList(this.docs)},terms:function(e){const t=this.match(".");return typeof e=="number"?t.eq(e):t},groups:function(e){if(e||e===0)return this.update(this._groups[e]||[]);const t={};return Object.keys(this._groups).forEach(n=>{t[n]=this.update(this._groups[n])}),t},eq:function(e){let t=this.pointer;return t||(t=this.docs.map((n,r)=>[r])),t[e]?this.update([t[e]]):this.none()},first:function(){return this.eq(0)},last:function(){const e=this.fullPointer.length-1;return this.eq(e)},firstTerms:function(){return this.match("^.")},lastTerms:function(){return this.match(".$")},slice:function(e,t){let n=this.pointer||this.docs.map((r,o)=>[o]);return n=n.slice(e,t),this.update(n)},all:function(){return this.update().toView()},fullSentences:function(){const e=this.fullPointer.map(t=>[t[0]]);return this.update(e).toView()},none:function(){return this.update([])},isDoc:function(e){if(!e||!e.isView)return!1;const t=this.fullPointer,n=e.fullPointer;return!t.length===n.length?!1:t.every((r,o)=>n[o]?r[0]===n[o][0]&&r[1]===n[o][1]&&r[2]===n[o][2]:!1)},wordCount:function(){return this.docs.reduce((e,t)=>(e+=t.filter(n=>n.text!=="").length,e),0)},isFull:function(){const e=this.pointer;if(!e)return!0;if(e.length===0||e[0][0]!==0)return!1;let t=0,n=0;return this.document.forEach(r=>t+=r.length),this.docs.forEach(r=>n+=r.length),t===n},getNth:function(e){return typeof e=="number"?this.eq(e):typeof e=="string"?this.if(e):this}};He.group=He.groups;He.fullSentence=He.fullSentences;He.sentence=He.fullSentences;He.lastTerm=He.lastTerms;He.firstTerm=He.firstTerms;const ir=Object.assign({},He,Es,zs);ir.get=ir.eq;let En=class vn{constructor(t,n,r={}){[["document",t],["world",ar],["_groups",r],["_cache",null],["viewType","View"]].forEach(o=>{Object.defineProperty(this,o[0],{value:o[1],writable:!0})}),this.ptrs=n}get docs(){let t=this.document;return this.ptrs&&(t=ar.methods.one.getDoc(this.ptrs,this.document)),t}get pointer(){return this.ptrs}get methods(){return this.world.methods}get model(){return this.world.model}get hooks(){return this.world.hooks}get isView(){return!0}get found(){return this.docs.length>0}get length(){return this.docs.length}get fullPointer(){const{docs:t,ptrs:n,document:r}=this;return(n||t.map((o,a)=>[a])).map(o=>{let[a,i,s,u,l]=o;return i=i||0,s=s||(r[a]||[]).length,r[a]&&r[a][i]&&(u=u||r[a][i].id,r[a][s-1]&&(l=l||r[a][s-1].id)),[a,i,s,u,l]})}update(t){const n=new vn(this.document,t);if(this._cache&&t&&t.length>0){const r=[];t.forEach((o,a)=>{const[i,s,u]=o;o.length===1?r[a]=this._cache[i]:s===0&&this.document[i].length===u&&(r[a]=this._cache[i])}),r.length>0&&(n._cache=r)}return n.world=this.world,n}toView(t){return new vn(this.document,t||this.pointer)}fromText(t){const{methods:n}=this,r=n.one.tokenize.fromString(t,this.world),o=new vn(r);return o.world=this.world,o.compute(["normal","freeze","lexicon"]),this.world.compute.preTagger&&o.compute("preTagger"),o.compute("unfreeze"),o}clone(){let t=this.document.slice(0);t=t.map(r=>r.map(o=>(o=Object.assign({},o),o.tags=new Set(o.tags),o)));const n=this.update(this.pointer);return n.document=t,n._cache=this._cache,n}};Object.assign(En.prototype,ir);const Bs="14.15.1",Ur=function(e){return e&&typeof e=="object"&&!Array.isArray(e)},Ss=function(e){return Object.prototype.toString.call(e)==="[object Array]"};function ui(e,t){if(Ur(t))for(const n in t)Ur(t[n])?(e[n]||Object.assign(e,{[n]:{}}),ui(e[n],t[n])):Object.assign(e,{[n]:t[n]});return e}function Ms(e,t){for(const n in t)e[n]=e[n]||{},Object.assign(e[n],t[n]);return e}const Ls=function(e,t){const n=e.two.models||{};Object.keys(t).forEach(r=>{t[r].pastTense&&(n.toPast&&(n.toPast.ex[r]=t[r].pastTense),n.fromPast&&(n.fromPast.ex[t[r].pastTense]=r)),t[r].presentTense&&(n.toPresent&&(n.toPresent.ex[r]=t[r].presentTense),n.fromPresent&&(n.fromPresent.ex[t[r].presentTense]=r)),t[r].gerund&&(n.toGerund&&(n.toGerund.ex[r]=t[r].gerund),n.fromGerund&&(n.fromGerund.ex[t[r].gerund]=r)),t[r].comparative&&(n.toComparative&&(n.toComparative.ex[r]=t[r].comparative),n.fromComparative&&(n.fromComparative.ex[t[r].comparative]=r)),t[r].superlative&&(n.toSuperlative&&(n.toSuperlative.ex[r]=t[r].superlative),n.fromSuperlative&&(n.fromSuperlative.ex[t[r].superlative]=r))})},li=function(e,t,n,r){if(Ss(e)){e.forEach(u=>li(u,t,n,r));return}const{methods:o,model:a,compute:i,hooks:s}=t;e.methods&&Ms(o,e.methods),e.model&&ui(a,e.model),e.irregulars&&Ls(a,e.irregulars),e.compute&&Object.assign(i,e.compute),s&&(t.hooks=s.concat(e.hooks||[])),e.api&&e.api(n),e.lib&&Object.keys(e.lib).forEach(u=>r[u]=e.lib[u]),e.tags&&r.addTags(e.tags),e.words&&r.addWords(e.words),e.frozen&&r.addWords(e.frozen,!0),e.mutate&&e.mutate(t,r)},Ks=function(e){const t=process.env?process.env:self.env||{};return t.DEBUG_TAGS=e==="tagger"||e===!0?!0:"",t.DEBUG_MATCH=e==="match"||e===!0?!0:"",t.DEBUG_CHUNKS=e==="chunker"||e===!0?!0:"",this},Js=e=>Object.prototype.toString.call(e)==="[object Object]",sr=function(e){return Object.prototype.toString.call(e)==="[object Array]"},Ws=function(e){return e.map(t=>t.terms.map(n=>(sr(n.tags)&&(n.tags=new Set(n.tags)),n)))},qs=function(e){return e.map(t=>t.map(n=>({text:n,normal:n,pre:"",post:" ",tags:new Set})))},ci=function(e,t,n){const{methods:r}=n,o=new t([]);if(o.world=n,typeof e=="number"&&(e=String(e)),!e)return o;if(typeof e=="string"){const a=r.one.tokenize.fromString(e,n);return new t(a)}if(Js(e)&&e.isView)return new t(e.document,e.ptrs);if(sr(e)){if(sr(e[0])){const i=qs(e);return new t(i)}const a=Ws(e);return new t(a)}return o},xn=Object.assign({},ar),T=function(e,t){t&&T.addWords(t);const n=ci(e,En,xn);return e&&n.compute(xn.hooks),n};Object.defineProperty(T,"_world",{value:xn,writable:!0});T.tokenize=function(e,t){const{compute:n}=this._world;t&&T.addWords(t);const r=ci(e,En,xn);return n.contractions&&r.compute(["alias","normal","machine","contractions"]),r};T.plugin=function(e){return li(e,this._world,En,this),this};T.extend=T.plugin;T.world=function(){return this._world};T.model=function(){return this._world.model};T.methods=function(){return this._world.methods};T.hooks=function(){return this._world.hooks};T.verbose=Ks;T.version=Bs;const Rs=function(e){return e.map(t=>{const n=new Set;return t.forEach(r=>{r.normal!==""&&n.add(r.normal),r.switch&&n.add(`%${r.switch}%`),r.implicit&&n.add(r.implicit),r.machine&&n.add(r.machine),r.root&&n.add(r.root),r.alias&&r.alias.forEach(a=>n.add(a));const o=Array.from(r.tags);for(let a=0;a<o.length;a+=1)n.add("#"+o[a])}),n})},Us={one:{cacheDoc:Rs}},_s={cache:function(){return this._cache=this.methods.one.cacheDoc(this.document),this},uncache:function(){return this._cache=null,this}},Qs=function(e){Object.assign(e.prototype,_s)},Zs={cache:function(e){e._cache=e.methods.one.cacheDoc(e.document)}},Xs={api:Qs,compute:Zs,methods:Us},Ys={toLowerCase:function(){return this.termList().forEach(e=>{e.text=e.text.toLowerCase()}),this},toUpperCase:function(){return this.termList().forEach(e=>{e.text=e.text.toUpperCase()}),this},toTitleCase:function(){return this.termList().forEach(e=>{e.text=e.text.replace(/^ *[a-z\u00C0-\u00FF]/,t=>t.toUpperCase())}),this},toCamelCase:function(){return this.docs.forEach(e=>{e.forEach((t,n)=>{n!==0&&(t.text=t.text.replace(/^ *[a-z\u00C0-\u00FF]/,r=>r.toUpperCase())),n!==e.length-1&&(t.post="")})}),this}},_r=e=>new RegExp("^\\p{Lu}[\\p{Ll}'’]","u").test(e)||new RegExp("^\\p{Lu}$","u").test(e),eu=e=>e.replace(new RegExp("^\\p{Ll}","u"),t=>t.toUpperCase()),tu=e=>e.replace(new RegExp("^\\p{Lu}","u"),t=>t.toLowerCase()),hi=(e,t,n)=>{if(n.forEach(r=>r.dirty=!0),e){const r=[t,0].concat(n);Array.prototype.splice.apply(e,r)}return e},Vt=function(e){const t=/ $/,n=/[-–—]/,r=e[e.length-1];r&&!t.test(r.post)&&!n.test(r.post)&&(r.post+=" ")},Qr=(e,t,n)=>{const r=/[-.?!,;:)–—'"]/g,o=e[t-1];if(!o)return;const a=o.post;if(r.test(a)){const i=a.match(r).join(""),s=n[n.length-1];s.post=i+s.post,o.post=o.post.replace(r,"")}},nu=function(e,t,n){const r=e[t];if(t!==0||!_r(r.text))return;n[0].text=eu(n[0].text);const o=e[t];o.tags.has("ProperNoun")||o.tags.has("Acronym")||_r(o.text)&&o.text.length>1&&(o.text=tu(o.text))},ru=function(e,t,n,r){const[o,a,i]=t;a===0||i===r[o].length?Vt(n):(Vt(n),Vt([e[t[1]]])),nu(e,a,n),hi(e,a,n)},ou=function(e,t,n,r){const[o,,a]=t,i=(r[o]||[]).length;a<i?(Qr(e,a,n),Vt(n)):i===a&&(Vt(e),Qr(e,a,n),r[o+1]&&(n[n.length-1].post+=" ")),hi(e,t[2],n),t[4]=n[n.length-1].id};let Et=0;const Zr=e=>(e=e.length<3?"0"+e:e,e.length<3?"0"+e:e),di=function(e){let[t,n]=e.index||[0,0];Et+=1,Et=Et>46655?0:Et,t=t>46655?0:t,n=n>1294?0:n;let r=Zr(Et.toString(36));r+=Zr(t.toString(36));let o=n.toString(36);o=o.length<2?"0"+o:o,r+=o;const a=parseInt(Math.random()*36,10);return r+=a.toString(36),e.normal+"|"+r.toUpperCase()},Xr=function(e){e.has("@hasContraction")&&typeof e.contractions=="function"&&e.grow("@hasContraction").contractions().expand()},Yr=e=>Object.prototype.toString.call(e)==="[object Array]",au=function(e){return e=e.map(t=>(t.id=di(t),t)),e},iu=function(e,t){const{methods:n}=t;return typeof e=="string"?n.one.tokenize.fromString(e,t)[0]:typeof e=="object"&&e.isView?e.clone().docs[0]||[]:Yr(e)?Yr(e[0])?e[0]:e:[]},eo=function(e,t,n){const{document:r,world:o}=t;t.uncache();const a=t.fullPointer,i=t.fullPointer;t.forEach((u,l)=>{const c=u.fullPointer[0],[d]=c,g=r[d];let x=iu(e,o);x.length!==0&&(x=au(x),n?(Xr(t.update([c]).firstTerm()),ru(g,c,x,r)):(Xr(t.update([c]).lastTerm()),ou(g,c,x,r)),r[d]&&r[d][c[1]]&&(c[3]=r[d][c[1]].id),i[l]=c,c[2]+=x.length,a[l]=c)});const s=t.toView(a);return t.ptrs=i,s.compute(["id","index","freeze","lexicon"]),s.world.compute.preTagger&&s.compute("preTagger"),s.compute("unfreeze"),s},ut={insertAfter:function(e){return eo(e,this,!1)},insertBefore:function(e){return eo(e,this,!0)}};ut.append=ut.insertAfter;ut.prepend=ut.insertBefore;ut.insert=ut.insertAfter;const su=/\$[0-9a-z]+/g,Tr={},uu=e=>new RegExp("^\\p{Lu}[\\p{Ll}'’]","u").test(e)||new RegExp("^\\p{Lu}$","u").test(e),lu=e=>e.replace(new RegExp("^\\p{Ll}","u"),t=>t.toUpperCase()),cu=e=>e.replace(new RegExp("^\\p{Lu}","u"),t=>t.toLowerCase()),hu=function(e,t,n){return e.forEach(r=>{const o=t(r);r.replaceWith(o,n)}),e},du=function(e,t){if(typeof e!="string")return e;const n=t.groups();return e=e.replace(su,r=>{const o=r.replace(/\$/,"");return n.hasOwnProperty(o)?n[o].text():r}),e};Tr.replaceWith=function(e,t={}){let n=this.fullPointer;const r=this;if(this.uncache(),typeof e=="function")return hu(r,e,t);const o=r.docs[0];if(!o)return r;const a=t.possessives&&o[o.length-1].tags.has("Possessive"),i=t.case&&uu(o[0].text);e=du(e,r);const s=this.update(n);n=n.map(g=>g.slice(0,3));const u=(s.docs[0]||[]).map(g=>Array.from(g.tags)),l=s.docs[0][0].pre,c=s.docs[0][s.docs[0].length-1].post;if(typeof e=="string"&&(e=this.fromText(e).compute("id")),r.insertAfter(e),s.has("@hasContraction")&&r.contractions&&r.grow("@hasContraction+").contractions().expand(),r.delete(s),a){const g=r.docs[0],x=g[g.length-1];x.tags.has("Possessive")||(x.text+="'s",x.normal+="'s",x.tags.add("Possessive"))}if(l&&r.docs[0]&&(r.docs[0][0].pre=l),c&&r.docs[0]){const g=r.docs[0][r.docs[0].length-1];g.post.trim()||(g.post=c)}const d=r.toView(n).compute(["index","freeze","lexicon"]);if(d.world.compute.preTagger&&d.compute("preTagger"),d.compute("unfreeze"),t.tags&&d.terms().forEach((g,x)=>{g.tagSafe(u[x])}),!d.docs[0]||!d.docs[0][0])return d;if(t.case){const g=i?lu:cu;d.docs[0][0].text=g(d.docs[0][0].text)}return d};Tr.replace=function(e,t,n){if(e&&!t)return this.replaceWith(e,n);const r=this.match(e);return r.found?(this.soften(),r.replaceWith(t,n)):this};const pu=function(e,t){const n=e.length-1,r=e[n],o=e[n-t];o&&r&&(o.post+=r.post,o.post=o.post.replace(/ +([.?!,;:])/,"$1"),o.post=o.post.replace(/[,;:]+([.?!])/,"$1"))},gu=function(e,t){t.forEach(n=>{const[r,o,a]=n,i=a-o;e[r]&&(a===e[r].length&&a>1&&pu(e[r],i),e[r].splice(o,i))});for(let n=e.length-1;n>=0;n-=1)if(e[n].length===0&&(e.splice(n,1),n===e.length&&e[n-1])){const r=e[n-1],o=r[r.length-1];o&&(o.post=o.post.trimEnd())}return e},mu=function(e,t){return e=e.map(n=>{const[r]=n;return t[r]&&t[r].forEach(o=>{const a=o[2]-o[1];n[1]<=o[1]&&n[2]>=o[2]&&(n[2]-=a)}),n}),e.forEach((n,r)=>{if(n[1]===0&&n[2]==0)for(let o=r+1;o<e.length;o+=1)e[o][0]-=1,e[o][0]<0&&(e[o][0]=0)}),e=e.filter(n=>n[2]-n[1]>0),e=e.map(n=>(n[3]=null,n[4]=null,n)),e},ur={remove:function(e){const{indexN:t}=this.methods.one.pointer;this.uncache();let n=this.all(),r=this;e&&(n=this,r=this.match(e));const o=!n.ptrs;r.has("@hasContraction")&&r.contractions&&r.grow("@hasContraction").contractions().expand();let a=n.fullPointer;const i=r.fullPointer.reverse(),s=gu(this.document,i),u=t(i);return a=mu(a,u),n.ptrs=a,n.document=s,n.compute("index"),o&&(n.ptrs=void 0),e?n.toView(a):(this.ptrs=[],n.none())}};ur.delete=ur.remove;const Mt={pre:function(e,t){return e===void 0&&this.found?this.docs[0][0].pre:(this.docs.forEach(n=>{const r=n[0];t===!0?r.pre+=e:r.pre=e}),this)},post:function(e,t){if(e===void 0){const n=this.docs[this.docs.length-1];return n[n.length-1].post}return this.docs.forEach(n=>{const r=n[n.length-1];t===!0?r.post+=e:r.post=e}),this},trim:function(){if(!this.found)return this;const e=this.docs,t=e[0][0];t.pre=t.pre.trimStart();const n=e[e.length-1],r=n[n.length-1];return r.post=r.post.trimEnd(),this},hyphenate:function(){return this.docs.forEach(e=>{e.forEach((t,n)=>{n!==0&&(t.pre=""),e[n+1]&&(t.post="-")})}),this},dehyphenate:function(){const e=/[-–—]/;return this.docs.forEach(t=>{t.forEach(n=>{e.test(n.post)&&(n.post=" ")})}),this},toQuotations:function(e,t){return e=e||'"',t=t||'"',this.docs.forEach(n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post}),this},toParentheses:function(e,t){return e=e||"(",t=t||")",this.docs.forEach(n=>{n[0].pre=e+n[0].pre;const r=n[n.length-1];r.post=t+r.post}),this}};Mt.deHyphenate=Mt.dehyphenate;Mt.toQuotation=Mt.toQuotations;const fu=(e,t)=>e.normal<t.normal?-1:e.normal>t.normal?1:0,bu=(e,t)=>{const n=e.normal.trim().length,r=t.normal.trim().length;return n<r?1:n>r?-1:0},vu=(e,t)=>e.words<t.words?1:e.words>t.words?-1:0,yu=(e,t)=>e[0]<t[0]?1:e[0]>t[0]?-1:e[1]>t[1]?1:-1,wu=function(e){const t={};return e.forEach(n=>{t[n.normal]=t[n.normal]||0,t[n.normal]+=1}),e.sort((n,r)=>{const o=t[n.normal],a=t[r.normal];return o<a?1:o>a?-1:0}),e},Vn={alpha:fu,length:bu,wordCount:vu,sequential:yu,byFreq:wu},$u=new Set(["index","sequence","seq","sequential","chron","chronological"]),ku=new Set(["freq","frequency","topk","repeats"]),Pu=new Set(["alpha","alphabetical"]),Au=function(e,t){let n=e.fullPointer;return n=n.sort((r,o)=>(r=e.update([r]),o=e.update([o]),t(r,o))),e.ptrs=n,e},xu=function(e){const{docs:t,pointer:n}=this;if(this.uncache(),typeof e=="function")return Au(this,e);e=e||"alpha";const r=n||t.map((a,i)=>[i]);let o=t.map((a,i)=>({index:i,words:a.length,normal:a.map(s=>s.machine||s.normal||"").join(" "),pointer:r[i]}));return $u.has(e)&&(e="sequential"),Pu.has(e)&&(e="alpha"),ku.has(e)?(o=Vn.byFreq(o),this.update(o.map(a=>a.pointer))):typeof Vn[e]=="function"?(o=o.sort(Vn[e]),this.update(o.map(a=>a.pointer))):this},Cu=function(){let e=this.pointer||this.docs.map((t,n)=>[n]);return e=[].concat(e),e=e.reverse(),this._cache&&(this._cache=this._cache.reverse()),this.update(e)},ju=function(){const e=new Set;return this.filter(t=>{const n=t.text("machine");return e.has(n)?!1:(e.add(n),!0)})},Nu={unique:ju,reverse:Cu,sort:xu},Iu=e=>Object.prototype.toString.call(e)==="[object Array]",pi=function(e,t){if(e.length>0){const n=e[e.length-1],r=n[n.length-1];/ /.test(r.post)===!1&&(r.post+=" ")}return e=e.concat(t),e},Tu=function(e,t){if(e.document===t.document){const n=e.fullPointer.concat(t.fullPointer);return e.toView(n).compute("index")}return t.fullPointer.forEach(n=>{n[0]+=e.document.length}),e.document=pi(e.document,t.docs),e.all()},Eu={concat:function(e){if(typeof e=="string"){const t=this.fromText(e);if(!this.found||!this.ptrs)this.document=this.document.concat(t.document);else{const n=this.fullPointer,r=n[n.length-1][0];this.document.splice(r,0,...t.document)}return this.all().compute("index")}if(typeof e=="object"&&e.isView)return Tu(this,e);if(Iu(e)){const t=pi(this.document,e);return this.document=t,this.all()}return this}},Du=function(){return this.ptrs=this.fullPointer,this},Hu=function(){let e=this.ptrs;return!e||e.length<1?this:(e=e.map(t=>t.slice(0,3)),this.ptrs=e,this)},Gu={harden:Du,soften:Hu},Ou=Object.assign({},Ys,ut,Tr,ur,Mt,Nu,Eu,Gu),Fu=function(e){Object.assign(e.prototype,Ou)},Vu={id:function(e){const t=e.docs;for(let n=0;n<t.length;n+=1)for(let r=0;r<t[n].length;r+=1){const o=t[n][r];o.id=o.id||di(o)}}},zu={api:Fu,compute:Vu},Bu=[{word:"@",out:["at"]},{word:"arent",out:["are","not"]},{word:"alot",out:["a","lot"]},{word:"brb",out:["be","right","back"]},{word:"cannot",out:["can","not"]},{word:"dun",out:["do","not"]},{word:"can't",out:["can","not"]},{word:"shan't",out:["should","not"]},{word:"won't",out:["will","not"]},{word:"that's",out:["that","is"]},{word:"what's",out:["what","is"]},{word:"let's",out:["let","us"]},{word:"dunno",out:["do","not","know"]},{word:"gonna",out:["going","to"]},{word:"gotta",out:["have","got","to"]},{word:"gimme",out:["give","me"]},{word:"outta",out:["out","of"]},{word:"tryna",out:["trying","to"]},{word:"gtg",out:["got","to","go"]},{word:"im",out:["i","am"]},{word:"imma",out:["I","will"]},{word:"imo",out:["in","my","opinion"]},{word:"irl",out:["in","real","life"]},{word:"ive",out:["i","have"]},{word:"rn",out:["right","now"]},{word:"tbh",out:["to","be","honest"]},{word:"wanna",out:["want","to"]},{word:"c'mere",out:["come","here"]},{word:"c'mon",out:["come","on"]},{word:"shoulda",out:["should","have"]},{word:"coulda",out:["coulda","have"]},{word:"woulda",out:["woulda","have"]},{word:"musta",out:["must","have"]},{word:"tis",out:["it","is"]},{word:"twas",out:["it","was"]},{word:"y'know",out:["you","know"]},{word:"ne'er",out:["never"]},{word:"o'er",out:["over"]},{after:"ll",out:["will"]},{after:"ve",out:["have"]},{after:"re",out:["are"]},{after:"m",out:["am"]},{before:"c",out:["ce"]},{before:"m",out:["me"]},{before:"n",out:["ne"]},{before:"qu",out:["que"]},{before:"s",out:["se"]},{before:"t",out:["tu"]},{word:"shouldnt",out:["should","not"]},{word:"couldnt",out:["could","not"]},{word:"wouldnt",out:["would","not"]},{word:"hasnt",out:["has","not"]},{word:"wasnt",out:["was","not"]},{word:"isnt",out:["is","not"]},{word:"cant",out:["can","not"]},{word:"dont",out:["do","not"]},{word:"wont",out:["will","not"]},{word:"howd",out:["how","did"]},{word:"whatd",out:["what","did"]},{word:"whend",out:["when","did"]},{word:"whered",out:["where","did"]}],Su={st:!0,nd:!0,rd:!0,th:!0,am:!0,pm:!0,max:!0,"°":!0,s:!0,e:!0,er:!0,ère:!0,ème:!0},Mu={one:{contractions:Bu,numberSuffixes:Su}},zn=function(e,t,n){const[r,o]=t;!n||n.length===0||(n=n.map((a,i)=>(a.implicit=a.text,a.machine=a.text,a.pre="",a.post="",a.text="",a.normal="",a.index=[r,o+i],a)),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},Lu=/'/,Ku=new Set(["what","how","when","where","why"]),Ju=new Set(["be","go","start","think","need"]),Wu=new Set(["been","gone"]),qu=function(e,t){const n=e[t].normal.split(Lu)[0];if(Ku.has(n))return[n,"did"];if(e[t+1]){if(Wu.has(e[t+1].normal))return[n,"had"];if(Ju.has(e[t+1].normal))return[n,"would"]}return null},Ru=function(e,t){return e[t].normal==="ain't"||e[t].normal==="aint"?null:[e[t].normal.replace(/n't/,""),"not"]},Er=/'/,Uu=/(e|é|aison|sion|tion)$/,_u=/(age|isme|acle|ege|oire)$/,Qu=(e,t)=>{const n=e[t].normal.split(Er)[1];return n&&n.endsWith("e")?["la",n]:["le",n]},Zu=(e,t)=>{const n=e[t].normal.split(Er)[1];return n&&Uu.test(n)&&!_u.test(n)?["du",n]:n&&n.endsWith("s")?["des",n]:["de",n]},Xu=(e,t)=>["je",e[t].normal.split(Er)[1]],Bn={preJ:Xu,preL:Qu,preD:Zu},Yu=/^([0-9.]{1,4}[a-z]{0,2}) ?[-–—] ?([0-9]{1,4}[a-z]{0,2})$/i,el=/^([0-9]{1,2}(:[0-9][0-9])?(am|pm)?) ?[-–—] ?([0-9]{1,2}(:[0-9][0-9])?(am|pm)?)$/i,tl=/^[0-9]{3}-[0-9]{4}$/,nl=function(e,t){const n=e[t];let r=n.text.match(Yu);return r!==null?n.tags.has("PhoneNumber")===!0||tl.test(n.text)?null:[r[1],"to",r[2]]:(r=n.text.match(el),r!==null?[r[1],"to",r[4]]:null)},rl=/^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/,ol=function(e,t,n){const r=n.model.one.numberSuffixes||{},o=e[t].text.match(rl);if(o!==null){const a=o[2].toLowerCase().trim();return r.hasOwnProperty(a)?null:[o[1],a]}return null},to=/'/,al=/^[0-9][^-–—]*[-–—].*?[0-9]/,no=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]]},ro={t:(e,t)=>Ru(e,t),d:(e,t)=>qu(e,t)},oo={j:(e,t)=>Bn.preJ(e,t),l:(e,t)=>Bn.preL(e,t),d:(e,t)=>Bn.preD(e,t)},il=function(e,t,n,r){for(let o=0;o<e.length;o+=1){const a=e[o];if(a.word===t.normal)return a.out;if(r!==null&&r===a.after)return[n].concat(a.out);if(n!==null&&n===a.before&&r&&r.length>2)return a.out.concat(r)}return null},Sn=function(e,t){const n=t.fromText(e.join(" "));return n.compute(["id","alias"]),n.docs[0]},sl=function(e,t){for(let n=t+1;n<5&&e[n];n+=1)if(e[n].normal==="been")return["there","has"];return["there","is"]},ul=e=>{const{world:t,document:n}=e,{model:r,methods:o}=t,a=r.one.contractions||[];n.forEach((i,s)=>{for(let u=i.length-1;u>=0;u-=1){let l=null,c=null;if(to.test(i[u].normal)===!0){const g=i[u].normal.split(to);l=g[0],c=g[1]}let d=il(a,i[u],l,c);if(!d&&ro.hasOwnProperty(c)&&(d=ro[c](i,u,t)),!d&&oo.hasOwnProperty(l)&&(d=oo[l](i,u)),l==="there"&&c==="s"&&(d=sl(i,u)),d){d=Sn(d,e),zn(n,[s,u],d),no(n[s],e,u,d.length);continue}if(al.test(i[u].normal)){d=nl(i,u),d&&(d=Sn(d,e),zn(n,[s,u],d),o.one.setTag(d,"NumberRange",t),d[2]&&d[2].tags.has("Time")&&o.one.setTag([d[0]],"Time",t,null,"time-range"),no(n[s],e,u,d.length));continue}d=ol(i,u,t),d&&(d=Sn(d,e),zn(n,[s,u],d),o.one.setTag([d[1]],"Unit",t,null,"contraction-unit"))}})},ll={contractions:ul},cl={model:Mu,compute:ll,hooks:["contractions"]},ao=function(e){const t=e.world,{model:n,methods:r}=e.world,o=r.one.setTag,{frozenLex:a}=n.one,i=n.one._multiCache||{};e.docs.forEach(s=>{for(let u=0;u<s.length;u+=1){const l=s[u],c=l.machine||l.normal;if(i[c]!==void 0&&s[u+1]){const d=u+i[c]-1;for(let g=d;g>u;g-=1){const x=s.slice(u,g+1),G=x.map(U=>U.machine||U.normal).join(" ");if(a.hasOwnProperty(G)===!0){o(x,a[G],t,!1,"1-frozen-multi-lexicon"),x.forEach(U=>U.frozen=!0);continue}}}if(a[c]!==void 0&&a.hasOwnProperty(c)){o([l],a[c],t,!1,"1-freeze-lexicon"),l.frozen=!0;continue}}})},hl=function(e){return e.docs.forEach(t=>{t.forEach(n=>{delete n.frozen})}),e},dl={frozen:ao,freeze:ao,unfreeze:hl},io=e=>"\x1B[34m"+e+"\x1B[0m",so=e=>"\x1B[3m\x1B[2m"+e+"\x1B[0m",uo=function(e){e.docs.forEach(t=>{console.log(io(`
|
|
2
|
-
┌─────────`)),t.forEach(n=>{let r=` ${so("│")} `;const o=n.implicit||n.text||"-";n.frozen===!0?r+=`${io(o)} ❄️`:r+=so(o),console.log(r)})})},pl={compute:dl,mutate:e=>{const t=e.methods.one;t.termMethods.isFrozen=n=>n.frozen===!0,t.debug.freeze=uo,t.debug.frozen=uo},api:function(e){e.prototype.freeze=function(){return this.docs.forEach(t=>{t.forEach(n=>{n.frozen=!0})}),this},e.prototype.unfreeze=function(){this.compute("unfreeze")},e.prototype.isFrozen=function(){return this.match("@isFrozen+")}},hooks:["freeze"]},gl=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,i=r.one._multiCache||{},{lexicon:s}=r.one||{},u=e[t],l=u.machine||u.normal;if(i[l]!==void 0&&e[t+1]){const c=t+i[l]-1;for(let d=c;d>t;d-=1){const g=e.slice(t,d+1);if(g.length<=1)return!1;const x=g.map(G=>G.machine||G.normal).join(" ");if(s.hasOwnProperty(x)===!0){const G=s[x];return a(g,G,n,!1,"1-multi-lexicon"),G&&G.length===2&&(G[0]==="PhrasalVerb"||G[1]==="PhrasalVerb")&&a([g[1]],"Particle",n,!1,"1-phrasal-particle"),!0}}return!1}return null},lo=/^(under|over|mis|re|un|dis|semi|pre|post)-?/,ml=new Set(["Verb","Infinitive","PastTense","Gerund","PresentTense","Adjective","Participle"]),fl=function(e,t,n){const{model:r,methods:o}=n,a=o.one.setTag,{lexicon:i}=r.one,s=e[t],u=s.machine||s.normal;if(i[u]!==void 0&&i.hasOwnProperty(u))return a([s],i[u],n,!1,"1-lexicon"),!0;if(s.alias){const l=s.alias.find(c=>i.hasOwnProperty(c));if(l)return a([s],i[l],n,!1,"1-lexicon-alias"),!0}if(lo.test(u)===!0){const l=u.replace(lo,"");if(i.hasOwnProperty(l)&&l.length>3&&ml.has(i[l]))return a([s],i[l],n,!1,"1-lexicon-prefix"),!0}return null},bl=function(e){const t=e.world;e.docs.forEach(n=>{for(let r=0;r<n.length;r+=1)if(n[r].tags.size===0){let o=null;o=o||gl(n,r,t),o=o||fl(n,r,t)}})},vl={lexicon:bl},yl=function(e){const t={},n={};return Object.keys(e).forEach(r=>{const o=e[r];r=r.toLowerCase().trim(),r=r.replace(/'s\b/,"");const a=r.split(/ /);a.length>1&&(n[a[0]]===void 0||a.length>n[a[0]])&&(n[a[0]]=a.length),t[r]=t[r]||o}),delete t[""],delete t[null],delete t[" "],{lex:t,_multi:n}},wl={one:{expandLexicon:yl}},$l=function(e,t=!1){const n=this.world(),{methods:r,model:o}=n;if(!e)return;if(Object.keys(e).forEach(s=>{typeof e[s]=="string"&&e[s].startsWith("#")&&(e[s]=e[s].replace(/^#/,""))}),t===!0){const{lex:s,_multi:u}=r.one.expandLexicon(e,n);Object.assign(o.one._multiCache,u),Object.assign(o.one.frozenLex,s);return}if(r.two.expandLexicon){const{lex:s,_multi:u}=r.two.expandLexicon(e,n);Object.assign(o.one.lexicon,s),Object.assign(o.one._multiCache,u)}const{lex:a,_multi:i}=r.one.expandLexicon(e,n);Object.assign(o.one.lexicon,a),Object.assign(o.one._multiCache,i)},kl={addWords:$l},Pl={one:{lexicon:{},_multiCache:{},frozenLex:{}}},Al={model:Pl,methods:wl,compute:vl,lib:kl,hooks:["lexicon"]},xl=function(e,t){const{methods:n,model:r}=t;return n.one.tokenize.splitTerms(e,r).map(o=>n.one.tokenize.splitWhitespace(o,r)).map(o=>o.text.toLowerCase())},gi=function(e,t){const n=[{}],r=[null],o=[0],a=[];let i=0;e.forEach(function(s){let u=0;const l=xl(s,t);for(let c=0;c<l.length;c++){const d=l[c];n[u]&&n[u].hasOwnProperty(d)?u=n[u][d]:(i++,n[u][d]=i,n[i]={},u=i,r[i]=null)}r[u]=[l.length]});for(const s in n[0])i=n[0][s],o[i]=0,a.push(i);for(;a.length;){const s=a.shift(),u=Object.keys(n[s]);for(let l=0;l<u.length;l+=1){const c=u[l],d=n[s][c];for(a.push(d),i=o[s];i>0&&!n[i].hasOwnProperty(c);)i=o[i];if(n.hasOwnProperty(i)){const g=n[i][c];o[d]=g,r[g]&&(r[d]=r[d]||[],r[d]=r[d].concat(r[g]))}else o[d]=0}}return{goNext:n,endAs:r,failTo:o}},Cl=function(e,t,n){let r=0;const o=[];for(let a=0;a<e.length;a++){const i=e[a][n.form]||e[a].normal;for(;r>0&&(t.goNext[r]===void 0||!t.goNext[r].hasOwnProperty(i));)r=t.failTo[r]||0;if(t.goNext[r].hasOwnProperty(i)&&(r=t.goNext[r][i],t.endAs[r])){const s=t.endAs[r];for(let u=0;u<s.length;u++){const l=s[u],c=e[a-l+1],[d,g]=c.index;o.push([d,g,g+l,c.id])}}}return o},jl=function(e,t){for(let n=0;n<e.length;n+=1)if(t.has(e[n])===!0)return!1;return!0},Nl=function(e,t,n){let r=[];n.form=n.form||"normal";const o=e.docs;if(!t.goNext||!t.goNext[0])return console.error("Compromise invalid lookup trie"),e.none();const a=Object.keys(t.goNext[0]);for(let i=0;i<o.length;i++){if(e._cache&&e._cache[i]&&jl(a,e._cache[i])===!0)continue;const s=o[i],u=Cl(s,t,n);u.length>0&&(r=r.concat(u))}return e.update(r)},Il=e=>Object.prototype.toString.call(e)==="[object Object]";function Tl(e){e.prototype.lookup=function(t,n={}){if(!t)return this.none();typeof t=="string"&&(t=[t]);const r=Il(t)?t:gi(t,this.world);let o=Nl(this,r,n);return o=o.settle(),o}}const Mn=(e,t)=>{for(let n=e.length-1;n>=0;n-=1)if(e[n]!==t)return e=e.slice(0,n+1),e;return e},El=function(e){return e.goNext=e.goNext.map(t=>{if(Object.keys(t).length!==0)return t}),e.goNext=Mn(e.goNext,void 0),e.failTo=Mn(e.failTo,0),e.endAs=Mn(e.endAs,null),e},lr={buildTrie:function(e){const t=gi(e,this.world());return El(t)}};lr.compile=lr.buildTrie;const Dl={api:Tl,lib:lr},co=function(e,t){return t&&e.forEach(n=>{const r=n[0];t[r]&&(n[0]=t[r][0],n[1]+=t[r][1],n[2]+=t[r][1])}),e},mi=function(e,t){let{ptrs:n}=e;const{byGroup:r}=e;return n=co(n,t),Object.keys(r).forEach(o=>{r[o]=co(r[o],t)}),{ptrs:n,byGroup:r}},qt=function(e,t,n){const r=n.methods.one;return typeof e=="number"&&(e=String(e)),typeof e=="string"&&(e=r.killUnicode(e,n),e=r.parseMatch(e,t,n)),e},fi=e=>Object.prototype.toString.call(e)==="[object Object]",Rt=e=>e&&fi(e)&&e.isView===!0,Ut=e=>e&&fi(e)&&e.isNet===!0,Hl=function(e,t,n){const r=this.methods.one;if(Rt(e))return this.intersection(e);if(Ut(e))return this.sweep(e,{tagger:!1}).view.settle();e=qt(e,n,this.world);const o={regs:e,group:t},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=mi(a,this.fullPointer),u=this.toView(i);return u._groups=s,u},Gl=function(e,t,n){const r=this.methods.one;if(Rt(e))return this.intersection(e).eq(0);if(Ut(e))return this.sweep(e,{tagger:!1,matchOne:!0}).view;e=qt(e,n,this.world);const o={regs:e,group:t,justOne:!0},a=r.match(this.docs,o,this._cache),{ptrs:i,byGroup:s}=mi(a,this.fullPointer),u=this.toView(i);return u._groups=s,u},Ol=function(e,t,n){const r=this.methods.one;if(Rt(e))return this.intersection(e).fullPointer.length>0;if(Ut(e))return this.sweep(e,{tagger:!1}).view.found;e=qt(e,n,this.world);const o={regs:e,group:t,justOne:!0};return r.match(this.docs,o,this._cache).ptrs.length>0},Fl=function(e,t,n){const r=this.methods.one;if(Rt(e))return this.filter(u=>u.intersection(e).found);if(Ut(e)){const u=this.sweep(e,{tagger:!1}).view.settle();return this.if(u)}e=qt(e,n,this.world);const o={regs:e,group:t,justOne:!0};let a=this.fullPointer;const i=this._cache||[];a=a.filter((u,l)=>{const c=this.update([u]);return r.match(c.docs,o,i[l]).ptrs.length>0});const s=this.update(a);return this._cache&&(s._cache=a.map(u=>i[u[0]])),s},Vl=function(e,t,n){const{methods:r}=this,o=r.one;if(Rt(e))return this.filter(s=>!s.intersection(e).found);if(Ut(e)){const s=this.sweep(e,{tagger:!1}).view.settle();return this.ifNo(s)}e=qt(e,n,this.world);const a=this._cache||[],i=this.filter((s,u)=>{const l={regs:e,group:t,justOne:!0};return o.match(s.docs,l,a[u]).ptrs.length===0});return this._cache&&(i._cache=i.ptrs.map(s=>a[s[0]])),i},zl={matchOne:Gl,match:Hl,has:Ol,if:Fl,ifNo:Vl},Bl=function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer);Object.keys(a).forEach(s=>{const u=a[s].sort((l,c)=>l[1]>c[1]?1:-1)[0];u[1]>0&&o.push([u[0],0,u[1]])});const i=this.toView(o);return e?i.match(e,t,n):i},Sl=function(e,t,n){const{indexN:r}=this.methods.one.pointer,o=[],a=r(this.fullPointer),i=this.document;Object.keys(a).forEach(u=>{const l=a[u].sort((g,x)=>g[1]>x[1]?-1:1)[0],[c,,d]=l;d<i[c].length&&o.push([c,d,i[c].length])});const s=this.toView(o);return e?s.match(e,t,n):s},Ml=function(e,t,n){typeof e=="string"&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[e.length-1].end=!0;const r=this.fullPointer;return this.forEach((o,a)=>{const i=o.before(e,t);if(i.found){const s=i.terms();r[a][1]-=s.length,r[a][3]=s.docs[0][0].id}}),this.update(r)},Ll=function(e,t,n){typeof e=="string"&&(e=this.world.methods.one.parseMatch(e,n,this.world)),e[0].start=!0;const r=this.fullPointer;return this.forEach((o,a)=>{const i=o.after(e,t);if(i.found){const s=i.terms();r[a][2]+=s.length,r[a][4]=null}}),this.update(r)},Kl=function(e,t,n){return this.growRight(e,t,n).growLeft(e,t,n)},Jl={before:Bl,after:Sl,growLeft:Ml,growRight:Ll,grow:Kl},bi=function(e,t){return[e[0],e[1],t[2]]},Wl=function(e){return Object.prototype.toString.call(e)==="[object Array]"},Dr=(e,t,n)=>typeof e=="string"||Wl(e)?t.match(e,n):e||t.none(),Hr=function(e,t){const[n,r,o]=e;return t.document[n]&&t.document[n][r]&&(e[3]=e[3]||t.document[n][r].id,t.document[n][o-1]&&(e[4]=e[4]||t.document[n][o-1].id)),e},xt={};xt.splitOn=function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Dr(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach(i=>{a.push(i.passthrough),a.push(i.before),a.push(i.match),a.push(i.after)}),a=a.filter(i=>i),a=a.map(i=>Hr(i,this)),this.update(a)};xt.splitBefore=function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Dr(e,this,t).fullPointer,o=n(this.fullPointer,r);for(let i=0;i<o.length;i+=1)!o[i].after&&o[i+1]&&o[i+1].before&&o[i].match&&o[i].match[0]===o[i+1].before[0]&&(o[i].after=o[i+1].before,delete o[i+1].before);let a=[];return o.forEach(i=>{a.push(i.passthrough),a.push(i.before),i.match&&i.after?a.push(bi(i.match,i.after)):a.push(i.match)}),a=a.filter(i=>i),a=a.map(i=>Hr(i,this)),this.update(a)};xt.splitAfter=function(e,t){const{splitAll:n}=this.methods.one.pointer,r=Dr(e,this,t).fullPointer,o=n(this.fullPointer,r);let a=[];return o.forEach(i=>{a.push(i.passthrough),i.before&&i.match?a.push(bi(i.before,i.match)):(a.push(i.before),a.push(i.match)),a.push(i.after)}),a=a.filter(i=>i),a=a.map(i=>Hr(i,this)),this.update(a)};xt.split=xt.splitAfter;const ql=function(e,t){return!e||!t||e[0]!==t[0]?!1:e[2]===t[1]},ho=function(e,t,n){const r=e.world,o=r.methods.one.parseMatch;t=t||".$",n=n||"^.";const a=o(t,{},r),i=o(n,{},r);a[a.length-1].end=!0,i[0].start=!0;const s=e.fullPointer,u=[s[0]];for(let l=1;l<s.length;l+=1){const c=u[u.length-1],d=s[l],g=e.update([c]),x=e.update([d]);ql(c,d)&&g.has(a)&&x.has(i)?u[u.length-1]=[c[0],c[1],d[2],c[3],d[4]]:u.push(d)}return e.update(u)},Rl={joinIf:function(e,t){return ho(this,e,t)},join:function(){return ho(this)}},Ge=Object.assign({},zl,Jl,xt,Rl);Ge.lookBehind=Ge.before;Ge.lookBefore=Ge.before;Ge.lookAhead=Ge.after;Ge.lookAfter=Ge.after;Ge.notIf=Ge.ifNo;const Ul=function(e){Object.assign(e.prototype,Ge)},_l=/(?:^|\s)([![^]*(?:<[^<]*>)?\/.*?[^\\/]\/[?\]+*$~]*)(?:\s|$)/,Ql=/([!~[^]*(?:<[^<]*>)?\([^)]+[^\\)]\)[?\]+*$~]*)(?:\s|$)/,Zl=/ /g,Xl=e=>/^[![^]*(<[^<]*>)?\(/.test(e)&&/\)[?\]+*$~]*$/.test(e),po=e=>/^[![^]*(<[^<]*>)?\//.test(e)&&/\/[?\]+*$~]*$/.test(e),go=function(e){return e=e.map(t=>t.trim()),e=e.filter(t=>t),e},Yl=function(e){const t=e.split(_l);let n=[];t.forEach(o=>{if(po(o)){n.push(o);return}n=n.concat(o.split(Ql))}),n=go(n);let r=[];return n.forEach(o=>{Xl(o)||po(o)?r.push(o):r=r.concat(o.split(Zl))}),r=go(r),r},mo=/\{([0-9]+)?(, *[0-9]*)?\}/,fo=/&&/,ec=new RegExp(/^<\s*(\S+)\s*>/),bo=e=>e.charAt(0).toUpperCase()+e.substring(1),$e=e=>e.charAt(e.length-1),me=e=>e.charAt(0),wt=e=>e.substring(1),$t=e=>e.substring(0,e.length-1),Dt=function(e){return e=wt(e),e=$t(e),e},vi=function(e,t){const n={};for(let r=0;r<2;r+=1){if($e(e)==="$"&&(n.end=!0,e=$t(e)),me(e)==="^"&&(n.start=!0,e=wt(e)),$e(e)==="?"&&(n.optional=!0,e=$t(e)),(me(e)==="["||$e(e)==="]")&&(n.group=null,me(e)==="["&&(n.groupStart=!0),$e(e)==="]"&&(n.groupEnd=!0),e=e.replace(/^\[/,""),e=e.replace(/\]$/,""),me(e)==="<")){const o=ec.exec(e);o.length>=2&&(n.group=o[1],e=e.replace(o[0],""))}if($e(e)==="+"&&(n.greedy=!0,e=$t(e)),e!=="*"&&$e(e)==="*"&&e!=="\\*"&&(n.greedy=!0,e=$t(e)),me(e)==="!"&&(n.negative=!0,e=wt(e)),me(e)==="~"&&$e(e)==="~"&&e.length>2&&(e=Dt(e),n.fuzzy=!0,n.min=t.fuzzy||.85,/\(/.test(e)===!1))return n.word=e,n;if(me(e)==="/"&&$e(e)==="/")return e=Dt(e),t.caseSensitive&&(n.use="text"),n.regex=new RegExp(e),n;if(mo.test(e)===!0&&(e=e.replace(mo,(o,a,i)=>(i===void 0?(n.min=Number(a),n.max=Number(a)):(i=i.replace(/, */,""),a===void 0?(n.min=0,n.max=Number(i)):(n.min=Number(a),n.max=Number(i||999))),n.greedy=!0,n.min||(n.optional=!0),""))),me(e)==="("&&$e(e)===")"){fo.test(e)?(n.choices=e.split(fo),n.operator="and"):(n.choices=e.split("|"),n.operator="or"),n.choices[0]=wt(n.choices[0]);const o=n.choices.length-1;n.choices[o]=$t(n.choices[o]),n.choices=n.choices.map(a=>a.trim()),n.choices=n.choices.filter(a=>a),n.choices=n.choices.map(a=>a.split(/ /g).map(i=>vi(i,t))),e=""}if(me(e)==="{"&&$e(e)==="}"){if(e=Dt(e),n.root=e,/\//.test(e)){const o=n.root.split(/\//);n.root=o[0],n.pos=o[1],n.pos==="adj"&&(n.pos="Adjective"),n.pos=n.pos.charAt(0).toUpperCase()+n.pos.substr(1).toLowerCase(),o[2]!==void 0&&(n.sense=o[2])}return n}if(me(e)==="<"&&$e(e)===">")return e=Dt(e),n.chunk=bo(e),n.greedy=!0,n;if(me(e)==="%"&&$e(e)==="%")return e=Dt(e),n.switch=e,n}return me(e)==="#"?(n.tag=wt(e),n.tag=bo(n.tag),n):me(e)==="@"?(n.method=wt(e),n):e==="."?(n.anything=!0,n):e==="*"?(n.anything=!0,n.greedy=!0,n.optional=!0,n):(e&&(e=e.replace("\\*","*"),e=e.replace("\\.","."),t.caseSensitive?n.use="text":e=e.toLowerCase(),n.word=e),n)},tc=/[a-z0-9][-–—][a-z]/i,nc=function(e,t){const n=t.model.one.prefixes;for(let r=e.length-1;r>=0;r-=1){const o=e[r];if(o.word&&tc.test(o.word)){let a=o.word.split(/[-–—]/g);if(n.hasOwnProperty(a[0]))continue;a=a.filter(i=>i).reverse(),e.splice(r,1),a.forEach(i=>{const s=Object.assign({},o);s.word=i,e.splice(r,0,s)})}}return e},vo=function(e,t){const{all:n}=t.methods.two.transform.verb||{},r=e.root;return n?n(r,t.model):[]},yo=function(e,t){const{all:n}=t.methods.two.transform.noun||{};return n?n(e.root,t.model):[e.root]},wo=function(e,t){const{all:n}=t.methods.two.transform.adjective||{};return n?n(e.root,t.model):[e.root]},rc=function(e,t){return e=e.map(n=>{if(n.root)if(t.methods.two&&t.methods.two.transform){let r=[];n.pos?n.pos==="Verb"?r=r.concat(vo(n,t)):n.pos==="Noun"?r=r.concat(yo(n,t)):n.pos==="Adjective"&&(r=r.concat(wo(n,t))):(r=r.concat(vo(n,t)),r=r.concat(yo(n,t)),r=r.concat(wo(n,t))),r=r.filter(o=>o),r.length>0&&(n.operator="or",n.fastOr=new Set(r))}else n.machine=n.root,delete n.id,delete n.root;return n}),e},oc=function(e){let t=0,n=null;for(let r=0;r<e.length;r++){const o=e[r];o.groupStart===!0&&(n=o.group,n===null&&(n=String(t),t+=1)),n!==null&&(o.group=n),o.groupEnd===!0&&(n=null)}return e},ac=function(e){return e.map(t=>{if(t.choices!==void 0){if(t.operator!=="or"||t.fuzzy===!0)return t;t.choices.every(n=>{if(n.length!==1)return!1;const r=n[0];return r.fuzzy===!0||r.start||r.end?!1:r.word!==void 0&&r.negative!==!0&&r.optional!==!0&&r.method!==!0})===!0&&(t.fastOr=new Set,t.choices.forEach(n=>{t.fastOr.add(n[0].word)}),delete t.choices)}return t})},ic=function(e){return e.map(t=>(t.fuzzy&&t.choices&&t.choices.forEach(n=>{n.length===1&&n[0].word&&(n[0].fuzzy=!0,n[0].min=t.min)}),t))},sc=function(e){return e=oc(e),e=ac(e),e=ic(e),e},uc=function(e,t,n){if(e==null||e==="")return[];t=t||{},typeof e=="number"&&(e=String(e));let r=Yl(e);return r=r.map(o=>vi(o,t)),r=nc(r,n),r=rc(r,n),r=sc(r),r},lc=function(e,t){for(const n of t)if(e.has(n))return!0;return!1},cc=function(e,t){for(let n=0;n<e.length;n+=1){const r=e[n];if(!(r.optional===!0||r.negative===!0||r.fuzzy===!0)){if(r.word!==void 0&&t.has(r.word)===!1||r.tag!==void 0&&t.has("#"+r.tag)===!1)return!0;if(r.fastOr&&lc(r.fastOr,t)===!1)return!1}}return!1},hc=function(e,t){const n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;const o=(r>n?r:n)+1;if(Math.abs(n-r)>(o||100))return o||100;const a=[];for(let g=0;g<o;g++)a[g]=[g],a[g].length=o;for(let g=0;g<o;g++)a[0][g]=g;let i,s,u,l,c,d;for(let g=1;g<=n;++g)for(s=e[g-1],i=1;i<=r;++i){if(g===i&&a[g][i]>4)return n;u=t[i-1],l=s===u?0:1,c=a[g-1][i]+1,(d=a[g][i-1]+1)<c&&(c=d),(d=a[g-1][i-1]+l)<c&&(c=d),g>1&&i>1&&s===t[i-2]&&e[g-2]===u&&(d=a[g-2][i-2]+l)<c?a[g][i]=d:a[g][i]=c}return a[n][r]},dc=function(e,t,n=3){if(e===t)return 1;if(e.length<n||t.length<n)return 0;const r=hc(e,t),o=Math.max(e.length,t.length);return 1-(o===0?0:r/o)},pc=/([\u0022\uFF02\u0027\u201C\u2018\u201F\u201B\u201E\u2E42\u201A\u00AB\u2039\u2035\u2036\u2037\u301D\u0060\u301F])/,gc=/([\u0022\uFF02\u0027\u201D\u2019\u00BB\u203A\u2032\u2033\u2034\u301E\u00B4])/,$o=/^[-–—]$/,ko=/ [-–—]{1,3} /,Oe=(e,t)=>e.post.indexOf(t)!==-1,Lt={hasQuote:e=>pc.test(e.pre)||gc.test(e.post),hasComma:e=>Oe(e,","),hasPeriod:e=>Oe(e,".")===!0&&Oe(e,"...")===!1,hasExclamation:e=>Oe(e,"!"),hasQuestionMark:e=>Oe(e,"?")||Oe(e,"¿"),hasEllipses:e=>Oe(e,"..")||Oe(e,"…"),hasSemicolon:e=>Oe(e,";"),hasColon:e=>Oe(e,":"),hasSlash:e=>/\//.test(e.text),hasHyphen:e=>$o.test(e.post)||$o.test(e.pre),hasDash:e=>ko.test(e.post)||ko.test(e.pre),hasContraction:e=>!!e.implicit,isAcronym:e=>e.tags.has("Acronym"),isKnown:e=>e.tags.size>0,isTitleCase:e=>new RegExp("^\\p{Lu}[a-z'\\u00C0-\\u00FF]","u").test(e.text),isUpperCase:e=>new RegExp("^\\p{Lu}+$","u").test(e.text)};Lt.hasQuotation=Lt.hasQuote;let Cn=function(){};const mc=function(e,t,n,r){if(t.anything===!0)return!0;if(t.start===!0&&n!==0||t.end===!0&&n!==r-1)return!1;if(t.id!==void 0&&t.id===e.id)return!0;if(t.word!==void 0)return t.use?t.word===e[t.use]:e.machine!==null&&e.machine===t.word||e.alias!==void 0&&e.alias.hasOwnProperty(t.word)||t.fuzzy===!0&&(t.word===e.root||dc(t.word,e.normal)>=t.min)||e.alias&&e.alias.some(o=>o===t.word)?!0:t.word===e.text||t.word===e.normal;if(t.tag!==void 0)return e.tags.has(t.tag)===!0;if(t.method!==void 0)return typeof Lt[t.method]=="function"&&Lt[t.method](e)===!0;if(t.pre!==void 0)return e.pre&&e.pre.includes(t.pre);if(t.post!==void 0)return e.post&&e.post.includes(t.post);if(t.regex!==void 0){let o=e.normal;return t.use&&(o=e[t.use]),t.regex.test(o)}if(t.chunk!==void 0)return e.chunk===t.chunk;if(t.switch!==void 0)return e.switch===t.switch;if(t.machine!==void 0)return e.normal===t.machine||e.machine===t.machine||e.root===t.machine;if(t.sense!==void 0)return e.sense===t.sense;if(t.fastOr!==void 0){if(t.pos&&!e.tags.has(t.pos))return null;const o=e.root||e.implicit||e.machine||e.normal;return t.fastOr.has(o)||t.fastOr.has(e.text)}return t.choices!==void 0?t.operator==="and"?t.choices.every(o=>Cn(e,o,n,r)):t.choices.some(o=>Cn(e,o,n,r)):!1};Cn=function(e,t,n,r){const o=mc(e,t,n,r);return t.negative===!0?!o:o};const pe=Cn,fc=function(e,t){const n=Object.assign({},e.regs[e.r],{start:!1,end:!1}),r=e.t;for(;e.t<e.terms.length;e.t+=1){if(t&&pe(e.terms[e.t],t,e.start_i+e.t,e.phrase_length))return e.t;const o=e.t-r+1;if(n.max!==void 0&&o===n.max)return e.t;if(pe(e.terms[e.t],n,e.start_i+e.t,e.phrase_length)===!1)return n.min!==void 0&&o<n.min?null:e.t}return e.t},bc=function(e,t){let n=e.t;if(!t)return e.terms.length;for(;n<e.terms.length;n+=1)if(pe(e.terms[n],t,e.start_i+n,e.phrase_length)===!0)return n;return null},vc=function(e,t){if(e.end===!0&&e.greedy===!0&&t.start_i+t.t<t.phrase_length-1){const n=Object.assign({},e,{end:!1});if(pe(t.terms[t.t],n,t.start_i+t.t,t.phrase_length)===!0)return!0}return!1},Dn=function(e,t){return e.groups[e.inGroup]||(e.groups[e.inGroup]={start:t,length:0}),e.groups[e.inGroup]},yc=function(e){const{regs:t}=e,n=t[e.r],r=bc(e,t[e.r+1]);if(r===null||r===0||n.min!==void 0&&r-e.t<n.min)return null;if(n.max!==void 0&&r-e.t>n.max)return e.t=e.t+n.max,!0;if(e.hasGroup===!0){const o=Dn(e,e.t);o.length=r-e.t}return e.t=r,!0},wc=function(e){return Object.prototype.toString.call(e)==="[object Array]"},yi=function(e,t=0){const n=e.regs[e.r];let r=!1;for(let o=0;o<n.choices.length;o+=1){const a=n.choices[o];if(!wc(a))return!1;if(r=a.every((i,s)=>{let u=0;const l=e.t+s+t+u;if(e.terms[l]===void 0)return!1;const c=pe(e.terms[l],i,l+e.start_i,e.phrase_length);if(c===!0&&i.greedy===!0)for(let d=1;d<e.terms.length;d+=1){const g=e.terms[l+d];if(g)if(pe(g,i,e.start_i+d,e.phrase_length)===!0)u+=1;else break}return t+=u,c}),r){t+=a.length;break}}return r&&n.greedy===!0?yi(e,t):t},$c=function(e){let t=0;return e.regs[e.r].choices.every(n=>{const r=n.every((o,a)=>{const i=e.t+a;return e.terms[i]===void 0?!1:pe(e.terms[i],o,i,e.phrase_length)});return r===!0&&n.length>t&&(t=n.length),r})===!0?t:!1},kc=function(e){const{regs:t}=e,n=t[e.r],r=yi(e);if(r){if(n.negative===!0)return null;if(e.hasGroup===!0){const o=Dn(e,e.t);o.length+=r}if(n.end===!0){const o=e.phrase_length;if(e.t+e.start_i+r!==o)return null}return e.t+=r,!0}else if(!n.optional)return null;return!0},Pc=function(e){const{regs:t}=e,n=t[e.r],r=$c(e);if(r){if(n.negative===!0)return null;if(e.hasGroup===!0){const o=Dn(e,e.t);o.length+=r}if(n.end===!0){const o=e.phrase_length-1;if(e.t+e.start_i!==o)return null}return e.t+=r,!0}else if(!n.optional)return null;return!0},Ac=function(e,t,n){let r=0;for(let o=e.t;o<e.terms.length;o+=1){let a=pe(e.terms[o],t,e.start_i+e.t,e.phrase_length);if(a||n&&(a=pe(e.terms[o],n,e.start_i+e.t,e.phrase_length),a)||(r+=1,t.max!==void 0&&r===t.max))break}return r===0||t.min&&t.min>r?!1:(e.t+=r,!0)},xc=function(e){const{regs:t}=e,n=t[e.r],r=Object.assign({},n);if(r.negative=!1,pe(e.terms[e.t],r,e.start_i+e.t,e.phrase_length))return!1;if(n.optional){const o=t[e.r+1];o&&(pe(e.terms[e.t],o,e.start_i+e.t,e.phrase_length)?e.r+=1:o.optional&&t[e.r+2]&&pe(e.terms[e.t],t[e.r+2],e.start_i+e.t,e.phrase_length)&&(e.r+=2))}return n.greedy?Ac(e,r,t[e.r+1]):(e.t+=1,!0)},Cc=function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=pe(r,t[e.r+1],e.start_i+e.t,e.phrase_length);if(n.negative||o){const a=e.terms[e.t+1];(!a||!pe(a,t[e.r+1],e.start_i+e.t,e.phrase_length))&&(e.r+=1)}},jc=function(e){const{regs:t,phrase_length:n}=e,r=t[e.r];return e.t=fc(e,t[e.r+1]),e.t===null||r.min&&r.min>e.t||r.end===!0&&e.start_i+e.t!==n?null:!0},Nc=function(e){const t=e.terms[e.t],n=e.regs[e.r];if(t.implicit&&e.terms[e.t+1]){if(!e.terms[e.t+1].implicit)return;n.word===t.normal&&(e.t+=1),n.method==="hasContraction"&&(e.t+=1)}},Ic=function(e,t){const n=e.regs[e.r],r=Dn(e,t);e.t>1&&n.greedy?r.length+=e.t-t:r.length++},Ln=function(e){const{regs:t}=e,n=t[e.r],r=e.terms[e.t],o=e.t;return n.optional&&t[e.r+1]&&n.negative?!0:(n.optional&&t[e.r+1]&&Cc(e),r.implicit&&e.terms[e.t+1]&&Nc(e),e.t+=1,n.end===!0&&e.t!==e.terms.length&&n.greedy!==!0||n.greedy===!0&&!jc(e)?null:(e.hasGroup===!0&&Ic(e,o),!0))},Gr=function(e,t,n,r){if(e.length===0||t.length===0)return null;const o={t:0,terms:e,r:0,regs:t,groups:{},start_i:n,phrase_length:r,inGroup:null};for(;o.r<t.length;o.r+=1){const s=t[o.r];if(o.hasGroup=!!s.group,o.hasGroup===!0?o.inGroup=s.group:o.inGroup=null,!o.terms[o.t]){if(t.slice(o.r).some(u=>!u.optional)===!1)break;return null}if(s.anything===!0&&s.greedy===!0){if(!yc(o))return null;continue}if(s.choices!==void 0&&s.operator==="or"){if(!kc(o))return null;continue}if(s.choices!==void 0&&s.operator==="and"){if(!Pc(o))return null;continue}if(s.anything===!0){if(s.negative&&s.anything||!Ln(o))return null;continue}if(vc(s,o)===!0){if(!Ln(o))return null;continue}if(s.negative){if(!xc(o))return null;continue}if(pe(o.terms[o.t],s,o.start_i+o.t,o.phrase_length)===!0){if(!Ln(o))return null;continue}if(s.optional!==!0)return null}const a=[null,n,o.t+n];if(a[1]===a[2])return null;const i={};return Object.keys(o.groups).forEach(s=>{const u=o.groups[s],l=n+u.start;i[s]=[null,l,l+u.length]}),{pointer:a,groups:i}},Tc=function(e,t){const n=[],r={};return e.length===0?{ptrs:n,byGroup:r}:(typeof t=="number"&&(t=String(t)),t?e.forEach(o=>{o.groups[t]&&n.push(o.groups[t])}):e.forEach(o=>{n.push(o.pointer),Object.keys(o.groups).forEach(a=>{r[a]=r[a]||[],r[a].push(o.groups[a])})}),{ptrs:n,byGroup:r})},Ec=function(e,t,n){return e=e.filter(r=>{const[o,a,i]=r.pointer,s=n[o].slice(a,i);for(let u=0;u<s.length;u+=1){const l=s.slice(u);if(Gr(l,t,u,s.length)!==null)return!1}return!0}),e},wi=function(e,t){return e.pointer[0]=t,Object.keys(e.groups).forEach(n=>{e.groups[n][0]=t}),e},Dc=function(e,t,n){let r=Gr(e,t,0,e.length);return r?(r=wi(r,n),r):null},Hc=function(e,t,n){n=n||[];const{regs:r,group:o,justOne:a}=t;let i=[];if(!r||r.length===0)return{ptrs:[],byGroup:{}};const s=r.filter(u=>u.optional!==!0&&u.negative!==!0).length;e:for(let u=0;u<e.length;u+=1){const l=e[u];if(!(n[u]&&cc(r,n[u]))){if(r[0].start===!0){const c=Dc(l,r,u);c&&i.push(c);continue}for(let c=0;c<l.length;c+=1){const d=l.slice(c);if(d.length<s)break;let g=Gr(d,r,c,l.length);if(g){if(g=wi(g,u),i.push(g),a===!0)break e;const x=g.pointer[2];Math.abs(x-1)>c&&(c=Math.abs(x-1))}}}}return r[r.length-1].end===!0&&(i=i.filter(u=>{const l=u.pointer[0];return e[l].length===u.pointer[2]})),t.notIf&&(i=Ec(i,t.notIf,e)),i=Tc(i,o),i.ptrs.forEach(u=>{const[l,c,d]=u;u[3]=e[l][c].id,u[4]=e[l][d-1].id}),i},Gc={one:{termMethods:Lt,parseMatch:uc,match:Hc}},Oc={parseMatch:function(e,t){const n=this.world(),r=n.methods.one.killUnicode;return r&&(e=r(e,n)),n.methods.one.parseMatch(e,t,n)}},Fc={api:Ul,methods:Gc,lib:Oc},Vc=/^\../,zc=/^#./,Bc=e=>(e=e.replace(/&/g,"&"),e=e.replace(/</g,"<"),e=e.replace(/>/g,">"),e=e.replace(/"/g,"""),e=e.replace(/'/g,"'"),e),Sc=function(e){let t="",n="</span>";return e=Bc(e),Vc.test(e)?t=`<span class="${e.replace(/^\./,"")}"`:zc.test(e)?t=`<span id="${e.replace(/^#/,"")}"`:(t=`<${e}`,n=`</${e}>`),t+=">",{start:t,end:n}},Mc=function(e,t){const n={},r={};return Object.keys(t).forEach(o=>{let a=t[o];const i=Sc(o);typeof a=="string"&&(a=e.match(a)),a.docs.forEach(s=>{if(s.every(c=>c.implicit))return;const u=s[0].id;n[u]=n[u]||[],n[u].push(i.start);const l=s[s.length-1].id;r[l]=r[l]||[],r[l].push(i.end)})}),{starts:n,ends:r}},Lc=function(e){const{starts:t,ends:n}=Mc(this,e);let r="";return this.docs.forEach(o=>{for(let a=0;a<o.length;a+=1){const i=o[a];t.hasOwnProperty(i.id)&&(r+=t[i.id].join("")),r+=i.pre||"",r+=i.text||"",n.hasOwnProperty(i.id)&&(r+=n[i.id].join("")),r+=i.post||""}}),r},Kc={html:Lc},$i=/[,:;)\]*.?~!\u0022\uFF02\u201D\u2019\u00BB\u203A\u2032\u2033\u2034\u301E\u00B4—-]+$/,cr=/^[(['"*~\uFF02\u201C\u2018\u201F\u201B\u201E\u2E42\u201A\u00AB\u2039\u2035\u2036\u2037\u301D\u0060\u301F]+/,Jc=/[,:;)('"\u201D\]]/,Wc=/^[-–—]$/,qc=/ /,it=function(e,t,n=!0){let r="";return e.forEach(o=>{let a=o.pre||"",i=o.post||"";t.punctuation==="some"&&(a=a.replace(cr,""),Wc.test(i)&&(i=" "),i=i.replace(Jc,""),i=i.replace(/\?!+/,"?"),i=i.replace(/!+/,"!"),i=i.replace(/\?+/,"?"),i=i.replace(/\.{2,}/,""),o.tags.has("Abbreviation")&&(i=i.replace(/\./,""))),t.whitespace==="some"&&(a=a.replace(/\s/,""),i=i.replace(/\s+/," ")),t.keepPunct||(a=a.replace(cr,""),i==="-"?i=" ":i=i.replace($i,""));let s=o[t.form||"text"]||o.normal||"";t.form==="implicit"&&(s=o.implicit||o.text),t.form==="root"&&o.implicit&&(s=o.root||o.implicit||o.normal),(t.form==="machine"||t.form==="implicit"||t.form==="root")&&o.implicit&&(!i||!qc.test(i))&&(i+=" "),r+=a+s+i}),n===!1&&(r=r.trim()),t.lowerCase===!0&&(r=r.toLowerCase()),r},Rc=function(e,t){let n="";if(!e||!e[0]||!e[0][0])return n;for(let r=0;r<e.length;r+=1)n+=it(e[r],t,!0);if(t.keepSpace||(n=n.trim()),t.keepEndPunct===!1){e[0][0].tags.has("Emoticon")||(n=n.replace(cr,""));const r=e[e.length-1];r[r.length-1].tags.has("Emoticon")||(n=n.replace($i,"")),n.endsWith("'")&&!n.endsWith("s'")&&(n=n.replace(/'/,""))}return t.cleanWhitespace===!0&&(n=n.trim()),n},tt={text:{form:"text"},normal:{whitespace:"some",punctuation:"some",case:"some",unicode:"some",form:"normal"},machine:{keepSpace:!1,whitespace:"some",punctuation:"some",case:"none",unicode:"some",form:"machine"},root:{keepSpace:!1,whitespace:"some",punctuation:"some",case:"some",unicode:"some",form:"root"},implicit:{form:"implicit"}};tt.clean=tt.normal;tt.reduced=tt.root;const ki=[];let st=0;for(;st<64;)ki[st]=0|Math.sin(++st%Math.PI)*4294967296;const Or=function(e){let t,n,r,o=decodeURI(encodeURI(e))+"",a=o.length;const i=[t=1732584193,n=4023233417,~t,~n],s=[];for(e=--a/4+2|15,s[--e]=a*8;~a;)s[a>>2]|=o.charCodeAt(a)<<8*a--;for(st=o=0;st<e;st+=16){for(a=i;o<64;a=[r=a[3],t+((r=a[0]+[t&n|~t&r,r&t|~r&n,t^n^r,n^(t|~r)][a=o>>4]+ki[o]+~~s[st|[o,5*o+1,3*o+5,7*o][a]&15])<<(a=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*a+o++%4])|r>>>-a),t,n])t=a[1]|0,n=a[2];for(o=4;o;)i[--o]+=a[o]}for(e="";o<32;)e+=(i[o>>3]>>(1^o++)*4&15).toString(16);return e},Uc={text:!0,terms:!0},Po={case:"none",unicode:"some",form:"machine",punctuation:"some"},Kn=function(e,t){return Object.assign({},e,t)},_e={text:e=>it(e,{keepPunct:!0},!1),normal:e=>it(e,Kn(tt.normal,{keepPunct:!0}),!1),implicit:e=>it(e,Kn(tt.implicit,{keepPunct:!0}),!1),machine:e=>it(e,Po,!1),root:e=>it(e,Kn(Po,{form:"root"}),!1),hash:e=>Or(it(e,{keepPunct:!0},!1)),offset:e=>{const t=_e.text(e).length;return{index:e[0].offset.index,start:e[0].offset.start,length:t}},terms:e=>e.map(t=>{const n=Object.assign({},t);return n.tags=Array.from(t.tags),n}),confidence:(e,t,n)=>t.eq(n).confidence(),syllables:(e,t,n)=>t.eq(n).syllables(),sentence:(e,t,n)=>t.eq(n).fullSentence().text(),dirty:e=>e.some(t=>t.dirty===!0)};_e.sentences=_e.sentence;_e.clean=_e.normal;_e.reduced=_e.root;const _c=function(e,t){return t=t||{},typeof t=="string"&&(t={}),t=Object.assign({},Uc,t),t.offset&&e.compute("offset"),e.docs.map((n,r)=>{const o={};return Object.keys(t).forEach(a=>{t[a]&&_e[a]&&(o[a]=_e[a](n,e,r))}),o})},hr={json:function(e){const t=_c(this,e);return typeof e=="number"?t[e]:t}};hr.data=hr.json;const Qc=()=>typeof window<"u"&&window.document,Zc=function(e){const t=this.methods.one.debug||{};return e&&t.hasOwnProperty(e)?(t[e](this),this):Qc()?(t.clientSide(this),this):(t.tags(this),this)},Xc=function(e){const t=e.pre||"",n=e.post||"";return t+e.text+n},Yc=function(e,t){const n={};return Object.keys(t).forEach(r=>{e.match(r).fullPointer.forEach(o=>{n[o[3]]={fn:t[r],end:o[2]}})}),n},Pi=function(e,t){const n=Yc(e,t);let r="";return e.docs.forEach((o,a)=>{for(let i=0;i<o.length;i+=1){const s=o[i];if(n.hasOwnProperty(s.id)){const{fn:u,end:l}=n[s.id],c=e.update([[a,i,l]]);r+=o[i].pre||"",r+=u(c),i=l-1,r+=o[i].post||""}else r+=Xc(s)}}),r},eh=e=>Object.prototype.toString.call(e)==="[object Object]",th=function(e){const t={};return e.forEach(n=>{t[n]=t[n]||0,t[n]+=1}),Object.keys(t).map(n=>({normal:n,count:t[n]})).sort((n,r)=>n.count>r.count?-1:0)},nh=function(e){if(eh(e))return Pi(this,e);if(e==="text")return this.text();if(e==="normal")return this.text("normal");if(e==="root")return this.text("root");if(e==="machine"||e==="reduced")return this.text("machine");if(e==="hash"||e==="md5")return Or(this.text());if(e==="json")return this.json();if(e==="offset"||e==="offsets")return this.compute("offset"),this.json({offset:!0});if(e==="array")return this.docs.map(t=>t.reduce((n,r)=>n+r.pre+r.text+r.post,"").trim()).filter(t=>t);if(e==="freq"||e==="frequency"||e==="topk")return th(this.json({normal:!0}).map(t=>t.normal));if(e==="terms"){let t=[];return this.docs.forEach(n=>{let r=n.map(o=>o.text);r=r.filter(o=>o),t=t.concat(r)}),t}return e==="tags"?this.docs.map(t=>t.reduce((n,r)=>(n[r.implicit||r.normal]=Array.from(r.tags),n),{})):e==="debug"?this.debug():this.text()},rh={debug:Zc,out:nh,wrap:function(e){return Pi(this,e)}},oh=e=>Object.prototype.toString.call(e)==="[object Object]",ah={text:function(e){let t={};if(e&&typeof e=="string"&&tt.hasOwnProperty(e)?t=Object.assign({},tt[e]):e&&oh(e)&&(t=Object.assign({},e)),t.keepSpace===void 0&&!this.isFull()&&(t.keepSpace=!1),t.keepEndPunct===void 0&&this.pointer){const n=this.pointer[0];n&&n[1]?t.keepEndPunct=!1:t.keepEndPunct=!0}return t.keepPunct===void 0&&(t.keepPunct=!0),t.keepSpace===void 0&&(t.keepSpace=!0),Rc(this.docs,t)}},ih=Object.assign({},rh,ah,hr,Kc),sh=function(e){Object.assign(e.prototype,ih)},uh=function(e){console.log("%c -=-=- ","background-color:#6699cc;"),e.forEach(t=>{console.groupCollapsed(t.text());const n=t.docs[0].map(r=>{let o=r.text||"-";r.implicit&&(o="["+r.implicit+"]");const a="["+Array.from(r.tags).join(", ")+"]";return{text:o,tags:a}});console.table(n,["text","tags"]),console.groupEnd()})},Be="\x1B[0m",ve={green:e=>"\x1B[32m"+e+Be,red:e=>"\x1B[31m"+e+Be,blue:e=>"\x1B[34m"+e+Be,magenta:e=>"\x1B[35m"+e+Be,cyan:e=>"\x1B[36m"+e+Be,yellow:e=>"\x1B[33m"+e+Be,black:e=>"\x1B[30m"+e+Be,dim:e=>"\x1B[2m"+e+Be,i:e=>"\x1B[3m"+e+Be},lh=function(e,t){return t.one.tagSet&&(e=e.map(n=>{if(!t.one.tagSet.hasOwnProperty(n))return n;const r=t.one.tagSet[n].color||"blue";return ve[r](n)})),e.join(", ")},ch=function(e){const{docs:t,model:n}=e;t.length===0&&console.log(ve.blue(`
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
`)
|
|
6
|
-
`)
|
|
7
|
-
`)
|
|
8
|
-
`)
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
`})),N},x=function($){let y=a($);y.forEach((N=>{delete(N=Object.assign({},N)).children}));let k=y[0];return k&&!k.id&&Object.keys(k.props).length===0&&y.shift(),y},G={text:g,txt:g,array:x,flat:x},U=function($,y){return y==="nested"||y==="json"?$:y==="debug"?(console.log(g($,!0)),null):G.hasOwnProperty(y)?G[y]($):$},xe=$=>{a($,((y,k)=>{y.id&&(y._cache.parents=y._cache.parents||[],k._cache.parents=y._cache.parents.concat([y.id]))}))},Ce=($,y)=>(Object.keys(y).forEach((k=>{if(y[k]instanceof Set){let N=$[k]||new Set;$[k]=new Set([...N,...y[k]])}else if((N=>N&&typeof N=="object"&&!Array.isArray(N))(y[k])){let N=$[k]||{};$[k]=Object.assign({},y[k],N)}else i(y[k])?$[k]=y[k].concat($[k]||[]):$[k]===void 0&&($[k]=y[k])})),$),L=/\//;class le{constructor(y={}){Object.defineProperty(this,"json",{enumerable:!1,value:y,writable:!0})}get children(){return this.json.children}get id(){return this.json.id}get found(){return this.json.id||this.json.children.length>0}props(y={}){let k=this.json.props||{};return typeof y=="string"&&(k[y]=!0),this.json.props=Object.assign(k,y),this}get(y){if(y=s(y),!L.test(y)){let N=this.json.children.find((C=>C.id===y));return new le(N)}let k=((N,C)=>{let D=(V=>typeof V!="string"?V:(V=V.replace(/^\//,"")).split(/\//))(C=C||"");for(let V=0;V<D.length;V+=1){let ee=N.children.find((h=>h.id===D[V]));if(!ee)return null;N=ee}return N})(this.json,y)||n({});return new le(k)}add(y,k={}){if(i(y))return y.forEach((C=>this.add(s(C),k))),this;y=s(y);let N=n({id:y,props:k});return this.json.children.push(N),new le(N)}remove(y){return y=s(y),this.json.children=this.json.children.filter((k=>k.id!==y)),this}nodes(){return a(this.json).map((y=>(delete(y=Object.assign({},y)).children,y)))}cache(){return(y=>{let k=a(y,((C,D)=>{C.id&&(C._cache.parents=C._cache.parents||[],C._cache.children=C._cache.children||[],D._cache.parents=C._cache.parents.concat([C.id]))})),N={};k.forEach((C=>{C.id&&(N[C.id]=C)})),k.forEach((C=>{C._cache.parents.forEach((D=>{N.hasOwnProperty(D)&&N[D]._cache.children.push(C.id)}))})),y._cache.children=Object.keys(N)})(this.json),this}list(){return a(this.json)}fillDown(){var y;return y=this.json,a(y,((k,N)=>{N.props=Ce(N.props,k.props)})),this}depth(){xe(this.json);let y=a(this.json),k=y.length>1?1:0;return y.forEach((N=>{if(N._cache.parents.length===0)return;let C=N._cache.parents.length+1;C>k&&(k=C)})),k}out(y){return xe(this.json),U(this.json,y)}debug(){return xe(this.json),U(this.json,"debug"),this}}const ge=function($){let y=u($);return new le(y)};return ge.prototype.plugin=function($){$(this)},ge}))})(yn)),yn.exports}var Yh=Xh();const ed=bs(Yh),dt={Noun:"blue",Verb:"green",Negative:"green",Date:"red",Value:"red",Adjective:"magenta",Preposition:"cyan",Conjunction:"cyan",Determiner:"cyan",Hyphenated:"cyan",Adverb:"cyan"},td=function(e){if(dt.hasOwnProperty(e.id))return dt[e.id];if(dt.hasOwnProperty(e.is))return dt[e.is];const t=e._cache.parents.find(n=>dt[n]);return dt[t]},nd=function(e){const t={};return e.forEach(n=>{const{not:r,also:o,is:a,novel:i}=n.props;let s=n._cache.parents;o&&(s=s.concat(o)),t[n.id]={is:a,not:r,novel:i,also:o,parents:s,children:n._cache.children,color:td(n)}}),Object.keys(t).forEach(n=>{const r=new Set(t[n].not);t[n].not.forEach(o=>{t[o]&&t[o].children.forEach(a=>r.add(a))}),t[n].not=Array.from(r)}),t},Co=function(e){return e?typeof e=="string"?[e]:e:[]},rd=function(e,t){return Object.keys(e).forEach(n=>{e[n].isA&&(e[n].is=e[n].isA),e[n].notA&&(e[n].not=e[n].notA),e[n].is&&typeof e[n].is=="string"&&!t.hasOwnProperty(e[n].is)&&!e.hasOwnProperty(e[n].is)&&(e[e[n].is]={}),e[n].not&&typeof e[n].not=="string"&&!e.hasOwnProperty(e[n].not)&&!t.hasOwnProperty(e[n].not)&&!e.hasOwnProperty(e[n].not)&&(e[e[n].not]={})}),e},od=function(e,t){return e=rd(e,t),Object.keys(e).forEach(n=>{e[n].children=Co(e[n].children),e[n].not=Co(e[n].not)}),Object.keys(e).forEach(n=>{(e[n].not||[]).forEach(r=>{e[r]&&e[r].not&&e[r].not.push(n)})}),e},ad=function(e){const t=Object.keys(e).map(n=>{const r=e[n],o={not:new Set(r.not),also:r.also,is:r.is,novel:r.novel};return{id:n,parent:r.is,props:o,children:[]}});return ed(t).cache().fillDown().out("array")},id=function(e){return Object.keys(e).forEach(t=>{e[t]=Object.assign({},e[t]),e[t].novel=!0}),e},sd=function(e,t){Object.keys(t).length>0&&(e=id(e)),e=od(e,t);const n=Object.assign({},t,e),r=ad(n);return nd(r)},ud={one:{setTag:Ti,unTag:_h,addTags:sd,canBe:Qh}},jo=function(e){return Object.prototype.toString.call(e)==="[object Array]"},ld={tag:function(e,t="",n){if(!this.found||!e)return this;const r=this.termList();if(r.length===0)return this;const{methods:o,verbose:a,world:i}=this;return a===!0&&console.log(" + ",e,t||""),jo(e)?e.forEach(s=>o.one.setTag(r,s,i,n,t)):o.one.setTag(r,e,i,n,t),this.uncache(),this},tagSafe:function(e,t=""){return this.tag(e,t,!0)},unTag:function(e,t){if(!this.found||!e)return this;const n=this.termList();if(n.length===0)return this;const{methods:r,verbose:o,model:a}=this;o===!0&&console.log(" - ",e,t||"");const i=a.one.tagSet;return jo(e)?e.forEach(s=>r.one.unTag(n,s,i)):r.one.unTag(n,e,i),this.uncache(),this},canBe:function(e){e=e.replace(/^#/,"");const t=this.model.one.tagSet,n=this.methods.one.canBe,r=[];this.document.forEach((a,i)=>{a.forEach((s,u)=>{n(s,e,t)||r.push([i,u,u+1])})});const o=this.update(r);return this.difference(o)}},cd=function(e){Object.assign(e.prototype,ld)},hd=function(e){const{model:t,methods:n}=this.world(),r=t.one.tagSet,o=n.one.addTags,a=o(e,r);return t.one.tagSet=a,this},dd={addTags:hd},No=new Set(["Auxiliary","Possessive"]),pd=function(e,t){return e=e.sort((n,r)=>{if(No.has(n)||!t.hasOwnProperty(r))return 1;if(No.has(r)||!t.hasOwnProperty(n))return-1;let o=t[n].children||[];const a=o.length;o=t[r].children||[];const i=o.length;return a-i}),e},gd=function(e){const{document:t,world:n}=e,r=n.model.one.tagSet;t.forEach(o=>{o.forEach(a=>{const i=Array.from(a.tags);a.tagRank=pd(i,r)})})},md={model:{one:{tagSet:{}}},compute:{tagRank:gd},methods:ud,api:cd,lib:dd},fd=/([.!?\u203D\u2E18\u203C\u2047-\u2049\u3002]+\s)/g,bd=/^[.!?\u203D\u2E18\u203C\u2047-\u2049\u3002]+\s$/,vd=/((?:\r?\n|\r)+)/,yd=function(e){const t=[],n=e.split(vd);for(let r=0;r<n.length;r++){const o=n[r].split(fd);for(let a=0;a<o.length;a++)o[a+1]&&bd.test(o[a+1])===!0&&(o[a]+=o[a+1],o[a+1]=""),o[a]!==""&&t.push(o[a])}return t},wd=/[a-z0-9\u00C0-\u00FF\u00a9\u00ae\u2000-\u3300\ud000-\udfff]/i,$d=/\S/,kd=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!(r===void 0||r==="")){if($d.test(r)===!1||wd.test(r)===!1){if(t[t.length-1]){t[t.length-1]+=r;continue}else if(e[n+1]){e[n+1]=r+e[n+1];continue}}t.push(r)}}return t},Pd=function(e){return!!e.match(/\n$/)},Ad=function(e,t){const n=t.methods.one.tokenize.isSentence,r=t.model.one.abbreviations||new Set,o=[];for(let a=0;a<e.length;a++){const i=e[a];e[a+1]&&!n(i,r)&&!Pd(i)?e[a+1]=i+(e[a+1]||""):i&&i.length>0&&(o.push(i),e[a]="")}return o},Ei={'"':'"',""":""","“":"”","‟":"”","„":"”","⹂":"”","‚":"’","«":"»","‹":"›","‵":"′","‶":"″","‷":"‴","〝":"〞","〟":"〞"},xd=RegExp("["+Object.keys(Ei).join("")+"]","g"),Cd=RegExp("["+Object.values(Ei).join("")+"]","g"),Io=function(e){if(!e)return!1;const t=e.match(Cd);return t!==null&&t.length===1},jd=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(xd);if(r!==null&&r.length===1){if(Io(e[n+1])&&e[n+1].length<280){e[n]+=e[n+1],t.push(e[n]),e[n+1]="",n+=1;continue}if(Io(e[n+2])){const o=e[n+1]+e[n+2];if(o.length<280){e[n]+=o,t.push(e[n]),e[n+1]="",e[n+2]="",n+=2;continue}}}t.push(e[n])}return t},To=/\(/g,Nd=/\)/g,Id=function(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n].match(To);if(r!==null&&r.length===1&&e[n+1]&&e[n+1].length<250&&e[n+1].match(Nd)!==null&&r.length===1&&!To.test(e[n+1])){e[n]+=e[n+1],t.push(e[n]),e[n+1]="",n+=1;continue}t.push(e[n])}return t},Td=/\S/,Eo=/^\s+/,Ed=function(e,t){if(e=e||"",e=String(e),!e||typeof e!="string"||Td.test(e)===!1)return[];e=e.replace(" "," ");const n=yd(e);let r=kd(n);if(r=Ad(r,t),r=jd(r),r=Id(r),r.length===0)return[e];for(let o=1;o<r.length;o+=1){const a=r[o].match(Eo);a!==null&&(r[o-1]+=a[0],r[o]=r[o].replace(Eo,""))}return r},Dd=function(e,t){const n=e.split(/[-–—]/);if(n.length<=1)return!1;const{prefixes:r,suffixes:o}=t.one;return n[0].length===1&&/[a-z]/i.test(n[0])||r.hasOwnProperty(n[0])||(n[1]=n[1].trim().replace(/[.?!]$/,""),o.hasOwnProperty(n[1]))?!1:/^([a-z\u00C0-\u00FF`"'/]+)[-–—]([a-z0-9\u00C0-\u00FF].*)/i.test(e)===!0||/^[('"]?([0-9]{1,4})[-–—]([a-z\u00C0-\u00FF`"'/-]+[)'"]?$)/i.test(e)===!0},Hd=function(e){const t=[],n=e.split(/[-–—]/);let r="-";const o=e.match(/[-–—]/);o&&o[0]&&(r=o);for(let a=0;a<n.length;a++)a===n.length-1?t.push(n[a]):t.push(n[a]+r);return t},Gd=function(e){const t=/^[0-9]{1,4}(:[0-9][0-9])?([a-z]{1,2})? ?[-–—] ?$/,n=/^[0-9]{1,4}([a-z]{1,2})? ?$/;for(let r=0;r<e.length-1;r+=1)e[r+1]&&t.test(e[r])&&n.test(e[r+1])&&(e[r]=e[r]+e[r+1],e[r+1]=null);return e},Od=new RegExp("\\p{L} ?\\/ ?\\p{L}+$","u"),Fd=function(e){for(let t=1;t<e.length-1;t++)Od.test(e[t])&&(e[t-1]+=e[t]+e[t+1],e[t]=null,e[t+1]=null);return e},Vd=/\S/,zd=/^[!?.]+$/,Bd=/(\S+)/;let pr=[".","?","!",":",";","-","–","—","--","...","(",")","[","]",'"',"'","`","«","»","*","•"];pr=pr.reduce((e,t)=>(e[t]=!0,e),{});const Sd=function(e){return Object.prototype.toString.call(e)==="[object Array]"},Md=function(e,t){let n=[],r=[];if(e=e||"",typeof e=="number"&&(e=String(e)),Sd(e))return e;const o=e.split(Bd);for(let i=0;i<o.length;i++){if(Dd(o[i],t)===!0){r=r.concat(Hd(o[i]));continue}r.push(o[i])}let a="";for(let i=0;i<r.length;i++){const s=r[i];Vd.test(s)===!0&&pr.hasOwnProperty(s)===!1&&zd.test(s)===!1?(n.length>0?(n[n.length-1]+=a,n.push(s)):n.push(a+s),a=""):a+=s}return a&&(n.length===0&&(n[0]=""),n[n.length-1]+=a),n=Fd(n),n=Gd(n),n=n.filter(i=>i),n},Do=new RegExp("\\p{Letter}","u"),Zt=/[\p{Number}\p{Currency_Symbol}]/u,Ld=/^[a-z]\.([a-z]\.)+/i,Kd=/[sn]['’]$/,Jd=function(e,t){const{prePunctuation:n,postPunctuation:r,emoticons:o}=t.one;let a=e,i="",s="";const u=Array.from(e);if(o.hasOwnProperty(e.trim()))return{str:e.trim(),pre:i,post:" "};let l=u.length;for(let c=0;c<l;c+=1){const d=u[0];if(n[d]!==!0){if((d==="+"||d==="-")&&Zt.test(u[1])||d==="'"&&d.length===3&&Zt.test(u[1])||Do.test(d)||Zt.test(d))break;i+=u.shift()}}l=u.length;for(let c=0;c<l;c+=1){const d=u[u.length-1];if(r[d]!==!0){if(Do.test(d)||Zt.test(d))break;d==="."&&Ld.test(a)===!0||d==="'"&&Kd.test(a)===!0||(s=u.pop()+s)}}return e=u.join(""),e===""&&(a=a.replace(/ *$/,c=>(s=c||"","")),e=a,i=""),{str:e,pre:i,post:s}},Wd=(e,t)=>{const{str:n,pre:r,post:o}=Jd(e,t);return{text:n,pre:r,post:o,tags:new Set}},qd=function(e,t){const n=t.model.one.unicode||{};e=e||"";const r=e.split("");return r.forEach((o,a)=>{n[o]&&(r[a]=n[o])}),r.join("")},Rd=function(e){e=e||"",e=e.toLowerCase(),e=e.trim();const t=e;return e=e.replace(/[,;.!?]+$/,""),e=e.replace(/\u2026/g,"..."),e=e.replace(/\u2013/g,"-"),/^[:;]/.test(e)===!1&&(e=e.replace(/\.{3,}$/g,""),e=e.replace(/[",.!:;?)]+$/g,""),e=e.replace(/^['"(]+/g,"")),e=e.replace(/[\u200B-\u200D\uFEFF]/g,""),e=e.trim(),e===""&&(e=t),e=e.replace(/([0-9]),([0-9])/g,"$1$2"),e},Ud=/([A-Z]\.)+[A-Z]?,?$/,_d=/^[A-Z]\.,?$/,Qd=/[A-Z]{2,}('s|,)?$/,Zd=/([a-z]\.)+[a-z]\.?$/,Xd=function(e){return Ud.test(e)===!0||Zd.test(e)===!0||_d.test(e)===!0||Qd.test(e)===!0},Yd=function(e){return Xd(e)&&(e=e.replace(/\./g,"")),e},Di=function(e,t){const n=t.methods.one.killUnicode;let r=e.text||"";r=Rd(r),r=n(r,t),r=Yd(r),e.normal=r},ep=function(e,t){const{methods:n,model:r}=t,{splitSentences:o,splitTerms:a,splitWhitespace:i}=n.one.tokenize;return e=e||"",e=o(e,t).map(s=>{let u=a(s,r);return u=u.map(l=>i(l,r)),u.forEach(l=>{Di(l,t)}),u}),e},tp=/[ .][A-Z]\.? *$/i,np=/(?:\u2026|\.{2,}) *$/,rp=new RegExp("\\p{L}","u"),op=/\. *$/,ap=/^[A-Z]\. $/,ip=function(e,t){if(rp.test(e)===!1||tp.test(e)===!0||e.length===3&&ap.test(e)||np.test(e)===!0)return!1;const n=e.replace(/[.!?\u203D\u2E18\u203C\u2047-\u2049] *$/,"").split(" "),r=n[n.length-1].toLowerCase();return!(t.hasOwnProperty(r)===!0&&op.test(e)===!0)},sp={one:{killUnicode:qd,tokenize:{splitSentences:Ed,isSentence:ip,splitTerms:Md,splitWhitespace:Wd,fromString:ep}}},up={"&":"and","@":"at","%":"percent",plz:"please",bein:"being"},lp=["approx","apt","bc","cyn","eg","esp","est","etc","ex","exp","prob","pron","gal","min","pseud","fig","jd","lat","lng","vol","fm","def","misc","plz","ea","ps","sec","pt","pref","pl","pp","qt","fr","sq","nee","ss","tel","temp","vet","ver","fem","masc","eng","adj","vb","rb","inf","situ","vivo","vitro","wr"],cp=["adj","adm","adv","asst","atty","bldg","brig","capt","cmdr","comdr","cpl","det","dr","esq","gen","gov","hon","jr","llb","lt","maj","messrs","mlle","mme","mr","mrs","ms","mstr","phd","prof","pvt","rep","reps","res","rev","sen","sens","sfc","sgt","sir","sr","supt","surg"],hp=["jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec"],dp=["ad","al","arc","ba","bl","ca","cca","col","corp","ft","fy","ie","lit","ma","md","pd","tce"],pp=["dept","univ","assn","bros","inc","ltd","co"],gp=["rd","st","dist","mt","ave","blvd","cl","cres","hwy","ariz","cal","calif","colo","conn","fla","fl","ga","ida","ia","kan","kans","minn","neb","nebr","okla","penna","penn","pa","dak","tenn","tex","ut","vt","va","wis","wisc","wy","wyo","usafa","alta","ont","que","sask"],mp=["dl","ml","gal","qt","pt","tbl","tsp","tbsp","km","dm","cm","mm","mi","td","hr","hrs","kg","hg","dg","cg","mg","µg","lb","oz","sq ft","hz","mps","mph","kmph","kb","mb","tb","lx","lm","fl oz","yb"],fp=[[lp],[mp,"Unit"],[dp,"Noun"],[cp,"Honorific"],[hp,"Month"],[pp,"Organization"],[gp,"Place"]],Hi={},wn={};fp.forEach(e=>{e[0].forEach(t=>{Hi[t]=!0,wn[t]="Abbreviation",e[1]!==void 0&&(wn[t]=[wn[t],e[1]])})});const bp=["anti","bi","co","contra","de","extra","infra","inter","intra","macro","micro","mis","mono","multi","peri","pre","pro","proto","pseudo","re","sub","supra","trans","tri","un","out","ex"].reduce((e,t)=>(e[t]=!0,e),{}),vp={like:!0,ish:!0,less:!0,able:!0,elect:!0,type:!0,designate:!0},Ho={"!":"¡","?":"¿Ɂ",'"':'“”"❝❞',"'":"‘‛❛❜’","-":"—–",a:"ªÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻȀȁȂȃȦȧȺΆΑΔΛάαλАаѦѧӐӑӒӓƛæ",b:"ßþƀƁƂƃƄƅɃΒβϐϦБВЪЬвъьѢѣҌҍ",c:"¢©ÇçĆćĈĉĊċČčƆƇƈȻȼͻͼϲϹϽϾСсєҀҁҪҫ",d:"ÐĎďĐđƉƊȡƋƌ",e:"ÈÉÊËèéêëĒēĔĕĖėĘęĚěƐȄȅȆȇȨȩɆɇΈΕΞΣέεξϵЀЁЕеѐёҼҽҾҿӖӗễ",f:"ƑƒϜϝӺӻҒғſ",g:"ĜĝĞğĠġĢģƓǤǥǦǧǴǵ",h:"ĤĥĦħƕǶȞȟΉΗЂЊЋНнђћҢңҤҥҺһӉӊ",I:"ÌÍÎÏ",i:"ìíîïĨĩĪīĬĭĮįİıƖƗȈȉȊȋΊΐΪίιϊІЇіїi̇",j:"ĴĵǰȷɈɉϳЈј",k:"ĶķĸƘƙǨǩΚκЌЖКжкќҚқҜҝҞҟҠҡ",l:"ĹĺĻļĽľĿŀŁłƚƪǀǏǐȴȽΙӀӏ",m:"ΜϺϻМмӍӎ",n:"ÑñŃńŅņŇňʼnŊŋƝƞǸǹȠȵΝΠήηϞЍИЙЛПийлпѝҊҋӅӆӢӣӤӥπ",o:"ÒÓÔÕÖØðòóôõöøŌōŎŏŐőƟƠơǑǒǪǫǬǭǾǿȌȍȎȏȪȫȬȭȮȯȰȱΌΘΟθοσόϕϘϙϬϴОФоѲѳӦӧӨөӪӫ",p:"ƤΡρϷϸϼРрҎҏÞ",q:"Ɋɋ",r:"ŔŕŖŗŘřƦȐȑȒȓɌɍЃГЯгяѓҐґ",s:"ŚśŜŝŞşŠšƧƨȘșȿЅѕ",t:"ŢţŤťŦŧƫƬƭƮȚțȶȾΓΤτϮТт",u:"ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưƱƲǓǔǕǖǗǘǙǚǛǜȔȕȖȗɄΰυϋύ",v:"νѴѵѶѷ",w:"ŴŵƜωώϖϢϣШЩшщѡѿ",x:"×ΧχϗϰХхҲҳӼӽӾӿ",y:"ÝýÿŶŷŸƳƴȲȳɎɏΎΥΫγψϒϓϔЎУучўѰѱҮүҰұӮӯӰӱӲӳ",z:"ŹźŻżŽžƵƶȤȥɀΖ"},Gi={};Object.keys(Ho).forEach(function(e){Ho[e].split("").forEach(function(t){Gi[t]=e})});const yp={"#":!0,"@":!0,_:!0,"°":!0,"":!0,"":!0,"":!0,"\uFEFF":!0},wp={"%":!0,_:!0,"°":!0,"":!0,"":!0,"":!0,"\uFEFF":!0},$p={"<3":!0,"</3":!0,"<\\3":!0,":^P":!0,":^p":!0,":^O":!0,":^3":!0},kp={one:{aliases:up,abbreviations:Hi,prefixes:bp,suffixes:vp,prePunctuation:yp,postPunctuation:wp,lexicon:wn,unicode:Gi,emoticons:$p}},Go=/\//,Pp=/[a-z]\.[a-z]/i,Ap=/[0-9]/,xp=function(e,t){const n=e.normal||e.text||e.machine,r=t.model.one.aliases;if(r.hasOwnProperty(n)&&(e.alias=e.alias||[],e.alias.push(r[n])),Go.test(n)&&!Pp.test(n)&&!Ap.test(n)){const o=n.split(Go);o.length<=3&&o.forEach(a=>{a=a.trim(),a!==""&&(e.alias=e.alias||[],e.alias.push(a))})}return e},Cp=new RegExp("^\\p{Letter}+-\\p{Letter}+$","u"),jp=function(e){let t=e.implicit||e.normal||e.text;t=t.replace(/['’]s$/,""),t=t.replace(/s['’]$/,"s"),t=t.replace(/([aeiou][ktrp])in'$/,"$1ing"),Cp.test(t)&&(t=t.replace(/-/g,"")),t=t.replace(/^[#@]/,""),t!==e.normal&&(e.machine=t)},Np=function(e){const t=e.docs,n={};for(let r=0;r<t.length;r+=1)for(let o=0;o<t[r].length;o+=1){const a=t[r][o],i=a.machine||a.normal;n[i]=n[i]||0,n[i]+=1}for(let r=0;r<t.length;r+=1)for(let o=0;o<t[r].length;o+=1){const a=t[r][o],i=a.machine||a.normal;a.freq=n[i]}},Ip=function(e){let t=0,n=0;const r=e.document;for(let o=0;o<r.length;o+=1)for(let a=0;a<r[o].length;a+=1){const i=r[o][a];i.offset={index:n,start:t+i.pre.length,length:i.text.length},t+=i.pre.length+i.text.length+i.post.length,n+=1}},Tp=function(e){const t=e.document;for(let n=0;n<t.length;n+=1)for(let r=0;r<t[n].length;r+=1)t[n][r].index=[n,r]},Ep=function(e){let t=0;const n=e.docs;for(let r=0;r<n.length;r+=1)for(let o=0;o<n[r].length;o+=1)n[r][o].normal!==""&&(t+=1,n[r][o].wordCount=t)},Jn=function(e,t){const n=e.docs;for(let r=0;r<n.length;r+=1)for(let o=0;o<n[r].length;o+=1)t(n[r][o],e.world)},Dp={alias:e=>Jn(e,xp),machine:e=>Jn(e,jp),normal:e=>Jn(e,Di),freq:Np,offset:Ip,index:Tp,wordCount:Ep},Hp={compute:Dp,methods:sp,model:kp,hooks:["alias","machine","index","id"]},Gp=function(e){const t=e.model.one.typeahead,n=e.docs;if(n.length===0||Object.keys(t).length===0)return;const r=n[n.length-1]||[],o=r[r.length-1];if(!o.post&&t.hasOwnProperty(o.normal)){const a=t[o.normal];o.implicit=a,o.machine=a,o.typeahead=!0,e.compute.preTagger&&e.last().unTag("*").compute(["lexicon","preTagger"])}},Op={typeahead:Gp},Fp=function(){const e=this.docs;if(e.length===0)return this;const t=e[e.length-1]||[],n=t[t.length-1];return n.typeahead===!0&&n.machine&&(n.text=n.machine,n.normal=n.machine),this},Vp=function(e){e.prototype.autoFill=Fp},zp=function(e,t,n){let r={};const o=[],a=n.prefixes||{};return e.forEach(i=>{i=i.toLowerCase().trim();let s=i.length;t.max&&s>t.max&&(s=t.max);for(let u=t.min;u<s;u+=1){const l=i.substring(0,u);if(!(t.safe&&n.model.one.lexicon.hasOwnProperty(l))){if(a.hasOwnProperty(l)===!0){o.push(l);continue}if(r.hasOwnProperty(l)===!0){o.push(l);continue}r[l]=i}}}),r=Object.assign({},a,r),o.forEach(i=>{delete r[i]}),r},Bp=e=>Object.prototype.toString.call(e)==="[object Object]",Sp={safe:!0,min:3},Mp=function(e=[],t={}){const n=this.model();t=Object.assign({},Sp,t),Bp(e)&&(Object.assign(n.one.lexicon,e),e=Object.keys(e));const r=zp(e,t,this.world());return Object.keys(r).forEach(o=>{if(n.one.typeahead.hasOwnProperty(o)){delete n.one.typeahead[o];return}n.one.typeahead[o]=r[o]}),this},Lp={typeahead:Mp},Kp={one:{typeahead:{}}},Jp={model:Kp,api:Vp,lib:Lp,compute:Op,hooks:["typeahead"]};T.extend(zu);T.extend(fh);T.extend(Fc);T.extend(Th);T.extend(md);T.plugin(cl);T.extend(Hp);T.extend(pl);T.plugin(Xs);T.extend(Dl);T.extend(Jp);T.extend(Al);T.extend(Wh);const Oi={addendum:"addenda",corpus:"corpora",criterion:"criteria",curriculum:"curricula",genus:"genera",memorandum:"memoranda",opus:"opera",ovum:"ova",phenomenon:"phenomena",referendum:"referenda",alga:"algae",alumna:"alumnae",antenna:"antennae",formula:"formulae",larva:"larvae",nebula:"nebulae",vertebra:"vertebrae",analysis:"analyses",axis:"axes",diagnosis:"diagnoses",parenthesis:"parentheses",prognosis:"prognoses",synopsis:"synopses",thesis:"theses",neurosis:"neuroses",appendix:"appendices",index:"indices",matrix:"matrices",ox:"oxen",sex:"sexes",alumnus:"alumni",bacillus:"bacilli",cactus:"cacti",fungus:"fungi",hippopotamus:"hippopotami",libretto:"libretti",modulus:"moduli",nucleus:"nuclei",octopus:"octopi",radius:"radii",stimulus:"stimuli",syllabus:"syllabi",cookie:"cookies",calorie:"calories",auntie:"aunties",movie:"movies",pie:"pies",rookie:"rookies",tie:"ties",zombie:"zombies",leaf:"leaves",loaf:"loaves",thief:"thieves",foot:"feet",goose:"geese",tooth:"teeth",beau:"beaux",chateau:"chateaux",tableau:"tableaux",bus:"buses",gas:"gases",circus:"circuses",crisis:"crises",virus:"viruses",database:"databases",excuse:"excuses",abuse:"abuses",avocado:"avocados",barracks:"barracks",child:"children",clothes:"clothes",echo:"echoes",embargo:"embargoes",epoch:"epochs",deer:"deer",halo:"halos",man:"men",woman:"women",mosquito:"mosquitoes",mouse:"mice",person:"people",quiz:"quizzes",rodeo:"rodeos",shoe:"shoes",sombrero:"sombreros",stomach:"stomachs",tornado:"tornados",tuxedo:"tuxedos",volcano:"volcanoes"},Oo={Comparative:"true¦bett1f0;arth0ew0in0;er",Superlative:"true¦earlier",PresentTense:"true¦bests,sounds",Condition:"true¦lest,unless",PastTense:"true¦began,came,d4had,kneel3l2m0sa4we1;ea0sg2;nt;eap0i0;ed;id",Participle:"true¦0:09;a06b01cZdXeat0fSgQhPoJprov0rHs7t6u4w1;ak0ithdra02o2r1;i02uY;k0v0;nd1pr04;ergoJoJ;ak0hHo3;e9h7lain,o6p5t4un3w1;o1um;rn;g,k;ol0reS;iQok0;ught,wn;ak0o1runk;ne,wn;en,wn;ewriNi1uJ;dd0s0;ut3ver1;do4se0t1;ak0h2;do2g1;roG;ne;ast0i7;iv0o1;ne,tt0;all0loBor1;bi3g2s1;ak0e0;iv0o9;dd0;ove,r1;a5eamt,iv0;hos0lu1;ng;e4i3lo2ui1;lt;wn;tt0;at0en,gun;r2w1;ak0ok0;is0;en",Gerund:"true¦accord0be0doin,go0result0stain0;ing",Expression:"true¦a0Yb0Uc0Sd0Oe0Mfarew0Lg0FhZjeez,lWmVnToOpLsJtIuFvEw7y0;a5e3i1u0;ck,p;k04p0;ee,pee;a0p,s;!h;!a,h,y;a5h2o1t0;af,f;rd up,w;atsoever,e1o0;a,ops;e,w;hoo,t;ery w06oi0L;gh,h0;! 0h,m;huh,oh;here nPsk,ut tut;h0ic;eesh,hh,it,oo;ff,h1l0ow,sst;ease,s,z;ew,ooey;h1i,mg,o0uch,w,y;h,o,ps;! 0h;hTmy go0wT;d,sh;a7evertheless,o0;!pe;eh,mm;ah,eh,m1ol0;!s;ao,fao;aCeBi9o2u0;h,mph,rra0zzC;h,y;l1o0;r6y9;la,y0;! 0;c1moCsmok0;es;ow;!p hip hoor0;ay;ck,e,llo,y;ha1i,lleluj0;ah;!ha;ah,ee4o1r0;eat scott,r;l1od0sh; grief,bye;ly;! whiz;ell;e0h,t cetera,ureka,ww,xcuse me;k,p;'oh,a0rat,uh;m0ng;mit,n0;!it;mon,o0;ngratulations,wabunga;a2oo1r0tw,ye;avo,r;!ya;h,m; 1h0ka,las,men,rgh,ye;!a,em,h,oy;la",Negative:"true¦n0;ever,o0;n,t",QuestionWord:"true¦how3wh0;at,e1ich,o0y;!m,se;n,re; come,'s",Reflexive:"true¦h4it5my5o1the0your2;ir1m1;ne3ur0;sel0;f,ves;er0im0;self",Plural:"true¦dick0gre0ones,records;ens","Unit|Noun":"true¦cEfDgChBinchAk9lb,m6newt5oz,p4qt,t1y0;ardEd;able1b0ea1sp;!l,sp;spo1;a,t,x;on9;!b,g,i1l,m,p0;h,s;!les;!b,elvin,g,m;!es;g,z;al,b;eet,oot,t;m,up0;!s",Value:"true¦a few",Imperative:"true¦bewa0come he0;re","Plural|Verb":"true¦leaves",Demonym:"true¦0:15;1:12;a0Vb0Oc0Dd0Ce08f07g04h02iYjVkTlPmLnIomHpEqatari,rCs7t5u4v3welAz2;am0Gimbabwe0;enezuel0ietnam0I;gAkrai1;aiwTex0hai,rinida0Ju2;ni0Prkmen;a5cotti4e3ingapoOlovak,oma0Spaniard,udRw2y0W;ede,iss;negal0Cr09;sh;mo0uT;o5us0Jw2;and0;a2eru0Fhilippi0Nortugu07uerto r0S;kist3lesti1na2raguay0;ma1;ani;ami00i2orweP;caragu0geri2;an,en;a3ex0Lo2;ngo0Drocc0;cedo1la2;gasy,y07;a4eb9i2;b2thua1;e0Cy0;o,t01;azakh,eny0o2uwaiI;re0;a2orda1;ma0Ap2;anO;celandic,nd4r2sraeli,ta01vo05;a2iB;ni0qi;i0oneU;aiAin2ondur0unO;di;amEe2hanai0reek,uatemal0;or2rm0;gi0;ilipino,ren8;cuadoVgyp4mira3ngli2sto1thiopi0urope0;shm0;ti;ti0;aPominUut3;a9h6o4roat3ub0ze2;ch;!i0;lom2ngol5;bi0;a6i2;le0n2;ese;lifor1m2na3;bo2eroo1;di0;angladeshi,el6o4r3ul2;gaE;azi9it;li2s1;vi0;aru2gi0;si0;fAl7merBngol0r5si0us2;sie,tr2;a2i0;li0;genti2me1;ne;ba1ge2;ri0;ni0;gh0r2;ic0;an",Organization:"true¦0:4Q;a3Tb3Bc2Od2He2Df27g1Zh1Ti1Pj1Nk1Ll1Gm12n0Po0Mp0Cqu0Br02sTtHuCv9w3xiaomi,y1;amaha,m1Bou1w1B;gov,tu3C;a4e2iki1orld trade organizati33;leaRped0O;lls fargo,st1;fie2Hinghou2R;l1rner br3U;gree3Jl street journ2Im1E;an halOeriz2Xisa,o1;dafo2Yl1;kswagMvo;b4kip,n2ps,s1;a tod3Aps;es3Mi1;lev3Fted natio3C;er,s; mobi32aco beRd bOe9gi frida3Lh3im horto3Amz,o1witt3D;shi49y1;ota,s r 05;e 1in lizzy;b3carpen3Jdaily ma3Dguess w2holli0s1w2;mashing pumpki35uprem0;ho;ea1lack eyed pe3Xyr0Q;ch bo3Dtl0;l2n3Qs1xas instrumen1U;co,la m1F;efoni0Kus;a8cientology,e5ieme2Ymirnoff,np,o3pice gir6quare0Ata1ubaru;rbuc1to34;ks;ny,undgard1;en;a2x pisto1;ls;g1Wrs;few2Minsbur31lesfor03msu2E;adiohead,b8e4o1yana3C;man empi1Xyal 1;b1dutch she4;ank;a3d 1max,vl20;bu1c2Ahot chili peppe2Ylobst2N;ll;ders dige1Ll madrid;c,s;ant3Aizn2Q;a8bs,e5fiz2Ihilip4i3r1;emier 1udenti1D;leagTo2K;nk floyd,zza hut; morrBs;psi2tro1uge0E;br33chi0Tn33;!co;lant2Un1yp16; 2ason27da2P;ld navy,pec,range juli2xf1;am;us;aAb9e6fl,h5i4o1sa,vid3wa;k2tre dame,vart1;is;ia;ke,ntendo,ss0QvZ;l,s;c,st1Otflix,w1; 1sweek;kids on the block,york0D;a,c;nd22s2t1;ional aca2Po,we0U;a,c02d0S;aDcdonalCe9i6lb,o3tv,y1;spa1;ce;b1Tnsanto,ody blu0t1;ley cr1or0T;ue;c2t1;as,subisO;helin,rosoft;dica2rcedes benz,talli1;ca;id,re;ds;cs milk,tt19z24;a3e1g,ittle caesa1P; ore09novo,x1;is,mark,us; 1bour party;pres0Dz boy;atv,fc,kk,lm,m1od1O;art;iffy lu0Roy divisi0Jpmorgan1sa;! cha09;bm,hop,k3n1tv;g,te1;l,rpol;ea;a5ewlett pack1Vi3o1sbc,yundai;me dep1n1P;ot;tac1zbollah;hi;lliburt08sbro;eneral 6hq,ithub,l5mb,o2reen d0Ou1;cci,ns n ros0;ldman sachs,o1;dye1g0H;ar;axo smith kli04encoW;electr0Nm1;oto0Z;a5bi,c barcelo4da,edex,i2leetwood m03o1rito l0G;rd,xcY;at,fa,nancial1restoZ; tim0;na;cebook,nnie mae;b0Asa,u3xxon1; m1m1;ob0J;!rosceptics;aiml0De5isney,o4u1;nkin donu2po0Zran dur1;an;ts;j,w jon0;a,f lepp12ll,peche mode,r spieg02stiny's chi1;ld;aJbc,hFiDloudflaCnn,o3r1;aigsli5eedence clearwater reviv1ossra09;al;c7inba6l4m1o0Est09;ca2p1;aq;st;dplSg1;ate;se;a c1o chanQ;ola;re;a,sco1tigroup;! systems;ev2i1;ck fil a,na daily;r1y;on;d2pital o1rls jr;ne;bury,ill1;ac;aEbc,eBf9l5mw,ni,o1p,rexiteeU;ei3mbardiIston 1;glo1pizza;be;ng;o2ue c1;roV;ckbuster video,omingda1;le; g1g1;oodriL;cht2e ge0rkshire hathaw1;ay;el;cardi,idu,nana republ3s1xt5y5;f,kin robbi1;ns;ic;bYcTdidSerosmith,iRlKmEnheuser busDol,ppleAr6s4u3v2y1;er;is,on;di,todesk;hland o1sociated E;il;b3g2m1;co;os;ys; compu1be0;te1;rs;ch;c,d,erican3t1;!r1;ak; ex1;pre1;ss; 5catel2ta1;ir;! lu1;ce1;nt;jazeera,qae1;da;g,rbnb;as;/dc,a3er,tivision1;! blizz1;ard;demy of scienc0;es;ba",Possessive:"true¦its,my,our0thy;!s","Noun|Verb":"true¦0:9W;1:AA;2:96;3:A3;4:9R;5:A2;6:9K;7:8N;8:7L;9:A8;A:93;B:8D;C:8X;a9Ob8Qc7Id6Re6Gf5Sg5Hh55i4Xj4Uk4Rl4Em40n3Vo3Sp2Squ2Rr21s0Jt02u00vVwGyFzD;ip,oD;ne,om;awn,e6Fie68;aOeMhJiHoErD;ap,e9Oink2;nd0rDuC;kDry,sh5Hth;!shop;ck,nDpe,re,sh;!d,g;e86iD;p,sD;k,p0t2;aDed,lco8W;r,th0;it,lk,rEsDt4ve,x;h,te;!ehou1ra9;aGen5FiFoD;iDmAte,w;ce,d;be,ew,sA;cuum,l4B;pDr7;da5gra6Elo6A;aReQhrPiOoMrGuEwiDy5Z;n,st;nDrn;e,n7O;aGeFiEoDu6;t,ub2;bu5ck4Jgg0m,p;at,k,nd;ck,de,in,nsDp,v7J;f0i8R;ll,ne,p,r4Yss,t94uD;ch,r;ck,de,e,le,me,p,re;e5Wow,u6;ar,e,ll,mp0st,xt;g,lDng2rg7Ps5x;k,ly;a0Sc0Ne0Kh0Fi0Dk0Cl0Am08n06o05pXquaBtKuFwD;ea88iD;ng,pe,t4;bGit,m,ppErD;fa3ge,pri1v2U;lDo6S;e6Py;!je8;aMeLiKoHrEuDy2;dy,ff,mb2;a85eEiDo5Pugg2;ke,ng;am,ss,t4;ckEop,p,rD;e,m;ing,pi2;ck,nk,t4;er,m,p;ck,ff,ge,in,ke,lEmp,nd,p2rDte,y;!e,t;k,l;aJeIiHlGoFrDur,y;ay,e56inDu3;g,k2;ns8Bt;a5Qit;ll,n,r87te;ed,ll;m,n,rk;b,uC;aDee1Tow;ke,p;a5Je4FiDo53;le,rk;eep,iDou4;ce,p,t;ateboa7Ii;de,gnDl2Vnk,p,ze;!al;aGeFiEoDuff2;ck,p,re,w;ft,p,v0;d,i3Ylt0;ck,de,pe,re,ve;aEed,nDrv1It;se,t2N;l,r4t;aGhedu2oBrD;aEeDibb2o3Z;en,w;pe,t4;le,n,r2M;cDfegua72il,mp2;k,rifi3;aZeHhy6LiGoEuD;b,in,le,n,s5X;a6ck,ll,oDpe,u5;f,t;de,ng,ot,p,s1W;aTcSdo,el,fQgPje8lOmMnLo17pJque6sFturn,vDwa6V;eDi27;al,r1;er74oFpe8tEuD;lt,me;!a55;l71rt;air,eaDly,o53;l,t;dezvo2Zt;aDedy;ke,rk;ea1i4G;a6Iist0r5N;act6Yer1Vo71uD;nd,se;a38o6F;ch,s6G;c1Dge,iEke,lly,nDp1Wt1W;ge,k,t;n,se;es6Biv0;a04e00hYiXlToNrEsy4uD;mp,n4rcha1sh;aKeIiHoDu4O;be,ceFdu3fi2grDje8mi1p,te6;amDe6W;!me;ed,ss;ce,de,nt;sDy;er6Cs;cti3i1;iHlFoEp,re,sDuCw0;e,i5Yt;l,p;iDl;ce,sh;nt,s5V;aEce,e32uD;g,mp,n7;ce,nDy;!t;ck,le,n17pe,tNvot;a1oD;ne,tograph;ak,eFnErDt;fu55mA;!c32;!l,r;ckJiInHrFsEtDu1y;ch,e9;s,te;k,tD;!y;!ic;nt,r,se;!a7;bje8ff0il,oErDutli3Qver4B;bAd0ie9;ze;a4ReFoDur1;d,tD;e,i3;ed,gle8tD;!work;aMeKiIoEuD;rd0;ck,d3Rld,nEp,uDve;nt,th;it5EkD;ey;lk,n4Brr5CsDx;s,ta2B;asuBn4UrDss;ge,it;il,nFp,rk3WsEtD;ch,t0;h,k,t0;da5n0oeuvB;aLeJiHoEuD;mp,st;aEbby,ck,g,oDve;k,t;d,n;cDe,ft,mAnIst;en1k;aDc0Pe4vK;ch,d,k,p,se;bFcEnd,p,t4uD;gh,n4;e,k;el,o2U;eEiDno4E;ck,d,ll,ss;el,y;aEo1OuD;i3mp;m,zz;mpJnEr46ssD;ue;c1Rdex,fluGha2k,se2HteDvoi3;nt,rD;e6fa3viD;ew;en3;a8le2A;aJeHiGoEuD;g,nt;l3Ano2Dok,pDr1u1;!e;ghli1Fke,nt,re,t;aDd7lp;d,t;ck,mGndFrEsh,tDu9;ch,e;bo3Xm,ne4Eve6;!le;!m0;aMear,ift,lKossJrFuD;arDe4Alp,n;antee,d;aFiEoDumb2;uCwth;ll,nd,p;de,sp;ip;aBoDue;ss,w;g,in,me,ng,s,te,ze;aZeWiRlNoJrFuD;ck,el,nDss,zz;c38d;aEoDy;st,wn;cDgme,me,nchi1;tuB;cFg,il,ld,rD;ce,e29mDwa31;!at;us;aFe0Vip,oDy;at,ck,od,wD;!er;g,ke,me,re,sh,vo1E;eGgFlEnDre,sh,t,x;an3i0Q;e,m,t0;ht,uB;ld;aEeDn3;d,l;r,tuB;ce,il,ll,rm,vo2W;cho,d7ffe8nMsKxFyeD;!baD;ll;cGerci1hFpDtra8;eriDo0W;en3me9;au6ibA;el,han7u1;caDtima5;pe;count0d,vy;a01eSiMoJrEuDye;b,el,mp,pli2X;aGeFiEoD;ne,p;ft,ll,nk,p,ve;am,ss;ft,g,in;cEd7ubt,wnloD;ad;k,u0E;ge6p,sFt4vD;e,iDor3;de;char7gui1h,liEpD;at4lay,u5;ke;al,bKcJfeIlGmaCposAsEtaD;il;e07iD;gn,re;ay,ega5iD;ght;at,ct;li04rea1;a5ut;b,ma7n3rDte;e,t;a0Eent0Dh06irc2l03oKrFuD;be,e,rDt;b,e,l,ve;aGeFoEuDy;sh;p,ss,wd;dAep;ck,ft,sh;at,de,in,lTmMnFordina5py,re,st,uDv0;gh,nDp2rt;s01t;ceHdu8fli8glomeIsFtDveN;a8rD;a6ol;e9tru8;ct;ntDrn;ra5;bHfoGmFpD;leDouCromi1;me9;aCe9it,u5;rt;at,iD;ne;lap1oD;r,ur;aEiDoud,ub;ck,p;im,w;aEeDip;at,ck,er;iGllen7nErD;ge,m,t;ge,nD;el;n,r;er,re;ke,ll,mp,noe,pGrXsFtEuDve;se,ti0I;alog,ch;h,t;!tuB;re;a03eZiXlToPrHuEyD;pa11;bb2ck2dgEff0mp,rDst,zz;den,n;et;anJeHiFoadEuD;i1sh;ca6;be,d7;ge;aDed;ch,k;ch,d;aFg,mb,nEoDrd0tt2x,ycott;k,st,t;d,e;rd,st;aFeCiDoYur;nk,tz;nd;me;as,d,ke,nd,opsy,tD;!ch,e;aFef,lt,nDt;d,efA;it;r,t;ck,il,lan3nIrFsEtt2;le;e,h;!gDk;aDe;in;!d,g,k;bu1c05dZge,iYlVnTppQrLsIttGucEwaD;rd;tiD;on;aDempt;ck;k,sD;i6ocia5;st;chFmD;!oD;ur;!iD;ve;eEroa4;ch;al;chDg0sw0;or;aEt0;er;rm;d,m,r;dreHvD;an3oD;ca5;te;ce;ss;cDe,he,t;eFoD;rd,u9;nt;nt,ss;se",Actor:"true¦0:7B;1:7G;2:6A;3:7F;4:7O;5:7K;a6Nb62c4Ud4Be41f3Sg3Bh30i2Uj2Qkin2Pl2Km26n1Zo1Sp0Vqu0Tr0JsQtJuHvEw8yo6;gi,ut6;h,ub0;aAe9i8o7r6;estl0it0;m2rk0;fe,nn0t2Bza2H;atherm2ld0;ge earn0it0nder0rri1;eter7i6oyF;ll5Qp,s3Z;an,ina2U;n6s0;c6Uder03;aoisea23e9herapi5iktok0o8r6ut1yco6S;a6endseLo43;d0mp,nscri0Bvel0;ddl0u1G;a0Qchn7en6na4st0;ag0;i3Oo0D;aiXcUeRhPiMki0mu26oJpGquaFtBu7wee6;p0theart;lt2per7r6;f0ge6Iviv1;h6inten0Ist5Ivis1;ero,um2;a8ep7r6;ang0eam0;bro2Nc2Ofa2Nmo2Nsi20;ff0tesm2;tt0;ec7ir2Do6;kesp59u0M;ia5Jt3;l7me6An,rcere6ul;r,ss;di0oi5;n7s6;sy,t0;g0n0;am2ephe1Iow6;girl,m2r2Q;cretInior cit3Fr6;gea4v6;a4it1;hol4Xi7reen6ulpt1;wr2C;e01on;l1nt;aEe9o8u6;l0nn6;er up,ingE;g40le mod3Zof0;a4Zc8fug2Ppo32searQv6;ere4Uolution6;ary;e6luYru22;ptio3T;bbi,dic5Vpp0;arter6e2Z;back;aYeWhSiRlOoKr8sycho7u6;nk,p31;logi5;aGeDiBo6;d9fess1g7ph47s6;pe2Ktitu51;en6ramm0;it1y;igy,uc0;est4Nme mini0Unce6s3E;!ss;a7si6;de4;ch0;ctiti39nk0P;dca0Oet,li6pula50rnst42;c2Itic6;al scie6i2;nti5;a6umb0;nn0y6;er,ma4Lwright;lgrim,one0;a8iloso7otogra7ra6ysi1V;se;ph0;ntom,rmaci5;r6ssi1T;form0s4O;i3El,nel3Yr8st1tr6wn;i6on;arWot;ent4Wi42tn0;ccupa4ffBp8r7ut6;ca5l0B;ac4Iganiz0ig2Fph2;er3t6;i1Jomet6;ri5;ic0spring;aBe9ie4Xo7u6;n,rser3J;b6mad,vi4V;le2Vo4D;i6mesis,phew;ce,ghb1;nny,rr3t1X;aEeDiAo7u6yst1Y;m8si16;der3gul,m7n6th0;arDk;!my;ni7s6;f02s0Jt0;on,st0;chan1Qnt1rcha4;gi9k0n8rtyr,t6y1;e,riar6;ch;ag0iac;ci2stra3I;a7e2Aieutena4o6;rd,s0v0;bor0d7ndlo6ss,urea3Fwy0ym2;rd;!y;!s28;e8o7u6;ggl0;gg0urna2U;st0;c3Hdol,llu3Ummigra4n6; l9c1Qfa4habi42nov3s7ve6;nt1stig3;pe0Nt6;a1Fig3ru0M;aw;airFeBistoAo8u6ygie1K;man6sba2H;!ita8;bo,st6usekN;age,e3P;ri2;ir,r6;m7o6;!ine;it;dress0sty2C;aLeIhostGirl26ladi3oCrand7u6;e5ru;c9daug0Jfa8m7pa6s2Y;!re4;a,o6;th0;hi1B;al7d6lf0;!de3A;ie,k6te26;eep0;!wr6;it0;isha,n6;i6tl04;us;mbl0rden0;aDella,iAo7r6;eela2Nie1P;e,re6ster pare4;be1Hm2r6st0;unn0;an2ZgZlmm17nanci0r6tt0;e6st la2H; marsh2OfigXm2;rm0th0;conoEdDlectriCm8n7x6;amin0cellency,i2A;emy,trepreneur,vironmenta1J;c8p6;er1loye6;e,r;ee;ci2;it1;mi5;aKeBi8ork,ri7u6we02;de,tche2H;ft0v0;ct3eti7plom2Hre6va;ct1;ci2ti2;aDcor3fencCi0InAput9s7tectLvel6;op0;ce1Ge6ign0;rt0;ee,y;iz6;en;em2;c1Ml0;d8nc0redev7ug6;ht0;il;!dy;a06e04fo,hXitizenWlToBr9u6;r3stomer6;! representat6;ive;e3it6;ic;lJmGnAord9rpor1Nu7w6;boy,ork0;n6ri0;ciTte1Q;in3;fidantAgressSs9t6;e0Kr6;ibut1o6;ll0;tab13ul1O;!e;edi2m6pos0rade;a0EeQissi6;on0;leag8on7um6;ni5;el;ue;e6own;an0r6;ic,k;!s;a9e7i6um;ld;erle6f;ad0;ir7nce6plFract0;ll1;m2wI;lebri6o;ty;dBptAr6shi0;e7pe6;nt0;r,t6;ak0;ain;et;aMeLiJlogg0oErBu6;dd0Fild0rgl9siness6;m2p7w6;om2;ers05;ar;i7o6;!k0th0;cklay0de,gadi0;hemi2oge8y6;!frie6;nd;ym2;an;cyc6sR;li5;atbox0ings;by,nk0r6;b0on7te6;nd0;!e07;c04dWge4nQpLrHsFtAu7yatull6;ah;nt7t6;h1oG;!ie;h8t6;e6orney;nda4;ie5le6;te;sis00tron6;aut,om0;chbis8isto7tis6;an,t;crU;hop;ost9p6;ari6rentiS;ti6;on;le;a9cest1im3nou8y6;bo6;dy;nc0;ly5rc6;hi5;mi8v6;entur0is1;er;ni7r6;al;str3;at1;or;counBquaintanArob9t6;ivi5or,re6;ss;st;at;ce;ta4;nt","Adj|Noun":"true¦0:16;a1Db17c0Ud0Re0Mf0Dg0Ah08i06ju05l02mWnUoSpNrIsBt7u4v1watershed;a1ision0Z;gabo4nilla,ria1;b0Vnt;ndergr1pstairs;adua14ou1;nd;a3e1oken,ri0;en,r1;min0rori13;boo,n;age,e5ilv0Flack,o3quat,ta2u1well;bordina0Xper5;b0Lndard;ciali0Yl1vereign;e,ve16;cret,n1ri0;ior;a4e2ou1ubbiL;nd,tiY;ar,bBl0Wnt0p1side11;resent0Vublican;ci0Qsh;a4eriodic0last0Zotenti0r1;emi2incip0o1;!fession0;er,um;rall4st,tie0U;ff1pposi0Hv0;ens0Oi0C;agg01ov1uts;el;a5e3iniatJo1;bi01der07r1;al,t0;di1tr0N;an,um;le,riG;attOi2u1;sh;ber0ght,qC;stice,veniT;de0mpressioYn1;cumbe0Edividu0no0Dsta0Eterim;alf,o1umdrum;bby,melF;en2old,ra1;ph0Bve;er0ious;a7e5i4l3u1;git03t1;ure;uid;ne;llow,m1;aFiL;ir,t,vo1;riOuriO;l3p00x1;c1ecutUpeV;ess;d1iK;er;ar2e1;mographUrivO;k,l2;hiGlassSo2rude,unn1;ing;m5n1operK;creCstitueOte2vertab1;le;mpor1nt;ary;ic,m2p1;anion,lex;er2u1;ni8;ci0;al;e5lank,o4r1;i2u1;te;ef;ttom,urgeois;st;cadem9d6l2ntarct9r1;ab,ct8;e3tern1;at1;ive;rt;oles1ult;ce1;nt;ic","Adj|Past":"true¦0:4Q;1:4C;2:4H;3:4E;a44b3Tc36d2Je29f20g1Wh1Si1Jj1Gkno1Fl1Am15n12o0Xp0Mqu0Kr08sLtEuAv9w4yellow0;a7ea6o4rinkl0;r4u3Y;n,ri0;k31th3;rp0sh0tZ;ari0e1O;n5p4s0;d1li1Rset;cov3derstood,i4;fi0t0;a8e3Rhr7i6ouTr4urn0wi4C;a4imm0ou2G;ck0in0pp0;ed,r0;eat2Qi37;m0nn0r4;get0ni2T;aOcKeIhGimFm0Hoak0pDt7u4;bsid3Ogge44s4;pe4ta2Y;ct0nd0;a8e7i2Eok0r5u4;ff0mp0nn0;ength2Hip4;ed,p0;am0reotyp0;in0t0;eci4ik0oH;al3Efi0;pRul1;a4ock0ut;d0r0;a4c1Jle2t31;l0s3Ut0;a6or5r4;at4e25;ch0;r0tt3;t4ut0;is2Mur1;aEe5o4;tt0;cAdJf2Bg9je2l8m0Knew0p7qu6s4;eTpe2t4;or0ri2;e3Dir0;e1lac0;at0e2Q;i0Rul1;eiv0o4ycl0;mme2Lrd0v3;in0lli0ti2A;a4ot0;li28;aCer30iBlAo9r5u4;mp0zzl0;e6i2Oo4;ce2Fd4lo1Anou30pos0te2v0;uc0;fe1CocCp0Iss0;i2Kli1L;ann0e2CuS;ck0erc0ss0;ck0i2Hr4st0;allLk0;bse7c6pp13rgan2Dver4;lo4whelm0;ok0;cupi0;rv0;aJe5o4;t0uri1A;ed0gle2;a6e5ix0o4ut0ys1N;di1Nt15u26;as0Clt0;n4rk0;ag0ufact0A;e6i5o4;ad0ck0st,v0;cens0m04st0;ft,v4;el0;tt0wn;a5o15u4;dg0s1B;gg0;llumSmpAn4sol1;br0cre1Ldebt0f8jZspir0t5v4;it0olv0;e4ox0Y;gr1n4re23;d0si15;e2l1o1Wuri1;li0o01r4;ov0;a6e1o4um03;ok0r4;ri0Z;mm3rm0;i6r5u4;a1Bid0;a0Ui0Rown;ft0;aAe9i8l6oc0Ir4;a4i0oz0Y;ctHg19m0;avo0Ju4;st3;ni08tt0x0;ar0;d0il0sc4;in1;dCl1mBn9quipp0s8x4;agger1c6p4te0T;a0Se4os0;ct0rie1D;it0;cap0tabliZ;cha0XgFha1As4;ur0;a0Zbarra0N;i0Buc1;aMeDi5r4;a01i0;gni08miniSre2s4;a9c6grun0Ft4;o4re0Hu17;rt0;iplWou4;nt0r4;ag0;bl0;cBdRf9l8p7ra6t5v4;elop0ot0;ail0ermQ;ng0;re07;ay0ight0;e4in0o0M;rr0;ay0enTor1;m5t0z4;ed,zl0;ag0p4;en0;aPeLhIlHo9r6u4;lt4r0stom03;iv1;a5owd0u4;sh0;ck0mp0;d0loAm7n4ok0v3;centr1f5s4troC;id3olid1;us0;b5pl4;ic1;in0;r0ur0;assi9os0utt3;ar5i4;ll0;g0m0;lebr1n6r4;ti4;fi0;tralJ;g0lcul1;aDewild3iCl9o7r5urn4;ed,t;ok4uis0;en;il0r0t4und;tl0;e5i4;nd0;ss0;as0;ffl0k0laMs0tt3;bPcNdKfIg0lFmaz0nDppBrm0ss9u5wa4;rd0;g5thor4;iz0;me4;nt0;o6u4;m0r0;li0re4;ci1;im1ticip1;at0;a5leg0t3;er0;rm0;fe2;ct0;ju5o7va4;nc0;st0;ce4knowledg0;pt0;and5so4;rb0;on0;ed",Singular:"true¦0:5J;1:5H;2:4W;3:4S;4:52;5:57;6:5L;7:56;8:5B;a52b4Lc3Nd35e2Xf2Og2Jh28in24j23k22l1Um1Ln1Ho1Bp0Rqu0Qr0FsZtMuHvCw9x r58yo yo;a9ha3Po3Q;f3i4Rt0Gy9;! arou39;arCeAideo ga2Qo9;cabu4Jl5C;gOr9t;di4Zt1Y;iety,ni4P;nBp30rAs 9;do43s5E;bani1in0;coordinat3Ader9;estima1to24we41; rex,aKeJhHiFoErBuAv9;! show;m2On2rntLto1D;agedy,ib9o4E;e,u9;n0ta46;ni1p2rq3L;c,er,m9;etF;ing9ree26;!y;am,mp3F;ct2le6x return;aNcMeKhor4QiJkHoGpin off,tDuBy9;ll9ner7st4T;ab2X;b9i1n28per bowl,rro1X;st3Ltot0;atAipe2Go1Lrate7udent9;! lo0I;i39u1;ft ser4Lmeo1I;elet5i9;ll,r3V;b38gn2Tte;ab2Jc9min3B;t,urity gua2N;e6ho2Y;bbatic0la3Jndwi0Qpi5;av5eDhetor2iAo9;de6om,w;tAv9;erb2C;e,u0;bDcBf9publ2r10spi1;er9orm3;e6r0;i9ord label;p2Ht0;a1u46;estion mark,ot2F;aPeMhoLiIlGoErAu9yram1F;ddi3HpErpo1Js3J;eBo9;bl3Zs9;pe3Jta1;dic1Rmi1Fp1Qroga8ss relea1F;p9rt0;py;a9ebisci1;q2Dte;cn2eAg9;!gy;!r;ne call,tocoK;anut,dAr9t0yo1;cen3Jsp3K;al,est0;nop4rAt9;e,hog5;adi11i2V;atme0bj3FcBpia1rde0thers,utspok5ve9wn3;n,r9;ti0Pview;cuAe9;an;pi3;arBitAot9umb3;a2Fhi2R;e,ra1;cot2ra8;aFeCiAo9ur0;nopo4p18rni2Nsq1Rti36uld;c,li11n0As9tt5;chief,si34;dAnu,t9;al,i3;al,ic;gna1mm0nd15rsupi0te9yf4;ri0;aDegCiBu9;ddi1n9;ch;me,p09; Be0M;bor14y9; 9er;up;eyno1itt5;el4ourn0;cBdices,itia8ni25sAtel0Lvert9;eb1J;e28titu1;en8i2T;aIeEighDoAu9;man right,s22;me9rmoFsp1Ftb0K;! r9;un; scho0YriY;a9i1N;d9v5; start,pho9;ne;ndful,sh brown,v5ze;aBelat0Ilaci3r9ul4yp1S;an9enadi3id;a1Cd slam,ny;df4r9;l2ni1I;aGeti1HiFlu1oCrAun9;er0;ee market,i9onti3;ga1;l4ur9;so9;me;ePref4;br2mi4;conoFffi7gg,lecto0Rmbas1EnCpidem2s1Zth2venBxAyel9;id;ampZempl0Nte6;i19t;er7terp9;ri9;se;my;eLiEoBr9ump tru0U;agonf4i9;er,ve thru;cAg7i4or,ssi3wn9;side;to0EumenE;aEgniDnn3sAvide9;nd;conte6incen8p9tri11;osi9;ti0C;ta0H;le0X;athBcAf9ni0terre6;ault 05err0;al,im0;!b9;ed;aWeThMiLlJoDr9;edit caBuc9;ib9;le;rd;efficDke,lCmmuniqLnsApi3rr0t0Xus9yo1;in;erv9uI;ato02;ic,lQ;ie6;er7i9oth;e6n2;ty,vil wM;aDeqCick5ocoBr9;istmas car9ysanthemum;ol;la1;ue;ndeli3racteri9;st2;iAllEr9;e0tifica1;liZ;hi3nFpErCt9ucus;erpi9hedr0;ll9;ar;!bohyd9ri3;ra1;it0;aAe,nib0t9;on;l,ry;aMeLiop2leJoHrDu9;nny,r9tterf4;g9i0;la9;ry;eakAi9;ck;fa9throB;st;dy,ro9wl;ugh;mi9;sh;an,l4;nkiArri3;er;ng;cSdMlInFppeti1rDsBtt2utop9;sy;ic;ce6pe9;ct;r9sen0;ay;ecAoma4tiA;ly;do1;i5l9;er7y;gy;en; hominDjAvan9;tage;ec8;ti9;ve;em;cCeAqui9;tt0;ta1;te;iAru0;al;de6;nt","Person|Noun":"true¦a0Eb07c03dWeUfQgOhLjHkiGlFmCnBolive,p7r4s3trini06v1wa0;ng,rd,tts;an,enus,iol0;a,et;ky,onPumm09;ay,e1o0uby;bin,d,se;ed,x;a2e1o0;l,tt04;aLnJ;dYge,tR;at,orm;a0eloW;t0x,ya;!s;a9eo,iH;ng,tP;a2e1o0;lGy;an,w3;de,smi4y;a0erb,iOolBuntR;ll,z0;el;ail,e0iLuy;ne;a1ern,i0lo;elds,nn;ith,n0;ny;a0dEmir,ula,ve;rl;a4e3i1j,ol0;ly;ck,x0;ie;an,ja;i0wn;sy;am,h0liff,rystal;a0in,ristian;mbers,ri0;ty;a4e3i2o,r0ud;an0ook;dy;ll;nedict,rg;k0nks;er;l0rt;fredo,ma","Actor|Verb":"true¦aCb8c5doctor,engineAfool,g3host,judge,m2nerd,p1recruit,scout,ushAvolunteAwi0;mp,tneA;arent,ilot;an,ime;eek,oof,r0uide;adu8oom;ha1o0;ach,nscript,ok;mpion,uffeur;o2u0;lly,tch0;er;ss;ddi1ffili0rchite1;ate;ct",MaleName:"true¦0:H6;1:FZ;2:DS;3:GQ;4:CZ;5:FV;6:GM;7:FP;8:GW;9:ET;A:C2;B:GD;aF8bE1cCQdBMeASfA1g8Yh88i7Uj6Sk6Bl5Mm48n3So3Ip33qu31r26s1Et0Ru0Ov0CwTxSyHzC;aCor0;cChC1karia,nAT;!hDkC;!aF6;!ar7CeF5;aJevgenBSoEuC;en,rFVsCu3FvEF;if,uf;nDs6OusC;ouf,s6N;aCg;s,tC;an,h0;hli,nCrosE1ss09;is,nC;!iBU;avi2ho5;aPeNiDoCyaEL;jcieBJlfgang,odrFutR;lFnC;f8TsC;lCt1;ow;bGey,frEhe4QlC;aE5iCy;am,e,s;ed8iC;d,ed;eAur;i,ndeD2rn2sC;!l9t1;lDyC;l1ne;lDtC;!er;aCHy;aKernDAiFladDoC;jteB0lodymyr;!iC;mFQsDB;cFha0ktBZnceDrgCOvC;a0ek;!nC;t,zo;!e4StBV;lCnC7sily;!entC;in9J;ghE2lCm70nax,ri,sm0;riCyss87;ch,k;aWeRhNiLoGrEuDyC;!l2roEDs1;n6r6E;avD0eCist0oy,um0;ntCRvBKy;bFdAWmCny;!asDmCoharu;aFFie,y;!z;iA6y;mCt4;!my,othy;adEeoDia0SomC;!as;!dor91;!de4;dFrC;enBKrC;anBJeCy;ll,nBI;!dy;dgh,ha,iCnn2req,tsu5V;cDAka;aYcotWeThPiMlobod0oKpenc2tEurDvenAEyCzym1;ed,lvest2;aj,e9V;anFeDuC;!aA;fan17phEQvCwaA;e77ie;!islaCl9;v,w;lom1rBuC;leymaDHta;dDgmu9UlCm1yabonga;as,v8B;!dhart8Yn9;aEeClo75;lCrm0;d1t1;h9Jne,qu1Jun,wn,yne;aDbastiEDk2Yl5Mpp,rgCth,ymoCU;e1Dio;m4n;!tC;!ie,y;eDPlFmEnCq67tosCMul;dCj2UtiA5;e01ro;!iATkeB6mC4u5;!ik,vato9K;aZeUheC8iRoGuDyC;an,ou;b99dDf4peAssC;!elEG;ol00y;an,bLc7MdJel,geIh0lHmGnEry,sDyC;!ce;ar7Ocoe,s;!aCnBU;ld,n;an,eo;a7Ef;l7Jr;e3Eg2n9olfo,riC;go;bBNeDH;cCl9;ar87c86h54kCo;!ey,ie,y;cFeA3gDid,ubByCza;an8Ln06;g85iC;naC6s;ep;ch8Kfa5hHin2je8HlGmFndEoHpha5sDul,wi36yC;an,mo8O;h9Im4;alDSol3O;iD0on;f,ph;ul;e9CinC;cy,t1;aOeLhilJiFrCyoG;aDeC;m,st1;ka85v2O;eDoC;tr;r8GtC;er,ro;!ipCl6H;!p6U;dCLrcy,tC;ar,e9JrC;!o7;b9Udra8So9UscAHtri62ulCv8I;!ie,o7;ctav6Ji2lImHndrBRrGsDtCum6wB;is,to;aDc6k6m0vCwaBE;al79;ma;i,vR;ar,er;aDeksandr,ivC;er,i2;f,v;aNeLguyBiFoCu3O;aDel,j4l0ma0rC;beAm0;h,m;cFels,g5i9EkDlC;es,s;!au,h96l78olaC;!i,y;hCkCol76;ol75;al,d,il,ls1vC;ilAF;hom,tC;e,hC;anCy;!a5i5;aYeViLoGuDyC;l4Nr1;hamDr84staC;fa,p6E;ed,mG;di10e,hamEis4JntDritz,sCussa;es,he;e,y;ad,ed,mC;ad,ed;cGgu5hai,kFlEnDtchC;!e8O;a9Pik;house,o7t1;ae73eC3ha8Iolaj;ah,hDkC;!ey,y;aDeC;al,l;el,l;hDlv3rC;le,ri8Ev4T;di,met;ay0c00gn4hWjd,ks2NlTmadZnSrKsXtDuric7VxC;imilBKwe8B;eHhEi69tCus,y69;!eo,hCia7;ew,i67;eDiC;as,eu,s;us,w;j,o;cHiGkFlEqu8Qsha83tCv3;iCy;!m,n;in,on;el,o7us;a6Yo7us;!elCin,o7us;!l8o;frAEi5Zny,u5;achDcoCik;lm;ai,y;amDdi,e5VmC;oud;adCm6W;ou;aulCi9P;ay;aWeOiMloyd,oJuDyC;le,nd1;cFdEiDkCth2uk;a7e;gi,s,z;ov7Cv6Hw6H;!as,iC;a6Een;g0nn52renDuCvA4we7D;!iS;!zo;am,n4oC;n5r;a9Yevi,la5KnHoFst2thaEvC;eCi;nte;bo;nCpo8V;!a82el,id;!nC;aAy;mEnd1rDsz73urenCwr6K;ce,t;ry,s;ar,beAont;aOeIhalHiFla4onr63rDu5SylC;e,s;istCzysztof;i0oph2;er0ngsl9p,rC;ilA9k,ollos;ed,id;en0iGnDrmCv4Z;it;!dDnCt1;e2Ny;ri4Z;r,th;cp2j4mEna8BrDsp6them,uC;ri;im,l;al,il;a03eXiVoFuC;an,lCst3;en,iC;an,en,o,us;aQeOhKkub4AnIrGsDzC;ef;eDhCi9Wue;!ua;!f,ph;dCge;i,on;!aCny;h,s,th6J;anDnC;!ath6Hie,n72;!nC;!es;!l,sCy;ph;o,qu3;an,mC;!i,m6V;d,ffFns,rCs4;a7JemDmai7QoCry;me,ni1H;i9Dy;!e73rC;ey,y;cKdBkImHrEsDvi2yC;dBs1;on,p2;ed,oDrCv67;e6Qod;d,s61;al,es5Wis1;a,e,oCub;b,v;ob,qu13;aTbNchiMgLke53lija,nuKonut,rIsEtCv0;ai,suC;ki;aDha0i8XmaCsac;el,il;ac,iaC;h,s;a,vinCw3;!g;k,nngu6X;nac1Xor;ka;ai,rahC;im;aReLoIuCyd6;beAgGmFsC;eyDsC;a3e3;in,n;ber5W;h,o;m2raDsse3wC;a5Pie;c49t1K;a0Qct3XiGnDrC;beAman08;dr7VrC;iCy2N;!k,q1R;n0Tt3S;bKlJmza,nIo,rEsDyC;a5KdB;an,s0;lEo67r2IuCv9;hi5Hki,tC;a,o;an,ey;k,s;!im;ib;a08e00iUlenToQrMuCyorgy;iHnFsC;!taC;f,vC;!e,o;n6tC;er,h2;do,lC;herDlC;auCerQ;me;aEegCov2;!g,orC;!io,y;dy,h7C;dfr9nza3XrDttfC;ri6C;an,d47;!n;acoGlEno,oCuseppe;rgiCvan6O;!o,s;be6Ies,lC;es;mo;oFrC;aDha4HrCt;it,y;ld,rd8;ffErgC;!e7iCy;!os;!r9;bElBrCv3;eCla1Nr4Hth,y;th;e,rC;e3YielC;!i4;aXeSiQlOorrest,rCyod2E;aHedFiC;edDtC;s,z;ri18;!d42eri11riC;ck,k;nCs2;cEkC;ie,lC;in,yn;esLisC;!co,z3M;etch2oC;ri0yd;d5lConn;ip;deriFliEng,rC;dinaCg4nan0B;nd8;pe,x;co;bCdi,hd;iEriC;ce,zC;io;an,en,o;benez2dZfrYit0lTmMnJo3rFsteb0th0ugenEvCymBzra;an,eCge4D;ns,re3K;!e;gi,iDnCrol,v3w3;est8ie,st;cCk;!h,k;o0DriCzo;co,qC;ue;aHerGiDmC;aGe3A;lCrh0;!iC;a10o,s;s1y;nu5;beAd1iEliDm2t1viCwood;n,s;ot28s;!as,j5Hot,sC;ha;a3en;!dGg6mFoDua2QwC;a2Pin;arC;do;oZuZ;ie;a04eTiOmitrNoFrag0uEwDylC;an,l0;ay3Hig4D;a3Gdl9nc0st3;minFnDri0ugCvydGy2S;!lF;!a36nCov0;e1Eie,y;go,iDykC;as;cCk;!k;i,y;armuFetDll1mitri7neCon,rk;sh;er,m6riC;ch;id;andLepak,j0lbeAmetri4nIon,rGsEvDwCxt2;ay30ey;en,in;hawn,moC;nd;ek,riC;ck;is,nC;is,y;rt;re;an,le,mKnIrEvC;e,iC;!d;en,iEne0PrCyl;eCin,yl;l45n;n,o,us;!iCny;el,lo;iCon;an,en,on;a0Fe0Ch03iar0lRoJrFuDyrC;il,us;rtC;!is;aEistC;iaCob12;no;ig;dy,lInErC;ey,neliCy;s,us;nEor,rDstaC;nt3;ad;or;by,e,in,l3t1;aHeEiCyde;fCnt,ve;fo0Xt1;menDt4;us;s,t;rFuDyC;!t1;dCs;e,io;enC;ce;aHeGrisC;!toC;phCs;!eC;!r;st2t;d,rCs;b5leC;s,y;cDdrCs6;ic;il;lHmFrC;ey,lDroCy;ll;!o7t1;er1iC;lo;!eb,v3;a09eZiVjorn,laUoSrEuCyr1;ddy,rtKst2;er;aKeFiEuDyC;an,ce,on;ce,no;an,ce;nDtC;!t;dDtC;!on;an,on;dFnC;dDisC;lav;en,on;!foOl9y;bby,gd0rCyd;is;i0Lke;bElDshC;al;al,lL;ek;nIrCshoi;at,nEtC;!raC;m,nd;aDhaCie;rd;rd8;!iDjam3nCs1;ie,y;to;kaMlazs,nHrC;n9rDtC;!holomew;eCy;tt;ey;dCeD;ar,iC;le;ar1Nb1Dd16fon15gust3hm12i0Zja0Yl0Bm07nTputsiSrGsaFugustEveDyCziz;a0kh0;ry;o,us;hi;aMchiKiJjun,mHnEon,tCy0;em,hCie,ur8;ur;aDoC;!ld;ud,v;aCin;an,nd8;!el,ki;baCe;ld;ta;aq;aMdHgel8tCw6;hoFoC;iDnC;!i8y;ne;ny;er7rCy;eDzC;ej;!as,i,j,s,w;!s;s,tolC;iCy;!y;ar,iEmaCos;nu5r;el;ne,r,t;aVbSdBeJfHiGl01onFphonsEt1vC;aPin;on;e,o;so,zo;!sR;!onZrC;ed;c,jaHksFssaHxC;!andC;er,rC;e,os,u;andCei;ar,er,r;ndC;ro;en;eDrecC;ht;rt8;dd3in,n,sC;taC;ir;ni;dDm6;ar;an,en;ad,eC;d,t;in;so;aGi,olErDvC;ik;ian8;f8ph;!o;mCn;!a;dGeFraDuC;!bakr,lfazl;hCm;am;!l;allFel,oulaye,ulC;!lDrahm0;an;ah,o;ah;av,on",Uncountable:"true¦0:2E;1:2L;2:33;a2Ub2Lc29d22e1Rf1Ng1Eh16i11j0Yk0Wl0Rm0Hn0Do0Cp03rZsLt9uran2Jv7w3you gu0E;a5his17i4oo3;d,l;ldlife,ne;rm8t1;apor,ernacul29i3;neg28ol1Otae;eDhBiAo8r4un3yranny;a,gst1B;aff2Oea1Ko4ue nor3;th;o08u3;bleshoot2Ose1Tt;night,othpas1Vwn3;foEsfoE;me off,n;er3und1;e,mod2S;a,nnis;aDcCeBhAi9ki8o7p6t4u3weepstak0;g1Unshi2Hshi;ati08e3;am,el;ace2Keci0;ap,cc1meth2C;n,ttl0;lk;eep,ingl0or1C;lf,na1Gri0;ene1Kisso1C;d0Wfe2l4nd,t3;i0Iurn;m1Ut;abi0e4ic3;e,ke15;c3i01laxa11search;ogni10rea10;a9e8hys7luto,o5re3ut2;amble,mis0s3ten20;en1Zs0L;l3rk;i28l0EyH; 16i28;a24tr0F;nt3ti0M;i0s;bstetri24vercrowd1Qxyg09;a5e4owada3utella;ys;ptu1Ows;il poliZtional securi2;aAe8o5u3;m3s1H;ps;n3o1K;ey,o3;gamy;a3cha0Elancholy,rchandi1Htallurgy;sl0t;chine3g1Aj1Hrs,thema1Q; learn1Cry;aught1e6i5ogi4u3;ck,g12;c,s1M;ce,ghtn18nguis1LteratWv1;ath1isVss;ara0EindergartPn3;icke0Aowled0Y;e3upit1;a3llyfiGwel0G;ns;ce,gnor6mp5n3;forma00ter3;net,sta07;atiSort3rov;an18;a7e6isto09o3ung1;ckey,mework,ne4o3rseradi8spitali2use arrest;ky;s2y;adquarteXre;ir,libut,ppiHs3;hi3te;sh;ene8l6o5r3um,ymnas11;a3eZ;niUss;lf,re;ut3yce0F;en; 3ti0W;edit0Hpo3;ol;aNicFlour,o4urnit3;ure;od,rgive3uri1wl;ness;arCcono0LducaBlectr9n7quip8thi0Pvery6x3;ist4per3;ti0B;en0J;body,o08th07;joy3tertain3;ment;ici2o3;ni0H;tiS;nings,th;emi02i6o4raugh3ynas2;ts;pe,wnstai3;rs;abet0ce,s3;honZrepu3;te;aDelciChAivi07l8o3urrency;al,ld w6mmenta5n3ral,ttIuscoB;fusiHt 3;ed;ry;ar;assi01oth0;es;aos,e3;eMwK;us;d,rO;a8i6lood,owlHread5u3;ntGtt1;er;!th;lliarJs3;on;g3ss;ga3;ge;cKdviJeroGirFmBn6ppeal court,r4spi3thleL;rin;ithmet3sen3;ic;i6y3;o4th3;ing;ne;se;en5n3;es2;ty;ds;craft;bi8d3nau7;yna3;mi6;ce;id,ous3;ti3;cs",Infinitive:"true¦0:9G;1:9T;2:AD;3:90;4:9Z;5:84;6:AH;7:A9;8:92;9:A0;A:AG;B:AI;C:9V;D:8R;E:8O;F:97;G:6H;H:7D;a94b8Hc7Jd68e4Zf4Mg4Gh4Ai3Qj3Nk3Kl3Bm34nou48o2Vp2Equ2Dr1Es0CtZuTvRwI;aOeNiLors5rI;eJiI;ng,te;ak,st3;d5e8TthI;draw,er;a2d,ep;i2ke,nIrn;d1t;aIie;liADniAry;nJpI;ho8Llift;cov1dJear8Hfound8DlIplug,rav82tie,ve94;eaAo3X;erIo;cut,go,staAFvalA3w2G;aSeQhNoMrIu73;aIe72;ffi3Smp3nsI;aBfo7CpI;i8oD;pp3ugh5;aJiJrIwaD;eat5i2;nk;aImA0;ch,se;ck3ilor,keImp1r8L;! paD;a0Ic0He0Fh0Bi0Al08mugg3n07o05p02qu01tUuLwI;aJeeIim;p,t5;ll7Wy;bNccMffLggeCmmKppJrI;mouFpa6Zvi2;o0re6Y;ari0on;er,i4;e7Numb;li9KmJsiIveD;de,st;er9it;aMe8MiKrI;ang3eIi2;ng27w;fIng;f5le;b,gg1rI;t3ve;a4AiA;a4UeJit,l7DoI;il,of;ak,nd;lIot7Kw;icEve;atGeak,i0O;aIi6;m,y;ft,ng,t;aKi6CoJriIun;nk,v6Q;ot,rt5;ke,rp5tt1;eIll,nd,que8Gv1w;!k,m;aven9ul8W;dd5tis1Iy;a0FeKiJoI;am,t,ut;d,p5;a0Ab08c06d05f01group,hea00iZjoi4lXmWnVpTq3MsOtMup,vI;amp,eJiIo3B;sEve;l,rI;e,t;i8rI;ie2ofE;eLiKpo8PtIurfa4;o24rI;aHiBuctu8;de,gn,st;mb3nt;el,hra0lIreseF;a4e71;d1ew,o07;aHe3Fo2;a7eFiIo6Jy;e2nq41ve;mbur0nf38;r0t;inKleBocus,rJuI;el,rbiA;aBeA;an4e;aBu4;ei2k8Bla43oIyc3;gni39nci3up,v1;oot,uI;ff;ct,d,liIp;se,ze;tt3viA;aAenGit,o7;aWerUinpoiFlumm1LoTrLuI;b47ke,niArIt;poDsuI;aFe;eMoI;cKd,fe4XhibEmo7noJpo0sp1tru6vI;e,i6o5L;un4;la3Nu8;aGclu6dJf1occupy,sup0JvI;a6BeF;etermi4TiB;aGllu7rtr5Ksse4Q;cei2fo4NiAmea7plex,sIva6;eve8iCua6;mp1rItrol,ve;a6It6E;bOccuNmEpMutLverIwe;l07sJtu6Yu0wI;helm;ee,h1F;gr5Cnu2Cpa4;era7i4Ipo0;py,r;ey,seItaH;r2ss;aMe0ViJoIultiply;leCu6Pw;micJnIspla4;ce,g3us;!k;iIke,na9;m,ntaH;aPeLiIo0u3N;ke,ng1quIv5;eIi6S;fy;aKnIss5;d,gI;th5;rn,ve;ng2Gu1N;eep,idnJnI;e4Cow;ap;oHuI;gg3xtaI;po0;gno8mVnIrk;cTdRfQgeChPitia7ju8q1CsNtKun6EvI;a6eIo11;nt,rt,st;erJimi6BoxiPrI;odu4u6;aBn,pr03ru6C;iCpi8tIu8;all,il,ruB;abEibE;eCo3Eu0;iIul9;ca7;i7lu6;b5Xmer0pI;aLer4Uin9ly,oJrI;e3Ais6Bo2;rt,se,veI;riA;le,rt;aLeKiIoiCuD;de,jaInd1;ck;ar,iT;mp1ng,pp5raIve;ng5Mss;ath1et,iMle27oLrI;aJeIow;et;b,pp3ze;!ve5A;gg3ve;aTer45i5RlSorMrJuI;lf4Cndrai0r48;eJiIolic;ght5;e0Qsh5;b3XeLfeEgJsI;a3Dee;eIi2;!t;clo0go,shIwa4Z;ad3F;att1ee,i36;lt1st5;a0OdEl0Mm0FnXquip,rWsVtGvTxI;aRcPeDhOiNpJtIu6;ing0Yol;eKi8lIo0un9;aHoI;it,re;ct,di7l;st,t;a3oDu3B;e30lI;a10u6;lt,mi28;alua7oI;ke,l2;chew,pou0tab19;a0u4U;aYcVdTfSgQhan4joy,lPqOrNsuMtKvI;e0YisI;a9i50;er,i4rI;aHenGuC;e,re;iGol0F;ui8;ar9iC;a9eIra2ulf;nd1;or4;ang1oIu8;r0w;irc3lo0ou0ErJuI;mb1;oaGy4D;b3ct;bKer9pI;hasiIow1;ze;aKody,rI;a4oiI;d1l;lm,rk;ap0eBuI;ci40de;rIt;ma0Rn;a0Re04iKo,rIwind3;aw,ed9oI;wn;agno0e,ff1g,mi2Kne,sLvI;eIul9;rIst;ge,t;aWbVcQlod9mant3pNru3TsMtI;iIoDu37;lJngI;uiA;!l;ol2ua6;eJlIo0ro2;a4ea0;n0r0;a2Xe36lKoIu0S;uIv1;ra9;aIo0;im;a3Kur0;b3rm;af5b01cVduBep5fUliTmQnOpMrLsiCtaGvI;eIol2;lop;ch;a20i2;aDiBloIoD;re,y;oIy;te,un4;eJoI;liA;an;mEv1;a4i0Ao06raud,y;ei2iMla8oKrI;ee,yI;!pt;de,mIup3;missi34po0;de,ma7ph1;aJrief,uI;g,nk;rk;mp5rk5uF;a0Dea0h0Ai09l08oKrIurta1G;a2ea7ipp3uI;mb3;ales4e04habEinci6ll03m00nIrro6;cXdUfQju8no7qu1sLtKvI;eIin4;ne,r9y;aHin2Bribu7;er2iLoli2Epi8tJuI;lt,me;itu7raH;in;d1st;eKiJoIroFu0;rm;de,gu8rm;ss;eJoI;ne;mn,n0;eIlu6ur;al,i2;buCe,men4pI;eIi3ly;l,te;eBi6u6;r4xiC;ean0iT;rcumveFte;eJirp,oI;o0p;riAw;ncIre5t1ulk;el;a02eSi6lQoPrKuI;iXrIy;st,y;aLeaKiJoad5;en;ng;stfeLtX;ke;il,l11mba0WrrMth1;eIow;ed;!coQfrie1LgPhMliLqueaKstJtrIwild1;ay;ow;th;e2tt3;a2eJoI;ld;ad;!in,ui3;me;bysEckfi8ff3tI;he;b15c0Rd0Iff0Ggree,l0Cm09n03ppZrXsQttOuMvJwaE;it;eDoI;id;rt;gIto0X;meF;aIeCraB;ch,in;pi8sJtoI;niA;aKeIi04u8;mb3rt,ss;le;il;re;g0Hi0ou0rI;an9i2;eaKly,oiFrI;ai0o2;nt;r,se;aMi0GnJtI;icipa7;eJoIul;un4y;al;ly0;aJu0;se;lga08ze;iKlI;e9oIu6;t,w;gn;ix,oI;rd;a03jNmiKoJsoI;rb;pt,rn;niIt;st1;er;ouJuC;st;rn;cLhie2knowled9quiItiva7;es4re;ce;ge;eQliOoKrJusI;e,tom;ue;mIst;moJpI;any,liA;da7;ma7;te;pt;andPduBet,i6oKsI;coKol2;ve;liArt,uI;nd;sh;de;ct;on",Person:"true¦0:1Q;a29b1Zc1Md1Ee18f15g13h0Ri0Qj0Nk0Jl0Gm09n06o05p00rPsItCusain bolt,v9w4xzibit,y1;anni,oko on2uji,v1;an,es;en,o;a3ednesday adams,i2o1;lfram,o0Q;ll ferrell,z khalifa;lt disn1Qr1;hol,r0G;a2i1oltai06;n dies0Zrginia wo17;lentino rossi,n goG;a4h3i2ripp,u1yra banks;lZpac shakur;ger woods,mba07;eresa may,or;kashi,t1ylor;um,ya1B;a5carlett johanss0h4i3lobodan milosevic,no2ocr1Lpider1uperm0Fwami; m0Em0E;op dogg,w whi1H;egfried,nbad;akespeaTerlock holm1Sia labeouf;ddam hussa16nt1;a cla11ig9;aAe6i5o3u1za;mi,n dmc,paul,sh limbau1;gh;bin hood,d stew16nald1thko;in0Mo;han0Yngo starr,valdo;ese witherspo0i1mbrandt;ll2nh1;old;ey,y;chmaninoff,ffi,iJshid,y roma1H;a4e3i2la16o1uff daddy;cahont0Ie;lar,p19;le,rZ;lm17ris hilt0;leg,prah winfr0Sra;a2e1iles cra1Bostradam0J; yo,l5tt06wmQ;pole0s;a5e4i2o1ubar03;by,lie5net,rriss0N;randa ju1tt romn0M;ly;rl0GssiaB;cklemo1rkov,s0ta hari,ya angelou;re;ady gaga,e1ibera0Pu;bron jam0Xch wale1e;sa;anye west,e3i1obe bryant;d cudi,efer suther1;la0P;ats,sha;a2effers0fk,k rowling,rr tolki1;en;ck the ripp0Mwaharlal nehru,y z;liTnez,ron m7;a7e5i3u1;lk hog5mphrey1sa01;! bog05;l1tl0H;de; m1dwig,nry 4;an;ile selassFlle ber4m3rrison1;! 1;ford;id,mo09;ry;ast0iannis,o1;odwPtye;ergus0lorence nightinga08r1;an1ederic chopN;s,z;ff5m2nya,ustaXzeki1;el;eril lagasse,i1;le zatop1nem;ek;ie;a6e4i2octor w1rake;ho;ck w1ego maradoC;olf;g1mi lovaOnzel washingt0;as;l1nHrth vadR;ai lNt0;a8h5lint0o1thulhu;n1olio;an,fuci1;us;on;aucKop2ristian baMy1;na;in;millo,ptain beefhe4r1;dinal wols2son1;! palmF;ey;art;a8e5hatt,i3oHro1;ck,n1;te;ll g1ng crosby;atB;ck,nazir bhut2rtil,yon1;ce;to;nksy,rack ob1;ama;l 6r3shton kutch2vril lavig8yn ra1;nd;er;chimed2istot1;le;es;capo2paci1;no;ne",Adjective:"true¦0:AI;1:BS;2:BI;3:BA;4:A8;5:84;6:AV;7:AN;8:AF;9:7H;A:BQ;B:AY;C:BC;D:BH;E:9Y;aA2b9Ec8Fd7We79f6Ng6Eh61i4Xj4Wk4Tl4Im41n3Po36p2Oquart7Pr2Ds1Dt14uSvOwFye29;aMeKhIiHoF;man5oFrth7G;dADzy;despreB1n w97s86;acked1UoleF;!sa6;ather1PeFll o70ste1D;!k5;nt1Ist6Ate4;aHeGiFola5T;bBUce versa,gi3Lle;ng67rsa5R;ca1gBSluAV;lt0PnLpHrGsFttermoBL;ef9Ku3;b96ge1; Hb32pGsFtiAH;ca6ide d4R;er,i85;f52to da2;a0Fbeco0Hc0Bd04e02f01gu1XheaBGiXkn4OmUnTopp06pRrNsJtHus0wF;aFiel3K;nt0rra0P;app0eXoF;ld,uS;eHi37o5ApGuF;perv06spec39;e1ok9O;en,ttl0;eFu5;cogn06gul2RlGqu84sF;erv0olv0;at0en33;aFrecede0E;id,rallel0;am0otic0;aFet;rri0tF;ch0;nFq26vers3;sur0terFv7U;eFrupt0;st0;air,inish0orese98;mploy0n7Ov97xpF;ect0lain0;eHisFocume01ue;clFput0;os0;cid0rF;!a8Scov9ha8Jlyi8nea8Gprivileg0sMwF;aFei9I;t9y;hGircumcFonvin2U;is0;aFeck0;lleng0rt0;b20ppea85ssuGttend0uthorF;iz0;mi8;i4Ara;aLeIhoHip 25oGrF;anspare1encha1i2;geth9leADp notch,rpB;rny,ugh6H;ena8DmpGrFs6U;r49tia4;eCo8P;leFst4M;nt0;a0Dc09e07h06i04ki03l01mug,nobbi4XoVpRqueami4XtKuFymb94;bHccinAi generis,pFr5;erFre7N;! dup9b,vi70;du0li7Lp6IsFurb7J;eq9Atanda9X;aKeJi16o2QrGubboFy4Q;rn;aightFin5GungS; fFfF;or7V;adfa9Pri6;lwa6Ftu82;arHeGir6NlendBot Fry;on;c3Qe1S;k5se; call0lImb9phistic16rHuFviV;ndFth1B;proof;dBry;dFub6; o2A;e60ipF;pe4shod;ll0n d7R;g2HnF;ceEg6ist9;am3Se9;co1Zem5lfFn6Are7; suf4Xi43;aGholFient3A;ar5;rlFt4A;et;cr0me,tisfac7F;aOeIheumatoBiGoF;bu8Ztt7Gy3;ghtFv3; 1Sf6X;cJdu8PlInown0pro69sGtF;ard0;is47oF;lu2na1;e1Suc45;alcit8Xe1ondi2;bBci3mpa1;aSePicayu7laOoNrGuF;bl7Tnjabi;eKiIoF;b7VfGmi49pFxi2M;er,ort81;a7uD;maFor,sti7va2;!ry;ciDexis0Ima2CpaB;in55puli8G;cBid;ac2Ynt 3IrFti2;ma40tFv7W;!i3Z;i2YrFss7R;anoBtF; 5XiF;al,s5V;bSffQkPld OnMrLth9utKverF;!aIbMdHhGni75seas,t,wF;ei74rou74;a63e7A;ue;ll;do1Ger,si6A;d3Qg2Aotu5Z; bFbFe on o7g3Uli7;oa80;fashion0school;!ay; gua7XbFha5Uli7;eat;eHligGsF;ce7er0So1C;at0;diFse;a1e1;aOeNiMoGuF;anc0de; moEnHrthFt6V;!eFwe7L;a7Krn;chaGdescri7Iprof30sF;top;la1;ght5;arby,cessa4ighbor5wlyw0xt;k0usiaFv3;ti8;aQeNiLoHuF;dIltiF;facet0p6;deHlGnFot,rbBst;ochro4Xth5;dy;rn,st;ddle ag0nF;dbloZi,or;ag9diocEga,naGrFtropolit4Q;e,ry;ci8;cIgenta,inHj0Fkeshift,mmGnFri4Oscu61ver18;da5Dy;ali4Lo4U;!stream;abEho;aOeLiIoFumberi8;ngFuti1R;stan3RtF;erm,i4H;ghtGteraF;l,ry,te;heart0wei5O;ft JgFss9th3;al,eFi0M;nda4;nguBps0te5;apGind5noF;wi8;ut;ad0itte4uniW;ce co0Hgno6Mll0Cm04nHpso 2UrF;a2releF;va1; ZaYcoWdReQfOgrNhibi4Ri05nMoLsHtFvalu5M;aAeF;nDrdepe2K;a7iGolFuboI;ub6ve1;de,gF;nifica1;rdi5N;a2er;own;eriIiLluenVrF;ar0eq5H;pt,rt;eHiGoFul1O;or;e,reA;fiFpe26termi5E;ni2;mpFnsideCrreA;le2;ccuCdeq5Ene,ppr4J;fFsitu,vitro;ro1;mJpF;arHeGl15oFrop9;li2r11;n2LrfeA;ti3;aGeFi18;d4BnD;tuE;egGiF;c0YteC;al,iF;tiF;ma2;ld;aOelNiLoFuma7;a4meInHrrGsFur5;ti6;if4E;e58o3U; ma3GsF;ick;ghfalut2HspF;an49;li00pf33;i4llow0ndGrdFtM; 05coEworki8;sy,y;aLener44iga3Blob3oKrGuF;il1Nng ho;aFea1Fizzl0;cGtF;ef2Vis;ef2U;ld3Aod;iFuc2D;nf2R;aVeSiQlOoJrF;aGeFil5ug3;q43tf2O;gFnt3S;i6ra1;lk13oHrF; keeps,eFge0Vm9tu41;g0Ei2Ds3R;liF;sh;ag4Mowe4uF;e1or45;e4nF;al,i2;d Gmini7rF;ti6ve1;up;bl0lDmIr Fst pac0ux;oGreacF;hi8;ff;ed,ili0R;aXfVlTmQnOqu3rMthere3veryday,xF;aApIquisi2traHuF;be48lF;ta1;!va2L;edRlF;icF;it;eAstF;whi6; Famor0ough,tiE;rou2sui2;erGiF;ne1;ge1;dFe2Aoq34;er5;ficF;ie1;g9sF;t,ygF;oi8;er;aWeMiHoGrFue;ea4owY;ci6mina1ne,r31ti8ubQ;dact2Jfficult,m,sGverF;ge1se;creGePjoi1paCtF;a1inA;et,te; Nadp0WceMfiLgeneCliJmuEpeIreliAsGvoF;id,ut;pFtitu2ul1L;eCoF;nde1;ca2ghF;tf13;a1ni2;as0;facto;i5ngero0I;ar0Ce09h07i06l05oOrIuF;rmudgeon5stoma4teF;sy;ly;aIeHu1EystalF; cleFli7;ar;epy;fFv17z0;ty;erUgTloSmPnGrpoCunterclVveFy;rt;cLdJgr21jIsHtrF;aFi2;dic0Yry;eq1Yta1;oi1ug3;escenFuN;di8;a1QeFiD;it0;atoDmensuCpF;ass1SulF;so4;ni3ss3;e1niza1;ci1J;ockwiD;rcumspeAvil;eFintzy;e4wy;leGrtaF;in;ba2;diac,ef00;a00ePiLliJoGrFuck nak0;and new,isk,on22;gGldface,naF; fi05fi05;us;nd,tF;he;gGpartisFzarE;an;tiF;me;autifOhiNlLnHsFyoN;iWtselF;li8;eGiFt;gn;aFfi03;th;at0oF;v0w;nd;ul;ckwards,rF;e,rT; priori,b13c0Zd0Tf0Ng0Ihe0Hl09mp6nt06pZrTsQttracti0MuLvIwF;aGkF;wa1B;ke,re;ant garGeraF;ge;de;diIsteEtF;heFoimmu7;nt07;re;to4;hGlFtu2;eep;en;bitIchiv3roHtF;ifiFsy;ci3;ga1;ra4;ry;pFt;aHetizi8rF;oprF;ia2;llFre1;ed,i8;ng;iquFsy;at0e;ed;cohKiJkaHl,oGriFterX;ght;ne,of;li7;ne;ke,ve;olF;ic;ad;ain07gressiIi6rF;eeF;ab6;le;ve;fGraB;id;ectGlF;ue1;ioF;na2; JaIeGvF;erD;pt,qF;ua2;ma1;hoc,infinitum;cuCquiGtu3u2;al;esce1;ra2;erSjeAlPoNrKsGuF;nda1;e1olu2trF;aAuD;se;te;eaGuF;pt;st;aFve;rd;aFe;ze;ct;ra1;nt",Pronoun:"true¦elle,h3i2me,she,th0us,we,you;e0ou;e,m,y;!l,t;e,im",Preposition:"true¦aPbMcLdKexcept,fIinGmid,notwithstandiWoDpXqua,sCt7u4v2w0;/o,hereSith0;! whHin,oW;ersus,i0;a,s a vis;n1p0;!on;like,til;h1ill,oward0;!s;an,ereby,r0;ough0u;!oM;ans,ince,o that,uch G;f1n0ut;!to;!f;! 0to;effect,part;or,r0;om;espite,own,u3;hez,irca;ar1e0oBy;sides,tween;ri7;bo8cross,ft7lo6m4propos,round,s1t0;!op;! 0;a whole,long 0;as;id0ong0;!st;ng;er;ut",SportsTeam:"true¦0:18;1:1E;2:1D;3:14;a1Db15c0Sd0Kfc dallas,g0Ihouston 0Hindiana0Gjacksonville jagua0k0El0Am01new UoRpKqueens parkJreal salt lake,sBt6utah jazz,vancouver whitecaps,w4yW;ashington 4h10;natio1Mredski2wizar0W;ampa bay 7e6o4;ronto 4ttenham hotspur;blue ja0Mrapto0;nnessee tita2xasD;buccanee0ra0K;a8eattle 6porting kansas0Wt4; louis 4oke0V;c1Drams;marine0s4;eah13ounH;cramento Rn 4;antonio spu0diego 4francisco gJjose earthquak1;char08paB; ran07;a9h6ittsburgh 5ortland t4;imbe0rail blaze0;pirat1steele0;il4oenix su2;adelphia 4li1;eagl1philNunE;dr1;akland 4klahoma city thunder,rlando magic;athle0Lrai4;de0;england 8orleans 7york 4;g5je3knYme3red bul0Xy4;anke1;ian3;pelica2sain3;patrio3revolut4;ion;anchEeAi4ontreal impact;ami 8lwaukee b7nnesota 4;t5vi4;kings;imberwolv1wi2;rewe0uc0J;dolphi2heat,marli2;mphis grizz4ts;li1;a6eic5os angeles 4;clippe0dodFlaB;esterV; galaxy,ke0;ansas city 4nF;chiefs,roya0D; pace0polis col3;astr05dynamo,rocke3texa2;olden state warrio0reen bay pac4;ke0;allas 8e4i04od6;nver 6troit 4;lio2pisto2ti4;ge0;broncYnugge3;cowbo5maver4;icZ;ys;arEelLhAincinnati 8leveland 6ol4;orado r4umbus crew sc;api7ocki1;brow2cavalie0guar4in4;dia2;bengaVre4;ds;arlotte horAicago 4;b5cubs,fire,wh4;iteB;ea0ulQ;diff4olina panthe0; city;altimore Alackburn rove0oston 6rooklyn 4uffalo bilN;ne3;ts;cel5red4; sox;tics;rs;oriol1rave2;rizona Ast8tlanta 4;brav1falco2h4;awA;ns;es;on villa,r4;os;c6di4;amondbac4;ks;ardi4;na4;ls",Unit:"true¦a07b04cXdWexVfTgRhePinYjoule0BkMlJmDnan08oCp9quart0Bsq ft,t7volts,w6y2ze3°1µ0;g,s;c,f,n;dVear1o0;ttR; 0s 0;old;att,b;erNon0;!ne02;ascals,e1i0;cXnt00;rcent,tJ;hms,unceY;/s,e4i0m²,²,³;/h,cro2l0;e0liK;!²;grLsR;gCtJ;it1u0;menQx;erPreP;b5elvins,ilo1m0notO;/h,ph,²;!byGgrEmCs;ct0rtzL;aJogrC;allonJb0ig3rB;ps;a0emtEl oz,t4;hrenheit,radG;aby9;eci3m1;aratDe1m0oulombD;²,³;lsius,nti0;gr2lit1m0;et0;er8;am7;b1y0;te5;l,ps;c2tt0;os0;econd1;re0;!s","Noun|Gerund":"true¦0:3O;1:3M;2:3N;3:3D;4:32;5:2V;6:3E;7:3K;8:36;9:3J;A:3B;a3Pb37c2Jd27e23f1Vg1Sh1Mi1Ij1Gk1Dl18m13n11o0Wp0Pques0Sr0EsTtNunderMvKwFyDzB;eroi0oB;ni0o3P;aw2eB;ar2l3;aEed4hispe5i5oCrB;ap8est3i1;n0ErB;ki0r31;i1r2s9tc9;isualizi0oB;lunt1Vti0;stan4ta6;aFeDhin6iCraBy8;c6di0i2vel1M;mi0p8;aBs1;c9si0;l6n2s1;aUcReQhOiMkatKl2Wmo6nowJpeItFuCwB;ea5im37;b35f0FrB;fi0vB;e2Mi2J;aAoryt1KrCuB;d2KfS;etc9ugg3;l3n4;bCi0;ebBi0;oar4;gnBnAt1;a3i0;ip8oB;p8rte2u1;a1r27t1;hCo5reBulp1;a2Qe2;edu3oo3;i3yi0;aKeEi4oCuB;li0n2;oBwi0;fi0;aFcEhear7laxi0nDpor1sB;pon4tructB;r2Iu5;de5;or4yc3;di0so2;p8ti0;aFeacek20laEoCrBublis9;a1Teten4in1oces7;iso2siB;tio2;n2yi0;ckaAin1rB;ki0t1O;fEpeDrganiCvB;erco24ula1;si0zi0;ni0ra1;fe5;avi0QeBur7;gotia1twor6;aDeCi2oB;de3nito5;a2dita1e1ssaA;int0XnBrke1;ifUufactu5;aEeaDiBodAyi0;cen7f1mi1stB;e2i0;r2si0;n4ug9;iCnB;ea4it1;c6l3;ogAuB;dAgg3stif12;ci0llust0VmDnBro2;nova1sp0NterBven1;ac1vie02;agi2plo4;aDea1iCoBun1;l4w3;ki0ri0;nd3rB;roWvB;es1;aCene0Lli4rBui4;ee1ie0N;rde2the5;aHeGiDlCorBros1un4;e0Pmat1;ir1oo4;gh1lCnBs9;anZdi0;i0li0;e3nX;r0Zscina1;a1du01nCxB;erci7plo5;chan1di0ginB;ee5;aLeHiGoub1rCum8wB;el3;aDeCiB;bb3n6vi0;a0Qs7;wi0;rTscoDvi0;ba1coZlBvelo8;eCiB;ve5;ga1;nGti0;aVelebUhSlPoDrBur3yc3;aBos7yi0;f1w3;aLdi0lJmFnBo6pi0ve5;dDsCvinB;ci0;trBul1;uc1;muniDpB;lBo7;ai2;ca1;lBo5;ec1;c9ti0;ap8eaCimToBubT;ni0t9;ni0ri0;aBee5;n1t1;ra1;m8rCs1te5;ri0;vi0;aPeNitMlLoGrDuB;dge1il4llBr8;yi0;an4eat9oadB;cas1;di0;a1mEokB;i0kB;ee8;pi0;bi0;es7oa1;c9i0;gin2lonAt1;gi0;bysit1c6ki0tt3;li0;ki0;bando2cGdverti7gi0pproac9rgDssuCtB;trac1;mi0;ui0;hi0;si0;coun1ti0;ti0;ni0;ng",PhrasalVerb:"true¦0:92;1:96;2:8H;3:8V;4:8A;5:83;6:85;7:98;8:90;9:8G;A:8X;B:8R;C:8U;D:8S;E:70;F:97;G:8Y;H:81;I:7H;J:79;a9Fb7Uc6Rd6Le6Jf5Ig50h4Biron0j47k40l3Em31n2Yo2Wp2Cquiet Hr1Xs0KtZuXvacuu6QwNyammerBzK;ero Dip LonK;e0k0;by,ov9up;aQeMhLiKor0Mrit19;mp0n3Fpe0r5s5;ackAeel Di0S;aLiKn33;gh 3Wrd0;n Dr K;do1in,oJ;it 79k5lk Lrm 69sh Kt83v60;aw3do1o7up;aw3in,oC;rgeBsK;e 2herE;a00eYhViRoQrMuKypP;ckErn K;do1in,oJup;aLiKot0y 30;ckl7Zp F;ck HdK;e 5Y;n7Wp 3Es5K;ck MdLe Kghten 6me0p o0Rre0;aw3ba4do1in,up;e Iy 2;by,oG;ink Lrow K;aw3ba4in,up;ba4ov9up;aKe 77ll62;m 2r 5M;ckBke Llk K;ov9shit,u47;aKba4do1in,leave,o4Dup;ba4ft9pa69w3;a0Vc0Te0Mh0Ii0Fl09m08n07o06p01quar5GtQuOwK;earMiK;ngLtch K;aw3ba4o8K; by;cKi6Bm 2ss0;k 64;aReQiPoNrKud35;aigh2Det75iK;ke 7Sng K;al6Yup;p Krm2F;by,in,oG;c3Ln3Lr 2tc4O;p F;c3Jmp0nd LrKveAy 2O;e Ht 2L;ba4do1up;ar3GeNiMlLrKurB;ead0ingBuc5;a49it 6H;c5ll o3Cn 2;ak Fe1Xll0;a3Bber 2rt0und like;ap 5Vow Duggl5;ash 6Noke0;eep NiKow 6;cLp K;o6Dup;e 68;in,oK;ff,v9;de19gn 4NnKt 6Gz5;gKkE; al6Ale0;aMoKu5W;ot Kut0w 7M;aw3ba4f48oC;c2WdeEk6EveA;e Pll1Nnd Orv5tK; Ktl5J;do1foLin,o7upK;!on;ot,r5Z;aw3ba4do1in,o33up;oCto;al66out0rK;ap65ew 6J;ilAv5;aXeUiSoOuK;b 5Yle0n Kstl5;aLba4do1inKo2Ith4Nu5P;!to;c2Xr8w3;ll Mot LpeAuK;g3Ind17;a2Wf3Po7;ar8in,o7up;ng 68p oKs5;ff,p18;aKelAinEnt0;c6Hd K;o4Dup;c27t0;aZeYiWlToQrOsyc35uK;ll Mn5Kt K;aKba4do1in,oJto47up;pa4Dw3;a3Jdo1in,o21to45up;attleBess KiNop 2;ah2Fon;iLp Kr4Zu1Gwer 6N;do1in,o6Nup;nt0;aLuK;gEmp 6;ce u20y 6D;ck Kg0le 4An 6p5B;oJup;el 5NncilE;c53ir 39n0ss MtLy K;ba4oG; Hc2R;aw3ba4in,oJ;pKw4Y;e4Xt D;aLerd0oK;dAt53;il Hrrow H;aTeQiPoLuK;ddl5ll I;c1FnkeyMp 6uthAve K;aKdo1in,o4Lup;l4Nw3; wi4K;ss0x 2;asur5e3SlLss K;a21up;t 6;ke Ln 6rKs2Ax0;k 6ryA;do,fun,oCsure,up;a02eViQoLuK;ck0st I;aNc4Fg MoKse0;k Kse4D;aft9ba4do1forw37in56o0Zu46;in,oJ;d 6;e NghtMnLsKve 00;ten F;e 2k 2; 2e46;ar8do1in;aMt LvelK; oC;do1go,in,o7up;nEve K;in,oK;pKut;en;c5p 2sh LtchBughAy K;do1o59;in4Po7;eMick Lnock K;do1oCup;oCup;eLy K;in,up;l Ip K;aw3ba4do1f04in,oJto,up;aMoLuK;ic5mpE;ke3St H;c43zz 2;a01eWiToPuK;nLrrKsh 6;y 2;keLt K;ar8do1;r H;lKneErse3K;d Ke 2;ba4dKfast,o0Cup;ear,o1;de Lt K;ba4on,up;aw3o7;aKlp0;d Ml Ir Kt 2;fKof;rom;f11in,o03uW;cPm 2nLsh0ve Kz2P;at,it,to;d Lg KkerP;do1in,o2Tup;do1in,oK;ut,v9;k 2;aZeTive Rloss IoMrLunK; f0S;ab hold,in43ow 2U; Kof 2I;aMb1Mit,oLr8th1IuK;nd9;ff,n,v9;bo7ft9hQw3;aw3bKdo1in,oJrise,up,w3;a4ir2H;ar 6ek0t K;aLb1Fdo1in,oKr8up;ff,n,ut,v9;cLhKl2Fr8t,w3;ead;ross;d aKng 2;bo7;a0Ee07iYlUoQrMuK;ck Ke2N;ar8up;eLighten KownBy 2;aw3oG;eKshe27; 2z5;g 2lMol Krk I;aKwi20;bo7r8;d 6low 2;aLeKip0;sh0;g 6ke0mKrKtten H;e F;gRlPnNrLsKzzle0;h F;e Km 2;aw3ba4up;d0isK;h 2;e Kl 1T;aw3fPin,o7;ht ba4ure0;ePnLsK;s 2;cMd K;fKoG;or;e D;d04l 2;cNll Krm0t1G;aLbKdo1in,o09sho0Eth08victim;a4ehi2O;pa0C;e K;do1oGup;at Kdge0nd 12y5;in,o7up;aOi1HoNrK;aLess 6op KuN;aw3b03in,oC;gBwB; Ile0ubl1B;m 2;a0Ah05l02oOrLut K;aw3ba4do1oCup;ackBeep LoKy0;ss Dwd0;by,do1in,o0Uup;me NoLuntK; o2A;k 6l K;do1oG;aRbQforOin,oNtKu0O;hLoKrue;geth9;rough;ff,ut,v9;th,wK;ard;a4y;paKr8w3;rt;eaLose K;in,oCup;n 6r F;aNeLiK;ll0pE;ck Der Kw F;on,up;t 2;lRncel0rOsMtch LveE; in;o1Nup;h Dt K;doubt,oG;ry LvK;e 08;aw3oJ;l Km H;aLba4do1oJup;ff,n,ut;r8w3;a0Ve0MiteAl0Fo04rQuK;bblNckl05il0Dlk 6ndl05rLsKtMy FzzA;t 00;n 0HsK;t D;e I;ov9;anWeaUiLush K;oGup;ghQng K;aNba4do1forMin,oLuK;nd9p;n,ut;th;bo7lKr8w3;ong;teK;n 2;k K;do1in,o7up;ch0;arTg 6iRn5oPrNssMttlLunce Kx D;aw3ba4;e 6; ar8;e H;do1;k Dt 2;e 2;l 6;do1up;d 2;aPeed0oKurt0;cMw K;aw3ba4do1o7up;ck;k K;in,oC;ck0nk0stA; oQaNef 2lt0nd K;do1ov9up;er;up;r Lt K;do1in,oCup;do1o7;ff,nK;to;ck Pil0nMrgLsK;h D;ainBe D;g DkB; on;in,o7;aw3do1in,oCup;ff,ut;ay;ct FdQir0sk MuctionA; oG;ff;ar8o7;ouK;nd; o7;d K;do1oKup;ff,n;wn;o7up;ut",ProperNoun:"true¦aIbDc8dalhousHe7f5gosford,h4iron maiden,kirby,landsdowne,m2nis,r1s0wembF;herwood,paldiB;iel,othwe1;cgi0ercedes,issy;ll;intBudsB;airview,lorence,ra0;mpt9nco;lmo,uro;a1h0;arlt6es5risti;rl0talina;et4i0;ng;arb3e0;et1nt0rke0;ley;on;ie;bid,jax","Person|Place":"true¦a8d6h4jordan,k3orlando,s1vi0;ctor9rgin9;a0ydney;lvador,mara,ntia4;ent,obe;amil0ous0;ton;arw2ie0;go;lexandr1ust0;in;ia",LastName:"true¦0:BR;1:BF;2:B5;3:BH;4:AX;5:9Y;6:B6;7:BK;8:B0;9:AV;A:AL;B:8Q;C:8G;D:7K;E:BM;F:AH;aBDb9Zc8Wd88e81f7Kg6Wh64i60j5Lk4Vl4Dm39n2Wo2Op25quispe,r1Ls0Pt0Ev03wTxSyKzG;aIhGimmerm6A;aGou,u;ng,o;khar5ytsE;aKeun9BiHoGun;koya32shiBU;!lG;diGmaz;rim,z;maGng;da,g52mo83sGzaC;aChiBV;iao,u;aLeJiHoGright,u;jcA5lff,ng;lGmm0nkl0sniewsC;kiB1liams33s3;bGiss,lt0;b,er,st0;a6Vgn0lHtG;anabe,s3;k0sh,tG;e2Non;aLeKiHoGukD;gt,lk5roby5;dHllalGnogr3Kr1Css0val3S;ba,ob1W;al,ov4;lasHsel8W;lJn dIrgBEsHzG;qu7;ilyEqu7siljE;en b6Aijk,yk;enzueAIverde;aPeix1VhKi2j8ka43oJrIsui,uG;om5UrG;c2n0un1;an,emblA7ynisC;dorAMlst3Km4rrAth;atch0i8UoG;mHrG;are84laci79;ps3sG;en,on;hirDkah9Mnaka,te,varA;a06ch01eYhUiRmOoMtIuHvGzabo;en9Jobod3N;ar7bot4lliv2zuC;aIeHoG;i7Bj4AyanAB;ele,in2FpheBvens25;l8rm0;kol5lovy5re7Tsa,to,uG;ng,sa;iGy72;rn5tG;!h;l71mHnGrbu;at9cla9Egh;moBo7M;aIeGimizu;hu,vchG;en8Luk;la,r1G;gu9infe5YmGoh,pulveA7rra5P;jGyG;on5;evi6iltz,miHneid0roed0uGwarz;be3Elz;dHtG;!t,z;!t;ar4Th8ito,ka4OlJnGr4saCto,unde19v4;ch7dHtGz;a5Le,os;b53e16;as,ihDm4Po0Y;aVeSiPoJuHyG;a6oo,u;bio,iz,sG;so,u;bKc8Fdrigue67ge10j9YmJosevelt,sItHux,wG;e,li6;a9Ch;enb4Usi;a54e4L;erts15i93;bei4JcHes,vGzzo;as,e9;ci,hards12;ag2es,iHut0yG;es,nol5N;s,t0;dImHnGsmu97v6C;tan1;ir7os;ic,u;aUeOhMiJoHrGut8;asad,if6Zochazk27;lishc2GpGrti72u10we76;e3Aov51;cHe45nG;as,to;as70hl0;aGillips;k,m,n6I;a3Hde3Wete0Bna,rJtG;ersHrovGters54;!a,ic;!en,on;eGic,kiBss3;i9ra,tz,z;h86k,padopoulIrk0tHvG;ic,l4N;el,te39;os;bMconn2Ag2TlJnei6PrHsbor6XweBzG;dem7Rturk;ella4DtGwe6N;ega,iz;iGof7Hs8I;vGyn1R;ei9;aSri1;aPeNiJoGune50ym2;rHvGwak;ak4Qik5otn66;odahl,r4S;cholsZeHkolGls4Jx3;ic,ov84;ls1miG;!n1;ils3mG;co4Xec;gy,kaGray2sh,var38;jiGmu9shiG;ma;a07c04eZiWoMuHyeG;rs;lJnIrGssoli6S;atGp03r7C;i,ov4;oz,te58;d0l0;h2lOnNo0RrHsGza1A;er,s;aKeJiIoz5risHtG;e56on;!on;!n7K;au,i9no,t5J;!lA;r1Btgome59;i3El0;cracFhhail5kkeHlG;l0os64;ls1;hmeJiIj30lHn3Krci0ssiGyer2N;!er;n0Po;er,j0;dDti;cartHlG;aughl8e2;hy;dQe7Egnu68i0jer3TkPmNnMrItHyG;er,r;ei,ic,su21thews;iHkDquAroqu8tinG;ez,s;a5Xc,nG;!o;ci5Vn;a5UmG;ad5;ar5e6Kin1;rig77s1;aVeOiLoJuHyG;!nch;k4nGo;d,gu;mbarGpe3Fvr4we;di;!nGu,yana2B;coln,dG;b21holm,strom;bedEfeKhIitn0kaHn8rGw35;oy;!j;m11tG;in1on1;bvGvG;re;iGmmy,ng,rs2Qu,voie,ws3;ne,t1F;aZeYh2iWlUnez50oNrJuHvar2woG;k,n;cerGmar68znets5;a,o34;aHem0isGyeziu;h23t3O;m0sni4Fus3KvG;ch4O;bay57ch,rh0Usk16vaIwalGzl5;czGsC;yk;cIlG;!cGen4K;huk;!ev4ic,s;e8uiveG;rt;eff0kGl4mu9nnun1;ucF;ll0nnedy;hn,llKminsCne,pIrHstra3Qto,ur,yGzl5;a,s0;j0Rls22;l2oG;or;oe;aPenOha6im14oHuG;ng,r4;e32hInHrge32u6vG;anD;es,ss3;anHnsG;en,on,t3;nesGs1R;en,s1;kiBnings,s1;cJkob4EnGrv0E;kDsG;en,sG;en0Ion;ks3obs2A;brahimDglesi5Nke5Fl0Qno07oneIshikHto,vanoG;u,v54;awa;scu;aVeOiNjaltal8oIrist50uG;!aGb0ghAynh;m2ng;a6dz4fIjgaa3Hk,lHpUrGwe,x3X;ak1Gvat;mAt;er,fm3WmG;ann;ggiBtchcock;iJmingw4BnHrGss;nand7re9;deGriks1;rs3;kkiHnG;on1;la,n1;dz4g1lvoQmOns0ZqNrMsJuIwHyG;asFes;kiB;g1ng;anHhiG;mo14;i,ov0J;di6p0r10t;ue;alaG;in1;rs1;aVeorgUheorghe,iSjonRoLrJuGw3;errGnnar3Co,staf3Ctierr7zm2;a,eG;ro;ayli6ee2Lg4iffithGub0;!s;lIme0UnHodGrbachE;e,m2;calvAzale0S;dGubE;bGs0E;erg;aj,i;bs3l,mGordaO;en7;iev3U;gnMlJmaIndFo,rGsFuthi0;cGdn0za;ia;ge;eaHlG;agh0i,o;no;e,on;aVerQiLjeldsted,lKoIrHuG;chs,entAji41ll0;eem2iedm2;ntaGrt8urni0wl0;na;emi6orA;lipIsHtzgeraG;ld;ch0h0;ovG;!ic;hatDnanIrG;arGei9;a,i;deY;ov4;b0rre1D;dKinsJriksIsGvaB;cob3GpGtra3D;inoza,osiQ;en,s3;te8;er,is3warG;ds;aXePiNjurhuMoKrisco15uHvorakG;!oT;arte,boHmitru,nn,rGt3C;and,ic;is;g2he0Omingu7nErd1ItG;to;us;aGcki2Hmitr2Ossanayake,x3;s,z; JbnaIlHmirGrvisFvi,w2;!ov4;gado,ic;th;bo0groot,jo6lHsilGvriA;va;a cruz,e3uG;ca;hl,mcevsCnIt2WviG;dGes,s;ov,s3;ielsGku22;!en;ki;a0Be06hRiobQlarkPoIrGunningh1H;awfo0RivGuz;elli;h1lKntJoIrGs2Nx;byn,reG;a,ia;ke,p0;i,rer2K;em2liB;ns;!e;anu;aOeMiu,oIristGu6we;eGiaG;ns1;i,ng,p9uHwGy;!dH;dGng;huJ;!n,onGu6;!g;kJnIpm2ttHudhGv7;ry;erjee,o14;!d,g;ma,raboG;rty;bJl0Cng4rG;eghetHnG;a,y;ti;an,ota1C;cerAlder3mpbeLrIstGvadi0B;iGro;llo;doHl0Er,t0uGvalho;so;so,zo;ll;a0Fe01hYiXlUoNrKuIyG;rLtyG;qi;chan2rG;ke,ns;ank5iem,oGyant;oks,wG;ne;gdan5nIruya,su,uchaHyKziG;c,n5;rd;darGik;enG;ko;ov;aGond15;nco,zG;ev4;ancFshw16;a08oGuiy2;umGwmG;ik;ckRethov1gu,ktPnNrG;gJisInG;ascoGds1;ni;ha;er,mG;anG;!n;gtGit7nP;ss3;asF;hi;er,hG;am;b4ch,ez,hRiley,kk0ldw8nMrIshHtAu0;es;ir;bInHtlGua;ett;es,i0;ieYosa;dGik;a9yoG;padhyG;ay;ra;k,ng;ic;bb0Acos09d07g04kht05lZnPrLsl2tJyG;aHd8;in;la;chis3kiG;ns3;aImstro6sl2;an;ng;ujo,ya;dJgelHsaG;ri;ovG;!a;ersJov,reG;aGjEws;ss1;en;en,on,s3;on;eksejEiyEmeiIvG;ar7es;ez;da;ev;arwHuilG;ar;al;ams,l0;er;ta;as",Ordinal:"true¦eBf7nin5s3t0zeroE;enDhir1we0;lfCn7;d,t3;e0ixt8;cond,vent7;et0th;e6ie7;i2o0;r0urt3;tie4;ft1rst;ight0lev1;e0h,ie1;en0;th",Cardinal:"true¦bEeBf5mEnine7one,s4t0zero;en,h2rDw0;e0o;lve,n5;irt6ousands,ree;even2ix2;i3o0;r1ur0;!t2;ty;ft0ve;e2y;ight0lev1;!e0y;en;illions",Multiple:"true¦b3hundred,m3qu2se1t0;housand,r2;pt1xt1;adr0int0;illion",City:"true¦0:74;1:61;2:6G;3:6J;4:5S;a68b53c4Id48e44f3Wg3Hh39i31j2Wk2Fl23m1Mn1Co19p0Wq0Ur0Os05tRuQvLwDxiBy9z5;a7h5i4Muri4O;a5e5ongsh0;ng3H;greb,nzib5G;ang2e5okoha3Sunfu;katerin3Hrev0;a5n0Q;m5Hn;arsBeAi6roclBu5;h0xi,zh5P;c7n5;d5nipeg,terth4;hoek,s1L;hi5Zkl3A;l63xford;aw;a8e6i5ladivost5Molgogr6L;en3lni6S;ni22r5;o3saill4N;lenc4Wncouv3Sr3ughn;lan bat1Crumqi,trecht;aFbilisi,eEheDiBo9r7u5;l21n63r5;in,ku;i5ondh62;es51poli;kyo,m2Zron1Pulo5;n,uS;an5jua3l2Tmisoa6Bra3;j4Tshui; hag62ssaloni2H;gucigal26hr0l av1U;briz,i6llinn,mpe56ng5rtu,shk2R;i3Esh0;an,chu1n0p2Eyu0;aEeDh8kopje,owe1Gt7u5;ra5zh4X;ba0Ht;aten is55ockholm,rasbou67uttga2V;an8e6i5;jiazhua1llo1m5Xy0;f50n5;ya1zh4H;gh3Kt4Q;att45o1Vv44;cramen16int ClBn5o paulo,ppo3Rrajevo; 7aa,t5;a 5o domin3E;a3fe,m1M;antonio,die3Cfrancisco,j5ped3Nsalvad0J;o5u0;se;em,t lake ci5Fz25;lou58peters24;a9e8i6o5;me,t59;ga,o5yadh;! de janei3F;cife,ims,nn3Jykjavik;b4Sip4lei2Inc2Pwalpindi;ingdao,u5;ez2i0Q;aFeEhDiCo9r7u6yong5;ya1;eb59ya1;a5etor3M;g52to;rt5zn0; 5la4Co;au prin0Melizabe24sa03;ls3Prae5Atts26;iladelph3Gnom pe1Aoenix;ki1tah tik3E;dua,lerYnaji,r4Ot5;na,r32;ak44des0Km1Mr6s5ttawa;a3Vlo;an,d06;a7ew5ing2Fovosibir1Jyc; 5cast36;del24orlea44taip14;g8iro4Wn5pl2Wshv33v0;ch6ji1t5;es,o1;a1o1;a6o5p4;ya;no,sa0W;aEeCi9o6u5;mb2Ani26sc3Y;gadishu,nt6s5;c13ul;evideo,pelli1Rre2Z;ami,l6n14s5;kolc,sissauga;an,waukee;cca,d5lbour2Mmph41ndo1Cssi3;an,ell2Xi3;cau,drAkass2Sl9n8r5shh4A;aca6ib5rakesh,se2L;or;i1Sy;a4EchFdal0Zi47;mo;id;aDeAi8o6u5vSy2;anMckn0Odhia3;n5s angel26;d2g bea1N;brev2Be3Lma5nz,sb2verpo28;!ss27; ma39i5;c5pzig;est16; p6g5ho2Wn0Cusan24;os;az,la33;aHharFiClaipeBo9rak0Du7y5;iv,o5;to;ala lump4n5;mi1sh0;hi0Hlka2Xpavog4si5wlo2;ce;da;ev,n5rkuk;gst2sha5;sa;k5toum;iv;bHdu3llakuric0Qmpa3Fn6ohsiu1ra5un1Iwaguc0Q;c0Pj;d5o,p4;ah1Ty;a7e6i5ohannesV;l1Vn0;dd36rusalem;ip4k5;ar2H;bad0mph1OnArkutUs7taXz5;mir,tapala5;pa;fah0l6tanb5;ul;am2Zi2H;che2d5;ianap2Mo20;aAe7o5yder2W; chi mi5ms,nolulu;nh;f6lsin5rakli2;ki;ei;ifa,lifax,mCn5rb1Dva3;g8nov01oi;aFdanEenDhCiPlasgBo9raz,u5;a5jr23;dal6ng5yaquil;zh1J;aja2Oupe;ld coa1Bthen5;bu2S;ow;ent;e0Uoa;sk;lw7n5za;dhi5gt1E;nag0U;ay;aisal29es,o8r6ukuya5;ma;ankfu5esno;rt;rt5sh0; wor6ale5;za;th;d5indhov0Pl paso;in5mont2;bur5;gh;aBe8ha0Xisp4o7resd0Lu5;b5esseldorf,nkirk,rb0shanbe;ai,l0I;ha,nggu0rtmu13;hradSl6nv5troit;er;hi;donghIe6k09l5masc1Zr es sala1KugavpiY;i0lU;gu,je2;aJebu,hAleve0Vo5raio02uriti1Q;lo7n6penhag0Ar5;do1Ok;akKst0V;gUm5;bo;aBen8i6ongqi1ristchur5;ch;ang m7ca5ttago1;go;g6n5;ai;du,zho1;ng5ttogr14;ch8sha,zh07;gliari,i9lga8mayenJn6pe town,r5tanO;acCdiff;ber1Ac5;un;ry;ro;aWeNhKirmingh0WoJr9u5;chareTdapeTenos air7r5s0tu0;g5sa;as;es;a9is6usse5;ls;ba6t5;ol;ne;sil8tisla7zzav5;il5;le;va;ia;goZst2;op6ubaneshw5;ar;al;iCl9ng8r5;g6l5n;in;en;aluru,hazi;fa6grade,o horizon5;te;st;ji1rut;ghd0BkFn9ot8r7s6yan n4;ur;el,r07;celo3i,ranquil09;ou;du1g6ja lu5;ka;alo6k5;ok;re;ng;ers5u;field;a05b02cc01ddis aba00gartaZhmedXizawl,lSmPnHqa00rEsBt7uck5;la5;nd;he7l5;an5;ta;ns;h5unci2;dod,gab5;at;li5;ngt2;on;a8c5kaOtwerp;hora6o3;na;ge;h7p5;ol5;is;eim;aravati,m0s5;terd5;am; 7buquerq6eppo,giers,ma5;ty;ue;basrah al qadim5mawsil al jadid5;ah;ab5;ad;la;ba;ra;idj0u dha5;bi;an;lbo6rh5;us;rg",Region:"true¦0:2O;1:2L;2:2U;3:2F;a2Sb2Fc21d1Wes1Vf1Tg1Oh1Ki1Fj1Bk16l13m0Sn09o07pYqVrSsJtEuBverAw6y4zacatec2W;akut0o0Fu4;cat1k09;a5est 4isconsin,yomi1O;bengal,virgin0;rwick3shington4;! dc;acruz,mont;dmurt0t4;ah,tar4; 2Pa12;a6e5laxca1Vripu21u4;scaEva;langa2nnessee,x2J;bas10m4smQtar29;aulip2Hil nadu;a9elang07i7o5taf16u4ylh1J;ff02rr09s1E;me1Gno1Uuth 4;cZdY;ber0c4kkim,naloa;hu1ily;n5rawak,skatchew1xo4;ny; luis potosi,ta catari2;a4hodeA;j4ngp0C;asth1shahi;ingh29u4;e4intana roo;bec,en6retaro;aAe6rince edward4unjab; i4;sl0G;i,n5r4;ak,nambu0F;a0Rnsylv4;an0;ha0Pra4;!na;axa0Zdisha,h4klaho21ntar4reg7ss0Dx0I;io;aLeEo6u4;evo le4nav0X;on;r4tt18va scot0;f9mandy,th4; 4ampton3;c6d5yo4;rk3;ako1O;aroli2;olk;bras1Nva0Dw4; 6foundland4;! and labrad4;or;brunswick,hamp3jers5mexiTyork4;! state;ey;galPyarit;aAeghala0Mi6o4;nta2r4;dov0elos;ch6dlanDn5ss4zor11;issippi,ouri;as geraPneso18;ig1oac1;dhy12harasht0Gine,lac07ni5r4ssachusetts;anhao,i el,ylG;p4toba;ur;anca3e4incoln3ouisI;e4iR;ds;a6e5h4omi;aka06ul2;dah,lant1ntucky,ra01;bardino,lmyk0ns0Qr4;achay,el0nata0X;alis6har4iangxi;kh4;and;co;daho,llino7n4owa;d5gush4;et0;ia2;is;a6ert5i4un1;dalFm0D;ford3;mp3rya2waii;ansu,eorg0lou7oa,u4;an4izhou,jarat;ajuato,gdo4;ng;cester3;lori4uji1;da;sex;ageUe7o5uran4;go;rs4;et;lawaMrby3;aFeaEh9o4rim08umbr0;ahui7l6nnectic5rsi4ventry;ca;ut;i03orado;la;e5hattisgarh,i4uvash0;apRhuahua;chn5rke4;ss0;ya;ra;lGm4;bridge3peche;a9ihar,r8u4;ck4ryat0;ingham3;shi4;re;emen,itish columb0;h0ja cal8lk7s4v7;hkorto4que;st1;an;ar0;iforn0;ia;dygHguascalientes,lBndhr9r5ss4;am;izo2kans5un4;achal 7;as;na;a 4;pradesh;a6ber5t4;ai;ta;ba5s4;ka;ma;ea",Place:"true¦0:4T;1:4V;2:44;3:4B;4:3I;a4Eb3Gc2Td2Ge26f25g1Vh1Ji1Fk1Cl14m0Vn0No0Jp08r04sTtNuLvJw7y5;a5o0Syz;kut1Bngtze;aDeChitBi9o5upatki,ycom2P;ki26o5;d5l1B;b3Ps5;i4to3Y;c0SllowbroCn5;c2Qgh2;by,chur1P;ed0ntw3Gs22;ke6r3St5;erf1f1; is0Gf3V;auxha3Mirgin is0Jost5;ok;laanbaatar,pto5xb3E;n,wn;a9eotihuac43h7ive49o6ru2Nsarskoe selo,u5;l2Dzigo47;nto,rquay,tt2J;am3e 5orn3E;bronx,hamptons;hiti,j mah0Iu1N;aEcotts bluff,eCfo,herbroQoApring9t7u5yd2F;dbu1Wn5;der03set3B;aff1ock2Nr5;atf1oud;hi37w24;ho,uth5; 1Iam1Zwo3E;a5i2O;f2Tt0;int lawrence riv3Pkhal2D;ayleigh,ed7i5oc1Z;chmo1Eo gran4ver5;be1Dfr09si4; s39cliffe,hi2Y;aCe9h8i5ompeii,utn2;c6ne5tcai2T; 2Pc0G;keri13t0;l,x;k,lh2mbr6n5r2J;n1Hzance;oke;cif38pahanaumokuak30r5;k5then0;si4w1K;ak7r6x5;f1l2X;ange county,d,f1inoco;mTw1G;e8i1Uo5;r5tt2N;th5wi0E; 0Sam19;uschwanste1Pw5; eng6a5h2market,po36;rk;la0P;a8co,e6i5uc;dt1Yll0Z;adow5ko0H;lands;chu picchu,gad2Ridsto1Ql8n7ple6r5;kh2; g1Cw11;hatt2Osf2B;ibu,t0ve1Z;a8e7gw,hr,in5owlOynd02;coln memori5dl2C;al;asi4w3;kefr7mbe1On5s,x;ca2Ig5si05;f1l27t0;ont;azan kreml14e6itchen2Gosrae,rasnoyar5ul;sk;ns0Hs1U;ax,cn,lf1n6ps5st;wiN;d5glew0Lverness;ian27ochina;aDeBi6kg,nd,ov5unti2H;d,enweep;gh6llc5;reL;bu03l5;and5;!s;r5yw0C;ef1tf1;libu24mp6r5stings;f1lem,row;stead,t0;aDodavari,r5uelph;avenAe5imsS;at 8en5; 6f1Fwi5;ch;acr3vall1H;brita0Flak3;hur5;st;ng3y villa0W;airhavHco,ra;aAgli9nf17ppi8u7ver6x5;et1Lf1;glad3t0;rope,st0;ng;nt0;rls1Ls5;t 5;e5si4;nd;aCe9fw,ig8o7ryd6u5xb;mfri3nstab00rh2tt0;en;nca18rcKv19wnt0B;by;n6r5vonpo1D;ry;!h2;nu8r5;l6t5;f1moor;ingt0;be;aLdg,eIgk,hClBo5royd0;l6m5rnwa0B;pt0;c7lingw6osse5;um;ood;he0S;earwat0St;a8el6i5uuk;chen itza,mney ro07natSricahua;m0Zt5;enh2;mor5rlottetPth2;ro;dar 5ntervilA;breaks,faZg5;rove;ld9m8r5versh2;lis6rizo pla5;in;le;bLpbellf1;weQ;aZcn,eNingl01kk,lackLolt0r5uckV;aGiAo5;ckt0ok5wns cany0;lyn,s5;i4to5;ne;de;dge6gh5;am,t0;n6t5;own;or5;th;ceb6m5;lNpt0;rid5;ge;bu5pool,wa8;rn;aconsfEdf1lBr9verly7x5;hi5;ll; hi5;lls;wi5;ck; air,l5;ingh2;am;ie5;ld;ltimore,rnsl6tters5;ea;ey;bLct0driadic,frica,ginJlGmFn9rc8s7tl6yleOzor3;es;!ant8;hcroft,ia; de triomphe,t6;adyr,ca8dov9tarct5;ic5; oce5;an;st5;er;ericas,s;be6dersh5hambra,list0;ot;rt0;cou5;rt;bot7i5;ngd0;on;sf1;ord",Country:"true¦0:38;1:2L;2:3B;a2Xb2Ec22d1Ye1Sf1Mg1Ch1Ai14j12k0Zl0Um0Gn05om2pZqat1KrXsKtCu7v5wal4yemTz3;a25imbabwe;es,lis and futu2Y;a3enezue32ietnam;nuatu,tican city;gTk6nited 4ruXs3zbeE; 2Ca,sr;arab emirat0Kkingdom,states3;! of am2Y;!raiV;a8haCimor les0Co7rinidad 5u3;nis0rk3valu;ey,me2Zs and caic1V;and t3t3;oba1L;go,kel10nga;iw2ji3nz2T;ki2V;aDcotl1eCi9lov8o6pa2Dri lanka,u5w3yr0;az3edAitzerl1;il1;d2riname;lomon1Xmal0uth 3;afr2KkMsud2;ak0en0;erra leoFn3;gapo1Yt maart3;en;negLrb0ychellZ;int 3moa,n marino,udi arab0;hele26luc0mart21;epublic of ir0Eom2Euss0w3;an27;a4eIhilippinUitcairn1Mo3uerto riN;l1rtugF;ki2Dl4nama,pua new0Vra3;gu7;au,esti3;ne;aBe9i7or3;folk1Ith4w3;ay; k3ern mariana1D;or0O;caragua,ger3ue;!ia;p3ther1Aw zeal1;al;mib0u3;ru;a7exi6icro0Bo3yanm06;ldova,n3roc5zambA;a4gol0t3;enegro,serrat;co;cAdagasc01l7r5urit4yot3;te;an0i16;shall0Xtin3;ique;a4div3i,ta;es;wi,ys0;ao,ed02;a6e5i3uxembourg;b3echtenste12thu1G;er0ya;ban0Isotho;os,tv0;azakh1Fe4iriba04o3uwait,yrgyz1F;rXsovo;eling0Knya;a3erG;ma16p2;c7nd6r4s3taly,vory coast;le of m2rael;a3el1;n,q;ia,oJ;el1;aiTon3ungary;dur0Ng kong;aBermany,ha0QibraltAre8u3;a6ern5inea3ya0P;! biss3;au;sey;deloupe,m,tema0Q;e3na0N;ce,nl1;ar;bUmb0;a7i6r3;ance,ench 3;guia0Epoly3;nes0;ji,nl1;lklandUroeU;ast tim7cu6gypt,l salv6ngl1quatorial4ritr5st3thiop0;on0; guin3;ea;ad3;or;enmark,jibou5ominica4r con3;go;!n C;ti;aBentral african Ah8o5roat0u4yprRzech3; 9ia;ba,racao;c4lo3morQngo brazzaville,okGsta r04te de ivoiL;mb0;osE;i3ristmasG;le,na;republic;m3naUpe verde,ymanA;bod0ero3;on;aGeDhut2o9r5u3;lgar0r3;kina faso,ma,undi;azil,itish 3unei;virgin3; is3;lands;liv0nai5snia and herzegoviHtswaHuvet3; isl1;and;re;l3n8rmuG;ar3gium,ize;us;h4ngladesh,rbad3;os;am4ra3;in;as;fghaGlDmBn6r4ustr3zerbaij2;al0ia;genti3men0uba;na;dorra,g5t3;arct7igua and barbu3;da;o3uil3;la;er3;ica;b3ger0;an0;ia;ni3;st2;an",FirstName:"true¦aTblair,cQdOfrancoZgabMhinaLilya,jHkClBm6ni4quinn,re3s0;h0umit,yd;ay,e0iloh;a,lby;g9ne;co,ko0;!s;a1el0ina,org6;!okuhF;ds,naia,r1tt0xiB;i,y;ion,lo;ashawn,eif,uca;a3e1ir0rM;an;lsFn0rry;dall,yat5;i,sD;a0essIie,ude;i1m0;ie,mG;me;ta;rie0y;le;arcy,ev0;an,on;as1h0;arl8eyenne;ey,sidy;drien,kira,l4nd1ubr0vi;ey;i,r0;a,e0;a,y;ex2f1o0;is;ie;ei,is",WeekDay:"true¦fri2mon2s1t0wednesd3;hurs1ues1;aturd1und1;!d0;ay0;!s",Month:"true¦dec0february,july,nov0octo1sept0;em0;ber",Date:"true¦ago,on4som4t1week0yesterd5; end,ends;mr1o0;d2morrow;!w;ed0;ay",Duration:"true¦centurAd8h7m5q4se3w1y0;ear8r8;eek0k7;!end,s;ason,c5;tr,uarter;i0onth3;llisecond2nute2;our1r1;ay0ecade0;!s;ies,y",FemaleName:"true¦0:J7;1:JB;2:IJ;3:IK;4:J1;5:IO;6:JS;7:JO;8:HB;9:JK;A:H4;B:I2;C:IT;D:JH;E:IX;F:BA;G:I4;aGTbFLcDRdD0eBMfB4gADh9Ti9Gj8Dk7Cl5Wm48n3Lo3Hp33qu32r29s15t0Eu0Cv02wVxiTyOzH;aLeIineb,oHsof3;e3Sf3la,ra;h2iKlIna,ynH;ab,ep;da,ma;da,h2iHra;nab;aKeJi0FolB7uIvH;et8onDP;i0na;le0sen3;el,gm3Hn,rGLs8W;aoHme0nyi;m5XyAD;aMendDZhiDGiH;dele9lJnH;if48niHo0;e,f47;a,helmi0lHma;a,ow;ka0nB;aNeKiHusa5;ck84kIl8oleAviH;anFenJ4;ky,toriBK;da,lA8rHs0;a,nHoniH9;a,iFR;leHnesH9;nILrH;i1y;g9rHs6xHA;su5te;aYeUhRiNoLrIuHy2;i,la;acJ3iHu0J;c3na,sH;hFta;nHr0F;iFya;aJffaEOnHs6;a,gtiH;ng;!nFSra;aIeHomasi0;a,l9Oo8Ares1;l3ndolwethu;g9Fo88rIssH;!a,ie;eHi,ri7;sa,za;bOlMmKnIrHs6tia0wa0;a60yn;iHya;a,ka,s6;arFe2iHm77ra;!ka;a,iH;a,t6;at6it6;a0Ecarlett,e0AhWiSkye,neza0oQri,tNuIyH;bIGlvi1;ha,mayIJniAsIzH;an3Net8ie,y;anHi7;!a,e,nH;aCe;aIeH;fan4l5Dphan6E;cI5r5;b3fiAAm0LnHphi1;d2ia,ja,ya;er2lJmon1nIobh8QtH;a,i;dy;lETv3;aMeIirHo0risFDy5;a,lDM;ba,e0i5lJrH;iHr6Jyl;!d8Ifa;ia,lDZ;hd,iMki2nJrIu0w0yH;la,ma,na;i,le9on,ron,yn;aIda,ia,nHon;a,on;!ya;k6mH;!aa;lJrItaye82vH;da,inj;e0ife;en1i0ma;anA9bLd5Oh1SiBkKlJmInd2rHs6vannaC;aCi0;ant6i2;lDOma,ome;ee0in8Tu2;in1ri0;a05eZhXiUoHuthDM;bScRghQl8LnPsJwIxH;anB3ie,y;an,e0;aIeHie,lD;ann7ll1marDGtA;!lHnn1;iHyn;e,nH;a,dF;da,i,na;ayy8G;hel67io;bDRerAyn;a,cIkHmas,nFta,ya;ki,o;h8Xki;ea,iannGMoH;da,n1P;an0bJemFgi0iInHta,y0;a8Bee;han86na;a,eH;cHkaC;a,ca;bi0chIe,i0mo0nHquETy0;di,ia;aERelHiB;!e,le;een4ia0;aPeOhMiLoJrHute6A;iHudenCV;scil3LyamvaB;lHrt3;i0ly;a,paluk;ilome0oebe,ylH;is,lis;ggy,nelope,r5t2;ige,m0VnKo5rvaDMtIulH;a,et8in1;ricHt4T;a,e,ia;do2i07;ctav3dIfD3is6ksa0lHphD3umC5yunbileg;a,ga,iv3;eHvAF;l3t8;aWeUiMoIurHy5;!ay,ul;a,eJor,rIuH;f,r;aCeEma;ll1mi;aNcLhariBQkKlaJna,sHta,vi;anHha;ur;!y;a,iDZki;hoGk9YolH;a,e4P;!mh;hir,lHna,risDEsreE;!a,iDDlBV;asuMdLh3i6Dl5nKomi7rgEVtH;aHhal4;lHs6;i1ya;cy,et8;e9iF0ya;nngu2X;a0Ackenz4e02iMoJrignayani,uriDJyH;a,rH;a,iOlNna,tG;bi0i2llBJnH;a,iH;ca,ka,qD9;a,cUdo4ZkaTlOmi,nMrItzi,yH;ar;aJiIlH;anET;am;!l,nB;dy,eHh,n4;nhGrva;aKdJe0iCUlH;iHy;cent,e;red;!gros;!e5;ae5hH;ae5el3Z;ag5DgNi,lKrH;edi7AiIjem,on,yH;em,l;em,sCG;an4iHliCF;nHsCJ;a,da;!an,han;b09cASd07e,g05ha,i04ja,l02n00rLsoum5YtKuIv84xBKyHz4;bell,ra,soBB;d7rH;a,eE;h8Gild1t4;a,cUgQiKjor4l7Un4s6tJwa,yH;!aHbe6Xja9lAE;m,nBL;a,ha,in1;!aJbCGeIja,lDna,sHt63;!a,ol,sa;!l1D;!h,mInH;!a,e,n1;!awit,i;arJeIie,oHr48ueri8;!t;!ry;et46i3B;el4Xi7Cy;dHon,ue5;akranAy;ak,en,iHlo3S;a,ka,nB;a,re,s4te;daHg4;!l3E;alDd4elHge,isDJon0;ei9in1yn;el,le;a0Ne0CiXoQuLyH;d3la,nH;!a,dIe2OnHsCT;!a,e2N;a,sCR;aD4cJel0Pis1lIna,pHz;e,iA;a,u,wa;iHy;a0Se,ja,l2NnB;is,l1UrItt1LuHvel4;el5is1;aKeIi7na,rH;aADi7;lHn1tA;ei;!in1;aTbb9HdSepa,lNnKsJvIzH;!a,be5Ret8z4;!ia;a,et8;!a,dH;a,sHy;ay,ey,i,y;a,iJja,lH;iHy;aA8e;!aH;!nF;ia,ya;!nH;!a,ne;aPda,e0iNjYla,nMoKsJtHx93y5;iHt4;c3t3;e2PlCO;la,nHra;a,ie,o2;a,or1;a,gh,laH;!ni;!h,nH;a,d2e,n5V;cOdon9DiNkes6mi9Gna,rMtJurIvHxmi,y5;ern1in3;a,e5Aie,yn;as6iIoH;nya,ya;fa,s6;a,isA9;a,la;ey,ie,y;a04eZhXiOlASoNrJyH;lHra;a,ee,ie;istHy6I;a,en,iIyH;!na;!e,n5F;nul,ri,urtnB8;aOerNlB7mJrHzzy;a,stH;en,in;!berlImernH;aq;eHi,y;e,y;a,stE;!na,ra;aHei2ongordzol;dij1w5;el7UiKjsi,lJnIrH;a,i,ri;d2na,za;ey,i,lBLs4y;ra,s6;biAcARdiat7MeBAiSlQmPnyakuma1DrNss6NtKviAyH;!e,lH;a,eH;e,i8T;!a6HeIhHi4TlDri0y;ar8Her8Hie,leErBAy;!lyn8Ori0;a,en,iHl5Xoli0yn;!ma,nFs95;a5il1;ei8Mi,lH;e,ie;a,tl6O;a0AeZiWoOuH;anMdLlHst88;es,iH;a8NeHs8X;!n9tH;!a,te;e5Mi3My;a,iA;!anNcelDdMelGhan7VleLni,sIva0yH;a,ce;eHie;fHlDph7Y;a,in1;en,n1;i7y;!a,e,n45;lHng;!i1DlH;!i1C;anNle0nKrJsH;i8JsH;!e,i8I;i,ri;!a,elGif2CnH;a,et8iHy;!e,f2A;a,eJiInH;a,eIiH;e,n1;!t8;cMda,mi,nIque4YsminFvie2y9zH;min7;a7eIiH;ce,e,n1s;!lHs82t0F;e,le;inIk6HlDquelH;in1yn;da,ta;da,lRmPnOo0rNsIvaHwo0zaro;!a0lu,na;aJiIlaHob89;!n9R;do2;belHdo2;!a,e,l3B;a7Ben1i0ma;di2es,gr72ji;a9elBogH;en1;a,e9iHo0se;a0na;aSeOiJoHus7Kyacin2C;da,ll4rten24snH;a,i9U;lImaH;ri;aIdHlaI;a,egard;ry;ath1BiJlInrietArmi9sH;sa,t1A;en2Uga,mi;di;bi2Fil8MlNnMrJsItHwa,yl8M;i5Tt4;n60ti;iHmo51ri53;etH;!te;aCnaC;a,ey,l4;a02eWiRlPoNrKunJwH;enHyne1R;!dolD;ay,el;acieIetHiselB;a,chE;!la;ld1CogooH;sh;adys,enHor3yn2K;a,da,na;aKgi,lIna,ov8EselHta;a,e,le;da,liH;an;!n0;mLnJorgIrH;ald5Si,m3Etrud7;et8i4X;a,eHna;s29vieve;ma;bIle,mHrnet,yG;al5Si5;iIrielH;a,l1;!ja;aTeQiPlorOoz3rH;anJeIiH;da,eB;da,ja;!cH;esIiHoi0P;n1s66;!ca;a,enc3;en,o0;lIn0rnH;anB;ec3ic3;jr,nArKtHy7;emIiHma,oumaA;ha,ma,n;eh;ah,iBrah,za0;cr4Rd0Re0Qi0Pk0Ol07mXn54rUsOtNuMvHwa;aKelIiH;!e,ta;inFyn;!a;!ngel4V;geni1ni47;h5Yien9ta;mLperanKtH;eIhHrel5;er;l31r7;za;a,eralB;iHma,ne4Lyn;cHka,n;a,ka;aPeNiKmH;aHe21ie,y;!li9nuH;elG;lHn1;e7iHy;a,e,ja;lHrald;da,y;!nue5;aWeUiNlMma,no2oKsJvH;a,iH;na,ra;a,ie;iHuiH;se;a,en,ie,y;a0c3da,e,f,nMsJzaH;!betHveA;e,h;aHe,ka;!beH;th;!a,or;anor,nH;!a,i;!in1na;ate1Rta;leEs6;vi;eIiHna,wi0;e,th;l,n;aYeMh3iLjeneKoH;lor5Vminiq4Ln3FrHtt4;a,eEis,la,othHthy;ea,y;ba;an09naCon9ya;anQbPde,eOiMlJmetr3nHsir5M;a,iH;ce,se;a,iIla,orHphi9;es,is;a,l6F;dHrdH;re;!d5Ena;!b2ForaCraC;a,d2nH;!a,e;hl3i0l0GmNnLphn1rIvi1WyH;le,na;a,by,cIia,lH;a,en1;ey,ie;a,et8iH;!ca,el1Aka,z;arHia;is;a0Re0Nh04i02lUoJristIynH;di,th3;al,i0;lPnMrIurH;tn1D;aJd2OiHn2Ori9;!nH;a,e,n1;!l4;cepci5Cn4sH;tanHuelo;ce,za;eHleE;en,t8;aJeoIotH;il54;!pat2;ir7rJudH;et8iH;a,ne;a,e,iH;ce,sZ;a2er2ndH;i,y;aReNloe,rH;isJyH;stH;al;sy,tH;a1Sen,iHy;an1e,n1;deJlseIrH;!i7yl;a,y;li9;nMrH;isKlImH;ai9;a,eHot8;n1t8;!sa;d2elGtH;al,elG;cIlH;es8i47;el3ilH;e,ia,y;itlYlXmilWndVrMsKtHy5;aIeIhHri0;er1IleErDy;ri0;a38sH;a37ie;a,iOlLmeJolIrH;ie,ol;!e,in1yn;lHn;!a,la;a,eIie,otHy;a,ta;ne,y;na,s1X;a0Ii0I;a,e,l1;isAl4;in,yn;a0Ke02iZlXoUrH;andi7eRiJoIyH;an0nn;nwDoke;an3HdgMgiLtH;n31tH;!aInH;ey,i,y;ny;d,t8;etH;!t7;an0e,nH;da,na;bbi7glarIlo07nH;iAn4;ka;ancHythe;a,he;an1Clja0nHsm3M;iAtH;ou;aWcVlinUniArPssOtJulaCvH;!erlH;ey,y;hJsy,tH;e,iHy7;e,na;!anH;ie,y;!ie;nItHyl;ha,ie;adIiH;ce;et8i9;ay,da;ca,ky;!triH;ce,z;rbJyaH;rmH;aa;a2o2ra;a2Ub2Od25g21i1Sj5l18m0Zn0Boi,r06sWtVuPvOwa,yIzH;ra,u0;aKes6gJlIn,seH;!l;in;un;!nH;a,na;a,i2K;drLguJrIsteH;ja;el3;stH;in1;a,ey,i,y;aahua,he0;hIi2Gja,miAs2DtrH;id;aMlIraqHt21;at;eIi7yH;!n;e,iHy;gh;!nH;ti;iJleIo6piA;ta;en,n1t8;aHelG;!n1J;a01dje5eZgViTjRnKohito,toHya;inet8nH;el5ia;te;!aKeIiHmJ;e,ka;!mHtt7;ar4;!belIliHmU;sa;!l1;a,eliH;ca;ka,sHta;a,sa;elHie;a,iH;a,ca,n1qH;ue;!tH;a,te;!bImHstasiMya;ar3;el;aLberKeliJiHy;e,l3naH;!ta;a,ja;!ly;hGiIl3nB;da;a,ra;le;aWba,ePiMlKthJyH;a,c3sH;a,on,sa;ea;iHys0N;e,s0M;a,cIn1sHza;a,e,ha,on,sa;e,ia,ja;c3is6jaKksaKna,sJxH;aHia;!nd2;ia,saH;nd2;ra;ia;i0nIyH;ah,na;a,is,naCoud;la;c6da,leEmNnLsH;haClH;inHyY;g,n;!h;a,o,slH;ey;ee;en;at6g4nIusH;ti0;es;ie;aWdiTelMrH;eJiH;anMenH;a,e,ne;an0;na;!aLeKiIyH;nn;a,n1;a,e;!ne;!iH;de;e,lDsH;on;yn;!lH;i9yn;ne;aKbIiHrL;!e,gaK;ey,i7y;!e;gaH;il;dKliyJradhIs6;ha;ya;ah;a,ya",Honorific:"true¦director1field marsh2lieutenant1rear0sergeant major,vice0; admir1; gener0;al","Adj|Gerund":"true¦0:3F;1:3H;2:31;3:2X;4:35;5:33;6:3C;7:2Z;8:36;9:29;a33b2Tc2Bd1Te1If19g12h0Zi0Rl0Nm0Gnu0Fo0Ap04rYsKtEuBvAw1Ayiel3;ar6e08;nBpA;l1Rs0B;fol3n1Zsett2;aEeDhrBi4ouc7rAwis0;e0Bif2oub2us0yi1;ea1SiA;l2vi1;l2mp0rr1J;nt1Vxi1;aMcreec7enten2NhLkyrocke0lo0Vmi2oJpHtDuBweA;e0Ul2;pp2ArA;gi1pri5roun3;aBea8iAri2Hun9;mula0r4;gge4rA;t2vi1;ark2eAraw2;e3llb2F;aAot7;ki1ri1;i9oc29;dYtisf6;aEeBive0oAus7;a4l2;assu4defi9fres7ig9juve07mai9s0vAwar3;ea2italiAol1G;si1zi1;gi1ll6mb2vi1;a6eDier23lun1VrAun2C;eBoA;mi5vo1Z;ce3s5vai2;n3rpleA;xi1;ffCpWutBverAwi1;arc7lap04p0Pri3whel8;goi1l6st1J;en3sA;et0;m2Jrtu4;aEeDiCoBuAyst0L;mb2;t1Jvi1;s5tiga0;an1Rl0n3smeri26;dAtu4;de9;aCeaBiAo0U;fesa0Tvi1;di1ni1;c1Fg19s0;llumiGmFnArri0R;cDfurHsCtBviA;go23ti1;e1Oimi21oxica0rig0V;pi4ul0;orpo20r0K;po5;na0;eaBorr02umilA;ia0;li1rtwar8;lFrA;atiDipCoBuelA;i1li1;undbrea10wi1;pi1;f6ng;a4ea8;a3etc7it0lEoCrBulfA;il2;ee1FighXust1L;rAun3;ebo3thco8;aCoA;a0wA;e4i1;mi1tte4;lectrJmHnExA;aCci0hBis0pA;an3lo3;aOila1B;c0spe1A;ab2coura0CdBergi13ga0Clive9ric7s02tA;hral2i0J;ea4u4;barras5er09pA;owe4;if6;aQeIiBrA;if0;sAzz6;aEgDhearCsen0tA;rAur11;ac0es5;te9;us0;ppoin0r8;biliGcDfi9gra3ligh0mBpres5sAvasG;erE;an3ea9orA;ali0L;a6eiBli9rA;ea5;vi1;ta0;maPri1s7un0zz2;aPhMlo5oAripp2ut0;mGnArrespon3;cer9fDspi4tA;inBrA;as0ibu0ol2;ui1;lic0u5;ni1;fDmCpA;eAromi5;l2ti1;an3;or0;aAil2;llenAnAr8;gi1;l8ptAri1;iva0;aff2eGin3lFoDrBuA;d3st2;eathtaAui5;ki1;gg2i2o8ri1unA;ci1;in3;co8wiA;lAtc7;de4;bsorVcOgonMlJmHnno6ppea2rFsA;pi4su4toA;nBun3;di1;is7;hi1;res0;li1;aFu5;si1;ar8lu4;ri1;mi1;iAzi1;zi1;cAhi1;eleDomA;moBpan6;yi1;da0;ra0;ti1;bi1;ng",Comparable:"true¦0:3C;1:3Q;2:3F;a3Tb3Cc33d2Te2Mf2Ag1Wh1Li1Fj1Ek1Bl13m0Xn0So0Rp0Iqu0Gr07sHtCug0vAw4y3za0Q;el10ouN;ary,e6hi5i3ry;ck0Cde,l3n1ry,se;d,y;ny,te;a3i3R;k,ry;a3erda2ulgar;gue,in,st;a6en2Xhi5i4ouZr3;anqu2Cen1ue;dy,g36me0ny;ck,rs28;ll,me,rt,wd3I;aRcaPeOhMiLkin0BlImGoEpDt6u4w3;eet,ift;b3dd0Wperfi21rre28;sta26t21;a8e7iff,r4u3;pUr1;a4ict,o3;ng;ig2Vn0N;a1ep,rn;le,rk,te0;e1Si2Vright0;ci1Yft,l3on,re;emn,id;a3el0;ll,rt;e4i3y;g2Mm0Z;ek,nd2T;ck24l0mp1L;a3iRrill,y;dy,l01rp;ve0Jxy;n1Jr3;ce,y;d,fe,int0l1Hv0V;a8e6i5o3ude;mantic,o19sy,u3;gh;pe,t1P;a3d,mo0A;dy,l;gg4iFndom,p3re,w;id;ed;ai2i3;ck,et;hoAi1Fl9o8r5u3;ny,r3;e,p11;egna2ic4o3;fouSud;ey,k0;liXor;ain,easa2;ny;dd,i0ld,ranL;aive,e5i4o3u14;b0Sisy,rm0Ysy;bb0ce,mb0R;a3r1w;r,t;ad,e5ild,o4u3;nda12te;ist,o1;a4ek,l3;low;s0ty;a8e7i6o3ucky;f0Jn4o15u3ve0w10y0N;d,sy;e0g;ke0l,mp,tt0Eve0;e1Qwd;me,r3te;ge;e4i3;nd;en;ol0ui19;cy,ll,n3;secu6t3;e3ima4;llege2rmedia3;te;re;aAe7i6o5u3;ge,m3ng1C;bYid;me0t;gh,l0;a3fXsita2;dy,rWv3;en0y;nd13ppy,r3;d3sh;!y;aFenEhCiBlAoofy,r3;a8e6i5o3ue0Z;o3ss;vy;m,s0;at,e3y;dy,n;nd,y;ad,ib,ooD;a2d1;a3o3;st0;tDuiS;u1y;aCeebBi9l8o6r5u3;ll,n3r0N;!ny;aCesh,iend0;a3nd,rmD;my;at,ir7;erce,nan3;ci9;le;r,ul3;ty;a6erie,sse4v3xtre0B;il;nti3;al;r4s3;tern,y;ly,th0;appZe9i5ru4u3;mb;nk;r5vi4z3;zy;ne;e,ty;a3ep,n9;d3f,r;!ly;agey,h8l7o5r4u3;dd0r0te;isp,uel;ar3ld,mmon,st0ward0zy;se;evKou1;e3il0;ap,e3;sy;aHiFlCoAr5u3;ff,r0sy;ly;a6i3oad;g4llia2;nt;ht;sh,ve;ld,un3;cy;a4o3ue;nd,o1;ck,nd;g,tt3;er;d,ld,w1;dy;bsu6ng5we3;so3;me;ry;rd",Adverb:"true¦a08b05d00eYfSheQinPjustOkinda,likewiZmMnJoEpCquite,r9s5t2u0very,well;ltima01p0; to,wards5;h1iny bit,o0wiO;o,t6;en,us;eldom,o0uch;!me1rt0; of;how,times,w0C;a1e0;alS;ndomRth05;ar excellenEer0oint blank; Lhaps;f3n0utright;ce0ly;! 0;ag05moX; courGten;ewJo0; longWt 0;onHwithstand9;aybe,eanwhiNore0;!ovT;! aboX;deed,steY;lla,n0;ce;or3u0;ck1l9rther0;!moK;ing; 0evK;exampCgood,suH;n mas0vI;se;e0irect2; 2fini0;te0;ly;juAtrop;ackward,y 0;far,no0; means,w; GbroFd nauseam,gEl7ny5part,s4t 2w0;ay,hi0;le;be7l0mo7wor7;arge,ea6; soon,i4;mo0way;re;l 3mo2ongsi1ready,so,togeth0ways;er;de;st;b1t0;hat;ut;ain;ad;lot,posteriori",Conjunction:"true¦aXbTcReNhowMiEjust00noBo9p8supposing,t5wh0yet;e1il0o3;e,st;n1re0thN; if,by,vM;evL;h0il,o;erefOo0;!uU;lus,rovided th9;r0therwiM;! not; mattEr,w0;! 0;since,th4w7;f4n0; 0asmuch;as mIcaForder t0;h0o;at;! 0;only,t0w0;hen;!ev3;ith2ven0;! 0;if,tB;er;o0uz;s,z;e0ut,y the time;cau1f0;ore;se;lt3nd,s 0;far1if,m0soon1t2;uch0; as;hou0;gh",Currency:"true¦$,aud,bQcOdJeurIfHgbp,hkd,iGjpy,kElDp8r7s3usd,x2y1z0¢,£,¥,ден,лв,руб,฿,₡,₨,€,₭,﷼;lotyQł;en,uanP;af,of;h0t5;e0il5;k0q0;elK;oubleJp,upeeJ;e2ound st0;er0;lingG;n0soF;ceEnies;empi7i7;n,r0wanzaCyatC;!onaBw;ls,nr;ori7ranc9;!os;en3i2kk,o0;b0ll2;ra5;me4n0rham4;ar3;e0ny;nt1;aht,itcoin0;!s",Determiner:"true¦aBboth,d9e6few,le5mu8neiDplenty,s4th2various,wh0;at0ich0;evC;a0e4is,ose;!t;everal,ome;!ast,s;a1l0very;!se;ch;e0u;!s;!n0;!o0y;th0;er","Adj|Present":"true¦a07b04cVdQeNfJhollIidRlEmCnarrIoBp9qua8r7s3t2uttFw0;aKet,ro0;ng,u08;endChin;e2hort,l1mooth,our,pa9tray,u0;re,speU;i2ow;cu6da02leSpaN;eplica01i02;ck;aHerfePr0;eseUime,omV;bscu1pen,wn;atu0e3odeH;re;a2e1ive,ow0;er;an;st,y;ow;a2i1oul,r0;ee,inge;rm;iIke,ncy,st;l1mpty,x0;emHpress;abo4ic7;amp,e2i1oub0ry,ull;le;ffu9re6;fu8libe0;raE;alm,l5o0;mpleCn3ol,rr1unterfe0;it;e0u7;ct;juga8sum7;ea1o0;se;n,r;ankru1lu0;nt;pt;li2pproxi0rticula1;ma0;te;ght","Person|Adj":"true¦b3du2earnest,frank,mi2r0san1woo1;an0ich,u1;dy;sty;ella,rown",Modal:"true¦c5lets,m4ought3sh1w0;ill,o5;a0o4;ll,nt;! to,a;ight,ust;an,o0;uld",Verb:"true¦born,cannot,gonna,has,keep tabs,msg","Person|Verb":"true¦b8ch7dr6foster,gra5ja9lan4ma2ni9ollie,p1rob,s0wade;kip,pike,t5ue;at,eg,ier2;ck,r0;k,shal;ce;ce,nt;ew;ase,u1;iff,l1ob,u0;ck;aze,ossom","Person|Date":"true¦a2j0sep;an0une;!uary;p0ugust,v0;ril"};var Ot={exports:{}},Wp=Ot.exports,Fo;function qp(){return Fo||(Fo=1,(function(e,t){(function(n,r){r(t)})(Wp,(function(n){var r={commonPrefix:function(h,p){let m=Math.min(h.length,p.length);for(;m>0;){const v=h.slice(0,m);if(v===p.slice(0,m))return v;m-=1}return""},unique:function(h){h.sort();for(let p=1;p<h.length;p++)h[p-1]===h[p]&&h.splice(p,1)}};const o=function(){this.counts={}},a={init:function(h){this.counts[h]===void 0&&(this.counts[h]=0)},add:function(h,p){p===void 0&&(p=1),this.init(h),this.counts[h]+=p},countOf:function(h){return this.init(h),this.counts[h]},highest:function(h){let p=[];const m=Object.keys(this.counts);for(let v=0;v<m.length;v++){const A=m[v];p.push([A,this.counts[A]])}return p.sort(function(v,A){return A[1]-v[1]}),h&&(p=p.slice(0,h)),p}};Object.keys(a).forEach(function(h){o.prototype[h]=a[h]});const i=36,s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",u=s.split("").reduce(function(h,p,m){return h[p]=m,h},{});var l={toAlphaCode:function(h){if(s[h]!==void 0)return s[h];let p=1,m=i,v="";for(;h>=m;h-=m,p++,m*=i);for(;p--;){const A=h%i;v=String.fromCharCode((A<10?48:55)+A)+v,h=(h-A)/i}return v},fromAlphaCode:function(h){if(u[h]!==void 0)return u[h];let p=0,m=1,v=i,A=1;for(;m<h.length;p+=v,m++,v*=i);for(let P=h.length-1;P>=0;P--,A*=i){let H=h.charCodeAt(P)-48;H>10&&(H-=7),p+=H*A}return p}};const c={NODE_SEP:";",KEY_VAL:":",STRING_SEP:",",TERMINAL_PREFIX:"!",BASE:36},d=function(h,p){let m="",v="";h.isTerminal(p)&&(m+=c.TERMINAL_PREFIX);const A=h.nodeProps(p);for(let P=0;P<A.length;P++){const H=A[P];if(typeof p[H]=="number"){m+=v+H,v=c.STRING_SEP;continue}if(h.syms[p[H]._n]){m+=v+H+h.syms[p[H]._n],v="";continue}let ze=l.toAlphaCode(p._n-p[H]._n-1+h.symCount);if(p[H]._g&&ze.length>=p[H]._g.length&&p[p[H]._g]===1){ze=p[H]._g,m+=v+H+ze,v=c.STRING_SEP;continue}m+=v+H+ze,v=""}return m},g=function(h,p){if(h.visited(p))return;const m=h.nodeProps(p,!0);for(let v=0;v<m.length;v++){const A=m[v],P=p._n-p[A]._n-1;P<c.BASE&&h.histRel.add(P),h.histAbs.add(p[A]._n,l.toAlphaCode(P).length-1),g(h,p[A])}},x=function(h){h.histAbs=h.histAbs.highest(c.BASE);const p=[];p[-1]=0;let m=0,v=0;const A=3+l.toAlphaCode(h.nodeCount).length;for(let P=0;P<c.BASE&&h.histAbs[P]!==void 0;P++)p[P]=h.histAbs[P][1]-A-h.histRel.countOf(c.BASE-P-1)+p[P-1],p[P]>=m&&(m=p[P],v=P+1);return v},G=function(h,p){if(p._n!==void 0)return;const m=h.nodeProps(p,!0);for(let v=0;v<m.length;v++)G(h,p[m[v]]);p._n=h.pos++,h.nodes.unshift(p)},U=function(h){h.nodes=[],h.nodeCount=0,h.syms={},h.symCount=0,h.pos=0,h.optimize(),h.histAbs=new o,h.histRel=new o,G(h,h.root),h.nodeCount=h.nodes.length,h.prepDFS(),g(h,h.root),h.symCount=x(h);for(let p=0;p<h.symCount;p++)h.syms[h.histAbs[p][0]]=l.toAlphaCode(p);for(let p=0;p<h.nodeCount;p++)h.nodes[p]=d(h,h.nodes[p]);for(let p=h.symCount-1;p>=0;p--)h.nodes.unshift(l.toAlphaCode(p)+c.KEY_VAL+l.toAlphaCode(h.nodeCount-h.histAbs[p][0]-1));return h.nodes.join(c.NODE_SEP)},xe=new RegExp("[0-9A-Z,;!:|¦]"),Ce={_d:!0,_v:!0,_c:!0,_g:!0,_n:!0},L={insertWords:function(h){if(h!==void 0){typeof h=="string"&&(h=h.split(/[^a-zA-Z]+/));for(let p=0;p<h.length;p++)h[p]=h[p].toLowerCase();r.unique(h);for(let p=0;p<h.length;p++)h[p].match(xe)===null&&this.insert(h[p])}},insert:function(h){this._insert(h,this.root);const p=this.lastWord;if(this.lastWord=h,r.commonPrefix(h,p)===p)return;const m=this.uniqueNode(p,h,this.root);m&&this.combineSuffixNode(m)},_insert:function(h,p){let m,v;if(h.length===0)return;const A=Object.keys(p);for(let P=0;P<A.length;P++){const H=A[P];if(m=r.commonPrefix(h,H),m.length!==0){if(H===m&&typeof p[H]=="object"){this._insert(h.slice(m.length),p[H]);return}if(H===h&&typeof p[H]=="number")return;v={},v[H.slice(m.length)]=p[H],this.addTerminal(v,h=h.slice(m.length)),delete p[H],p[m]=v,this.wordCount++;return}}this.addTerminal(p,h),this.wordCount++},addTerminal:function(h,p){if(p.length<=1){h[p]=1;return}const m={};h[p[0]]=m,this.addTerminal(m,p.slice(1))},nodeProps:function(h,p){const m=[];for(const v in h)v!==""&&!Ce.hasOwnProperty(v)&&(!p||typeof h[v]=="object")&&m.push(v);return m.sort(),m},optimize:function(){this.combineSuffixNode(this.root),this.prepDFS(),this.countDegree(this.root),this.prepDFS(),this.collapseChains(this.root)},combineSuffixNode:function(h){if(h._c)return h;let p=[];this.isTerminal(h)&&p.push("!");const m=this.nodeProps(h);for(let A=0;A<m.length;A++){const P=m[A];typeof h[P]=="object"?(h[P]=this.combineSuffixNode(h[P]),p.push(P),p.push(h[P]._c)):p.push(P)}return p=p.join("-"),this.suffixes[p]||(this.suffixes[p]=h,h._c=this.cNext++,h)},prepDFS:function(){this.vCur++},visited:function(h){return h._v===this.vCur?!0:(h._v=this.vCur,!1)},countDegree:function(h){if(h._d===void 0&&(h._d=0),h._d++,this.visited(h))return;const p=this.nodeProps(h,!0);for(let m=0;m<p.length;m++)this.countDegree(h[p[m]])},collapseChains:function(h){let p,m,v;if(this.visited(h))return;const A=this.nodeProps(h);for(v=0;v<A.length;v++)p=A[v],m=h[p],typeof m=="object"&&(this.collapseChains(m),m._g!==void 0&&(m._d===1||m._g.length===1)&&(delete h[p],p+=m._g,h[p]=m[m._g]));A.length===1&&!this.isTerminal(h)&&(h._g=p)},isTerminal:function(h){return!!h[""]},uniqueNode:function(h,p,m){const v=this.nodeProps(m,!0);for(let A=0;A<v.length;A++){const P=v[A];if(P===h.slice(0,P.length))return P!==p.slice(0,P.length)?m[P]:this.uniqueNode(h.slice(P.length),p.slice(P.length),m[P])}},pack:function(){return U(this)}},le=function(h){this.root={},this.lastWord="",this.suffixes={},this.suffixCounts={},this.cNext=1,this.wordCount=0,this.insertWords(h),this.vCur=0};Object.keys(L).forEach(function(h){le.prototype[h]=L[h]});const ge=function(h){return Object.prototype.toString.call(h)==="[object Array]"},$=function(h){return h==null?{}:typeof h=="string"?h.split(/ +/g).reduce(function(p,m){return p[m]=!0,p},{}):ge(h)?h.reduce(function(p,m){return p[m]=!0,p},{}):h},y=function(h){h=$(h);const p=Object.keys(h).reduce(function(m,v){const A=h[v];if(ge(A)){for(let P=0;P<A.length;P++)m[A[P]]=m[A[P]]||[],m[A[P]].push(v);return m}return m.hasOwnProperty(A)===!1&&Object.defineProperty(m,A,{writable:!0,enumerable:!0,configurable:!0,value:[]}),m[A].push(v),m},{});return Object.keys(p).forEach(function(m){const v=new le(p[m]);p[m]=v.pack()}),Object.keys(p).map(m=>m+"¦"+p[m]).join("|")},k=function(h){const p=new RegExp("([0-9A-Z]+):([0-9A-Z]+)");for(let m=0;m<h.nodes.length;m++){const v=p.exec(h.nodes[m]);if(!v){h.symCount=m;break}h.syms[l.fromAlphaCode(v[1])]=l.fromAlphaCode(v[2])}h.nodes=h.nodes.slice(h.symCount,h.nodes.length)},N=function(h,p,m){const v=l.fromAlphaCode(p);return v<h.symCount?h.syms[v]:m+v+1-h.symCount},C=function(h){const p=[],m=(v,A)=>{let P=h.nodes[v];P[0]==="!"&&(p.push(A),P=P.slice(1));const H=P.split(/([A-Z0-9,]+)/g);for(let ze=0;ze<H.length;ze+=2){const Wr=H[ze],Fn=H[ze+1];if(!Wr)continue;const qr=A+Wr;if(Fn===","||Fn===void 0){p.push(qr);continue}const ds=N(h,Fn,v);m(ds,qr)}};return m(0,""),p},D=function(h){const p={nodes:h.split(";"),syms:[],symCount:0};return h.match(":")&&k(p),C(p)},V=function(h){if(!h)return{};const p=h.split("|").reduce((v,A)=>{const P=A.split("¦");return v[P[0]]=P[1],v},{}),m={};return Object.keys(p).forEach(function(v){const A=D(p[v]);v==="true"&&(v=!0);for(let P=0;P<A.length;P++){const H=A[P];m.hasOwnProperty(H)===!0?Array.isArray(m[H])===!1?m[H]=[m[H],v]:m[H].push(v):m[H]=v}}),m};var ee="2.7.0";n.pack=y,n.unpack=V,n.version=ee,Object.defineProperty(n,"__esModule",{value:!0})}))})(Ot,Ot.exports)),Ot.exports}var Rp=qp();const je=["Possessive","Pronoun"],Up={"20th century fox":"Organization","7 eleven":"Organization","motel 6":"Organization",g8:"Organization",vh1:"Organization","76ers":"SportsTeam","49ers":"SportsTeam",q1:"Date",q2:"Date",q3:"Date",q4:"Date",km2:"Unit",m2:"Unit",dm2:"Unit",cm2:"Unit",mm2:"Unit",mile2:"Unit",in2:"Unit",yd2:"Unit",ft2:"Unit",m3:"Unit",dm3:"Unit",cm3:"Unit",in3:"Unit",ft3:"Unit",yd3:"Unit","at&t":"Organization","black & decker":"Organization","h & m":"Organization","johnson & johnson":"Organization","procter & gamble":"Organization","ben & jerry's":"Organization","&":"Conjunction",i:["Pronoun","Singular"],he:["Pronoun","Singular"],she:["Pronoun","Singular"],it:["Pronoun","Singular"],they:["Pronoun","Plural"],we:["Pronoun","Plural"],was:["Copula","PastTense"],is:["Copula","PresentTense"],are:["Copula","PresentTense"],am:["Copula","PresentTense"],were:["Copula","PastTense"],her:je,his:je,hers:je,their:je,theirs:je,themselves:je,your:je,our:je,ours:je,my:je,its:je,vs:["Conjunction","Abbreviation"],if:["Condition","Preposition"],closer:"Comparative",closest:"Superlative",much:"Adverb",may:"Modal",babysat:"PastTense",blew:"PastTense",drank:"PastTense",drove:"PastTense",forgave:"PastTense",skiied:"PastTense",spilt:"PastTense",stung:"PastTense",swam:"PastTense",swung:"PastTense",guaranteed:"PastTense",shrunk:"PastTense",nears:"PresentTense",nearing:"Gerund",neared:"PastTense",no:["Negative","Expression"]},_p={"20th century fox":"Organization","7 eleven":"Organization","motel 6":"Organization","excuse me":"Expression","financial times":"Organization","guns n roses":"Organization","la z boy":"Organization","labour party":"Organization","new kids on the block":"Organization","new york times":"Organization","the guess who":"Organization","thin lizzy":"Organization","prime minister":"Actor","free market":"Singular","lay up":"Singular","living room":"Singular","living rooms":"Plural","spin off":"Singular","appeal court":"Uncountable","cold war":"Uncountable","gene pool":"Uncountable","machine learning":"Uncountable","nail polish":"Uncountable","time off":"Uncountable","take part":"Infinitive","bill gates":"Person","doctor who":"Person","dr who":"Person","he man":"Person","iron man":"Person","kid cudi":"Person","run dmc":"Person","rush limbaugh":"Person","snow white":"Person","tiger woods":"Person","brand new":"Adjective","en route":"Adjective","left wing":"Adjective","off guard":"Adjective","on board":"Adjective","part time":"Adjective","right wing":"Adjective","so called":"Adjective","spot on":"Adjective","straight forward":"Adjective","super duper":"Adjective","tip top":"Adjective","top notch":"Adjective","up to date":"Adjective","win win":"Adjective","brooklyn nets":"SportsTeam","chicago bears":"SportsTeam","houston astros":"SportsTeam","houston dynamo":"SportsTeam","houston rockets":"SportsTeam","houston texans":"SportsTeam","minnesota twins":"SportsTeam","orlando magic":"SportsTeam","san antonio spurs":"SportsTeam","san diego chargers":"SportsTeam","san diego padres":"SportsTeam","iron maiden":"ProperNoun","isle of man":"Country","united states":"Country","united states of america":"Country","prince edward island":"Region","cedar breaks":"Place","cedar falls":"Place","point blank":"Adverb","tiny bit":"Adverb","by the time":"Conjunction","no matter":"Conjunction","civil wars":"Plural","credit cards":"Plural","default rates":"Plural","free markets":"Plural","head starts":"Plural","home runs":"Plural","lay ups":"Plural","phone calls":"Plural","press releases":"Plural","record labels":"Plural","soft serves":"Plural","student loans":"Plural","tax returns":"Plural","tv shows":"Plural","video games":"Plural","took part":"PastTense","takes part":"PresentTense","taking part":"Gerund","taken part":"Participle","light bulb":"Noun","rush hour":"Noun","fluid ounce":"Unit","the rolling stones":"Organization"},Qp=[":(",":)",":P",":p",":O",";(",";)",";P",";p",";O",":3",":|",":/",":\\",":$",":*",":@",":-(",":-)",":-P",":-p",":-O",":-3",":-|",":-/",":-\\",":-$",":-*",":-@",":^(",":^)",":^P",":^p",":^O",":^3",":^|",":^/",":^\\",":^$",":^*",":^@","):","(:","$:","*:",")-:","(-:","$-:","*-:",")^:","(^:","$^:","*^:","<3","</3","<\\3","=("],Xt={a:[[/(antenn|formul|nebul|vertebr|vit)a$/i,"$1ae"],[/ia$/i,"ia"]],e:[[/(kn|l|w)ife$/i,"$1ives"],[/(hive)$/i,"$1s"],[/([m|l])ouse$/i,"$1ice"],[/([m|l])ice$/i,"$1ice"]],f:[[/^(dwar|handkerchie|hoo|scar|whar)f$/i,"$1ves"],[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)f$/i,"$1ves"]],i:[[/(octop|vir)i$/i,"$1i"]],m:[[/([ti])um$/i,"$1a"]],n:[[/^(oxen)$/i,"$1"]],o:[[/(al|ad|at|er|et|ed)o$/i,"$1oes"]],s:[[/(ax|test)is$/i,"$1es"],[/(alias|status)$/i,"$1es"],[/sis$/i,"ses"],[/(bu)s$/i,"$1ses"],[/(sis)$/i,"ses"],[/^(?!talis|.*hu)(.*)man$/i,"$1men"],[/(octop|vir|radi|nucle|fung|cact|stimul)us$/i,"$1i"]],x:[[/(matr|vert|ind|cort)(ix|ex)$/i,"$1ices"],[/^(ox)$/i,"$1en"]],y:[[/([^aeiouy]|qu)y$/i,"$1ies"]],z:[[/(quiz)$/i,"$1zes"]]},Zp=/([xsz]|ch|sh)$/,Xp=function(e){const t=e[e.length-1];if(Xt.hasOwnProperty(t)===!0)for(let n=0;n<Xt[t].length;n+=1){const r=Xt[t][n][0];if(r.test(e)===!0)return e.replace(r,Xt[t][n][1])}return null},Gn=function(e="",t){const{irregularPlurals:n,uncountable:r}=t.two;if(r.hasOwnProperty(e))return e;if(n.hasOwnProperty(e))return n[e];const o=Xp(e);return o!==null?o:Zp.test(e)?e+"es":e+"s"},Yp=/\|/,Nt=Up,gr={},eg={two:{irregularPlurals:Oi,uncountable:{}}};Object.keys(Oo).forEach(e=>{const t=Rp.unpack(Oo[e]);if(!Yp.test(e)){Object.keys(t).forEach(n=>{Nt[n]=e});return}Object.keys(t).forEach(n=>{if(gr[n]=e,e==="Noun|Verb"){const r=Gn(n,eg);gr[r]="Plural|Verb"}})});Qp.forEach(e=>Nt[e]="Emoticon");delete Nt[""];delete Nt[null];delete Nt[" "];const f="Singular",R={beforeTags:{Determiner:f,Possessive:f,Acronym:f,Noun:f,Adjective:f,PresentTense:f,Gerund:f,PastTense:f,Infinitive:f,Date:f,Ordinal:f,Demonym:f},afterTags:{Value:f,Modal:f,Copula:f,PresentTense:f,PastTense:f,Demonym:f,Actor:f},beforeWords:{the:f,with:f,without:f,of:f,for:f,any:f,all:f,on:f,cut:f,cuts:f,increase:f,decrease:f,raise:f,drop:f,save:f,saved:f,saves:f,make:f,makes:f,made:f,minus:f,plus:f,than:f,another:f,versus:f,neither:f,about:f,favorite:f,best:f,daily:f,weekly:f,linear:f,binary:f,mobile:f,lexical:f,technical:f,computer:f,scientific:f,security:f,government:f,popular:f,formal:f,no:f,more:f,one:f,let:f,her:f,his:f,their:f,our:f,us:f,sheer:f,monthly:f,yearly:f,current:f,previous:f,upcoming:f,last:f,next:f,main:f,initial:f,final:f,beginning:f,end:f,top:f,bottom:f,future:f,past:f,major:f,minor:f,side:f,central:f,peripheral:f,public:f,private:f},afterWords:{of:f,system:f,aid:f,method:f,utility:f,tool:f,reform:f,therapy:f,philosophy:f,room:f,authority:f,says:f,said:f,wants:f,wanted:f,is:f,did:f,do:f,can:f,wise:f}},b="Infinitive",ue={beforeTags:{Modal:b,Adverb:b,Negative:b,Plural:b},afterTags:{Determiner:b,Adverb:b,Possessive:b,Reflexive:b,Preposition:b,Cardinal:b,Comparative:b,Superlative:b},beforeWords:{i:b,we:b,you:b,they:b,to:b,please:b,will:b,have:b,had:b,would:b,could:b,should:b,do:b,did:b,does:b,can:b,must:b,us:b,me:b,let:b,even:b,when:b,help:b,he:b,she:b,it:b,being:b,bi:b,co:b,contra:b,de:b,inter:b,intra:b,mis:b,pre:b,out:b,counter:b,nobody:b,somebody:b,anybody:b,everybody:b},afterWords:{the:b,me:b,you:b,him:b,us:b,her:b,his:b,them:b,they:b,it:b,himself:b,herself:b,itself:b,myself:b,ourselves:b,themselves:b,something:b,anything:b,a:b,an:b,up:b,down:b,by:b,out:b,off:b,under:b,what:b,all:b,to:b,because:b,although:b,how:b,otherwise:b,together:b,though:b,into:b,yet:b,more:b,here:b,there:b,away:b}},tg={beforeTags:Object.assign({},ue.beforeTags,R.beforeTags,{}),afterTags:Object.assign({},ue.afterTags,R.afterTags,{}),beforeWords:Object.assign({},ue.beforeWords,R.beforeWords,{}),afterWords:Object.assign({},ue.afterWords,R.afterWords,{})},w="Adjective",X={beforeTags:{Determiner:w,Possessive:w,Hyphenated:w},afterTags:{Adjective:w},beforeWords:{seem:w,seemed:w,seems:w,feel:w,feels:w,felt:w,stay:w,appear:w,appears:w,appeared:w,also:w,over:w,under:w,too:w,it:w,but:w,still:w,really:w,quite:w,well:w,very:w,truly:w,how:w,deeply:w,hella:w,profoundly:w,extremely:w,so:w,badly:w,mostly:w,totally:w,awfully:w,rather:w,nothing:w,something:w,anything:w,not:w,me:w,is:w,face:w,faces:w,faced:w,look:w,looks:w,looked:w,reveal:w,reveals:w,revealed:w,sound:w,sounded:w,sounds:w,remains:w,remained:w,prove:w,proves:w,proved:w,becomes:w,stays:w,tastes:w,taste:w,smells:w,smell:w,gets:w,grows:w,as:w,rings:w,radiates:w,conveys:w,convey:w,conveyed:w,of:w},afterWords:{too:w,also:w,or:w,enough:w,as:w}},j="Gerund",et={beforeTags:{Adverb:j,Preposition:j,Conjunction:j},afterTags:{Adverb:j,Possessive:j,Person:j,Pronoun:j,Determiner:j,Copula:j,Preposition:j,Conjunction:j,Comparative:j},beforeWords:{been:j,keep:j,continue:j,stop:j,am:j,be:j,me:j,began:j,start:j,starts:j,started:j,stops:j,stopped:j,help:j,helps:j,avoid:j,avoids:j,love:j,loves:j,loved:j,hate:j,hates:j,hated:j},afterWords:{you:j,me:j,her:j,him:j,his:j,them:j,their:j,it:j,this:j,there:j,on:j,about:j,for:j,up:j,down:j}},F="Gerund",Qe="Adjective",ng={beforeTags:Object.assign({},X.beforeTags,et.beforeTags,{Imperative:F,Infinitive:Qe,Plural:F}),afterTags:Object.assign({},X.afterTags,et.afterTags,{Noun:Qe}),beforeWords:Object.assign({},X.beforeWords,et.beforeWords,{is:Qe,are:F,was:Qe,of:Qe,suggest:F,suggests:F,suggested:F,recommend:F,recommends:F,recommended:F,imagine:F,imagines:F,imagined:F,consider:F,considered:F,considering:F,resist:F,resists:F,resisted:F,avoid:F,avoided:F,avoiding:F,except:Qe,accept:Qe,assess:F,explore:F,fear:F,fears:F,appreciate:F,question:F,help:F,embrace:F,with:Qe}),afterWords:Object.assign({},X.afterWords,et.afterWords,{to:F,not:F,the:F})},Vo={beforeTags:{Determiner:void 0,Cardinal:"Noun",PhrasalVerb:"Adjective"},afterTags:{}},rg={beforeTags:Object.assign({},X.beforeTags,R.beforeTags,Vo.beforeTags),afterTags:Object.assign({},X.afterTags,R.afterTags,Vo.afterTags),beforeWords:Object.assign({},X.beforeWords,R.beforeWords,{are:"Adjective",is:"Adjective",was:"Adjective",be:"Adjective",off:"Adjective",out:"Adjective"}),afterWords:Object.assign({},X.afterWords,R.afterWords)},I="PastTense",Ht="Adjective",Yt={beforeTags:{Adverb:I,Pronoun:I,ProperNoun:I,Auxiliary:I,Noun:I},afterTags:{Possessive:I,Pronoun:I,Determiner:I,Adverb:I,Comparative:I,Date:I,Gerund:I},beforeWords:{be:I,who:I,get:Ht,had:I,has:I,have:I,been:I,it:I,as:I,for:Ht,more:Ht,always:Ht},afterWords:{by:I,back:I,out:I,in:I,up:I,down:I,before:I,after:I,for:I,the:I,with:I,as:I,on:I,at:I,between:I,to:I,into:I,us:I,them:I,his:I,her:I,their:I,our:I,me:I,about:Ht}},og={beforeTags:Object.assign({},X.beforeTags,Yt.beforeTags),afterTags:Object.assign({},X.afterTags,Yt.afterTags),beforeWords:Object.assign({},X.beforeWords,Yt.beforeWords),afterWords:Object.assign({},X.afterWords,Yt.afterWords)},ag={afterTags:{Noun:"Adjective",Conjunction:void 0}},ig={beforeTags:Object.assign({},X.beforeTags,ue.beforeTags,{Adverb:void 0,Negative:void 0}),afterTags:Object.assign({},X.afterTags,ue.afterTags,ag.afterTags),beforeWords:Object.assign({},X.beforeWords,ue.beforeWords,{have:void 0,had:void 0,not:void 0,went:"Adjective",goes:"Adjective",got:"Adjective",be:"Adjective"}),afterWords:Object.assign({},X.afterWords,ue.afterWords,{to:void 0,as:"Adjective"})},en={beforeTags:{Copula:"Gerund",PastTense:"Gerund",PresentTense:"Gerund",Infinitive:"Gerund"},afterTags:{Value:"Gerund"},beforeWords:{are:"Gerund",were:"Gerund",be:"Gerund",no:"Gerund",without:"Gerund",you:"Gerund",we:"Gerund",they:"Gerund",he:"Gerund",she:"Gerund",us:"Gerund",them:"Gerund"},afterWords:{the:"Gerund",this:"Gerund",that:"Gerund",me:"Gerund",us:"Gerund",them:"Gerund"}},sg={beforeTags:Object.assign({},et.beforeTags,R.beforeTags,en.beforeTags),afterTags:Object.assign({},et.afterTags,R.afterTags,en.afterTags),beforeWords:Object.assign({},et.beforeWords,R.beforeWords,en.beforeWords),afterWords:Object.assign({},et.afterWords,R.afterWords,en.afterWords)},pt="Singular",nt="Infinitive",ug={beforeTags:Object.assign({},ue.beforeTags,R.beforeTags,{Adjective:pt,Particle:pt}),afterTags:Object.assign({},ue.afterTags,R.afterTags,{ProperNoun:nt,Gerund:nt,Adjective:nt,Copula:pt}),beforeWords:Object.assign({},ue.beforeWords,R.beforeWords,{is:pt,was:pt,of:pt,have:null}),afterWords:Object.assign({},ue.afterWords,R.afterWords,{instead:nt,about:nt,his:nt,her:nt,to:null,by:null,in:null})},B="Person",Y={beforeTags:{Honorific:B,Person:B},afterTags:{Person:B,ProperNoun:B,Verb:B},beforeWords:{hi:B,hey:B,yo:B,dear:B,hello:B},afterWords:{said:B,says:B,told:B,tells:B,feels:B,felt:B,seems:B,thinks:B,thought:B,spends:B,spendt:B,plays:B,played:B,sing:B,sang:B,learn:B,learned:B,wants:B,wanted:B}},W="Month",lg="Person",tn={beforeTags:{Date:W,Value:W},afterTags:{Date:W,Value:W},beforeWords:{by:W,in:W,on:W,during:W,after:W,before:W,between:W,until:W,til:W,sometime:W,of:W,this:W,next:W,last:W,previous:W,following:W,with:lg},afterWords:{sometime:W,in:W,of:W,until:W,the:W}},cg={beforeTags:Object.assign({},Y.beforeTags,tn.beforeTags),afterTags:Object.assign({},Y.afterTags,tn.afterTags),beforeWords:Object.assign({},Y.beforeWords,tn.beforeWords),afterWords:Object.assign({},Y.afterWords,tn.afterWords)},hg={beforeTags:Object.assign({},R.beforeTags,Y.beforeTags),afterTags:Object.assign({},R.afterTags,Y.afterTags),beforeWords:Object.assign({},R.beforeWords,Y.beforeWords,{i:"Infinitive",we:"Infinitive"}),afterWords:Object.assign({},R.afterWords,Y.afterWords)},dg={beforeTags:Object.assign({},R.beforeTags,Y.beforeTags,ue.beforeTags),afterTags:Object.assign({},R.afterTags,Y.afterTags,ue.afterTags),beforeWords:Object.assign({},R.beforeWords,Y.beforeWords,ue.beforeWords),afterWords:Object.assign({},R.afterWords,Y.afterWords,ue.afterWords)},oe="Place",nn={beforeTags:{Place:oe},afterTags:{Place:oe,Abbreviation:oe},beforeWords:{in:oe,by:oe,near:oe,from:oe,to:oe},afterWords:{in:oe,by:oe,near:oe,from:oe,to:oe,government:oe,council:oe,region:oe,city:oe}},pg={beforeTags:Object.assign({},nn.beforeTags,Y.beforeTags),afterTags:Object.assign({},nn.afterTags,Y.afterTags),beforeWords:Object.assign({},nn.beforeWords,Y.beforeWords),afterWords:Object.assign({},nn.afterWords,Y.afterWords)},gg={beforeTags:Object.assign({},Y.beforeTags,X.beforeTags),afterTags:Object.assign({},Y.afterTags,X.afterTags),beforeWords:Object.assign({},Y.beforeWords,X.beforeWords),afterWords:Object.assign({},Y.afterWords,X.afterWords)},ke="Unit",mg={beforeTags:{Value:ke},afterTags:{},beforeWords:{per:ke,every:ke,each:ke,square:ke,cubic:ke,sq:ke,metric:ke},afterWords:{per:ke,squared:ke,cubed:ke,long:ke}},kt={"Actor|Verb":tg,"Adj|Gerund":ng,"Adj|Noun":rg,"Adj|Past":og,"Adj|Present":ig,"Noun|Verb":ug,"Noun|Gerund":sg,"Person|Noun":hg,"Person|Date":cg,"Person|Verb":dg,"Person|Place":pg,"Person|Adj":gg,"Unit|Noun":mg},rn=(e,t)=>{const n=Object.keys(e).reduce((r,o)=>(r[o]=e[o]==="Infinitive"?"PresentTense":"Plural",r),{});return Object.assign(n,t)};kt["Plural|Verb"]={beforeWords:rn(kt["Noun|Verb"].beforeWords,{had:"Plural",have:"Plural"}),afterWords:rn(kt["Noun|Verb"].afterWords,{his:"PresentTense",her:"PresentTense",its:"PresentTense",in:null,to:null,is:"PresentTense",by:"PresentTense"}),beforeTags:rn(kt["Noun|Verb"].beforeTags,{Conjunction:"PresentTense",Noun:void 0,ProperNoun:"PresentTense"}),afterTags:rn(kt["Noun|Verb"].afterTags,{Gerund:"Plural",Noun:"PresentTense",Value:"PresentTense"})};const z="Adjective",te="Infinitive",rt="PresentTense",E="Singular",ne="PastTense",gt="Adverb",fe="Plural",_="Actor",on="Verb",ie="Noun",fg="ProperNoun",Ne="LastName",zo="Modal",S="Place",Wn="Participle",bg=[null,null,{ea:E,ia:ie,ic:z,ly:gt,"'n":on,"'t":on},{oed:ne,ued:ne,xed:ne," so":gt,"'ll":zo,"'re":"Copula",azy:z,eer:ie,end:on,ped:ne,ffy:z,ify:te,ing:"Gerund",ize:te,ibe:te,lar:z,mum:z,nes:rt,nny:z,ous:z,que:z,ger:ie,ber:ie,rol:E,sis:E,ogy:E,oid:E,ian:E,zes:rt,eld:ne,ken:Wn,ven:Wn,ten:Wn,ect:te,ict:te,ign:te,oze:te,ful:z,bal:z,ton:ie,pur:S},{amed:ne,aped:ne,ched:ne,lked:ne,rked:ne,reed:ne,nded:ne,mned:z,cted:ne,dged:ne,ield:E,akis:Ne,cede:te,chuk:Ne,czyk:Ne,ects:rt,iend:E,ends:on,enko:Ne,ette:E,iary:E,wner:E,fies:rt,fore:gt,gate:te,gone:z,ices:fe,ints:fe,ruct:te,ines:fe,ions:fe,ners:fe,pers:fe,lers:fe,less:z,llen:z,made:z,nsen:Ne,oses:rt,ould:zo,some:z,sson:Ne,ians:fe,tion:E,tage:ie,ique:E,tive:z,tors:ie,vice:E,lier:E,fier:E,wned:ne,gent:E,tist:_,pist:_,rist:_,mist:_,yist:_,vist:_,ists:_,lite:E,site:E,rite:E,mite:E,bite:E,mate:E,date:E,ndal:E,vent:E,uist:_,gist:_,note:E,cide:E,ence:E,wide:z,vide:te,ract:te,duce:te,pose:te,eive:te,lyze:te,lyse:te,iant:z,nary:z,ghty:z,uent:z,erer:_,bury:S,dorf:ie,esty:ie,wych:S,dale:S,folk:S,vale:S,abad:S,sham:S,wick:S,view:S},{elist:_,holic:E,phite:E,tized:ne,urned:ne,eased:ne,ances:fe,bound:z,ettes:fe,fully:gt,ishes:rt,ities:fe,marek:Ne,nssen:Ne,ology:ie,osome:E,tment:E,ports:fe,rough:z,tches:rt,tieth:"Ordinal",tures:fe,wards:gt,where:gt,archy:ie,pathy:ie,opoly:ie,embly:ie,phate:ie,ndent:E,scent:E,onist:_,anist:_,alist:_,olist:_,icist:_,ounce:te,iable:z,borne:z,gnant:z,inant:z,igent:z,atory:z,rient:E,dient:E,maker:_,burgh:S,mouth:S,ceter:S,ville:S,hurst:S,stead:S,endon:S,brook:S,shire:S,worth:ie,field:fg,ridge:S},{auskas:Ne,parent:E,cedent:E,ionary:E,cklist:E,brooke:S,keeper:_,logist:_,teenth:"Value",worker:_,master:_,writer:_,brough:S,cester:S,ington:S,cliffe:S,ingham:S},{chester:S,logists:_,opoulos:Ne,borough:S,sdottir:Ne}],be="Adjective",M="Noun",Gt="Verb",vg=[null,null,{},{neo:M,bio:M,"de-":Gt,"re-":Gt,"un-":Gt,"ex-":M},{anti:M,auto:M,faux:be,hexa:M,kilo:M,mono:M,nano:M,octa:M,poly:M,semi:be,tele:M,"pro-":be,"mis-":Gt,"dis-":Gt,"pre-":be},{anglo:M,centi:M,ethno:M,ferro:M,grand:M,hepta:M,hydro:M,intro:M,macro:M,micro:M,milli:M,nitro:M,penta:M,quasi:be,radio:M,tetra:M,"omni-":be,"post-":be},{pseudo:be,"extra-":be,"hyper-":be,"inter-":be,"intra-":be,"deca-":be},{electro:M}],q="Adjective",an="Infinitive",sn="PresentTense",Se="Singular",ce="PastTense",Bo="Adverb",Me="Expression",So="Actor",Mo="Verb",Lo="Noun",un="LastName",yg={a:[[/.[aeiou]na$/,Lo,"tuna"],[/.[oau][wvl]ska$/,un],[/.[^aeiou]ica$/,Se,"harmonica"],[/^([hyj]a+)+$/,Me,"haha"]],c:[[/.[^aeiou]ic$/,q]],d:[[/[aeiou](pp|ll|ss|ff|gg|tt|rr|bb|nn|mm)ed$/,ce,"popped"],[/.[aeo]{2}[bdgmnprvz]ed$/,ce,"rammed"],[/.[aeiou][sg]hed$/,ce,"gushed"],[/.[aeiou]red$/,ce,"hired"],[/.[aeiou]r?ried$/,ce,"hurried"],[/[^aeiou]ard$/,Se,"steward"],[/[aeiou][^aeiou]id$/,q,""],[/.[vrl]id$/,q,"livid"],[/..led$/,ce,"hurled"],[/.[iao]sed$/,ce,""],[/[aeiou]n?[cs]ed$/,ce,""],[/[aeiou][rl]?[mnf]ed$/,ce,""],[/[aeiou][ns]?c?ked$/,ce,"bunked"],[/[aeiou]gned$/,ce],[/[aeiou][nl]?ged$/,ce],[/.[tdbwxyz]ed$/,ce],[/[^aeiou][aeiou][tvx]ed$/,ce],[/.[cdflmnprstv]ied$/,ce,"emptied"]],e:[[/.[lnr]ize$/,an,"antagonize"],[/.[^aeiou]ise$/,an,"antagonise"],[/.[aeiou]te$/,an,"bite"],[/.[^aeiou][ai]ble$/,q,"fixable"],[/.[^aeiou]eable$/,q,"maleable"],[/.[ts]ive$/,q,"festive"],[/[a-z]-like$/,q,"woman-like"]],h:[[/.[^aeiouf]ish$/,q,"cornish"],[/.v[iy]ch$/,un,"..ovich"],[/^ug?h+$/,Me,"ughh"],[/^uh[ -]?oh$/,Me,"uhoh"],[/[a-z]-ish$/,q,"cartoon-ish"]],i:[[/.[oau][wvl]ski$/,un,"polish-male"]],k:[[/^(k){2}$/,Me,"kkkk"]],l:[[/.[gl]ial$/,q,"familial"],[/.[^aeiou]ful$/,q,"fitful"],[/.[nrtumcd]al$/,q,"natal"],[/.[^aeiou][ei]al$/,q,"familial"]],m:[[/.[^aeiou]ium$/,Se,"magnesium"],[/[^aeiou]ism$/,Se,"schism"],[/^[hu]m+$/,Me,"hmm"],[/^\d+ ?[ap]m$/,"Date","3am"]],n:[[/.[lsrnpb]ian$/,q,"republican"],[/[^aeiou]ician$/,So,"musician"],[/[aeiou][ktrp]in'$/,"Gerund","cookin'"]],o:[[/^no+$/,Me,"noooo"],[/^(yo)+$/,Me,"yoo"],[/^wo{2,}[pt]?$/,Me,"woop"]],r:[[/.[bdfklmst]ler$/,"Noun"],[/[aeiou][pns]er$/,Se],[/[^i]fer$/,an],[/.[^aeiou][ao]pher$/,So],[/.[lk]er$/,"Noun"],[/.ier$/,"Comparative"]],t:[[/.[di]est$/,"Superlative"],[/.[icldtgrv]ent$/,q],[/[aeiou].*ist$/,q],[/^[a-z]et$/,Mo]],s:[[/.[^aeiou]ises$/,sn],[/.[rln]ates$/,sn],[/.[^z]ens$/,Mo],[/.[lstrn]us$/,Se],[/.[aeiou]sks$/,sn],[/.[aeiou]kes$/,sn],[/[aeiou][^aeiou]is$/,Se],[/[a-z]'s$/,Lo],[/^yes+$/,Me]],v:[[/.[^aeiou][ai][kln]ov$/,un]],y:[[/.[cts]hy$/,q],[/.[st]ty$/,q],[/.[tnl]ary$/,q],[/.[oe]ry$/,Se],[/[rdntkbhs]ly$/,Bo],[/.(gg|bb|zz)ly$/,q],[/...lly$/,Bo],[/.[gk]y$/,q],[/[bszmp]{2}y$/,q],[/.[ai]my$/,q],[/[ea]{2}zy$/,q],[/.[^aeiou]ity$/,Se]]},se="Verb",K="Noun",wg={leftTags:[["Adjective",K],["Possessive",K],["Determiner",K],["Adverb",se],["Pronoun",se],["Value",K],["Ordinal",K],["Modal",se],["Superlative",K],["Demonym",K],["Honorific","Person"]],leftWords:[["i",se],["first",K],["it",se],["there",se],["not",se],["because",K],["if",K],["but",K],["who",se],["this",K],["his",K],["when",K],["you",se],["very","Adjective"],["old",K],["never",se],["before",K],["a",K],["the",K],["been",se]],rightTags:[["Copula",K],["PastTense",K],["Conjunction",K],["Modal",K]],rightWords:[["there",se],["me",se],["man","Adjective"],["him",se],["it",se],["were",K],["took",K],["himself",se],["went",K],["who",K],["jr","Person"]]},ct={Comparative:{fwd:"3:ser,ier¦1er:h,t,f,l,n¦1r:e¦2er:ss,or,om",both:"3er:ver,ear,alm¦3ner:hin¦3ter:lat¦2mer:im¦2er:ng,rm,mb¦2ber:ib¦2ger:ig¦1er:w,p,k,d¦ier:y",rev:"1:tter,yer¦2:uer,ver,ffer,oner,eler,ller,iler,ster,cer,uler,sher,ener,gher,aner,adder,nter,eter,rter,hter,rner,fter¦3:oser,ooler,eafer,user,airer,bler,maler,tler,eater,uger,rger,ainer,urer,ealer,icher,pler,emner,icter,nser,iser¦4:arser,viner,ucher,rosser,somer,ndomer,moter,oother,uarer,hiter¦5:nuiner,esser,emier¦ar:urther",ex:"worse:bad¦better:good¦4er:fair,gray,poor¦1urther:far¦3ter:fat,hot,wet¦3der:mad,sad¦3er:shy,fun¦4der:glad¦:¦4r:cute,dire,fake,fine,free,lame,late,pale,rare,ripe,rude,safe,sore,tame,wide¦5r:eerie,stale"},Gerund:{fwd:"1:nning,tting,rring,pping,eing,mming,gging,dding,bbing,kking¦2:eking,oling,eling,eming¦3:velling,siting,uiting,fiting,loting,geting,ialing,celling¦4:graming",both:"1:aing,iing,fing,xing,ying,oing,hing,wing¦2:tzing,rping,izzing,bting,mning,sping,wling,rling,wding,rbing,uping,lming,wning,mping,oning,lting,mbing,lking,fting,hting,sking,gning,pting,cking,ening,nking,iling,eping,ering,rting,rming,cting,lping,ssing,nting,nding,lding,sting,rning,rding,rking¦3:belling,siping,toming,yaking,uaking,oaning,auling,ooping,aiding,naping,euring,tolling,uzzing,ganing,haning,ualing,halling,iasing,auding,ieting,ceting,ouling,voring,ralling,garing,joring,oaming,oaking,roring,nelling,ooring,uelling,eaming,ooding,eaping,eeting,ooting,ooming,xiting,keting,ooking,ulling,airing,oaring,biting,outing,oiting,earing,naling,oading,eeding,ouring,eaking,aiming,illing,oining,eaning,onging,ealing,aining,eading¦4:thoming,melling,aboring,ivoting,weating,dfilling,onoring,eriting,imiting,tialling,rgining,otoring,linging,winging,lleting,louding,spelling,mpelling,heating,feating,opelling,choring,welling,ymaking,ctoring,calling,peating,iloring,laiting,utoring,uditing,mmaking,loating,iciting,waiting,mbating,voiding,otalling,nsoring,nselling,ocusing,itoring,eloping¦5:rselling,umpeting,atrolling,treating,tselling,rpreting,pringing,ummeting,ossoming,elmaking,eselling,rediting,totyping,onmaking,rfeiting,ntrolling¦5e:chmaking,dkeeping,severing,erouting,ecreting,ephoning,uthoring,ravening,reathing,pediting,erfering,eotyping,fringing,entoring,ombining,ompeting¦4e:emaking,eething,twining,rruling,chuting,xciting,rseding,scoping,edoring,pinging,lunging,agining,craping,pleting,eleting,nciting,nfining,ncoding,tponing,ecoding,writing,esaling,nvening,gnoring,evoting,mpeding,rvening,dhering,mpiling,storing,nviting,ploring¦3e:tining,nuring,saking,miring,haling,ceding,xuding,rining,nuting,laring,caring,miling,riding,hoking,piring,lading,curing,uading,noting,taping,futing,paring,hading,loding,siring,guring,vading,voking,during,niting,laning,caping,luting,muting,ruding,ciding,juring,laming,caling,hining,uoting,liding,ciling,duling,tuting,puting,cuting,coring,uiding,tiring,turing,siding,rading,enging,haping,buting,lining,taking,anging,haring,uiring,coming,mining,moting,suring,viding,luding¦2e:tring,zling,uging,oging,gling,iging,vring,fling,lging,obing,psing,pling,ubing,cling,dling,wsing,iking,rsing,dging,kling,ysing,tling,rging,eging,nsing,uning,osing,uming,using,ibing,bling,aging,ising,asing,ating¦2ie:rlying¦1e:zing,uing,cing,ving",rev:"ying:ie¦1ing:se,ke,te,we,ne,re,de,pe,me,le,c,he¦2ing:ll,ng,dd,ee,ye,oe,rg,us¦2ning:un¦2ging:og,ag,ug,ig,eg¦2ming:um¦2bing:ub,ab,eb,ob¦3ning:lan,can,hin,pin,win¦3ring:cur,lur,tir,tar,pur,car¦3ing:ait,del,eel,fin,eat,oat,eem,lel,ool,ein,uin¦3ping:rop,rap,top,uip,wap,hip,hop,lap,rip,cap¦3ming:tem,wim,rim,kim,lim¦3ting:mat,cut,pot,lit,lot,hat,set,pit,put¦3ding:hed,bed,bid¦3king:rek¦3ling:cil,pel¦3bing:rib¦4ning:egin¦4ing:isit,ruit,ilot,nsit,dget,rkel,ival,rcel¦4ring:efer,nfer¦4ting:rmit,mmit,ysit,dmit,emit,bmit,tfit,gret¦4ling:evel,xcel,ivel¦4ding:hred¦5ing:arget,posit,rofit¦5ring:nsfer¦5ting:nsmit,orget,cquit¦5ling:ancel,istil",ex:"3:adding,eating,aiming,aiding,airing,outing,gassing,setting,getting,putting,cutting,winning,sitting,betting,mapping,tapping,letting,bidding,hitting,tanning,netting,popping,fitting,capping,lapping,barring,banning,vetting,topping,rotting,tipping,potting,wetting,pitting,dipping,budding,hemming,pinning,jetting,kidding,padding,podding,sipping,wedding,bedding,donning,warring,penning,gutting,cueing,wadding,petting,ripping,napping,matting,tinning,binning,dimming,hopping,mopping,nodding,panning,rapping,ridding,sinning¦4:selling,falling,calling,waiting,editing,telling,rolling,heating,boating,hanging,beating,coating,singing,tolling,felling,polling,discing,seating,voiding,gelling,yelling,baiting,reining,ruining,seeking,spanning,stepping,knitting,emitting,slipping,quitting,dialing,omitting,clipping,shutting,skinning,abutting,flipping,trotting,cramming,fretting,suiting¦5:bringing,treating,spelling,stalling,trolling,expelling,rivaling,wringing,deterring,singeing,befitting,refitting¦6:enrolling,distilling,scrolling,strolling,caucusing,travelling¦7:installing,redefining,stencilling,recharging,overeating,benefiting,unraveling,programing¦9:reprogramming¦is:being¦2e:using,aging,owing¦3e:making,taking,coming,noting,hiring,filing,coding,citing,doping,baking,coping,hoping,lading,caring,naming,voting,riding,mining,curing,lining,ruling,typing,boring,dining,firing,hiding,piling,taping,waning,baling,boning,faring,honing,wiping,luring,timing,wading,piping,fading,biting,zoning,daring,waking,gaming,raking,ceding,tiring,coking,wining,joking,paring,gaping,poking,pining,coring,liming,toting,roping,wiring,aching¦4e:writing,storing,eroding,framing,smoking,tasting,wasting,phoning,shaking,abiding,braking,flaking,pasting,priming,shoring,sloping,withing,hinging¦5e:defining,refining,renaming,swathing,fringing,reciting¦1ie:dying,tying,lying,vying¦7e:sunbathing"},Participle:{fwd:"1:mt¦2:llen¦3:iven,aken¦:ne¦y:in",both:"1:wn¦2:me,aten¦3:seen,bidden,isen¦4:roven,asten¦3l:pilt¦3d:uilt¦2e:itten¦1im:wum¦1eak:poken¦1ine:hone¦1ose:osen¦1in:gun¦1ake:woken¦ear:orn¦eal:olen¦eeze:ozen¦et:otten¦ink:unk¦ing:ung",rev:"2:un¦oken:eak¦ought:eek¦oven:eave¦1ne:o¦1own:ly¦1den:de¦1in:ay¦2t:am¦2n:ee¦3en:all¦4n:rive,sake,take¦5n:rgive",ex:"2:been¦3:seen,run¦4:given,taken¦5:shaken¦2eak:broken¦1ive:dove¦2y:flown¦3e:hidden,ridden¦1eek:sought¦1ake:woken¦1eave:woven"},PastTense:{fwd:"1:tted,wed,gged,nned,een,rred,pped,yed,bbed,oed,dded,rd,wn,mmed¦2:eed,nded,et,hted,st,oled,ut,emed,eled,lded,ken,rt,nked,apt,ant,eped,eked¦3:eared,eat,eaded,nelled,ealt,eeded,ooted,eaked,eaned,eeted,mited,bid,uit,ead,uited,ealed,geted,velled,ialed,belled¦4:ebuted,hined,comed¦y:ied¦ome:ame¦ear:ore¦ind:ound¦ing:ung,ang¦ep:pt¦ink:ank,unk¦ig:ug¦all:ell¦ee:aw¦ive:ave¦eeze:oze¦old:eld¦ave:ft¦ake:ook¦ell:old¦ite:ote¦ide:ode¦ine:one¦in:un,on¦eal:ole¦im:am¦ie:ay¦and:ood¦1ise:rose¦1eak:roke¦1ing:rought¦1ive:rove¦1el:elt¦1id:bade¦1et:got¦1y:aid¦1it:sat¦3e:lid¦3d:pent",both:"1:aed,fed,xed,hed¦2:sged,xted,wled,rped,lked,kied,lmed,lped,uped,bted,rbed,rked,wned,rled,mped,fted,mned,mbed,zzed,omed,ened,cked,gned,lted,sked,ued,zed,nted,ered,rted,rmed,ced,sted,rned,ssed,rded,pted,ved,cted¦3:cled,eined,siped,ooned,uked,ymed,jored,ouded,ioted,oaned,lged,asped,iged,mured,oided,eiled,yped,taled,moned,yled,lit,kled,oaked,gled,naled,fled,uined,oared,valled,koned,soned,aided,obed,ibed,meted,nicked,rored,micked,keted,vred,ooped,oaded,rited,aired,auled,filled,ouled,ooded,ceted,tolled,oited,bited,aped,tled,vored,dled,eamed,nsed,rsed,sited,owded,pled,sored,rged,osed,pelled,oured,psed,oated,loned,aimed,illed,eured,tred,ioned,celled,bled,wsed,ooked,oiled,itzed,iked,iased,onged,ased,ailed,uned,umed,ained,auded,nulled,ysed,eged,ised,aged,oined,ated,used,dged,doned¦4:ntied,efited,uaked,caded,fired,roped,halled,roked,himed,culed,tared,lared,tuted,uared,routed,pited,naked,miled,houted,helled,hared,cored,caled,tired,peated,futed,ciled,called,tined,moted,filed,sided,poned,iloted,honed,lleted,huted,ruled,cured,named,preted,vaded,sured,talled,haled,peded,gined,nited,uided,ramed,feited,laked,gured,ctored,unged,pired,cuted,voked,eloped,ralled,rined,coded,icited,vided,uaded,voted,mined,sired,noted,lined,nselled,luted,jured,fided,puted,piled,pared,olored,cided,hoked,enged,tured,geoned,cotted,lamed,uiled,waited,udited,anged,luded,mired,uired,raded¦5:modelled,izzled,eleted,umpeted,ailored,rseded,treated,eduled,ecited,rammed,eceded,atrolled,nitored,basted,twined,itialled,ncited,gnored,ploded,xcited,nrolled,namelled,plored,efeated,redited,ntrolled,nfined,pleted,llided,lcined,eathed,ibuted,lloted,dhered,cceded¦3ad:sled¦2aw:drew¦2ot:hot¦2ke:made¦2ow:hrew,grew¦2ose:hose¦2d:ilt¦2in:egan¦1un:ran¦1ink:hought¦1ick:tuck¦1ike:ruck¦1eak:poke,nuck¦1it:pat¦1o:did¦1ow:new¦1ake:woke¦go:went",rev:"3:rst,hed,hut,cut,set¦4:tbid¦5:dcast,eread,pread,erbid¦ought:uy,eek¦1ied:ny,ly,dy,ry,fy,py,vy,by,ty,cy¦1ung:ling,ting,wing¦1pt:eep¦1ank:rink¦1ore:bear,wear¦1ave:give¦1oze:reeze¦1ound:rind,wind¦1ook:take,hake¦1aw:see¦1old:sell¦1ote:rite¦1ole:teal¦1unk:tink¦1am:wim¦1ay:lie¦1ood:tand¦1eld:hold¦2d:he,ge,re,le,leed,ne,reed,be,ye,lee,pe,we¦2ed:dd,oy,or,ey,gg,rr,us,ew,to¦2ame:ecome,rcome¦2ped:ap¦2ged:ag,og,ug,eg¦2bed:ub,ab,ib,ob¦2lt:neel¦2id:pay¦2ang:pring¦2ove:trive¦2med:um¦2ode:rride¦2at:ysit¦3ted:mit,hat,mat,lat,pot,rot,bat¦3ed:low,end,tow,und,ond,eem,lay,cho,dow,xit,eld,ald,uld,law,lel,eat,oll,ray,ank,fin,oam,out,how,iek,tay,haw,ait,vet,say,cay,bow¦3d:ste,ede,ode,ete,ree,ude,ame,oke,ote,ime,ute,ade¦3red:lur,cur,pur,car¦3ped:hop,rop,uip,rip,lip,tep,top¦3ded:bed,rod,kid¦3ade:orbid¦3led:uel¦3ned:lan,can,kin,pan,tun¦3med:rim,lim¦4ted:quit,llot¦4ed:pear,rrow,rand,lean,mand,anel,pand,reet,link,abel,evel,imit,ceed,ruit,mind,peal,veal,hool,head,pell,well,mell,uell,band,hear,weak¦4led:nnel,qual,ebel,ivel¦4red:nfer,efer,sfer¦4n:sake,trew¦4d:ntee¦4ded:hred¦4ned:rpin¦5ed:light,nceal,right,ndear,arget,hread,eight,rtial,eboot¦5d:edite,nvite¦5ted:egret¦5led:ravel",ex:"2:been,upped¦3:added,aged,aided,aimed,aired,bid,died,dyed,egged,erred,eyed,fit,gassed,hit,lied,owed,pent,pied,tied,used,vied,oiled,outed,banned,barred,bet,canned,cut,dipped,donned,ended,feed,inked,jarred,let,manned,mowed,netted,padded,panned,pitted,popped,potted,put,set,sewn,sowed,tanned,tipped,topped,vowed,weed,bowed,jammed,binned,dimmed,hopped,mopped,nodded,pinned,rigged,sinned,towed,vetted¦4:ached,baked,baled,boned,bored,called,caned,cared,ceded,cited,coded,cored,cubed,cured,dared,dined,edited,exited,faked,fared,filed,fined,fired,fuelled,gamed,gelled,hired,hoped,joked,lined,mined,named,noted,piled,poked,polled,pored,pulled,reaped,roamed,rolled,ruled,seated,shed,sided,timed,tolled,toned,voted,waited,walled,waned,winged,wiped,wired,zoned,yelled,tamed,lubed,roped,faded,mired,caked,honed,banged,culled,heated,raked,welled,banded,beat,cast,cooled,cost,dealt,feared,folded,footed,handed,headed,heard,hurt,knitted,landed,leaked,leapt,linked,meant,minded,molded,neared,needed,peaked,plodded,plotted,pooled,quit,read,rooted,sealed,seeded,seeped,shipped,shunned,skimmed,slammed,sparred,stemmed,stirred,suited,thinned,twinned,swayed,winked,dialed,abutted,blotted,fretted,healed,heeded,peeled,reeled¦5:basted,cheated,equalled,eroded,exiled,focused,opined,pleated,primed,quoted,scouted,shored,sloped,smoked,sniped,spelled,spouted,routed,staked,stored,swelled,tasted,treated,wasted,smelled,dwelled,honored,prided,quelled,eloped,scared,coveted,sweated,breaded,cleared,debuted,deterred,freaked,modeled,pleaded,rebutted,speeded¦6:anchored,defined,endured,impaled,invited,refined,revered,strolled,cringed,recast,thrust,unfolded¦7:authored,combined,competed,conceded,convened,excreted,extruded,redefined,restored,secreted,rescinded,welcomed¦8:expedited,infringed¦9:interfered,intervened,persevered¦10:contravened¦eat:ate¦is:was¦go:went¦are:were¦3d:bent,lent,rent,sent¦3e:bit,fled,hid,lost¦3ed:bled,bred¦2ow:blew,grew¦1uy:bought¦2tch:caught¦1o:did¦1ive:dove,gave¦2aw:drew¦2ed:fed¦2y:flew,laid,paid,said¦1ight:fought¦1et:got¦2ve:had¦1ang:hung¦2ad:led¦2ght:lit¦2ke:made¦2et:met¦1un:ran¦1ise:rose¦1it:sat¦1eek:sought¦1each:taught¦1ake:woke,took¦1eave:wove¦2ise:arose¦1ear:bore,tore,wore¦1ind:bound,found,wound¦2eak:broke¦2ing:brought,wrung¦1ome:came¦2ive:drove¦1ig:dug¦1all:fell¦2el:felt¦4et:forgot¦1old:held¦2ave:left¦1ing:rang,sang¦1ide:rode¦1ink:sank¦1ee:saw¦2ine:shone¦4e:slid¦1ell:sold,told¦4d:spent¦2in:spun¦1in:won"},PresentTense:{fwd:"1:oes¦1ve:as",both:"1:xes¦2:zzes,ches,shes,sses¦3:iases¦2y:llies,plies¦1y:cies,bies,ties,vies,nies,pies,dies,ries,fies¦:s",rev:"1ies:ly¦2es:us,go,do¦3es:cho,eto",ex:"2:does,goes¦3:gasses¦5:focuses¦is:are¦3y:relies¦2y:flies¦2ve:has"},Superlative:{fwd:"1st:e¦1est:l,m,f,s¦1iest:cey¦2est:or,ir¦3est:ver",both:"4:east¦5:hwest¦5lest:erful¦4est:weet,lgar,tter,oung¦4most:uter¦3est:ger,der,rey,iet,ong,ear¦3test:lat¦3most:ner¦2est:pt,ft,nt,ct,rt,ht¦2test:it¦2gest:ig¦1est:b,k,n,p,h,d,w¦iest:y",rev:"1:ttest,nnest,yest¦2:sest,stest,rmest,cest,vest,lmest,olest,ilest,ulest,ssest,imest,uest¦3:rgest,eatest,oorest,plest,allest,urest,iefest,uelest,blest,ugest,amest,yalest,ealest,illest,tlest,itest¦4:cerest,eriest,somest,rmalest,ndomest,motest,uarest,tiffest¦5:leverest,rangest¦ar:urthest¦3ey:riciest",ex:"best:good¦worst:bad¦5est:great¦4est:fast,full,fair,dull¦3test:hot,wet,fat¦4nest:thin¦1urthest:far¦3est:gay,shy,ill¦4test:neat¦4st:late,wide,fine,safe,cute,fake,pale,rare,rude,sore,ripe,dire¦6st:severe"},AdjToNoun:{fwd:"1:tistic,eable,lful,sful,ting,tty¦2:onate,rtable,geous,ced,seful,ctful¦3:ortive,ented¦arity:ear¦y:etic¦fulness:begone¦1ity:re¦1y:tiful,gic¦2ity:ile,imous,ilous,ime¦2ion:ated¦2eness:iving¦2y:trious¦2ation:iring¦2tion:vant¦3ion:ect¦3ce:mant,mantic¦3tion:irable¦3y:est,estic¦3m:mistic,listic¦3ess:ning¦4n:utious¦4on:rative,native,vative,ective¦4ce:erant",both:"1:king,wing¦2:alous,ltuous,oyful,rdous¦3:gorous,ectable,werful,amatic¦4:oised,usical,agical,raceful,ocused,lined,ightful¦5ness:stful,lding,itous,nuous,ulous,otous,nable,gious,ayful,rvous,ntous,lsive,peful,entle,ciful,osive,leful,isive,ncise,reful,mious¦5ty:ivacious¦5ties:ubtle¦5ce:ilient,adiant,atient¦5cy:icient¦5sm:gmatic¦5on:sessive,dictive¦5ity:pular,sonal,eative,entic¦5sity:uminous¦5ism:conic¦5nce:mperate¦5ility:mitable¦5ment:xcited¦5n:bitious¦4cy:brant,etent,curate¦4ility:erable,acable,icable,ptable¦4ty:nacious,aive,oyal,dacious¦4n:icious¦4ce:vient,erent,stent,ndent,dient,quent,ident¦4ness:adic,ound,hing,pant,sant,oing,oist,tute¦4icity:imple¦4ment:fined,mused¦4ism:otic¦4ry:dantic¦4ity:tund,eral¦4edness:hand¦4on:uitive¦4lity:pitable¦4sm:eroic,namic¦4sity:nerous¦3th:arm¦3ility:pable,bable,dable,iable¦3cy:hant,nant,icate¦3ness:red,hin,nse,ict,iet,ite,oud,ind,ied,rce¦3ion:lute¦3ity:ual,gal,volous,ial¦3ce:sent,fensive,lant,gant,gent,lent,dant¦3on:asive¦3m:fist,sistic,iastic¦3y:terious,xurious,ronic,tastic¦3ur:amorous¦3e:tunate¦3ation:mined¦3sy:rteous¦3ty:ain¦3ry:ave¦3ment:azed¦2ness:de,on,ue,rn,ur,ft,rp,pe,om,ge,rd,od,ay,ss,er,ll,oy,ap,ht,ld,ad,rt¦2inousness:umous¦2ity:neous,ene,id,ane¦2cy:bate,late¦2ation:ized¦2ility:oble,ible¦2y:odic¦2e:oving,aring¦2s:ost¦2itude:pt¦2dom:ee¦2ance:uring¦2tion:reet¦2ion:oted¦2sion:ending¦2liness:an¦2or:rdent¦1th:ung¦1e:uable¦1ness:w,h,k,f¦1ility:mble¦1or:vent¦1ement:ging¦1tiquity:ncient¦1ment:hed¦verty:or¦ength:ong¦eat:ot¦pth:ep¦iness:y",rev:"",ex:"5:forceful,humorous¦8:charismatic¦13:understanding¦5ity:active¦11ness:adventurous,inquisitive,resourceful¦8on:aggressive,automatic,perceptive¦7ness:amorous,fatuous,furtive,ominous,serious¦5ness:ample,sweet¦12ness:apprehensive,cantankerous,contemptuous,ostentatious¦13ness:argumentative,conscientious¦9ness:assertive,facetious,imperious,inventive,oblivious,rapacious,receptive,seditious,whimsical¦10ness:attractive,expressive,impressive,loquacious,salubrious,thoughtful¦3edom:boring¦4ness:calm,fast,keen,tame¦8ness:cheerful,gracious,specious,spurious,timorous,unctuous¦5sity:curious¦9ion:deliberate¦8ion:desperate¦6e:expensive¦7ce:fragrant¦3y:furious¦9ility:ineluctable¦6ism:mystical¦8ity:physical,proactive,sensitive,vertical¦5cy:pliant¦7ity:positive¦9ity:practical¦12ism:professional¦6ce:prudent¦3ness:red¦6cy:vagrant¦3dom:wise"}},$g=function(e,t={}){return t.hasOwnProperty(e)?t[e]:null},kg=function(e,t=[]){for(let n=0;n<t.length;n+=1)if(e.endsWith(t[n]))return e;return null},Pg=function(e,t,n={}){t=t||{};let r=e.length-1;for(let o=r;o>=1;o-=1){let a=e.length-o,i=e.substring(a,e.length);if(t.hasOwnProperty(i)===!0)return e.slice(0,a)+t[i];if(n.hasOwnProperty(i)===!0)return e.slice(0,a)+n[i]}return t.hasOwnProperty("")?e+=t[""]:n.hasOwnProperty("")?e+=n[""]:null},ye=function(e="",t={}){let n=$g(e,t.ex);return n=n||kg(e,t.same),n=n||Pg(e,t.fwd,t.both),n=n||e,n},Ko=function(e){return Object.entries(e).reduce((t,n)=>(t[n[1]]=n[0],t),{})},It=function(e={}){return{reversed:!0,both:Ko(e.both),ex:Ko(e.ex),fwd:e.rev||{}}},Jo=/^([0-9]+)/,Ag=function(e){let t={};return e.split("¦").forEach(n=>{let[r,o]=n.split(":");o=(o||"").split(","),o.forEach(a=>{t[a]=r})}),t},xg=function(e="",t=""){t=String(t);let n=t.match(Jo);if(n===null)return t;let r=Number(n[1])||0;return e.substring(0,r)+t.replace(Jo,"")},ln=function(e){let t=Ag(e);return Object.keys(t).reduce((n,r)=>(n[r]=xg(r,t[r]),n),{})},ht=function(e={}){return typeof e=="string"&&(e=JSON.parse(e)),e.fwd=ln(e.fwd||""),e.both=ln(e.both||""),e.rev=ln(e.rev||""),e.ex=ln(e.ex||""),e},Fi=ht(ct.PastTense),Vi=ht(ct.PresentTense),zi=ht(ct.Gerund),Bi=ht(ct.Participle),Cg=It(Fi),jg=It(Vi),Ng=It(zi),Ig=It(Bi),Si=ht(ct.Comparative),Mi=ht(ct.Superlative),Tg=It(Si),Eg=It(Mi),Dg=ht(ct.AdjToNoun),Li={fromPast:Fi,fromPresent:Vi,fromGerund:zi,fromParticiple:Bi,toPast:Cg,toPresent:jg,toGerund:Ng,toParticiple:Ig,toComparative:Si,toSuperlative:Mi,fromComparative:Tg,fromSuperlative:Eg,adjToNoun:Dg},Hg=[[/^[\w.]+@[\w.]+\.[a-z]{2,3}$/,"Email"],[/^(https?:\/\/|www\.)+\w+\.[a-z]{2,3}/,"Url","http.."],[/^[a-z0-9./].+\.(com|net|gov|org|ly|edu|info|biz|dev|ru|jp|de|in|uk|br|io|ai)/,"Url",".com"],[/^[PMCE]ST$/,"Timezone","EST"],[/^ma?c'[a-z]{3}/,"LastName","mc'neil"],[/^o'[a-z]{3}/,"LastName","o'connor"],[/^ma?cd[aeiou][a-z]{3}/,"LastName","mcdonald"],[/^(lol)+[sz]$/,"Expression","lol"],[/^wo{2,}a*h?$/,"Expression","wooah"],[/^(hee?){2,}h?$/,"Expression","hehe"],[/^(un|de|re)\\-[a-z\u00C0-\u00FF]{2}/,"Verb","un-vite"],[/^(m|k|cm|km)\/(s|h|hr)$/,"Unit","5 k/m"],[/^(ug|ng|mg)\/(l|m3|ft3)$/,"Unit","ug/L"],[new RegExp("[^:/]\\/\\p{Letter}","u"),"SlashedTerm","love/hate"]],Gg=[[new RegExp("^#[\\p{Number}_]*\\p{Letter}","u"),"HashTag"],[/^@\w{2,}$/,"AtMention"],[/^([A-Z]\.){2}[A-Z]?/i,["Acronym","Noun"],"F.B.I"],[/.{3}[lkmnp]in['‘’‛‵′`´]$/,"Gerund","chillin'"],[/.{4}s['‘’‛‵′`´]$/,"Possessive","flanders'"],[/^[\p{Emoji_Presentation}\p{Extended_Pictographic}]/u,"Emoji","emoji-class"]],Og=[[/^@1?[0-9](am|pm)$/i,"Time","3pm"],[/^@1?[0-9]:[0-9]{2}(am|pm)?$/i,"Time","3:30pm"],[/^'[0-9]{2}$/,"Year"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])$/,"Time","3:12:31"],[/^[012]?[0-9](:[0-5][0-9])?(:[0-5][0-9])? ?(am|pm)$/i,"Time","1:12pm"],[/^[012]?[0-9](:[0-5][0-9])(:[0-5][0-9])? ?(am|pm)?$/i,"Time","1:12:31pm"],[/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}/i,"Date","iso-date"],[/^[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,4}$/,"Date","iso-dash"],[/^[0-9]{1,4}\/[0-9]{1,2}\/([0-9]{4}|[0-9]{2})$/,"Date","iso-slash"],[/^[0-9]{1,4}\.[0-9]{1,2}\.[0-9]{1,4}$/,"Date","iso-dot"],[/^[0-9]{1,4}-[a-z]{2,9}-[0-9]{1,4}$/i,"Date","12-dec-2019"],[/^utc ?[+-]?[0-9]+$/,"Timezone","utc-9"],[/^(gmt|utc)[+-][0-9]{1,2}$/i,"Timezone","gmt-3"],[/^[0-9]{3}-[0-9]{4}$/,"PhoneNumber","421-0029"],[/^(\+?[0-9][ -])?[0-9]{3}[ -]?[0-9]{3}-[0-9]{4}$/,"PhoneNumber","1-800-"],[new RegExp("^[-+]?\\p{Currency_Symbol}[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?([kmb]|bn)?\\+?$","u"),["Money","Value"],"$5.30"],[new RegExp("^[-+]?[0-9]+(,[0-9]{3})*(\\.[0-9]+)?\\p{Currency_Symbol}\\+?$","u"),["Money","Value"],"5.30£"],[/^[-+]?[$£]?[0-9]([0-9,.])+(usd|eur|jpy|gbp|cad|aud|chf|cny|hkd|nzd|kr|rub)$/i,["Money","Value"],"$400usd"],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?\+?$/,["Cardinal","NumericValue"],"5,999"],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?(st|nd|rd|r?th)$/,["Ordinal","NumericValue"],"53rd"],[/^\.[0-9]+\+?$/,["Cardinal","NumericValue"],".73th"],[/^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?%\+?$/,["Percent","Cardinal","NumericValue"],"-4%"],[/^\.[0-9]+%$/,["Percent","Cardinal","NumericValue"],".3%"],[/^[0-9]{1,4}\/[0-9]{1,4}(st|nd|rd|th)?s?$/,["Fraction","NumericValue"],"2/3rds"],[/^[0-9.]{1,3}[a-z]{0,2}[-–—][0-9]{1,3}[a-z]{0,2}$/,["Value","NumberRange"],"3-4"],[/^[0-9]{1,2}(:[0-9][0-9])?(am|pm)? ?[-–—] ?[0-9]{1,2}(:[0-9][0-9])?(am|pm)$/,["Time","NumberRange"],"3-4pm"],[/^[0-9.]+([a-z°]{1,4})$/,"NumericValue","9km"]],Fg=["academy","administration","agence","agences","agencies","agency","airlines","airways","army","assoc","associates","association","assurance","authority","autorite","aviation","bank","banque","board","boys","brands","brewery","brotherhood","brothers","bureau","cafe","co","caisse","capital","care","cathedral","center","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","data","departement","department","departments","design","development","directorate","division","drilling","education","eglise","electric","electricity","energy","ensemble","enterprise","enterprises","entertainment","estate","etat","faculty","faction","federation","financial","fm","foundation","fund","gas","gazette","girls","government","group","guild","herald","holdings","hospital","hotel","hotels","inc","industries","institut","institute","institutes","insurance","international","interstate","investment","investments","investors","journal","laboratory","labs","llc","ltd","limited","machines","magazine","management","marine","marketing","markets","media","memorial","ministere","ministry","military","mobile","motor","motors","musee","museum","news","observatory","office","oil","optical","orchestra","organization","partners","partnership","petrol","petroleum","pharmacare","pharmaceutical","pharmaceuticals","pizza","plc","police","politburo","polytechnic","post","power","press","productions","quartet","radio","reserve","resources","restaurant","restaurants","savings","school","securities","service","services","societe","subsidiary","society","sons","subcommittee","syndicat","systems","telecommunications","telegraph","television","times","tribunal","tv","union","university","utilities","workers"].reduce((e,t)=>(e[t]=!0,e),{}),Vg=["atoll","basin","bay","beach","bluff","bog","camp","canyon","canyons","cape","cave","caves","cliffs","coast","cove","coves","crater","crossing","creek","desert","dune","dunes","downs","estates","escarpment","estuary","falls","fjord","fjords","forest","forests","glacier","gorge","gorges","grove","gulf","gully","highland","heights","hollow","hill","hills","inlet","island","islands","isthmus","junction","knoll","lagoon","lake","lakeshore","marsh","marshes","mount","mountain","mountains","narrows","peninsula","plains","plateau","pond","rapids","ravine","reef","reefs","ridge","river","rivers","sandhill","shoal","shore","shoreline","shores","strait","straits","springs","stream","swamp","tombolo","trail","trails","trench","valley","vallies","village","volcano","waterfall","watershed","wetland","woods","acres","burough","county","district","municipality","prefecture","province","region","reservation","state","territory","borough","metropolis","downtown","uptown","midtown","city","town","township","hamlet","country","kingdom","enclave","neighbourhood","neighborhood","kingdom","ward","zone","airport","amphitheater","arch","arena","auditorium","bar","barn","basilica","battlefield","bridge","building","castle","centre","coliseum","cineplex","complex","dam","farm","field","fort","garden","gardens","gymnasium","hall","house","levee","library","manor","memorial","monument","museum","gallery","palace","pillar","pits","plantation","playhouse","quarry","sportsfield","sportsplex","stadium","terrace","terraces","theater","tower","park","parks","site","ranch","raceway","sportsplex","ave","st","street","rd","road","lane","landing","crescent","cr","way","tr","terrace","avenue"].reduce((e,t)=>(e[t]=!0,e),{}),cn=[[/([^v])ies$/i,"$1y"],[/(ise)s$/i,"$1"],[/(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"],[/(ause)s$/i,"$1"],[/(ease)s$/i,"$1"],[/(ious)es$/i,"$1"],[/(ouse)s$/i,"$1"],[/(ose)s$/i,"$1"],[/(..ase)s$/i,"$1"],[/(..[aeiu]s)es$/i,"$1"],[/(vert|ind|cort)(ices)$/i,"$1ex"],[/(matr|append)(ices)$/i,"$1ix"],[/([xo]|ch|ss|sh)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"],[/(cris|ax|test)es$/i,"$1is"],[/(alias|status)es$/i,"$1"],[/(ss)$/i,"$1"],[/(ic)s$/i,"$1"],[/s$/i,""]],zg=function(e){return Object.keys(e).reduce((t,n)=>(t[e[n]]=n,t),{})},Ki=function(e,t){const{irregularPlurals:n}=t.two,r=zg(n);if(r.hasOwnProperty(e))return r[e];for(let o=0;o<cn.length;o++)if(cn[o][0].test(e)===!0)return e=e.replace(cn[o][0],cn[o][1]),e;return e},Bg=function(e,t){const n=[e],r=Gn(e,t);r!==e&&n.push(r);const o=Ki(e,t);return o!==e&&n.push(o),n},Sg={toPlural:Gn,toSingular:Ki,all:Bg};let $n={Gerund:["ing"],Actor:["erer"],Infinitive:["ate","ize","tion","rify","then","ress","ify","age","nce","ect","ise","ine","ish","ace","ash","ure","tch","end","ack","and","ute","ade","ock","ite","ase","ose","use","ive","int","nge","lay","est","ain","ant","ent","eed","er","le","unk","ung","upt","en"],PastTense:["ept","ed","lt","nt","ew","ld"],PresentTense:["rks","cks","nks","ngs","mps","tes","zes","ers","les","acks","ends","ands","ocks","lays","eads","lls","els","ils","ows","nds","ays","ams","ars","ops","ffs","als","urs","lds","ews","ips","es","ts","ns"],Participle:["ken","wn"]};$n=Object.keys($n).reduce((e,t)=>($n[t].forEach(n=>e[n]=t),e),{});const hn=$n,Ji=function(e){const t=e.substring(e.length-3);if(hn.hasOwnProperty(t)===!0)return hn[t];const n=e.substring(e.length-2);return hn.hasOwnProperty(n)===!0?hn[n]:e.substring(e.length-1)==="s"?"PresentTense":null},Mg=function(e,t){let n="",r={};t.one&&t.one.prefixes&&(r=t.one.prefixes);let[o,a]=e.split(/ /);return a&&r[o]===!0&&(n=o,o=a,a=""),{prefix:n,verb:o,particle:a}},Wo={are:"be",were:"be",been:"be",is:"be",am:"be",was:"be",be:"be",being:"be"},mr=function(e,t,n){const{fromPast:r,fromPresent:o,fromGerund:a,fromParticiple:i}=t.two.models,{prefix:s,verb:u,particle:l}=Mg(e,t);let c="";if(n||(n=Ji(e)),Wo.hasOwnProperty(e))c=Wo[e];else if(n==="Participle")c=ye(u,i);else if(n==="PastTense")c=ye(u,r);else if(n==="PresentTense")c=ye(u,o);else if(n==="Gerund")c=ye(u,a);else return e;return l&&(c+=" "+l),s&&(c=s+" "+c),c},Lg=e=>/ /.test(e)?e.split(/ /):[e,""],Vr=function(e,t){const{toPast:n,toPresent:r,toGerund:o,toParticiple:a}=t.two.models;if(e==="be")return{Infinitive:e,Gerund:"being",PastTense:"was",PresentTense:"is"};const[i,s]=Lg(e),u={Infinitive:i,PastTense:ye(i,n),PresentTense:ye(i,r),Gerund:ye(i,o),FutureTense:"will "+i};let l=ye(i,a);if(l!==e&&l!==u.PastTense){const c=t.one.lexicon||{};(c[l]==="Participle"||c[l]==="Adjective")&&(e==="play"&&(l="played"),u.Participle=l)}return s&&Object.keys(u).forEach(c=>{u[c]+=" "+s}),u},Kg=function(e,t){const n=Vr(e,t);return delete n.FutureTense,Object.values(n).filter(r=>r)},Jg={toInfinitive:mr,conjugate:Vr,all:Kg},zr=function(e,t){const n=t.two.models.toSuperlative;return ye(e,n)},Br=function(e,t){const n=t.two.models.toComparative;return ye(e,n)},Wg=function(e,t){const n=t.two.models.fromComparative;return ye(e,n)},qg=function(e,t){const n=t.two.models.fromSuperlative;return ye(e,n)},Rg=function(e,t){const n=t.two.models.adjToNoun;return ye(e,n)},Wi=function(e="",t=[]){const n=e.length,r=n<=6?n-1:6;for(let o=r;o>=1;o-=1){const a=e.substring(n-o,e.length);if(t[a.length].hasOwnProperty(a)===!0){const i=e.slice(0,n-o),s=t[a.length][a];return i+s}}return null},O="ically",Ug=new Set(["analyt"+O,"chem"+O,"class"+O,"clin"+O,"crit"+O,"ecolog"+O,"electr"+O,"empir"+O,"frant"+O,"grammat"+O,"ident"+O,"ideolog"+O,"log"+O,"mag"+O,"mathemat"+O,"mechan"+O,"med"+O,"method"+O,"method"+O,"mus"+O,"phys"+O,"phys"+O,"polit"+O,"pract"+O,"rad"+O,"satir"+O,"statist"+O,"techn"+O,"technolog"+O,"theoret"+O,"typ"+O,"vert"+O,"whims"+O]),_g=[null,{},{ly:""},{ily:"y",bly:"ble",ply:"ple"},{ally:"al",rply:"rp"},{ually:"ual",ially:"ial",cally:"cal",eally:"eal",rally:"ral",nally:"nal",mally:"mal",eeply:"eep",eaply:"eap"},{ically:"ic"}],Qg=new Set(["early","only","hourly","daily","weekly","monthly","yearly","mostly","duly","unduly","especially","undoubtedly","conversely","namely","exceedingly","presumably","accordingly","overly","best","latter","little","long","low"]),qo={wholly:"whole",fully:"full",truly:"true",gently:"gentle",singly:"single",customarily:"customary",idly:"idle",publically:"public",quickly:"quick",superbly:"superb",cynically:"cynical",well:"good"},Zg=function(e){return e.endsWith("ly")?Ug.has(e)?e.replace(/ically/,"ical"):Qg.has(e)?null:qo.hasOwnProperty(e)?qo[e]:Wi(e,_g)||e:null},Xg=[null,{y:"ily"},{ly:"ly",ic:"ically"},{ial:"ially",ual:"ually",tle:"tly",ble:"bly",ple:"ply",ary:"arily"},{},{},{}],Ro={cool:"cooly",whole:"wholly",full:"fully",good:"well",idle:"idly",public:"publicly",single:"singly",special:"especially"},qi=function(e){if(Ro.hasOwnProperty(e))return Ro[e];let t=Wi(e,Xg);return t||(t=e+"ly"),t},Yg=function(e,t){let n=[e];return n.push(zr(e,t)),n.push(Br(e,t)),n.push(qi(e)),n=n.filter(r=>r),n=new Set(n),Array.from(n)},em={toSuperlative:zr,toComparative:Br,toAdverb:qi,toNoun:Rg,fromAdverb:Zg,fromSuperlative:qg,fromComparative:Wg,all:Yg},tm={noun:Sg,verb:Jg,adjective:em},Uo={Singular:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.noun.toPlural(e,r);o[a]||(t[a]=t[a]||"Plural")},Actor:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.noun.toPlural(e,r);o[a]||(t[a]=t[a]||["Plural","Actor"])},Comparable:(e,t,n,r)=>{const o=r.one.lexicon,{toSuperlative:a,toComparative:i}=n.two.transform.adjective,s=a(e,r);o[s]||(t[s]=t[s]||"Superlative");const u=i(e,r);o[u]||(t[u]=t[u]||"Comparative"),t[e]="Adjective"},Demonym:(e,t,n,r)=>{const o=n.two.transform.noun.toPlural(e,r);t[o]=t[o]||["Demonym","Plural"]},Infinitive:(e,t,n,r)=>{const o=r.one.lexicon,a=n.two.transform.verb.conjugate(e,r);Object.entries(a).forEach(i=>{!o[i[1]]&&!t[i[1]]&&i[0]!=="FutureTense"&&(t[i[1]]=i[0])})},PhrasalVerb:(e,t,n,r)=>{const o=r.one.lexicon;t[e]=["PhrasalVerb","Infinitive"];const a=r.one._multiCache,[i,s]=e.split(" ");o[i]||(t[i]=t[i]||"Infinitive");const u=n.two.transform.verb.conjugate(i,r);delete u.FutureTense,Object.entries(u).forEach(l=>{if(l[0]==="Actor"||l[1]==="")return;!t[l[1]]&&!o[l[1]]&&(t[l[1]]=l[0]),a[l[1]]=2;const c=l[1]+" "+s;t[c]=t[c]||[l[0],"PhrasalVerb"]})},Multiple:(e,t)=>{t[e]=["Multiple","Cardinal"],t[e+"th"]=["Multiple","Ordinal"],t[e+"ths"]=["Multiple","Fraction"]},Cardinal:(e,t)=>{t[e]=["TextValue","Cardinal"]},Ordinal:(e,t)=>{t[e]=["TextValue","Ordinal"],t[e+"s"]=["TextValue","Fraction"]},Place:(e,t)=>{t[e]=["Place","ProperNoun"]},Region:(e,t)=>{t[e]=["Region","ProperNoun"]}},nm=function(e,t){const{methods:n,model:r}=t,o={},a={};return Object.keys(e).forEach(i=>{const s=e[i];i=i.toLowerCase().trim(),i=i.replace(/'s\b/,"");const u=i.split(/ /);u.length>1&&(a[u[0]]===void 0||u.length>a[u[0]])&&(a[u[0]]=u.length),Uo.hasOwnProperty(s)===!0&&Uo[s](i,o,n,r),o[i]=o[i]||s}),delete o[""],delete o[null],delete o[" "],{lex:o,_multi:a}},rm=function(e,t){const n=/^[0-9]+$/,r=e[t];if(!r)return!1;const o=new Set(["may","april","august","jan"]);if(r.normal==="like"||o.has(r.normal)||r.tags.has("Place")||r.tags.has("Date"))return!1;if(e[t-1]){const i=e[t-1];if(i.tags.has("Date")||o.has(i.normal)||i.tags.has("Adjective")||r.tags.has("Adjective"))return!1}const a=r.normal;return!((a.length===1||a.length===2||a.length===4)&&n.test(a))},om=function(e){const t=/[,:;]/,n=[];return e.forEach(r=>{let o=0;r.forEach((a,i)=>{t.test(a.post)&&rm(r,i+1)&&(n.push(r.slice(o,i+1)),o=i+1)}),o<r.length&&n.push(r.slice(o,r.length))}),n},_o={e:["mice","louse","antennae","formulae","nebulae","vertebrae","vitae"],i:["tia","octopi","viri","radii","nuclei","fungi","cacti","stimuli"],n:["men"],t:["feet"]},am=new Set(["israelis","menus","logos"]),im=["bus","mas","was","ias","xas","vas","cis","lis","nis","ois","ris","sis","tis","xis","aus","cus","eus","fus","gus","ius","lus","nus","das","ous","pus","rus","sus","tus","xus","aos","igos","ados","ogos","'s","ss"],Ri=function(e){if(!e||e.length<=3)return!1;if(am.has(e))return!0;const t=e[e.length-1];return _o.hasOwnProperty(t)?_o[t].find(n=>e.endsWith(n)):!(t!=="s"||im.find(n=>e.endsWith(n)))},fr={two:{quickSplit:om,expandLexicon:nm,transform:tm,looksPlural:Ri}},sm=function(e){const{irregularPlurals:t}=e.two,{lexicon:n}=e.one;return Object.entries(t).forEach(r=>{n[r[0]]=n[r[0]]||"Singular",n[r[1]]=n[r[1]]||"Plural"}),e},br={one:{lexicon:{}},two:{models:Li}},um={"Actor|Verb":"Actor","Adj|Gerund":"Adjective","Adj|Noun":"Adjective","Adj|Past":"Adjective","Adj|Present":"Adjective","Noun|Verb":"Singular","Noun|Gerund":"Gerund","Person|Noun":"Noun","Person|Date":"Month","Person|Verb":"FirstName","Person|Place":"Person","Person|Adj":"Comparative","Plural|Verb":"Plural","Unit|Noun":"Noun"},Ui=function(e,t){const n={model:t,methods:fr},{lex:r,_multi:o}=fr.two.expandLexicon(e,n);return Object.assign(t.one.lexicon,r),Object.assign(t.one._multiCache,o),t},lm=function(e,t){return Object.keys(e).forEach(n=>{e[n]==="Uncountable"&&(t.two.uncountable[n]=!0,e[n]="Uncountable")}),t},Qo=function(e,t,n){const r=Vr(e,br);t[r.PastTense]=t[r.PastTense]||"PastTense",t[r.Gerund]=t[r.Gerund]||"Gerund",n===!0&&(t[r.PresentTense]=t[r.PresentTense]||"PresentTense")},Zo=function(e,t,n){const r=zr(e,n);t[r]=t[r]||"Superlative";const o=Br(e,n);t[o]=t[o]||"Comparative"},cm=function(e,t,n){const r=Gn(e,n);t[r]=t[r]||"Plural"},hm=function(e,t){const n={},r=t.one.lexicon;return Object.keys(e).forEach(o=>{const a=e[o];if(n[o]=um[a],(a==="Noun|Verb"||a==="Person|Verb"||a==="Actor|Verb")&&Qo(o,r,!1),a==="Adj|Present"&&(Qo(o,r,!0),Zo(o,r,t)),a==="Person|Adj"&&Zo(o,r,t),a==="Adj|Gerund"||a==="Noun|Gerund"){const i=mr(o,br,"Gerund");r[i]||(n[i]="Infinitive")}if((a==="Noun|Gerund"||a==="Adj|Noun"||a==="Person|Noun")&&cm(o,r,t),a==="Adj|Past"){const i=mr(o,br,"PastTense");r[i]||(n[i]="Infinitive")}}),t=Ui(n,t),t},dm=function(e){return e=Ui(e.one.lexicon,e),e=lm(e.one.lexicon,e),e=hm(e.two.switches,e),e=sm(e),e};let vr={one:{_multiCache:{},lexicon:Nt,frozenLex:_p},two:{irregularPlurals:Oi,models:Li,suffixPatterns:bg,prefixPatterns:vg,endsWith:yg,neighbours:wg,regexNormal:Hg,regexText:Gg,regexNumbers:Og,switches:gr,clues:kt,uncountable:{},orgWords:Fg,placeWords:Vg}};vr=dm(vr);const pm=vr,gm=function(e,t,n,r){const o=r.methods.one.setTag;if(e.length>=3){const a=/:/;if(e[0].post.match(a)){const i=e[1];if(i.tags.has("Value")||i.tags.has("Email")||i.tags.has("PhoneNumber"))return;o([e[0]],"Expression",r,null,"2-punct-colon''")}}},mm=function(e,t,n,r){const o=r.methods.one.setTag;e[t].post==="-"&&e[t+1]&&o([e[t],e[t+1]],"Hyphenated",r,null,"1-punct-hyphen''")},Xo=/^(under|over|mis|re|un|dis|semi)-?/,fm=function(e,t,n){const r=n.two.switches,o=e[t];if(r.hasOwnProperty(o.normal)){o.switch=r[o.normal];return}if(Xo.test(o.normal)){const a=o.normal.replace(Xo,"");a.length>3&&r.hasOwnProperty(a)&&(o.switch=r[a])}},bm=(e,t,n="")=>{const r=i=>"\x1B[33m\x1B[3m"+i+"\x1B[0m",o=i=>"\x1B[3m"+i+"\x1B[0m",a=e.text||"["+e.implicit+"]";typeof t!="string"&&t.length>2&&(t=t.slice(0,2).join(", #")+" +"),t=typeof t!="string"?t.join(", #"):t,console.log(` ${r(a).padEnd(24)} \x1B[32m→\x1B[0m #${t.padEnd(22)} ${o(n)}`)},Q=function(e,t,n){if(!t||t.length===0||e.frozen===!0)return;const r=process.env?process.env:self.env||{};r&&r.DEBUG_TAGS&&bm(e,t,n),e.tags=e.tags||new Set,typeof t=="string"?e.tags.add(t):t.forEach(o=>e.tags.add(o))},vm=["Acronym","Abbreviation","ProperNoun","Uncountable","Possessive","Pronoun","Activity","Honorific","Month"],ym=function(e){!e.tags.has("Noun")||e.tags.has("Plural")||e.tags.has("Singular")||vm.find(t=>e.tags.has(t))||(Ri(e.normal)?Q(e,"Plural","3-plural-guess"):Q(e,"Singular","3-singular-guess"))},wm=function(e){const t=e.tags;if(t.has("Verb")&&t.size===1){const n=Ji(e.normal);n&&Q(e,n,"3-verb-tense-guess")}},Qt=function(e,t,n){const r=e[t],o=Array.from(r.tags);for(let a=0;a<o.length;a+=1)if(n.one.tagSet[o[a]]){const i=n.one.tagSet[o[a]].parents;Q(r,i,` -inferred by #${o[a]}`)}ym(r),wm(r)},$m=new RegExp("^\\p{Lu}[\\p{Ll}'’]","u"),km=/[0-9]/,Pm=["Date","Month","WeekDay","Unit","Expression"],Am=/[IVX]/,xm=/^[IVXLCDM]{2,}$/,Cm=/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,jm={li:!0,dc:!0,md:!0,dm:!0,ml:!0},Nm=function(e,t,n){const r=e[t];r.index=r.index||[0,0];const o=r.index[1],a=r.text||"";return o!==0&&$m.test(a)===!0&&km.test(a)===!1?Pm.find(i=>r.tags.has(i))||r.pre.match(/["']$/)||r.normal==="the"?null:(Qt(e,t,n),!r.tags.has("Noun")&&!r.frozen&&r.tags.clear(),Q(r,"ProperNoun","2-titlecase"),!0):a.length>=2&&xm.test(a)&&Am.test(a)&&Cm.test(a)&&!jm[r.normal]?(Q(r,"RomanNumeral","2-xvii"),!0):null},Yo=function(e="",t=[]){const n=e.length;let r=7;n<=r&&(r=n-1);for(let o=r;o>1;o-=1){const a=e.substring(n-o,n);if(t[a.length].hasOwnProperty(a)===!0)return t[a.length][a]}return null},Im=function(e,t,n){const r=e[t];if(r.tags.size===0){let o=Yo(r.normal,n.two.suffixPatterns);if(o!==null)return Q(r,o,"2-suffix"),r.confidence=.7,!0;if(r.implicit&&(o=Yo(r.implicit,n.two.suffixPatterns),o!==null))return Q(r,o,"2-implicit-suffix"),r.confidence=.7,!0}return null},ea=/['‘’‛‵′`´]/,qn=function(e,t){for(let n=0;n<t.length;n+=1)if(t[n][0].test(e)===!0)return t[n];return null},Tm=function(e="",t){const n=e[e.length-1];if(t.hasOwnProperty(n)===!0){const r=t[n]||[];for(let o=0;o<r.length;o+=1)if(r[o][0].test(e)===!0)return r[o]}return null},Em=function(e,t,n,r){const o=r.methods.one.setTag,{regexText:a,regexNormal:i,regexNumbers:s,endsWith:u}=n.two,l=e[t],c=l.machine||l.normal;let d=l.text;ea.test(l.post)&&!ea.test(l.pre)&&(d+=l.post.trim());let g=qn(d,a)||qn(c,i);return!g&&/[0-9]/.test(c)&&(g=qn(c,s)),!g&&l.tags.size===0&&(g=Tm(c,u)),g?(o([l],g[1],r,null,`2-regex-'${g[2]||g[0]}'`),l.confidence=.6,!0):null},Dm=function(e="",t=[]){const n=e.length;let r=7;r>n-3&&(r=n-3);for(let o=r;o>2;o-=1){const a=e.substring(0,o);if(t[a.length].hasOwnProperty(a)===!0)return t[a.length][a]}return null},Hm=function(e,t,n){const r=e[t];if(r.tags.size===0){const o=Dm(r.normal,n.two.prefixPatterns);if(o!==null)return Q(r,o,"2-prefix"),r.confidence=.5,!0}return null},Gm=1400,Om=2100,Fm=new Set(["in","on","by","until","for","to","during","throughout","through","within","before","after","of","this","next","last","circa","around","post","pre","budget","classic","plan","may"]),ta=function(e){if(!e)return!1;const t=e.normal||e.implicit;return!!(Fm.has(t)||e.tags.has("Date")||e.tags.has("Month")||e.tags.has("WeekDay")||e.tags.has("Year")||e.tags.has("ProperNoun"))},na=function(e){return e?!!(e.tags.has("Ordinal")||e.tags.has("Cardinal")&&e.normal.length<3||e.normal==="is"||e.normal==="was"):!1},ra=function(e){return e&&(e.tags.has("Date")||e.tags.has("Month")||e.tags.has("WeekDay")||e.tags.has("Year"))},Vm=function(e,t){const n=e[t];if(n.tags.has("NumericValue")&&n.tags.has("Cardinal")&&n.normal.length===4){const r=Number(n.normal);if(r&&!isNaN(r)&&r>Gm&&r<Om){const o=e[t-1],a=e[t+1];if(ta(o)||ta(a))return Q(n,"Year","2-tagYear");if(r>=1920&&r<2025){if(na(o)||na(a))return Q(n,"Year","2-tagYear-close");if(ra(e[t-2])||ra(e[t+2]))return Q(n,"Year","2-tagYear-far");if(o&&(o.tags.has("Determiner")||o.tags.has("Possessive"))&&a&&a.tags.has("Noun")&&!a.tags.has("Plural"))return Q(n,"Year","2-tagYear-noun")}}}return null},zm=function(e,t,n,r){const o=r.methods.one.setTag,a=e[t],i=["PastTense","PresentTense","Auxiliary","Modal","Particle"];a.tags.has("Verb")&&(i.find(s=>a.tags.has(s))||o([a],"Infinitive",r,null,"2-verb-type''"))},_i=/^[A-Z]('s|,)?$/,Qi=/^[A-Z-]+$/,Zi=/^[A-Z]+s$/,Bm=/([A-Z]\.)+[A-Z]?,?$/,Sm=/[A-Z]{2,}('s|,)?$/,Mm=/([a-z]\.)+[a-z]\.?$/,Xi={I:!0,A:!0},Lm={la:!0,ny:!0,us:!0,dc:!0,gb:!0},Km=function(e,t){let n=e.text;if(Qi.test(n)===!1)if(n.length>3&&Zi.test(n)===!0)n=n.replace(/s$/,"");else return!1;return n.length>5||Xi.hasOwnProperty(n)||t.one.lexicon.hasOwnProperty(e.normal)?!1:Bm.test(n)===!0||Mm.test(n)===!0||_i.test(n)===!0||Sm.test(n)===!0},Jm=function(e,t,n){const r=e[t];return r.tags.has("RomanNumeral")||r.tags.has("Acronym")||r.frozen?null:Km(r,n)?(r.tags.clear(),Q(r,["Acronym","Noun"],"3-no-period-acronym"),Lm[r.normal]===!0&&Q(r,"Place","3-place-acronym"),Zi.test(r.text)===!0&&Q(r,"Plural","3-plural-acronym"),!0):!Xi.hasOwnProperty(r.text)&&_i.test(r.text)?(r.tags.clear(),Q(r,["Acronym","Noun"],"3-one-letter-acronym"),!0):r.tags.has("Organization")&&r.text.length<=3?(Q(r,"Acronym","3-org-acronym"),!0):r.tags.has("Organization")&&Qi.test(r.text)&&r.text.length<=6?(Q(r,"Acronym","3-titlecase-acronym"),!0):null},oa=function(e,t){if(!e)return null;const n=t.find(r=>e.normal===r[0]);return n?n[1]:null},aa=function(e,t){if(!e)return null;const n=t.find(r=>e.tags.has(r[0]));return n?n[1]:null},Wm=function(e,t,n){const{leftTags:r,leftWords:o,rightWords:a,rightTags:i}=n.two.neighbours,s=e[t];if(s.tags.size===0){let u=null;if(u=u||oa(e[t-1],o),u=u||oa(e[t+1],a),u=u||aa(e[t-1],r),u=u||aa(e[t+1],i),u)return Q(s,u,"3-[neighbour]"),Qt(e,t,n),e[t].confidence=.2,!0}return null},qm=e=>new RegExp("^\\p{Lu}[\\p{Ll}'’]","u").test(e),ia=function(e,t,n){return!e||e.tags.has("FirstName")||e.tags.has("Place")?!1:e.tags.has("ProperNoun")||e.tags.has("Organization")||e.tags.has("Acronym")?!0:!n&&qm(e.text)?t===0?e.tags.has("Singular"):!0:!1},Rm=function(e,t,n,r){const o=n.model.two.orgWords,a=n.methods.one.setTag,i=e[t],s=i.machine||i.normal;if(o[s]===!0&&ia(e[t-1],t-1,r)){a([e[t]],"Organization",n,null,"3-[org-word]");for(let u=t;u>=0&&ia(e[u],u,r);u-=1)a([e[u]],"Organization",n,null,"3-[org-word]")}return null},Um=e=>new RegExp("^\\p{Lu}[\\p{Ll}'’]","u").test(e),_m=/'s$/,sa=new Set(["athletic","city","community","eastern","federal","financial","great","historic","historical","local","memorial","municipal","national","northern","provincial","southern","state","western","spring","pine","sunset","view","oak","maple","spruce","cedar","willow"]),Qm=new Set(["center","centre","way","range","bar","bridge","field","pit"]),ua=function(e,t,n){if(!e)return!1;const r=e.tags;return r.has("Organization")||r.has("Possessive")||_m.test(e.normal)?!1:r.has("ProperNoun")||r.has("Place")?!0:!n&&Um(e.text)?t===0?r.has("Singular"):!0:!1},Zm=function(e,t,n,r){const o=n.model.two.placeWords,a=n.methods.one.setTag,i=e[t],s=i.machine||i.normal;if(o[s]===!0){for(let u=t-1;u>=0;u-=1)if(!sa.has(e[u].normal)){if(ua(e[u],u,r)){a(e.slice(u,t+1),"Place",n,null,"3-[place-of-foo]");continue}break}if(Qm.has(s))return!1;for(let u=t+1;u<e.length;u+=1){if(ua(e[u],u,r))return a(e.slice(t,u+1),"Place",n,null,"3-[foo-place]"),!0;if(!(e[u].normal==="of"||sa.has(e[u].normal)))break}}return null},Xm=function(e,t,n){let r=!1;const o=e[t].tags;(o.size===0||o.size===1&&(o.has("Hyphenated")||o.has("HashTag")||o.has("Prefix")||o.has("SlashedTerm")))&&(r=!0),r&&(Q(e[t],"Noun","3-[fallback]"),Qt(e,t,n),e[t].confidence=.1)},Ym=/^[A-Z][a-z]/,Ie=(e,t)=>e[t].tags.has("ProperNoun")&&Ym.test(e[t].text)?"Noun":null,la=(e,t,n)=>t===0&&!e[1]?n:null,ef=function(e,t){return!e[t+1]&&e[t-1]&&e[t-1].tags.has("Determiner")?"Noun":null},tf=function(e,t,n){return t===0&&e.length>3?n:null},ca={"Adj|Gerund":(e,t)=>Ie(e,t),"Adj|Noun":(e,t)=>Ie(e,t)||ef(e,t),"Actor|Verb":(e,t)=>Ie(e,t),"Adj|Past":(e,t)=>Ie(e,t),"Adj|Present":(e,t)=>Ie(e,t),"Noun|Gerund":(e,t)=>Ie(e,t),"Noun|Verb":(e,t)=>t>0&&Ie(e,t)||la(e,t,"Infinitive"),"Plural|Verb":(e,t)=>Ie(e,t)||la(e,t,"PresentTense")||tf(e,t,"Plural"),"Person|Noun":(e,t)=>Ie(e,t),"Person|Verb":(e,t)=>t!==0?Ie(e,t):null,"Person|Adj":(e,t)=>t===0&&e.length>1||Ie(e,t)?"Person":null},Sr=process.env?process.env:self.env||{},ha=/^(under|over|mis|re|un|dis|semi)-?/,da=(e,t)=>{if(!e||!t)return null;const n=e.normal||e.implicit;let r=null;return t.hasOwnProperty(n)&&(r=t[n]),r&&Sr.DEBUG_TAGS&&console.log(`
|
|
12
|
-
|
|
13
|
-
-> X - '${u}' : (${l}) `)}},of={there:!0,this:!0,it:!0,him:!0,her:!0,us:!0},af=function(e,t){const n=t.methods.one.setTag,r=t.model.one._multiCache||{},o=e[0];if((o.switch==="Noun|Verb"||o.tags.has("Infinitive"))&&e.length>=2){if(e.length<4&&!of[e[1].normal]||!o.tags.has("PhrasalVerb")&&r.hasOwnProperty(o.normal))return;(e[1].tags.has("Noun")||e[1].tags.has("Determiner"))&&(!e.slice(1,3).some(a=>a.tags.has("Verb"))||o.tags.has("#PhrasalVerb"))&&n([o],"Imperative",t,null,"3-[imperative]")}},sf=function(e){if(e.filter(n=>!n.tags.has("ProperNoun")).length<=3)return!1;const t=/^[a-z]/;return e.every(n=>!t.test(n.text))},uf=function(e,t,n){e.forEach(r=>{gm(r,0,t,n)})},lf=function(e,t,n,r){for(let o=0;o<e.length;o+=1)e[o].frozen!==!0&&(fm(e,o,t),r===!1&&Nm(e,o,t),Im(e,o,t),Em(e,o,t,n),Hm(e,o,t),Vm(e,o))},cf=function(e,t,n,r){for(let o=0;o<e.length;o+=1){let a=Jm(e,o,t);Qt(e,o,t),a=a||Wm(e,o,t),a=a||Xm(e,o,t)}for(let o=0;o<e.length;o+=1)e[o].frozen!==!0&&(Rm(e,o,n,r),Zm(e,o,n,r),rf(e,o,n),zm(e,o,t,n),mm(e,o,t,n));af(e,n)},hf=function(e){const{methods:t,model:n,world:r}=e,o=e.docs;uf(o,n,r);const a=t.two.quickSplit(o);for(let i=0;i<a.length;i+=1){const s=a[i],u=sf(s);lf(s,n,r,u),cf(s,n,r,u)}return a},ga={Possessive:e=>{let t=e.machine||e.normal||e.text;return t=t.replace(/'s$/,""),t},Plural:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.noun.toSingular(n,t.model)},Copula:()=>"is",PastTense:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,"PastTense")},Gerund:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.verb.toInfinitive(n,t.model,"Gerund")},PresentTense:(e,t)=>{const n=e.machine||e.normal||e.text;return e.tags.has("Infinitive")?n:t.methods.two.transform.verb.toInfinitive(n,t.model,"PresentTense")},Comparative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromComparative(n,t.model)},Superlative:(e,t)=>{const n=e.machine||e.normal||e.text;return t.methods.two.transform.adjective.fromSuperlative(n,t.model)},Adverb:(e,t)=>{const{fromAdverb:n}=t.methods.two.transform.adjective,r=e.machine||e.normal||e.text;return n(r)}},df=function(e){const t=e.world,n=Object.keys(ga);e.docs.forEach(r=>{for(let o=0;o<r.length;o+=1){const a=r[o];for(let i=0;i<n.length;i+=1)if(a.tags.has(n[i])){const s=ga[n[i]],u=s(a,t);a.normal!==u&&(a.root=u);break}}})},ma={Adverb:"RB",Comparative:"JJR",Superlative:"JJS",Adjective:"JJ",TO:"Conjunction",Modal:"MD",Auxiliary:"MD",Gerund:"VBG",PastTense:"VBD",Participle:"VBN",PresentTense:"VBZ",Infinitive:"VB",Particle:"RP",Verb:"VB",Pronoun:"PRP",Cardinal:"CD",Conjunction:"CC",Determiner:"DT",Preposition:"IN",QuestionWord:"WP",Expression:"UH",Possessive:"POS",ProperNoun:"NNP",Person:"NNP",Place:"NNP",Organization:"NNP",Singular:"NN",Plural:"NNS",Noun:"NN",There:"EX"},pf=function(e){if(e.tags.has("ProperNoun")&&e.tags.has("Plural"))return"NNPS";if(e.tags.has("Possessive")&&e.tags.has("Pronoun"))return"PRP$";if(e.normal==="there")return"EX";if(e.normal==="to")return"TO";const t=e.tagRank||[];for(let n=0;n<t.length;n+=1)if(ma.hasOwnProperty(t[n]))return ma[t[n]];return null},gf=function(e){e.compute("tagRank"),e.docs.forEach(t=>{t.forEach(n=>{n.penn=pf(n)})})},mf={preTagger:hf,root:df,penn:gf},Rn=["Person","Place","Organization"],ff={Noun:{not:["Verb","Adjective","Adverb","Value","Determiner"]},Singular:{is:"Noun",not:["Plural","Uncountable"]},ProperNoun:{is:"Noun"},Person:{is:"Singular",also:["ProperNoun"],not:["Place","Organization","Date"]},FirstName:{is:"Person"},MaleName:{is:"FirstName",not:["FemaleName","LastName"]},FemaleName:{is:"FirstName",not:["MaleName","LastName"]},LastName:{is:"Person",not:["FirstName"]},Honorific:{is:"Person",not:["FirstName","LastName","Value"]},Place:{is:"Singular",not:["Person","Organization"]},Country:{is:"Place",also:["ProperNoun"],not:["City"]},City:{is:"Place",also:["ProperNoun"],not:["Country"]},Region:{is:"Place",also:["ProperNoun"]},Address:{},Organization:{is:"ProperNoun",not:["Person","Place"]},SportsTeam:{is:"Organization"},School:{is:"Organization"},Company:{is:"Organization"},Plural:{is:"Noun",not:["Singular","Uncountable"]},Uncountable:{is:"Noun"},Pronoun:{is:"Noun",not:Rn},Actor:{is:"Noun",not:["Place","Organization"]},Activity:{is:"Noun",not:["Person","Place"]},Unit:{is:"Noun",not:Rn},Demonym:{is:"Noun",also:["ProperNoun"],not:Rn},Possessive:{is:"Noun"},Reflexive:{is:"Pronoun"}},bf={Verb:{not:["Noun","Adjective","Adverb","Value","Expression"]},PresentTense:{is:"Verb",not:["PastTense","FutureTense"]},Infinitive:{is:"PresentTense",not:["Gerund"]},Imperative:{is:"Verb",not:["PastTense","Gerund","Copula"]},Gerund:{is:"PresentTense",not:["Copula"]},PastTense:{is:"Verb",not:["PresentTense","Gerund","FutureTense"]},FutureTense:{is:"Verb",not:["PresentTense","PastTense"]},Copula:{is:"Verb"},Modal:{is:"Verb",not:["Infinitive"]},Participle:{is:"PastTense"},Auxiliary:{is:"Verb",not:["PastTense","PresentTense","Gerund","Conjunction"]},PhrasalVerb:{is:"Verb"},Particle:{is:"PhrasalVerb",not:["PastTense","PresentTense","Copula","Gerund"]},Passive:{is:"Verb"}},vf={Value:{not:["Verb","Adjective","Adverb"]},Ordinal:{is:"Value",not:["Cardinal"]},Cardinal:{is:"Value",not:["Ordinal"]},Fraction:{is:"Value",not:["Noun"]},Multiple:{is:"TextValue"},RomanNumeral:{is:"Cardinal",not:["TextValue"]},TextValue:{is:"Value",not:["NumericValue"]},NumericValue:{is:"Value",not:["TextValue"]},Money:{is:"Cardinal"},Percent:{is:"Value"}},yf={Date:{not:["Verb","Adverb","Adjective"]},Month:{is:"Date",also:["Noun"],not:["Year","WeekDay","Time"]},WeekDay:{is:"Date",also:["Noun"]},Year:{is:"Date",not:["RomanNumeral"]},FinancialQuarter:{is:"Date",not:"Fraction"},Holiday:{is:"Date",also:["Noun"]},Season:{is:"Date"},Timezone:{is:"Date",also:["Noun"],not:["ProperNoun"]},Time:{is:"Date",not:["AtMention"]},Duration:{is:"Date",also:["Noun"]}},wf=["Noun","Verb","Adjective","Adverb","Value","QuestionWord"],$f={Adjective:{not:["Noun","Verb","Adverb","Value"]},Comparable:{is:"Adjective"},Comparative:{is:"Adjective"},Superlative:{is:"Adjective",not:["Comparative"]},NumberRange:{},Adverb:{not:["Noun","Verb","Adjective","Value"]},Determiner:{not:["Noun","Verb","Adjective","Adverb","QuestionWord","Conjunction"]},Conjunction:{not:wf},Preposition:{not:["Noun","Verb","Adjective","Adverb","QuestionWord","Determiner"]},QuestionWord:{not:["Determiner"]},Currency:{is:"Noun"},Expression:{not:["Noun","Adjective","Verb","Adverb"]},Abbreviation:{},Url:{not:["HashTag","PhoneNumber","Verb","Adjective","Value","AtMention","Email","SlashedTerm"]},PhoneNumber:{not:["HashTag","Verb","Adjective","Value","AtMention","Email"]},HashTag:{},AtMention:{is:"Noun",not:["HashTag","Email"]},Emoji:{not:["HashTag","Verb","Adjective","Value","AtMention"]},Emoticon:{not:["HashTag","Verb","Adjective","Value","AtMention","SlashedTerm"]},SlashedTerm:{not:["Emoticon","Url","Value"]},Email:{not:["HashTag","Verb","Adjective","Value","AtMention"]},Acronym:{not:["Plural","RomanNumeral","Pronoun","Date"]},Negative:{not:["Noun","Adjective","Value","Expression"]},Condition:{not:["Verb","Adjective","Noun","Value"]},There:{not:["Verb","Adjective","Noun","Value","Conjunction","Preposition"]},Prefix:{not:["Abbreviation","Acronym","ProperNoun"]},Hyphenated:{}},kf=Object.assign({},ff,bf,vf,yf,$f),Pf={compute:mf,methods:fr,model:pm,tags:kf,hooks:["preTagger"]},Af=/[,)"';:\-–—.…]/,Le=function(e,t){if(!e.found)return;const n=e.termList();for(let r=0;r<n.length-1;r++){const o=n[r];if(Af.test(o.post))return}n[0].implicit=n[0].normal,n[0].text+=t,n[0].normal+=t,n.slice(1).forEach(r=>{r.implicit=r.normal,r.text="",r.normal=""});for(let r=0;r<n.length-1;r++)n[r].post=n[r].post.replace(/ /,"")},xf=function(){const e=this.not("@hasContraction");let t=e.match("(we|they|you) are");return Le(t,"'re"),t=e.match("(he|she|they|it|we|you) will"),Le(t,"'ll"),t=e.match("(he|she|they|it|we) is"),Le(t,"'s"),t=e.match("#Person is"),Le(t,"'s"),t=e.match("#Person would"),Le(t,"'d"),t=e.match("(is|was|had|would|should|could|do|does|have|has|can) not"),Le(t,"n't"),t=e.match("(i|we|they) have"),Le(t,"'ve"),t=e.match("(would|should|could) have"),Le(t,"'ve"),t=e.match("i am"),Le(t,"'m"),t=e.match("going to"),this},Cf=new RegExp("^\\p{Lu}[\\p{Ll}'’]","u"),jf=function(e=""){return e=e.replace(/^ *[a-z\u00C0-\u00FF]/,t=>t.toUpperCase()),e},Nf=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Contraction"}expand(){return this.docs.forEach(r=>{const o=Cf.test(r[0].text);r.forEach((a,i)=>{a.text=a.implicit||"",delete a.implicit,i<r.length-1&&a.post===""&&(a.post+=" "),a.dirty=!0}),o&&(r[0].text=jf(r[0].text))}),this.compute("normal"),this}}e.prototype.contractions=function(){const n=this.match("@hasContraction+");return new t(this.document,n.pointer)},e.prototype.contract=xf},If=function(e,t,n){const[r,o]=t;!n||n.length===0||(n=n.map((a,i)=>(a.implicit=a.text,a.machine=a.text,a.pre="",a.post="",a.text="",a.normal="",a.index=[r,o+i],a)),n[0]&&(n[0].pre=e[r][o].pre,n[n.length-1].post=e[r][o].post,n[0].text=e[r][o].text,n[0].normal=e[r][o].normal),e[r].splice(o,1,...n))},Tf=/'/,Ef=new Set(["been","become"]),Df=new Set(["what","how","when","if","too"]),Hf=new Set(["too","also","enough"]),Gf=(e,t)=>{for(let n=t+1;n<e.length;n+=1){const r=e[n];if(Ef.has(r.normal))return"has";if(Df.has(r.normal)||r.tags.has("Gerund")||r.tags.has("Determiner")||r.tags.has("Adjective")||r.switch==="Adj|Past"&&e[n+1]&&(Hf.has(e[n+1].normal)||e[n+1].tags.has("Preposition")))return"is";if(r.tags.has("PastTense"))return e[n+1]&&e[n+1].normal==="for"?"is":"has"}return"is"},Of=function(e,t){const n=e[t].normal.split(Tf)[0];if(n==="let")return[n,"us"];if(n==="there"){const r=e[t+1];if(r&&r.tags.has("Plural"))return[n,"are"]}return Gf(e,t)==="has"?[n,"has"]:[n,"is"]},Ff=/'/,Vf=new Set(["better","done","before","it","had"]),zf=new Set(["have","be"]),Bf=(e,t)=>{for(let n=t+1;n<e.length;n+=1){const r=e[n];if(Vf.has(r.normal))return"had";if(zf.has(r.normal))return"would";if(r.tags.has("PastTense")||r.switch==="Adj|Past")return"had";if(r.tags.has("PresentTense")||r.tags.has("Infinitive"))return"would";if(r.tags.has("#Determiner"))return"had";if(r.tags.has("Adjective"))return"would"}return!1},Sf=function(e,t){const n=e[t].normal.split(Ff)[0];return n==="how"||n==="what"?[n,"did"]:Bf(e,t)==="had"?[n,"had"]:[n,"would"]},Mf=function(e,t){for(let n=t-1;n>=0;n-=1)if(e[n].tags.has("Noun")||e[n].tags.has("Pronoun")||e[n].tags.has("Plural")||e[n].tags.has("Singular"))return e[n];return null},Lf=function(e,t){if(e[t].normal==="ain't"||e[t].normal==="aint"){if(e[t+1]&&e[t+1].normal==="never")return["have"];const n=Mf(e,t);if(n){if(n.normal==="we"||n.normal==="they")return["are","not"];if(n.normal==="i")return["am","not"];if(n.tags&&n.tags.has("Plural"))return["are","not"]}return["is","not"]}return[e[t].normal.replace(/n't/,""),"not"]},Kf={that:!0,there:!0,let:!0,here:!0,everywhere:!0},Jf={in:!0,by:!0,for:!0},Wf=new Set(["too","also","enough","about"]),qf=new Set(["is","are","did","were","could","should","must","had","have"]),Rf=(e,t)=>{const n=e[t];if(Kf.hasOwnProperty(n.machine||n.normal))return!1;if(n.tags.has("Possessive"))return!0;if(n.tags.has("QuestionWord")||n.normal==="he's"||n.normal==="she's")return!1;const r=e[t+1];if(!r)return!0;if(n.normal==="it's")return!!r.tags.has("#Noun");if(r.switch=="Noun|Gerund"){const o=e[t+2];return o?!!o.tags.has("Copula"):!!(n.tags.has("Actor")||n.tags.has("ProperNoun"))}if(r.tags.has("Verb"))return r.tags.has("Infinitive")?!0:r.tags.has("Gerund")?!1:!!r.tags.has("PresentTense");if(r.switch==="Adj|Noun"){const o=e[t+2];if(!o)return!1;if(qf.has(o.normal))return!0;if(Wf.has(o.normal))return!1}if(r.tags.has("Noun")){const o=r.machine||r.normal;return!(o==="here"||o==="there"||o==="everywhere"||r.tags.has("Possessive")||r.tags.has("ProperNoun")&&!n.tags.has("ProperNoun"))}if(e[t-1]&&Jf[e[t-1].normal]===!0)return!0;if(r.tags.has("Adjective")){const o=e[t+2];if(!o)return!1;if(o.tags.has("Noun")&&!o.tags.has("Pronoun")){const a=r.normal;return!(a==="above"||a==="below"||a==="behind")}return o.switch==="Noun|Verb"}return!!r.tags.has("Value")},fa=/'/,Uf=function(e){e.forEach((t,n)=>{t.index&&(t.index[1]=n)})},_f=function(e,t,n,r){const o=t.update();o.document=[e];let a=n+r;n>0&&(n-=1),e[a]&&(a+=1),o.ptrs=[[0,n,a]],o.compute(["freeze","lexicon","preTagger","unfreeze"]),Uf(e)},ba={d:(e,t)=>Sf(e,t),t:(e,t)=>Lf(e,t),s:(e,t,n)=>Rf(e,t)?n.methods.one.setTag([e[t]],"Possessive",n,null,"2-contraction"):Of(e,t)},Qf=function(e,t){const n=t.fromText(e.join(" "));return n.compute("id"),n.docs[0]},Zf=e=>{const{world:t,document:n}=e;n.forEach((r,o)=>{for(let a=r.length-1;a>=0;a-=1){if(r[a].implicit)continue;let i=null;fa.test(r[a].normal)===!0&&(i=r[a].normal.split(fa)[1]);let s=null;if(ba.hasOwnProperty(i)&&(s=ba[i](r,a,t)),s){s=Qf(s,e),If(n,[o,a],s),_f(n[o],e,a,s.length);continue}}})},Xf={contractionTwo:Zf},Yf={compute:Xf,api:Nf,hooks:["contractionTwo"]},e0=[{match:"[(all|both)] #Determiner #Noun",group:0,tag:"Noun",reason:"all-noun"},{match:"#Copula [(just|alone)]$",group:0,tag:"Adjective",reason:"not-adverb"},{match:"#Singular is #Adverb? [#PastTense$]",group:0,tag:"Adjective",reason:"is-filled"},{match:"[#PastTense] #Singular is",group:0,tag:"Adjective",reason:"smoked-poutine"},{match:"[#PastTense] #Plural are",group:0,tag:"Adjective",reason:"baked-onions"},{match:"well [#PastTense]",group:0,tag:"Adjective",reason:"well-made"},{match:"#Copula [fucked up?]",group:0,tag:"Adjective",reason:"swears-adjective"},{match:"#Singular (seems|appears) #Adverb? [#PastTense$]",group:0,tag:"Adjective",reason:"seems-filled"},{match:"#Copula #Adjective? [(out|in|through)]$",group:0,tag:"Adjective",reason:"still-out"},{match:"^[#Adjective] (the|your) #Noun",group:0,notIf:"(all|even)",tag:"Infinitive",reason:"shut-the"},{match:"the [said] #Noun",group:0,tag:"Adjective",reason:"the-said-card"},{match:"[#Hyphenated (#Hyphenated && #PastTense)] (#Noun|#Conjunction)",group:0,tag:"Adjective",notIf:"#Adverb",reason:"faith-based"},{match:"[#Hyphenated (#Hyphenated && #Gerund)] (#Noun|#Conjunction)",group:0,tag:"Adjective",notIf:"#Adverb",reason:"self-driving"},{match:"[#PastTense (#Hyphenated && #PhrasalVerb)] (#Noun|#Conjunction)",group:0,tag:"Adjective",reason:"dammed-up"},{match:"(#Hyphenated && #Value) fold",tag:"Adjective",reason:"two-fold"},{match:"must (#Hyphenated && #Infinitive)",tag:"Adjective",reason:"must-win"},{match:"(#Hyphenated && #Infinitive) #Hyphenated",tag:"Adjective",notIf:"#PhrasalVerb",reason:"vacuum-sealed"},{match:"too much",tag:"Adverb Adjective",reason:"bit-4"},{match:"a bit much",tag:"Determiner Adverb Adjective",reason:"bit-3"},{match:"[(un|contra|extra|inter|intra|macro|micro|mid|mis|mono|multi|pre|sub|tri|ex)] #Adjective",group:0,tag:["Adjective","Prefix"],reason:"un-skilled"}],t0="(dark|bright|flat|light|soft|pale|dead|dim|faux|little|wee|sheer|most|near|good|extra|all)",va="(hard|fast|late|early|high|right|deep|close|direct)",n0=[{match:"#Adverb [#Adverb] (and|or|then)",group:0,tag:"Adjective",reason:"kinda-sparkly-and"},{match:`[${t0}] #Adjective`,group:0,tag:"Adverb",reason:"dark-green"},{match:"#Copula [far too] #Adjective",group:0,tag:"Adverb",reason:"far-too"},{match:"#Copula [still] (in|#Gerund|#Adjective)",group:0,tag:"Adverb",reason:"was-still-walking"},{match:`#Plural ${va}`,tag:"#PresentTense #Adverb",reason:"studies-hard"},{match:`#Verb [${va}] !#Noun?`,group:0,notIf:"(#Copula|get|got|getting|become|became|becoming|feel|feels|feeling|#Determiner|#Preposition)",tag:"Adverb",reason:"shops-direct"},{match:"[#Plural] a lot",tag:"PresentTense",reason:"studies-a-lot"}],r0=[{match:"as [#Gerund] as",group:0,tag:"Adjective",reason:"as-gerund-as"},{match:"more [#Gerund] than",group:0,tag:"Adjective",reason:"more-gerund-than"},{match:"(so|very|extremely) [#Gerund]",group:0,tag:"Adjective",reason:"so-gerund"},{match:"(found|found) it #Adverb? [#Gerund]",group:0,tag:"Adjective",reason:"found-it-gerund"},{match:"a (little|bit|wee) bit? [#Gerund]",group:0,tag:"Adjective",reason:"a-bit-gerund"},{match:"#Gerund [#Gerund]",group:0,tag:"Adjective",notIf:"(impersonating|practicing|considering|assuming)",reason:"looking-annoying"},{match:"(looked|look|looks) #Adverb? [%Adj|Gerund%]",group:0,tag:"Adjective",notIf:"(impersonating|practicing|considering|assuming)",reason:"looked-amazing"},{match:"[%Adj|Gerund%] #Determiner",group:0,tag:"Gerund",reason:"developing-a"},{match:"#Possessive [%Adj|Gerund%] #Noun",group:0,tag:"Adjective",reason:"leading-manufacturer"},{match:"%Noun|Gerund% %Adj|Gerund%",tag:"Gerund #Adjective",reason:"meaning-alluring"},{match:"(face|embrace|reveal|stop|start|resume) %Adj|Gerund%",tag:"#PresentTense #Adjective",reason:"face-shocking"},{match:"(are|were) [%Adj|Gerund%] #Plural",group:0,tag:"Adjective",reason:"are-enduring-symbols"}],o0=[{match:"#Determiner [#Adjective] #Copula",group:0,tag:"Noun",reason:"the-adj-is"},{match:"#Adjective [#Adjective] #Copula",group:0,tag:"Noun",reason:"adj-adj-is"},{match:"(his|its) [%Adj|Noun%]",group:0,tag:"Noun",notIf:"#Hyphenated",reason:"his-fine"},{match:"#Copula #Adverb? [all]",group:0,tag:"Noun",reason:"is-all"},{match:"(have|had) [#Adjective] #Preposition .",group:0,tag:"Noun",reason:"have-fun"},{match:"#Gerund (giant|capital|center|zone|application)",tag:"Noun",reason:"brewing-giant"},{match:"#Preposition (a|an) [#Adjective]$",group:0,tag:"Noun",reason:"an-instant"},{match:"no [#Adjective] #Modal",group:0,tag:"Noun",reason:"no-golden"},{match:"[brand #Gerund?] new",group:0,tag:"Adverb",reason:"brand-new"},{match:"(#Determiner|#Comparative|new|different) [kind]",group:0,tag:"Noun",reason:"some-kind"},{match:"#Possessive [%Adj|Noun%] #Noun",group:0,tag:"Adjective",reason:"her-favourite"},{match:"must && #Hyphenated .",tag:"Adjective",reason:"must-win"},{match:"#Determiner [#Adjective]$",tag:"Noun",notIf:"(this|that|#Comparative|#Superlative)",reason:"the-south"},{match:"(#Noun && #Hyphenated) (#Adjective && #Hyphenated)",tag:"Adjective",notIf:"(this|that|#Comparative|#Superlative)",reason:"company-wide"},{match:"#Determiner [#Adjective] (#Copula|#Determiner)",notIf:"(#Comparative|#Superlative)",group:0,tag:"Noun",reason:"the-poor"},{match:"[%Adj|Noun%] #Noun",notIf:"(#Pronoun|#ProperNoun)",group:0,tag:"Adjective",reason:"stable-foundations"}],a0=[{match:"(slowly|quickly) [#Adjective]",group:0,tag:"Verb",reason:"slowly-adj"},{match:"does (#Adverb|not)? [#Adjective]",group:0,tag:"PresentTense",reason:"does-mean"},{match:"[(fine|okay|cool|ok)] by me",group:0,tag:"Adjective",reason:"okay-by-me"},{match:"i (#Adverb|do)? not? [mean]",group:0,tag:"PresentTense",reason:"i-mean"},{match:"will #Adjective",tag:"Auxiliary Infinitive",reason:"will-adj"},{match:"#Pronoun [#Adjective] #Determiner #Adjective? #Noun",group:0,tag:"Verb",reason:"he-adj-the"},{match:"#Copula [%Adj|Present%] to #Verb",group:0,tag:"Verb",reason:"adj-to"},{match:"#Copula [#Adjective] (well|badly|quickly|slowly)",group:0,tag:"Verb",reason:"done-well"},{match:"#Adjective and [#Gerund] !#Preposition?",group:0,tag:"Adjective",reason:"rude-and-x"},{match:"#Copula #Adverb? (over|under) [#PastTense]",group:0,tag:"Adjective",reason:"over-cooked"},{match:"#Copula #Adjective+ (and|or) [#PastTense]$",group:0,tag:"Adjective",reason:"bland-and-overcooked"},{match:"got #Adverb? [#PastTense] of",group:0,tag:"Adjective",reason:"got-tired-of"},{match:"(seem|seems|seemed|appear|appeared|appears|feel|feels|felt|sound|sounds|sounded) (#Adverb|#Adjective)? [#PastTense]",group:0,tag:"Adjective",reason:"felt-loved"},{match:"(seem|feel|seemed|felt) [#PastTense #Particle?]",group:0,tag:"Adjective",reason:"seem-confused"},{match:"a (bit|little|tad) [#PastTense #Particle?]",group:0,tag:"Adjective",reason:"a-bit-confused"},{match:"not be [%Adj|Past% #Particle?]",group:0,tag:"Adjective",reason:"do-not-be-confused"},{match:"#Copula just [%Adj|Past% #Particle?]",group:0,tag:"Adjective",reason:"is-just-right"},{match:"as [#Infinitive] as",group:0,tag:"Adjective",reason:"as-pale-as"},{match:"[%Adj|Past%] and #Adjective",group:0,tag:"Adjective",reason:"faled-and-oppressive"},{match:"or [#PastTense] #Noun",group:0,tag:"Adjective",notIf:"(#Copula|#Pronoun)",reason:"or-heightened-emotion"},{match:"(become|became|becoming|becomes) [#Verb]",group:0,tag:"Adjective",reason:"become-verb"},{match:"#Possessive [#PastTense] #Noun",group:0,tag:"Adjective",reason:"declared-intentions"},{match:"#Copula #Pronoun [%Adj|Present%]",group:0,tag:"Adjective",reason:"is-he-cool"},{match:"#Copula [%Adj|Past%] with",group:0,tag:"Adjective",notIf:"(associated|worn|baked|aged|armed|bound|fried|loaded|mixed|packed|pumped|filled|sealed)",reason:"is-crowded-with"},{match:"#Copula #Adverb? [%Adj|Present%]$",group:0,tag:"Adjective",reason:"was-empty$"}],i0=[{match:"[still] #Adjective",group:0,tag:"Adverb",reason:"still-advb"},{match:"[still] #Verb",group:0,tag:"Adverb",reason:"still-verb"},{match:"[so] #Adjective",group:0,tag:"Adverb",reason:"so-adv"},{match:"[way] #Comparative",group:0,tag:"Adverb",reason:"way-adj"},{match:"[way] #Adverb #Adjective",group:0,tag:"Adverb",reason:"way-too-adj"},{match:"[all] #Verb",group:0,tag:"Adverb",reason:"all-verb"},{match:"#Verb [like]",group:0,notIf:"(#Modal|#PhrasalVerb)",tag:"Adverb",reason:"verb-like"},{match:"(barely|hardly) even",tag:"Adverb",reason:"barely-even"},{match:"[even] #Verb",group:0,tag:"Adverb",reason:"even-walk"},{match:"[even] #Comparative",group:0,tag:"Adverb",reason:"even-worse"},{match:"[even] (#Determiner|#Possessive)",group:0,tag:"#Adverb",reason:"even-the"},{match:"even left",tag:"#Adverb #Verb",reason:"even-left"},{match:"[way] #Adjective",group:0,tag:"#Adverb",reason:"way-over"},{match:"#PresentTense [(hard|quick|bright|slow|fast|backwards|forwards)]",notIf:"#Copula",group:0,tag:"Adverb",reason:"lazy-ly"},{match:"[much] #Adjective",group:0,tag:"Adverb",reason:"bit-1"},{match:"#Copula [#Adverb]$",group:0,tag:"Adjective",reason:"is-well"},{match:"a [(little|bit|wee) bit?] #Adjective",group:0,tag:"Adverb",reason:"a-bit-cold"},{match:"[(super|pretty)] #Adjective",group:0,tag:"Adverb",reason:"super-strong"},{match:"(become|fall|grow) #Adverb? [#PastTense]",group:0,tag:"Adjective",reason:"overly-weakened"},{match:"(a|an) #Adverb [#Participle] #Noun",group:0,tag:"Adjective",reason:"completely-beaten"},{match:"#Determiner #Adverb? [close]",group:0,tag:"Adjective",reason:"a-close"},{match:"#Gerund #Adverb? [close]",group:0,tag:"Adverb",notIf:"(getting|becoming|feeling)",reason:"being-close"},{match:"(the|those|these|a|an) [#Participle] #Noun",group:0,tag:"Adjective",reason:"blown-motor"},{match:"(#PresentTense|#PastTense) [back]",group:0,tag:"Adverb",notIf:"(#PhrasalVerb|#Copula)",reason:"charge-back"},{match:"#Verb [around]",group:0,tag:"Adverb",notIf:"#PhrasalVerb",reason:"send-around"},{match:"[later] #PresentTense",group:0,tag:"Adverb",reason:"later-say"},{match:"#Determiner [well] !#PastTense?",group:0,tag:"Noun",reason:"the-well"},{match:"#Adjective [enough]",group:0,tag:"Adverb",reason:"high-enough"}],s0=[{match:"#Holiday (day|eve)",tag:"Holiday",reason:"holiday-day"},{match:"#Value of #Month",tag:"Date",reason:"value-of-month"},{match:"#Cardinal #Month",tag:"Date",reason:"cardinal-month"},{match:"#Month #Value to #Value",tag:"Date",reason:"value-to-value"},{match:"#Month the #Value",tag:"Date",reason:"month-the-value"},{match:"(#WeekDay|#Month) #Value",tag:"Date",reason:"date-value"},{match:"#Value (#WeekDay|#Month)",tag:"Date",reason:"value-date"},{match:"(#TextValue && #Date) #TextValue",tag:"Date",reason:"textvalue-date"},{match:"#Month #NumberRange",tag:"Date",reason:"aug 20-21"},{match:"#WeekDay #Month #Ordinal",tag:"Date",reason:"week mm-dd"},{match:"#Month #Ordinal #Cardinal",tag:"Date",reason:"mm-dd-yyy"},{match:"(#Place|#Demonmym|#Time) (standard|daylight|central|mountain)? time",tag:"Timezone",reason:"std-time"},{match:"(eastern|mountain|pacific|central|atlantic) (standard|daylight|summer)? time",tag:"Timezone",reason:"eastern-time"},{match:"#Time [(eastern|mountain|pacific|central|est|pst|gmt)]",group:0,tag:"Timezone",reason:"5pm-central"},{match:"(central|western|eastern) european time",tag:"Timezone",reason:"cet"}],u0=[{match:"[sun] the #Ordinal",tag:"WeekDay",reason:"sun-the-5th"},{match:"[sun] #Date",group:0,tag:"WeekDay",reason:"sun-feb"},{match:"#Date (on|this|next|last|during)? [sun]",group:0,tag:"WeekDay",reason:"1pm-sun"},{match:"(in|by|before|during|on|until|after|of|within|all) [sat]",group:0,tag:"WeekDay",reason:"sat"},{match:"(in|by|before|during|on|until|after|of|within|all) [wed]",group:0,tag:"WeekDay",reason:"wed"},{match:"(in|by|before|during|on|until|after|of|within|all) [march]",group:0,tag:"Month",reason:"march"},{match:"[sat] #Date",group:0,tag:"WeekDay",reason:"sat-feb"},{match:"#Preposition [(march|may)]",group:0,tag:"Month",reason:"in-month"},{match:"(this|next|last) (march|may) !#Infinitive?",tag:"#Date #Month",reason:"this-month"},{match:"(march|may) the? #Value",tag:"#Month #Date #Date",reason:"march-5th"},{match:"#Value of? (march|may)",tag:"#Date #Date #Month",reason:"5th-of-march"},{match:"[(march|may)] .? #Date",group:0,tag:"Month",reason:"march-and-feb"},{match:"#Date .? [(march|may)]",group:0,tag:"Month",reason:"feb-and-march"},{match:"#Adverb [(march|may)]",group:0,tag:"Verb",reason:"quickly-march"},{match:"[(march|may)] #Adverb",group:0,tag:"Verb",reason:"march-quickly"},{match:"#Value (am|pm)",tag:"Time",reason:"2-am"}],l0="(feel|sense|process|rush|side|bomb|bully|challenge|cover|crush|dump|exchange|flow|function|issue|lecture|limit|march|process)",c0=[{match:"(the|any) [more]",group:0,tag:"Singular",reason:"more-noun"},{match:"[more] #Noun",group:0,tag:"Adjective",reason:"more-noun"},{match:"(right|rights) of .",tag:"Noun",reason:"right-of"},{match:"a [bit]",group:0,tag:"Singular",reason:"bit-2"},{match:"a [must]",group:0,tag:"Singular",reason:"must-2"},{match:"(we|us) [all]",group:0,tag:"Noun",reason:"we all"},{match:"due to [#Verb]",group:0,tag:"Noun",reason:"due-to"},{match:"some [#Verb] #Plural",group:0,tag:"Noun",reason:"determiner6"},{match:"#Possessive #Ordinal [#PastTense]",group:0,tag:"Noun",reason:"first-thought"},{match:"(the|this|those|these) #Adjective [%Verb|Noun%]",group:0,tag:"Noun",notIf:"#Copula",reason:"the-adj-verb"},{match:"(the|this|those|these) #Adverb #Adjective [#Verb]",group:0,tag:"Noun",reason:"determiner4"},{match:"the [#Verb] #Preposition .",group:0,tag:"Noun",reason:"determiner1"},{match:"(a|an|the) [#Verb] of",group:0,tag:"Noun",reason:"the-verb-of"},{match:"#Determiner #Noun of [#Verb]",group:0,tag:"Noun",notIf:"#Gerund",reason:"noun-of-noun"},{match:"#PastTense #Preposition [#PresentTense]",group:0,notIf:"#Gerund",tag:"Noun",reason:"ended-in-ruins"},{match:"#Conjunction [u]",group:0,tag:"Pronoun",reason:"u-pronoun-2"},{match:"[u] #Verb",group:0,tag:"Pronoun",reason:"u-pronoun-1"},{match:"#Determiner [(western|eastern|northern|southern|central)] #Noun",group:0,tag:"Noun",reason:"western-line"},{match:"(#Singular && @hasHyphen) #PresentTense",tag:"Noun",reason:"hyphen-verb"},{match:"is no [#Verb]",group:0,tag:"Noun",reason:"is-no-verb"},{match:"do [so]",group:0,tag:"Noun",reason:"so-noun"},{match:"#Determiner [(shit|damn|hell)]",group:0,tag:"Noun",reason:"swears-noun"},{match:"to [(shit|hell)]",group:0,tag:"Noun",reason:"to-swears"},{match:"(the|these) [#Singular] (were|are)",group:0,tag:"Plural",reason:"singular-were"},{match:"a #Noun+ or #Adverb+? [#Verb]",group:0,tag:"Noun",reason:"noun-or-noun"},{match:"(the|those|these|a|an) #Adjective? [#PresentTense #Particle?]",group:0,tag:"Noun",notIf:"(seem|appear|include|#Gerund|#Copula)",reason:"det-inf"},{match:"#Noun #Actor",tag:"Actor",notIf:"(#Person|#Pronoun)",reason:"thing-doer"},{match:"#Gerund #Actor",tag:"Actor",reason:"gerund-doer"},{match:"co #Singular",tag:"Actor",reason:"co-noun"},{match:"[#Noun+] #Actor",group:0,tag:"Actor",notIf:"(#Honorific|#Pronoun|#Possessive)",reason:"air-traffic-controller"},{match:"(urban|cardiac|cardiovascular|respiratory|medical|clinical|visual|graphic|creative|dental|exotic|fine|certified|registered|technical|virtual|professional|amateur|junior|senior|special|pharmaceutical|theoretical)+ #Noun? #Actor",tag:"Actor",reason:"fine-artist"},{match:"#Noun+ (coach|chef|king|engineer|fellow|personality|boy|girl|man|woman|master)",tag:"Actor",reason:"dance-coach"},{match:"chief . officer",tag:"Actor",reason:"chief-x-officer"},{match:"chief of #Noun+",tag:"Actor",reason:"chief-of-police"},{match:"senior? vice? president of #Noun+",tag:"Actor",reason:"president-of"},{match:"#Determiner [sun]",group:0,tag:"Singular",reason:"the-sun"},{match:"#Verb (a|an) [#Value]$",group:0,tag:"Singular",reason:"did-a-value"},{match:"the [(can|will|may)]",group:0,tag:"Singular",reason:"the can"},{match:"#FirstName #Acronym? (#Possessive && #LastName)",tag:"Possessive",reason:"name-poss"},{match:"#Organization+ #Possessive",tag:"Possessive",reason:"org-possessive"},{match:"#Place+ #Possessive",tag:"Possessive",reason:"place-possessive"},{match:"#Possessive #PresentTense #Particle?",notIf:"(#Gerund|her)",tag:"Noun",reason:"possessive-verb"},{match:"(my|our|their|her|his|its) [(#Plural && #Actor)] #Noun",tag:"Possessive",reason:"my-dads"},{match:"#Value of a [second]",group:0,unTag:"Value",tag:"Singular",reason:"10th-of-a-second"},{match:"#Value [seconds]",group:0,unTag:"Value",tag:"Plural",reason:"10-seconds"},{match:"in [#Infinitive]",group:0,tag:"Singular",reason:"in-age"},{match:"a [#Adjective] #Preposition",group:0,tag:"Noun",reason:"a-minor-in"},{match:"#Determiner [#Singular] said",group:0,tag:"Actor",reason:"the-actor-said"},{match:`#Determiner #Noun [${l0}] !(#Preposition|to|#Adverb)?`,group:0,tag:"Noun",reason:"the-noun-sense"},{match:"[#PresentTense] (of|by|for) (a|an|the) #Noun #Copula",group:0,tag:"Plural",reason:"photographs-of"},{match:"#Infinitive and [%Noun|Verb%]",group:0,tag:"Infinitive",reason:"fight and win"},{match:"#Noun and [#Verb] and #Noun",group:0,tag:"Noun",reason:"peace-and-flowers"},{match:"the #Cardinal [%Adj|Noun%]",group:0,tag:"Noun",reason:"the-1992-classic"},{match:"#Copula the [%Adj|Noun%] #Noun",group:0,tag:"Adjective",reason:"the-premier-university"},{match:"i #Verb [me] #Noun",group:0,tag:"Possessive",reason:"scottish-me"},{match:"[#PresentTense] (music|class|lesson|night|party|festival|league|ceremony)",group:0,tag:"Noun",reason:"dance-music"},{match:"[wit] (me|it)",group:0,tag:"Presposition",reason:"wit-me"},{match:"#PastTense #Possessive [#Verb]",group:0,tag:"Noun",notIf:"(saw|made)",reason:"left-her-boots"},{match:"#Value [%Plural|Verb%]",group:0,tag:"Plural",notIf:"(one|1|a|an)",reason:"35-signs"},{match:"had [#PresentTense]",group:0,tag:"Noun",notIf:"(#Gerund|come|become)",reason:"had-time"},{match:"%Adj|Noun% %Noun|Verb%",tag:"#Adjective #Noun",notIf:"#ProperNoun #Noun",reason:"instant-access"},{match:"#Determiner [%Adj|Noun%] #Conjunction",group:0,tag:"Noun",reason:"a-rep-to"},{match:"#Adjective #Noun [%Plural|Verb%]$",group:0,tag:"Plural",notIf:"#Pronoun",reason:"near-death-experiences"},{match:"#Possessive #Noun [%Plural|Verb%]$",group:0,tag:"Plural",reason:"your-guild-colors"}],h0=[{match:"(this|that|the|a|an) [#Gerund #Infinitive]",group:0,tag:"Singular",reason:"the-planning-process"},{match:"(that|the) [#Gerund #PresentTense]",group:0,ifNo:"#Copula",tag:"Plural",reason:"the-paving-stones"},{match:"#Determiner [#Gerund] #Noun",group:0,tag:"Adjective",reason:"the-gerund-noun"},{match:"#Pronoun #Infinitive [#Gerund] #PresentTense",group:0,tag:"Noun",reason:"tipping-sucks"},{match:"#Adjective [#Gerund]",group:0,tag:"Noun",notIf:"(still|even|just)",reason:"early-warning"},{match:"[#Gerund] #Adverb? not? #Copula",group:0,tag:"Activity",reason:"gerund-copula"},{match:"#Copula [(#Gerund|#Activity)] #Copula",group:0,tag:"Gerund",reason:"are-doing-is"},{match:"[#Gerund] #Modal",group:0,tag:"Activity",reason:"gerund-modal"},{match:"#Singular for [%Noun|Gerund%]",group:0,tag:"Gerund",reason:"noun-for-gerund"},{match:"#Comparative (for|at) [%Noun|Gerund%]",group:0,tag:"Gerund",reason:"better-for-gerund"},{match:"#PresentTense the [#Gerund]",group:0,tag:"Noun",reason:"keep-the-touching"}],d0=[{match:"#Infinitive (this|that|the) [#Infinitive]",group:0,tag:"Noun",reason:"do-this-dance"},{match:"#Gerund #Determiner [#Infinitive]",group:0,tag:"Noun",reason:"running-a-show"},{match:"#Determiner (only|further|just|more|backward) [#Infinitive]",group:0,tag:"Noun",reason:"the-only-reason"},{match:"(the|this|a|an) [#Infinitive] #Adverb? #Verb",group:0,tag:"Noun",reason:"determiner5"},{match:"#Determiner #Adjective #Adjective? [#Infinitive]",group:0,tag:"Noun",reason:"a-nice-inf"},{match:"#Determiner #Demonym [#PresentTense]",group:0,tag:"Noun",reason:"mexican-train"},{match:"#Adjective #Noun+ [#Infinitive] #Copula",group:0,tag:"Noun",reason:"career-move"},{match:"at some [#Infinitive]",group:0,tag:"Noun",reason:"at-some-inf"},{match:"(go|goes|went) to [#Infinitive]",group:0,tag:"Noun",reason:"goes-to-verb"},{match:"(a|an) #Adjective? #Noun [#Infinitive] (#Preposition|#Noun)",group:0,notIf:"from",tag:"Noun",reason:"a-noun-inf"},{match:"(a|an) #Noun [#Infinitive]$",group:0,tag:"Noun",reason:"a-noun-inf2"},{match:"#Gerund #Adjective? for [#Infinitive]",group:0,tag:"Noun",reason:"running-for"},{match:"about [#Infinitive]",group:0,tag:"Singular",reason:"about-love"},{match:"#Plural on [#Infinitive]",group:0,tag:"Noun",reason:"on-stage"},{match:"any [#Infinitive]",group:0,tag:"Noun",reason:"any-charge"},{match:"no [#Infinitive]",group:0,tag:"Noun",reason:"no-doubt"},{match:"number of [#PresentTense]",group:0,tag:"Noun",reason:"number-of-x"},{match:"(taught|teaches|learns|learned) [#PresentTense]",group:0,tag:"Noun",reason:"teaches-x"},{match:"(try|use|attempt|build|make) [#Verb #Particle?]",notIf:"(#Copula|#Noun|sure|fun|up)",group:0,tag:"Noun",reason:"do-verb"},{match:"^[#Infinitive] (is|was)",group:0,tag:"Noun",reason:"checkmate-is"},{match:"#Infinitive much [#Infinitive]",group:0,tag:"Noun",reason:"get-much"},{match:"[cause] #Pronoun #Verb",group:0,tag:"Conjunction",reason:"cause-cuz"},{match:"the #Singular [#Infinitive] #Noun",group:0,tag:"Noun",notIf:"#Pronoun",reason:"cardio-dance"},{match:"#Determiner #Modal [#Noun]",group:0,tag:"PresentTense",reason:"should-smoke"},{match:"this [#Plural]",group:0,tag:"PresentTense",notIf:"(#Preposition|#Date)",reason:"this-verbs"},{match:"#Noun that [#Plural]",group:0,tag:"PresentTense",notIf:"(#Preposition|#Pronoun|way)",reason:"voice-that-rocks"},{match:"that [#Plural] to",group:0,tag:"PresentTense",notIf:"#Preposition",reason:"that-leads-to"},{match:"(let|make|made) (him|her|it|#Person|#Place|#Organization)+ [#Singular] (a|an|the|it)",group:0,tag:"Infinitive",reason:"let-him-glue"},{match:"#Verb (all|every|each|most|some|no) [#PresentTense]",notIf:"#Modal",group:0,tag:"Noun",reason:"all-presentTense"},{match:"(had|have|#PastTense) #Adjective [#PresentTense]",group:0,tag:"Noun",notIf:"better",reason:"adj-presentTense"},{match:"#Value #Adjective [#PresentTense]",group:0,tag:"Noun",notIf:"#Copula",reason:"one-big-reason"},{match:"#PastTense #Adjective+ [#PresentTense]",group:0,tag:"Noun",notIf:"(#Copula|better)",reason:"won-wide-support"},{match:"(many|few|several|couple) [#PresentTense]",group:0,tag:"Noun",notIf:"#Copula",reason:"many-poses"},{match:"#Determiner #Adverb #Adjective [%Noun|Verb%]",group:0,tag:"Noun",notIf:"#Copula",reason:"very-big-dream"},{match:"from #Noun to [%Noun|Verb%]",group:0,tag:"Noun",reason:"start-to-finish"},{match:"(for|with|of) #Noun (and|or|not) [%Noun|Verb%]",group:0,tag:"Noun",notIf:"#Pronoun",reason:"for-food-and-gas"},{match:"#Adjective #Adjective [#PresentTense]",group:0,tag:"Noun",notIf:"#Copula",reason:"adorable-little-store"},{match:"#Gerund #Adverb? #Comparative [#PresentTense]",group:0,tag:"Noun",notIf:"#Copula",reason:"higher-costs"},{match:"(#Noun && @hasComma) #Noun (and|or) [#PresentTense]",group:0,tag:"Noun",notIf:"#Copula",reason:"noun-list"},{match:"(many|any|some|several) [#PresentTense] for",group:0,tag:"Noun",reason:"any-verbs-for"},{match:"to #PresentTense #Noun [#PresentTense] #Preposition",group:0,tag:"Noun",reason:"gas-exchange"},{match:"#PastTense (until|as|through|without) [#PresentTense]",group:0,tag:"Noun",reason:"waited-until-release"},{match:"#Gerund like #Adjective? [#PresentTense]",group:0,tag:"Plural",reason:"like-hot-cakes"},{match:"some #Adjective [#PresentTense]",group:0,tag:"Noun",reason:"some-reason"},{match:"for some [#PresentTense]",group:0,tag:"Noun",reason:"for-some-reason"},{match:"(same|some|the|that|a) kind of [#PresentTense]",group:0,tag:"Noun",reason:"some-kind-of"},{match:"(same|some|the|that|a) type of [#PresentTense]",group:0,tag:"Noun",reason:"some-type-of"},{match:"#Gerund #Adjective #Preposition [#PresentTense]",group:0,tag:"Noun",reason:"doing-better-for-x"},{match:"(get|got|have) #Comparative [#PresentTense]",group:0,tag:"Noun",reason:"got-better-aim"},{match:"whose [#PresentTense] #Copula",group:0,tag:"Noun",reason:"whos-name-was"},{match:"#PhrasalVerb #Particle #Preposition [#PresentTense]",group:0,tag:"Noun",reason:"given-up-on-x"},{match:"there (are|were) #Adjective? [#PresentTense]",group:0,tag:"Plural",reason:"there-are"},{match:"#Value [#PresentTense] of",group:0,notIf:"(one|1|#Copula|#Infinitive)",tag:"Plural",reason:"2-trains"},{match:"[#PresentTense] (are|were) #Adjective",group:0,tag:"Plural",reason:"compromises-are-possible"},{match:"^[(hope|guess|thought|think)] #Pronoun #Verb",group:0,tag:"Infinitive",reason:"suppose-i"},{match:"#Possessive #Adjective [#Verb]",group:0,tag:"Noun",notIf:"#Copula",reason:"our-full-support"},{match:"[(tastes|smells)] #Adverb? #Adjective",group:0,tag:"PresentTense",reason:"tastes-good"},{match:"#Copula #Gerund [#PresentTense] !by?",group:0,tag:"Noun",notIf:"going",reason:"ignoring-commute"},{match:"#Determiner #Adjective? [(shed|thought|rose|bid|saw|spelt)]",group:0,tag:"Noun",reason:"noun-past"},{match:"how to [%Noun|Verb%]",group:0,tag:"Infinitive",reason:"how-to-noun"},{match:"which [%Noun|Verb%] #Noun",group:0,tag:"Infinitive",reason:"which-boost-it"},{match:"#Gerund [%Plural|Verb%]",group:0,tag:"Plural",reason:"asking-questions"},{match:"(ready|available|difficult|hard|easy|made|attempt|try) to [%Noun|Verb%]",group:0,tag:"Infinitive",reason:"ready-to-noun"},{match:"(bring|went|go|drive|run|bike) to [%Noun|Verb%]",group:0,tag:"Noun",reason:"bring-to-noun"},{match:"#Modal #Noun [%Noun|Verb%]",group:0,tag:"Infinitive",reason:"would-you-look"},{match:"#Copula just [#Infinitive]",group:0,tag:"Noun",reason:"is-just-spam"},{match:"^%Noun|Verb% %Plural|Verb%",tag:"Imperative #Plural",reason:"request-copies"},{match:"#Adjective #Plural and [%Plural|Verb%]",group:0,tag:"#Plural",reason:"pickles-and-drinks"},{match:"#Determiner #Year [#Verb]",group:0,tag:"Noun",reason:"the-1968-film"},{match:"#Determiner [#PhrasalVerb #Particle]",group:0,tag:"Noun",reason:"the-break-up"},{match:"#Determiner [%Adj|Noun%] #Noun",group:0,tag:"Adjective",notIf:"(#Pronoun|#Possessive|#ProperNoun)",reason:"the-individual-goals"},{match:"[%Noun|Verb%] or #Infinitive",group:0,tag:"Infinitive",reason:"work-or-prepare"},{match:"to #Infinitive [#PresentTense]",group:0,tag:"Noun",notIf:"(#Gerund|#Copula|help)",reason:"to-give-thanks"},{match:"[#Noun] me",group:0,tag:"Verb",reason:"kills-me"},{match:"%Plural|Verb% %Plural|Verb%",tag:"#PresentTense #Plural",reason:"removes-wrinkles"}],p0=[{match:"#Money and #Money #Currency?",tag:"Money",reason:"money-and-money"},{match:"#Value #Currency [and] #Value (cents|ore|centavos|sens)",group:0,tag:"money",reason:"and-5-cents"},{match:"#Value (mark|rand|won|rub|ore)",tag:"#Money #Currency",reason:"4-mark"},{match:"a pound",tag:"#Money #Unit",reason:"a-pound"},{match:"#Value (pound|pounds)",tag:"#Money #Unit",reason:"4-pounds"}],g0=[{match:"[(half|quarter)] of? (a|an)",group:0,tag:"Fraction",reason:"millionth"},{match:"#Adverb [half]",group:0,tag:"Fraction",reason:"nearly-half"},{match:"[half] the",group:0,tag:"Fraction",reason:"half-the"},{match:"#Cardinal and a half",tag:"Fraction",reason:"and-a-half"},{match:"#Value (halves|halfs|quarters)",tag:"Fraction",reason:"two-halves"},{match:"a #Ordinal",tag:"Fraction",reason:"a-quarter"},{match:"[#Cardinal+] (#Fraction && /s$/)",tag:"Fraction",reason:"seven-fifths"},{match:"[#Cardinal+ #Ordinal] of .",group:0,tag:"Fraction",reason:"ordinal-of"},{match:"[(#NumericValue && #Ordinal)] of .",group:0,tag:"Fraction",reason:"num-ordinal-of"},{match:"(a|one) #Cardinal?+ #Ordinal",tag:"Fraction",reason:"a-ordinal"},{match:"#Cardinal+ out? of every? #Cardinal",tag:"Fraction",reason:"out-of"}],m0=[{match:"#Cardinal [second]",tag:"Unit",reason:"one-second"},{match:"!once? [(a|an)] (#Duration|hundred|thousand|million|billion|trillion)",group:0,tag:"Value",reason:"a-is-one"},{match:"1 #Value #PhoneNumber",tag:"PhoneNumber",reason:"1-800-Value"},{match:"#NumericValue #PhoneNumber",tag:"PhoneNumber",reason:"(800) PhoneNumber"},{match:"#Demonym #Currency",tag:"Currency",reason:"demonym-currency"},{match:"#Value [(buck|bucks|grand)]",group:0,tag:"Currency",reason:"value-bucks"},{match:"[#Value+] #Currency",group:0,tag:"Money",reason:"15 usd"},{match:"[second] #Noun",group:0,tag:"Ordinal",reason:"second-noun"},{match:"#Value+ [#Currency]",group:0,tag:"Unit",reason:"5-yan"},{match:"#Value [(foot|feet)]",group:0,tag:"Unit",reason:"foot-unit"},{match:"#Value [#Abbreviation]",group:0,tag:"Unit",reason:"value-abbr"},{match:"#Value [k]",group:0,tag:"Unit",reason:"value-k"},{match:"#Unit an hour",tag:"Unit",reason:"unit-an-hour"},{match:"(minus|negative) #Value",tag:"Value",reason:"minus-value"},{match:"#Value (point|decimal) #Value",tag:"Value",reason:"value-point-value"},{match:"#Determiner [(half|quarter)] #Ordinal",group:0,tag:"Value",reason:"half-ordinal"},{match:"#Multiple+ and #Value",tag:"Value",reason:"magnitude-and-value"},{match:"#Value #Unit [(per|an) (hr|hour|sec|second|min|minute)]",group:0,tag:"Unit",reason:"12-miles-per-second"},{match:"#Value [(square|cubic)] #Unit",group:0,tag:"Unit",reason:"square-miles"}],f0=[{match:"#Copula [(#Noun|#PresentTense)] #LastName",group:0,tag:"FirstName",reason:"copula-noun-lastname"},{match:"(sister|pope|brother|father|aunt|uncle|grandpa|grandfather|grandma) #ProperNoun",tag:"Person",reason:"lady-titlecase",safe:!0},{match:"#FirstName [#Determiner #Noun] #LastName",group:0,tag:"Person",reason:"first-noun-last"},{match:"#ProperNoun (b|c|d|e|f|g|h|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) #ProperNoun",tag:"Person",reason:"titlecase-acronym-titlecase",safe:!0},{match:"#Acronym #LastName",tag:"Person",reason:"acronym-lastname",safe:!0},{match:"#Person (jr|sr|md)",tag:"Person",reason:"person-honorific"},{match:"#Honorific #Acronym",tag:"Person",reason:"Honorific-TitleCase"},{match:"#Person #Person the? #RomanNumeral",tag:"Person",reason:"roman-numeral"},{match:"#FirstName [/^[^aiurck]$/]",group:0,tag:["Acronym","Person"],reason:"john-e"},{match:"#Noun van der? #Noun",tag:"Person",reason:"van der noun",safe:!0},{match:"(king|queen|prince|saint|lady) of #Noun",tag:"Person",reason:"king-of-noun",safe:!0},{match:"(prince|lady) #Place",tag:"Person",reason:"lady-place"},{match:"(king|queen|prince|saint) #ProperNoun",tag:"Person",notIf:"#Place",reason:"saint-foo"},{match:"al (#Person|#ProperNoun)",tag:"Person",reason:"al-borlen",safe:!0},{match:"#FirstName de #Noun",tag:"Person",reason:"bill-de-noun"},{match:"#FirstName (bin|al) #Noun",tag:"Person",reason:"bill-al-noun"},{match:"#FirstName #Acronym #ProperNoun",tag:"Person",reason:"bill-acronym-title"},{match:"#FirstName #FirstName #ProperNoun",tag:"Person",reason:"bill-firstname-title"},{match:"#Honorific #FirstName? #ProperNoun",tag:"Person",reason:"dr-john-Title"},{match:"#FirstName the #Adjective",tag:"Person",reason:"name-the-great"},{match:"#ProperNoun (van|al|bin) #ProperNoun",tag:"Person",reason:"title-van-title",safe:!0},{match:"#ProperNoun (de|du) la? #ProperNoun",tag:"Person",notIf:"#Place",reason:"title-de-title"},{match:"#Singular #Acronym #LastName",tag:"#FirstName #Person .",reason:"title-acro-noun",safe:!0},{match:"[#ProperNoun] #Person",group:0,tag:"Person",reason:"proper-person",safe:!0},{match:"#Person [#ProperNoun #ProperNoun]",group:0,tag:"Person",notIf:"#Possessive",reason:"three-name-person",safe:!0},{match:"#FirstName #Acronym? [#ProperNoun]",group:0,tag:"LastName",notIf:"#Possessive",reason:"firstname-titlecase"},{match:"#FirstName [#FirstName]",group:0,tag:"LastName",reason:"firstname-firstname"},{match:"#FirstName #Acronym #Noun",tag:"Person",reason:"n-acro-noun",safe:!0},{match:"#FirstName [(de|di|du|van|von)] #Person",group:0,tag:"LastName",reason:"de-firstname"},{match:"[(lieutenant|corporal|sergeant|captain|qeen|king|admiral|major|colonel|marshal|president|queen|king)+] #ProperNoun",group:0,tag:"Honorific",reason:"seargeant-john"},{match:"[(private|general|major|rear|prime|field|count|miss)] #Honorific? #Person",group:0,tag:["Honorific","Person"],reason:"ambg-honorifics"},{match:"#Honorific #FirstName [#Singular]",group:0,tag:"LastName",notIf:"#Possessive",reason:"dr-john-foo",safe:!0},{match:"[(his|her) (majesty|honour|worship|excellency|honorable)] #Person",group:0,tag:"Honorific",reason:"his-excellency"},{match:"#Honorific #Actor",tag:"Honorific",reason:"Lieutenant colonel"},{match:"(first|second|third|1st|2nd|3rd) #Actor",tag:"Honorific",reason:"first lady"},{match:"#Person #RomanNumeral",tag:"Person",reason:"louis-IV"}],b0=[{match:"#FirstName #Noun$",tag:". #LastName",notIf:"(#Possessive|#Organization|#Place|#Pronoun|@hasTitleCase)",reason:"firstname-noun"},{match:"%Person|Date% #Acronym? #ProperNoun",tag:"Person",reason:"jan-thierson"},{match:"%Person|Noun% #Acronym? #ProperNoun",tag:"Person",reason:"switch-person",safe:!0},{match:"%Person|Noun% #Organization",tag:"Organization",reason:"olive-garden"},{match:"%Person|Verb% #Acronym? #ProperNoun",tag:"Person",reason:"verb-propernoun",ifNo:"#Actor"},{match:"[%Person|Verb%] (will|had|has|said|says|told|did|learned|wants|wanted)",group:0,tag:"Person",reason:"person-said"},{match:"[%Person|Place%] (harbor|harbour|pier|town|city|place|dump|landfill)",group:0,tag:"Place",reason:"sydney-harbour"},{match:"(west|east|north|south) [%Person|Place%]",group:0,tag:"Place",reason:"east-sydney"},{match:"#Modal [%Person|Verb%]",group:0,tag:"Verb",reason:"would-mark"},{match:"#Adverb [%Person|Verb%]",group:0,tag:"Verb",reason:"really-mark"},{match:"[%Person|Verb%] (#Adverb|#Comparative)",group:0,tag:"Verb",reason:"drew-closer"},{match:"%Person|Verb% #Person",tag:"Person",reason:"rob-smith"},{match:"%Person|Verb% #Acronym #ProperNoun",tag:"Person",reason:"rob-a-smith"},{match:"[will] #Verb",group:0,tag:"Modal",reason:"will-verb"},{match:"(will && @isTitleCase) #ProperNoun",tag:"Person",reason:"will-name"},{match:"(#FirstName && !#Possessive) [#Singular] #Verb",group:0,safe:!0,tag:"LastName",reason:"jack-layton"},{match:"^[#Singular] #Person #Verb",group:0,safe:!0,tag:"Person",reason:"sherwood-anderson"},{match:"(a|an) [#Person]$",group:0,unTag:"Person",reason:"a-warhol"}],v0=[{match:"#Copula (pretty|dead|full|well|sure) (#Adjective|#Noun)",tag:"#Copula #Adverb #Adjective",reason:"sometimes-adverb"},{match:"(#Pronoun|#Person) (had|#Adverb)? [better] #PresentTense",group:0,tag:"Modal",reason:"i-better"},{match:"(#Modal|i|they|we|do) not? [like]",group:0,tag:"PresentTense",reason:"modal-like"},{match:"#Noun #Adverb? [left]",group:0,tag:"PastTense",reason:"left-verb"},{match:"will #Adverb? not? #Adverb? [be] #Gerund",group:0,tag:"Copula",reason:"will-be-copula"},{match:"will #Adverb? not? #Adverb? [be] #Adjective",group:0,tag:"Copula",reason:"be-copula"},{match:"[march] (up|down|back|toward)",notIf:"#Date",group:0,tag:"Infinitive",reason:"march-to"},{match:"#Modal [march]",group:0,tag:"Infinitive",reason:"must-march"},{match:"[may] be",group:0,tag:"Verb",reason:"may-be"},{match:"[(subject|subjects|subjected)] to",group:0,tag:"Verb",reason:"subject to"},{match:"[home] to",group:0,tag:"PresentTense",reason:"home to"},{match:"[open] #Determiner",group:0,tag:"Infinitive",reason:"open-the"},{match:"(were|was) being [#PresentTense]",group:0,tag:"PastTense",reason:"was-being"},{match:"(had|has|have) [been /en$/]",group:0,tag:"Auxiliary Participle",reason:"had-been-broken"},{match:"(had|has|have) [been /ed$/]",group:0,tag:"Auxiliary PastTense",reason:"had-been-smoked"},{match:"(had|has) #Adverb? [been] #Adverb? #PastTense",group:0,tag:"Auxiliary",reason:"had-been-adj"},{match:"(had|has) to [#Noun] (#Determiner|#Possessive)",group:0,tag:"Infinitive",reason:"had-to-noun"},{match:"have [#PresentTense]",group:0,tag:"PastTense",notIf:"(come|gotten)",reason:"have-read"},{match:"(does|will|#Modal) that [work]",group:0,tag:"PastTense",reason:"does-that-work"},{match:"[(sound|sounds)] #Adjective",group:0,tag:"PresentTense",reason:"sounds-fun"},{match:"[(look|looks)] #Adjective",group:0,tag:"PresentTense",reason:"looks-good"},{match:"[(start|starts|stop|stops|begin|begins)] #Gerund",group:0,tag:"Verb",reason:"starts-thinking"},{match:"(have|had) read",tag:"Modal #PastTense",reason:"read-read"},{match:"(is|was|were) [(under|over) #PastTense]",group:0,tag:"Adverb Adjective",reason:"was-under-cooked"},{match:"[shit] (#Determiner|#Possessive|them)",group:0,tag:"Verb",reason:"swear1-verb"},{match:"[damn] (#Determiner|#Possessive|them)",group:0,tag:"Verb",reason:"swear2-verb"},{match:"[fuck] (#Determiner|#Possessive|them)",group:0,tag:"Verb",reason:"swear3-verb"},{match:"#Plural that %Noun|Verb%",tag:". #Preposition #Infinitive",reason:"jobs-that-work"},{match:"[works] for me",group:0,tag:"PresentTense",reason:"works-for-me"},{match:"as #Pronoun [please]",group:0,tag:"Infinitive",reason:"as-we-please"},{match:"[(co|mis|de|inter|intra|pre|re|un|out|under|over|counter)] #Verb",group:0,tag:["Verb","Prefix"],notIf:"(#Copula|#PhrasalVerb)",reason:"co-write"},{match:"#PastTense and [%Adj|Past%]",group:0,tag:"PastTense",reason:"dressed-and-left"},{match:"[%Adj|Past%] and #PastTense",group:0,tag:"PastTense",reason:"dressed-and-left"},{match:"#Copula #Pronoun [%Adj|Past%]",group:0,tag:"Adjective",reason:"is-he-stoked"},{match:"to [%Noun|Verb%] #Preposition",group:0,tag:"Infinitive",reason:"to-dream-of"}],y0=[{match:"will (#Adverb|not)+? [have] (#Adverb|not)+? #Verb",group:0,tag:"Auxiliary",reason:"will-have-vb"},{match:"[#Copula] (#Adverb|not)+? (#Gerund|#PastTense)",group:0,tag:"Auxiliary",reason:"copula-walking"},{match:"[(#Modal|did)+] (#Adverb|not)+? #Verb",group:0,tag:"Auxiliary",reason:"modal-verb"},{match:"#Modal (#Adverb|not)+? [have] (#Adverb|not)+? [had] (#Adverb|not)+? #Verb",group:0,tag:"Auxiliary",reason:"would-have"},{match:"[(has|had)] (#Adverb|not)+? #PastTense",group:0,tag:"Auxiliary",reason:"had-walked"},{match:"[(do|does|did|will|have|had|has|got)] (not|#Adverb)+? #Verb",group:0,tag:"Auxiliary",reason:"have-had"},{match:"[about to] #Adverb? #Verb",group:0,tag:["Auxiliary","Verb"],reason:"about-to"},{match:"#Modal (#Adverb|not)+? [be] (#Adverb|not)+? #Verb",group:0,tag:"Auxiliary",reason:"would-be"},{match:"[(#Modal|had|has)] (#Adverb|not)+? [been] (#Adverb|not)+? #Verb",group:0,tag:"Auxiliary",reason:"had-been"},{match:"[(be|being|been)] #Participle",group:0,tag:"Auxiliary",reason:"being-driven"},{match:"[may] #Adverb? #Infinitive",group:0,tag:"Auxiliary",reason:"may-want"},{match:"#Copula (#Adverb|not)+? [(be|being|been)] #Adverb+? #PastTense",group:0,tag:"Auxiliary",reason:"being-walked"},{match:"will [be] #PastTense",group:0,tag:"Auxiliary",reason:"will-be-x"},{match:"[(be|been)] (#Adverb|not)+? #Gerund",group:0,tag:"Auxiliary",reason:"been-walking"},{match:"[used to] #PresentTense",group:0,tag:"Auxiliary",reason:"used-to-walk"},{match:"#Copula (#Adverb|not)+? [going to] #Adverb+? #PresentTense",group:0,tag:"Auxiliary",reason:"going-to-walk"},{match:"#Imperative [(me|him|her)]",group:0,tag:"Reflexive",reason:"tell-him"},{match:"(is|was) #Adverb? [no]",group:0,tag:"Negative",reason:"is-no"},{match:"[(been|had|became|came)] #PastTense",group:0,notIf:"#PhrasalVerb",tag:"Auxiliary",reason:"been-told"},{match:"[(being|having|getting)] #Verb",group:0,tag:"Auxiliary",reason:"being-born"},{match:"[be] #Gerund",group:0,tag:"Auxiliary",reason:"be-walking"},{match:"[better] #PresentTense",group:0,tag:"Modal",notIf:"(#Copula|#Gerund)",reason:"better-go"},{match:"even better",tag:"Adverb #Comparative",reason:"even-better"}],w0=[{match:"(#Verb && @hasHyphen) up",tag:"PhrasalVerb",reason:"foo-up"},{match:"(#Verb && @hasHyphen) off",tag:"PhrasalVerb",reason:"foo-off"},{match:"(#Verb && @hasHyphen) over",tag:"PhrasalVerb",reason:"foo-over"},{match:"(#Verb && @hasHyphen) out",tag:"PhrasalVerb",reason:"foo-out"},{match:"[#Verb (in|out|up|down|off|back)] (on|in)",notIf:"#Copula",tag:"PhrasalVerb Particle",reason:"walk-in-on"},{match:"(lived|went|crept|go) [on] for",group:0,tag:"PhrasalVerb",reason:"went-on"},{match:"#Verb (up|down|in|on|for)$",tag:"PhrasalVerb #Particle",notIf:"#PhrasalVerb",reason:"come-down$"},{match:"help [(stop|end|make|start)]",group:0,tag:"Infinitive",reason:"help-stop"},{match:"#PhrasalVerb (in && #Particle) #Determiner",tag:"#Verb #Preposition #Determiner",unTag:"PhrasalVerb",reason:"work-in-the"},{match:"[(stop|start|finish|help)] #Gerund",group:0,tag:"Infinitive",reason:"start-listening"},{match:"#Verb (him|her|it|us|himself|herself|itself|everything|something) [(up|down)]",group:0,tag:"Adverb",reason:"phrasal-pronoun-advb"}],Un="(i|we|they)",$0=[{match:"^do not? [#Infinitive #Particle?]",notIf:Un,group:0,tag:"Imperative",reason:"do-eat"},{match:"^please do? not? [#Infinitive #Particle?]",group:0,tag:"Imperative",reason:"please-go"},{match:"^just do? not? [#Infinitive #Particle?]",group:0,tag:"Imperative",reason:"just-go"},{match:"^[#Infinitive] it #Comparative",notIf:Un,group:0,tag:"Imperative",reason:"do-it-better"},{match:"^[#Infinitive] it (please|now|again|plz)",notIf:Un,group:0,tag:"Imperative",reason:"do-it-please"},{match:"^[#Infinitive] (#Adjective|#Adverb)$",group:0,tag:"Imperative",notIf:"(so|such|rather|enough)",reason:"go-quickly"},{match:"^[#Infinitive] (up|down|over) #Determiner",group:0,tag:"Imperative",reason:"turn-down"},{match:"^[#Infinitive] (your|my|the|a|an|any|each|every|some|more|with|on)",group:0,notIf:"like",tag:"Imperative",reason:"eat-my-shorts"},{match:"^[#Infinitive] (him|her|it|us|me|there)",group:0,tag:"Imperative",reason:"tell-him"},{match:"^[#Infinitive] #Adjective #Noun$",group:0,tag:"Imperative",reason:"avoid-loud-noises"},{match:"^[#Infinitive] (#Adjective|#Adverb)? and #Infinitive",group:0,tag:"Imperative",reason:"call-and-reserve"},{match:"^(go|stop|wait|hurry) please?$",tag:"Imperative",reason:"go"},{match:"^(somebody|everybody) [#Infinitive]",group:0,tag:"Imperative",reason:"somebody-call"},{match:"^let (us|me) [#Infinitive]",group:0,tag:"Imperative",reason:"lets-leave"},{match:"^[(shut|close|open|start|stop|end|keep)] #Determiner #Noun",group:0,tag:"Imperative",reason:"shut-the-door"},{match:"^[#PhrasalVerb #Particle] #Determiner #Noun",group:0,tag:"Imperative",reason:"turn-off-the-light"},{match:"^[go] to .",group:0,tag:"Imperative",reason:"go-to-toronto"},{match:"^#Modal you [#Infinitive]",group:0,tag:"Imperative",reason:"would-you-"},{match:"^never [#Infinitive]",group:0,tag:"Imperative",reason:"never-stop"},{match:"^come #Infinitive",tag:"Imperative",notIf:"on",reason:"come-have"},{match:"^come and? #Infinitive",tag:"Imperative . Imperative",notIf:"#PhrasalVerb",reason:"come-and-have"},{match:"^stay (out|away|back)",tag:"Imperative",reason:"stay-away"},{match:"^[(stay|be|keep)] #Adjective",group:0,tag:"Imperative",reason:"stay-cool"},{match:"^[keep it] #Adjective",group:0,tag:"Imperative",reason:"keep-it-cool"},{match:"^do not [#Infinitive]",group:0,tag:"Imperative",reason:"do-not-be"},{match:"[#Infinitive] (yourself|yourselves)",group:0,tag:"Imperative",reason:"allow-yourself"},{match:"[#Infinitive] what .",group:0,tag:"Imperative",reason:"look-what"},{match:"^[#Infinitive] #Gerund",group:0,tag:"Imperative",reason:"keep-playing"},{match:"^[#Infinitive] (to|for|into|toward|here|there)",group:0,tag:"Imperative",reason:"go-to"},{match:"^[#Infinitive] (and|or) #Infinitive",group:0,tag:"Imperative",reason:"inf-and-inf"},{match:"^[%Noun|Verb%] to",group:0,tag:"Imperative",reason:"commit-to"},{match:"^[#Infinitive] #Adjective? #Singular #Singular",group:0,tag:"Imperative",reason:"maintain-eye-contact"},{match:"do not (forget|omit|neglect) to [#Infinitive]",group:0,tag:"Imperative",reason:"do-not-forget"},{match:"^[(ask|wear|pay|look|help|show|watch|act|fix|kill|stop|start|turn|try|win)] #Noun",group:0,tag:"Imperative",reason:"pay-attention"}],k0=[{match:"(that|which) were [%Adj|Gerund%]",group:0,tag:"Gerund",reason:"that-were-growing"},{match:"#Gerund [#Gerund] #Plural",group:0,tag:"Adjective",reason:"hard-working-fam"}],P0=[{match:"(got|were|was|is|are|am) (#PastTense|#Participle)",tag:"Passive",reason:"got-walked"},{match:"(was|were|is|are|am) being (#PastTense|#Participle)",tag:"Passive",reason:"was-being"},{match:"(had|have|has) been (#PastTense|#Participle)",tag:"Passive",reason:"had-been"},{match:"will be being? (#PastTense|#Participle)",tag:"Passive",reason:"will-be-cleaned"},{match:"#Noun [(#PastTense|#Participle)] by (the|a) #Noun",group:0,tag:"Passive",reason:"suffered-by"}],A0=[{match:"u r",tag:"#Pronoun #Copula",reason:"u r"},{match:"#Noun [(who|whom)]",group:0,tag:"Determiner",reason:"captain-who"},{match:"[had] #Noun+ #PastTense",group:0,tag:"Condition",reason:"had-he"},{match:"[were] #Noun+ to #Infinitive",group:0,tag:"Condition",reason:"were-he"},{match:"some sort of",tag:"Adjective Noun Conjunction",reason:"some-sort-of"},{match:"of some sort",tag:"Conjunction Adjective Noun",reason:"of-some-sort"},{match:"[such] (a|an|is)? #Noun",group:0,tag:"Determiner",reason:"such-skill"},{match:"[right] (before|after|in|into|to|toward)",group:0,tag:"#Adverb",reason:"right-into"},{match:"#Preposition [about]",group:0,tag:"Adjective",reason:"at-about"},{match:"(are|#Modal|see|do|for) [ya]",group:0,tag:"Pronoun",reason:"are-ya"},{match:"[long live] .",group:0,tag:"#Adjective #Infinitive",reason:"long-live"},{match:"[plenty] of",group:0,tag:"#Uncountable",reason:"plenty-of"},{match:"(always|nearly|barely|practically) [there]",group:0,tag:"Adjective",reason:"always-there"},{match:"[there] (#Adverb|#Pronoun)? #Copula",group:0,tag:"There",reason:"there-is"},{match:"#Copula [there] .",group:0,tag:"There",reason:"is-there"},{match:"#Modal #Adverb? [there]",group:0,tag:"There",reason:"should-there"},{match:"^[do] (you|we|they)",group:0,tag:"QuestionWord",reason:"do-you"},{match:"^[does] (he|she|it|#ProperNoun)",group:0,tag:"QuestionWord",reason:"does-he"},{match:"#Determiner #Noun+ [who] #Verb",group:0,tag:"Preposition",reason:"the-x-who"},{match:"#Determiner #Noun+ [which] #Verb",group:0,tag:"Preposition",reason:"the-x-which"},{match:"a [while]",group:0,tag:"Noun",reason:"a-while"},{match:"guess who",tag:"#Infinitive #QuestionWord",reason:"guess-who"},{match:"[fucking] !#Verb",group:0,tag:"#Gerund",reason:"f-as-gerund"}],x0=[{match:"university of #Place",tag:"Organization",reason:"university-of-Foo"},{match:"#Noun (&|n) #Noun",tag:"Organization",reason:"Noun-&-Noun"},{match:"#Organization of the? #ProperNoun",tag:"Organization",reason:"org-of-place",safe:!0},{match:"#Organization #Country",tag:"Organization",reason:"org-country"},{match:"#ProperNoun #Organization",tag:"Organization",notIf:"#FirstName",reason:"titlecase-org"},{match:"#ProperNoun (ltd|co|inc|dept|assn|bros)",tag:"Organization",reason:"org-abbrv"},{match:"the [#Acronym]",group:0,tag:"Organization",reason:"the-acronym",safe:!0},{match:"government of the? [#Place+]",tag:"Organization",reason:"government-of-x"},{match:"(health|school|commerce) board",tag:"Organization",reason:"school-board"},{match:"(nominating|special|conference|executive|steering|central|congressional) committee",tag:"Organization",reason:"special-comittee"},{match:"(world|global|international|national|#Demonym) #Organization",tag:"Organization",reason:"global-org"},{match:"#Noun+ (public|private) school",tag:"School",reason:"noun-public-school"},{match:"#Place+ #SportsTeam",tag:"SportsTeam",reason:"place-sportsteam"},{match:"(dc|atlanta|minnesota|manchester|newcastle|sheffield) united",tag:"SportsTeam",reason:"united-sportsteam"},{match:"#Place+ fc",tag:"SportsTeam",reason:"fc-sportsteam"},{match:"#Place+ #Noun{0,2} (club|society|group|team|committee|commission|association|guild|crew)",tag:"Organization",reason:"place-noun-society"}],C0=[{match:"(west|north|south|east|western|northern|southern|eastern)+ #Place",tag:"Region",reason:"west-norfolk"},{match:"#City [(al|ak|az|ar|ca|ct|dc|fl|ga|id|il|nv|nh|nj|ny|oh|pa|sc|tn|tx|ut|vt|pr)]",group:0,tag:"Region",reason:"us-state"},{match:"portland [or]",group:0,tag:"Region",reason:"portland-or"},{match:"#ProperNoun+ (cliff|place|range|pit|place|point|room|grounds|ruins)",tag:"Place",reason:"foo-point"},{match:"in [#ProperNoun] #Place",group:0,tag:"Place",reason:"propernoun-place"},{match:"#Value #Noun (st|street|rd|road|crescent|cr|way|tr|terrace|avenue|ave)",tag:"Address",reason:"address-st"},{match:"(port|mount|mt) #ProperName",tag:"Place",reason:"port-name"}],j0=[{match:"[so] #Noun",group:0,tag:"Conjunction",reason:"so-conj"},{match:"[(who|what|where|why|how|when)] #Noun #Copula #Adverb? (#Verb|#Adjective)",group:0,tag:"Conjunction",reason:"how-he-is-x"},{match:"#Copula [(who|what|where|why|how|when)] #Noun",group:0,tag:"Conjunction",reason:"when-he"},{match:"#Verb [that] #Pronoun",group:0,tag:"Conjunction",reason:"said-that-he"},{match:"#Noun [that] #Copula",group:0,tag:"Conjunction",reason:"that-are"},{match:"#Noun [that] #Verb #Adjective",group:0,tag:"Conjunction",reason:"that-seem"},{match:"#Noun #Copula not? [that] #Adjective",group:0,tag:"Adverb",reason:"that-adj"},{match:"#Verb #Adverb? #Noun [(that|which)]",group:0,tag:"Preposition",reason:"that-prep"},{match:"@hasComma [which] (#Pronoun|#Verb)",group:0,tag:"Preposition",reason:"which-copula"},{match:"#Noun [like] #Noun",group:0,tag:"Preposition",reason:"noun-like"},{match:"^[like] #Determiner",group:0,tag:"Preposition",reason:"like-the"},{match:"a #Noun [like] (#Noun|#Determiner)",group:0,tag:"Preposition",reason:"a-noun-like"},{match:"#Adverb [like]",group:0,tag:"Verb",reason:"really-like"},{match:"(not|nothing|never) [like]",group:0,tag:"Preposition",reason:"nothing-like"},{match:"#Infinitive #Pronoun [like]",group:0,tag:"Preposition",reason:"treat-them-like"},{match:"[#QuestionWord] (#Pronoun|#Determiner)",group:0,tag:"Preposition",reason:"how-he"},{match:"[#QuestionWord] #Participle",group:0,tag:"Preposition",reason:"when-stolen"},{match:"[how] (#Determiner|#Copula|#Modal|#PastTense)",group:0,tag:"QuestionWord",reason:"how-is"},{match:"#Plural [(who|which|when)] .",group:0,tag:"Preposition",reason:"people-who"}],N0=[{match:"holy (shit|fuck|hell)",tag:"Expression",reason:"swears-expression"},{match:"^[(well|so|okay|now)] !#Adjective?",group:0,tag:"Expression",reason:"well-"},{match:"^come on",tag:"Expression",reason:"come-on"},{match:"(say|says|said) [sorry]",group:0,tag:"Expression",reason:"say-sorry"},{match:"^(ok|alright|shoot|hell|anyways)",tag:"Expression",reason:"ok-"},{match:"^(say && @hasComma)",tag:"Expression",reason:"say-"},{match:"^(like && @hasComma)",tag:"Expression",reason:"like-"},{match:"^[(dude|man|girl)] #Pronoun",group:0,tag:"Expression",reason:"dude-i"}],I0=[].concat(P0,e0,n0,r0,o0,i0,u0,s0,c0,h0,d0,p0,g0,m0,f0,b0,v0,a0,y0,w0,$0,k0,A0,x0,C0,j0,N0),T0={two:{matches:I0}};let _n=null;const E0=function(e){const{world:t}=e,{model:n,methods:r}=t;_n=_n||r.one.buildNet(n.two.matches,t);const o=r.two.quickSplit(e.document).map(i=>{const s=i[0];return[s.index[0],s.index[1],s.index[1]+i.length]}),a=e.update(o);return a.cache(),a.sweep(_n),e.uncache(),e.unfreeze(),e},D0=e=>e.compute(["freeze","lexicon","preTagger","postTagger","unfreeze"]),H0={postTagger:E0,tagger:D0},G0=e=>Math.round(e*100)/100;function O0(e){e.prototype.confidence=function(){let t=0,n=0;return this.docs.forEach(r=>{r.forEach(o=>{n+=1,t+=o.confidence||1})}),n===0?1:G0(t/n)},e.prototype.tagger=function(){return this.compute(["tagger"])}}const F0={api:O0,compute:H0,model:T0,hooks:["postTagger"]},V0=function(e){return Object.keys(e.hooks).filter(t=>!t.startsWith("#")&&!t.startsWith("%"))},z0=function(e,t){const n=V0(t);if(n.length===0)return e;e._cache||e.cache();const r=e._cache;return e.filter((o,a)=>n.some(i=>r[a].has(i)))},B0=function(e,t){let n=t;typeof t=="string"&&(n=this.buildNet([{match:t}]));const r=this.tokenize(e),o=z0(r,n);return o.found?(o.compute(["index","tagger"]),o.match(t)):r.none()},S0={lib:{lazy:B0}},M0=function(e,t){const n=e.methods.two.transform.verb.conjugate,r=n(t,e.model);return e.has("#Gerund")?r.Gerund:e.has("#PastTense")?r.PastTense:e.has("#PresentTense")?r.PresentTense:e.has("#Gerund")?r.Gerund:t},L0=function(e,t){let n=t;return e.forEach(r=>{r.has("#Infinitive")||(n=M0(r,t)),r.replaceWith(n)}),e},K0=function(e,t){let n=t;if(e.has("#Plural")){const r=e.methods.two.transform.noun.toPlural;n=r(t,e.model)}e.replaceWith(n,{possessives:!0})},J0=function(e,t){const{toAdverb:n}=e.methods.two.transform.adjective,r=n(t);r&&e.replaceWith(r)},W0=function(e,t){const{toComparative:n,toSuperlative:r}=e.methods.two.transform.adjective;let o=t;e.has("#Comparative")?o=n(o,e.model):e.has("#Superlative")&&(o=r(o,e.model)),o&&e.replaceWith(o)},q0=function(e,t,n){let r=e.split(/ /g).map(a=>a.toLowerCase().trim());r=r.filter(a=>a),r=r.map(a=>`{${a}}`).join(" ");let o=this.match(r);return n&&(o=o.if(n)),o.has("#Verb")?L0(o,t):o.has("#Noun")?K0(o,t):o.has("#Adverb")?J0(o,t):o.has("#Adjective")?W0(o,t):this},R0=function(e){e.prototype.swap=q0},U0={api:R0};T.plugin(Pf);T.plugin(Yf);T.plugin(F0);T.plugin(S0);T.plugin(U0);const mt=function(e){const{fromComparative:t,fromSuperlative:n}=e.methods.two.transform.adjective,r=e.text("normal");return e.has("#Comparative")?t(r,e.model):e.has("#Superlative")?n(r,e.model):r},_0=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Adjectives"}json(r={}){const{toAdverb:o,toNoun:a,toSuperlative:i,toComparative:s}=this.methods.two.transform.adjective;return r.normal=!0,this.map(u=>{const l=u.toView().json(r)[0]||{},c=mt(u);return l.adjective={adverb:o(c,this.model),noun:a(c,this.model),superlative:i(c,this.model),comparative:s(c,this.model)},l},[])}adverbs(){return this.before("#Adverb+$").concat(this.after("^#Adverb+"))}conjugate(r){const{toComparative:o,toSuperlative:a,toNoun:i,toAdverb:s}=this.methods.two.transform.adjective;return this.getNth(r).map(u=>{const l=mt(u);return{Adjective:l,Comparative:o(l,this.model),Superlative:a(l,this.model),Noun:i(l,this.model),Adverb:s(l,this.model)}},[])}toComparative(r){const{toComparative:o}=this.methods.two.transform.adjective;return this.getNth(r).map(a=>{const i=mt(a),s=o(i,this.model);return a.replaceWith(s)})}toSuperlative(r){const{toSuperlative:o}=this.methods.two.transform.adjective;return this.getNth(r).map(a=>{const i=mt(a),s=o(i,this.model);return a.replaceWith(s)})}toAdverb(r){const{toAdverb:o}=this.methods.two.transform.adjective;return this.getNth(r).map(a=>{const i=mt(a),s=o(i,this.model);return a.replaceWith(s)})}toNoun(r){const{toNoun:o}=this.methods.two.transform.adjective;return this.getNth(r).map(a=>{const i=mt(a),s=o(i,this.model);return a.replaceWith(s)})}}e.prototype.adjectives=function(n){let r=this.match("#Adjective");return r=r.getNth(n),new t(r.document,r.pointer)},e.prototype.superlatives=function(n){let r=this.match("#Superlative");return r=r.getNth(n),new t(r.document,r.pointer)},e.prototype.comparatives=function(n){let r=this.match("#Comparative");return r=r.getNth(n),new t(r.document,r.pointer)}},Q0={api:_0},Z0=function(e){return e.compute("root").text("root")},X0=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Adverbs"}conjugate(r){return this.getNth(r).map(o=>{const a=Z0(o);return{Adverb:o.text("normal"),Adjective:a}},[])}json(r={}){const o=this.methods.two.transform.adjective.fromAdverb;return r.normal=!0,this.map(a=>{const i=a.toView().json(r)[0]||{};return i.adverb={adjective:o(i.normal)},i},[])}}e.prototype.adverbs=function(n){let r=this.match("#Adverb");return r=r.getNth(n),new t(r.document,r.pointer)}},Y0={api:X0},eb=function(e){let t=e.match("@hasComma");return t=t.filter(n=>{if(n.growLeft(".").wordCount()===1||n.growRight(". .").wordCount()===1)return!1;let r=n.grow(".");return r=r.ifNo("@hasComma @hasComma"),r=r.ifNo("@hasComma (and|or) ."),r=r.ifNo("(#City && @hasComma) #Country"),r=r.ifNo("(#WeekDay && @hasComma) #Date"),r=r.ifNo("(#Date+ && @hasComma) #Value"),r=r.ifNo("(#Adjective && @hasComma) #Adjective"),r.found}),e.splitAfter(t)},tb=function(e){let t=e.parentheses();return t=t.filter(n=>n.wordCount()>=3&&n.has("#Verb")&&n.has("#Noun")),e.splitOn(t)},nb=function(e){let t=e.quotations();return t=t.filter(n=>n.wordCount()>=3&&n.has("#Verb")&&n.has("#Noun")),e.splitOn(t)},rb=function(e){let t=this;t=tb(t),t=nb(t),t=eb(t),t=t.splitAfter("(@hasEllipses|@hasSemicolon|@hasDash|@hasColon)"),t=t.splitAfter("^#Pronoun (said|says)"),t=t.splitBefore("(said|says) #ProperNoun$"),t=t.splitBefore(". . if .{4}"),t=t.splitBefore("and while"),t=t.splitBefore("now that"),t=t.splitBefore("ever since"),t=t.splitBefore("(supposing|although)"),t=t.splitBefore("even (while|if|though)"),t=t.splitBefore("(whereas|whose)"),t=t.splitBefore("as (though|if)"),t=t.splitBefore("(til|until)");const n=t.match("#Verb .* [but] .* #Verb",0);n.found&&(t=t.splitBefore(n));const r=t.if("if .{2,9} then .").match("then");return t=t.splitBefore(r),typeof e=="number"&&(t=t.get(e)),t},ob=function(e){const t=[];let n=null;return e.clauses().docs.forEach(r=>{r.forEach(o=>{!o.chunk||o.chunk!==n?(n=o.chunk,t.push([o.index[0],o.index[1],o.index[1]+1])):t[t.length-1][2]=o.index[1]+1}),n=null}),e.update(t)},ab=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Chunks"}isVerb(){return this.filter(r=>r.has("<Verb>"))}isNoun(){return this.filter(r=>r.has("<Noun>"))}isAdjective(){return this.filter(r=>r.has("<Adjective>"))}isPivot(){return this.filter(r=>r.has("<Pivot>"))}debug(){return this.toView().debug("chunks"),this}update(r){const o=new t(this.document,r);return o._cache=this._cache,o}}e.prototype.chunks=function(n){let r=ob(this);return r=r.getNth(n),new t(this.document,r.pointer)},e.prototype.clauses=rb},ya={this:"Noun",then:"Pivot"},ib=function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];if(ya.hasOwnProperty(r.normal)===!0){r.chunk=ya[r.normal];continue}if(r.tags.has("Verb")){r.chunk="Verb";continue}if(r.tags.has("Noun")||r.tags.has("Determiner")){r.chunk="Noun";continue}if(r.tags.has("Value")){r.chunk="Noun";continue}if(r.tags.has("QuestionWord")){r.chunk="Pivot";continue}}},sb=function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];if(r.chunk)continue;const o=e[t][n+1],a=e[t][n-1];if(r.tags.has("Adjective")){if(a&&a.tags.has("Copula")){r.chunk="Adjective";continue}if(a&&a.tags.has("Determiner")){r.chunk="Noun";continue}if(o&&o.tags.has("Noun")){r.chunk="Noun";continue}continue}if(r.tags.has("Adverb")||r.tags.has("Negative")){if(a&&a.tags.has("Adjective")){r.chunk="Adjective";continue}if(a&&a.tags.has("Verb")){r.chunk="Verb";continue}if(o&&o.tags.has("Adjective")){r.chunk="Adjective";continue}if(o&&o.tags.has("Verb")){r.chunk="Verb";continue}}}},ub=[{match:"[that] #Determiner #Noun",group:0,chunk:"Pivot"},{match:"#PastTense [that]",group:0,chunk:"Pivot"},{match:"[so] #Determiner",group:0,chunk:"Pivot"},{match:"#Copula #Adverb+? [#Adjective]",group:0,chunk:"Adjective"},{match:"#Adjective and #Adjective",chunk:"Adjective"},{match:"#Adverb+ and #Adverb #Verb",chunk:"Verb"},{match:"#Gerund #Adjective$",chunk:"Verb"},{match:"#Gerund to #Verb",chunk:"Verb"},{match:"#PresentTense and #PresentTense",chunk:"Verb"},{match:"#Adverb #Negative",chunk:"Verb"},{match:"(want|wants|wanted) to #Infinitive",chunk:"Verb"},{match:"#Verb #Reflexive",chunk:"Verb"},{match:"#Verb [to] #Adverb? #Infinitive",group:0,chunk:"Verb"},{match:"[#Preposition] #Gerund",group:0,chunk:"Verb"},{match:"#Infinitive [that] <Noun>",group:0,chunk:"Verb"},{match:"#Noun of #Determiner? #Noun",chunk:"Noun"},{match:"#Value+ #Adverb? #Adjective",chunk:"Noun"},{match:"the [#Adjective] #Noun",chunk:"Noun"},{match:"#Singular in #Determiner? #Singular",chunk:"Noun"},{match:"#Plural [in] #Determiner? #Noun",group:0,chunk:"Pivot"},{match:"#Noun and #Determiner? #Noun",notIf:"(#Possessive|#Pronoun)",chunk:"Noun"}];let Qn=null;const lb=function(e,t,n){const{methods:r}=n;Qn=Qn||r.one.buildNet(ub,n),e.sweep(Qn)},wa=function(e,t){if((process.env?process.env:self.env||{}).DEBUG_CHUNKS){const n=(e.normal+"'").padEnd(8);console.log(` | '${n} → \x1B[34m${t.padEnd(12)}\x1B[0m \x1B[2m -fallback- \x1B[0m`)}e.chunk=t},cb=function(e){for(let t=0;t<e.length;t+=1)for(let n=0;n<e[t].length;n+=1){const r=e[t][n];r.chunk===void 0&&(r.tags.has("Conjunction")||r.tags.has("Preposition")?wa(r,"Pivot"):r.tags.has("Adverb")?wa(r,"Verb"):r.chunk="Noun")}},hb=function(e){const t=[];let n=null;e.forEach(r=>{for(let o=0;o<r.length;o+=1){const a=r[o];n&&a.chunk===n?t[t.length-1].terms.push(a):(t.push({chunk:a.chunk,terms:[a]}),n=a.chunk)}}),t.forEach(r=>{r.chunk==="Verb"&&(r.terms.find(o=>o.tags.has("Verb"))||r.terms.forEach(o=>o.chunk=null))})},db=function(e){const{document:t,world:n}=e;ib(t),sb(t),lb(e,t,n),cb(t),hb(t)},pb={chunks:db},gb={compute:pb,api:ab,hooks:["chunks"]},dn=/\./g,mb=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Acronyms"}strip(){return this.docs.forEach(r=>{r.forEach(o=>{o.text=o.text.replace(dn,""),o.normal=o.normal.replace(dn,"")})}),this}addPeriods(){return this.docs.forEach(r=>{r.forEach(o=>{o.text=o.text.replace(dn,""),o.normal=o.normal.replace(dn,""),o.text=o.text.split("").join(".")+".",o.normal=o.normal.split("").join(".")+"."})}),this}}e.prototype.acronyms=function(n){let r=this.match("#Acronym");return r=r.getNth(n),new t(r.document,r.pointer)}},Yi=/\(/,es=/\)/,fb=function(e,t){for(;t<e.length;t+=1)if(e[t].post&&es.test(e[t].post)){let[,n]=e[t].index;return n=n||0,n}return null},bb=function(e){const t=[];return e.docs.forEach(n=>{for(let r=0;r<n.length;r+=1){const o=n[r];if(o.pre&&Yi.test(o.pre)){const a=fb(n,r);if(a!==null){const[i,s]=n[r].index;t.push([i,s,a+1,n[r].id]),r=a}}}}),e.update(t)},vb=function(e){return e.docs.forEach(t=>{t[0].pre=t[0].pre.replace(Yi,"");const n=t[t.length-1];n.post=n.post.replace(es,"")}),e},yb=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Possessives"}strip(){return vb(this)}}e.prototype.parentheses=function(n){let r=bb(this);return r=r.getNth(n),new t(r.document,r.pointer)}},$a=/'s$/,wb=function(e){let t=e.match("#Possessive+");return t.has("#Person")&&(t=t.growLeft("#Person+")),t.has("#Place")&&(t=t.growLeft("#Place+")),t.has("#Organization")&&(t=t.growLeft("#Organization+")),t},$b=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Possessives"}strip(){return this.docs.forEach(r=>{r.forEach(o=>{o.text=o.text.replace($a,""),o.normal=o.normal.replace($a,"")})}),this}}e.prototype.possessives=function(n){let r=wb(this);return r=r.getNth(n),new t(r.document,r.pointer)}},jn={'"':'"',""":""","'":"'","“":"”","‘":"’","‟":"”","‛":"’","„":"”","⹂":"”","‚":"’","«":"»","‹":"›","‵":"′","‶":"″","‷":"‴","〝":"〞","`":"´","〟":"〞"},Mr=RegExp("["+Object.keys(jn).join("")+"]"),kb=RegExp("["+Object.values(jn).join("")+"]"),Pb=function(e,t){const n=e[t].pre.match(Mr)[0]||"";if(!n||!jn[n])return null;const r=jn[n];for(;t<e.length;t+=1)if(e[t].post&&e[t].post.match(r))return t;return null},Ab=function(e){const t=[];return e.docs.forEach(n=>{for(let r=0;r<n.length;r+=1){const o=n[r];if(o.pre&&Mr.test(o.pre)){const a=Pb(n,r);if(a!==null){const[i,s]=n[r].index;t.push([i,s,a+1,n[r].id]),r=a}}}}),e.update(t)},xb=function(e){e.docs.forEach(t=>{t[0].pre=t[0].pre.replace(Mr,"");const n=t[t.length-1];n.post=n.post.replace(kb,"")})},Cb=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Possessives"}strip(){return xb(this)}}e.prototype.quotations=function(n){let r=Ab(this);return r=r.getNth(n),new t(r.document,r.pointer)}},jb=function(e){let t=this.splitAfter("@hasComma");return t=t.match("#PhoneNumber+"),t=t.getNth(e),t},Nb=[["hyphenated","@hasHyphen ."],["hashTags","#HashTag"],["emails","#Email"],["emoji","#Emoji"],["emoticons","#Emoticon"],["atMentions","#AtMention"],["urls","#Url"],["conjunctions","#Conjunction"],["prepositions","#Preposition"],["abbreviations","#Abbreviation"],["honorifics","#Honorific"]],Ib=[["emojis","emoji"],["atmentions","atMentions"]],Tb=function(e){Nb.forEach(t=>{e.prototype[t[0]]=function(n){const r=this.match(t[1]);return typeof n=="number"?r.get(n):r}}),e.prototype.phoneNumbers=jb,Ib.forEach(t=>{e.prototype[t[0]]=e.prototype[t[1]]})},Eb=/\//,Db=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Slashes"}split(){return this.map(r=>{const o=r.text().split(Eb);return r=r.replaceWith(o.join(" ")),r.growRight("("+o.join("|")+")+")})}}e.prototype.slashes=function(n){let r=this.match("#SlashedTerm");return r=r.getNth(n),new t(r.document,r.pointer)}},Hb={api:function(e){mb(e),yb(e),$b(e),Cb(e),Tb(e),Db(e)}},pn=function(e,t){e.docs.forEach(n=>{n.forEach(t)})},ka={case:e=>{pn(e,t=>{t.text=t.text.toLowerCase()})},unicode:e=>{const t=e.world,n=t.methods.one.killUnicode;pn(e,r=>r.text=n(r.text,t))},whitespace:e=>{pn(e,t=>{t.post=t.post.replace(/\s+/g," "),t.post=t.post.replace(/\s([.,?!:;])/g,"$1"),t.pre=t.pre.replace(/\s+/g,"")})},punctuation:e=>{pn(e,r=>{r.post=r.post.replace(/[–—-]/g," "),r.post=r.post.replace(/[,:;]/g,""),r.post=r.post.replace(/\.{2,}/g,""),r.post=r.post.replace(/\?{2,}/g,"?"),r.post=r.post.replace(/!{2,}/g,"!"),r.post=r.post.replace(/\?!+/g,"?")});const t=e.docs,n=t[t.length-1];if(n&&n.length>0){const r=n[n.length-1];r.post=r.post.replace(/ /g,"")}},contractions:e=>{e.contractions().expand()},acronyms:e=>{e.acronyms().strip()},parentheses:e=>{e.parentheses().strip()},possessives:e=>{e.possessives().strip()},quotations:e=>{e.quotations().strip()},emoji:e=>{e.emojis().remove()},honorifics:e=>{e.match("#Honorific+ #Person").honorifics().remove()},adverbs:e=>{e.adverbs().remove()},nouns:e=>{e.nouns().toSingular()},verbs:e=>{e.verbs().toInfinitive()},numbers:e=>{e.numbers().toNumber()},debullet:e=>{const t=/^\s*([-–—*•])\s*$/;return e.docs.forEach(n=>{t.test(n[0].pre)&&(n[0].pre=n[0].pre.replace(t,""))}),e}},Zn=e=>e.split("|").reduce((t,n)=>(t[n]=!0,t),{}),Xn="unicode|punctuation|whitespace|acronyms",Pa="|case|contractions|parentheses|quotations|emoji|honorifics|debullet",Gb="|possessives|adverbs|nouns|verbs",Ob={light:Zn(Xn),medium:Zn(Xn+Pa),heavy:Zn(Xn+Pa+Gb)};function Fb(e){e.prototype.normalize=function(t="light"){return typeof t=="string"&&(t=Ob[t]),Object.keys(t).forEach(n=>{ka.hasOwnProperty(n)&&ka[n](this,t[n])}),this}}const Vb={api:Fb},zb=function(e){let t=e.clauses().match("<Noun>"),n=t.match("@hasComma");return n=n.not("#Place"),n.found&&(t=t.splitAfter(n)),t=t.splitOn("#Expression"),t=t.splitOn("(he|she|we|you|they|i)"),t=t.splitOn("(#Noun|#Adjective) [(he|him|she|it)]",0),t=t.splitOn("[(he|him|she|it)] (#Determiner|#Value)",0),t=t.splitBefore("#Noun [(the|a|an)] #Adjective? #Noun",0),t=t.splitOn("[(here|there)] #Noun",0),t=t.splitOn("[#Noun] (here|there)",0),t=t.splitBefore("(our|my|their|your)"),t=t.splitOn("#Noun [#Determiner]",0),t=t.if("#Noun"),t},Aa=["after","although","as if","as long as","as","because","before","even if","even though","ever since","if","in order that","provided that","since","so that","than","that","though","unless","until","what","whatever","when","whenever","where","whereas","wherever","whether","which","whichever","who","whoever","whom","whomever","whose"],Bb=function(e){if(e.before("#Preposition$").found)return!0;if(!e.before().found)return!1;for(let t=0;t<Aa.length;t+=1)if(e.has(Aa[t]))return!0;return!1},Sb="(#Pronoun|#Place|#Value|#Person|#Uncountable|#Month|#WeekDay|#Holiday|#Possessive)",Mb=function(e,t){if(e.has("#Plural")||e.has("#Noun and #Noun")||e.has("(we|they)"))return!0;if(t.has(Sb)===!0||e.has("#Singular"))return!1;const n=t.text("normal");return n.length>3&&n.endsWith("s")&&!n.endsWith("ss")},Lb=function(e){let t=e.clone();return t=t.match("#Noun+"),t=t.remove("(#Adjective|#Preposition|#Determiner|#Value)"),t=t.not("#Possessive"),t=t.first(),t.found?t:e},Ye=function(e){const t=Lb(e);return{determiner:e.match("#Determiner").eq(0),adjectives:e.match("#Adjective"),number:e.values(),isPlural:Mb(e,t),isSubordinate:Bb(e),root:t}},xa=e=>e.text(),Kb=e=>e.json({terms:!1,normal:!0}).map(t=>t.normal),Jb=function(e){if(!e.found)return null;const t=e.values(0);return t.found?(t.parse()[0]||{}).num:null},Wb=function(e){const t=Ye(e);return{root:xa(t.root),number:Jb(t.number),determiner:xa(t.determiner),adjectives:Kb(t.adjectives),isPlural:t.isPlural,isSubordinate:t.isSubordinate}},ts=function(e){return!e.has("^(#Uncountable|#ProperNoun|#Place|#Pronoun|#Acronym)+$")},qb={tags:!0},Rb=function(e,t){if(t.isPlural===!0||(t.root.has("#Possessive")&&(t.root=t.root.possessives().strip()),!ts(t.root)))return e;const{methods:n,model:r}=e.world,{toPlural:o}=n.two.transform.noun,a=t.root.text({keepPunct:!1}),i=o(a,r);e.match(t.root).replaceWith(i,qb).tag("Plural","toPlural"),t.determiner.has("(a|an)")&&e.remove(t.determiner);const s=t.root.after("not? #Adverb+? [#Copula]",0);return s.found&&(s.has("is")?e.replace(s,"are"):s.has("was")&&e.replace(s,"were")),e},Ub={tags:!0},_b=function(e,t){if(t.isPlural===!1)return e;const{methods:n,model:r}=e.world,{toSingular:o}=n.two.transform.noun,a=t.root.text("normal"),i=o(a,r);return e.replace(t.root,i,Ub).tag("Singular","toPlural"),e},Qb=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Nouns"}parse(r){return this.getNth(r).map(Ye)}json(r){const o=typeof r=="object"?r:{};return this.getNth(r).map(a=>{const i=a.toView().json(o)[0]||{};return o&&o.noun!==!1&&(i.noun=Wb(a)),i},[])}conjugate(r){const o=this.world.methods.two.transform.noun;return this.getNth(r).map(a=>{const i=Ye(a),s=i.root.compute("root").text("root"),u={Singular:s};return ts(i.root)&&(u.Plural=o.toPlural(s,this.model)),u.Singular===u.Plural&&delete u.Plural,u},[])}isPlural(r){return this.filter(o=>Ye(o).isPlural).getNth(r)}isSingular(r){return this.filter(o=>!Ye(o).isPlural).getNth(r)}adjectives(r){let o=this.update([]);return this.forEach(a=>{const i=Ye(a).adjectives;i.found&&(o=o.concat(i))}),o.getNth(r)}toPlural(r){return this.getNth(r).map(o=>Rb(o,Ye(o)))}toSingular(r){return this.getNth(r).map(o=>{const a=Ye(o);return _b(o,a)})}update(r){const o=new t(this.document,r);return o._cache=this._cache,o}}e.prototype.nouns=function(n){let r=zb(this);return r=r.getNth(n),new t(this.document,r.pointer)}},Zb={api:Qb},Xb=function(e,t){let n=e.match("#Fraction+");return n=n.filter(r=>!r.lookBehind("#Value and$").found),n=n.notIf("#Value seconds"),n},Yb=e=>{const t=[{reg:/^(minus|negative)[\s-]/i,mult:-1},{reg:/^(a\s)?half[\s-](of\s)?/i,mult:.5}];for(let n=0;n<t.length;n++)if(t[n].reg.test(e)===!0)return{amount:t[n].mult,str:e.replace(t[n].reg,"")};return{amount:1,str:e}},Z={ones:{zeroth:0,first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,zero:0,one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9},teens:{tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,ten:10,eleven:11,twelve:12,thirteen:13,fourteen:14,fifteen:15,sixteen:16,seventeen:17,eighteen:18,nineteen:19},tens:{twentieth:20,thirtieth:30,fortieth:40,fourtieth:40,fiftieth:50,sixtieth:60,seventieth:70,eightieth:80,ninetieth:90,twenty:20,thirty:30,forty:40,fourty:40,fifty:50,sixty:60,seventy:70,eighty:80,ninety:90},multiples:{hundredth:100,thousandth:1e3,millionth:1e6,billionth:1e9,trillionth:1e12,quadrillionth:1e15,quintillionth:1e18,sextillionth:1e21,septillionth:1e24,hundred:100,thousand:1e3,million:1e6,billion:1e9,trillion:1e12,quadrillion:1e15,quintillion:1e18,sextillion:1e21,septillion:1e24,grand:1e3}},e1=(e,t)=>{if(Z.ones.hasOwnProperty(e)){if(t.ones||t.teens)return!1}else if(Z.teens.hasOwnProperty(e)){if(t.ones||t.teens||t.tens)return!1}else if(Z.tens.hasOwnProperty(e)&&(t.ones||t.teens||t.tens))return!1;return!0},t1=function(e){let t="0.";for(let n=0;n<e.length;n++){const r=e[n];if(Z.ones.hasOwnProperty(r)===!0)t+=Z.ones[r];else if(Z.teens.hasOwnProperty(r)===!0)t+=Z.teens[r];else if(Z.tens.hasOwnProperty(r)===!0)t+=Z.tens[r];else if(/^[0-9]$/.test(r)===!0)t+=r;else return 0}return parseFloat(t)},n1=e=>(e=e.replace(/1st$/,"1"),e=e.replace(/2nd$/,"2"),e=e.replace(/3rd$/,"3"),e=e.replace(/([4567890])r?th$/,"$1"),e=e.replace(/^[$€¥£¢]/,""),e=e.replace(/[%$€¥£¢]$/,""),e=e.replace(/,/g,""),e=e.replace(/([0-9])([a-z\u00C0-\u00FF]{1,2})$/,"$1"),e),r1=/^([0-9,. ]+)\/([0-9,. ]+)$/,Ca={"a few":3,"a couple":2,"a dozen":12,"two dozen":24,zero:0},gn=e=>Object.keys(e).reduce((t,n)=>(t+=e[n],t),0),yr=function(e){if(Ca.hasOwnProperty(e)===!0)return Ca[e];if(e==="a"||e==="an")return 1;const t=Yb(e);e=t.str;let n=null,r={},o=0,a=!1;const i=e.split(/[ -]/);for(let s=0;s<i.length;s++){let u=i[s];if(u=n1(u),!u||u==="and")continue;if(u==="-"||u==="negative"){a=!0;continue}if(u.charAt(0)==="-"&&(a=!0,u=u.substring(1)),u==="point")return o+=gn(r),o+=t1(i.slice(s+1,i.length)),o*=t.amount,o;const l=u.match(r1);if(l){const c=parseFloat(l[1].replace(/[, ]/g,"")),d=parseFloat(l[2].replace(/[, ]/g,""));d&&(o+=c/d||0);continue}if(Z.tens.hasOwnProperty(u)&&r.ones&&Object.keys(r).length===1&&(o=r.ones*100,r={}),e1(u,r)===!1)return null;if(/^[0-9.]+$/.test(u))r.ones=parseFloat(u);else if(Z.ones.hasOwnProperty(u)===!0)r.ones=Z.ones[u];else if(Z.teens.hasOwnProperty(u)===!0)r.teens=Z.teens[u];else if(Z.tens.hasOwnProperty(u)===!0)r.tens=Z.tens[u];else if(Z.multiples.hasOwnProperty(u)===!0){let c=Z.multiples[u];if(c===n)return null;if(c===100&&i[s+1]!==void 0){const d=i[s+1];Z.multiples[d]&&(c*=Z.multiples[d],s+=1)}n===null||c<n?(o+=(gn(r)||1)*c,n=c,r={}):(o+=gn(r),n=c,o=(o||1)*c,r={})}}return o+=gn(r),o*=t.amount,o*=a?-1:1,o===0&&Object.keys(r).length===0?null:o},ja=/s$/,Kt=function(e){const t=e.text("reduced");return yr(t)},Nn={half:2,halve:2,quarter:4},o1=function(e){const t=e.text("reduced").match(/^([-+]?[0-9]+)\/([-+]?[0-9]+)(st|nd|rd|th)?s?$/);return t&&t[1]&&t[0]?{numerator:Number(t[1]),denominator:Number(t[2])}:null},a1=function(e){const t=e.match("[<num>#Value+] out of every? [<den>#Value+]");if(t.found!==!0)return null;let{num:n,den:r}=t.groups();return!n||!r||(n=Kt(n),r=Kt(r),!n||!r)?null:typeof n=="number"&&typeof r=="number"?{numerator:n,denominator:r}:null},i1=function(e){const t=e.match("[<num>(#Cardinal|a)+] [<den>#Fraction+]");if(t.found!==!0)return null;let{num:n,den:r}=t.groups();n.has("a")?n=1:n=Kt(n);let o=r.text("reduced");return ja.test(o)&&(o=o.replace(ja,""),r=r.replaceWith(o)),Nn.hasOwnProperty(o)?r=Nn[o]:r=Kt(r),typeof n=="number"&&typeof r=="number"?{numerator:n,denominator:r}:null},s1=function(e){const t=e.match("^#Ordinal$");return t.found!==!0?null:e.lookAhead("^of .")?{numerator:1,denominator:Kt(t)}:null},u1=function(e){const t=e.text("reduced");return Nn.hasOwnProperty(t)?{numerator:1,denominator:Nn[t]}:null},l1=e=>{const t=Math.round(e*1e3)/1e3;return t===0&&e!==0?e:t},Je=function(e){e=e.clone();const t=u1(e)||o1(e)||a1(e)||i1(e)||s1(e)||null;return t!==null&&t.numerator&&t.denominator&&(t.decimal=t.numerator/t.denominator,t.decimal=l1(t.decimal)),t},Lr=function(e){if(e<1e6)return String(e);let t;return typeof e=="number"?t=e.toFixed(0):t=e,t.indexOf("e+")===-1?t:t.replace(".","").split("e+").reduce(function(n,r){return n+Array(r-n.length+2).join(0)})},mn=[["ninety",90],["eighty",80],["seventy",70],["sixty",60],["fifty",50],["forty",40],["thirty",30],["twenty",20]],Na=["","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"],c1=[[1e24,"septillion"],[1e20,"hundred sextillion"],[1e21,"sextillion"],[1e20,"hundred quintillion"],[1e18,"quintillion"],[1e17,"hundred quadrillion"],[1e15,"quadrillion"],[1e14,"hundred trillion"],[1e12,"trillion"],[1e11,"hundred billion"],[1e9,"billion"],[1e8,"hundred million"],[1e6,"million"],[1e5,"hundred thousand"],[1e3,"thousand"],[100,"hundred"],[1,"one"]],h1=function(e){let t=e;const n=[];return c1.forEach(r=>{if(e>=r[0]){const o=Math.floor(t/r[0]);t-=o*r[0],o&&n.push({unit:r[1],count:o})}}),n},d1=function(e){const t=[];if(e>100)return t;for(let n=0;n<mn.length;n++)e>=mn[n][1]&&(e-=mn[n][1],t.push(mn[n][0]));return Na[e]&&t.push(Na[e]),t},p1=e=>{const t=["zero","one","two","three","four","five","six","seven","eight","nine"],n=[],r=Lr(e).match(/\.([0-9]+)/);if(!r||!r[0])return n;n.push("point");const o=r[0].split("");for(let a=0;a<o.length;a++)n.push(t[o[a]]);return n},Jt=function(e){let t=e.num;if(t===0||t==="0")return"zero";t>1e21&&(t=Lr(t));let n=[];t<0&&(n.push("minus"),t=Math.abs(t));const r=h1(t);for(let o=0;o<r.length;o++){let a=r[o].unit;a==="one"&&(a="",n.length>1&&n.push("and")),n=n.concat(d1(r[o].count)),n.push(a)}return n=n.concat(p1(t)),n=n.filter(o=>o),n.length===0&&(n[0]=""),n.join(" ")},g1=function(e){if(!e.numerator||!e.denominator)return"";const t=Jt({num:e.numerator}),n=Jt({num:e.denominator});return`${t} out of ${n}`},Ia={one:"first",two:"second",three:"third",five:"fifth",eight:"eighth",nine:"ninth",twelve:"twelfth",twenty:"twentieth",thirty:"thirtieth",forty:"fortieth",fourty:"fourtieth",fifty:"fiftieth",sixty:"sixtieth",seventy:"seventieth",eighty:"eightieth",ninety:"ninetieth"},ns=e=>{const t=Jt(e).split(" "),n=t[t.length-1];return Ia.hasOwnProperty(n)?t[t.length-1]=Ia[n]:t[t.length-1]=n.replace(/y$/,"i")+"th",t.join(" ")},m1=function(e){if(!e.numerator||!e.denominator)return"";const t=Jt({num:e.numerator});let n=ns({num:e.denominator});return e.denominator===2&&(n="half"),t&&n?(e.numerator!==1&&(n+="s"),`${t} ${n}`):""},f1=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Fractions"}parse(r){return this.getNth(r).map(Je)}get(r){return this.getNth(r).map(Je)}json(r){return this.getNth(r).map(o=>{const a=o.toView().json(r)[0],i=Je(o);return a.fraction=i,a},[])}toDecimal(r){return this.getNth(r).forEach(o=>{const{decimal:a}=Je(o);o=o.replaceWith(String(a),!0),o.tag("NumericValue"),o.unTag("Fraction")}),this}toFraction(r){return this.getNth(r).forEach(o=>{const a=Je(o);if(a&&typeof a.numerator=="number"&&typeof a.denominator=="number"){const i=`${a.numerator}/${a.denominator}`;this.replace(o,i)}}),this}toOrdinal(r){return this.getNth(r).forEach(o=>{const a=Je(o);let i=m1(a);o.after("^#Noun").found&&(i+=" of"),o.replaceWith(i)}),this}toCardinal(r){return this.getNth(r).forEach(o=>{const a=Je(o),i=g1(a);o.replaceWith(i)}),this}toPercentage(r){return this.getNth(r).forEach(o=>{const{decimal:a}=Je(o);let i=a*100;i=Math.round(i*100)/100,o.replaceWith(`${i}%`)}),this}}e.prototype.fractions=function(n){let r=Xb(this);return r=r.getNth(n),new t(this.document,r.pointer)}},b1="one|two|three|four|five|six|seven|eight|nine",Ze="twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|fourty",v1="eleven|twelve|thirteen|fourteen|fifteen|sixteen|seventeen|eighteen|nineteen",Yn=function(e){let t=e.match("#Value+");if(t.has("#NumericValue #NumericValue")&&(t.has("#Value @hasComma #Value")?t.splitAfter("@hasComma"):t.has("#NumericValue #Fraction")?t.splitAfter("#NumericValue #Fraction"):t=t.splitAfter("#NumericValue")),t.has("#Value #Value #Value")&&!t.has("#Multiple")&&t.has("("+Ze+") #Cardinal #Cardinal")&&(t=t.splitAfter("("+Ze+") #Cardinal")),t.has("#Value #Value")){t.has("#NumericValue #NumericValue")&&(t=t.splitOn("#Year")),t.has("("+Ze+") ("+v1+")")&&(t=t.splitAfter("("+Ze+")"));const n=t.match("#Cardinal #Cardinal");if(n.found&&!t.has("(point|decimal|#Fraction)")&&!n.has("#Cardinal (#Multiple|point|decimal)")){const r=t.has(`(${b1}) (${Ze})`),o=n.has("("+Ze+") #Cardinal"),a=n.has("#Multiple #Value");!r&&!o&&!a&&n.terms().forEach(i=>{t=t.splitOn(i)})}t.match("#Ordinal #Ordinal").match("#TextValue").found&&!t.has("#Multiple")&&(t.has("("+Ze+") #Ordinal")||(t=t.splitAfter("#Ordinal"))),t.has("#Time")&&(t=t.splitOn("#Time")),t=t.splitBefore("#Ordinal [#Cardinal]",0),t.has("#TextValue #NumericValue")&&!t.has("("+Ze+"|#Multiple)")&&(t=t.splitBefore("#TextValue #NumericValue"))}return t=t.splitAfter("#NumberRange"),t=t.splitBefore("#Year"),t},y1=function(e,t){e=e.replace(/,/g,"");const n=e.split(/([0-9.,]*)/);let[r,o]=n,a=n.slice(2).join("");return o!==""&&t.length<2?(o=Number(o||e),typeof o!="number"&&(o=null),a=a||"",(a==="st"||a==="nd"||a==="rd"||a==="th")&&(a=""),{prefix:r||"",num:o,suffix:a}):null},ae=function(e){if(typeof e=="string")return{num:yr(e)};let t=e.text("reduced");const n=e.growRight("#Unit").match("#Unit$").text("machine"),r=/[0-9],[0-9]/.test(e.text("text"));if(e.terms().length===1&&!e.has("#Multiple")){const s=y1(t,e);if(s!==null)return s.hasComma=r,s.unit=n,s}let o=e.match("#Fraction{2,}$");o=o.found===!1?e.match("^#Fraction$"):o;let a=null;o.found&&(o.has("#Value and #Value #Fraction")&&(o=o.match("and #Value #Fraction")),a=Je(o),e=e.not(o),e=e.not("and$"),t=e.text("reduced"));let i=0;return t&&(i=yr(t)||0),a&&a.decimal&&(i+=a.decimal),{hasComma:r,prefix:"",num:i,suffix:"",isOrdinal:e.has("#Ordinal"),isText:e.has("#TextValue"),isFraction:e.has("#Fraction"),isMoney:e.has("#Money"),unit:n}},w1=function(e){const t=e.num;if(!t&&t!==0)return null;const n=t%100;if(n>10&&n<20)return String(t)+"th";const r={0:"th",1:"st",2:"nd",3:"rd"};let o=Lr(t);const a=o.slice(o.length-1,o.length);return r[a]?o+=r[a]:o+="th",o},Ta={"¢":"cents",$:"dollars","£":"pounds","¥":"yen","€":"euros","₡":"colón","฿":"baht","₭":"kip","₩":"won","₹":"rupees","₽":"ruble","₺":"liras"},Ea={"%":"percent","°":"degrees"},Da=function(e){const t={suffix:"",prefix:e.prefix};return Ta.hasOwnProperty(e.prefix)&&(t.suffix+=" "+Ta[e.prefix],t.prefix=""),Ea.hasOwnProperty(e.suffix)&&(t.suffix+=" "+Ea[e.suffix]),t.suffix&&e.num===1&&(t.suffix=t.suffix.replace(/s$/,"")),!t.suffix&&e.suffix&&(t.suffix+=" "+e.suffix),t},ot=function(e,t){if(t==="TextOrdinal"){const{prefix:r,suffix:o}=Da(e);return r+ns(e)+o}if(t==="Ordinal")return e.prefix+w1(e)+e.suffix;if(t==="TextCardinal"){const{prefix:r,suffix:o}=Da(e);return r+Jt(e)+o}let n=e.num;return e.hasComma&&(n=n.toLocaleString()),e.prefix+String(n)+e.suffix},$1=e=>Object.prototype.toString.call(e)==="[object Array]",k1=function(e){if(typeof e=="string"||typeof e=="number"){const t={};return t[e]=!0,t}return $1(e)?e.reduce((t,n)=>(t[n]=!0,t),{}):e||{}},P1=function(e,t={}){return t=k1(t),e.filter(n=>{const{unit:r}=ae(n);return!!(r&&t[r]===!0)})},A1=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Numbers"}parse(r){return this.getNth(r).map(ae)}get(r){return this.getNth(r).map(ae).map(o=>o.num)}json(r){const o=typeof r=="object"?r:{};return this.getNth(r).map(a=>{const i=a.toView().json(o)[0],s=ae(a);return i.number={prefix:s.prefix,num:s.num,suffix:s.suffix,hasComma:s.hasComma,unit:s.unit},i},[])}units(){return this.growRight("#Unit").match("#Unit$")}isUnit(r){return P1(this,r)}isOrdinal(){return this.if("#Ordinal")}isCardinal(){return this.if("#Cardinal")}toNumber(){const r=this.map(o=>{if(!this.has("#TextValue"))return o;const a=ae(o);if(a.num===null)return o;const i=o.has("#Ordinal")?"Ordinal":"Cardinal",s=ot(a,i);return o.replaceWith(s,{tags:!0}),o.tag("NumericValue")});return new t(r.document,r.pointer)}toLocaleString(){return this.forEach(r=>{const o=ae(r);if(o.num===null)return;let a=o.num.toLocaleString();if(r.has("#Ordinal")){const i=ot(o,"Ordinal").match(/[a-z]+$/);i&&(a+=i[0]||"")}r.replaceWith(a,{tags:!0})}),this}toText(){const r=this.map(o=>{if(o.has("#TextValue"))return o;const a=ae(o);if(a.num===null)return o;const i=o.has("#Ordinal")?"TextOrdinal":"TextCardinal",s=ot(a,i);return o.replaceWith(s,{tags:!0}),o.tag("TextValue"),o});return new t(r.document,r.pointer)}toCardinal(){const r=this.map(o=>{if(!o.has("#Ordinal"))return o;const a=ae(o);if(a.num===null)return o;const i=o.has("#TextValue")?"TextCardinal":"Cardinal",s=ot(a,i);return o.replaceWith(s,{tags:!0}),o.tag("Cardinal"),o});return new t(r.document,r.pointer)}toOrdinal(){const r=this.map(o=>{if(o.has("#Ordinal"))return o;const a=ae(o);if(a.num===null)return o;const i=o.has("#TextValue")?"TextOrdinal":"Ordinal",s=ot(a,i);return o.replaceWith(s,{tags:!0}),o.tag("Ordinal"),o});return new t(r.document,r.pointer)}isEqual(r){return this.filter(o=>ae(o).num===r)}greaterThan(r){return this.filter(o=>ae(o).num>r)}lessThan(r){return this.filter(o=>ae(o).num<r)}between(r,o){return this.filter(a=>{const i=ae(a).num;return i>r&&i<o})}set(r){if(r===void 0)return this;typeof r=="string"&&(r=ae(r).num);const o=this.map(a=>{const i=ae(a);if(i.num=r,i.num===null)return a;let s=a.has("#Ordinal")?"Ordinal":"Cardinal";a.has("#TextValue")&&(s=a.has("#Ordinal")?"TextOrdinal":"TextCardinal");let u=ot(i,s);return i.hasComma&&s==="Cardinal"&&(u=Number(u).toLocaleString()),a=a.not("#Currency"),a.replaceWith(u,{tags:!0}),a});return new t(o.document,o.pointer)}add(r){if(!r)return this;typeof r=="string"&&(r=ae(r).num);const o=this.map(a=>{const i=ae(a);if(i.num===null)return a;i.num+=r;let s=a.has("#Ordinal")?"Ordinal":"Cardinal";i.isText&&(s=a.has("#Ordinal")?"TextOrdinal":"TextCardinal");const u=ot(i,s);return a.replaceWith(u,{tags:!0}),a});return new t(o.document,o.pointer)}subtract(r,o){return this.add(r*-1,o)}increment(r){return this.add(1,r)}decrement(r){return this.add(-1,r)}update(r){const o=new t(this.document,r);return o._cache=this._cache,o}}t.prototype.toNice=t.prototype.toLocaleString,t.prototype.isBetween=t.prototype.between,t.prototype.minus=t.prototype.subtract,t.prototype.plus=t.prototype.add,t.prototype.equals=t.prototype.isEqual,e.prototype.numbers=function(n){let r=Yn(this);return r=r.getNth(n),new t(this.document,r.pointer)},e.prototype.percentages=function(n){let r=Yn(this);return r=r.filter(o=>o.has("#Percent")||o.after("^percent")),r=r.getNth(n),new t(this.document,r.pointer)},e.prototype.money=function(n){let r=Yn(this);return r=r.filter(o=>o.has("#Money")||o.after("^#Currency")),r=r.getNth(n),new t(this.document,r.pointer)},e.prototype.values=e.prototype.numbers},x1=function(e){f1(e),A1(e)},C1={api:x1},j1={people:!0,emails:!0,phoneNumbers:!0,places:!0},N1=function(e={}){return e=Object.assign({},j1,e),e.people!==!1&&this.people().replaceWith("██████████"),e.emails!==!1&&this.emails().replaceWith("██████████"),e.places!==!1&&this.places().replaceWith("██████████"),e.phoneNumbers!==!1&&this.phoneNumbers().replaceWith("███████"),this},I1={api:function(e){e.prototype.redact=N1}},T1=function(e){const t=e.clauses();return/\.\.$/.test(e.out("text"))||e.has("^#QuestionWord")&&e.has("@hasComma")?!1:!!(e.has("or not$")||e.has("^#QuestionWord")||e.has("^(do|does|did|is|was|can|could|will|would|may) #Noun")||e.has("^(have|must) you")||t.has("(do|does|is|was) #Noun+ #Adverb? (#Adjective|#Infinitive)$"))},E1=function(e){const t=/\?/,{document:n}=e;return e.filter(r=>{const o=r.docs[0]||[],a=o[o.length-1];return!a||n[a.index[0]].length!==o.length?!1:t.test(a.post)?!0:T1(r)})},D1="(after|although|as|because|before|if|since|than|that|though|when|whenever|where|whereas|wherever|whether|while|why|unless|until|once)",H1="(that|which|whichever|who|whoever|whom|whose|whomever)",G1=function(e){let t=e;return t.length===1||(t=t.if("#Verb"),t.length===1)||(t=t.ifNo(D1),t=t.ifNo("^even (if|though)"),t=t.ifNo("^so that"),t=t.ifNo("^rather than"),t=t.ifNo("^provided that"),t.length===1)||(t=t.ifNo(H1),t.length===1)||(t=t.ifNo("(^despite|^during|^before|^through|^throughout)"),t.length===1)||(t=t.ifNo("^#Gerund"),t.length===1)?t:(t.length===0&&(t=e),t.eq(0))},O1=function(e){let t=null;return e.has("#PastTense")?t="PastTense":e.has("#FutureTense")?t="FutureTense":e.has("#PresentTense")&&(t="PresentTense"),{tense:t}},at=function(e){const t=e.clauses(),n=G1(t).chunks();let r=e.none(),o=e.none(),a=e.none();return n.forEach((i,s)=>{if(s===0&&!i.has("<Verb>")){r=i;return}if(!o.found&&i.has("<Verb>")){o=i;return}o.found&&(a=a.concat(i))}),o.found&&!r.found&&(r=o.before("<Noun>+").first()),{subj:r,verb:o,pred:a,grammar:O1(o)}},F1=function(e){let t=e.verbs();const n=t.eq(0);if(n.has("#PastTense"))return e;if(n.toPastTense(),t.length>1){t=t.slice(1),t=t.filter(o=>!o.lookBehind("to$").found),t=t.if("#PresentTense"),t=t.notIf("#Gerund");const r=e.match("to #Verb+ #Conjunction #Verb").terms();t=t.not(r),t.found&&t.verbs().toPastTense()}return e},V1=function(e){let t=e.verbs();return t.eq(0).toPresentTense(),t.length>1&&(t=t.slice(1),t=t.filter(n=>!n.lookBehind("to$").found),t=t.notIf("#Gerund"),t.found&&t.verbs().toPresentTense()),e},z1=function(e){let t=e.verbs();if(t.eq(0).toFutureTense(),e=e.fullSentence(),t=e.verbs(),t.length>1){t=t.slice(1);const n=t.filter(r=>r.lookBehind("to$").found?!1:r.has("#Copula #Gerund")?!0:r.has("#Gerund")?!1:r.has("#Copula")?!0:!(r.has("#PresentTense")&&!r.has("#Infinitive")&&r.lookBefore("(he|she|it|that|which)$").found));n.found&&n.forEach(r=>{if(r.has("#Copula")){r.match("was").replaceWith("is"),r.match("is").replaceWith("will be");return}r.toInfinitive()})}return e},B1=function(e){return e.verbs().first().toNegative().compute("chunks"),e},S1=function(e){return e.verbs().first().toPositive().compute("chunks"),e},M1=function(e){return e.verbs().toInfinitive(),e},L1=function(e){class t extends e{constructor(o,a,i){super(o,a,i),this.viewType="Sentences"}json(o={}){return this.map(a=>{const i=a.toView().json(o)[0]||{},{subj:s,verb:u,pred:l,grammar:c}=at(a);return i.sentence={subject:s.text("normal"),verb:u.text("normal"),predicate:l.text("normal"),grammar:c},i},[])}toPastTense(o){return this.getNth(o).map(a=>(at(a),F1(a)))}toPresentTense(o){return this.getNth(o).map(a=>(at(a),V1(a)))}toFutureTense(o){return this.getNth(o).map(a=>(at(a),a=z1(a),a))}toInfinitive(o){return this.getNth(o).map(a=>(at(a),M1(a)))}toNegative(o){return this.getNth(o).map(a=>(at(a),B1(a)))}toPositive(o){return this.getNth(o).map(a=>(at(a),S1(a)))}isQuestion(o){return this.questions(o)}isExclamation(o){return this.filter(a=>a.lastTerm().has("@hasExclamation")).getNth(o)}isStatement(o){return this.filter(a=>!a.isExclamation().found&&!a.isQuestion().found).getNth(o)}update(o){const a=new t(this.document,o);return a._cache=this._cache,a}}t.prototype.toPresent=t.prototype.toPresentTense,t.prototype.toPast=t.prototype.toPastTense,t.prototype.toFuture=t.prototype.toFutureTense;const n={sentences:function(r){let o=this.map(a=>a.fullSentence());return o=o.getNth(r),new t(this.document,o.pointer)},questions:function(r){return E1(this).getNth(r)}};Object.assign(e.prototype,n)},K1={api:L1},J1=function(e){let t=e.splitAfter("@hasComma");t=t.match("#Honorific+? #Person+");const n=t.match("#Possessive").notIf("(his|her)");return t=t.splitAfter(n),t},Ha=function(e){const t={};t.firstName=e.match("#FirstName+"),t.lastName=e.match("#LastName+"),t.honorific=e.match("#Honorific+");const n=t.lastName,r=t.firstName;return(!r.found||!n.found)&&!r.found&&!n.found&&e.has("^#Honorific .$")&&(t.lastName=e.match(".$")),t},Ae="male",he="female",Ga={mr:Ae,mrs:he,miss:he,madam:he,king:Ae,queen:he,duke:Ae,duchess:he,baron:Ae,baroness:he,count:Ae,countess:he,prince:Ae,princess:he,sire:Ae,dame:he,lady:he,ayatullah:Ae,congressman:Ae,congresswoman:he,"first lady":he,mx:null},W1=function(e,t){const{firstName:n,honorific:r}=e;if(n.has("#FemaleName"))return he;if(n.has("#MaleName"))return Ae;if(r.found){let a=r.text("normal");if(a=a.replace(/\./g,""),Ga.hasOwnProperty(a))return Ga[a];if(/^her /.test(a))return he;if(/^his /.test(a))return Ae}const o=t.after();if(!o.has("#Person")&&o.has("#Pronoun")){const a=o.match("#Pronoun");if(a.has("(they|their)"))return null;const i=a.has("(he|his)"),s=a.has("(she|her|hers)");if(i&&!s)return Ae;if(s&&!i)return he}return null},q1=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="People"}parse(r){return this.getNth(r).map(Ha)}json(r){const o=typeof r=="object"?r:{};return this.getNth(r).map(a=>{const i=a.toView().json(o)[0],s=Ha(a);return i.person={firstName:s.firstName.text("normal"),lastName:s.lastName.text("normal"),honorific:s.honorific.text("normal"),presumed_gender:W1(s,a)},i},[])}presumedMale(){return this.filter(r=>r.has("(#MaleName|mr|mister|sr|jr|king|pope|prince|sir)"))}presumedFemale(){return this.filter(r=>r.has("(#FemaleName|mrs|miss|queen|princess|madam)"))}update(r){const o=new t(this.document,r);return o._cache=this._cache,o}}e.prototype.people=function(n){let r=J1(this);return r=r.getNth(n),new t(this.document,r.pointer)}},R1=function(e){let t=e.match("(#Place|#Address)+"),n=t.match("@hasComma");return n=n.filter(r=>r.has("(asia|africa|europe|america)$")?!0:!(r.has("(#City|#Region|#ProperNoun)$")&&r.after("^(#Country|#Region)").found)),t=t.splitAfter(n),t},U1=function(e){e.prototype.places=function(t){let n=R1(this);return n=n.getNth(t),new e(this.document,n.pointer)}},_1=function(e){e.prototype.organizations=function(t){return this.match("#Organization+").getNth(t)}},Q1=function(e){const t=this.clauses();let n=t.people();return n=n.concat(t.places()),n=n.concat(t.organizations()),n=n.not("(someone|man|woman|mother|brother|sister|father)"),n=n.sort("seq"),n=n.getNth(e),n},Z1=function(e){e.prototype.topics=Q1},X1=function(e){q1(e),U1(e),_1(e),Z1(e)},Y1={api:X1},ev=function(e){let t=e.match("<Verb>");return t=t.not("#Conjunction"),t=t.not("#Preposition"),t=t.splitAfter("@hasComma"),t=t.splitAfter("[(do|did|am|was|is|will)] (is|was)",0),t=t.splitBefore("(#Verb && !#Copula) [being] #Verb",0),t=t.splitBefore("#Verb [to be] #Verb",0),t=t.splitAfter("[help] #PresentTense",0),t=t.splitBefore("(#PresentTense|#PastTense) [#Copula]$",0),t=t.splitBefore("(#PresentTense|#PastTense) [will be]$",0),t=t.splitBefore("(#PresentTense|#PastTense) [(had|has)]",0),t=t.not("#Reflexive$"),t=t.not("#Adjective"),t=t.splitAfter("[#PastTense] #PastTense",0),t=t.splitAfter("[#PastTense] #Auxiliary+ #PastTense",0),t=t.splitAfter("#Copula [#Gerund] #PastTense",0),t=t.if("#Verb"),t.has("(#Verb && !#Auxiliary) #Adverb+? #Copula")&&(t=t.splitBefore("#Copula")),t},tv=function(e){let t=e;return e.wordCount()>1&&(t=e.not("(#Negative|#Auxiliary|#Modal|#Adverb|#Prefix)")),t.length>1&&!t.has("#Phrasal #Particle")&&(t=t.last()),t=t.not("(want|wants|wanted) to"),t.found||(t=e.not("#Negative")),t},nv=function(e,t){const n={pre:e.none(),post:e.none()};if(!e.has("#Adverb"))return n;const r=e.splitOn(t);return r.length===3?{pre:r.eq(0).adverbs(),post:r.eq(2).adverbs()}:r.eq(0).isDoc(t)?(n.post=r.eq(1).adverbs(),n):(n.pre=r.eq(0).adverbs(),n)},rv=function(e,t){const n=e.splitBefore(t);if(n.length<=1)return e.none();let r=n.eq(0);return r=r.not("(#Adverb|#Negative|#Prefix)"),r},ov=function(e){return e.match("#Negative")},av=function(e){if(!e.has("(#Particle|#PhrasalVerb)"))return{verb:e.none(),particle:e.none()};const t=e.match("#Particle$");return{verb:e.not(t),particle:t}},Ee=function(e){const t=e.clone();t.contractions().expand();const n=tv(t);return{root:n,prefix:t.match("#Prefix"),adverbs:nv(t,n),auxiliary:rv(t,n),negative:ov(t),phrasal:av(n)}},Te={tense:"PresentTense"},fn={conditional:!0},Ke={tense:"FutureTense"},ft={progressive:!0},re={tense:"PastTense"},bt={complete:!0,progressive:!1},Xe={passive:!0},iv={plural:!0},sv={plural:!1},uv=function(e){const t={};return e.forEach(n=>{Object.assign(t,n)}),t},Oa={imperative:[["#Imperative",[]]],"want-infinitive":[["^(want|wants|wanted) to #Infinitive$",[Te]],["^wanted to #Infinitive$",[re]],["^will want to #Infinitive$",[Ke]]],"gerund-phrase":[["^#PastTense #Gerund$",[re]],["^#PresentTense #Gerund$",[Te]],["^#Infinitive #Gerund$",[Te]],["^will #Infinitive #Gerund$",[Ke]],["^have #PastTense #Gerund$",[re]],["^will have #PastTense #Gerund$",[re]]],"simple-present":[["^#PresentTense$",[Te]],["^#Infinitive$",[Te]]],"simple-past":[["^#PastTense$",[re]]],"simple-future":[["^will #Adverb? #Infinitive",[Ke]]],"present-progressive":[["^(is|are|am) #Gerund$",[Te,ft]]],"past-progressive":[["^(was|were) #Gerund$",[re,ft]]],"future-progressive":[["^will be #Gerund$",[Ke,ft]]],"present-perfect":[["^(has|have) #PastTense$",[re,bt]]],"past-perfect":[["^had #PastTense$",[re,bt]],["^had #PastTense to #Infinitive",[re,bt]]],"future-perfect":[["^will have #PastTense$",[Ke,bt]]],"present-perfect-progressive":[["^(has|have) been #Gerund$",[re,ft]]],"past-perfect-progressive":[["^had been #Gerund$",[re,ft]]],"future-perfect-progressive":[["^will have been #Gerund$",[Ke,ft]]],"passive-past":[["(got|were|was) #Passive",[re,Xe]],["^(was|were) being #Passive",[re,Xe]],["^(had|have) been #Passive",[re,Xe]]],"passive-present":[["^(is|are|am) #Passive",[Te,Xe]],["^(is|are|am) being #Passive",[Te,Xe]],["^has been #Passive",[Te,Xe]]],"passive-future":[["will have been #Passive",[Ke,Xe,fn]],["will be being? #Passive",[Ke,Xe,fn]]],"present-conditional":[["would be #PastTense",[Te,fn]]],"past-conditional":[["would have been #PastTense",[re,fn]]],"auxiliary-future":[["(is|are|am|was) going to (#Infinitive|#PresentTense)",[Ke]]],"auxiliary-past":[["^did #Infinitive$",[re,sv]],["^used to #Infinitive$",[re,bt]]],"auxiliary-present":[["^(does|do) #Infinitive$",[Te,bt,iv]]],"modal-past":[["^(could|must|should|shall) have #PastTense$",[re]]],"modal-infinitive":[["^#Modal #Infinitive$",[]]],infinitive:[["^#Infinitive$",[]]]},wr=[];Object.keys(Oa).map(e=>{Oa[e].forEach(t=>{wr.push({name:e,match:t[0],data:uv(t[1])})})});const lv=function(e,t){return e=e.clone(),t.adverbs.post&&t.adverbs.post.found&&e.remove(t.adverbs.post),t.adverbs.pre&&t.adverbs.pre.found&&e.remove(t.adverbs.pre),e.has("#Negative")&&(e=e.remove("#Negative")),e.has("#Prefix")&&(e=e.remove("#Prefix")),t.root.has("#PhrasalVerb #Particle")&&e.remove("#Particle$"),e=e.not("#Adverb"),e},cv=function(e){return!!(e.has("#Infinitive")&&e.growLeft("to").has("^to #Infinitive"))},We=function(e,t){const n={};e=lv(e,t);for(let r=0;r<wr.length;r+=1){const o=wr[r];if(e.has(o.match)===!0){n.form=o.name,Object.assign(n,o.data);break}}return n.form||e.has("^#Verb$")&&(n.form="infinitive"),n.tense||(n.tense=t.root.has("#PastTense")?"PastTense":"PresentTense"),n.copula=t.root.has("#Copula"),n.isInfinitive=cv(e),n},Fa=function(e){return e.length<=1?!1:(e.parse()[0]||{}).isSubordinate},hv=function(e){let t=e.clauses();return t=t.filter((n,r)=>!(n.has("^(if|unless|while|but|for|per|at|by|that|which|who|from)")||r>0&&n.has("^#Verb . #Noun+$")||r>0&&n.has("^#Adverb"))),t.length===0?e:t},dv=function(e){let t=e.before();t=hv(t);const n=t.nouns();let r=n.last();const o=r.match("(i|he|she|we|you|they)");if(o.found)return o.nouns();let a=n.if("^(that|this|those)");return a.found||n.found===!1&&(a=t.match("^(that|this|those)"),a.found)?a:(r=n.last(),Fa(r)&&(n.remove(r),r=n.last()),Fa(r)&&(n.remove(r),r=n.last()),r)},pv=function(e,t){return t.has("(are|were|does)")||e.has("(those|they|we)")?!0:e.found&&e.isPlural?e.isPlural().found:!1},Fe=function(e){const t=dv(e);return{subject:t,plural:pv(t,e)}},J=e=>e,zt=(e,t)=>{const n=Fe(e),r=n.subject;return r.has("i")||r.has("we")?!0:n.plural},gv=(e,t)=>{const{subject:n,plural:r}=Fe(e);return r||n.has("we")?"were":"was"},Bt=function(e,t){if(e.has("were"))return"are";const{subject:n,plural:r}=Fe(e);return n.has("i")?"am":n.has("we")||r?"are":"is"},Kr=function(e,t){const n=Fe(e),r=n.subject;return r.has("i")||r.has("we")||n.plural?"do":"does"},we=function(e){if(e.has("#Infinitive"))return"Infinitive";if(e.has("#Participle"))return"Participle";if(e.has("#PastTense"))return"PastTense";if(e.has("#Gerund"))return"Gerund";if(e.has("#PresentTense"))return"PresentTense"},$r=function(e,t){const{toInfinitive:n}=e.methods.two.transform.verb;let r=t.root.text({keepPunct:!1});return r=n(r,e.model,we(e)),r&&e.replace(t.root,r),e},Va=e=>e.has("will not")?e.replace("will not","have not"):e.remove("will"),za=function(e){if(!e||!e.isView)return[];const t={normal:!0,terms:!1,text:!1};return e.json(t).map(n=>n.normal)},Ba=function(e){return!e||!e.isView?"":e.text("normal")},mv=function(e){const{toInfinitive:t}=e.methods.two.transform.verb,n=e.text("normal");return t(n,e.model,we(e))},fv=function(e){const t=Ee(e);e=e.clone().toView();const n=We(e,t);return{root:t.root.text(),preAdverbs:za(t.adverbs.pre),postAdverbs:za(t.adverbs.post),auxiliary:Ba(t.auxiliary),negative:t.negative.found,prefix:Ba(t.prefix),infinitive:mv(t.root),grammar:n}},bv={tags:!0},vv=function(e,t){const{toInfinitive:n}=e.methods.two.transform.verb,{root:r,auxiliary:o}=t,a=o.terms().harden();let i=r.text("normal");if(i=n(i,e.model,we(r)),i&&e.replace(r,i,bv).tag("Verb").firstTerm().tag("Infinitive"),a.found&&e.remove(a),t.negative.found){e.has("not")||e.prepend("not");const s=Kr(e);e.prepend(s)}return e.fullSentence().compute(["freeze","lexicon","preTagger","postTagger","unfreeze","chunks"]),e},Pe={tags:!0},qe={noAux:(e,t)=>(t.auxiliary.found&&(e=e.remove(t.auxiliary)),e),simple:(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;if(o.has("#Modal"))return e;let a=o.text({keepPunct:!1});return a=r(a,e.model,we(o)),a=n(a,e.model).PastTense,a=a==="been"?"was":a,a==="was"&&(a=gv(e)),a&&e.replace(o,a,Pe),e},both:function(e,t){return t.negative.found?(e.replace("will","did"),e):(e=qe.simple(e,t),e=qe.noAux(e,t),e)},hasHad:e=>(e.replace("has","had",Pe),e),hasParticiple:(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text("normal");return a=r(a,e.model,we(o)),n(a,e.model).Participle}},Sa={infinitive:qe.simple,"simple-present":qe.simple,"simple-past":J,"simple-future":qe.both,"present-progressive":e=>(e.replace("are","were",Pe),e.replace("(is|are|am)","was",Pe),e),"past-progressive":J,"future-progressive":(e,t)=>(e.match(t.root).insertBefore("was"),e.remove("(will|be)"),e),"present-perfect":qe.hasHad,"past-perfect":J,"future-perfect":(e,t)=>(e.match(t.root).insertBefore("had"),e.has("will")&&(e=Va(e)),e.remove("have"),e),"present-perfect-progressive":qe.hasHad,"past-perfect-progressive":J,"future-perfect-progressive":e=>(e.remove("will"),e.replace("have","had",Pe),e),"passive-past":e=>(e.replace("have","had",Pe),e),"passive-present":e=>(e.replace("(is|are)","was",Pe),e),"passive-future":(e,t)=>(t.auxiliary.has("will be")&&(e.match(t.root).insertBefore("had been"),e.remove("(will|be)")),t.auxiliary.has("will have been")&&(e.replace("have","had",Pe),e.remove("will")),e),"present-conditional":e=>(e.replace("be","have been"),e),"past-conditional":J,"auxiliary-future":e=>(e.replace("(is|are|am)","was",Pe),e),"auxiliary-past":J,"auxiliary-present":e=>(e.replace("(do|does)","did",Pe),e),"modal-infinitive":(e,t)=>(e.has("can")?e.replace("can","could",Pe):(qe.simple(e,t),e.match("#Modal").insertAfter("have").tag("Auxiliary")),e),"modal-past":J,"want-infinitive":e=>(e.replace("(want|wants)","wanted",Pe),e.remove("will"),e),"gerund-phrase":(e,t)=>(t.root=t.root.not("#Gerund$"),qe.simple(e,t),Va(e),e)},yv=function(e,t,n){return Sa.hasOwnProperty(n)&&(e=Sa[n](e,t),e.fullSentence().compute(["tagger","chunks"])),e},kr=function(e,t){const n=Fe(e),r=n.subject;return r.has("(i|we|you)")?"have":n.plural===!1||r.has("he")||r.has("she")||r.has("#Person")?"has":"have"},Pr=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;if(o.has("#Modal"))return e;let i=o.text({keepPunct:!1});i=r(i,e.model,we(o));const s=n(i,e.model);if(i=s.Participle||s.PastTense,i){e=e.replace(o,i);const u=kr(e);e.prepend(u).match(u).tag("Auxiliary"),e.remove(a)}return e},Ma={infinitive:Pr,"simple-present":Pr,"simple-future":(e,t)=>e.replace("will",kr(e)),"present-perfect":J,"past-perfect":J,"future-perfect":(e,t)=>e.replace("will have",kr(e)),"present-perfect-progressive":J,"past-perfect-progressive":J,"future-perfect-progressive":J},wv=function(e,t,n){return Ma.hasOwnProperty(n)?(e=Ma[n](e,t),e.fullSentence().compute(["tagger","chunks"]),e):(e=Pr(e,t),e.fullSentence().compute(["tagger","chunks"]),e)},Ue={tags:!0},vt=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text("normal");return a=r(a,e.model,we(o)),zt(e)===!1&&(a=n(a,e.model).PresentTense),o.has("#Copula")&&(a=Bt(e)),a&&(e=e.replace(o,a,Ue),e.not("#Particle").tag("PresentTense")),e},La=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,o=t.root;let a=o.text("normal");return a=r(a,e.model,we(o)),zt(e)===!1&&(a=n(a,e.model).Gerund),a&&(e=e.replace(o,a,Ue),e.not("#Particle").tag("Gerund")),e},$v=(e,t)=>{const{toInfinitive:n}=e.methods.two.transform.verb,r=t.root;let o=t.root.text("normal");return o=n(o,e.model,we(r)),o&&(e=e.replace(t.root,o,Ue)),e},Ka={infinitive:vt,"simple-present":(e,t)=>{const{conjugate:n}=e.methods.two.transform.verb,{root:r}=t;if(r.has("#Infinitive")){const o=Fe(e).subject;if(zt(e)||o.has("i"))return e;const a=r.text("normal"),i=n(a,e.model).PresentTense;a!==i&&e.replace(r,i,Ue)}else return vt(e,t);return e},"simple-past":vt,"simple-future":(e,t)=>{const{root:n,auxiliary:r}=t;if(r.has("will")&&n.has("be")){const o=Bt(e);e.replace(n,o),e=e.remove("will"),e.replace("not "+o,o+" not")}else vt(e,t),e=e.remove("will");return e},"present-progressive":J,"past-progressive":(e,t)=>{const n=Bt(e);return e.replace("(were|was)",n,Ue)},"future-progressive":e=>(e.match("will").insertBefore("is"),e.remove("be"),e.remove("will")),"present-perfect":(e,t)=>(vt(e,t),e=e.remove("(have|had|has)"),e),"past-perfect":(e,t)=>{const n=Fe(e).subject;return zt(e)||n.has("i")?(e=$r(e,t),e.remove("had"),e):(e.replace("had","has",Ue),e)},"future-perfect":e=>(e.match("will").insertBefore("has"),e.remove("have").remove("will")),"present-perfect-progressive":J,"past-perfect-progressive":e=>e.replace("had","has",Ue),"future-perfect-progressive":e=>(e.match("will").insertBefore("has"),e.remove("have").remove("will")),"passive-past":(e,t)=>{const n=Bt(e);return e.has("(had|have|has)")&&e.has("been")?(e.replace("(had|have|has)",n,Ue),e.replace("been","being"),e):e.replace("(got|was|were)",n)},"passive-present":J,"passive-future":e=>(e.replace("will","is"),e.replace("be","being")),"present-conditional":J,"past-conditional":e=>(e.replace("been","be"),e.remove("have")),"auxiliary-future":(e,t)=>(La(e,t),e.remove("(going|to)"),e),"auxiliary-past":(e,t)=>{if(t.auxiliary.has("did")){const n=Kr(e);return e.replace(t.auxiliary,n),e}return La(e,t),e.replace(t.auxiliary,"is"),e},"auxiliary-present":J,"modal-infinitive":J,"modal-past":(e,t)=>($v(e,t),e.remove("have")),"gerund-phrase":(e,t)=>(t.root=t.root.not("#Gerund$"),vt(e,t),e.remove("(will|have)")),"want-infinitive":(e,t)=>{let n="wants";return zt(e)&&(n="want"),e.replace("(want|wanted|wants)",n,Ue),e.remove("will"),e}},kv=function(e,t,n){return Ka.hasOwnProperty(n)&&(e=Ka[n](e,t),e.fullSentence().compute(["tagger","chunks"])),e},rs={tags:!0},bn=(e,t)=>{const{toInfinitive:n}=e.methods.two.transform.verb,{root:r,auxiliary:o}=t;if(r.has("#Modal"))return e;let a=r.text("normal");return a=n(a,e.model,we(r)),a&&(e=e.replace(r,a,rs),e.not("#Particle").tag("Verb")),e.prepend("will").match("will").tag("Auxiliary"),e.remove(o),e},Ja=(e,t)=>{const{conjugate:n,toInfinitive:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;let i=o.text("normal");return i=r(i,e.model,we(o)),i&&(i=n(i,e.model).Gerund,e.replace(o,i,rs),e.not("#Particle").tag("PresentTense")),e.remove(a),e.prepend("will be").match("will be").tag("Auxiliary"),e},Wa={infinitive:bn,"simple-present":bn,"simple-past":bn,"simple-future":J,"present-progressive":Ja,"past-progressive":Ja,"future-progressive":J,"present-perfect":e=>(e.match("(have|has)").replaceWith("will have"),e),"past-perfect":e=>e.replace("(had|has)","will have"),"future-perfect":J,"present-perfect-progressive":e=>e.replace("has","will have"),"past-perfect-progressive":e=>e.replace("had","will have"),"future-perfect-progressive":J,"passive-past":e=>e.has("got")?e.replace("got","will get"):e.has("(was|were)")?(e.replace("(was|were)","will be"),e.remove("being")):e.has("(have|has|had) been")?e.replace("(have|has|had) been","will be"):e,"passive-present":e=>(e.replace("being","will be"),e.remove("(is|are|am)"),e),"passive-future":J,"present-conditional":e=>e.replace("would","will"),"past-conditional":e=>e.replace("would","will"),"auxiliary-future":J,"auxiliary-past":e=>e.has("used")&&e.has("to")?(e.replace("used","will"),e.remove("to")):(e.replace("did","will"),e),"auxiliary-present":e=>e.replace("(do|does)","will"),"modal-infinitive":J,"modal-past":J,"gerund-phrase":(e,t)=>(t.root=t.root.not("#Gerund$"),bn(e,t),e.remove("(had|have)")),"want-infinitive":e=>(e.replace("(want|wants|wanted)","will want"),e)},Pv=function(e,t,n){return e.has("will")||e.has("going to")||Wa.hasOwnProperty(n)&&(e=Wa[n](e,t),e.fullSentence().compute(["tagger","chunks"])),e},Av={tags:!0},xv=function(e,t){const{toInfinitive:n,conjugate:r}=e.methods.two.transform.verb,{root:o,auxiliary:a}=t;if(e.has("#Gerund"))return e;let i=o.text("normal");i=n(i,e.model,we(o));const s=r(i,e.model).Gerund;if(s){const u=Bt(e);e.replace(o,s,Av),e.remove(a),e.prepend(u)}return e.replace("not is","is not"),e.replace("not are","are not"),e.fullSentence().compute(["tagger","chunks"]),e},qa={tags:!0},er=function(e,t){const n=Kr(e);return e.prepend(n+" not"),e},kn=function(e){let t=e.match("be");return t.found?(t.prepend("not"),e):(t=e.match("(is|was|am|are|will|were)"),t.found&&t.append("not"),e)},Pn=e=>e.has("(is|was|am|are|will|were|be)"),Ra={"simple-present":(e,t)=>Pn(e)===!0?kn(e):(e=$r(e,t),e=er(e),e),"simple-past":(e,t)=>Pn(e)===!0?kn(e):(e=$r(e,t),e.prepend("did not"),e),imperative:e=>(e.prepend("do not"),e),infinitive:(e,t)=>Pn(e)===!0?kn(e):er(e),"passive-past":e=>{if(e.has("got"))return e.replace("got","get",qa),e.prepend("did not"),e;const t=e.match("(was|were|had|have)");return t.found&&t.append("not"),e},"auxiliary-past":e=>{if(e.has("used"))return e.prepend("did not"),e;const t=e.match("(did|does|do)");return t.found&&t.append("not"),e},"want-infinitive":(e,t)=>(e=er(e),e=e.replace("wants","want",qa),e)},Cv=function(e,t,n){if(e.has("#Negative"))return e;if(Ra.hasOwnProperty(n))return e=Ra[n](e,t),e;let r=e.matchOne("be");return r.found?(r.prepend("not"),e):Pn(e)===!0?kn(e):(r=e.matchOne("(will|had|have|has|did|does|do|#Modal)"),r.found&&r.append("not"),e)},jv=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Verbs"}parse(r){return this.getNth(r).map(Ee)}json(r,o){return this.getNth(o).map(a=>{const i=a.toView().json(r)[0]||{};return i.verb=fv(a),i},[])}subjects(r){return this.getNth(r).map(o=>(Ee(o),Fe(o).subject))}adverbs(r){return this.getNth(r).map(o=>o.match("#Adverb"))}isSingular(r){return this.getNth(r).filter(o=>Fe(o).plural!==!0)}isPlural(r){return this.getNth(r).filter(o=>Fe(o).plural===!0)}isImperative(r){return this.getNth(r).filter(o=>o.has("#Imperative"))}toInfinitive(r){return this.getNth(r).map(o=>{const a=Ee(o);return We(o,a),vv(o,a)})}toPresentTense(r){return this.getNth(r).map(o=>{const a=Ee(o),i=We(o,a);return i.isInfinitive?o:kv(o,a,i.form)})}toPastTense(r){return this.getNth(r).map(o=>{const a=Ee(o),i=We(o,a);return i.isInfinitive?o:yv(o,a,i.form)})}toFutureTense(r){return this.getNth(r).map(o=>{const a=Ee(o),i=We(o,a);return i.isInfinitive?o:Pv(o,a,i.form)})}toGerund(r){return this.getNth(r).map(o=>{const a=Ee(o);return We(o,a).isInfinitive?o:xv(o,a)})}toPastParticiple(r){return this.getNth(r).map(o=>{const a=Ee(o),i=We(o,a);return i.isInfinitive?o:wv(o,a,i.form)})}conjugate(r){const{conjugate:o,toInfinitive:a}=this.world.methods.two.transform.verb;return this.getNth(r).map(i=>{const s=Ee(i),u=We(i,s);u.form==="imperative"&&(u.form="simple-present");let l=s.root.text("normal");if(!s.root.has("#Infinitive")){const c=we(s.root);l=a(l,i.model,c)||l}return o(l,i.model)},[])}isNegative(){return this.if("#Negative")}isPositive(){return this.ifNo("#Negative")}toPositive(){const r=this.match("do not #Verb");return r.found&&r.remove("do not"),this.remove("#Negative")}toNegative(r){return this.getNth(r).map(o=>{const a=Ee(o),i=We(o,a);return Cv(o,a,i.form)})}update(r){const o=new t(this.document,r);return o._cache=this._cache,o}}t.prototype.toPast=t.prototype.toPastTense,t.prototype.toPresent=t.prototype.toPresentTense,t.prototype.toFuture=t.prototype.toFutureTense,e.prototype.verbs=function(n){let r=ev(this);return r=r.getNth(n),new t(this.document,r.pointer)}},Nv={api:jv},Ar=function(e,t){const n=t.match(e);if(n.found){const r=n.pronouns().refersTo();if(r.found)return r}return t.none()},Ua=function(e){if(!e.found)return e;const[t]=e.fullPointer[0];return t&&t>0?e.update([[t-1]]):e.none()},Iv=function(e,t){return t==="m"?e.filter(n=>!n.presumedFemale().found):t==="f"?e.filter(n=>!n.presumedMale().found):e},_a=function(e,t){let n=e.people();return n=Iv(n,t),n.found||(n=e.nouns("#Actor"),n.found)?n.last():t==="f"?Ar("(she|her|hers)",e):t==="m"?Ar("(he|him|his)",e):e.none()},Tv=function(e){const t=e.nouns();let n=t.isPlural().notIf("#Pronoun");if(n.found)return n.last();const r=Ar("(they|their|theirs)",e);return r.found?r:(n=t.match("(somebody|nobody|everybody|anybody|someone|noone|everyone|anyone)"),n.found?n.last():e.none())},Ev=function(e,t){if(t&&t.found){const n=e.docs[0][0];n.reference=t.ptrs[0]}},tr=function(e,t){let n=e.before(),r=t(n);return r.found||(n=Ua(e),r=t(n),r.found)||(n=Ua(n),r=t(n),r.found)?r:e.none()},Dv=function(e){e.pronouns().if("(he|him|his|she|her|hers|they|their|theirs|it|its)").forEach(t=>{let n=null;t.has("(he|him|his)")?n=tr(t,r=>_a(r,"m")):t.has("(she|her|hers)")?n=tr(t,r=>_a(r,"f")):t.has("(they|their|theirs)")&&(n=tr(t,Tv)),n&&n.found&&Ev(t,n)})},Hv=function(e){class t extends e{constructor(r,o,a){super(r,o,a),this.viewType="Pronouns"}hasReference(){return this.compute("coreference"),this.filter(r=>r.docs[0][0].reference)}refersTo(){return this.compute("coreference"),this.map(r=>{if(!r.found)return r.none();const o=r.docs[0][0];return o.reference?r.update([o.reference]):r.none()})}update(r){const o=new t(this.document,r);return o._cache=this._cache,o}}e.prototype.pronouns=function(n){let r=this.match("#Pronoun");return r=r.getNth(n),new t(r.document,r.pointer)}},Gv={compute:{coreference:Dv},api:Hv};T.plugin(Q0);T.plugin(Y0);T.plugin(gb);T.plugin(Gv);T.plugin(Hb);T.plugin(Vb);T.plugin(Zb);T.plugin(C1);T.plugin(I1);T.plugin(K1);T.plugin(Y1);T.plugin(Nv);const Ov=(e,t,n)=>{const r=n.toLowerCase();e[r]??=new Map;const{size:o}=e[r],a=`<${n.toUpperCase()}${o>0?String(o):""}>`;return e[r].set(t,a),e[r].get(t)},Fv=(e,t,n)=>{const r={};for(const a of e)r[a]=new Map;let o=n;for(const a of t){const{replacement:i,tag:s,text:u}=a;let l;typeof i=="function"?l=String(i(u,void 0)):typeof i=="string"?l=i:l=Ov(r,u,s),o=o.replace(u,l)}return o},Vv=(e,t,n,r,o)=>{const i=r.tags.toReversed().find(s=>e.includes(s.toLowerCase()));return i&&t.push({start:n.offset.start,tag:i,text:r.text}),t},zv=e=>[...e.reduce((t,n)=>t.set(n.text+String(n.start)+n.tag,n),new Map).values()].toSorted((t,n)=>{const r=t.start-n.start;return r!==0?r:n.text.length-t.text.length}),Bv=(e,t,n)=>{for(const r of e){const{key:o,pattern:a}=r,i=r.compiledPattern??new RegExp(a,"giu");i.lastIndex=0;let s;for(;(s=i.exec(t))!==null;){const u=r;n.push({replacement:u.userReplacement?u.replacement:void 0,start:s.index,tag:o,text:s[0]}),s.index===i.lastIndex&&(i.lastIndex+=1)}}return n},Sv=[{method:"emails",types:["email"]},{method:"money",types:["money"]},{method:"organizations",types:["organization"]},{method:"people",types:["firstname","lastname"]},{method:"phoneNumbers",types:["phonenumber"]},{method:"urls",types:["url"]}],Mv=(e,t,n,r)=>{const o=Sv.filter(s=>s.types.some(u=>e.includes(u)));if(o.length===0)return n;const a=T(t),i=[];for(const s of o)i.push(...a[s.method]().out("offset"));for(const s of i){const{terms:u}=s;for(const l of u)n=Vv(e,n,s,l)}return n},Lv=(e,t,n,r)=>{let o=[];return o=Mv(t,e,o),o=Bv(n,e,o),zv(o)},Kv=(e,t,n)=>{const r=[],o=[];for(const s of t)n?.exclude&&(typeof s=="string"&&n.exclude.includes(s)||typeof s=="number"&&n.exclude.includes(s)||typeof s=="object"&&n.exclude.includes(s.key))||(typeof s=="object"&&s.pattern&&r.push(s),typeof s=="string"||typeof s=="number"?o.push(s.toString()):o.push(s.key));let a=e;const i=Lv(e,o,r);return a=Fv(o,i,a),a},lt=e=>{const t=typeof e;return e!==null&&(t==="object"||t==="function")},os=new Set(["__proto__","prototype","constructor"]),as=1e6,Jv=e=>e>="0"&&e<="9";function is(e){if(e==="0")return!0;if(/^[1-9]\d*$/.test(e)){const t=Number.parseInt(e,10);return t<=Number.MAX_SAFE_INTEGER&&t<=as}return!1}function nr(e,t){return os.has(e)?!1:(e&&is(e)?t.push(Number.parseInt(e,10)):t.push(e),!0)}function Wv(e){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);const t=[];let n="",r="start",o=!1,a=0;for(const i of e){if(a++,o){n+=i,o=!1;continue}if(i==="\\"){if(r==="index")throw new Error(`Invalid character '${i}' in an index at position ${a}`);if(r==="indexEnd")throw new Error(`Invalid character '${i}' after an index at position ${a}`);o=!0,r=r==="start"?"property":r;continue}switch(i){case".":{if(r==="index")throw new Error(`Invalid character '${i}' in an index at position ${a}`);if(r==="indexEnd"){r="property";break}if(!nr(n,t))return[];n="",r="property";break}case"[":{if(r==="index")throw new Error(`Invalid character '${i}' in an index at position ${a}`);if(r==="indexEnd"){r="index";break}if(r==="property"||r==="start"){if((n||r==="property")&&!nr(n,t))return[];n=""}r="index";break}case"]":{if(r==="index"){if(n==="")n=(t.pop()||"")+"[]",r="property";else{const s=Number.parseInt(n,10);!Number.isNaN(s)&&Number.isFinite(s)&&s>=0&&s<=Number.MAX_SAFE_INTEGER&&s<=as&&n===String(s)?t.push(s):t.push(n),n="",r="indexEnd"}break}if(r==="indexEnd")throw new Error(`Invalid character '${i}' after an index at position ${a}`);n+=i;break}default:{if(r==="index"&&!Jv(i))throw new Error(`Invalid character '${i}' in an index at position ${a}`);if(r==="indexEnd")throw new Error(`Invalid character '${i}' after an index at position ${a}`);r==="start"&&(r="property"),n+=i}}}switch(o&&(n+="\\"),r){case"property":{if(!nr(n,t))return[];break}case"index":throw new Error("Index was not closed");case"start":{t.push("");break}}return t}function On(e){if(typeof e=="string")return Wv(e);if(Array.isArray(e)){const t=[];for(const[n,r]of e.entries()){if(typeof r!="string"&&typeof r!="number")throw new TypeError(`Expected a string or number for path segment at index ${n}, got ${typeof r}`);if(typeof r=="number"&&!Number.isFinite(r))throw new TypeError(`Path segment at index ${n} must be a finite number, got ${r}`);if(os.has(r))return[];typeof r=="string"&&is(r)?t.push(Number.parseInt(r,10)):t.push(r)}return t}return[]}function qv(e,t,n){if(!lt(e)||typeof t!="string"&&!Array.isArray(t))return n===void 0?e:n;const r=On(t);if(r.length===0)return n;for(let o=0;o<r.length;o++){const a=r[o];if(e=e[a],e==null){if(o!==r.length-1)return n;break}}return e===void 0?n:e}function Rv(e,t,n){if(!lt(e)||typeof t!="string"&&!Array.isArray(t))return e;const r=e,o=On(t);if(o.length===0)return e;for(let a=0;a<o.length;a++){const i=o[a];if(a===o.length-1)e[i]=n;else if(!lt(e[i])){const s=typeof o[a+1]=="number";e[i]=s?[]:{}}e=e[i]}return r}function Uv(e,t){if(!lt(e)||typeof t!="string"&&!Array.isArray(t))return!1;const n=On(t);if(n.length===0)return!1;for(let r=0;r<n.length;r++){const o=n[r];if(r===n.length-1)return Object.hasOwn(e,o)?(delete e[o],!0):!1;if(e=e[o],!lt(e))return!1}}function Qa(e,t){if(!lt(e)||typeof t!="string"&&!Array.isArray(t))return!1;const n=On(t);if(n.length===0)return!1;for(const r of n){if(!lt(e)||!(r in e))return!1;e=e[r]}return!0}const rr="#;/?:@&",or=new RegExp(String.raw`([${rr}][^${rr}=\s]+=[^${rr}=\s]*)`,"g"),_v=e=>{const t=[];let n=0;or.lastIndex=0;let r=or.exec(e);for(;r!==null;){const{0:a,index:i}=r;t.push({key:void 0,value:e.slice(n,i+1)}),n=i+a.length,t.push({key:a.slice(1,a.indexOf("=")),value:a.slice(a.indexOf("=")+1)}),r=or.exec(e)}const o=e.slice(n);return o.length>0&&t.push({key:void 0,value:o}),t},Za=(e,t)=>{for(let n=0;n<e.length;n+=1){let r=e[n].string,o=e[n].index;for(;o<t.length;){const a=t[o];if(!r.includes(a))break;const i=r.slice(1);for(e.push({index:o,string:i}),i.includes(a)||e.pop(),r=r.slice(r.indexOf(a)+a.length),o+=1;t[o]==="";)o+=1;if(o>=t.length){if(t.at(-1)!==""&&r.length>0)break;return!0}}}return!1},In=(e,t)=>{if(!t.includes("*"))return t===e;const n=t.split("*");let r=0,o=e;for(;n[r]==="";)if(r+=1,r===t.length)return!0;if(r===0&&!e.startsWith(n[0]))return!1;const a=[];for(;r<n.length;){const i=n[r];if(!o.includes(i))return Za(a,n);const s=o.slice(1);for(a.push({index:r,string:s}),s.includes(i)||a.pop(),o=o.slice(o.indexOf(i)+i.length),r+=1;n[r]==="";)r+=1}return r>=n.length&&n.at(-1)!==""&&o.length>0?o===e?!1:Za(a,n):!0},Qv=/(?:http|https):\/\/?/,Ct=(e,t,n)=>typeof e.replacement=="function"?e.replacement(t,n):e.replacement,Zv=(e,t,n)=>e.wildcard?In(t,e.key)||In(n,e.key):t===e.key,Xv=(e,t,n,r)=>{n.remove?delete e[t]:e[t]=Ct(n,e[t],r)},Xa=(e,t,n,r,o,a)=>{const i=[],s=[];for(const l of r)!l.wildcard&&!l.deep&&Qa(e,l.key)?s.push(l):i.push(l);const u=Object.keys(e);for(const l of u){if(!Object.hasOwn(e,l))continue;const c=l.toLowerCase(),d=a?`${a}.${c}`:c;let g;for(const x of i)Zv(x,c,d)&&(g=x);g?Xv(e,l,g,d):e[l]=Re(e[l],t,n,i,o,d)}for(const l of s)Qa(e,l.key)&&(l.remove?Uv(e,l.key):Rv(e,l.key,Ct(l,qv(e,l.key),l.key)))},Ya=(e,t)=>{const n=t.toLowerCase();return e.find(r=>r.key===n||!!r.wildcard&&In(n,r.key))},Yv=(e,t)=>{const n=_v(e),r=[];for(const o of n){const{key:a,value:i}=o;if(a===void 0){const s=Ya(t,i);r.push(s?String(Ct(s,i,void 0)):i)}else{const s=Ya(t,a);s?r.push(`${a}=${String(Ct(s,i,void 0))}`):r.push(`${a}=${i}`)}}return r.join("")},Re=(e,t,n,r,o,a)=>{if(e==null)return e;if(typeof e=="object"&&e.constructor===String)return Re(String(e),t,n,r,o,a);if(typeof e=="object"&&t.has(e))return t.get(e);if(typeof e=="object"&&!Array.isArray(e)){if(e instanceof Error){const s=new Error(e.message);Object.defineProperties(s,{name:{configurable:!0,enumerable:!1,value:e.name,writable:!0},stack:{configurable:!0,enumerable:!1,value:e.stack,writable:!0}}),e.code!==void 0&&(s.code=e.code);const u=Object.keys(e);for(const l of u)s[l]=e[l];return n(e,s),Xa(s,t,n,r,o,a),s}if(e instanceof Map){const s=new Map;n(e,s);const u=e.entries();let l=u.next();for(;!l.done;){const[c,d]=l.value;if(typeof c=="string"||typeof c=="object"&&c!==null&&c.constructor===String){let g;const x=c.toLowerCase();for(const G of r)if(G.key===x||G.wildcard&&In(x,G.key)){g=G;break}g?g.remove||s.set(c,Ct(g,d,x)):s.set(c,Re(d,t,n,r,o))}else s.set(Re(c,t,n,r,o),Re(d,t,n,r,o));l=u.next()}return s}if(e instanceof Set){const s=new Set;n(e,s);const u=e.values();let l=u.next();for(;!l.done;)s.add(Re(l.value,t,n,r,o,a)),l=u.next();return s}const i={...e};return n(e,i),Xa(i,t,n,r,o,a),i}if(typeof e=="string"){const i=e;try{const s=JSON.parse(i);if(typeof s=="object"&&s!==null){const u=Re(s,t,n,r,o,a);return JSON.stringify(u)}}catch{}return Qv.test(i)?Yv(i,r):Kv(i,r,{})}if(Array.isArray(e)){const i=[];n(e,i);for(const[s,u]of e.entries()){const l=s.toString().toLowerCase(),c=a?`${a}.${l}`.toLowerCase():l,d=r.find(g=>g.key===l||g.key===c);d?(i.push(Ct(d,u,c)),a=void 0):i.push(Re(u,t,n,r,o,c))}return i}return e},ey=(e,t)=>{const n=[];for(const r of e)if(typeof r=="string"){const o=r.includes("*");n.push({deep:!1,key:r.toLowerCase(),replacement:`<${r.toUpperCase()}>`,userReplacement:!1,wildcard:o})}else if(typeof r=="number")n.push({deep:!1,key:r.toString(),replacement:"<REDACTED>"});else{const o=r.key.toLowerCase(),a={...r,key:o,replacement:r.replacement??`<${o.toUpperCase()}>`,userReplacement:r.replacement!==void 0,wildcard:o.includes("*")?!0:r.wildcard};if(a.pattern!==void 0){const i=a.pattern instanceof RegExp?a.pattern.source:a.pattern;a.compiledPattern=new RegExp(i,"giu")}n.push(a)}return n},ty=(e,t,n)=>{if(e==null||typeof e=="number"||typeof e=="boolean")return e;const r=new WeakMap;return Re(e,r,(o,a)=>{r.set(o,a)},t,n)},ss=(e,t,n)=>{const r=ey(t);return ty(e,r,n)},Jr=(e={})=>{const t=new ks(new Rr(process.stdout),new Rr(process.stderr));return new Ps(e,t)},ny=(e,t)=>{if(!At(e))return e;const n=Nr(t,e);return n===""||n.startsWith("..")?e:n},jt=(e,t)=>{const n=ny(e.file,t);return n===e.file?e:{...e,file:n}},us=e=>{if(!jr(e))return[];try{const t=As(e);return Array.isArray(t)?t:[]}catch{return[]}},ry=(e,t,n)=>{const r=us(t).map(s=>jt(s,n)),o=new Set(r.map(s=>yt(s))),a=e.map(s=>jt(s,n)),i=new Set(a.map(s=>yt(s)));return{fresh:a.filter(s=>!o.has(yt(s))),resolved:r.filter(s=>!i.has(yt(s))),surviving:a.filter(s=>o.has(yt(s)))}},ls=(e,t,n,r={})=>{const o=e.map(i=>jt(i,n));let a;if(r.replace)a=o;else{const i=us(t).map(u=>jt(u,n)),s=new Set;a=[];for(const u of[...i,...o]){const l=yt(u);s.has(l)||(s.add(l),a.push(u))}}return ms(t,`${JSON.stringify(a,null,4)}
|
|
14
|
-
|
|
15
|
-
`
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
`);for(const r of n){const
|
|
19
|
-
${r.description}
|
|
20
|
-
`),
|
|
1
|
+
import{createRequire as rr}from"node:module";import{m as oe,H as js,J as nr,y as or,T as $s,v as ar,l as cr}from"../packem_shared/index-CE6MsgcV.js";import{expandAffected as lr,getChangedFiles as dr,buildEnhancedPath as ur,enforceProjectConstraints as hr,expandTokensInString as Ht,parsePartition as fr,TaskScheduler as pr,createTaskGraph as gr,reverseTaskGraph as mr,resolveTurboEnvCompat as wr,CompositeLifeCycle as zt,defaultTaskRunner as Yt,createLogReporter as yr,readLastRunSummary as vr,getLastRunSummaryPath as kr,runConcurrently as Qe,generateRunSummary as Jt,writeChromeTrace as xr,writeRunSummary as jr,TerminalBuffer as mt}from"@visulima/task-runner";import{I as He}from"../packem_shared/index-B0EsgdzO.js";import{T as bs,U as $r,Q as br,y as Kt,V as Sr,W as Tr,X as Cr,al as Ir,b as Rr,am as Er,an as Mr,ao as Fr,ap as Or}from"./cli-main.js";import{r as z,m as n,n as m,i as c,h as he,d as K,$ as Pr,C as Ar,b as Dr,O as Lr}from"./catalog.js";import{d as Br,r as Nr}from"../packem_shared/lockfile-C1qCKGH6.js";import{a as Ts}from"../packem_shared/public-api-WqUCiyIe.js";import{F as Hr}from"../packem_shared/failure-log-Bt7sW4p7.js";import{r as zr}from"../packem_shared/command-runtime-3FTGuUsK.js";import{r as Yr}from"../packem_shared/toolchain-Zb3VzZb4.js";import{i as Jr,r as Kr,s as Xr,a as Qr,c as Zr,d as ei,e as ti,H as si,f as ri,b as ii}from"../packem_shared/lifecycle-XeMei1ED.js";import{p as ni,r as oi,f as ai}from"../packem_shared/selectors-D4iCvITE.js";import{r as nt,l as yt,d as ci,s as li,m as di,a as ui}from"../packem_shared/target-options-CR0OuYJr.js";import{o as hi,m as fi,c as Ze}from"../packem_shared/env-DJlbJiFh.js";import{T as Cs,C as Is,D as ot,E as Rs}from"../packem_shared/symbols-DPTlrJ3B.js";import{V as dt,E as Zt,q as vi,j as ki}from"../packem_shared/index.server-J83sowC4.js";import{parseStacktrace as xi,codeFrame as ji}from"@visulima/error";import{originalPositionFor as $i,sourceContentFor as bi,loadSourceMap as Si}from"@visulima/source-map";import{o as Es}from"../packem_shared/spinner-DuJJvFTl.js";import{c as es,a as Ei,s as ts}from"../packem_shared/watch-BXNI7dC6.js";import ft from"./index.js";const ir=rr(import.meta.url),Ve=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Ee=s=>{if(typeof Ve<"u"&&Ve.versions&&Ve.versions.node){const[e,t]=Ve.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return Ve.getBuiltinModule(s)}return ir(s)},{existsSync:Ae,mkdirSync:Gr,writeFileSync:wt,readFileSync:Ge,openSync:_r,statSync:Xt,readSync:qr,closeSync:Wr,mkdtempSync:Ur}=Ee("node:fs"),{createInterface:Ss,emitKeypressEvents:Vr}=Ee("node:readline"),{spawn:pi}=Ee("node:child_process"),{isAbsolute:gi,resolve:Qt,dirname:mi,relative:wi}=Ee("node:path"),{fileURLToPath:yi}=Ee("node:url"),{createHash:Ti}=Ee("node:crypto"),{mkdir:Ci,appendFile:at}=Ee("node:fs/promises"),{platform:Ii,homedir:vt,tmpdir:Ri}=Ee("node:os"),ss=new WeakSet,Mi=s=>{if(ss.has(s))return;const e=["y","mo","w","d","h","m","s","ms","future","past"];for(const r of e)if(!Object.hasOwn(s,r))throw new TypeError(`Missing required property: ${r}`);if(typeof s.future!="string"||typeof s.past!="string")throw new TypeError("Properties future and past must be of type string");const t=["y","mo","w","d","h","m","s","ms"];for(const r of t)if(typeof s[r]!="string"&&typeof s[r]!="function")throw new TypeError(`Property ${r} must be of type string or function`);if(s.decimal&&typeof s.decimal!="string")throw new TypeError("Property decimal must be of type string");if(s.delimiter&&typeof s.delimiter!="string")throw new TypeError("Property delimiter must be of type string");if(s._digitReplacements&&!Array.isArray(s._digitReplacements))throw new TypeError("Property _digitReplacements must be an array");if(s._numberFirst&&typeof s._numberFirst!="boolean")throw new TypeError("Property _numberFirst must be of type boolean");if(s.unitMap&&typeof s.unitMap!="object")throw new TypeError("Property unitMap must be an object");if(s.unitMap&&Object.values(s.unitMap).some(r=>typeof r!="string"))throw new TypeError("All values in unitMap must be of type string");ss.add(s)},Ms=(s,e)=>{e=e||-1;const t=new RegExp(String.raw`^-?\d+(?:\.\d{0,${String(e)}})?`).exec(s.toString());return t===null?s:Number.parseFloat(t[0])},rs=({unitCount:s,unitName:e},t,r)=>{let{spacer:o}=r;const{maxDecimalPoints:a}=r;let i=".";r.decimal!==void 0?i=r.decimal:t.decimal!==void 0&&(i=t.decimal);let d;"digitReplacements"in r?d=r.digitReplacements:"_digitReplacements"in t&&(d=t._digitReplacements);let u,f=s;a!==void 0&&(f=Ms(s,a));const h=f.toString();if(!t._hideCountIf2||s!==2)if(d){u="";for(const $ of h)u+=$==="."?i:d[$]}else u=h.replace(".",i);else u="";const p=t[e];let l=p;return typeof p=="function"&&(l=p(s)),t._hideCountIf2&&s===2&&(o=""),t._numberFirst?l+o+u:u+o+l},Fi=(s,e)=>{const{units:t}=e;if(t.length===0)return[];const{unitMeasures:r}=e,o=e.largest??Number.POSITIVE_INFINITY,a={};let i,d,u,f=s;for(d=0;d<t.length;d++){i=t[d];const p=r[i];u=d===t.length-1?f/p:Math.floor(f/p),a[i]=u,f-=u*p}if(e.round){let p=o;for(d=0;d<t.length;d++)if(i=t[d],u=a[i],u!==0&&(p--,p===0)){for(let l=d+1;l<t.length;l++){const $=t[l],R=a[$];a[i]=(a[i]??0)+R*r[$]/r[i],a[$]=0}break}for(d=t.length-1;d>=0;d--){if(i=t[d],u=a[i],u===0)continue;const l=Math.round(u);if(a[i]=l,d===0)break;const $=t[d-1],R=r[$],G=Math.floor(l*r[i]/R);if(G)a[$]=(a[$]??0)+G,a[i]=0;else break}}const h=[];for(d=0;d<t.length&&h.length<o;d++){if(i=t[d],u=a[i],u&&!e.round&&h.length===o-1){let p,l=0;for(p=d+1,t.length;p<t.length;p++){const $=t[p];l+=a[$]*(e.unitMeasures[$]/e.unitMeasures[i])}u+=l,e.maxDecimalPoints!==void 0&&(u=Ms(u,e.maxDecimalPoints))}u&&h.push({unitCount:u,unitName:i})}return h},Oi=(s,e,t)=>{const{language:r,units:o}=e;if(s.length===0){const p=o.at(-1);return rs({unitCount:0,unitName:p},r,e)}const{conjunction:a,serialComma:i}=e;let d=", ";e.delimiter!==void 0?d=e.delimiter:r.delimiter!==void 0&&(d=r.delimiter);let u="";e.timeAdverb&&t!==0&&(u=r.future??"",t<0&&(u=r.past??""));const f=s.map(p=>rs(p,r,e));let h;return!a||s.length===1?h=f.join(d):s.length===2?h=f.join(a):h=f.slice(0,-1).join(d)+(i?",":"")+a+(f.at(-1)??""),u&&(h=u.replace("%s",h)),h},Pi=(s,e)=>{if(Number.isNaN(s))throw new TypeError("Expected a valid number");if(typeof s!="number")throw new TypeError("Expected a number for milliseconds input");const t={conjunction:"",language:hi,round:!1,serialComma:!0,spacer:" ",timeAdverb:!1,unitMeasures:{d:864e5,h:36e5,m:6e4,mo:2629746e3,ms:1,s:1e3,w:6048e5,y:31556952e3},units:["w","d","h","m","s"],...e};Mi(t.language);const r=Math.abs(s),o=Fi(r,t);return Oi(o,t,s)},Fs=s=>s===155||s===157||s===144||s===152||s===158||s===159,Os=(s,e)=>{for(let t=e;t<s.length;t+=1){const r=s.codePointAt(t);if(r>=64&&r<=126)return t}return-1},et=(s,e,t)=>{for(let r=e;r<s.length;r+=1){const o=s.codePointAt(r);if(o===156||t&&o===7)return r;if(o===27&&s.codePointAt(r+1)===92)return r+1}return-1},Ai=(s,e)=>{const t=s.codePointAt(e+1);return t===91?Os(s,e+2):t===93?et(s,e+2,!0):t===80||t===88||t===94||t===95?et(s,e+2,!1):t!==void 0?e+1:-1},Di=(s,e)=>{const t=s.codePointAt(e);return t===155?Os(s,e+1):t===157?et(s,e+1,!0):t===144||t===152||t===158||t===159?et(s,e+1,!1):-1},Li=s=>{if(s.includes(String.fromCodePoint(27)))return!0;for(let e=0;e<s.length;e+=1)if(Fs(s.codePointAt(e)))return!0;return!1},Bi=s=>{if(!Li(s))return s;let e="",t=0,r=0;const{length:o}=s;for(;r<o;){const a=s.codePointAt(r);let i;if(a===27)i=Ai(s,r);else if(Fs(a))i=Di(s,r);else{r+=1;continue}i===-1&&(i=o-1),e+=s.slice(t,r),t=i+1,r=i+1}return e+=s.slice(t),e},be="@voidzero-dev/vite-task-client",kt="@visulima/task-runner-client",tt=`npm:${kt}@^1`,Ps=oe(".vis",".vite-client-override-declined"),st="pnpm-workspace.yaml",Ni=["dependencies","devDependencies","optionalDependencies","peerDependencies"],As=s=>{try{return JSON.parse(Ge(s,"utf8"))}catch{return}},Gi=s=>{const e=oe(s,st);if(Ae(e))try{return Ts(Ge(e,"utf8")).toJS()?.overrides}catch{return}},_i=s=>s==="pnpm"||s==="aube"?"pnpm.overrides":s==="yarn"?"resolutions":"overrides",qi=s=>{const e=oe(s,st);try{const t=Ts(Ge(e,"utf8"));return t.setIn(["overrides",be],tt),wt(e,t.toString()),!0}catch{return!1}},is=s=>s!==void 0&&Ni.some(e=>s[e]?.[be]!==void 0),Wi=(s,e)=>s!==void 0&&(s.pnpm?.overrides?.[be]!==void 0||s.overrides?.[be]!==void 0||s.resolutions?.[be]!==void 0)||e?.[be]!==void 0,Ui=(s,e=[])=>{const t=As(oe(s,"package.json")),r=Ae(oe(s,"node_modules","@voidzero-dev","vite-task-client"));return{alreadyOverridden:Wi(t,Gi(s)),declined:Ae(oe(s,Ps)),manager:Br(s)?.manager,present:is(t)||r||e.some(o=>is(o))}},Vi=s=>{try{const e=oe(s,Ps);Gr(js(e),{recursive:!0}),wt(e,`Declined adding the ${be} → ${kt} override.
|
|
2
|
+
Delete this file to be asked again.
|
|
3
|
+
`)}catch{}},Hi=(s,e="npm")=>{const t=`${e} install`;if((e==="pnpm"||e==="aube")&&Ae(oe(s,st))&&qi(s))return{file:st,installCommand:t};const r=oe(s,"package.json"),o=As(r);if(!o)return;const a=_i(e);a==="pnpm.overrides"?(o.pnpm??={},o.pnpm.overrides??={},o.pnpm.overrides[be]=tt):(o[a]??={},o[a][be]=tt);try{wt(r,`${JSON.stringify(o,void 0,4)}
|
|
4
|
+
`)}catch{return}return{file:"package.json",installCommand:t}},zi=async(s,e)=>{const t=Ui(s,e.projectManifests);if(!t.present||t.alreadyOverridden||t.declined)return!1;const r=Ss({input:process.stdin,output:process.stdout});try{e.logger.info(`Detected ${be}. Its cache hints no-op under @visulima/task-runner unless aliased to ${kt} (a drop-in replacement).`);const o=await new Promise(i=>{r.question("Add the override now? [y/N] ",i)});if(!/^y(?:es)?$/i.test(o.trim()))return Vi(s),e.logger.info("Skipped. Delete .vis/.vite-client-override-declined to be asked again."),!1;const a=Hi(s,t.manager);return a===void 0?(e.logger.warn("Could not write the override automatically — add it manually (see @visulima/task-runner-client README)."),!1):(e.logger.info(`Added "${be}": "${tt}" to ${a.file}. Run \`${a.installCommand}\` to apply it.`),!0)}finally{r.close()}},Yi=({interactive:s,taskPty:e,workspacePty:t})=>e===!0?!0:e===!1?!1:s&&t!==!1,Ji=s=>s.split(",").map(e=>e.trim()).filter(e=>e!==""),Ki=(s,e,t)=>{const r=new Set,o=[];if(s===void 0||s.trim()==="")return{skipTaskIds:r,unmatchedPatterns:o};const a=[...t],i=new Set(a),d=new Map;for(const u of a){const f=u.lastIndexOf(":");if(f===-1)continue;const h=u.slice(f+1),p=d.get(h);p===void 0?d.set(h,[u]):p.push(u)}for(const u of Ji(s)){if(u.startsWith("~:"))throw new Error(`--skip-cache does not support the closest-project selector "~:" (received "${u}"). Use \`pkg:target\`, \`:target\`, or \`#tag:target\`.`);if(i.has(u)){r.add(u);continue}const f=ni(u);if(!f){o.push(u);continue}let h=!1;switch(f.kind){case"all":{const p=d.get(f.target)??[];for(const l of p)r.add(l),h=!0;break}case"project":{const p=f.projects?.[0];if(p!==void 0){const l=`${p}:${f.target}`;i.has(l)&&(r.add(l),h=!0)}break}case"tag":{const{tag:p}=f;if(p!==void 0){const l=d.get(f.target)??[];for(const $ of l){const R=$.slice(0,$.lastIndexOf(":"));e.projects[R]?.tags?.includes(p)===!0&&(r.add($),h=!0)}}break}}h||o.push(u)}return{skipTaskIds:r,unmatchedPatterns:o}},Xi=/\$(?:\{([A-Z_]\w*)(:-[^}]*)?\}|([A-Z_]\w*))/gi,Qi=new Set(["0","!","#","$","*","-","?","@","_"]),Zi=s=>{const e=new Map;for(const t of s.matchAll(Xi)){const r=t[1],o=t[3],a=t[2],i=r??o;if(i===void 0||Qi.has(i))continue;const d=a!==void 0,u=e.get(i);u===void 0?e.set(i,d):u&&!d&&e.set(i,!1)}return[...e.entries()].map(([t,r])=>({hasDefault:r,name:t}))},en=s=>{const{command:e,processEnv:t,taskEnv:r,taskId:o}=s,a=Zi(e);if(a.length===0)return;const i=[];for(const{hasDefault:d,name:u}of a){if(d)continue;const f=r[u],h=t[u];f===void 0&&h===void 0&&i.push(u)}if(i.length!==0)return{missing:i.toSorted(),taskId:o}},tn=s=>{const e=s.missing.map(t=>`$${t}`).join(", ");return`Strict env: ${s.taskId} references unset variable${s.missing.length===1?"":"s"} ${e}. Set ${s.missing.length===1?"it":"them"} in the task env, an envFile, or the parent shell — or opt out with options.strictEnv: false.`},ns=s=>{const e=new Set;for(const t of Object.values(s.projects))for(const r of Object.keys(t.targets??{}))e.add(r);return[...e].sort()},sn=s=>{const e=new Map;for(const t of s.values())for(const[r,o]of Object.entries(t))for(const a of o.aliases??[])e.has(a)||e.set(a,r);return e},rn=(s,e)=>e.get(s)??s,nn=(s,e)=>{if(s.length===0)return e.length;if(e.length===0)return s.length;const t=[];for(let r=0;r<=e.length;r++)t[r]=[r];for(let r=0;r<=s.length;r++)t[0][r]=r;for(let r=1;r<=e.length;r++)for(let o=1;o<=s.length;o++){const a=e[r-1]===s[o-1]?0:1;t[r][o]=Math.min(t[r-1][o]+1,t[r][o-1]+1,t[r-1][o-1]+a)}return t[e.length][s.length]},on=(s,e,t=3)=>Ds(s,e,1,t)[0],Ds=(s,e,t=3,r=3)=>{const o=[];for(const a of e){const i=nn(s.toLowerCase(),a.toLowerCase());i<=r&&o.push({distance:i,name:a})}return o.sort((a,i)=>a.distance-i.distance||a.name.localeCompare(i.name)),o.slice(0,t).map(a=>a.name)},an=s=>s.length===0?" (no targets found)":s.map(e=>` - ${e}`).join(`
|
|
5
|
+
`),cn=async s=>{if(s.length===0||!process.stdin.isTTY||!process.stdout.isTTY)return;const e=Ss({input:process.stdin,output:process.stdout});try{process.stdout.write(`Available targets:
|
|
6
|
+
`);for(const[o,a]of s.entries())process.stdout.write(` ${String(o+1).padStart(2," ")}. ${a}
|
|
7
|
+
`);process.stdout.write(`
|
|
8
|
+
`);const t=(await new Promise(o=>{e.question("Select a target (number or name, blank to cancel): ",o)})).trim();if(t.length===0)return;const r=Number.parseInt(t,10);return Number.isFinite(r)&&r>=1&&r<=s.length?s[r-1]:s.includes(t)?t:on(t,s)}finally{e.close()}},ln=new RegExp("[\x1B]\\[[0-?]*[ -/]*[@-~]","g"),ut=s=>s.replaceAll(ln,"").replaceAll("\r","");class os{#e=[];#r=new Set;#s=new Map;#i=new Map;constructor(e=[]){for(const t of e)this.#i.set(t,{id:t,status:"pending",tailLines:[]});this.#e=[...e],this.#n()}getSnapshot=()=>this.#s;subscribe=e=>(this.#r.add(e),()=>{this.#r.delete(e)});getIds(){return this.#e}getState(e){return this.#i.get(e)}getDockState(){let e=!1,t=!1;for(const r of this.#i.values())r.status==="crashed"||r.status==="failed"?e=!0:(r.status==="pending"||r.status==="starting")&&(t=!0);return e?"crash":t?"boot":"ready"}registerService(e){this.#i.has(e)||(this.#i.set(e,{id:e,status:"pending",tailLines:[]}),this.#e=[...this.#e,e],this.#o())}markStarting(e){this.#t(e,t=>({...t,errorMessage:void 0,startedAt:t.startedAt??Date.now(),status:"starting"}))}markStarted(e,t){this.#t(e,r=>({...r,startedAt:r.startedAt??Date.now(),status:r.status==="ready"?"ready":"starting"}))}markReady(e,t){this.#t(e,r=>({...r,errorMessage:void 0,port:t.port,readyAt:Date.now(),status:"ready"}))}markFailed(e,t,r){const o=r?.message;this.#t(e,a=>({...a,errorMessage:ut(o??t),status:"failed"}))}markCrashed(e,t){const r=t.slice(-256).map(o=>ut(o));this.#t(e,o=>({...o,errorMessage:r.length>0?r[r.length-1]:"process exited",status:"crashed",tailLines:r}))}appendLog(e,t){const r=t.split(`
|
|
9
|
+
`).map(o=>ut(o)).filter(o=>o.length>0);r.length!==0&&this.#t(e,o=>{const a=[...o.tailLines,...r];for(;a.length>256;)a.shift();let i=0;for(let d=a.length-1;d>=0;d--)if(i+=a[d].length+1,i>65536){a.splice(0,d+1);break}return{...o,lastLine:r[r.length-1],tailLines:a}})}abortBoot(e){let t=!1;const r=new Map(this.#i);for(const[o,a]of r)(a.status==="pending"||a.status==="starting")&&(r.set(o,{...a,errorMessage:e,status:"failed"}),t=!0);t&&(this.#i=r,this.#n(),this.#o())}#t(e,t){const r=this.#i.get(e);r&&(this.#i.set(e,t(r)),this.#n(),this.#o())}#n(){this.#s=new Map(this.#i)}#o(){for(const e of this.#r)try{e()}catch{}}}const dn=(s,e)=>{if(s===e)return!0;if(!s||!e||s.length!==e.length)return!1;for(const[t,r]of s.entries())if(!Object.is(r,e[t]))return!1;return!0},as=({children:s,deps:e,onRender:t,style:r,width:o})=>{const a=z.useRef(null),i=z.useRef(!1),d=z.useRef(e),u=z.useRef(s),f=z.useRef(t);f.current=t;let h=!1;e!==void 0?dn(d.current,e)||(h=!0,d.current=e):s!==u.current&&(h=!0,u.current=s),h&&(i.current=!1,a.current&&(a.current.cachedRender=void 0)),z.useLayoutEffect(()=>{const l=a.current;l&&(l.internal_onRendered=()=>{i.current=!0,f.current?.(l)})}),z.useEffect(()=>()=>{const l=a.current;l&&(l.cachedRender=void 0,l.internal_onRendered=void 0)},[]);const p=z.useMemo(()=>({...r,width:o}),[r,o]);return n.jsx("ink-static-render",{ref:a,style:p,children:i.current?null:s()})},un=s=>Array.isArray(s)?`[${s.join(",")}]`:typeof s=="object"&&s!==null?JSON.stringify(s):String(s),hn=(s,e,t)=>e==="_"?`${s}${Array.isArray(t)?t.join(" "):String(t)}`:`${s}--${e}=${un(t)}`,xt=(s,e,t)=>{const r=new Set(new Set(t.map(l=>l.target.target))),o=new Set(new Set(t.map(l=>l.target.project))),a=e.filter(l=>r.has(l)),i=s.filter(l=>o.has(l)),d=t.length-i.length*a.length,u=a.length===1?"target":"targets",f=a.join(", "),h=i.length===1?`project ${i[0]}`:`${i.length} projects`;let p=`${u} ${f} for ${h}`;return d>0&&(p+=` and ${d} ${d===1?"task":"tasks"} ${d===1?"it depends":"they depend"} on`),p},fn={error:"red",info:"white",success:"green"},pt=({children:s,title:e,variant:t})=>{const r=fn[t];return n.jsxs(m,{flexDirection:"column",children:[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,inverse:!0,children:" VIS "}),n.jsx(c,{bold:!0,color:r,children:"•"}),n.jsx(c,{children:e})]}),s]})},Ls=({cached:s,failed:e,failedIds:t,projectNames:r,retriedIds:o,skippedIds:a,succeeded:i,targets:d,tasks:u,took:f})=>{const h=xt(r,d,u),p=o??[];if(e===0&&(!a||a.length===0)){const l=s>0?` (${s} read from cache)`:"";return n.jsx(as,{children:()=>n.jsx(pt,{title:`Successfully ran ${h}`,variant:"success",children:n.jsxs(m,{flexDirection:"column",marginTop:1,paddingLeft:3,children:[n.jsxs(c,{children:[n.jsx(c,{color:"green",children:Cs})," ",i+s," tasks completed",l?n.jsx(c,{dimColor:!0,children:l}):null,n.jsx(c,{dimColor:!0,children:` · Took ${f}`})]}),p.length>0&&n.jsxs(m,{flexDirection:"column",marginTop:1,children:[n.jsxs(c,{children:[n.jsx(c,{color:"yellow",children:"↻"})," ",n.jsx(c,{color:"yellow",children:String(p.length)})," task",p.length===1?"":"s"," succeeded after retry:"]}),p.map($=>n.jsxs(c,{children:[" ",n.jsx(c,{color:"yellow",children:"↻"})," ",$]},$))]})]})})})}return n.jsx(as,{children:()=>n.jsx(pt,{title:`Ran ${h}`,variant:"error",children:n.jsxs(m,{flexDirection:"column",marginTop:1,paddingLeft:3,children:[a&&a.length>0&&n.jsxs(m,{flexDirection:"column",children:[n.jsxs(c,{dimColor:!0,children:[a.length," ","task",a.length===1?"":"s"," ","skipped (dependency failed or --bail)"]}),a.map(l=>n.jsxs(c,{dimColor:!0,children:[" - ",l]},l)),n.jsx(c,{})]}),e>0&&n.jsxs(m,{flexDirection:"column",children:[n.jsxs(c,{children:[n.jsx(c,{color:"red",children:String(e)})," ","task",e===1?"":"s"," ","failed:"]}),t.map(l=>n.jsxs(c,{children:[" ",n.jsx(c,{color:"red",children:Is})," ",l]},l)),n.jsx(c,{})]}),p.length>0&&n.jsxs(m,{flexDirection:"column",children:[n.jsxs(c,{children:[n.jsx(c,{color:"yellow",children:String(p.length)})," ","task",p.length===1?"":"s"," ","finished after retry:"]}),p.map(l=>n.jsxs(c,{children:[" ",n.jsx(c,{color:"yellow",children:"↻"})," ",l]},l)),n.jsx(c,{})]}),n.jsx(c,{dimColor:!0,children:` Took ${f}`})]})})})};class rt{#e;#r=new Set;#s=new Map;constructor(e,t){this.#e={autoExitCountdown:null,cached:0,completed:0,done:!1,endTime:null,failed:0,filterActive:!1,filterText:"",focusedPanel:"tasks",interactiveMode:!1,outputs:new Map,pinnedTaskIds:[null,null],rerunRequested:!1,retriedIds:[],retryTaskId:null,rows:e.map(r=>({persistent:!!r.overrides.visOptions?.persistent,status:"pending",taskId:r.id})),running:0,selectedIndex:0,startTime:Date.now(),statusFilter:"all",succeeded:0,totalTasks:t??e.length,viewMode:"list"}}getSnapshot=()=>this.#e;subscribe=e=>(this.#r.add(e),()=>{this.#r.delete(e)});startTasks(e){const t=[...this.#e.rows];for(const r of e){const o=t.findIndex(a=>a.taskId===r.id);o!==-1&&(t[o]={...t[o],elapsed:0,status:"running"},this.#s.set(r.id,process.hrtime()))}this.#t({...this.#e,rows:t,running:this.#e.running+e.length})}endTasks(e){const t=[...this.#e.rows];let{cached:r,completed:o,failed:a,succeeded:i}=this.#e;const d=new Map(this.#e.outputs),u=[...this.#e.retriedIds];for(const p of e){const l=t.findIndex($=>$.taskId===p.task.id);switch(l!==-1&&(t[l]={...t[l],duration:p.startTime&&p.endTime?p.endTime-p.startTime:void 0,retryAttempts:p.retryAttempts,status:p.status}),p.retryAttempts&&p.retryAttempts>0&&u.push(p.task.id),o++,p.status){case"failure":{a++;break}case"local-cache":case"local-cache-kept-existing":case"remote-cache":{r++;break}case"success":{i++;break}}p.terminalOutput&&!d.has(p.task.id)&&d.set(p.task.id,p.terminalOutput),this.#s.delete(p.task.id)}let{selectedIndex:f}=this.#e;if(a>this.#e.failed){const p=t.findIndex(l=>l.status==="failure");p!==-1&&(f=p)}const h=Math.max(0,this.#e.running-e.length);this.#t({...this.#e,cached:r,completed:o,failed:a,outputs:d,retriedIds:u,rows:t,running:h,selectedIndex:f,succeeded:i})}static#i=256*1024;addOutput(e,t){if(!t.trim())return;let r=(this.#e.outputs.get(e)??"")+t;r.length>rt.#i&&(r=r.slice(-rt.#i)),this.#e.outputs.set(e,r),this.#t({...this.#e})}setOutput(e,t){this.#e.outputs.set(e,t),this.#t({...this.#e})}markDone(){this.#t({...this.#e,done:!0,endTime:Date.now()})}unmarkDone(){this.#t({...this.#e,autoExitCountdown:null,done:!1,endTime:null})}tick(){if(this.#s.size===0)return;let e=!1;const t=[...this.#e.rows];for(let r=0;r<t.length;r++){const o=t[r];if(o.status==="running"){const a=this.#s.get(o.taskId);if(a){const i=process.hrtime(a),d=i[0]*1e3+i[1]/1e6;t[r]={...o,elapsed:d},e=!0}}}e&&this.#t({...this.#e,rows:t})}setSelectedIndex(e){e!==this.#e.selectedIndex&&this.#t({...this.#e,selectedIndex:e})}setFocusedPanel(e){e!==this.#e.focusedPanel&&this.#t({...this.#e,focusedPanel:e})}setFilter(e){this.#t({...this.#e,filterText:e,selectedIndex:0})}setFilterActive(e){e!==this.#e.filterActive&&this.#t({...this.#e,filterActive:e,filterText:e?this.#e.filterText:"",selectedIndex:0})}pinTask(e,t){const r=[...this.#e.pinnedTaskIds];r[e]=t,this.#t({...this.#e,pinnedTaskIds:r})}clearPins(){this.#t({...this.#e,pinnedTaskIds:[null,null]})}requestRetry(e){const t=[...this.#e.rows],r=t.findIndex(d=>d.taskId===e);let{completed:o,failed:a,succeeded:i}=this.#e;if(r!==-1){const d=t[r].status;d==="failure"?(a=Math.max(0,a-1),o=Math.max(0,o-1)):d==="success"&&(i=Math.max(0,i-1),o=Math.max(0,o-1)),t[r]={...t[r],elapsed:0,retryAttempts:void 0,status:"running"},this.#s.set(e,process.hrtime())}this.#t({...this.#e,completed:o,done:!1,endTime:null,failed:a,interactiveMode:!1,retriedIds:this.#e.retriedIds.filter(d=>d!==e),retryTaskId:e,rows:t,succeeded:i})}acknowledgeRetry(){const e=this.#e.retryTaskId;return e&&this.#t({...this.#e,retryTaskId:null}),e}setInteractiveMode(e){e!==this.#e.interactiveMode&&this.#t({...this.#e,interactiveMode:e})}setViewMode(e){e!==this.#e.viewMode&&this.#t({...this.#e,viewMode:e})}setStatusFilter(e){this.#t({...this.#e,selectedIndex:0,statusFilter:e})}requestRerun(){this.#s.clear(),this.#t({...this.#e,autoExitCountdown:null,cached:0,completed:0,done:!1,endTime:null,failed:0,interactiveMode:!1,outputs:new Map,rerunRequested:!0,retriedIds:[],rows:this.#e.rows.map(e=>({persistent:e.persistent,status:"pending",taskId:e.taskId})),running:0,startTime:Date.now(),succeeded:0,viewMode:"list"})}acknowledgeRerun(){this.#e.rerunRequested&&this.#t({...this.#e,rerunRequested:!1})}#t(e){this.#e=e;for(const t of this.#r)try{t()}catch{}}}const pn=s=>Bi(s),gn=/^(?<name>(?:[A-Z][\w$]*)?(?:Error|Exception))(?::[ \t](?<message>.*))?$/,mn=/^\s*at\s+/,wn=s=>{const e=s.split(`
|
|
10
|
+
`);let t;for(let r=0;r<e.length;r++){const o=gn.exec(e[r].trim());if(!o)continue;const a=[];for(let i=r+1;i<e.length&&i<=r+200;i++){const d=e[i];if(mn.test(d))a.push(d.trim());else if(a.length>0||d.trim()!=="")break}if(a.length>0){const i=o.groups?.name??"Error",d=o.groups?.message??"";t={message:d,name:i,stack:`${i}: ${d}
|
|
11
|
+
${a.map(u=>` ${u}`).join(`
|
|
12
|
+
`)}`}}}return t},Bs=s=>{if(s.startsWith("file://"))try{return yi(s)}catch{return s}return s},yn=s=>!s.includes("node_modules")&&!s.startsWith("node:")&&!s.startsWith("internal/"),vn=s=>{try{return Si(s)}catch{return}},kn=(s,e)=>{if(!s.file||s.line===void 0)return;const t=Bs(s.file),r=gi(t)?t:Qt(e,t);if(!yn(r)||!Ae(r))return;const o=vn(r);if(o){const a=$i(o,{column:s.column===void 0?0:Math.max(0,s.column-1),line:s.line});if(a.source&&a.line!=null){const i=Qt(mi(r),a.source),d=bi(o,a.source)??(Ae(i)?Ge(i,"utf8"):void 0);if(d!==void 0)return{column:a.column==null?void 0:a.column+1,file:i,line:a.line,source:d}}}return{column:s.column,file:r,line:s.line,source:Ge(r,"utf8")}},cs=(s,e)=>{const t=wi(e,s);return t&&!t.startsWith("..")?t:s},Ns=(s,e)=>{if(!s?.trim())return s;try{const t=wn(pn(s));if(!t)return s;const r=new Error(t.message);r.name=t.name,r.stack=t.stack;const o=xi(r);if(o.length===0)return s;const a=e.color,i={dim:l=>a?Zt(l):l,head:l=>a?ki(dt(l)):l,loc:l=>a?vi(l):l};let d,u;for(const l of o){const $=kn(l,e.cwd);if($){d=$,u=l;break}}const f=[i.head(`✖ ${t.name}${t.message?`: ${t.message}`:""}`)];if(d){const l=`${cs(d.file,e.cwd)}:${d.line}${d.column?`:${d.column}`:""}`;f.push(` ${i.loc(l)}`,""),f.push(ji(d.source,{start:{column:d.column,line:d.line}},{color:a?{gutter:Zt,marker:dt,message:dt}:void 0,linesAbove:2,linesBelow:3}))}const h=o.filter(l=>l!==u).slice(0,8).map(l=>{const $=l.methodName??"<anonymous>",R=l.file?`${cs(Bs(l.file),e.cwd)}${l.line?`:${l.line}`:""}`:"";return i.dim(` at ${$}${R?` (${R})`:""}`)});h.length>0&&f.push("",...h);const p=i.dim("─".repeat(40));return`${f.join(`
|
|
13
|
+
`)}
|
|
14
|
+
${p}
|
|
15
|
+
${s}`}catch{return s}},xn={delimiter:" ",language:{d:()=>" d",future:"in %s",h:()=>" h",m:()=>" m",mo:()=>" mo",ms:()=>" ms",past:"%s ago",s:()=>" s",w:()=>" w",y:()=>" y"},largest:2,round:!0,spacer:"",units:["h","m","s","ms"]},De=s=>Pi(s,xn),Ne=s=>s==="local-cache"||s==="local-cache-kept-existing"||s==="remote-cache",_e=s=>{switch(s){case"failure":return{color:"red",icon:Is};case"local-cache":case"local-cache-kept-existing":case"remote-cache":case"success":return{color:"green",icon:Cs};case"skipped":return{color:"gray",icon:ot};default:return{color:"gray",icon:"?"}}},ze=s=>{const{color:e,icon:t}=_e(s);return he(K.createElement(c,{color:e},t),{columns:10}).trim()},jn=s=>{const{color:e,icon:t}=_e(s);switch(s){case"local-cache":case"local-cache-kept-existing":case"remote-cache":return he(K.createElement(c,null,K.createElement(c,{color:e},t)," ",K.createElement(c,{color:"cyan"},"[cache]")),{columns:30}).trim();case"skipped":return he(K.createElement(c,null,K.createElement(c,{dimColor:!0},t)," ",K.createElement(c,{dimColor:!0},"[skipped]")),{columns:30}).trim();default:return he(K.createElement(c,{color:e},t),{columns:10}).trim()}},$n=s=>s==="azure"||s==="buildkite"||s==="github"||s==="gitlab"||s==="off"?s:process.env.GITHUB_ACTIONS==="true"?"github":process.env.GITLAB_CI==="true"?"gitlab":process.env.BUILDKITE==="true"?"buildkite":process.env.TF_BUILD?.toLowerCase()==="true"?"azure":"off",bn=s=>{const e=s.replaceAll(/\W+/g,"_"),t=Ti("sha256").update(s).digest("hex").slice(0,6);return`${e}_${t}`},Sn=(s,e,t,r="auto")=>{const o=t.trim();if(!o)return;const a=`
|
|
16
|
+
`,i=$n(r);if(i==="github"){process.stdout.write(`::group::${ze(e)} ${s}${a}`),process.stdout.write(o+a),process.stdout.write(`::endgroup::${a}`);return}if(i==="gitlab"){const p=Math.floor(Date.now()/1e3),l=bn(s),$=e==="failure"?"":"[collapsed=true]",R="\x1B[0K";process.stdout.write(`${R}section_start:${String(p)}:${l}${$}\r${R}${ze(e)} ${s}${a}`),process.stdout.write(o+a);const G=Math.floor(Date.now()/1e3);process.stdout.write(`${R}section_end:${String(G)}:${l}\r${R}${a}`);return}if(i==="buildkite"){const p=e==="failure"?"+++":"---";process.stdout.write(`${p} ${ze(e)} ${s}${a}`),process.stdout.write(o+a);return}if(i==="azure"){process.stdout.write(`##[group]${ze(e)} ${s}${a}`),process.stdout.write(o+a),process.stdout.write(`##[endgroup]${a}`);return}const d=process.stdout.columns||80,u=he(K.createElement(c,{dimColor:!0},ot.repeat(d)),{columns:d}).trim(),f=jn(e),h=he(K.createElement(c,{bold:!0},s),{columns:d}).trim();process.stdout.write(`${u}${a}`),process.stdout.write(`${f} ${h}${a}`),process.stdout.write(o+a),process.stdout.write(`${u}${a}`)},Tn=s=>s==="running"?{color:"white",icon:"•"}:s==="pending"?{color:"gray",icon:"·"}:_e(s),Cn=({autoScroll:s,focused:e,interactiveMode:t,showFullscreenHint:r,statusValue:o,supportsInteractive:a,taskId:i})=>{if(!i)return;if(t)return"Esc cancel | Enter send";const d=s?"":" PAUSED (f resume)",u=a?" i INPUT":"";return e&&o==="running"&&r?`⏎ FULLSCREEN${u} f FOLLOW${d}`:e&&o==="running"?`f FOLLOW${u}${d}`:e&&r?`<enter> full screen${d}`:e?d||void 0:"<tab> or <enter> to focus"},ls=({autoScroll:s=!0,duration:e,focused:t,interactiveMode:r,output:o,scrollRef:a,showFullscreenHint:i,status:d,supportsInteractive:u=!0,taskId:f})=>{const h=d??"pending",{icon:p}=Tn(h),l=t?"bold":"single",$=h==="failure"?"red":h==="success"||Ne(h)?t?"green":"gray":h==="running"?t?"white":"cyan":t?"white":"gray",R=f?`${p} ${f}`:void 0,G=e===void 0?void 0:De(e),V=Cn({autoScroll:s,focused:t,interactiveMode:r??!1,showFullscreenHint:i??!1,statusValue:h,supportsInteractive:u,taskId:f});if(!f)return n.jsxs(m,{alignItems:"center",borderColor:"gray",borderStyle:"single",flexDirection:"column",flexGrow:1,justifyContent:"center",paddingX:2,paddingY:1,children:[n.jsx(c,{dimColor:!0,children:"Select a task to view output"}),n.jsx(c,{dimColor:!0,children:"Press Enter or 1/2 to pin"})]});const j=[];if(o)for(const I of o.split(`
|
|
17
|
+
`))j.push(I.endsWith("\r")?I.slice(0,-1):I);return!o&&(h==="running"||h==="pending")?n.jsx(m,{borderBottomTitle:V,borderColor:$,borderStyle:l,borderTopRightTitle:G,borderTopTitle:R,flexDirection:"column",flexGrow:1,paddingX:2,paddingY:1,children:n.jsx(m,{alignItems:"center",flexGrow:1,justifyContent:"center",children:n.jsx(c,{dimColor:!0,children:"Waiting for task output…"})})}):n.jsxs(m,{borderBottomTitle:V,borderColor:r?"yellow":$,borderStyle:l,borderTopRightTitle:G,borderTopTitle:R,flexDirection:"column",flexGrow:1,children:[n.jsx(m,{flexGrow:1,flexShrink:1,paddingY:1,children:n.jsx(bs,{flexGrow:1,followOutput:s,paddingX:2,ref:a,scrollbar:!0,scrollbarColor:"gray",scrollbarStyle:"block",children:n.jsx(c,{children:j.join(`
|
|
18
|
+
`)})})}),r&&n.jsx(m,{flexShrink:0,justifyContent:"center",paddingX:1,children:n.jsx(c,{bold:!0,color:"yellow",children:"INTERACTIVE | keystrokes forwarded to task | Esc to exit"})})]})},In={crashed:"✖",failed:"✖",pending:"·",ready:"●",starting:"•"},Gs=s=>s==="ready"?"green":s==="crashed"||s==="failed"?"red":s==="starting"?"cyan":"gray",Rn=({status:s})=>s==="starting"?n.jsx(c,{color:"cyan",children:n.jsx(Es,{type:"dots"})}):n.jsx(c,{bold:!0,color:Gs(s),children:In[s]}),En=({active:s,focused:e,state:t})=>{const r=e&&s,o=r?">":" ",a=t.status==="ready"?t.port?`running, port ${String(t.port)}`:"running":t.status==="failed"||t.status==="crashed"?t.errorMessage??"exited":t.lastLine??"booting…";return n.jsxs(m,{flexDirection:"row",flexShrink:0,overflow:"hidden",children:[n.jsx(c,{children:o}),n.jsx(c,{children:" "}),n.jsx(m,{flexShrink:0,width:3,children:n.jsx(Rn,{status:t.status})}),n.jsx(m,{flexGrow:0,flexShrink:0,width:28,children:n.jsx(c,{bold:r,inverse:r,children:t.id})}),n.jsx(m,{flexGrow:1,flexShrink:1,overflow:"hidden",children:n.jsxs(c,{color:Gs(t.status),dimColor:t.status!=="crashed"&&t.status!=="failed",wrap:"truncate-end",children:[" ",a]})})]})},Mn=({states:s})=>{const e=[];for(const r of s)r.status==="ready"&&e.push(r.id);const t=e.join(", ");return n.jsxs(m,{paddingX:1,children:[n.jsxs(c,{bold:!0,color:"green",children:["● ","Services"]}),n.jsxs(c,{children:[" ",String(e.length)," / ",String(s.length)," running"]}),t.length>0&&n.jsxs(c,{dimColor:!0,children:[" ",t]}),n.jsx(c,{dimColor:!0,children:" [Tab ↓]"})]})},Fn=({states:s})=>{const e=s.find(t=>t.status==="crashed"||t.status==="failed");return e?n.jsxs(m,{flexDirection:"column",paddingX:1,children:[n.jsxs(c,{bold:!0,color:"red",children:["✖ ","Service crashed:"," ",e.id]}),e.tailLines.slice(-3).map((t,r)=>n.jsxs(c,{color:"red",dimColor:!0,children:[" ",t]},`crash-${String(r)}`))]}):n.jsx(n.Fragment,{})},On=({activeIndex:s,focused:e,store:t})=>{const r=z.useSyncExternalStore(t.subscribe,t.getSnapshot),o=t.getIds();if(o.length===0)return n.jsx(n.Fragment,{});const a=o.map(h=>r.get(h)).filter(h=>h!==void 0),i=t.getDockState(),d=i==="crash"?"red":i==="ready"?"gray":e?"white":"cyan",u=i==="crash"?"Services (crashed)":i==="ready"?"Services":"Services (starting)",f=e?i==="crash"?"↑↓ select Enter logs R retry Esc back":"↑↓ select Enter logs Esc back":"Tab to focus services";return i==="ready"&&!e?n.jsx(m,{borderColor:d,borderStyle:"single",flexDirection:"row",flexShrink:0,children:n.jsx(Mn,{states:a})}):n.jsxs(m,{borderBottomTitle:f,borderColor:d,borderStyle:e?"bold":"single",borderTopTitle:u,flexDirection:"column",flexGrow:2,flexShrink:0,minHeight:6,paddingX:1,children:[i==="crash"&&n.jsx(Fn,{states:a}),a.map((h,p)=>n.jsx(En,{active:p===s,focused:e,state:h},h.id))]})},_s=6,qs=8,Ws=12,Pn=s=>s==="running"||s==="pending"?Rs:s==="local-cache"||s==="local-cache-kept-existing"?"Local":s==="remote-cache"?"Remote":ot,ds=(s,e)=>e[0]===s?"[1]":e[1]===s?"[2]":"",us=({compact:s,focused:e,isSelected:t,pinLabel:r,row:o})=>{const{persistent:a,status:i,taskId:d}=o,u=e&&t,f=u?">":" ",h=i==="running"&&a===!0;let p;if(h)p=n.jsx(c,{bold:!0,color:"green",children:" ● "});else if(i==="running")p=n.jsxs(c,{bold:!0,color:"white",children:[" ",n.jsx(Es,{type:"dots"})," "]});else if(i==="pending")p=n.jsx(c,{bold:!0,color:"gray",children:" · "});else{const{color:$,icon:R}=_e(i);p=n.jsxs(c,{bold:!0,color:$,children:[" ",R," "]})}let l=Rs;return h?l="running":i!=="running"&&i!=="pending"?l=o.duration===void 0?ot:De(o.duration):i==="running"&&o.elapsed!==void 0&&(l=De(o.elapsed)),n.jsxs(m,{children:[n.jsx(c,{children:f}),n.jsx(m,{width:_s,children:p}),n.jsxs(m,{flexGrow:1,children:[n.jsx(c,{bold:u,inverse:u,children:d}),r?n.jsx(c,{dimColor:!0,children:` ${r}`}):null]}),!s&&n.jsx(m,{justifyContent:"flex-end",width:qs,children:n.jsx(c,{dimColor:!Ne(i),children:Pn(i)})}),!s&&n.jsx(m,{justifyContent:"flex-end",width:Ws,children:n.jsx(c,{color:h?"green":void 0,dimColor:i==="pending"||h,children:l})})]})},hs=({compact:s,filterActive:e,filterText:t,focused:r,headerStatus:o,parallelSlots:a=3,pinnedTaskIds:i,rows:d,scrollRef:u,selectedIndex:f,title:h})=>{const p=o==="error"?"red":o==="success"?"green":r?"white":"gray",l=d[f]?.taskId,$=[];let R=0;for(const I of d)I.status==="running"?$.push(I):I.status==="pending"&&(R+=1);const G=Math.min(a,$.length+R),V=G>1,j=[];if(V)for(let I=0;I<G;I++){const S=$[I];S?j.push(n.jsx(us,{compact:s,focused:r,isSelected:S.taskId===l,pinLabel:ds(S.taskId,i),row:S},`par-${S.taskId}`)):j.push(n.jsxs(m,{children:[n.jsx(c,{children:" "}),n.jsx(m,{width:_s,children:n.jsx(c,{bold:!0,color:"gray",children:" · "})}),n.jsx(c,{dimColor:!0,children:"Waiting for task..."})]},`par-empty-${String(I)}`))}return n.jsxs(m,{borderColor:p,borderStyle:"single",flexDirection:"column",flexGrow:1,children:[n.jsxs(m,{flexShrink:0,paddingX:1,children:[n.jsx(c,{bold:!0,inverse:!0,children:" VIS "}),n.jsx(c,{children:` ${h}`}),!s&&n.jsxs(m,{flexGrow:1,gap:0,justifyContent:"flex-end",children:[n.jsx(m,{justifyContent:"flex-end",width:qs,children:n.jsx(c,{dimColor:!0,children:"Cache"})}),n.jsx(m,{justifyContent:"flex-end",width:Ws,children:n.jsx(c,{dimColor:!0,children:"Duration"})})]})]}),n.jsx(bs,{flexGrow:1,flexShrink:1,paddingX:1,paddingY:1,ref:u,scrollbar:!0,scrollbarColor:"gray",scrollbarStyle:"block",children:d.map(I=>n.jsx(us,{compact:s,focused:r,isSelected:I.taskId===l,pinLabel:ds(I.taskId,i),row:I},I.taskId))}),V&&n.jsx(m,{borderBottom:!1,borderColor:"gray",borderLeft:!1,borderRight:!1,borderStyle:"single",borderTop:!0,flexDirection:"column",flexShrink:0,paddingX:1,paddingY:1,children:j}),e&&n.jsxs(m,{borderBottom:!1,borderColor:"gray",borderLeft:!1,borderRight:!1,borderStyle:"single",borderTop:!0,flexShrink:0,paddingX:1,children:[n.jsx(c,{bold:!0,color:"white",children:"/ "}),n.jsx(c,{children:t}),n.jsx(c,{inverse:!0,children:" "})]})]})},fs=40,ps=10,gs=100,An=Object.freeze([]),Dn=({autoExitSeconds:s,onRetryService:e,parallelSlots:t,projectNames:r,serviceDockStore:o,stdinRegistry:a,store:i,targets:d,tasks:u})=>{const{exit:f}=$r(),{columns:h,rows:p}=br(),l=z.useSyncExternalStore(i.subscribe,i.getSnapshot),$=z.useCallback(T=>o?o.subscribe(T):()=>{},[o]);z.useSyncExternalStore($,()=>o?o.getDockState():"ready");const R=o?o.getIds():An,G=R.length>0,[V,j]=z.useState(0),[I,S]=z.useState(null),x=z.useSyncExternalStore($,()=>I&&o?o.getState(I):void 0),[O,w]=z.useState(!1),A=z.useRef(null),b=z.useRef(null),M=z.useRef(null),[H,te]=z.useState(!1),[fe,W]=z.useState(!0),Y=z.useRef({list:0,splitList:0,splitOutput:0}),ce=z.useCallback(()=>{l.viewMode==="list"?Y.current.list=b.current?.getScrollOffset()??0:l.viewMode==="split"&&(Y.current.splitList=b.current?.getScrollOffset()??0,Y.current.splitOutput=M.current?.getScrollOffset()??0)},[l.viewMode]),re=z.useCallback(T=>{setTimeout(()=>{if(T==="list"){const v=Y.current.list;b.current?.scrollTo(v)}else if(T==="split"){const v=Y.current.splitList;v>0?b.current?.scrollTo(v):b.current?.scrollTo(Math.max(0,i.getSnapshot().selectedIndex-2)),M.current?.scrollTo(Y.current.splitOutput)}},0)},[i]),ae=z.useRef(!1);z.useEffect(()=>{l.done&&!ae.current&&(ae.current=!0,s>0&&l.failed===0&&te(!0)),!l.done&&ae.current&&(ae.current=!1,te(!1))},[l.done,l.failed,s]);const ne=z.useMemo(()=>{const T=R.length>0?new Set(R):null,v=l.filterText?l.filterText.toLowerCase():null,C=[];for(const ee of l.rows)T?.has(ee.taskId)||l.statusFilter==="failed"&&ee.status!=="failure"||l.statusFilter==="running"&&ee.status!=="running"&&ee.status!=="pending"||l.statusFilter==="passed"&&ee.status!=="success"&&!Ne(ee.status)||v&&!ee.taskId.toLowerCase().includes(v)||C.push(ee);return C},[l.rows,l.filterText,l.statusFilter,R]),U=(ne[l.selectedIndex]??null)?.taskId??null,_=I?null:l.pinnedTaskIds[0]??U,X=_?l.rows.find(T=>T.taskId===_):null,pe=x??null,je=I?(pe?.tailLines??[]).join(`
|
|
19
|
+
`):_?l.outputs.get(_)??"":"",E=z.useMemo(()=>X?.status==="failure"&&je?Ns(je,{color:!process.env.NO_COLOR,cwd:process.cwd()}):je,[X?.status,je]),ge=I??_,Ie=I?pe?.status==="crashed"||pe?.status==="failed"?"failure":"running":X?.status,Me=xt(r,d,u),Le=l.done?`Completed ${Me} (${De((l.endTime??Date.now())-l.startTime)})`:`Running ${Me}...`,Fe=l.done?l.failed>0?"error":"success":"running",Z=z.useCallback(T=>{b.current?.scrollTo(Math.max(0,T-2))},[]);if(z.useEffect(()=>{l.interactiveMode&&X?.status!=="running"&&i.setInteractiveMode(!1)},[l.interactiveMode,X?.status,i]),z.useEffect(()=>{if(!_)return;let T=h;l.viewMode==="split"&&h>=gs?T=h-Math.floor(h*.4)-2:(l.viewMode==="split"||l.viewMode==="fullscreen")&&(T=h-2);const v=Math.max(1,p-4);a.get(_)?.resize?.(T,v)},[h,p,l.viewMode,_]),Kt((T,v)=>{if(v.escape){i.setInteractiveMode(!1);return}if(!_)return;const C=a.get(_);if(!C){i.setInteractiveMode(!1);return}if(v.return)C.write("\r");else if(v.upArrow)C.write("\x1B[A");else if(v.downArrow)C.write("\x1B[B");else if(v.rightArrow)C.write("\x1B[C");else if(v.leftArrow)C.write("\x1B[D");else if(v.backspace)C.write("");else if(v.delete)C.write("\x1B[3~");else if(v.tab)C.write(" ");else if(v.home)C.write("\x1B[H");else if(v.end)C.write("\x1B[F");else if(v.pageUp)C.write("\x1B[5~");else if(v.pageDown)C.write("\x1B[6~");else if(v.ctrl&&T){const ee=T.toUpperCase().codePointAt(0);ee!==void 0&&ee>=65&&ee<=90&&C.write(String.fromCodePoint(ee-64))}else T&&C.write(T)},{isActive:l.interactiveMode}),Kt((T,v)=>{if(T==="c"&&v.ctrl){f();return}if(!H){if(O){v.escape||T==="?"?w(!1):T==="q"?(w(!1),te(!0)):v.downArrow||T==="j"?A.current?.scrollBy(1):v.upArrow||T==="k"?A.current?.scrollBy(-1):v.pageDown?A.current?.scrollBy(5):v.pageUp?A.current?.scrollBy(-5):v.home?A.current?.scrollToTop():v.end&&A.current?.scrollToBottom();return}if(T==="?"){w(!0);return}if(T==="q"){te(!0);return}if(T==="r"&&l.done){i.requestRerun();return}if(T==="R"&&l.done){const C=ne[l.selectedIndex];C?.status==="failure"&&i.requestRetry(C.taskId);return}if(T==="F"&&!l.filterActive){const C=["all","failed","running","passed"],ee=C.indexOf(l.statusFilter);i.setStatusFilter(C[(ee+1)%C.length]);return}if(l.filterActive){if(v.escape){i.setFilterActive(!1);return}if(v.return){i.setFilterActive(!1);return}if(v.backspace){i.setFilter(l.filterText.slice(0,-1));return}if(T&&!v.ctrl&&!v.meta){i.setFilter(l.filterText+T);return}return}if(T==="i"&&X?.status==="running"&&(l.viewMode==="fullscreen"||l.viewMode==="split"&&l.focusedPanel==="output")){i.setInteractiveMode(!0);return}if(l.viewMode==="fullscreen"){if(v.escape){i.setViewMode("split"),re("split");return}if(T==="f"){const C=!fe;W(C),C&&M.current?.scrollToBottom();return}if(v.downArrow||T==="j"){W(!1),M.current?.scrollBy(1);return}if(v.upArrow||T==="k"){W(!1),M.current?.scrollBy(-1);return}if(v.pageDown||v.ctrl&&T==="d"){W(!1),M.current?.scrollBy(12);return}if(v.pageUp||v.ctrl&&T==="u"){W(!1),M.current?.scrollBy(-12);return}if(v.home){W(!1),M.current?.scrollToTop();return}if(v.end){W(!0),M.current?.scrollToBottom();return}return}if(l.focusedPanel==="dock"&&G&&o){if(v.tab){S(null),i.setFocusedPanel("tasks");return}if(v.escape){i.setFocusedPanel("tasks"),S(null),l.viewMode==="split"&&(i.setViewMode("list"),re("list"));return}if(v.downArrow||T==="j"){j(C=>Math.min(C+1,R.length-1));return}if(v.upArrow||T==="k"){j(C=>Math.max(C-1,0));return}if(v.return){const C=R[V];C&&(S(C),W(!0),ce(),Y.current.splitList=0,Y.current.splitOutput=0,i.setViewMode("split"),i.setFocusedPanel("output"),re("split"));return}if((T==="r"||T==="R")&&e){const C=R[V],ee=C?o.getState(C)?.status:void 0;if(C&&(ee==="crashed"||ee==="failed")){const Te=e(C);Te instanceof Promise&&Te.catch(()=>{})}return}return}if(l.viewMode==="split"){if(v.tab){l.focusedPanel==="tasks"?i.setFocusedPanel("output"):G?i.setFocusedPanel("dock"):(S(null),i.setFocusedPanel("tasks"));return}if(l.focusedPanel==="output"){if(v.escape){if(I&&G){S(null),i.setViewMode("list"),i.setFocusedPanel("dock"),re("list");return}S(null),i.setFocusedPanel("tasks");return}if(v.return){ce(),i.setViewMode("fullscreen");return}if(T==="f"){const C=!fe;W(C),C&&M.current?.scrollToBottom();return}if(v.downArrow||T==="j"){W(!1),M.current?.scrollBy(1);return}if(v.upArrow||T==="k"){W(!1),M.current?.scrollBy(-1);return}if(v.pageDown||v.ctrl&&T==="d"){W(!1),M.current?.scrollBy(12);return}if(v.pageUp||v.ctrl&&T==="u"){W(!1),M.current?.scrollBy(-12);return}if(v.home){W(!1),M.current?.scrollToTop();return}if(v.end){W(!0),M.current?.scrollToBottom();return}return}if(v.escape){i.setViewMode("list"),re("list");return}if(v.return){i.setFocusedPanel("output");return}}if(l.viewMode==="list"||l.viewMode==="split"&&l.focusedPanel==="tasks"){if(v.tab&&l.viewMode==="list"&&G){i.setFocusedPanel("dock");return}if(v.downArrow||T==="j"){const C=Math.min(l.selectedIndex+1,Math.max(0,ne.length-1));i.setSelectedIndex(C),Z(C);return}if(v.upArrow||T==="k"){const C=Math.max(l.selectedIndex-1,0);i.setSelectedIndex(C),Z(C);return}if(v.return&&l.viewMode==="list"){W(!0),ce(),Y.current.splitList=0,Y.current.splitOutput=0,i.setViewMode("split"),i.setFocusedPanel("output"),re("split");return}if(T==="/"){i.setFilterActive(!0);return}if(T==="1"&&U){i.pinTask(0,U);return}if(T==="2"&&U){i.pinTask(1,U);return}if(T==="0"){i.clearPins();return}v.escape&&l.filterText&&i.setFilter("")}}},{isActive:!l.interactiveMode}),h<fs||p<ps)return n.jsx(m,{alignItems:"center",height:p,justifyContent:"center",width:h,children:n.jsxs(c,{color:"yellow",children:["Terminal too small (",h,"x",p,"). Minimum:"," ",fs,"x",ps]})});const Oe=n.jsxs(m,{gap:1,children:[l.succeeded>0&&n.jsxs(c,{bold:!0,color:"green",children:["✓"," ",l.succeeded]}),l.cached>0&&n.jsxs(c,{dimColor:!0,children:["✓"," ",l.cached]}),l.failed>0&&n.jsxs(c,{bold:!0,color:"red",children:["✗"," ",l.failed]}),l.running>0&&n.jsxs(c,{color:"cyan",children:["◷"," ",l.running]}),n.jsxs(c,{dimColor:!0,children:[l.totalTasks," ","total"]}),l.statusFilter!=="all"&&n.jsxs(c,{color:"yellow",children:["[",l.statusFilter,"]"]})]});let we;if(l.viewMode==="fullscreen")we=[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"Esc"}),n.jsx(c,{dimColor:!0,children:"BACK"})]},"esc"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"↑↓"}),n.jsx(c,{dimColor:!0,children:"SCROLL"})]},"scroll"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"^u ^d"}),n.jsx(c,{dimColor:!0,children:"PAGE"})]},"page"),...X?.status==="running"?[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"i"}),n.jsx(c,{dimColor:!0,children:"INPUT"})]},"i")]:[],n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"q"}),n.jsx(c,{dimColor:!0,children:"QUIT"})]},"q")];else if(l.done){const T=ne[l.selectedIndex]?.status==="failure";we=[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"q"}),n.jsx(c,{dimColor:!0,children:"QUIT"})]},"q"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"r"}),n.jsx(c,{dimColor:!0,children:"RERUN"})]},"r"),...T?[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"R"}),n.jsx(c,{dimColor:!0,children:"RETRY"})]},"R")]:[],n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"?"}),n.jsx(c,{dimColor:!0,children:"HELP"})]},"?"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"↑↓"}),n.jsx(c,{dimColor:!0,children:"NAV"})]},"nav"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"F"}),n.jsx(c,{dimColor:!0,children:"FILTER"})]},"F"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"⏎"}),n.jsx(c,{dimColor:!0,children:l.viewMode==="list"?"OUTPUT":"FULLSCREEN"})]},"enter")]}else l.viewMode==="split"&&l.focusedPanel==="output"?we=[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"q"}),n.jsx(c,{dimColor:!0,children:"QUIT"})]},"q"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"Esc"}),n.jsx(c,{dimColor:!0,children:"BACK"})]},"esc"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"↑↓"}),n.jsx(c,{dimColor:!0,children:"SCROLL"})]},"scroll"),...X?.status==="running"?[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"i"}),n.jsx(c,{dimColor:!0,children:"INPUT"})]},"i")]:[],n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"⏎"}),n.jsx(c,{dimColor:!0,children:"FULLSCREEN"})]},"enter"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"Tab"}),n.jsx(c,{dimColor:!0,children:"PANEL"})]},"tab"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"?"}),n.jsx(c,{dimColor:!0,children:"HELP"})]},"?")]:we=[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"q"}),n.jsx(c,{dimColor:!0,children:"QUIT"})]},"q"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"?"}),n.jsx(c,{dimColor:!0,children:"HELP"})]},"?"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"↑↓"}),n.jsx(c,{dimColor:!0,children:"NAV"})]},"nav"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"/"}),n.jsx(c,{dimColor:!0,children:"FILTER"})]},"/"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"F"}),n.jsx(c,{dimColor:!0,children:"STATUS"})]},"F"),n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"⏎"}),n.jsx(c,{dimColor:!0,children:l.viewMode==="list"?"OUTPUT":"FULLSCREEN"})]},"enter"),...l.viewMode==="split"?[n.jsxs(m,{gap:1,children:[n.jsx(c,{bold:!0,color:"white",children:"Tab"}),n.jsx(c,{dimColor:!0,children:"PANEL"})]},"tab")]:[]];const de=n.jsxs(m,{borderBottom:!1,borderColor:"gray",borderLeft:!1,borderRight:!1,borderStyle:"single",flexShrink:0,justifyContent:"space-between",children:[n.jsx(m,{flexGrow:1,flexWrap:"wrap",gap:2,paddingX:1,children:we}),n.jsx(m,{flexShrink:0,paddingX:1,children:Oe})]}),ye=n.jsxs(Sr,{backgroundColor:"#1e1e1e",footer:n.jsxs(c,{dimColor:!0,children:[n.jsx(c,{bold:!0,color:"white",children:"↑↓"})," ","scroll"," ",n.jsx(c,{bold:!0,color:"white",children:"?"}),"/",n.jsx(c,{bold:!0,color:"white",children:"Esc"})," ","close"]}),scrollRef:A,title:"KEYBOARD SHORTCUTS",visible:O,width:52,children:[n.jsxs(m,{flexDirection:"column",marginBottom:1,children:[n.jsxs(m,{marginBottom:1,children:[n.jsx(c,{dimColor:!0,children:"── "}),n.jsx(c,{bold:!0,color:"white",children:"NAVIGATION"})]}),n.jsxs(m,{children:[n.jsx(m,{width:24,children:n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","↑","/k"]}),n.jsx(c,{dimColor:!0,children:" Move up"})]})}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","↓","/j"]}),n.jsx(c,{dimColor:!0,children:" Move down"})]})]}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","Tab"]}),n.jsx(c,{dimColor:!0,children:" Switch panel (split)"})]}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","Esc"]}),n.jsx(c,{dimColor:!0,children:" Back / close"})]}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","Enter"]}),n.jsx(c,{dimColor:!0,children:" Show output / fullscreen"})]})]}),n.jsxs(m,{flexDirection:"column",marginBottom:1,children:[n.jsxs(m,{marginBottom:1,children:[n.jsx(c,{dimColor:!0,children:"── "}),n.jsx(c,{bold:!0,color:"white",children:"VIEWS"})]}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","Enter"]}),n.jsxs(c,{dimColor:!0,children:[" ","List"," ","→"," ","Split"," ","→"," ","Fullscreen"]})]}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","Esc"]}),n.jsxs(c,{dimColor:!0,children:[" ","Fullscreen"," ","→"," ","Split"," ","→"," ","List"]})]})]}),n.jsxs(m,{flexDirection:"column",marginBottom:1,children:[n.jsxs(m,{marginBottom:1,children:[n.jsx(c,{dimColor:!0,children:"── "}),n.jsx(c,{bold:!0,color:"white",children:"ACTIONS"})]}),n.jsxs(m,{children:[n.jsx(m,{width:24,children:n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","/"]}),n.jsx(c,{dimColor:!0,children:" Filter by text"})]})}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","F"]}),n.jsx(c,{dimColor:!0,children:" Filter by status"})]})]}),n.jsxs(m,{children:[n.jsx(m,{width:24,children:n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","1"]}),n.jsx(c,{dimColor:!0,children:"/"}),n.jsx(c,{bold:!0,color:"white",children:"2"}),n.jsx(c,{dimColor:!0,children:" Pin to output pane"})]})}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","0"]}),n.jsx(c,{dimColor:!0,children:" Clear pins"})]})]}),n.jsxs(m,{children:[n.jsx(m,{width:24,children:n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","r"]}),n.jsx(c,{dimColor:!0,children:" Rerun all (done)"})]})}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","R"]}),n.jsx(c,{dimColor:!0,children:" Retry failed task"})]})]}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","i"]}),n.jsx(c,{dimColor:!0,children:" Interactive input (running task)"})]})]}),n.jsxs(m,{flexDirection:"column",marginBottom:1,children:[n.jsxs(m,{marginBottom:1,children:[n.jsx(c,{dimColor:!0,children:"── "}),n.jsx(c,{bold:!0,color:"white",children:"SCROLLING"}),n.jsx(c,{dimColor:!0,children:" (output panel)"})]}),n.jsxs(m,{children:[n.jsx(m,{width:24,children:n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","↑","/k"]}),n.jsx(c,{dimColor:!0,children:" Scroll up"})]})}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","↓","/j"]}),n.jsx(c,{dimColor:!0,children:" Scroll down"})]})]}),n.jsxs(m,{children:[n.jsx(m,{width:24,children:n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","^u"]}),n.jsx(c,{dimColor:!0,children:" Page up"})]})}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","^d"]}),n.jsx(c,{dimColor:!0,children:" Page down"})]})]}),n.jsxs(m,{children:[n.jsx(m,{width:24,children:n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","Home"]}),n.jsx(c,{dimColor:!0,children:" Top"})]})}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","End"]}),n.jsx(c,{dimColor:!0,children:" Bottom (resume follow)"})]})]}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","f"]}),n.jsx(c,{dimColor:!0,children:" Toggle auto-scroll (tail mode)"})]})]}),n.jsxs(m,{flexDirection:"column",children:[n.jsxs(m,{marginBottom:1,children:[n.jsx(c,{dimColor:!0,children:"── "}),n.jsx(c,{bold:!0,color:"white",children:"GENERAL"})]}),n.jsxs(m,{children:[n.jsx(m,{width:24,children:n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","q"]}),n.jsx(c,{dimColor:!0,children:" Quit"})]})}),n.jsxs(c,{children:[n.jsxs(c,{bold:!0,color:"white",children:[" ","?"]}),n.jsx(c,{dimColor:!0,children:" Toggle help"})]})]})]})]}),ve=n.jsx(Tr,{autoExitSeconds:s>0?s:3,onCancel:()=>{te(!1)},visible:H}),Se=G&&o?n.jsx(On,{activeIndex:V,focused:l.focusedPanel==="dock",store:o}):null;if(l.viewMode==="fullscreen")return n.jsxs(m,{flexDirection:"column",height:p,width:h,children:[n.jsx(m,{flexGrow:1,children:n.jsx(ls,{autoScroll:fe,duration:X?.duration??X?.elapsed,focused:!0,interactiveMode:l.interactiveMode,output:E,scrollRef:M,status:Ie,supportsInteractive:!I,taskId:ge})}),Se,de,ve,ye]});if(l.viewMode==="split"){const T=h>=gs,v=n.jsx(hs,{compact:!0,filterActive:l.filterActive,filterText:l.filterText,focused:l.focusedPanel==="tasks",headerStatus:Fe,parallelSlots:t,pinnedTaskIds:l.pinnedTaskIds,rows:ne,scrollRef:b,selectedIndex:l.selectedIndex,title:Le}),C=n.jsx(ls,{autoScroll:fe,duration:X?.duration??X?.elapsed,focused:l.focusedPanel==="output",interactiveMode:l.interactiveMode,output:E,scrollRef:M,showFullscreenHint:!0,status:Ie,supportsInteractive:!I,taskId:ge});if(T){const Te=Math.floor(h*.4);return n.jsxs(m,{flexDirection:"column",height:p,width:h,children:[n.jsxs(m,{flexDirection:"row",flexGrow:1,children:[n.jsx(m,{width:Te,children:v}),n.jsx(m,{flexGrow:1,children:C})]}),Se,de,ve,ye]})}const ee=Math.floor(p*.45);return n.jsxs(m,{flexDirection:"column",height:p,width:h,children:[n.jsx(m,{height:ee,children:v}),n.jsx(m,{flexGrow:1,children:C}),Se,de,ve,ye]})}return n.jsxs(m,{flexDirection:"column",height:p,width:h,children:[n.jsx(m,{flexGrow:1,children:n.jsx(hs,{filterActive:l.filterActive,filterText:l.filterText,focused:l.focusedPanel!=="dock",headerStatus:Fe,parallelSlots:t,pinnedTaskIds:l.pinnedTaskIds,rows:ne,scrollRef:b,selectedIndex:l.selectedIndex,title:Le})}),Se,de,ve,ye]})},Ln=s=>{const{args:e,autoExit:t=!1,onRetryService:r,outputStyle:o="normal",projectNames:a,serviceDockStore:i,stdinRegistry:d,tasks:u,totalTaskCount:f}=s,h=new rt(u,f),p=typeof e.parallel=="number"?e.parallel:3,l=t===!0?3:typeof t=="number"?t:0;let $,R;const G=new Promise(b=>{R=b});let V;const j=()=>{V&&(clearInterval(V),V=void 0)},I=()=>{if(process.stdin.isTTY&&typeof process.stdin.setRawMode=="function")try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),process.stdin.unref()},S=()=>{if(d){for(const b of d.values())b.kill?.();d.clear()}},x=()=>{j(),A(),S(),I(),process.stdout.write("\x1B[?1049l\x1B[?25h"),$?.cleanup(),process.exit(1)},O=()=>{const b=h.getSnapshot(),M=De(Date.now()-b.startTime),H=b.rows.filter(W=>W.status==="failure").map(W=>W.taskId),te=process.stdout.columns||80;process.stdout.write(`
|
|
20
|
+
`);for(const W of b.rows){const{persistent:Y,status:ce,taskId:re}=W,ae=ce==="running"||ce==="pending",ne=_e(ce),U=ae&&Y?"■":ne.icon,_=ae&&Y?"gray":ne.color;let X="";switch(ce){case"local-cache":case"local-cache-kept-existing":{X=" [local cache]";break}case"remote-cache":{X=" [remote cache]";break}case"skipped":{X=" [skipped]";break}default:{ae&&Y?X=" [stopped]":ae&&(X=" [skipped]");break}}const pe=W.retryAttempts&&W.retryAttempts>0?` [retried ${W.retryAttempts}x]`:"",je=he(K.createElement(c,null," ",K.createElement(c,{color:_},U),` vis run ${re}`,X?K.createElement(c,{dimColor:!0},` ${X}`):null,pe?K.createElement(c,{color:"yellow"},pe):null),{columns:te});process.stdout.write(`${je}
|
|
21
21
|
`)}process.stdout.write(`
|
|
22
|
-
`)
|
|
23
|
-
|
|
24
|
-
`);
|
|
25
|
-
|
|
26
|
-
`);
|
|
27
|
-
`)
|
|
28
|
-
`);
|
|
29
|
-
|
|
30
|
-
`)}
|
|
31
|
-
`)},
|
|
32
|
-
`)
|
|
33
|
-
|
|
34
|
-
`)
|
|
35
|
-
`)
|
|
36
|
-
`)
|
|
37
|
-
`)}
|
|
38
|
-
`)}}
|
|
22
|
+
`);const fe=he(K.createElement(Ls,{cached:b.cached,failed:b.failed,failedIds:H,projectNames:a,retriedIds:b.retriedIds.length>0?b.retriedIds:void 0,succeeded:b.succeeded,targets:e.targets,tasks:u,took:M}),{columns:te});if(process.stdout.write(`${fe}
|
|
23
|
+
`),o!=="quiet"){const W=[...b.rows.filter(Y=>Y.status!=="failure"),...b.rows.filter(Y=>Y.status==="failure")];for(const Y of W){if(Y.status==="running"||Y.status==="pending")continue;const ce=b.outputs.get(Y.taskId);if(!ce?.trim())continue;const{color:re,icon:ae}=_e(Y.status),ne=he(K.createElement(c,null,`
|
|
24
|
+
`,K.createElement(c,{bold:!0,color:re},` ${ae} vis run ${Y.taskId}`)),{columns:te});process.stdout.write(`${ne}
|
|
25
|
+
|
|
26
|
+
`);const U=ce.trim().split(`
|
|
27
|
+
`).map(_=>` ${_}`).join(`
|
|
28
|
+
`);process.stdout.write(`${U}
|
|
29
|
+
`)}}};let w;const A=()=>{w&&(clearInterval(w),w=void 0)};return{lifeCycle:{endCommand(){j(),h.markDone(),w||(w=setInterval(()=>{},1e3))},endTasks(b){h.endTasks(b)},printCacheDisabledByTask(b){h.addOutput(b.id,`ⓘ caching disabled by task via disableCache()
|
|
30
|
+
`)},printEmptyFingerprintWarning(b,M){h.addOutput(b.id,`ⓘ caching skipped — ${M}
|
|
31
|
+
`)},printSelfModifyingSkip(b,M){h.addOutput(b.id,`ⓘ caching skipped — task modified its own input${M.length===1?"":"s"} (${M.join(", ")})
|
|
32
|
+
`)},printTaskTerminalOutput(b,M,H){h.getSnapshot().outputs.has(b.id)||h.addOutput(b.id,H)},startCommand(){process.on("SIGINT",x),process.on("SIGTERM",x),w||(w=setInterval(()=>{},1e3)),$=Pr(K.createElement(Dn,{autoExitSeconds:l,onRetryService:r,parallelSlots:p,projectNames:a,serviceDockStore:i,stdinRegistry:d??new Map,store:h,targets:e.targets,tasks:u}),{alternateScreen:!0,exitOnCtrlC:!1,interactive:!0,patchConsole:!0}),$.waitUntilExit().then(()=>{A(),S(),I(),process.removeListener("SIGINT",x),process.removeListener("SIGTERM",x),O(),R()}).catch(()=>{A(),S(),I(),process.removeListener("SIGINT",x),process.removeListener("SIGTERM",x),R()})},startTasks(b){h.startTasks(b),V||(V=setInterval(()=>{h.tick()},100))}},renderIsDone:G,store:h}},Bn=s=>s==="quiet"?"quiet":"normal",Nn=(s,e)=>typeof s=="string"?Bn(s.toLowerCase()):e===!0?"quiet":"normal",Gn=(s,e)=>{const t=s.overrides.visOptions;return t?.outputStyle==="normal"||t?.outputStyle==="quiet"?t.outputStyle:e};class _n{#e;#r;#s;#i=[];#t=[];#n=[];#o=new Map;#a;#c;#l;#u=0;constructor(e){this.#e=e.projectNames,this.#r=e.args.targets,this.#s=e.tasks,this.#a=e.logReporter,this.#c=e.outputStyle??"normal",this.#l=e.ciGrouping??"auto"}startCommand(){this.#u=Date.now();const e=process.stdout.columns||80,t=`Running ${xt(this.#e,this.#r,this.#s)}`,r=he(K.createElement(pt,{title:t,variant:"info"}),{columns:e});process.stdout.write(r);const o=this.#s[0],a=o?.overrides?Object.entries(o.overrides).filter(([i])=>i!=="command"):[];if(a.length>0){process.stdout.write(`
|
|
33
|
+
With additional flags:
|
|
34
|
+
`);for(const[i,d]of a)process.stdout.write(`${hn(" ",i,d)}
|
|
35
|
+
`)}process.stdout.write(`
|
|
36
|
+
`)}startTasks(e){const t=process.stdout.columns||80;for(const r of e){const o=he(K.createElement(c,null,K.createElement(c,{dimColor:!0},">"),` ${r.id}`),{columns:t});process.stdout.write(`${o}
|
|
37
|
+
`)}}endTasks(e){const t=process.stdout.columns||80;for(const r of e){this.#o.set(r.task.id,r),r.status==="failure"?this.#i.push(r):Ne(r.status)&&this.#t.push(r),r.retryAttempts&&r.retryAttempts>0&&this.#n.push(r);const o=ze(r.status),a=r.startTime&&r.endTime?` (${De(r.endTime-r.startTime)})`:"",i=Ne(r.status)?" [cache]":"",d=r.retryAttempts&&r.retryAttempts>0?` [retried ${r.retryAttempts}x]`:"",u=he(K.createElement(c,null,o,` ${r.task.id}`,i?K.createElement(c,{color:"cyan"},i):null,d?K.createElement(c,{color:"yellow"},d):null,a?K.createElement(c,{dimColor:!0},a):null),{columns:t});process.stdout.write(`${u}
|
|
38
|
+
`)}}#d(e){const t=process.stdout.columns||80,r=he(K.createElement(c,{dimColor:!0},` ⓘ ${e}`),{columns:t});process.stdout.write(`${r}
|
|
39
|
+
`)}printCacheDisabledByTask(e){this.#d(`${e.id}: caching disabled by task via disableCache()`)}printSelfModifyingSkip(e,t){this.#d(`${e.id}: caching skipped — task modified its own input${t.length===1?"":"s"} (${t.join(", ")})`)}printEmptyFingerprintWarning(e,t){this.#d(`${e.id}: caching skipped — ${t}`)}printTaskTerminalOutput(e,t,r){if(Gn(e,this.#c)==="quiet"&&(t==="success"||Ne(t)))return;const o=t==="failure"?Ns(r,{color:!process.env.NO_COLOR,cwd:process.cwd()}):r;if(this.#a){this.#a.printTaskTerminalOutput(e,t,o);return}Sn(e.id,t,o,this.#l)}endCommand(){const e=De(Date.now()-this.#u),t=this.#s.filter(a=>!this.#o.has(a.id)).map(a=>a.id);process.stdout.write(`
|
|
40
|
+
`);const r=process.stdout.columns||80,o=he(K.createElement(Ls,{cached:this.#t.length,failed:this.#i.length,failedIds:this.#i.map(a=>a.task.id),projectNames:this.#e,retriedIds:this.#n.length>0?this.#n.map(a=>a.task.id):void 0,skippedIds:t.length>0?t:void 0,succeeded:this.#o.size-this.#i.length-this.#t.length,targets:this.#r,tasks:this.#s,took:e}),{columns:r});process.stdout.write(`${o}
|
|
41
|
+
`)}}const qn=async s=>{if(process.env.VIS_NO_SHELL_HISTORY)return;if(Ii()==="win32"){try{await Vn(s)}catch{}return}const e=process.env.SHELL;if(!e)return;const t=nr(e);try{if(t==="zsh"){await Wn(s);return}if(t==="bash"){await Un(s);return}t==="fish"&&await Hn(s)}catch{}},jt=s=>s.replaceAll(/[\u0000-\u001F\u007F]/gu," ").trimEnd(),Wn=async s=>{const e=process.env.HISTFILE??oe(process.env.ZDOTDIR??vt(),".zsh_history"),t=`: ${Math.floor(Date.now()/1e3)}:0;${jt(s)}
|
|
42
|
+
`;await at(e,t)},Un=async s=>{const e=process.env.HISTFILE??oe(vt(),".bash_history");await at(e,`${jt(s)}
|
|
43
|
+
`)},Vn=async s=>{const e=process.env.VIS_PSREADLINE_HISTORY,t=process.env.APPDATA;if(e===void 0&&(t===void 0||t===""))return;const r=e??oe(t,"Microsoft","Windows","PowerShell","PSReadLine","ConsoleHost_history.txt");await Ci(js(r),{recursive:!0}),await at(r,`${jt(s)}\r
|
|
44
|
+
`)},Hn=async s=>{const e=oe(vt(),".local","share","fish","fish_history"),t=`- cmd: ${s.replaceAll("\\","\\\\").replaceAll(`
|
|
45
|
+
`,String.raw`\n`).replaceAll("\r",String.raw`\r`)}
|
|
46
|
+
when: ${Math.floor(Date.now()/1e3)}
|
|
47
|
+
`;await at(e,t)},zn=s=>{const{killGracePeriodMs:e=5e3,onTimeout:t,sendSignal:r,timeoutMs:o}=s;if(o<=0)return{cancel:()=>{}};const a=Math.max(e,0);let i;const d=setTimeout(()=>{t?.(),r("SIGTERM"),a>0&&(i=setTimeout(()=>{r("SIGKILL")},a))},o);return{cancel:()=>{clearTimeout(d),i&&clearTimeout(i)}}},Yn=(s,e)=>{const t=e?.trim();if(!t)return{filter:void 0,tasks:[...s]};const r=t.toLowerCase();return{filter:t,tasks:s.filter(o=>o.target.project.toLowerCase().includes(r))}},Jn=[""," Watch keybinds:"," r, Enter rerun"," a rerun all (clear filter)"," p filter by project name"," q, Ctrl+C quit"," h, ? show this help",""].join(`
|
|
48
|
+
`),Kn=s=>{s.write(`${Jn}
|
|
49
|
+
`)},Xn=async(s,e)=>{e.write("filter projects (empty to cancel) > ");const t=s,r=t.isRaw===!0;if(r)try{t.setRawMode?.(!1)}catch{}return await new Promise(o=>{let a="";const i=d=>{a+=typeof d=="string"?d:d.toString("utf8");const u=a.indexOf(`
|
|
50
|
+
`);if(u===-1)return;const f=a.slice(0,u).replace(/\r$/,"").trim();if(s.off("data",i),r)try{t.setRawMode?.(!0)}catch{}o(f.length>0?f:void 0)};s.on("data",i)})},Qn=s=>{const{handlers:e}=s,t=s.input??process.stdin,r=s.output??process.stdout,o=s.promptFilter??Xn;if(!t||t.isTTY===!1)return{close:()=>{}};Vr(t);const a=t.isRaw===!0;try{t.setRawMode?.(!0)}catch{return{close:()=>{}}}typeof t.resume=="function"&&t.resume();let i=!1;const d=async h=>{if(h.ctrl===!0&&h.name==="c"){await e.onQuit();return}if(!i)switch(h.name){case"?":case"h":{await e.onHelp();break}case"a":{await e.onClearFilter();break}case"p":{i=!0;try{const p=await o(t,r);p===void 0?r.write(`filter cancelled.
|
|
51
|
+
`):await e.onFilter(p)}finally{i=!1}break}case"q":{await e.onQuit();break}case"r":{await e.onRerun();break}case"return":{await e.onRerun();break}}},u=(h,p)=>{d(p).catch(l=>{r.write(`[vis watch] keybind handler failed: ${l.message}
|
|
52
|
+
`)})},f=t;return f.on("keypress",u),{close:()=>{if(f.off("keypress",u),!a)try{t.setRawMode?.(!1)}catch{}const h=t;if(typeof h.pause=="function")try{h.pause()}catch{}}}},Zn=s=>{const e=s.overrides.visOptions;return e&&typeof e=="object"?e:void 0},eo=async s=>{const{initialTasks:e,probe:t,registeredEntries:r,taskGraph:o,visVersion:a}=s,i=new Map,d=new Map,u=new Map;for(const w of r)if(Jr(w.pid)){if(w.visVersion!==a){d.set(w.id,w);continue}i.set(w.id,w)}if(t){const w=[...i.values()],A=await Promise.all(w.map(async b=>{try{return[b.id,await t(b)]}catch{return[b.id,!1]}}));for(const[b,M]of A)if(!M){const H=i.get(b);i.delete(b),H&&u.set(b,H)}}const f=new Set(e.map(w=>w.id)),h=new Set,p=[],l=[],$=new Set;for(const w of Object.values(o.dependencies))for(const A of w)$.add(A);for(const[w,A]of Object.entries(o.tasks)){if(!Zn(A)?.service)continue;if(i.has(w)){h.add(w),l.push(i.get(w));continue}if(f.has(w)||!$.has(w))continue;const b=d.get(w),M=u.get(w);let H;b?H=`Service ${w} is registered with vis ${b.visVersion}, but this invocation is vis ${a}. Restart with \`vis service restart ${w}\` to pick up the new version.`:M?H=`Service ${w} is registered (PID ${String(M.pid)}) but failed its readiness probe — the wrapper process is alive but the underlying server is not responding. Run \`vis service restart ${w}\` to recover.`:H=`Target depends on the service ${w}, which is not running. Run \`vis service start ${w}\` first, or invoke \`${w}\` directly.`,p.push({message:H,targetId:w})}if(h.size===0)return{diagnostics:p,initialTasks:e,satisfiedServices:l,serviceDependentsByServiceId:new Map,serviceEnvByTaskId:new Map,taskGraph:o};const R=new Map,G=w=>{const A=new Set,b=[...o.dependencies[w]??[]],M=new Set;for(;b.length>0;){const H=b.pop();if(!M.has(H)){M.add(H),h.has(H)&&A.add(H);for(const te of o.dependencies[H]??[])M.has(te)||b.push(te)}}return[...A].sort()},V=new Map;for(const w of Object.keys(o.dependencies)){if(h.has(w))continue;const A=G(w);if(A.length===0)continue;const b={};for(const M of A){const H=i.get(M);if(!H)continue;Object.assign(b,H.env);const te=V.get(M);te?te.push(w):V.set(M,[w])}Object.keys(b).length>0&&R.set(w,b)}for(const w of V.values())w.sort();const j={};for(const[w,A]of Object.entries(o.tasks))h.has(w)||(j[w]=A);const I={};for(const[w,A]of Object.entries(o.dependencies))h.has(w)||(I[w]=A.filter(b=>!h.has(b)));const S=new Map;for(const w of Object.keys(j))S.set(w,0);for(const w of Object.values(I))for(const A of w)S.has(A)&&S.set(A,(S.get(A)??0)+1);const x=[];for(const w of o.roots)!h.has(w)&&j[w]&&x.push(w);for(const[w,A]of S)A===0&&!x.includes(w)&&j[w]&&x.push(w);const O=e.filter(w=>!h.has(w.id));return{diagnostics:p,initialTasks:O,satisfiedServices:l,serviceDependentsByServiceId:V,serviceEnvByTaskId:R,taskGraph:{dependencies:I,roots:x,tasks:j}}},to=s=>s.startsWith("./")||s.startsWith("../")||s.startsWith("/")||s.startsWith("**"),so=s=>{let e=s.trim();if(e==="")return;let t=!1,r=!1,o=!1;e.startsWith("...")&&(t=!0,e=e.slice(3),e.startsWith("^")&&(o=!0,e=e.slice(1))),e.endsWith("...")&&(r=!0,e=e.slice(0,-3),e.endsWith("^")&&(o=!0,e=e.slice(0,-1)));let a;const i=/\[([^\]]*)\]$/.exec(e);i&&(a=i[1]??"",e=e.slice(0,i.index));let d=e.trim(),u=!1;return d.startsWith("{")&&d.endsWith("}")&&d.length>=2?(d=d.slice(1,-1),u=!0):to(d)&&(u=!0),{changedSince:a,excludeSelf:o,includeDependencies:r,includeDependents:t,isPath:u,pattern:d}},gt=s=>{let e=s.replaceAll("\\","/");return e.startsWith("./")&&(e=e.slice(2)),e.length>1&&e.endsWith("/")&&(e=e.slice(0,-1)),e},ro=(s,e,t)=>s===""?!1:ft(s,e)?!0:t!==void 0&&ft(s,t),io=(s,e)=>{if(e===void 0||e==="")return!1;const t=gt(s),r=gt(e);return ft(t,r)},no=(s,e,t)=>{const{affected:r,downstream:o,upstream:a}=lr(s,t,{downstream:e.includeDependents?"deep":"none",upstream:e.includeDependencies?"deep":"none"});if(!e.excludeSelf)return r;const i=new Set([...o,...a]);for(const d of s)i.delete(d);return i},oo=async(s,e)=>{const{packageNameByProject:t,projectGraph:r}=e,o=Object.keys(r.nodes);let a=new Set;if(s.pattern!=="")for(const i of o)s.isPath?io(s.pattern,r.nodes[i]?.data.root)&&a.add(i):ro(s.pattern,i,t?.get(i))&&a.add(i);if(s.changedSince!==void 0){const i=s.changedSince===""?e.defaultBase??"main":s.changedSince,d=e.changedProjectsForRef??ao(e),u=new Set(await d(i));a=s.pattern===""?u:new Set([...a].filter(f=>u.has(f)))}return!s.includeDependents&&!s.includeDependencies?a:no(a,s,r)},ao=s=>async e=>{const{projectGraph:t,workspaceRoot:r}=s;if(!r)return[];let o;try{o=await dr(r,e,"HEAD")}catch(i){const d=i instanceof Error?i.message:String(i);throw new Error(`vis run --filter: invalid changed-since ref "${e}" (${d})`,{cause:i})}const a=new Set;for(const[i,d]of Object.entries(t.nodes)){const u=gt(d.data.root??i);if(!(u===""||u==="."))for(const f of o){const h=or(r,f).replaceAll("\\","/");if(h===u||h.startsWith(`${u}/`)){a.add(i);break}}}return[...a]},co=async(s,e)=>{const t=new Set;for(const r of s)for(const o of await oo(r,e))t.add(o);return[...t]},lo=async(s,e)=>{const t=[];for(const r of s){const o=so(r);o&&t.push(o)}return co(t,e)},Xe="[[VIS_BOOT]]",uo=250,ho=1e3,ms=3,fo=s=>{try{return process.kill(s,0),!0}catch{return!1}},ws=s=>{try{const e=Ge(s,"utf8").trim(),t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:null}catch{return null}};class po{#e;#r;#s;#i;#t=new Map;#n=new Map;#o=new Map;#a=new Map;#c=new Set;constructor(e){this.#e=e.indexToId,this.#r=new Map(e.services),this.#s=e.sink,this.#i=e.workspaceRoot}onProcessEvent=e=>{if(e.kind!=="stdout"&&e.kind!=="stderr")return;const t=this.#e.get(e.index);t===void 0||e.text===void 0||this.onTaskOutput(t,e.text)};onTaskOutput(e,t){if(!this.#r.has(e))return;const r=((this.#t.get(e)??"")+t).split(`
|
|
53
|
+
`),o=r.pop()??"";this.#t.set(e,o);for(const a of r)this.#l(e,a)}notifyRegistryStarting(e){this.#s.starting(e)}notifyRegistryStarted(e,t){this.#s.started(e,t)}onRegistryTaskStarted(e){this.#r.get(e)?.mode==="registry"&&this.notifyRegistryStarting(e)}async onRegistryTaskClosed(e,t,r){if(this.#r.get(e)?.mode!=="registry")return;if(r||t!==0){this.notifyRegistryFailed(e,"exit-code",{exitCode:t,killed:r});return}const o=await Kr(this.#i,e);if(!o){this.notifyRegistryFailed(e,"missing-registry-entry");return}const{config:a}=o,i=a.readiness?.tcp?.port??a.port??0,d=a.readiness?.tcp?.host??"127.0.0.1";this.notifyRegistryReady(e,{host:d,logFile:o.logFile,pid:o.pid,port:i})}notifyRegistryReady(e,t){this.#s.ready(e,{host:t.host,port:t.port}),this.#f(e,t.logFile),t.pid!==null&&this.#p(e,t.pid)}notifyRegistryFailed(e,t,r){this.#s.failed(e,t,r)}async retry(e){const t=this.#r.get(e);if(t){if(this.#h(e),this.#t.delete(e),this.#n.delete(e),this.#s.starting(e),t.mode==="registry"){await this.#v(e,t.registry);return}t.mode==="ephemeral"&&this.#y(e,t.ephemeral)}}async dispose(){for(const e of[...this.#o.keys(),...this.#a.keys()])this.#h(e);this.#c.size>0&&(await Promise.race([Promise.all(this.#c),new Promise(e=>{setTimeout(e,2e3)})]),this.#c.clear()),this.#t.clear(),this.#n.clear()}#l(e,t){if(t.startsWith(Xe)){this.#u(e,t.slice(Xe.length));return}const r=this.#n.get(e)??[];r.push(t),r.length>ms&&r.shift(),this.#n.set(e,r),this.#s.log(e,`${t}
|
|
54
|
+
`)}#u(e,t){let r;try{r=JSON.parse(t)}catch{this.#s.log(e,`${Xe+t}
|
|
55
|
+
`);return}switch(r.event){case"failed":{const o=typeof r.reason=="string"?r.reason:"unknown",a={};for(const[i,d]of Object.entries(r))i!=="event"&&i!=="id"&&i!=="reason"&&(a[i]=d);this.#s.failed(e,o,a);break}case"ready":{const o=typeof r.host=="string"?r.host:"127.0.0.1",a=typeof r.port=="number"?r.port:0;this.#s.ready(e,{host:o,port:a}),this.#d(e);break}case"started":{const o=typeof r.pid=="number"?r.pid:null;this.#s.started(e,o);break}default:this.#s.log(e,`${Xe+t}
|
|
56
|
+
`)}}#d(e){const t=this.#r.get(e);if(t?.ephemeral===void 0)return;this.#f(e,t.ephemeral.logFile);const r=ws(t.ephemeral.pidFile);r!==null&&this.#p(e,r)}#f(e,t){if(this.#o.has(e)||!Ae(t))return;const r=_r(t,"r"),o=(()=>{try{return Xt(t).size}catch{return 0}})(),a={fd:r,logFile:t,pollTimer:setInterval(()=>{this.#m(e)},uo),position:o};this.#o.set(e,a)}#m(e){const t=this.#o.get(e);if(t)try{const r=Xt(t.logFile);if(r.size<=t.position)return;const o=Buffer.alloc(r.size-t.position),a=qr(t.fd,o,0,o.length,t.position);if(a>0){t.position+=a;const i=o.subarray(0,a).toString("utf8");for(const d of i.split(`
|
|
57
|
+
`))d.length!==0&&this.#w(e,d);this.#s.log(e,i)}}catch{}}#w(e,t){const r=this.#n.get(e)??[];for(r.push(t);r.length>ms;)r.shift();this.#n.set(e,r)}#p(e,t){if(this.#a.has(e))return;const r={pid:t,timer:setInterval(()=>{if(!fo(t)){const o=[...this.#n.get(e)??[]];this.#h(e),this.#s.crashed(e,o)}},ho)};this.#a.set(e,r)}#h(e){const t=this.#o.get(e);if(t){clearInterval(t.pollTimer);try{Wr(t.fd)}catch{}this.#o.delete(e)}const r=this.#a.get(e);r&&(clearInterval(r.timer),this.#a.delete(e))}#y(e,t){if(t===void 0)return;const r=ws(t.pidFile);if(r!==null)try{process.kill(-r,"SIGTERM")}catch{}const o=pi("node",[t.scriptPath,t.configFile],{cwd:t.cwd,stdio:["ignore","pipe","pipe"]});o.stdout.on("data",i=>{this.#g(e,i)}),o.stderr.on("data",i=>{this.#g(e,i)}),o.on("error",i=>{this.#s.failed(e,"respawn-error",{message:i.message})});const a=new Promise(i=>{const d=()=>{this.#c.delete(a),i()};o.once("exit",d),o.once("error",d)});this.#c.add(a)}#g(e,t){const r=((this.#t.get(e)??"")+t.toString("utf8")).split(`
|
|
58
|
+
`),o=r.pop()??"";this.#t.set(e,o);for(const a of r)this.#l(e,a)}async#v(e,t){if(t!==void 0){try{await Xr({id:e,workspaceRoot:this.#i})}catch{}try{const r=await Qr({command:t.command,config:t.config,cwd:t.cwd,env:t.env,id:e,workspaceRoot:this.#i}),o=t.config.readiness?.tcp?.port??t.config.port??0,a=t.config.readiness?.tcp?.host??"127.0.0.1";this.#s.started(e,r.entry.pid),this.notifyRegistryReady(e,{host:a,logFile:r.entry.logFile,pid:r.entry.pid,port:o})}catch(r){const o=r instanceof Error?r.message:String(r);this.#s.failed(e,"retry-failed",{message:o})}}}}const go=s=>{const e=s.overrides.visOptions;return e&&typeof e=="object"?e:void 0},Us=(s,e,t)=>{const r=[],o=[];for(const a of e){const i=t.tasks[a];if(!i){o.push({id:a,reason:"task not in graph"});continue}const d=i.overrides.command;if(!d){o.push({id:a,reason:"no command resolved"});continue}const u=go(i);if(!u?.service){o.push({id:a,reason:"no service config"});continue}const f=nt(s,i.projectRoot,!!u.runFromWorkspaceRoot),{envFile:h}=u,p=h===void 0||h===!1?{}:yt(f,h),l=u.service.env??{};r.push({command:d,config:u.service,cwd:f,env:{...p,...l},id:a})}return{services:r,skipped:o}},mo=(s,e)=>{const t=new Set(s),r=new Map;for(const i of s){const d=(e.dependencies[i]??[]).filter(u=>t.has(u));r.set(i,new Set(d))}const o=[],a=new Set;for(;r.size>0;){const i=[];for(const[d,u]of r){for(const f of u)a.has(f)&&u.delete(f);u.size===0&&i.push(d)}i.length===0&&i.push(...r.keys());for(const d of i)a.add(d),r.delete(d);i.sort(),o.push({ids:i})}return o},wo=(s,e)=>{const t=[];for(const r of mo(s,e))t.push(...r.ids);return t},yo=String.raw`import { spawn } from "node:child_process";
|
|
59
|
+
import { closeSync, openSync, readFileSync, readSync, statSync, writeFileSync } from "node:fs";
|
|
60
|
+
import { createConnection } from "node:net";
|
|
61
|
+
|
|
62
|
+
const cfgPath = process.argv[2];
|
|
63
|
+
|
|
64
|
+
if (!cfgPath) {
|
|
65
|
+
console.error("[vis-service-bootstrap] missing config path");
|
|
66
|
+
process.exit(2);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const cfg = JSON.parse(readFileSync(cfgPath, "utf8"));
|
|
70
|
+
|
|
71
|
+
// Structured marker for service-event-bridge.ts to consume. Plain
|
|
72
|
+
// process.stdout.write keeps the line atomic and on the same stream
|
|
73
|
+
// as the tailed child log, so the parser sees one stream.
|
|
74
|
+
const emit = (event) => {
|
|
75
|
+
process.stdout.write("[[VIS_BOOT]]" + JSON.stringify({ ...event, id: cfg.id }) + "\n");
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// Spawn the child with its stdio bound to a real file descriptor on
|
|
79
|
+
// disk — NOT inherited from the bootstrap. If the child inherited
|
|
80
|
+
// our stdio, it would inherit vis run's task pipes, and vis run would
|
|
81
|
+
// block waiting for those pipes to close even after this bootstrap
|
|
82
|
+
// exits. The logfile gives the grandchild a stable target it can keep
|
|
83
|
+
// writing to long after this bootstrap is gone.
|
|
84
|
+
const childLogFd = openSync(cfg.logFile, "a");
|
|
85
|
+
|
|
86
|
+
const child = spawn(cfg.command, {
|
|
87
|
+
cwd: cfg.cwd,
|
|
88
|
+
detached: true,
|
|
89
|
+
env: { ...process.env, ...cfg.env },
|
|
90
|
+
shell: true,
|
|
91
|
+
stdio: ["ignore", childLogFd, childLogFd],
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Close the bootstrap's copy of the fd; the child kept its own.
|
|
95
|
+
closeSync(childLogFd);
|
|
96
|
+
|
|
97
|
+
if (child.pid !== undefined) {
|
|
98
|
+
try {
|
|
99
|
+
writeFileSync(cfg.pidFile, String(child.pid));
|
|
100
|
+
} catch (error) {
|
|
101
|
+
console.error("[vis] failed to write pid file: " + (error?.message ?? String(error)));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
emit({ event: "started", pid: child.pid ?? null });
|
|
106
|
+
|
|
107
|
+
let exitedEarly = false;
|
|
108
|
+
|
|
109
|
+
child.once("exit", (code, signal) => {
|
|
110
|
+
exitedEarly = true;
|
|
111
|
+
emit({ code, event: "failed", reason: "exited-before-ready", signal });
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Forward new bytes from the logfile to our stdout while we're alive.
|
|
115
|
+
// Polling-based tail; preflight is short, ~200ms per cycle is fine.
|
|
116
|
+
let tailPos = 0;
|
|
117
|
+
const tailFd = openSync(cfg.logFile, "r");
|
|
118
|
+
|
|
119
|
+
const flushTail = () => {
|
|
120
|
+
try {
|
|
121
|
+
const stat = statSync(cfg.logFile);
|
|
122
|
+
if (stat.size <= tailPos) return;
|
|
123
|
+
const remaining = stat.size - tailPos;
|
|
124
|
+
const buf = Buffer.alloc(remaining);
|
|
125
|
+
const n = readSync(tailFd, buf, 0, remaining, tailPos);
|
|
126
|
+
if (n > 0) {
|
|
127
|
+
process.stdout.write(buf.subarray(0, n));
|
|
128
|
+
tailPos += n;
|
|
129
|
+
}
|
|
130
|
+
} catch {}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const probeOnce = () => new Promise((resolve) => {
|
|
134
|
+
const socket = createConnection({ host: cfg.host || "127.0.0.1", port: cfg.port });
|
|
135
|
+
let settled = false;
|
|
136
|
+
const finish = (ok) => {
|
|
137
|
+
if (settled) return;
|
|
138
|
+
settled = true;
|
|
139
|
+
try { socket.destroy(); } catch {}
|
|
140
|
+
resolve(ok);
|
|
141
|
+
};
|
|
142
|
+
socket.once("connect", () => finish(true));
|
|
143
|
+
socket.once("error", () => finish(false));
|
|
144
|
+
socket.setTimeout(1000, () => finish(false));
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
148
|
+
|
|
149
|
+
(async () => {
|
|
150
|
+
const deadline = Date.now() + (cfg.timeoutMs ?? 30000);
|
|
151
|
+
while (Date.now() < deadline) {
|
|
152
|
+
flushTail();
|
|
153
|
+
if (exitedEarly) {
|
|
154
|
+
try { closeSync(tailFd); } catch {}
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
if (await probeOnce()) {
|
|
158
|
+
flushTail();
|
|
159
|
+
emit({ event: "ready", host: cfg.host || "127.0.0.1", port: cfg.port });
|
|
160
|
+
try { closeSync(tailFd); } catch {}
|
|
161
|
+
child.unref();
|
|
162
|
+
process.exit(0);
|
|
163
|
+
}
|
|
164
|
+
await sleep(200);
|
|
165
|
+
}
|
|
166
|
+
flushTail();
|
|
167
|
+
emit({ event: "failed", reason: "timeout", timeoutMs: cfg.timeoutMs ?? 30000 });
|
|
168
|
+
try { closeSync(tailFd); } catch {}
|
|
169
|
+
try { process.kill(-child.pid, "SIGTERM"); } catch {}
|
|
170
|
+
process.exit(1);
|
|
171
|
+
})();
|
|
172
|
+
`,vo=()=>{const s=Ur(oe(Ri(),"vis-services-")),e=oe(s,"bootstrap.mjs");return $s(e,yo),{runDir:s,scriptPath:e}},Vs=(s,e,t)=>{const r=t.replaceAll(/[^\w-]/g,"_");return{configFile:oe(s,`${r}.json`),logFile:oe(s,`${r}.log`),pidFile:oe(s,`${r}.pid`),scriptPath:e}},ko=s=>{const{paths:e,service:t}=s,r=t.config.readiness?.tcp?.port??t.config.port;if(typeof r!="number")throw new TypeError(`Service ${t.id} has no TCP readiness port — declare \`service.port\` or \`service.readiness.tcp.port\`.`);const o={...t.env,PATH:ur(t.cwd,t.env)};return{command:t.command,cwd:t.cwd,env:o,host:t.config.readiness?.tcp?.host??"127.0.0.1",id:t.id,logFile:e.logFile,pidFile:e.pidFile,port:r,timeoutMs:t.config.readiness?.tcp?.timeoutMs??3e4}},xo=s=>`node ${JSON.stringify(s.scriptPath)} ${JSON.stringify(s.configFile)}`,jo=s=>{const{id:e,visBin:t,workspaceRoot:r}=s;return`node ${JSON.stringify(t)} service start ${JSON.stringify(e)} --cwd ${JSON.stringify(r)}`},$o=s=>{const{missingServiceIds:e,mode:t,taskGraph:r,visBin:o,workspaceRoot:a}=s,{services:i,skipped:d}=Us(a,e,r);if(i.length===0)return{chain:[],ephemeralPidFiles:[],runDir:void 0,serviceEnvByTaskId:new Map,skipped:d};const u=wo(i.map(j=>j.id),r),f=new Map(i.map(j=>[j.id,j])),h=[],p=[];if(t==="ephemeral")for(const j of u){const I=f.get(j);I&&p.push({id:j,payload:ko({paths:{logFile:"",pidFile:""},service:I})})}let l;t==="ephemeral"&&(l=vo());let $;for(const j of u){const I=f.get(j),S=r.tasks[j];if(!I||!S)continue;let x;if(t==="ephemeral"){const O=Vs(l.runDir,l.scriptPath,j),w={...p.find(A=>A.id===j).payload,logFile:O.logFile,pidFile:O.pidFile};$s(O.configFile,JSON.stringify(w)),x=xo(O),h.push(O.pidFile)}else x=jo({id:j,visBin:o,workspaceRoot:a});if(S.overrides={...S.overrides,command:x},S.cache=!1,r.tasks[j]=S,$!==void 0){const O=r.dependencies[j]??[];O.includes($)||(r.dependencies[j]=[...O,$])}$=j}const R=new Set(u),G=new Map,V=j=>{const I=new Set,S=[...r.dependencies[j]??[]],x=new Set;for(;S.length>0;){const O=S.pop();if(!x.has(O)){x.add(O),R.has(O)&&I.add(O);for(const w of r.dependencies[O]??[])x.has(w)||S.push(w)}}return[...I].sort()};for(const j of Object.keys(r.dependencies)){if(R.has(j))continue;const I=V(j);if(I.length===0)continue;const S={};for(const x of I){const O=f.get(x);O?.config.env&&Object.assign(S,O.config.env)}Object.keys(S).length>0&&G.set(j,S)}return{chain:u,ephemeralPidFiles:h,runDir:l?.runDir,serviceEnvByTaskId:G,skipped:d}},bo=new Set(["auto","ephemeral","off","persistent"]),So=s=>{const{cli:e,config:t,isCi:r,isPersistentTarget:o,isTty:a,target:i}=s;if(e!==void 0&&!bo.has(e))throw new Error(`--services: expected one of auto|ephemeral|persistent|off, got "${e}"`);const d=e??t??(a&&!r?"auto":"off");return d==="off"?"off":d==="ephemeral"?"ephemeral":d==="persistent"?"registry":o||i==="dev"?"ephemeral":"registry"},Hs=s=>s.replace(/^--?/u,""),To=new Set(["0","1","false","no","true","yes"]),Co=s=>!s.startsWith("-")||/^-(?:\d|\.\d)/u.test(s),ys=(s,e,t,r,o,a)=>{if(r!==void 0)return s.set(e,r),0;const i=o[a+1];return(t?.type??"string")==="boolean"?i!==void 0&&To.has(i.toLowerCase())?(s.set(e,i.toLowerCase()),1):(s.set(e,"true"),0):i!==void 0&&Co(i)?(s.set(e,i),1):(s.set(e,"true"),0)},Io=(s,e)=>{const t=s.type??"string";if(t==="number"){const r=e.trim(),o=Number(r);return r===""||!Number.isFinite(o)?{error:`--${s.name} expects a number, got "${e}"`}:{value:o}}if(t==="boolean")return["1","true","yes"].includes(e.toLowerCase())?{value:!0}:["0","false","no"].includes(e.toLowerCase())?{value:!1}:{error:`--${s.name} expects a boolean, got "${e}"`};if(t==="enum"){const r=s.choices??[];return r.includes(e)?{value:e}:{error:`--${s.name} must be one of [${r.join(", ")}], got "${e}"`}}return{value:e}},Ro=s=>{const e=[],t=new Set;for(const r of s){const o=r.name||"<unnamed>";(!r.name||!/^[a-zA-Z][\w-]*$/u.test(r.name))&&e.push(`argument name "${o}" is empty or invalid (start with a letter; use letters, digits, '-', '_')`),t.has(r.name)&&e.push(`duplicate argument name "${o}"`),t.add(r.name),r.alias!==void 0&&r.alias.length!==1&&e.push(`argument "${o}" alias "${r.alias}" must be a single character`);const a=r.type??"string";if(a==="enum"&&(r.choices===void 0||r.choices.length===0)&&e.push(`argument "${o}" has type "enum" but declares no choices`),r.default!==void 0){const i=typeof r.default;a==="number"&&i==="number"||a==="boolean"&&i==="boolean"||(a==="string"||a==="enum")&&i==="string"?a==="enum"&&r.choices&&!r.choices.includes(r.default)&&e.push(`argument "${o}" default "${String(r.default)}" is not one of its choices`):e.push(`argument "${o}" default ${JSON.stringify(r.default)} does not match type "${a}"`)}}return e},Eo=(s,e)=>{const t=new Map,r=new Map;for(const f of s)t.set(f.name,f),f.alias&&r.set(f.alias,f);const o=new Map,a=[];for(let f=0;f<e.length;f+=1){const h=e[f];if(h==="--"){a.push(...e.slice(f+1));break}if(h.startsWith("--no-")){o.set(Hs(h.slice(5)),"false");continue}const p=/^--([^=]+)(?:=(.*))?$/su.exec(h);if(p){const R=p[1];f+=ys(o,R,t.get(R),p[2],e,f);continue}const l=/^-([^=-])(?:=(.*))?$/su.exec(h),$=l?.[1];if(l&&$!==void 0){const R=r.get($);f+=ys(o,R?.name??$,R,l[2],e,f);continue}a.push(h)}const i={},d=[];let u=0;for(const f of s){let h=o.get(f.name);if(h===void 0&&f.positional&&u<a.length&&(h=a[u],u+=1),h===void 0){f.default!==void 0?i[f.name]=f.default:f.required&&d.push(`missing required argument --${f.name}`);continue}const{error:p,value:l}=Io(f,h);p?d.push(p):l!==void 0&&(i[f.name]=l)}return{errors:d,values:i}},Mo=s=>`VIS_ARG_${Hs(s).replaceAll(/[^a-zA-Z0-9]+/gu,"_").toUpperCase()}`,Fo=s=>{const e={};for(const[t,r]of Object.entries(s))e[Mo(t)]=String(r);return e},ht=(s,e,t)=>{const r=[`Usage: vis run ${s} [-- <args>]`];if(e&&r.push("",e),t.length===0)return r.join(`
|
|
173
|
+
`);r.push("","Arguments:");const o=t.map(i=>{const d=i.positional?`<${i.name}>`:`--${i.name}`,u=i.alias?`, -${i.alias}`:"";return{left:`${d}${u}`,right:i}}),a=Math.max(...o.map(i=>i.left.length));for(const{left:i,right:d}of o){const u=[],f=d.type??"string";u.push(f==="enum"?`enum(${(d.choices??[]).join("|")})`:f),d.required&&u.push("required"),d.default!==void 0&&u.push(`default: ${String(d.default)}`);const h=`${d.description??""}${d.description?" ":""}[${u.join(", ")}]`;r.push(` ${i.padEnd(a)} ${h}`)}return r.join(`
|
|
174
|
+
`)},Oo=(s,e,t,r)=>{if(!t||t.length===0)return{env:{},kind:"ok"};const o=Ro(t);if(o.length>0)return{errors:o.map(i=>`invalid \`arguments\` schema for "${s}": ${i}`),help:ht(s,e,t),kind:"invalid"};if(r.includes("--help")||r.includes("-h"))return{kind:"help",text:ht(s,e,t)};const a=Eo(t,r);return a.errors.length>0?{errors:a.errors,help:ht(s,e,t),kind:"invalid"}:{env:Fo(a.values),kind:"ok"}},$t="VIS_AFFECTED_FILES",Po=2e3,vs=async(s,e,t,r,o,a)=>{const i=s.map(x=>{const O=x.overrides.command;if(!O)return;const w=x.overrides.visOptions,A=nt(e,x.projectRoot,!!w?.runFromWorkspaceRoot),b=w?.envFile?yt(A,w.envFile):{},M=t&&(w?.affectedFiles==="env"||w?.affectedFiles==="both")?{[$t]:t.join(`
|
|
175
|
+
`)}:{},H=a?.get(x.id)??{},te=Yi({interactive:!!o,taskPty:x.pty,workspacePty:w?.pty});return{command:O,cwd:A,env:{INIT_CWD:r,...b,...H,...M,...x.overrides[St]},name:x.id,...te?{ptySize:{cols:process.stdout.columns??80,rows:process.stdout.rows??24},stdin:"pty"}:{}}}).filter(x=>x!==void 0);if(i.length===0)return;if(!o){await Qe(i,{killOthers:["failure"],onEvent:()=>{}});return}const{abortSignal:d,lifeCycle:u,stdinRegistry:f,store:h}=o,p=i.map(x=>s.find(O=>O.id===x.name)).filter(Boolean),l=x=>i[x]?.stdin==="pty",$=new Map,R=x=>{if(!l(x))return;let O=$.get(x);return O||(O=new mt(it),$.set(x,O)),O};h.unmarkDone(),u.startTasks?.(p);const G=new Map,V=new Map;let j;const I=()=>{for(const x of V.values())try{x("SIGTERM")}catch{}j||(j=setTimeout(()=>{for(const x of V.values())try{x("SIGKILL")}catch{}V.clear()},2e3),j.unref?.())};let S;d&&(S=()=>{I()},d.then(()=>{S?.()}).catch(()=>{S?.()}));try{await Qe(i,{killOthers:["failure"],onEvent:x=>{const O=p[x.index];if(O)switch(x.kind){case"close":{const w=G.get(O.id)??Date.now(),A=x.killed||x.exitCode===0?"success":"failure";u.endTasks?.([{code:x.exitCode??0,endTime:Date.now(),startTime:w,status:A,task:O,terminalOutput:h.getSnapshot().outputs.get(O.id)??""}]),V.delete(x.index),f?.delete(O.id);break}case"error":{if(x.message){const w=R(x.index);w?(w.write(`${x.message}
|
|
176
|
+
`),h.setOutput(O.id,w.toString())):h.addOutput(O.id,`${x.message}
|
|
177
|
+
`)}break}case"started":{G.set(O.id,Date.now()),x.kill&&V.set(x.index,x.kill),x.write&&f&&f.set(O.id,{kill:x.kill,resize:x.resize,write:x.write});break}case"stderr":case"stdout":{if(x.text){const w=R(x.index);w?(w.write(x.text),h.setOutput(O.id,w.toString())):h.addOutput(O.id,`${x.text}
|
|
178
|
+
`)}break}}}})}finally{j&&(clearTimeout(j),j=void 0),h.markDone()}},ks=s=>{try{return process.kill(-s,0),!0}catch{try{return process.kill(s,0),!0}catch{return!1}}},Ao=s=>{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,s)},Do=s=>{const{extraPids:e=[],pidFiles:t,runDir:r}=s,o=[],a=i=>{try{process.kill(-i,"SIGTERM")}catch{try{process.kill(i,"SIGTERM")}catch{}}};for(const i of t){let d;try{const u=ar(i),f=Number.parseInt(u.trim(),10);d=Number.isFinite(f)&&f>0?f:void 0}catch{continue}d!==void 0&&(o.push(d),a(d))}for(const i of e)!Number.isFinite(i)||i<=0||(o.push(i),a(i));if(o.length>0){const i=Date.now()+1500;for(;Date.now()<i;){let d=!0;for(const u of o)if(ks(u)){d=!1;break}if(d)break;Ao(100)}for(const d of o)if(ks(d))try{process.kill(-d,"SIGKILL")}catch{try{process.kill(d,"SIGKILL")}catch{}}}r&&cr(r)},it=256*1024;class Lo{#e;#r="";#s=!1;constructor(e){this.#e=e}append(e){this.#r+=e,this.#r.length>this.#e&&(this.#r=this.#r.slice(-this.#e),this.#s=!0)}toString(){return this.#s?`[...output truncated, showing last ${Math.round(this.#e/1024)}KB...]
|
|
179
|
+
${this.#r}`:this.#r}}const zs=s=>{const e=s.overrides.visOptions;if(e&&typeof e=="object")return e},Bo=s=>`'${s.replaceAll("'",String.raw`'\''`)}'`,bt=s=>process.platform==="win32"?s.length>0&&!/[\s"&|<>^()%!]/.test(s)?s:`"${s.replaceAll('"','""')}"`:Bo(s),No=(s,e,t)=>{if(!e||e.length===0||t===!1||t===void 0)return s;if(t==="args"||t==="both"){const r=e.map(o=>bt(o)).join(" ");return`${s} ${r}`}return s},Ys="visForwardedArgs",St="visTaskArgEnv",Go=(s,e)=>{const t=e.overrides[Ys];if(!Array.isArray(t)||t.length===0)return s;const r=t.map(o=>bt(o)).join(" ");return`${s} ${r}`},_o=async(s,e,t)=>{if(!e)return t();const r=s.get(e)??Promise.resolve();let o;const a=new Promise(d=>{o=d}),i=r.then(()=>a);s.set(e,i),await r;try{return await t()}finally{o(),s.get(e)===i&&s.delete(e)}},qo=s=>{let e=Math.max(0,Math.floor(s));return{claim(t){const r=Math.max(0,Math.min(t,e));return e-=r,r},get remaining(){return e}}},Wo=(s,e,t)=>{const r=`${e}\0${typeof t=="string"?t:String(t)}`,o=s.get(r);if(o)return o;const a=yt(e,t);return s.set(r,a),a},xs=s=>{const e=new Map;return async(t,r)=>{const{affectedFiles:o,currentOs:a,hooks:i,initCwd:d,lifeCycle:u,mutexPool:f,onOutput:h,onOutputReplace:p,retryBudget:l,serviceEnvByTaskId:$,serviceEventBridge:R,stdinRegistry:G,strictEnv:V,taskSlots:j,workspaceRoot:I}=s,S=zs(t),x=nt(I,r.cwd??t.projectRoot,S?.runFromWorkspaceRoot===!0),O=t.overrides.command;if(!O)return{code:0,terminalOutput:`No command configured for ${t.target.project}:${t.target.target}`};const w=Go(O,t),A=No(w,o,S?.affectedFiles),b=ui(S,a),M=S?.shellArgs,H=M&&M.length>0?M.join(" "):"-c",te=b?`${b} ${H} ${bt(A)}`:A,fe=S?.envFile?Wo(e,x,S.envFile):void 0,W={};o&&o.length>0&&(S?.affectedFiles==="env"||S?.affectedFiles==="both")&&(W[$t]=o.join(`
|
|
180
|
+
`));const Y=$?.get(t.id),ce={INIT_CWD:d,VIS_TASK_SLOTS:String(j),...fe,...Y,...r.env,...W,...t.overrides[St]};if(S?.strictEnv??V??!1){const E=en({command:A,processEnv:process.env,taskEnv:ce,taskId:t.id});if(E){const ge=tn(E);return u?.onTaskStderr?.(t,ge),{code:1,terminalOutput:ge}}}const re=S?.pty===!0,ae=!!G,ne=t.pty===!0?!0:t.pty===!1?!1:ae||re;ne&&(t.cache=!1);const U=ne?void 0:new Lo(it),_=ne?new mt(it):void 0;let X;const pe=E=>{if(E.kind==="started"&&(X=E.kill,E.write&&G&&G.set(t.id,{kill:E.kill,resize:E.resize,write:E.write}),R?.onRegistryTaskStarted(t.id)),(E.kind==="stdout"||E.kind==="stderr")&&E.text!==void 0)if(E.kind==="stdout"?u?.onTaskStdout?.(t,E.text):u?.onTaskStderr?.(t,E.text),_)_.write(E.text),ae&&p?.(t.id,_.toString()),R&&R.onTaskOutput(t.id,E.text);else{const ge=`${E.text}
|
|
181
|
+
`;U.append(ge),h?.(t.id,ge)}E.kind==="close"&&(G&&G.delete(t.id),R&&R.onRegistryTaskClosed(t.id,E.exitCode??0,!!E.killed).catch(()=>{}))},je=async()=>{const E=S?.retryCount??0,ge=S?.retryDelay,Ie=l?l.claim(E):E,Me=typeof S?.timeout=="number"&&S.timeout>0?S.timeout:0,Le=typeof S?.killGracePeriodMs=="number"&&S.killGracePeriodMs>=0?S.killGracePeriodMs:5e3;let Fe=!1,Z=0;const Oe=zn({killGracePeriodMs:Le,onTimeout:()=>{Fe=!0},sendSignal:ve=>{X?.(ve)},timeoutMs:Me});let we;try{we=await Qe([{command:te,cwd:x,env:ce,name:t.id,...ne?{ptySize:{cols:process.stdout.columns??80,rows:process.stdout.rows??24},stdin:"pty"}:{}}],{killOthers:["failure"],onEvent:pe,...Ie>0?{restart:{delay:ge??"exponential",onRetry:async(ve,Se,T)=>{Z=ve,i&&await i.callHook("task:retry",t,ve,T)},tries:Ie}}:{}})}finally{Oe.cancel()}const de=we.closeEvents[0],ye=_?_.toString():U.toString();return Fe?{code:124,retryAttempts:Z,terminalOutput:`${ye}
|
|
182
|
+
[timeout] Task "${t.id}" exceeded ${Me}ms budget.
|
|
183
|
+
`}:{code:de?.exitCode??1,retryAttempts:Z,terminalOutput:ye}};return f?_o(f,S?.mutex,je):je()}},Uo=s=>{if(!s||s.trim().length===0)return;const e=Number.parseFloat(s);return!Number.isFinite(e)||e<=0?{invalid:s}:{value:Math.floor(e)}},Vo=async(s,e)=>{const t=await vr(s,{dataDirectory:Ze(s)});if(!t){e.warn(`No previous run recorded yet. Run a task at least once to populate ${kr(s,{dataDirectory:Ze(s)})}.`);return}const r=(t.duration/1e3).toFixed(2);if(e.info(""),e.info(`Last run — ${t.startTime} (${r}s)`),e.info(""),e.info(` Total: ${String(t.stats.total)}`),e.info(` Succeeded: ${String(t.stats.succeeded)}`),e.info(` Cached: ${String(t.stats.cached)}`),e.info(` Failed: ${String(t.stats.failed)}`),e.info(` Skipped: ${String(t.stats.skipped)}`),e.info(""),t.stats.failed>0){const a=t.tasks.filter(i=>i.exitCode!==void 0&&i.exitCode!==0);e.info("Failed tasks:");for(const i of a){const d=i.duration??0;e.info(` × ${i.taskId} (exit ${String(i.exitCode??-1)}, ${d}ms)`)}e.info("")}const o=[...t.tasks].filter(a=>typeof a.duration=="number").sort((a,i)=>(i.duration??0)-(a.duration??0)).slice(0,5);if(o.length>0){e.info("Slowest tasks:");for(const a of o)e.info(` ${a.taskId.padEnd(40)} ${String(a.duration??0).padStart(6)}ms [${a.cacheStatus}]`);e.info("")}},Ho=s=>{if(!(s===void 0||s==="")){if(s!=="read"&&s!=="write"&&s!=="readwrite")throw new Error(`--cache-mode must be one of: read, write, readwrite (received "${s}")`);return s}},zo=s=>{if(!(s===void 0||s==="")){if(s!=="http"&&s!=="reapi")throw new Error(`--cache-backend must be one of: http, reapi (received "${s}")`);return s}},Yo=s=>{if(!(s===void 0||s==="")){if(s!=="declared"&&s!=="trace")throw new Error(`--hash-mode must be one of: declared, trace (received "${s}")`);return s}},wa=async({argument:s,logger:e,options:t,runtime:r,visConfig:o,workspaceRoot:a})=>{if(!a)throw new Error("Could not determine workspace root. Run this command inside a monorepo.");const i=a;if(zr({logger:e,options:t,visConfig:o},i),fi(i),t.lastDetails===!0){await Vo(i,e);return}const d=process.cwd(),u=await Ar(i),{config:f,packageJsons:h,projectOptions:p,workspace:l}=Dr(i,o,u),$=Lr(i,l,h);let R=s[0];if(!R){const g=ns(l);if(process.stdout.isTTY&&process.stdin.isTTY){const y=await cn(g);if(!y){e.info("No target selected.");return}R=y,await qn(`vis run ${y}`)}else{e.info("Available targets:"),e.info(""),e.info(an(g)),e.info(""),e.info("Usage: vis run <target>");return}}if(f.constraints&&!t.skipConstraints){const g=hr($,f.constraints);if(g.length>0){for(const y of g)e.error(`[${y.rule}] ${y.message}`);throw new Error(`${g.length} project constraint violation(s) found. Use --skip-constraints to bypass.`)}}if(t.affected){const g=[R];t.parallel!==void 0&&g.push(`--parallel=${String(t.parallel)}`),t.cache||g.push("--no-cache"),t.query&&g.push(`--query=${String(t.query)}`),t.reverse&&g.push("--reverse"),typeof t.runnerTags=="string"&&t.runnerTags!==""&&g.push(`--runner-tags=${t.runnerTags}`),await r.runCommand("affected",{argv:g});return}const G=await oi(R,l,process.cwd(),i),V=sn(p),j=rn(G.target,V);j!==G.target&&e.debug?.(`Resolved alias "${G.target}" → "${j}"`);let I=G.projects;const S=s.slice(1).map(String);if(t.projects){const g=new Set(t.projects.split(",").map(y=>y.trim()));if(I=I.filter(y=>g.has(y)),I.length===0)throw new Error(`No matching projects found for: ${String(t.projects)}`)}if(t.filter&&t.filter.length>0){const g=new Map;for(const[P,q]of h)g.set(P,q.name);const y=await lo(t.filter,{defaultBase:o?.defaultBase,packageNameByProject:g,projectGraph:$,workspaceRoot:i}),k=new Set(y);if(I=I.filter(P=>k.has(P)),I.length===0){e.info(`Filter ${t.filter.map(P=>`"${P}"`).join(", ")} matched no projects.`);return}}if(t.query&&(I=ai(I,l,t.query),I.length===0)){e.info(`Query "${String(t.query)}" matched no projects.`);return}const x=ci(),O=process.env[$t],w=O?O.split(`
|
|
184
|
+
`).filter(Boolean):void 0,A=(typeof t.runnerTags=="string"?t.runnerTags:process.env.VIS_RUNNER_TAGS)??void 0,b=A?new Set(A.split(",").map(g=>g.trim()).filter(Boolean)):void 0,M=[],H=new Map;for(const g of I){const y=p.get(g)?.[j];if(!y)continue;const k=y.options;if(!k?.internal){if(!li(k,!!He)){e.debug?.(`Skipping ${g}:${j} — runInCI filter`);continue}if(!di(k,b)){e.debug?.(`Skipping ${g}:${j} — runner-tags filter`);continue}M.push(g),H.set(g,y)}}if(M.length===0){const g=ns(l),y=Object.entries(l.projects).filter(([,k])=>k.targets?.[j]!==void 0).map(([k])=>k);if(e.error(`No projects have the "${j}" target.`),y.length>0){e.info(""),e.info(`Target "${j}" exists in these projects but was filtered out:`);for(const k of y.slice(0,5))e.info(` - ${k}`);y.length>5&&e.info(` …and ${y.length-5} more`)}else{const k=Ds(j,g,3);k.length>0&&(e.info(""),e.info(k.length===1?`Did you mean "${k[0]}"?`:`Did you mean one of: ${k.map(P=>`"${P}"`).join(", ")}?`)),e.info(""),e.info("Run `vis run` without arguments to see all available targets.")}return}const te=t.pty===!0,fe=M.map(g=>({project:g,schema:H.get(g)?.arguments})).filter(g=>Array.isArray(g.schema)&&g.schema.length>0),W=new Map;for(const{project:g,schema:y}of fe){const k=JSON.stringify(y),P=W.get(k)??[];P.push(g),W.set(k,P)}if(W.size>1){const g=[...W.values()].map(y=>y.join(", ")).join(" | ");throw new Error(`Target "${j}" declares conflicting \`arguments\` schemas across projects (${g}). Run a single project (e.g. \`vis run ${fe[0]?.project}:${j}\` or --projects=<name>) so the argument contract is unambiguous.`)}const Y=fe[0]?.schema,ce=H.get(fe[0]?.project??M[0])?.description,re=Oo(j,ce,Y,S);if(re.kind==="help"){e.info(re.text);return}if(re.kind==="invalid"){e.info(`Invalid arguments for "${j}":`);for(const g of re.errors)e.info(` ✖ ${g}`);throw e.info(""),e.info(re.help),new Error(`Invalid arguments for target "${j}"`)}const ae=re.env,ne=Yo(t.hashMode);let U=M.map(g=>{const y=l.projects[g],k=H.get(g),P={project:g,target:j},q=`${g}:${j}`,J=te?{...k.options,pty:k.options?.pty??!0}:k.options,L=k.command?Ht(k.command,{affectedFiles:w,projectRoot:y?.root}):k.command,D=y?.root&&y.root.length>0?y.root:".",se=(k.outputs??[]).map(F=>typeof F!="string"?F:F.replaceAll("{projectRoot}",D).replaceAll("{projectName}",g));return{cache:k.cache,hashMode:ne??k.hashMode,id:q,outputs:se,overrides:{command:L,...S.length>0?{[Ys]:S}:{},...Object.keys(ae).length>0?{[St]:ae}:{},...J?{visOptions:J}:{}},parallelism:k.parallelism,projectRoot:y?.root,target:P}});const _=[],X=[];for(const g of U)zs(g)?.persistent?(g.cache=!1,_.push(g)):X.push(g);U=X;const pe=fr(t.partition);if(pe&&(U=pr.partitionTasks(U,pe),e.info(`Partition ${pe.index}/${pe.total}: running ${U.length} task(s)`),U.length===0)){e.info("No tasks assigned to this partition.");return}const je=new Set([...U,..._].map(g=>g.id));let E=gr([...U,..._],{onCycleBroken:g=>{e.warn(`Ignoring dev-only dependency cycle (build order is ambiguous): ${g.join(" → ")}`)},projectGraph:$,targetDefaults:f.tasks,workspace:l});for(const[g,y]of Object.entries(E.tasks)){const k=y.target.project,P=y.target.target,q=p.get(k)?.[P];if(!q){je.has(g)||e.warn(`${P} required via dependsOn but no command is configured for ${k} — skipping (no-op).`);continue}const J=l.projects[k];let L=!1;const D={...y.overrides};D.visOptions===void 0&&q.options&&(D.visOptions=q.options,L=!0),D.command===void 0&&q.command&&(D.command=Ht(q.command,{affectedFiles:w,projectRoot:J?.root}),L=!0),L&&(y.overrides=D,E.tasks[g]=y)}if(typeof t.skipCache=="string"&&t.skipCache.trim()!=="")if(t.cache){const g=Ki(t.skipCache,l,Object.keys(E.tasks));for(const y of g.skipTaskIds){const k=E.tasks[y];k!==void 0&&(k.cache=!1)}g.unmatchedPatterns.length>0&&e.warn(`--skip-cache: no tasks matched ${g.unmatchedPatterns.map(y=>`"${y}"`).join(", ")}`),g.skipTaskIds.size>0&&e.debug?.(`--skip-cache: bypassing cache for ${String(g.skipTaskIds.size)} task(s)`)}else e.debug?.("--skip-cache ignored: --no-cache already disables caching for the whole run");await Yr(i,f.toolchain,{error:g=>{e.error(g)},info:g=>{e.info(g)},warn:g=>{e.warn(g)}},!!t.skipToolchain);const ge=t.preflight!==!1&&f.preflight?.lockfile!==!1,Ie=Nr(i,He,{warn:g=>{e.warn(g)}},{skip:!ge});if(!Ie.shouldContinue)throw new Error(`${Ie.formattedMessage??"preflight: lockfile drift detected"} (pass --no-preflight to bypass)`);ge&&!He&&process.stdin.isTTY&&process.stdout.isTTY&&await zi(i,{logger:{info:g=>{e.info(g)},warn:g=>{e.warn(g)}},projectManifests:[...h.values()]});const Me=process.env.VIS_VERSION??"0.0.0",Le=t.dryRun?void 0:async g=>{try{return await ii(g.config,{timeoutMs:Po}),!0}catch{return!1}},Fe=await Zr(i),Z=await eo({initialTasks:[...U,..._],probe:Le,registeredEntries:Fe,taskGraph:E,visVersion:Me}),Oe=[];let we,de=0;const ye=[],ve=new Map;let Se=[];const T=new Set;let v=null,C=null;if(Z.diagnostics.length>0){const g=!!(process.stdout.isTTY&&process.stdin.isTTY),y=t.dryRun?"off":So({cli:t.services,config:f.run?.services,isCi:!!He,isPersistentTarget:_.length>0,isTty:g,target:j});if(y==="off"){for(const D of Z.diagnostics)e.error(D.message);throw new Error(`${Z.diagnostics.length} service dependency error(s) — start the missing services or invoke them directly.`)}const k=Z.diagnostics.map(D=>D.targetId),P=y,q=P==="registry"?Us(i,k,E):void 0,J=process.argv[1]??"vis",L=$o({missingServiceIds:k,mode:P,taskGraph:E,visBin:J,workspaceRoot:i});if(L.skipped.length>0){for(const{id:D,reason:se}of L.skipped)e.error(`Cannot auto-start ${D}: ${se}`);throw new Error(`${L.skipped.length} service(s) cannot be auto-started — invoke them directly or add a service config.`)}Oe.push(...L.ephemeralPidFiles),we=L.runDir,Se=L.chain;for(const D of L.chain)T.add(D);if(P==="registry"&&(de=L.chain.length,ye.push(...L.chain)),L.chain.length>0){const D=new os(L.chain),se=new Map;if(P==="ephemeral"&&L.runDir)for(const F of L.chain){const N=Vs(L.runDir,`${L.runDir}/bootstrap.mjs`,F);se.set(F,{ephemeral:{configFile:N.configFile,cwd:i,logFile:N.logFile,pidFile:N.pidFile,scriptPath:N.scriptPath},mode:"ephemeral"})}else if(P==="registry"&&q)for(const F of q.services)se.set(F.id,{mode:"registry",registry:{command:F.command,config:F.config,cwd:F.cwd,env:F.env}});if(se.size>0){const F=new po({indexToId:new Map,services:se,sink:{crashed:(N,B)=>{D.markCrashed(N,B)},failed:(N,B,Q)=>{D.markFailed(N,B,Q)},log:(N,B)=>{D.appendLog(N,B)},ready:(N,B)=>{D.markReady(N,B)},started:(N,B)=>{D.markStarted(N,B),P==="registry"&&B!==null&&ve.set(N,B)},starting:N=>{D.markStarting(N)}},workspaceRoot:i});v=D,C=F}}for(const[D,se]of L.serviceEnvByTaskId){const F=Z.serviceEnvByTaskId.get(D)??{};Z.serviceEnvByTaskId.set(D,{...F,...se})}}const ee=new Set(_.map(g=>g.id));if(U=Z.initialTasks.filter(g=>!ee.has(g.id)),E=Z.taskGraph,Se.length>0&&(U=[...Se.map(g=>E.tasks[g]).filter(g=>g!==void 0),...U]),_.length>0){const g=new Set(_.map(J=>J.id)),y={};for(const[J,L]of Object.entries(E.tasks))g.has(J)||(y[J]=L);const k={};for(const[J,L]of Object.entries(E.dependencies))g.has(J)||(k[J]=L.filter(D=>!g.has(D)));const P=new Set;for(const J of Object.values(k))for(const L of J)P.add(L);const q=Object.keys(y).filter(J=>!P.has(J));E={dependencies:k,roots:q,tasks:y}}const{serviceEnvByTaskId:Te}=Z;if(Z.satisfiedServices.length>0){const g=Z.satisfiedServices.map(y=>y.id).join(", ");if(e.debug?.(`Auto-attached to running services: ${g}`),v)for(const y of Z.satisfiedServices)v.registerService(y.id);else v=new os(Z.satisfiedServices.map(y=>y.id));for(const y of Z.satisfiedServices){const k=y.config.readiness?.tcp?.port??y.config.port??0,P=y.config.readiness?.tcp?.host??"127.0.0.1";v.markReady(y.id,{host:P,port:k})}}if(t.reverse&&(E=mr(E),e.debug?.(`Reversed task graph: ${String(E.roots.length)} new root(s) (originally leaves)`)),t.dryRun){const g=Object.keys(E.tasks).length,y=E.roots.length;e.info(`Execution plan (${String(g)} task(s), ${String(y)} root(s)):`),e.info("");const k=new Set,P=(q,J)=>{if(k.has(q))return;k.add(q);for(const F of E.dependencies[q]??[])P(F,J+1);const L=E.tasks[q],D=" ".repeat(J+1),se=`${L?.cache===!1?" (no-cache)":""}${L?.hashMode==="trace"?" (trace)":""}`;e.info(`${D}${q}${se}`)};for(const q of E.roots)P(q,0);for(const q of Object.keys(E.tasks))P(q,0);_.length>0&&(e.info(""),e.info(` + ${String(_.length)} persistent task(s) (run after graph completes)`)),e.info("");return}const Tt=Date.now(),Ce=ei(),Ct=(g,y)=>{const k=y instanceof Error?y.message:String(y);e.warn(`Plugin error in ${g}: ${k}`)};await ti(Ce,f.plugins);const qe=typeof t.profile=="string"?t.profile:void 0,It=async g=>{if(!qe)return;const y=Jt(g,E,Tt),k=qe.startsWith("/")?qe:`${i}/${qe}`;await xr(y,k),e.info(`Profile written to ${qe}`)},Ye=f.taskRunner??{},Js=Cr(i,t.cacheDir,Ye.cacheDirectory,f.sharedWorktreeCache),Ks=Ir(Js,i,f.branchScopedCache),Be=Uo(process.env.VIS_RUN_CONCURRENCY_LIMIT);Be&&"invalid"in Be&&e.warn(`VIS_RUN_CONCURRENCY_LIMIT=${Be.invalid} is not a positive number; falling back to default concurrency.`);const Xs=Be&&"value"in Be?Be.value:void 0,ct=t.parallel??Xs??3,Rt=t.strictEnv??f.strictEnv??!1,Et=new Set,Pe={dryRun:t.dryRun??!1,parallel:ct,skipNxCache:!t.cache,summarize:t.summarize??!1,...Ye,cacheDirectory:Ks,dataDirectory:Ye.dataDirectory??Ze(i),namedInputs:f.namedInputs,onDiagnostic:(g,y)=>{Et.has(g)||(Et.add(g),e.warn(y))},onFingerprint:async(g,y)=>{await Ce.callHook("task:fingerprint",g,y)}},Mt=wr(Ye.remoteCache);if(Mt){const g=Ho(t.cacheMode),y=zo(t.cacheBackend);if(Pe.remoteCache={...Mt,...g?{mode:g}:{},...y?{backend:y}:{}},Pe.remoteCache.attestation){const{expectedIdentity:k,requireOnDownload:P}=Pe.remoteCache.attestation;if(!(k!==void 0&&("github"in k&&typeof k.github?.ref=="string"&&typeof k.github.repo=="string"&&typeof k.github.workflow=="string"||"oidcIssuer"in k&&typeof k.oidcIssuer=="string"&&(typeof k.san=="string"||typeof k.sanRegex=="string"))))throw new Error("[vis run] remoteCache.attestation requires a pinned keyless signer via `expectedIdentity`. Use one of:\n • { github: { repo, workflow, ref } } (GitHub Actions — recommended)\n • { oidcIssuer, san } (literal identity; vis regex-escapes + anchors it)\n • { oidcIssuer, sanRegex } (advanced: raw regex, you own anchoring)\nWithout it, verification is integrity-only — use `remoteCache.signing` (HMAC) for that instead.");"sanRegex"in k&&(!k.sanRegex.startsWith("^")||!k.sanRegex.endsWith("$"))&&e.warn("[vis run] remoteCache.attestation.expectedIdentity.sanRegex is not anchored (^…$). sigstore matches it as a regex; an unanchored value is substring-matched and weakens the identity pin. Prefer the literal `san` form unless you need a pattern.");const{installCommandFor:q,isSigstoreInstalled:J}=await import("./loader.js");J()||e.warn(`[vis run] remoteCache.attestation is configured but the optional \`sigstore\` package is not installed. Cache uploads will be unsigned and signed entries can't be verified until you install it:
|
|
185
|
+
${q(i)}`);const{buildCacheAttestationHooks:L}=await import("./cache-attestation.js");Pe.remoteCache.attestation=L({expectedIdentity:k,onReject:(D,se)=>{e.warn(`[vis run] remote cache entry ${D.slice(0,12)} rejected: attestation ${se}. Treating as a cache miss.`)},onVerifyFailure:D=>{e.warn(`[vis run] attestation verification failed: ${D}`)},requireOnDownload:P,workspaceRoot:i})}}else(t.cacheMode||t.cacheBackend)&&e.warn("[vis run] --cache-mode and --cache-backend require a `remoteCache` block in vis.config.ts (or TURBO_API env); ignoring.");const Qs=process.stdout.isTTY&&!He,Zs=o?.run?.quietOnSuccess===!0,er=f.tui?.autoExit??(Zs?3:!1),Ft={args:{parallel:Pe.parallel,targets:[j]},autoExit:er,projectNames:M,tasks:[...U,..._],totalTaskCount:Object.keys(E.tasks).length+_.length},Ot=typeof t.retryBudget=="number"?t.retryBudget:void 0,Pt=Ot===void 0?void 0:qo(Ot),At=new si(Ce,Ct),Dt=new Hr(i),Lt=Nn(t.outputStyle,o?.run?.quietOnSuccess);if(Z.satisfiedServices.length>0)for(const g of Z.satisfiedServices){const y=Z.serviceDependentsByServiceId.get(g.id)??[];try{await Ce.callHook("service:attach",g,y)}catch(k){Ct("service:attach",k)}}await Ce.callHook("run:before",{tasks:U,workspaceRoot:i});const We=t.stopServices===!0;let Bt=!1;const Nt=()=>{if(Bt)return;Bt=!0,C&&C.dispose().catch(()=>{});const g=We?[...ve.values()]:void 0;Do({extraPids:g,pidFiles:Oe,runDir:we})},Je=()=>{Nt()},Gt=Oe.length>0||we!==void 0||We&&ye.length>0;Gt&&(process.on("SIGINT",Je),process.on("SIGTERM",Je));try{if(Qs){const g=new Map,y=Ln({...Ft,onRetryService:C?F=>C.retry(F):void 0,outputStyle:Lt,serviceDockStore:v,stdinRegistry:g}),{lifeCycle:k,store:P}=y,q=new zt([k,At,Dt]),J=xs({affectedFiles:w,currentOs:x,hooks:Ce,initCwd:d,lifeCycle:q,mutexPool:new Map,onOutput:(F,N)=>{C&&T.has(F)?C.onTaskOutput(F,N):P.addOutput(F,N)},onOutputReplace:(F,N)=>{P.setOutput(F,N)},retryBudget:Pt,serviceEnvByTaskId:Te,serviceEventBridge:C??void 0,stdinRegistry:g,strictEnv:Rt,taskSlots:ct,workspaceRoot:i});let L="rerun",D=null,se=new Map;for(;L!=="quit";){if(L==="rerun"){if(se=await Yt(U,Pe,{lifeCycle:q,projectGraph:$,taskExecutor:J,taskGraph:E,workspaceRoot:i}),_.length>0&&!t.failFast){const F=new Promise(N=>{const B=P.subscribe(()=>{const Q=P.getSnapshot();(Q.rerunRequested||Q.retryTaskId)&&(B(),N())});y.renderIsDone.then(()=>{B(),N()}).catch(()=>{B(),N()})});await vs(_,i,w,d,{abortSignal:F,lifeCycle:q,stdinRegistry:g,store:P},Te)}}else if(L==="retry"&&D){const F=U.find(B=>B.id===D),N=F?.overrides.command;if(F&&N){const B=nt(i,F.projectRoot,!1);q.startTasks?.([F]);const Q=new mt(it),ue=(await Qe([{command:N,cwd:B,name:F.id,ptySize:{cols:process.stdout.columns??80,rows:process.stdout.rows??24},stdin:"pty"}],{onEvent:ie=>{ie.kind==="started"&&ie.write&&g.set(F.id,{kill:ie.kill,resize:ie.resize,write:ie.write}),(ie.kind==="stdout"||ie.kind==="stderr")&&ie.text&&(Q.write(ie.text),P.setOutput(F.id,Q.toString())),ie.kind==="close"&&g.delete(F.id)}})).closeEvents[0];q.endTasks?.([{code:ue?.exitCode??1,status:ue?.exitCode===0?"success":"failure",task:F,terminalOutput:P.getSnapshot().outputs.get(F.id)}])}else F&&q.endTasks?.([{code:1,status:"failure",task:F,terminalOutput:`No command configured for ${F.id}`}]);D=null,P.markDone()}L=await new Promise(F=>{const N=P.subscribe(()=>{const B=P.getSnapshot();B.rerunRequested&&(P.acknowledgeRerun(),N(),F("rerun")),B.retryTaskId&&(D=P.acknowledgeRetry(),N(),F("retry"))});y.renderIsDone.then(()=>{N(),F("quit")}).catch(()=>{N(),F("quit")})})}await y.renderIsDone,await Ce.callHook("run:after",se),await It(se),de>0&&(e.info(""),We?e.info(`${String(de)} service(s) stopped (--stop-services).`):e.info(`${String(de)} service(s) started in the background. Run \`vis service stop --all\` to clean up.`))}else{const g=new Map,y=typeof t.log=="string"?t.log.toLowerCase():"",k=y==="labeled"||y==="grouped"||y==="interleaved"?y:void 0,P=k?yr(k):void 0,q=new zt([new _n({...Ft,ciGrouping:o?.run?.ciGrouping??"auto",logReporter:P,outputStyle:Lt}),At,Dt]),J=xs({affectedFiles:w,currentOs:x,hooks:Ce,initCwd:d,lifeCycle:q,mutexPool:g,retryBudget:Pt,serviceEnvByTaskId:Te,serviceEventBridge:C??void 0,strictEnv:Rt,taskSlots:ct,workspaceRoot:i}),L=async()=>{const B=Date.now(),Q=await Yt(U,Pe,{lifeCycle:q,projectGraph:$,taskExecutor:J,taskGraph:E,workspaceRoot:i}),ue=Date.now()-B;if(t.summarize){const xe=Jt(Q,E,Tt);await jr(xe,i,{dataDirectory:Ze(i)})}let ie=!1;for(const[,xe]of Q)xe.status==="failure"&&(ie=!0);const ke=Mr(Q,ue),$e=Fr(i),Re=Or(i,ue,$e);return e.info(""),e.info(` ${ke}${Re?` ${Re}`:""}`),{hasFailure:ie,results:Q,runHistory:$e}},D=await L();await Ce.callHook("run:after",D.results),await It(D.results);const{hasFailure:se}=D;if(t.watch){const B=M.map(le=>{const me=l.projects[le]?.root;if(me)return me.startsWith("/")?me:`${i}/${me}`}).filter(le=>le!==void 0),Q=U;let ue;const ie=le=>{const me=Yn(Q,le);return ue=me.filter,U=me.tasks,me.tasks.length};let ke=!1,$e=D.results;const Re=()=>{const le=es($e,i);if(le.directories.length>0&&le.files.size>0){const me=Ei(le.files,i,le.directories);return{handle:ts({filter:me,onChange:Ke,paths:le.directories}),mode:"tracked"}}return{handle:ts({onChange:Ke,paths:B}),mode:"roots"}};let xe;const Ke=async le=>{if(!ke){ke=!0;try{e.info(`Change detected in ${le.length} file(s), rerunning…`),$e=(await L()).results,xe?.close(),xe=Re().handle}finally{ke=!1}}},_t=Re();xe=_t.handle;const tr=_t.mode==="tracked"?`Watching ${String(es($e,i).files.size)} tracked file(s)`:`Watching ${String(B.length)} project root(s)`;e.info(`${tr} — edit a file to rerun, press h for keybinds, q to quit.`);const lt=async()=>{if(!ke){ke=!0;try{if(U.length===0){e.info("No tasks match the active filter — press a to clear it.");return}$e=(await L()).results,xe?.close(),xe=Re().handle}finally{ke=!1}}};await new Promise(le=>{let me=!1,qt;const Wt=()=>{Ut()},Ut=()=>{me||(me=!0,qt?.close(),process.off("SIGINT",Wt),xe?.close(),le())};process.on("SIGINT",Wt),qt=Qn({handlers:{onClearFilter:async()=>{const Ue=ie(void 0);e.info(`Filter cleared — running ${String(Ue)} task(s).`),await lt()},onFilter:async Ue=>{const sr=ue,Vt=ie(Ue);if(Vt===0){e.info(`Filter "${Ue}" matched no projects — keeping previous filter.`),ie(sr);return}e.info(`Filter "${Ue}" matched ${String(Vt)} task(s).`),await lt()},onHelp:()=>{Kn(process.stdout)},onQuit:()=>{Ut()},onRerun:lt}})});return}if(t.flaky!==!1){const B=Rr(i,{minRuns:2},D.runHistory);if(B.length>0){e.info(""),e.info("Flaky tasks (based on historical runs):"),e.info("");for(const Q of Er(B))e.info(` ${Q}`);e.info("")}}const F=[];for(const[B,Q]of D.results)Q.retryAttempts&&Q.retryAttempts>0&&F.push(B);const N=t.failOnRetry===!0&&F.length>0;if(N){const B=F.slice(0,5),Q=F.length-B.length,ue=Q>0?`${B.join(", ")}, and ${String(Q)} more`:B.join(", ");e.warn(""),e.warn(`--fail-on-retry: ${String(F.length)} task(s) succeeded only after retry: ${ue}`)}if(se||N){const B=N&&!se?"Some tasks succeeded only after retry (--fail-on-retry).":"Some tasks failed.",Q=2e3,ue=[];for(const[ie,ke]of D.results){if(ke.status!=="failure")continue;const $e=ke.terminalOutput??"",Re=$e.length>Q?`…${$e.slice(-Q)}`:$e,xe=ke.code??"?";ue.push(` ${ie} (exit ${String(xe)}):
|
|
186
|
+
${Re.split(`
|
|
187
|
+
`).map(Ke=>` ${Ke}`).join(`
|
|
188
|
+
`)}`)}throw new Error(ue.length>0?`${B}
|
|
189
|
+
${ue.join(`
|
|
190
|
+
`)}`:B)}_.length>0&&!t.failFast&&await vs(_,i,w,d,void 0,Te),de>0&&(e.info(""),We?e.info(`${String(de)} service(s) stopped (--stop-services).`):e.info(`${String(de)} service(s) started in the background. Run \`vis service stop --all\` to clean up.`))}}finally{Nt(),Gt&&(process.off("SIGINT",Je),process.off("SIGTERM",Je)),We&&ye.length>0&&await Promise.all(ye.map(async g=>{try{await ri(i,g)}catch{}}))}};export{qo as createRetryBudget,wa as default};
|