mailwarden
Advanced tools
| /** | ||
| * List-Unsubscribe (RFC 2369 / RFC 8058) — inspecting a mailing list's opt-out | ||
| * options, and performing the one-click HTTPS opt-out. | ||
| * | ||
| * This is mailwarden's ONLY outbound request to a host other than Google, so the | ||
| * rules around it are deliberately tight: | ||
| * | ||
| * - **The URL is never a tool parameter.** It is read from the `List-Unsubscribe` | ||
| * header of the addressed message and nothing else. If the model could pass a | ||
| * URL, an injected mail could turn this into an exfiltration channel (mailbox | ||
| * content in the query string) — the same reasoning that keeps the account out | ||
| * of the tool schema (see SECURITY.md). | ||
| * - **The request body is fixed** (`List-Unsubscribe=One-Click`) and the response | ||
| * body is discarded: only the status code flows back into the model's context, | ||
| * so the endpoint cannot answer with instructions. | ||
| * - **Only RFC 8058 one-click** is automated, i.e. the sender must have opted in | ||
| * via `List-Unsubscribe-Post`. A plain `https:` link is meant for a human in a | ||
| * browser and is surfaced, not fetched. | ||
| * - **`mailto:` opt-outs are never performed** — they would require sending mail, | ||
| * which mailwarden cannot do (no send scope). They are reported for the human. | ||
| * - **SSRF guards:** https only, default port, no credentials in the URL, and | ||
| * every hop (including redirects) must resolve exclusively to public addresses. | ||
| */ | ||
| import { lookup as dnsLookup } from "node:dns/promises"; | ||
| /** Values other than https/mailto (e.g. plain http) are dropped, not surfaced. */ | ||
| const URI_LIST = /<([^<>]*)>/g; | ||
| const ONE_CLICK_POST = /(^|[;,\s])List-Unsubscribe\s*=\s*One-Click([;,\s]|$)/i; | ||
| /** | ||
| * Parse `List-Unsubscribe` (+ `List-Unsubscribe-Post`) into the opt-out options. | ||
| * Tolerates folded headers and missing angle brackets around a lone URI, which | ||
| * real senders both produce. Bare `http:` URLs are ignored — downgrading an | ||
| * opt-out to cleartext is not worth automating, and one-click requires https. | ||
| */ | ||
| export function parseListUnsubscribe(listUnsubscribe, listUnsubscribePost) { | ||
| const raw = (listUnsubscribe ?? "").trim(); | ||
| const candidates = []; | ||
| const bracketed = raw.match(URI_LIST); | ||
| if (bracketed?.length) { | ||
| for (const m of bracketed) | ||
| candidates.push(m.slice(1, -1).trim()); | ||
| } | ||
| else if (raw) { | ||
| // No angle brackets at all: treat the whole value as a comma-separated list. | ||
| for (const part of raw.split(",")) | ||
| candidates.push(part.trim()); | ||
| } | ||
| const httpsUrls = []; | ||
| const mailtos = []; | ||
| for (const c of candidates) { | ||
| // Header folding can leave newlines inside the brackets. | ||
| const uri = c.replace(/\s+/g, ""); | ||
| if (!uri) | ||
| continue; | ||
| if (/^https:\/\//i.test(uri)) | ||
| httpsUrls.push(uri); | ||
| else if (/^mailto:/i.test(uri)) | ||
| mailtos.push(uri); | ||
| } | ||
| return { | ||
| oneClick: httpsUrls.length > 0 && ONE_CLICK_POST.test(listUnsubscribePost ?? ""), | ||
| httpsUrls, | ||
| mailtos, | ||
| }; | ||
| } | ||
| /** | ||
| * Parse and vet an opt-out URL: https, default port, no embedded credentials. | ||
| * A non-default port would let a redirect reach an internal service on a host | ||
| * whose address is public; the address check alone would pass it. | ||
| */ | ||
| export function validateUnsubscribeUrl(raw) { | ||
| let url; | ||
| try { | ||
| url = new URL(raw); | ||
| } | ||
| catch { | ||
| throw new Error(`Unsubscribe URL is not a valid URL: ${raw}`); | ||
| } | ||
| if (url.protocol !== "https:") { | ||
| throw new Error(`Unsubscribe URL must be https (got ${url.protocol.replace(":", "")}).`); | ||
| } | ||
| if (url.username || url.password) { | ||
| throw new Error("Unsubscribe URL must not carry credentials."); | ||
| } | ||
| if (url.port && url.port !== "443") { | ||
| throw new Error(`Unsubscribe URL must use the default https port (got ${url.port}).`); | ||
| } | ||
| return url; | ||
| } | ||
| /** | ||
| * IPv4 dotted quad → its 4 bytes, or null. Deliberately strict: octal (`0177.0.0.1`), | ||
| * hex (`0x7f.0.0.1`), integer (`2130706433`) and short (`127.1`) notations all return | ||
| * null and therefore fail closed at the caller, rather than being decoded into an | ||
| * address we might then mis-classify. | ||
| */ | ||
| function parseIpv4Bytes(s) { | ||
| const parts = s.split("."); | ||
| if (parts.length !== 4) | ||
| return null; | ||
| const out = []; | ||
| for (const p of parts) { | ||
| if (!/^\d{1,3}$/.test(p)) | ||
| return null; | ||
| const n = Number(p); | ||
| if (n > 255) | ||
| return null; | ||
| out.push(n); | ||
| } | ||
| return out; | ||
| } | ||
| /** | ||
| * IPv6 literal → its 16 bytes, or null. Handles `::` elision anywhere and a | ||
| * trailing dotted quad (`::ffff:127.0.0.1`). | ||
| * | ||
| * Parsing to bytes is the whole point: matching prefixes as *text* only works for | ||
| * whatever spelling the resolver happens to emit, and `0:0:0:0:0:0:0:1` is the same | ||
| * address as `::1`. Every spelling collapses to the same 16 bytes here. | ||
| */ | ||
| function parseIpv6Bytes(s) { | ||
| if (!s.includes(":")) | ||
| return null; | ||
| let text = s; | ||
| // Fold a trailing dotted quad into the two hex groups it stands for. | ||
| const dotted = text.match(/(\d{1,3}(?:\.\d{1,3}){3})$/); | ||
| if (dotted) { | ||
| const v4 = parseIpv4Bytes(dotted[1]); | ||
| if (!v4) | ||
| return null; | ||
| const hi = ((v4[0] << 8) | v4[1]).toString(16); | ||
| const lo = ((v4[2] << 8) | v4[3]).toString(16); | ||
| text = text.slice(0, -dotted[1].length) + `${hi}:${lo}`; | ||
| } | ||
| const halves = text.split("::"); | ||
| if (halves.length > 2) | ||
| return null; // `::` may appear at most once | ||
| const toGroups = (part) => part === "" ? [] : part.split(":").map((g) => (/^[0-9a-f]{1,4}$/.test(g) ? parseInt(g, 16) : NaN)); | ||
| const left = toGroups(halves[0]); | ||
| const right = halves.length === 2 ? toGroups(halves[1]) : []; | ||
| if ([...left, ...right].some(Number.isNaN)) | ||
| return null; | ||
| const missing = 8 - left.length - right.length; | ||
| // Without `::` the address must already be complete; with it, at least one group elided. | ||
| if (halves.length === 2 ? missing < 1 : missing !== 0) | ||
| return null; | ||
| const groups = [...left, ...Array(halves.length === 2 ? missing : 0).fill(0), ...right]; | ||
| const bytes = []; | ||
| for (const g of groups) | ||
| bytes.push(g >> 8, g & 0xff); | ||
| return bytes; | ||
| } | ||
| /** True when `bytes` falls inside the CIDR block `prefix`/`bits`. */ | ||
| function inCidr(bytes, prefix, bits) { | ||
| const whole = bits >> 3; | ||
| for (let i = 0; i < whole; i++) | ||
| if (bytes[i] !== prefix[i]) | ||
| return false; | ||
| const rest = bits & 7; | ||
| if (rest) { | ||
| const mask = (0xff << (8 - rest)) & 0xff; | ||
| if ((bytes[whole] & mask) !== (prefix[whole] & mask)) | ||
| return false; | ||
| } | ||
| return true; | ||
| } | ||
| const cidrs = (v4, list) => list.map(([addr, bits]) => { | ||
| const bytes = v4 ? parseIpv4Bytes(addr) : parseIpv6Bytes(addr); | ||
| if (!bytes) | ||
| throw new Error(`mailwarden: unparsable blocked CIDR ${addr}`); // build-time typo guard | ||
| return [bytes, bits]; | ||
| }); | ||
| /** IPv4 blocks that are not globally reachable (IANA IPv4 Special-Purpose registry). */ | ||
| const BLOCKED_V4 = cidrs(true, [ | ||
| ["0.0.0.0", 8], // "this host on this network" | ||
| ["10.0.0.0", 8], // private | ||
| ["100.64.0.0", 10], // CGNAT / shared address space | ||
| ["127.0.0.0", 8], // loopback | ||
| ["169.254.0.0", 16], // link-local — includes 169.254.169.254 (cloud metadata) | ||
| ["172.16.0.0", 12], // private | ||
| ["192.0.0.0", 24], // IETF protocol assignments | ||
| ["192.0.2.0", 24], // TEST-NET-1 | ||
| ["192.88.99.0", 24], // 6to4 relay anycast (deprecated) | ||
| ["192.168.0.0", 16], // private | ||
| ["198.18.0.0", 15], // benchmarking | ||
| ["198.51.100.0", 24], // TEST-NET-2 | ||
| ["203.0.113.0", 24], // TEST-NET-3 | ||
| ["224.0.0.0", 4], // multicast | ||
| ["240.0.0.0", 4], // reserved, incl. 255.255.255.255 broadcast | ||
| ]); | ||
| /** IPv6 blocks that are not globally reachable (IANA IPv6 Special-Purpose registry). */ | ||
| const BLOCKED_V6 = cidrs(false, [ | ||
| ["::", 128], // unspecified | ||
| ["::1", 128], // loopback | ||
| ["64:ff9b:1::", 48], // local-use IPv4/IPv6 translation | ||
| ["100::", 64], // discard-only | ||
| ["2001::", 32], // Teredo | ||
| ["2001:2::", 48], // benchmarking | ||
| ["2001:10::", 28], // ORCHID (deprecated) | ||
| ["2001:20::", 28], // ORCHIDv2 | ||
| ["2001:db8::", 32], // documentation — the v6 twin of TEST-NET | ||
| ["2002::", 16], // 6to4 (deprecated), and it embeds an arbitrary IPv4 | ||
| ["5f00::", 16], // SRv6 SIDs | ||
| ["fc00::", 7], // unique local | ||
| ["fe80::", 10], // link-local | ||
| ["ff00::", 8], // multicast | ||
| ]); | ||
| /** IPv6 blocks carrying an IPv4 address in their last 4 bytes — judge that too. */ | ||
| const V4_IN_V6 = cidrs(false, [ | ||
| ["::", 96], // IPv4-compatible (deprecated) + the unspecified/loopback corner | ||
| ["::ffff:0:0", 96], // IPv4-mapped | ||
| ["::ffff:0:0:0", 96], // IPv4-translated (RFC 2765, deprecated — still spells out an IPv4) | ||
| ["64:ff9b::", 96], // NAT64 | ||
| ]); | ||
| /** | ||
| * True for addresses an unsubscribe request must never reach: loopback, private | ||
| * and shared ranges, link-local (incl. the cloud metadata address), multicast, | ||
| * documentation and reserved space — in either family, in any spelling. | ||
| * | ||
| * Anything that does not parse as an address is blocked: the input is a resolver's | ||
| * answer, so an unparsable one means we cannot reason about where the request would | ||
| * go, and that is not a reason to let it through. | ||
| */ | ||
| export function isBlockedAddress(ip) { | ||
| const addr = ip.trim().replace(/^\[|\]$/g, "").split("%")[0].toLowerCase(); | ||
| const v4 = parseIpv4Bytes(addr); | ||
| if (v4) | ||
| return BLOCKED_V4.some(([prefix, bits]) => inCidr(v4, prefix, bits)); | ||
| const v6 = parseIpv6Bytes(addr); | ||
| if (!v6) | ||
| return true; | ||
| if (BLOCKED_V6.some(([prefix, bits]) => inCidr(v6, prefix, bits))) | ||
| return true; | ||
| // An embedded IPv4 must clear the IPv4 rules as well — but only ever to BLOCK. | ||
| // A public inner address does not excuse the outer prefix (`fd00::8.8.8.8`). | ||
| if (V4_IN_V6.some(([prefix, bits]) => inCidr(v6, prefix, bits))) { | ||
| const inner = v6.slice(12); | ||
| if (BLOCKED_V4.some(([prefix, bits]) => inCidr(inner, prefix, bits))) | ||
| return true; | ||
| } | ||
| return false; | ||
| } | ||
| export const defaultUnsubscribeDeps = { | ||
| fetch: (...args) => globalThis.fetch(...args), | ||
| resolveHost: async (hostname) => { | ||
| const entries = await dnsLookup(hostname, { all: true }); | ||
| return entries.map((e) => e.address); | ||
| }, | ||
| }; | ||
| /** | ||
| * Reject a hop whose host resolves to anything non-public (all answers must pass). | ||
| * | ||
| * Known residual: `fetch` resolves the name again when it connects, so a resolver | ||
| * that answers differently the second time (DNS rebinding) is not caught here. | ||
| * Closing that would mean pinning the checked address through a custom connector, | ||
| * which `fetch` does not expose. What survives the gap is a *blind* POST with a | ||
| * fixed body whose response is never read — see SECURITY.md. | ||
| */ | ||
| async function assertPublicHost(url, deps, deadline) { | ||
| // `url.hostname` is already punycode for an IDN, so a homograph domain resolves | ||
| // as the name it really is — the check sees what the connection will see. | ||
| const host = url.hostname.replace(/^\[|\]$/g, ""); | ||
| let addresses; | ||
| try { | ||
| // The deadline covers resolution too. `AbortSignal` cannot cancel a | ||
| // `dns.lookup` in flight, but racing it means a stalled resolver returns | ||
| // control on time instead of holding the tool call open indefinitely. | ||
| addresses = await (deadline | ||
| ? Promise.race([ | ||
| deps.resolveHost(host), | ||
| new Promise((_, reject) => { | ||
| if (deadline.aborted) | ||
| reject(new Error("timed out")); | ||
| deadline.addEventListener("abort", () => reject(new Error("timed out")), { once: true }); | ||
| }), | ||
| ]) | ||
| : deps.resolveHost(host)); | ||
| } | ||
| catch (err) { | ||
| throw new Error(`Could not resolve the unsubscribe host ${host}: ${err instanceof Error ? err.message : String(err)}`); | ||
| } | ||
| if (!addresses.length) | ||
| throw new Error(`The unsubscribe host ${host} resolved to no address.`); | ||
| const blocked = addresses.filter((a) => isBlockedAddress(a)); | ||
| if (blocked.length) { | ||
| throw new Error(`The unsubscribe host ${host} resolves to a non-public address (${blocked.join(", ")}) — refusing to call it.`); | ||
| } | ||
| } | ||
| const TIMEOUT_MS = 10_000; | ||
| const MAX_REDIRECTS = 3; | ||
| const USER_AGENT = "mailwarden (+https://github.com/csitte/mailwarden)"; | ||
| /** | ||
| * Perform the RFC 8058 one-click opt-out: POST `List-Unsubscribe=One-Click` to | ||
| * the sender's https endpoint. Redirects are followed manually (up to | ||
| * MAX_REDIRECTS) so every hop is re-validated — a permissive endpoint must not | ||
| * be able to bounce the request onto an internal host. 301/302/303 switch to GET | ||
| * per the usual rules; 307/308 repeat the POST. | ||
| * | ||
| * The response body is never read: only the status code is returned. | ||
| */ | ||
| export async function oneClickUnsubscribe(rawUrl, deps = defaultUnsubscribeDeps, timeoutMs = TIMEOUT_MS) { | ||
| let url = validateUnsubscribeUrl(rawUrl); | ||
| let method = "POST"; | ||
| // ONE budget for the whole chain, not per hop — a per-hop timeout would let a | ||
| // redirecting endpoint stall the tool call for MAX_REDIRECTS × TIMEOUT_MS. | ||
| const deadline = AbortSignal.timeout(timeoutMs); | ||
| for (let redirects = 0;; redirects++) { | ||
| await assertPublicHost(url, deps, deadline); | ||
| const res = await deps.fetch(url.toString(), { | ||
| method, | ||
| redirect: "manual", | ||
| headers: method === "POST" | ||
| ? { "content-type": "application/x-www-form-urlencoded", "user-agent": USER_AGENT } | ||
| : { "user-agent": USER_AGENT }, | ||
| body: method === "POST" ? "List-Unsubscribe=One-Click" : undefined, | ||
| signal: deadline, | ||
| }); | ||
| // Discard the body unread — it must not reach the model, and an unconsumed | ||
| // stream would keep the socket open. | ||
| try { | ||
| await res.body?.cancel(); | ||
| } | ||
| catch { | ||
| /* body already consumed or not a real stream (tests) */ | ||
| } | ||
| const location = res.status >= 300 && res.status < 400 ? res.headers.get("location") : null; | ||
| if (!location) { | ||
| return { url: url.toString(), status: res.status, ok: res.status >= 200 && res.status < 300, redirects }; | ||
| } | ||
| if (redirects >= MAX_REDIRECTS) { | ||
| throw new Error(`The unsubscribe endpoint redirected more than ${MAX_REDIRECTS} times.`); | ||
| } | ||
| url = validateUnsubscribeUrl(new URL(location, url).toString()); | ||
| if (res.status !== 307 && res.status !== 308) | ||
| method = "GET"; | ||
| } | ||
| } | ||
| /** Read-only: report a thread's opt-out options. Makes no outbound request. */ | ||
| export async function inspectUnsubscribe(gmail, threadId) { | ||
| const h = await gmail.getUnsubscribeHeaders(threadId); | ||
| const options = parseListUnsubscribe(h.listUnsubscribe, h.listUnsubscribePost); | ||
| return { | ||
| threadId, | ||
| messageId: h.messageId, | ||
| from: h.from, | ||
| subject: h.subject, | ||
| ...options, | ||
| hasUnsubscribe: options.httpsUrls.length > 0 || options.mailtos.length > 0, | ||
| }; | ||
| } | ||
| /** | ||
| * Perform the one-click opt-out for a thread, if the sender supports it. | ||
| * Returns a structured refusal (rather than throwing) when the message offers no | ||
| * automatable option — the caller needs the alternatives, not an error. | ||
| */ | ||
| export async function unsubscribeThread(gmail, threadId, deps = defaultUnsubscribeDeps) { | ||
| const info = await inspectUnsubscribe(gmail, threadId); | ||
| const base = { | ||
| threadId, | ||
| messageId: info.messageId, | ||
| from: info.from, | ||
| options: { oneClick: info.oneClick, httpsUrls: info.httpsUrls, mailtos: info.mailtos }, | ||
| }; | ||
| if (!info.hasUnsubscribe) { | ||
| return { ...base, unsubscribed: false, reason: "The message advertises no List-Unsubscribe option." }; | ||
| } | ||
| if (!info.oneClick) { | ||
| const reason = info.httpsUrls.length | ||
| ? "The sender offers an unsubscribe link but did not opt into RFC 8058 one-click " + | ||
| "(no List-Unsubscribe-Post header) — the link is meant to be opened by a human in a browser. " + | ||
| "It is listed in `options.httpsUrls`." | ||
| : "The only opt-out offered is a mailto: address, which would require sending mail — " + | ||
| "mailwarden cannot send. It is listed in `options.mailtos`."; | ||
| return { ...base, unsubscribed: false, reason }; | ||
| } | ||
| // A header may list several https URIs. Take the first the vetting accepts — | ||
| // throwing because URI #1 has a stray port while #2 is fine would strand a | ||
| // perfectly good opt-out. All of them unusable is a refusal, not an error. | ||
| const usable = info.httpsUrls.find((u) => { | ||
| try { | ||
| validateUnsubscribeUrl(u); | ||
| return true; | ||
| } | ||
| catch { | ||
| return false; | ||
| } | ||
| }); | ||
| if (!usable) { | ||
| return { | ||
| ...base, | ||
| unsubscribed: false, | ||
| reason: "The sender's one-click endpoint did not pass vetting (https and the default port only, " + | ||
| "no credentials in the URL). The advertised URLs are listed in `options.httpsUrls`.", | ||
| }; | ||
| } | ||
| const res = await oneClickUnsubscribe(usable, deps); | ||
| return { | ||
| ...base, | ||
| unsubscribed: res.ok, | ||
| url: res.url, | ||
| status: res.status, | ||
| ...(res.ok ? {} : { reason: `The unsubscribe endpoint answered ${res.status}.` }), | ||
| }; | ||
| } | ||
| //# sourceMappingURL=unsubscribe.js.map |
| {"version":3,"file":"unsubscribe.js","sourceRoot":"","sources":["../src/unsubscribe.ts"],"names":[],"mappings":"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"} |
+33
-0
@@ -585,2 +585,35 @@ import { CliError } from "./cli.js"; | ||
| } | ||
| /** | ||
| * The List-Unsubscribe headers of a thread's most recent message that actually | ||
| * carries one, via a metadata-only fetch. Newest-first because opt-out endpoints | ||
| * are per-mailing and older ones may already be dead — but skipping messages | ||
| * without the header matters: a reply you sent sits at the end of the thread and | ||
| * advertises nothing, which would otherwise read as "this list has no opt-out". | ||
| * With no such message anywhere, the newest one is used so From/Subject still | ||
| * describe the thread. | ||
| */ | ||
| async getUnsubscribeHeaders(threadId) { | ||
| const res = await this.req(() => this.api.users.threads.get({ | ||
| userId: "me", | ||
| id: threadId, | ||
| format: "metadata", | ||
| metadataHeaders: ["List-Unsubscribe", "List-Unsubscribe-Post", "From", "Subject"], | ||
| })); | ||
| const messages = res.data.messages ?? []; | ||
| if (!messages.length) | ||
| throw new Error(`Thread ${threadId} has no messages.`); | ||
| const headerOf = (m, n) => m.payload?.headers?.find((h) => h.name?.toLowerCase() === n.toLowerCase())?.value ?? ""; | ||
| // Newest first, preferring one that advertises an opt-out at all. | ||
| const last = [...messages].reverse().find((m) => headerOf(m, "List-Unsubscribe").trim() !== "") ?? | ||
| messages[messages.length - 1]; | ||
| // Raw for the two List-* headers: they carry URIs, not RFC 2047 encoded words. | ||
| const raw = (n) => headerOf(last, n); | ||
| return { | ||
| messageId: last.id, | ||
| from: decodeRfc2047(raw("From")), | ||
| subject: decodeRfc2047(raw("Subject")), | ||
| listUnsubscribe: raw("List-Unsubscribe"), | ||
| listUnsubscribePost: raw("List-Unsubscribe-Post"), | ||
| }; | ||
| } | ||
| async getThread(threadId, full = true) { | ||
@@ -587,0 +620,0 @@ const res = await this.req(() => this.api.users.threads.get({ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../src/gmail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,MAAM,EAAY,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAiF7B,8EAA8E;AAC9E,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,mGAAmG;AACnG,SAAS,gBAAgB,CAAC,QAAgB,EAAE,IAAY;IACtD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5D,mFAAmF;IACnF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;;YAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,4EAA4E;IAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAC9D,2EAA2E;IAC3E,OAAO,MAAM,CAAC,OAAO,CACnB,sDAAsD,EACtD,CAAC,KAAK,EAAE,OAAe,EAAE,GAAW,EAAE,IAAY,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,MAAM,CAAC,GAAG,GAAuE,CAAC;IAClF,OAAO,CACL,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,KAAK,eAAe;QAC5C,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,YAAY;IACZ,WAAW;IACX,cAAc;IACd,OAAO;IACP,WAAW;IACX,4BAA4B;CAC7B,CAAC,CAAC;AAEH,SAAS,uBAAuB,CAAC,GAAY;IAC3C,MAAM,CAAC,GAAG,GAA4C,CAAC;IACvD,IAAI,OAAO,CAAC,EAAE,IAAI,KAAK,QAAQ,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,6EAA6E;IAC7E,OAAO,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ,IAAI,gDAAgD,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5G,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY;IAC5B,MAAM,CAAC,GAAG,GAA4E,CAAC;IACvF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QACpC,8EAA8E;QAC9E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,CAAC,GAAG,GAIT,CAAC;IACF,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACpF,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,yBAAyB,CAAC;QAC5D,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,QAAQ;YAC7B,iFAAiF,CAAC,IAAI,CACpF,CAAC,CAAC,OAAO,CACV,CAAC,CACL,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,mBAAmB,CAAC,CAAiB;IACnD,MAAM,GAAG,GAAmC,EAAE,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IACxB,IAAI,CAAC,CAAC,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IACvC,IAAI,CAAC,CAAC,KAAK;QAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,CAAC,YAAY;QAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IACtD,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI;QAAE,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;IACjE,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI;QAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IAC9D,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACnB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAClB,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,IAAI,QAAQ,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,qBAAqB,CAAC,CAA6C;IACjF,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACnB,IAAI,CAAC,CAAC,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IACxB,IAAI,CAAC,CAAC,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IACvC,IAAI,CAAC,CAAC,KAAK;QAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACjC,IAAI,CAAC,CAAC,YAAY;QAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IACtD,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI;QAAE,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;IACjE,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI;QAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IAC9D,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ;QACjE,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAiB;IACrD,iFAAiF;IACjF,gFAAgF;IAChF,oFAAoF;IACpF,0EAA0E;IAC1E,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACtD,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAoB,EACpB,OAAqF,EAAE;IAEvF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1F,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,SAAS,GACb,CAAC,MAAM,KAAK,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC;YACzF,IAAI,OAAO,IAAI,OAAO,IAAI,CAAC,SAAS;gBAAE,MAAM,GAAG,CAAC;YAChD,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,SAAS,UAAU,CAAC,CAA8B,EAAE,IAAY;IAC9D,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC;AAClG,CAAC;AAED,oFAAoF;AACpF,SAAS,YAAY,CAAC,CAAU;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9D,OAAO,CAAC,IAAI,SAAS,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAG,MAAgB;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,MAAM,EAAE,GAAG,sBAAsB,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACvE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+DAA+D;AAC/D,SAAS,SAAS,CAChB,CAA0C,EAC1C,EAA4C;IAE5C,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,EAAE,CAAC,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAA8B,EAC9B,UAAuB,IAAI,GAAG,EAAE;IAEhC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,EAAE,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/E,IAAI,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,qFAAqF;IACrF,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IACtD,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mFAAmF;AACnF,SAAS,WAAW,CAAC,CAA8B;IACjD,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AAC3B,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,OAAqC;IACjE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,CAAC,CAA8B,EAAU,EAAE;QACxD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;QACvB,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,4CAA4C;QAC3E,CAAC;IACH,CAAC,CAAC;IACF,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY;YAAE,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;aAC9C,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW;YAAE,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,CAA0B;IAC3D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACtC,IAAI,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC;gBACP,SAAS,EAAE,CAAC,CAAC,EAAG;gBAChB,YAAY,EAAE,CAAC,CAAC,IAAK,CAAC,YAAa;gBACnC,QAAQ,EAAE,CAAC,CAAC,QAAS;gBACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,0BAA0B;gBAClD,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,YAAY,CAAC,CAA0B;IACrD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CACtB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAC7D,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAG;QACT,QAAQ,EAAE,CAAC,CAAC,QAAS;QACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QACX,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;QACxB,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,OAAO;IACP,QAAQ;IACR,SAAS;IACT,OAAO;IACP,MAAM;IACN,WAAW;IACX,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH,oFAAoF;AACpF,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,yFAAyF;AACzF,MAAM,YAAY,GAA2B;IAC3C,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,iBAAiB;CAC1B,CAAC;AASF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,8EAA8E;IAC9E,8EAA8E;IAC9E,oEAAoE;IACpE,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAEtF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,WAAW;gBAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC7C,KAAK,SAAS;gBAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC1C,KAAK,YAAY;gBAAE,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC/C,KAAK,cAAc;gBAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAAC,MAAM;YAChD,KAAK,cAAc;gBAAE,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YACnD,KAAK,gBAAgB;gBAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBAAC,MAAM;YACpD,KAAK,UAAU;gBAAE,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC3C,KAAK,UAAU;gBAAE,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YAC3C,KAAK,SAAS;gBAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YACzC,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,QAAkB,EAAE,OAAsB;IAC7E,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,yEAAyE;AACzE,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,0EAA0E;AAC1E,MAAM,eAAe,GAAG,CAAC,CAAC;AAQ1B,6EAA6E;AAC7E,MAAM,OAAO,KAAK;IACR,GAAG,CAAiB;IAE5B;;;OAGG;IACH,YAAY,SAAwC;QAClD,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC;YAC9B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,0EAA0E;IAClE,KAAK,CAAC,GAAG,CAAI,EAAoB;QACvC,IAAI,CAAC;YACH,OAAO,MAAM,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0EAA0E;YAC1E,iDAAiD;YACjD,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,QAAQ,CAChB,wGAAwG,CACzG,CAAC;YACJ,CAAC;YACD,sEAAsE;YACtE,4EAA4E;YAC5E,wEAAwE;YACxE,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,QAAQ,CAChB,kFAAkF;oBAChF,6FAA6F;oBAC7F,yGAAyG;oBACzG,4FAA4F,CAC/F,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAU,GAAG,EAAE,EAAE,SAAkB;QAC7D,6EAA6E;QAC7E,0EAA0E;QAC1E,8EAA8E;QAC9E,qEAAqE;QACrE,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;QAE9D,4EAA4E;QAC5E,4EAA4E;QAC5E,MAAM,UAAU,GAA6B,EAAE,CAAC;QAChD,IAAI,SAAS,GAAuB,SAAS,CAAC;QAC9C,GAAG,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,IAAI;gBACZ,CAAC,EAAE,KAAK;gBACR,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM;gBACvC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvC,CAAC,CACH,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9C,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC;QACnD,CAAC,QAAQ,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE;QAEnD,+EAA+E;QAC/E,4EAA4E;QAC5E,yEAAyE;QACzE,kCAAkC;QAClC,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;YACvF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC;YACvD,4EAA4E;YAC5E,6EAA6E;YAC7E,8EAA8E;YAC9E,8EAA8E;YAC9E,wEAAwE;YACxE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACd,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;iBACpF,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACrB,CACF,CAAC;YACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,IAAI;oBAAE,SAAS,CAAC,qDAAqD;gBAC1E,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC;oBAAE,SAAS,CAAC,6BAA6B;gBACrF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;gBAChD,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CACtB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC7F,GAAG,CAAC,IAAI,CAAC;oBACP,QAAQ,EAAE,CAAC,CAAC,EAAG;oBACf,YAAY,EAAE,IAAI,CAAC,MAAM;oBACzB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACf,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;oBACrB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACf,QAAQ;oBACR,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE;oBAC5C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;iBACnE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,2EAA2E;QAC3E,4EAA4E;QAC5E,4EAA4E;QAC5E,4EAA4E;QAC5E,6EAA6E;QAC7E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAAe;QACxC,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,IAAI,SAA6B,CAAC;QAClC,GAAG,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,OAAO,CAAC;gBACnB,UAAU,EAAE,GAAG;gBACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvC,CAAC,CACH,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAG,CAAC,CAAC;YACxD,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC;QAClD,CAAC,QAAQ,SAAS,EAAE;QACpB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YACzB,MAAM,EAAE,IAAI;YACZ,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,UAAU;YAClB,eAAe,EAAE,CAAC,SAAS,CAAC;SAC7B,CAAC,CACH,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QAC/D,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,IAAI,GAAG,IAAI;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YACzB,MAAM,EAAE,IAAI;YACZ,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;SACnC,CAAC,CACH,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,MAAgB,EAAE,EAAE,SAAmB,EAAE;QAC5E,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChF,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5B,MAAM,EAAE,IAAI;YACZ,EAAE,EAAE,QAAQ;YACZ,WAAW,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;SAC7C,CAAC,CACH,CAAC;IACJ,CAAC;IAED,8FAA8F;IACtF,KAAK,CAAC,eAAe,CAC3B,GAAa,EACb,MAAgB;QAEhB,MAAM,WAAW,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,uCAAuC;QACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,gBAAgB,CAAC,CAAC,CAAC;gBAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;gBACxC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,gBAAgB,CAAC,CAAC,CAAC;gBAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC3C,CAAC;gBACJ,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE;oBAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,yCAAyC;YAC5E,CAAC;QACH,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CACnB,OAA8D,EAAE;QAEhE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;QAC7B,MAAM,IAAI,GAAiB,EAAE,CAAC;QAC9B,IAAI,SAA6B,CAAC;QAClC,GAAG,CAAC;YACF,MAAM,KAAK,GAAG,SAAS,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC3B,MAAM,EAAE,IAAI;gBACZ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC5C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvC,CAAC,CACH,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAS,EAAE,CAAC,CAAC;YACzF,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC;QAClD,CAAC,QAAQ,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAU,kBAAkB,GAAG,IAAI,CAAC;IAE1C;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CACvB,IAAkB,EAClB,MAAgB,EAAE,EAClB,SAAmB,EAAE;QAErB,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,MAAM,MAAM,GAAgC,EAAE,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAClC,MAAM,EAAE,IAAI;oBACZ,WAAW,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;iBAC1E,CAAC,CACH,CAAC;gBACF,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC;gBACjC,KAAK,MAAM,CAAC,IAAI,KAAK;oBAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC;oBACV,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU;QAKd,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO;YACL,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE;YACzC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC;YAC1C,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,iGAAiG;IACjG,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CACnD,CAAC;QACF,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3B,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,EAAE;SACvF,CAAC,CACH,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,EAAG,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YACzB,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,EAAG;gBACT,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;gBACxD,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;gBAChC,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,EAAE;gBACtC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAChB,QAAwB,EACxB,MAAyD;QAEzD,+EAA+E;QAC/E,4EAA4E;QAC5E,gFAAgF;QAChF,4DAA4D;QAC5D,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,uEAAuE;gBACrE,wDAAwD,CAC3D,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAChE,MAAM,CAAC,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,YAAY,IAAI,EAAE,CAC1B,CAAC;QACF,+EAA+E;QAC/E,kFAAkF;QAClF,qEAAqE;QACrE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CACb,kFAAkF;gBAChF,uFAAuF,CAC1F,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YACrC,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE;gBACX,QAAQ,EAAE,WAAW;gBACrB,MAAM,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;aACxC;SACF,CAAC,CACH,CAAC;QACF,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAG;YAChB,QAAQ,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC;YAC/D,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,WAAW;YACzC,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,cAAc;SACnD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAiB,EAAE,YAAoB,EAAE,QAAgB;QAChF,uEAAuE;QACvE,wEAAwE;QACxE,0EAA0E;QAC1E,sCAAsC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACjD,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,sEAAsE;YACtE,wEAAwE;YACxE,wEAAwE;YACxE,uEAAuE;YACvE,oEAAoE;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5F,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtE,IAAI,OAAO,CAAC,GAAG,CAAC;gBAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5E,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,6CAA6C,KAAK,IAAI,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,yEAAyE;YACzE,wEAAwE;YACxE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,2DAA2D,KAAK,IAAI,CAAC,CAAC;YACxF,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CACvF,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/D,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACpE,CAAC;;AAGH;;;;GAIG;AACH,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,GAAW;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,GAAG,CAAC;QAClE,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,sBAAsB,CAAC,CAAC;AACtE,CAAC;AAED,kGAAkG;AAClG,SAAS,UAAU,CAAC,CAAgC;IAClD,OAAO,OAAQ,CAAoB,CAAC,KAAK,KAAK,QAAQ,IAAK,CAAoB,CAAC,KAAK,KAAK,IAAI,CAAC;AACjG,CAAC"} | ||
| {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../src/gmail.ts"],"names":[],"mappings":"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"} |
+55
-0
@@ -6,2 +6,3 @@ import { z } from "zod"; | ||
| import { buildDigest, friendlyLabelName } from "./digest.js"; | ||
| import { inspectUnsubscribe, unsubscribeThread } from "./unsubscribe.js"; | ||
| import { resolveEnabledTiers } from "./tiers.js"; | ||
@@ -90,2 +91,7 @@ import { fenceOutput } from "./sanitize.js"; | ||
| const okOutput = { ok: z.boolean() }; | ||
| const unsubscribeOptionsSchema = z.object({ | ||
| oneClick: z.boolean(), | ||
| httpsUrls: z.array(z.string()), | ||
| mailtos: z.array(z.string()), | ||
| }); | ||
| export function registerTools(server) { | ||
@@ -213,2 +219,20 @@ const tiers = resolveEnabledTiers(process.env); | ||
| }); | ||
| server.registerTool("list_unsubscribe", { | ||
| description: "Report the opt-out options a thread advertises (List-Unsubscribe / RFC 8058), without contacting anyone. " + | ||
| "Reads the newest message that carries the header, so a reply threaded onto a newsletter does not hide it. " + | ||
| "`oneClick` means the sender supports the automatable one-click opt-out — the `unsubscribe` tool can perform it. " + | ||
| "`httpsUrls` without oneClick are links for a human to open in a browser; `mailtos` would require sending mail, which mailwarden never does. " + | ||
| "USE WHEN: checking whether a newsletter can be unsubscribed from, or showing the user the link to click. " + | ||
| "SIDE EFFECTS: none — no request is made to the sender.", | ||
| inputSchema: { threadId: z.string() }, | ||
| outputSchema: { | ||
| threadId: z.string(), | ||
| messageId: z.string(), | ||
| from: z.string(), | ||
| subject: z.string(), | ||
| hasUnsubscribe: z.boolean(), | ||
| ...unsubscribeOptionsSchema.shape, | ||
| }, | ||
| annotations: { title: "List unsubscribe options", ...readOnly }, | ||
| }, async ({ threadId }) => ok(await inspectUnsubscribe(await client(), threadId))); | ||
| } | ||
@@ -358,2 +382,33 @@ function registerManageTools(server) { | ||
| }, async ({ messageId, attachmentId, destPath }) => ok({ saved: await (await client()).downloadAttachment(messageId, attachmentId, destPath) })); | ||
| server.registerTool("unsubscribe", { | ||
| description: "Unsubscribe from the mailing list a thread came from, via the sender's RFC 8058 one-click endpoint. " + | ||
| "There is deliberately no URL parameter: the endpoint is taken from the message's own List-Unsubscribe header and nowhere else. " + | ||
| "Only https one-click endpoints are called (fixed request body, response body discarded); a plain link is reported for the user to open, " + | ||
| "and a mailto: opt-out is never performed because mailwarden cannot send mail. " + | ||
| "If the sender offers nothing automatable this returns unsubscribed:false with the alternatives in `options` — it is not an error. " + | ||
| "USE WHEN: the user wants off a newsletter. Pair with archive/trash or create_filter to deal with mail already in the mailbox. " + | ||
| "DO NOT USE: to check whether unsubscribing is possible (use list_unsubscribe — it contacts nobody). " + | ||
| "SIDE EFFECTS: makes an outbound HTTPS request to the sender's unsubscribe endpoint (plus up to 3 redirects) — the only non-Google host mailwarden ever contacts. " + | ||
| "This confirms to the sender that the address is live, and it cannot be undone. The mailbox itself is not changed.", | ||
| inputSchema: { threadId: z.string() }, | ||
| outputSchema: { | ||
| threadId: z.string(), | ||
| messageId: z.string(), | ||
| from: z.string(), | ||
| unsubscribed: z.boolean(), | ||
| url: z.string().optional(), | ||
| status: z.number().optional(), | ||
| reason: z.string().optional(), | ||
| options: unsubscribeOptionsSchema, | ||
| }, | ||
| // openWorld: this is the one tool that reaches beyond the Gmail account. | ||
| // Not idempotent in effect (each call is another request to the sender). | ||
| annotations: { | ||
| title: "Unsubscribe from mailing list", | ||
| readOnlyHint: false, | ||
| destructiveHint: false, | ||
| idempotentHint: false, | ||
| openWorldHint: true, | ||
| }, | ||
| }, async ({ threadId }) => ok(await unsubscribeThread(await client(), threadId))); | ||
| // ---- Snooze (mailwarden's differentiator) ---- | ||
@@ -360,0 +415,0 @@ server.registerTool("snooze", { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"} |
+3
-3
| { | ||
| "name": "mailwarden", | ||
| "version": "0.7.0", | ||
| "version": "0.8.0", | ||
| "description": "A reliable, native Gmail MCP server with full mailbox control — search, labels, archive, trash, attachments, and snooze.", | ||
@@ -35,3 +35,4 @@ "mcpName": "io.github.csitte/mailwarden", | ||
| "auth": "tsx src/index.ts --auth", | ||
| "sweep": "tsx src/index.ts --sweep" | ||
| "sweep": "tsx src/index.ts --sweep", | ||
| "smoke": "node scripts/smoke-package.mjs" | ||
| }, | ||
@@ -51,3 +52,2 @@ "keywords": [ | ||
| "overrides": { | ||
| "uuid": "^11.1.1", | ||
| "@hono/node-server": "^2.0.5", | ||
@@ -54,0 +54,0 @@ "hono": "^4.12.34", |
+63
-6
@@ -25,3 +25,7 @@ # mailwarden | ||
| optional read-only mode, no telemetry, no open ports by default, symlink-safe download fencing, | ||
| injection-fenced output. Details under [Security & privacy](#security--privacy). | ||
| injection-fenced output. **One deliberate exception:** `unsubscribe` (manage tier) contacts the | ||
| opt-out endpoint named in a message's own header — the only non-Google host mailwarden ever | ||
| reaches, and a `read`-tier deployment makes no outbound request at all. Details under | ||
| [Security & privacy](#security--privacy) and | ||
| [Unsubscribing](#unsubscribing--the-one-outbound-request). | ||
| - **Correct with real-world mail.** RFC 2047 headers decoded (`=?UTF-8?B?…?=` → readable text), | ||
@@ -71,3 +75,3 @@ bodies decoded in their *declared* charset (no mojibake for ISO-8859-1/Shift_JIS mail), | ||
| The demo drives the real `search()` against a fake Gmail API whose index is deliberately loose (returns a read thread for an `is:unread` query, exactly as Gmail does) and shows mailwarden dropping the false positive. It asserts the outcome, so it exits non-zero if the behavior ever regresses. The same case is locked by unit tests in [`test/gmail.test.ts`](test/gmail.test.ts) (*"drops index false positives via live-label re-verify"*). | ||
| The demo drives the real `search()` against a fake Gmail API whose index is deliberately loose (returns a read thread for an `is:unread` query, exactly as Gmail does) and shows mailwarden dropping the false positive. It asserts the outcome, so it exits non-zero if the behavior ever regresses. The same case is locked by unit tests in [`test/gmail.test.ts`](https://github.com/csitte/mailwarden/blob/main/test/gmail.test.ts) (*"drops index false positives via live-label re-verify"*). | ||
@@ -83,2 +87,3 @@ ## Tools | ||
| | **`triage_digest`** | Structured overview of a mailbox slice for *decisions*: top senders, label and age buckets, unread + attachment counts — instead of a raw thread list | | ||
| | `list_unsubscribe` | What opt-out options a thread advertises (`List-Unsubscribe`) — contacts nobody | | ||
| | `create_label` | Create a user label (idempotent; nested via `Parent/Child`) and return its id | | ||
@@ -90,2 +95,3 @@ | `modify_labels` | Add/remove labels by **name or id** — an unknown name in `add` is auto-created (archive = remove `INBOX`, read = remove `UNREAD`) | | ||
| | `download_attachment` | Save an attachment to a local path (never overwrites — collisions get a numeric suffix) | | ||
| | **`unsubscribe`** | One-click opt-out (RFC 8058) using the endpoint from the message's own header — the only tool that contacts a non-Google host ([details](#unsubscribing--the-one-outbound-request)) | | ||
| | **`snooze`** | Archive now, resurface on/after a date (`YYYY-MM-DD`), a date+time (`2026-06-20 9am`), or a preset (`tomorrow`, `tomorrow 9am`, `weekend`, `next week`, a weekday name, `in N days`, `in N hours`) | | ||
@@ -136,2 +142,46 @@ | **`unsnooze`** | Cancel a snooze, return to inbox now | | ||
| ### Unsubscribing — the one outbound request | ||
| `list_unsubscribe` (read tier) reports what the sender offers, without contacting anyone. It reads the | ||
| newest message that actually carries a `List-Unsubscribe` header — a reply threaded onto a newsletter | ||
| sits at the end and advertises nothing, which would otherwise read as "this list has no opt-out". `unsubscribe` (manage tier) acts on it — and | ||
| it is the **only** place mailwarden ever talks to a host that isn't Google, so the rules are tight: | ||
| - **There is no URL parameter.** The endpoint comes from the message's own header and nowhere else. | ||
| A URL argument would let a prompt-injected mail turn the tool into an exfiltration channel | ||
| (mailbox content in a query string); the header cannot carry data the model chose. | ||
| - **Only RFC 8058 one-click** is performed — the sender must have opted in via `List-Unsubscribe-Post`. | ||
| A plain `https:` link is meant for a human in a browser and is handed back, not fetched. | ||
| - **`mailto:` opt-outs are never performed.** They would require sending mail, which mailwarden cannot | ||
| do. The address is reported so you can act on it yourself. | ||
| - **Fixed request, discarded response.** The POST body is always `List-Unsubscribe=One-Click` and is | ||
| never derived from anything; the response body is cancelled unread. What returns to the model is the | ||
| status code and the URL actually called — no content from the endpoint, so it cannot answer with | ||
| instructions. (A 301/302/303 redirect is followed as a GET, i.e. with no body at all.) | ||
| - **SSRF guards.** https only, default port only, no credentials in the URL, and every hop — including | ||
| redirects, followed at most 3 times — must resolve exclusively to globally reachable addresses. The | ||
| check parses each address to its bytes and matches it against the IANA special-purpose registry, so | ||
| every spelling of the same address gets the same verdict (`::1` and `0:0:0:0:0:0:0:1` alike); an | ||
| address that does not parse is refused. DNS resolution and all hops share one 10-second budget. Not | ||
| rebinding-proof (`fetch` resolves again when it connects) — see [SECURITY.md](SECURITY.md); what | ||
| survives that gap is a blind POST whose response is never read. | ||
| **Check it against your own mail before you trust it.** From a repo clone (repo-only, not in the | ||
| npm package), after `npm run build` and `mailwarden --auth`: | ||
| ```bash | ||
| node scripts/probe-unsubscribe.mjs --vet # category:promotions, 25 threads | ||
| node scripts/probe-unsubscribe.mjs "from:substack.com" --max 50 --vet | ||
| ``` | ||
| It prints each real `List-Unsubscribe` header next to what the parser made of it, and `--vet` also | ||
| runs the endpoint through the URL vetting and the address guard — so you see both whether the parser | ||
| understood the header *and* whether the guards would have let that opt-out through. Strictly | ||
| read-only: no request is ever made to a sender, and nothing in the mailbox changes. | ||
| What it can't undo: the request tells the sender your address is live. A sender that ignores its own | ||
| opt-out is beyond any client's reach — pair `unsubscribe` with `create_filter` or `trash` for those. | ||
| Not offering an automatable option is reported as `unsubscribed:false` with the alternatives, not as an | ||
| error. A `read`-only deployment gets `list_unsubscribe` and never makes the request at all. | ||
| ## Security & privacy | ||
@@ -153,2 +203,8 @@ | ||
| already on the account, so you can spot one. | ||
| - **One outbound host, no model-chosen URL.** The `unsubscribe` tool is the only code path that | ||
| contacts a non-Google host. Its endpoint is read from the message's `List-Unsubscribe` header — | ||
| never from a tool argument — the request body is fixed and the response body is discarded, so it | ||
| cannot become a data channel. https/default-port only, redirects re-validated, and any hop resolving | ||
| to a private, loopback, link-local or metadata address is refused. See | ||
| [Unsubscribing](#unsubscribing--the-one-outbound-request). | ||
| - **Tool tiers (progressive disclosure + least scope).** `MAILWARDEN_TOOLS` advertises only the tiers | ||
@@ -165,3 +221,4 @@ you name — `read` (the read tools), `manage` (mailbox mutations, snooze, downloads), `filters` | ||
| - **Read-only mode.** Set `MAILWARDEN_READONLY=1` (shorthand for `MAILWARDEN_TOOLS=read`) and only the | ||
| read tools (`search`, `get_thread`, `list_labels`, `list_snoozed`, `get_profile`, `triage_digest`) | ||
| read tools (`search`, `get_thread`, `list_labels`, `list_snoozed`, `get_profile`, `triage_digest`, | ||
| `list_unsubscribe`) | ||
| are registered — nothing that can change the mailbox or write | ||
@@ -194,3 +251,3 @@ files is even advertised to clients (the filter tools, which need the broader `gmail.settings.basic` | ||
| First time setting up a Google OAuth app? Follow the **[step-by-step setup guide](docs/SETUP.md)** — it walks through the Google Cloud Console with exact click paths, explains the "unverified app" screen, and covers the trap that makes tokens die after 7 days. The short version: | ||
| First time setting up a Google OAuth app? Follow the **[step-by-step setup guide](https://github.com/csitte/mailwarden/blob/main/docs/SETUP.md)** — it walks through the Google Cloud Console with exact click paths, explains the "unverified app" screen, and covers the trap that makes tokens die after 7 days. The short version: | ||
@@ -289,3 +346,3 @@ 1. **Google Cloud:** create a project → enable the **Gmail API** → configure the OAuth consent screen and **publish it to Production** (in *Testing* status, Google expires refresh tokens after 7 days) → create an **OAuth client ID** of type *Desktop app* → download it as `credentials.json`. | ||
| | `MAILWARDEN_DOWNLOAD_DIR` | restrict `download_attachment` to this directory (strongly recommended for HTTP hosting) | | ||
| | `MAILWARDEN_READONLY` | `1` → register only the read tools (search/get_thread/list_labels/list_snoozed/get_profile/triage_digest). Shorthand for `MAILWARDEN_TOOLS=read` | | ||
| | `MAILWARDEN_READONLY` | `1` → register only the read tools (search/get_thread/list_labels/list_snoozed/get_profile/triage_digest/list_unsubscribe). Shorthand for `MAILWARDEN_TOOLS=read` | | ||
| | `MAILWARDEN_TOOLS` | comma-separated tool tiers to advertise: `read`, `manage`, `filters` (default: all). Also derives the OAuth scopes requested at `--auth`. E.g. `read,manage` drops the filter tools and their `gmail.settings.basic` scope | | ||
@@ -301,3 +358,3 @@ | `MAILWARDEN_DEBUG` | `1` → print full errors with stack traces instead of a one-line message (for bug reports) | | ||
| Working and used in daily mailbox automation. Core Gmail tools + snooze implemented against `googleapis`, covered by a vitest suite (304 tests — `npm run coverage`). Current version: see the npm badge above, the [changelog](CHANGELOG.md), or [releases](https://github.com/csitte/mailwarden/releases). PRs welcome. | ||
| Working and used in daily mailbox automation. Core Gmail tools + snooze implemented against `googleapis`, covered by a vitest suite (433 tests — `npm run coverage`). Current version: see the npm badge above, the [changelog](https://github.com/csitte/mailwarden/blob/main/CHANGELOG.md), or [releases](https://github.com/csitte/mailwarden/releases). PRs welcome. | ||
@@ -304,0 +361,0 @@ ## License |
+88
-1
@@ -30,3 +30,6 @@ # Security policy & threat model | ||
| Nothing else is contacted. No telemetry, no analytics, no crash reporting, no third-party host. | ||
| One exception, and only when the `unsubscribe` tool is called: an HTTPS request (plus up to three | ||
| redirects) to the opt-out endpoint named in the addressed message's own `List-Unsubscribe` header | ||
| (threat 9 below). Otherwise nothing else is contacted — no telemetry, no analytics, no crash | ||
| reporting, no third-party host. | ||
@@ -99,2 +102,86 @@ ## Threats considered & mitigations | ||
| ### 8. Acting on the *wrong* mailbox (multi-account setups) | ||
| Someone runs two accounts — say a read-only work mailbox alongside a full-access private one — and a | ||
| prompt-injected instruction tries to reach the other one: *"archive everything in the work inbox."* | ||
| - **The account is not a tool parameter.** No tool takes an `account` argument. A process serves | ||
| **exactly one** account, chosen by `MAILWARDEN_ACCOUNT` in the MCP server's configuration — that is, | ||
| outside the model's reach. There is no call the model can emit that switches mailbox, so a | ||
| compromised model is confined to the account whose server entry invoked it. | ||
| - **Per-account authority stays distinct.** Because the account is fixed before any tool is | ||
| registered, tool tiers and OAuth scopes are resolved **per instance**: the work entry can run | ||
| `MAILWARDEN_TOOLS=read` against a `gmail.readonly` token while the private entry has the full | ||
| surface. Each account has its own token file, its own granted scopes, and its own tool surface. | ||
| Selecting the account per call would instead force one tool surface across mailboxes of differing | ||
| authority — the read-only mailbox would inherit the write tools of the other. | ||
| The deliberate cost: one server entry per account, which is more configuration than a per-call | ||
| account argument. That is the trade being made — configuration effort for a boundary the model | ||
| cannot cross. It does **not** defend against misuse of an account *within* the authority that | ||
| account's own token and tier grant it. | ||
| ### 9. The outbound unsubscribe request (SSRF / exfiltration via a URL) | ||
| `unsubscribe` performs the RFC 8058 one-click opt-out — the **only** code path that contacts a host | ||
| other than Google. An attacker's mail controls the header it reads, so two abuses have to be closed: | ||
| smuggling mailbox content *out* through a chosen URL, and steering the request *inward* at a service | ||
| only this machine can reach. | ||
| - **The URL is never a tool parameter.** Same reasoning as the account in threat 8: the endpoint is | ||
| read from the addressed message's `List-Unsubscribe` header and nowhere else. The model cannot | ||
| choose, edit, or append to it, so there is no way to place mailbox content in a query string. An | ||
| injected mail can only offer *its own* opt-out endpoint — the one a human unsubscribing would hit | ||
| anyway. | ||
| - **Fixed request, discarded response.** The POST body is always `List-Unsubscribe=One-Click` and is | ||
| derived from nothing; a 301/302/303 redirect is followed as a GET, i.e. with no body at all. The | ||
| response body is cancelled unread — what reaches the model is the status code and the URL actually | ||
| called, never content from the endpoint. It cannot answer with instructions or become a return | ||
| channel. (The final URL is attacker-influenced text via `Location`, so it arrives inside the same | ||
| `<untrusted-tool-output>` fence as mail content — see threat 3.) | ||
| - **Only what the sender opted into.** Automation requires the sender's `List-Unsubscribe-Post` | ||
| header. A bare link is handed back for a human to open; a `mailto:` opt-out is **never** performed — | ||
| that would require sending mail, which no requested scope permits (threat 1). | ||
| - **SSRF guards on every hop.** https only, default port only (a public host can still front an | ||
| internal service on another port), no credentials in the URL, at most 3 redirects, and each hop's | ||
| host must resolve **exclusively** to globally reachable addresses. Each address is parsed to its | ||
| bytes and matched against the IANA special-purpose registries for both families — loopback, RFC 1918, | ||
| CGNAT, link-local (including `169.254.169.254`), unique-local, multicast, documentation and reserved | ||
| space; an IPv4 embedded in an IPv6 (mapped, translated, NAT64, 6to4) is judged on its own account as | ||
| well, and can only ever add a block, never excuse the outer prefix. Matching on bytes rather than on | ||
| text is deliberate: `::1` and `0:0:0:0:0:0:0:1` are the same address, and a guard that compares | ||
| spellings only defends against the spellings someone thought of. Anything that does not parse as an | ||
| address is refused. DNS resolution shares the request's 10-second budget, so a resolver that never | ||
| answers cannot hold the tool call open. | ||
| - **Tier-gated.** `unsubscribe` lives in the `manage` tier; a `read` deployment gets only | ||
| `list_unsubscribe`, which reports the options and contacts nobody. | ||
| Two residuals, stated plainly: | ||
| - **A successful opt-out confirms to that sender that the address is live**, and it cannot be taken | ||
| back. That is inherent to unsubscribing, not to this implementation. | ||
| - **The address check is not rebinding-proof.** `fetch` resolves the hostname again when it connects, | ||
| so a resolver that answers with a public address for our check and an internal one a moment later | ||
| is not caught. Pinning the verified address would require a custom connector, which `fetch` does not | ||
| expose. What survives that gap is narrow: a **blind** POST with a fixed body to a URL the attacker | ||
| already controls the DNS for, whose response is never read — no data leaves, and nothing comes back. | ||
| ## Dependency advisories | ||
| `npm audit` reports **4 moderate advisories** in mailwarden's production tree. They all trace to one | ||
| upstream issue, and we would rather explain it than hide it: | ||
| - **What it is.** `uuid` below 11.1.1 is missing a buffer bounds check — but only in `v3`/`v5`/`v6` | ||
| *when the caller supplies a `buf` argument* | ||
| ([GHSA-w5hq-g745-h8pq](https://github.com/advisories/GHSA-w5hq-g745-h8pq)). It reaches us through | ||
| Google's own client chain: `googleapis` → `googleapis-common` / `gaxios` → `uuid`. | ||
| - **Why it is not reachable here.** Both `gaxios` and `googleapis-common` call `uuid.v4()` only, with | ||
| no `buf` argument. `v4` is not among the affected functions, so no code path in mailwarden can | ||
| trigger the bug. | ||
| - **Why we do not silence it.** An npm `overrides` entry would force a patched `uuid` — but overrides | ||
| apply only to the *root* project, so it would clear the advisory in **our** checkout while every | ||
| user still resolved the original version. That buys a clean report at the cost of testing a | ||
| dependency tree nobody actually runs. We removed such an override for exactly this reason: our | ||
| tree now matches what `npm install mailwarden` produces. | ||
| - **Status.** No upstream fix is available (the advisory covers `googleapis` up to 149.0.0). We track | ||
| it and will pick up a fixed `googleapis` release when one ships. | ||
| ## Explicit non-goals (what mailwarden does NOT defend against) | ||
@@ -101,0 +188,0 @@ |
Network access
Supply chain riskThis module accesses the network.
Found 2 instances
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
321485
18.54%28
7.69%3343
17.13%354
19.19%4
Infinity%