zynor 0.0.44 → 0.0.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/LICENSE +88 -203
- package/README.md +507 -543
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Yo=Object.create;var zo=Object.defineProperty;var Jo=Object.getOwnPropertyDescriptor;var Ko=Object.getOwnPropertyNames;var oe=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var ae=(l,o)=>()=>(o||l((o={exports:{}}).exports,o),o.exports);var me=(l,o,e,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let m of Ko(o))!ee.call(l,m)&&m!==e&&zo(l,m,{get:()=>o[m],enumerable:!(a=Jo(o,m))||a.enumerable});return l};var ie=(l,o,e)=>(e=l!=null?Yo(oe(l)):{},me(o||!l||!l.__esModule?zo(e,"default",{value:l,enumerable:!0}):e,l));var jo=ae((Se,ro)=>{"use strict";var ce=Object.prototype.hasOwnProperty,q="~";function L(){}Object.create&&(L.prototype=Object.create(null),new L().__proto__||(q=!1));function te(l,o,e){this.fn=l,this.context=o,this.once=e||!1}function qo(l,o,e,a,m){if(typeof e!="function")throw new TypeError("The listener must be a function");var c=new te(e,a||l,m),i=q?q+o:o;return l._events[i]?l._events[i].fn?l._events[i]=[l._events[i],c]:l._events[i].push(c):(l._events[i]=c,l._eventsCount++),l}function G(l,o){--l._eventsCount===0?l._events=new L:delete l._events[o]}function z(){this._events=new L,this._eventsCount=0}z.prototype.eventNames=function(){var o=[],e,a;if(this._eventsCount===0)return o;for(a in e=this._events)ce.call(e,a)&&o.push(q?a.slice(1):a);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o};z.prototype.listeners=function(o){var e=q?q+o:o,a=this._events[e];if(!a)return[];if(a.fn)return[a.fn];for(var m=0,c=a.length,i=new Array(c);m<c;m++)i[m]=a[m].fn;return i};z.prototype.listenerCount=function(o){var e=q?q+o:o,a=this._events[e];return a?a.fn?1:a.length:0};z.prototype.emit=function(o,e,a,m,c,i){var t=q?q+o:o;if(!this._events[t])return!1;var s=this._events[t],r=arguments.length,u,n;if(s.fn){switch(s.once&&this.removeListener(o,s.fn,void 0,!0),r){case 1:return s.fn.call(s.context),!0;case 2:return s.fn.call(s.context,e),!0;case 3:return s.fn.call(s.context,e,a),!0;case 4:return s.fn.call(s.context,e,a,m),!0;case 5:return s.fn.call(s.context,e,a,m,c),!0;case 6:return s.fn.call(s.context,e,a,m,c,i),!0}for(n=1,u=new Array(r-1);n<r;n++)u[n-1]=arguments[n];s.fn.apply(s.context,u)}else{var p=s.length,d;for(n=0;n<p;n++)switch(s[n].once&&this.removeListener(o,s[n].fn,void 0,!0),r){case 1:s[n].fn.call(s[n].context);break;case 2:s[n].fn.call(s[n].context,e);break;case 3:s[n].fn.call(s[n].context,e,a);break;case 4:s[n].fn.call(s[n].context,e,a,m);break;default:if(!u)for(d=1,u=new Array(r-1);d<r;d++)u[d-1]=arguments[d];s[n].fn.apply(s[n].context,u)}}return!0};z.prototype.on=function(o,e,a){return qo(this,o,e,a,!1)};z.prototype.once=function(o,e,a){return qo(this,o,e,a,!0)};z.prototype.removeListener=function(o,e,a,m){var c=q?q+o:o;if(!this._events[c])return this;if(!e)return G(this,c),this;var i=this._events[c];if(i.fn)i.fn===e&&(!m||i.once)&&(!a||i.context===a)&&G(this,c);else{for(var t=0,s=[],r=i.length;t<r;t++)(i[t].fn!==e||m&&!i[t].once||a&&i[t].context!==a)&&s.push(i[t]);s.length?this._events[c]=s.length===1?s[0]:s:G(this,c)}return this};z.prototype.removeAllListeners=function(o){var e;return o?(e=q?q+o:o,this._events[e]&&G(this,e)):(this._events=new L,this._eventsCount=0),this};z.prototype.off=z.prototype.removeListener;z.prototype.addListener=z.prototype.on;z.prefixed=q;z.EventEmitter=z;typeof ro<"u"&&(ro.exports=z)});import*as y from"node:dns/promises";var uo=ie(jo(),1);var M=class extends Error{constructor(o){super(o),this.name="TimeoutError"}},po=class extends Error{constructor(o){super(),this.name="AbortError",this.message=o}},Ro=l=>globalThis.DOMException===void 0?new po(l):new DOMException(l),Ao=l=>{let o=l.reason===void 0?Ro("This operation was aborted."):l.reason;return o instanceof Error?o:Ro(o)};function go(l,o){let{milliseconds:e,fallback:a,message:m,customTimers:c={setTimeout,clearTimeout}}=o,i,t,r=new Promise((u,n)=>{if(typeof e!="number"||Math.sign(e)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${e}\``);if(o.signal){let{signal:d}=o;d.aborted&&n(Ao(d)),t=()=>{n(Ao(d))},d.addEventListener("abort",t,{once:!0})}if(e===Number.POSITIVE_INFINITY){l.then(u,n);return}let p=new M;i=c.setTimeout.call(void 0,()=>{if(a){try{u(a())}catch(d){n(d)}return}typeof l.cancel=="function"&&l.cancel(),m===!1?u():m instanceof Error?n(m):(p.message=m??`Promise timed out after ${e} milliseconds`,n(p))},e),(async()=>{try{u(await l)}catch(d){n(d)}})()}).finally(()=>{r.clear(),t&&o.signal&&o.signal.removeEventListener("abort",t)});return r.clear=()=>{c.clearTimeout.call(void 0,i),i=void 0},r}function ho(l,o,e){let a=0,m=l.length;for(;m>0;){let c=Math.trunc(m/2),i=a+c;e(l[i],o)<=0?(a=++i,m-=c+1):m=c}return a}var F=class{#a=[];enqueue(o,e){e={priority:0,...e};let a={priority:e.priority,id:e.id,run:o};if(this.size===0||this.#a[this.size-1].priority>=e.priority){this.#a.push(a);return}let m=ho(this.#a,a,(c,i)=>i.priority-c.priority);this.#a.splice(m,0,a)}setPriority(o,e){let a=this.#a.findIndex(c=>c.id===o);if(a===-1)throw new ReferenceError(`No promise function with the id "${o}" exists in the queue.`);let[m]=this.#a.splice(a,1);this.enqueue(m.run,{priority:e,id:o})}dequeue(){return this.#a.shift()?.run}filter(o){return this.#a.filter(e=>e.priority===o.priority).map(e=>e.run)}get size(){return this.#a.length}};var T=class extends uo.default{#a;#u;#p=0;#j;#b;#C=0;#g;#f;#e;#v;#m=0;#i;#o;#n;#k=1n;timeout;constructor(o){if(super(),o={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:F,...o},!(typeof o.intervalCap=="number"&&o.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${o.intervalCap?.toString()??""}\` (${typeof o.intervalCap})`);if(o.interval===void 0||!(Number.isFinite(o.interval)&&o.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${o.interval?.toString()??""}\` (${typeof o.interval})`);this.#a=o.carryoverConcurrencyCount,this.#u=o.intervalCap===Number.POSITIVE_INFINITY||o.interval===0,this.#j=o.intervalCap,this.#b=o.interval,this.#e=new o.queueClass,this.#v=o.queueClass,this.concurrency=o.concurrency,this.timeout=o.timeout,this.#n=o.throwOnTimeout===!0,this.#o=o.autoStart===!1}get#r(){return this.#u||this.#p<this.#j}get#t(){return this.#m<this.#i}#x(){this.#m--,this.#y(),this.emit("next")}#l(){this.#h(),this.#d(),this.#f=void 0}get#z(){let o=Date.now();if(this.#g===void 0){let e=this.#C-o;if(e<0)this.#p=this.#a?this.#m:0;else return this.#f===void 0&&(this.#f=setTimeout(()=>{this.#l()},e)),!0}return!1}#y(){if(this.#e.size===0)return this.#g&&clearInterval(this.#g),this.#g=void 0,this.emit("empty"),this.#m===0&&this.emit("idle"),!1;if(!this.#o){let o=!this.#z;if(this.#r&&this.#t){let e=this.#e.dequeue();return e?(this.emit("active"),e(),o&&this.#d(),!0):!1}}return!1}#d(){this.#u||this.#g!==void 0||(this.#g=setInterval(()=>{this.#h()},this.#b),this.#C=Date.now()+this.#b)}#h(){this.#p===0&&this.#m===0&&this.#g&&(clearInterval(this.#g),this.#g=void 0),this.#p=this.#a?this.#m:0,this.#w()}#w(){for(;this.#y(););}get concurrency(){return this.#i}set concurrency(o){if(!(typeof o=="number"&&o>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${o}\` (${typeof o})`);this.#i=o,this.#w()}async#R(o){return new Promise((e,a)=>{o.addEventListener("abort",()=>{a(o.reason)},{once:!0})})}setPriority(o,e){this.#e.setPriority(o,e)}async add(o,e={}){return e.id??=(this.#k++).toString(),e={timeout:this.timeout,throwOnTimeout:this.#n,...e},new Promise((a,m)=>{this.#e.enqueue(async()=>{this.#m++,this.#p++;try{e.signal?.throwIfAborted();let c=o({signal:e.signal});e.timeout&&(c=go(Promise.resolve(c),{milliseconds:e.timeout})),e.signal&&(c=Promise.race([c,this.#R(e.signal)]));let i=await c;a(i),this.emit("completed",i)}catch(c){if(c instanceof M&&!e.throwOnTimeout){a();return}m(c),this.emit("error",c)}finally{this.#x()}},e),this.emit("add"),this.#y()})}async addAll(o,e){return Promise.all(o.map(async a=>this.add(a,e)))}start(){return this.#o?(this.#o=!1,this.#w(),this):this}pause(){this.#o=!0}clear(){this.#e=new this.#v}async onEmpty(){this.#e.size!==0&&await this.#s("empty")}async onSizeLessThan(o){this.#e.size<o||await this.#s("next",()=>this.#e.size<o)}async onIdle(){this.#m===0&&this.#e.size===0||await this.#s("idle")}async#s(o,e){return new Promise(a=>{let m=()=>{e&&!e()||(this.off(o,m),a())};this.on(o,m)})}get size(){return this.#e.size}sizeBy(o){return this.#e.filter(o).length}get pending(){return this.#m}get isPaused(){return this.#o}};var le=3e4;function se(l,o){let e=o??le;return l?AbortSignal.any([l,AbortSignal.timeout(e)]):AbortSignal.timeout(e)}var X=class{queue;config;constructor(o={}){this.config={enabled:o.enabled??!0,limit:o.limit&&o.limit.concurrency>0?o.limit:{concurrency:10,interval:1e3,intervalCap:750,carryoverConcurrencyCount:!0}};let e={concurrency:this.config.limit?.concurrency||5};this.config.limit&&"interval"in this.config.limit&&"intervalCap"in this.config.limit&&(e.interval=this.config.limit.interval,e.intervalCap=this.config.limit.intervalCap,e.carryoverConcurrencyCount=typeof e.carryoverConcurrencyCount=="boolean"?e.carryoverConcurrencyCount:!0),this.queue=new T(e)}updateConfig(o){this.config={enabled:o.enabled??this.config.enabled,limit:o.limit??this.config.limit};let e={concurrency:this.config.limit?.concurrency||5};this.config.limit&&"interval"in this.config.limit&&"intervalCap"in this.config.limit&&(e.interval=this.config.limit.interval,e.intervalCap=this.config.limit.intervalCap),this.queue=new T(e)}get enabled(){return this.config.enabled}get queueSize(){return this.queue.size}get concurrency(){return this.config.limit.concurrency}get isFull(){let o=this.queue.pending+this.queue.size,e=this.config.limit.concurrency;return o>=e}executeQueued(o,e){let a=se(e?.signal,e?.timeout);return this.queue.add(async()=>{if(a.aborted)throw new DOMException("The operation was aborted","AbortError");let m=o();return new Promise((c,i)=>{let t=!1,s=()=>{t||(t=!0,i(new DOMException("The operation was aborted","AbortError")))};a.addEventListener("abort",s,{once:!0}),m.then(r=>{t||(t=!0,a.removeEventListener("abort",s),c(r))},r=>{t||(t=!0,a.removeEventListener("abort",s),i(r))})})},{signal:a})}async resolve4(o,e){return e?.ttl?this.executeQueued(()=>y.resolve4(o,{ttl:!0}),e):this.executeQueued(()=>y.resolve4(o),e)}async resolve6(o,e){return e?.ttl?this.executeQueued(()=>y.resolve6(o,{ttl:!0}),e):this.executeQueued(()=>y.resolve6(o),e)}async resolveAny(o,e){return this.executeQueued(()=>y.resolveAny(o),e)}async resolveCaa(o,e){return this.executeQueued(()=>y.resolveCaa(o),e)}async resolveCname(o,e){return this.executeQueued(()=>y.resolveCname(o),e)}async resolveMx(o,e){return this.executeQueued(()=>y.resolveMx(o),e)}async resolveNaptr(o,e){return this.executeQueued(()=>y.resolveNaptr(o),e)}async resolveNs(o,e){return this.executeQueued(()=>y.resolveNs(o),e)}async resolvePtr(o,e){return this.executeQueued(()=>y.resolvePtr(o),e)}async resolveSoa(o,e){return this.executeQueued(()=>y.resolveSoa(o),e)}async resolveSrv(o,e){return this.executeQueued(()=>y.resolveSrv(o),e)}async resolveTlsa(o,e){return this.executeQueued(()=>y.resolveTlsa(o),e)}async resolveTxt(o,e){return this.executeQueued(()=>y.resolveTxt(o),e)}async reverse(o,e){return this.executeQueued(()=>y.reverse(o),e)}async resolve(o,e,a){return this.executeQueued(()=>y.resolve(o,e),a)}};var ne={FORMERR:"DNS server claims query was misformatted",SERVFAIL:"DNS server returned general failure",ENOTFOUND:"Domain name not found",NOTIMP:"DNS server does not implement requested operation",REFUSED:"DNS server refused query",YXDOMAIN:"Name exists when it should not",YXRRSET:"RR set exists when it should not",NXRRSET:"RR set that should exist does not",NOTAUTH:"Server not authoritative for zone",NOTZONE:"Name not contained in zone"},re={1:"FORMERR",2:"SERVFAIL",3:"ENOTFOUND",4:"NOTIMP",5:"REFUSED",6:"YXDOMAIN",7:"YXRRSET",8:"NXRRSET",9:"NOTAUTH",10:"NOTZONE"};function Y(l,o,e){let a=re[o]||`DNSSTATUS_${o}`,m=`query${e}`,c=`${m} ${l} ${a}: ${ne[a]||"Unrecognized DNS error code"}`,i=new Error(c);return i.code=a,i.errno=o,i.syscall=m,i.hostname=l,i}var ue=3e4;function pe(l,o){let e=o??ue;return l?AbortSignal.any([l,AbortSignal.timeout(e)]):AbortSignal.timeout(e)}var S=class{queue;config;dohRequest=null;constructor(o={},e){o.limit=o&&o.limit&&o.limit.concurrency>0?o.limit:e,this.config={enabled:o.enabled??!0,limit:o.limit??{concurrency:5}};let a={concurrency:this.config.limit?.concurrency||10};this.config.limit&&"interval"in this.config.limit&&"intervalCap"in this.config.limit&&(a.interval=this.config.limit.interval||1e3,a.intervalCap=this.config.limit.intervalCap||100),this.queue=new T(a)}updateConfig(o){this.config={enabled:o.enabled??this.config.enabled,limit:o.limit&&o.limit.concurrency>0?o.limit:this.config.limit};let e={concurrency:this.config.limit?.concurrency||5};this.config.limit&&"interval"in this.config.limit&&"intervalCap"in this.config.limit&&(e.interval=this.config.limit.interval||1e3,e.intervalCap=this.config.limit.intervalCap||5),this.queue=new T(e)}get enabled(){return this.config.enabled}get queueSize(){return this.queue.size}get concurrency(){return this.config.limit.concurrency}get isFull(){let o=this.queue.pending+this.queue.size,e=this.config.limit.concurrency;return o>=e}executeQueued(o,e){let a=pe(e?.signal,e?.timeout);return this.queue.add(async()=>o(a),{signal:a})}parseDoHResponse(o,e,a=!1){if(!o.Answer||o.Answer.length===0)return[];let m=t=>t.endsWith(".")?t.substring(0,t.length-1):t,c=t=>{let s=n=>typeof n=="object"&&n!==null&&!Array.isArray(n),r=n=>typeof n=="string"&&/^".*"$/.test(n)?n.slice(1,-1):n,u=n=>{let p={};for(let[d,f]of Object.entries(n))f!==void 0&&(p[d]=r(f));return p};return Array.isArray(t)&&t.every(s)?t.map(u):s(t)?u(t):t},i=o.Answer.filter(t=>{let s={A:1,AAAA:28,ANY:255,CAA:257,CNAME:5,MX:15,NAPTR:35,NS:2,PTR:12,SOA:6,SRV:33,TLSA:52,TXT:16};return t.type===s[e]||e==="ANY"});switch(e){case"A":case"AAAA":case"CNAME":case"NS":case"PTR":return a?i.map(t=>({address:t.data,ttl:t.TTL})):i.map(t=>t.data);case"MX":return c(i.map(t=>{let[s,r]=t.data.split(" "),u={exchange:m(r||""),priority:parseInt(s||"0",10)};return a?{...u,ttl:t.TTL}:u}));case"SRV":return c(i.map(t=>{let[s,r,u,n]=t.data.split(" "),p={priority:parseInt(s||"0",10),weight:parseInt(r||"0",10),port:parseInt(u||"0",10),name:n||""};return a?{...p,ttl:t.TTL}:p}));case"SOA":if(i.length>0){let[t,s,r,u,n,p,d]=i[0].data.split(" "),f={nsname:t,hostmaster:s,serial:parseInt(r,10),refresh:parseInt(u,10),retry:parseInt(n,10),expire:parseInt(p,10),minttl:parseInt(d,10)};return c(a?{...f,ttl:i[0].TTL}:f)}throw new Error("No SOA record found");case"TXT":return c(i.map(t=>t.data.split('" "').map(s=>s.replace(/^"|"$/g,""))));case"CAA":return c(i.map(t=>{let[s,r,u]=t.data.split(" "),n={critical:parseInt(s,10),issue:r==="issue"?u:void 0,issuewild:r==="issuewild"?u:void 0,iodef:r==="iodef"?u:void 0};return a?{...n,ttl:t.TTL}:n}));case"NAPTR":return c(i.map(t=>{let[s,r,u,n,p,d]=t.data.split(" "),f={order:parseInt(s||"0",10),preference:parseInt(r||"0",10),flags:u||"",service:n||"",regexp:p||"",replacement:d||""};return a?{...f,ttl:t.TTL}:f}));case"TLSA":return c(i.map(t=>{let[s,r,u]=t.data.split(" "),n={certUsage:parseInt(s||"0",10),selector:parseInt(r||"0",10),match:parseInt(u||"0",10),data:new ArrayBuffer(0)};return a?{...n,ttl:t.TTL}:n}));case"ANY":return c(i.map(t=>({type:t.type,data:t.data,ttl:t.TTL})));default:return i.map(t=>t.data)}}async resolve4(o,e){return this.executeQueued(a=>this.dohRequest(o,"A",a).then(m=>this.parseDoHResponse(m,"A",e?.ttl)),e)}async resolve6(o,e){return await this.executeQueued(m=>this.dohRequest(o,"AAAA",m).then(c=>this.parseDoHResponse(c,"AAAA",e?.ttl)),e)||[]}async resolveAny(o,e){return await this.executeQueued(m=>this.dohRequest(o,"ANY",m).then(c=>this.parseDoHResponse(c,"ANY")),e)||[]}async resolveCaa(o,e){return await this.executeQueued(m=>this.dohRequest(o,"CAA",m).then(c=>this.parseDoHResponse(c,"CAA")),e)||[]}async resolveCname(o,e){return await this.executeQueued(m=>this.dohRequest(o,"CNAME",m).then(c=>this.parseDoHResponse(c,"CNAME")),e)||[]}async resolveMx(o,e){return await this.executeQueued(m=>this.dohRequest(o,"MX",m).then(c=>this.parseDoHResponse(c,"MX")),e)||[]}async resolveNaptr(o,e){return await this.executeQueued(m=>this.dohRequest(o,"NAPTR",m).then(c=>this.parseDoHResponse(c,"NAPTR")),e)||[]}async resolveNs(o,e){return await this.executeQueued(m=>this.dohRequest(o,"NS",m).then(c=>this.parseDoHResponse(c,"NS")),e)||[]}async resolvePtr(o,e){return await this.executeQueued(m=>this.dohRequest(o,"PTR",m).then(c=>this.parseDoHResponse(c,"PTR")),e)||[]}async resolveSoa(o,e){return this.executeQueued(a=>this.dohRequest(o,"SOA",a).then(m=>this.parseDoHResponse(m,"SOA")),e)}async resolveSrv(o,e){return await this.executeQueued(m=>this.dohRequest(o,"SRV",m).then(c=>this.parseDoHResponse(c,"SRV")),e)||[]}async resolveTlsa(o,e){return await this.executeQueued(m=>this.dohRequest(o,"TLSA",m).then(c=>this.parseDoHResponse(c,"TLSA")),e)||[]}async resolveTxt(o,e){return await this.executeQueued(m=>this.dohRequest(o,"TXT",m).then(c=>this.parseDoHResponse(c,"TXT")),e)||[]}async reverse(o,e){return await this.executeQueued(m=>this.dohRequest(o,"PTR",m).then(c=>this.parseDoHResponse(c,"PTR")),e)||[]}async resolve(o,e="A",a){return await this.executeQueued(c=>this.dohRequest(o,e,c).then(i=>this.parseDoHResponse(i,e,a?.ttl)),a)||(e==="SOA"?{}:[])}};var J=class extends S{baseUrl="https://dns.google/resolve";constructor(o={}){super(o,{concurrency:10,interval:1e3,intervalCap:500,carryoverConcurrencyCount:!0}),this.dohRequest=this.request.bind(this)}async request(o,e,a){let m=new URL(this.baseUrl);m.searchParams.set("name",o),m.searchParams.set("type",e);let c=await fetch(m.toString(),{headers:{Accept:"application/dns-json"},signal:a??null});if(!c.ok)throw new Error(`Google DoH request failed: ${c.status} ${c.statusText}`);let i=await c.json();if(i.Status!==0)throw Y(o,i.Status,e);return i}};var K=class extends S{baseUrl="https://cloudflare-dns.com/dns-query";constructor(o={}){super(o,{concurrency:10,interval:1e3,intervalCap:650,carryoverConcurrencyCount:!0}),this.dohRequest=this.request.bind(this)}async request(o,e,a){let m=new URL(this.baseUrl);m.searchParams.set("name",o),m.searchParams.set("type",e);let c=await fetch(m.toString(),{headers:{Accept:"application/dns-json"},signal:a??null});if(!c.ok)throw new Error(`Cloudflare DoH request failed: ${c.status} ${c.statusText}`);let i=await c.json();if(i.Status!==0)throw Y(o,i.Status,e);return i}};var ge={A:1,NS:2,CNAME:5,SOA:6,PTR:12,MX:15,TXT:16,AAAA:28,SRV:33,NAPTR:35,CAA:257,TLSA:52,ANY:255},oo=class extends S{baseUrl="https://dns.quad9.net/dns-query";constructor(o={}){super(o,{concurrency:10,interval:1e3,intervalCap:500,carryoverConcurrencyCount:!0}),this.dohRequest=this.request.bind(this)}encodeDNSQuery(o,e){let a=ge[e.toUpperCase()];if(!a)throw new Error(`Unsupported DNS type: ${e}`);let m=o.split("."),c=Buffer.concat([...m.map(r=>{let u=Buffer.alloc(r.length+1);return u.writeUInt8(r.length,0),u.write(r,1),u}),Buffer.from([0])]),i=Buffer.alloc(12);i.writeUInt16BE(Math.floor(Math.random()*65535),0),i.writeUInt16BE(256,2),i.writeUInt16BE(1,4);let t=Buffer.alloc(2);t.writeUInt16BE(a,0);let s=Buffer.alloc(2);return s.writeUInt16BE(1,0),Buffer.concat([i,c,t,s])}readName(o,e){let a=[],m=!1,c=0;for(;;){let i=o[e];if((i&192)===192){let t=o.readUInt16BE(e)&16383;m||(c=e+2),e=t,m=!0}else if(i===0){e++;break}else a.push(o.toString("utf8",e+1,e+1+i)),e+=i+1}return[a.join("."),m?c:e]}decodeRData(o,e,a,m){switch(a){case 1:return[Array.from(o.slice(e,e+4)).join("."),e+4];case 28:{let c=[];for(let i=0;i<8;i++)c.push(o.readUInt16BE(e+i*2).toString(16));return[c.join(":"),e+16]}case 2:case 5:case 12:{let[c,i]=this.readName(o,e);return[c,i]}case 15:{let c=o.readUInt16BE(e),[i,t]=this.readName(o,e+2);return[`${c} ${i}`,t]}case 16:{let c=o.readUInt8(e);return[o.toString("utf8",e+1,e+1+c),e+1+c]}case 6:{let[c,i]=this.readName(o,e),[t,s]=this.readName(o,i),r=o.readUInt32BE(s),u=o.readUInt32BE(s+4),n=o.readUInt32BE(s+8),p=o.readUInt32BE(s+12),d=o.readUInt32BE(s+16);return[`${c} ${t} ${r} ${u} ${n} ${p} ${d}`,s+20]}default:return[o.slice(e,e+m).toString("hex"),e+m]}}async request(o,e,a){let m=this.encodeDNSQuery(o,e),c=await fetch(this.baseUrl,{method:"POST",headers:{"Content-Type":"application/dns-message",Accept:"application/dns-message"},body:m,signal:a??null}),i=Buffer.from(await c.arrayBuffer()),t=i.readUInt16BE(2),s=i.readUInt16BE(4),r=i.readUInt16BE(6),u=i.readUInt16BE(8),n=i.readUInt16BE(10),p=(t&256)>0,d=(t&512)>0,f=(t&128)>0,k=(t&32)>0,w=(t&16)>0,g=t&15,b=12,h=[];for(let R=0;R<s;R++){let[A,P]=this.readName(i,b),no=i.readUInt16BE(P);h.push({name:A,type:no}),b=P+4}let x=R=>{let A=[];for(let P=0;P<R;P++){let[no,Z]=this.readName(i,b),xo=i.readUInt16BE(Z),Qo=i.readUInt32BE(Z+4),Zo=i.readUInt16BE(Z+8),[Go,Xo]=this.decodeRData(i,Z+10,xo,Zo);A.push({name:no,type:xo,TTL:Qo,data:Go}),b=Xo}return A},v=x(r),N=x(u),C=x(n);return{Status:g,TC:d,RD:p,RA:f,AD:k,CD:w,Question:h,Answer:v,Authority:N,Additional:C}}};var de=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,To=new Set,bo=typeof process=="object"&&process?process:{},Co=(l,o,e,a)=>{typeof bo.emitWarning=="function"?bo.emitWarning(l,o,e,a):console.error(`[${e}] ${o}: ${l}`)},ao=globalThis.AbortController,Po=globalThis.AbortSignal;if(typeof ao>"u"){Po=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(e,a){this._onabort.push(a)}},ao=class{constructor(){o()}signal=new Po;abort(e){if(!this.signal.aborted){this.signal.reason=e,this.signal.aborted=!0;for(let a of this.signal._onabort)a(e);this.signal.onabort?.(e)}}};let l=bo.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",o=()=>{l&&(l=!1,Co("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",o))}}var he=l=>!To.has(l),oa=Symbol("type"),O=l=>l&&l===Math.floor(l)&&l>0&&isFinite(l),So=l=>O(l)?l<=Math.pow(2,8)?Uint8Array:l<=Math.pow(2,16)?Uint16Array:l<=Math.pow(2,32)?Uint32Array:l<=Number.MAX_SAFE_INTEGER?eo:null:null,eo=class extends Array{constructor(l){super(l),this.fill(0)}},be=class U{heap;length;static#a=!1;static create(o){let e=So(o);if(!e)return[];U.#a=!0;let a=new U(o,e);return U.#a=!1,a}constructor(o,e){if(!U.#a)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(o),this.length=0}push(o){this.heap[this.length++]=o}pop(){return this.heap[--this.length]}},mo=class Oo{#a;#u;#p;#j;#b;#C;#g;#f;get perf(){return this.#f}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#e;#v;#m;#i;#o;#n;#k;#r;#t;#x;#l;#z;#y;#d;#h;#w;#R;#s;#I;static unsafeExposeInternals(o){return{starts:o.#y,ttls:o.#d,autopurgeTimers:o.#h,sizes:o.#z,keyMap:o.#m,keyList:o.#i,valList:o.#o,next:o.#n,prev:o.#k,get head(){return o.#r},get tail(){return o.#t},free:o.#x,isBackgroundFetch:e=>o.#c(e),backgroundFetch:(e,a,m,c)=>o.#L(e,a,m,c),moveToTail:e=>o.#N(e),indexes:e=>o.#A(e),rindexes:e=>o.#P(e),isStale:e=>o.#q(e)}}get max(){return this.#a}get maxSize(){return this.#u}get calculatedSize(){return this.#v}get size(){return this.#e}get fetchMethod(){return this.#C}get memoMethod(){return this.#g}get dispose(){return this.#p}get onInsert(){return this.#j}get disposeAfter(){return this.#b}constructor(o){let{max:e=0,ttl:a,ttlResolution:m=1,ttlAutopurge:c,updateAgeOnGet:i,updateAgeOnHas:t,allowStale:s,dispose:r,onInsert:u,disposeAfter:n,noDisposeOnSet:p,noUpdateTTL:d,maxSize:f=0,maxEntrySize:k=0,sizeCalculation:w,fetchMethod:g,memoMethod:b,noDeleteOnFetchRejection:h,noDeleteOnStaleGet:x,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:N,ignoreFetchAbort:C,perf:R}=o;if(R!==void 0&&typeof R?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#f=R??de,e!==0&&!O(e))throw new TypeError("max option must be a nonnegative integer");let A=e?So(e):Array;if(!A)throw new Error("invalid max value: "+e);if(this.#a=e,this.#u=f,this.maxEntrySize=k||this.#u,this.sizeCalculation=w,this.sizeCalculation){if(!this.#u&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(b!==void 0&&typeof b!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#g=b,g!==void 0&&typeof g!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#C=g,this.#R=!!g,this.#m=new Map,this.#i=new Array(e).fill(void 0),this.#o=new Array(e).fill(void 0),this.#n=new A(e),this.#k=new A(e),this.#r=0,this.#t=0,this.#x=be.create(e),this.#e=0,this.#v=0,typeof r=="function"&&(this.#p=r),typeof u=="function"&&(this.#j=u),typeof n=="function"?(this.#b=n,this.#l=[]):(this.#b=void 0,this.#l=void 0),this.#w=!!this.#p,this.#I=!!this.#j,this.#s=!!this.#b,this.noDisposeOnSet=!!p,this.noUpdateTTL=!!d,this.noDeleteOnFetchRejection=!!h,this.allowStaleOnFetchRejection=!!v,this.allowStaleOnFetchAbort=!!N,this.ignoreFetchAbort=!!C,this.maxEntrySize!==0){if(this.#u!==0&&!O(this.#u))throw new TypeError("maxSize must be a positive integer if specified");if(!O(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#V()}if(this.allowStale=!!s,this.noDeleteOnStaleGet=!!x,this.updateAgeOnGet=!!i,this.updateAgeOnHas=!!t,this.ttlResolution=O(m)||m===0?m:1,this.ttlAutopurge=!!c,this.ttl=a||0,this.ttl){if(!O(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#M()}if(this.#a===0&&this.ttl===0&&this.#u===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#a&&!this.#u){let P="LRU_CACHE_UNBOUNDED";he(P)&&(To.add(P),Co("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",P,Oo))}}getRemainingTTL(o){return this.#m.has(o)?1/0:0}#M(){let o=new eo(this.#a),e=new eo(this.#a);this.#d=o,this.#y=e;let a=this.ttlAutopurge?new Array(this.#a):void 0;this.#h=a,this.#F=(i,t,s=this.#f.now())=>{if(e[i]=t!==0?s:0,o[i]=t,a?.[i]&&(clearTimeout(a[i]),a[i]=void 0),t!==0&&a){let r=setTimeout(()=>{this.#q(i)&&this.#T(this.#i[i],"expire")},t+1);r.unref&&r.unref(),a[i]=r}},this.#O=i=>{e[i]=o[i]!==0?this.#f.now():0},this.#S=(i,t)=>{if(o[t]){let s=o[t],r=e[t];if(!s||!r)return;i.ttl=s,i.start=r,i.now=m||c();let u=i.now-r;i.remainingTTL=s-u}};let m=0,c=()=>{let i=this.#f.now();if(this.ttlResolution>0){m=i;let t=setTimeout(()=>m=0,this.ttlResolution);t.unref&&t.unref()}return i};this.getRemainingTTL=i=>{let t=this.#m.get(i);if(t===void 0)return 0;let s=o[t],r=e[t];if(!s||!r)return 1/0;let u=(m||c())-r;return s-u},this.#q=i=>{let t=e[i],s=o[i];return!!s&&!!t&&(m||c())-t>s}}#O=()=>{};#S=()=>{};#F=()=>{};#q=()=>!1;#V(){let o=new eo(this.#a);this.#v=0,this.#z=o,this.#E=e=>{this.#v-=o[e],o[e]=0},this.#U=(e,a,m,c)=>{if(this.#c(a))return 0;if(!O(m))if(c){if(typeof c!="function")throw new TypeError("sizeCalculation must be a function");if(m=c(a,e),!O(m))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return m},this.#_=(e,a,m)=>{if(o[e]=a,this.#u){let c=this.#u-o[e];for(;this.#v>c;)this.#D(!0)}this.#v+=o[e],m&&(m.entrySize=a,m.totalCalculatedSize=this.#v)}}#E=o=>{};#_=(o,e,a)=>{};#U=(o,e,a,m)=>{if(a||m)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#A({allowStale:o=this.allowStale}={}){if(this.#e)for(let e=this.#t;!(!this.#W(e)||((o||!this.#q(e))&&(yield e),e===this.#r));)e=this.#k[e]}*#P({allowStale:o=this.allowStale}={}){if(this.#e)for(let e=this.#r;!(!this.#W(e)||((o||!this.#q(e))&&(yield e),e===this.#t));)e=this.#n[e]}#W(o){return o!==void 0&&this.#m.get(this.#i[o])===o}*entries(){for(let o of this.#A())this.#o[o]!==void 0&&this.#i[o]!==void 0&&!this.#c(this.#o[o])&&(yield[this.#i[o],this.#o[o]])}*rentries(){for(let o of this.#P())this.#o[o]!==void 0&&this.#i[o]!==void 0&&!this.#c(this.#o[o])&&(yield[this.#i[o],this.#o[o]])}*keys(){for(let o of this.#A()){let e=this.#i[o];e!==void 0&&!this.#c(this.#o[o])&&(yield e)}}*rkeys(){for(let o of this.#P()){let e=this.#i[o];e!==void 0&&!this.#c(this.#o[o])&&(yield e)}}*values(){for(let o of this.#A())this.#o[o]!==void 0&&!this.#c(this.#o[o])&&(yield this.#o[o])}*rvalues(){for(let o of this.#P())this.#o[o]!==void 0&&!this.#c(this.#o[o])&&(yield this.#o[o])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(o,e={}){for(let a of this.#A()){let m=this.#o[a],c=this.#c(m)?m.__staleWhileFetching:m;if(c!==void 0&&o(c,this.#i[a],this))return this.get(this.#i[a],e)}}forEach(o,e=this){for(let a of this.#A()){let m=this.#o[a],c=this.#c(m)?m.__staleWhileFetching:m;c!==void 0&&o.call(e,c,this.#i[a],this)}}rforEach(o,e=this){for(let a of this.#P()){let m=this.#o[a],c=this.#c(m)?m.__staleWhileFetching:m;c!==void 0&&o.call(e,c,this.#i[a],this)}}purgeStale(){let o=!1;for(let e of this.#P({allowStale:!0}))this.#q(e)&&(this.#T(this.#i[e],"expire"),o=!0);return o}info(o){let e=this.#m.get(o);if(e===void 0)return;let a=this.#o[e],m=this.#c(a)?a.__staleWhileFetching:a;if(m===void 0)return;let c={value:m};if(this.#d&&this.#y){let i=this.#d[e],t=this.#y[e];if(i&&t){let s=i-(this.#f.now()-t);c.ttl=s,c.start=Date.now()}}return this.#z&&(c.size=this.#z[e]),c}dump(){let o=[];for(let e of this.#A({allowStale:!0})){let a=this.#i[e],m=this.#o[e],c=this.#c(m)?m.__staleWhileFetching:m;if(c===void 0||a===void 0)continue;let i={value:c};if(this.#d&&this.#y){i.ttl=this.#d[e];let t=this.#f.now()-this.#y[e];i.start=Math.floor(Date.now()-t)}this.#z&&(i.size=this.#z[e]),o.unshift([a,i])}return o}load(o){this.clear();for(let[e,a]of o){if(a.start){let m=Date.now()-a.start;a.start=this.#f.now()-m}this.set(e,a.value,a)}}set(o,e,a={}){if(e===void 0)return this.delete(o),this;let{ttl:m=this.ttl,start:c,noDisposeOnSet:i=this.noDisposeOnSet,sizeCalculation:t=this.sizeCalculation,status:s}=a,{noUpdateTTL:r=this.noUpdateTTL}=a,u=this.#U(o,e,a.size||0,t);if(this.maxEntrySize&&u>this.maxEntrySize)return s&&(s.set="miss",s.maxEntrySizeExceeded=!0),this.#T(o,"set"),this;let n=this.#e===0?void 0:this.#m.get(o);if(n===void 0)n=this.#e===0?this.#t:this.#x.length!==0?this.#x.pop():this.#e===this.#a?this.#D(!1):this.#e,this.#i[n]=o,this.#o[n]=e,this.#m.set(o,n),this.#n[this.#t]=n,this.#k[n]=this.#t,this.#t=n,this.#e++,this.#_(n,u,s),s&&(s.set="add"),r=!1,this.#I&&this.#j?.(e,o,"add");else{this.#N(n);let p=this.#o[n];if(e!==p){if(this.#R&&this.#c(p)){p.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:d}=p;d!==void 0&&!i&&(this.#w&&this.#p?.(d,o,"set"),this.#s&&this.#l?.push([d,o,"set"]))}else i||(this.#w&&this.#p?.(p,o,"set"),this.#s&&this.#l?.push([p,o,"set"]));if(this.#E(n),this.#_(n,u,s),this.#o[n]=e,s){s.set="replace";let d=p&&this.#c(p)?p.__staleWhileFetching:p;d!==void 0&&(s.oldValue=d)}}else s&&(s.set="update");this.#I&&this.onInsert?.(e,o,e===p?"update":"replace")}if(m!==0&&!this.#d&&this.#M(),this.#d&&(r||this.#F(n,m,c),s&&this.#S(s,n)),!i&&this.#s&&this.#l){let p=this.#l,d;for(;d=p?.shift();)this.#b?.(...d)}return this}pop(){try{for(;this.#e;){let o=this.#o[this.#r];if(this.#D(!0),this.#c(o)){if(o.__staleWhileFetching)return o.__staleWhileFetching}else if(o!==void 0)return o}}finally{if(this.#s&&this.#l){let o=this.#l,e;for(;e=o?.shift();)this.#b?.(...e)}}}#D(o){let e=this.#r,a=this.#i[e],m=this.#o[e];return this.#R&&this.#c(m)?m.__abortController.abort(new Error("evicted")):(this.#w||this.#s)&&(this.#w&&this.#p?.(m,a,"evict"),this.#s&&this.#l?.push([m,a,"evict"])),this.#E(e),this.#h?.[e]&&(clearTimeout(this.#h[e]),this.#h[e]=void 0),o&&(this.#i[e]=void 0,this.#o[e]=void 0,this.#x.push(e)),this.#e===1?(this.#r=this.#t=0,this.#x.length=0):this.#r=this.#n[e],this.#m.delete(a),this.#e--,e}has(o,e={}){let{updateAgeOnHas:a=this.updateAgeOnHas,status:m}=e,c=this.#m.get(o);if(c!==void 0){let i=this.#o[c];if(this.#c(i)&&i.__staleWhileFetching===void 0)return!1;if(this.#q(c))m&&(m.has="stale",this.#S(m,c));else return a&&this.#O(c),m&&(m.has="hit",this.#S(m,c)),!0}else m&&(m.has="miss");return!1}peek(o,e={}){let{allowStale:a=this.allowStale}=e,m=this.#m.get(o);if(m===void 0||!a&&this.#q(m))return;let c=this.#o[m];return this.#c(c)?c.__staleWhileFetching:c}#L(o,e,a,m){let c=e===void 0?void 0:this.#o[e];if(this.#c(c))return c;let i=new ao,{signal:t}=a;t?.addEventListener("abort",()=>i.abort(t.reason),{signal:i.signal});let s={signal:i.signal,options:a,context:m},r=(k,w=!1)=>{let{aborted:g}=i.signal,b=a.ignoreFetchAbort&&k!==void 0,h=a.ignoreFetchAbort||!!(a.allowStaleOnFetchAbort&&k!==void 0);if(a.status&&(g&&!w?(a.status.fetchAborted=!0,a.status.fetchError=i.signal.reason,b&&(a.status.fetchAbortIgnored=!0)):a.status.fetchResolved=!0),g&&!b&&!w)return n(i.signal.reason,h);let x=d,v=this.#o[e];return(v===d||b&&w&&v===void 0)&&(k===void 0?x.__staleWhileFetching!==void 0?this.#o[e]=x.__staleWhileFetching:this.#T(o,"fetch"):(a.status&&(a.status.fetchUpdated=!0),this.set(o,k,s.options))),k},u=k=>(a.status&&(a.status.fetchRejected=!0,a.status.fetchError=k),n(k,!1)),n=(k,w)=>{let{aborted:g}=i.signal,b=g&&a.allowStaleOnFetchAbort,h=b||a.allowStaleOnFetchRejection,x=h||a.noDeleteOnFetchRejection,v=d;if(this.#o[e]===d&&(!x||!w&&v.__staleWhileFetching===void 0?this.#T(o,"fetch"):b||(this.#o[e]=v.__staleWhileFetching)),h)return a.status&&v.__staleWhileFetching!==void 0&&(a.status.returnedStale=!0),v.__staleWhileFetching;if(v.__returned===v)throw k},p=(k,w)=>{let g=this.#C?.(o,c,s);g&&g instanceof Promise&&g.then(b=>k(b===void 0?void 0:b),w),i.signal.addEventListener("abort",()=>{(!a.ignoreFetchAbort||a.allowStaleOnFetchAbort)&&(k(void 0),a.allowStaleOnFetchAbort&&(k=b=>r(b,!0)))})};a.status&&(a.status.fetchDispatched=!0);let d=new Promise(p).then(r,u),f=Object.assign(d,{__abortController:i,__staleWhileFetching:c,__returned:void 0});return e===void 0?(this.set(o,f,{...s.options,status:void 0}),e=this.#m.get(o)):this.#o[e]=f,f}#c(o){if(!this.#R)return!1;let e=o;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof ao}async fetch(o,e={}){let{allowStale:a=this.allowStale,updateAgeOnGet:m=this.updateAgeOnGet,noDeleteOnStaleGet:c=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:t=this.noDisposeOnSet,size:s=0,sizeCalculation:r=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:n=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:p=this.allowStaleOnFetchRejection,ignoreFetchAbort:d=this.ignoreFetchAbort,allowStaleOnFetchAbort:f=this.allowStaleOnFetchAbort,context:k,forceRefresh:w=!1,status:g,signal:b}=e;if(!this.#R)return g&&(g.fetch="get"),this.get(o,{allowStale:a,updateAgeOnGet:m,noDeleteOnStaleGet:c,status:g});let h={allowStale:a,updateAgeOnGet:m,noDeleteOnStaleGet:c,ttl:i,noDisposeOnSet:t,size:s,sizeCalculation:r,noUpdateTTL:u,noDeleteOnFetchRejection:n,allowStaleOnFetchRejection:p,allowStaleOnFetchAbort:f,ignoreFetchAbort:d,status:g,signal:b},x=this.#m.get(o);if(x===void 0){g&&(g.fetch="miss");let v=this.#L(o,x,h,k);return v.__returned=v}else{let v=this.#o[x];if(this.#c(v)){let A=a&&v.__staleWhileFetching!==void 0;return g&&(g.fetch="inflight",A&&(g.returnedStale=!0)),A?v.__staleWhileFetching:v.__returned=v}let N=this.#q(x);if(!w&&!N)return g&&(g.fetch="hit"),this.#N(x),m&&this.#O(x),g&&this.#S(g,x),v;let C=this.#L(o,x,h,k),R=C.__staleWhileFetching!==void 0&&a;return g&&(g.fetch=N?"stale":"refresh",R&&N&&(g.returnedStale=!0)),R?C.__staleWhileFetching:C.__returned=C}}async forceFetch(o,e={}){let a=await this.fetch(o,e);if(a===void 0)throw new Error("fetch() returned undefined");return a}memo(o,e={}){let a=this.#g;if(!a)throw new Error("no memoMethod provided to constructor");let{context:m,forceRefresh:c,...i}=e,t=this.get(o,i);if(!c&&t!==void 0)return t;let s=a(o,t,{options:i,context:m});return this.set(o,s,i),s}get(o,e={}){let{allowStale:a=this.allowStale,updateAgeOnGet:m=this.updateAgeOnGet,noDeleteOnStaleGet:c=this.noDeleteOnStaleGet,status:i}=e,t=this.#m.get(o);if(t!==void 0){let s=this.#o[t],r=this.#c(s);return i&&this.#S(i,t),this.#q(t)?(i&&(i.get="stale"),r?(i&&a&&s.__staleWhileFetching!==void 0&&(i.returnedStale=!0),a?s.__staleWhileFetching:void 0):(c||this.#T(o,"expire"),i&&a&&(i.returnedStale=!0),a?s:void 0)):(i&&(i.get="hit"),r?s.__staleWhileFetching:(this.#N(t),m&&this.#O(t),s))}else i&&(i.get="miss")}#H(o,e){this.#k[e]=o,this.#n[o]=e}#N(o){o!==this.#t&&(o===this.#r?this.#r=this.#n[o]:this.#H(this.#k[o],this.#n[o]),this.#H(this.#t,o),this.#t=o)}delete(o){return this.#T(o,"delete")}#T(o,e){let a=!1;if(this.#e!==0){let m=this.#m.get(o);if(m!==void 0)if(this.#h?.[m]&&(clearTimeout(this.#h?.[m]),this.#h[m]=void 0),a=!0,this.#e===1)this.#$(e);else{this.#E(m);let c=this.#o[m];if(this.#c(c)?c.__abortController.abort(new Error("deleted")):(this.#w||this.#s)&&(this.#w&&this.#p?.(c,o,e),this.#s&&this.#l?.push([c,o,e])),this.#m.delete(o),this.#i[m]=void 0,this.#o[m]=void 0,m===this.#t)this.#t=this.#k[m];else if(m===this.#r)this.#r=this.#n[m];else{let i=this.#k[m];this.#n[i]=this.#n[m];let t=this.#n[m];this.#k[t]=this.#k[m]}this.#e--,this.#x.push(m)}}if(this.#s&&this.#l?.length){let m=this.#l,c;for(;c=m?.shift();)this.#b?.(...c)}return a}clear(){return this.#$("delete")}#$(o){for(let e of this.#P({allowStale:!0})){let a=this.#o[e];if(this.#c(a))a.__abortController.abort(new Error("deleted"));else{let m=this.#i[e];this.#w&&this.#p?.(a,m,o),this.#s&&this.#l?.push([a,m,o])}}if(this.#m.clear(),this.#o.fill(void 0),this.#i.fill(void 0),this.#d&&this.#y){this.#d.fill(0),this.#y.fill(0);for(let e of this.#h??[])e!==void 0&&clearTimeout(e);this.#h?.fill(void 0)}if(this.#z&&this.#z.fill(0),this.#r=0,this.#t=0,this.#x.length=0,this.#v=0,this.#e=0,this.#s&&this.#l){let e=this.#l,a;for(;a=e?.shift();)this.#b?.(...a)}}};var W=class extends Error{constructor(){super("No DNS providers are enabled"),this.name="NoEnabledProvidersError"}},H=class extends Error{constructor(o){super(`Invalid hostname: ${o}`),this.name="InvalidHostnameError"}},$=class extends Error{constructor(o){super(`Provider '${o}' is not enabled`),this.name="ProviderNotEnabledError"}},I=class extends Error{constructor(o){super(`Invalid provider: ${o}`),this.name="InvalidProviderError"}};var Eo=[".aaa",".aarp",".abarth",".abb",".abbott",".abbvie",".abc",".able",".abogado",".abudhabi",".ac",".academy",".accenture",".accountant",".accountants",".aco",".active",".actor",".ad",".adac",".ads",".adult",".ae",".aeg",".aero",".aetna",".af",".afamilycompany",".afl",".africa",".ag",".agakhan",".agency",".ai",".aig",".aigo",".airbus",".airforce",".airtel",".akdn",".al",".alfaromeo",".alibaba",".alipay",".allfinanz",".allstate",".ally",".alsace",".alstom",".am",".amazon",".americanexpress",".americanfamily",".amex",".amfam",".amica",".amsterdam",".an",".analytics",".android",".anquan",".anz",".ao",".aol",".apartments",".app",".apple",".aq",".aquarelle",".ar",".arab",".aramco",".archi",".army",".arpa",".art",".arte",".as",".asda",".asia",".associates",".at",".athleta",".attorney",".au",".auction",".audi",".audible",".audio",".auspost",".author",".auto",".autos",".avianca",".aw",".aws",".ax",".axa",".az",".azure",".ba",".baby",".baidu",".banamex",".bananarepublic",".band",".bank",".bar",".barcelona",".barclaycard",".barclays",".barefoot",".bargains",".baseball",".basketball",".bauhaus",".bayern",".bb",".bbc",".bbt",".bbva",".bcg",".bcn",".bd",".be",".beats",".beauty",".beer",".bentley",".berlin",".best",".bestbuy",".bet",".bf",".bg",".bh",".bharti",".bi",".bible",".bid",".bike",".bing",".bingo",".bio",".biz",".bj",".bl",".black",".blackfriday",".blanco",".blockbuster",".blog",".bloomberg",".blue",".bm",".bms",".bmw",".bn",".bnl",".bnpparibas",".bo",".boats",".boehringer",".bofa",".bom",".bond",".boo",".book",".booking",".boots",".bosch",".bostik",".boston",".bot",".boutique",".box",".bq",".br",".bradesco",".bridgestone",".broadway",".broker",".brother",".brussels",".bs",".bt",".budapest",".bugatti",".build",".builders",".business",".buy",".buzz",".bv",".bw",".by",".bz",".bzh",".ca",".cab",".cafe",".cal",".call",".calvinklein",".cam",".camera",".camp",".cancerresearch",".canon",".capetown",".capital",".capitalone",".car",".caravan",".cards",".care",".career",".careers",".cars",".cartier",".casa",".case",".caseih",".cash",".casino",".cat",".catering",".catholic",".cba",".cbn",".cbre",".cbs",".cc",".cd",".ceb",".center",".ceo",".cern",".cf",".cfa",".cfd",".cg",".ch",".chanel",".channel",".charity",".chase",".chat",".cheap",".chintai",".chloe",".christmas",".chrome",".chrysler",".church",".ci",".cipriani",".circle",".cisco",".citadel",".citi",".citic",".city",".cityeats",".ck",".cl",".claims",".cleaning",".click",".clinic",".clinique",".clothing",".cloud",".club",".clubmed",".cm",".cn",".co",".coach",".codes",".coffee",".college",".cologne",".com",".comcast",".commbank",".community",".company",".compare",".computer",".comsec",".condos",".construction",".consulting",".contact",".contractors",".cooking",".cookingchannel",".cool",".coop",".corsica",".country",".coupon",".coupons",".courses",".cpa",".cr",".credit",".creditcard",".creditunion",".cricket",".crown",".crs",".cruise",".cruises",".csc",".cu",".cuisinella",".cv",".cw",".cx",".cy",".cymru",".cyou",".cz",".dabur",".dad",".dance",".data",".date",".dating",".datsun",".day",".dclk",".dds",".de",".deal",".dealer",".deals",".degree",".delivery",".dell",".deloitte",".delta",".democrat",".dental",".dentist",".desi",".design",".dev",".dhl",".diamonds",".diet",".digital",".direct",".directory",".discount",".discover",".dish",".diy",".dj",".dk",".dm",".dnp",".do",".docs",".doctor",".dodge",".dog",".doha",".domains",".doosan",".dot",".download",".drive",".dtv",".dubai",".duck",".dunlop",".duns",".dupont",".durban",".dvag",".dvr",".dz",".earth",".eat",".ec",".eco",".edeka",".edu",".education",".ee",".eg",".eh",".email",".emerck",".energy",".engineer",".engineering",".enterprises",".epost",".epson",".equipment",".er",".ericsson",".erni",".es",".esq",".estate",".esurance",".et",".etisalat",".eu",".eurovision",".eus",".events",".everbank",".exchange",".expert",".exposed",".express",".extraspace",".fage",".fail",".fairwinds",".faith",".family",".fan",".fans",".farm",".farmers",".fashion",".fast",".fedex",".feedback",".ferrari",".ferrero",".fi",".fiat",".fidelity",".fido",".film",".final",".finance",".financial",".fire",".firestone",".firmdale",".fish",".fishing",".fit",".fitness",".fj",".fk",".flickr",".flights",".flir",".florist",".flowers",".flsmidth",".fly",".fm",".fo",".foo",".food",".foodnetwork",".football",".ford",".forex",".forsale",".forum",".foundation",".fox",".fr",".free",".fresenius",".frl",".frogans",".frontdoor",".frontier",".ftr",".fujitsu",".fujixerox",".fun",".fund",".furniture",".futbol",".fyi",".ga",".gal",".gallery",".gallo",".gallup",".game",".games",".gap",".garden",".gay",".gb",".gbiz",".gd",".gdn",".ge",".gea",".gent",".genting",".george",".gf",".gg",".ggee",".gh",".gi",".gift",".gifts",".gives",".giving",".gl",".glade",".glass",".gle",".global",".globo",".gm",".gmail",".gmbh",".gmo",".gmx",".gn",".godaddy",".gold",".goldpoint",".golf",".goo",".goodhands",".goodyear",".goog",".google",".gop",".got",".gov",".gp",".gq",".gr",".grainger",".graphics",".gratis",".green",".gripe",".grocery",".group",".gs",".gt",".gu",".guardian",".gucci",".guge",".guide",".guitars",".guru",".gw",".gy",".hair",".hamburg",".hangout",".haus",".hbo",".hdfc",".hdfcbank",".health",".healthcare",".help",".helsinki",".here",".hermes",".hgtv",".hiphop",".hisamitsu",".hitachi",".hiv",".hk",".hkt",".hm",".hn",".hockey",".holdings",".holiday",".homedepot",".homegoods",".homes",".homesense",".honda",".honeywell",".horse",".hospital",".host",".hosting",".hot",".hoteles",".hotels",".hotmail",".house",".how",".hr",".hsbc",".ht",".htc",".hu",".hughes",".hyatt",".hyundai",".ibm",".icbc",".ice",".icu",".id",".ie",".ieee",".ifm",".iinet",".ikano",".il",".im",".imamat",".imdb",".immo",".immobilien",".in",".inc",".industries",".infiniti",".info",".ing",".ink",".institute",".insurance",".insure",".int",".intel",".international",".intuit",".investments",".io",".ipiranga",".iq",".ir",".irish",".is",".iselect",".ismaili",".ist",".istanbul",".it",".itau",".itv",".iveco",".iwc",".jaguar",".java",".jcb",".jcp",".je",".jeep",".jetzt",".jewelry",".jio",".jlc",".jll",".jm",".jmp",".jnj",".jo",".jobs",".joburg",".jot",".joy",".jp",".jpmorgan",".jprs",".juegos",".juniper",".kaufen",".kddi",".ke",".kerryhotels",".kerrylogistics",".kerryproperties",".kfh",".kg",".kh",".ki",".kia",".kids",".kim",".kinder",".kindle",".kitchen",".kiwi",".km",".kn",".koeln",".komatsu",".kosher",".kp",".kpmg",".kpn",".kr",".krd",".kred",".kuokgroup",".kw",".ky",".kyoto",".kz",".la",".lacaixa",".ladbrokes",".lamborghini",".lamer",".lancaster",".lancia",".lancome",".land",".landrover",".lanxess",".lasalle",".lat",".latino",".latrobe",".law",".lawyer",".lb",".lc",".lds",".lease",".leclerc",".lefrak",".legal",".lego",".lexus",".lgbt",".li",".liaison",".lidl",".life",".lifeinsurance",".lifestyle",".lighting",".like",".lilly",".limited",".limo",".lincoln",".linde",".link",".lipsy",".live",".living",".lixil",".lk",".llc",".llp",".loan",".loans",".locker",".locus",".loft",".lol",".london",".lotte",".lotto",".love",".lpl",".lplfinancial",".lr",".ls",".lt",".ltd",".ltda",".lu",".lundbeck",".lupin",".luxe",".luxury",".lv",".ly",".ma",".macys",".madrid",".maif",".maison",".makeup",".man",".management",".mango",".map",".market",".marketing",".markets",".marriott",".marshalls",".maserati",".mattel",".mba",".mc",".mcd",".mcdonalds",".mckinsey",".md",".me",".med",".media",".meet",".melbourne",".meme",".memorial",".men",".menu",".meo",".merckmsd",".metlife",".mf",".mg",".mh",".miami",".microsoft",".mil",".mini",".mint",".mit",".mitsubishi",".mk",".ml",".mlb",".mls",".mm",".mma",".mn",".mo",".mobi",".mobile",".mobily",".moda",".moe",".moi",".mom",".monash",".money",".monster",".montblanc",".mopar",".mormon",".mortgage",".moscow",".moto",".motorcycles",".mov",".movie",".movistar",".mp",".mq",".mr",".ms",".msd",".mt",".mtn",".mtpc",".mtr",".mu",".museum",".music",".mutual",".mutuelle",".mv",".mw",".mx",".my",".mz",".na",".nab",".nadex",".nagoya",".name",".nationwide",".natura",".navy",".nba",".nc",".ne",".nec",".net",".netbank",".netflix",".network",".neustar",".new",".newholland",".news",".next",".nextdirect",".nexus",".nf",".nfl",".ng",".ngo",".nhk",".ni",".nico",".nike",".nikon",".ninja",".nissan",".nissay",".nl",".no",".nokia",".northwesternmutual",".norton",".now",".nowruz",".nowtv",".np",".nr",".nra",".nrw",".ntt",".nu",".nyc",".nz",".obi",".observer",".off",".office",".okinawa",".olayan",".olayangroup",".oldnavy",".ollo",".om",".omega",".one",".ong",".onl",".online",".onyourside",".ooo",".open",".oracle",".orange",".org",".organic",".orientexpress",".origins",".osaka",".otsuka",".ott",".ovh",".pa",".page",".pamperedchef",".panasonic",".panerai",".paris",".pars",".partners",".parts",".party",".passagens",".pay",".pccw",".pe",".pet",".pf",".pfizer",".pg",".ph",".pharmacy",".phd",".philips",".phone",".photo",".photography",".photos",".physio",".piaget",".pics",".pictet",".pictures",".pid",".pin",".ping",".pink",".pioneer",".pizza",".pk",".pl",".place",".play",".playstation",".plumbing",".plus",".pm",".pn",".pnc",".pohl",".poker",".politie",".porn",".post",".pr",".pramerica",".praxi",".press",".prime",".pro",".prod",".productions",".prof",".progressive",".promo",".properties",".property",".protection",".pru",".prudential",".ps",".pt",".pub",".pw",".pwc",".py",".qa",".qpon",".quebec",".quest",".qvc",".racing",".radio",".raid",".re",".read",".realestate",".realtor",".realty",".recipes",".red",".redstone",".redumbrella",".rehab",".reise",".reisen",".reit",".reliance",".ren",".rent",".rentals",".repair",".report",".republican",".rest",".restaurant",".review",".reviews",".rexroth",".rich",".richardli",".ricoh",".rightathome",".ril",".rio",".rip",".rmit",".ro",".rocher",".rocks",".rodeo",".rogers",".room",".rs",".rsvp",".ru",".rugby",".ruhr",".run",".rw",".rwe",".ryukyu",".sa",".saarland",".safe",".safety",".sakura",".sale",".salon",".samsclub",".samsung",".sandvik",".sandvikcoromant",".sanofi",".sap",".sapo",".sarl",".sas",".save",".saxo",".sb",".sbi",".sbs",".sc",".sca",".scb",".schaeffler",".schmidt",".scholarships",".school",".schule",".schwarz",".science",".scjohnson",".scor",".scot",".sd",".se",".search",".seat",".secure",".security",".seek",".select",".sener",".services",".ses",".seven",".sew",".sex",".sexy",".sfr",".sg",".sh",".shangrila",".sharp",".shaw",".shell",".shia",".shiksha",".shoes",".shop",".shopping",".shouji",".show",".showtime",".shriram",".si",".silk",".sina",".singles",".site",".sj",".sk",".ski",".skin",".sky",".skype",".sl",".sling",".sm",".smart",".smile",".sn",".sncf",".so",".soccer",".social",".softbank",".software",".sohu",".solar",".solutions",".song",".sony",".soy",".spa",".space",".spiegel",".sport",".spot",".spreadbetting",".sr",".srl",".srt",".ss",".st",".stada",".staples",".star",".starhub",".statebank",".statefarm",".statoil",".stc",".stcgroup",".stockholm",".storage",".store",".stream",".studio",".study",".style",".su",".sucks",".supplies",".supply",".support",".surf",".surgery",".suzuki",".sv",".swatch",".swiftcover",".swiss",".sx",".sy",".sydney",".symantec",".systems",".sz",".tab",".taipei",".talk",".taobao",".target",".tatamotors",".tatar",".tattoo",".tax",".taxi",".tc",".tci",".td",".tdk",".team",".tech",".technology",".tel",".telecity",".telefonica",".temasek",".tennis",".teva",".tf",".tg",".th",".thd",".theater",".theatre",".tiaa",".tickets",".tienda",".tiffany",".tips",".tires",".tirol",".tj",".tjmaxx",".tjx",".tk",".tkmaxx",".tl",".tm",".tmall",".tn",".to",".today",".tokyo",".tools",".top",".toray",".toshiba",".total",".tours",".town",".toyota",".toys",".tp",".tr",".trade",".trading",".training",".travel",".travelchannel",".travelers",".travelersinsurance",".trust",".trv",".tt",".tube",".tui",".tunes",".tushu",".tv",".tvs",".tw",".tz",".ua",".ubank",".ubs",".uconnect",".ug",".uk",".um",".unicom",".university",".uno",".uol",".ups",".us",".uy",".uz",".va",".vacations",".vana",".vanguard",".vc",".ve",".vegas",".ventures",".verisign",".versicherung",".vet",".vg",".vi",".viajes",".video",".vig",".viking",".villas",".vin",".vip",".virgin",".visa",".vision",".vista",".vistaprint",".viva",".vivo",".vlaanderen",".vn",".vodka",".volkswagen",".volvo",".vote",".voting",".voto",".voyage",".vu",".vuelos",".wales",".walmart",".walter",".wang",".wanggou",".warman",".watch",".watches",".weather",".weatherchannel",".webcam",".weber",".website",".wed",".wedding",".weibo",".weir",".wf",".whoswho",".wien",".wiki",".williamhill",".win",".windows",".wine",".winners",".wme",".wolterskluwer",".woodside",".work",".works",".world",".wow",".ws",".wtc",".wtf",".xbox",".xerox",".xfinity",".xihuan",".xin",".\u6D4B\u8BD5",".\u0915\u0949\u092E",".\u092A\u0930\u0940\u0915\u094D\u0937\u093E",".\u30BB\u30FC\u30EB",".\u4F5B\u5C71",".\u0CAD\u0CBE\u0CB0\u0CA4",".\u6148\u5584",".\u96C6\u56E2",".\u5728\u7EBF",".\uD55C\uAD6D",".\u0B2D\u0B3E\u0B30\u0B24",".\u5927\u4F17\u6C7D\u8F66",".\u70B9\u770B",".\u0E04\u0E2D\u0E21",".\u09AD\u09BE\u09F0\u09A4",".\u09AD\u09BE\u09B0\u09A4",".\u516B\u5366","\u200F.\u05D9\u05E9\u05E8\u05D0\u05DC\u200E","\u200F.\u0645\u0648\u0642\u0639\u200E",".\u09AC\u09BE\u0982\u09B2\u09BE",".\u516C\u76CA",".\u516C\u53F8",".\u9999\u683C\u91CC\u62C9",".\u7F51\u7AD9",".\u79FB\u52A8",".\u6211\u7231\u4F60",".\u043C\u043E\u0441\u043A\u0432\u0430",".\u0438\u0441\u043F\u044B\u0442\u0430\u043D\u0438\u0435",".\u049B\u0430\u0437",".\u043A\u0430\u0442\u043E\u043B\u0438\u043A",".\u043E\u043D\u043B\u0430\u0439\u043D",".\u0441\u0430\u0439\u0442",".\u8054\u901A",".\u0441\u0440\u0431",".\u0431\u0433",".\u0431\u0435\u043B","\u200F.\u05E7\u05D5\u05DD\u200E",".\u65F6\u5C1A",".\u5FAE\u535A",".\uD14C\uC2A4\uD2B8",".\u6DE1\u9A6C\u9521",".\u30D5\u30A1\u30C3\u30B7\u30E7\u30F3",".\u043E\u0440\u0433",".\u0928\u0947\u091F",".\u30B9\u30C8\u30A2",".\u30A2\u30DE\u30BE\u30F3",".\uC0BC\uC131",".\u0B9A\u0BBF\u0B99\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0BC2\u0BB0\u0BCD",".\u5546\u6807",".\u5546\u5E97",".\u5546\u57CE",".\u0434\u0435\u0442\u0438",".\u043C\u043A\u0434","\u200F.\u05D8\u05E2\u05E1\u05D8\u200E",".\u0435\u044E",".\u30DD\u30A4\u30F3\u30C8",".\u65B0\u95FB",".\u5DE5\u884C",".\u5BB6\u96FB","\u200F.\u0643\u0648\u0645\u200E",".\u4E2D\u6587\u7F51",".\u4E2D\u4FE1",".\u4E2D\u56FD",".\u4E2D\u570B",".\u5A31\u4E50",".\u8C37\u6B4C",".\u0C2D\u0C3E\u0C30\u0C24\u0C4D",".\u0DBD\u0D82\u0D9A\u0DCF",".\u96FB\u8A0A\u76C8\u79D1",".\u8D2D\u7269",".\u6E2C\u8A66",".\u30AF\u30E9\u30A6\u30C9",".\u0AAD\u0ABE\u0AB0\u0AA4",".\u901A\u8CA9",".\u092D\u093E\u0930\u0924\u092E\u094D",".\u092D\u093E\u0930\u0924",".\u092D\u093E\u0930\u094B\u0924","\u200F.\u0622\u0632\u0645\u0627\u06CC\u0634\u06CC\u200E",".\u0BAA\u0BB0\u0BBF\u0B9F\u0BCD\u0B9A\u0BC8",".\u7F51\u5E97",".\u0938\u0902\u0917\u0920\u0928",".\u9910\u5385",".\u7F51\u7EDC",".\u043A\u043E\u043C",".\u0443\u043A\u0440",".\u9999\u6E2F",".\u4E9A\u9A6C\u900A",".\u8BFA\u57FA\u4E9A",".\u98DF\u54C1",".\u03B4\u03BF\u03BA\u03B9\u03BC\u03AE",".\u98DE\u5229\u6D66","\u200F.\u0625\u062E\u062A\u0628\u0627\u0631\u200E",".\u53F0\u6E7E",".\u53F0\u7063",".\u624B\u8868",".\u624B\u673A",".\u043C\u043E\u043D","\u200F.\u0627\u0644\u062C\u0632\u0627\u0626\u0631\u200E","\u200F.\u0639\u0645\u0627\u0646\u200E","\u200F.\u0627\u0631\u0627\u0645\u0643\u0648\u200E","\u200F.\u0627\u06CC\u0631\u0627\u0646\u200E","\u200F.\u0627\u0644\u0639\u0644\u064A\u0627\u0646\u200E","\u200F.\u0627\u062A\u0635\u0627\u0644\u0627\u062A\u200E","\u200F.\u0627\u0645\u0627\u0631\u0627\u062A\u200E","\u200F.\u0628\u0627\u0632\u0627\u0631\u200E","\u200F.\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627\u200E","\u200F.\u067E\u0627\u06A9\u0633\u062A\u0627\u0646\u200E","\u200F.\u0627\u0644\u0627\u0631\u062F\u0646\u200E","\u200F.\u0645\u0648\u0628\u0627\u064A\u0644\u064A\u200E","\u200F.\u0628\u0627\u0631\u062A\u200E","\u200F.\u0628\u06BE\u0627\u0631\u062A\u200E","\u200F.\u0627\u0644\u0645\u063A\u0631\u0628\u200E","\u200F.\u0627\u0628\u0648\u0638\u0628\u064A\u200E","\u200F.\u0627\u0644\u0628\u062D\u0631\u064A\u0646\u200E","\u200F.\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629\u200E","\u200F.\u0680\u0627\u0631\u062A\u200E","\u200F.\u0643\u0627\u062B\u0648\u0644\u064A\u0643\u200E","\u200F.\u0633\u0648\u062F\u0627\u0646\u200E","\u200F.\u0647\u0645\u0631\u0627\u0647\u200E","\u200F.\u0639\u0631\u0627\u0642\u200E","\u200F.\u0645\u0644\u064A\u0633\u064A\u0627\u200E",".\u6FB3\u9580",".\uB2F7\uCEF4",".\u653F\u5E9C","\u200F.\u0634\u0628\u0643\u0629\u200E","\u200F.\u0628\u064A\u062A\u0643\u200E","\u200F.\u0639\u0631\u0628\u200E",".\u10D2\u10D4",".\u673A\u6784",".\u7EC4\u7EC7\u673A\u6784",".\u5065\u5EB7",".\u0E44\u0E17\u0E22","\u200F.\u0633\u0648\u0631\u064A\u0629\u200E",".\u62DB\u8058",".\u0440\u0443\u0441",".\u0440\u0444",".\u73E0\u5B9D","\u200F.\u062A\u0648\u0646\u0633\u200E",".\u5927\u62FF",".\u0EA5\u0EB2\u0EA7",".\u307F\u3093\u306A",".\u30B0\u30FC\u30B0\u30EB",".\u03B5\u03C5",".\u03B5\u03BB",".\u4E16\u754C",".\u66F8\u7C4D",".\u0D2D\u0D3E\u0D30\u0D24\u0D02",".\u0A2D\u0A3E\u0A30\u0A24",".\u7F51\u5740",".\uB2F7\uB137",".\u30B3\u30E0",".\u5929\u4E3B\u6559",".\u6E38\u620F",".verm\xF6gensberater",".verm\xF6gensberatung",".\u4F01\u4E1A",".\u4FE1\u606F",".\u5609\u91CC\u5927\u9152\u5E97",".\u5609\u91CC","\u200F.\u0645\u0635\u0631\u200E","\u200F.\u0642\u0637\u0631\u200E",".\u5E7F\u4E1C",".\u0B87\u0BB2\u0B99\u0BCD\u0B95\u0BC8",".\u0B87\u0BA8\u0BCD\u0BA4\u0BBF\u0BAF\u0BBE",".\u0570\u0561\u0575",".\u65B0\u52A0\u5761","\u200F.\u0641\u0644\u0633\u0637\u064A\u0646\u200E",".\u30C6\u30B9\u30C8",".\u653F\u52A1",".xperia",".xxx",".xyz",".yachts",".yahoo",".yamaxun",".yandex",".ye",".yodobashi",".yoga",".yokohama",".you",".youtube",".yt",".yun",".za",".zappos",".zara",".zero",".zip",".zippo",".zm",".zone",".zuerich",".zw",".ac.vn",".ae.org",".biz.fj",".biz.pl",".biz.tr",".biz.tt",".biz.vn",".br.com",".cn.com",".co.ag",".co.at",".co.ci",".co.cm",".co.com",".co.cr",".co.de",".co.ee",".co.gg",".co.gy",".co.hu",".co.id",".co.il",".co.im",".co.in",".co.ir",".co.it",".co.je",".co.ke",".co.kr",".co.lc",".co.ls",".co.na",".co.ni",".co.nl",".co.no",".co.nu",".co.nz",".co.om",".co.rs",".co.th",".co.tt",".co.tz",".co.ug",".co.uk",".co.uz",".co.ve",".co.vi",".co.za",".com.ag",".com.ai",".com.ar",".com.au",".com.bb",".com.bd",".com.bm",".com.bo",".com.br",".com.bs",".com.bz",".com.cm",".com.cn",".com.co",".com.cu",".com.cy",".com.de",".com.do",".com.ec",".com.ee",".com.es",".com.fj",".com.gi",".com.gp",".com.gr",".com.gt",".com.gy",".com.hk",".com.hn",".com.hr",".com.ht",".com.kn",".com.lb",".com.lc",".com.lv",".com.mk",".com.mt",".com.mx",".com.my",".com.na",".com.ng",".com.ni",".com.om",".com.pa",".com.pe",".com.ph",".com.pk",".com.pl",".com.pr",".com.pt",".com.py",".com.ro",".com.ru",".com.sb",".com.se",".com.sg",".com.so",".com.sv",".com.tr",".com.tt",".com.tw",".com.ua",".com.uy",".com.uz",".com.vc",".com.ve",".com.vi",".com.vn",".de.com",".edu.vn",".eu.com",".firm.in",".gb.net",".gen.in",".gen.tr",".gr.com",".health.vn",".ind.in",".info.ec",".info.fj",".info.pl",".info.tt",".info.vn",".int.vn",".jpn.com",".ltd.uk",".me.uk",".msk.ru",".name.fj",".name.tr",".name.tt",".name.vn",".net.ag",".net.ai",".net.ar",".net.au",".net.bb",".net.bm",".net.bo",".net.br",".net.bz",".net.cm",".net.cn",".net.co",".net.fj",".net.gg",".net.gp",".net.gt",".net.gy",".net.hn",".net.in",".net.je",".net.lc",".net.lv",".net.my",".net.ni",".net.nz",".net.pl",".net.pr",".net.ru",".net.so",".net.tt",".net.vc",".net.vi",".net.vn",".nom.ag",".nom.es",".nom.ni",".off.ai",".or.at",".or.kr",".org.ag",".org.ai",".org.bb",".org.bm",".org.bo",".org.bz",".org.cn",".org.es",".org.fj",".org.gg",".org.gt",".org.hn",".org.il",".org.in",".org.je",".org.lc",".org.ls",".org.lv",".org.na",".org.ni",".org.nz",".org.pl",".org.pr",".org.ru",".org.so",".org.tt",".org.uk",".org.vc",".org.ve",".org.vi",".org.vn",".plc.uk",".pro.fj",".pro.tt",".pro.vn",".radio.am",".radio.fm",".ru.com",".sa.com",".se.net",".tv.br",".uk.com",".uk.net",".us.com",".us.org",".waw.pl",".web.id",".web.tr",".za.com"];var io=class{validDomainExtensions;constructor(){this.validDomainExtensions=new Set(Eo)}isDomainExtension(o){let e=o.substring(o.lastIndexOf("."));return this.isValidExtension(e)}domain(o){if(!this.isValidInput(o))return"";let e=this.extractAndCleanDomain(o);return this.parseMainDomain(e)}isValidInput(o){return o!=null&&o.length>=7}extractAndCleanDomain(o){let e;return o.startsWith("http://")||o.startsWith("https://")?e=new URL(o).hostname:o.startsWith("//")?e=new URL(`https:${o}`).hostname:e="~"+o,e.includes("~")&&(e=this.removeUrlFragments(e),e=e.replace("~","")),e}removeUrlFragments(o){return o.includes("@")?o.split("@")[1]:o.includes("/")?o.split("/")[0]:o.includes("?")?o.split("?")[0]:o.includes("#")?o.split("#")[0]:o}parseMainDomain(o){let e=o.split("."),a=e.length;if(a===2){let m=o.substring(o.lastIndexOf("."));return this.isValidExtension(m)?o:""}return a>=3?this.handleComplexDomain(e):""}handleComplexDomain(o){let e=this.getLastThreeParts(o),[,a,m]=e.split("."),c="."+a,i="."+m;return this.isValidExtension(c)&&this.isValidExtension(i)?e:this.isValidExtension(i)?a+"."+m:""}getLastThreeParts(o){return o.length===3?o.join("."):o.slice(-3).join(".")}isValidExtension(o){return this.validDomainExtensions.has(o.toLowerCase().trim())}};var No=[{name:"Sohu",mx:"a.sohu.com"},{name:"Sohu",mx:"sohu.com"},{name:"Strato",mx:".rzone.de"},{name:"Strato",mx:".strato.de"},{name:"21cn",mx:".21cn.com"},{name:"163",mx:".netease.com"},{name:"Netvigator",mx:".netvigator.com"},{name:"139",mx:".mail.139.com"},{name:"Nate",mx:".nate.com"},{name:"Naver",mx:".naver.com"},{name:"Daum",mx:".daum.kgslb.com"},{name:"Daum",mx:".hanmail.net"},{name:"Ziggo",mx:".ziggo.nl"},{name:"QQ",mx:".qq.com"},{name:"263.net",mx:"263.net"},{name:"Sina",mx:".vip.sina.com"},{name:"Sina",mx:".sina.com.cn"},{name:"Aruba",mx:".aruba.it"},{name:"Aliyun",mx:".mxhichina.com"},{name:"Plala Webmail",mx:".plala.or.jp"},{name:"AOL",mx:"mx-aol.mail"},{name:"Turbify",mx:"mx-biz.mail.am0.yahoodns.net"},{name:"Turbify",mx:"mx-biz.mail.am.yahoodns.net"},{name:"Turbify",mx:"mx-biz.mail.am1.yahoodns.net"},{name:"Turbify",mx:"mx1.biz.mail.yahoo.com"},{name:"Turbify",mx:"mx5.biz.mail.yahoo.com"},{name:"Turbify",mx:".biz.mail.yahoo.com"},{name:"AT&T",mx:".prodigy.net"},{name:"Yahoo",mx:".yahoo."},{name:"Yahoo",mx:".yahoodns.net"},{name:"Zoho",mx:".zoho.com"},{name:"Sitestar Webmail",mx:".sitestar.everyone.net",webmail:"https://webmail.sitestar.net"},{name:"Outlook Web App (OWA)",mx:".serverdata.net",webmail:"https://owa.serverdata.net"},{name:"1and1",mx:".1and1."},{name:"Outlook",mx:"olc.protection.outlook.com"},{name:"Outlook",mx:".mail.outlook.com"},{name:"Outlook",mx:".hotmail."},{name:"Office 365",mx:"mail.protection.outlook.com"},{name:"Office 365",mx:".outlook.com"},{name:"Office 365",mx:".office365.com"},{name:"Gmail",mx:".google.com"},{name:"Mail.ru",mx:".mail.ru"},{name:"Mail.com",mx:".mail.com"},{name:"Earthlink",mx:".earthlink.net"},{name:"Earthlink",mx:".oxsus-vadesecure.net"},{name:"Rackspace",mx:".emailsrvr.com"},{name:"Mimecast",mx:".mimecast.com"},{name:"Godaddy",mx:".secureserver.net"},{name:"Comcast",mx:".comcast.net"},{name:"Office 365",mx:".ppe-hosted.com"},{name:"Office 365",mx:".gslb.pphosted.com"},{name:"Office 365",mx:".arsmtp.com"},{name:"Zoho",mx:".zoho.com"},{name:"ProtonMail",mx:"mail.protonmail.ch"},{name:"Facebook",mx:".facebook.com"},{name:"163",mx:".netease.com"},{name:"163",mx:".163.com"},{name:"263",mx:".263.net"},{name:"Aliyun",mx:".alibaba.com"},{name:"Aliyun",mx:".aliyun.com"},{name:"Amazon",mx:".amazon.com"},{name:"Amazon",mx:".amazonaws.com"},{name:"Anazana",mx:".anazana.com"},{name:"CoreMail",mx:".icoremail.net"},{name:"GMX",mx:".gmx.net"},{name:"GMX",mx:".gmx.com"},{name:"Hinet",mx:".hinet."},{name:"iCloud",mx:".icloud.com"},{name:"Iinet",mx:".iinet.net.au"},{name:"Namecheap",mx:".registrar-servers.com"},{name:"Network Solutions",mx:".myregisteredsite.com"},{name:"Orange",mx:".orange."},{name:"QQ",mx:".qq.com"},{name:"Synaq",mx:".synaq."},{name:"Web.de",mx:".web.de"},{name:"Yandex",mx:".yandex."},{name:"Zmail",mx:".zmail."},{name:"Strato",mx:".strato.de"},{name:"Apple",mx:".apple.com"},{name:"Cox Webmail",mx:".cloudfilter.net"},{name:"Fastmail",mx:".messagingengine.com"},{name:"Mailgun",mx:".mailgun.org"},{name:"Postmark",mx:".pmta.postmarkapp.com"},{name:"SendGrid",mx:".sendgrid.net"},{name:"Elastic Email",mx:".elasticemail.com"},{name:"Zendesk",mx:".zendesk.com"},{name:"Intermedia",mx:".intermedia.net"},{name:"Mailjet",mx:".mailjet.com"},{name:"Front",mx:".frontapp.com"},{name:"Unknown",mx:".................."},{name:"Webmail",mx:".................."},{name:"Zimbra",mx:".................."},{name:"Others",mx:".................."},{name:"Aruba",mx:".................."},{name:"Alibaba",mx:".................."},{name:"IBM",mx:".................."},{name:"Digitalocean",mx:".................."},{name:"AWS Partner",mx:".................."},{name:"Microsoft Exchange",mx:".................."},{name:"Oracle Cloud",mx:".................."},{name:"Roundcube Webmail",mx:".................."},{name:"cPanel Webmail",mx:".................."},{name:"Yahoo (External Provider)",mx:".................."},{name:"cPanel Webmail",mx:".................."},{name:"Disposable",mx:".................."}],Io=["automation","products","product","product.info","product-info","productinfo","alert","alerts","automated","rewards","clientpayments","invites","page-notification","page-notification-noreply","friendupdates","groupupdates","messages","advertise","advertise-noreply","advertise-no.reply","advertise-no-reply","advertise-no_reply","reminders","reminder","notification","paymentnotification","payment-notification","payment.notification","payment_notification","registration","registrations","signup","sign-up","signin","sign-in","email","e-mail","no_reply","whatsinstore","ship","nobody","no-body","publishers","whatsinstore","hosting-security","hosting","accountstatus","account-status","account_status","hosting-service","billing","hostingsecurity","robot","hosting-services","hostingservices","hostingservice","no.reply","paypal","no-reply","feedback","example","donotreply","noreply","do-not-reply","bot","do_not_reply","market.news","clientservices","list","client-services","client.services","abuse","accessibilty","accessibility","accounting","account","accounts.payable","adm","admin","admissions","ads","advertise","advisor","agency","agent","all","api","ask","attorneys","award","bills","bizdev","biz-dev","board","booking","bookings","buzz","callcenter","career","careers","ceo","cfa","chat","chief","comments","contact","contacts","copyright","corporate","courses","customer.services","customercare","customer-care","customerservice","customer-service","customerservicecenter","customer-service-center","custserv","data","design","development","director","directory","domains","editor","editorial","emails","engineering","enquiries","enquiry","event","events","everyone","feedback","finance","foundation","frontdesk","ftp","general","global","grouplegal","group-legal","groups","help","helpdesk","home","hotel","hr","human.resources","humanresources","human-resources","info","information","inquiries","inquiry","instructor","insurance","internet","interoperability","invest","investor","investorrelations","investor-relations","job","jobs","lawoffice","law-office","leasing","legal","library","listing","logistics","mail","mailbox","mailroom","main","manager","marketing","mayor","media","medicalqueries","medical-queries","meetings","members","membership","membersupport","member-support","merchant","misc","news","newsroom","noc","offers","office","online","operations","organiser","organizer","pastor","pharma","photos","politics","postmaster","pr","president","prime","privacy","projects","promos","publicaffairs","public-affairs","publisher","quality","query","questions","radio","realestate","real-estate","realtor","receptionist","redaction","register","remove","repairs","request","research","reservation","reservations","reserve","reserveroom","reserve-room","root","sale","sales","school","schools","secretary","security","service","shopping","spam","staff","subscribe","suggest","support","survey","talent","tourism","tours","trading","training","transfer","travel","travels","unsubscribe","usa","usenet","user","username","users","uucp","verify","volunteer","web","webinfo","webmaster","website","wwinfo","www","www-validator"],_o=new Set(["yahoo.com","ameritech.net","att.net","bellsouth.net","currently.com","flash.net","nvbell.net","pacbell.net","prodigy.net","sbcglobal.net","snet.net","swbell.net","wans.net","worldnet.att.net","ymail.com","y7mail.com","yahoo.at","yahoo.be","yahoo.bg","yahoo.ca","yahoo.cl","yahoo.co.hu","yahoo.co.id","yahoo.co.il","yahoo.co.in","yahoo.co.kr","yahoo.co.nz","yahoo.co.th","yahoo.co.uk","yahoo.co.za","yahoo.com.ar","yahoo.com.au","yahoo.com.br","yahoo.com.co","yahoo.com.hk","yahoo.com.hr","yahoo.com.mx","yahoo.com.my","yahoo.com.pe","yahoo.com.ph","yahoo.com.sg","yahoo.com.tr","yahoo.com.tw","yahoo.com.ua","yahoo.com.ve","yahoo.com.vn","yahoo.cz","yahoo.de","yahoo.dk","yahoo.ee","yahoo.es","yahoo.fi","yahoo.fr","yahoo.gr","yahoo.hr","yahoo.hu","yahoo.ie","yahoo.in","yahoo.it","yahoo.lt","yahoo.lv","yahoo.nl","yahoo.no","yahoo.pl","yahoo.pt","yahoo.ro","yahoo.rs","yahoo.se","yahoo.si","yahoo.sk","yahoogroups.co.kr","yahoogroups.com.cn","yahoogroups.com.sg","yahoogroups.com.tw","yahoogrupper.dk","yahoogruppi.it","yahooxtra.co.nz"]),fo=["fuck","shit","scam","hack","crack","spam","phishing","test","testing","fake","null","undefined"];async function co(l,o={}){let{params:e,timeout:a=3e4,maxRetries:m=3,retryDelay:c=1e3,maxRedirects:i=5,validateStatus:t=p=>p>=200&&p<300,onRetry:s,...r}=o,u=l;if(e){let p=new URLSearchParams;Object.entries(e).forEach(([d,f])=>{p.append(d,typeof f=="boolean"?f?"1":"0":String(f))}),u+=(u.includes("?")?"&":"?")+p.toString()}let n=null;for(let p=1;p<=m+1;p++){let d=new AbortController,f=a>0?setTimeout(()=>d.abort(),a):null,k=r.signal,w=k?AbortSignal.any([d.signal,k]):d.signal;try{let g=await fetch(u,{...r,signal:w,redirect:i===0?"error":"follow"});if(f&&clearTimeout(f),!t(g.status))throw new Error(`HTTP ${g.status}: ${g.statusText}`);let b=g.headers.get("content-type")||"",h;return b.includes("application/json")?h=await g.json():b.includes("text/")?h=await g.text():h=await g.arrayBuffer(),{data:h,status:g.status,statusText:g.statusText,finalUrl:g.url,headers:g.headers,retryCount:p-1}}catch(g){if(f&&clearTimeout(f),n=g,k?.aborted||p>m||g.name==="AbortError"&&p===1||g.message.includes("HTTP")&&!g.message.includes("5"))break;s&&s(g,p),p<=m&&await new Promise(b=>setTimeout(b,c*p))}}throw n}var Do=[{name:"Gmail",domains:["@gmail.com","@googlemail.com"]},{name:"Outlook",domains:["@outlook.com","@hotmail.com","@hotmail.co.uk","@hotmail.fr","@hotmail.it","@hotmail.es","@hotmail.de","@live.com","@live.co.uk","@live.fr","@live.nl","@live.it","@live.com.au","@live.ca","@msn.com"]},{name:"Yahoo",domains:["@yahoo.com","@yahoo.co.uk","@yahoo.fr","@yahoo.com.br","@yahoo.co.in","@yahoo.es","@yahoo.it","@yahoo.de","@yahoo.in","@yahoo.ca","@yahoo.com.au","@yahoo.co.jp","@yahoo.com.ar","@yahoo.com.mx","@yahoo.co.id","@yahoo.com.sg","@ymail.com","@rocketmail.com","@yahoo.at","@yahoo.be","@yahoo.bg","@yahoo.cl","@yahoo.co.hu","@yahoo.co.kr","@yahoo.co.nz","@yahoo.co.th","@yahoo.co.za","@yahoo.com.hk","@yahoo.com.hr","@yahoo.com.my","@yahoo.com.pe","@yahoo.com.ph","@yahoo.com.tr","@yahoo.com.tw","@yahoo.com.ua","@yahoo.com.ve","@yahoo.com.vn","@yahoo.cz","@yahoo.dk","@yahoo.ee","@yahoo.fi","@yahoo.gr","@yahoo.hr","@yahoo.hu","@yahoo.ie","@yahoo.lt","@yahoo.lv","@yahoo.nl","@yahoo.no","@yahoo.pl","@yahoo.pt","@yahoo.ro","@yahoo.rs","@yahoo.se","@yahoo.si","@yahoo.sk"]},{name:"AOL",domains:["@aol.com","@aim.com"]},{name:"iCloud",domains:["@icloud.com","@me.com","@mac.com"]},{name:"ProtonMail",domains:["@protonmail.com","@protonmail.ch","@pm.me","@proton.me"]},{name:"Zoho",domains:["@zoho.com","@zohomail.com"]},{name:"Mail.ru",domains:["@mail.ru","@bk.ru","@inbox.ru","@list.ru","@internet.ru","@corp.mail.ru","@ro.ru","@rbcmail.ru","@hotbox.ru","@mail15.com","@pochta.ru","@fromru.com","@front.ru","@krovatka.su","@land.ru","@newmail.ru","@nightmail.ru","@nm.ru","@pisem.net","@pochtamt.ru","@pop3.ru","@smtp.ru","@mail333.com","@mailru.com","@e-mail.ru","@email.ru","@emailru.com","@mail.ua","@bigmir.net","@ukr.net","@i.ua","@meta.ua","@online.ua","@yandex.ua","@yandex.by","@yandex.kz","@narod.ru","@lenta.ru","@autorambler.ru","@myrambler.ru","@r0.ru","@rambler.ua","@qip.ru","@mail.kz","@nursat.kz","@kazmail.kz","@mail.kg","@mail.tj","@mail.uz","@tut.by","@mail.by","@open.by","@rambler.by","@mail.md","@mail.am","@mail.ge","@mail.az","@mail.lv","@mail.lt","@mail.ee","@delfi.lv","@inbox.lv","@apollo.lv","@one.lv","@parks.lv"]},{name:"Yandex",domains:["@yandex.ru","@yandex.com","@ya.ru"]},{name:"GMX",domains:["@gmx.com","@gmx.net","@gmx.de","@gmx.at","@gmx.ch"]},{name:"Web.de",domains:["@web.de"]},{name:"Mail.com",domains:["@mail.com","@email.com","@usa.com","@myself.com","@consultant.com","@post.com","@europe.com","@asia.com","@iname.com","@writeme.com","@techie.com","@accountant.com","@activist.com","@adexec.com","@allergist.com","@alumnidirector.com","@angelic.com","@appraiser.com","@archaeologist.com","@architect.com","@artlover.com","@asia-mail.com","@auctioneer.com","@bartender.com","@bikerider.com","@birdlover.com","@brew-master.com","@brew-meister.com","@chef.net","@chemist.com","@clerk.com","@clubmember.com","@collector.com","@columnist.com","@comic.com","@computer4u.com","@contractor.com","@coolsite.net","@counsellor.com","@count.com","@cyber-wizard.com","@cyberdude.com","@cybergal.com","@cyberservices.com","@dallasmail.com","@dbzmail.com","@deliveryman.com","@diplomats.com","@doctor.com","@dr.com","@engineer.com","@execs.com","@fastservice.com","@financialmail.com","@fireman.net","@gardener.com","@geologist.com","@graduate.org","@graphic-designer.com","@groupmail.com","@hairdresser.net","@homemail.com","@hot-shot.com","@humanoid.net","@instructor.net","@insurer.com","@journalist.com","@lawyer.com","@legislator.com","@lobbyist.com","@mad.scientist.com","@manager.com","@mathematician.com","@mechanic.com","@minister.com","@musician.org","@optician.com","@orthodontist.net","@pediatrician.com","@photographer.net","@physicist.net","@politician.com","@presidency.com","@priest.com","@programmer.net","@publicist.com","@realtyagent.com","@registrar.com","@repairman.com","@representative.com","@rescueteam.com","@salesperson.net","@scientist.com","@secretary.net","@socialworker.net","@sociologist.com","@solution4u.com","@songwriter.net","@surgical.net","@teacher.net","@technologist.com","@therapist.net","@toothfairy.com","@tvstar.com","@umpire.com","@webname.com","@worker.com","@workmail.com"]},{name:"Fastmail",domains:["@fastmail.com","@fastmail.fm"]},{name:"AT&T",domains:["@att.net","@sbcglobal.net","@sbcglobal.com","@ameritech.net","@bellsouth.net","@flash.net","@prodigy.net","@pacbell.net","@nvbell.net","@snet.net","@swbell.net","@wans.net","@worldnet.att.net"]},{name:"Comcast",domains:["@comcast.net"]},{name:"Verizon",domains:["@verizon.net"]},{name:"Cox",domains:["@cox.net"]},{name:"Charter",domains:["@charter.net"]},{name:"Earthlink",domains:["@earthlink.net"]},{name:"Frontier",domains:["@frontier.com","@frontiernet.net","@myfrontiermail.com","@frontiernet.com"]},{name:"Windstream",domains:["@windstream.net"]},{name:"CenturyTel",domains:["@centurytel.net"]},{name:"Juno",domains:["@juno.com"]},{name:"Optonline",domains:["@optonline.net"]},{name:"QQ",domains:["@qq.com"]},{name:"163",domains:["@163.com","@126.com"]},{name:"139",domains:["@139.com"]},{name:"21cn",domains:["@21cn.com"]},{name:"Sina",domains:["@sina.com","@sina.cn","@sina.com.cn"]},{name:"Sohu",domains:["@sohu.com"]},{name:"Aliyun",domains:["@aliyun.com","@alibaba.com"]},{name:"Naver",domains:["@naver.com"]},{name:"Daum",domains:["@daum.net","@hanmail.net"]},{name:"Nate",domains:["@nate.com"]},{name:"Netvigator",domains:["@netvigator.com"]},{name:"Ziggo",domains:["@ziggo.nl"]},{name:"263.net",domains:["@263.net"]},{name:"Aruba",domains:["@aruba.it"]},{name:"Plala Webmail",domains:["@plala.or.jp"]},{name:"Turbify",domains:["@yahoo-inc.com"]},{name:"Godaddy",domains:["@secureserver.net"]},{name:"Rackspace",domains:["@emailsrvr.com"]},{name:"Mimecast",domains:["@mimecast.com"]},{name:"Facebook",domains:["@facebook.com"]},{name:"Amazon",domains:["@amazon.com","@amazonaws.com"]},{name:"Anazana",domains:["@anazana.com"]},{name:"CoreMail",domains:["@icoremail.net"]},{name:"Hinet",domains:["@hinet.net"]},{name:"Iinet",domains:["@iinet.net.au"]},{name:"Namecheap",domains:["@registrar-servers.com"]},{name:"Network Solutions",domains:["@myregisteredsite.com"]},{name:"Orange",domains:["@orange.fr","@wanadoo.fr"]},{name:"Synaq",domains:["@synaq.com"]},{name:"Zmail",domains:["@zmail.ru"]},{name:"Strato",domains:["@strato.de"]},{name:"Apple",domains:["@apple.com"]},{name:"Cox Webmail",domains:["@cloudfilter.net"]},{name:"Mailgun",domains:["@mailgun.org"]},{name:"Postmark",domains:["@pmta.postmarkapp.com"]},{name:"SendGrid",domains:["@sendgrid.net"]},{name:"Elastic Email",domains:["@elasticemail.com"]},{name:"Zendesk",domains:["@zendesk.com"]},{name:"Intermedia",domains:["@intermedia.net"]},{name:"Mailjet",domains:["@mailjet.com"]},{name:"Front",domains:["@frontapp.com"]},{name:"Free.fr",domains:["@free.fr"]},{name:"Libero",domains:["@libero.it"]},{name:"UOL",domains:["@uol.com.br"]},{name:"BOL",domains:["@bol.com.br"]},{name:"SFR",domains:["@sfr.fr"]},{name:"IG",domains:["@ig.com.br"]},{name:"Bigpond",domains:["@bigpond.com","@bigpond.net.au"]},{name:"Terra",domains:["@terra.com.br"]},{name:"Neuf",domains:["@neuf.fr"]},{name:"Alice",domains:["@alice.it","@aliceadsl.fr"]},{name:"La Poste",domains:["@laposte.net"]},{name:"Rambler",domains:["@rambler.ru"]},{name:"Tiscali",domains:["@tiscali.it","@tiscali.co.uk"]},{name:"Shaw",domains:["@shaw.ca"]},{name:"Sky",domains:["@sky.com"]},{name:"Freenet",domains:["@freenet.de"]},{name:"T-Online",domains:["@t-online.de"]},{name:"Virgilio",domains:["@virgilio.it"]},{name:"Home.nl",domains:["@home.nl"]},{name:"Telenet",domains:["@telenet.be"]},{name:"Voila",domains:["@voila.fr"]},{name:"Planet.nl",domains:["@planet.nl"]},{name:"Tin.it",domains:["@tin.it"]},{name:"NTL World",domains:["@ntlworld.com"]},{name:"Arcor",domains:["@arcor.de"]},{name:"Hetnet",domains:["@hetnet.nl"]},{name:"Zonnet",domains:["@zonnet.nl"]},{name:"Club Internet",domains:["@club-internet.fr"]},{name:"Optus",domains:["@optusnet.com.au"]},{name:"Blueyonder",domains:["@blueyonder.co.uk"]},{name:"Bluewin",domains:["@bluewin.ch"]},{name:"Skynet",domains:["@skynet.be"]},{name:"Sympatico",domains:["@sympatico.ca"]},{name:"Chello",domains:["@chello.nl"]}];var fe=`0-mail.com
|
|
1
|
+
var Yo=Object.create;var zo=Object.defineProperty;var Jo=Object.getOwnPropertyDescriptor;var Ko=Object.getOwnPropertyNames;var oe=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var ae=(l,o)=>()=>(o||l((o={exports:{}}).exports,o),o.exports);var me=(l,o,e,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let m of Ko(o))!ee.call(l,m)&&m!==e&&zo(l,m,{get:()=>o[m],enumerable:!(a=Jo(o,m))||a.enumerable});return l};var ie=(l,o,e)=>(e=l!=null?Yo(oe(l)):{},me(o||!l||!l.__esModule?zo(e,"default",{value:l,enumerable:!0}):e,l));var jo=ae((Se,ro)=>{"use strict";var ce=Object.prototype.hasOwnProperty,q="~";function L(){}Object.create&&(L.prototype=Object.create(null),new L().__proto__||(q=!1));function te(l,o,e){this.fn=l,this.context=o,this.once=e||!1}function qo(l,o,e,a,m){if(typeof e!="function")throw new TypeError("The listener must be a function");var c=new te(e,a||l,m),i=q?q+o:o;return l._events[i]?l._events[i].fn?l._events[i]=[l._events[i],c]:l._events[i].push(c):(l._events[i]=c,l._eventsCount++),l}function G(l,o){--l._eventsCount===0?l._events=new L:delete l._events[o]}function z(){this._events=new L,this._eventsCount=0}z.prototype.eventNames=function(){var o=[],e,a;if(this._eventsCount===0)return o;for(a in e=this._events)ce.call(e,a)&&o.push(q?a.slice(1):a);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(e)):o};z.prototype.listeners=function(o){var e=q?q+o:o,a=this._events[e];if(!a)return[];if(a.fn)return[a.fn];for(var m=0,c=a.length,i=new Array(c);m<c;m++)i[m]=a[m].fn;return i};z.prototype.listenerCount=function(o){var e=q?q+o:o,a=this._events[e];return a?a.fn?1:a.length:0};z.prototype.emit=function(o,e,a,m,c,i){var t=q?q+o:o;if(!this._events[t])return!1;var s=this._events[t],r=arguments.length,u,n;if(s.fn){switch(s.once&&this.removeListener(o,s.fn,void 0,!0),r){case 1:return s.fn.call(s.context),!0;case 2:return s.fn.call(s.context,e),!0;case 3:return s.fn.call(s.context,e,a),!0;case 4:return s.fn.call(s.context,e,a,m),!0;case 5:return s.fn.call(s.context,e,a,m,c),!0;case 6:return s.fn.call(s.context,e,a,m,c,i),!0}for(n=1,u=new Array(r-1);n<r;n++)u[n-1]=arguments[n];s.fn.apply(s.context,u)}else{var p=s.length,d;for(n=0;n<p;n++)switch(s[n].once&&this.removeListener(o,s[n].fn,void 0,!0),r){case 1:s[n].fn.call(s[n].context);break;case 2:s[n].fn.call(s[n].context,e);break;case 3:s[n].fn.call(s[n].context,e,a);break;case 4:s[n].fn.call(s[n].context,e,a,m);break;default:if(!u)for(d=1,u=new Array(r-1);d<r;d++)u[d-1]=arguments[d];s[n].fn.apply(s[n].context,u)}}return!0};z.prototype.on=function(o,e,a){return qo(this,o,e,a,!1)};z.prototype.once=function(o,e,a){return qo(this,o,e,a,!0)};z.prototype.removeListener=function(o,e,a,m){var c=q?q+o:o;if(!this._events[c])return this;if(!e)return G(this,c),this;var i=this._events[c];if(i.fn)i.fn===e&&(!m||i.once)&&(!a||i.context===a)&&G(this,c);else{for(var t=0,s=[],r=i.length;t<r;t++)(i[t].fn!==e||m&&!i[t].once||a&&i[t].context!==a)&&s.push(i[t]);s.length?this._events[c]=s.length===1?s[0]:s:G(this,c)}return this};z.prototype.removeAllListeners=function(o){var e;return o?(e=q?q+o:o,this._events[e]&&G(this,e)):(this._events=new L,this._eventsCount=0),this};z.prototype.off=z.prototype.removeListener;z.prototype.addListener=z.prototype.on;z.prefixed=q;z.EventEmitter=z;typeof ro<"u"&&(ro.exports=z)});import*as y from"node:dns/promises";var uo=ie(jo(),1);var M=class extends Error{constructor(o){super(o),this.name="TimeoutError"}},po=class extends Error{constructor(o){super(),this.name="AbortError",this.message=o}},Ro=l=>globalThis.DOMException===void 0?new po(l):new DOMException(l),Ao=l=>{let o=l.reason===void 0?Ro("This operation was aborted."):l.reason;return o instanceof Error?o:Ro(o)};function go(l,o){let{milliseconds:e,fallback:a,message:m,customTimers:c={setTimeout,clearTimeout}}=o,i,t,r=new Promise((u,n)=>{if(typeof e!="number"||Math.sign(e)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${e}\``);if(o.signal){let{signal:d}=o;d.aborted&&n(Ao(d)),t=()=>{n(Ao(d))},d.addEventListener("abort",t,{once:!0})}if(e===Number.POSITIVE_INFINITY){l.then(u,n);return}let p=new M;i=c.setTimeout.call(void 0,()=>{if(a){try{u(a())}catch(d){n(d)}return}typeof l.cancel=="function"&&l.cancel(),m===!1?u():m instanceof Error?n(m):(p.message=m??`Promise timed out after ${e} milliseconds`,n(p))},e),(async()=>{try{u(await l)}catch(d){n(d)}})()}).finally(()=>{r.clear(),t&&o.signal&&o.signal.removeEventListener("abort",t)});return r.clear=()=>{c.clearTimeout.call(void 0,i),i=void 0},r}function ho(l,o,e){let a=0,m=l.length;for(;m>0;){let c=Math.trunc(m/2),i=a+c;e(l[i],o)<=0?(a=++i,m-=c+1):m=c}return a}var F=class{#a=[];enqueue(o,e){e={priority:0,...e};let a={priority:e.priority,id:e.id,run:o};if(this.size===0||this.#a[this.size-1].priority>=e.priority){this.#a.push(a);return}let m=ho(this.#a,a,(c,i)=>i.priority-c.priority);this.#a.splice(m,0,a)}setPriority(o,e){let a=this.#a.findIndex(c=>c.id===o);if(a===-1)throw new ReferenceError(`No promise function with the id "${o}" exists in the queue.`);let[m]=this.#a.splice(a,1);this.enqueue(m.run,{priority:e,id:o})}dequeue(){return this.#a.shift()?.run}filter(o){return this.#a.filter(e=>e.priority===o.priority).map(e=>e.run)}get size(){return this.#a.length}};var T=class extends uo.default{#a;#u;#p=0;#j;#b;#C=0;#g;#f;#e;#v;#m=0;#i;#o;#n;#k=1n;timeout;constructor(o){if(super(),o={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:F,...o},!(typeof o.intervalCap=="number"&&o.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${o.intervalCap?.toString()??""}\` (${typeof o.intervalCap})`);if(o.interval===void 0||!(Number.isFinite(o.interval)&&o.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${o.interval?.toString()??""}\` (${typeof o.interval})`);this.#a=o.carryoverConcurrencyCount,this.#u=o.intervalCap===Number.POSITIVE_INFINITY||o.interval===0,this.#j=o.intervalCap,this.#b=o.interval,this.#e=new o.queueClass,this.#v=o.queueClass,this.concurrency=o.concurrency,this.timeout=o.timeout,this.#n=o.throwOnTimeout===!0,this.#o=o.autoStart===!1}get#r(){return this.#u||this.#p<this.#j}get#t(){return this.#m<this.#i}#x(){this.#m--,this.#y(),this.emit("next")}#l(){this.#h(),this.#d(),this.#f=void 0}get#z(){let o=Date.now();if(this.#g===void 0){let e=this.#C-o;if(e<0)this.#p=this.#a?this.#m:0;else return this.#f===void 0&&(this.#f=setTimeout(()=>{this.#l()},e)),!0}return!1}#y(){if(this.#e.size===0)return this.#g&&clearInterval(this.#g),this.#g=void 0,this.emit("empty"),this.#m===0&&this.emit("idle"),!1;if(!this.#o){let o=!this.#z;if(this.#r&&this.#t){let e=this.#e.dequeue();return e?(this.emit("active"),e(),o&&this.#d(),!0):!1}}return!1}#d(){this.#u||this.#g!==void 0||(this.#g=setInterval(()=>{this.#h()},this.#b),this.#C=Date.now()+this.#b)}#h(){this.#p===0&&this.#m===0&&this.#g&&(clearInterval(this.#g),this.#g=void 0),this.#p=this.#a?this.#m:0,this.#w()}#w(){for(;this.#y(););}get concurrency(){return this.#i}set concurrency(o){if(!(typeof o=="number"&&o>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${o}\` (${typeof o})`);this.#i=o,this.#w()}async#R(o){return new Promise((e,a)=>{o.addEventListener("abort",()=>{a(o.reason)},{once:!0})})}setPriority(o,e){this.#e.setPriority(o,e)}async add(o,e={}){return e.id??=(this.#k++).toString(),e={timeout:this.timeout,throwOnTimeout:this.#n,...e},new Promise((a,m)=>{this.#e.enqueue(async()=>{this.#m++,this.#p++;try{e.signal?.throwIfAborted();let c=o({signal:e.signal});e.timeout&&(c=go(Promise.resolve(c),{milliseconds:e.timeout})),e.signal&&(c=Promise.race([c,this.#R(e.signal)]));let i=await c;a(i),this.emit("completed",i)}catch(c){if(c instanceof M&&!e.throwOnTimeout){a();return}m(c),this.emit("error",c)}finally{this.#x()}},e),this.emit("add"),this.#y()})}async addAll(o,e){return Promise.all(o.map(async a=>this.add(a,e)))}start(){return this.#o?(this.#o=!1,this.#w(),this):this}pause(){this.#o=!0}clear(){this.#e=new this.#v}async onEmpty(){this.#e.size!==0&&await this.#s("empty")}async onSizeLessThan(o){this.#e.size<o||await this.#s("next",()=>this.#e.size<o)}async onIdle(){this.#m===0&&this.#e.size===0||await this.#s("idle")}async#s(o,e){return new Promise(a=>{let m=()=>{e&&!e()||(this.off(o,m),a())};this.on(o,m)})}get size(){return this.#e.size}sizeBy(o){return this.#e.filter(o).length}get pending(){return this.#m}get isPaused(){return this.#o}};var le=3e4;function se(l,o){let e=o??le;return l?AbortSignal.any([l,AbortSignal.timeout(e)]):AbortSignal.timeout(e)}var X=class{queue;config;constructor(o={}){this.config={enabled:o.enabled??!0,limit:o.limit&&o.limit.concurrency>0?o.limit:{concurrency:50,interval:1e3,intervalCap:750,carryoverConcurrencyCount:!0}};let e={concurrency:this.config.limit?.concurrency||5};this.config.limit&&"interval"in this.config.limit&&"intervalCap"in this.config.limit&&(e.interval=this.config.limit.interval,e.intervalCap=this.config.limit.intervalCap,e.carryoverConcurrencyCount=typeof e.carryoverConcurrencyCount=="boolean"?e.carryoverConcurrencyCount:!0),this.queue=new T(e)}updateConfig(o){this.config={enabled:o.enabled??this.config.enabled,limit:o.limit??this.config.limit};let e={concurrency:this.config.limit?.concurrency||5};this.config.limit&&"interval"in this.config.limit&&"intervalCap"in this.config.limit&&(e.interval=this.config.limit.interval,e.intervalCap=this.config.limit.intervalCap),this.queue=new T(e)}get enabled(){return this.config.enabled}get queueSize(){return this.queue.size}get concurrency(){return this.config.limit.concurrency}get isFull(){let o=this.queue.pending+this.queue.size,e=this.config.limit.concurrency;return o>=e}executeQueued(o,e){let a=se(e?.signal,e?.timeout);return this.queue.add(async()=>{if(a.aborted)throw new DOMException("The operation was aborted","AbortError");let m=o();return new Promise((c,i)=>{let t=!1,s=()=>{t||(t=!0,i(new DOMException("The operation was aborted","AbortError")))};a.addEventListener("abort",s,{once:!0}),m.then(r=>{t||(t=!0,a.removeEventListener("abort",s),c(r))},r=>{t||(t=!0,a.removeEventListener("abort",s),i(r))})})},{signal:a})}async resolve4(o,e){return e?.ttl?this.executeQueued(()=>y.resolve4(o,{ttl:!0}),e):this.executeQueued(()=>y.resolve4(o),e)}async resolve6(o,e){return e?.ttl?this.executeQueued(()=>y.resolve6(o,{ttl:!0}),e):this.executeQueued(()=>y.resolve6(o),e)}async resolveAny(o,e){return this.executeQueued(()=>y.resolveAny(o),e)}async resolveCaa(o,e){return this.executeQueued(()=>y.resolveCaa(o),e)}async resolveCname(o,e){return this.executeQueued(()=>y.resolveCname(o),e)}async resolveMx(o,e){return this.executeQueued(()=>y.resolveMx(o),e)}async resolveNaptr(o,e){return this.executeQueued(()=>y.resolveNaptr(o),e)}async resolveNs(o,e){return this.executeQueued(()=>y.resolveNs(o),e)}async resolvePtr(o,e){return this.executeQueued(()=>y.resolvePtr(o),e)}async resolveSoa(o,e){return this.executeQueued(()=>y.resolveSoa(o),e)}async resolveSrv(o,e){return this.executeQueued(()=>y.resolveSrv(o),e)}async resolveTlsa(o,e){return this.executeQueued(()=>y.resolveTlsa(o),e)}async resolveTxt(o,e){return this.executeQueued(()=>y.resolveTxt(o),e)}async reverse(o,e){return this.executeQueued(()=>y.reverse(o),e)}async resolve(o,e,a){return this.executeQueued(()=>y.resolve(o,e),a)}};var ne={FORMERR:"DNS server claims query was misformatted",SERVFAIL:"DNS server returned general failure",ENOTFOUND:"Domain name not found",NOTIMP:"DNS server does not implement requested operation",REFUSED:"DNS server refused query",YXDOMAIN:"Name exists when it should not",YXRRSET:"RR set exists when it should not",NXRRSET:"RR set that should exist does not",NOTAUTH:"Server not authoritative for zone",NOTZONE:"Name not contained in zone"},re={1:"FORMERR",2:"SERVFAIL",3:"ENOTFOUND",4:"NOTIMP",5:"REFUSED",6:"YXDOMAIN",7:"YXRRSET",8:"NXRRSET",9:"NOTAUTH",10:"NOTZONE"};function Y(l,o,e){let a=re[o]||`DNSSTATUS_${o}`,m=`query${e}`,c=`${m} ${l} ${a}: ${ne[a]||"Unrecognized DNS error code"}`,i=new Error(c);return i.code=a,i.errno=o,i.syscall=m,i.hostname=l,i}var ue=3e4;function pe(l,o){let e=o??ue;return l?AbortSignal.any([l,AbortSignal.timeout(e)]):AbortSignal.timeout(e)}var S=class{queue;config;dohRequest=null;constructor(o={},e){o.limit=o&&o.limit&&o.limit.concurrency>0?o.limit:e,this.config={enabled:o.enabled??!0,limit:o.limit??{concurrency:5}};let a={concurrency:this.config.limit?.concurrency||10};this.config.limit&&"interval"in this.config.limit&&"intervalCap"in this.config.limit&&(a.interval=this.config.limit.interval||1e3,a.intervalCap=this.config.limit.intervalCap||100),this.queue=new T(a)}updateConfig(o){this.config={enabled:o.enabled??this.config.enabled,limit:o.limit&&o.limit.concurrency>0?o.limit:this.config.limit};let e={concurrency:this.config.limit?.concurrency||5};this.config.limit&&"interval"in this.config.limit&&"intervalCap"in this.config.limit&&(e.interval=this.config.limit.interval||1e3,e.intervalCap=this.config.limit.intervalCap||5),this.queue=new T(e)}get enabled(){return this.config.enabled}get queueSize(){return this.queue.size}get concurrency(){return this.config.limit.concurrency}get isFull(){let o=this.queue.pending+this.queue.size,e=this.config.limit.concurrency;return o>=e}executeQueued(o,e){let a=pe(e?.signal,e?.timeout);return this.queue.add(async()=>o(a),{signal:a})}parseDoHResponse(o,e,a=!1){if(!o.Answer||o.Answer.length===0)return[];let m=t=>t.endsWith(".")?t.substring(0,t.length-1):t,c=t=>{let s=n=>typeof n=="object"&&n!==null&&!Array.isArray(n),r=n=>typeof n=="string"&&/^".*"$/.test(n)?n.slice(1,-1):n,u=n=>{let p={};for(let[d,f]of Object.entries(n))f!==void 0&&(p[d]=r(f));return p};return Array.isArray(t)&&t.every(s)?t.map(u):s(t)?u(t):t},i=o.Answer.filter(t=>{let s={A:1,AAAA:28,ANY:255,CAA:257,CNAME:5,MX:15,NAPTR:35,NS:2,PTR:12,SOA:6,SRV:33,TLSA:52,TXT:16};return t.type===s[e]||e==="ANY"});switch(e){case"A":case"AAAA":case"CNAME":case"NS":case"PTR":return a?i.map(t=>({address:t.data,ttl:t.TTL})):i.map(t=>t.data);case"MX":return c(i.map(t=>{let[s,r]=t.data.split(" "),u={exchange:m(r||""),priority:parseInt(s||"0",10)};return a?{...u,ttl:t.TTL}:u}));case"SRV":return c(i.map(t=>{let[s,r,u,n]=t.data.split(" "),p={priority:parseInt(s||"0",10),weight:parseInt(r||"0",10),port:parseInt(u||"0",10),name:n||""};return a?{...p,ttl:t.TTL}:p}));case"SOA":if(i.length>0){let[t,s,r,u,n,p,d]=i[0].data.split(" "),f={nsname:t,hostmaster:s,serial:parseInt(r,10),refresh:parseInt(u,10),retry:parseInt(n,10),expire:parseInt(p,10),minttl:parseInt(d,10)};return c(a?{...f,ttl:i[0].TTL}:f)}throw new Error("No SOA record found");case"TXT":return c(i.map(t=>t.data.split('" "').map(s=>s.replace(/^"|"$/g,""))));case"CAA":return c(i.map(t=>{let[s,r,u]=t.data.split(" "),n={critical:parseInt(s,10),issue:r==="issue"?u:void 0,issuewild:r==="issuewild"?u:void 0,iodef:r==="iodef"?u:void 0};return a?{...n,ttl:t.TTL}:n}));case"NAPTR":return c(i.map(t=>{let[s,r,u,n,p,d]=t.data.split(" "),f={order:parseInt(s||"0",10),preference:parseInt(r||"0",10),flags:u||"",service:n||"",regexp:p||"",replacement:d||""};return a?{...f,ttl:t.TTL}:f}));case"TLSA":return c(i.map(t=>{let[s,r,u]=t.data.split(" "),n={certUsage:parseInt(s||"0",10),selector:parseInt(r||"0",10),match:parseInt(u||"0",10),data:new ArrayBuffer(0)};return a?{...n,ttl:t.TTL}:n}));case"ANY":return c(i.map(t=>({type:t.type,data:t.data,ttl:t.TTL})));default:return i.map(t=>t.data)}}async resolve4(o,e){return this.executeQueued(a=>this.dohRequest(o,"A",a).then(m=>this.parseDoHResponse(m,"A",e?.ttl)),e)}async resolve6(o,e){return await this.executeQueued(m=>this.dohRequest(o,"AAAA",m).then(c=>this.parseDoHResponse(c,"AAAA",e?.ttl)),e)||[]}async resolveAny(o,e){return await this.executeQueued(m=>this.dohRequest(o,"ANY",m).then(c=>this.parseDoHResponse(c,"ANY")),e)||[]}async resolveCaa(o,e){return await this.executeQueued(m=>this.dohRequest(o,"CAA",m).then(c=>this.parseDoHResponse(c,"CAA")),e)||[]}async resolveCname(o,e){return await this.executeQueued(m=>this.dohRequest(o,"CNAME",m).then(c=>this.parseDoHResponse(c,"CNAME")),e)||[]}async resolveMx(o,e){return await this.executeQueued(m=>this.dohRequest(o,"MX",m).then(c=>this.parseDoHResponse(c,"MX")),e)||[]}async resolveNaptr(o,e){return await this.executeQueued(m=>this.dohRequest(o,"NAPTR",m).then(c=>this.parseDoHResponse(c,"NAPTR")),e)||[]}async resolveNs(o,e){return await this.executeQueued(m=>this.dohRequest(o,"NS",m).then(c=>this.parseDoHResponse(c,"NS")),e)||[]}async resolvePtr(o,e){return await this.executeQueued(m=>this.dohRequest(o,"PTR",m).then(c=>this.parseDoHResponse(c,"PTR")),e)||[]}async resolveSoa(o,e){return this.executeQueued(a=>this.dohRequest(o,"SOA",a).then(m=>this.parseDoHResponse(m,"SOA")),e)}async resolveSrv(o,e){return await this.executeQueued(m=>this.dohRequest(o,"SRV",m).then(c=>this.parseDoHResponse(c,"SRV")),e)||[]}async resolveTlsa(o,e){return await this.executeQueued(m=>this.dohRequest(o,"TLSA",m).then(c=>this.parseDoHResponse(c,"TLSA")),e)||[]}async resolveTxt(o,e){return await this.executeQueued(m=>this.dohRequest(o,"TXT",m).then(c=>this.parseDoHResponse(c,"TXT")),e)||[]}async reverse(o,e){return await this.executeQueued(m=>this.dohRequest(o,"PTR",m).then(c=>this.parseDoHResponse(c,"PTR")),e)||[]}async resolve(o,e="A",a){return await this.executeQueued(c=>this.dohRequest(o,e,c).then(i=>this.parseDoHResponse(i,e,a?.ttl)),a)||(e==="SOA"?{}:[])}};var J=class extends S{baseUrl="https://dns.google/resolve";constructor(o={}){super(o,{concurrency:30,interval:1e3,intervalCap:500,carryoverConcurrencyCount:!0}),this.dohRequest=this.request.bind(this)}async request(o,e,a){let m=new URL(this.baseUrl);m.searchParams.set("name",o),m.searchParams.set("type",e);let c=await fetch(m.toString(),{headers:{Accept:"application/dns-json"},signal:a??null});if(!c.ok)throw new Error(`Google DoH request failed: ${c.status} ${c.statusText}`);let i=await c.json();if(i.Status!==0)throw Y(o,i.Status,e);return i}};var K=class extends S{baseUrl="https://cloudflare-dns.com/dns-query";constructor(o={}){super(o,{concurrency:20,interval:1e3,intervalCap:650,carryoverConcurrencyCount:!0}),this.dohRequest=this.request.bind(this)}async request(o,e,a){let m=new URL(this.baseUrl);m.searchParams.set("name",o),m.searchParams.set("type",e);let c=await fetch(m.toString(),{headers:{Accept:"application/dns-json"},signal:a??null});if(!c.ok)throw new Error(`Cloudflare DoH request failed: ${c.status} ${c.statusText}`);let i=await c.json();if(i.Status!==0)throw Y(o,i.Status,e);return i}};var ge={A:1,NS:2,CNAME:5,SOA:6,PTR:12,MX:15,TXT:16,AAAA:28,SRV:33,NAPTR:35,CAA:257,TLSA:52,ANY:255},oo=class extends S{baseUrl="https://dns.quad9.net/dns-query";constructor(o={}){super(o,{concurrency:10,interval:1e3,intervalCap:500,carryoverConcurrencyCount:!0}),this.dohRequest=this.request.bind(this)}encodeDNSQuery(o,e){let a=ge[e.toUpperCase()];if(!a)throw new Error(`Unsupported DNS type: ${e}`);let m=o.split("."),c=Buffer.concat([...m.map(r=>{let u=Buffer.alloc(r.length+1);return u.writeUInt8(r.length,0),u.write(r,1),u}),Buffer.from([0])]),i=Buffer.alloc(12);i.writeUInt16BE(Math.floor(Math.random()*65535),0),i.writeUInt16BE(256,2),i.writeUInt16BE(1,4);let t=Buffer.alloc(2);t.writeUInt16BE(a,0);let s=Buffer.alloc(2);return s.writeUInt16BE(1,0),Buffer.concat([i,c,t,s])}readName(o,e){let a=[],m=!1,c=0;for(;;){let i=o[e];if((i&192)===192){let t=o.readUInt16BE(e)&16383;m||(c=e+2),e=t,m=!0}else if(i===0){e++;break}else a.push(o.toString("utf8",e+1,e+1+i)),e+=i+1}return[a.join("."),m?c:e]}decodeRData(o,e,a,m){switch(a){case 1:return[Array.from(o.slice(e,e+4)).join("."),e+4];case 28:{let c=[];for(let i=0;i<8;i++)c.push(o.readUInt16BE(e+i*2).toString(16));return[c.join(":"),e+16]}case 2:case 5:case 12:{let[c,i]=this.readName(o,e);return[c,i]}case 15:{let c=o.readUInt16BE(e),[i,t]=this.readName(o,e+2);return[`${c} ${i}`,t]}case 16:{let c=o.readUInt8(e);return[o.toString("utf8",e+1,e+1+c),e+1+c]}case 6:{let[c,i]=this.readName(o,e),[t,s]=this.readName(o,i),r=o.readUInt32BE(s),u=o.readUInt32BE(s+4),n=o.readUInt32BE(s+8),p=o.readUInt32BE(s+12),d=o.readUInt32BE(s+16);return[`${c} ${t} ${r} ${u} ${n} ${p} ${d}`,s+20]}default:return[o.slice(e,e+m).toString("hex"),e+m]}}async request(o,e,a){let m=this.encodeDNSQuery(o,e),c=await fetch(this.baseUrl,{method:"POST",headers:{"Content-Type":"application/dns-message",Accept:"application/dns-message"},body:m,signal:a??null}),i=Buffer.from(await c.arrayBuffer()),t=i.readUInt16BE(2),s=i.readUInt16BE(4),r=i.readUInt16BE(6),u=i.readUInt16BE(8),n=i.readUInt16BE(10),p=(t&256)>0,d=(t&512)>0,f=(t&128)>0,k=(t&32)>0,w=(t&16)>0,g=t&15,b=12,h=[];for(let R=0;R<s;R++){let[A,P]=this.readName(i,b),no=i.readUInt16BE(P);h.push({name:A,type:no}),b=P+4}let x=R=>{let A=[];for(let P=0;P<R;P++){let[no,Z]=this.readName(i,b),xo=i.readUInt16BE(Z),Qo=i.readUInt32BE(Z+4),Zo=i.readUInt16BE(Z+8),[Go,Xo]=this.decodeRData(i,Z+10,xo,Zo);A.push({name:no,type:xo,TTL:Qo,data:Go}),b=Xo}return A},v=x(r),N=x(u),C=x(n);return{Status:g,TC:d,RD:p,RA:f,AD:k,CD:w,Question:h,Answer:v,Authority:N,Additional:C}}};var de=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,To=new Set,bo=typeof process=="object"&&process?process:{},Co=(l,o,e,a)=>{typeof bo.emitWarning=="function"?bo.emitWarning(l,o,e,a):console.error(`[${e}] ${o}: ${l}`)},ao=globalThis.AbortController,Po=globalThis.AbortSignal;if(typeof ao>"u"){Po=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(e,a){this._onabort.push(a)}},ao=class{constructor(){o()}signal=new Po;abort(e){if(!this.signal.aborted){this.signal.reason=e,this.signal.aborted=!0;for(let a of this.signal._onabort)a(e);this.signal.onabort?.(e)}}};let l=bo.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",o=()=>{l&&(l=!1,Co("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",o))}}var he=l=>!To.has(l),oa=Symbol("type"),O=l=>l&&l===Math.floor(l)&&l>0&&isFinite(l),So=l=>O(l)?l<=Math.pow(2,8)?Uint8Array:l<=Math.pow(2,16)?Uint16Array:l<=Math.pow(2,32)?Uint32Array:l<=Number.MAX_SAFE_INTEGER?eo:null:null,eo=class extends Array{constructor(l){super(l),this.fill(0)}},be=class U{heap;length;static#a=!1;static create(o){let e=So(o);if(!e)return[];U.#a=!0;let a=new U(o,e);return U.#a=!1,a}constructor(o,e){if(!U.#a)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new e(o),this.length=0}push(o){this.heap[this.length++]=o}pop(){return this.heap[--this.length]}},mo=class Oo{#a;#u;#p;#j;#b;#C;#g;#f;get perf(){return this.#f}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#e;#v;#m;#i;#o;#n;#k;#r;#t;#x;#l;#z;#y;#d;#h;#w;#R;#s;#I;static unsafeExposeInternals(o){return{starts:o.#y,ttls:o.#d,autopurgeTimers:o.#h,sizes:o.#z,keyMap:o.#m,keyList:o.#i,valList:o.#o,next:o.#n,prev:o.#k,get head(){return o.#r},get tail(){return o.#t},free:o.#x,isBackgroundFetch:e=>o.#c(e),backgroundFetch:(e,a,m,c)=>o.#L(e,a,m,c),moveToTail:e=>o.#N(e),indexes:e=>o.#A(e),rindexes:e=>o.#P(e),isStale:e=>o.#q(e)}}get max(){return this.#a}get maxSize(){return this.#u}get calculatedSize(){return this.#v}get size(){return this.#e}get fetchMethod(){return this.#C}get memoMethod(){return this.#g}get dispose(){return this.#p}get onInsert(){return this.#j}get disposeAfter(){return this.#b}constructor(o){let{max:e=0,ttl:a,ttlResolution:m=1,ttlAutopurge:c,updateAgeOnGet:i,updateAgeOnHas:t,allowStale:s,dispose:r,onInsert:u,disposeAfter:n,noDisposeOnSet:p,noUpdateTTL:d,maxSize:f=0,maxEntrySize:k=0,sizeCalculation:w,fetchMethod:g,memoMethod:b,noDeleteOnFetchRejection:h,noDeleteOnStaleGet:x,allowStaleOnFetchRejection:v,allowStaleOnFetchAbort:N,ignoreFetchAbort:C,perf:R}=o;if(R!==void 0&&typeof R?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#f=R??de,e!==0&&!O(e))throw new TypeError("max option must be a nonnegative integer");let A=e?So(e):Array;if(!A)throw new Error("invalid max value: "+e);if(this.#a=e,this.#u=f,this.maxEntrySize=k||this.#u,this.sizeCalculation=w,this.sizeCalculation){if(!this.#u&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(b!==void 0&&typeof b!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#g=b,g!==void 0&&typeof g!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#C=g,this.#R=!!g,this.#m=new Map,this.#i=new Array(e).fill(void 0),this.#o=new Array(e).fill(void 0),this.#n=new A(e),this.#k=new A(e),this.#r=0,this.#t=0,this.#x=be.create(e),this.#e=0,this.#v=0,typeof r=="function"&&(this.#p=r),typeof u=="function"&&(this.#j=u),typeof n=="function"?(this.#b=n,this.#l=[]):(this.#b=void 0,this.#l=void 0),this.#w=!!this.#p,this.#I=!!this.#j,this.#s=!!this.#b,this.noDisposeOnSet=!!p,this.noUpdateTTL=!!d,this.noDeleteOnFetchRejection=!!h,this.allowStaleOnFetchRejection=!!v,this.allowStaleOnFetchAbort=!!N,this.ignoreFetchAbort=!!C,this.maxEntrySize!==0){if(this.#u!==0&&!O(this.#u))throw new TypeError("maxSize must be a positive integer if specified");if(!O(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#V()}if(this.allowStale=!!s,this.noDeleteOnStaleGet=!!x,this.updateAgeOnGet=!!i,this.updateAgeOnHas=!!t,this.ttlResolution=O(m)||m===0?m:1,this.ttlAutopurge=!!c,this.ttl=a||0,this.ttl){if(!O(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#M()}if(this.#a===0&&this.ttl===0&&this.#u===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#a&&!this.#u){let P="LRU_CACHE_UNBOUNDED";he(P)&&(To.add(P),Co("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",P,Oo))}}getRemainingTTL(o){return this.#m.has(o)?1/0:0}#M(){let o=new eo(this.#a),e=new eo(this.#a);this.#d=o,this.#y=e;let a=this.ttlAutopurge?new Array(this.#a):void 0;this.#h=a,this.#F=(i,t,s=this.#f.now())=>{if(e[i]=t!==0?s:0,o[i]=t,a?.[i]&&(clearTimeout(a[i]),a[i]=void 0),t!==0&&a){let r=setTimeout(()=>{this.#q(i)&&this.#T(this.#i[i],"expire")},t+1);r.unref&&r.unref(),a[i]=r}},this.#O=i=>{e[i]=o[i]!==0?this.#f.now():0},this.#S=(i,t)=>{if(o[t]){let s=o[t],r=e[t];if(!s||!r)return;i.ttl=s,i.start=r,i.now=m||c();let u=i.now-r;i.remainingTTL=s-u}};let m=0,c=()=>{let i=this.#f.now();if(this.ttlResolution>0){m=i;let t=setTimeout(()=>m=0,this.ttlResolution);t.unref&&t.unref()}return i};this.getRemainingTTL=i=>{let t=this.#m.get(i);if(t===void 0)return 0;let s=o[t],r=e[t];if(!s||!r)return 1/0;let u=(m||c())-r;return s-u},this.#q=i=>{let t=e[i],s=o[i];return!!s&&!!t&&(m||c())-t>s}}#O=()=>{};#S=()=>{};#F=()=>{};#q=()=>!1;#V(){let o=new eo(this.#a);this.#v=0,this.#z=o,this.#E=e=>{this.#v-=o[e],o[e]=0},this.#U=(e,a,m,c)=>{if(this.#c(a))return 0;if(!O(m))if(c){if(typeof c!="function")throw new TypeError("sizeCalculation must be a function");if(m=c(a,e),!O(m))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return m},this.#_=(e,a,m)=>{if(o[e]=a,this.#u){let c=this.#u-o[e];for(;this.#v>c;)this.#D(!0)}this.#v+=o[e],m&&(m.entrySize=a,m.totalCalculatedSize=this.#v)}}#E=o=>{};#_=(o,e,a)=>{};#U=(o,e,a,m)=>{if(a||m)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#A({allowStale:o=this.allowStale}={}){if(this.#e)for(let e=this.#t;!(!this.#W(e)||((o||!this.#q(e))&&(yield e),e===this.#r));)e=this.#k[e]}*#P({allowStale:o=this.allowStale}={}){if(this.#e)for(let e=this.#r;!(!this.#W(e)||((o||!this.#q(e))&&(yield e),e===this.#t));)e=this.#n[e]}#W(o){return o!==void 0&&this.#m.get(this.#i[o])===o}*entries(){for(let o of this.#A())this.#o[o]!==void 0&&this.#i[o]!==void 0&&!this.#c(this.#o[o])&&(yield[this.#i[o],this.#o[o]])}*rentries(){for(let o of this.#P())this.#o[o]!==void 0&&this.#i[o]!==void 0&&!this.#c(this.#o[o])&&(yield[this.#i[o],this.#o[o]])}*keys(){for(let o of this.#A()){let e=this.#i[o];e!==void 0&&!this.#c(this.#o[o])&&(yield e)}}*rkeys(){for(let o of this.#P()){let e=this.#i[o];e!==void 0&&!this.#c(this.#o[o])&&(yield e)}}*values(){for(let o of this.#A())this.#o[o]!==void 0&&!this.#c(this.#o[o])&&(yield this.#o[o])}*rvalues(){for(let o of this.#P())this.#o[o]!==void 0&&!this.#c(this.#o[o])&&(yield this.#o[o])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(o,e={}){for(let a of this.#A()){let m=this.#o[a],c=this.#c(m)?m.__staleWhileFetching:m;if(c!==void 0&&o(c,this.#i[a],this))return this.get(this.#i[a],e)}}forEach(o,e=this){for(let a of this.#A()){let m=this.#o[a],c=this.#c(m)?m.__staleWhileFetching:m;c!==void 0&&o.call(e,c,this.#i[a],this)}}rforEach(o,e=this){for(let a of this.#P()){let m=this.#o[a],c=this.#c(m)?m.__staleWhileFetching:m;c!==void 0&&o.call(e,c,this.#i[a],this)}}purgeStale(){let o=!1;for(let e of this.#P({allowStale:!0}))this.#q(e)&&(this.#T(this.#i[e],"expire"),o=!0);return o}info(o){let e=this.#m.get(o);if(e===void 0)return;let a=this.#o[e],m=this.#c(a)?a.__staleWhileFetching:a;if(m===void 0)return;let c={value:m};if(this.#d&&this.#y){let i=this.#d[e],t=this.#y[e];if(i&&t){let s=i-(this.#f.now()-t);c.ttl=s,c.start=Date.now()}}return this.#z&&(c.size=this.#z[e]),c}dump(){let o=[];for(let e of this.#A({allowStale:!0})){let a=this.#i[e],m=this.#o[e],c=this.#c(m)?m.__staleWhileFetching:m;if(c===void 0||a===void 0)continue;let i={value:c};if(this.#d&&this.#y){i.ttl=this.#d[e];let t=this.#f.now()-this.#y[e];i.start=Math.floor(Date.now()-t)}this.#z&&(i.size=this.#z[e]),o.unshift([a,i])}return o}load(o){this.clear();for(let[e,a]of o){if(a.start){let m=Date.now()-a.start;a.start=this.#f.now()-m}this.set(e,a.value,a)}}set(o,e,a={}){if(e===void 0)return this.delete(o),this;let{ttl:m=this.ttl,start:c,noDisposeOnSet:i=this.noDisposeOnSet,sizeCalculation:t=this.sizeCalculation,status:s}=a,{noUpdateTTL:r=this.noUpdateTTL}=a,u=this.#U(o,e,a.size||0,t);if(this.maxEntrySize&&u>this.maxEntrySize)return s&&(s.set="miss",s.maxEntrySizeExceeded=!0),this.#T(o,"set"),this;let n=this.#e===0?void 0:this.#m.get(o);if(n===void 0)n=this.#e===0?this.#t:this.#x.length!==0?this.#x.pop():this.#e===this.#a?this.#D(!1):this.#e,this.#i[n]=o,this.#o[n]=e,this.#m.set(o,n),this.#n[this.#t]=n,this.#k[n]=this.#t,this.#t=n,this.#e++,this.#_(n,u,s),s&&(s.set="add"),r=!1,this.#I&&this.#j?.(e,o,"add");else{this.#N(n);let p=this.#o[n];if(e!==p){if(this.#R&&this.#c(p)){p.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:d}=p;d!==void 0&&!i&&(this.#w&&this.#p?.(d,o,"set"),this.#s&&this.#l?.push([d,o,"set"]))}else i||(this.#w&&this.#p?.(p,o,"set"),this.#s&&this.#l?.push([p,o,"set"]));if(this.#E(n),this.#_(n,u,s),this.#o[n]=e,s){s.set="replace";let d=p&&this.#c(p)?p.__staleWhileFetching:p;d!==void 0&&(s.oldValue=d)}}else s&&(s.set="update");this.#I&&this.onInsert?.(e,o,e===p?"update":"replace")}if(m!==0&&!this.#d&&this.#M(),this.#d&&(r||this.#F(n,m,c),s&&this.#S(s,n)),!i&&this.#s&&this.#l){let p=this.#l,d;for(;d=p?.shift();)this.#b?.(...d)}return this}pop(){try{for(;this.#e;){let o=this.#o[this.#r];if(this.#D(!0),this.#c(o)){if(o.__staleWhileFetching)return o.__staleWhileFetching}else if(o!==void 0)return o}}finally{if(this.#s&&this.#l){let o=this.#l,e;for(;e=o?.shift();)this.#b?.(...e)}}}#D(o){let e=this.#r,a=this.#i[e],m=this.#o[e];return this.#R&&this.#c(m)?m.__abortController.abort(new Error("evicted")):(this.#w||this.#s)&&(this.#w&&this.#p?.(m,a,"evict"),this.#s&&this.#l?.push([m,a,"evict"])),this.#E(e),this.#h?.[e]&&(clearTimeout(this.#h[e]),this.#h[e]=void 0),o&&(this.#i[e]=void 0,this.#o[e]=void 0,this.#x.push(e)),this.#e===1?(this.#r=this.#t=0,this.#x.length=0):this.#r=this.#n[e],this.#m.delete(a),this.#e--,e}has(o,e={}){let{updateAgeOnHas:a=this.updateAgeOnHas,status:m}=e,c=this.#m.get(o);if(c!==void 0){let i=this.#o[c];if(this.#c(i)&&i.__staleWhileFetching===void 0)return!1;if(this.#q(c))m&&(m.has="stale",this.#S(m,c));else return a&&this.#O(c),m&&(m.has="hit",this.#S(m,c)),!0}else m&&(m.has="miss");return!1}peek(o,e={}){let{allowStale:a=this.allowStale}=e,m=this.#m.get(o);if(m===void 0||!a&&this.#q(m))return;let c=this.#o[m];return this.#c(c)?c.__staleWhileFetching:c}#L(o,e,a,m){let c=e===void 0?void 0:this.#o[e];if(this.#c(c))return c;let i=new ao,{signal:t}=a;t?.addEventListener("abort",()=>i.abort(t.reason),{signal:i.signal});let s={signal:i.signal,options:a,context:m},r=(k,w=!1)=>{let{aborted:g}=i.signal,b=a.ignoreFetchAbort&&k!==void 0,h=a.ignoreFetchAbort||!!(a.allowStaleOnFetchAbort&&k!==void 0);if(a.status&&(g&&!w?(a.status.fetchAborted=!0,a.status.fetchError=i.signal.reason,b&&(a.status.fetchAbortIgnored=!0)):a.status.fetchResolved=!0),g&&!b&&!w)return n(i.signal.reason,h);let x=d,v=this.#o[e];return(v===d||b&&w&&v===void 0)&&(k===void 0?x.__staleWhileFetching!==void 0?this.#o[e]=x.__staleWhileFetching:this.#T(o,"fetch"):(a.status&&(a.status.fetchUpdated=!0),this.set(o,k,s.options))),k},u=k=>(a.status&&(a.status.fetchRejected=!0,a.status.fetchError=k),n(k,!1)),n=(k,w)=>{let{aborted:g}=i.signal,b=g&&a.allowStaleOnFetchAbort,h=b||a.allowStaleOnFetchRejection,x=h||a.noDeleteOnFetchRejection,v=d;if(this.#o[e]===d&&(!x||!w&&v.__staleWhileFetching===void 0?this.#T(o,"fetch"):b||(this.#o[e]=v.__staleWhileFetching)),h)return a.status&&v.__staleWhileFetching!==void 0&&(a.status.returnedStale=!0),v.__staleWhileFetching;if(v.__returned===v)throw k},p=(k,w)=>{let g=this.#C?.(o,c,s);g&&g instanceof Promise&&g.then(b=>k(b===void 0?void 0:b),w),i.signal.addEventListener("abort",()=>{(!a.ignoreFetchAbort||a.allowStaleOnFetchAbort)&&(k(void 0),a.allowStaleOnFetchAbort&&(k=b=>r(b,!0)))})};a.status&&(a.status.fetchDispatched=!0);let d=new Promise(p).then(r,u),f=Object.assign(d,{__abortController:i,__staleWhileFetching:c,__returned:void 0});return e===void 0?(this.set(o,f,{...s.options,status:void 0}),e=this.#m.get(o)):this.#o[e]=f,f}#c(o){if(!this.#R)return!1;let e=o;return!!e&&e instanceof Promise&&e.hasOwnProperty("__staleWhileFetching")&&e.__abortController instanceof ao}async fetch(o,e={}){let{allowStale:a=this.allowStale,updateAgeOnGet:m=this.updateAgeOnGet,noDeleteOnStaleGet:c=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:t=this.noDisposeOnSet,size:s=0,sizeCalculation:r=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:n=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:p=this.allowStaleOnFetchRejection,ignoreFetchAbort:d=this.ignoreFetchAbort,allowStaleOnFetchAbort:f=this.allowStaleOnFetchAbort,context:k,forceRefresh:w=!1,status:g,signal:b}=e;if(!this.#R)return g&&(g.fetch="get"),this.get(o,{allowStale:a,updateAgeOnGet:m,noDeleteOnStaleGet:c,status:g});let h={allowStale:a,updateAgeOnGet:m,noDeleteOnStaleGet:c,ttl:i,noDisposeOnSet:t,size:s,sizeCalculation:r,noUpdateTTL:u,noDeleteOnFetchRejection:n,allowStaleOnFetchRejection:p,allowStaleOnFetchAbort:f,ignoreFetchAbort:d,status:g,signal:b},x=this.#m.get(o);if(x===void 0){g&&(g.fetch="miss");let v=this.#L(o,x,h,k);return v.__returned=v}else{let v=this.#o[x];if(this.#c(v)){let A=a&&v.__staleWhileFetching!==void 0;return g&&(g.fetch="inflight",A&&(g.returnedStale=!0)),A?v.__staleWhileFetching:v.__returned=v}let N=this.#q(x);if(!w&&!N)return g&&(g.fetch="hit"),this.#N(x),m&&this.#O(x),g&&this.#S(g,x),v;let C=this.#L(o,x,h,k),R=C.__staleWhileFetching!==void 0&&a;return g&&(g.fetch=N?"stale":"refresh",R&&N&&(g.returnedStale=!0)),R?C.__staleWhileFetching:C.__returned=C}}async forceFetch(o,e={}){let a=await this.fetch(o,e);if(a===void 0)throw new Error("fetch() returned undefined");return a}memo(o,e={}){let a=this.#g;if(!a)throw new Error("no memoMethod provided to constructor");let{context:m,forceRefresh:c,...i}=e,t=this.get(o,i);if(!c&&t!==void 0)return t;let s=a(o,t,{options:i,context:m});return this.set(o,s,i),s}get(o,e={}){let{allowStale:a=this.allowStale,updateAgeOnGet:m=this.updateAgeOnGet,noDeleteOnStaleGet:c=this.noDeleteOnStaleGet,status:i}=e,t=this.#m.get(o);if(t!==void 0){let s=this.#o[t],r=this.#c(s);return i&&this.#S(i,t),this.#q(t)?(i&&(i.get="stale"),r?(i&&a&&s.__staleWhileFetching!==void 0&&(i.returnedStale=!0),a?s.__staleWhileFetching:void 0):(c||this.#T(o,"expire"),i&&a&&(i.returnedStale=!0),a?s:void 0)):(i&&(i.get="hit"),r?s.__staleWhileFetching:(this.#N(t),m&&this.#O(t),s))}else i&&(i.get="miss")}#H(o,e){this.#k[e]=o,this.#n[o]=e}#N(o){o!==this.#t&&(o===this.#r?this.#r=this.#n[o]:this.#H(this.#k[o],this.#n[o]),this.#H(this.#t,o),this.#t=o)}delete(o){return this.#T(o,"delete")}#T(o,e){let a=!1;if(this.#e!==0){let m=this.#m.get(o);if(m!==void 0)if(this.#h?.[m]&&(clearTimeout(this.#h?.[m]),this.#h[m]=void 0),a=!0,this.#e===1)this.#$(e);else{this.#E(m);let c=this.#o[m];if(this.#c(c)?c.__abortController.abort(new Error("deleted")):(this.#w||this.#s)&&(this.#w&&this.#p?.(c,o,e),this.#s&&this.#l?.push([c,o,e])),this.#m.delete(o),this.#i[m]=void 0,this.#o[m]=void 0,m===this.#t)this.#t=this.#k[m];else if(m===this.#r)this.#r=this.#n[m];else{let i=this.#k[m];this.#n[i]=this.#n[m];let t=this.#n[m];this.#k[t]=this.#k[m]}this.#e--,this.#x.push(m)}}if(this.#s&&this.#l?.length){let m=this.#l,c;for(;c=m?.shift();)this.#b?.(...c)}return a}clear(){return this.#$("delete")}#$(o){for(let e of this.#P({allowStale:!0})){let a=this.#o[e];if(this.#c(a))a.__abortController.abort(new Error("deleted"));else{let m=this.#i[e];this.#w&&this.#p?.(a,m,o),this.#s&&this.#l?.push([a,m,o])}}if(this.#m.clear(),this.#o.fill(void 0),this.#i.fill(void 0),this.#d&&this.#y){this.#d.fill(0),this.#y.fill(0);for(let e of this.#h??[])e!==void 0&&clearTimeout(e);this.#h?.fill(void 0)}if(this.#z&&this.#z.fill(0),this.#r=0,this.#t=0,this.#x.length=0,this.#v=0,this.#e=0,this.#s&&this.#l){let e=this.#l,a;for(;a=e?.shift();)this.#b?.(...a)}}};var W=class extends Error{constructor(){super("No DNS providers are enabled"),this.name="NoEnabledProvidersError"}},H=class extends Error{constructor(o){super(`Invalid hostname: ${o}`),this.name="InvalidHostnameError"}},$=class extends Error{constructor(o){super(`Provider '${o}' is not enabled`),this.name="ProviderNotEnabledError"}},I=class extends Error{constructor(o){super(`Invalid provider: ${o}`),this.name="InvalidProviderError"}};var Eo=[".aaa",".aarp",".abarth",".abb",".abbott",".abbvie",".abc",".able",".abogado",".abudhabi",".ac",".academy",".accenture",".accountant",".accountants",".aco",".active",".actor",".ad",".adac",".ads",".adult",".ae",".aeg",".aero",".aetna",".af",".afamilycompany",".afl",".africa",".ag",".agakhan",".agency",".ai",".aig",".aigo",".airbus",".airforce",".airtel",".akdn",".al",".alfaromeo",".alibaba",".alipay",".allfinanz",".allstate",".ally",".alsace",".alstom",".am",".amazon",".americanexpress",".americanfamily",".amex",".amfam",".amica",".amsterdam",".an",".analytics",".android",".anquan",".anz",".ao",".aol",".apartments",".app",".apple",".aq",".aquarelle",".ar",".arab",".aramco",".archi",".army",".arpa",".art",".arte",".as",".asda",".asia",".associates",".at",".athleta",".attorney",".au",".auction",".audi",".audible",".audio",".auspost",".author",".auto",".autos",".avianca",".aw",".aws",".ax",".axa",".az",".azure",".ba",".baby",".baidu",".banamex",".bananarepublic",".band",".bank",".bar",".barcelona",".barclaycard",".barclays",".barefoot",".bargains",".baseball",".basketball",".bauhaus",".bayern",".bb",".bbc",".bbt",".bbva",".bcg",".bcn",".bd",".be",".beats",".beauty",".beer",".bentley",".berlin",".best",".bestbuy",".bet",".bf",".bg",".bh",".bharti",".bi",".bible",".bid",".bike",".bing",".bingo",".bio",".biz",".bj",".bl",".black",".blackfriday",".blanco",".blockbuster",".blog",".bloomberg",".blue",".bm",".bms",".bmw",".bn",".bnl",".bnpparibas",".bo",".boats",".boehringer",".bofa",".bom",".bond",".boo",".book",".booking",".boots",".bosch",".bostik",".boston",".bot",".boutique",".box",".bq",".br",".bradesco",".bridgestone",".broadway",".broker",".brother",".brussels",".bs",".bt",".budapest",".bugatti",".build",".builders",".business",".buy",".buzz",".bv",".bw",".by",".bz",".bzh",".ca",".cab",".cafe",".cal",".call",".calvinklein",".cam",".camera",".camp",".cancerresearch",".canon",".capetown",".capital",".capitalone",".car",".caravan",".cards",".care",".career",".careers",".cars",".cartier",".casa",".case",".caseih",".cash",".casino",".cat",".catering",".catholic",".cba",".cbn",".cbre",".cbs",".cc",".cd",".ceb",".center",".ceo",".cern",".cf",".cfa",".cfd",".cg",".ch",".chanel",".channel",".charity",".chase",".chat",".cheap",".chintai",".chloe",".christmas",".chrome",".chrysler",".church",".ci",".cipriani",".circle",".cisco",".citadel",".citi",".citic",".city",".cityeats",".ck",".cl",".claims",".cleaning",".click",".clinic",".clinique",".clothing",".cloud",".club",".clubmed",".cm",".cn",".co",".coach",".codes",".coffee",".college",".cologne",".com",".comcast",".commbank",".community",".company",".compare",".computer",".comsec",".condos",".construction",".consulting",".contact",".contractors",".cooking",".cookingchannel",".cool",".coop",".corsica",".country",".coupon",".coupons",".courses",".cpa",".cr",".credit",".creditcard",".creditunion",".cricket",".crown",".crs",".cruise",".cruises",".csc",".cu",".cuisinella",".cv",".cw",".cx",".cy",".cymru",".cyou",".cz",".dabur",".dad",".dance",".data",".date",".dating",".datsun",".day",".dclk",".dds",".de",".deal",".dealer",".deals",".degree",".delivery",".dell",".deloitte",".delta",".democrat",".dental",".dentist",".desi",".design",".dev",".dhl",".diamonds",".diet",".digital",".direct",".directory",".discount",".discover",".dish",".diy",".dj",".dk",".dm",".dnp",".do",".docs",".doctor",".dodge",".dog",".doha",".domains",".doosan",".dot",".download",".drive",".dtv",".dubai",".duck",".dunlop",".duns",".dupont",".durban",".dvag",".dvr",".dz",".earth",".eat",".ec",".eco",".edeka",".edu",".education",".ee",".eg",".eh",".email",".emerck",".energy",".engineer",".engineering",".enterprises",".epost",".epson",".equipment",".er",".ericsson",".erni",".es",".esq",".estate",".esurance",".et",".etisalat",".eu",".eurovision",".eus",".events",".everbank",".exchange",".expert",".exposed",".express",".extraspace",".fage",".fail",".fairwinds",".faith",".family",".fan",".fans",".farm",".farmers",".fashion",".fast",".fedex",".feedback",".ferrari",".ferrero",".fi",".fiat",".fidelity",".fido",".film",".final",".finance",".financial",".fire",".firestone",".firmdale",".fish",".fishing",".fit",".fitness",".fj",".fk",".flickr",".flights",".flir",".florist",".flowers",".flsmidth",".fly",".fm",".fo",".foo",".food",".foodnetwork",".football",".ford",".forex",".forsale",".forum",".foundation",".fox",".fr",".free",".fresenius",".frl",".frogans",".frontdoor",".frontier",".ftr",".fujitsu",".fujixerox",".fun",".fund",".furniture",".futbol",".fyi",".ga",".gal",".gallery",".gallo",".gallup",".game",".games",".gap",".garden",".gay",".gb",".gbiz",".gd",".gdn",".ge",".gea",".gent",".genting",".george",".gf",".gg",".ggee",".gh",".gi",".gift",".gifts",".gives",".giving",".gl",".glade",".glass",".gle",".global",".globo",".gm",".gmail",".gmbh",".gmo",".gmx",".gn",".godaddy",".gold",".goldpoint",".golf",".goo",".goodhands",".goodyear",".goog",".google",".gop",".got",".gov",".gp",".gq",".gr",".grainger",".graphics",".gratis",".green",".gripe",".grocery",".group",".gs",".gt",".gu",".guardian",".gucci",".guge",".guide",".guitars",".guru",".gw",".gy",".hair",".hamburg",".hangout",".haus",".hbo",".hdfc",".hdfcbank",".health",".healthcare",".help",".helsinki",".here",".hermes",".hgtv",".hiphop",".hisamitsu",".hitachi",".hiv",".hk",".hkt",".hm",".hn",".hockey",".holdings",".holiday",".homedepot",".homegoods",".homes",".homesense",".honda",".honeywell",".horse",".hospital",".host",".hosting",".hot",".hoteles",".hotels",".hotmail",".house",".how",".hr",".hsbc",".ht",".htc",".hu",".hughes",".hyatt",".hyundai",".ibm",".icbc",".ice",".icu",".id",".ie",".ieee",".ifm",".iinet",".ikano",".il",".im",".imamat",".imdb",".immo",".immobilien",".in",".inc",".industries",".infiniti",".info",".ing",".ink",".institute",".insurance",".insure",".int",".intel",".international",".intuit",".investments",".io",".ipiranga",".iq",".ir",".irish",".is",".iselect",".ismaili",".ist",".istanbul",".it",".itau",".itv",".iveco",".iwc",".jaguar",".java",".jcb",".jcp",".je",".jeep",".jetzt",".jewelry",".jio",".jlc",".jll",".jm",".jmp",".jnj",".jo",".jobs",".joburg",".jot",".joy",".jp",".jpmorgan",".jprs",".juegos",".juniper",".kaufen",".kddi",".ke",".kerryhotels",".kerrylogistics",".kerryproperties",".kfh",".kg",".kh",".ki",".kia",".kids",".kim",".kinder",".kindle",".kitchen",".kiwi",".km",".kn",".koeln",".komatsu",".kosher",".kp",".kpmg",".kpn",".kr",".krd",".kred",".kuokgroup",".kw",".ky",".kyoto",".kz",".la",".lacaixa",".ladbrokes",".lamborghini",".lamer",".lancaster",".lancia",".lancome",".land",".landrover",".lanxess",".lasalle",".lat",".latino",".latrobe",".law",".lawyer",".lb",".lc",".lds",".lease",".leclerc",".lefrak",".legal",".lego",".lexus",".lgbt",".li",".liaison",".lidl",".life",".lifeinsurance",".lifestyle",".lighting",".like",".lilly",".limited",".limo",".lincoln",".linde",".link",".lipsy",".live",".living",".lixil",".lk",".llc",".llp",".loan",".loans",".locker",".locus",".loft",".lol",".london",".lotte",".lotto",".love",".lpl",".lplfinancial",".lr",".ls",".lt",".ltd",".ltda",".lu",".lundbeck",".lupin",".luxe",".luxury",".lv",".ly",".ma",".macys",".madrid",".maif",".maison",".makeup",".man",".management",".mango",".map",".market",".marketing",".markets",".marriott",".marshalls",".maserati",".mattel",".mba",".mc",".mcd",".mcdonalds",".mckinsey",".md",".me",".med",".media",".meet",".melbourne",".meme",".memorial",".men",".menu",".meo",".merckmsd",".metlife",".mf",".mg",".mh",".miami",".microsoft",".mil",".mini",".mint",".mit",".mitsubishi",".mk",".ml",".mlb",".mls",".mm",".mma",".mn",".mo",".mobi",".mobile",".mobily",".moda",".moe",".moi",".mom",".monash",".money",".monster",".montblanc",".mopar",".mormon",".mortgage",".moscow",".moto",".motorcycles",".mov",".movie",".movistar",".mp",".mq",".mr",".ms",".msd",".mt",".mtn",".mtpc",".mtr",".mu",".museum",".music",".mutual",".mutuelle",".mv",".mw",".mx",".my",".mz",".na",".nab",".nadex",".nagoya",".name",".nationwide",".natura",".navy",".nba",".nc",".ne",".nec",".net",".netbank",".netflix",".network",".neustar",".new",".newholland",".news",".next",".nextdirect",".nexus",".nf",".nfl",".ng",".ngo",".nhk",".ni",".nico",".nike",".nikon",".ninja",".nissan",".nissay",".nl",".no",".nokia",".northwesternmutual",".norton",".now",".nowruz",".nowtv",".np",".nr",".nra",".nrw",".ntt",".nu",".nyc",".nz",".obi",".observer",".off",".office",".okinawa",".olayan",".olayangroup",".oldnavy",".ollo",".om",".omega",".one",".ong",".onl",".online",".onyourside",".ooo",".open",".oracle",".orange",".org",".organic",".orientexpress",".origins",".osaka",".otsuka",".ott",".ovh",".pa",".page",".pamperedchef",".panasonic",".panerai",".paris",".pars",".partners",".parts",".party",".passagens",".pay",".pccw",".pe",".pet",".pf",".pfizer",".pg",".ph",".pharmacy",".phd",".philips",".phone",".photo",".photography",".photos",".physio",".piaget",".pics",".pictet",".pictures",".pid",".pin",".ping",".pink",".pioneer",".pizza",".pk",".pl",".place",".play",".playstation",".plumbing",".plus",".pm",".pn",".pnc",".pohl",".poker",".politie",".porn",".post",".pr",".pramerica",".praxi",".press",".prime",".pro",".prod",".productions",".prof",".progressive",".promo",".properties",".property",".protection",".pru",".prudential",".ps",".pt",".pub",".pw",".pwc",".py",".qa",".qpon",".quebec",".quest",".qvc",".racing",".radio",".raid",".re",".read",".realestate",".realtor",".realty",".recipes",".red",".redstone",".redumbrella",".rehab",".reise",".reisen",".reit",".reliance",".ren",".rent",".rentals",".repair",".report",".republican",".rest",".restaurant",".review",".reviews",".rexroth",".rich",".richardli",".ricoh",".rightathome",".ril",".rio",".rip",".rmit",".ro",".rocher",".rocks",".rodeo",".rogers",".room",".rs",".rsvp",".ru",".rugby",".ruhr",".run",".rw",".rwe",".ryukyu",".sa",".saarland",".safe",".safety",".sakura",".sale",".salon",".samsclub",".samsung",".sandvik",".sandvikcoromant",".sanofi",".sap",".sapo",".sarl",".sas",".save",".saxo",".sb",".sbi",".sbs",".sc",".sca",".scb",".schaeffler",".schmidt",".scholarships",".school",".schule",".schwarz",".science",".scjohnson",".scor",".scot",".sd",".se",".search",".seat",".secure",".security",".seek",".select",".sener",".services",".ses",".seven",".sew",".sex",".sexy",".sfr",".sg",".sh",".shangrila",".sharp",".shaw",".shell",".shia",".shiksha",".shoes",".shop",".shopping",".shouji",".show",".showtime",".shriram",".si",".silk",".sina",".singles",".site",".sj",".sk",".ski",".skin",".sky",".skype",".sl",".sling",".sm",".smart",".smile",".sn",".sncf",".so",".soccer",".social",".softbank",".software",".sohu",".solar",".solutions",".song",".sony",".soy",".spa",".space",".spiegel",".sport",".spot",".spreadbetting",".sr",".srl",".srt",".ss",".st",".stada",".staples",".star",".starhub",".statebank",".statefarm",".statoil",".stc",".stcgroup",".stockholm",".storage",".store",".stream",".studio",".study",".style",".su",".sucks",".supplies",".supply",".support",".surf",".surgery",".suzuki",".sv",".swatch",".swiftcover",".swiss",".sx",".sy",".sydney",".symantec",".systems",".sz",".tab",".taipei",".talk",".taobao",".target",".tatamotors",".tatar",".tattoo",".tax",".taxi",".tc",".tci",".td",".tdk",".team",".tech",".technology",".tel",".telecity",".telefonica",".temasek",".tennis",".teva",".tf",".tg",".th",".thd",".theater",".theatre",".tiaa",".tickets",".tienda",".tiffany",".tips",".tires",".tirol",".tj",".tjmaxx",".tjx",".tk",".tkmaxx",".tl",".tm",".tmall",".tn",".to",".today",".tokyo",".tools",".top",".toray",".toshiba",".total",".tours",".town",".toyota",".toys",".tp",".tr",".trade",".trading",".training",".travel",".travelchannel",".travelers",".travelersinsurance",".trust",".trv",".tt",".tube",".tui",".tunes",".tushu",".tv",".tvs",".tw",".tz",".ua",".ubank",".ubs",".uconnect",".ug",".uk",".um",".unicom",".university",".uno",".uol",".ups",".us",".uy",".uz",".va",".vacations",".vana",".vanguard",".vc",".ve",".vegas",".ventures",".verisign",".versicherung",".vet",".vg",".vi",".viajes",".video",".vig",".viking",".villas",".vin",".vip",".virgin",".visa",".vision",".vista",".vistaprint",".viva",".vivo",".vlaanderen",".vn",".vodka",".volkswagen",".volvo",".vote",".voting",".voto",".voyage",".vu",".vuelos",".wales",".walmart",".walter",".wang",".wanggou",".warman",".watch",".watches",".weather",".weatherchannel",".webcam",".weber",".website",".wed",".wedding",".weibo",".weir",".wf",".whoswho",".wien",".wiki",".williamhill",".win",".windows",".wine",".winners",".wme",".wolterskluwer",".woodside",".work",".works",".world",".wow",".ws",".wtc",".wtf",".xbox",".xerox",".xfinity",".xihuan",".xin",".\u6D4B\u8BD5",".\u0915\u0949\u092E",".\u092A\u0930\u0940\u0915\u094D\u0937\u093E",".\u30BB\u30FC\u30EB",".\u4F5B\u5C71",".\u0CAD\u0CBE\u0CB0\u0CA4",".\u6148\u5584",".\u96C6\u56E2",".\u5728\u7EBF",".\uD55C\uAD6D",".\u0B2D\u0B3E\u0B30\u0B24",".\u5927\u4F17\u6C7D\u8F66",".\u70B9\u770B",".\u0E04\u0E2D\u0E21",".\u09AD\u09BE\u09F0\u09A4",".\u09AD\u09BE\u09B0\u09A4",".\u516B\u5366","\u200F.\u05D9\u05E9\u05E8\u05D0\u05DC\u200E","\u200F.\u0645\u0648\u0642\u0639\u200E",".\u09AC\u09BE\u0982\u09B2\u09BE",".\u516C\u76CA",".\u516C\u53F8",".\u9999\u683C\u91CC\u62C9",".\u7F51\u7AD9",".\u79FB\u52A8",".\u6211\u7231\u4F60",".\u043C\u043E\u0441\u043A\u0432\u0430",".\u0438\u0441\u043F\u044B\u0442\u0430\u043D\u0438\u0435",".\u049B\u0430\u0437",".\u043A\u0430\u0442\u043E\u043B\u0438\u043A",".\u043E\u043D\u043B\u0430\u0439\u043D",".\u0441\u0430\u0439\u0442",".\u8054\u901A",".\u0441\u0440\u0431",".\u0431\u0433",".\u0431\u0435\u043B","\u200F.\u05E7\u05D5\u05DD\u200E",".\u65F6\u5C1A",".\u5FAE\u535A",".\uD14C\uC2A4\uD2B8",".\u6DE1\u9A6C\u9521",".\u30D5\u30A1\u30C3\u30B7\u30E7\u30F3",".\u043E\u0440\u0433",".\u0928\u0947\u091F",".\u30B9\u30C8\u30A2",".\u30A2\u30DE\u30BE\u30F3",".\uC0BC\uC131",".\u0B9A\u0BBF\u0B99\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0BC2\u0BB0\u0BCD",".\u5546\u6807",".\u5546\u5E97",".\u5546\u57CE",".\u0434\u0435\u0442\u0438",".\u043C\u043A\u0434","\u200F.\u05D8\u05E2\u05E1\u05D8\u200E",".\u0435\u044E",".\u30DD\u30A4\u30F3\u30C8",".\u65B0\u95FB",".\u5DE5\u884C",".\u5BB6\u96FB","\u200F.\u0643\u0648\u0645\u200E",".\u4E2D\u6587\u7F51",".\u4E2D\u4FE1",".\u4E2D\u56FD",".\u4E2D\u570B",".\u5A31\u4E50",".\u8C37\u6B4C",".\u0C2D\u0C3E\u0C30\u0C24\u0C4D",".\u0DBD\u0D82\u0D9A\u0DCF",".\u96FB\u8A0A\u76C8\u79D1",".\u8D2D\u7269",".\u6E2C\u8A66",".\u30AF\u30E9\u30A6\u30C9",".\u0AAD\u0ABE\u0AB0\u0AA4",".\u901A\u8CA9",".\u092D\u093E\u0930\u0924\u092E\u094D",".\u092D\u093E\u0930\u0924",".\u092D\u093E\u0930\u094B\u0924","\u200F.\u0622\u0632\u0645\u0627\u06CC\u0634\u06CC\u200E",".\u0BAA\u0BB0\u0BBF\u0B9F\u0BCD\u0B9A\u0BC8",".\u7F51\u5E97",".\u0938\u0902\u0917\u0920\u0928",".\u9910\u5385",".\u7F51\u7EDC",".\u043A\u043E\u043C",".\u0443\u043A\u0440",".\u9999\u6E2F",".\u4E9A\u9A6C\u900A",".\u8BFA\u57FA\u4E9A",".\u98DF\u54C1",".\u03B4\u03BF\u03BA\u03B9\u03BC\u03AE",".\u98DE\u5229\u6D66","\u200F.\u0625\u062E\u062A\u0628\u0627\u0631\u200E",".\u53F0\u6E7E",".\u53F0\u7063",".\u624B\u8868",".\u624B\u673A",".\u043C\u043E\u043D","\u200F.\u0627\u0644\u062C\u0632\u0627\u0626\u0631\u200E","\u200F.\u0639\u0645\u0627\u0646\u200E","\u200F.\u0627\u0631\u0627\u0645\u0643\u0648\u200E","\u200F.\u0627\u06CC\u0631\u0627\u0646\u200E","\u200F.\u0627\u0644\u0639\u0644\u064A\u0627\u0646\u200E","\u200F.\u0627\u062A\u0635\u0627\u0644\u0627\u062A\u200E","\u200F.\u0627\u0645\u0627\u0631\u0627\u062A\u200E","\u200F.\u0628\u0627\u0632\u0627\u0631\u200E","\u200F.\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627\u200E","\u200F.\u067E\u0627\u06A9\u0633\u062A\u0627\u0646\u200E","\u200F.\u0627\u0644\u0627\u0631\u062F\u0646\u200E","\u200F.\u0645\u0648\u0628\u0627\u064A\u0644\u064A\u200E","\u200F.\u0628\u0627\u0631\u062A\u200E","\u200F.\u0628\u06BE\u0627\u0631\u062A\u200E","\u200F.\u0627\u0644\u0645\u063A\u0631\u0628\u200E","\u200F.\u0627\u0628\u0648\u0638\u0628\u064A\u200E","\u200F.\u0627\u0644\u0628\u062D\u0631\u064A\u0646\u200E","\u200F.\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629\u200E","\u200F.\u0680\u0627\u0631\u062A\u200E","\u200F.\u0643\u0627\u062B\u0648\u0644\u064A\u0643\u200E","\u200F.\u0633\u0648\u062F\u0627\u0646\u200E","\u200F.\u0647\u0645\u0631\u0627\u0647\u200E","\u200F.\u0639\u0631\u0627\u0642\u200E","\u200F.\u0645\u0644\u064A\u0633\u064A\u0627\u200E",".\u6FB3\u9580",".\uB2F7\uCEF4",".\u653F\u5E9C","\u200F.\u0634\u0628\u0643\u0629\u200E","\u200F.\u0628\u064A\u062A\u0643\u200E","\u200F.\u0639\u0631\u0628\u200E",".\u10D2\u10D4",".\u673A\u6784",".\u7EC4\u7EC7\u673A\u6784",".\u5065\u5EB7",".\u0E44\u0E17\u0E22","\u200F.\u0633\u0648\u0631\u064A\u0629\u200E",".\u62DB\u8058",".\u0440\u0443\u0441",".\u0440\u0444",".\u73E0\u5B9D","\u200F.\u062A\u0648\u0646\u0633\u200E",".\u5927\u62FF",".\u0EA5\u0EB2\u0EA7",".\u307F\u3093\u306A",".\u30B0\u30FC\u30B0\u30EB",".\u03B5\u03C5",".\u03B5\u03BB",".\u4E16\u754C",".\u66F8\u7C4D",".\u0D2D\u0D3E\u0D30\u0D24\u0D02",".\u0A2D\u0A3E\u0A30\u0A24",".\u7F51\u5740",".\uB2F7\uB137",".\u30B3\u30E0",".\u5929\u4E3B\u6559",".\u6E38\u620F",".verm\xF6gensberater",".verm\xF6gensberatung",".\u4F01\u4E1A",".\u4FE1\u606F",".\u5609\u91CC\u5927\u9152\u5E97",".\u5609\u91CC","\u200F.\u0645\u0635\u0631\u200E","\u200F.\u0642\u0637\u0631\u200E",".\u5E7F\u4E1C",".\u0B87\u0BB2\u0B99\u0BCD\u0B95\u0BC8",".\u0B87\u0BA8\u0BCD\u0BA4\u0BBF\u0BAF\u0BBE",".\u0570\u0561\u0575",".\u65B0\u52A0\u5761","\u200F.\u0641\u0644\u0633\u0637\u064A\u0646\u200E",".\u30C6\u30B9\u30C8",".\u653F\u52A1",".xperia",".xxx",".xyz",".yachts",".yahoo",".yamaxun",".yandex",".ye",".yodobashi",".yoga",".yokohama",".you",".youtube",".yt",".yun",".za",".zappos",".zara",".zero",".zip",".zippo",".zm",".zone",".zuerich",".zw",".ac.vn",".ae.org",".biz.fj",".biz.pl",".biz.tr",".biz.tt",".biz.vn",".br.com",".cn.com",".co.ag",".co.at",".co.ci",".co.cm",".co.com",".co.cr",".co.de",".co.ee",".co.gg",".co.gy",".co.hu",".co.id",".co.il",".co.im",".co.in",".co.ir",".co.it",".co.je",".co.ke",".co.kr",".co.lc",".co.ls",".co.na",".co.ni",".co.nl",".co.no",".co.nu",".co.nz",".co.om",".co.rs",".co.th",".co.tt",".co.tz",".co.ug",".co.uk",".co.uz",".co.ve",".co.vi",".co.za",".com.ag",".com.ai",".com.ar",".com.au",".com.bb",".com.bd",".com.bm",".com.bo",".com.br",".com.bs",".com.bz",".com.cm",".com.cn",".com.co",".com.cu",".com.cy",".com.de",".com.do",".com.ec",".com.ee",".com.es",".com.fj",".com.gi",".com.gp",".com.gr",".com.gt",".com.gy",".com.hk",".com.hn",".com.hr",".com.ht",".com.kn",".com.lb",".com.lc",".com.lv",".com.mk",".com.mt",".com.mx",".com.my",".com.na",".com.ng",".com.ni",".com.om",".com.pa",".com.pe",".com.ph",".com.pk",".com.pl",".com.pr",".com.pt",".com.py",".com.ro",".com.ru",".com.sb",".com.se",".com.sg",".com.so",".com.sv",".com.tr",".com.tt",".com.tw",".com.ua",".com.uy",".com.uz",".com.vc",".com.ve",".com.vi",".com.vn",".de.com",".edu.vn",".eu.com",".firm.in",".gb.net",".gen.in",".gen.tr",".gr.com",".health.vn",".ind.in",".info.ec",".info.fj",".info.pl",".info.tt",".info.vn",".int.vn",".jpn.com",".ltd.uk",".me.uk",".msk.ru",".name.fj",".name.tr",".name.tt",".name.vn",".net.ag",".net.ai",".net.ar",".net.au",".net.bb",".net.bm",".net.bo",".net.br",".net.bz",".net.cm",".net.cn",".net.co",".net.fj",".net.gg",".net.gp",".net.gt",".net.gy",".net.hn",".net.in",".net.je",".net.lc",".net.lv",".net.my",".net.ni",".net.nz",".net.pl",".net.pr",".net.ru",".net.so",".net.tt",".net.vc",".net.vi",".net.vn",".nom.ag",".nom.es",".nom.ni",".off.ai",".or.at",".or.kr",".org.ag",".org.ai",".org.bb",".org.bm",".org.bo",".org.bz",".org.cn",".org.es",".org.fj",".org.gg",".org.gt",".org.hn",".org.il",".org.in",".org.je",".org.lc",".org.ls",".org.lv",".org.na",".org.ni",".org.nz",".org.pl",".org.pr",".org.ru",".org.so",".org.tt",".org.uk",".org.vc",".org.ve",".org.vi",".org.vn",".plc.uk",".pro.fj",".pro.tt",".pro.vn",".radio.am",".radio.fm",".ru.com",".sa.com",".se.net",".tv.br",".uk.com",".uk.net",".us.com",".us.org",".waw.pl",".web.id",".web.tr",".za.com"];var io=class{validDomainExtensions;constructor(){this.validDomainExtensions=new Set(Eo)}isDomainExtension(o){let e=o.substring(o.lastIndexOf("."));return this.isValidExtension(e)}domain(o){if(!this.isValidInput(o))return"";let e=this.extractAndCleanDomain(o);return this.parseMainDomain(e)}isValidInput(o){return o!=null&&o.length>=7}extractAndCleanDomain(o){let e;return o.startsWith("http://")||o.startsWith("https://")?e=new URL(o).hostname:o.startsWith("//")?e=new URL(`https:${o}`).hostname:e="~"+o,e.includes("~")&&(e=this.removeUrlFragments(e),e=e.replace("~","")),e}removeUrlFragments(o){return o.includes("@")?o.split("@")[1]:o.includes("/")?o.split("/")[0]:o.includes("?")?o.split("?")[0]:o.includes("#")?o.split("#")[0]:o}parseMainDomain(o){let e=o.split("."),a=e.length;if(a===2){let m=o.substring(o.lastIndexOf("."));return this.isValidExtension(m)?o:""}return a>=3?this.handleComplexDomain(e):""}handleComplexDomain(o){let e=this.getLastThreeParts(o),[,a,m]=e.split("."),c="."+a,i="."+m;return this.isValidExtension(c)&&this.isValidExtension(i)?e:this.isValidExtension(i)?a+"."+m:""}getLastThreeParts(o){return o.length===3?o.join("."):o.slice(-3).join(".")}isValidExtension(o){return this.validDomainExtensions.has(o.toLowerCase().trim())}};var No=[{name:"Sohu",mx:"a.sohu.com"},{name:"Sohu",mx:"sohu.com"},{name:"Strato",mx:".rzone.de"},{name:"Strato",mx:".strato.de"},{name:"21cn",mx:".21cn.com"},{name:"163",mx:".netease.com"},{name:"Netvigator",mx:".netvigator.com"},{name:"139",mx:".mail.139.com"},{name:"Nate",mx:".nate.com"},{name:"Naver",mx:".naver.com"},{name:"Daum",mx:".daum.kgslb.com"},{name:"Daum",mx:".hanmail.net"},{name:"Ziggo",mx:".ziggo.nl"},{name:"QQ",mx:".qq.com"},{name:"263.net",mx:"263.net"},{name:"Sina",mx:".vip.sina.com"},{name:"Sina",mx:".sina.com.cn"},{name:"Aruba",mx:".aruba.it"},{name:"Aliyun",mx:".mxhichina.com"},{name:"Plala Webmail",mx:".plala.or.jp"},{name:"AOL",mx:"mx-aol.mail"},{name:"Turbify",mx:"mx-biz.mail.am0.yahoodns.net"},{name:"Turbify",mx:"mx-biz.mail.am.yahoodns.net"},{name:"Turbify",mx:"mx-biz.mail.am1.yahoodns.net"},{name:"Turbify",mx:"mx1.biz.mail.yahoo.com"},{name:"Turbify",mx:"mx5.biz.mail.yahoo.com"},{name:"Turbify",mx:".biz.mail.yahoo.com"},{name:"AT&T",mx:".prodigy.net"},{name:"Yahoo",mx:".yahoo."},{name:"Yahoo",mx:".yahoodns.net"},{name:"Zoho",mx:".zoho.com"},{name:"Sitestar Webmail",mx:".sitestar.everyone.net",webmail:"https://webmail.sitestar.net"},{name:"Outlook Web App (OWA)",mx:".serverdata.net",webmail:"https://owa.serverdata.net"},{name:"1and1",mx:".1and1."},{name:"Outlook",mx:"olc.protection.outlook.com"},{name:"Outlook",mx:".mail.outlook.com"},{name:"Outlook",mx:".hotmail."},{name:"Office 365",mx:"mail.protection.outlook.com"},{name:"Office 365",mx:".outlook.com"},{name:"Office 365",mx:".office365.com"},{name:"Gmail",mx:".google.com"},{name:"Mail.ru",mx:".mail.ru"},{name:"Mail.com",mx:".mail.com"},{name:"Earthlink",mx:".earthlink.net"},{name:"Earthlink",mx:".oxsus-vadesecure.net"},{name:"Rackspace",mx:".emailsrvr.com"},{name:"Mimecast",mx:".mimecast.com"},{name:"Godaddy",mx:".secureserver.net"},{name:"Comcast",mx:".comcast.net"},{name:"Office 365",mx:".ppe-hosted.com"},{name:"Office 365",mx:".gslb.pphosted.com"},{name:"Office 365",mx:".arsmtp.com"},{name:"Zoho",mx:".zoho.com"},{name:"ProtonMail",mx:"mail.protonmail.ch"},{name:"Facebook",mx:".facebook.com"},{name:"163",mx:".netease.com"},{name:"163",mx:".163.com"},{name:"263",mx:".263.net"},{name:"Aliyun",mx:".alibaba.com"},{name:"Aliyun",mx:".aliyun.com"},{name:"Amazon",mx:".amazon.com"},{name:"Amazon",mx:".amazonaws.com"},{name:"Anazana",mx:".anazana.com"},{name:"CoreMail",mx:".icoremail.net"},{name:"GMX",mx:".gmx.net"},{name:"GMX",mx:".gmx.com"},{name:"Hinet",mx:".hinet."},{name:"iCloud",mx:".icloud.com"},{name:"Iinet",mx:".iinet.net.au"},{name:"Namecheap",mx:".registrar-servers.com"},{name:"Network Solutions",mx:".myregisteredsite.com"},{name:"Orange",mx:".orange."},{name:"QQ",mx:".qq.com"},{name:"Synaq",mx:".synaq."},{name:"Web.de",mx:".web.de"},{name:"Yandex",mx:".yandex."},{name:"Zmail",mx:".zmail."},{name:"Strato",mx:".strato.de"},{name:"Apple",mx:".apple.com"},{name:"Cox Webmail",mx:".cloudfilter.net"},{name:"Fastmail",mx:".messagingengine.com"},{name:"Mailgun",mx:".mailgun.org"},{name:"Postmark",mx:".pmta.postmarkapp.com"},{name:"SendGrid",mx:".sendgrid.net"},{name:"Elastic Email",mx:".elasticemail.com"},{name:"Zendesk",mx:".zendesk.com"},{name:"Intermedia",mx:".intermedia.net"},{name:"Mailjet",mx:".mailjet.com"},{name:"Front",mx:".frontapp.com"},{name:"Unknown",mx:".................."},{name:"Webmail",mx:".................."},{name:"Zimbra",mx:".................."},{name:"Others",mx:".................."},{name:"Aruba",mx:".................."},{name:"Alibaba",mx:".................."},{name:"IBM",mx:".................."},{name:"Digitalocean",mx:".................."},{name:"AWS Partner",mx:".................."},{name:"Microsoft Exchange",mx:".................."},{name:"Oracle Cloud",mx:".................."},{name:"Roundcube Webmail",mx:".................."},{name:"cPanel Webmail",mx:".................."},{name:"Yahoo (External Provider)",mx:".................."},{name:"cPanel Webmail",mx:".................."},{name:"Disposable",mx:".................."}],Io=["automation","products","product","product.info","product-info","productinfo","alert","alerts","automated","rewards","clientpayments","invites","page-notification","page-notification-noreply","friendupdates","groupupdates","messages","advertise","advertise-noreply","advertise-no.reply","advertise-no-reply","advertise-no_reply","reminders","reminder","notification","paymentnotification","payment-notification","payment.notification","payment_notification","registration","registrations","signup","sign-up","signin","sign-in","email","e-mail","no_reply","whatsinstore","ship","nobody","no-body","publishers","whatsinstore","hosting-security","hosting","accountstatus","account-status","account_status","hosting-service","billing","hostingsecurity","robot","hosting-services","hostingservices","hostingservice","no.reply","paypal","no-reply","feedback","example","donotreply","noreply","do-not-reply","bot","do_not_reply","market.news","clientservices","list","client-services","client.services","abuse","accessibilty","accessibility","accounting","account","accounts.payable","adm","admin","admissions","ads","advertise","advisor","agency","agent","all","api","ask","attorneys","award","bills","bizdev","biz-dev","board","booking","bookings","buzz","callcenter","career","careers","ceo","cfa","chat","chief","comments","contact","contacts","copyright","corporate","courses","customer.services","customercare","customer-care","customerservice","customer-service","customerservicecenter","customer-service-center","custserv","data","design","development","director","directory","domains","editor","editorial","emails","engineering","enquiries","enquiry","event","events","everyone","feedback","finance","foundation","frontdesk","ftp","general","global","grouplegal","group-legal","groups","help","helpdesk","home","hotel","hr","human.resources","humanresources","human-resources","info","information","inquiries","inquiry","instructor","insurance","internet","interoperability","invest","investor","investorrelations","investor-relations","job","jobs","lawoffice","law-office","leasing","legal","library","listing","logistics","mail","mailbox","mailroom","main","manager","marketing","mayor","media","medicalqueries","medical-queries","meetings","members","membership","membersupport","member-support","merchant","misc","news","newsroom","noc","offers","office","online","operations","organiser","organizer","pastor","pharma","photos","politics","postmaster","pr","president","prime","privacy","projects","promos","publicaffairs","public-affairs","publisher","quality","query","questions","radio","realestate","real-estate","realtor","receptionist","redaction","register","remove","repairs","request","research","reservation","reservations","reserve","reserveroom","reserve-room","root","sale","sales","school","schools","secretary","security","service","shopping","spam","staff","subscribe","suggest","support","survey","talent","tourism","tours","trading","training","transfer","travel","travels","unsubscribe","usa","usenet","user","username","users","uucp","verify","volunteer","web","webinfo","webmaster","website","wwinfo","www","www-validator"],_o=new Set(["yahoo.com","ameritech.net","att.net","bellsouth.net","currently.com","flash.net","nvbell.net","pacbell.net","prodigy.net","sbcglobal.net","snet.net","swbell.net","wans.net","worldnet.att.net","ymail.com","y7mail.com","yahoo.at","yahoo.be","yahoo.bg","yahoo.ca","yahoo.cl","yahoo.co.hu","yahoo.co.id","yahoo.co.il","yahoo.co.in","yahoo.co.kr","yahoo.co.nz","yahoo.co.th","yahoo.co.uk","yahoo.co.za","yahoo.com.ar","yahoo.com.au","yahoo.com.br","yahoo.com.co","yahoo.com.hk","yahoo.com.hr","yahoo.com.mx","yahoo.com.my","yahoo.com.pe","yahoo.com.ph","yahoo.com.sg","yahoo.com.tr","yahoo.com.tw","yahoo.com.ua","yahoo.com.ve","yahoo.com.vn","yahoo.cz","yahoo.de","yahoo.dk","yahoo.ee","yahoo.es","yahoo.fi","yahoo.fr","yahoo.gr","yahoo.hr","yahoo.hu","yahoo.ie","yahoo.in","yahoo.it","yahoo.lt","yahoo.lv","yahoo.nl","yahoo.no","yahoo.pl","yahoo.pt","yahoo.ro","yahoo.rs","yahoo.se","yahoo.si","yahoo.sk","yahoogroups.co.kr","yahoogroups.com.cn","yahoogroups.com.sg","yahoogroups.com.tw","yahoogrupper.dk","yahoogruppi.it","yahooxtra.co.nz"]),fo=["fuck","shit","scam","hack","crack","spam","phishing","test","testing","fake","null","undefined"];async function co(l,o={}){let{params:e,timeout:a=3e4,maxRetries:m=3,retryDelay:c=1e3,maxRedirects:i=5,validateStatus:t=p=>p>=200&&p<300,onRetry:s,...r}=o,u=l;if(e){let p=new URLSearchParams;Object.entries(e).forEach(([d,f])=>{p.append(d,typeof f=="boolean"?f?"1":"0":String(f))}),u+=(u.includes("?")?"&":"?")+p.toString()}let n=null;for(let p=1;p<=m+1;p++){let d=new AbortController,f=a>0?setTimeout(()=>d.abort(),a):null,k=r.signal,w=k?AbortSignal.any([d.signal,k]):d.signal;try{let g=await fetch(u,{...r,signal:w,redirect:i===0?"error":"follow"});if(f&&clearTimeout(f),!t(g.status))throw new Error(`HTTP ${g.status}: ${g.statusText}`);let b=g.headers.get("content-type")||"",h;return b.includes("application/json")?h=await g.json():b.includes("text/")?h=await g.text():h=await g.arrayBuffer(),{data:h,status:g.status,statusText:g.statusText,finalUrl:g.url,headers:g.headers,retryCount:p-1}}catch(g){if(f&&clearTimeout(f),n=g,k?.aborted||p>m||g.name==="AbortError"&&p===1||g.message.includes("HTTP")&&!g.message.includes("5"))break;s&&s(g,p),p<=m&&await new Promise(b=>setTimeout(b,c*p))}}throw n}var Do=[{name:"Gmail",domains:["@gmail.com","@googlemail.com"]},{name:"Outlook",domains:["@outlook.com","@hotmail.com","@hotmail.co.uk","@hotmail.fr","@hotmail.it","@hotmail.es","@hotmail.de","@live.com","@live.co.uk","@live.fr","@live.nl","@live.it","@live.com.au","@live.ca","@msn.com"]},{name:"Yahoo",domains:["@yahoo.com","@yahoo.co.uk","@yahoo.fr","@yahoo.com.br","@yahoo.co.in","@yahoo.es","@yahoo.it","@yahoo.de","@yahoo.in","@yahoo.ca","@yahoo.com.au","@yahoo.co.jp","@yahoo.com.ar","@yahoo.com.mx","@yahoo.co.id","@yahoo.com.sg","@ymail.com","@rocketmail.com","@yahoo.at","@yahoo.be","@yahoo.bg","@yahoo.cl","@yahoo.co.hu","@yahoo.co.kr","@yahoo.co.nz","@yahoo.co.th","@yahoo.co.za","@yahoo.com.hk","@yahoo.com.hr","@yahoo.com.my","@yahoo.com.pe","@yahoo.com.ph","@yahoo.com.tr","@yahoo.com.tw","@yahoo.com.ua","@yahoo.com.ve","@yahoo.com.vn","@yahoo.cz","@yahoo.dk","@yahoo.ee","@yahoo.fi","@yahoo.gr","@yahoo.hr","@yahoo.hu","@yahoo.ie","@yahoo.lt","@yahoo.lv","@yahoo.nl","@yahoo.no","@yahoo.pl","@yahoo.pt","@yahoo.ro","@yahoo.rs","@yahoo.se","@yahoo.si","@yahoo.sk"]},{name:"AOL",domains:["@aol.com","@aim.com"]},{name:"iCloud",domains:["@icloud.com","@me.com","@mac.com"]},{name:"ProtonMail",domains:["@protonmail.com","@protonmail.ch","@pm.me","@proton.me"]},{name:"Zoho",domains:["@zoho.com","@zohomail.com"]},{name:"Mail.ru",domains:["@mail.ru","@bk.ru","@inbox.ru","@list.ru","@internet.ru","@corp.mail.ru","@ro.ru","@rbcmail.ru","@hotbox.ru","@mail15.com","@pochta.ru","@fromru.com","@front.ru","@krovatka.su","@land.ru","@newmail.ru","@nightmail.ru","@nm.ru","@pisem.net","@pochtamt.ru","@pop3.ru","@smtp.ru","@mail333.com","@mailru.com","@e-mail.ru","@email.ru","@emailru.com","@mail.ua","@bigmir.net","@ukr.net","@i.ua","@meta.ua","@online.ua","@yandex.ua","@yandex.by","@yandex.kz","@narod.ru","@lenta.ru","@autorambler.ru","@myrambler.ru","@r0.ru","@rambler.ua","@qip.ru","@mail.kz","@nursat.kz","@kazmail.kz","@mail.kg","@mail.tj","@mail.uz","@tut.by","@mail.by","@open.by","@rambler.by","@mail.md","@mail.am","@mail.ge","@mail.az","@mail.lv","@mail.lt","@mail.ee","@delfi.lv","@inbox.lv","@apollo.lv","@one.lv","@parks.lv"]},{name:"Yandex",domains:["@yandex.ru","@yandex.com","@ya.ru"]},{name:"GMX",domains:["@gmx.com","@gmx.net","@gmx.de","@gmx.at","@gmx.ch"]},{name:"Web.de",domains:["@web.de"]},{name:"Mail.com",domains:["@mail.com","@email.com","@usa.com","@myself.com","@consultant.com","@post.com","@europe.com","@asia.com","@iname.com","@writeme.com","@techie.com","@accountant.com","@activist.com","@adexec.com","@allergist.com","@alumnidirector.com","@angelic.com","@appraiser.com","@archaeologist.com","@architect.com","@artlover.com","@asia-mail.com","@auctioneer.com","@bartender.com","@bikerider.com","@birdlover.com","@brew-master.com","@brew-meister.com","@chef.net","@chemist.com","@clerk.com","@clubmember.com","@collector.com","@columnist.com","@comic.com","@computer4u.com","@contractor.com","@coolsite.net","@counsellor.com","@count.com","@cyber-wizard.com","@cyberdude.com","@cybergal.com","@cyberservices.com","@dallasmail.com","@dbzmail.com","@deliveryman.com","@diplomats.com","@doctor.com","@dr.com","@engineer.com","@execs.com","@fastservice.com","@financialmail.com","@fireman.net","@gardener.com","@geologist.com","@graduate.org","@graphic-designer.com","@groupmail.com","@hairdresser.net","@homemail.com","@hot-shot.com","@humanoid.net","@instructor.net","@insurer.com","@journalist.com","@lawyer.com","@legislator.com","@lobbyist.com","@mad.scientist.com","@manager.com","@mathematician.com","@mechanic.com","@minister.com","@musician.org","@optician.com","@orthodontist.net","@pediatrician.com","@photographer.net","@physicist.net","@politician.com","@presidency.com","@priest.com","@programmer.net","@publicist.com","@realtyagent.com","@registrar.com","@repairman.com","@representative.com","@rescueteam.com","@salesperson.net","@scientist.com","@secretary.net","@socialworker.net","@sociologist.com","@solution4u.com","@songwriter.net","@surgical.net","@teacher.net","@technologist.com","@therapist.net","@toothfairy.com","@tvstar.com","@umpire.com","@webname.com","@worker.com","@workmail.com"]},{name:"Fastmail",domains:["@fastmail.com","@fastmail.fm"]},{name:"AT&T",domains:["@att.net","@sbcglobal.net","@sbcglobal.com","@ameritech.net","@bellsouth.net","@flash.net","@prodigy.net","@pacbell.net","@nvbell.net","@snet.net","@swbell.net","@wans.net","@worldnet.att.net"]},{name:"Comcast",domains:["@comcast.net"]},{name:"Verizon",domains:["@verizon.net"]},{name:"Cox",domains:["@cox.net"]},{name:"Charter",domains:["@charter.net"]},{name:"Earthlink",domains:["@earthlink.net"]},{name:"Frontier",domains:["@frontier.com","@frontiernet.net","@myfrontiermail.com","@frontiernet.com"]},{name:"Windstream",domains:["@windstream.net"]},{name:"CenturyTel",domains:["@centurytel.net"]},{name:"Juno",domains:["@juno.com"]},{name:"Optonline",domains:["@optonline.net"]},{name:"QQ",domains:["@qq.com"]},{name:"163",domains:["@163.com","@126.com"]},{name:"139",domains:["@139.com"]},{name:"21cn",domains:["@21cn.com"]},{name:"Sina",domains:["@sina.com","@sina.cn","@sina.com.cn"]},{name:"Sohu",domains:["@sohu.com"]},{name:"Aliyun",domains:["@aliyun.com","@alibaba.com"]},{name:"Naver",domains:["@naver.com"]},{name:"Daum",domains:["@daum.net","@hanmail.net"]},{name:"Nate",domains:["@nate.com"]},{name:"Netvigator",domains:["@netvigator.com"]},{name:"Ziggo",domains:["@ziggo.nl"]},{name:"263.net",domains:["@263.net"]},{name:"Aruba",domains:["@aruba.it"]},{name:"Plala Webmail",domains:["@plala.or.jp"]},{name:"Turbify",domains:["@yahoo-inc.com"]},{name:"Godaddy",domains:["@secureserver.net"]},{name:"Rackspace",domains:["@emailsrvr.com"]},{name:"Mimecast",domains:["@mimecast.com"]},{name:"Facebook",domains:["@facebook.com"]},{name:"Amazon",domains:["@amazon.com","@amazonaws.com"]},{name:"Anazana",domains:["@anazana.com"]},{name:"CoreMail",domains:["@icoremail.net"]},{name:"Hinet",domains:["@hinet.net"]},{name:"Iinet",domains:["@iinet.net.au"]},{name:"Namecheap",domains:["@registrar-servers.com"]},{name:"Network Solutions",domains:["@myregisteredsite.com"]},{name:"Orange",domains:["@orange.fr","@wanadoo.fr"]},{name:"Synaq",domains:["@synaq.com"]},{name:"Zmail",domains:["@zmail.ru"]},{name:"Strato",domains:["@strato.de"]},{name:"Apple",domains:["@apple.com"]},{name:"Cox Webmail",domains:["@cloudfilter.net"]},{name:"Mailgun",domains:["@mailgun.org"]},{name:"Postmark",domains:["@pmta.postmarkapp.com"]},{name:"SendGrid",domains:["@sendgrid.net"]},{name:"Elastic Email",domains:["@elasticemail.com"]},{name:"Zendesk",domains:["@zendesk.com"]},{name:"Intermedia",domains:["@intermedia.net"]},{name:"Mailjet",domains:["@mailjet.com"]},{name:"Front",domains:["@frontapp.com"]},{name:"Free.fr",domains:["@free.fr"]},{name:"Libero",domains:["@libero.it"]},{name:"UOL",domains:["@uol.com.br"]},{name:"BOL",domains:["@bol.com.br"]},{name:"SFR",domains:["@sfr.fr"]},{name:"IG",domains:["@ig.com.br"]},{name:"Bigpond",domains:["@bigpond.com","@bigpond.net.au"]},{name:"Terra",domains:["@terra.com.br"]},{name:"Neuf",domains:["@neuf.fr"]},{name:"Alice",domains:["@alice.it","@aliceadsl.fr"]},{name:"La Poste",domains:["@laposte.net"]},{name:"Rambler",domains:["@rambler.ru"]},{name:"Tiscali",domains:["@tiscali.it","@tiscali.co.uk"]},{name:"Shaw",domains:["@shaw.ca"]},{name:"Sky",domains:["@sky.com"]},{name:"Freenet",domains:["@freenet.de"]},{name:"T-Online",domains:["@t-online.de"]},{name:"Virgilio",domains:["@virgilio.it"]},{name:"Home.nl",domains:["@home.nl"]},{name:"Telenet",domains:["@telenet.be"]},{name:"Voila",domains:["@voila.fr"]},{name:"Planet.nl",domains:["@planet.nl"]},{name:"Tin.it",domains:["@tin.it"]},{name:"NTL World",domains:["@ntlworld.com"]},{name:"Arcor",domains:["@arcor.de"]},{name:"Hetnet",domains:["@hetnet.nl"]},{name:"Zonnet",domains:["@zonnet.nl"]},{name:"Club Internet",domains:["@club-internet.fr"]},{name:"Optus",domains:["@optusnet.com.au"]},{name:"Blueyonder",domains:["@blueyonder.co.uk"]},{name:"Bluewin",domains:["@bluewin.ch"]},{name:"Skynet",domains:["@skynet.be"]},{name:"Sympatico",domains:["@sympatico.ca"]},{name:"Chello",domains:["@chello.nl"]}];var fe=`0-mail.com
|
|
2
2
|
027168.com
|
|
3
3
|
062e.com
|
|
4
4
|
0815.ru
|
package/package.json
CHANGED