plevinjs 0.2.1 → 0.2.2

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.
Files changed (63) hide show
  1. package/README.md +78 -13
  2. package/dist/cli.d.ts +4 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +16 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/compress.d.ts +5 -0
  7. package/dist/compress.d.ts.map +1 -0
  8. package/dist/compress.js +954 -0
  9. package/dist/compress.js.map +1 -0
  10. package/dist/countries.d.ts +1 -1
  11. package/dist/countries.d.ts.map +1 -1
  12. package/dist/countries.js +251 -250
  13. package/dist/countries.js.map +1 -1
  14. package/dist/derive.d.ts +1 -0
  15. package/dist/derive.d.ts.map +1 -1
  16. package/dist/derive.js +12 -6
  17. package/dist/derive.js.map +1 -1
  18. package/dist/estimate.d.ts +38 -0
  19. package/dist/estimate.d.ts.map +1 -0
  20. package/dist/estimate.js +263 -0
  21. package/dist/estimate.js.map +1 -0
  22. package/dist/extra.d.ts.map +1 -1
  23. package/dist/extra.js +12 -12
  24. package/dist/extra.js.map +1 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +51 -6
  27. package/dist/index.js.map +1 -1
  28. package/dist/leaves.d.ts +30 -0
  29. package/dist/leaves.d.ts.map +1 -0
  30. package/dist/leaves.js +183 -0
  31. package/dist/leaves.js.map +1 -0
  32. package/dist/lzma.d.ts +18 -0
  33. package/dist/lzma.d.ts.map +1 -1
  34. package/dist/lzma.js +18 -18
  35. package/dist/lzma.js.map +1 -1
  36. package/dist/matcher.d.ts +25 -0
  37. package/dist/matcher.d.ts.map +1 -0
  38. package/dist/matcher.js +198 -0
  39. package/dist/matcher.js.map +1 -0
  40. package/dist/models.d.ts +7 -0
  41. package/dist/models.d.ts.map +1 -1
  42. package/dist/plevin.min.js +258 -257
  43. package/dist/reader.d.ts.map +1 -1
  44. package/dist/reader.js +12 -1
  45. package/dist/reader.js.map +1 -1
  46. package/dist/selection.d.ts +34 -0
  47. package/dist/selection.d.ts.map +1 -0
  48. package/dist/selection.js +338 -0
  49. package/dist/selection.js.map +1 -0
  50. package/dist/slim.d.ts +21 -0
  51. package/dist/slim.d.ts.map +1 -0
  52. package/dist/slim.js +639 -0
  53. package/dist/slim.js.map +1 -0
  54. package/dist/slim.min.js +1 -0
  55. package/dist/stats.d.ts +61 -0
  56. package/dist/stats.d.ts.map +1 -0
  57. package/dist/stats.js +368 -0
  58. package/dist/stats.js.map +1 -0
  59. package/dist/writer.d.ts +32 -0
  60. package/dist/writer.d.ts.map +1 -0
  61. package/dist/writer.js +325 -0
  62. package/dist/writer.js.map +1 -0
  63. package/package.json +7 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slim.js","sourceRoot":"","sources":["../src/slim.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ var Z=n=>{throw new Error(`lzma: ${n}`)},ve=class{bytes;length=0;done=!1;data;probs;context;positionMask;matchMask;range=-1;code=0;at=5;state=0;recent0=0;recent1=0;recent2=0;recent3=0;constructor(e,[t,r,s],o=0){(e.length<5||e[0]!==0)&&Z("not a stream"),this.data=e,this.bytes=new Uint8Array(Math.max(o,e.length*4,256)),this.probs=new Uint16Array(1846+(768<<t+r)).fill(1024),this.context=t,this.positionMask=(1<<r)-1,this.matchMask=(1<<s)-1;for(let i=1;i<5;i+=1)this.code=this.code<<8|e[i]}bit(e){let t=this.probs,r=t[e],s=Math.imul(this.range>>>11,r),o=0;return(this.code^2147483648)<(s^2147483648)?(this.range=s,t[e]=r+(2048-r>>5)):(this.range=this.range-s|0,this.code=this.code-s|0,t[e]=r-(r>>5),o=1),this.range>>>24||(this.at>=this.data.length&&Z("the stream ends early"),this.range<<=8,this.code=this.code<<8|this.data[this.at++]),o}direct(e){let t=0;for(let r=0;r<e;r+=1){this.range>>>=1;let s=(this.code^2147483648)>=(this.range^2147483648)?1:0;s&&(this.code=this.code-this.range|0),t=t*2+s,this.range>>>24||(this.at>=this.data.length&&Z("the stream ends early"),this.range<<=8,this.code=this.code<<8|this.data[this.at++])}return t}tree(e,t){let r=1;for(let s=0;s<t;s+=1)r=r<<1|this.bit(e+r);return r-(1<<t)}reversed(e,t){let r=1,s=0;for(let o=0;o<t;o+=1){let i=this.bit(e+r);r=r<<1|i,s|=i<<o}return s}span(e,t){return this.bit(e+0)?this.bit(e+0+1)?16+this.tree(e+258,8):8+this.tree(e+130+(t<<3),3):this.tree(e+2+(t<<3),3)}distance(e){let t=this.tree(432+(Math.min(e,3)<<6),6);if(t<4)return t;let r=(t>>1)-1,s=(2|t&1)*2**r;return t<14?s+this.reversed(688+s-t-1,r):s+this.direct(r-4)*16+this.reversed(802,4)}room(e){if(this.length+e<=this.bytes.length)return;let t=new Uint8Array(Math.max(this.bytes.length*2,this.length+e));t.set(this.bytes.subarray(0,this.length)),this.bytes=t}literal(){let e=this.bytes,t=this.length,r=t?e[t-1]:0,s=1846+768*(((t&this.positionMask)<<this.context)+(r>>8-this.context)),o=1;if(this.state>=7){let a=e[t-this.recent0-1];for(;o<256;){let l=a>>7&1;a<<=1;let c=this.bit(s+(1+l<<8)+o);if(o=o<<1|c,c!==l)break}}for(;o<256;)o=o<<1|this.bit(s+o);this.room(1),this.bytes[this.length++]=o&255;let i=this.state;this.state=i<4?0:i<10?i-3:i-6}copy(e){this.room(e);let t=this.bytes,r=this.length-this.recent0-1;for(let s=0;s<e;s+=1)t[this.length+s]=t[r+s];this.length+=e}until(e){for(;!this.done&&this.length<e;)this.step();return this.bytes}step(){let e=this.length&this.matchMask,t=this.state;if(!this.bit(0+(t<<4|e))){this.literal();return}let s=this.bit(192+t)?this.repeat(t,e):this.fresh(t,e);this.done||(this.recent0>=this.length&&Z("a match reaches before the start"),this.copy(s+2))}fresh(e,t){this.recent3=this.recent2,this.recent2=this.recent1,this.recent1=this.recent0;let r=this.span(818,t);return this.state=e<7?7:10,this.recent0=this.distance(r),this.done=this.recent0===4294967295,r}repeat(e,t){if(this.length||Z("a repeat before any byte"),this.bit(204+e))this.rotate(e);else if(!this.bit(240+(e<<4|t)))return this.state=e<7?9:11,-1;return this.state=e<7?8:11,this.span(1332,t)}rotate(e){let t=this.recent1;this.bit(216+e)&&(t=this.recent2,this.bit(228+e)&&(t=this.recent3,this.recent3=this.recent2),this.recent2=this.recent1),this.recent1=this.recent0,this.recent0=t}},Ve=(n,e)=>{let t=new ve(n,e);return t.until(Number.POSITIVE_INFINITY),t.bytes.subarray(0,t.length)};var zt=[["region.name","text"],["region.code","text"],["region.iso","text"],["region.type","text"],["region.id","number"],["region.country","text"],["district.name","text"],["district.code","text"],["district.id","number"],["metro.code","number"],["metro.label","text"],["city.name","text"],["city.ascii","text"],["city.id","number"],["city.population","number"],["city.type","number"],["city.postal","text"],["city.postal_partial","number"],["city.timezone","number"],["city.elevation","signed"],["city.country","text"],["city.metro","link"],["city.region","link"],["city.district","link"],["place.lat","degrees"],["place.lon","degrees"],["place.accuracy","number"],["place.granularity","number"],["place.confidence","number"],["place.city","link"],["operator.company","text"],["operator.website","text"],["operator.category","number"],["operator.tier","number"],["operator.peering","number"],["operator.scope","text"],["operator.rir","text"],["operator.since","number"],["operator.street","text"],["operator.state","text"],["operator.postal","text"],["operator.abuse_email","text"],["operator.country","text"],["operator.city","link"],["carrier.user_count","number"],["carrier.mcc","number"],["carrier.mnc","number"],["abuse.name","text"],["abuse.user_type","number"],["abuse.service","number"],["abuse.evidence","number"],["abuse.threat","number"],["abuse.is_anycast","number"],["abuse.is_satellite","number"],["abuse.risk","number"],["abuse.level","number"],["abuse.last_seen_days","number"],["network.asn","number"],["network.handle","text"],["network.brand","text"],["network.operator","link"],["network.carrier","link"],["network.abuse","link"]],V=zt.map(([n,e])=>{let[t,r]=n.split(".");return{id:n,kind:e,table:t,name:r}}),W=({id:n,kind:e})=>`${e==="link"?"link":"col"}.${n}`,oe=["region","district","metro","city","place","operator","carrier","abuse","network"],Je={region:["region.name"],district:["district.name"],metro:["metro.code"],city:["city.country","city.ascii","city.name"],place:["place.city","place.lat","place.lon"],operator:["operator.country","operator.company"],network:["network.asn"]},X=["place","network","abuse","prefix","rpki","roas","rir","country","since"],C=["place.city","city.country"],We=["hosting","cdn","content"],ie=[["abuse.evidence",["abuse.evidence"]],["abuse.is_anonymous",["abuse.service"]],["abuse.is_anonymous_vpn",["abuse.service"]],["abuse.is_anycast",["abuse.is_anycast"]],["abuse.is_crawler",["abuse.user_type"]],["abuse.is_hosting_provider",["abuse.user_type","operator.category"]],["abuse.is_malicious",["abuse.level"]],["abuse.is_private_relay",["abuse.service"]],["abuse.is_proxy",["abuse.service"]],["abuse.is_public_proxy",["abuse.service"]],["abuse.is_residential_proxy",["abuse.service"]],["abuse.is_satellite",["network.abuse","abuse.is_satellite"]],["abuse.is_tor_exit_node",["abuse.service"]],["abuse.last_seen_days",["abuse.last_seen_days"]],["abuse.level",["abuse.level"]],["abuse.name",["abuse.name"]],["abuse.network_risk",["network.abuse","abuse.risk"]],["abuse.provider",["abuse.name","abuse.service","network.brand"]],["abuse.risk",["abuse.risk"]],["abuse.service",["abuse.service"]],["abuse.threat",["abuse.threat"]],["metro.code",["place.city","city.metro","metro.code"]],["metro.label",["place.city","city.metro","metro.label"]],["network.asn",["network.asn"]],["network.carrier.is_mobile",["abuse.user_type","operator.category"]],["network.carrier.mcc",["network.carrier","carrier.mcc"]],["network.carrier.mnc",["network.carrier","carrier.mnc"]],["network.carrier.user_count",["network.carrier","carrier.user_count"]],["network.carrier.user_type",["abuse.user_type","operator.category"]],["network.country",["spine.country"]],["network.handle",["network.handle"]],["network.operator.abuse_email",["network.operator","operator.abuse_email"]],["network.operator.brand",["network.brand"]],["network.operator.category",["network.operator","operator.category"]],["network.operator.city",["network.operator","operator.city","city.name","city.id"]],["network.operator.company",["network.operator","operator.company"]],["network.operator.country",["network.operator","operator.country"]],["network.operator.domain",["network.operator","operator.website","operator.abuse_email"]],["network.operator.peering",["network.operator","operator.peering"]],["network.operator.postal",["network.operator","operator.postal"]],["network.operator.rir",["network.operator","operator.rir"]],["network.operator.scope",["network.operator","operator.scope"]],["network.operator.since",["network.operator","operator.since"]],["network.operator.state",["network.operator","operator.state"]],["network.operator.street",["network.operator","operator.street"]],["network.operator.tier",["network.operator","operator.tier"]],["network.operator.website",["network.operator","operator.website"]],["network.prefix",["spine.prefix"]],["network.rir",["spine.rir"]],["network.roas",["spine.roas"]],["network.rpki",["spine.rpki"]],["network.since",["spine.since"]],["place.city.ascii",["place.city","city.ascii"]],["place.city.elevation",["place.city","city.elevation"]],["place.city.id",["place.city","city.id"]],["place.city.name",["place.city","city.name"]],["place.city.population",["place.city","city.population"]],["place.city.postal",["place.city","city.postal"]],["place.city.postal_partial",["place.city","city.postal","city.postal_partial"]],["place.city.timezone",["place.city","city.timezone"]],["place.city.type",["place.city","city.type"]],["place.country.code",C],["place.country.common",C],["place.country.driving_side",C],["place.country.european_union",C],["place.country.flag",C],["place.country.iso3",C],["place.country.name",C],["place.country.numeric",C],["place.country.official",C],["place.district.code",["place.city","city.district","district.code"]],["place.district.id",["place.city","city.district","district.id"]],["place.district.name",["place.city","city.district","district.name"]],["place.point.accuracy",["place.accuracy"]],["place.point.confidence",["place.confidence"]],["place.point.granularity",["place.granularity"]],["place.point.lat",["place.lat"]],["place.point.lon",["place.lon"]],["place.region.code",["place.city","city.region","region.code"]],["place.region.id",["place.city","city.region","region.id"]],["place.region.iso",["place.city","city.region","region.iso"]],["place.region.name",["place.city","city.region","region.name"]],["place.region.type",["place.city","city.region","region.type"]]],Vt=[["abuse.is_tor_exit_node","abuse.service",["tor_exit_node"]],["abuse.is_private_relay","abuse.service",["private_relay"]],["abuse.is_anonymous_vpn","abuse.service",["anonymous_vpn"]],["abuse.is_public_proxy","abuse.service",["public_proxy"]],["abuse.is_residential_proxy","abuse.service",["residential_proxy"]],["abuse.is_proxy","abuse.service",["public_proxy","residential_proxy"]],["abuse.is_crawler","abuse.user_type",["search_engine_spider"]],["abuse.is_hosting_provider","abuse.user_type",We],["abuse.is_hosting_provider","operator.category",We],["network.carrier.is_mobile","abuse.user_type",["cellular"]],["network.carrier.is_mobile","operator.category",["cellular"]]],Qe={categories:["","residential","business","hosting","education","government","military","cdn","content","infrastructure","cellular","search_engine_spider","traveler","transit","exchange","non-profit"],services:["","public_proxy","residential_proxy","anonymous_vpn","tor_exit_node","private_relay"]},je={"abuse.service":"services","abuse.user_type":"categories","operator.category":"categories"},Wt=ie.map(([n])=>n),$n=Object.fromEntries(ie),Ze=[["categories",["abuse.user_type","operator.category"]],["services",["abuse.service"]],["evidence",["abuse.evidence"]],["threats",["abuse.threat"]],["levels",["abuse.level"]],["granularity",["place.granularity"]],["rpki",["spine.rpki"]],["rirs",["spine.rir"]],["place_types",["city.type"]],["timezones",["city.timezone"]],["countries",["spine.country"]]],Ye=(n,e)=>e===n||e.startsWith(`${n}.`),Xe=(n,e,t)=>{let r=Vt.filter(([o,i])=>o===n&&i===e);if(r.length===0)return null;let s=t[je[e]]??Qe[je[e]]??[];return r.flatMap(([,,o])=>o.map(i=>Math.max(s.indexOf(i),0)))},jt=(n,e)=>{let t=new Map;for(let[r,s]of n)for(let o of s){let i=Xe(r,o,e);if(!t.has(o)){t.set(o,i);continue}let a=t.get(o);t.set(o,a&&i?[...a,...i]:null)}return t},Yt=(n,e,t,r)=>e.every(s=>{let o=t.get(s);return o===void 0?!1:o===null?!0:Xe(n,s,r)?.every(a=>o.includes(a))??!1}),Jt=(n,e,t,r,s)=>{let o=new Set(e);[...o].some(p=>p.startsWith("region."))&&o.has("city.country")&&o.add("region.country"),o.has("abuse.risk")&&s.has("abuse.level")&&o.add("abuse.level"),["network.handle","network.operator","operator.company"].every(p=>o.has(p))&&o.delete("network.brand");let a=jt(t,r);for(let p of o)a.has(p)||a.set(p,null);let l=t.map(([p])=>p),c=l.includes("abuse.provider")&&!l.includes("network.operator.brand"),u=ie.filter(([p,h])=>Yt(p,h,a,r)).map(([p])=>p).filter(p=>s.has(p)).filter(p=>!c||p!=="network.operator.brand");return{name:n,columns:o,narrow:a,fields:u,sparse:c,has:p=>o.has(p),table:p=>V.some(h=>h.table===p&&o.has(h.id))}},qe=n=>[...new Set(n.split("+").filter(Boolean))].sort(),Qt=n=>n==="full"?"plevin.plv":`plevin.${qe(n).join("+").replace(/[.+]/g,"-")}.plv`,et=(n,e=new Set(Wt),t=Qe)=>{let r=qe(n),s=n==="full",o=ie.filter(([l])=>e.has(l)).filter(([l])=>s||r.some(c=>Ye(c,l))),i=r.filter(l=>!s&&!o.some(([c])=>Ye(l,c)));if(o.length===0||i.length>0)throw new Error(`the database holds no field for: ${i.join(", ")||n}`);let a=new Set(o.flatMap(([,l])=>l));return Jt(s?"full":r.join("+"),a,o,t,e)};var H=(n,e)=>e.some(t=>n.has(t)),tt=(n,e,t)=>{if(!n.has(e))return!1;let r=n.narrow.get(e);return r==null||r.includes(t)},Zt=(n,e)=>n.has(e)&&!n.narrow.get(e),Xt=[1,2,3,4,5],qt=[3,7,8],rt=["cellular","crawler","servers","any"],er={cellular:[10],crawler:[11],servers:qt},Se={risk:["abuse.risk"],level:["abuse.level"],evidence:["abuse.evidence"],threat:["abuse.threat"],name:["abuse.name"],anycast:["abuse.is_anycast"],satellite:["abuse.is_satellite"],seen:["abuse.last_seen_days"]},F=[...Xt.map(n=>`service${n}`),...rt.map(n=>`kind.${n}`),...Object.keys(Se)],tr=rt.map(n=>`kind.${n}`),nt=(n,e,t)=>{let r=t.slice(5);return r==="any"?Zt(n,e):er[r].some(s=>tt(n,e,s))},Ae=(n,e)=>e.startsWith("service")?tt(n,"abuse.service",Number(e.slice(7))):e.startsWith("kind.")?nt(n,"abuse.user_type",e):H(n,Se[e]),rr=(n,e)=>n.has("network.operator")&&nt(n,"operator.category",e),st=Se,nr=["city.name","city.ascii","city.id","city.population","city.postal","city.elevation"],sr=["operator.company","operator.peering","operator.since"],xe=["tier","scope","rir","country","state","website","abuse_email","street","postal"],Le=["accuracy","granularity","confidence"],P=(n,e)=>({id:n,owner:"place",wants:e}),N=(n,e)=>({id:n,owner:"network",wants:e}),or=()=>{let n=(e,...t)=>e.has("place.city")&&H(e,t);return[P("point",e=>H(e,["place.lat","place.lon"])),...Le.map(e=>P(`place.${e}`,t=>t.has(`place.${e}`))),P("city",e=>n(e,...nr)),P("city.postal_partial",e=>n(e,"city.postal_partial")),P("city.type",e=>n(e,"city.type")),P("city.timezone",e=>n(e,"city.timezone")),P("city.country",e=>n(e,"city.country")),P("region",e=>e.has("city.region")&&H(e,Object.keys(ir))),P("district",e=>e.has("city.district")&&H(e,["district.name","district.code","district.id"])),P("metro",e=>e.has("city.metro")&&H(e,["metro.code","metro.label"]))]},ir={"region.name":!0,"region.code":!0,"region.iso":!0,"region.id":!0,"region.type":!0,"region.country":!0},ar=()=>[N("network",n=>n.has("network.handle")),N("network.asn",n=>n.has("network.asn")),N("operator",n=>n.has("network.brand")||n.has("network.operator")&&H(n,[...sr,"operator.city"])),...xe.map(n=>N(`operator.${n}`,e=>e.has("network.operator")&&e.has(`operator.${n}`))),N("carrier",n=>n.has("network.carrier")&&n.has("carrier.user_count")),...["mcc","mnc"].map(n=>N(`carrier.${n}`,e=>e.has("network.carrier")&&e.has(`carrier.${n}`))),...tr.map(n=>N(`category.${n}`,e=>rr(e,n))),...F.map(n=>N(`net.${n}`,e=>e.has("network.abuse")&&Ae(e,n)))],cr=()=>F.flatMap(n=>[{id:`stop.${n}`,owner:"stop",wants:e=>e.has("network.abuse")&&Ae(e,n)},{id:`whole.${n}`,owner:"whole",wants:e=>!e.has("network.abuse")&&e.table("abuse")&&Ae(e,n)}]),lr=(n,e)=>({id:n,owner:"spine",wants:t=>H(t,e.map(r=>`spine.${r}`))}),Ie={stop:F.length,whole:F.length*2},ur=["prefix","rir","country","since","rpki","roas"],_e=[...or(),...ar(),...cr(),...ur.map(n=>lr(n,[n]))];if(_e.length>128)throw new Error("more leaves than mask bits");var ae=Uint32Array.from({length:256},(n,e)=>{let t=e;for(let r=0;r<8;r+=1)t=t&1?t>>>1^3988292384:t>>>1;return t>>>0}),_=new Uint32Array(590848),L=new Uint32Array(0),ce=class{lengths=new Uint32Array(274);distances=new Uint32Array(274);end;readPos=0;readAhead=0;count=0;cyclicPos=0;data;constructor(e){this.data=e,this.end=e.length,_.fill(0);let t=2*Math.min(1048577,e.length+1);L.length<t&&(L=new Uint32Array(t))}get available(){return this.end-this.readPos}find(){if(this.count=this.search(),this.readAhead+=1,this.count===0)return 0;let e=this.lengths[this.count-1];if(e!==64)return e;let t=Math.min(this.available+1,273),r=this.readPos-1;return this.same(r,r-this.distances[this.count-1]-1,e,t)}skip(e){if(e!==0){for(let t=0;t<e;t+=1)this.skipOne();this.readAhead+=e}}same(e,t,r,s){let{data:o}=this,i=r;for(;i<s&&o[e+i]===o[t+i];)i+=1;return i}limit(){let e=this.available;return 64<=e?64:e}search(){let e=this.limit();if(e<4)return this.readPos+=1,0;let{data:t,lengths:r,distances:s}=this,o=this.readPos,i=o+1048577,a=ae[t[o]]^t[o+1],l=a&1023,c=(a^t[o+2]<<8)&65535,u=(a^t[o+2]<<8^ae[t[o+3]]<<5)&524287,p=i-_[l],h=i-_[1024+c],b=_[66560+u];_[l]=i,_[1024+c]=i,_[66560+u]=i;let d=1,m=0;return p<1048577&&t[o-p]===t[o]&&(d=2,r[0]=2,s[0]=p-1,m=1),p!==h&&h<1048577&&t[o-h]===t[o]&&(d=3,s[m]=h-1,m+=1,p=h),m!==0&&(d=this.same(o,o-p,d,e),r[m-1]=d,d===e)?(this.walk(e,i,o,b,-1,0),this.move(),m):(m=this.walk(e,i,o,b,Math.max(d,3),m),this.move(),m)}skipOne(){let e=this.limit();if(e<4){this.readPos+=1;return}let{data:t}=this,r=this.readPos,s=r+1048577,o=ae[t[r]]^t[r+1],i=o&1023,a=(o^t[r+2]<<8)&65535,l=(o^t[r+2]<<8^ae[t[r+3]]<<5)&524287,c=_[66560+l];_[i]=s,_[1024+a]=s,_[66560+l]=s,this.walk(e,s,r,c,-1,0),this.move()}move(){this.cyclicPos+=1,this.cyclicPos===1048577&&(this.cyclicPos=0),this.readPos+=1}walk(e,t,r,s,o,i){let{data:a,lengths:l,distances:c}=this,u=o>=0,p=i,h=o,b=s,d=(this.cyclicPos<<1)+1,m=this.cyclicPos<<1,f=0,y=0;for(let g=48;;g-=1){let A=t-b;if(g===0||A>=1048577)return L[d]=0,L[m]=0,p;let I=this.cyclicPos-A+(A>this.cyclicPos?1048577:0)<<1,z=r-A,S=Math.min(f,y);if(a[z+S]===a[r+S]){if(S=this.same(z,r,S+1,e),S===e)return u&&h<S&&(l[p]=S,c[p]=A-1,p+=1),L[m]=L[I],L[d]=L[I+1],p;u&&h<S&&(h=S,l[p]=S,c[p]=A-1,p+=1)}a[z+S]<a[r+S]?(L[m]=b,m=I+1,b=L[m],y=S):(L[d]=b,d=I,b=L[d],f=S)}}};var Ce=Uint8Array.of(128,103,91,84,78,73,69,66,63,61,58,56,54,52,51,49,48,46,45,44,43,42,41,40,39,38,37,36,35,34,34,33,32,31,31,30,29,29,28,28,27,26,26,25,25,24,24,23,23,22,22,22,21,21,20,20,19,19,19,18,18,17,17,17,16,16,16,15,15,15,14,14,14,13,13,13,12,12,12,11,11,11,11,10,10,10,10,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,5,5,5,5,5,4,4,4,4,3,3,3,3,3,2,2,2,2,2,2,1,1,1,1,1),fr=1<<24,Oe=2048,at=58,yr=0,gr=1,wr=2,kr=3,ct=4,v=4,M=4096,lt=1<<30,ue=4294967295,Y=7,j=128,ut=40,pe=16,pt=63,Ue=272,vr=2e6,q=n=>n<4?0:n<10?n-3:n-6,he=n=>n<Y?7:10,ee=n=>n<Y?8:11,ht=n=>n<Y?9:11,Re=n=>{if(n<4)return n;let e=31-Math.clz32(n);return(e<<1)+(n>>>e-1&1)},bt=n=>n<6?n-2:3,U=(n,e)=>Ce[n[e]>>4],x=(n,e)=>Ce[(n[e]^Oe-1)>>4],be=(n,e,t)=>Ce[(n[e]^(t?Oe-1:0))>>4],te=(n,e,t,r)=>{let s=0,o=r+(1<<t);for(;o!==1;){let i=o&1;o>>=1,s+=be(n,e+o,i)}return s},mt=(n,e,t,r)=>{let s=0,o=1,i=r;for(let a=0;a<t;a+=1){let l=i&1;i>>=1,s+=be(n,e+o,l),o=(o<<1)+l}return s},Pe=class{low=0;extra=1;range=4294967295;cache=0;count=0;at=0;kinds=new Uint8Array(at);slots=new Int32Array(at);out=new Uint8Array(4096);size=0;probs;constructor(e){this.probs=e}bit(e,t){this.kinds[this.count]=t,this.slots[this.count]=e,this.count+=1}tree(e,t,r){let s=1;for(let o=t-1;o>=0;o-=1){let i=r>>>o&1;this.bit(e+s,i),s=(s<<1)+i}}reverse(e,t,r){let s=1,o=r;for(let i=0;i<t;i+=1){let a=o&1;o>>>=1,this.bit(e+s,a),s=(s<<1)+a}}direct(e,t){for(let r=t-1;r>=0;r-=1)this.kinds[this.count]=wr+(e>>>r&1),this.count+=1}flush(){for(let e=0;e<5;e+=1)this.kinds[this.count]=ct,this.count+=1}encode(){let{probs:e,kinds:t,slots:r}=this;for(;this.at<this.count;){this.range<fr&&(this.shift(),this.range=this.range<<8>>>0);let s=t[this.at];if(s===yr){let o=e[r[this.at]];this.range=(this.range>>>11)*o,e[r[this.at]]=o+(Oe-o>>5)}else if(s===gr){let o=e[r[this.at]],i=o*(this.range>>>11);this.low+=i,this.range-=i,e[r[this.at]]=o-(o>>5)}else if(s===ct){this.finish();return}else this.range>>>=1,s===kr&&(this.low+=this.range);this.at+=1}this.count=0,this.at=0}bytes(){return this.out.slice(0,this.size)}finish(){this.range=4294967295;do this.shift(),this.at+=1;while(this.at<this.count);this.low=0,this.extra=1,this.cache=0,this.count=0,this.at=0}push(e){if(this.size===this.out.length){let t=new Uint8Array(this.size*2);t.set(this.out),this.out=t}this.out[this.size]=e,this.size+=1}shift(){let e=this.low%4294967296;if(e<4278190080||this.low>=4294967296){let t=this.low>=4294967296?1:0,r=this.cache;do this.push(r+t&255),r=255,this.extra-=1;while(this.extra!==0);this.cache=e>>>24&255}this.extra+=1,this.low=(e&16777215)*256}},me=class{prices=new Uint32Array(16*Ue);counters=new Int32Array(16);base;probs;constructor(e,t){this.base=e,this.probs=t}low(e){return this.base+2+e*8}middle(e){return this.base+130+e*8}price(e,t){return this.prices[t*Ue+e-2]}update(e){let{probs:t,base:r,prices:s}=this;this.counters[e]=pt;let o=U(t,r),i=x(t,r),a=i+U(t,r+1),l=i+x(t,r+1),c=e*Ue;for(let u=0;u<pt;u+=1)u<8?s[c+u]=o+te(t,this.low(e),3,u):u<16?s[c+u]=a+te(t,this.middle(e),3,u-8):s[c+u]=l+te(t,r+258,8,u-16)}},Te=class{state=new Uint8Array(M+273+2);previousLiteral=new Uint8Array(M+273+2);twice=new Uint8Array(M+273+2);positionTwice=new Uint32Array(M+273+2);backTwice=new Uint32Array(M+273+2);price=new Uint32Array(M+273+2);position=new Uint32Array(M+273+2);back=new Uint32Array(M+273+2);backs=new Uint32Array((M+273+2)*v)},Me=class{probs;ranges;matcher;matchLengths;repLengths;path=new Te;reps=new Uint32Array(v);repLens=new Uint32Array(v);slotPrices=new Uint32Array(256);distancePrices=new Uint32Array(4*j);alignPrices=new Uint32Array(pe);literalContext;literalMask;positionMask;state=0;longest=0;found=0;matchPriceCount=2147483647;alignPriceCount=2147483647;endIndex=0;currentIndex=0;back=0;length=0;data;constructor(e,[t,r,s]){this.data=e,this.probs=new Uint16Array(1846+(768<<t+r)).fill(1024),this.ranges=new Pe(this.probs),this.matcher=new ce(e),this.matchLengths=new me(818,this.probs),this.repLengths=new me(1332,this.probs),this.literalContext=t,this.literalMask=(1<<r)-1,this.positionMask=(1<<s)-1;for(let o=0;o<=this.positionMask;o+=1)this.matchLengths.update(o),this.repLengths.update(o)}run(){let{matcher:e,ranges:t,data:r}=this;r.length>0&&(e.skip(1),e.readAhead=0,t.bit(0,0),t.tree(1846,8,r[0]));let s=e.readPos-e.readAhead;for(;t.encode(),!(e.readPos>=e.end&&e.readAhead===0);)this.optimum(s),this.encode(this.back,this.length,s),s+=this.length;return this.endMarker(s),t.flush(),t.encode(),t.bytes()}endMarker(e){let{ranges:t}=this,r=e&this.positionMask;t.bit(0+this.state*16+r,1),t.bit(192+this.state,0),this.match(r,4294967295,2)}literalBase(e,t){let r=this.literalContext,s=((e&this.literalMask)<<r)+(t>>8-r);return 1846+768*s}literal(e){let{matcher:t,data:r,ranges:s}=this,o=t.readPos-t.readAhead,i=this.literalBase(e,r[o-1]);this.state<Y?s.tree(i,8,r[o]):this.literalMatched(i,r[o-this.reps[0]-1],r[o]),this.state=q(this.state)}literalMatched(e,t,r){let s=256,o=r+256,i=t;do{i<<=1;let a=i&s;this.ranges.bit(e+s+a+(o>>8),o>>7&1),o<<=1,s&=~(i^o)}while(o<65536)}writeLength(e,t,r){let{ranges:s}=this,o=e.base,i=r-2;i<8?(s.bit(o,0),s.tree(e.low(t),3,i)):i<16?(s.bit(o,1),s.bit(o+1,0),s.tree(e.middle(t),3,i-8)):(s.bit(o,1),s.bit(o+1,1),s.tree(o+258,8,i-16)),e.counters[t]-=1,e.counters[t]===0&&e.update(t)}match(e,t,r){let{ranges:s}=this;this.state=he(this.state),this.writeLength(this.matchLengths,e,r);let o=Re(t);s.tree(432+bt(r)*64,6,o),o>=4&&this.writeDistance(t,o),this.reps[3]=this.reps[2],this.reps[2]=this.reps[1],this.reps[1]=this.reps[0],this.reps[0]=t,this.matchPriceCount+=1}writeDistance(e,t){let{ranges:r}=this,s=(t>>1)-1,o=(2|t&1)*2**s,i=e-o;if(t<14){r.reverse(688+o-t-1,s,i);return}r.direct(Math.floor(i/16),s-4),r.reverse(802,4,i&15),this.alignPriceCount+=1}repMatch(e,t,r){let{ranges:s,reps:o}=this,{state:i}=this;if(t===0)s.bit(204+i,0),s.bit(240+i*16+e,r!==1?1:0);else{let a=o[t];s.bit(204+i,1),t===1?s.bit(216+i,0):(s.bit(216+i,1),s.bit(228+i,t-2),t===3&&(o[3]=o[2]),o[2]=o[1]),o[1]=o[0],o[0]=a}if(r===1){this.state=ht(i);return}this.writeLength(this.repLengths,e,r),this.state=ee(i)}encode(e,t,r){let{ranges:s,matcher:o}=this,i=r&this.positionMask;e===ue?(s.bit(0+this.state*16+i,0),this.literal(r)):e<v?(s.bit(0+this.state*16+i,1),s.bit(192+this.state,1),this.repMatch(i,e,t)):(s.bit(0+this.state*16+i,1),s.bit(192+this.state,0),this.match(i,e-v,t)),o.readAhead-=t}literalPrice(e,t,r,s,o){let{probs:i}=this,a=this.literalBase(e,t);if(!r)return te(i,a,8,o);let l=0,c=256,u=o+256,p=s;do{p<<=1;let h=p&c;l+=be(i,a+c+h+(u>>8),u>>7&1),u<<=1,c&=~(p^u)}while(u<65536);return l}shortRepPrice(e,t){let{probs:r}=this;return U(r,204+e)+U(r,240+e*16+t)}pureRepPrice(e,t,r){let{probs:s}=this;if(e===0)return U(s,204+t)+x(s,240+t*16+r);let o=x(s,204+t);return e===1?o+U(s,216+t):o+x(s,216+t)+be(s,228+t,e-2)}repPrice(e,t,r,s){return this.repLengths.price(t,s)+this.pureRepPrice(e,r,s)}distanceLengthPrice(e,t,r){let s=bt(t),o;return e<j?o=this.distancePrices[s*j+e]:o=this.slotPrices[s*64+Re(e)]+this.alignPrices[e&pe-1],o+this.matchLengths.price(t,r)}fillDistancePrices(){let{probs:e,slotPrices:t,distancePrices:r}=this;for(let s=0;s<4;s+=1){let o=s*64;for(let i=0;i<ut;i+=1)t[o+i]=te(e,432+o,6,i);for(let i=14;i<ut;i+=1)t[o+i]+=(i>>1)-1-4<<4;for(let i=0;i<4;i+=1)r[s*j+i]=t[o+i]}for(let s=4;s<j;s+=1){let o=Re(s),i=(o>>1)-1,a=(2|o&1)<<i,l=mt(e,688+a-o-1,i,s-a);for(let c=0;c<4;c+=1)r[c*j+s]=l+t[c*64+o]}this.matchPriceCount=0}fillAlignPrices(){for(let e=0;e<pe;e+=1)this.alignPrices[e]=mt(this.probs,802,4,e);this.alignPriceCount=0}literalChoice(e,t){e.back[t]=ue,e.previousLiteral[t]=0}shortRepChoice(e,t){e.back[t]=0,e.previousLiteral[t]=0}backward(e){let{path:t}=this;this.endIndex=e;let r=e,s=t.position[r],o=t.back[r];do{t.previousLiteral[r]&&(this.literalChoice(t,s),t.position[s]=s-1,t.twice[r]&&(t.previousLiteral[s-1]=0,t.position[s-1]=t.positionTwice[r],t.back[s-1]=t.backTwice[r]));let i=s,a=o;o=t.back[i],s=t.position[i],t.back[i]=a,t.position[i]=r,r=i}while(r!==0);this.currentIndex=t.position[0],this.length=t.position[0],this.back=t.back[0]}optimum(e){let{path:t,matcher:r}=this;if(this.endIndex!==this.currentIndex){let a=t.position[this.currentIndex];this.length=a-this.currentIndex,this.back=t.back[this.currentIndex],this.currentIndex=a;return}r.readAhead===0&&(this.matchPriceCount>=128&&this.fillDistancePrices(),this.alignPriceCount>=pe&&this.fillAlignPrices());let s=this.first(e);if(s<0)return;let o=Uint32Array.from(this.reps),i=1;for(;i<s&&(this.longest=r.find(),this.found=r.count,!(this.longest>=64));i+=1){let a=Math.min(r.available+1,M-1-i);s=this.extend(o,r.readPos-1,s,e+i,i,a)}this.backward(i)}done(e,t){return this.back=e,this.length=t,-1}first(e){let{matcher:t,data:r,path:s,reps:o,repLens:i,probs:a}=this,l=t.distances,c,u;t.readAhead===0?(c=t.find(),u=t.count):(c=this.longest,u=this.found);let p=Math.min(t.available+1,273);if(p<2)return this.done(ue,1);let h=t.readPos-1,b=0;for(let w=0;w<v;w+=1){let I=h-o[w]-1;if(r[h]!==r[I]||r[h+1]!==r[I+1]){i[w]=0;continue}i[w]=t.same(h,I,2,p),i[w]>i[b]&&(b=w)}if(i[b]>=64)return t.skip(i[b]-1),this.done(b,i[b]);if(c>=64)return t.skip(c-1),this.done(l[u-1]+v,c);let d=r[h],m=r[h-o[0]-1];if(c<2&&d!==m&&i[b]<2)return this.done(ue,1);s.state[0]=this.state;let f=e&this.positionMask;s.price[1]=U(a,0+this.state*16+f)+this.literalPrice(e,r[h-1],this.state>=Y,m,d),this.literalChoice(s,1);let y=x(a,0+this.state*16+f),g=y+x(a,192+this.state);if(m===d){let w=g+this.shortRepPrice(this.state,f);w<s.price[1]&&(s.price[1]=w,this.shortRepChoice(s,1))}let A=Math.max(c,i[b]);if(A<2)return this.done(s.back[1],1);s.position[1]=0;for(let w=0;w<v;w+=1)s.backs[w]=o[w];for(let w=A;w>=2;w-=1)s.price[w]=lt;return this.firstReps(g,f),this.firstMatches(y,f,c,u),A}firstReps(e,t){let{path:r,repLens:s}=this;for(let o=0;o<v;o+=1){if(s[o]<2)continue;let i=e+this.pureRepPrice(o,this.state,t);for(let a=s[o];a>=2;a-=1){let l=i+this.repLengths.price(a,t);l>=r.price[a]||(r.price[a]=l,r.position[a]=0,r.back[a]=o,r.previousLiteral[a]=0)}}}firstMatches(e,t,r,s){let{path:o,repLens:i,probs:a}=this,{lengths:l,distances:c}=this.matcher,u=e+U(a,192+this.state),p=i[0]>=2?i[0]+1:2;if(p>r)return;let h=0;for(;p>l[h];)h+=1;for(;;p+=1){let b=c[h],d=u+this.distanceLengthPrice(b,p,t);if(d<o.price[p]&&(o.price[p]=d,o.position[p]=0,o.back[p]=b+v,o.previousLiteral[p]=0),p===l[h]&&(h+=1,h===s))break}}extend(e,t,r,s,o,i){let{path:a,data:l,probs:c}=this,u=this.stateAt(e,o),p=s&this.positionMask,h=a.price[o],b=l[t],d=l[t-e[0]-1],m=h+U(c,0+u*16+p)+this.literalPrice(s,l[t-1],u>=Y,d,b),f=r,y=!1;m<a.price[o+1]&&(a.price[o+1]=m,a.position[o+1]=o,this.literalChoice(a,o+1),y=!0);let g=h+x(c,0+u*16+p),A=g+x(c,192+u);if(d===b&&!(a.position[o+1]<o&&a.back[o+1]===0)){let z=A+this.shortRepPrice(u,p);z<=a.price[o+1]&&(a.price[o+1]=z,a.position[o+1]=o,this.shortRepChoice(a,o+1),y=!0)}if(i<2)return f;let w=Math.min(i,64);!y&&d!==b&&(f=this.literalThenRep(e,t,f,o,s,u,m,i));let I={reps:e,buf:t,cur:o,position:s,state:u,spot:p,matchPrice:g,repMatchPrice:A,available:w,availableFull:i};return this.extendMatches(I,this.extendReps(I,f))}stateAt(e,t){let{path:r}=this,s=r.position[t],o;r.previousLiteral[t]?(s-=1,r.twice[t]?(o=r.state[r.positionTwice[t]],o=r.backTwice[t]<v?ee(o):he(o)):o=r.state[s],o=q(o)):o=r.state[s],s===t-1?o=r.back[t]===0?ht(o):q(o):o=this.advance(e,t,s,o),r.state[t]=o;for(let i=0;i<v;i+=1)r.backs[t*v+i]=e[i];return o}advance(e,t,r,s){let{path:o}=this,i=r,a=s,l;o.previousLiteral[t]&&o.twice[t]?(i=o.positionTwice[t],l=o.backTwice[t],a=ee(a)):(l=o.back[t],a=l<v?ee(a):he(a));let c=i*v;if(l<v){e[0]=o.backs[c+l];let u=1;for(;u<=l;u+=1)e[u]=o.backs[c+u-1];for(;u<v;u+=1)e[u]=o.backs[c+u]}else{e[0]=l-v;for(let u=1;u<v;u+=1)e[u]=o.backs[c+u-1]}return a}raise(e,t,r){let s=t;for(;s<r;)s+=1,e.price[s]=lt;return s}literalThenRep(e,t,r,s,o,i,a,l){let{path:c,probs:u}=this,p=Math.min(l,65),h=this.matcher.same(t,t-e[0]-1,1,p)-1;if(h<2)return r;let b=q(i),d=o+1&this.positionMask,m=a+x(u,0+b*16+d)+x(u,192+b),f=s+1+h,y=this.raise(c,r,f),g=m+this.repPrice(0,h,b,d);return g>=c.price[f]||(c.price[f]=g,c.position[f]=s+1,c.back[f]=0,c.previousLiteral[f]=1,c.twice[f]=0),y}extendReps(e,t){let{path:r,data:s}=this,{reps:o,buf:i,cur:a,state:l,spot:c,repMatchPrice:u}=e,p=t,h=2;for(let b=0;b<v;b+=1){let d=i-o[b]-1;if(s[i]!==s[d]||s[i+1]!==s[d+1])continue;let m=this.matcher.same(i,d,2,e.available);p=this.raise(r,p,a+m);let f=u+this.pureRepPrice(b,l,c);for(let y=m;y>=2;y-=1){let g=f+this.repLengths.price(y,c);g>=r.price[a+y]||(r.price[a+y]=g,r.position[a+y]=a,r.back[a+y]=b,r.previousLiteral[a+y]=0)}b===0&&(h=m+1),p=this.matchLiteralRep(e,p,{back:d,test:m,price:f+this.repLengths.price(m,c),mode:ee(l),previous:b,isRep:!0})}return[p,h]}matchLiteralRep(e,t,r){let{path:s,data:o,probs:i}=this,{buf:a,cur:l,position:c}=e,u=Math.min(e.availableFull,r.test+1+64),p=r.test+1;if(p<u&&(p=this.matcher.same(a,r.back,p,u)),p-=r.test+1,p<2)return t;let h=r.mode,b=c+r.test&this.positionMask,d=r.price+U(i,0+h*16+b)+this.literalPrice(c+r.test,o[a+r.test-1],!0,o[r.back+r.test],o[a+r.test]);h=q(h),b=b+1&this.positionMask;let m=d+x(i,0+h*16+b)+x(i,192+h),f=l+r.test+1+p,y=this.raise(s,t,f),g=m+this.repPrice(0,p,h,b);return g>=s.price[f]||(s.price[f]=g,s.position[f]=l+r.test+1,s.back[f]=0,s.previousLiteral[f]=1,s.twice[f]=1,s.positionTwice[f]=l,s.backTwice[f]=r.isRep?r.previous:r.previous+v),y}extendMatches(e,t){let{path:r,probs:s}=this,{lengths:o,distances:i}=this.matcher,{cur:a,spot:l,matchPrice:c,available:u,state:p}=e,[h,b]=t,d=this.longest,m=this.found;if(d>u){for(d=u,m=0;d>o[m];)m+=1;o[m]=d,m+=1}if(d<b)return h;let f=c+U(s,192+p);h=this.raise(r,h,a+d);let y=0;for(;b>o[y];)y+=1;for(let g=b;;g+=1){let A=i[y],w=f+this.distanceLengthPrice(A,g,l);if(w<r.price[a+g]&&(r.price[a+g]=w,r.position[a+g]=a,r.back[a+g]=A+v,r.previousLiteral[a+g]=0),g===o[y]&&(h=this.matchLiteralRep(e,h,{back:e.buf-A-1,test:g,price:w,mode:he(p),previous:A,isRep:!1}),y+=1,y===m))break}return h}},Ne=(n,e)=>{if(n.length>vr)throw new Error("lzma: a block over 2 MB");return new Me(n,e).run()};var de=new TextEncoder().encode("PLEVIN\0"),wt=2,fe=de.length+5,Ar=[1,2,4,8],ye=16384,dt=32768,kt=128,ft=4096,yt=64,Sr=16,xr=3,Lr=.93,gt=[[3,0,0],[0,0,0],[0,1,1],[0,2,2],[0,3,3]],vt=new TextEncoder,B=class{data=new Uint8Array(1024);length=0;reserve(e){if(this.length+e<=this.data.length)return;let t=new Uint8Array(Math.max(this.data.length*2,this.length+e));t.set(this.data),this.data=t}push(e){this.reserve(1),this.data[this.length++]=e}add(e){this.reserve(e.length),this.data.set(e,this.length),this.length+=e.length}word(e){for(let t=0;t<4;t+=1)this.push(e>>>t*8&255)}varint(e){if(typeof e=="bigint"){let r=e;for(;r>=0x80n;r>>=7n)this.push(Number(r&0x7fn)|128);this.push(Number(r));return}let t=e;for(;t>=128;t=Math.floor(t/128))this.push(t%128|128);this.push(t)}take(){return this.data.slice(0,this.length)}},Ir=(n,e,t)=>{let r=2**(e*8-(t?1:0));return t?n>=-r&&n<r:n>=0&&n<r},_r=(n,e)=>Ar.find(t=>Ir(n,t,e))??8,At=(n,e)=>{let t=1;for(let o=0;o<n.length;o+=1)t=Math.max(t,_r(n[o],e));let r=new Uint8Array(1+n.length*t),s=new DataView(r.buffer);r[0]=t;for(let o=0;o<n.length;o+=1){let i=1+o*t;if(t===8){s.setBigUint64(i,BigInt.asUintN(64,BigInt(n[o])),!0);continue}let a=n[o]<0?n[o]+2**(t*8):n[o];for(let l=0;l<t;l+=1)r[i+l]=a%256,a=Math.floor(a/256)}return r},J=(n,e)=>{let t=[];for(let r=0;r<n.length;r+=e)t.push(Array.prototype.slice.call(n,r,r+e));return t},ge=(n,e)=>{let t=Math.max(Math.floor(n.length/e),1),r=n.filter((o,i)=>i%t===0),s=[gt[0],Number.POSITIVE_INFINITY];for(let o of gt){let i=0;for(let a of r)i+=Ne(a,o).length;i*t<s[1]&&(s=[o,i*t])}return s},Er=(n,e)=>J(n,ye).map(t=>At(t,e)),Ur=n=>J(n,ye).map(e=>{let t=0,r=e.map(s=>{let o=s-t;return t=s,o});return At(r,!0)}),Rr=(n,e)=>{let t=Er(n.values,n.encoding==="signed"),r=Ur(n.values),s=ge(t,e),o=ge(r,e),i=o[1]<s[1],a={count:n.values.length,encoding:i?"delta":n.encoding,block:ye,group:ye,read:n.read},l=i?r:t,c=i?o:s;return{name:n.name,shape:a,blocks:l,heads:[],width:0,fit:c}},St=(n,e)=>{for(let t of e.slice(0,-1))n.varint(t.length);for(let t of e)n.add(t)},Pr=(n,e)=>{let t=Math.min(e,n.length);for(;t>0&&t<n.length&&(n[t]&192)===128;)t-=1;return t},Tr=n=>{let e=new B,t=new Uint8Array(0);for(let r of n){let s=0,o=Math.min(t.length,r.length,255);for(;s<o&&t[s]===r[s];)s+=1;s=Pr(r,s),e.push(s),e.varint(r.length-s),e.add(r.subarray(s)),t=r}return e.take()},Mr=(n,e)=>{let t=J(n.map(s=>vt.encode(s)),ft).map(s=>{let o=new B;return St(o,J(s,yt).map(Tr)),o.take()});return{name:"strings",shape:{count:n.length,encoding:"front",block:ft,group:yt,read:""},blocks:t,heads:[],width:0,fit:ge(t,e)}},Cr=n=>{let e=new B;for(let t=1;t<n.length;t+=1)e.varint(n[t]-n[t-1]);return e.take()},Or=n=>{let e=new B;for(let t=1;t<n.length;t+=1)e.varint((n[t]>>64n)-(n[t-1]>>64n));for(let t of n)e.varint(t&0xffffffffffffffffn);return e.take()},Nr=(n,e)=>typeof n=="bigint"?n-BigInt(e):n-Number(e),Hr=(n,e)=>{let t=J(n,kt),r=new B;r.varint(n.length);for(let o=1;o<t.length;o+=1)r.varint(Nr(t[o][0],t[o-1][0]));let s=t.map(o=>e?Or(o):Cr(o));return St(r,s),r.take()},Fr=(n,e)=>{let t=J(n.keys,dt),r=t.map(a=>Hr(a,n.wide)),s={count:n.keys.length,encoding:"index",block:dt,group:kt,read:""},o=t.map(a=>a[0]),i=n.wide?16:4;return{name:n.name,shape:s,blocks:r,heads:o,width:i,fit:ge(r,e)}},Dr=(n,e)=>n.kind==="values"?Rr(n,e):n.kind==="index"?Fr(n,e):Mr(n.pool,e),Br=({blocks:n,heads:e,width:t},r)=>{let s=new B;s.word(n.length),s.word(t);let o=0;s.word(o);for(let i of r)o+=i.length,s.word(o);for(let i of e)for(let a=t-1;a>=0;a-=1)s.push(Number(BigInt(i)>>BigInt(a*8)&0xffn));for(let i of r)s.add(i);return s.take()},xt=(n,e)=>{let t=Dr(n,e?xr:Sr),[r,s]=t.fit,{name:o,shape:i,blocks:a,width:l}=t,c={...i,lzma:r};if(e){let h=8+4*(a.length+1)+l*a.length;return{name:o,entry:c,size:h+Math.round(s*Lr),body:null}}let u=a.map(h=>Ne(h,r)),p=Br(t,u);return{name:o,entry:c,size:p.length,body:p}},Kr=(n,e,t)=>n.parts.map((r,s)=>(t?.(e?"measuring":"compressing",s,n.parts.length),xt(r,e))),Lt=n=>Array.isArray(n)||typeof n!="object"||n===null?n:Object.fromEntries(Object.entries(n).sort(([e],[t])=>e<t?-1:1).map(([e,t])=>[e,Lt(t)])),$r=(n,e,t,r,s)=>vt.encode(JSON.stringify(Lt({format:wt,built:e,selection:t,fields:n.fields,carries:n.carries,vocabularies:n.books,sections:r,length:s}))),Gr=(n,e,t,r)=>{let s={},o=0;for(let a of r)s[a.name]={...a.entry,offset:o,bytes:a.size},o+=a.size;let i=new Uint8Array(0);for(let a=0;a<8;a+=1){let l=fe+i.length+o,c=$r(n,e,t,s,l),u=c.length===i.length;if(i=c,u)break}return[i,o]},It=(n,e,t,r)=>{let s=Kr(n,!1,r),[o,i]=Gr(n,e,t,s),a=new Uint8Array(fe+o.length+i);a.set(de),a[de.length]=wt,new DataView(a.buffer).setUint32(de.length+1,o.length,!0),a.set(o,fe);let l=fe+o.length;for(let c of s)c.body&&a.set(c.body,l),l+=c.size;return r?.("compressing",n.parts.length,n.parts.length),a},_t=(n,e)=>xt({kind:"index",name:"keys",keys:n,wide:e},!0).size;var zr=new TextEncoder,Vr=[3,7,8],Wr=[["kind.cellular",n=>n===10],["kind.crawler",n=>n===11],["kind.servers",n=>Vr.includes(n)]],k=(n,e,t=0)=>{if(!n.has(e))return new Float64Array(t+1);let r=n.numbers(e),s=new Float64Array(r.length+1);return s.set(r,1),s},R=(n,e)=>n.map(t=>e[t]??0),Pt=(n,e)=>n.map(t=>e(t)?1:0),jr=n=>{let e=new Map;return n[0].map((t,r)=>{let s=n.map(o=>o[r]).join(",");return e.has(s)||e.set(s,e.size),e.get(s)})},He=n=>Float64Array.from(n,(e,t)=>t),Tt=(n,e="")=>{let t=new Map;for(let[r,s]of Wr)t.set(e+r,Pt(n,s));return t.set(`${e}kind.any`,n),t},Yr=n=>{let e=k(n,"col.abuse.service"),t=e.length-1,r=Tt(k(n,"col.abuse.user_type",t));for(let s of[1,2,3,4,5])r.set(`service${s}`,Pt(e,o=>o===s));for(let[s,o]of Object.entries(st))r.set(s,jr(o.map(i=>k(n,`col.${i}`,t))));return r},Jr=n=>{let e=k(n,"link.place.city"),t=o=>k(n,`col.city.${o}`),r=o=>k(n,`link.city.${o}`),s=new Map;s.set("point",He(e));for(let o of Le)s.set(`place.${o}`,k(n,`col.place.${o}`,e.length-1));return s.set("city",e),s.set("city.postal_partial",R(e,t("postal_partial"))),s.set("city.type",R(e,t("type"))),s.set("city.timezone",R(e,t("timezone"))),s.set("city.country",R(e,t("country"))),s.set("region",R(e,r("region"))),s.set("district",R(e,r("district"))),s.set("metro",R(e,r("metro"))),s},Qr=(n,e)=>{let t=k(n,"link.network.operator"),r=new Map;r.set("network",He(t));let s=k(n,"col.network.asn",t.length-1);r.set("network.asn",He(t).map((l,c)=>s[c]?l:0)),r.set("operator",t);for(let l of xe)r.set(`operator.${l}`,R(t,k(n,`col.operator.${l}`)));let o=k(n,"link.network.carrier",t.length-1);r.set("carrier",o);for(let l of["mcc","mnc"])r.set(`carrier.${l}`,R(o,k(n,`col.carrier.${l}`)));let i=R(t,k(n,"col.operator.category"));for(let[l,c]of Tt(i,"category."))r.set(l,c);let a=k(n,"link.network.abuse",t.length-1);for(let l of F)r.set(`net.${l}`,R(a,e.get(l)));return r},Et=1500,Zr=(n,e)=>{let t=0;for(let r=0;r<n.length-1;r+=1)for(let s=(n[r]^e[r])>>>0;s;s&=s-1)t+=1;return t},Mt=n=>{let e=[...n].sort((r,s)=>s[r.length-1]-r[r.length-1]),t=e.slice(0,Et);for(let r of e.slice(Et)){let s=t[0],o=Number.POSITIVE_INFINITY;for(let i of t){let a=Zr(i,r);a<o&&([s,o]=[i,a])}s[s.length-1]+=r[r.length-1]}return t},Ct=(n,e)=>{let t=e.join(","),r=n.get(t);r?r[e.length]+=1:n.set(t,[...e,1])},Xr=(n,e)=>/^(stop|whole)\./.test(e)?n.abuse.get(e.replace(/^(stop|whole)\./,"")):n.place.get(e)??n.network.get(e),qr=(n,e)=>{let t={place:n.columns.place,network:n.columns.network,stop:n.columns.abuse,whole:n.whole},r=_e.map((l,c)=>({leaf:l,bit:c})),s=Object.entries(t).map(([l,c])=>({links:c,leaves:r.filter(({leaf:u})=>u.owner===l).map(({leaf:u,bit:p})=>({bit:p,values:Xr(e,u.id)}))})),o=r.filter(({leaf:l})=>l.owner==="spine").map(({leaf:l,bit:c})=>({bit:c,name:l.id})),i=new Map,a=[0,0,0,0];for(let l=1;l<n.columns.place.length;l+=1){a.fill(0);for(let c of s){let u=c.links[l],p=c.links[l-1];if(u!==p)for(let{bit:h,values:b}of c.leaves)b[u]!==b[p]&&(a[h>>5]|=1<<(h&31))}for(let{bit:c,name:u}of o){let p=n.columns[u];p[l]!==p[l-1]&&(a[c>>5]|=1<<(c&31))}Ct(i,a)}return Mt([...i.values()])},en=(n,e)=>{let t=k(e,"col.abuse.service"),r=0;for(let s=0;s<n.whole.length;s+=1)t[n.whole[s]]>0&&(r+=1);return r},re=(n,e,t=new Uint8Array(e))=>{for(let r=0;r<n.length;r+=1)n[r]>0&&(t[n[r]-1]=1);return t},K=(n,e,t)=>{for(let r=0;r<n.length;r+=1)n[r]&&e[r+1]>0&&(t[e[r+1]-1]=1)},O=n=>n.reduce((e,t)=>e+t,0),Ut=(n,e,t)=>{let r=b=>n.has(b)?n.numbers(b).length:0,s=new Uint8Array(r("link.place.city")),o=new Uint8Array(r("link.network.operator")),i=new Uint8Array(r("col.abuse.service"));for(let b of e)re(b.columns.place,s.length,s),re(b.columns.network,o.length,o),re(b.columns.abuse,i.length,i),re(b.whole,i.length,i);for(let b of t)re(b,i.length,i);let a=new Uint8Array(r("col.operator.company")),l=new Uint8Array(r("col.carrier.user_count")),c=new Uint8Array(r("col.city.name"));K(o,k(n,"link.network.operator"),a),K(o,k(n,"link.network.carrier"),l),K(o,k(n,"link.network.abuse"),i),K(a,k(n,"link.operator.city"),c),K(s,k(n,"link.place.city"),c);let u=new Uint8Array(r("col.region.name")),p=new Uint8Array(r("col.district.name")),h=new Uint8Array(r("col.metro.code"));return K(c,k(n,"link.city.region"),u),K(c,k(n,"link.city.district"),p),K(c,k(n,"link.city.metro"),h),{place:O(s),network:O(o),abuse:O(i),operator:O(a),carrier:O(l),city:O(c),region:O(u),district:O(p),metro:O(h)}},Rt=(n,e,t)=>({masks:qr(n,e),served:en(n,t)}),tn=(n,e)=>{let t=0,r=n.length;for(;t<r;){let s=t+r>>1;n[s]<=e?t=s+1:r=s}return t-1},rn=(n,e,t)=>{let r=n.hosts(e),{hosts:s}=n.keys(e),o={};for(let i of F){let a=t.get(i),l=[];for(let c=0;c<r.length;c+=1)a[r[c]]&&l.push(s[c]);o[i]=[l.length,l.length?_t(l,e===6):0]}return o},nn=(n,e,t,r)=>{let s=n.hosts(e),{hosts:o,spine:i}=n.keys(e),a=new Map,l=F.map((p,h)=>({bit:h,values:r.get(p)})),c=[0,0,0,0],u=p=>{c[p>>5]|=1<<(p&31)};for(let p=0;p<s.length;p+=1){c.fill(0);let h=tn(i,o[p]),b={stop:t.columns.abuse[h]??0,whole:t.whole[h]??0};for(let{bit:d,values:m}of l){let f=m[s[p]];f&&u(d),f!==m[b.stop]&&u(Ie.stop+d),f!==m[b.whole]&&u(Ie.whole+d)}Ct(a,c)}return Mt([...a.values()])},sn=n=>{let e=n.pool(),t=new Map,r=o=>(t.has(o)||t.set(o,zr.encode(e[o-1]).length),t.get(o)),s={};for(let o of oe){s[o]={rows:0,columns:{}};for(let i of V.filter(a=>a.table===o)){if(!n.has(W(i)))continue;let a=n.numbers(W(i)),l=new Set(Array.from(a));l.delete(0);let c=0;if(i.kind==="text")for(let u of l)c+=r(u);s[o].rows=a.length,s[o].columns[i.id]=[l.size,c]}}return s},Ot=n=>{let e=Yr(n),t={place:Jr(n),network:Qr(n,e),abuse:e},r={},s={},o={refined:[],snapped:[],hosts:[]};for(let a of[4,6]){let l=n.spine(a,!1);if(!l)continue;let c=n.spine(a,!0),u=n.hosts(a);o.refined.push(l),o.snapped.push(c??l),o.hosts.push(u),r[`v${a}`]={stops:l.columns.place.length,refined:Rt(l,t,n),snapped:c?Rt(c,t,n):null},s[`v${a}`]={count:u.length,masks:nn(n,a,l,e),rates:rn(n,a,e)}}let i=n.head.sections;return{built:n.head.built,fields:n.head.fields,bytes:Object.fromEntries(Object.entries(i).map(([a,l])=>[a,l.bytes])),tables:sn(n),strings:[i.strings?.count??0,i.strings?.bytes??0],spines:r,hosts:s,reach:{refined:Ut(n,o.refined,o.hosts),snapped:Ut(n,o.snapped,o.hosts)}}};var ne="PLEVIN\0",on=3,Nt=64n,an=-1,cn=[4,6],we=["place","network","abuse"],ln=["network","operator","place","city"],Be=new TextDecoder,se=(n,e)=>{let t=0,r=1;for(;;){let s=n[e++];if(t+=(s&127)*r,s<128)return[t,e];r*=128}},Ke=(n,e)=>{let t=0n,r=0n;for(;;){let s=n[e++];if(t|=BigInt(s&127)<<r,s<128)return[t,e];r+=7n}},Fe=(n,e,t)=>{let r=0;for(let s=t-1;s>=0;s-=1)r=r*256+n[e+s];return r},Ht=(n,e,t)=>t&&n>=2**(e*8-1)?n-2**(e*8):n,un=(n,e,t,r)=>t<=4?Ht(Fe(n,e,t),t,r):Ht(Fe(n,e+4,t-4),t-4,r)*2**32+Fe(n,e,4),Dt=(n,e)=>{let t=0,r=n.length;for(;t<r;){let s=t+r>>1;n[s]<=e?t=s+1:r=s}return t},pn=(n,e,t,r,s)=>{let o=Number(t);s.push(o);for(let i=1;i<r;i+=1){let[a,l]=se(n,e);o+=a,s.push(o),e=l}return e},hn=(n,e,t,r,s)=>{let o=[t>>Nt];for(let i=1;i<r;i+=1){let[a,l]=Ke(n,e);o.push(o[i-1]+a),e=l}for(let i of o){let[a,l]=Ke(n,e);s.push(i<<Nt|a),e=l}return e},bn=(n,e,t)=>{let r=0;for(let i=Math.ceil(e/t)-1;i>0;i-=1)r=se(n,r)[1];let s=[],o=new Uint8Array(0);for(let i=0;i<e;i+=1){i%t===0&&(o=new Uint8Array(0));let a=n[r],[l,c]=se(n,r+1),u=new Uint8Array(a+l);u.set(o.subarray(0,a)),u.set(n.subarray(c,c+l),a),s.push(Be.decode(u)),o=u,r=c+l}return s},$e=class{head;bytes;body;held=new Map;constructor(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength);if(Be.decode(e.subarray(0,ne.length))!==ne||e[ne.length]!==on)throw new Error("not a plevin raw database");let s=t.getUint32(ne.length+1,!0),o=ne.length+5;this.head=JSON.parse(Be.decode(e.subarray(o,o+s))),this.bytes=e,this.body=o+s}has(e){return e in this.head.sections}count(e){return this.head.sections[e].count}memo(e,t){return this.held.has(e)||this.held.set(e,t()),this.held.get(e)}values(e,t){return this.memo(`${e}:${t.name}`,()=>this.decodeValues(e,t))}keys(e,t){return this.memo(e,()=>this.decodeKeys(e,t))}pool(){return this.memo("pool",()=>this.decodePool())}openSection(e){let t=this.head.sections[e],r=this.body+t.offset,s=this.bytes.subarray(r,r+t.bytes),o=new DataView(s.buffer,s.byteOffset,s.byteLength),i=o.getUint32(0,!0),a=o.getUint32(4,!0),l=Array.from({length:i+1},(h,b)=>o.getUint32(8+b*4,!0)),c=[];for(let h=0;h<i;h+=1){let b=0n;for(let d=0;d<a;d+=1)b=b<<8n|BigInt(s[8+4*(i+1)+h*a+d]);c.push(b)}let u=s.subarray(8+4*(i+1)+a*i);return{entry:t,blocks:i,heads:c,stream:h=>Ve(u.subarray(l[h],l[h+1]),t.lzma)}}decodeValues(e,t){let{entry:r,blocks:s,stream:o}=this.openSection(e),i=new t(r.count),a=r.encoding==="delta",l=r.encoding==="signed"||a;for(let c=0;c<s;c+=1){let u=o(c),p=u[0],h=Math.min(r.block,r.count-c*r.block),b=0;for(let d=0;d<h;d+=1){let m=un(u,1+d*p,p,l);b=a?b+m:m,i[c*r.block+d]=b}}return i}decodePool(){let{entry:e,blocks:t,stream:r}=this.openSection("strings"),s=[];for(let o=0;o<t;o+=1){let i=Math.min(e.block,e.count-o*e.block);s.push(...bn(r(o),i,e.group))}return s}decodeKeys(e,t){let{entry:r,blocks:s,heads:o,stream:i}=this.openSection(e),a=t?hn:pn,l=[];for(let c=0;c<s;c+=1){let u=i(c),[p,h]=se(u,0),b=Math.ceil(p/r.group),d=[o[c]],m=h;for(let f=1;f<b;f+=1){let[y,g]=Ke(u,m);d.push(d[f-1]+y),m=g}for(let f=1;f<b;f+=1)m=se(u,m)[1];for(let f=0;f<b;f+=1){let y=Math.min(r.group,p-f*r.group);m=a(u,m,d[f],y,l)}}return l}},Bt=n=>Object.fromEntries(X.map(e=>[e,n(e)])),Kt=(n,e)=>we.includes(e)?n.table(e):n.has(`spine.${e}`),G=(n,e)=>{e>0&&e<=n.length&&(n[e-1]=1)},De=(n,e,t)=>{e>0&&(n[e-1]+=t)},Q=(n,e)=>{if(e===0)return 0;let t=n.map[e-1];return t===void 0||t<0?0:t+1},ke=(n,e)=>n.columns.flatMap((t,r)=>t.kind===e?[[r,t.name]]:[]),$t=(n,e,t)=>{let r=`${e}.v${t}`;return n.has(r)?n.memo(`${r}:stops`,()=>({keys:n.keys(r,t===6),columns:Bt(s=>n.values(`${r}.${s}`,Int32Array)),whole:n.values(`${r}.whole`,Int32Array).map(s=>s+1)})):null},Ge=(n,e)=>n.memo(`hosts${e}`,()=>{let t=`hosts.v${e}`;if(!n.has(t))return{keys:[],links:new Int32Array(0)};let r=n.values(`${t}.abuse`,Int32Array).map(s=>s+1);return{keys:n.keys(t,e===6),links:r}}),mn=(n,e,t,r)=>{let s=new Uint8Array(t.keys.length).fill(1);if(!e.sparse)return s;let o=n.values("col.abuse.service",Float64Array),i=e.narrow.get("abuse.service"),a=c=>{let u=c>0?o[c-1]:0;return u>0&&(!i||i.includes(u))},l=e.has("network.abuse")?t.columns.abuse:t.whole;for(let c=0;c<s.length;c+=1)s[c]=a(l[c])?1:0;return r.links.forEach((c,u)=>{if(!a(c))return;let p=Dt(t.keys,r.keys[u])-1;p>=0&&(s[p]=1)}),s},dn=(n,e)=>cn.flatMap(t=>{let r=e.has("place.lat")?"spine":"blocks",s=$t(n,r,t);if(!s)return[];let o=Ge(n,t),i=mn(n,e,s,o);return[{version:t,wide:t===6,stops:s,hosts:o,networked:i}]}),fn=(n,e)=>n.values(W(e),Float64Array),yn=(n,e,t)=>{let r=V.filter(i=>i.table===t&&e.has(i.id)),s=r.map(i=>fn(n,i)),o=s.length?s[0].length:0;return{name:t,columns:r,values:s,keep:new Uint8Array(o),map:new Int32Array(o).fill(an),rows:[],uses:[]}},gn=(n,e)=>Object.fromEntries(oe.map(t=>[t,yn(n,e,t)])),wn=(n,e)=>{for(let[t,r]of ke(e,"link"))for(let s=0;s<e.keep.length;s+=1)e.keep[s]&&G(n[r].keep,e.values[t][s])},kn=(n,e)=>{G(n.abuse.keep,1);for(let{stops:t,networked:r,hosts:s}of e){for(let o=0;o<t.keys.length;o+=1)G(n.place.keep,t.columns.place[o]),r[o]&&G(n.network.keep,t.columns.network[o]),G(n.abuse.keep,t.columns.abuse[o]),G(n.abuse.keep,t.whole[o]);for(let o of s.links)G(n.abuse.keep,o)}for(let t of ln)wn(n,n[t])},vn=(n,e,t,r)=>{let s=n.narrow.get(e.id),o=s&&!s.includes(t)?0:t;return e.kind==="link"?Q(r[e.name],o):o},An=(n,e,t)=>{let r=new Map;for(let s=0;s<n.keep.length;s+=1){if(!n.keep[s])continue;let o=n.columns.map((c,u)=>vn(t,c,n.values[u][s],e));if(!(n.name==="abuse"&&s===0)&&o.every(c=>c===0))continue;let a=o.join(","),l=r.get(a);l===void 0&&(l=n.rows.length,r.set(a,l),n.rows.push(o)),n.map[s]=l}n.uses=new Array(n.rows.length).fill(0)},Sn=(n,e,t)=>{let{stops:r,networked:s}=t,o=n.has("network.abuse")?r.columns.abuse:r.whole,i=a=>{let l=r.columns[a];return a==="place"?c=>Q(e.place,l[c]):a==="network"?c=>s[c]?Q(e.network,l[c]):0:a==="abuse"?c=>{let u=Q(e.abuse,o[c]);return u===1?0:u}:c=>l[c]};return X.map(a=>Kt(n,a)?i(a):()=>0)},xn=(n,e,t)=>{let{version:r,wide:s,hosts:o,stops:i}=t,a=Sn(n,e,t),l=Bt(()=>[]),c=X.map(b=>l[b]),u=[],p=new Array(a.length).fill(-1),h=new Array(a.length).fill(0);for(let b=0;b<i.keys.length;b+=1){let d=!0;for(let m=0;m<a.length;m+=1)h[m]=a[m](b),h[m]!==p[m]&&(d=!1);if(!d){u.push(i.keys[b]);for(let m=0;m<a.length;m+=1)c[m].push(h[m]),p[m]=h[m]}}return{version:r,wide:s,hosts:o,keys:u,columns:l}},Ln=(n,e)=>{for(let{keys:t,columns:r,hosts:s}of e){for(let o of we)for(let i=0;i<t.length;i+=1)De(n[o].uses,r[o][i],1);for(let o of s.links)De(n.abuse.uses,Q(n.abuse,o),1)}for(let t of Object.values(n).reverse())for(let[r,s]of ke(t,"link"))for(let[o,i]of t.rows.entries())De(n[s].uses,i[r],Math.max(t.uses[o],1))},In=(n,e)=>{for(let t=0;t<n.length;t+=1)if(n[t]!==e[t])return n[t]-e[t];return 0},_n=(n,e)=>{let t=Je[n.name];if(t){let r=t.map(o=>n.columns.findIndex(i=>i.id===o)).filter(o=>o>=0),s=n.rows.map(o=>[...r.map(i=>o[i]),...o]);e.sort((o,i)=>In(s[o],s[i]));return}n.name==="abuse"&&e.sort((r,s)=>n.uses[s]-n.uses[r]||r-s)},En=n=>{let e=n.name==="abuse"&&n.rows.length>0?1:0,t=Array.from({length:n.rows.length-e},(s,o)=>o+e);_n(n,t);let r=new Array(n.rows.length).fill(0);return t.forEach((s,o)=>{r[s]=o+e}),r},Gt=(n,e)=>e===0?0:n[e-1]+1,Un=(n,e)=>{let t=ke(n,"link");for(let r of n.rows)for(let[s,o]of t)r[s]=Gt(e[o],r[s])},Rn=(n,e)=>{let t=new Array(n.rows.length);n.rows.forEach((r,s)=>{t[e[s]]=r}),n.rows=t},Pn=n=>{let e={};for(let t of Object.values(n)){Un(t,e);let r=En(t);Rn(t,r),e[t.name]=r}return e},Tn=(n,e)=>{for(let t of we)n.columns[t]=n.columns[t].map(r=>Gt(e[t],r))},Ft=(n,e)=>{for(let t of Object.values(n))for(let[r]of ke(t,"text"))for(let s of t.rows)e(s,r)},Mn=(n,e)=>{let t=new Uint8Array(e.length+1);Ft(n,(i,a)=>{t[i[a]]=1});let r=new Int32Array(e.length+1),s=e.filter((i,a)=>t[a+1]),o=0;for(let i=1;i<t.length;i+=1)t[i]&&(r[i]=++o);return Ft(n,(i,a)=>{i[a]=r[i[a]]}),s},Cn=(n,e,t)=>{let r=Dt(n.keys,e)-1,s=r<0?0:n.columns.abuse[r];return s!==0?s-1:t?null:0},On=(n,e,t,r)=>{let{hosts:s}=e,o=n.has("network.abuse"),i=[],a=[];if(s.links.forEach((c,u)=>{let p=Q(t.abuse,c);if(p===0)return;let h=r[p-1];Cn(e,s.keys[u],o)!==h&&(i.push(s.keys[u]),a.push(h))}),i.length===0)return[];let l=`hosts.v${e.version}`;return[{kind:"index",name:l,keys:i,wide:e.wide},{kind:"values",name:`${l}.abuse`,encoding:"fixed",read:"",values:a}]},Nn=(n,e)=>X.flatMap(t=>{let r=e.columns[t],s=t==="abuse"||r.some(i=>i!==0);return!Kt(n,t)||!s?[]:[{kind:"values",name:`spine.v${e.version}.${t}`,encoding:"fixed",read:"",values:r}]}),Hn=(n,e,t,r)=>{let s=e.filter(i=>i.keys.length>0).flatMap(i=>[{kind:"index",name:`spine.v${i.version}`,keys:i.keys,wide:i.wide},...Nn(n,i)]);if(!n.table("abuse"))return s;let o=e.flatMap(i=>On(n,i,t,r.abuse));return[...s,...o]},Fn=n=>V.flatMap(e=>{let t=n[e.table],r=t.columns.findIndex(a=>a.id===e.id);if(r<0)return[];let s=e.kind==="signed"||e.kind==="degrees",o=e.kind==="text"||e.kind==="degrees"?e.kind:"",i=t.rows.map(a=>a[r]);return[{kind:"values",name:W(e),encoding:s?"signed":"fixed",read:o,values:i}]}),Dn=(n,e)=>Object.fromEntries(Ze.filter(([t,r])=>t in n.head.vocabularies&&r.some(s=>e.has(s))).map(([t])=>[t,n.head.vocabularies[t]])),Bn=(n,e,t)=>{t?.("reading");let r=gn(n,e),s=dn(n,e);t?.("merging"),kn(r,s);for(let c of Object.values(r))An(c,r,e);let o=s.map(c=>xn(e,r,c));Ln(r,o);let i=Mn(r,n.pool()),a=Pn(r);for(let c of o)Tn(c,a);return{parts:[...Fn(r),...Hn(e,o,r,a),{kind:"strings",pool:i}],carries:we.map(c=>e.table(c)),fields:e.fields,books:Dn(n,e)}},ze=class{source;constructor(e){this.source=new $e(e)}get built(){return this.source.head.built}get fields(){return this.source.head.fields}plan(e){let{fields:t,vocabularies:r}=this.source.head;return et(e,new Set(t),r)}slim(e,t){let r=this.plan(e),s=Bn(this.source,r,t);return It(s,this.built,r.name,t)}stats(){let{source:e}=this,t={head:e.head,has:r=>e.has(r),numbers:r=>e.values(r,Float64Array),pool:()=>e.pool(),spine:(r,s)=>$t(e,s?"blocks":"spine",r),hosts:r=>Ge(e,r).links,keys:r=>({hosts:Ge(e,r).keys,spine:e.keys(`spine.v${r}`,r===6)})};return Ot(t)}},ls=(n,e,t)=>new ze(n).slim(e,t);export{ze as Slimmer,Qt as fileName,ls as slim};
