@prufy/cli 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +106 -2
  2. package/package.json +29 -4
  3. package/prufy.js +62 -0
package/README.md CHANGED
@@ -1,3 +1,107 @@
1
- # Temporary Holding Version
1
+ # prufy
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Prove you own a domain, from the terminal.
4
+
5
+ ```bash
6
+ npx @prufy/cli verify example.com
7
+ ```
8
+
9
+ It prints the one DNS record to add, in the words your DNS provider uses for its own fields. Then it waits and checks. When something isn't right it says what it saw, why, and the one thing to change.
10
+
11
+ ```
12
+ example.com is managed by Cloudflare.
13
+
14
+ Add this record:
15
+ Type TXT
16
+ Name _prufy-challenge
17
+ Content prufy-domain-verification=3f9a21bdk2m4q6s8u0w2y4a6c8
18
+ TTL 300, or the lowest your provider offers
19
+
20
+ ✓ example.com is verified
21
+ Keep the record in place. We re-check it daily so ownership stays current.
22
+ ```
23
+
24
+ There's no account and no password. Your first `prufy verify` starts a session for this terminal, the same way the website does for a browser.
25
+
26
+ ## Install
27
+
28
+ Nothing to install if you have Node 20 or newer: `npx @prufy/cli` (or `bunx @prufy/cli`) runs it.
29
+
30
+ To keep it around, install it once. The command is then just `prufy`, which is how the rest of this page and the CLI's own hints write it:
31
+
32
+ ```bash
33
+ npm install -g @prufy/cli
34
+ ```
35
+
36
+ No Node? There's a standalone binary for macOS and Linux, with a one-line installer: [github.com/agnelnieves/prufy-cli](https://github.com/agnelnieves/prufy-cli).
37
+
38
+ ## Commands
39
+
40
+ Everything the website does, the CLI does.
41
+
42
+ | On the website | In the terminal |
43
+ | --- | --- |
44
+ | Enter a domain, get the record | `prufy verify <domain>` |
45
+ | Your domains | `prufy list` |
46
+ | A claim's page | `prufy status <domain>` |
47
+ | Check now | `prufy check <domain>` |
48
+ | Copy the name or the value | `prufy record <domain> --host`, `--value` |
49
+ | The zone-file line | `prufy record <domain> --zone-file` |
50
+ | Get a new code | `prufy rotate <domain>` |
51
+ | Send a link to whoever manages the domain | `prufy share <domain> --email dana@example.com` |
52
+ | Open a setup link someone sent you | `prufy setup <link>` |
53
+ | One-click setup at the provider | `prufy connect <domain>` |
54
+ | Email alerts, and a test alert | `prufy alerts email you@example.com`, `prufy alerts test` |
55
+ | The activity strip | `prufy history <domain>` |
56
+ | Stop verifying this domain | `prufy stop <domain>` |
57
+
58
+ Two things the terminal adds:
59
+
60
+ - `prufy dns <domain>` asks each of the domain's nameservers and two public resolvers what they hold right now, from your machine.
61
+ - `prufy whoami` and `prufy logout` show and forget this terminal's session.
62
+
63
+ One thing it can't do: turn on push notifications. Those need a browser to subscribe, so `prufy alerts` shows them and the website turns them on.
64
+
65
+ `prufy <command> --help` explains each one.
66
+
67
+ ## For scripts and agents
68
+
69
+ Add `--json` to any command. stdout then carries one JSON document and nothing else, in the same shapes the API returns. Errors are JSON too: `{ "error": { "kind", "message", "hint" } }`.
70
+
71
+ With `--json`, `verify` returns the record straight away instead of waiting:
72
+
73
+ ```bash
74
+ prufy verify example.com --json
75
+ ```
76
+
77
+ ```bash
78
+ prufy check example.com --json
79
+ ```
80
+
81
+ | Exit code | Meaning |
82
+ | --- | --- |
83
+ | `0` | Done. After a check, it means verified |
84
+ | `1` | Something went wrong |
85
+ | `2` | The command wasn't understood |
86
+ | `3` | Checked, and not verified yet |
87
+
88
+ An agent that was handed a setup link needs nothing else. The link can read one record and ask for a check, and that's all:
89
+
90
+ ```bash
91
+ prufy setup https://prufy.dev/setup/… --json
92
+ ```
93
+
94
+ ```bash
95
+ prufy setup https://prufy.dev/setup/… --check --wait
96
+ ```
97
+
98
+ ## The session
99
+
100
+ | | |
101
+ | --- | --- |
102
+ | Where it's kept | `~/.config/prufy/session.json`, readable only by you. `PRUFY_CONFIG_DIR` or `XDG_CONFIG_HOME` move it |
103
+ | In CI | Set `PRUFY_TOKEN` to the token from that file. It's never printed by any command |
104
+ | Another Prufy | `--api-url http://localhost:5200`, or `PRUFY_API_URL`. Each address has its own session |
105
+ | Colour | Off when piped, with `--no-color`, or when `NO_COLOR` is set. Status is always a word, never colour alone |
106
+
107
+ A terminal and a browser don't share domains yet. Each is its own session. To move a domain between them, claim it again from the other one: the record in DNS decides who owns it.
package/package.json CHANGED
@@ -1,6 +1,31 @@
1
1
  {
2
2
  "name": "@prufy/cli",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "Prove you own a domain, from the terminal.",
5
+ "type": "module",
6
+ "bin": {
7
+ "prufy": "prufy.js"
8
+ },
9
+ "files": [
10
+ "prufy.js",
11
+ "README.md"
12
+ ],
13
+ "engines": {
14
+ "node": ">=20.19.0"
15
+ },
16
+ "homepage": "https://prufy.dev",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/agnelnieves/prufy-cli.git"
20
+ },
21
+ "bugs": "https://github.com/agnelnieves/prufy-cli/issues",
22
+ "keywords": [
23
+ "dns",
24
+ "domain",
25
+ "verification",
26
+ "ownership",
27
+ "txt",
28
+ "cli"
29
+ ],
30
+ "license": "UNLICENSED"
31
+ }
package/prufy.js ADDED
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env node
2
+ var Xl=Object.create;var{getPrototypeOf:Yl,defineProperty:Sr,getOwnPropertyNames:Ql}=Object;var zr=Object.prototype.hasOwnProperty;function e0(e){return this[e]}var t0,n0,o0=(e,t,n)=>{var o=e!=null&&typeof e==="object";if(o){var r=t?t0??=new WeakMap:n0??=new WeakMap,a=r.get(e);if(a)return a}n=e!=null?Xl(Yl(e)):{};let i=t||!e||!e.__esModule||!zr.call(e,"default")?Sr(n,"default",{value:e,enumerable:!0}):n;if(e&&typeof e==="object"||typeof e==="function"){for(let s of Ql(e))if(!zr.call(i,s))Sr(i,s,{get:e0.bind(e,s),enumerable:!0})}if(o)r.set(e,i);return i};var r0=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ea=r0(function(Df,Qr){var x0=/^xn--/,w0=/[^\0-\x7F]/,_0=/[\x2E\u3002\uFF0E\uFF61]/g,S0={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},le=Math.floor,Wn=String.fromCharCode;function Ce(e){throw RangeError(S0[e])}function z0(e,t){let n=[],o=e.length;while(o--)n[o]=t(e[o]);return n}function Wr(e,t){let n=e.split("@"),o="";if(n.length>1)o=n[0]+"@",e=n[1];e=e.replace(_0,".");let r=e.split("."),a=z0(r,t).join(".");return o+a}function Gr(e){let t=[],n=0,o=e.length;while(n<o){let r=e.charCodeAt(n++);if(r>=55296&&r<=56319&&n<o){let a=e.charCodeAt(n++);if((a&64512)==56320)t.push(((r&1023)<<10)+(a&1023)+65536);else t.push(r),n--}else t.push(r)}return t}var C0=(e)=>String.fromCodePoint(...e),A0=function(e){if(e>=48&&e<58)return 26+(e-48);if(e>=65&&e<91)return e-65;if(e>=97&&e<123)return e-97;return 36},Hr=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},Jr=function(e,t,n){let o=0;e=n?le(e/700):e>>1,e+=le(e/t);for(;e>455;o+=36)e=le(e/35);return le(o+36*e/(e+38))},Xr=function(e){let t=[],n=e.length,o=0,r=128,a=72,i=e.lastIndexOf("-");if(i<0)i=0;for(let s=0;s<i;++s){if(e.charCodeAt(s)>=128)Ce("not-basic");t.push(e.charCodeAt(s))}for(let s=i>0?i+1:0;s<n;){let c=o;for(let l=1,p=36;;p+=36){if(s>=n)Ce("invalid-input");let f=A0(e.charCodeAt(s++));if(f>=36)Ce("invalid-input");if(f>le((2147483647-o)/l))Ce("overflow");o+=f*l;let d=p<=a?1:p>=a+26?26:p-a;if(f<d)break;let h=36-d;if(l>le(2147483647/h))Ce("overflow");l*=h}let u=t.length+1;if(a=Jr(o-c,u,c==0),le(o/u)>2147483647-r)Ce("overflow");r+=le(o/u),o%=u,t.splice(o++,0,r)}return String.fromCodePoint(...t)},Yr=function(e){let t=[];e=Gr(e);let n=e.length,o=128,r=0,a=72;for(let c of e)if(c<128)t.push(Wn(c));let i=t.length,s=i;if(i)t.push("-");while(s<n){let c=2147483647;for(let l of e)if(l>=o&&l<c)c=l;let u=s+1;if(c-o>le((2147483647-r)/u))Ce("overflow");r+=(c-o)*u,o=c;for(let l of e){if(l<o&&++r>2147483647)Ce("overflow");if(l===o){let p=r;for(let f=36;;f+=36){let d=f<=a?1:f>=a+26?26:f-a;if(p<d)break;let h=p-d,b=36-d;t.push(Wn(Hr(d+h%b,0))),p=le(h/b)}t.push(Wn(Hr(p,0))),a=Jr(r,u,s===i),r=0,++s}}++r,++o}return t.join("")},E0=function(e){return Wr(e,function(t){return x0.test(t)?Xr(t.slice(4).toLowerCase()):t})},$0=function(e){return Wr(e,function(t){return w0.test(t)?"xn--"+Yr(t):t})},I0={version:"2.3.1",ucs2:{decode:Gr,encode:C0},decode:Xr,encode:Yr,toASCII:$0,toUnicode:E0};Qr.exports=I0});import{spawn as Lp}from"node:child_process";import{chmodSync as Up,mkdirSync as Fp,readFileSync as Mp,rmSync as Kp,writeFileSync as Vp}from"node:fs";import{homedir as qp}from"node:os";import{dirname as Bp}from"node:path";import{createInterface as Hp}from"node:readline/promises";import{Resolver as kp}from"node:dns/promises";var Zn=["pending","verified","at_risk","lapsed","expired","transferred","abandoned"];var Ln=["transferred","abandoned"],Cr=["CHECK_PASSED","CHECK_FAILED","CHALLENGE_EXPIRED","TOKEN_ROTATED","RECORD_MISSING","GRACE_ELAPSED","SUPERSEDED_BY_OTHER_ACCOUNT","ABANDONED"],Ar=[...Cr,"CLAIM_CREATED","OWNERSHIP_TAKEN_OVER","OWNERSHIP_RACE_LOST","ILLEGAL_TRANSITION","DOMAIN_CONNECT_STARTED","DOMAIN_CONNECT_APPROVED","DOMAIN_CONNECT_CANCELLED","SHARE_CREATED","SHARE_OPENED"],Er=["verified","propagating","mismatch","not_found","lookup_error"],Ut=["lookalike_character","truncated","extra_quotes","extra_whitespace","wrong_prefix","stale_token","different_token"],Ft=["nothing_at_name","host_doubled","wrong_name","not_at_authoritative","cname_at_name","nxdomain_zone"],Un=["timeout","servfail","refused","network","bad_response","no_nameserver_address"],$r=["user","schedule","system"],Ir=["user","system"],Or=["TXT","NS","SOA","CNAME","A","AAAA"],Pr=["NOERROR","NXDOMAIN","SERVFAIL","REFUSED","OTHER"],Tr=["google","cloudflare"],Dr=["empty","invalid_characters","label_too_long","too_long","ip_address","reserved_tld","public_suffix","single_label"],Rr=["test","example","invalid","localhost","local","internal","arpa"],Mt=["godaddy","cloudflare","namecheap","route53","vercel","ionos","squarespace","hostinger","wix","porkbun","google_cloud_dns","cpanel","unknown"];var Nr=["check_now","wait","new_code","none"];var qe="_prufy-challenge",Q="prufy-domain-verification=";var jr=8000;var Zr=280;var Kt=(e)=>({ok:!0,value:e}),Vt=(e)=>({ok:!1,error:e});function ue(e){throw Error(`Unhandled case: ${JSON.stringify(e)}`)}var ff=new RegExp("^acct_[a-z0-9-]{1,64}$"),i0=new RegExp("^clm_[a-z0-9-]{1,64}$"),hf=new RegExp("^chl_[a-z0-9-]{1,64}$"),gf=new RegExp("^chk_[a-z0-9-]{1,64}$");function Lr(e){return i0.test(e)?e:null}var Ur="abcdefghijklmnopqrstuvwxyz234567",s0=16,c0=26,vf=new RegExp(`^[a-z2-7]{${c0}}$`);function u0(e){let t=0,n=0,o="";for(let r of e){n=n<<8|r,t+=8;while(t>=5)o+=Ur.charAt(n>>>t-5&31),t-=5;n&=(1<<t)-1}if(t>0)o+=Ur.charAt(n<<5-t&31);return o}var l0=(e)=>e;function Fr(e=(t)=>crypto.getRandomValues(t)){let t=new Uint8Array(s0);return e(t),l0(u0(t))}var Fn=(e)=>`${qe}.${e}`,Mr=(e)=>`${Q}${e}`;function qt(e,t){return{doubledHost:`${Fn(e)}.${t}`,apexes:e===t?[e]:[e,t],withoutUnderscore:`${qe.slice(1)}.${e}`,zoneLevelChallenge:e===t?null:`${qe}.${t}`}}var be=(e)=>e.startsWith("authoritative:"),Mn=(e)=>`authoritative:${e}`;var Kn=(e)=>e.error===null&&(e.rcode==="NOERROR"||e.rcode==="NXDOMAIN"),Vn=(e,t)=>e.answers.includes(t);function d0(e){if(e.error!==null)return e.error;if(e.rcode==="SERVFAIL")return"servfail";if(e.rcode==="REFUSED")return"refused";return"bad_response"}var Kr=(e)=>e.map((t)=>({resolver:t.resolver,error:d0(t)})),rt=(e)=>[...new Set(e.map((t)=>t.resolver))];function p0(e,t){let n=Array.from({length:t.length+1},(o,r)=>r);for(let o=1;o<=e.length;o++){let r=n[0]??0;n[0]=o;for(let a=1;a<=t.length;a++){let i=n[a]??0,s=n[a-1]??0;n[a]=Math.min(i+1,s+1,r+(e[o-1]===t[a-1]?0:1)),r=i}}return n[t.length]??0}function m0(e,t){let n=Math.min(e.length,t.length);for(let o=0;o<n;o++)if(e[o]!==t[o])return o;return n}var f0=(e)=>e.replace(/\\?["']/g,""),h0=(e)=>e.replace(/\s/g,""),qn=(e)=>h0(f0(e));function Vr(e){return e.toLowerCase().replace(/rn/g,"m").replace(/vv/g,"w").replace(/[1il|]/g,"l").replace(/[0o]/g,"o").replace(/[5s]/g,"s").replace(/[2z]/g,"z").replace(/[8b]/g,"b").replace(/[69g]/g,"g").replace(/[uv]/g,"v").replace(/_/g,"-")}function g0(e,t,n){let o=t.slice(Q.length),r=qn(e);if(n.includes(e)||n.includes(r))return"stale_token";if(/["']/.test(e)&&r===t)return"extra_quotes";if(/\s/.test(e)&&r===t)return"extra_whitespace";if(!r.startsWith(Q)&&r.endsWith(o))return"wrong_prefix";if(r.length>0&&r.length<t.length&&(t.startsWith(r)||t.endsWith(r)))return"truncated";if(Vr(r)===Vr(t))return"lookalike_character";return"different_token"}function y0(e,t){let n=null,o=Number.POSITIVE_INFINITY;for(let r of e){let a=p0(qn(r),t);if(a<o)n=r,o=a}return n}function k0(e,t){let n=t.slice(Q.length),o=qn(e);return o.startsWith(Q)||o.includes(n)}function qr(e,t,n){if(n.zone.kind==="nxdomain")return{kind:"not_found",reason:"nxdomain_zone"};if(n.zone.kind==="lookup_failed")return{kind:"lookup_error",failures:n.zone.failures};let o=(d)=>e.filter((h)=>h.qname===d&&h.qtype==="TXT"),r=o(n.recordName),a=r.filter((d)=>be(d.resolver)),i=r.filter((d)=>!be(d.resolver)),s=a.filter(Kn);if(s.length===0)return{kind:"lookup_error",failures:Kr(a)};let c=s.filter((d)=>Vn(d,t));if(c.length===s.length){let d=i.filter((b)=>Kn(b)&&Vn(b,t));if(d.length>0)return{kind:"verified",seenBy:rt([...c,...d])};let h=i.filter(Kn);if(h.length===0)return{kind:"lookup_error",failures:Kr(i)};return{kind:"propagating",seenBy:rt(c),notYet:rt(h)}}if(c.length>0)return{kind:"propagating",seenBy:rt(c),notYet:rt(s.filter((d)=>!Vn(d,t)))};let u=y0([...new Set(s.flatMap((d)=>d.answers))],t);if(u!==null)return{kind:"mismatch",reason:g0(u,t,n.previousValues),found:u,expected:t,diffAt:m0(u,t)};if(s.some((d)=>d.cnameChain.length>0))return{kind:"not_found",reason:"cname_at_name"};let l=(d)=>d.answers.some((h)=>k0(h,t)),p=(d)=>d!==null&&o(d).some(l),f=qt(n.domain,n.zone.apex);if(p(f.doubledHost))return{kind:"not_found",reason:"host_doubled"};if(f.apexes.some(p)||p(f.withoutUnderscore)||p(f.zoneLevelChallenge))return{kind:"not_found",reason:"wrong_name"};if(i.some(l))return{kind:"not_found",reason:"not_at_authoritative"};return{kind:"not_found",reason:"nothing_at_name"}}var W={kind:"check_now",label:"Check now"},Bt={kind:"wait",label:"Checking automatically"};var Br={kind:"none",label:"Nothing to do"},at=(e)=>e.charAt(0).toUpperCase()+e.slice(1),Bn=(e)=>e.map((n)=>be(n)?n.slice(14):n==="google"?"Google Public DNS":"Cloudflare DNS").join(", ");function b0(e,t){let n=t.valueFieldLabel,o=`In ${t.name}`,r=`${o}, replace the ${n} with the one from the Copy button.`;switch(e.reason){case"lookalike_character":return{headline:"One character looks right but isn't the same",why:`Character ${e.diffAt+1} is “${e.found.charAt(e.diffAt)}” where the code has “${e.expected.charAt(e.diffAt)}”. Those are easy to mix up when a value is retyped.`,fix:r,action:W};case"truncated":return{headline:"Part of the value is missing",why:`We can see ${e.found.length} of its ${e.expected.length} characters, so it got cut off on the way in.`,fix:`${o}, paste the whole ${n} again using the Copy button.`,action:W};case"extra_quotes":return{headline:"The value has quotation marks in it",why:"DNS is storing the quotation marks as part of the value, so the code doesn't match yet.",fix:t.quotesTxt?`${o}, keep one pair of quotes around the ${n} and remove any others.`:`${o}, remove the quotation marks from the ${n}.`,action:W};case"extra_whitespace":return{headline:"The value has an extra space in it",why:"A space or line break came along with the value, and DNS keeps it exactly as saved.",fix:r,action:W};case"wrong_prefix":return{headline:"The start of the value is different",why:"We can see your code, but it needs prufy-domain-verification= right in front of it.",fix:`${o}, paste the full ${n}, including the part before the equals sign.`,action:W};case"stale_token":return{headline:"This is the code from an earlier attempt",why:"Each new code replaces the one before it, so the older one no longer counts.",fix:r,action:W};case"different_token":return{headline:"We found a different value at this name",why:"The record is at the right name, but it doesn't hold the code for this attempt.",fix:r,action:W};default:return ue(e.reason)}}function v0(e,t){let n=t.hostFieldLabel,o=`In ${t.name}`;switch(e.reason){case"nothing_at_name":return{headline:"We can't see the record yet",why:`New records usually appear within a few minutes. We asked ${t.name} directly and it doesn't have this one yet.`,fix:`${o}, add the TXT record below and save it.`,action:W};case"host_doubled":return{headline:`Your domain is in the ${n} twice`,why:at(`${t.name} adds your domain to the ${n} automatically, so the record ended up under a name with the domain repeated.`),fix:`${o}, change the ${n} to the one shown below.`,action:W};case"wrong_name":return{headline:"The record is saved under a different name",why:"We found the value close by, but not at the exact name we check.",fix:`${o}, change the ${n} to the one shown below.`,action:W};case"not_at_authoritative":return{headline:at(`${t.name} is in charge of this domain's DNS`),why:`Public DNS shows the record, but ${t.name}'s own servers don't have it. Records only count where the nameservers point.`,fix:at(`Add the record at ${t.name}, using the details below.`),action:W};case"cname_at_name":return{headline:"A CNAME is using this name",why:"A name with a CNAME can't also hold a TXT record, and the CNAME's target doesn't have the code.",fix:`${o}, delete the CNAME at this name, then add the TXT record.`,action:W};case"nxdomain_zone":return{headline:"We can't find this domain in DNS yet",why:"A newly registered domain usually appears within an hour. Right now public DNS has no nameservers for it.",fix:"Confirm the domain is registered and has nameservers set at your registrar.",action:W};default:return ue(e.reason)}}function Hn(e,t){switch(e.kind){case"verified":return{headline:"Domain verified",why:at(`${t.name}'s servers and public DNS both show your record.`),fix:"Keep the record in place. We re-check it daily.",action:Br};case"propagating":return e.notYet.some(be)?{headline:`Usually a few minutes: ${t.name} is still updating its servers`,why:`${Bn(e.seenBy)} has the record, but ${Bn(e.notYet)} doesn't yet.`,fix:"Nothing to do. We'll keep checking automatically.",action:Bt}:{headline:"Usually a few minutes: public DNS is catching up",why:at(`${t.name} has your record. We're waiting on ${Bn(e.notYet)} to see it.`),fix:"Nothing to do. We'll keep checking automatically.",action:Bt};case"mismatch":return b0(e,t);case"not_found":return v0(e,t);case"lookup_error":return{headline:e.failures.some((o)=>be(o.resolver))?`We couldn't reach ${t.name}'s servers`:"We couldn't reach public DNS",why:"This usually clears within a few minutes, and nothing you did caused it.",fix:"Nothing to do. We'll keep trying automatically.",action:Bt};default:return ue(e)}}var st=o0(ea(),1);function O0(e,t){if(e.endsWith(t))return e.length===t.length||e[e.length-t.length-1]===".";return!1}function P0(e,t){let n=e.length-t.length-2,o=e.lastIndexOf(".",n);if(o===-1)return e;return e.slice(o+1)}function T0(e,t,n){if(n.validHosts!==null){let r=n.validHosts;for(let a of r)if(O0(t,a))return a}let o=0;if(t.startsWith("."))while(o<t.length&&t[o]===".")o+=1;if(e.length===t.length-o)return null;return P0(t,e)}function D0(e,t){return e.slice(0,-t.length-1)}var Gn=/[\t\n\r]/g,Jn=!1;function ta(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function na(e,t,n){let o=n-t,r=e.charCodeAt(t)|32;if(o===2)return r===119&&(e.charCodeAt(t+1)|32)===115?1:0;else if(o===3){let a=e.charCodeAt(t+1)|32,i=e.charCodeAt(t+2)|32;if(r===119&&a===115&&i===115)return 1;if(r===102&&a===116&&i===112)return 1;return 0}else if(o===4){let a=e.charCodeAt(t+1)|32,i=e.charCodeAt(t+2)|32,s=e.charCodeAt(t+3)|32;if(r===104&&a===116&&i===116&&s===112)return 1;if(r===102&&a===105&&i===108&&s===101)return 2;return 0}else if(o===5)return r===104&&(e.charCodeAt(t+1)|32)===116&&(e.charCodeAt(t+2)|32)===116&&(e.charCodeAt(t+3)|32)===112&&(e.charCodeAt(t+4)|32)===115?1:0;return 0}function it(e,t,n=!1){let o=0,r=e.length,a=!1,i=!1;if(Jn=!1,!t){if(e.startsWith("data:"))return null;while(o<e.length&&e.charCodeAt(o)<=32)o+=1;while(r>o+1&&e.charCodeAt(r-1)<=32)r-=1;if(e.charCodeAt(o)===47&&e.charCodeAt(o+1)===47)o+=2;else{let y=e.indexOf(":/",o);if(y!==-1){let v=na(e,o,y);if(v===1){i=!0,o=y+2;while(e.charCodeAt(o)===47||e.charCodeAt(o)===92)o+=1}else if(v===2){i=!0,o=y+1;let C=0;while((e.charCodeAt(o)===47||e.charCodeAt(o)===92)&&C<2)o+=1,C+=1;if(C<2)return null}else{for(let C=o;C<y;C+=1){let z=e.charCodeAt(C)|32;if(!(z>=97&&z<=122||z>=48&&z<=57||z===46||z===45||z===43)){let F=e.charCodeAt(C);if(F===9||F===10||F===13)return it(e.replace(Gn,""),t,n);return null}}if(e.charCodeAt(y+2)===47)o=y+3;else return null}}else if(e.charCodeAt(o)!==91){let v=-1;for(let C=o;C<r;C+=1){let z=e.charCodeAt(C);if(z===9||z===10||z===13)return it(e.replace(Gn,""),t,n);if(z===58){v=C;break}if(z===47||z===92||z===63||z===35)break}if(v!==-1){let C=!1;for(let z=v+1;z<r;z+=1){let F=e.charCodeAt(z);if(F===47||F===92||F===63||F===35)break;if(F===64){C=!0;break}}if(!C){let z=!0,F=v+1;for(;F<r;F+=1){let A=e.charCodeAt(F);if(A===47||A===92||A===63||A===35)break;if(A<48||A>57){z=!1;break}}if(F===v+1)z=!1;if(!z){let A=na(e,o,v);if(A===0){let _=!1;for(let H=v+1;H<r;H+=1){let ke=e.charCodeAt(H);if(ke===47||ke===92||ke===63||ke===35)break;if(ke===58){_=!0;break}}if(!_)return null}else if(i=!0,o=v+1,A===2){let _=0;while((e.charCodeAt(o)===47||e.charCodeAt(o)===92)&&_<2)o+=1,_+=1;if(_<2)return null}else while(e.charCodeAt(o)===47||e.charCodeAt(o)===92)o+=1}}}}}let c=-1,u=-1,l=-1,p=-1,f=!1,d=n,h=o-1,b=-1;if(n&&o<r){let y=e.charCodeAt(o);if(!(ta(y)||y===46||y===95)||y===45)d=!1}for(let y=o;y<r;y+=1){let v=e.charCodeAt(y);if(v<64){if(v===47||v===35||v===63){r=y;break}else if(v===58){if(p===-1)p=y;l=y}else if(v===9||v===10||v===13)f=!0;else if(n){if(v===46){if(y-h>64||b===46||b===45)d=!1;h=y}else if(v<48||v>57){if(v!==45||b===46)d=!1}}}else if(i&&v===92){r=y;break}else if(v===64)c=y,p=-1;else if(v===93)u=y;else if(v>=65&&v<=90)a=!0;else if(n&&!ta(v))d=!1;if(n)b=v}if(f)return it(e.replace(Gn,""),t,n);if(c!==-1&&c>=o&&c<r)o=c+1;if(e.charCodeAt(o)===91){if(u!==-1)return e.slice(o+1,u).toLowerCase();return null}else if(l!==-1&&l>o&&l<r&&p===l)r=l;if(o>=r)return null;if(n&&d&&c===-1&&l===-1&&u===-1&&e.charCodeAt(r-1)!==46&&r-o<=255&&r-h-1<=63&&b!==45)Jn=!0}while(r>o+1&&e.charCodeAt(r-1)===46)r-=1;let s=o!==0||r!==e.length?e.slice(o,r):e;if(a)return s.toLowerCase();return s}function R0(e){if(e.length<7)return!1;if(e.length>15)return!1;let t=0;for(let n=0;n<e.length;n+=1){let o=e.charCodeAt(n);if(o===46)t+=1;else if(o<48||o>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function N0(e){if(e.length<3)return!1;let t=e.startsWith("[")?1:0,n=e.length;if(e[n-1]==="]")n-=1;if(n-t>39)return!1;let o=!1;for(;t<n;t+=1){let r=e.charCodeAt(t);if(r===58)o=!0;else if(!(r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70))return!1}return o}function j0(e){return N0(e)||R0(e)}var Z0=["test","localhost","invalid","example","example.com","example.net","example.org","local","onion","alt","home.arpa","ipv4only.arpa","resolver.arpa","service.arpa","6tisch.arpa","eap.arpa"];function L0(e){for(let t of Z0)if(e.endsWith(t)&&(e.length===t.length||e.charCodeAt(e.length-t.length-1)===46))return!0;return!1}function oa(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function ra(e){if(e.length>255)return!1;if(e.length===0)return!1;if(!oa(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-1,n=-1,o=e.length;for(let r=0;r<o;r+=1){let a=e.charCodeAt(r);if(a===46){if(r-t>64||n===46||n===45)return!1;t=r}else if(!(oa(a)||a===45||a===95)||a===45&&n===46)return!1;n=a}return o-t-1<=63&&n!==45}function ua({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:n=!0,detectSpecialUse:o=!1,extractHostname:r=!0,mixedInputs:a=!0,validHosts:i=null,validateHostname:s=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:n,detectSpecialUse:o,extractHostname:r,mixedInputs:a,validHosts:i,validateHostname:s}}var U0=ua({});function F0(e){if(e===void 0)return U0;return ua(e)}function M0(e,t){if(t.length===e.length)return"";return e.slice(0,-t.length-1)}function la(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function K0(e,t,n,o,r){let a=F0(o);if(typeof e!=="string")return r;let i=!1;if(!a.extractHostname)r.hostname=e;else if(a.mixedInputs)i=ra(e),r.hostname=it(e,i,a.validateHostname);else r.hostname=it(e,!1,a.validateHostname);if(a.detectIp&&r.hostname!==null){if(r.isIp=j0(r.hostname),r.isIp)return r}if(a.validateHostname&&a.extractHostname&&r.hostname!==null&&!(i&&r.hostname===e)&&!Jn&&!ra(r.hostname))return r.hostname=null,r;if(t===0||r.hostname===null)return r;if(t===5&&a.detectSpecialUse)r.isSpecialUse=L0(r.hostname);if(n(r.hostname,a,r),t===2||r.publicSuffix===null)return r;if(r.domain=T0(r.publicSuffix,r.hostname,a),t===3||r.domain===null)return r;if(r.subdomain=M0(r.hostname,r.domain),t===4)return r;return r.domainWithoutSuffix=D0(r.domain,r.publicSuffix),r}function V0(e,t,n){if(!t.allowPrivateDomains&&e.length>3){let o=e.length-1,r=e.charCodeAt(o),a=e.charCodeAt(o-1),i=e.charCodeAt(o-2),s=e.charCodeAt(o-3);if(r===109&&a===111&&i===99&&s===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="com",!0;else if(r===103&&a===114&&i===111&&s===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="org",!0;else if(r===117&&a===100&&i===101&&s===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="edu",!0;else if(r===118&&a===111&&i===103&&s===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="gov",!0;else if(r===116&&a===101&&i===110&&s===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="net",!0;else if(r===101&&a===100&&i===46)return n.isIcann=!0,n.isPrivate=!1,n.publicSuffix="de",!0}return!1}var Pe=new Uint8Array([1,2,1,1,1,1,1,1,1,1,1,1,0,2,2,2,0,2,2,0,2,0,0,1,0,0,2,1,1,1,1,1,1,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,2,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,2,0,0,0,0,0,0,0,2,0,2,2,0,0,2,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,2,2,0,0,0,2,0,1,1,0,2,0,2,0,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,2,2,0,2,2,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,2,2,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,0,2,2,0,0,0,2,2,1,1,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,2,2,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,1,2,1,1,1,2,1,1,1,1,1,0,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0]),Wt=new Uint16Array([0,0,0,10,11,18,106,111,117,124,130,136,145,146,147,148,149,150,151,153,154,155,157,159,228,241,243,244,245,260,267,268,271,272,273,276,278,297,298,300,309,314,331,332,335,336,338,340,376,377,379,382,383,387,389,393,396,428,431,444,445,453,454,456,466,480,481,482,483,492,493,530,535,551,571,577,619,620,647,674,675,823,829,832,833,834,839,844,853,875,876,877,878,879,880,881,899,901,902,905,907,908,910,912,927,942,947,948,950,951,952,953,954,956,959,964,965,966,968,969,972,975,976,977,990,992,1004,1015,1023,1025,1065,1068,1072,1073,1075,1078,1089,1091,1101,1103,1109,1111,1112,1114,1117,1118,1119,1172,1174,1176,1196,1197,1198,1199,1201,1212,1243,1254,1255,1268,1278,1287,1295,1296,1301,1315,1326,1338,1350,1364,1365,1376,1410,1411,1412,1428,1444,1456,1529,1530,1532,1533,1569,1588,1589,1590,1591,1592,1595,1599,1602,1604,1638,1639,1647,1648,1649,1650,1651,1652,1654,1656,1658,1659,1663,1664,1665,1667,1669,1670,1672,1673,1674,1685,1687,1688,1692,1693,1696,1703,1704,1709,1713,1714,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1731,1732,1733,2193,2196,2197,2199,2206,2213,2223,2227,2238,2239,2240,2252,2253,2255,2257,2258,2265,2266,2268,2269,2271,2272,2273,2274,2275,2349,2351,2372,2373,2374,2376,2378,2379,2430,2431,2433,2440,2446,2456,2466,2519,2520,2521,2531,2545,2546,2549,2556,2557,2565,2567,2568,2569,2570,2581,2582,2583,2585,2586,2587,2596,2608,2614,2646,2650,2652,2653,2655,2656,2667,2668,2670,2678,2685,2691,2696,2697,2703,2706,2712,2719,2720,2727,2735,2736,2737,2775,2781,2796,2797,2802,2820,2851,2869,2871,2874,2882,2884,2891,2943,2967,2968,2969,2970,2971,2972,2973,2980,2981,2982,2983,2984,2985,2987,2988,2992,3072,3085,3086,3523,3527,3541,3593,3621,3643,3701,3723,3738,3801,3852,3890,3926,3951,4093,4139,4190,4209,4243,4258,4278,4308,4339,4362,4393,4423,4455,4482,4557,4579,4617,4627,4661,4680,4706,4748,4798,4824,4893,4894,4896,4919,4942,4978,5009,5026,5083,5096,5120,5149,5151,5185,5201,5229,5534,5543,5552,5559,5576,5580,5586,5625,5627,5634,5641,5650,5657,5658,5659,5671,5674,5689,5690,5699,5700,5709,5718,5724,5726,5727,5728,5765,5766,5768,5776,5783,5796,5800,5802,5803,5809,5816,5830,5840,5845,5853,5861,5867,5868,5872,5874,5875,5887,5959,5960,5961,5962,5964,5965,5968,5970,5973,5977,5978,5979,5985,5986,5987,5989,5991,5993,5994,5995,5998,6000,6003,6004,6006,6204,6211,6212,6213,6223,6228,6245,6259,6268,6269,6270,6274,6275,6277,6279,6285,6286,6289,6290,6292,6293,6294,7194,7197,7201,7219,7228,7231,7238,7239,7241,7242,7243,7245,7297,7298,7301,7302,7419,7420,7431,7442,7449,7452,7461,7462,7463,7478,7533,7725,7727,7728,7730,7735,7748,7763,7770,7779,7782,7785,7792,7800,7804,7805,7806,7820,7824,7833,7834,7835,7839,7874,7875,7893,7900,7908,7909,7914,7922,7966,7967,7973,7976,7988,7993,7994,7996,7998,8033,8034,8040,8047,8048,8057,8066,8081,8085,8086,8138,8139,8144,8145,8148,8150,8151,8152,8161,8175,8183,8197,8209,8210,8212,8214,8236,8247,8253,8254,8266,8278,8365,8377,8385,8388,8394,8419,8422,8423,8424,8425,8427,8430,8433,8444,8446,8448,8476,8551,8558,8562,8563,8572,8594,8595,8600,8601,8680,8682,8684,8693,8697,8703,8709,8715,8725,8730,8731,8749,8760,8765,8770,8780,8786,8790,8796,8802,10410,10411,10412,10419,10421]),Gt=new Uint8Array([3,3,3,3,3,3,3,3,5,8,8,2,2,3,3,3,3,3,8,5,5,5,5,5,3,3,5,5,9,12,19,8,19,8,11,9,9,8,7,7,6,8,9,16,10,7,7,11,8,6,6,9,7,11,7,14,4,4,4,4,4,4,10,7,6,6,6,6,10,10,6,10,10,22,11,9,10,10,10,9,10,8,7,7,7,8,21,13,11,11,9,10,9,13,10,8,8,9,12,9,7,10,7,7,13,7,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,8,6,3,3,3,3,3,3,2,5,3,3,3,7,2,2,2,2,2,2,3,3,3,1,1,7,8,5,2,2,7,2,2,1,4,1,11,9,9,5,5,8,5,5,5,5,5,5,5,3,3,3,3,3,5,11,9,9,13,7,14,7,6,6,6,7,6,6,6,6,6,6,10,7,11,9,4,4,4,4,4,6,6,6,6,13,6,8,7,10,9,9,7,9,8,9,8,7,10,6,9,8,10,10,7,8,1,9,10,12,12,12,10,9,9,10,10,9,9,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,4,3,3,3,7,4,4,4,3,3,6,7,3,4,1,2,2,2,6,1,2,2,2,2,2,12,5,3,8,9,13,4,4,13,9,9,11,7,3,12,9,2,2,2,3,3,3,3,3,8,2,2,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,3,7,10,15,15,7,15,20,15,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,9,10,14,14,14,13,13,14,9,9,9,9,9,9,7,8,6,8,8,6,8,13,8,8,6,13,8,11,13,8,6,13,8,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,9,9,9,10,14,14,11,13,13,9,9,9,9,9,9,2,6,9,2,2,3,3,3,3,3,3,3,3,3,4,4,4,2,3,3,3,3,3,3,7,7,2,3,2,2,5,3,3,3,3,3,3,4,2,2,2,2,2,2,3,3,3,3,3,3,3,4,5,7,4,2,2,12,8,10,8,10,7,18,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,2,3,3,3,5,5,3,8,8,6,8,6,6,4,6,7,7,7,10,11,2,5,5,3,3,3,3,3,3,5,5,6,11,10,7,7,7,4,4,4,2,3,3,3,3,3,2,2,7,5,5,3,3,3,3,3,3,3,3,7,7,7,11,7,6,9,6,6,8,10,8,6,8,13,4,4,4,4,4,10,8,11,8,8,8,10,10,7,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,10,13,7,8,7,11,8,8,6,9,8,8,6,6,6,8,8,6,6,6,6,6,9,7,6,4,4,4,4,4,4,4,6,6,6,9,7,8,10,8,8,2,3,3,3,3,3,2,8,9,9,2,2,2,3,3,3,2,3,3,3,9,2,2,3,3,3,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,5,5,3,5,4,2,3,2,4,3,9,2,2,2,2,2,5,5,3,8,8,13,6,10,9,4,7,9,11,2,3,7,3,3,4,1,3,4,2,9,3,3,12,5,3,7,10,10,7,4,4,6,14,7,9,7,13,2,2,2,2,2,2,3,3,3,3,3,8,15,4,4,2,3,3,3,7,4,9,9,2,3,3,3,5,3,2,2,7,2,7,6,6,7,2,4,2,2,2,2,2,2,8,8,8,9,5,2,3,3,3,3,3,3,10,7,4,4,4,4,3,4,2,3,3,3,3,3,10,7,4,4,4,4,2,3,3,3,3,10,7,4,4,4,4,3,9,6,6,6,9,13,9,2,2,2,8,7,9,5,3,3,3,5,5,13,12,9,10,7,8,7,6,8,6,11,12,7,10,4,4,7,8,11,6,7,9,8,7,10,8,9,15,7,8,5,4,7,2,3,3,3,2,14,10,2,14,10,2,14,3,9,13,13,10,14,16,17,11,2,14,2,14,3,9,13,10,14,16,17,11,14,10,14,2,7,3,10,7,14,10,2,14,10,9,9,17,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,10,10,10,12,9,4,10,10,11,8,8,8,7,9,5,3,3,3,3,3,3,3,3,5,8,4,4,4,4,4,4,6,16,3,3,14,3,14,2,14,9,13,10,10,14,16,17,11,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,9,9,9,9,9,9,2,14,9,13,10,10,14,16,17,11,6,14,2,14,9,17,13,10,10,14,17,16,17,11,6,2,14,9,13,10,14,17,16,17,11,2,14,9,13,10,14,16,17,11,2,14,9,13,10,17,16,11,17,2,14,10,19,7,2,14,9,13,10,19,10,7,14,17,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,10,10,14,17,16,17,11,6,2,14,9,13,10,10,14,17,16,17,11,6,2,14,9,13,17,13,10,10,14,17,16,17,11,6,3,2,14,9,13,10,10,14,16,17,11,6,9,10,12,14,14,14,12,12,12,12,12,14,14,14,10,10,10,14,9,9,9,9,14,14,14,13,13,14,9,9,9,9,9,9,4,11,2,14,9,13,17,13,10,19,10,7,14,17,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,17,16,17,11,6,2,14,9,13,10,19,7,14,17,16,17,11,2,9,10,10,7,17,3,3,12,12,16,15,15,12,14,14,14,20,20,13,12,12,12,12,12,12,20,25,14,14,12,12,10,10,10,10,14,9,9,9,25,4,9,17,10,7,14,16,21,13,13,14,20,14,13,17,24,9,12,13,25,13,21,20,17,9,9,9,9,9,9,12,17,4,4,9,9,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,9,10,14,14,14,13,13,14,9,9,9,9,9,9,9,10,14,12,12,14,14,10,9,9,9,10,14,14,14,9,9,9,9,2,1,5,8,7,11,11,1,3,3,3,5,3,3,4,8,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,14,9,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,10,2,2,6,7,6,2,3,2,3,6,2,7,6,10,7,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,2,2,13,2,2,2,2,6,2,8,12,2,7,7,6,8,10,12,2,2,2,3,3,13,2,2,3,3,6,7,6,4,5,6,3,3,3,3,4,16,8,5,4,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,17,12,8,9,7,17,17,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,5,5,5,7,12,14,8,12,8,10,12,9,11,7,9,7,10,7,13,9,7,12,8,17,7,7,16,10,13,13,8,10,10,14,17,7,16,16,15,8,10,10,12,17,17,7,17,14,7,10,17,8,7,7,7,8,15,15,7,14,10,10,10,11,11,7,7,13,8,10,7,16,7,8,7,14,17,12,10,11,21,8,9,7,13,9,8,6,13,6,12,7,6,13,10,10,10,8,18,9,17,13,10,12,6,13,6,11,8,13,10,13,18,13,11,13,8,16,7,10,8,16,12,10,8,8,14,11,8,15,8,8,7,7,12,7,8,9,14,15,8,9,10,9,15,7,8,8,12,13,9,10,15,13,7,10,10,20,7,6,9,6,6,14,11,14,11,12,9,10,16,16,12,7,11,28,8,11,10,7,21,8,7,9,4,4,4,17,7,8,6,9,6,6,13,6,6,6,6,18,20,14,8,11,12,9,10,13,15,15,19,8,9,12,7,10,16,12,9,9,9,14,12,11,10,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,14,18,7,8,11,7,7,8,8,13,7,7,7,11,15,13,11,7,8,15,11,7,8,18,14,13,18,15,10,12,12,9,7,11,11,8,7,10,8,14,12,10,18,7,10,9,7,8,13,10,14,10,8,8,23,7,7,11,12,12,17,7,7,11,11,17,16,16,7,8,11,14,14,8,10,7,7,16,16,13,9,11,9,15,15,11,11,7,7,14,7,9,7,7,16,10,13,10,11,14,7,11,10,11,7,11,10,11,15,11,15,10,12,10,14,13,11,11,12,13,10,7,13,10,16,12,21,15,9,10,10,7,11,14,17,7,7,8,11,13,12,8,15,14,14,8,17,12,10,10,7,9,11,7,10,7,11,18,7,11,7,12,11,8,8,14,12,7,8,15,3,7,7,5,2,9,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,5,3,3,3,3,3,3,4,4,3,3,3,3,3,3,5,11,6,4,7,10,7,7,11,1,10,2,2,3,3,3,3,3,3,3,3,5,7,3,5,6,3,3,5,2,2,5,3,4,13,11,3,3,6,3,5,14,2,2,3,8,2,2,12,5,18,5,3,3,3,16,5,5,5,10,7,13,12,13,9,12,14,19,9,9,21,9,9,10,6,9,6,15,10,6,12,8,6,10,15,4,4,6,6,9,9,12,16,14,23,7,7,7,14,9,7,7,11,14,10,7,10,10,10,12,6,11,10,13,11,15,11,7,12,10,3,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,3,7,1,5,2,2,2,5,5,5,5,3,3,3,3,3,5,5,10,9,11,8,7,12,8,9,7,6,13,11,6,13,7,9,9,4,4,4,4,4,6,10,7,8,13,8,8,9,14,7,8,10,7,7,7,9,6,9,7,2,12,5,3,3,13,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,4,4,4,4,4,4,4,4,4,9,3,3,3,3,3,3,3,3,3,3,4,2,2,2,5,3,3,3,3,3,3,3,3,4,4,1,7,6,4,12,3,3,3,3,3,8,7,3,3,3,3,3,3,4,4,11,15,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,2,2,12,5,5,3,15,13,8,11,2,2,3,3,3,3,3,3,3,3,4,4,5,3,3,3,3,4,18,2,12,5,3,3,3,3,3,5,16,8,8,9,6,6,4,4,4,4,31,6,6,10,11,21,10,9,7,10,7,7,2,4,4,4,4,6,5,3,3,4,3,3,3,3,3,3,3,3,3,6,6,6,2,2,2,5,3,3,3,7,7,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,8,2,3,3,3,3,3,5,9,11,3,3,3,3,4,4,3,3,3,3,3,5,10,9,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,11,10,10,10,10,10,11,10,11,10,11,10,9,9,11,3,3,3,3,3,3,5,3,7,8,8,7,6,6,11,4,4,4,7,8,9,9,2,3,7,4,4,2,5,5,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,2,2,5,5,5,5,5,3,3,5,5,5,7,7,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,8,8,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,6,9,12,3,7,10,7,2,2,3,3,3,3,3,4,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,6,6,8,6,7,4,4,4,4,4,4,6,7,5,5,20,19,8,10,9,7,10,6,8,11,6,6,6,6,13,12,8,6,7,14,11,9,2,5,3,6,2,3,2,2,2,2,2,2,2,5,4,3,7,6,4,7,4,3,6,4,7,2,7,7,7,5,5,5,5,3,3,3,3,3,3,3,3,3,5,9,10,10,11,7,8,20,7,8,9,8,12,6,6,6,8,9,8,12,6,6,8,13,10,12,6,6,7,7,9,6,4,4,4,4,4,4,10,6,6,6,7,14,11,10,7,8,10,8,11,14,11,11,9,7,9,8,11,9,17,10,9,2,2,2,9,3,3,3,3,15,14,9,5,5,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,12,22,19,17,18,18,19,21,7,16,16,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,7,16,11,11,7,7,7,7,17,7,8,12,15,9,19,7,19,8,21,11,12,19,14,22,7,7,7,7,7,7,7,7,7,7,7,16,16,19,24,12,7,14,7,12,7,8,10,10,13,7,12,12,7,7,10,18,15,12,16,7,14,12,17,10,16,17,12,17,25,7,7,7,13,6,9,6,9,18,6,6,11,20,10,6,6,6,6,6,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,11,15,13,19,17,21,7,18,8,13,13,8,12,8,6,6,13,6,15,15,16,6,6,16,6,6,6,14,6,18,6,6,6,17,18,9,13,15,8,19,8,15,15,18,14,16,4,4,4,4,4,4,4,4,4,4,4,4,6,11,10,11,6,21,23,12,17,12,11,14,13,22,15,15,11,12,14,12,7,12,8,12,14,12,18,10,8,16,19,17,12,14,15,8,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,20,14,8,8,15,20,8,19,21,9,8,13,12,13,15,11,8,11,9,9,8,11,8,21,14,21,15,15,13,7,19,7,7,7,7,7,7,16,12,17,18,7,7,11,11,7,9,9,2,2,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,3,3,10,10,7,9,7,7,7,6,8,6,6,6,6,6,6,6,7,6,8,6,6,9,7,7,7,4,4,4,4,4,4,4,4,8,9,8,7,8,7,8,10,7,5,5,5,5,5,5,3,9,7,7,8,6,6,6,6,6,6,6,6,9,6,6,9,11,13,7,8,9,9,5,5,5,7,8,6,6,6,6,6,6,6,7,8,9,7,10,9,10,7,8,5,5,5,5,5,5,7,7,9,8,7,7,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,9,10,4,4,4,4,8,7,7,10,10,9,8,8,15,9,8,8,8,8,8,9,10,9,10,7,8,13,5,5,5,5,5,3,3,7,7,8,6,6,6,4,4,11,9,7,8,9,10,7,5,5,5,5,5,3,3,7,6,6,13,7,9,8,7,5,5,5,5,5,5,5,5,3,3,3,3,7,8,7,8,13,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,6,6,6,6,7,6,7,6,6,9,7,4,4,4,4,4,4,4,7,8,7,8,9,8,8,8,7,10,7,8,5,5,5,5,5,5,5,5,3,7,7,7,7,9,7,10,9,6,6,6,6,6,8,8,6,6,6,7,6,6,6,9,9,4,4,13,7,10,9,9,12,7,8,8,10,8,8,8,8,8,8,5,5,5,5,3,7,7,11,7,9,8,8,6,6,10,6,8,8,8,6,7,6,6,12,4,4,4,4,4,4,4,4,4,9,8,8,16,8,9,8,7,5,5,5,5,5,3,3,7,7,7,10,15,8,9,8,9,9,6,6,6,6,6,6,7,4,8,7,8,8,7,8,11,8,5,5,5,5,5,3,7,7,6,11,16,7,6,4,4,4,4,9,9,8,8,8,13,12,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,7,8,8,9,13,7,7,7,9,8,8,9,12,7,12,7,12,8,7,10,12,9,9,6,6,8,8,6,6,6,6,6,6,6,9,8,9,11,8,6,6,6,6,6,12,7,6,6,6,9,7,7,6,6,6,6,6,11,9,6,6,6,6,6,7,9,4,4,4,4,4,4,4,4,9,9,9,9,7,7,7,7,7,11,7,7,8,8,8,8,8,8,9,8,9,9,7,7,11,11,7,12,8,8,8,8,8,7,8,8,8,8,8,13,12,8,8,8,8,7,7,7,9,5,5,5,5,5,5,5,3,3,7,7,11,7,8,8,8,6,6,6,6,6,6,6,6,6,6,6,10,11,6,7,9,4,4,4,4,4,4,9,9,8,9,8,8,8,7,7,5,5,5,5,5,5,5,5,5,5,3,3,11,7,7,7,9,6,6,11,8,10,6,6,6,12,8,8,7,6,6,8,7,4,4,4,4,4,4,4,4,9,10,9,9,8,10,9,11,8,5,5,5,7,6,6,8,7,4,4,4,4,8,7,7,8,7,8,8,5,5,5,5,7,7,8,8,8,6,6,6,6,6,10,8,9,13,6,7,6,6,8,7,8,4,4,4,4,11,8,8,8,10,5,5,8,7,8,13,8,7,6,8,6,9,7,8,7,5,5,5,5,5,5,3,3,7,8,9,6,4,8,10,10,8,12,9,13,2,7,5,5,5,5,5,7,7,10,6,6,6,6,6,6,6,8,4,4,9,8,8,8,14,8,8,8,9,8,5,5,5,5,5,3,3,9,6,6,6,6,10,12,6,6,6,6,6,6,6,4,4,4,4,11,8,7,8,8,8,5,5,3,3,3,3,7,7,6,8,6,8,11,7,6,6,6,7,4,8,11,9,10,5,5,5,3,3,3,7,7,8,9,8,15,9,6,6,6,6,6,6,11,11,4,4,4,4,4,7,9,9,10,8,7,5,5,5,5,5,5,3,3,8,6,6,6,6,6,6,6,6,6,9,7,4,4,4,4,4,9,9,8,8,10,13,5,5,5,3,17,7,7,7,7,7,8,6,8,13,6,6,6,6,6,6,6,6,4,4,4,9,10,8,8,8,5,5,5,5,3,7,7,7,8,8,6,6,6,8,8,8,9,10,8,4,8,10,9,8,8,8,9,13,10,5,5,5,5,5,5,5,5,5,5,3,3,7,8,9,9,7,7,7,10,9,9,8,9,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,8,12,6,6,6,6,6,6,6,6,6,12,4,4,4,4,4,4,4,4,4,4,4,11,8,8,9,9,10,8,9,7,7,5,5,5,5,5,5,3,7,8,7,6,6,8,6,6,10,4,7,8,9,12,8,7,7,5,5,5,5,5,5,3,3,7,14,7,9,8,8,6,6,8,12,12,6,6,7,7,10,4,4,4,4,4,9,9,14,9,13,8,7,5,5,5,6,6,6,7,4,8,7,5,5,5,5,5,5,5,5,3,3,7,7,7,8,6,6,6,6,6,6,12,6,6,6,6,4,4,9,9,8,8,11,7,7,7,5,5,5,3,9,8,6,6,7,4,4,4,4,4,4,8,8,11,5,5,5,7,7,7,9,6,6,6,6,6,6,9,8,4,4,4,4,7,12,9,8,8,8,7,10,10,5,5,5,5,5,5,5,3,11,14,8,7,8,8,6,6,6,6,6,8,7,6,6,6,7,6,8,9,4,4,4,7,8,9,7,9,7,7,9,8,5,5,5,5,5,5,5,5,5,11,3,9,7,7,12,14,8,6,6,12,11,8,6,6,6,6,6,6,6,6,6,15,7,4,4,4,16,9,9,9,8,9,9,9,9,9,8,8,8,13,11,8,5,5,5,5,3,7,6,6,8,8,8,6,6,7,10,7,4,4,4,4,9,7,8,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,7,9,6,6,6,6,6,8,8,7,7,9,6,6,6,7,6,6,6,6,6,15,4,4,4,4,4,8,8,7,8,12,9,8,8,8,8,8,9,8,8,10,8,8,8,8,16,9,10,2,5,5,5,5,5,5,5,9,7,6,8,9,4,4,4,4,4,7,8,8,8,9,8,11,10,5,5,5,5,3,7,8,6,6,6,6,6,8,6,6,6,6,4,12,10,12,7,7,7,7,7,7,7,5,5,5,5,3,3,7,7,10,8,9,7,6,10,7,6,6,4,4,8,9,7,9,9,9,9,8,8,8,8,10,5,5,5,5,5,5,8,7,6,6,6,10,6,7,10,7,4,4,4,4,4,4,4,12,9,10,7,7,10,8,10,5,12,9,6,6,6,6,6,7,6,4,4,4,10,9,9,8,7,7,5,5,5,5,5,5,3,3,13,7,7,9,7,7,7,8,9,9,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,15,15,4,4,4,4,4,10,10,9,8,9,8,8,9,7,8,7,8,5,5,7,6,6,6,4,4,4,7,8,11,8,5,5,5,5,5,5,5,7,6,6,6,6,6,6,9,11,10,7,4,4,4,9,8,8,5,5,5,5,5,9,9,6,6,6,6,6,6,6,9,9,4,4,4,4,8,8,8,9,9,8,8,8,13,2,4,2,7,5,5,5,5,5,5,9,9,6,6,6,6,10,8,8,8,6,6,6,4,4,9,8,10,8,9,8,8,8,9,8,8,5,3,3,3,11,6,6,6,7,6,6,6,4,4,9,8,5,5,5,5,5,3,11,8,6,6,6,6,6,9,7,4,4,14,10,9,8,12,8,8,8,11,15,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,10,10,7,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,3,3,3,7,11,7,7,11,11,7,8,9,10,7,7,9,9,9,9,7,7,10,8,13,8,8,8,8,11,10,6,6,8,10,11,14,14,6,6,6,6,6,6,9,11,7,7,6,8,12,11,11,6,6,10,6,6,6,6,6,10,7,7,6,6,11,6,6,6,11,8,9,7,6,10,11,9,10,11,7,11,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,6,6,8,9,10,9,6,6,6,10,6,6,6,6,11,10,11,10,9,8,7,7,7,7,11,14,8,10,9,9,8,8,7,11,8,8,8,11,11,10,10,9,10,8,11,10,8,11,9,12,8,10,8,11,8,9,9,11,11,10,11,13,8,7,8,8,9,7,8,8,8,8,7,8,2,2,2,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,8,6,4,4,4,11,7,11,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,3,3,3,3,8,7,7,8,8,4,8,7,7,7,9,7,8,9,8,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,4,5,5,3,3,8,8,6,9,4,4,10,7,3,3,3,2,5,3,3,3,3,3,3,3,3,3,3,3,3,4,3,2,2,2,3,3,3,3,3,4,10,2,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,2,2,3,3,3,5,2,4,2,6,2,2,9,5,5,3,3,3,3,3,3,3,5,5,5,9,8,7,9,6,6,11,4,4,4,4,4,4,4,4,6,6,7,7,11,8,8,6,5,11,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,6,4,4,4,4,3,3,3,3,5,7,2,3,3,3,3,3,8,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,2,3,3,3,3,3,6,3,3,8,10,3,4,4,1,1,1,1,1,1,1,8,9,10,7,7,1,14,18,13,18,13,10,10,16,13,18,16,13,16,18,13,22,16,16,16,14,21,16,9,14,16,9,9,14,10,10,14,12,14,19,12,11,18,13,17,15,15,15,15,16,14,13,19,18,15,19,18,12,18,12,11,20,14,15,10,17,17,16,19,20,21,15,13,16,15,15,15,1,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,3,3,5,5,4,4,4,4,4,2,7,7,8,12,3,4,5,1,3,4,4,10,4,3,3,3,8,7,7,2,2,2,2,2,2,2,2,2,12,9,20,7,5,5,5,9,13,5,5,5,5,5,3,3,3,16,5,5,5,13,7,8,8,11,8,7,9,7,11,12,9,9,8,8,11,10,14,7,12,10,11,13,7,9,11,17,17,14,13,7,8,7,10,10,7,16,13,7,8,17,12,9,8,6,7,10,6,6,12,6,8,10,8,8,8,6,8,6,14,6,6,6,13,6,10,6,6,7,14,8,6,6,10,11,10,9,9,7,7,6,6,6,9,9,7,9,10,9,13,12,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,6,8,9,10,9,7,10,10,8,7,8,7,10,12,9,8,15,8,7,8,8,7,7,15,13,7,10,9,14,18,16,7,24,7,8,10,11,16,8,14,7,9,9,9,13,19,14,15,14,11,7,13,9,10,7,13,9,10,11,12,8,9,2,3,5,8,7,4,4,15,10,5,3,3,3,3,3,5,4,4,4,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,4,2,12,5,3,8,10,15,6,7,2,3,2,5,5,12,2,5,5,5,5,2,2,5,5,12,9,5,2,2,9,5,5,12,12,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,12,5,8,8,9,5,5,5,8,19,7,16,15,14,9,9,9,9,7,11,11,11,7,14,10,10,5,5,5,5,5,5,5,5,5,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,12,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,12,9,9,12,12,12,15,7,11,7,14,11,18,13,8,18,15,18,12,14,12,8,8,8,8,9,9,9,12,7,10,10,8,8,12,12,12,7,12,12,9,7,7,7,7,7,8,15,12,9,10,10,7,10,10,13,11,10,9,22,11,9,8,8,8,8,8,13,18,13,9,15,19,9,7,7,10,7,7,7,11,8,13,17,7,7,10,10,10,7,20,16,7,7,7,7,7,7,11,21,12,12,13,11,14,16,8,8,13,11,7,7,13,7,7,14,15,15,6,6,6,6,6,6,6,6,6,6,13,10,18,6,6,6,6,6,6,6,6,6,11,8,8,12,12,11,11,8,12,9,9,9,13,13,9,9,9,9,9,9,6,10,12,6,6,6,6,17,11,7,7,7,7,14,14,12,6,7,7,6,6,15,10,13,10,6,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,9,15,13,6,12,12,6,19,11,10,7,7,16,8,19,17,9,9,9,9,9,6,6,6,10,8,16,8,6,6,9,6,6,6,6,6,6,6,6,8,8,8,6,7,6,6,6,6,6,6,6,6,6,6,6,14,6,6,6,6,20,6,9,6,14,9,9,9,6,9,8,8,12,9,8,8,8,8,7,8,12,7,8,8,8,6,8,6,6,6,6,6,6,6,9,8,8,6,6,13,9,12,13,12,14,13,12,11,11,6,8,8,8,6,13,12,11,11,12,6,11,12,11,13,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,13,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,18,6,12,13,13,13,9,10,15,9,12,6,6,6,6,6,6,6,6,9,15,10,9,10,13,9,19,8,18,17,10,10,8,8,6,6,6,6,6,6,10,14,8,16,16,9,8,15,8,8,10,12,14,7,7,8,8,7,7,7,7,8,13,13,11,9,9,9,12,10,17,8,11,9,7,7,14,8,14,14,7,7,7,7,7,7,14,7,7,7,7,7,10,10,8,14,7,7,7,7,8,8,8,8,8,17,9,7,15,7,8,12,7,9,14,7,7,7,9,13,8,14,7,16,18,13,15,14,12,13,10,15,9,7,7,7,10,13,15,15,9,9,9,9,19,11,7,11,11,13,8,8,8,8,7,12,19,17,9,9,13,7,7,7,9,7,7,7,12,13,15,10,8,8,14,15,12,13,13,8,12,14,7,11,7,14,15,13,12,8,8,8,8,11,13,15,15,8,13,12,8,8,8,13,10,16,14,11,8,8,12,12,9,15,15,12,12,13,8,8,9,12,13,9,8,8,8,8,8,8,8,8,8,8,8,11,12,11,7,14,7,13,13,13,12,18,16,7,12,11,10,10,15,9,9,9,21,7,7,7,11,16,8,8,11,11,7,7,7,7,7,19,7,7,7,7,7,7,7,7,7,12,8,9,12,14,11,9,9,9,22,12,3,3,4,8,8,15,4,2,2,5,5,3,3,3,3,3,3,6,6,4,4,4,12,7,10,2,3,3,3,3,3,3,3,6,7,3,7,5,14,4,4,7,8,10,4,1,3,3,6,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,2,2,5,3,4,2,2,2,2,2,2,11,5,5,5,11,5,5,3,5,5,5,5,11,14,13,9,11,9,12,8,11,11,8,11,16,9,9,7,10,9,12,8,15,6,7,6,6,13,10,8,11,8,6,6,6,12,16,6,11,7,8,9,18,6,6,9,4,4,6,13,6,6,6,6,8,8,9,16,7,7,14,7,8,8,8,7,7,7,7,7,7,15,13,7,10,7,7,10,12,16,15,7,9,9,14,11,11,10,9,10,8,12,7,8,7,7,10,12,7,12,8,7,2,3,3,3,3,3,3,3,3,3,3,5,3,3,5,5,5,10,4,8,7,10,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,7,4,5,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,8,2,2,2,8,12,7,7,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,7,11,9,8,8,8,7,8,9,7,7,9,7,7,7,10,7,7,10,9,10,6,6,6,6,6,6,15,7,8,9,9,8,6,6,10,9,6,8,13,9,7,6,6,6,6,6,6,12,6,6,7,6,7,6,6,6,10,10,7,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,14,6,6,7,7,9,6,6,6,6,9,9,8,9,10,9,8,9,12,7,7,7,8,7,10,12,11,9,10,7,7,7,9,10,10,8,12,9,7,7,9,8,8,8,10,7,7,8,9,9,7,7,7,8,2,4,6,3,4,2,3,3,3,3,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,3,3,3,3,3,3,3,3,5,8,6,4,7,3,3,3,3,3,3,3,12,3,3,3,3,3,3,4,4,2,3,5,3,4,7,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,6,4,3,4,2,2,2,5,3,3,3,3,3,5,4,4,4,4,7,6,8,9,2,2,2,2,3,3,3,5,7,2,3,3,8,7,7,2,2,8,5,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,7,7,6,10,6,9,7,11,4,6,8,8,7,8,4,5,5,5,5,3,3,11,8,9,6,6,8,7,4,4,7,8,7,2,2,3,3,3,3,4,3,3,3,3,3,3,3,3,7,2,2,5,3,3,2,3,3,3,3,3,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,12,5,5,3,3,3,5,10,12,6,15,4,6,6,7,14,9,3,3,3,3,3,8,2,2,3,5,5,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,7,3,3,2,9,8,5,5,3,3,3,5,5,7,7,6,6,10,6,8,6,8,9,7,4,4,4,4,7,6,6,7,7,10,9,8,11,8,3,3,3,3,3,4,4,2,3,3,3,3,3,7,6,2,5,6,7,6,4,8,9,11,2,2,3,3,3,3,3,3,3,2,2,5,3,3,3,3,3,9,9,6,4,8,7,7,5,9,8,6,2,8,7,8,5,5,5,5,5,3,3,3,16,8,7,7,7,8,7,7,7,7,9,6,9,6,10,7,7,7,6,10,8,9,11,11,8,4,4,10,8,8,6,9,6,11,8,8,8,15,7,8,9,5,3,3,3,3,3,5,2,2,3,8,9,10,3,2,2,2,2,2,2,3,6,4,2,2,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,11,5,3,3,3,3,3,3,3,3,6,7,4,4,2,3,3,3,3,3,3,3,3,12,7,4,12,4,6,5,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,3,4,4,11,10,6,4,6,10,8,3,3,3,3,3,3,3,3,5,4,4,4,2,2,2,2,2,2,2,2,5,3,4,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,5,5,5,5,5,5,3,3,3,3,3,3,3,3,7,8,8,7,13,12,10,10,8,8,7,7,9,12,11,6,6,8,8,9,7,7,7,10,15,10,4,4,4,4,4,11,8,8,9,7,9,14,14,12,2,2,2,2,2,2,2,3,3,3,3,3,12,5,5,5,11,10,7,9,3,8,7,3,15,13,11,4,4,2,2,2,19,7,5,5,3,3,3,3,3,3,3,5,22,18,6,14,17,4,4,19,16,18,2,3,3,7,2,3,2,3,3,6,4,2,3,3,2,5,3,3,3,3,3,3,3,9,9,2,3,2,2,2,3,3,3,5,7,14,7,7,12,9,13,6,11,6,10,9,7,7,8,12,12,8,8,8,10,7,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,5,8,10,7,8,11,8,12,9,4,14,7,7,9,13,2,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,3,3,3,3,5,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,3,2,3,3,3,3,5,2,2,2,2,5,5,5,5,3,3,3,3,3,3,3,3,3,7,7,7,7,7,8,8,8,8,8,12,9,8,8,9,8,6,17,6,6,6,8,8,6,6,6,6,6,6,6,6,6,6,6,7,4,4,8,8,9,9,9,7,7,7,7,7,7,7,9,9,9,7,8,8,8,10,7,13,10,8,9,3,3,5,13,3,3,3,3,3,7,7,6,6,10,13,11,11,8,8,9,8,9,9,10,10,10,11,10,10,13,13,16,15,11,12,9,9,10,9,11,10,9,9,14,7,8,3,10,7,7,3,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,6,7,2,2,3,3,3,3,3,3,3,3,4,11,6,7,4,6,2,2,3,3,3,1,3,3,3,3,3,3,6,4,4,2,2,2,3,3,3,3,4,4,6,6,6,6,5,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,11,6,10,9,12,7,7,11,14,9,7,12,3,3,7,12,11,12,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,5,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,3,10,3,3,3,11,3,5,9,11,8,12,14,9,7,8,7,7,11,11,7,7,10,9,8,10,9,7,7,7,7,7,7,8,8,7,11,8,8,8,7,7,10,8,7,13,12,7,17,10,8,8,11,7,11,11,14,7,11,7,8,6,9,20,8,7,9,16,7,10,6,11,10,8,9,7,16,11,11,9,8,9,8,8,8,11,8,15,8,8,9,7,8,8,11,10,7,5,7,10,10,15,7,7,7,8,7,8,8,10,11,10,10,10,11,11,7,8,6,8,8,8,10,6,8,6,6,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,16,6,15,6,7,11,11,7,9,10,11,13,10,6,16,8,10,12,11,6,6,6,6,6,6,6,10,6,10,7,7,7,11,7,11,6,6,6,6,6,6,17,7,7,6,6,12,22,6,6,6,6,6,8,6,6,6,6,7,6,6,5,6,6,8,11,6,9,14,11,9,11,7,7,8,6,6,6,8,10,9,6,6,6,6,9,7,6,6,6,6,6,15,6,4,4,4,6,4,17,8,11,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6,6,6,6,10,6,10,6,6,6,6,12,8,6,6,6,6,6,6,6,6,6,9,6,6,6,6,18,6,6,6,8,9,10,7,8,9,10,11,7,13,6,8,8,6,6,14,7,7,7,7,10,7,14,9,6,6,9,15,9,7,14,6,11,14,13,7,12,8,7,7,7,7,7,12,7,10,9,16,6,8,6,5,17,6,8,10,4,6,4,10,15,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,4,4,11,7,4,4,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,19,17,6,10,11,6,6,6,6,18,6,6,11,4,4,4,5,6,6,6,9,5,6,4,6,6,4,6,6,6,6,10,6,6,4,6,6,10,6,10,6,6,6,6,11,6,6,10,6,6,8,6,6,6,8,6,11,4,11,9,10,9,11,4,8,4,11,12,7,9,8,6,7,7,8,12,12,11,13,10,11,7,7,7,9,7,11,10,7,7,7,16,11,10,11,17,9,9,8,8,7,7,7,9,7,7,7,14,7,13,9,11,10,14,10,10,12,11,10,7,10,5,14,8,8,8,9,7,8,7,7,9,8,7,8,7,7,7,7,7,7,7,11,8,10,8,7,8,14,11,8,9,9,9,8,24,10,10,12,7,7,15,11,8,8,12,11,8,9,9,7,8,9,10,11,10,11,7,12,7,7,11,9,8,14,13,12,8,11,10,8,8,7,7,14,9,10,8,9,11,7,14,8,8,13,8,8,12,7,10,14,14,11,9,10,9,9,7,7,11,11,13,9,13,5,5,5,7,9,5,11,12,14,8,7,7,11,10,9,7,8,8,7,10,11,11,5,5,7,5,5,5,7,7,15,7,7,8,7,15,12,12,10,7,8,7,11,7,7,7,23,11,8,8,11,10,7,8,11,7,19,7,7,6,9,9,9,11,3,4,7,8,6,6,4,10,8,2,2]),aa=new Uint16Array([0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,17,1,1,1,12,1,12,1,12,13,1,1,1,1,12,1,12,1,1,1,1,1,14,21,1,1,1,1,1,1,1,19,12,1,1,1,1,1,1,1,1,20,1,1,1,16,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,1,1,22,1,1,1,1,12,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,1,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,12,12,12,12,1,32,0,0,0,1,1,1,1,35,34,1,1,1,1,1,33,1,1,1,1,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,0,12,1,1,1,12,1,1,1,43,45,45,45,43,45,43,43,44,45,43,45,43,43,43,43,43,43,45,43,43,44,43,43,43,43,45,46,46,44,45,43,43,43,43,43,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,49,51,49,49,49,51,49,50,49,52,49,50,50,49,49,49,50,52,50,52,49,50,50,12,54,54,53,55,50,52,49,49,47,48,56,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,59,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,66,67,12,1,1,65,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,12,1,1,1,1,89,1,91,1,1,1,1,1,1,1,1,94,1,1,1,1,1,1,1,1,1,1,1,1,0,1,97,97,1,1,12,1,100,1,1,1,1,1,1,1,98,1,99,1,101,1,1,1,1,1,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,110,111,1,1,1,1,1,1,113,113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,121,122,1,1,1,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,126,123,125,120,1,124,1,1,114,1,1,1,1,117,1,127,1,1,1,1,1,1,119,1,108,1,109,1,12,128,106,112,1,1,1,1,1,107,115,1,12,12,12,118,116,1,1,1,1,1,1,0,0,0,0,1,12,12,1,1,1,1,1,12,134,1,1,1,1,1,1,1,1,1,1,1,12,136,1,1,1,1,1,1,1,1,137,138,12,12,135,133,45,45,140,49,49,139,142,141,1,1,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,1,0,144,132,1,0,1,1,12,12,1,1,1,1,1,0,0,0,0,0,0,0,1,148,147,20,1,1,12,12,1,20,12,12,1,1,1,1,1,134,1,1,152,1,1,1,1,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,136,1,1,152,1,1,1,1,153,1,1,1,134,1,1,1,152,1,157,1,1,1,153,1,1,134,1,1,1,157,1,1,1,1,1,134,1,1,1,1,1,1,1,1,134,1,1,157,1,1,157,1,1,1,1,1,1,1,163,1,1,1,152,1,1,157,1,1,1,153,1,1,163,1,1,1,1,1,1,1,1,1,1,136,1,1,152,1,157,1,1,1,153,1,1,134,1,1,152,1,157,1,1,1,153,1,1,134,1,1,1,1,152,1,157,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,169,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,172,1,1,163,1,1,1,1,1,152,1,1,157,1,1,1,153,1,1,163,1,1,1,1,1,152,1,1,157,1,1,1,153,1,1,163,1,1,1,1,1,157,1,1,1,1,167,159,159,12,1,12,171,1,1,1,1,1,160,160,160,154,1,1,1,158,160,164,170,1,1,1,1,158,158,1,1,156,154,167,158,162,175,166,175,1,1,173,1,166,155,158,1,1,1,1,158,1,161,1,1,1,12,1,176,1,165,1,1,1,165,164,168,174,156,167,1,1,1,1,1,1,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,179,178,178,179,178,178,178,178,180,180,178,178,179,178,179,178,178,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,182,12,1,12,12,12,12,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,195,1,197,198,196,195,195,1,1,201,1,202,200,1,12,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,213,195,195,195,195,213,1,1,1,1,216,217,215,1,1,1,1,1,1,219,219,1,1,1,219,219,221,222,220,1,224,1,1,1,1,12,230,231,232,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,199,203,1,1,1,1,151,1,1,1,1,1,1,1,1,1,1,1,227,1,1,1,194,1,1,1,1,238,1,1,235,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,12,1,1,1,1,1,1,1,1,185,210,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,192,1,1,1,1,1,1,1,211,1,1,1,1,226,1,1,1,1,177,1,214,1,209,1,1,1,212,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,190,1,12,1,1,12,1,1,1,1,193,1,1,1,208,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,239,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,225,1,1,1,1,1,12,1,1,1,1,1,1,1,1,184,12,1,1,1,187,12,1,1,1,1,1,1,1,229,1,1,1,1,1,1,1,1,1,1,186,1,1,1,1,1,1,1,234,1,1,1,191,1,1,1,207,1,12,1,223,204,12,1,1,1,1,1,1,1,1,1,1,211,1,1,1,1,189,1,1,1,1,1,1,1,1,1,1,1,1,1,1,181,1,1,1,1,1,1,1,1,1,1,205,1,1,1,1,1,1,1,1,1,1,1,236,1,1,1,1,1,1,1,1,1,1,12,1,237,1,1,12,1,1,1,1,188,1,1,1,205,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,228,1,1,1,1,183,1,1,1,1,1,1,1,1,1,1,1,218,1,1,1,12,12,1,1,1,1,1,1,1,1,1,233,1,1,12,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,249,0,0,0,0,0,250,0,0,0,0,0,0,1,12,1,1,1,254,1,1,1,0,255,252,253,1,1,1,1,1,1,260,1,262,1,1,1,1,1,1,1,1,1,1,1,258,1,1,1,1,1,264,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,263,1,1,1,12,1,1,1,1,259,1,1,1,257,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,261,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,1,1,1,12,1,1,270,13,1,1,1,12,12,267,268,1,1,1,1,269,1,1,12,1,1,1,1,1,1,1,271,1,1,12,16,1,1,1,1,1,1,272,1,1,1,12,12,1,1,1,1,1,1,272,12,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,281,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,285,285,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,178,1,290,291,1,12,1,1,1,1,12,293,1,1,292,1,1,295,1,1,1,1,1,1,0,1,1,1,299,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,12,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,12,0,310,0,0,311,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,12,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,59,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,0,335,0,0,0,0,0,0,0,0,0,337,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,353,353,354,353,0,205,1,1,13,349,1,347,0,0,0,0,0,0,0,350,1,1,355,1,235,1,1,1,1,348,1,345,1,351,1,343,1,352,1,344,1,1,1,1,1,1,1,12,1,1,1,1,12,346,346,1,1,1,194,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,342,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,358,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,295,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,398,398,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,390,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,366,377,1,1,365,400,1,371,1,1,363,395,1,1,381,362,367,1,1,1,374,405,383,1,1,1,1,1,1,384,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,393,397,0,0,79,1,1,0,391,368,404,369,372,379,1,394,0,1,0,79,388,386,1,0,0,1,1,1,0,0,0,0,407,1,1,378,1,79,1,0,1,1,1,410,1,0,0,79,385,0,1,364,1,1,1,0,1,1,387,1,0,1,1,1,0,1,412,375,1,1,0,1,0,0,403,0,1,1,1,79,396,1,1,392,389,1,1,1,1,1,1,1,1,1,1,1,370,1,1,1,1,1,1,1,1,1,1,1,402,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,406,1,1,1,0,0,409,0,0,0,1,382,1,0,79,408,1,0,0,0,0,411,1,1,0,0,1,0,1,0,380,0,376,0,1,1,1,0,1,1,0,399,373,401,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,12,1,1,1,12,427,427,1,1,12,12,1,427,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,439,1,1,0,1,1,1,1,235,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,457,457,1,1,0,0,343,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,470,1,469,1,1,1,1,1,1,1,1,1,474,1,12,12,1,1,1,1,1,12,1,1,1,1,482,1,1,1,484,1,1,1,1,1,1,1,1,1,1,481,1,476,1,1,1,1,463,1,1,1,1,1,1,1,1,477,12,1,1,1,1,483,1,1,1,478,472,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,343,1,460,1,1,12,480,1,1,343,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,465,1,1,1,1,1,1,1,1,1,1,1,483,1,1,1,1,343,1,479,1,1,1,473,467,1,1,1,1,1,468,1,485,471,1,1,1,1,1,466,1,1,1,1,1,1,1,1,1,461,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,475,1,1,1,1,1,1,1,1,1,1,1,1,464,1,1,1,1,1,462,1,249,486,1,1,1,1,1,12,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,492,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,1,67,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,496,0,496,496,496,496,496,496,496,0,496,496,496,496,496,1,496,496,496,0,496,496,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,501,500,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,505,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,499,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,507,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,0,0,508,503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,502,0,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,497,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,506,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,1,1,1,1,1,1,1,518,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,229,229,1,522,1,1,1,521,1,1,1,1,517,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,519,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,523,1,1,520,1,1,1,1,1,1,1,1,398,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,524,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,535,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,12,1,537,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,12,12,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,59,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,556,1,1,1,1,1,1,1,557,1,1,1,1,1,1,1,555,1,1,12,1,1,559,268,1,1,12,12,1,1,12,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,563,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,569,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,574,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,107,1,1,12,1,1,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,579,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,144,1,1,1,257,1,1,12,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,604,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,249,1,354,1,1,1,1,1,1,1,1,1,0,0,609,1,1,1,1,0,611,0,79,0,610,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,1,0,1,0,0,0,0,0,0,618,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,613,613,0,617,615,613,613,613,613,613,619,613,613,623,613,613,613,613,613,613,613,613,613,613,620,617,613,613,617,613,613,613,613,613,613,613,613,613,613,613,613,613,615,613,613,613,613,613,621,613,613,613,613,613,613,0,0,0,1,622,1,1,1,1,616,1,1,1,1,1,614,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,627,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,12,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,64,307,333,438,565,0,4,68,265,283,309,334,360,414,440,0,529,549,566,629,9,0,60,88,424,436,456,607,0,527,548,562,644,0,30,6,0,491,530,634,592,70,0,7,312,284,415,493,443,568,79,630,0,608,336,445,495,9,105,315,536,6,30,0,338,79,417,79,513,10,6,131,277,302,0,645,539,0,595,0,63,6,6,280,95,2,459,425,437,628,0,6,0,6,313,103,6,593,531,570,0,494,416,300,314,8,71,104,631,573,418,339,327,446,146,74,317,577,540,633,596,361,356,509,6,75,149,11,0,278,552,578,597,544,582,602,643,36,6,289,322,359,331,247,30,558,585,247,41,245,294,323,332,433,450,511,301,0,73,594,0,430,444,326,79,276,79,0,612,576,534,319,448,79,419,413,0,0,0,9,587,603,246,0,451,434,561,546,605,647,85,247,42,324,422,452,601,0,541,320,303,79,244,80,28,416,30,6,420,357,330,636,624,554,581,543,0,287,81,30,432,449,0,30,453,0,248,625,547,9,435,454,247,277,86,251,626,606,589,512,455,423,279,256,87,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,652,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,441,0,0,0,0,0,0,0,0,82,0,129,0,0,84,580,0,0,0,0,0,0,0,27,0,583,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,441,0,0,0,0,533,0,286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,321,0,0,0,0,0,0,0,649,0,0,0,0,0,648,0,0,0,0,0,0,0,0,0,0,0,0,0,0,421,0,0,0,514,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,525,0,0,0,0,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0,526,0,0,0,0,0,0,0,0,0,0,0,0,0,0,298,308,0,0,0,0,0,560,304,0,0,0,0,0,0,0,0,0,0,0,0,0,542,0,0,0,0,0,0,0,0,0,0,0,487,0,0,0,341,0,0,0,0,0,0,282,0,0,0,0,0,0,23,0,0,0,0,600,0,0,0,0,632,551,0,0,0,0,273,0,0,0,0,0,0,489,0,0,510,0,0,0,0,0,61,0,0,0,296,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,275,0,0,0,0,0,306,642,0,72,0,0,0,0,0,0,0,0,0,651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,305,0,0,0,0,0,0,599,0,0,0,0,0,0,553,0,0,0,0,0,0,0,0,0,598,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,532,0,0,0,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,516,0,515,0,0,0,0,0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,316,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,567,0,0,0,0,0,0,0,0,325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,266,0,0,0,0,0,0,0,0,0,0,84,0,638,0,0,584,0,0,0,0,0,0,0,0,0,274,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,641,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,550,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,528,0,646,0,0,458,0,0,0,0,0,0,0,0,0,0,0,0,429,0,0,0,575,0,93,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,29,92,0,0,0,0,0,0,0,0,0,0,0,0,318,0,0,0,243,0,0,0,0,0,0,590,0,0,0,0,130,0,0,0,0,0,591,0,0,0,0,0,0,0,441,447,0,0,0,0,0,0,0,0,0,0,0,0,0,0,426,0,340,0,0,0,0,0,5,0,0,0,0,0,0,0,328,0,0,0,0,0,0,0,0,0,0,0,0,0,564,0,0,0,442,0,0,428,0,0,0,0,0,0,635,0,0,0,571,0,0,90,0,572,0,0,0,0,0,0,0,0,0,0,538,490,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,297,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,441,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,640,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,639,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,588,0,0,0,0,0,0,0,0,0,0,329,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,637,0,0,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,655,655,655,655,655,655,655,654,656]),Xn="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashretoolvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultexponyatnoopencrpplxzeaburwasmerframerzeropsrocketpreviewconvexmedusajsspritesonherculeseasypanelstreamlitglideossnowflakemesserliloginlinehackclubcodepennorthflankbase44corespeedleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasidwasantozqldorgcomvicasnactnetedugovnswtasconfcomairflowlambda-urltransfer-webapptransfer-webappairflowtransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxysiteacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugoviatvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporonline-serverobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetjenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algcanva-codemyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9consent-portals3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websitebedrock-agentcores3-object-lambdaexecute-apibedrock-agentcores3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prodbedrock-agentcores3-object-lambdaemrnotebooks-prodexecute-apis3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1eu-west-3eu-south-2ap-southeast-3eu-central-1ca-central-1ap-northeast-1ap-southeast-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5eu-west-1us-east-1ap-east-1sa-east-1csrframeservicesbuilderstg-builderdev-builder*ociocpocsazuregcpawsdemoinstanceeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appss3-websitekrkrobjectprivateobjectkrkrskrkrsobjectkrprivateobjectkr-privatecomputepaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalsgkrobjectstoragedesgkrusobjectkrkr-naverkr-naver-devkrprivatewebsiteobjectkr-naverkr-privatekr-naver-devjpjpkrjp4jp5s3-website-jpjpkrjp4jp5objectprivateobjecto365cloudstaticxendevapp001testcode-builder-stgplatformmediasiteprojedrydpagesjsx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogcursorusercontentservesarcasmapplinzisakuratanwixsitefin-ncloudstoragegov-ncloudstorageappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererclaudeusercontentlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urlnclouddyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3qualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebandlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musicianhosted-by-filessecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappncpstorageherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocaldatabricksappsreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedwafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisoramazonlightsailservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudncloudstorageis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidstoreorgcomnetintedudevnomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopipv64diskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-userhome64iservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjects*teamst3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultis-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackcodepenleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idptransfer-webappeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmfidymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcomcybllcpvtnetedugovtnxonlineschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamubacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinessschooltravelsupabasealumnigujaratfirminfoaeropostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebitwixstudioon-k3sicp0icp12038jeleqotolairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpusulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiasudsardegnatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardysud-sardegnafriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencexn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolverbano-cusio-ossolafriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovethipfscanvamypepethw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintoopencloudnohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2pnortheurope-01newzealandnorth-01southindia-01southcentralus2-01norwaywest-01eastus2-01westus2-01australiaeast-01italynorth-01israelnorthwest-01swedencentral-01westeurope-01centraluseuap-01taiwannorthwest-01uaecentral-01northcentralusstage-01israelcentral-01mexicocentral-01canadacentral-01austriaeast-01germanywestcentral-01francecentral-01ukwest-01denmarkeast-01polandcentral-01eastus-01westus-01swedensouth-01eastus3-01westus3-01brazilsouth-01centralus-01francesouth-01australiacentral-01westindia-01uaenorth-01jioindiacentral-01canadaeast-01belgiumcentral-01spaincentral-01koreacentral-01chilecentral-01qatarcentral-01westcentralus-01eastus2euap-01norwayeast-01southafricanorth-01brazilsoutheast-01germanynorth-01switzerlandnorth-01switzerlandwest-01japanwest-01southafricawest-01japaneast-01eastasia-01indiasouthcentral-01taiwannorth-01centralindia-01uksouth-01southcentralus-01northcentralus-01eastasiastage-01indonesiacentral-01australiacentral2-01australiasoutheast-01malaysiawest-01koreasouth-01southeastasia-01southeastus5-01northeastus5-01jioindiawest-01rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmapvpslon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-coipv64dynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabchrsndenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscaleoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvobuiltwithrocketnoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåreålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landtjieltexn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgaxn--hamary-fyadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátkarlsøyosterøyinderøyhamarøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znalebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangergieldakarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduxn--karlsy-fyahordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikeaudnedalnittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandulsteinxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangensuohkanxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikauenorgexn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradyntmpheremerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshoppriviqhslapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcloudcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentsurgebotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitpagewawamscofigma-govcaffeinefigmacanvasoltstscwputerbarsysupportchatgptsquareomniweopensocialcpanelplaycodenotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyaiabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovmyspreadshopadimono-ipbarsybarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libaws-govccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipdatabricksappscloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbwebcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworktheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp";var q0=653,B0=657,da=Pe.length,pa=Gt.length,ma=new Uint32Array(pa),Ht=new Uint32Array(pa),Yn=new Int32Array(da).fill(-1);for(let e=0,t=0;e<da;e+=1)for(let n=Wt[e];n<Wt[e+1];n+=1){ma[n]=t;let o=t+Gt[n],r=5381;for(let a=o-1;a>=t;a-=1)r=r*33^Xn.charCodeAt(a);if(Ht[n]=r>>>0,Gt[n]===1&&Xn.charCodeAt(t)===42)Yn[e]=n;t=o}var ve=-1,Qn=0,eo=0;function ia(e,t,n,o){if(Gt[e]!==o)return!1;let r=ma[e];for(let a=0;a<o;a+=1)if(Xn.charCodeAt(r+a)!==t.charCodeAt(n+a))return!1;return!0}function sa(e,t,n,o,r){let a=Wt[e],i=Wt[e+1];while(a<i){let s=a+i>>>1,c=Ht[s];if(c<t)a=s+1;else if(c>t)i=s;else{for(let u=s;u>=a&&Ht[u]===t;u-=1)if(ia(u,n,o,r))return u;for(let u=s+1;u<i&&Ht[u]===t;u+=1)if(ia(u,n,o,r))return u;return-1}}return-1}function ca(e,t,n){let o=t,r=e.length,a=5381;ve=-1;for(let s=e.length-1;s>=0;s-=1){let c=e.charCodeAt(s);if(c===46){let u=s+1,l=sa(o,a>>>0,e,u,r-u);if(l===-1)l=Yn[o];if(l===-1)return ve!==-1;if(o=aa[l],(Pe[o]&n)!==0)ve=o,Qn=u,eo=r;r=s,a=5381}else a=a*33^c}let i=sa(o,a>>>0,e,0,r);if(i===-1)i=Yn[o];if(i!==-1){if(o=aa[i],(Pe[o]&n)!==0)ve=o,Qn=0,eo=r}return ve!==-1}function H0(e,t,n){if(V0(e,t,n))return;let o=(t.allowPrivateDomains?2:0)|(t.allowIcannDomains?1:0);if(ca(e,B0,o)){n.isIcann=(Pe[ve]&1)!==0,n.isPrivate=(Pe[ve]&2)!==0,n.publicSuffix=e.slice(eo+1);return}if(ca(e,q0,o)){n.isIcann=(Pe[ve]&1)!==0,n.isPrivate=(Pe[ve]&2)!==0,n.publicSuffix=e.slice(Qn);return}n.isIcann=!1,n.isPrivate=!1;let r=e.lastIndexOf(".");n.publicSuffix=r===-1?e:e.slice(r+1)}var Rf=la();function W0(e,t){return K0(e,5,H0,t,la())}var Be=W0;var G0=253,J0=63,X0=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,Y0=/[^\u0000-\u007f]/,Q0=/^(?:\d+|0x[0-9a-f]*)$/,ee=(e,t)=>Vt({kind:e,message:t}),fa=(e)=>e;function ed(e){let n=e.replace(/^[a-z][a-z0-9+.-]*:\/\//,"").split(/[/?#\\]/,1)[0]??"";return n.slice(n.lastIndexOf("@")+1)}function td(e){if(e.startsWith("["))return!0;return e.split(":").length>2&&/^[0-9a-f:.]+$/.test(e)}function nd(e){if(!Y0.test(e))return e;try{return new URL(`http://${e}`).hostname}catch{return null}}function od(e){return e.split(".").filter((t)=>t.startsWith("xn--")).every((t)=>{try{return st.toASCII(st.toUnicode(t))===t}catch{return!1}})}function ha(e){let t=Be(e,{allowPrivateDomains:!0,extractHostname:!1,validateHostname:!1});return(t.isIcann===!0||t.isPrivate===!0)&&t.publicSuffix===e}var rd=[["Latin",/\p{Script=Latin}/u],["Cyrillic",/\p{Script=Cyrillic}/u],["Greek",/\p{Script=Greek}/u],["Armenian",/\p{Script=Armenian}/u],["Hebrew",/\p{Script=Hebrew}/u],["Arabic",/\p{Script=Arabic}/u],["Devanagari",/\p{Script=Devanagari}/u],["Thai",/\p{Script=Thai}/u],["Han",/\p{Script=Han}/u],["Hiragana",/\p{Script=Hiragana}/u],["Katakana",/\p{Script=Katakana}/u],["Hangul",/\p{Script=Hangul}/u],["Bopomofo",/\p{Script=Bopomofo}/u]],ad=[["Latin","Han","Hiragana","Katakana"],["Latin","Han","Bopomofo"],["Latin","Han","Hangul"]];function id(e){let t=new Set;for(let n of e)for(let[o,r]of rd)if(r.test(n))t.add(o);return[...t]}function sd(e){return e.split(".").flatMap((t)=>{let n=id(t);if(n.length<2)return[];if(ad.some((o)=>n.every((r)=>o.includes(r))))return[];return[{kind:"mixed_script",label:t,scripts:n,message:`“${t}” mixes ${n.join(" and ")} letters, which can make one domain look like another. Check that this is the domain you mean.`}]})}function to(e){let t=e.trim().toLowerCase();if(t.length===0)return ee("empty","Enter the domain you want to use, like yourcompany.com.");let n=ed(t);if(td(n))return ee("ip_address","That's an IP address. Enter the domain name that points to it.");let o=n.replace(/:\d*$/,""),r=nd(o);if(r===null)return ee("invalid_characters","Domains can use letters, numbers and hyphens between dots. Remove any spaces or symbols.");let a=r.replace(/\.$/,"");if(a.length===0)return ee("empty","Enter the domain you want to use, like yourcompany.com.");if(Q0.test(a.split(".").at(-1)??""))return ee("ip_address","That's an IP address. Enter the domain name that points to it.");if(a.length>G0)return ee("too_long","DNS allows up to 253 characters in a domain. Use a shorter name.");let i=a.split(".");if(i.some((d)=>d.length>J0))return ee("label_too_long","DNS allows up to 63 characters between dots. Shorten the long part of this domain.");if(!i.every((d)=>X0.test(d))||!od(a))return ee("invalid_characters","Domains can use letters, numbers and hyphens between dots. Remove any spaces or symbols.");let s=a.startsWith("www.")?a.slice(4):a,c=s!==a&&s.includes(".")&&!ha(s)?s:a,u=c.split(".").at(-1)??"";if(Rr.some((d)=>d===u))return ee("reserved_tld",`.${u} is set aside and can't be registered, so there's no public DNS to check. Enter a domain you've registered.`);if(ha(c))return ee("public_suffix",`${c} is a shared ending that many people register under. Enter your full domain, like yourcompany.${c}.`);if(!c.includes("."))return ee("single_label","Add the ending too, like .com or .co.uk.");let p=Be(c,{allowPrivateDomains:!0,extractHostname:!1,validateHostname:!1}).domain;if(p===null)return ee("public_suffix",`${c} is a shared ending that many people register under. Enter your full domain, like yourcompany.${c}.`);let f=st.toUnicode(c);return Kt({ascii:fa(c),unicode:f,registrableDomain:fa(p),isSubdomain:c!==p,warnings:sd(f)})}var Jt={add_record:"Add record",checking:"Checking",waiting_for_dns:"Waiting for DNS",fix_needed:"Fix needed",try_again_later:"Try again later",verified:"Verified",at_risk:"At risk",lapsed:"Lapsed",expired:"Expired",transferred:"Transferred",abandoned:"Abandoned"},no={add_record:"notice",checking:"notice",waiting_for_dns:"notice",fix_needed:"negative",try_again_later:"notice",verified:"positive",at_risk:"negative",lapsed:"negative",expired:"negative",transferred:"neutral",abandoned:"neutral"},ga=["add_record","checking","waiting_for_dns","fix_needed","try_again_later"];function ct(e){return e.phase==="fix_needed"&&e.outcome.kind==="not_found"&&e.outcome.reason==="nothing_at_name"}var ut=(e)=>ct(e)?"add_record":e.phase;var He={godaddy:{id:"godaddy",name:"GoDaddy",hostFieldLabel:"Name",valueFieldLabel:"Value",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://dcc.godaddy.com/manage/{domain}/dns",steps:["Sign in to GoDaddy and open My Products.","Next to your domain, click DNS.","Click Add New Record and choose TXT."],nsPatterns:["domaincontrol.com"]},cloudflare:{id:"cloudflare",name:"Cloudflare",hostFieldLabel:"Name",valueFieldLabel:"Content",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://dash.cloudflare.com/?to=/:account/{domain}/dns/records",steps:["Open Cloudflare and click your domain.","In the menu, go to DNS, then Records.","Click Add record and choose TXT."],nsPatterns:["cloudflare.com"]},namecheap:{id:"namecheap",name:"Namecheap",hostFieldLabel:"Host",valueFieldLabel:"Value",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://ap.www.namecheap.com/Domains/DomainControlPanel/{domain}/advancedns",steps:["Sign in to Namecheap and open Domain List.","Click Manage next to your domain, then open the Advanced DNS tab.","Click Add New Record and choose TXT Record."],nsPatterns:["registrar-servers.com"]},route53:{id:"route53",name:"Amazon Route 53",hostFieldLabel:"Record name",valueFieldLabel:"Value",appendsDomain:!0,quotesTxt:!0,dnsSettingsUrl:"https://console.aws.amazon.com/route53/v2/hostedzones",steps:["Open the AWS console and go to Route 53, then Hosted zones.","Click your domain.","Click Create record and choose TXT."],nsPatterns:["awsdns-"]},vercel:{id:"vercel",name:"Vercel",hostFieldLabel:"Name",valueFieldLabel:"Value",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://vercel.com/dashboard/domains/{domain}",steps:["Open Vercel and go to Domains.","Click your domain.","Under DNS Records, add a TXT record."],nsPatterns:["vercel-dns.com"]},ionos:{id:"ionos",name:"IONOS",hostFieldLabel:"Host name",valueFieldLabel:"Value",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://my.ionos.com/domain-dns-settings/{domain}",steps:["Sign in to IONOS and open Domains & SSL.","Next to your domain, open the menu and choose DNS.","Click Add record and choose TXT."],nsPatterns:["ui-dns."]},squarespace:{id:"squarespace",name:"Squarespace",hostFieldLabel:"Host",valueFieldLabel:"Data",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://account.squarespace.com/domains/managed/{domain}/dns/dns-settings",steps:["Open Squarespace and go to Domains.","Click your domain, then DNS.","Under Custom records, add a TXT record."],nsPatterns:["squarespacedns.com","googledomains.com"]},hostinger:{id:"hostinger",name:"Hostinger",hostFieldLabel:"Name",valueFieldLabel:"TXT value",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://hpanel.hostinger.com/domain/{domain}/dns",steps:["Open hPanel and go to Domains.","Click your domain, then DNS / Nameservers.","Under Manage DNS records, add a TXT record."],nsPatterns:["dns-parking.com","hostinger.com"]},wix:{id:"wix",name:"Wix",hostFieldLabel:"Host Name",valueFieldLabel:"Value",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://manage.wix.com/account/domains",steps:["Open Wix and go to Domains.","Next to your domain, choose Manage DNS records.","Under TXT, click Add Record."],nsPatterns:["wixdns.net"]},porkbun:{id:"porkbun",name:"Porkbun",hostFieldLabel:"Host",valueFieldLabel:"Answer",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"https://porkbun.com/account/domainsSpeedy",steps:["Open Porkbun and go to Domain Management.","Next to your domain, click DNS.","Choose TXT as the type and add the record."],nsPatterns:["porkbun.com"]},google_cloud_dns:{id:"google_cloud_dns",name:"Google Cloud DNS",hostFieldLabel:"DNS name",valueFieldLabel:"TXT data",appendsDomain:!0,quotesTxt:!0,dnsSettingsUrl:"https://console.cloud.google.com/net-services/dns/zones",steps:["Open the Google Cloud console and go to Cloud DNS.","Click your zone.","Click Add standard and choose TXT."],nsPatterns:["googledomains.com.","ns-cloud-"]},cpanel:{id:"cpanel",name:"cPanel",hostFieldLabel:"Name",valueFieldLabel:"Record",appendsDomain:!1,quotesTxt:!1,dnsSettingsUrl:"https://cpanel.net/",steps:["Sign in to cPanel and open Zone Editor.","Click Manage next to your domain.","Click Add Record and choose TXT."],nsPatterns:["bluehost.com","hostgator.com","websitewelcome.com","siteground.net"]},unknown:{id:"unknown",name:"your DNS provider",hostFieldLabel:"Host",valueFieldLabel:"Value",appendsDomain:!0,quotesTxt:!1,dnsSettingsUrl:"",steps:["Sign in to whoever runs your domain's nameservers.","Open the DNS or zone settings for your domain.","Add a TXT record."],nsPatterns:[]}},cd=["sedoparking.com","parkingcrew.net","bodis.com","above.com","hugedomains.com","dan.com","undeveloped.com","afternic.com","parklogic.com"],oo=(e)=>cd.some((t)=>e.toLowerCase().endsWith(t));function dt(e){let t=Object.values(e).filter((o)=>typeof o==="number");return Object.entries(e).filter(([o,r])=>t.indexOf(+o)===-1).map(([o,r])=>r)}function ao(e,t="|"){return e.map((n)=>co(n)).join(t)}function pt(e,t){if(typeof t==="bigint")return t.toString();return t}class ya{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;if(e!==void 0)this._value=e(),this._getter=void 0;return this._value}}function mt(e){return new ya(e)}function ka(e){return e===null||e===void 0}function Ee(e){let t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function ba(e,t){let n=e/t,o=Math.round(n),r=4*Number.EPSILON*Math.max(Math.abs(n),1);if(Math.abs(n-o)<r)return 0;return n-o}function te(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function ft(e){let t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function xe(e){return ft(e._zod.def)??e._zod.def.shape}function va(e,t,n){Object.defineProperty(e,t,{get(){let o=n();return te(this,t,o),o},enumerable:!0,configurable:!0})}function xa(e,t,n){if(t in e)te(e,t,n);else e[t]=n}function Te(e,t,n,o){let r=xe(t);for(let a of n){let i=Object.getOwnPropertyDescriptor(r,a);if(!i.enumerable)continue;if(i.get)va(e,a,()=>{let s=t._zod.def.shape[a];return o?o(s,a):s});else xa(e,a,o?o(i.value,a):i.value)}}function ud(e,t){for(let n of Reflect.ownKeys(t)){let o=Object.getOwnPropertyDescriptor(t,n);if(!o.enumerable)continue;if(o.get)va(e,n,()=>t[n]);else xa(e,n,o.value)}}function J(...e){let t={};for(let n of e){let o=Object.getOwnPropertyDescriptors(n);Object.assign(t,o)}return Object.defineProperties({},t)}function wa(e){return JSON.stringify(e)}function _a(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var io="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function We(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}var Sa=mt(()=>{if(G.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function De(e){if(We(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;if(typeof t!=="function")return!0;let n=t.prototype;if(We(n)===!1)return!1;if(Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)return!1;return!0}function so(e){if(De(e))return{...e};if(Array.isArray(e))return[...e];if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);return e}var za=new Set(["string","number","symbol"]),Ca=new Set(["string","number","bigint","boolean","symbol","undefined"]);function _e(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function de(e,t,n){let o=new e._zod.constr(t??e._zod.def);if(!t||n?.parent)o._zod.parent=e;return o}function x(e){let t=e;if(!t)return{};if(typeof t==="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}if(delete t.message,typeof t.error==="string")return{...t,error:()=>t.error};return t}function co(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function Aa(e){return Object.keys(e).filter((t)=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}var Xt=(()=>({safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]}))(),uo={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function ld(e,t){let n=e._zod.def,o=n.checks;if(o&&o.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let a={};return Te(a,e,Yt(e,t)),de(e,J(n,{shape:a,checks:[]}))}function Yt(e,t){let n=xe(e),o=[];for(let r of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,r)?.enumerable)throw Error(`Unrecognized key: "${String(r)}"`);if(t[r])o.push(r)}return o}function dd(e,t){let n=e._zod.def,o=n.checks;if(o&&o.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let a=new Set(Yt(e,t)),i={};return Te(i,e,Reflect.ownKeys(xe(e)).filter((s)=>!a.has(s))),de(e,J(n,{shape:i,checks:[]}))}function pd(e,t){if(!De(t))throw Error("Invalid input to extend: expected a plain object");let n=e._zod.def.checks;if(n&&n.length>0){let r=xe(e);for(let a of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(r,a)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return de(e,J(e._zod.def,{shape:Ea(e,t)}))}function Ea(e,t){let n={};return Te(n,e,Reflect.ownKeys(xe(e))),ud(n,t),n}function md(e,t){if(!De(t))throw Error("Invalid input to safeExtend: expected a plain object");return de(e,J(e._zod.def,{shape:Ea(e,t)}))}function fd(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let n={};Te(n,e,Reflect.ownKeys(xe(e))),Te(n,t,Reflect.ownKeys(xe(t)));let o=J(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return de(e,o)}function $a(e,t,n,o="partial"){let a=t._zod.def.checks;if(a&&a.length>0)throw Error(`.${o}() cannot be used on object schemas containing refinements`);let s=n?new Set(Yt(t,n)):void 0,c={};return Te(c,t,Reflect.ownKeys(xe(t)),e&&((u,l)=>s&&!s.has(l)?u:new e({type:"optional",innerType:u}))),de(t,J(t._zod.def,{shape:c,checks:[]}))}function hd(e,t,n){let o=n?new Set(Yt(t,n)):void 0,r={};return Te(r,t,Reflect.ownKeys(xe(t)),(a,i)=>o&&!o.has(i)?a:new e({type:"nonoptional",innerType:a})),de(t,J(t._zod.def,{shape:r}))}function pe(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Ia(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function $e(e,t){return t.map((n)=>{var o;return(o=n).path??(o.path=[]),n.path.unshift(e),n})}function lt(e){return typeof e==="string"?e:e?.message}function lo(e){let t=[];for(let n of e??[]){let o=n._zod.def;if(!/_(length|size)$|_equals$/.test(o.check))break;let r=o.maximum??o.length??o.size;if(r>=0)t.push([r,n])}return t}function Qt(e,t,n){var o;for(let r=t;r<e.length;r++)(o=e[r]).schema??(o.schema=n)}function me(e,t,n){var o;let r=e.inst?._zod?.traits;if(r?.has("$ZodType"))if(r.has("$ZodCheck"))(o=e).schema??(o.schema=e.inst);else e.schema=e.inst;let a=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,i=e.message?e.message:lt(e.inst?._zod.def?.error?.(e))??lt(a?.(e))??lt(t?.error?.(e))??lt(n.customError?.(e))??lt(n.localeError?.(e))??"Invalid input",s={};for(let c of Object.keys(e)){if(c==="inst"||c==="schema"||c==="continue"||c==="input"||c==="__proto__")continue;s[c]=e[c]}if(s.path??(s.path=[]),s.message=i,t?.reportInput)s.input=e.input;return s}var gd=/[\uD800-\uDBFF]/;function en(e){let t=e.length;if(!gd.test(e))return t;let n=t;for(let o=0;o<t-1;o++)if((e.charCodeAt(o)&64512)===55296&&(e.charCodeAt(o+1)&64512)===56320)n--,o++;return n}function tn(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function Oa(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let n=e;if(n&&Object.getPrototypeOf(n)!==Object.prototype&&"constructor"in n&&n.constructor)return n.constructor.name}}return t}function Re(...e){let[t,n,o]=e;if(typeof t==="string")return{message:t,code:"custom",input:n,inst:o};return{...t}}function Pa(e,t){for(let n in t){let o=Object.getOwnPropertyDescriptor(t,n);if(o.get)Object.defineProperty(e,n,{...o,enumerable:!1});else yd(e,n,o.value)}}function we(e,t,n,o=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:o,value:n}),n}function nn(e,t,n){return we(e,t,n,!1)}function Ta(e,t){for(let n in e){let o=e[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!0,get(){return we(this,n,o(this))},set(r){we(this,n,r)}})}return t}function yd(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:we(this,t,n.bind(this))},set(o){we(this,t,o)}})}function kd(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}var ro,Ae=!1,bd={configurable:!0,get(){Ae=!0;return}};function S(e,t,n){let o=Object.getPrototypeOf(e._zod);if(t in o&&ro!==e._zod){ro=void 0;return}ro=e._zod,Object.defineProperty(o,t,{configurable:!0,get(){Object.defineProperty(this,t,bd);let r=Ae;Ae=!1;try{let a=n(this);if(Ae)delete this[t];else Object.defineProperty(this,t,{configurable:!0,writable:!0,value:a});return Ae=Ae||r,a}catch(a){throw delete this[t],Ae=Ae||r,a}},set(r){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:r})}})}function vd(e,t,n,o){let r=kd(e,t);if(!r)return;Object.defineProperty(r,t,{configurable:!0,get(){let a={configurable:!0,writable:!0,enumerable:o,value:void 0};return Object.defineProperty(this,t,a),a.value=n(this),Object.defineProperty(this,t,a),a.value},set(a){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:o,value:a})}})}var xd="~constantCatch";function Da(e){let t=()=>e;return t[xd]=!0,t}var Ra;var po={value:void 0,enumerable:!1},Na="captureStackTrace"in Error?Error:null;function wd(e){let t=Na;if(t){let n=t.stackTraceLimit;if(typeof n==="number"){try{t.stackTraceLimit=0}catch{return Na=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function m(e,t,n,o){let r={};function a(f){this.def=f,this.constr=p,this.traits=new Set}a.prototype=r;let i=n,s=i&&new WeakSet;function c(f,d){if(!f._zod){po.value=new a(d);try{Object.defineProperty(f,"_zod",po)}finally{po.value=void 0}}else if(f._zod.traits.has(e))return;if(f._zod.traits.add(e),t(f,d),s){let b=Object.getPrototypeOf(f),y=f._zod.constr.prototype,v=b;while(v&&v!==y)v=Object.getPrototypeOf(v);let C=v??b;if(!s.has(C))s.add(C),Pa(C,i)}let h=p.prototype;for(let b in h){if(!Object.prototype.hasOwnProperty.call(h,b))continue;if(!(b in f))f[b]=h[b].bind(f)}}let u=o?.Parent??Object;class l extends u{}Object.defineProperty(l,"name",{value:e});function p(f){let d=o?.Parent?wd(l):this;c(d,f);let h=d._zod.deferred;if(h){for(let y of h)y();d._zod.deferred=void 0}let b=globalThis.__zod_globalConfig?.postProcessor;if(b)b(d);return d}return Object.defineProperty(p,"init",{value:c}),Object.defineProperty(p,Symbol.hasInstance,{value:(f)=>{if(o?.Parent&&f instanceof o.Parent)return!0;return f?._zod?.traits?.has(e)}}),Object.defineProperty(p,"name",{value:e}),p}class fe extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class ht extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}}(Ra=globalThis).__zod_globalConfig??(Ra.__zod_globalConfig={});var G=globalThis.__zod_globalConfig;function X(e){if(e)Object.assign(G,e);return G}function _d(){let e=this._zod;return e.message??(e.message=JSON.stringify(e.def,pt,2)),e.message}function Sd(e){this._zod.message=e}var zd={get:_d,set:Sd,enumerable:!0,configurable:!0},fo={value:void 0,enumerable:!1},ja=new WeakSet([Object.prototype,Error.prototype]),Za=(e,t)=>{e.name="$ZodError",fo.value=t,Object.defineProperty(e,"issues",fo),fo.value=void 0,Object.defineProperty(e,"message",zd);let n=Object.getPrototypeOf(e);if(!ja.has(n))ja.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let o=()=>this.message;return Object.defineProperty(this,"toString",{value:o,configurable:!0,writable:!0}),o},set(o){Object.defineProperty(this,"toString",{value:o,configurable:!0,writable:!0})}})},La=m("$ZodError",Za),Bf=m("$ZodError",Za,void 0,{Parent:Error});function Cd(e,t,n){if(!Object.prototype.hasOwnProperty.call(e,t))if(t==="__proto__")Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0});else e[t]=n();return e[t]}function Ua(e,t=(n)=>n.message){let n={},o=[];for(let r of e.issues)if(r.path.length>0)Cd(n,r.path[0],()=>[]).push(t(r));else o.push(t(r));return{formErrors:o,fieldErrors:n}}function Fa(e,t=(n)=>n.message){let n={_errors:[]},o=(r,a=[])=>{for(let i of r.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map((s)=>o({issues:s},[...a,...i.path]));else if(i.code==="invalid_key")o({issues:i.issues},[...a,...i.path]);else if(i.code==="invalid_element")o({issues:i.issues},[...a,...i.path]);else{let s=[...a,...i.path];if(s.length===0)n._errors.push(t(i));else{let c=n,u=0;while(u<s.length){let l=s[u],p=u===s.length-1;if(l==="_errors"){if(p)c._errors.push(t(i));u++;continue}if(!Object.prototype.hasOwnProperty.call(c,l))Object.defineProperty(c,l,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let f=c[l];if(p)f._errors.push(t(i));c=f,u++}}}};return o(e),n}function on(e,t){return{callee:t?.callee??e,Err:t?.Err}}var rn=(e)=>{let t=(n,o,r,a)=>{let i=r?{...r,async:!1}:{async:!1},s=n._zod.run({value:o,issues:[]},i);if(s instanceof Promise)throw new fe;if(s.issues.length){let c=new(a?.Err??e)(s.issues.map((u)=>me(u,i,X())));throw io(c,a?.callee??t),c}return s.value};return t};var an=(e)=>{let t=async(n,o,r,a)=>{let i=r?{...r,async:!0}:{async:!0},s=n._zod.run({value:o,issues:[]},i);if(s instanceof Promise)s=await s;if(s.issues.length){let c=new(a?.Err??e)(s.issues.map((u)=>me(u,i,X())));throw io(c,a?.callee??t),c}return s.value};return t};var sn=(e)=>(t,n,o)=>{let r=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},r);if(a instanceof Promise)throw new fe;return a.issues.length?Ma(e,a.issues,r):{success:!0,data:a.value}};function Ma(e,t,n){let o;return{success:!1,get error(){if(!o)o=new e(t.map((r)=>me(r,n,X()))),t=void 0,n=void 0;return o},set error(r){o=r,t=void 0,n=void 0}}}var cn=(e)=>async(t,n,o)=>{let r=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},r);if(a instanceof Promise)a=await a;return a.issues.length?Ma(e,a.issues,r):{success:!0,data:a.value}};var Ad=Symbol.for("zod.compile.invalid"),Ed=Symbol.for("zod.compile.fallback"),ho=(e,t,n)=>{let o=e._zod.bag.validator;if(o!==void 0){if(o(t)!==Ad)return!0;if(o.definite===!0&&n===void 0)return!1}return $d(e,t,n)};function $d(e,t,n){let o=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},r=e._zod.bag.fallbackRun,a;if(r)o[Ed]=!0,a=r({value:t,issues:[]},o);else a=e._zod.run({value:t,issues:[]},o);if(a instanceof Promise)throw new fe;return a.issues.length===0}var go=async(e,t,n)=>{let o=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},r=e._zod.run({value:t,issues:[]},o);if(r instanceof Promise)r=await r;return r.issues.length===0},Ka=(e)=>{let t=rn(e),n=(o,r,a,i)=>{let s=a?{...a,direction:"backward"}:{direction:"backward"};return t(o,r,s,on(n,i))};return n};var Va=(e)=>{let t=rn(e),n=(o,r,a,i)=>t(o,r,a,on(n,i));return n};var qa=(e)=>{let t=an(e),n=async(o,r,a,i)=>{let s=a?{...a,direction:"backward"}:{direction:"backward"};return await t(o,r,s,on(n,i))};return n};var Ba=(e)=>{let t=an(e),n=async(o,r,a,i)=>await t(o,r,a,on(n,i));return n};var Ha=(e)=>(t,n,o)=>{let r=o?{...o,direction:"backward"}:{direction:"backward"};return sn(e)(t,n,r)};var Wa=(e)=>(t,n,o)=>sn(e)(t,n,o);var Ga=(e)=>async(t,n,o)=>{let r=o?{...o,direction:"backward"}:{direction:"backward"};return cn(e)(t,n,r)};var Ja=(e)=>async(t,n,o)=>cn(e)(t,n,o);var Xa=/^[cC][0-9a-z]{6,}$/,Ya=/^[0-9a-z]+$/,Qa=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,ei=/^[0-9a-vA-V]{20}$/,ti=/^[A-Za-z0-9]{27}$/,ni=/^[a-zA-Z0-9_-]{21}$/;function oi(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var ri=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var ai=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ko=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)};var ii=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var Id="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function si(){return new RegExp(Id,"u")}var ci=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ui=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var li=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,di=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,pi=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,mi=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var fi=/^https?$/,hi=/^\+[1-9]\d{6,14}$/;var gi="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function Od(e){return new RegExp(`^${e}$`)}var yi=Od(gi);function yo(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?":"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function ki(e){return new RegExp(`^${yo(e)}$`)}function bi(e){let t=["Z"];if(e.offset)t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${yo({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,o=e.local?`${n}|${yo({precision:e.precision})}`:n;return new RegExp(`^${gi}T(?:${o})$`)}var vi=/^[\s\S]{0,}$/,xi=(e)=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)};var un=/^-?\d+$/,Ge=/^-?\d+(?:\.\d+)?$/,wi=/^(?:true|false)$/i;var _i=/^[^A-Z]*$/,Si=/^[^a-z]*$/;var V=m("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])});var bo=(e)=>{let t=e.value;return!ka(t)&&t.length!==void 0},ln={number:"number",bigint:"bigint",object:"date"},vo=m("$ZodCheckLessThan",(e,t)=>{V.init(e,t);let n=ln[typeof t.value];e._zod.check=(o)=>{if(t.inclusive?o.value<=t.value:o.value<t.value)return;o.issues.push({origin:ln[typeof o.value]??n,code:"too_big",maximum:typeof t.value==="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),xo=m("$ZodCheckGreaterThan",(e,t)=>{V.init(e,t);let n=ln[typeof t.value];e._zod.check=(o)=>{if(t.inclusive?o.value>=t.value:o.value>t.value)return;o.issues.push({origin:ln[typeof o.value]??n,code:"too_small",minimum:typeof t.value==="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),zi=m("$ZodCheckMultipleOf",(e,t)=>{V.init(e,t),e._zod.check=(n)=>{if(typeof n.value!==typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof n.value==="bigint"?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):ba(n.value,t.value)===0)return;n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ci=m("$ZodCheckNumberFormat",(e,t)=>{V.init(e,t),t.format=t.format||"float64";let n=t.format?.includes("int"),o=n?"int":"number",[r,a]=Xt[t.format];e._zod.check=(i)=>{let s=i.value;if(n){if(!Number.isInteger(s)){i.issues.push({expected:o,format:t.format,code:"invalid_type",continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){if(s>0)i.issues.push({input:s,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});else i.issues.push({input:s,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});return}}if(s<r)i.issues.push({origin:"number",input:s,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort});if(s>a)i.issues.push({origin:"number",input:s,code:"too_big",maximum:a,inclusive:!0,inst:e,continue:!t.abort})}});var Ai=m("$ZodCheckMaxLength",(e,t)=>{var n;V.init(e,t),(n=e._zod.def).when??(n.when=bo),e._zod.check=(o)=>{let r=o.value,a=r.length;if((typeof r==="string"&&a>t.maximum?en(r):a)<=t.maximum)return;let s=tn(r);o.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Ei=m("$ZodCheckMinLength",(e,t)=>{var n;V.init(e,t),(n=e._zod.def).when??(n.when=bo),e._zod.check=(o)=>{let r=o.value,a=r.length;if((typeof r==="string"&&a>=t.minimum&&a<t.minimum*2?en(r):a)>=t.minimum)return;let s=tn(r);o.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),$i=m("$ZodCheckLengthEquals",(e,t)=>{var n;V.init(e,t),(n=e._zod.def).when??(n.when=bo),e._zod.check=(o)=>{let r=o.value,a=r.length,i=typeof r==="string"&&a>=t.length&&a<=t.length*2?en(r):a;if(i===t.length)return;let s=tn(r),c=i>t.length;o.issues.push({origin:s,...c?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:o.value,inst:e,continue:!t.abort})}}),yt=m("$ZodCheckStringFormat",(e,t)=>{var n,o;if(V.init(e,t),t.pattern)(n=e._zod).check??(n.check=(r)=>{if(t.pattern.lastIndex=0,t.pattern.test(r.value))return;r.issues.push({origin:"string",code:"invalid_format",format:t.format,input:r.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})});else(o=e._zod).check??(o.check=()=>{})}),Ii=m("$ZodCheckRegex",(e,t)=>{yt.init(e,t),e._zod.check=(n)=>{if(t.pattern.lastIndex=0,t.pattern.test(n.value))return;n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Oi=m("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=_i),yt.init(e,t)}),Pi=m("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Si),yt.init(e,t)}),Ti=m("$ZodCheckIncludes",(e,t)=>{V.init(e,t);let n=_e(t.includes),o=new RegExp(typeof t.position==="number"?`^.{${t.position},}${n}`:n);t.pattern=o,e._zod.check=(r)=>{if(r.value.includes(t.includes,t.position))return;r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:r.value,inst:e,continue:!t.abort})}}),Di=m("$ZodCheckStartsWith",(e,t)=>{V.init(e,t);let n=new RegExp(`^${_e(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.check=(o)=>{if(o.value.startsWith(t.prefix))return;o.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:o.value,inst:e,continue:!t.abort})}}),Ri=m("$ZodCheckEndsWith",(e,t)=>{V.init(e,t);let n=new RegExp(`.*${_e(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.check=(o)=>{if(o.value.endsWith(t.suffix))return;o.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:o.value,inst:e,continue:!t.abort})}});var Ni=m("$ZodCheckOverwrite",(e,t)=>{V.init(e,t),e._zod.check=(n)=>{n.value=t.tx(n.value)}});class wo{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{this.indent-=1}}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let n=e.split(`
3
+ `).filter((a)=>a),o=Math.min(...n.map((a)=>a.length-a.trimStart().length)),r=n.map((a)=>a.slice(o)).map((a)=>" ".repeat(this.indent*2)+a);for(let a of r)this.content.push(a)}compile(){let e=Function,t=this?.content??[""];return new e(...Object.keys(this.closed),`return function (${this.args.join(", ")}) {
4
+ ${t.join(`
5
+ `)}
6
+ };`)(...Object.values(this.closed))}}var Zi={major:4,minor:6,patch:7};var I=m("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Zi;let o=e._zod.def.checks,r=e._zod.traits.has("$ZodCheck")?[e,...o??[]]:o?.length?[...o]:[];for(let a of r)for(let i of a._zod.onattach)i(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let a=(s,c,u)=>{if(s.memo)return s;let l=pe(s),p;for(let f of c){if(f._zod.def.when){if(Ia(s))continue;if(!f._zod.def.when(s))continue}else if(l)continue;let d=s.issues.length,h=f._zod.check(s);if(h instanceof Promise&&u?.async===!1)throw new fe;if(p||h instanceof Promise)p=(p??Promise.resolve()).then(async()=>{if(await h,s.issues.length===d)return;if(Qt(s.issues,d,e),!l)l=pe(s,d)});else{if(s.issues.length===d)continue;if(Qt(s.issues,d,e),!l)l=pe(s,d)}}if(p)return p.then(()=>s);return s},i=(s,c,u)=>{if(pe(s))return s.aborted=!0,s;let l=a(c,r,u);if(l instanceof Promise){if(u.async===!1)throw new fe;return l.then((p)=>e._zod.parse(p,u))}return e._zod.parse(l,u)};e._zod.run=(s,c)=>{if(c.skipChecks)return e._zod.parse(s,c);if(c.direction==="backward"){let l=e._zod.parse({value:s.value,issues:[]},{...c,skipChecks:!0});if(l instanceof Promise)return l.then((p)=>i(p,s,c));return i(l,s,c)}let u=e._zod.parse(s,c);if(u instanceof Promise){if(c.async===!1)throw new fe;return u.then((l)=>a(l,r,c))}return a(u,r,c)}}},{get "~standard"(){return nn(this,"~standard",zo(this))},set "~standard"(e){we(this,"~standard",e)}}),Gi=(e,t)=>e.issues.length?{issues:e.issues.map((n)=>me(n,t,X()))}:{value:e.value};async function Pd(e,t){let n={async:!0};return Gi(await e._zod.run({value:t,issues:[]},n),n)}function zo(e){return{validate:(t)=>{let n={async:!1};try{let o=e._zod.run({value:t,issues:[]},n);if(!(o instanceof Promise))return Gi(o,n)}catch(o){}return Pd(e,t)},vendor:"zod",version:1}}var fn=m("$ZodString",(e,t)=>{I.init(e,t),e._zod.pattern=t.pattern??vi,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=String(n.value)}catch(r){}if(typeof n.value==="string")return n;return n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),O=m("$ZodStringFormat",(e,t)=>{yt.init(e,t),fn.init(e,t)}),Ji=m("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=ai),O.init(e,t)}),Xi=m("$ZodUUID",(e,t)=>{if(t.version){let o={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(o===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=ko(o))}else t.pattern??(t.pattern=ko());O.init(e,t)}),Yi=m("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=ii),O.init(e,t)}),Qi=1,pn=2;function es(e){try{if(typeof URL<"u"&&typeof URL.canParse==="function")return URL.canParse(e);return new URL(e),!0}catch{return!1}}function Td(e,t){if(!("normalize"in t)&&!("hostname"in t)&&!("protocol"in t))return es(e)||pn;return Dd(e,t)}function Dd(e,t){if(!t.normalize&&t.protocol?.source===fi.source&&!/^https?:\/\//i.test(e))return Qi;try{if(typeof URL<"u"){let n=URL;if(typeof n.parse==="function")return n.parse(e)??pn}return new URL(e)}catch{return pn}}var Rd=/[\t\n\r]/g;function Li(e){return e.replace(Rd,"")}function Nd(e,t){return t.lastIndex=0,t.test(e.hostname)}function jd(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)}var ts=m("$ZodURL",(e,t)=>{O.init(e,t),e._zod.check=(n)=>{try{let o=n.value.trim(),r=Td(o,t);if(r===Qi){n.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:n.value,inst:e,continue:!t.abort});return}if(r===pn){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort});return}if(r===!0){n.value=Li(o);return}if(t.hostname&&!Nd(r,t.hostname))n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort});if(t.protocol&&!jd(r,t.protocol))n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort});n.value=t.normalize?r.href:Li(o);return}catch(o){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),ns=m("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=si()),O.init(e,t)}),os=m("$ZodNanoID",(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??(t.pattern=t.length===void 0?ni:oi(t.length)),O.init(e,t)}),rs=m("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Xa),O.init(e,t)}),as=m("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Ya),O.init(e,t)}),is=m("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Qa),O.init(e,t)}),ss=m("$ZodXID",(e,t)=>{t.pattern??(t.pattern=ei),O.init(e,t)}),cs=m("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=ti),O.init(e,t)}),us=m("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=bi(t)),O.init(e,t)}),ls=m("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=yi),O.init(e,t)}),ds=m("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=ki(t)),O.init(e,t)}),ps=m("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=ri),O.init(e,t)}),ms=m("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=ci),O.init(e,t)}),Zd=/^[0-9a-fA-F:.]+$/;function fs(e){if(!Zd.test(e))return!1;return es(`http://[${e}]`)}var hs=m("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=ui),O.init(e,t),e._zod.check=(n)=>{if(!fs(n.value))n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}});var gs=m("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=li),O.init(e,t)});function Ld(e){let t=e.split("/");if(t.length!==2)return!1;let[n,o]=t;if(!o)return!1;let r=Number(o);if(`${r}`!==o)return!1;if(r<0||r>128)return!1;return fs(n)}var ys=m("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=di),O.init(e,t),e._zod.check=(n)=>{if(!Ld(n.value))n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}});function ks(e){if(e==="")return!0;if(/\s/.test(e))return!1;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Co=/^[0-9a-zA-Z+/]*={0,2}$/,bs=m("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Co),O.init(e,t),e._zod.check=(n)=>{if(ks(n.value))return;n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}}),hn=/^[A-Za-z0-9_-]*$/;function Ud(e){if(!hn.test(e))return!1;let t=e.replace(/[-_]/g,(o)=>o==="-"?"+":"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"=");return ks(n)}var vs=m("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=hn),O.init(e,t),e._zod.check=(n)=>{if(Ud(n.value))return;n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),xs=m("$ZodE164",(e,t)=>{t.pattern??(t.pattern=hi),O.init(e,t)});function Fd(e,t=null){try{let n=e.split(".");if(n.length!==3)return!1;let[o]=n;if(!o)return!1;let r=JSON.parse(atob(o));if("typ"in r&&r?.typ!=="JWT")return!1;if(!r.alg)return!1;if(t&&(!("alg"in r)||r.alg!==t))return!1;return!0}catch{return!1}}var ws=m("$ZodJWT",(e,t)=>{O.init(e,t),e._zod.check=(n)=>{if(Fd(n.value,t.alg))return;n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}});var Ao=m("$ZodNumber",(e,t)=>{I.init(e,t),e._zod.pattern=Ge,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=Number(n.value)}catch(i){}let r=n.value;if(typeof r==="number"&&!Number.isNaN(r)&&Number.isFinite(r))return n;let a=typeof r==="number"?Number.isNaN(r)?"NaN":!Number.isFinite(r)?String(r):void 0:void 0;return n.issues.push({expected:"number",code:"invalid_type",input:r,inst:e,...a?{received:a}:{}}),n}}),_s=m("$ZodNumberFormat",(e,t)=>{Ci.init(e,t),Ao.init(e,t)}),Ss=m("$ZodBoolean",(e,t)=>{I.init(e,t),e._zod.pattern=wi,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=Boolean(n.value)}catch(a){}let r=n.value;if(typeof r==="boolean")return n;return n.issues.push({expected:"boolean",code:"invalid_type",input:r,inst:e}),n}});var zs=m("$ZodUnknown",(e,t)=>{I.init(e,t),e._zod.parse=(n)=>n}),Cs=m("$ZodNever",(e,t)=>{I.init(e,t),e._zod.parse=(n,o)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:e}),n)});function Md(e,t){let n=lo(e._zod.def.checks);if(!n.length)return;let o=Math.min(...n.map((a)=>a[0])),r=e._zod.parse;e._zod.parse=(a,i)=>{let s=t(a.value);if(s>o&&!i?.skipChecks&&i?.direction!=="backward"){for(let[c,u]of lo(e._zod.def.checks))if(s>c&&u._zod.def.when(a)){let l=a.issues.length;return u._zod.check(a),a.issues[l].continue=!1,Qt(a.issues,l,e),a}}return r(a,i)}}var Kd=(e)=>Array.isArray(e)?e.length:-1;function Ui(e,t,n){if(e.issues.length)t.issues.push(...$e(n,e.issues));t.value[n]=e.value}var As=m("$ZodArray",(e,t)=>{I.init(e,t);let n=G.memoizer;n?.attach(e),e._zod.parse=(o,r)=>{let a=o.value;if(!Array.isArray(a))return o.issues.push({expected:"array",code:"invalid_type",input:a,inst:e}),o;o.value=n?n.alloc(e,o,Array(a.length),r):Array(a.length);let i=[],s=r?.abortEarly;for(let c=0;c<a.length;c++){let u=a[c],l=t.element._zod.run({value:u,issues:[]},r);if(l instanceof Promise)i.push(l.then((p)=>Ui(p,o,c)));else if(Ui(l,o,c),s&&l.issues.length!==0&&pe(l))break}if(i.length)return Promise.all(i).then(()=>o);return o},Md(e,Kd)});function mn(e,t,n,o,r,a){let i=n in o,s=a==="optional";if(!i&&s&&r==="optional")return;if(e.issues.length){if(r!==void 0&&s&&!i)return;t.issues.push(...$e(n,e.issues))}if(!i&&r===void 0){if(!e.issues.length)t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[n]});return}if(e.value===void 0){if(i||r==="defaulted"&&!s)t.value[n]=void 0}else t.value[n]=e.value}var Vd=[];function Es(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),o=n.length?n:Vd,r=o.length?[...t,...o]:t;for(let i of r)if(!e.shape?.[i]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${String(i)}": expected a Zod schema`);let a=Aa(e.shape);return{...e,allKeys:r,symbolKeys:o,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function $s(e,t,n,o,r,a,i){let s=[],c=r.keySet,u=r.catchall._zod,l=u.def.type,{optin:p,optout:f}=u,d=0;for(let h in t){if(i&&n.issues.length!==d){if(pe(n,d))break;d=n.issues.length}if(c.has(h))continue;if(h==="__proto__"){if(l==="never")s.push(h);continue}if(l==="never"){s.push(h);continue}let b=u.run({value:t[h],issues:[]},o);if(b instanceof Promise)e.push(b.then((y)=>mn(y,n,h,t,p,f)));else mn(b,n,h,t,p,f)}if(s.length)n.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:a,continue:!0});if(!e.length)return n;return Promise.all(e).then(()=>n)}var qd=m("$ZodObject",(e,t)=>{I.init(e,t);let n=Object.getOwnPropertyDescriptor(t,"shape"),o=n?.get?n.get.raw:t.shape??{};if(o){let u=()=>{let l={...o};return Object.defineProperty(t,"shape",{value:l}),u.raw=l,l};u.raw=o,Object.defineProperty(t,"shape",{get:u})}let r=mt(()=>Es(t));S(e,"propValues",(u)=>{let l=u.def.shape,p={};for(let f in l){let d=l[f]._zod;if(d.values){if(!Object.prototype.hasOwnProperty.call(p,f))te(p,f,new Set);for(let h of d.values)p[f].add(h);if(d.optin!==void 0)p[f].add(void 0)}}return p});let a=We,i=t.catchall,s,c=G.memoizer;c?.attach(e),e._zod.parse=(u,l)=>{s??(s=r.value);let p=u.value;if(!a(p))return u.issues.push({expected:"object",code:"invalid_type",input:p,inst:e}),u;u.value=c?c.alloc(e,u,{},l):{};let f=[],d=s.shape,h=l?.abortEarly,b=u.issues.length;for(let y of s.allKeys){if(h&&u.issues.length!==b){if(pe(u,b))break;b=u.issues.length}if(y==="__proto__")continue;let v=d[y],C=v._zod.optin,z=v._zod.optout,F=v._zod.run({value:p[y],issues:[]},l);if(F instanceof Promise)f.push(F.then((A)=>mn(A,u,y,p,C,z)));else mn(F,u,y,p,C,z)}if(!i)return f.length?Promise.all(f).then(()=>u):u;return $s(f,p,u,l,r.value,e,h===!0)}}),Is=m("$ZodObjectJIT",(e,t)=>{qd.init(e,t);let n=e._zod.parse,o=mt(()=>Es(t)),r=G.memoizer,a=(d)=>{let h=o.value,b=h.symbolKeys,y=new wo(["payload","ctx"],{shape:d,inst:e,memo:r,syms:b}),v=(A)=>`shape[${A}]._zod.run({ value: input[${A}], issues: [] }, ctx)`,C=(A,_)=>`
7
+ let ${A}_ab = false;
8
+ for (let i = 0; i < ${A}.issues.length; i++) {
9
+ const iss = ${A}.issues[i];
10
+ iss.path = iss.path ? [${_}, ...iss.path] : [${_}];
11
+ payload.issues.push(iss);
12
+ if (iss.continue !== true) ${A}_ab = true;
13
+ }
14
+ if (${A}_ab && ctx && ctx.abortEarly) {
15
+ payload.value = newResult;
16
+ return payload;
17
+ }`;y.write("const input = payload.value;");let z=Object.create(null),F=0;for(let A of h.allKeys)z[A]=`key_${F++}`;y.write(r?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let A of h.allKeys){if(A==="__proto__")continue;let _=z[A],H=typeof A==="symbol"?`syms[${b.indexOf(A)}]`:wa(A),ke=`${H} in input`,wr=d[A],jn=wr?._zod?.optin,_r=jn!==void 0,Gl=wr?._zod?.optout==="optional";if(y.write(`const ${_} = ${v(H)};`),_r&&Gl){let Jl=jn==="optional"?`${_}_present`:`${_}.value !== undefined || ${_}_present`;y.write(`
18
+ const ${_}_present = ${ke};
19
+ if (!${_}.issues.length || ${_}_present) {
20
+ if (${_}.issues.length) {${C(_,H)}
21
+ }
22
+
23
+ if (${Jl}) {
24
+ newResult[${H}] = ${_}.value;
25
+ }
26
+ }
27
+
28
+ `)}else if(!_r)y.write(`
29
+ const ${_}_present = ${ke};
30
+ if (${_}.issues.length) {${C(_,H)}
31
+ }
32
+ if (!${_}_present && !${_}.issues.length) {
33
+ payload.issues.push({
34
+ code: "invalid_type",
35
+ expected: "nonoptional",
36
+ input: undefined,
37
+ path: [${H}]
38
+ });
39
+ if (ctx && ctx.abortEarly) {
40
+ payload.value = newResult;
41
+ return payload;
42
+ }
43
+ }
44
+
45
+ if (${_}_present) {
46
+ newResult[${H}] = ${_}.value;
47
+ }
48
+
49
+ `);else if(y.write(`
50
+ if (${_}.issues.length) {${C(_,H)}
51
+ }
52
+ `),jn==="defaulted")y.write(`newResult[${H}] = ${_}.value;`);else y.write(`
53
+ if (${_}.value !== undefined || ${ke}) {
54
+ newResult[${H}] = ${_}.value;
55
+ }
56
+ `)}return y.write("payload.value = newResult;"),y.write("return payload;"),y.compile()},i,s=We,c=!G.jitless,l=c&&Sa.value,p=t.catchall,f;e._zod.parse=(d,h)=>{f??(f=o.value);let b=d.value;if(!s(b))return d.issues.push({expected:"object",code:"invalid_type",input:b,inst:e}),d;if(c&&l&&h?.async===!1&&h.jitless!==!0){if(!i)i=a(t.shape);if(d=i(d,h),!p)return d;return $s([],b,d,h,f,e,h?.abortEarly===!0)}return n(d,h)}});function Fi(e,t,n,o){for(let a of e)if(a.issues.length===0)return t.value=a.value,t;let r=e.filter((a)=>!pe(a));if(r.length===1)return t.value=r[0].value,r[0];return t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map((a)=>a.issues.map((i)=>me(i,o,X())))}),t}var Eo=m("$ZodUnion",(e,t)=>{I.init(e,t),S(e,"optin",(o)=>o.def.options.some((r)=>r._zod.optin==="defaulted")?"defaulted":o.def.options.some((r)=>r._zod.optin!==void 0)?"optional":void 0),S(e,"optout",(o)=>o.def.options.some((r)=>r._zod.optout==="optional")?"optional":void 0),S(e,"values",(o)=>{if(o.def.options.every((r)=>r._zod.values))return new Set(o.def.options.flatMap((r)=>Array.from(r._zod.values)));return}),S(e,"pattern",(o)=>{if(o.def.options.every((r)=>r._zod.pattern)){let r=o.def.options.map((a)=>a._zod.pattern);return new RegExp(`^(${r.map((a)=>Ee(a.source)).join("|")})$`)}return});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(o,r)=>{if(n)return n(o,r);let a=!1,i=[];for(let s of t.options){let c=s._zod.run({value:o.value,issues:[]},r);if(c instanceof Promise)i.push(c),a=!0;else{if(c.issues.length===0)return c;i.push(c)}}if(!a)return Fi(i,o,e,r);return Promise.all(i).then((s)=>Fi(s,o,e,r))}});function Bd(e){let t=new Map;for(let n of e.options){let o=n._zod.propValues?.[e.discriminator];if(!o||o.size===0)throw Error(`Invalid discriminated union option at index "${e.options.indexOf(n)}"`);for(let r of o)if(t.has(r)){if(r!==void 0)throw Error(`Duplicate discriminator value "${String(r)}"`);t.set(r,null)}else t.set(r,n)}return t}var Os=m("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,Eo.init(e,t);let n=e._zod.parse;S(e,"propValues",(r)=>{let a={},i=0;for(let s of r.def.options){let c=s._zod.propValues;if(!c||Object.keys(c).length===0)throw Error(`Invalid discriminated union option at index "${r.def.options.indexOf(s)}"`);if(c[r.def.discriminator]?.has(void 0))i++;for(let[u,l]of Object.entries(c)){if(!Object.prototype.hasOwnProperty.call(a,u))te(a,u,new Set);for(let p of l)a[u].add(p)}}if(!r.def.unionFallback&&i>1)a[r.def.discriminator]?.delete(void 0);return a}),t.options.forEach((r,a)=>{let i=ft(r._zod.def);if(i&&!Object.prototype.hasOwnProperty.call(i,t.discriminator))throw Error(`Invalid discriminated union option at index "${a}"`)});let o=mt(()=>Bd(t));e._zod.parse=(r,a)=>{let i=r.value;if(!We(i))return r.issues.push({code:"invalid_type",expected:"object",input:i,inst:e}),r;let s=i?.[t.discriminator],c=o.value.get(s);if(c&&(s!==void 0||a.direction!=="backward"))return c._zod.run(r,a);if(t.unionFallback||a.direction==="backward")return n(r,a);return r.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(o.value.keys()).filter((u)=>o.value.get(u)!==null),input:i,path:[t.discriminator],inst:e}),r}}),Ps=m("$ZodIntersection",(e,t)=>{I.init(e,t),e._zod.parse=(n,o)=>{let r=n.value,a=t.left._zod.run({value:r,issues:[]},o),i=t.right._zod.run({value:r,issues:[]},o);if(a instanceof Promise||i instanceof Promise)return Promise.all([a,i]).then(([c,u])=>Mi(n,c,u));return Mi(n,a,i)}});function _o(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(De(e)&&De(t)){let n=Object.keys(t),o=Object.keys(e).filter((a)=>n.indexOf(a)!==-1),r={...e,...t};if(Object.prototype.hasOwnProperty.call(r,"__proto__"))delete r.__proto__;for(let a of o){if(a==="__proto__")continue;let i=_o(e[a],t[a]);if(!i.valid)return{valid:!1,mergeErrorPath:[a,...i.mergeErrorPath]};r[a]=i.data}return{valid:!0,data:r}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let o=0;o<e.length;o++){let r=e[o],a=t[o],i=_o(r,a);if(!i.valid)return{valid:!1,mergeErrorPath:[o,...i.mergeErrorPath]};n.push(i.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Mi(e,t,n){let o=new Map,r,a=new Map,i=(u,l)=>{let p;if(u.code==="unrecognized_keys"&&!u.path?.length)r??(r=u),p=u.keys;else if(u.code==="invalid_key"&&u.origin==="record"&&u.path?.length===1){let f=String(u.path[0]);if(!a.has(f))a.set(f,u);p=[f]}else return!1;for(let f of p){if(!o.has(f))o.set(f,{});o.get(f)[l]=!0}return!0};for(let u of t.issues)if(!i(u,"l"))e.issues.push(u);for(let u of n.issues)if(!i(u,"r"))e.issues.push(u);let s=[...o].filter(([,u])=>u.l&&u.r).map(([u])=>u);if(s.length){let u=r?s.filter((l)=>r.keys.includes(l)):[];if(u.length)e.issues.push({...r,keys:u});for(let l of s)if(!u.includes(l)&&a.has(l))e.issues.push(a.get(l))}let c=_o(t.value,n.value);if(!c.valid){if(pe(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var Ts=m("$ZodRecord",(e,t)=>{I.init(e,t);let n=G.memoizer;n?.attach(e),e._zod.parse=(o,r)=>{let a=o.value;if(!De(a))return o.issues.push({expected:"record",code:"invalid_type",input:a,inst:e}),o;let i=[],s=t.keyType._zod.values;if(s&&!t.partial){o.value=n?n.alloc(e,o,{},r):{};let c=new Set;for(let l of s)if(typeof l==="string"||typeof l==="number"||typeof l==="symbol"){if(c.add(typeof l==="number"?l.toString():l),l==="__proto__")continue;let p=t.keyType._zod.run({value:l,issues:[]},r);if(p instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(p.issues.length){o.issues.push({code:"invalid_key",origin:"record",issues:p.issues.map((h)=>me(h,r,X())),input:l,path:[l],inst:e});continue}let f=p.value;if(f==="__proto__")continue;let d=t.valueType._zod.run({value:a[l],issues:[]},r);if(d instanceof Promise)i.push(d.then((h)=>{if(h.issues.length)o.issues.push(...$e(l,h.issues));o.value[f]=h.value}));else{if(d.issues.length)o.issues.push(...$e(l,d.issues));o.value[f]=d.value}}let u;for(let l in a)if(!c.has(l))if(t.mode==="loose"){if(l==="__proto__")continue;o.value[l]=a[l]}else u=u??[],u.push(l);if(u&&u.length>0)o.issues.push({code:"unrecognized_keys",input:a,inst:e,keys:u,continue:!0})}else{o.value=n?n.alloc(e,o,{},r):{};let c;for(let u of Reflect.ownKeys(a)){if(u==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(a,u))continue;let l=t.keyType._zod.run({value:u,issues:[]},r);if(l instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof u==="string"&&Ge.test(u)&&l.issues.length){let h=t.keyType._zod.run({value:Number(u),issues:[]},r);if(h instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(h.issues.length===0)l=h}if(l.issues.length){if(t.mode==="loose")o.value[u]=a[u];else if(s)c=c??[],c.push(u);else o.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map((h)=>me(h,r,X())),input:u,path:[u],inst:e});continue}let f=l.value;if(f==="__proto__")continue;let d=t.valueType._zod.run({value:a[u],issues:[]},r);if(d instanceof Promise)i.push(d.then((h)=>{if(h.issues.length)o.issues.push(...$e(u,h.issues));o.value[f]=h.value}));else{if(d.issues.length)o.issues.push(...$e(u,d.issues));o.value[f]=d.value}}if(c&&c.length>0)o.issues.push({code:"unrecognized_keys",input:a,inst:e,keys:c,continue:!0})}if(i.length)return Promise.all(i).then(()=>o);return o}});var Ds=m("$ZodEnum",(e,t)=>{I.init(e,t);let n=dt(t.entries),o=new Set(n);e._zod.values=o,S(e,"pattern",(r)=>{let a=dt(r.def.entries).filter((i)=>za.has(typeof i));return new RegExp(a.length?`^(${a.map((i)=>_e(i.toString())).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(r,a)=>{let i=r.value;if(o.has(i))return r;return r.issues.push({code:"invalid_value",values:n,input:i,inst:e}),r}}),Rs=m("$ZodLiteral",(e,t)=>{I.init(e,t);let n=new Set(t.values);e._zod.values=n,S(e,"pattern",(o)=>{let r=o.def.values;return new RegExp(r.length?`^(${r.map((a)=>typeof a==="string"?_e(a):a?_e(a.toString()):String(a)).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(o,r)=>{let a=o.value;if(n.has(a))return o;return o.issues.push({code:"invalid_value",values:t.values,input:a,inst:e}),o}});var Ns=m("$ZodTransform",(e,t)=>{I.init(e,t),e._zod.optin="optional",G.memoizer?.guard(e),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new ht(e.constructor.name);let r=t.transform(n.value,n);if(o.async)return(r instanceof Promise?r:Promise.resolve(r)).then((i)=>(n.value=i,n));if(r instanceof Promise)throw new fe;return n.value=r,n}});function Ki(e,t){return e.value=t.issues.length?void 0:t.value,e}var $o=m("$ZodOptional",(e,t)=>{I.init(e,t),S(e,"optin",(n)=>n.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),e._zod.optout="optional",S(e,"values",(n)=>{let o=n.def.innerType._zod.values;return o?new Set([...o,void 0]):void 0}),S(e,"pattern",(n)=>{let o=n.def.innerType._zod.pattern;return o?new RegExp(`^(${Ee(o.source)})?$`):void 0}),e._zod.parse=(n,o)=>{if(n.value===void 0){if(t.innerType._zod.optin!=="defaulted")return n;let r=t.innerType._zod.run({value:n.value,issues:[]},o);if(r instanceof Promise)return r.then((a)=>Ki(n,a));return Ki(n,r)}return t.innerType._zod.run(n,o)}}),js=m("$ZodExactOptional",(e,t)=>{$o.init(e,t),S(e,"values",(n)=>n.def.innerType._zod.values),S(e,"pattern",(n)=>n.def.innerType._zod.pattern),e._zod.parse=(n,o)=>t.innerType._zod.run(n,o)}),Zs=m("$ZodNullable",(e,t)=>{I.init(e,t),S(e,"optin",(n)=>n.def.innerType._zod.optin),S(e,"optout",(n)=>n.def.innerType._zod.optout),S(e,"pattern",(n)=>{let o=n.def.innerType._zod.pattern;return o?new RegExp(`^(${Ee(o.source)}|null)$`):void 0}),S(e,"values",(n)=>n.def.innerType._zod.values?new Set([...n.def.innerType._zod.values,null]):void 0),e._zod.parse=(n,o)=>{if(n.value===null)return n;return t.innerType._zod.run(n,o)}}),Ls=m("$ZodDefault",(e,t)=>{I.init(e,t),e._zod.optin="defaulted",S(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);if(n.value===void 0)return n.value=t.defaultValue,n;let r=t.innerType._zod.run(n,o);if(r instanceof Promise)return r.then((a)=>Vi(a,t));return Vi(r,t)}});function Vi(e,t){if(e.value===void 0)e.value=t.defaultValue;return e}var Us=m("$ZodPrefault",(e,t)=>{I.init(e,t),e._zod.optin="defaulted",S(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);if(n.value===void 0)n.value=t.defaultValue;return t.innerType._zod.run(n,o)}}),Fs=m("$ZodNonOptional",(e,t)=>{I.init(e,t),S(e,"values",(n)=>{let o=n.def.innerType._zod.values;return o?new Set([...o].filter((r)=>r!==void 0)):void 0}),e._zod.parse=(n,o)=>{let r=t.innerType._zod.run(n,o);if(r instanceof Promise)return r.then((a)=>qi(a,e));return qi(r,e)}});function qi(e,t){if(!e.issues.length&&e.value===void 0)e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t});return e}function Bi(e,t,n,o){if(!t.issues.length){if(e.value=t.value,t.memo)e.memo=!0;return e}return e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map((r)=>me(r,o,X()))},input:e.value}),e}var Ms=m("$ZodCatch",(e,t)=>{I.init(e,t),S(e,"optin",(n)=>n.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),S(e,"optout",(n)=>n.def.innerType._zod.optout),S(e,"values",(n)=>n.def.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);let r=t.innerType._zod.run({value:n.value,issues:[]},o);if(r instanceof Promise)return r.then((a)=>Bi(n,a,t,o));return Bi(n,r,t,o)}});var Ks=m("$ZodPipe",(e,t)=>{I.init(e,t),S(e,"values",(n)=>n.def.in._zod.values),S(e,"optin",(n)=>n.def.in._zod.optin),S(e,"optout",(n)=>n.def.out._zod.optout),S(e,"propValues",(n)=>n.def.in._zod.propValues),e._zod.parse=(n,o)=>{if(o.direction==="backward"){let a=t.out._zod.run(n,o);if(a instanceof Promise)return a.then((i)=>dn(i,t.in,o));return dn(a,t.in,o)}let r=t.in._zod.run(n,o);if(r instanceof Promise)return r.then((a)=>dn(a,t.out,o));return dn(r,t.out,o)}});function dn(e,t,n){if(e.issues.some((o)=>o.code!=="unrecognized_keys"))return e.aborted=!0,e;return t._zod.run({value:e.value,issues:e.issues},n)}var Vs=m("$ZodReadonly",(e,t)=>{I.init(e,t),S(e,"propValues",(n)=>n.def.innerType._zod.propValues),S(e,"values",(n)=>n.def.innerType._zod.values),S(e,"optin",(n)=>n.def.innerType?._zod?.optin),S(e,"optout",(n)=>n.def.innerType?._zod?.optout),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);let r=t.innerType._zod.run(n,o);if(r instanceof Promise)return r.then(Hi);return Hi(r)}});function Hi(e){if(!e.memo)e.value=Object.freeze(e.value);return e}function Hd(e){let t=e._zod.def,n=t.pattern,o=!!t.format?.includes("int"),r,a;for(let s of t.checks??[]){let c=s._zod.def;if(c.pattern)n=c.pattern;o||(o=!!c.format?.includes("int"));let u=c.minimum??c.length,l=c.maximum??c.length;if(u!==void 0&&(r===void 0||u>r))r=u;if(l!==void 0&&(a===void 0||l<a))a=l}if(n)return n.source;if(r!==void 0&&a!==void 0&&r>a)return"(?!)";if(r!==void 0||a!==void 0)return xi({minimum:r,maximum:a}).source;let i=e._zod.pattern;return(o&&i===Ge?un:i)?.source}function So(e){let t=e._zod.def,n=e._zod.pattern?.source,o=t.innerType??e._zod.innerType;if(o){let r=o._zod.pattern?.source,a=So(o);if(n&&r&&a&&a!==r)return n.replace(Ee(r),()=>Ee(a));return n}if(t.options){let r=t.options.map(So);if(r.every(Boolean))return`^(${r.map((a)=>Ee(a)).join("|")})$`}return Hd(e)}var qs=m("$ZodTemplateLiteral",(e,t)=>{I.init(e,t);let n=[];for(let o of t.parts)if(typeof o==="object"&&o!==null){let r=So(o);if(!r)throw Error(`Invalid template literal part, no pattern found: ${[...o._zod.traits].shift()}`);n.push(Ee(r))}else if(o===null||Ca.has(typeof o))n.push(_e(`${o}`));else throw Error(`Invalid template literal part: ${o}`);e._zod.pattern=new RegExp(`^${n.join("")}$`),e._zod.parse=(o,r)=>{if(typeof o.value!=="string")return o.issues.push({input:o.value,inst:e,expected:"string",code:"invalid_type"}),o;if(e._zod.pattern.lastIndex=0,!e._zod.pattern.test(o.value))return o.issues.push({input:o.value,inst:e,code:"invalid_format",format:t.format??"template_literal",pattern:e._zod.pattern.source}),o;return o}});var Bs=m("$ZodCustom",(e,t)=>{V.init(e,t),I.init(e,t),e._zod.parse=(n,o)=>n,e._zod.check=(n)=>{let o=n.value,r=t.fn(o);if(r instanceof Promise)return r.then((a)=>Wi(a,n,o,e));Wi(r,n,o,e);return}});function Wi(e,t,n,o){if(!e){let r={code:"custom",input:n,inst:o,path:[...o._zod.def.path??[]],continue:!o._zod.def.abort};if(o._zod.def.params)r.params=o._zod.def.params;t.issues.push(Re(r))}}class Ws extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform");this.name="ZodCyclicError"}}var Oo="~memo",Hs=[];function Gs(e){return e!==null&&typeof e==="object"}function Io(e){return e.map((t)=>t.path?{...t,path:t.path.slice()}:{...t})}var Js=new WeakMap,kt=0,kn=1,bt=2;function bn(e,t,n){let o=Js.get(e);if(o!==void 0)return o?bt:kt;if(t.has(e))return bt;t.add(e);let r=kt,a=(l)=>{if(r!==bt&&l?._zod){let p=bn(l,t,n);if(p>r)r=p}},i=(l,p)=>{let f=kt;for(let d of Reflect.ownKeys(l)){let h=Object.getOwnPropertyDescriptor(l,d);if(p&&!h.enumerable)continue;let b=h.get?kn:h.value?._zod?bn(h.value,t,n):kt;if(b>f)f=b}return f},s=(l)=>{if(l>r)r=l},c=e._zod.def,u=c.type;switch(u){case"object":{let l=ft(c);s(l?i(l,!0):kn),a(c.catchall);break}case"array":a(c.element);break;case"tuple":for(let l of c.items)a(l);a(c.rest);break;case"record":case"map":a(c.keyType),a(c.valueType);break;case"set":a(c.valueType);break;case"union":for(let l of c.options)a(l);break;case"intersection":a(c.left),a(c.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":a(c.innerType);break;case"pipe":a(c.in),a(c.out);break;case"function":a(c.input),a(c.output);break;case"lazy":{let l=c._cachedInner??(n?e._zod.innerType:void 0);s(l?bn(l,t,!1):kn);break}case"template_literal":case"string":case"number":case"int":case"boolean":case"bigint":case"symbol":case"undefined":case"null":case"void":case"never":case"any":case"unknown":case"date":case"nan":case"enum":case"literal":case"file":case"transform":case"custom":break;default:for(let l in c){let p=Object.getOwnPropertyDescriptor(c,l);if(!p||p.get)continue;let f=p.value;if(!f||typeof f!=="object")continue;if(f._zod)a(f);else if(Array.isArray(f))for(let d of f)a(d)}}return t.delete(e),Wd(e,r)}function Wd(e,t){if(t!==kn)Js.set(e,t===bt);return t}function Gd(e,t){let n=e.buckets.get(t);if(!n)n=new WeakMap,e.buckets.set(t,n);return n}var gn,yn=[],Jd={alloc(e,t,n){let o=gn;if(!o)return n;gn=void 0;let r={value:n,issues:null};return o.set(t.value,r),yn.push(r),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let n=e._zod.parse,o=(r,a)=>{if(a.direction!=="backward"&&Xd(a,r.value))throw new Ws;return n(r,a)};if(e._zod.parse=o,e._zod.run===n)e._zod.run=o})},attach(e){var t;let n,o=!1,r,a;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let i=e._zod.parse,s=(c,u)=>{if(n===void 0){let v=bn(e,new Set,!1);if(v===kt){if(e._zod.parse=i,e._zod.run===s)e._zod.run=i;return i(c,u)}if(v===bt||o)n=!0;else o=!0}let l=c.value;if(!Gs(l))return i(c,u);let p=u[Oo];if(!p)p={buckets:new WeakMap,backEdges:void 0},u[Oo]=p;let f;if(r===u)f=a;else f=Gd(p,e),r=u,a=f;let d=f.get(l);if(d){if(c.value=d.value,d.issues){if(d.issues.length)c.issues.push(...Io(d.issues))}else c.memo=!0,p.backEdges??(p.backEdges=new WeakSet),p.backEdges.add(d.value);return c}gn=f;let h=yn.length,b=i(c,u);gn=void 0;let y=yn.length>h?yn.pop():void 0;if(b instanceof Promise)return b.then((v)=>{if(y)y.issues=v.issues.length?Io(v.issues):Hs;return v});if(y)y.issues=b.issues.length?Io(b.issues):Hs;return b};if(e._zod.parse=s,e._zod.run===i)e._zod.run=s})}};function Xs(){return Jd}function Xd(e,t){let n=e[Oo]?.backEdges;return n!==void 0&&Gs(t)&&n.has(t)}var Yd=()=>{let e={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function t(a){return e[a]??null}let n={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},o={nan:"NaN"};function r(a,i){if(a==="number"&&typeof i==="number"&&!Number.isFinite(i))return String(i);return o[a]??a}return(a)=>{switch(a.code){case"invalid_type":{let i=r(a.expected),s=Oa(a.input),c=r(s,a.input);return`Invalid input: expected ${i}, received ${c}`}case"invalid_value":if(a.values.length===1)return`Invalid input: expected ${co(a.values[0])}`;return`Invalid option: expected one of ${ao(a.values,"|")}`;case"too_big":{let i=a.exact?"exactly ":a.inclusive?"<=":"<",s=t(a.origin);if(s)return`Too big: expected ${a.origin??"value"} to have ${i}${a.maximum.toString()} ${s.unit??"elements"}`;return`Too big: expected ${a.origin??"value"} to be ${i}${a.maximum.toString()}`}case"too_small":{let i=a.exact?"exactly ":a.inclusive?">=":">",s=t(a.origin);if(s)return`Too small: expected ${a.origin} to have ${i}${a.minimum.toString()} ${s.unit}`;return`Too small: expected ${a.origin} to be ${i}${a.minimum.toString()}`}case"invalid_format":{let i=a;if(i.format==="starts_with")return`Invalid string: must start with "${i.prefix}"`;if(i.format==="ends_with")return`Invalid string: must end with "${i.suffix}"`;if(i.format==="includes")return`Invalid string: must include "${i.includes}"`;if(i.format==="regex")return`Invalid string: must match pattern ${i.pattern}`;return`Invalid ${n[i.format]??a.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${a.divisor}`;case"unrecognized_keys":return`Unrecognized key${a.keys.length>1?"s":""}: ${ao(a.keys,", ")}`;case"invalid_key":return`Invalid key in ${a.origin}`;case"invalid_union":if(a.options&&Array.isArray(a.options)&&a.options.length>0)return`Invalid discriminator value. Expected ${a.options.map((s)=>`'${s}'`).join(" | ")}`;if(a.inclusive===!1)return"Invalid input: more than one option matched";return"Invalid input";case"invalid_element":return`Invalid value in ${a.origin}`;default:return"Invalid input"}}};function Po(){return{localeError:Yd()}}var Ys;class Qs{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];if(this._map.set(e,n),n&&typeof n==="object"&&"id"in n)this._idmap.set(n.id,e);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);if(t&&typeof t==="object"&&"id"in t)this._idmap.delete(t.id);return this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let o={...n,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function Qd(){return new Qs}(Ys=globalThis).__zod_globalRegistry??(Ys.__zod_globalRegistry=Qd());var Ne=globalThis.__zod_globalRegistry;function ec(e){if(e.checks)e.checks=[...e.checks];return e}function tc(e,t){return new e(ec({type:"string",...x(t)}))}function To(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...x(t)})}function nc(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...x(t)})}function oc(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...x(t)})}function rc(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...x(t)})}function ac(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...x(t)})}function ic(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...x(t)})}function Do(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...x(t)})}function sc(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...x(t)})}function cc(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...x(t)})}function uc(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...x(t)})}function lc(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...x(t)})}function dc(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...x(t)})}function pc(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...x(t)})}function mc(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...x(t)})}function fc(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...x(t)})}function hc(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...x(t)})}function gc(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...x(t)})}function yc(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...x(t)})}function kc(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...x(t)})}function bc(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...x(t)})}function vc(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...x(t)})}function xc(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...x(t)})}function wc(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...x(t)})}function _c(e,t){return new e({type:"string",format:"date",check:"string_format",...x(t)})}function Sc(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...x(t)})}function zc(e,t){return new e({type:"string",format:"duration",check:"string_format",...x(t)})}function Cc(e,t){return new e(ec({type:"number",checks:[],...x(t)}))}function Ac(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...x(t)})}function Ec(e,t){return new e({type:"boolean",...x(t)})}function $c(e){return new e({type:"unknown"})}function Ic(e,t){return new e({type:"never",...x(t)})}function vn(e,t){return new vo({check:"less_than",...x(t),value:e,inclusive:!1})}function vt(e,t){return new vo({check:"less_than",...x(t),value:e,inclusive:!0})}function xn(e,t){return new xo({check:"greater_than",...x(t),value:e,inclusive:!1})}function xt(e,t){return new xo({check:"greater_than",...x(t),value:e,inclusive:!0})}function wn(e,t){return new zi({check:"multiple_of",...x(t),value:e})}function _n(e,t){return new Ai({check:"max_length",...x(t),maximum:e})}function Je(e,t){return new Ei({check:"min_length",...x(t),minimum:e})}function Sn(e,t){return new $i({check:"length_equals",...x(t),length:e})}function Ro(e,t){return new Ii({check:"string_format",format:"regex",...x(t),pattern:e})}function No(e){return new Oi({check:"string_format",format:"lowercase",...x(e)})}function jo(e){return new Pi({check:"string_format",format:"uppercase",...x(e)})}function Zo(e,t){return new Ti({check:"string_format",format:"includes",...x(t),includes:e})}function Lo(e,t){return new Di({check:"string_format",format:"starts_with",...x(t),prefix:e})}function Uo(e,t){return new Ri({check:"string_format",format:"ends_with",...x(t),suffix:e})}function Ie(e){return new Ni({check:"overwrite",tx:e})}function Fo(e){return Ie((t)=>t.normalize(e))}function Mo(){return Ie((e)=>e.trim())}function Ko(){return Ie((e)=>e.toLowerCase())}function Vo(){return Ie((e)=>e.toUpperCase())}function qo(){return Ie((e)=>_a(e))}function Oc(e,t,n){return new e({type:"array",element:t,...x(n)})}function Pc(e,t,n){return new e({type:"custom",check:"custom",fn:t,...x(n)})}function Tc(e,t){let n=e1((o)=>(o.addIssue=(r)=>{if(typeof r==="string")o.issues.push(Re(r,o.value,n._zod.def));else{let a=r;if(a.fatal)a.continue=!1;if(a.code??(a.code="custom"),!("input"in a))a.input=o.value;a.inst??(a.inst=n),a.continue??(a.continue=!n._zod.def.abort),o.issues.push(Re(a))}},e(o.value,o)),t);return n}function e1(e,t){let n=new V({check:"custom",...x(t)});return n._zod.check=e,n}function wt(e,...t){for(let n of t)for(let o of Reflect.ownKeys(n))if(Object.prototype.propertyIsEnumerable.call(n,o))te(e,o,n[o]);return e}function Ho(e){let t=e?.target??"draft-2020-12";if(t==="draft-4")t="draft-04";if(t==="draft-7")t="draft-07";return{processors:e.processors??{},metadataRegistry:e?.metadata??Ne,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function Se(e,t,n,o,r){let a=typeof t.unrepresentable==="function"?t.unrepresentable({zodSchema:e,path:o.path,message:r}):t.unrepresentable;if(a==="any")return!1;if(a===void 0||a==="throw")throw Error(r);return Object.assign(n,a),!0}function j(e,t,n={path:[],schemaPath:[]}){var o;let r=e._zod.def,a=t.seen.get(e);if(a){if(a.count++,n.schemaPath.includes(e))a.cycle=n.path;return a.schema}let i={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,i),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)i.schema=s;else{let l={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,i.schema,l);else{let f=i.schema,d=t.processors[r.type];if(!d)throw Error(`[toJSONSchema]: Non-representable type encountered: ${r.type}`);d(e,t,f,l)}let p=e._zod.parent;if(p){if(!i.ref)i.ref=p;j(p,t,l),t.seen.get(p).isParent=!0}}let c=t.metadataRegistry.get(e);if(c)wt(i.schema,c);if(t.io==="input"&&B(e))delete i.schema.examples,delete i.schema.default;if(t.io==="input"&&"_prefault"in i.schema)(o=i.schema).default??(o.default=i.schema._prefault);return delete i.schema._prefault,t.seen.get(e).schema}function Dc(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Wo(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let o=new Map;for(let i of e.seen.entries()){let s=e.metadataRegistry.get(i[0])?.id;if(s){let c=o.get(s);if(c&&c!==i[0])throw Error(`Duplicate schema id "${s}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);o.set(s,i[0])}}let r=(i)=>{let s=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let p=e.external.registry.get(i[0])?.id,f=e.external.uri??((h)=>h);if(p)return{ref:f(p)};let d=i[1].defId??i[1].schema.id??`schema${e.counter++}`;return i[1].defId=d,{defId:d,ref:`${f("__shared")}#/${s}/${Dc(d)}`}}let c="#",u=`${c}/${s}/`;if(i[1]===n&&!i[1].schema.id)return{ref:c};let l=i[1].schema.id??`__schema${e.counter++}`;return{defId:l,ref:u+Dc(l)}},a=(i)=>{if(i[1].schema.$ref)return;let s=i[1],{ref:c,defId:u}=r(i);if(s.def={...s.schema},u)s.defId=u;let l=s.schema;for(let p in l)delete l[p];l.$ref=c};if(e.cycles==="throw")for(let i of e.seen.entries()){let s=i[1];if(s.cycle)throw Error(`Cycle detected: #/${s.cycle?.join("/")}/<root>
57
+
58
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let i of e.seen.entries()){let s=i[1];if(t===i[0]){a(i);continue}if(e.external){let u=e.external.registry.get(i[0])?.id;if(t!==i[0]&&u){a(i);continue}}if(e.metadataRegistry.get(i[0])?.id){a(i);continue}if(s.cycle){a(i);continue}if(s.count>1){if(e.reused==="ref")a(i)}}if(e.external)e.sharedDefsExtractedFor=e.external}function jc(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let o of t){if(!o||typeof o!=="object")return;jc(o);let r=Object.keys(o);if(r.length!==1||r[0]!=="type")return;let a=o.type;for(let i of Array.isArray(a)?a:[a]){if(typeof i!=="string")return;if(!n.includes(i))n.push(i)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var Zc=new Set(["type","properties","required","additionalProperties"]),Rc=["oneOf","anyOf"];function Nc(e){let t=e.additionalProperties;if(t===void 0||t===!1||typeof t!=="object"||t===null)return null;return Object.keys(t).length?t:null}function Bo(e){let t=[];for(let a of e){if(typeof a!=="object"||a.type!=="object")return null;for(let i in a)if(!Zc.has(i))return null;t.push(a)}let n={},o=new Set;for(let a of t){for(let i in a.properties){if(Object.prototype.hasOwnProperty.call(n,i))continue;let s=[];for(let u of t){let l=u.properties?.[i]??Nc(u);if(l===null||l===void 0)continue;if(!s.some((p)=>JSON.stringify(p)===JSON.stringify(l)))s.push(l)}let c=s.length===1?s[0]:Bo(s)??{allOf:s};te(n,i,c)}for(let i of a.required??[])o.add(i)}let r={type:"object",properties:n};if(o.size)r.required=[...o];if(t.every((a)=>a.additionalProperties===!1))r.additionalProperties=!1;else{let a=[];for(let i of t){let s=Nc(i);if(s&&!a.some((c)=>JSON.stringify(c)===JSON.stringify(s)))a.push(s)}if(a.length===1)r.additionalProperties=a[0];else if(a.length>1)r.additionalProperties={allOf:a}}return r}function t1(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let r of Zc)if(r in e)return;let n=t.filter((r)=>Rc.some((a)=>Array.isArray(r[a]))),o=null;if(!n.length)o=Bo(t);else{let r=n[0],a=Rc.find((c)=>Array.isArray(r[c]));if(Object.keys(r).length!==1)return;let i=t.filter((c)=>c!==r),s=r[a].map((c)=>Bo([...i,c]));if(s.some((c)=>!c))return;o={[a]:s}}if(!o)return;delete e.allOf,wt(e,o)}function Go(e,t){let n=e.seen.get(t);if(!n)throw Error("Unprocessed schema. This is a bug in Zod.");let o=(s)=>{let c=e.seen.get(s);if(c.ref===null)return;let u=c.def??c.schema,l={...u},p=c.ref;if(c.ref=null,p){o(p);let d=e.seen.get(p),h=d.schema;if(h.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"))u.allOf=u.allOf??[],u.allOf.push(h);else wt(u,h);if(wt(u,l),s._zod.parent===p)for(let y in u){if(y==="$ref"||y==="allOf")continue;if(!(y in l))delete u[y]}if(h.$ref&&d.def)for(let y in u){if(y==="$ref"||y==="allOf")continue;if(y in d.def&&JSON.stringify(u[y])===JSON.stringify(d.def[y]))delete u[y]}}let f=s._zod.parent;if(f&&f!==p){o(f);let d=e.seen.get(f);if(d?.schema.$ref){if(u.$ref=d.schema.$ref,d.def)for(let h in u){if(h==="$ref"||h==="allOf")continue;if(h in d.def&&JSON.stringify(u[h])===JSON.stringify(d.def[h]))delete u[h]}}}e.override({zodSchema:s,jsonSchema:u,path:c.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let s of[...e.seen.entries()].reverse())o(s[0]);if(e.target!=="openapi-3.0")for(let s of e.seen.entries())jc(s[1].def??s[1].schema);for(let s of e.deferred)s();if(e.intersections.length){let s=new Map;for(let c of e.seen.values())for(let u of[c.schema,c.def]){let l=u?.allOf;if(!Array.isArray(l))continue;let p=s.get(l);if(p)p.push(u);else s.set(l,[u])}for(let c of e.intersections)for(let u of s.get(c)??[])t1(u)}}let r={};if(e.target==="draft-2020-12")r.$schema="https://json-schema.org/draft/2020-12/schema";else if(e.target==="draft-07")r.$schema="http://json-schema.org/draft-07/schema#";else if(e.target==="draft-04")r.$schema="http://json-schema.org/draft-04/schema#";else if(e.target==="openapi-3.0");if(e.external?.uri){let s=e.external.registry.get(t)?.id;if(!s)throw Error("Schema is missing an `id` property");r.$id=e.external.uri(s)}wt(r,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;if(a!==void 0&&r.id===a)delete r.id;let i=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let s of e.seen.entries()){let c=s[1];if(c.def&&c.defId){if(c.def.id===c.defId)delete c.def.id;te(i,c.defId,c.def)}}if(e.external)e.sharedEmitDoneFor=e.external;if(e.external);else if(Object.keys(i).length>0)if(e.target==="draft-2020-12")r.$defs=i;else r.definitions=i;try{let s=JSON.parse(JSON.stringify(r));return Object.defineProperty(s,"~standard",{value:{...t["~standard"],jsonSchema:{input:_t(t,"input",e.processors),output:_t(t,"output",e.processors)}},enumerable:!1,writable:!1}),s}catch(s){throw Error("Error converting schema to JSON.")}}function B(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let o=e._zod.def;if(o.type==="transform")return!0;if(o.type==="array")return B(o.element,n);if(o.type==="set")return B(o.valueType,n);if(o.type==="lazy")return B(o.getter(),n);if(o.type==="promise"||o.type==="optional"||o.type==="nonoptional"||o.type==="nullable"||o.type==="readonly"||o.type==="default"||o.type==="prefault"||o.type==="catch")return B(o.innerType,n);if(o.type==="intersection")return B(o.left,n)||B(o.right,n);if(o.type==="record"||o.type==="map")return B(o.keyType,n)||B(o.valueType,n);if(o.type==="pipe"){if(e._zod.traits.has("$ZodCodec"))return!0;return B(o.in,n)||B(o.out,n)}if(o.type==="object"){for(let r in o.shape)if(B(o.shape[r],n))return!0;return!1}if(o.type==="union"){for(let r of o.options)if(B(r,n))return!0;return!1}if(o.type==="tuple"){for(let r of o.items)if(B(r,n))return!0;if(o.rest&&B(o.rest,n))return!0;return!1}return!1}var Lc=(e,t={})=>(n)=>{let o=Ho({...n,processors:t});return j(e,o),Wo(o,e),Go(o,e)},_t=(e,t,n={})=>(o)=>{let{libraryOptions:r,target:a}=o??{},i=Ho({...r??{},target:a,io:t,processors:n});return j(e,i),Wo(i,e),Go(i,e)};var Xe=(e,t,n)=>{if(e[t]===void 0||n>e[t])e[t]=n},Ye=(e,t,n)=>{if(e[t]===void 0||n<e[t])e[t]=n},Uc=(e,t)=>{Xe(e,"minimum",t),Ye(e,"maximum",t)},Vc=(e,t)=>{if(e.multipleOf??(e.multipleOf=[]),!e.multipleOf.includes(t))e.multipleOf.push(t)},qc=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},Bc=(e,t)=>{e.mime=e.mime?e.mime.filter((n)=>t.includes(n)):[...t]},Hc=(e,t)=>{if(e.format=t,t.includes("int"))e.isInt=!0},Fc=(e,t)=>Xe(e,"minimum",t.minimum),Mc=(e,t)=>Ye(e,"maximum",t.maximum),Kc=(e)=>(t,n)=>{Hc(t,n.format);let[o,r]=e[n.format];Xe(t,"minimum",o),Ye(t,"maximum",r)},n1={greater_than:(e,t)=>Xe(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>Ye(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>Vc(e,t.value),number_format:Kc(Xt),bigint_format:Kc(uo),min_length:Fc,max_length:Mc,length_equals:(e,t)=>Uc(e,t.length),min_size:Fc,max_size:Mc,size_equals:(e,t)=>Uc(e,t.size),string_format:(e,t)=>{if(Hc(e,t.format),t.pattern)qc(e,t.pattern);if(t.format==="base64"||t.format==="base64url")e.contentEncoding=t.format;if(t.local||t.precision===-1)e.laxFormat=!0},mime_type:(e,t)=>Bc(e,t.mime)};function ne(e){let t={},n=e._zod.def,o=e._zod.traits.has("$ZodCheck")?[e,...n.checks??[]]:n.checks??[];for(let a of o)n1[a._zod.def.check]?.(t,a._zod.def);let r=e._zod.bag;if(r.minimum!==void 0)Xe(t,"minimum",r.minimum);if(r.exclusiveMinimum!==void 0)Xe(t,"exclusiveMinimum",r.exclusiveMinimum);if(r.maximum!==void 0)Ye(t,"maximum",r.maximum);if(r.exclusiveMaximum!==void 0)Ye(t,"exclusiveMaximum",r.exclusiveMaximum);if(r.multipleOf!==void 0)Vc(t,r.multipleOf);if(r.format!==void 0){if(t.format??(t.format=r.format),r.format.includes("int"))t.isInt=!0}if(r.mime)Bc(t,r.mime);for(let a of r.patterns??[])qc(t,a);return t}var o1={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},r1=new Map([[Co,pi],[hn,mi]]),Wc=(e)=>r1.get(e)??e,Gc=(e,t,n,o)=>{let r=n;r.type="string";let{minimum:a,maximum:i,format:s,patterns:c,contentEncoding:u,laxFormat:l}=ne(e);if(typeof a==="number")r.minLength=a;if(typeof i==="number")r.maxLength=i;if(s){if(r.format=o1[s]??s,r.format==="")delete r.format;if(s==="time"||l)delete r.format}if(u)r.contentEncoding=u;if(c&&c.size>0){let p=[...c].map(Wc);if(p.length===1)r.pattern=p[0].source;else if(p.length>1)r.allOf=[...p.map((f)=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))]}},Jc=(e,t,n,o)=>{let r=n,{minimum:a,maximum:i,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:u,isInt:l}=ne(e);r.type=l?"integer":"number";let p=typeof u==="number"&&u>=(a??Number.NEGATIVE_INFINITY),f=typeof c==="number"&&c<=(i??Number.POSITIVE_INFINITY),d=t.target==="draft-04"||t.target==="openapi-3.0";if(p)if(d)r.minimum=u,r.exclusiveMinimum=!0;else r.exclusiveMinimum=u;else if(typeof a==="number")r.minimum=a;if(f)if(d)r.maximum=c,r.exclusiveMaximum=!0;else r.exclusiveMaximum=c;else if(typeof i==="number")r.maximum=i;if(s){let h=new Set;for(let v of s)if(Number.isFinite(v)&&v!==0)h.add(Math.abs(v));else Se(e,t,r,o,`A multipleOf divisor of ${v} cannot be represented in JSON Schema`);let[b,...y]=h;if(b!==void 0)r.multipleOf=b;if(y.length)r.allOf=[...r.allOf??[],...y.map((v)=>({multipleOf:v}))]}},Xc=(e,t,n,o)=>{n.type="boolean"};var Yc=(e,t,n,o)=>{n.not={}};var Qc=(e,t,n,o)=>{};var eu=(e,t,n,o)=>{let r=e._zod.def,a=dt(r.entries);if(a.length===0){n.not={};return}if(a.every((i)=>typeof i==="number"))n.type="number";if(a.every((i)=>typeof i==="string"))n.type="string";n.enum=a},tu=(e,t,n,o)=>{let r=e._zod.def;if(r.values.length===0){n.not={};return}let a=[];for(let i of r.values)if(i===void 0){if(Se(e,t,n,o,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof i==="bigint"){if(Se(e,t,n,o,"BigInt literals cannot be represented in JSON Schema"))return;a.push(Number(i))}else a.push(i);if(a.length===0);else if(a.length===1){let i=a[0];if(n.type=i===null?"null":typeof i,t.target==="draft-04"||t.target==="openapi-3.0")n.enum=[i];else n.const=i}else{if(a.every((i)=>typeof i==="number"))n.type="number";if(a.every((i)=>typeof i==="string"))n.type="string";if(a.every((i)=>typeof i==="boolean"))n.type="boolean";if(a.every((i)=>i===null))n.type="null";n.enum=a}};var nu=(e,t,n,o)=>{let r=n,a=e._zod.pattern;if(!a)throw Error("Pattern not found in template literal");r.type="string",r.pattern=a.source};var ou=(e,t,n,o)=>{Se(e,t,n,o,"Custom types cannot be represented in JSON Schema")};var ru=(e,t,n,o)=>{Se(e,t,n,o,"Transforms cannot be represented in JSON Schema")};var au=(e,t,n,o)=>{let r=n,a=e._zod.def,{minimum:i,maximum:s}=ne(e);if(typeof i==="number")r.minItems=i;if(typeof s==="number")r.maxItems=s;r.type="array",r.items=j(a.element,t,{...o,path:[...o.path,"items"]})};function zn(e){let t=e._zod.def;if(t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform"))return zn(t.out);if(t.type==="catch")return zn(t.innerType);return e._zod.optin}var iu=(e,t,n,o)=>{let r=n,a=e._zod.def,i=a.shape;if(Object.getOwnPropertySymbols(i).length&&Se(e,t,r,o,"Symbol keys cannot be represented in JSON Schema"))return;r.type="object",r.properties={};for(let u in i)te(r.properties,u,j(i[u],t,{...o,path:[...o.path,"properties",u]}));let c=[];for(let u of Object.keys(i)){let l=a.shape[u];if(t.io==="input"?zn(l)===void 0:l._zod.optout===void 0)c.push(u)}if(c.length>0)r.required=c;if(a.catchall?._zod.def.type==="never")r.additionalProperties=!1;else if(!a.catchall){if(t.io==="output")r.additionalProperties=!1}else if(a.catchall)r.additionalProperties=j(a.catchall,t,{...o,path:[...o.path,"additionalProperties"]})},su=(e,t,n,o)=>{let r=e._zod.def,a=r.inclusive===!1,i=r.options.map((s,c)=>j(s,t,{...o,path:[...o.path,a?"oneOf":"anyOf",c]}));if(a)n.oneOf=i;else n.anyOf=i},cu=(e,t,n,o)=>{let r=e._zod.def,a=j(r.left,t,{...o,path:[...o.path,"allOf",0]}),i=j(r.right,t,{...o,path:[...o.path,"allOf",1]}),s=(u)=>("allOf"in u)&&Object.keys(u).length===1,c=[...s(a)?a.allOf:[a],...s(i)?i.allOf:[i]];n.allOf=c,t.intersections.push(c)};function Jo(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let h=e.get(t)?.def;if(!h)return t;let b=Jo(e,h,n);return b===h?t:b}for(let h of["anyOf","oneOf"]){let b=t[h];if(!Array.isArray(b))continue;let y=b.map((v)=>Jo(e,v,n));if(y.some((v,C)=>v!==b[C]))t={...t,[h]:y}}let o=Array.isArray(t.type)?t.type:[t.type],r=!o.includes("string")&&o.some((h)=>h==="number"||h==="integer"),a=t.enum??(t.const!==void 0?[t.const]:void 0);if(!r&&!a?.some((h)=>typeof h==="number"))return t;let{minimum:i,maximum:s,exclusiveMinimum:c,exclusiveMaximum:u,multipleOf:l,format:p,id:f,...d}=t;if(d.enum)d.enum=d.enum.map((h)=>typeof h==="number"?String(h):h);else if(typeof d.const==="number")d.const=String(d.const);if(!r)return d;if(d.type="string",!a)d.pattern=(o.includes("number")?Ge:un).source;return d}var Xo=new WeakMap;function a1(e){let t=new Map;for(let o of e.seen.values())if(o.def&&!t.has(o.schema))t.set(o.schema,o);let n=new Map;for(let o of Xo.get(e)??[]){let r=e.seen.get(o),a=(r?.def??r?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let i=Jo(t,a,new Set);if(i!==a)n.set(a,i)}if(!n.size)return;for(let o of e.seen.values())for(let r of[o.schema,o.def]){let a=r&&n.get(r.propertyNames);if(a)r.propertyNames=a}}var uu=(e,t,n,o)=>{let r=n,a=e._zod.def;r.type="object";let i=a.keyType,s=ne(i).patterns;if(a.mode==="loose"&&s&&s.size>0){let l=j(a.valueType,t,{...o,path:[...o.path,"patternProperties","*"]});r.patternProperties={};for(let p of s)te(r.patternProperties,Wc(p).source,l)}else{if(t.target==="draft-07"||t.target==="draft-2020-12"){r.propertyNames=j(a.keyType,t,{...o,path:[...o.path,"propertyNames"]});let l=Xo.get(t);if(!l)l=[],Xo.set(t,l),t.deferred.push(()=>a1(t));l.push(e)}r.additionalProperties=j(a.valueType,t,{...o,path:[...o.path,"additionalProperties"]})}let c=i._zod.values,u=t.io==="input"&&zn(a.valueType)!==void 0;if(c&&!a.partial&&!u){let l=[...c].filter((p)=>typeof p==="string"||typeof p==="number");if(l.length>0)r.required=l.map(String)}},lu=(e,t,n,o)=>{let r=e._zod.def,a=j(r.innerType,t,o),i=t.seen.get(e);if(t.target==="openapi-3.0")i.ref=r.innerType,n.nullable=!0;else n.anyOf=[a,{type:"null"}]},du=(e,t,n,o)=>{let r=e._zod.def;j(r.innerType,t,o);let a=t.seen.get(e);a.ref=r.innerType},Yo=Symbol();function pu(e,t,n,o,r){let a=!1,i=JSON.stringify(e,(s,c)=>{if(typeof c!=="bigint")return c;return a=!0,null});if(!a)return JSON.parse(i);return Se(t,n,o,r,"BigInt defaults cannot be represented in JSON Schema"),Yo}var mu=(e,t,n,o)=>{let r=e._zod.def;j(r.innerType,t,o);let a=t.seen.get(e);a.ref=r.innerType;let i=pu(r.defaultValue,e,t,n,o);if(i!==Yo)n.default=i},fu=(e,t,n,o)=>{let r=e._zod.def;j(r.innerType,t,o);let a=t.seen.get(e);if(a.ref=r.innerType,t.io!=="input")return;let i=pu(r.defaultValue,e,t,n,o);if(i!==Yo)n._prefault=i},hu=(e,t,n,o)=>{let r=e._zod.def;j(r.innerType,t,o);let a=t.seen.get(e);a.ref=r.innerType;let i;try{i=r.catchValue(void 0)}catch{Se(e,t,n,o,"Dynamic catch values are not supported in JSON Schema");return}n.default=i},gu=(e,t,n,o)=>{let r=e._zod.def,a=r.in._zod.traits.has("$ZodTransform"),i=t.io==="input"?a?r.out:r.in:r.out;j(i,t,o);let s=t.seen.get(e);s.ref=i},yu=(e,t,n,o)=>{let r=e._zod.def;j(r.innerType,t,o);let a=t.seen.get(e);a.ref=r.innerType,n.readOnly=!0};var Qo=(e,t,n,o)=>{let r=e._zod.def;j(r.innerType,t,o);let a=t.seen.get(e);a.ref=r.innerType};var ku=new WeakSet([Object.prototype,Error.prototype]);function Cn(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let o=n(this);return Object.defineProperty(this,t,{value:o,configurable:!0,writable:!0}),o},set(o){Object.defineProperty(this,t,{value:o,configurable:!0,writable:!0})}})}var m1=(e,t)=>{La.init(e,t),e.name="ZodError";let n=Object.getPrototypeOf(e);if(ku.has(n))return;ku.add(n),Cn(n,"format",(o)=>(r)=>Fa(o,r)),Cn(n,"flatten",(o)=>(r)=>Ua(o,r)),Cn(n,"addIssue",(o)=>(r)=>{o.issues.push(r),o.message=JSON.stringify(o.issues,pt,2)}),Cn(n,"addIssues",(o)=>(r)=>{o.issues.push(...r),o.message=JSON.stringify(o.issues,pt,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}})};var Y=m("ZodError",m1,void 0,{Parent:Error});var bu=rn(Y),vu=an(Y),xu=sn(Y),wu=cn(Y),_u=Ka(Y),Su=Va(Y),zu=qa(Y),Cu=Ba(Y),Au=Ha(Y),Eu=Wa(Y),$u=Ga(Y),Iu=Ja(Y);function h1(){if(!G.localeError)X(Po())}function En(){if(!G.memoizer)X({memoizer:Xs()})}var D=m("ZodType",(e,t)=>(h1(),I.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(J(t,{checks:[...t.checks??[],...e.map((n)=>typeof n==="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return de(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(dp(e,t))},superRefine(e,t){return this.check(pp(e,t))},overwrite(e){return this.check(Ie(e))},optional(){return Tu(this)},exactOptional(){return X1(this)},nullable(){return Du(this)},nullish(){return Tu(Du(this))},nonoptional(e){return op(this,e)},array(){return P(this)},or(e){return Fu([this,e])},and(e){return H1(this,e)},transform(e){return Ru(this,J1(e))},default(e){return ep(this,e)},prefault(e){return np(this,e)},catch(e){return ap(this,e)},pipe(e){return Ru(this,e)},readonly(){return cp(this)},describe(e){let t=this.clone();return Ne.add(t,{description:e}),t},meta(...e){if(e.length===0)return Ne.get(this);let t=this.clone();return Ne.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get "~standard"(){return nn(this,"~standard",{...zo(this),jsonSchema:{input:_t(this,"input"),output:_t(this,"output")}})},set "~standard"(e){we(this,"~standard",e)},parse:function e(t,n){return bu(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await vu(this,t,n,{callee:e})},safeParse(e,t){return xu(this,e,t)},async safeParseAsync(e,t){return wu(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){we(this,"spa",e)},validate(e,t){return ho(this,e,t)},validateAsync(e,t){return go(this,e,t)},encode:function e(t,n){return _u(this,t,n,{callee:e})},decode:function e(t,n){return Su(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await zu(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await Cu(this,t,n,{callee:e})},safeEncode(e,t){return Au(this,e,t)},safeDecode(e,t){return Eu(this,e,t)},async safeEncodeAsync(e,t){return $u(this,e,t)},async safeDecodeAsync(e,t){return Iu(this,e,t)},toJSONSchema(e){return Lc(this,{})(e)},get description(){return Ne.get(this)?.description},get _def(){return this._zod.def}}),Nu=m("_ZodString",(e,t)=>{fn.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Gc(e,n,o,r)},Ta({format:(e)=>ne(e).format??null,minLength:(e)=>ne(e).minimum??null,maxLength:(e)=>ne(e).maximum??null},{regex(...e){return this.check(Ro(...e))},includes(...e){return this.check(Zo(...e))},startsWith(...e){return this.check(Lo(...e))},endsWith(...e){return this.check(Uo(...e))},min(...e){return this.check(Je(...e))},max(...e){return this.check(_n(...e))},length(...e){return this.check(Sn(...e))},nonempty(...e){return this.check(Je(1,...e))},lowercase(e){return this.check(No(e))},uppercase(e){return this.check(jo(e))},trim(){return this.check(Mo())},normalize(...e){return this.check(Fo(...e))},toLowerCase(){return this.check(Ko())},toUpperCase(){return this.check(Vo())},slugify(){return this.check(qo())}})),g1=m("ZodString",(e,t)=>{fn.init(e,t),Nu.init(e,t)},{email(e){return this.check(To(ju,e))},url(e){return this.check(Do(Zu,e))},jwt(e){return this.check(xc(j1,e))},emoji(e){return this.check(sc(_1,e))},guid(e){return this.check(nc(w1,e))},uuid(e){return this.check(oc(An,e))},uuidv4(e){return this.check(rc(An,e))},uuidv6(e){return this.check(ac(An,e))},uuidv7(e){return this.check(ic(An,e))},nanoid(e){return this.check(cc(S1,e))},cuid(e){return this.check(uc(z1,e))},cuid2(e){return this.check(lc(C1,e))},ulid(e){return this.check(dc(A1,e))},base64(e){return this.check(kc(D1,e))},base64url(e){return this.check(bc(R1,e))},xid(e){return this.check(pc(E1,e))},ksuid(e){return this.check(mc($1,e))},ipv4(e){return this.check(fc(I1,e))},ipv6(e){return this.check(hc(O1,e))},cidrv4(e){return this.check(gc(P1,e))},cidrv6(e){return this.check(yc(T1,e))},e164(e){return this.check(vc(N1,e))},datetime(e){return this.check(wc(y1,e))},date(e){return this.check(_c(k1,e))},time(e){return this.check(Sc(b1,e))},duration(e){return this.check(zc(v1,e))}});function g(e){return tc(g1,e)}var R=m("ZodStringFormat",(e,t)=>{O.init(e,t),Nu.init(e,t)}),y1=m("ZodISODateTime",(e,t)=>{us.init(e,t),R.init(e,t)}),k1=m("ZodISODate",(e,t)=>{ls.init(e,t),R.init(e,t)}),b1=m("ZodISOTime",(e,t)=>{ds.init(e,t),R.init(e,t)}),v1=m("ZodISODuration",(e,t)=>{ps.init(e,t),R.init(e,t)}),ju=m("ZodEmail",(e,t)=>{Yi.init(e,t),R.init(e,t)});function x1(e){return To(ju,e)}var w1=m("ZodGUID",(e,t)=>{Ji.init(e,t),R.init(e,t)});var An=m("ZodUUID",(e,t)=>{Xi.init(e,t),R.init(e,t)});var Zu=m("ZodURL",(e,t)=>{ts.init(e,t),R.init(e,t)});function St(e){return Do(Zu,e)}var _1=m("ZodEmoji",(e,t)=>{ns.init(e,t),R.init(e,t)});var S1=m("ZodNanoID",(e,t)=>{os.init(e,t),R.init(e,t)});var z1=m("ZodCUID",(e,t)=>{rs.init(e,t),R.init(e,t)});var C1=m("ZodCUID2",(e,t)=>{as.init(e,t),R.init(e,t)});var A1=m("ZodULID",(e,t)=>{is.init(e,t),R.init(e,t)});var E1=m("ZodXID",(e,t)=>{ss.init(e,t),R.init(e,t)});var $1=m("ZodKSUID",(e,t)=>{cs.init(e,t),R.init(e,t)});var I1=m("ZodIPv4",(e,t)=>{ms.init(e,t),R.init(e,t)});var O1=m("ZodIPv6",(e,t)=>{hs.init(e,t),R.init(e,t)});var P1=m("ZodCIDRv4",(e,t)=>{gs.init(e,t),R.init(e,t)});var T1=m("ZodCIDRv6",(e,t)=>{ys.init(e,t),R.init(e,t)});var D1=m("ZodBase64",(e,t)=>{bs.init(e,t),R.init(e,t)});var R1=m("ZodBase64URL",(e,t)=>{vs.init(e,t),R.init(e,t)});var N1=m("ZodE164",(e,t)=>{xs.init(e,t),R.init(e,t)});var j1=m("ZodJWT",(e,t)=>{ws.init(e,t),R.init(e,t)});var Lu=m("ZodNumber",(e,t)=>{Ao.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Jc(e,n,o,r),e.isFinite=!0},Ta({minValue:(e)=>{let{minimum:t,exclusiveMinimum:n}=ne(e);return Math.max(t??Number.NEGATIVE_INFINITY,n??Number.NEGATIVE_INFINITY)},maxValue:(e)=>{let{maximum:t,exclusiveMaximum:n}=ne(e);return Math.min(t??Number.POSITIVE_INFINITY,n??Number.POSITIVE_INFINITY)},isInt:(e)=>{let{isInt:t,multipleOf:n}=ne(e);return!!t||!!n?.some(Number.isSafeInteger)},format:(e)=>ne(e).format??null},{gt(e,t){return this.check(xn(e,t))},gte(e,t){return this.check(xt(e,t))},min(e,t){return this.check(xt(e,t))},lt(e,t){return this.check(vn(e,t))},lte(e,t){return this.check(vt(e,t))},max(e,t){return this.check(vt(e,t))},int(e){return this.check(Ou(e))},safe(e){return this.check(Ou(e))},positive(e){return this.check(xn(0,e))},nonnegative(e){return this.check(xt(0,e))},negative(e){return this.check(vn(0,e))},nonpositive(e){return this.check(vt(0,e))},multipleOf(e,t){return this.check(wn(e,t))},step(e,t){return this.check(wn(e,t))},finite(){return this}}));function K(e){return Cc(Lu,e)}var Z1=m("ZodNumberFormat",(e,t)=>{_s.init(e,t),Lu.init(e,t)});function Ou(e){return Ac(Z1,e)}var L1=m("ZodBoolean",(e,t)=>{Ss.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Xc(e,n,o,r)});function oe(e){return Ec(L1,e)}var U1=m("ZodUnknown",(e,t)=>{zs.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Qc(e,n,o,r)});function tr(){return $c(U1)}var F1=m("ZodNever",(e,t)=>{Cs.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Yc(e,n,o,r)});function M1(e){return Ic(F1,e)}var K1=m("ZodArray",(e,t)=>{En(),As.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>au(e,n,o,r),e.element=t.element},{min(e,t){return this.check(Je(e,t))},nonempty(e){return this.check(Je(1,e))},max(e,t){return this.check(_n(e,t))},length(e,t){return this.check(Sn(e,t))},unwrap(){return this.element}});function P(e,t){return Oc(K1,e,t)}var V1=m("ZodObject",(e,t)=>{En(),Is.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>iu(e,n,o,r),vd(e,"shape",(n)=>n._zod.def.shape,!1)},{keyof(){return M(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(J(this._zod.def,{catchall:e}))},passthrough(){return this.clone(J(this._zod.def,{catchall:tr()}))},loose(){return this.clone(J(this._zod.def,{catchall:tr()}))},strict(){return this.clone(J(this._zod.def,{catchall:M1()}))},strip(){return this.clone(J(this._zod.def,{catchall:void 0}))},extend(e){return pd(this,e)},safeExtend(e){return md(this,e)},merge(e){return fd(this,e)},pick(e){return ld(this,e)},omit(e){return dd(this,e)},partial(...e){return $a(Mu,this,e[0])},exactPartial(...e){return $a(Ku,this,e[0],"exactPartial")},required(...e){return hd(Vu,this,e[0])}});function k(e,t){let n={type:"object",shape:e??{},...x(t)};return new V1(n)}var Uu=m("ZodUnion",(e,t)=>{Eo.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>su(e,n,o,r),e.options=t.options});function Fu(e,t){return new Uu({type:"union",options:e,...x(t)})}var q1=m("ZodDiscriminatedUnion",(e,t)=>{Uu.init(e,t),Os.init(e,t)});function zt(e,t,n){return new q1({type:"union",options:t,discriminator:e,...x(n)})}var B1=m("ZodIntersection",(e,t)=>{Ps.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>cu(e,n,o,r)});function H1(e,t){return new B1({type:"intersection",left:e,right:t})}var Pu=m("ZodRecord",(e,t)=>{En(),Ts.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>uu(e,n,o,r),e.keyType=t.keyType,e.valueType=t.valueType});function Ct(e,t,n){if(!t||!t._zod)return new Pu({type:"record",keyType:g(),valueType:e,...x(t)});return new Pu({type:"record",keyType:e,valueType:t,...x(n)})}var nr=m("ZodEnum",(e,t)=>{Ds.init(e,t),D.init(e,t),e._zod.processJSONSchema=(o,r,a)=>eu(e,o,r,a),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(o,r)=>{let a={};for(let i of o)if(n.has(i))a[i]=t.entries[i];else throw Error(`Key ${i} not found in enum`);return new nr({...t,checks:[],...x(r),entries:a})},e.exclude=(o,r)=>{let a={...t.entries};for(let i of o)if(n.has(i))delete a[i];else throw Error(`Key ${i} not found in enum`);return new nr({...t,checks:[],...x(r),entries:a})}});function M(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map((o)=>[o,o])):e;return new nr({type:"enum",entries:n,...x(t)})}var W1=m("ZodLiteral",(e,t)=>{Rs.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>tu(e,n,o,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Z(e,t){return new W1({type:"literal",values:Array.isArray(e)?e:[e],...x(t)})}var G1=m("ZodTransform",(e,t)=>{En(),Ns.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>ru(e,n,o,r),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new ht(e.constructor.name);n.addIssue=(a)=>{if(typeof a==="string")n.issues.push(Re(a,n.value,t));else{let i=a;if(i.fatal)i.continue=!1;if(i.code??(i.code="custom"),!("input"in i))i.input=n.value;i.inst??(i.inst=e),n.issues.push(Re(i))}};let r=t.transform(n.value,n);if(r instanceof Promise)return r.then((a)=>(n.value=a,n));return n.value=r,n}});function J1(e){return new G1({type:"transform",transform:e})}var Mu=m("ZodOptional",(e,t)=>{$o.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Qo(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function Tu(e){return new Mu({type:"optional",innerType:e})}var Ku=m("ZodExactOptional",(e,t)=>{js.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Qo(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function X1(e){return new Ku({type:"optional",innerType:e})}var Y1=m("ZodNullable",(e,t)=>{Zs.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>lu(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function Du(e){return new Y1({type:"nullable",innerType:e})}var Q1=m("ZodDefault",(e,t)=>{Ls.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>mu(e,n,o,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function ep(e,t){return new Q1({type:"default",innerType:e,get defaultValue(){return typeof t==="function"?t():so(t)}})}var tp=m("ZodPrefault",(e,t)=>{Us.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>fu(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function np(e,t){return new tp({type:"prefault",innerType:e,get defaultValue(){return typeof t==="function"?t():so(t)}})}var Vu=m("ZodNonOptional",(e,t)=>{Fs.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>du(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function op(e,t){return new Vu({type:"nonoptional",innerType:e,...x(t)})}var rp=m("ZodCatch",(e,t)=>{Ms.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>hu(e,n,o,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ap(e,t){return new rp({type:"catch",innerType:e,catchValue:typeof t==="function"?t:Da(t)})}var ip=m("ZodPipe",(e,t)=>{Ks.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>gu(e,n,o,r),e.in=t.in,e.out=t.out});function Ru(e,t){return new ip({type:"pipe",in:e,out:t})}var sp=m("ZodReadonly",(e,t)=>{Vs.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>yu(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function cp(e){return new sp({type:"readonly",innerType:e})}var up=m("ZodTemplateLiteral",(e,t)=>{qs.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>nu(e,n,o,r)});function or(e,t){return new up({type:"template_literal",parts:e,...x(t)})}var lp=m("ZodCustom",(e,t)=>{Bs.init(e,t),D.init(e,t),e._zod.processJSONSchema=(n,o,r)=>ou(e,n,o,r)});function dp(e,t={}){return Pc(lp,e,t)}function pp(e,t){return Tc(e,t)}var qu=or([Q,g()]),mp=or([`${qe}.`,g()]),Et=Fu([or(["authoritative:",g()]),M(Tr)]),fp=k({resolver:Et,error:M(Un)}),Bu=k({kind:Z("verified"),seenBy:P(Et)}),ar=k({kind:Z("propagating"),seenBy:P(Et),notYet:P(Et)}),ir=k({kind:Z("mismatch"),reason:M(Ut),found:g(),expected:qu,diffAt:K().int().nonnegative()}),sr=k({kind:Z("not_found"),reason:M(Ft)}),cr=k({kind:Z("lookup_error"),failures:P(fp)}),my=zt("kind",[ar,ir,sr,cr]),Hu=zt("kind",[Bu,ar,ir,sr,cr]),ur=k({resolver:Et,serverIp:g().nullable(),qname:g(),qtype:M(Or),rcode:M(Pr).nullable(),answers:P(g()),cnameChain:P(g()),ad:oe().nullable(),latencyMs:K().nonnegative(),error:M(Un).nullable()}),hp=k({providerId:g(),providerName:g(),providerDisplayName:g().nullable(),urlSyncUX:g().nullable(),urlAsyncUX:g().nullable(),urlAPI:g(),width:K().nullable(),height:K().nullable(),nameServers:P(g())}),fy=k({settings:hp,templateSupported:oe()}),gp=k({headline:g(),why:g(),fix:g().nullable(),action:k({kind:M(Nr),label:g()})}),rr=k({type:Z("TXT"),host:g(),fullName:mp,value:qu,ttl:K().int().positive()}),Wu=k({providerId:M(Mt),name:g(),hostFieldLabel:g(),valueFieldLabel:g(),settingsUrl:g(),steps:P(g()),notes:P(g())}),yp=k({lastCheckedAt:g().nullable(),nextCheckAt:g().nullable(),expiresAt:g(),canCheckNowAt:g().nullable()}),je={claimId:g(),domainAscii:g(),domainUnicode:g(),status:M(Zn),explanation:gp},At={...je,record:rr,instructions:Wu,timing:yp},$n=zt("phase",[k({...At,phase:Z("add_record")}),k({...At,phase:Z("checking")}),k({...At,phase:Z("waiting_for_dns"),outcome:zt("kind",[ar,Bu])}),k({...At,phase:Z("fix_needed"),outcome:zt("kind",[ir,sr])}),k({...At,phase:Z("try_again_later"),outcome:cr}),k({...je,phase:Z("verified"),record:rr,verifiedAt:g(),lastSeenAt:g(),nextCheckAt:g().nullable(),canCheckNowAt:g().nullable()}),k({...je,phase:Z("at_risk"),record:rr,instructions:Wu,verifiedAt:g(),atRiskSince:g(),lapsesAt:g(),nextCheckAt:g().nullable(),canCheckNowAt:g().nullable()}),k({...je,phase:Z("lapsed"),lapsedAt:g(),lastSeenAt:g()}),k({...je,phase:Z("expired"),expiredAt:g()}),k({...je,phase:Z("transferred"),transferredAt:g()}),k({...je,phase:Z("abandoned"),abandonedAt:g()})]);var ze=(e,t=null)=>({rcode:t,answers:[],cnameChain:[],ad:null,serverIp:null,error:e}),se=(e)=>e.toLowerCase().replace(/\.$/,"");var bp=2500,vp=2;function xp(e){if(typeof e==="object"&&e!==null&&"code"in e)return String(e.code);return""}function wp(e){switch(e){case"ENOTFOUND":return{rcode:"NXDOMAIN",error:null};case"ENODATA":return{rcode:"NOERROR",error:null};case"ESERVFAIL":return{rcode:"SERVFAIL",error:"servfail"};case"EREFUSED":case"ENOTIMP":return{rcode:"REFUSED",error:"refused"};case"ETIMEOUT":case"ETIMEDOUT":case"ECANCELLED":case"ECANCELED":return{rcode:null,error:"timeout"};case"ECONNREFUSED":case"ECONNRESET":case"ENETUNREACH":case"EHOSTUNREACH":case"ENETDOWN":return{rcode:null,error:"network"};default:return{rcode:null,error:"bad_response"}}}async function _p(e,t,n){switch(n){case"TXT":return(await e.resolveTxt(t)).map((o)=>o.join(""));case"NS":return(await e.resolveNs(t)).map(se);case"CNAME":return(await e.resolveCname(t)).map(se);case"A":return e.resolve4(t);case"AAAA":return e.resolve6(t);case"SOA":{let o=await e.resolveSoa(t);return[`${o.nsname} ${o.hostmaster} ${o.serial}`]}default:return ue(n)}}function Gu(e,t={}){let n=t.timeoutMs??bp,o=t.tries??vp,r=t.createResolver??((i)=>new kp(i)),a=[...e.ipv4,...e.ipv6];return{id:Mn(e.host),async query(i,s,{signal:c}){if(a.length===0)return ze("no_nameserver_address");let u=ze("network");for(let l of a){if(c.aborted)return{...u,error:"timeout",rcode:null};let p=r({timeout:n,tries:o});p.setServers([l]);let f=()=>p.cancel();c.addEventListener("abort",f,{once:!0});try{return{rcode:"NOERROR",answers:await _p(p,i,s),cnameChain:[],ad:null,serverIp:l,error:null}}catch(d){let{rcode:h,error:b}=wp(xp(d)),y={rcode:h,answers:[],cnameChain:[],ad:null,serverIp:l,error:b};if(b===null)return y;u=y}finally{c.removeEventListener("abort",f)}}return u}}}var Ju={A:1,NS:2,CNAME:5,SOA:6,TXT:16,AAAA:28},Sp=k({Status:K().int(),AD:oe().optional(),Answer:P(k({name:g(),type:K().int(),data:g()})).optional()});function zp(e){switch(e){case 0:return"NOERROR";case 2:return"SERVFAIL";case 3:return"NXDOMAIN";case 5:return"REFUSED";default:return"OTHER"}}function Cp(e){if(!e.startsWith('"'))return e;let t="",n=0,o=!1;while(n<e.length){let r=e.charAt(n);if(!o){if(r==='"')o=!0;n+=1;continue}if(r==='"'){o=!1,n+=1;continue}if(r==="\\"){let a=e.slice(n+1,n+4);if(/^\d{3}$/.test(a))t+=String.fromCharCode(Number(a)),n+=4;else t+=e.charAt(n+1),n+=2;continue}t+=r,n+=1}return t}function Ap(e,t,n){let o=Sp.safeParse(e);if(!o.success)return ze("bad_response");let r=zp(o.data.Status),a=o.data.Answer??[],i=(l)=>{if(t==="TXT")return n==="presentation"?Cp(l):l;return t==="NS"||t==="CNAME"?se(l):l},s=a.filter((l)=>l.type===Ju[t]).map((l)=>i(l.data)),c=t==="CNAME"?[]:a.filter((l)=>l.type===Ju.CNAME).map((l)=>se(l.data)),u=r==="SERVFAIL"?"servfail":r==="REFUSED"?"refused":null;return{rcode:r,answers:s,cnameChain:c,ad:o.data.AD??!1,serverIp:null,error:u}}function Xu(e){return{id:e.id,async query(t,n,{signal:o}){let r=new URL(e.endpoint);r.searchParams.set("name",t),r.searchParams.set("type",n);try{let a=await e.fetch(r,{headers:{accept:"application/dns-json"},signal:o});if(!a.ok)return ze("bad_response");let i=await a.json();return Ap(i,n,e.txtFormat)}catch{return ze(o.aborted?"timeout":"network")}}}}var Yu=(e)=>Xu({id:"google",endpoint:"https://dns.google/resolve",txtFormat:"joined",fetch:e}),Qu=(e)=>Xu({id:"cloudflare",endpoint:"https://cloudflare-dns.com/dns-query",txtFormat:"presentation",fetch:e});import{BlockList as Ep,isIPv6 as ek}from"node:net";var lr=St({protocol:/^https$/}),rk=k({providerId:g().min(1),providerName:g().min(1),providerDisplayName:g().optional(),urlSyncUX:lr.optional(),urlAsyncUX:lr.optional(),urlAPI:lr,width:K().optional(),height:K().optional(),nameServers:P(g()).optional()});var el=new Ep;for(let[e,t]of[["0.0.0.0",8],["10.0.0.0",8],["100.64.0.0",10],["127.0.0.0",8],["169.254.0.0",16],["172.16.0.0",12],["192.0.0.0",24],["192.0.2.0",24],["192.168.0.0",16],["198.18.0.0",15],["198.51.100.0",24],["203.0.113.0",24],["224.0.0.0",4],["240.0.0.0",4]])el.addSubnet(e,t,"ipv4");for(let[e,t]of[["::",128],["::1",128],["fc00::",7],["fe80::",10],["ff00::",8],["2001:db8::",32]])el.addSubnet(e,t,"ipv6");function tl(e=fetch){let t=[Yu(e),Qu(e)];return{fetch:e,publicSources:()=>t,authoritativeSource:(n)=>Gu(n)}}var nl={fromCheck:K().int().positive().optional(),untilCheck:K().int().positive().optional()},$p=k({name:g(),type:M(["TXT","CNAME"]),values:P(g()),visibleTo:P(g()).optional(),...nl}),Ip=k({resolver:g(),error:M(["timeout","servfail","refused","network","bad_response"]),...nl}),Op=k({nameservers:Ct(g(),P(g())),dnssec:oe().optional(),records:P($p),failures:P(Ip).optional()}),Pp=k({status:K().int(),json:tr().optional()}),pk=k({hosts:Ct(g(),P(g())).optional(),zones:Ct(g(),Op),http:Ct(g(),Pp).optional()});function ol(e){let t=e.map(se);for(let n of Mt){let o=He[n];if(t.some((r)=>o.nsPatterns.some((a)=>r.includes(a))))return o}return He.unknown}var rl=(e)=>e.some(oo);function Tp(e){let t=Be(e,{allowPrivateDomains:!1,extractHostname:!1,validateHostname:!1}).publicSuffix,n=e.split("."),o=[];for(let r=0;r<n.length;r++){let a=n.slice(r).join(".");if(a===t)break;o.push(a)}return o.length>0?o:[e]}async function Dp(e,t,n){let o=async(i)=>{let s=await Promise.all(t.map((c)=>c.query(e,i,{signal:n})));return[...new Set(s.flatMap((c)=>c.answers))]},[r,a]=await Promise.all([o("A"),o("AAAA")]);return{host:e,ipv4:r,ipv6:a}}async function al(e,t,n){let o=e.publicSources(t);for(let r of Tp(t.domain)){let a=await Promise.all(o.map((l)=>l.query(r,"NS",{signal:n}))),i=a.filter((l)=>l.error===null);if(i.length===0)return{kind:"lookup_failed",failures:o.map((l,p)=>({resolver:l.id,error:a[p]?.error??"network"}))};let s=i.find((l)=>l.answers.length>0&&l.cnameChain.length===0);if(s===void 0)continue;let c=[...new Set(s.answers)].sort(),u=await Promise.all(c.map((l)=>Dp(l,o,n)));return{kind:"delegated",apex:r,nameservers:u,provider:ol(c),parked:rl(c)}}return{kind:"nxdomain"}}var Rp=2;async function dr(e,t,n,o,r){let a=o.now().getTime(),i=await e.query(t,n,{signal:r});return{resolver:e.id,serverIp:i.serverIp,qname:t,qtype:n,rcode:i.rcode,answers:i.answers,cnameChain:i.cnameChain,ad:i.ad,latencyMs:o.now().getTime()-a,error:i.error}}async function Np(e,t,n,o){let[r,a]=await Promise.all([dr(e,t,"TXT",n,o),e.query(t,"CNAME",{signal:o})]);return{...r,cnameChain:[...new Set([...r.cnameChain,...a.answers])]}}function jp(e){switch(e.kind){case"delegated":return{kind:"delegated",apex:e.apex};case"nxdomain":return{kind:"nxdomain"};case"lookup_failed":return{kind:"lookup_failed",failures:e.failures};default:return ue(e)}}function Zp(e,t){let n=qt(e,t);return[...new Set([n.doubledHost,...n.apexes,n.withoutUnderscore,...n.zoneLevelChallenge===null?[]:[n.zoneLevelChallenge]])]}async function il(e,t,n,o=jr){let r=n.now().getTime(),a=AbortSignal.timeout(o),i=t;e.beginCheck?.(i);let s=e.publicSources(i),c=await al(e,i,a),u=c.kind==="delegated"?c.nameservers.map((d)=>e.authoritativeSource(d,i)):[],l=[...u.map((d)=>Np(d,t.recordName,n,a)),...s.map((d)=>dr(d,t.recordName,"TXT",n,a))],p=c.kind==="delegated"?Zp(t.domain,c.apex).flatMap((d)=>u.slice(0,Rp).map((h)=>dr(h,d,"TXT",n,a))):[],f=await Promise.all([...l,...p]);return{zone:c,zoneStatus:jp(c),observations:f,durationMs:n.now().getTime()-r}}var sl="\r\x1B[2K";function Wp(e,t){if(e.NO_COLOR!==void 0&&e.NO_COLOR!=="")return!1;if(e.FORCE_COLOR!==void 0&&e.FORCE_COLOR!=="0")return!0;return t&&e.TERM!=="dumb"}function Gp(e){switch(process.platform){case"darwin":return["open",[e]];case"win32":return["cmd",["/c","start","",e]];case"linux":return["xdg-open",[e]];default:return null}}function cl(){let{stdin:e,stdout:t,stderr:n,env:o}=process,r=!1,a=()=>{if(!r)return;n.write(sl),r=!1};return{out:(i)=>{a(),t.write(`${i}
59
+ `)},error:(i)=>{a(),n.write(`${i}
60
+ `)},status:(i)=>{if(!n.isTTY)return;if(i===null)return a();let s=Math.max(20,(n.columns??80)-1);n.write(`${sl}${i.length>s?`${i.slice(0,s-1)}…`:i}`),r=!0},interactive:e.isTTY===!0&&t.isTTY===!0,color:Wp(o,t.isTTY===!0),columns:t.columns??80,env:o,homeDir:qp(),fetch:(i,s)=>fetch(i,s),now:()=>new Date,pause:(i,s={})=>new Promise((c)=>{let u=s.untilEnter===!0&&e.isTTY===!0,l=(d)=>{if(clearTimeout(f),u)e.off("data",p),e.pause();c(d)},p=()=>l("enter"),f=setTimeout(()=>l("elapsed"),i);if(u)e.resume(),e.on("data",p)}),confirm:async(i)=>{a();let s=Hp({input:e,output:t});try{let c=await s.question(`${i} (y/N) `);return/^y(es)?$/i.test(c.trim())}finally{s.close()}},openUrl:(i)=>new Promise((s)=>{let c=Gp(i);if(c===null)return s(!1);let u=Lp(c[0],[...c[1]],{stdio:"ignore",detached:!0});u.once("error",()=>s(!1)),u.once("spawn",()=>{u.unref(),s(!0)})}),readFile:(i)=>{try{return Mp(i,"utf8")}catch{return null}},writePrivateFile:(i,s)=>{Fp(Bp(i),{recursive:!0,mode:448}),Vp(i,s,{mode:384}),Up(i,384)},removeFile:(i)=>Kp(i,{force:!0}),dns:()=>tl()}}import{parseArgs as om}from"node:util";var Jp=[...Dr,"unauthorized","not_found","bad_request","rate_limited","check_in_flight","not_checkable","illegal_transition","version_conflict","owner_conflict","domain_connect_disabled","domain_connect_unavailable","email_unavailable","push_unavailable","internal_error"],Xp=k({kind:M(Jp),message:g(),retryAfter:K().optional()}),dl=k({error:Xp}),Yp=k({kind:Z("mixed_script"),label:g(),scripts:P(g()),message:g()}),Qp=k({ascii:g(),unicode:g(),registrableDomain:g(),isSubdomain:oe(),warnings:P(Yp)}),em=k({id:g(),domainAscii:g(),domainUnicode:g(),status:g(),phase:g(),headline:g(),lastCheckedAt:g().nullable(),nextCheckAt:g().nullable()}),tm=k({id:g(),type:M(Ar),actorKind:M(Ir),at:g(),detail:g().nullable()}),pl=k({id:g(),trigger:M($r),startedAt:g(),finishedAt:g().nullable(),durationMs:K().nullable(),outcomeKind:M(Er).nullable(),outcome:Hu.nullable(),observations:P(ur)}),nm=k({state:M(["available","not_enabled"]),providerName:g(),applyEnabled:oe()}),In=k({view:$n,zoneApex:g(),nameservers:P(g()),domainConnect:nm.nullable(),lastCheck:pl.nullable(),events:P(tm)}),ul=k({view:$n,zoneApex:g(),lastCheck:pl.nullable()}),$t=k({email:k({address:g(),verified:oe()}).nullable(),pushDevices:K().int(),capabilities:k({email:oe(),pushPublicKey:g().nullable()})}),ll=x1().max(254),L={healthz:{response:k({ok:Z(!0)})},createClaim:{body:k({input:g().max(2000)}),response:k({claimId:g(),existing:oe(),normalized:Qp,view:$n,warning:Z("verified_by_another_account").nullable()})},listClaims:{response:k({claims:P(em)})},claimDetail:{response:In},runCheck:{response:In},rotate:{response:In},abandon:{response:In},zoneFile:{response:k({line:g()})},inspect:{query:k({name:g().min(1).max(2000)}),response:k({zone:k({kind:M(["delegated","nxdomain","lookup_failed"]),apex:g().nullable(),provider:g().nullable()}),observations:P(ur)})},domainConnectUrl:{response:k({url:St()})},createShare:{body:k({email:ll.optional(),note:g().trim().max(Zr).optional()}),response:k({url:St(),emailed:oe(),expiresAt:g()})},setup:{response:ul},setupCheck:{response:ul},notifications:{response:$t},setEmail:{body:k({email:ll}),response:$t},removeEmail:{response:$t},confirmEmail:{body:k({token:g().min(1).max(200)}),response:k({confirmed:oe()})},unsubscribeEmail:{response:k({unsubscribed:oe()})},subscribePush:{body:k({endpoint:St().max(2000),keys:k({p256dh:g().min(1).max(256),auth:g().min(1).max(128)})}),response:$t},unsubscribePush:{body:k({endpoint:St().max(2000)}),response:$t},testAlert:{response:k({delivered:K().int()})},devClock:{body:k({advanceMs:K().int().min(0).max(31622400000)}),response:k({now:g()})},devRunWorker:{response:k({processed:K().int()})},cronRunDueWork:{response:k({processed:K().int()})}},On="prufy_session",Pn=/^[A-Za-z0-9_-]{43}$/;class Le extends Error{kind;retryAfter;constructor(e,t,n){super(t);this.name="ApiClientError",this.kind=e,this.retryAfter=n}}class et extends Error{kind;constructor(e,t,n){super(t,n);this.name="ApiTransportError",this.kind=e}}var Ze=(e)=>`/api/claims/${encodeURIComponent(e)}`;function ml(e={}){let t=(e.baseUrl??"").replace(/\/+$/,"");async function n(o,r,a={}){let i=new Headers({accept:"application/json",...e.headers?.()});if(a.body!==void 0)i.set("content-type","application/json");let s;try{s=await(e.fetch??fetch)(`${t}${o}`,{method:a.method??"GET",headers:i,...a.body===void 0?{}:{body:JSON.stringify(a.body)}})}catch(u){throw new et("unreachable","We couldn't reach Prufy.",{cause:u})}e.onResponse?.(s);let c;try{c=await s.json()}catch(u){throw new et("unexpected_response",`Something between here and Prufy answered instead (HTTP ${s.status}).`,{cause:u})}if(!s.ok){let u=dl.safeParse(c);if(!u.success)throw new et("unexpected_response",`Something between here and Prufy answered instead (HTTP ${s.status}).`);let{error:l}=u.data;throw new Le(l.kind,l.message,l.retryAfter)}return r.parse(c)}return{healthz:()=>n("/api/healthz",L.healthz.response),listClaims:()=>n("/api/claims",L.listClaims.response),createClaim:(o)=>n("/api/claims",L.createClaim.response,{method:"POST",body:{input:o}}),claim:(o)=>n(Ze(o),L.claimDetail.response),checkNow:(o)=>n(`${Ze(o)}/checks`,L.runCheck.response,{method:"POST"}),rotate:(o)=>n(`${Ze(o)}/challenge/rotate`,L.rotate.response,{method:"POST"}),abandon:(o)=>n(`${Ze(o)}/abandon`,L.abandon.response,{method:"POST"}),domainConnectUrl:(o)=>n(`${Ze(o)}/domain-connect/url`,L.domainConnectUrl.response,{method:"POST"}),zoneFile:(o)=>n(`${Ze(o)}/zone-file`,L.zoneFile.response),createShare:(o,r={})=>n(`${Ze(o)}/shares`,L.createShare.response,{method:"POST",body:r}),setup:(o)=>n(`/api/setup/${encodeURIComponent(o)}`,L.setup.response),setupCheck:(o)=>n(`/api/setup/${encodeURIComponent(o)}/checks`,L.setupCheck.response,{method:"POST"}),notifications:()=>n("/api/notifications",L.notifications.response),setEmail:(o)=>n("/api/notifications/email",L.setEmail.response,{method:"PUT",body:{email:o}}),removeEmail:()=>n("/api/notifications/email",L.removeEmail.response,{method:"DELETE"}),confirmEmail:(o)=>n("/api/notifications/email/confirm",L.confirmEmail.response,{method:"POST",body:{token:o}}),unsubscribeEmail:(o)=>n(`/api/notifications/email/unsubscribe?token=${encodeURIComponent(o)}`,L.unsubscribeEmail.response,{method:"POST"}),subscribePush:(o)=>n("/api/notifications/push",L.subscribePush.response,{method:"POST",body:o}),unsubscribePush:(o)=>n("/api/notifications/push",L.unsubscribePush.response,{method:"DELETE",body:{endpoint:o}}),testAlert:()=>n("/api/notifications/test",L.testAlert.response,{method:"POST"})}}var w={OK:0,FAILED:1,USAGE:2,NOT_YET:3};class U extends Error{kind;hint;exitCode;retryAfter;constructor(e,t,n={}){super(t);this.name="CliError",this.kind=e,this.hint=n.hint,this.exitCode=n.exitCode??w.FAILED,this.retryAfter=n.retryAfter}}var T=(e,t)=>new U("usage",e,{hint:t,exitCode:w.USAGE});function pr(e,t){if(e instanceof U)return e;if(e instanceof Le){if(e.kind==="unauthorized")return new U("unauthorized","This terminal hasn't claimed any domains yet.",{hint:"Start with: prufy verify <domain>"});return new U(e.kind,e.message,{retryAfter:e.retryAfter})}if(e instanceof et){if(e.cause instanceof U)return e.cause;return e.kind==="unreachable"?new U("unreachable",`We couldn't reach Prufy at ${t}.`,{hint:"Check your connection, then run the command again."}):new U("unexpected_response",e.message,{hint:`Check that ${t} is Prufy, then run the command again.`})}let n=e instanceof Error?e.message:String(e);return new U("unexpected",`Something went wrong on our side: ${n}`)}var rm={json:{type:"boolean"},"api-url":{type:"string"},"no-color":{type:"boolean"},help:{type:"boolean",short:"h"},version:{type:"boolean",short:"v"},wait:{type:"boolean"},"no-wait":{type:"boolean"},timeout:{type:"string"},yes:{type:"boolean",short:"y"},email:{type:"string"},note:{type:"string"},remove:{type:"boolean"},check:{type:"boolean"},host:{type:"boolean"},value:{type:"boolean"},"zone-file":{type:"boolean"},"no-open":{type:"boolean"}},am=["json","api-url","no-color","help","version"],im=(e)=>e instanceof Error?e.message:"";function fl(e){try{let{values:t,positionals:n}=om({args:[...e],options:rm,allowPositionals:!0,strict:!0}),[o=null,...r]=n;return{command:o,args:r,flags:t}}catch(t){let[n=""]=im(t).split(". ");throw T(n===""?"We couldn't read that command.":`${n.replace(/\.$/,"")}.`,"See what's available: prufy --help")}}function hl(e,t){return Object.keys(e).filter((o)=>!t.includes(o)&&!am.includes(o))}function It(e,t){if(e.timeout===void 0)return t;let n=Number(e.timeout);if(!Number.isFinite(n)||n<=0)throw T("--timeout takes a number of minutes.","For example: --timeout 5");return Math.round(n*60000)}var he=(e)=>("record"in e),ce=(e)=>("instructions"in e),Ue=(e)=>ce(e)&&e.instructions.providerId!=="unknown"?e.instructions.name:null,sm=(e)=>ga.includes(e.phase),q=(e)=>sm(e)||e.phase==="at_risk",Fe=(e)=>e.phase==="verified",Me=(e)=>e.phase==="fix_needed"&&!ct(e)||e.phase==="at_risk";var tt=(e)=>(t)=>{if(e.json)return;for(let n of t)e.io.out(n)};function N(e,t,n){if(e.json)e.io.out(JSON.stringify(t,null,2));else tt(e)(n())}function Ot(e,t){if(e===void 0)throw T("Which domain?",`For example: prufy ${t} example.com`);let n=to(e);if(!n.ok)throw new U(n.error.kind,n.error.message,{exitCode:w.USAGE});return n.value}var cm=(e)=>Ln.includes(e);async function ge(e,t,n){if(t===void 0)throw T("Which domain?",`For example: prufy ${n} example.com`);let o=Lr(t),r=o===null?Ot(t,n):null,a=r?.unicode??t,{claims:i}=e.session.token()===null?{claims:[]}:await e.api.listClaims(),s=i.filter((u)=>o===null?u.domainAscii===r?.ascii:u.id===o),c=s.find((u)=>!cm(u.status))??s[0];if(c===void 0)throw new U("no_claim",`${a} isn't one of this terminal's domains yet.`,{hint:o===null?`Start with: prufy verify ${a}`:"See them all: prufy list"});return c}var mr=(e,t)=>({check:()=>e.api.checkNow(t),refresh:()=>e.api.claim(t)}),Pt=(e)=>Fe(e)?w.OK:w.NOT_YET;function fr(e){let t=e.domainUnicode;switch(e.explanation.action.kind){case"new_code":return`Get a new code: prufy rotate ${t}`;case"check_now":return Me(e)?`After the change: prufy check ${t}`:`Once it's added: prufy check ${t}`;case"wait":return`See where it stands: prufy status ${t}`;case"none":return null}}var Oe=(e,t)=>{let n=fr(t);if(n===null)return[];let o=[` ${e.paint.dim(n)}`,""];if(t.phase==="fix_needed"&&t.outcome.kind==="mismatch")o.unshift(` ${e.paint.dim(`The exact value, ready to paste: prufy record ${t.domainUnicode} --value`)}`);return o};function um(e){if(!e.capabilities.email)return"not available on this Prufy";if(e.email===null)return"off";return e.email.verified?`${e.email.address}, confirmed`:`${e.email.address}, waiting on you to confirm it (the link is in your inbox)`}function lm(e){if(e.capabilities.pushPublicKey===null)return"not available on this Prufy";let t=e.pushDevices;return t===0?"off (turned on from a claim's page in the browser)":`${t} ${t===1?"browser":"browsers"}`}function dm(e,t){let n=[""," Alerts go to",` ${e.paint.dim("Email")} ${um(t)}`,` ${e.paint.dim("Push ")} ${lm(t)}`,""," We only alert when ownership changes, or is about to. Routine checks stay quiet.",""];if(t.capabilities.email&&t.email===null)n.push(e.paint.dim(" Turn email on: prufy alerts email you@example.com"),"");return n}var pm={name:"alerts",usage:"alerts [email|test]",summary:"Where alerts go: turn email on or off, or send a test",group:"watch",flags:[["remove","--remove","With `alerts email`: stop emailing alerts"]],examples:["prufy alerts","prufy alerts email you@example.com","prufy alerts email --remove","prufy alerts test"],async run(e,{args:t,flags:n}){let[o,r]=t;if(o===void 0){let a=await e.api.notifications();return N(e,a,()=>dm(e,a)),w.OK}if(o==="email"){if(n.remove===!0){let i=await e.api.removeEmail();return N(e,i,()=>[""," Email alerts are off.",""]),w.OK}if(r===void 0)throw T("Which address?","For example: prufy alerts email you@example.com");let a=await e.api.setEmail(r);return N(e,a,()=>["",a.email?.verified===!0?` Alerts go to ${a.email.address}.`:` We sent a confirmation link to ${r}. Alerts start once you open it.`,""]),w.OK}if(o==="test"){let a=await e.api.testAlert();return N(e,a,()=>["",a.delivered===0?" Nothing to send to yet. Turn email on: prufy alerts email you@example.com":` Sent a test alert to ${a.delivered} ${a.delivered===1?"place":"places"}.`,""]),w.OK}throw T(`alerts doesn't have "${o}".`,"Try: prufy alerts --help")}},gl=[pm];var nt=(e,t)=>(n)=>`\x1B[${e}m${n}\x1B[${t}m`,ot=(e)=>e,Tt=(e)=>e?{bold:nt(1,22),dim:nt(2,22),green:nt(32,39),yellow:nt(33,39),red:nt(31,39),cyan:nt(36,39)}:{bold:ot,dim:ot,green:ot,yellow:ot,red:ot,cyan:ot};function ye(e,t){let n=[],o="";for(let r of e.split(/\s+/).filter((a)=>a!==""))if(o!==""&&o.length+1+r.length>t)n.push(o),o=r;else o=o===""?r:`${o} ${r}`;if(o!=="")n.push(o);return n}var kl=(e,t)=>e.length<=t?e:`${e.slice(0,Math.max(1,t-1))}…`,Tn=(e,t)=>`${e} ${t}${e===1?"":"s"}`;function yl(e){let t=Math.round(Math.abs(e)/1000);if(t<60)return Tn(Math.max(1,t),"second");let n=Math.round(t/60);if(n<60)return Tn(n,"minute");let o=Math.round(n/60);if(o<48)return Tn(o,"hour");return Tn(Math.round(o/24),"day")}function bl(e,t){let n=new Date(e).getTime()-t.getTime();if(Math.abs(n)<1e4)return n>0?"in a moment":"just now";return n>0?`in ${yl(n)}`:`${yl(n)} ago`}var re=(e)=>e.slice(0,10),vl=(e)=>`${e.slice(0,10)} ${e.slice(11,16)} UTC`;var E=" ",_l={positive:"✓",notice:"○",negative:"!",neutral:"–"};function Sl(e,t,n){switch(t){case"positive":return e.paint.green(n);case"notice":return e.paint.yellow(n);case"negative":return e.paint.red(n);case"neutral":return e.paint.dim(n)}}var hr=(e)=>(e in Jt);function Dn(e,t,n=0){let o=hr(t)?no[t]:"neutral",r=hr(t)?Jt[t]:t;return Sl(e,o,`${_l[o]} ${r}`.padEnd(n))}var mm=(e,t=E)=>e.map((n)=>n===""?"":`${t}${n}`),gr=(e,t,n=E)=>mm(ye(t,e.width-n.length),n);function zl(e,t,n){let o=Math.max(...t.map(([r])=>r.length));return t.map(([r,a])=>`${n}${e.paint.dim(r.padEnd(o))} ${a}`)}function Ke(e,t){let{record:n}=t,o=ce(t)?t.instructions:null,r=o?.hostFieldLabel??"Name",a=o?.valueFieldLabel??"Value",i=zl(e,[["Type",n.type],[r,e.paint.bold(n.host)],[a,e.paint.bold(n.value)],["TTL",`${n.ttl}, or the lowest your provider offers`]],`${E}${E}`);for(let s of o?.notes??[])i.push("",...gr(e,s,`${E}${E}`));return i}function Dt(e,t){let n=`${E}${E}`,o=t.steps.flatMap((r,a)=>{let[i="",...s]=ye(r,e.width-n.length-3);return[`${n}${a+1}. ${i}`,...s.map((c)=>`${n} ${c}`)]});if(t.settingsUrl!=="")o.push(`${n}${e.paint.cyan(t.settingsUrl)}`);return o}function ae(e,t){let{explanation:n}=t,o=no[ut(t)],r=[`${E}${Sl(e,o,_l[o])} ${e.paint.bold(n.headline)}`,...gr(e,n.why,`${E} `)];if(n.fix!==null)r.push(...gr(e,n.fix,`${E} `));return r}var fm={google:"Google Public DNS",cloudflare:"Cloudflare DNS"},xl=(e)=>be(e)?e.slice(14):fm[e]??e;function Cl(e){if(e.phase!=="waiting_for_dns"||e.outcome.kind!=="propagating")return null;let t=e.outcome.seenBy.length;return`seen by ${t} of ${t+e.outcome.notYet.length}`}function hm(e,t){let n=e.io.now(),o=[],r=(a,i)=>{if(i!==null)o.push([a,bl(i,n)])};switch(t.phase){case"add_record":case"checking":case"waiting_for_dns":case"fix_needed":case"try_again_later":r("Last checked",t.timing.lastCheckedAt),r("Next check",t.timing.nextCheckAt),o.push(["Code works until",re(t.timing.expiresAt)]);break;case"verified":o.push(["Verified",re(t.verifiedAt)]),r("Record last seen",t.lastSeenAt),r("Next check",t.nextCheckAt);break;case"at_risk":o.push(["Verified",re(t.verifiedAt)],["Record missing since",re(t.atRiskSince)]),o.push(["Restore it by",re(t.lapsesAt)]),r("Next check",t.nextCheckAt);break;case"lapsed":o.push(["Lapsed",re(t.lapsedAt)]);break;case"expired":o.push(["Code expired",re(t.expiredAt)]);break;case"transferred":o.push(["Moved",re(t.transferredAt)]);break;case"abandoned":o.push(["Stopped",re(t.abandonedAt)]);break}return o}function yr(e,t){let{view:n}=t,o=["",`${E}${e.paint.bold(n.domainUnicode)} ${Dn(e,ut(n))}`,"",...ae(e,n)];if(he(n)&&n.phase!=="verified"){o.push("",`${E}The record`,...Ke(e,n));let i=t.lastCheck?.observations??[];if(q(n)&&i.length>0)o.push("",`${E}What each server answered`,...kr(e,i,n.record.fullName,n.record.value))}let r=hm(e,n),a=Ue(n);if(a!==null)r.push(["DNS",a]);if(t.nameservers.length>0)r.push(["Nameservers",t.nameservers.join(", ")]);if(r.length>0)o.push("",...zl(e,r,E));return o.push(""),o}function Al(e,t){if(t.length===0)return["",`${E}No domains yet. Start with: prufy verify <domain>`,""];let n=Math.max(6,...t.map((i)=>i.domainUnicode.length)),o=Math.max(6,...t.map((i)=>(hr(i.phase)?Jt[i.phase]:i.phase).length+2)),r=Math.max(20,e.io.columns-E.length-n-o-4),a=`${"Domain".padEnd(n)} ${"Status".padEnd(o)} What's happening`;return["",`${E}${e.paint.dim(a)}`,...t.map((i)=>`${E}${i.domainUnicode.padEnd(n)} ${Dn(e,i.phase,o)} ${kl(i.headline,r)}`),""]}var wl=(e,t)=>t!==null&&e.includes(t);function gm(e){switch(e.type){case"CLAIM_CREATED":return"Domain added";case"SHARE_CREATED":return e.detail===null?"Setup link created":`Setup link sent to ${e.detail}`;case"SHARE_OPENED":return"Setup link opened";case"DOMAIN_CONNECT_STARTED":return"Opened the provider's one-click setup";case"DOMAIN_CONNECT_APPROVED":return"Approved at the provider";case"DOMAIN_CONNECT_CANCELLED":return"Cancelled at the provider";case"CHECK_PASSED":return"Record found";case"CHECK_FAILED":if(e.detail==="propagating")return"Waiting for DNS";if(e.detail==="lookup_error")return"Couldn't check";if(wl(Ut,e.detail))return"Value differs";if(wl(Ft,e.detail)&&e.detail!=="nothing_at_name")return"Record in a different place";return"Not there yet";case"TOKEN_ROTATED":return"New code";case"CHALLENGE_EXPIRED":return"Code expired";case"RECORD_MISSING":return"Record missing";case"GRACE_ELAPSED":return"Lapsed";case"SUPERSEDED_BY_OTHER_ACCOUNT":return"Moved to another account";case"OWNERSHIP_TAKEN_OVER":return"Moved to you";case"OWNERSHIP_RACE_LOST":return"Another account verified it first";case"ABANDONED":return"Stopped";case"ILLEGAL_TRANSITION":return null}}function El(e,t){let n=[...t].sort((r,a)=>a.at.localeCompare(r.at)),o=[];for(let r of n){let a=gm(r);if(a===null)continue;let i=o.at(-1);if(i!==void 0&&i.label===a)i.count+=1;else o.push({label:a,at:r.at,count:1})}if(o.length===0)return["",`${E}Nothing has happened yet.`,""];return["",...o.map((r)=>`${E}${e.paint.dim(vl(r.at))} ${r.label}${r.count>1?e.paint.dim(` ×${r.count}`):""}`),""]}function ym(e,t,n){if(t.error!==null)return e.paint.yellow(`couldn't reach it (${t.error})`);if(t.answers.length===0)return"no record";return t.answers.map((o)=>o===n?e.paint.green(`${o} ✓ matches`):o).join(" | ")}function kr(e,t,n,o){let r=t.filter((c)=>c.qname===n),a=Math.max(0,...r.map((c)=>xl(c.resolver).length)),i=r.map((c)=>`${E}${E}${xl(c.resolver).padEnd(a)} ${ym(e,c,o)}`),s=new Set(t.filter((c)=>c.qname!==n).flatMap((c)=>c.answers.filter((u)=>u.includes(Q)).map((u)=>`${c.qname} ${u}`)));if(s.size>0){i.push("",`${E}A Prufy value saved under a different name`);for(let c of s)i.push(`${E}${E}${c}`)}return i}var km=15000,bm=60000,vm=1.5,Rt=600000;function xm(e){if("timing"in e)return e.timing.canCheckNowAt;return"canCheckNowAt"in e?e.canCheckNowAt:null}function $l(e){if(e.phase==="add_record"||e.phase==="checking"||ct(e))return null;let t="outcome"in e?JSON.stringify(e.outcome):"";return`${e.phase}:${t}`}function wm(e){let t=ce(e)?e.instructions.name:"your DNS provider";if(e.phase==="waiting_for_dns"||e.phase==="try_again_later"){let n=Cl(e);return` ${e.explanation.headline}${n===null?"":` (${n})`}…`}if(Me(e))return` Waiting for the change at ${t}…`;return` Usually a few minutes. Waiting for the record to appear at ${t}…`}async function Nt(e,t){try{return await t.check()}catch(n){if(!(n instanceof Le))throw n;if(n.kind==="not_checkable")return t.refresh();if(n.kind!=="rate_limited"&&n.kind!=="check_in_flight")throw n;if(n.retryAfter===void 0||n.retryAfter>30)throw n;await e.io.pause(n.retryAfter*1000);try{return await t.check()}catch(o){if(o instanceof Le)return t.refresh();throw o}}}async function jt(e,t,n,o){let{io:r}=e,a=r.now().getTime()+o.timeoutMs,i=n,s=o.alreadyShown===!0?$l(n.view):null,c=km;if(r.interactive&&q(n.view))o.say([e.paint.dim(" Press Enter to check now, or Ctrl+C to leave. We keep checking either way."),""]);try{for(;;){let{view:u}=i,l=$l(u);if(l!==null&&l!==s&&q(u))o.say([...ae(e,u),""]),s=l;if(!q(u))return i;if(Me(u)&&!r.interactive)return i;let p=a-r.now().getTime();if(p<=0)return i;r.status(wm(u));let f=await r.pause(Math.min(c,p),{untilEnter:!0}),d=xm(u),h=d===null?0:new Date(d).getTime()-r.now().getTime();if(h>0)await r.pause(h);if(r.status(" Checking DNS now…"),i=await Nt(e,t),f==="elapsed")c=Math.min(Math.round(c*vm),bm)}}finally{r.status(null)}}function _m(e,t,n){let{view:o}=n,r=[""];if(t.warning==="verified_by_another_account"&&q(o))r.push(` ${e.paint.yellow("!")} ${e.paint.bold("Another account has verified this domain")}`,...ye("If you prove control of it, it moves to you, and they're told. Only one account can own a domain at a time.",e.width-4).map((i)=>` ${i}`),"");if(!q(o)||!he(o))return[...r,...ae(e,o),"",...Oe(e,o)];let a=Ue(o);if(r.push(a===null?` We couldn't tell who manages DNS for ${o.domainUnicode}, so these steps are general.`:` ${o.domainUnicode} is managed by ${a}.`),t.existing)r.push(e.paint.dim(" Picking up where you left off."));if(r.push(""," Add this record:",...Ke(e,o)),ce(o))r.push(""," Where to add it",...Dt(e,o.instructions));if(o.phase==="add_record")r.push("",...ye(o.explanation.why,e.width-2).map((i)=>` ${i}`));return r.push(""),r}function Il(e,t){let{view:n}=t;if(Fe(n))return[...ae(e,n),"",e.paint.dim(" Get an email if the record ever goes missing: prufy alerts email you@example.com"),""];if(!q(n))return[...ae(e,n),"",...Oe(e,n)];if(Me(n))return Oe(e,n);return[" Not visible yet. Some providers take longer, and that's normal."," We keep checking on our side, so it's fine to walk away.","",e.paint.dim(` See where it stands: prufy status ${n.domainUnicode}`),""]}var Sm={name:"verify",usage:"verify <domain>",summary:"Get the one record to add, then wait while we check it",group:"start",flags:[["no-wait","--no-wait","Print the record and stop. The default with --json"],["wait","--wait","Wait for the record even with --json"],["timeout","--timeout <minutes>","How long to wait. 10 by default"]],examples:["prufy verify example.com","prufy verify example.com --json"],async run(e,{args:t,flags:n}){let o=Ot(t[0],"verify"),r=await e.api.createClaim(o.ascii),a=await e.api.claim(r.claimId),i=tt(e);i(_m(e,r,a));let s=n["no-wait"]===!0?!1:n.wait??!e.json;if(s&&q(a.view))a=await jt(e,mr(e,r.claimId),a,{timeoutMs:It(n,Rt),say:i}),i(Il(e,a));else if(q(a.view))i(Oe(e,a.view));if(e.json){let c={existing:r.existing,warning:r.warning,...a};e.io.out(JSON.stringify(c,null,2))}return s?Pt(a.view):w.OK}},Ol={name:"list",aliases:["ls"],usage:"list",summary:"Every domain this terminal has claimed",group:"start",flags:[],examples:["prufy list","prufy list --json"],async run(e){let t=await e.api.listClaims();return N(e,t,()=>Al(e,t.claims)),w.OK}},zm={name:"status",usage:"status [domain]",summary:"Where a domain stands. With no domain, lists them all",group:"start",flags:[],examples:["prufy status","prufy status example.com"],async run(e,t){if(t.args[0]===void 0)return Ol.run(e,t);let n=await ge(e,t.args[0],"status"),o=await e.api.claim(n.id);return N(e,o,()=>[...yr(e,o),...Oe(e,o.view)]),w.OK}},Cm={name:"check",usage:"check <domain>",summary:"Check right now, and say what each DNS server answered",group:"start",flags:[["wait","--wait","Keep checking until it's verified"],["timeout","--timeout <minutes>","How long to wait with --wait. 10 by default"]],examples:["prufy check example.com","prufy check example.com --wait"],async run(e,{args:t,flags:n}){let o=await ge(e,t[0],"check"),r=mr(e,o.id),a=tt(e);e.io.status(" Checking DNS now…");let i;try{i=await Nt(e,r)}finally{e.io.status(null)}if(a(yr(e,i)),n.wait===!0&&q(i.view))i=await jt(e,r,i,{timeoutMs:It(n,Rt),say:a,alreadyShown:!0}),a(Il(e,i));else if(!Fe(i.view))a(Oe(e,i.view));if(e.json)e.io.out(JSON.stringify(i,null,2));return Pt(i.view)}},Am={name:"record",usage:"record <domain>",summary:"The record again. --value and --host print just that part",group:"record",flags:[["value","--value","Only the value, to pipe into a clipboard or a script"],["host","--host","Only the name, as your provider wants it typed"],["zone-file","--zone-file","One line for a BIND zone file"]],examples:["prufy record example.com","prufy record example.com --value | pbcopy"],async run(e,{args:t,flags:n}){let o=["value","host","zone-file"].filter((s)=>n[s]===!0);if(o.length>1)throw T(`Pick one of ${o.map((s)=>`--${s}`).join(", ")}.`);let r=await ge(e,t[0],"record"),a=await e.api.claim(r.id),{view:i}=a;if(!he(i))throw new U("no_record",`${i.explanation.headline}.`,{hint:fr(i)??void 0});if(o[0]==="value")e.io.out(i.record.value);else if(o[0]==="host")e.io.out(i.record.host);else if(o[0]==="zone-file")e.io.out((await e.api.zoneFile(r.id)).line);else{let s={record:i.record,instructions:ce(i)?i.instructions:null};N(e,s,()=>["",` The record for ${i.domainUnicode}:`,...Ke(e,i),...ce(i)?[""," Where to add it",...Dt(e,i.instructions)]:[],""])}return w.OK}},Em={name:"rotate",usage:"rotate <domain>",summary:"Get a new code. The old one stops working",group:"record",flags:[],examples:["prufy rotate example.com"],async run(e,{args:t}){let n=await ge(e,t[0],"rotate"),o=await e.api.rotate(n.id),{view:r}=o;return N(e,o,()=>["",` ${r.domainUnicode} has a new code. The old one won't verify any more.`,"",...he(r)?[" Replace the record with this one:",...Ke(e,r),""]:[],...Oe(e,r)]),w.OK}},$m={name:"stop",usage:"stop <domain>",summary:"Stop verifying a domain",group:"watch",flags:[["yes","-y, --yes","Don't ask first"]],examples:["prufy stop example.com"],async run(e,{args:t,flags:n}){let o=await ge(e,t[0],"stop");if(n.yes!==!0){if(!e.io.interactive||e.json)throw T("Stopping needs a yes, and there's nobody here to ask.",`Add --yes: prufy stop ${o.domainUnicode} --yes`);if(!await e.io.confirm(` Stop verifying ${o.domainUnicode}? We'll stop checking it, and you can start again any time.`))return e.io.out(" Left as it was."),w.OK}let r=await e.api.abandon(o.id);return N(e,r,()=>["",...ae(e,r.view),""]),w.OK}},Im={name:"history",usage:"history <domain>",summary:"What happened to a claim, newest first",group:"watch",flags:[],examples:["prufy history example.com"],async run(e,{args:t}){let n=await ge(e,t[0],"history"),o=await e.api.claim(n.id);return N(e,{events:o.events},()=>El(e,o.events)),w.OK}},Pl=[Sm,zm,Ol,Cm,Am,Em,$m,Im];async function Om(e,t){if(e.session.token()===null)return null;try{let{claims:n}=await e.api.listClaims(),o=n.find((a)=>a.domainAscii===t&&a.status!=="abandoned");if(o===void 0)return null;let{view:r}=await e.api.claim(o.id);return he(r)?r.record.value:null}catch{return null}}function Pm(e,t){let n=(o,r)=>` ${e.paint.dim(o.padEnd(11))} ${r}`;switch(t.kind){case"delegated":return[n("Zone",t.apex),n("Managed by",`${t.provider.id==="unknown"?"a provider we don't recognise":t.provider.name}${t.parked?" (a parking service)":""}`),n("Nameservers",t.nameservers.map((o)=>o.host).join(", "))];case"nxdomain":return[n("Zone","none: public DNS has no nameservers for this name")];case"lookup_failed":return[n("Zone","we couldn't reach public DNS to find it")]}}var Tm={name:"dns",usage:"dns <domain>",summary:"What each DNS server answers right now, asked from this machine",group:"record",flags:[],examples:["prufy dns example.com","prufy dns example.com --json"],async run(e,{args:t}){let n=Ot(t[0],"dns"),o=Fn(n.ascii),r=await Om(e,n.ascii),a=r??Mr(Fr());e.io.status(" Asking each DNS server…");let i;try{i=await il(e.io.dns(),{domain:n.ascii,recordName:o,expected:a,previousValues:[]},{now:()=>e.io.now()})}finally{e.io.status(null)}let s=null,c=null;if(r!==null){s=qr(i.observations,r,{domain:n.ascii,recordName:o,zone:i.zoneStatus,previousValues:[]});let l=i.zone.kind==="delegated"?i.zone.provider:He.unknown;c=Hn(s,l)}let u={domain:n.ascii,recordName:o,expected:r,zone:i.zone,observations:i.observations,outcome:s,explanation:c};return N(e,u,()=>{let l=["",` ${e.paint.bold(n.unicode)}`,"",...Pm(e,i.zone),"",` TXT records at ${o}`,...kr(e,i.observations,o,r),""];if(c!==null)l.push(` ${e.paint.bold(c.headline)}`,...ye(c.why,e.width-2).map((p)=>` ${p}`),"");else l.push(` This terminal has no claim for ${n.unicode}, so there's no code to compare with.`,e.paint.dim(` Start one: prufy verify ${n.unicode}`),"");return l.push(e.paint.dim(" Asked from this machine. Prufy's own check runs from its servers:"),e.paint.dim(` prufy check ${n.unicode}`),""),l}),w.OK}},Tl=[Tm];function br(e,t){let n=(o)=>o.replace(/^www\./,"");return e.protocol===t.protocol&&e.port===t.port&&n(e.hostname)===n(t.hostname)}var Dm=[307,308],Rm=[301,302],Nm=2;function Dl(e){let t=new Map;return async(n,o)=>{let r=new URL(n instanceof Request?n.url:n),a=(o?.method??"GET")==="GET",i=new URL(`${r.pathname}${r.search}`,t.get(r.origin)??r.origin);for(let s=0;;s+=1){let c=await e(i,{...o,redirect:"manual"}),u=c.headers.get("location");if(!(Dm.includes(c.status)||a&&Rm.includes(c.status))||u===null)return c;let p=new URL(u,i);if(s>=Nm||!br(i,p))throw new U("moved",`${r.origin} sends requests on to ${p.origin}, which isn't the same site.`,{hint:`If that's the right Prufy, add: --api-url ${p.origin}`});t.set(r.origin,p.origin),i=p}}}import{join as vr}from"node:path";var jm=k({version:Z(1),sessions:Ct(g(),k({token:g(),savedAt:g()}))}),Rl={version:1,sessions:{}};function Zm(e){let t=e.env.PRUFY_CONFIG_DIR;if(t!==void 0&&t!=="")return t;let n=e.env.XDG_CONFIG_HOME;return vr(n!==void 0&&n!==""?n:vr(e.homeDir,".config"),"prufy")}var Rn=(e)=>e!==void 0&&Pn.test(e);function Nl(e,t){let n=vr(Zm(e),"session.json");function o(){let i=e.readFile(n);if(i===null)return Rl;try{return jm.parse(JSON.parse(i))}catch{return Rl}}let r=()=>Rn(e.env.PRUFY_TOKEN)?e.env.PRUFY_TOKEN:null,a=()=>{let i=o().sessions[t]?.token;return Rn(i)?i:null};return{path:n,source:()=>r()!==null?"env":a()!==null?"file":"none",token:()=>r()??a(),save:(i)=>{if(!Rn(i))return;let c={...o().sessions,[t]:{token:i,savedAt:e.now().toISOString()}};e.writePrivateFile(n,`${JSON.stringify({version:1,sessions:c},null,2)}
61
+ `)},forget:()=>{let i=o();if(i.sessions[t]===void 0)return!1;let{[t]:s,...c}=i.sessions;if(Object.keys(c).length===0)e.removeFile(n);else e.writePrivateFile(n,`${JSON.stringify({version:1,sessions:c},null,2)}
62
+ `);return!0}}}function jl(e){for(let t of e.headers.getSetCookie()){let[n]=t.split(";"),[o,...r]=(n??"").trim().split("=");if(o===On){let a=r.join("=");return Rn(a)?a:null}}return null}var Zl={name:"@workspace/cli",version:"0.1.0",type:"module",private:!0,description:"Prufy's command line: prove you own a domain from the terminal. Published to npm as `@prufy/cli`, from `dist/`.",exports:{".":"./src/index.ts","./testing":"./src/testing.ts"},scripts:{dev:"bun src/bin.ts",build:"bun scripts/build.ts","build:binaries":"bun scripts/build.ts --binaries",typecheck:"tsc --noEmit",test:"vitest run"},devDependencies:{"@types/node":"catalog:","@workspace/api":"workspace:*","@workspace/core":"workspace:*","@workspace/dns":"workspace:*","@workspace/tsconfig":"workspace:*",typescript:"catalog:",vitest:"catalog:",zod:"catalog:"}};var Zt=Zl.version;var Ve="https://www.prufy.dev",Um=`prufy-cli/${Zt}`;function Fm(e,t){let n=t??e.env.PRUFY_API_URL??Ve,o;try{o=new URL(n)}catch{throw T(`"${n}" isn't a web address.`,`Try: --api-url ${Ve}`)}if(o.protocol!=="https:"&&o.protocol!=="http:")throw T(`"${n}" isn't a web address.`,`Try: --api-url ${Ve}`);return o.origin}function xr(e,t,n){return ml({baseUrl:t,fetch:Dl(e.fetch),headers:()=>{let o=n?.token()??null;return{"user-agent":Um,...o===null?{}:{cookie:`${On}=${o}`}}},onResponse:(o)=>{let r=jl(o);if(r!==null)n?.save(r)}})}function Ll(e,t){let n=Fm(e,t.apiUrl),o=Nl(e,n);return{io:e,paint:Tt(e.color&&t.color&&!t.json),json:t.json,apiUrl:n,api:xr(e,n,o),session:o,width:Math.max(40,Math.min(e.columns,88))}}var Mm={name:"share",usage:"share <domain>",summary:"Make a setup link for a teammate or an agent",group:"handoff",flags:[["email","--email <address>","Email the link to them as well"],["note","--note <text>","A line from you, included in that email"]],examples:["prufy share example.com",'prufy share example.com --email dana@example.com --note "Could you add this today?"'],async run(e,{args:t,flags:n}){if(n.note!==void 0&&n.email===void 0)throw T("A note goes in the email, so it needs --email too.");let o=await ge(e,t[0],"share"),r=await e.api.createShare(o.id,{...n.email===void 0?{}:{email:n.email},...n.note===void 0?{}:{note:n.note}});return N(e,r,()=>{let a=["",` A setup link for ${o.domainUnicode}, good until ${re(r.expiresAt)}:`,"",` ${e.paint.cyan(r.url)}`,"",...ye("Whoever opens it can see this one record and ask for a check. It can't get a new code, stop the claim or see anything else.",e.width-2).map((i)=>` ${i}`),""];if(n.email!==void 0)a.push(r.emailed?` We emailed it to ${n.email}.`:" We couldn't send the email. The link above is yours to share.","");return a}),w.OK}};function Km(e,t){if(t===void 0)throw T("Which link?","For example: prufy setup https://prufy.dev/setup/…");if(Pn.test(t))return t;let n;try{n=new URL(t)}catch{throw T("That doesn't look like a setup link.",`They look like: ${e.apiUrl}/setup/…`)}let o=/^\/setup\/([A-Za-z0-9_-]{43})\/?$/.exec(n.pathname)?.[1];if(o===void 0)throw T("That doesn't look like a setup link.",`They look like: ${e.apiUrl}/setup/…`);if(!br(n,new URL(e.apiUrl)))throw new U("other_origin",`That link is for ${n.origin}, and this terminal talks to ${e.apiUrl}.`,{hint:`If you trust it, add: --api-url ${n.origin}`,exitCode:w.USAGE});return o}function Vm(e,t){let{view:n}=t,o=["",` ${e.paint.bold(n.domainUnicode)} ${Dn(e,ut(n))}`,""];if(!q(n)||!he(n))return[...o,...ae(e,n),""];let r=Ue(n);if(o.push(r===null?" Someone asked for help adding one DNS record. These steps are general.":` Someone asked for help adding one DNS record at ${r}.`,""," Add this record:",...Ke(e,n)),ce(n))o.push(""," Where to add it",...Dt(e,n.instructions));return o.push("",e.paint.dim(" This link can read this one record and ask for a check. Nothing else."),""),o}var qm={name:"setup",usage:"setup <link>",summary:"Open a setup link someone sent you",group:"handoff",flags:[["check","--check","Ask for a check now, once the record is added"],["wait","--wait","Keep checking until it's verified"],["timeout","--timeout <minutes>","How long to wait with --wait. 10 by default"]],examples:["prufy setup https://prufy.dev/setup/… --json","prufy setup https://prufy.dev/setup/… --check"],async run(e,{args:t,flags:n}){let o=Km(e,t[0]),r=xr(e.io,e.apiUrl,null),a={check:()=>r.setupCheck(o),refresh:()=>r.setup(o)},i=tt(e),s=n.check===!0||n.wait===!0,c=await r.setup(o);if(i(Vm(e,c)),s&&q(c.view)){e.io.status(" Checking DNS now…");try{c=await Nt(e,a)}finally{e.io.status(null)}if(n.wait===!0)c=await jt(e,a,c,{timeoutMs:It(n,Rt),say:i});if(n.wait!==!0||!q(c.view))i([...ae(e,c.view),""])}if(e.json)e.io.out(JSON.stringify(c,null,2));return s?Pt(c.view):w.OK}},Bm={name:"connect",usage:"connect <domain>",summary:"One-click setup, where the DNS provider supports it",group:"handoff",flags:[["no-open","--no-open","Print the link without opening a browser"]],examples:["prufy connect example.com"],async run(e,{args:t,flags:n}){let o=await ge(e,t[0],"connect"),r=await e.api.claim(o.id);if(Fe(r.view))return N(e,r,()=>["",...ae(e,r.view),""]),w.OK;if(r.domainConnect===null||!r.domainConnect.applyEnabled){let s=r.domainConnect?.providerName??Ue(r.view);throw new U("domain_connect_unavailable",s===null?"One-click setup isn't available for this domain's DNS provider.":`One-click setup isn't available at ${s} yet.`,{hint:`Add the record by hand: prufy record ${o.domainUnicode}`})}let{url:a}=await e.api.domainConnectUrl(o.id),i=n["no-open"]!==!0&&e.io.interactive&&!e.json?await e.io.openUrl(a):!1;return N(e,{url:a,opened:i},()=>["",i?` Opened ${r.domainConnect?.providerName??"your provider"} in your browser.`:` Open this at ${r.domainConnect?.providerName??"your provider"}:`,"",` ${e.paint.cyan(a)}`,""," You sign in there, not here, and approve the one record. We never see your password.","",e.paint.dim(` Once it's approved: prufy check ${o.domainUnicode} --wait`),""]),w.OK}},Ul=[Mm,qm,Bm];async function Fl(e){if(e.session.token()===null)return 0;try{return(await e.api.listClaims()).claims.length}catch{return null}}function Hm(e){switch(e.session.source()){case"env":return"from PRUFY_TOKEN in the environment";case"file":return e.session.path;case"none":return"none yet. The first `prufy verify` starts one"}}var Wm={name:"whoami",usage:"whoami",summary:"Which Prufy this terminal talks to, and where its session lives",group:"terminal",flags:[],examples:["prufy whoami"],async run(e){let t=await Fl(e),n={apiUrl:e.apiUrl,session:{source:e.session.source(),path:e.session.path},domains:t};return N(e,n,()=>["",` ${e.paint.dim("Prufy ")} ${e.apiUrl}`,` ${e.paint.dim("Session")} ${Hm(e)}`,` ${e.paint.dim("Domains")} ${t??"we couldn't reach Prufy to count them"}`,""," There's no sign-up. This terminal's session is what makes its domains yours here,"," the same way a cookie does in a browser. The two don't share domains yet.",""]),w.OK}},Gm={name:"logout",usage:"logout",summary:"Forget this terminal's session",group:"terminal",flags:[["yes","-y, --yes","Don't ask first"]],examples:["prufy logout"],async run(e,{flags:t}){let n=e.session.source();if(n==="env")throw new U("session_from_env","This session comes from PRUFY_TOKEN.",{hint:"Unset that variable to sign this terminal out."});if(n==="none")return N(e,{forgotten:!1},()=>[""," This terminal has no session to forget.",""]),w.OK;if(t.yes!==!0){if(!e.io.interactive||e.json)throw T("Forgetting the session needs a yes, and there's nobody here to ask.","Add --yes: prufy logout --yes");let r=await Fl(e),a=r===null?"its domains":`its ${r} ${r===1?"domain":"domains"}`;if(e.io.out(""),e.io.out(` This terminal will stop being able to see or manage ${a}.`),e.io.out(" They stay verified, and we keep checking them."),!await e.io.confirm(" Forget this terminal's session?"))return e.io.out(" Left as it was."),w.OK}let o=e.session.forget();return N(e,{forgotten:o},()=>[""," Forgotten. The next `prufy verify` starts fresh.",""]),w.OK}},Ml=[Wm,Gm];var Nn=[...Pl,...Tl,...Ul,...gl,...Ml],Kl=(e)=>Nn.find((t)=>t.name===e||t.aliases?.includes(e)===!0);var Jm=[["start","Start here"],["record","The record"],["handoff","Hand it to someone else"],["watch","Keeping watch"],["terminal","This terminal"]],Vl=[["--json","Print the result as JSON, for scripts and agents"],["--api-url <url>",`Talk to another Prufy. Default ${Ve}, or PRUFY_API_URL`],["--no-color","Plain text"],["-h, --help","Help, for prufy or for one command"],["-v, --version","Which version this is"]],Xm=[["0","Done. After a check, it means verified"],["1","Something went wrong"],["2","The command wasn't understood"],["3","Checked, and not verified yet"]];function Lt(e,t,n=Math.max(...t.map(([o])=>o.length))){return t.map(([o,r])=>` ${o.padEnd(n)} ${e.dim(r)}`)}function ql(e){let t=["",` ${e.bold("prufy")}: prove you own a domain, from the terminal.`,""," Usage"," prufy <command> [options]"],n=Math.max(...Nn.map((o)=>o.usage.length));for(let[o,r]of Jm){let a=Nn.filter((i)=>i.group===o);t.push("",` ${r}`,...Lt(e,a.map((i)=>[i.usage,i.summary]),n))}return t.push(""," Options",...Lt(e,Vl),""," Exit codes",...Lt(e,Xm),"",e.dim(" More on one command: prufy <command> --help"),""),t}function Bl(e,t){let n=["",` ${e.bold(`prufy ${t.usage}`)}`,` ${t.summary}.`];if(t.flags.length>0)n.push(""," Options",...Lt(e,t.flags.map(([,o,r])=>[o,r])));if(n.push(""," Everywhere",...Lt(e,Vl.slice(0,3))),t.examples.length>0)n.push(""," Examples",...t.examples.map((o)=>` ${o}`));return n.push(""),n}var Ym=(e)=>e.includes("--json");function Qm(e,t,n,o){if(n){let a={kind:t.kind,message:t.message,...t.hint===void 0?{}:{hint:t.hint},...t.retryAfter===void 0?{}:{retryAfter:t.retryAfter}};return e.out(JSON.stringify({error:a},null,2)),t.exitCode}let r=Tt(o);if(e.error(""),e.error(` ${r.red("✗")} ${t.message}`),t.hint!==void 0)e.error(` ${r.dim(t.hint)}`);return e.error(""),t.exitCode}async function ef(e,t){let{flags:n}=t,o=n["no-color"]!==!0,r=Tt(e.color&&o&&n.json!==!0);if(n.version===!0)return e.out(n.json===!0?JSON.stringify({version:Zt}):Zt),w.OK;let a=t.command==="help"?t.args[0]??null:t.command,i=n.help===!0||t.command==="help";if(a===null){for(let l of ql(r))e.out(l);return i?w.OK:w.USAGE}let s=Kl(a);if(s===void 0)throw T(`prufy doesn't have a "${a}" command.`,"See what's available: prufy --help");if(i){for(let l of Bl(r,s))e.out(l);return w.OK}let c=hl(n,s.flags.map(([l])=>l));if(c.length>0)throw T(`prufy ${s.name} doesn't take --${c[0]}.`,`See what it takes: prufy ${s.name} --help`);let u=Ll(e,{json:n.json===!0,apiUrl:n["api-url"],color:o});try{return await s.run(u,{args:t.args,flags:n})}catch(l){throw pr(l,u.apiUrl)}}async function Hl(e,t){let n=Ym(e),o=t.color&&!e.includes("--no-color");try{return await ef(t,fl(e))}catch(r){return Qm(t,pr(r,t.env.PRUFY_API_URL??Ve),n,o)}}var Wl=cl();process.on("SIGINT",()=>{Wl.status(null),process.exit(130)});process.exitCode=await Hl(process.argv.slice(2),Wl);