@@ -0,0 +1,61 @@
1
+ /** What the estimator needs to know about one database, counted once, a few kilobytes. */
2
+ import { type Masks } from "./leaves.ts";
3
+ import { type Carried } from "./selection.ts";
4
+ export type Columns = Record<Carried, ArrayLike<number>>;
5
+ export type Spine = {
6
+ columns: Columns;
7
+ whole: ArrayLike<number>;
8
+ };
9
+ /** The decoded database as the counter reads it. */
10
+ export type Kit = {
11
+ head: {
12
+ built: string;
13
+ fields: string[];
14
+ sections: Record<string, {
15
+ bytes: number;
16
+ count: number;
17
+ }>;
18
+ };
19
+ has: (name: string) => boolean;
20
+ numbers: (name: string) => ArrayLike<number>;
21
+ pool: () => string[];
22
+ spine: (version: number, coarse: boolean) => Spine | null;
23
+ hosts: (version: number) => ArrayLike<number>;
24
+ keys: (version: number) => {
25
+ hosts: ArrayLike<number | bigint>;
26
+ spine: ArrayLike<number | bigint>;
27
+ };
28
+ };
29
+ export type Stats = {
30
+ built: string;
31
+ fields: string[];
32
+ bytes: Record<string, number>;
33
+ tables: Record<string, {
34
+ rows: number;
35
+ columns: Record<string, [number, number]>;
36
+ }>;
37
+ strings: [number, number];
38
+ spines: Record<string, Variants>;
39
+ reach: {
40
+ refined: Record<string, number>;
41
+ snapped: Record<string, number>;
42
+ };
43
+ hosts: Record<string, {
44
+ count: number;
45
+ masks: Masks;
46
+ rates: Record<string, [number, number]>;
47
+ }>;
48
+ };
49
+ type Variant = {
50
+ masks: Masks;
51
+ served: number;
52
+ };
53
+ type Variants = {
54
+ stops: number;
55
+ refined: Variant;
56
+ snapped: Variant | null;
57
+ };
58
+ /** Counts everything the estimator reads: the one slow step, done when a file is built. */
59
+ export declare const collect: (kit: Kit) => Stats;
60
+ export {};
61
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,EAIL,KAAK,KAAK,EAIX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,OAAO,EAA4B,MAAM,gBAAgB,CAAC;AAGxE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,MAAM,MAAM,KAAK,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAEnE,oDAAoD;AACpD,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5D,CAAC;IACF,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,KAAK,GAAG,IAAI,CAAC;IAC1D,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QACzB,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAClC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;KACnC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;IACpF,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAC5E,KAAK,EAAE,MAAM,CACX,MAAM,EACN;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KAAE,CACzE,CAAC;CACH,CAAC;AAEF,KAAK,OAAO,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAChD,KAAK,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,CAAC;AAsV7E,2FAA2F;AAC3F,eAAO,MAAM,OAAO,QAAS,GAAG,KAAG,KA6ClC,CAAC"}