@canonry/canonry 7.9.0 → 7.10.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.
- package/assets/assets/{AuditHistoryPanel-D0nukTwD.js → AuditHistoryPanel-BgcvPo6g.js} +1 -1
- package/assets/assets/{BacklinksPage-B525ij0g.js → BacklinksPage-DZ4tauAs.js} +1 -1
- package/assets/assets/{HistoryPage-DvupqQDM.js → HistoryPage-DWG52dz1.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-CwDbi1XN.js → MeasurementPropertyPage-DTx2iQLV.js} +1 -1
- package/assets/assets/{ProjectPage-DmZZ2C7q.js → ProjectPage-CCf70zbI.js} +1 -1
- package/assets/assets/{RunsPage-DHTvHcGm.js → RunsPage-B6MhRqxN.js} +1 -1
- package/assets/assets/{SettingsPage-BwAFzB7A.js → SettingsPage-Bxv7OSHT.js} +1 -1
- package/assets/assets/SiteHealthSection-C5x7oiFL.js +4 -0
- package/assets/assets/{TrafficPage-BOcXASAM.js → TrafficPage-C5gyQopi.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-DTq0cN6g.js → TrafficSourceDetailPage-Dv2ZRNvN.js} +1 -1
- package/assets/assets/{extract-error-message-BOTDI6g5.js → extract-error-message-C5pr51ph.js} +1 -1
- package/assets/assets/{index-BLJfGYUw.js → index-BhXHm5nG.js} +3 -3
- package/assets/assets/{react-sigma_core.esm.min-BEBdJNtD.js → react-sigma_core.esm.min-P5bVaYly.js} +1 -1
- package/assets/assets/{v2-overview-adapter-BPZ-H3VY.js → v2-overview-adapter-QtI4xO_4.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-KRFTA4I7.js → chunk-52PHEGHT.js} +89 -50
- package/dist/{chunk-T2V2PESH.js → chunk-5ZBN3EEK.js} +2 -2
- package/dist/{chunk-DO7XPDG5.js → chunk-66DVP4DN.js} +9 -1
- package/dist/{chunk-NU62UT2S.js → chunk-FVMWUT2R.js} +122 -21
- package/dist/{chunk-AAMKTL6B.js → chunk-HL3C6Z7T.js} +3 -3
- package/dist/{chunk-LO56QXPO.js → chunk-IKXVLT4M.js} +2 -2
- package/dist/{chunk-ZLB7WX5D.js → chunk-VSZJVBVR.js} +1 -1
- package/dist/cli.js +9 -9
- package/dist/{demo-server-KDMG3APY.js → demo-server-WZIB4JKJ.js} +4 -4
- package/dist/index.js +6 -6
- package/dist/{intelligence-service-LAXJFE3U.js → intelligence-service-KC62A4X5.js} +2 -2
- package/dist/mcp.js +4 -4
- package/package.json +11 -11
- package/assets/assets/SiteHealthSection-hi54eSIt.js +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-C5x7oiFL.js","./vendor-tanstack-ZXXkndVj.js","./vendor-lucide-N6vOpZmh.js","./ChartPrimitives-CYlrwLJs.js","./vendor-recharts-D-cUuLZo.js","./ProjectPage-CCf70zbI.js","./v2-overview-adapter-QtI4xO_4.js","./vendor-markdown-B4giJcws.js","./extract-error-message-C5pr51ph.js","./AuditHistoryPanel-BgcvPo6g.js","./vendor-radix-twS1M3FF.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-B6MhRqxN.js","./HistoryPage-DWG52dz1.js","./SettingsPage-Bxv7OSHT.js","./BacklinksPage-DZ4tauAs.js","./TrafficPage-C5gyQopi.js","./TrafficSourceDetailPage-Dv2ZRNvN.js","./MeasurementPropertyPage-DTx2iQLV.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{c as k5,d as S5,r as N,j as l,Q as j5,M as A5,q as xe,e as zc,L as et,a as N5,t as kr,u as yt,f as C5,h as ma,k as Rs,l as iS,m as _5,n as sS,O as Gf,o as si,p as T5,s as Mt,v as P0,x as Ds,y as E5,z as R5,A as D5}from"./vendor-tanstack-ZXXkndVj.js";import{S as z5,O as q0,P as oS,C as M0,a as rS,T as B0,D as lS,R as cS}from"./vendor-radix-twS1M3FF.js";import{c as uS}from"./vendor-recharts-D-cUuLZo.js";import{A as jc,X as Lr,S as L0,a as dS,G as mS,C as Ic,L as Cs,R as ld,M as I5,b as O5,P as Kf,H as pS,c as hS,d as P5,e as Oc,f as U0,T as dm,g as Pc,W as fS,h as q5,i as M5,j as B5,k as L5,l as U5,m as V5,n as $5,B as G5,F as K5,o as H5,p as F5,q as Q5,r as Z5,s as gS,t as yS,u as Hf,v as bS,w as Y5,x as vS,E as X5}from"./vendor-lucide-N6vOpZmh.js";import{M as J5,r as W5}from"./vendor-markdown-B4giJcws.js";import{p as e6}from"./vendor-yaml-GWJz5H2G.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))o(u);new MutationObserver(u=>{for(const h of u)if(h.type==="childList")for(const f of h.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&o(f)}).observe(document,{childList:!0,subtree:!0});function i(u){const h={};return u.integrity&&(h.integrity=u.integrity),u.referrerPolicy&&(h.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?h.credentials="include":u.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function o(u){if(u.ep)return;u.ep=!0;const h=i(u);fetch(u.href,h)}})();var tf={exports:{}},ic={},nf={exports:{}},af={};var ux;function t6(){return ux||(ux=1,(function(e){function n(P,J){var be=P.length;P.push(J);e:for(;0<be;){var je=be-1>>>1,W=P[je];if(0<u(W,J))P[je]=J,P[be]=W,be=je;else break e}}function i(P){return P.length===0?null:P[0]}function o(P){if(P.length===0)return null;var J=P[0],be=P.pop();if(be!==J){P[0]=be;e:for(var je=0,W=P.length,_e=W>>>1;je<_e;){var qe=2*(je+1)-1,ve=P[qe],de=qe+1,ce=P[de];if(0>u(ve,be))de<W&&0>u(ce,ve)?(P[je]=ce,P[de]=be,je=de):(P[je]=ve,P[qe]=be,je=qe);else if(de<W&&0>u(ce,be))P[je]=ce,P[de]=be,je=de;else break e}}return J}function u(P,J){var be=P.sortIndex-J.sortIndex;return be!==0?be:P.id-J.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;e.unstable_now=function(){return h.now()}}else{var f=Date,b=f.now();e.unstable_now=function(){return f.now()-b}}var v=[],x=[],k=1,S=null,C=3,_=!1,z=!1,q=!1,T=!1,V=typeof setTimeout=="function"?setTimeout:null,Y=typeof clearTimeout=="function"?clearTimeout:null,M=typeof setImmediate<"u"?setImmediate:null;function U(P){for(var J=i(x);J!==null;){if(J.callback===null)o(x);else if(J.startTime<=P)o(x),J.sortIndex=J.expirationTime,n(v,J);else break;J=i(x)}}function Z(P){if(q=!1,U(P),!z)if(i(v)!==null)z=!0,te||(te=!0,$e());else{var J=i(x);J!==null&&Ue(Z,J.startTime-P)}}var te=!1,B=-1,X=5,le=-1;function Je(){return T?!0:!(e.unstable_now()-le<X)}function nt(){if(T=!1,te){var P=e.unstable_now();le=P;var J=!0;try{e:{z=!1,q&&(q=!1,Y(B),B=-1),_=!0;var be=C;try{t:{for(U(P),S=i(v);S!==null&&!(S.expirationTime>P&&Je());){var je=S.callback;if(typeof je=="function"){S.callback=null,C=S.priorityLevel;var W=je(S.expirationTime<=P);if(P=e.unstable_now(),typeof W=="function"){S.callback=W,U(P),J=!0;break t}S===i(v)&&o(v),U(P)}else o(v);S=i(v)}if(S!==null)J=!0;else{var _e=i(x);_e!==null&&Ue(Z,_e.startTime-P),J=!1}}break e}finally{S=null,C=be,_=!1}J=void 0}}finally{J?$e():te=!1}}}var $e;if(typeof M=="function")$e=function(){M(nt)};else if(typeof MessageChannel<"u"){var Pe=new MessageChannel,Se=Pe.port2;Pe.port1.onmessage=nt,$e=function(){Se.postMessage(null)}}else $e=function(){V(nt,0)};function Ue(P,J){B=V(function(){P(e.unstable_now())},J)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(P){P.callback=null},e.unstable_forceFrameRate=function(P){0>P||125<P?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):X=0<P?Math.floor(1e3/P):5},e.unstable_getCurrentPriorityLevel=function(){return C},e.unstable_next=function(P){switch(C){case 1:case 2:case 3:var J=3;break;default:J=C}var be=C;C=J;try{return P()}finally{C=be}},e.unstable_requestPaint=function(){T=!0},e.unstable_runWithPriority=function(P,J){switch(P){case 1:case 2:case 3:case 4:case 5:break;default:P=3}var be=C;C=P;try{return J()}finally{C=be}},e.unstable_scheduleCallback=function(P,J,be){var je=e.unstable_now();switch(typeof be=="object"&&be!==null?(be=be.delay,be=typeof be=="number"&&0<be?je+be:je):be=je,P){case 1:var W=-1;break;case 2:W=250;break;case 5:W=1073741823;break;case 4:W=1e4;break;default:W=5e3}return W=be+W,P={id:k++,callback:J,priorityLevel:P,startTime:be,expirationTime:W,sortIndex:-1},be>je?(P.sortIndex=be,n(x,P),i(v)===null&&P===i(x)&&(q?(Y(B),B=-1):q=!0,Ue(Z,be-je))):(P.sortIndex=W,n(v,P),z||_||(z=!0,te||(te=!0,$e()))),P},e.unstable_shouldYield=Je,e.unstable_wrapCallback=function(P){var J=C;return function(){var be=C;C=J;try{return P.apply(this,arguments)}finally{C=be}}}})(af)),af}var dx;function n6(){return dx||(dx=1,nf.exports=t6()),nf.exports}var mx;function a6(){if(mx)return ic;mx=1;var e=n6(),n=k5(),i=S5();function o(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var s=2;s<arguments.length;s++)a+="&args[]="+encodeURIComponent(arguments[s])}return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function u(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function h(t){var a=t,s=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(s=a.return),t=a.return;while(t)}return a.tag===3?s:null}function f(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function b(t){if(t.tag===31){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function v(t){if(h(t)!==t)throw Error(o(188))}function x(t){var a=t.alternate;if(!a){if(a=h(t),a===null)throw Error(o(188));return a!==t?null:t}for(var s=t,c=a;;){var p=s.return;if(p===null)break;var g=p.alternate;if(g===null){if(c=p.return,c!==null){s=c;continue}break}if(p.child===g.child){for(g=p.child;g;){if(g===s)return v(p),t;if(g===c)return v(p),a;g=g.sibling}throw Error(o(188))}if(s.return!==c.return)s=p,c=g;else{for(var w=!1,A=p.child;A;){if(A===s){w=!0,s=p,c=g;break}if(A===c){w=!0,c=p,s=g;break}A=A.sibling}if(!w){for(A=g.child;A;){if(A===s){w=!0,s=g,c=p;break}if(A===c){w=!0,c=g,s=p;break}A=A.sibling}if(!w)throw Error(o(189))}}if(s.alternate!==c)throw Error(o(190))}if(s.tag!==3)throw Error(o(188));return s.stateNode.current===s?t:a}function k(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=k(t),a!==null)return a;t=t.sibling}return null}var S=Object.assign,C=Symbol.for("react.element"),_=Symbol.for("react.transitional.element"),z=Symbol.for("react.portal"),q=Symbol.for("react.fragment"),T=Symbol.for("react.strict_mode"),V=Symbol.for("react.profiler"),Y=Symbol.for("react.consumer"),M=Symbol.for("react.context"),U=Symbol.for("react.forward_ref"),Z=Symbol.for("react.suspense"),te=Symbol.for("react.suspense_list"),B=Symbol.for("react.memo"),X=Symbol.for("react.lazy"),le=Symbol.for("react.activity"),Je=Symbol.for("react.memo_cache_sentinel"),nt=Symbol.iterator;function $e(t){return t===null||typeof t!="object"?null:(t=nt&&t[nt]||t["@@iterator"],typeof t=="function"?t:null)}var Pe=Symbol.for("react.client.reference");function Se(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===Pe?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case q:return"Fragment";case V:return"Profiler";case T:return"StrictMode";case Z:return"Suspense";case te:return"SuspenseList";case le:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case z:return"Portal";case M:return t.displayName||"Context";case Y:return(t._context.displayName||"Context")+".Consumer";case U:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case B:return a=t.displayName||null,a!==null?a:Se(t.type)||"Memo";case X:a=t._payload,t=t._init;try{return Se(t(a))}catch{}}return null}var Ue=Array.isArray,P=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,J=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,be={pending:!1,data:null,method:null,action:null},je=[],W=-1;function _e(t){return{current:t}}function qe(t){0>W||(t.current=je[W],je[W]=null,W--)}function ve(t,a){W++,je[W]=t.current,t.current=a}var de=_e(null),ce=_e(null),F=_e(null),pe=_e(null);function Oe(t,a){switch(ve(F,a),ve(ce,t),ve(de,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?zv(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=zv(a),t=Iv(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}qe(de),ve(de,t)}function Ae(){qe(de),qe(ce),qe(F)}function st(t){t.memoizedState!==null&&ve(pe,t);var a=de.current,s=Iv(a,t.type);a!==s&&(ve(ce,t),ve(de,s))}function Ve(t){ce.current===t&&(qe(de),qe(ce)),pe.current===t&&(qe(pe),ec._currentValue=be)}var At,Ke;function me(t){if(At===void 0)try{throw Error()}catch(s){var a=s.stack.trim().match(/\n( *(at )?)/);At=a&&a[1]||"",Ke=-1<s.stack.indexOf(`
|
|
3
3
|
at`)?" (<anonymous>)":-1<s.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
4
4
|
`+At+t+Ke}var at=!1;function zt(t,a){if(!t||at)return"";at=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var c={DetermineComponentFrameRoot:function(){try{if(a){var se=function(){throw Error()};if(Object.defineProperty(se.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(se,[])}catch(Q){var H=Q}Reflect.construct(t,[],se)}else{try{se.call()}catch(Q){H=Q}t.call(se.prototype)}}else{try{throw Error()}catch(Q){H=Q}(se=t())&&typeof se.catch=="function"&&se.catch(function(){})}}catch(Q){if(Q&&H&&typeof Q.stack=="string")return[Q.stack,H.stack]}return[null,null]}};c.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(c.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(c.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=c.DetermineComponentFrameRoot(),w=g[0],A=g[1];if(w&&A){var D=w.split(`
|
|
@@ -49,7 +49,7 @@ Error generating stack: `+c.message+`
|
|
|
49
49
|
|
|
50
50
|
`)}_.write("payload.value = newResult;"),_.write("return payload;");const Y=_.compile();return(M,U)=>Y(C,M,U)};let h;const f=Ac,b=!OS.jitless,x=b&&U8.value,k=n.catchall;let S;e._zod.parse=(C,_)=>{S??(S=o.value);const z=C.value;return f(z)?b&&x&&_?.async===!1&&_.jitless!==!0?(h||(h=u(n.shape)),C=h(C,_),k?JS([],z,C,_,S,e):C):i(C,_):(C.issues.push({expected:"object",code:"invalid_type",input:z,inst:e}),C)}});function xx(e,n,i,o){for(const h of e)if(h.issues.length===0)return n.value=h.value,n;const u=e.filter(h=>!Ar(h));return u.length===1?(n.value=u[0].value,u[0]):(n.issues.push({code:"invalid_union",input:n.value,inst:i,errors:e.map(h=>h.issues.map(f=>Ts(f,o,_s())))}),n)}const WS=ae("$ZodUnion",(e,n)=>{Bt.init(e,n),gt(e._zod,"optin",()=>n.options.some(u=>u._zod.optin==="optional")?"optional":void 0),gt(e._zod,"optout",()=>n.options.some(u=>u._zod.optout==="optional")?"optional":void 0),gt(e._zod,"values",()=>{if(n.options.every(u=>u._zod.values))return new Set(n.options.flatMap(u=>Array.from(u._zod.values)))}),gt(e._zod,"pattern",()=>{if(n.options.every(u=>u._zod.pattern)){const u=n.options.map(h=>h._zod.pattern);return new RegExp(`^(${u.map(h=>$0(h.source)).join("|")})$`)}});const i=n.options.length===1,o=n.options[0]._zod.run;e._zod.parse=(u,h)=>{if(i)return o(u,h);let f=!1;const b=[];for(const v of n.options){const x=v._zod.run({value:u.value,issues:[]},h);if(x instanceof Promise)b.push(x),f=!0;else{if(x.issues.length===0)return x;b.push(x)}}return f?Promise.all(b).then(v=>xx(v,u,e,h)):xx(b,u,e,h)}}),T7=ae("$ZodDiscriminatedUnion",(e,n)=>{n.inclusive=!1,WS.init(e,n);const i=e._zod.parse;gt(e._zod,"propValues",()=>{const u={};for(const h of n.options){const f=h._zod.propValues;if(!f||Object.keys(f).length===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(h)}"`);for(const[b,v]of Object.entries(f)){u[b]||(u[b]=new Set);for(const x of v)u[b].add(x)}}return u});const o=pm(()=>{const u=n.options,h=new Map;for(const f of u){const b=f._zod.propValues?.[n.discriminator];if(!b||b.size===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(f)}"`);for(const v of b){if(h.has(v))throw new Error(`Duplicate discriminator value "${String(v)}"`);h.set(v,f)}}return h});e._zod.parse=(u,h)=>{const f=u.value;if(!Ac(f))return u.issues.push({code:"invalid_type",expected:"object",input:f,inst:e}),u;const b=o.value.get(f?.[n.discriminator]);return b?b._zod.run(u,h):n.unionFallback?i(u,h):(u.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:n.discriminator,input:f,path:[n.discriminator],inst:e}),u)}}),E7=ae("$ZodIntersection",(e,n)=>{Bt.init(e,n),e._zod.parse=(i,o)=>{const u=i.value,h=n.left._zod.run({value:u,issues:[]},o),f=n.right._zod.run({value:u,issues:[]},o);return h instanceof Promise||f instanceof Promise?Promise.all([h,f]).then(([v,x])=>wx(i,v,x)):wx(i,h,f)}});function Qf(e,n){if(e===n)return{valid:!0,data:e};if(e instanceof Date&&n instanceof Date&&+e==+n)return{valid:!0,data:e};if(Rr(e)&&Rr(n)){const i=Object.keys(n),o=Object.keys(e).filter(h=>i.indexOf(h)!==-1),u={...e,...n};for(const h of o){const f=Qf(e[h],n[h]);if(!f.valid)return{valid:!1,mergeErrorPath:[h,...f.mergeErrorPath]};u[h]=f.data}return{valid:!0,data:u}}if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return{valid:!1,mergeErrorPath:[]};const i=[];for(let o=0;o<e.length;o++){const u=e[o],h=n[o],f=Qf(u,h);if(!f.valid)return{valid:!1,mergeErrorPath:[o,...f.mergeErrorPath]};i.push(f.data)}return{valid:!0,data:i}}return{valid:!1,mergeErrorPath:[]}}function wx(e,n,i){const o=new Map;let u;for(const b of n.issues)if(b.code==="unrecognized_keys"){u??(u=b);for(const v of b.keys)o.has(v)||o.set(v,{}),o.get(v).l=!0}else e.issues.push(b);for(const b of i.issues)if(b.code==="unrecognized_keys")for(const v of b.keys)o.has(v)||o.set(v,{}),o.get(v).r=!0;else e.issues.push(b);const h=[...o].filter(([,b])=>b.l&&b.r).map(([b])=>b);if(h.length&&u&&e.issues.push({...u,keys:h}),Ar(e))return e;const f=Qf(n.value,i.value);if(!f.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(f.mergeErrorPath)}`);return e.value=f.data,e}const R7=ae("$ZodRecord",(e,n)=>{Bt.init(e,n),e._zod.parse=(i,o)=>{const u=i.value;if(!Rr(u))return i.issues.push({expected:"record",code:"invalid_type",input:u,inst:e}),i;const h=[],f=n.keyType._zod.values;if(f){i.value={};const b=new Set;for(const x of f)if(typeof x=="string"||typeof x=="number"||typeof x=="symbol"){b.add(typeof x=="number"?x.toString():x);const k=n.valueType._zod.run({value:u[x],issues:[]},o);k instanceof Promise?h.push(k.then(S=>{S.issues.length&&i.issues.push(...Nr(x,S.issues)),i.value[x]=S.value})):(k.issues.length&&i.issues.push(...Nr(x,k.issues)),i.value[x]=k.value)}let v;for(const x in u)b.has(x)||(v=v??[],v.push(x));v&&v.length>0&&i.issues.push({code:"unrecognized_keys",input:u,inst:e,keys:v})}else{i.value={};for(const b of Reflect.ownKeys(u)){if(b==="__proto__")continue;let v=n.keyType._zod.run({value:b,issues:[]},o);if(v instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof b=="string"&&KS.test(b)&&v.issues.length){const S=n.keyType._zod.run({value:Number(b),issues:[]},o);if(S instanceof Promise)throw new Error("Async schemas not supported in object keys currently");S.issues.length===0&&(v=S)}if(v.issues.length){n.mode==="loose"?i.value[b]=u[b]:i.issues.push({code:"invalid_key",origin:"record",issues:v.issues.map(S=>Ts(S,o,_s())),input:b,path:[b],inst:e});continue}const k=n.valueType._zod.run({value:u[b],issues:[]},o);k instanceof Promise?h.push(k.then(S=>{S.issues.length&&i.issues.push(...Nr(b,S.issues)),i.value[v.value]=S.value})):(k.issues.length&&i.issues.push(...Nr(b,k.issues)),i.value[v.value]=k.value)}}return h.length?Promise.all(h).then(()=>i):i}}),D7=ae("$ZodEnum",(e,n)=>{Bt.init(e,n);const i=PS(n.entries),o=new Set(i);e._zod.values=o,e._zod.pattern=new RegExp(`^(${i.filter(u=>V8.has(typeof u)).map(u=>typeof u=="string"?Dr(u):u.toString()).join("|")})$`),e._zod.parse=(u,h)=>{const f=u.value;return o.has(f)||u.issues.push({code:"invalid_value",values:i,input:f,inst:e}),u}}),z7=ae("$ZodLiteral",(e,n)=>{if(Bt.init(e,n),n.values.length===0)throw new Error("Cannot create literal schema with no valid values");const i=new Set(n.values);e._zod.values=i,e._zod.pattern=new RegExp(`^(${n.values.map(o=>typeof o=="string"?Dr(o):o?Dr(o.toString()):String(o)).join("|")})$`),e._zod.parse=(o,u)=>{const h=o.value;return i.has(h)||o.issues.push({code:"invalid_value",values:n.values,input:h,inst:e}),o}}),I7=ae("$ZodTransform",(e,n)=>{Bt.init(e,n),e._zod.parse=(i,o)=>{if(o.direction==="backward")throw new IS(e.constructor.name);const u=n.transform(i.value,i);if(o.async)return(u instanceof Promise?u:Promise.resolve(u)).then(f=>(i.value=f,i));if(u instanceof Promise)throw new _r;return i.value=u,i}});function kx(e,n){return e.issues.length&&n===void 0?{issues:[],value:void 0}:e}const e2=ae("$ZodOptional",(e,n)=>{Bt.init(e,n),e._zod.optin="optional",e._zod.optout="optional",gt(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,void 0]):void 0),gt(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${$0(i.source)})?$`):void 0}),e._zod.parse=(i,o)=>{if(n.innerType._zod.optin==="optional"){const u=n.innerType._zod.run(i,o);return u instanceof Promise?u.then(h=>kx(h,i.value)):kx(u,i.value)}return i.value===void 0?i:n.innerType._zod.run(i,o)}}),O7=ae("$ZodExactOptional",(e,n)=>{e2.init(e,n),gt(e._zod,"values",()=>n.innerType._zod.values),gt(e._zod,"pattern",()=>n.innerType._zod.pattern),e._zod.parse=(i,o)=>n.innerType._zod.run(i,o)}),P7=ae("$ZodNullable",(e,n)=>{Bt.init(e,n),gt(e._zod,"optin",()=>n.innerType._zod.optin),gt(e._zod,"optout",()=>n.innerType._zod.optout),gt(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${$0(i.source)}|null)$`):void 0}),gt(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,null]):void 0),e._zod.parse=(i,o)=>i.value===null?i:n.innerType._zod.run(i,o)}),q7=ae("$ZodDefault",(e,n)=>{Bt.init(e,n),e._zod.optin="optional",gt(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,o)=>{if(o.direction==="backward")return n.innerType._zod.run(i,o);if(i.value===void 0)return i.value=n.defaultValue,i;const u=n.innerType._zod.run(i,o);return u instanceof Promise?u.then(h=>Sx(h,n)):Sx(u,n)}});function Sx(e,n){return e.value===void 0&&(e.value=n.defaultValue),e}const M7=ae("$ZodPrefault",(e,n)=>{Bt.init(e,n),e._zod.optin="optional",gt(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,o)=>(o.direction==="backward"||i.value===void 0&&(i.value=n.defaultValue),n.innerType._zod.run(i,o))}),B7=ae("$ZodNonOptional",(e,n)=>{Bt.init(e,n),gt(e._zod,"values",()=>{const i=n.innerType._zod.values;return i?new Set([...i].filter(o=>o!==void 0)):void 0}),e._zod.parse=(i,o)=>{const u=n.innerType._zod.run(i,o);return u instanceof Promise?u.then(h=>jx(h,e)):jx(u,e)}});function jx(e,n){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:n}),e}const L7=ae("$ZodCatch",(e,n)=>{Bt.init(e,n),gt(e._zod,"optin",()=>n.innerType._zod.optin),gt(e._zod,"optout",()=>n.innerType._zod.optout),gt(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,o)=>{if(o.direction==="backward")return n.innerType._zod.run(i,o);const u=n.innerType._zod.run(i,o);return u instanceof Promise?u.then(h=>(i.value=h.value,h.issues.length&&(i.value=n.catchValue({...i,error:{issues:h.issues.map(f=>Ts(f,o,_s()))},input:i.value}),i.issues=[]),i)):(i.value=u.value,u.issues.length&&(i.value=n.catchValue({...i,error:{issues:u.issues.map(h=>Ts(h,o,_s()))},input:i.value}),i.issues=[]),i)}}),U7=ae("$ZodPipe",(e,n)=>{Bt.init(e,n),gt(e._zod,"values",()=>n.in._zod.values),gt(e._zod,"optin",()=>n.in._zod.optin),gt(e._zod,"optout",()=>n.out._zod.optout),gt(e._zod,"propValues",()=>n.in._zod.propValues),e._zod.parse=(i,o)=>{if(o.direction==="backward"){const h=n.out._zod.run(i,o);return h instanceof Promise?h.then(f=>ud(f,n.in,o)):ud(h,n.in,o)}const u=n.in._zod.run(i,o);return u instanceof Promise?u.then(h=>ud(h,n.out,o)):ud(u,n.out,o)}});function ud(e,n,i){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},i)}const V7=ae("$ZodReadonly",(e,n)=>{Bt.init(e,n),gt(e._zod,"propValues",()=>n.innerType._zod.propValues),gt(e._zod,"values",()=>n.innerType._zod.values),gt(e._zod,"optin",()=>n.innerType?._zod?.optin),gt(e._zod,"optout",()=>n.innerType?._zod?.optout),e._zod.parse=(i,o)=>{if(o.direction==="backward")return n.innerType._zod.run(i,o);const u=n.innerType._zod.run(i,o);return u instanceof Promise?u.then(Ax):Ax(u)}});function Ax(e){return e.value=Object.freeze(e.value),e}const $7=ae("$ZodLazy",(e,n)=>{Bt.init(e,n),gt(e._zod,"innerType",()=>n.getter()),gt(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),gt(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),gt(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),gt(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(i,o)=>e._zod.innerType._zod.run(i,o)}),G7=ae("$ZodCustom",(e,n)=>{Xn.init(e,n),Bt.init(e,n),e._zod.parse=(i,o)=>i,e._zod.check=i=>{const o=i.value,u=n.fn(o);if(u instanceof Promise)return u.then(h=>Nx(h,i,o,e));Nx(u,i,o,e)}});function Nx(e,n,i,o){if(!e){const u={code:"custom",input:i,inst:o,path:[...o._zod.def.path??[]],continue:!o._zod.def.abort};o._zod.def.params&&(u.params=o._zod.def.params),n.issues.push(Nc(u))}}var Cx;class K7{constructor(){this._map=new WeakMap,this._idmap=new Map}add(n,...i){const o=i[0];return this._map.set(n,o),o&&typeof o=="object"&&"id"in o&&this._idmap.set(o.id,n),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(n){const i=this._map.get(n);return i&&typeof i=="object"&&"id"in i&&this._idmap.delete(i.id),this._map.delete(n),this}get(n){const i=n._zod.parent;if(i){const o={...this.get(i)??{}};delete o.id;const u={...o,...this._map.get(n)};return Object.keys(u).length?u:void 0}return this._map.get(n)}has(n){return this._map.has(n)}}function H7(){return new K7}(Cx=globalThis).__zod_globalRegistry??(Cx.__zod_globalRegistry=H7());const pc=globalThis.__zod_globalRegistry;function F7(e,n){return new e({type:"string",...Ie(n)})}function Q7(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...Ie(n)})}function _x(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...Ie(n)})}function t2(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...Ie(n)})}function Z7(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...Ie(n)})}function Y7(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...Ie(n)})}function X7(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...Ie(n)})}function J7(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...Ie(n)})}function W7(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...Ie(n)})}function eR(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...Ie(n)})}function tR(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...Ie(n)})}function nR(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...Ie(n)})}function aR(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...Ie(n)})}function iR(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...Ie(n)})}function sR(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...Ie(n)})}function oR(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...Ie(n)})}function rR(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...Ie(n)})}function lR(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...Ie(n)})}function cR(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...Ie(n)})}function uR(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...Ie(n)})}function dR(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...Ie(n)})}function mR(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...Ie(n)})}function pR(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...Ie(n)})}function hR(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...Ie(n)})}function fR(e,n){return new e({type:"string",format:"date",check:"string_format",...Ie(n)})}function gR(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...Ie(n)})}function yR(e,n){return new e({type:"string",format:"duration",check:"string_format",...Ie(n)})}function bR(e,n){return new e({type:"number",checks:[],...Ie(n)})}function vR(e,n){return new e({type:"number",coerce:!0,checks:[],...Ie(n)})}function xR(e,n){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...Ie(n)})}function wR(e,n){return new e({type:"boolean",...Ie(n)})}function kR(e,n){return new e({type:"null",...Ie(n)})}function SR(e){return new e({type:"unknown"})}function jR(e,n){return new e({type:"never",...Ie(n)})}function Tx(e,n){return new FS({check:"less_than",...Ie(n),value:e,inclusive:!1})}function of(e,n){return new FS({check:"less_than",...Ie(n),value:e,inclusive:!0})}function Ex(e,n){return new QS({check:"greater_than",...Ie(n),value:e,inclusive:!1})}function rf(e,n){return new QS({check:"greater_than",...Ie(n),value:e,inclusive:!0})}function Rx(e,n){return new PE({check:"multiple_of",...Ie(n),value:e})}function n2(e,n){return new ME({check:"max_length",...Ie(n),maximum:e})}function qd(e,n){return new BE({check:"min_length",...Ie(n),minimum:e})}function a2(e,n){return new LE({check:"length_equals",...Ie(n),length:e})}function AR(e,n){return new UE({check:"string_format",format:"regex",...Ie(n),pattern:e})}function NR(e){return new VE({check:"string_format",format:"lowercase",...Ie(e)})}function CR(e){return new $E({check:"string_format",format:"uppercase",...Ie(e)})}function _R(e,n){return new GE({check:"string_format",format:"includes",...Ie(n),includes:e})}function TR(e,n){return new KE({check:"string_format",format:"starts_with",...Ie(n),prefix:e})}function ER(e,n){return new HE({check:"string_format",format:"ends_with",...Ie(n),suffix:e})}function Ur(e){return new FE({check:"overwrite",tx:e})}function RR(e){return Ur(n=>n.normalize(e))}function DR(){return Ur(e=>e.trim())}function zR(){return Ur(e=>e.toLowerCase())}function IR(){return Ur(e=>e.toUpperCase())}function OR(){return Ur(e=>L8(e))}function PR(e,n,i){return new e({type:"array",element:n,...Ie(i)})}function qR(e,n,i){return new e({type:"custom",check:"custom",fn:n,...Ie(i)})}function MR(e){const n=BR(i=>(i.addIssue=o=>{if(typeof o=="string")i.issues.push(Nc(o,i.value,n._zod.def));else{const u=o;u.fatal&&(u.continue=!1),u.code??(u.code="custom"),u.input??(u.input=i.value),u.inst??(u.inst=n),u.continue??(u.continue=!n._zod.def.abort),i.issues.push(Nc(u))}},e(i.value,i)));return n}function BR(e,n){const i=new Xn({check:"custom",...Ie(n)});return i._zod.check=e,i}function i2(e){let n=e?.target??"draft-2020-12";return n==="draft-4"&&(n="draft-04"),n==="draft-7"&&(n="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??pc,target:n,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function an(e,n,i={path:[],schemaPath:[]}){var o;const u=e._zod.def,h=n.seen.get(e);if(h)return h.count++,i.schemaPath.includes(e)&&(h.cycle=i.path),h.schema;const f={schema:{},count:1,cycle:void 0,path:i.path};n.seen.set(e,f);const b=e._zod.toJSONSchema?.();if(b)f.schema=b;else{const k={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(n,f.schema,k);else{const C=f.schema,_=n.processors[u.type];if(!_)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${u.type}`);_(e,n,C,k)}const S=e._zod.parent;S&&(f.ref||(f.ref=S),an(S,n,k),n.seen.get(S).isParent=!0)}const v=n.metadataRegistry.get(e);return v&&Object.assign(f.schema,v),n.io==="input"&&Ln(e)&&(delete f.schema.examples,delete f.schema.default),n.io==="input"&&f.schema._prefault&&((o=f.schema).default??(o.default=f.schema._prefault)),delete f.schema._prefault,n.seen.get(e).schema}function s2(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const o=new Map;for(const f of e.seen.entries()){const b=e.metadataRegistry.get(f[0])?.id;if(b){const v=o.get(b);if(v&&v!==f[0])throw new Error(`Duplicate schema id "${b}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);o.set(b,f[0])}}const u=f=>{const b=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const S=e.external.registry.get(f[0])?.id,C=e.external.uri??(z=>z);if(S)return{ref:C(S)};const _=f[1].defId??f[1].schema.id??`schema${e.counter++}`;return f[1].defId=_,{defId:_,ref:`${C("__shared")}#/${b}/${_}`}}if(f[1]===i)return{ref:"#"};const x=`#/${b}/`,k=f[1].schema.id??`__schema${e.counter++}`;return{defId:k,ref:x+k}},h=f=>{if(f[1].schema.$ref)return;const b=f[1],{ref:v,defId:x}=u(f);b.def={...b.schema},x&&(b.defId=x);const k=b.schema;for(const S in k)delete k[S];k.$ref=v};if(e.cycles==="throw")for(const f of e.seen.entries()){const b=f[1];if(b.cycle)throw new Error(`Cycle detected: #/${b.cycle?.join("/")}/<root>
|
|
51
51
|
|
|
52
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const f of e.seen.entries()){const b=f[1];if(n===f[0]){h(f);continue}if(e.external){const x=e.external.registry.get(f[0])?.id;if(n!==f[0]&&x){h(f);continue}}if(e.metadataRegistry.get(f[0])?.id){h(f);continue}if(b.cycle){h(f);continue}if(b.count>1&&e.reused==="ref"){h(f);continue}}}function o2(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const o=f=>{const b=e.seen.get(f);if(b.ref===null)return;const v=b.def??b.schema,x={...v},k=b.ref;if(b.ref=null,k){o(k);const C=e.seen.get(k),_=C.schema;if(_.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(v.allOf=v.allOf??[],v.allOf.push(_)):Object.assign(v,_),Object.assign(v,x),f._zod.parent===k)for(const q in v)q==="$ref"||q==="allOf"||q in x||delete v[q];if(_.$ref&&C.def)for(const q in v)q==="$ref"||q==="allOf"||q in C.def&&JSON.stringify(v[q])===JSON.stringify(C.def[q])&&delete v[q]}const S=f._zod.parent;if(S&&S!==k){o(S);const C=e.seen.get(S);if(C?.schema.$ref&&(v.$ref=C.schema.$ref,C.def))for(const _ in v)_==="$ref"||_==="allOf"||_ in C.def&&JSON.stringify(v[_])===JSON.stringify(C.def[_])&&delete v[_]}e.override({zodSchema:f,jsonSchema:v,path:b.path??[]})};for(const f of[...e.seen.entries()].reverse())o(f[0]);const u={};if(e.target==="draft-2020-12"?u.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?u.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?u.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const f=e.external.registry.get(n)?.id;if(!f)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(f)}Object.assign(u,i.def??i.schema);const h=e.external?.defs??{};for(const f of e.seen.entries()){const b=f[1];b.def&&b.defId&&(h[b.defId]=b.def)}e.external||Object.keys(h).length>0&&(e.target==="draft-2020-12"?u.$defs=h:u.definitions=h);try{const f=JSON.parse(JSON.stringify(u));return Object.defineProperty(f,"~standard",{value:{...n["~standard"],jsonSchema:{input:Md(n,"input",e.processors),output:Md(n,"output",e.processors)}},enumerable:!1,writable:!1}),f}catch{throw new Error("Error converting schema to JSON.")}}function Ln(e,n){const i=n??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const o=e._zod.def;if(o.type==="transform")return!0;if(o.type==="array")return Ln(o.element,i);if(o.type==="set")return Ln(o.valueType,i);if(o.type==="lazy")return Ln(o.getter(),i);if(o.type==="promise"||o.type==="optional"||o.type==="nonoptional"||o.type==="nullable"||o.type==="readonly"||o.type==="default"||o.type==="prefault")return Ln(o.innerType,i);if(o.type==="intersection")return Ln(o.left,i)||Ln(o.right,i);if(o.type==="record"||o.type==="map")return Ln(o.keyType,i)||Ln(o.valueType,i);if(o.type==="pipe")return Ln(o.in,i)||Ln(o.out,i);if(o.type==="object"){for(const u in o.shape)if(Ln(o.shape[u],i))return!0;return!1}if(o.type==="union"){for(const u of o.options)if(Ln(u,i))return!0;return!1}if(o.type==="tuple"){for(const u of o.items)if(Ln(u,i))return!0;return!!(o.rest&&Ln(o.rest,i))}return!1}const LR=(e,n={})=>i=>{const o=i2({...i,processors:n});return an(e,o),s2(o,e),o2(o,e)},Md=(e,n,i={})=>o=>{const{libraryOptions:u,target:h}=o??{},f=i2({...u??{},target:h,io:n,processors:i});return an(e,f),s2(f,e),o2(f,e)},UR={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},VR=(e,n,i,o)=>{const u=i;u.type="string";const{minimum:h,maximum:f,format:b,patterns:v,contentEncoding:x}=e._zod.bag;if(typeof h=="number"&&(u.minLength=h),typeof f=="number"&&(u.maxLength=f),b&&(u.format=UR[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),x&&(u.contentEncoding=x),v&&v.size>0){const k=[...v];k.length===1?u.pattern=k[0].source:k.length>1&&(u.allOf=[...k.map(S=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:S.source}))])}},$R=(e,n,i,o)=>{const u=i,{minimum:h,maximum:f,format:b,multipleOf:v,exclusiveMaximum:x,exclusiveMinimum:k}=e._zod.bag;typeof b=="string"&&b.includes("int")?u.type="integer":u.type="number",typeof k=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.minimum=k,u.exclusiveMinimum=!0):u.exclusiveMinimum=k),typeof h=="number"&&(u.minimum=h,typeof k=="number"&&n.target!=="draft-04"&&(k>=h?delete u.minimum:delete u.exclusiveMinimum)),typeof x=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.maximum=x,u.exclusiveMaximum=!0):u.exclusiveMaximum=x),typeof f=="number"&&(u.maximum=f,typeof x=="number"&&n.target!=="draft-04"&&(x<=f?delete u.maximum:delete u.exclusiveMaximum)),typeof v=="number"&&(u.multipleOf=v)},GR=(e,n,i,o)=>{i.type="boolean"},KR=(e,n,i,o)=>{n.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},HR=(e,n,i,o)=>{i.not={}},FR=(e,n,i,o)=>{},QR=(e,n,i,o)=>{const u=e._zod.def,h=PS(u.entries);h.every(f=>typeof f=="number")&&(i.type="number"),h.every(f=>typeof f=="string")&&(i.type="string"),i.enum=h},ZR=(e,n,i,o)=>{const u=e._zod.def,h=[];for(const f of u.values)if(f===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof f=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");h.push(Number(f))}else h.push(f);if(h.length!==0)if(h.length===1){const f=h[0];i.type=f===null?"null":typeof f,n.target==="draft-04"||n.target==="openapi-3.0"?i.enum=[f]:i.const=f}else h.every(f=>typeof f=="number")&&(i.type="number"),h.every(f=>typeof f=="string")&&(i.type="string"),h.every(f=>typeof f=="boolean")&&(i.type="boolean"),h.every(f=>f===null)&&(i.type="null"),i.enum=h},YR=(e,n,i,o)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},XR=(e,n,i,o)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},JR=(e,n,i,o)=>{const u=i,h=e._zod.def,{minimum:f,maximum:b}=e._zod.bag;typeof f=="number"&&(u.minItems=f),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=an(h.element,n,{...o,path:[...o.path,"items"]})},WR=(e,n,i,o)=>{const u=i,h=e._zod.def;u.type="object",u.properties={};const f=h.shape;for(const x in f)u.properties[x]=an(f[x],n,{...o,path:[...o.path,"properties",x]});const b=new Set(Object.keys(f)),v=new Set([...b].filter(x=>{const k=h.shape[x]._zod;return n.io==="input"?k.optin===void 0:k.optout===void 0}));v.size>0&&(u.required=Array.from(v)),h.catchall?._zod.def.type==="never"?u.additionalProperties=!1:h.catchall?h.catchall&&(u.additionalProperties=an(h.catchall,n,{...o,path:[...o.path,"additionalProperties"]})):n.io==="output"&&(u.additionalProperties=!1)},eD=(e,n,i,o)=>{const u=e._zod.def,h=u.inclusive===!1,f=u.options.map((b,v)=>an(b,n,{...o,path:[...o.path,h?"oneOf":"anyOf",v]}));h?i.oneOf=f:i.anyOf=f},tD=(e,n,i,o)=>{const u=e._zod.def,h=an(u.left,n,{...o,path:[...o.path,"allOf",0]}),f=an(u.right,n,{...o,path:[...o.path,"allOf",1]}),b=x=>"allOf"in x&&Object.keys(x).length===1,v=[...b(h)?h.allOf:[h],...b(f)?f.allOf:[f]];i.allOf=v},nD=(e,n,i,o)=>{const u=i,h=e._zod.def;u.type="object";const f=h.keyType,v=f._zod.bag?.patterns;if(h.mode==="loose"&&v&&v.size>0){const k=an(h.valueType,n,{...o,path:[...o.path,"patternProperties","*"]});u.patternProperties={};for(const S of v)u.patternProperties[S.source]=k}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(u.propertyNames=an(h.keyType,n,{...o,path:[...o.path,"propertyNames"]})),u.additionalProperties=an(h.valueType,n,{...o,path:[...o.path,"additionalProperties"]});const x=f._zod.values;if(x){const k=[...x].filter(S=>typeof S=="string"||typeof S=="number");k.length>0&&(u.required=k)}},aD=(e,n,i,o)=>{const u=e._zod.def,h=an(u.innerType,n,o),f=n.seen.get(e);n.target==="openapi-3.0"?(f.ref=u.innerType,i.nullable=!0):i.anyOf=[h,{type:"null"}]},iD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType},sD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType,i.default=JSON.parse(JSON.stringify(u.defaultValue))},oD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType,n.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},rD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType;let f;try{f=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=f},lD=(e,n,i,o)=>{const u=e._zod.def,h=n.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;an(h,n,o);const f=n.seen.get(e);f.ref=h},cD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType,i.readOnly=!0},r2=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType},uD=(e,n,i,o)=>{const u=e._zod.innerType;an(u,n,o);const h=n.seen.get(e);h.ref=u},dD=ae("ZodISODateTime",(e,n)=>{r7.init(e,n),Xt.init(e,n)});function l2(e){return hR(dD,e)}const mD=ae("ZodISODate",(e,n)=>{l7.init(e,n),Xt.init(e,n)});function c2(e){return fR(mD,e)}const pD=ae("ZodISOTime",(e,n)=>{c7.init(e,n),Xt.init(e,n)});function hD(e){return gR(pD,e)}const fD=ae("ZodISODuration",(e,n)=>{u7.init(e,n),Xt.init(e,n)});function gD(e){return yR(fD,e)}const yD=(e,n)=>{LS.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>W8(e,i)},flatten:{value:i=>J8(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,Ff,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,Ff,2)}},isEmpty:{get(){return e.issues.length===0}}})},Ra=ae("ZodError",yD,{Parent:Error}),bD=K0(Ra),vD=H0(Ra),xD=hm(Ra),wD=fm(Ra),kD=nE(Ra),SD=aE(Ra),jD=iE(Ra),AD=sE(Ra),ND=oE(Ra),CD=rE(Ra),_D=lE(Ra),TD=cE(Ra),Lt=ae("ZodType",(e,n)=>(Bt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:Md(e,"input"),output:Md(e,"output")}}),e.toJSONSchema=LR(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(zs(n,{checks:[...n.checks??[],...i.map(o=>typeof o=="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]}),{parent:!0}),e.with=e.check,e.clone=(i,o)=>Is(e,i,o),e.brand=()=>e,e.register=((i,o)=>(i.add(e,o),e)),e.parse=(i,o)=>bD(e,i,o,{callee:e.parse}),e.safeParse=(i,o)=>xD(e,i,o),e.parseAsync=async(i,o)=>vD(e,i,o,{callee:e.parseAsync}),e.safeParseAsync=async(i,o)=>wD(e,i,o),e.spa=e.safeParseAsync,e.encode=(i,o)=>kD(e,i,o),e.decode=(i,o)=>SD(e,i,o),e.encodeAsync=async(i,o)=>jD(e,i,o),e.decodeAsync=async(i,o)=>AD(e,i,o),e.safeEncode=(i,o)=>ND(e,i,o),e.safeDecode=(i,o)=>CD(e,i,o),e.safeEncodeAsync=async(i,o)=>_D(e,i,o),e.safeDecodeAsync=async(i,o)=>TD(e,i,o),e.refine=(i,o)=>e.check(Az(i,o)),e.superRefine=i=>e.check(Nz(i)),e.overwrite=i=>e.check(Ur(i)),e.optional=()=>Ix(e),e.exactOptional=()=>uz(e),e.nullable=()=>Ox(e),e.nullish=()=>Ix(Ox(e)),e.nonoptional=i=>gz(e,i),e.array=()=>y(e),e.or=i=>Qe([e,i]),e.and=i=>sz(e,i),e.transform=i=>Yf(e,p2(i)),e.default=i=>pz(e,i),e.prefault=i=>fz(e,i),e.catch=i=>bz(e,i),e.pipe=i=>Yf(e,i),e.readonly=()=>wz(e),e.describe=i=>{const o=e.clone();return pc.add(o,{description:i}),o},Object.defineProperty(e,"description",{get(){return pc.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return pc.get(e);const o=e.clone();return pc.add(o,i[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),u2=ae("_ZodString",(e,n)=>{F0.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(o,u,h)=>VR(e,o,u);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...o)=>e.check(AR(...o)),e.includes=(...o)=>e.check(_R(...o)),e.startsWith=(...o)=>e.check(TR(...o)),e.endsWith=(...o)=>e.check(ER(...o)),e.min=(...o)=>e.check(qd(...o)),e.max=(...o)=>e.check(n2(...o)),e.length=(...o)=>e.check(a2(...o)),e.nonempty=(...o)=>e.check(qd(1,...o)),e.lowercase=o=>e.check(NR(o)),e.uppercase=o=>e.check(CR(o)),e.trim=()=>e.check(DR()),e.normalize=(...o)=>e.check(RR(...o)),e.toLowerCase=()=>e.check(zR()),e.toUpperCase=()=>e.check(IR()),e.slugify=()=>e.check(OR())}),ED=ae("ZodString",(e,n)=>{F0.init(e,n),u2.init(e,n),e.email=i=>e.check(Q7(RD,i)),e.url=i=>e.check(J7(zD,i)),e.jwt=i=>e.check(pR(QD,i)),e.emoji=i=>e.check(W7(ID,i)),e.guid=i=>e.check(_x(Dx,i)),e.uuid=i=>e.check(t2(hc,i)),e.uuidv4=i=>e.check(Z7(hc,i)),e.uuidv6=i=>e.check(Y7(hc,i)),e.uuidv7=i=>e.check(X7(hc,i)),e.nanoid=i=>e.check(eR(OD,i)),e.guid=i=>e.check(_x(Dx,i)),e.cuid=i=>e.check(tR(PD,i)),e.cuid2=i=>e.check(nR(qD,i)),e.ulid=i=>e.check(aR(MD,i)),e.base64=i=>e.check(uR(KD,i)),e.base64url=i=>e.check(dR(HD,i)),e.xid=i=>e.check(iR(BD,i)),e.ksuid=i=>e.check(sR(LD,i)),e.ipv4=i=>e.check(oR(UD,i)),e.ipv6=i=>e.check(rR(VD,i)),e.cidrv4=i=>e.check(lR($D,i)),e.cidrv6=i=>e.check(cR(GD,i)),e.e164=i=>e.check(mR(FD,i)),e.datetime=i=>e.check(l2(i)),e.date=i=>e.check(c2(i)),e.time=i=>e.check(hD(i)),e.duration=i=>e.check(gD(i))});function r(e){return F7(ED,e)}const Xt=ae("ZodStringFormat",(e,n)=>{Gt.init(e,n),u2.init(e,n)}),RD=ae("ZodEmail",(e,n)=>{JE.init(e,n),Xt.init(e,n)}),Dx=ae("ZodGUID",(e,n)=>{YE.init(e,n),Xt.init(e,n)}),hc=ae("ZodUUID",(e,n)=>{XE.init(e,n),Xt.init(e,n)});function DD(e){return t2(hc,e)}const zD=ae("ZodURL",(e,n)=>{WE.init(e,n),Xt.init(e,n)}),ID=ae("ZodEmoji",(e,n)=>{e7.init(e,n),Xt.init(e,n)}),OD=ae("ZodNanoID",(e,n)=>{t7.init(e,n),Xt.init(e,n)}),PD=ae("ZodCUID",(e,n)=>{n7.init(e,n),Xt.init(e,n)}),qD=ae("ZodCUID2",(e,n)=>{a7.init(e,n),Xt.init(e,n)}),MD=ae("ZodULID",(e,n)=>{i7.init(e,n),Xt.init(e,n)}),BD=ae("ZodXID",(e,n)=>{s7.init(e,n),Xt.init(e,n)}),LD=ae("ZodKSUID",(e,n)=>{o7.init(e,n),Xt.init(e,n)}),UD=ae("ZodIPv4",(e,n)=>{d7.init(e,n),Xt.init(e,n)}),VD=ae("ZodIPv6",(e,n)=>{m7.init(e,n),Xt.init(e,n)}),$D=ae("ZodCIDRv4",(e,n)=>{p7.init(e,n),Xt.init(e,n)}),GD=ae("ZodCIDRv6",(e,n)=>{h7.init(e,n),Xt.init(e,n)}),KD=ae("ZodBase64",(e,n)=>{f7.init(e,n),Xt.init(e,n)}),HD=ae("ZodBase64URL",(e,n)=>{y7.init(e,n),Xt.init(e,n)}),FD=ae("ZodE164",(e,n)=>{b7.init(e,n),Xt.init(e,n)}),QD=ae("ZodJWT",(e,n)=>{x7.init(e,n),Xt.init(e,n)}),Q0=ae("ZodNumber",(e,n)=>{YS.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(o,u,h)=>$R(e,o,u),e.gt=(o,u)=>e.check(Ex(o,u)),e.gte=(o,u)=>e.check(rf(o,u)),e.min=(o,u)=>e.check(rf(o,u)),e.lt=(o,u)=>e.check(Tx(o,u)),e.lte=(o,u)=>e.check(of(o,u)),e.max=(o,u)=>e.check(of(o,u)),e.int=o=>e.check(zx(o)),e.safe=o=>e.check(zx(o)),e.positive=o=>e.check(Ex(0,o)),e.nonnegative=o=>e.check(rf(0,o)),e.negative=o=>e.check(Tx(0,o)),e.nonpositive=o=>e.check(of(0,o)),e.multipleOf=(o,u)=>e.check(Rx(o,u)),e.step=(o,u)=>e.check(Rx(o,u)),e.finite=()=>e;const i=e._zod.bag;e.minValue=Math.max(i.minimum??Number.NEGATIVE_INFINITY,i.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(i.maximum??Number.POSITIVE_INFINITY,i.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function m(e){return bR(Q0,e)}const ZD=ae("ZodNumberFormat",(e,n)=>{w7.init(e,n),Q0.init(e,n)});function zx(e){return xR(ZD,e)}const YD=ae("ZodBoolean",(e,n)=>{k7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>GR(e,i,o)});function E(e){return wR(YD,e)}const XD=ae("ZodNull",(e,n)=>{S7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>KR(e,i,o)});function ue(e){return kR(XD,e)}const JD=ae("ZodUnknown",(e,n)=>{j7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>FR()});function wn(){return SR(JD)}const WD=ae("ZodNever",(e,n)=>{A7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>HR(e,i,o)});function ez(e){return jR(WD,e)}const tz=ae("ZodArray",(e,n)=>{N7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>JR(e,i,o,u),e.element=n.element,e.min=(i,o)=>e.check(qd(i,o)),e.nonempty=i=>e.check(qd(1,i)),e.max=(i,o)=>e.check(n2(i,o)),e.length=(i,o)=>e.check(a2(i,o)),e.unwrap=()=>e.element});function y(e,n){return PR(tz,e,n)}const d2=ae("ZodObject",(e,n)=>{_7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>WR(e,i,o,u),gt(e,"shape",()=>n.shape),e.keyof=()=>j(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:wn()}),e.loose=()=>e.clone({...e._zod.def,catchall:wn()}),e.strict=()=>e.clone({...e._zod.def,catchall:ez()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>F8(e,i),e.safeExtend=i=>Q8(e,i),e.merge=i=>Z8(e,i),e.pick=i=>K8(e,i),e.omit=i=>H8(e,i),e.partial=(...i)=>Y8(h2,e,i[0]),e.required=(...i)=>X8(f2,e,i[0])});function d(e,n){const i={type:"object",shape:e??{},...Ie(n)};return new d2(i)}function nz(e,n){return new d2({type:"object",shape:e,catchall:wn(),...Ie(n)})}const m2=ae("ZodUnion",(e,n)=>{WS.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>eD(e,i,o,u),e.options=n.options});function Qe(e,n){return new m2({type:"union",options:e,...Ie(n)})}const az=ae("ZodDiscriminatedUnion",(e,n)=>{m2.init(e,n),T7.init(e,n)});function Be(e,n,i){return new az({type:"union",options:n,discriminator:e,...Ie(i)})}const iz=ae("ZodIntersection",(e,n)=>{E7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>tD(e,i,o,u)});function sz(e,n){return new iz({type:"intersection",left:e,right:n})}const oz=ae("ZodRecord",(e,n)=>{R7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>nD(e,i,o,u),e.keyType=n.keyType,e.valueType=n.valueType});function He(e,n,i){return new oz({type:"record",keyType:e,valueType:n,...Ie(i)})}const Zf=ae("ZodEnum",(e,n)=>{D7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(o,u,h)=>QR(e,o,u),e.enum=n.entries,e.options=Object.values(n.entries);const i=new Set(Object.keys(n.entries));e.extract=(o,u)=>{const h={};for(const f of o)if(i.has(f))h[f]=n.entries[f];else throw new Error(`Key ${f} not found in enum`);return new Zf({...n,checks:[],...Ie(u),entries:h})},e.exclude=(o,u)=>{const h={...n.entries};for(const f of o)if(i.has(f))delete h[f];else throw new Error(`Key ${f} not found in enum`);return new Zf({...n,checks:[],...Ie(u),entries:h})}});function j(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(o=>[o,o])):e;return new Zf({type:"enum",entries:i,...Ie(n)})}const rz=ae("ZodLiteral",(e,n)=>{z7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>ZR(e,i,o),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function R(e,n){return new rz({type:"literal",values:Array.isArray(e)?e:[e],...Ie(n)})}const lz=ae("ZodTransform",(e,n)=>{I7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>XR(e,i),e._zod.parse=(i,o)=>{if(o.direction==="backward")throw new IS(e.constructor.name);i.addIssue=h=>{if(typeof h=="string")i.issues.push(Nc(h,i.value,n));else{const f=h;f.fatal&&(f.continue=!1),f.code??(f.code="custom"),f.input??(f.input=i.value),f.inst??(f.inst=e),i.issues.push(Nc(f))}};const u=n.transform(i.value,i);return u instanceof Promise?u.then(h=>(i.value=h,i)):(i.value=u,i)}});function p2(e){return new lz({type:"transform",transform:e})}const h2=ae("ZodOptional",(e,n)=>{e2.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>r2(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function Ix(e){return new h2({type:"optional",innerType:e})}const cz=ae("ZodExactOptional",(e,n)=>{O7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>r2(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function uz(e){return new cz({type:"optional",innerType:e})}const dz=ae("ZodNullable",(e,n)=>{P7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>aD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function Ox(e){return new dz({type:"nullable",innerType:e})}const mz=ae("ZodDefault",(e,n)=>{q7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>sD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function pz(e,n){return new mz({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():MS(n)}})}const hz=ae("ZodPrefault",(e,n)=>{M7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>oD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function fz(e,n){return new hz({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():MS(n)}})}const f2=ae("ZodNonOptional",(e,n)=>{B7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>iD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function gz(e,n){return new f2({type:"nonoptional",innerType:e,...Ie(n)})}const yz=ae("ZodCatch",(e,n)=>{L7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>rD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function bz(e,n){return new yz({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const vz=ae("ZodPipe",(e,n)=>{U7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>lD(e,i,o,u),e.in=n.in,e.out=n.out});function Yf(e,n){return new vz({type:"pipe",in:e,out:n})}const xz=ae("ZodReadonly",(e,n)=>{V7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>cD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function wz(e){return new xz({type:"readonly",innerType:e})}const kz=ae("ZodLazy",(e,n)=>{$7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>uD(e,i,o,u),e.unwrap=()=>e._zod.def.getter()});function Sz(e){return new kz({type:"lazy",getter:e})}const jz=ae("ZodCustom",(e,n)=>{G7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>YR(e,i)});function Az(e,n={}){return qR(jz,e,n)}function Nz(e){return MR(e)}function Ki(e,n){return Yf(p2(e),n)}const ye={custom:"custom"};function Bi(e){return vR(Q0,e)}const g2=d({id:r(),name:r(),keyPrefix:r(),scopes:y(r()),projectId:r().nullable(),projectName:r().nullable(),readOnly:E(),operator:E().optional(),createdAt:r(),lastUsedAt:r().nullable(),revokedAt:r().nullable()});d({keys:y(g2)});d({name:r().min(1).max(100),scopes:y(r()).min(1).optional(),projectId:r().optional()});g2.extend({key:r()});const Z0=j(["used","not-used","unknown","not-applicable"]);Z0.enum;const Y0=j(["native-auto-v1","search-required-v1"]);Y0.enum;const Cz=d({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),jt=r().min(1),X0=He(r(),r().trim().min(1));r().min(1);const mn=d({label:r().min(1),city:r().min(1),region:r().min(1),country:r().length(2),timezone:r().optional()}),J0=j(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);J0.enum;const W0=d({everyDays:m().int().min(1).max(3650),startDate:r().date(),time:r().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"Time must be HH:mm")}).strict();d({id:r(),projectId:r(),kind:J0,cronExpr:r(),recurrence:W0.nullable().optional(),preset:r().nullable().optional(),timezone:r().default("UTC"),enabled:E().default(!0),providers:y(jt).default([]),sourceId:r().nullable().optional(),lastRunAt:r().nullable().optional(),nextRunAt:r().nullable().optional(),createdAt:r(),updatedAt:r()});const _z=r().datetime();d({kind:J0.optional(),preset:r().min(1).optional(),cron:r().min(1).optional(),recurrence:W0.optional(),timezone:r().optional().default("UTC"),enabled:E().optional().default(!0),providers:y(jt).optional().default([]),sourceId:r().optional(),expectedUpdatedAt:_z.nullable().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(n=>n!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'});const eg=j(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered","review.negative","review.rating-dropped"]);d({id:r(),projectId:r(),channel:R("webhook"),url:r().url(),urlDisplay:r(),urlHost:r(),events:y(eg),enabled:E().default(!0),source:r().optional(),webhookSecret:r().optional(),createdAt:r(),updatedAt:r()});d({channel:R("webhook"),url:r().url(),events:y(eg).min(1),source:r().optional()});class Tz extends Error{code;statusCode;details;constructor(n,i,o,u){super(i),this.name="AppError",this.code=n,this.statusCode=o,this.details=u}toJSON(){return{error:{code:this.code,message:this.message,...this.details?{details:this.details}:{}}}}}function Px(e,n){return new Tz("VALIDATION_ERROR",e,400,n)}function Oi(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const n=JSON.stringify(e);if(n!==void 0)return n}catch{}try{return String(e)}catch{return"unknown error"}}const Ez=j(["fraction","percent"]),$a=Ez.enum,Rz="x-unit";function y2(e,n){return e.meta({[Rz]:n})}function we(e=m()){return y2(e,$a.fraction)}function ot(e=m()){return y2(e,$a.percent)}$a.fraction+"",$a.percent+"";function lf(e,n=!1){const i=new Set,o=[];for(const u of e){const h=n?u.toLowerCase():u;i.has(h)||(i.add(h),o.push(u))}return o}function qx(e){try{const n=e.includes("://"),i=new URL(n?e:`https://${e}`);if(!n&&(i.pathname!=="/"||i.search||i.hash)||i.username||i.password||i.port)return null;const o=i.hostname.trim().toLowerCase().replace(/^www\./,"");return!o||o.includes("/")||o.includes("?")||o.includes("#")?null:o}catch{return null}}const Dz=r().trim().min(1).refine(e=>qx(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>qx(e)??e),zz=r().trim().min(1),Iz=r().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),tg=d({marketingHosts:y(Dz).overwrite(e=>lf(e,!0)),brandTerms:y(zz).overwrite(e=>lf(e,!0)),leadEventNames:y(Iz).overwrite(e=>lf(e))});function Oz(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const cf=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),b2=()=>Oz(),Mx=j(["never-synced","ready","error"]),Pz=j(["landing-page","channel"]),qz=j(["30d","60d","90d"]),Mz=j(["marketing","all"]),fc=c2(),qc=d({label:j(["earliest","middle","previous","latest"]),startDate:fc,endDate:fc}),uf=qc.extend({sessions:m().int().nonnegative()}),Bx=qc.extend({eventCount:m().int().nonnegative()}),Lx=qc.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),Bz=qc.extend({propertyClicks:m().int().nonnegative(),propertyImpressions:m().int().nonnegative(),reportedQueryClicks:m().int().nonnegative(),reportedQueryImpressions:m().int().nonnegative(),brandedClicks:m().int().nonnegative(),brandedImpressions:m().int().nonnegative(),nonBrandedClicks:m().int().nonnegative(),nonBrandedImpressions:m().int().nonnegative(),unreportedClicks:m().int().nonnegative(),unreportedImpressions:m().int().nonnegative()}),Lz=qc.extend({sessions:m().int().nonnegative(),engagementRate:we(m().min(0).max(1)).nullable(),dailyTotalUsers:m().int().nonnegative().nullable(),dailyNewUsers:m().int().nonnegative().nullable(),metricsAvailable:E(),daysInPeriod:m().int().nonnegative(),daysWithEngagementRate:m().int().nonnegative(),daysWithUserSplit:m().int().nonnegative()}),Uz=d({window:qz,bucketDays:R(30),filters:d({hostScope:Mz,marketingHosts:y(r()),pathPrefix:r().nullable(),brandTerms:y(r()),queryMixScope:R("property")}),acquisition:d({status:Mx,error:r().nullable(),syncedAt:r().datetime().nullable(),periods:y(uf),channels:y(d({channelGroup:r(),periods:y(uf)})),pages:y(d({hostName:r(),landingPage:r(),periods:y(uf)}))}),leads:d({status:Mx,error:r().nullable(),syncedAt:r().datetime().nullable(),attributionScope:Pz.nullable(),hostAndPathFiltersApplied:E(),periods:y(Bx),channels:y(d({channelGroup:r(),periods:y(Bx)}))}),engagement:d({status:j(["ready","unavailable"]),availableFromDate:fc.nullable(),latestDate:fc.nullable(),periods:y(Lz)}),searchDemand:d({status:j(["ready","unavailable"]),periods:y(Bz),queries:y(d({query:r(),classification:j(["branded","non-branded"]),periods:y(Lx)})),pages:y(d({hostName:r(),landingPage:r(),periods:y(Lx)})),latestDate:fc.nullable()})}),Mc=j(["sync","batch"]);Mc.enum;const ng=He(r(),Mc),v2=j(["submitting","submitted","ended","ingested","cancelled","failed","unknown"]),Ux=v2.enum;Ux.submitted,Ux.ended;const ag=j(["standard","batch"]),Vx=ag.enum,Vz=d({inputTokens:m().int().nonnegative(),cachedInputTokens:m().int().nonnegative(),cacheWriteTokens:m().int().nonnegative(),outputTokens:m().int().nonnegative(),searchCount:m().int().nonnegative()}),$z=Vz.extend({pricingTier:ag,estimatedCostMicros:m().int().nonnegative().nullable(),priceSource:Qe([j(["default","override"]),ue()])}),x2=d({inputPerMTok:m().nonnegative(),cachedInputPerMTok:m().nonnegative().optional(),cacheWritePerMTok:m().nonnegative().optional(),outputPerMTok:m().nonnegative(),searchPer1k:m().nonnegative().optional(),searchUnit:j(["query","prompt"]).optional(),batchTokenDiscount:m().min(0).max(1).optional()}).strict();d({models:He(r().min(1),x2).default({})}).strict();d({enabled:E().default(!1),maxRequestsPerBatch:m().int().positive().optional(),deadlineHours:m().positive().optional()}).strict();const Gz=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Kz=/[\0-\x1F\x7F-\x9F]/,Hz=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,Fz=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var Qz=class{src_Any=Gz.source;src_Cc=Kz.source;src_Z=Fz.source;src_P=Hz.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join("|");src_ZCc=[this.src_Z,this.src_Cc].join("|");cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}nestedPairRE(e,n,i=4){const o=this.escapeRE(e),u=this.escapeRE(n),h=`(?:(?!${this.src_ZCc}|${o}|${u}).)`;let f=`${o}${h}{0,1000}${u}`;for(let b=2;b<=i;b++)f=`${o}(?:${h}|${f}){0,1000}${u}`;return f}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])")}get_ipv6_addr(){const e="[0-9A-Fa-f]{1,4}",n=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${n}|::(?:${e}:){5}${n}|(?:${e})?::(?:${e}:){4}${n}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${n}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${n}|(?:(?:${e}:){0,3}${e})?::${e}:${n}|(?:(?:${e}:){0,4}${e})?::${n}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=new RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?")}get_host_terminator(){return this.cache.src_host_terminator??=new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=new RegExp(`(?:[/?#](?:${this.nestedPairRE("[","]")}|${this.nestedPairRE("(",")")}|${this.nestedPairRE("{","}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts["---"]?"\\-(?!--(?:[^-]|$))(?:-{0,19})|":"\\-{1,20}|")+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=new RegExp("xn--[a-z0-9\\-]{1,59}")}get_tld(){if(this.cache.tld)return this.cache.tld;const e=[...new Set(this.opts.tlds||[])].sort().reverse().join("|");return this.cache.tld=new RegExp(`${e||"$#none#$"}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=new RegExp("(?:"+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=new RegExp("(?:"+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=new RegExp("(?:"+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=new RegExp("(?:"+(this.opts.fuzzyIP?this.get_ipv4_addr().source+"|":"")+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=new RegExp("")}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=new RegExp(`@${this.get_fuzzy_mail_host().source}`,"ig")}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,"ig")}get_http_validator(){return this.cache.http_validator??=new RegExp("\\/\\/"+(this.opts.urlAuth?this.get_auth().source:"")+this.get_url_host_port().source+this.get_path().source,"iy")}get_relative_proto_validator(){return this.cache.relative_proto_validator??=new RegExp((this.opts.urlAuth?this.get_auth().source:"")+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,"iy")}get_mail_name_validator(){return this.cache.mail_name_validator??=new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,"iy")}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join("|"))}get_schema_search(){return this.cache.schema_search??=new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`,"ig")}get_schema_at_start(){return this.cache.schema_at_start??=new RegExp(`^${this.get_schema_search().source}`,"i")}},df={validate:(e,n,i)=>{const o=i.re.get_http_validator();o.lastIndex=n;const u=o.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)},Zz={"http:":df,"https:":df,"ftp:":df,"//":{validate:function(e,n,i){const o=i.re.get_relative_proto_validator();o.lastIndex=n;const u=o.exec(e);return u?n>=3&&e[n-3]===":"||n>=3&&e[n-3]==="/"?0:u[0].length:0},normalize:(e,n)=>n.normalize(e)},"mailto:":{validate:function(e,n,i){const o=i.re.get_mailto_validator();o.lastIndex=n;const u=o.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)}},Yz="a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw",Xz="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function Jz(){const e=Xz.split("|");return Yz.split("|").forEach(n=>{const i=n.indexOf(":"),o=n.slice(0,i);for(const u of n.slice(i+1))e.push(o+u)}),e}var Wz={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:Jz(),urlAuth:!1,maxLength:1e4},$x=class{schema;index;lastIndex;raw;text;url;constructor(e,n,i,o){const u=e.slice(i,o);this.schema=n.toLowerCase(),this.index=i,this.lastIndex=o,this.raw=u,this.text=u,this.url=u}},e9=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...i}=e;this.__opts__={...Wz,...i},this.__schemas__={...Zz},this.re=n||new Qz,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,n=null){if(!n)delete this.__schemas__[e];else{const i={normalize:(o,u)=>u.normalize(o),...n};this.__schemas__[e]=i}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let n,i;for(i=this.re.get_schema_search(),i.lastIndex=0;(n=i.exec(e))!==null;)if(this.testSchemaAt(e,n[2],i.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(i=this.re.get_fuzzy_link_search(),i.lastIndex=0,i.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&e.indexOf("@")>=0){const o=this.re.get_fuzzy_mail_host_search(),u=this.re.get_mail_name_validator();for(o.lastIndex=0;(n=o.exec(e))!==null;){const h=e.slice(Math.max(0,n.index-65),n.index);if(u.test(h))return!0}}return!1}testSchemaAt(e,n,i){return this.__schemas__[n.toLowerCase()]?this.__schemas__[n.toLowerCase()].validate(e.slice(0,i+this.__opts__.maxLength),i,this):0}match(e){const n=[],i=this.re.get_schema_search();let o,u,h,f,b,v,x=!1,k=!1,S=!1,C=0;if(!e.length)return null;for(i.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(o=this.re.get_fuzzy_link_search(),o.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(u=this.re.get_fuzzy_mail_host_search(),u.lastIndex=0,h=this.re.get_mail_name_validator());;){const _=Math.max(C-1,0);if(u&&h&&!S&&(!b||b.index<C))for(u.lastIndex<_&&(u.lastIndex=_);;){const Y=u.exec(e);if(!Y){S=!0,b=void 0;break}const M=h.exec(e.slice(Math.max(0,Y.index-65),Y.index));if(M){if(b={schema:"mailto:",index:Y.index-M[1].length,lastIndex:Y.index+Y[0].length},b.index>=C)break;u.lastIndex<_&&(u.lastIndex=_)}}if(o&&!k&&(!f||f.index<C))for(o.lastIndex<_&&(o.lastIndex=_);;){const Y=o.exec(e);if(!Y){k=!0,f=void 0;break}if(f={schema:"",index:Y.index+Y[1].length,lastIndex:Y.index+Y[0].length},f.index>=C)break;o.lastIndex<_&&(o.lastIndex=_)}let z=b;(!z||f&&(f.index<z.index||f.index===z.index&&f.lastIndex>z.lastIndex))&&(z=f);let q;if(!x)for(;;){if(!v){i.lastIndex<_&&(i.lastIndex=_);const U=i.exec(e);if(!U){x=!0;break}v={schema:U[2],index:U.index+U[1].length,lastIndex:U.index+U[0].length}}if(v.index<C){v=void 0;continue}if(z&&v.index>z.index)break;const Y=v;v=void 0;const M=this.testSchemaAt(e,Y.schema,Y.lastIndex);if(M){q={schema:Y.schema,index:Y.index,lastIndex:Y.lastIndex+M};break}}let T=q;if((!T||b&&(b.index<T.index||b.index===T.index&&b.lastIndex>T.lastIndex))&&(T=b),(!T||f&&(f.index<T.index||f.index===T.index&&f.lastIndex>T.lastIndex))&&(T=f),!T)break;T===b?b=void 0:T===f&&(f=void 0);const V=new $x(e,T.schema,T.index,T.lastIndex);V.schema?this.__schemas__[V.schema].normalize(V,this):this.normalize(V),n.push(V),C=T.lastIndex}return n.length?n:null}matchAtStart(e){if(!e.length)return null;const n=this.re.get_schema_at_start().exec(e);if(!n)return null;const i=this.testSchemaAt(e,n[2],n[0].length);if(!i)return null;const o=new $x(e,n[2],n.index+n[1].length,n.index+n[0].length+i);return this.__schemas__[o.schema].normalize(o,this),o}tlds(e,n=!1){return e=Array.isArray(e)?e:[e],n?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema==="mailto:"&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}};const w2=JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');function t9(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function n9(e,n){const i=e.length-n.length-2,o=e.lastIndexOf(".",i);return o===-1?e:e.slice(o+1)}function a9(e,n,i){if(i.validHosts!==null){const u=i.validHosts;for(const h of u)if(t9(n,h))return h}let o=0;if(n.startsWith("."))for(;o<n.length&&n[o]===".";)o+=1;return e.length===n.length-o?null:n9(n,e)}function i9(e,n){return e.slice(0,-n.length-1)}const mf=/[\t\n\r]/g;let Xf=!1;function Gx(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Kx(e,n,i){const o=i-n,u=e.charCodeAt(n)|32;if(o===2)return u===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(o===3){const h=e.charCodeAt(n+1)|32,f=e.charCodeAt(n+2)|32;return u===119&&h===115&&f===115||u===102&&h===116&&f===112?1:0}else if(o===4){const h=e.charCodeAt(n+1)|32,f=e.charCodeAt(n+2)|32,b=e.charCodeAt(n+3)|32;return u===104&&h===116&&f===116&&b===112?1:u===102&&h===105&&f===108&&b===101?2:0}else if(o===5)return u===104&&(e.charCodeAt(n+1)|32)===116&&(e.charCodeAt(n+2)|32)===116&&(e.charCodeAt(n+3)|32)===112&&(e.charCodeAt(n+4)|32)===115?1:0;return 0}function gc(e,n,i=!1){let o=0,u=e.length,h=!1,f=!1;if(Xf=!1,!n){if(e.startsWith("data:"))return null;for(;o<e.length&&e.charCodeAt(o)<=32;)o+=1;for(;u>o+1&&e.charCodeAt(u-1)<=32;)u-=1;if(e.charCodeAt(o)===47&&e.charCodeAt(o+1)===47)o+=2;else{const T=e.indexOf(":/",o);if(T!==-1){const V=Kx(e,o,T);if(V===1)for(f=!0,o=T+2;e.charCodeAt(o)===47||e.charCodeAt(o)===92;)o+=1;else if(V===2){f=!0,o=T+1;let Y=0;for(;(e.charCodeAt(o)===47||e.charCodeAt(o)===92)&&Y<2;)o+=1,Y+=1;if(Y<2)return null}else{for(let Y=o;Y<T;Y+=1){const M=e.charCodeAt(Y)|32;if(!(M>=97&&M<=122||M>=48&&M<=57||M===46||M===45||M===43)){const U=e.charCodeAt(Y);return U===9||U===10||U===13?gc(e.replace(mf,""),n,i):null}}if(e.charCodeAt(T+2)===47)o=T+3;else return null}}else if(e.charCodeAt(o)!==91){let V=-1;for(let Y=o;Y<u;Y+=1){const M=e.charCodeAt(Y);if(M===9||M===10||M===13)return gc(e.replace(mf,""),n,i);if(M===58){V=Y;break}if(M===47||M===92||M===63||M===35)break}if(V!==-1){let Y=!1;for(let M=V+1;M<u;M+=1){const U=e.charCodeAt(M);if(U===47||U===92||U===63||U===35)break;if(U===64){Y=!0;break}}if(!Y){let M=!0,U=V+1;for(;U<u;U+=1){const Z=e.charCodeAt(U);if(Z===47||Z===92||Z===63||Z===35)break;if(Z<48||Z>57){M=!1;break}}if(U===V+1&&(M=!1),!M){const Z=Kx(e,o,V);if(Z===0){let te=!1;for(let B=V+1;B<u;B+=1){const X=e.charCodeAt(B);if(X===47||X===92||X===63||X===35)break;if(X===58){te=!0;break}}if(!te)return null}else if(f=!0,o=V+1,Z===2){let te=0;for(;(e.charCodeAt(o)===47||e.charCodeAt(o)===92)&&te<2;)o+=1,te+=1;if(te<2)return null}else for(;e.charCodeAt(o)===47||e.charCodeAt(o)===92;)o+=1}}}}}let v=-1,x=-1,k=-1,S=-1,C=!1,_=i,z=o-1,q=-1;if(i&&o<u){const T=e.charCodeAt(o);(!(Gx(T)||T===46||T===95)||T===45)&&(_=!1)}for(let T=o;T<u;T+=1){const V=e.charCodeAt(T);if(V<64)if(V===47||V===35||V===63){u=T;break}else V===58?(S===-1&&(S=T),k=T):V===9||V===10||V===13?C=!0:i&&(V===46?((T-z>64||q===46||q===45)&&(_=!1),z=T):(V<48||V>57)&&(V!==45||q===46)&&(_=!1));else if(f&&V===92){u=T;break}else V===64?(v=T,S=-1):V===93?x=T:V>=65&&V<=90?h=!0:i&&!Gx(V)&&(_=!1);i&&(q=V)}if(C)return gc(e.replace(mf,""),n,i);if(v!==-1&&v>=o&&v<u&&(o=v+1),e.charCodeAt(o)===91)return x!==-1?e.slice(o+1,x).toLowerCase():null;if(k!==-1&&k>o&&k<u&&S===k&&(u=k),o>=u)return null;i&&_&&v===-1&&k===-1&&x===-1&&e.charCodeAt(u-1)!==46&&u-o<=255&&u-z-1<=63&&q!==45&&(Xf=!0)}for(;u>o+1&&e.charCodeAt(u-1)===46;)u-=1;const b=o!==0||u!==e.length?e.slice(o,u):e;return h?b.toLowerCase():b}function s9(e){if(e.length<7||e.length>15)return!1;let n=0;for(let i=0;i<e.length;i+=1){const o=e.charCodeAt(i);if(o===46)n+=1;else if(o<48||o>57)return!1}return n===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function o9(e){if(e.length<3)return!1;let n=e.startsWith("[")?1:0,i=e.length;if(e[i-1]==="]"&&(i-=1),i-n>39)return!1;let o=!1;for(;n<i;n+=1){const u=e.charCodeAt(n);if(u===58)o=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return o}function r9(e){return o9(e)||s9(e)}const l9=["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 c9(e){for(const n of l9)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function Hx(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Fx(e){if(e.length>255||e.length===0||!Hx(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,i=-1;const o=e.length;for(let u=0;u<o;u+=1){const h=e.charCodeAt(u);if(h===46){if(u-n>64||i===46||i===45)return!1;n=u}else if(!(Hx(h)||h===45||h===95)||h===45&&i===46)return!1;i=h}return o-n-1<=63&&i!==45}function k2({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:i=!0,detectSpecialUse:o=!1,extractHostname:u=!0,mixedInputs:h=!0,validHosts:f=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:i,detectSpecialUse:o,extractHostname:u,mixedInputs:h,validHosts:f,validateHostname:b}}const u9=k2({});function d9(e){return e===void 0?u9:k2(e)}function m9(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function p9(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function S2(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function j2(e,n,i,o,u){const h=d9(o);if(typeof e!="string")return u;let f=!1;return h.extractHostname?h.mixedInputs?(f=Fx(e),u.hostname=gc(e,f,h.validateHostname)):u.hostname=gc(e,!1,h.validateHostname):u.hostname=e,h.detectIp&&u.hostname!==null&&(u.isIp=r9(u.hostname),u.isIp)?u:h.validateHostname&&h.extractHostname&&u.hostname!==null&&!(f&&u.hostname===e)&&!Xf&&!Fx(u.hostname)?(u.hostname=null,u):(n===0||u.hostname===null||(n===5&&h.detectSpecialUse&&(u.isSpecialUse=c9(u.hostname)),i(u.hostname,h,u),n===2||u.publicSuffix===null)||(u.domain=a9(u.publicSuffix,u.hostname,h),n===3||u.domain===null)||(u.subdomain=m9(u.hostname,u.domain),n===4)||(u.domainWithoutSuffix=i9(u.domain,u.publicSuffix)),u)}function h9(e,n,i){if(!n.allowPrivateDomains&&e.length>3){const o=e.length-1,u=e.charCodeAt(o),h=e.charCodeAt(o-1),f=e.charCodeAt(o-2),b=e.charCodeAt(o-3);if(u===109&&h===111&&f===99&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(u===103&&h===114&&f===111&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(u===117&&h===100&&f===101&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(u===118&&h===111&&f===103&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(u===116&&h===101&&f===110&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(u===101&&h===100&&f===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}const vo=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,0,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,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,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,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,2,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,1,0,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,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,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,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,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,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,0,1,1,1,1,1,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]),Bd=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,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),Ld=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,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,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,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,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,10,14,14,14,13,13,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,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,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,12,9,10,7,8,7,6,8,6,11,12,7,9,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,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,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,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,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,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,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,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,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,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,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,6,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,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,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,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,9,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,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,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,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,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,4,6,10,7,8,13,8,8,9,14,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,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,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,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,3,5,9,10,10,8,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,8,9,6,4,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,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,16,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,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,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,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,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,4,5,5,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,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,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,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,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,11,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,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,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,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,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,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,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,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,11,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,2,2,12,5,5,5,8,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,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,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,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,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]),Qx=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,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,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,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,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,0,1,1,67,1,12,1,1,66,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,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,119,1,108,1,109,1,12,128,106,1,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,50,50,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,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,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,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,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,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,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,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,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,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,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,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,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,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,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,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,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,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,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,252,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,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,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,283,0,0,284,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,60,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,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,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,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,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,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,0,1,1,1,0,0,0,332,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,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,266,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,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,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,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,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,1,1,1,400,400,1,1,12,12,1,400,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,412,1,1,0,1,1,1,1,205,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,430,430,1,1,0,0,317,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,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,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,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,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,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,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,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,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,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,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,488,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,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,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,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,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,505,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,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,507,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,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,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,533,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,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,548,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,0,0,0,0,0,1,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,228,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,572,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,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,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,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,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,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,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,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,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,502,0,0,0,0,0,554,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,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,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,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,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,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,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,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),Jf="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-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-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-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-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-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-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*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-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-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--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-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-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-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-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-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-1us-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-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-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-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-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-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-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-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-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-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-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-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-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-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhä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-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-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-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--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-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-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-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--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üdtirolfriuliv-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-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-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-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-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-gradynmerseineshacknetenterprisecloudmineaccomaorimā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-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-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קוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทย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भारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--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",f9=621,g9=625,A2=vo.length,N2=Ld.length,C2=new Uint32Array(N2),Cd=new Uint32Array(N2),Wf=new Int32Array(A2).fill(-1);for(let e=0,n=0;e<A2;e+=1)for(let i=Bd[e];i<Bd[e+1];i+=1){C2[i]=n;const o=n+Ld[i];let u=5381;for(let h=o-1;h>=n;h-=1)u=u*33^Jf.charCodeAt(h);Cd[i]=u>>>0,Ld[i]===1&&Jf.charCodeAt(n)===42&&(Wf[e]=i),n=o}let Pi=-1,e0=0,t0=0;function Zx(e,n,i,o){if(Ld[e]!==o)return!1;const u=C2[e];for(let h=0;h<o;h+=1)if(Jf.charCodeAt(u+h)!==n.charCodeAt(i+h))return!1;return!0}function Yx(e,n,i,o,u){let h=Bd[e],f=Bd[e+1];for(;h<f;){const b=h+f>>>1,v=Cd[b];if(v<n)h=b+1;else if(v>n)f=b;else{for(let x=b;x>=h&&Cd[x]===n;x-=1)if(Zx(x,i,o,u))return x;for(let x=b+1;x<f&&Cd[x]===n;x+=1)if(Zx(x,i,o,u))return x;return-1}}return-1}function Xx(e,n,i){let o=n,u=e.length,h=5381;Pi=-1;for(let b=e.length-1;b>=0;b-=1){const v=e.charCodeAt(b);if(v===46){const x=b+1;let k=Yx(o,h>>>0,e,x,u-x);if(k===-1&&(k=Wf[o]),k===-1)return Pi!==-1;o=Qx[k],(vo[o]&i)!==0&&(Pi=o,e0=x,t0=u),u=b,h=5381}else h=h*33^v}let f=Yx(o,h>>>0,e,0,u);return f===-1&&(f=Wf[o]),f!==-1&&(o=Qx[f],(vo[o]&i)!==0&&(Pi=o,e0=0,t0=u)),Pi!==-1}function _2(e,n,i){if(h9(e,n,i))return;const o=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(Xx(e,g9,o)){i.isIcann=(vo[Pi]&1)!==0,i.isPrivate=(vo[Pi]&2)!==0,i.publicSuffix=e.slice(t0+1);return}if(Xx(e,f9,o)){i.isIcann=(vo[Pi]&1)!==0,i.isPrivate=(vo[Pi]&2)!==0,i.publicSuffix=e.slice(e0);return}i.isIcann=!1,i.isPrivate=!1;const u=e.lastIndexOf(".");i.publicSuffix=u===-1?e:e.slice(u+1)}const Ud=p9();function y9(e,n){return S2(Ud),j2(e,0,_2,n,Ud).hostname}function b9(e,n){return S2(Ud),j2(e,5,_2,n,Ud).domainWithoutSuffix}const v9={allowPrivateDomains:!0};new e9({fuzzyLink:!0,fuzzyEmail:!1}).tlds(w2);function Bc(e){if(e==null)return null;const n=e.trim();if(!n)return null;const i=y9(n);return i?i.replace(/^www\./i,"").toLowerCase():null}function Vd(e){return Bc(e)??e.trim().toLowerCase().replace(/^www\./,"")}function ig(e){return e==null||e.trim()===""?"":b9(e,v9)?.toLowerCase()??""}function Mee(e){return ig(e)||e}const x9=new Intl.Segmenter("en",{granularity:"word"}),w9=/[^\p{L}\p{N}]+/gu,k9=/[\p{L}\p{N}]+/gu,S9=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,j9=new RegExp("\\P{ASCII}","u");function A9(e){if(!j9.test(e))return e;let n="";for(const i of e){if(i.charCodeAt(0)<128){n+=i;continue}const o=i.normalize("NFD"),u=o[0];n+=o.length>1&&S9.test(u)?u:i}return n}function T2(e){return A9(e.normalize("NFKC")).toLocaleLowerCase("en")}function E2(e){const n=[];for(const i of x9.segment(e))if(i.isWordLike)for(const o of i.segment.match(k9)??[])n.push(o);return n}function N9(e){return E2(T2(e))}function Ga(e){return N9(e).join("")}const Jx=new WeakMap;function C9(e){if(!e)return null;const n=T2(e);return{normalized:n,stripped:n.replace(w9,"")}}function _9(e){const n=Jx.get(e);if(n)return n;const i=E2(e.normalized);return Jx.set(e,i),i}function T9(e){const n=new Set;let i=0;for(const o of e){if(!o)continue;const u=Ga(o);u&&(n.add(u),u.length>i&&(i=u.length))}return{keys:n,longest:i}}function E9(e,n){if(!n||e.keys.size===0)return!1;const i=typeof n=="string"?C9(n):n;if(!i)return!1;let o=!1;for(const h of e.keys)if(i.stripped.includes(h)){o=!0;break}if(!o)return!1;const u=_9(i);for(let h=0;h<u.length;h++){let f="";for(let b=h;b<u.length;b++){if(f+=u[b],e.keys.has(f))return!0;if(f.length>=e.longest)break}}return!1}const R9=d({name:r(),accountName:r().nullable(),type:r().nullable(),role:r().nullable()});d({accounts:y(R9),total:m().int().nonnegative()});const D9=d({id:r(),projectId:r(),accountName:r(),locationName:r(),displayName:r(),primaryCategoryDisplayName:r().nullable(),storefrontAddress:r().nullable(),websiteUri:r().nullable(),placeId:r().nullable(),mapsUri:r().nullable(),additionalCategories:y(r()),description:r().nullable(),serviceArea:He(r(),wn()).nullable(),regularHours:He(r(),wn()).nullable(),primaryPhone:r().nullable(),openStatus:r().nullable(),openingDate:r().nullable(),selected:E(),syncedAt:r().nullable(),createdAt:r(),updatedAt:r()});d({locations:y(D9),totalDiscovered:m().int().nonnegative(),totalSelected:m().int().nonnegative()});d({selectAllNew:E().default(!0),accountName:r().optional(),switchAccount:E().default(!1)});d({selected:E()});d({locationNames:y(r()).optional(),daysOfMetrics:m().int().positive().max(540).optional(),monthsOfKeywords:m().int().positive().max(18).optional()});d({runId:r(),status:r()});const z9=d({locationName:r(),date:r(),metric:r(),value:m().int()});d({metrics:y(z9),total:m().int().nonnegative()});const I9=d({locationName:r(),periodStart:r(),periodEnd:r(),keyword:r(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});d({keywords:y(I9),total:m().int().nonnegative(),thresholdedPct:ot(m().min(0).max(100))});const O9=d({locationName:r(),placeActionLinkName:r(),placeActionType:r(),uri:r().nullable(),isPreferred:E(),providerType:r().nullable()});d({placeActions:y(O9),total:m().int().nonnegative()});const P9=d({locationName:r(),populatedGroupCount:m().int().nonnegative(),syncedAt:r(),attributes:He(r(),wn())});d({lodging:y(P9),total:m().int().nonnegative()});const q9=d({name:r(),valueType:r(),values:y(Qe([E(),r()])),unsetValues:y(r()),uris:y(r())}),M9=d({locationName:r(),attributeCount:m().int().nonnegative(),syncedAt:r(),attributes:y(q9)});d({attributes:y(M9),total:m().int().nonnegative()});const B9=d({locationName:r(),placeId:r(),tier:r(),amenities:y(r()),syncedAt:r(),place:He(r(),wn())});d({places:y(B9),total:m().int().nonnegative()});const R2=j(["gbp","places"]),sg=m().int().min(1).max(4),L9=j(["ok","unavailable","error"]),D2=j(["none","baseline","stale","pending","sent","skipped","suppressed"]);D2.enum;const U9=d({locationName:r(),origin:R2,reviewName:r(),starRating:m().int().min(1).max(5).nullable(),negative:E(),comment:r().nullable(),reviewerName:r().nullable(),createTime:r().nullable(),updateTime:r(),replied:E().nullable(),replyComment:r().nullable(),replyUpdateTime:r().nullable(),reviewUri:r().nullable(),firstSeenAt:r(),lastSeenAt:r(),alertState:D2,alertStateAt:r().nullable()}),V9=d({locationName:r(),displayName:r(),reviewsAccess:L9.nullable(),reviewsAccessReason:r().nullable(),reviewsCheckedAt:r().nullable(),rating:m().nullable(),reviewCount:m().int().nonnegative().nullable(),ratingOrigin:R2.nullable(),ratingObservedAt:r().nullable()});d({negativeMaxStars:m().int().min(1).max(4),locations:y(V9),reviews:y(U9),total:m().int().nonnegative()});d({scope:d({locationName:r().nullable(),locationCount:m().int().nonnegative()}),performance:d({totals:He(r(),m()),recent7d:He(r(),m()),prior7d:He(r(),m()),deltaPct:He(r(),ot().nullable())}),freshness:d({dataThroughDate:r().nullable(),latestStoredDate:r().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(d({date:r(),pending:E(),metrics:He(r(),m())})),keywords:d({total:m().int().nonnegative(),thresholdedCount:m().int().nonnegative(),thresholdedPct:ot(m().min(0).max(100))}),placeActions:d({total:m().int().nonnegative(),hasReservationCta:E(),hasBookingCta:E(),hasDirectMerchantCta:E()}),lodging:d({lodgingLocationCount:m().int().nonnegative(),populatedLodgingCount:m().int().nonnegative(),emptyLodgingCount:m().int().nonnegative()}),profileCompleteness:d({locationCount:m().int().nonnegative(),withSecondaryCategories:m().int().nonnegative(),secondaryCategoryTotal:m().int().nonnegative(),withDescription:m().int().nonnegative(),withServiceArea:m().int().nonnegative(),withHours:m().int().nonnegative(),withPrimaryPhone:m().int().nonnegative(),permanentlyClosed:m().int().nonnegative(),temporarilyClosed:m().int().nonnegative()})});const $9={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function G9(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(o=>o.toLowerCase());if(n.length===0)return e;const i=n.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function Bee(e){return $9[e]??G9(e)}const K9=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],H9=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function Lee(e){return K9.includes(e)?"conversion":H9.includes(e)?"reach":"other"}const pt=r().trim().min(1),Wx=r().regex(/^[a-f0-9]{64}$/i);function F9(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const n=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(n.getTime())&&n.toISOString().slice(0,10)===e}const kn=r().refine(F9,{message:"Expected a calendar date as YYYY-MM-DD."});function Q9(e,n){const i=Date.parse(`${e}T00:00:00.000Z`),o=Date.parse(`${n}T00:00:00.000Z`);return Math.floor((o-i)/864e5)+1}const Z9=j(["not-connected","selection-required","connected","stale"]),dd=Z9.enum,z2=j(["enabled","suspended","closed","canceled","unspecified","unknown"]);z2.enum;const og=j(["enabled","paused","removed","unknown"]);og.enum;const I2=j(["enabled","hidden","removed","unknown"]);I2.enum;const rg=j(["customer","campaign"]);rg.enum;const O2=j(["customer-goal","campaign-goal","custom-goal"]);O2.enum;const P2=d({loginCustomerId:pt.nullable(),customerId:pt.nullable(),selectedAt:r().nullable()}).strict(),pf=d({id:pt,projectId:pt,scopes:y(r()).default([]),selection:P2,lastValidatedAt:r().nullable(),lastInventorySnapshotAt:r().nullable(),lastMetricsSnapshotAt:r().nullable(),createdAt:r(),updatedAt:r()}).strict(),n0=d({resourceName:pt,customerId:pt,parentCustomerId:pt.nullable(),descriptiveName:r().nullable(),currencyCode:r().nullable(),timeZone:r().nullable(),manager:E(),hidden:E(),testAccount:E(),level:m().int().nonnegative(),status:z2}).strict(),Y9=d({customers:y(n0),totalAccessible:m().int().nonnegative(),truncated:E(),selection:P2,fetchedAt:r()}).strict();Be("status",[d({connected:R(!1),status:R(dd["not-connected"]),connection:ue(),selectedCustomer:ue()}).strict(),d({connected:R(!0),status:R(dd["selection-required"]),connection:pf,selectedCustomer:ue()}).strict(),d({connected:R(!0),status:R(dd.connected),connection:pf,selectedCustomer:n0}).strict(),d({connected:R(!0),status:R(dd.stale),connection:pf,selectedCustomer:n0}).strict()]);const X9=d({id:pt,resourceName:pt,name:r(),status:og,advertisingChannelType:r().nullable(),biddingStrategyType:r().nullable()}).strict(),J9=d({id:pt,resourceName:pt,name:r(),status:I2,category:r(),origin:r(),primaryForGoal:E(),includeInConversionsMetric:E()}).strict(),W9=d({category:r(),origin:r(),biddable:E()}).strict(),eI=d({campaignId:pt,category:r(),origin:r(),biddable:E()}).strict(),tI=d({id:pt,name:r(),conversionActionIds:y(pt)}).strict(),nI=d({campaignId:pt,goalConfigLevel:rg,customGoalId:pt.nullable()}).strict(),aI=d({customerId:pt,fetchedAt:r(),campaigns:y(X9),conversionActions:y(J9),customerConversionGoals:y(W9),campaignConversionGoals:y(eI),campaignConversionGoalsComplete:E().optional(),customConversionGoals:y(tI),campaignGoalConfigurations:y(nI)}).strict(),iI=d({source:O2,category:r().nullable(),origin:r().nullable(),customGoalId:pt.nullable(),biddable:E().nullable(),conversionActionIds:y(pt),primaryConversionActionIds:y(pt),secondaryConversionActionIds:y(pt),missingConversionActionIds:y(pt)}).strict(),sI=d({campaignId:pt,goalConfigLevel:rg,customGoalId:pt.nullable(),missingCustomGoalId:pt.nullable(),goals:y(iI)}).strict();d({customerId:pt,derivedAt:r(),campaigns:y(sI)}).strict();const q2=50,a0=31,oI=q2*a0,rI=d({campaignIds:y(pt).min(1).max(q2),startDate:kn,endDate:kn}).strict().superRefine((e,n)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&n.addIssue({code:ye.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){n.addIssue({code:ye.custom,path:["endDate"],message:"endDate must not precede startDate."});return}Q9(e.startDate,e.endDate)>a0&&n.addIssue({code:ye.custom,path:["endDate"],message:`Campaign metrics may cover at most ${a0} calendar days.`})}),lI=d({campaignId:pt,date:kn,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),cI=d({query:rI,rows:y(lI).max(oI),truncated:E(),fetchedAt:r()}).strict(),M2=j(["accessible-customers","inventory","campaign-metrics"]),hf=M2.enum,lg=d({id:pt,projectId:pt,connectionId:pt,runId:pt,kind:M2,customerId:pt.nullable(),payloadChecksum:Wx,rawPayloadSha256:Wx.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:r(),createdAt:r()}).strict(),uI=Be("kind",[d({kind:R(hf["accessible-customers"]),data:Y9}).strict(),d({kind:R(hf.inventory),data:aI}).strict(),d({kind:R(hf["campaign-metrics"]),data:cI}).strict()]),dI=d({metadata:lg,payload:uI}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),mI=j(["7d","14d","30d"]),cg=d({impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable(),ctr:we().nullable(),cpcMicros:m().int().nonnegative().nullable(),conversionRate:we().nullable(),costPerConversionMicros:m().int().nonnegative().nullable()}),pI=d({date:kn,origin:j(["provider","filled"]),impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),ctr:we().nullable()}),hI=d({campaignId:pt,name:r().nullable(),status:og,totals:cg}),fI=d({snapshotId:pt,capturedAt:r(),customerId:pt,currencyCode:r().nullable(),timeZone:r().nullable(),asOfDate:kn,openDate:kn.nullable(),truncated:E(),campaignsQueried:m().int().nonnegative(),campaignsInInventory:m().int().nonnegative()}),gI=d({startDate:kn,endDate:kn,days:m().int().positive(),totals:cg}),yI=d({days:m().int().positive(),prior:gI,change:d({impressions:we().nullable(),clicks:we().nullable(),costMicros:we().nullable(),conversions:we().nullable(),ctr:we().nullable(),conversionRate:we().nullable()})});d({window:mI,startDate:kn,endDate:kn,days:m().int().positive(),totals:cg,daily:y(pI),campaigns:y(hI),comparison:yI.nullable(),comparisonUnavailableReason:j(["insufficient-history","no-snapshot"]).nullable(),source:fI.nullable()});const ym=j(["complete","partial","failed","unsupported"]);ym.enum;const bI=["branded","non-brand"],Vr=j(bI),ug=j(["all","branded","non-brand"]);function vI(e){const n=e.filter(o=>Ga(o).length>0);if(n.length===0)return null;const i=T9(n);return i.keys.size===0?null:{matcher:i,classify(o){return E9(i,o)?"branded":"non-brand"}}}const xI=2,wI=r().regex(/^[a-f0-9]{64}$/),bm=r().trim().min(1).max(256),ew=j(["sensitive","insensitive"]),he=r().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),kI=r().trim().min(1).refine(e=>Bc(e)!==null,"A competitor domain must be a valid hostname"),SI=Be("kind",[d({kind:R("exact"),url:r().min(1),pathCase:ew}).strict(),d({kind:R("prefix"),host:r().min(1),pathPrefix:r().min(1),pathCase:ew}).strict(),d({kind:R("host"),host:r().min(1)}).strict()]),jI=d({canonicalHost:r().min(1),ownedHosts:y(r().min(1)),names:y(r().min(1))}).strict(),AI=d({projectBrand:jI}).strict(),NI=d({stableKey:he,label:r().trim().min(1),aliases:y(r().min(1)),identityAliases:y(r().trim().min(1)).optional(),urlMatchers:y(SI),mentionNotApplicable:E(),discoveryIdentity:r().min(1).nullable()}).strict(),B2=d({stableKey:he,label:r().trim().min(1),domain:kI,aliases:y(r().min(1))}).strict(),CI=d({stableKey:he,label:r().trim().min(1),parentGroupKey:he.optional(),targetKeys:y(he),competitors:y(B2)}).strict(),_I=j(["manual","query-set","template","discovery","research"]),TI=d({templateId:r().trim().min(1).max(256),templateVersion:r().trim().min(1).max(256),template:r().trim().min(1).max(4e3),bindings:He(r().trim().min(1).max(128),r().trim().min(1).max(128)),output:r().trim().min(1).max(4e3)}).strict(),L2=d({source:_I,sourceId:r().min(1).nullable(),capturedAt:r().datetime(),template:TI.optional()}).strict(),EI=d({queryId:bm,queryText:r().min(1),provenance:L2}).strict(),vm=d({providers:y(jt).min(1),models:He(jt,r().min(1)),location:mn.nullable()}).strict(),RI=d({stableKey:r().min(1),queryId:bm,queryText:r().min(1),context:vm,expectedSnapshots:m().int().nonnegative()}).strict(),dg=Vr,DI=d({targetKey:he,queryId:bm,queryClass:dg,classificationSource:j(["server","operator"]).optional(),executionNodeKey:r().min(1)}).strict(),mg=d({executionNodeKey:r().min(1),targetKey:he,queryId:bm}).strict(),U2=d({stableKey:he,label:r().trim().min(1),kind:R("market"),groupKey:he.optional(),usageEdges:y(mg)}).strict();function tw(e){return[e.executionNodeKey,e.targetKey,e.queryId].join("\0")}const xm=d({schemaVersion:R(xI),identities:AI,targets:y(NI),groups:y(CI),querySnapshots:y(EI),assignments:y(DI),executionNodes:y(RI),usageEdges:y(mg),reportingScopes:y(U2).optional(),compiledChecksum:wI}).strict().superRefine((e,n)=>{const i=new Set;for(const b of e.executionNodes)i.has(b.stableKey)&&n.addIssue({code:ye.custom,path:["executionNodes"],message:`Duplicate execution node key "${b.stableKey}"`}),i.add(b.stableKey);const o=new Set(e.targets.map(b=>b.stableKey));e.usageEdges.forEach((b,v)=>{i.has(b.executionNodeKey)||n.addIssue({code:ye.custom,path:["usageEdges",v,"executionNodeKey"],message:`Usage edge references unknown execution node "${b.executionNodeKey}"`}),o.has(b.targetKey)||n.addIssue({code:ye.custom,path:["usageEdges",v,"targetKey"],message:`Usage edge references unknown Target "${b.targetKey}"`})});const u=new Set(e.usageEdges.map(tw)),h=new Set;e.reportingScopes?.forEach((b,v)=>{if(h.has(b.stableKey)&&n.addIssue({code:ye.custom,path:["reportingScopes",v,"stableKey"],message:`Duplicate reporting scope key "${b.stableKey}"`}),h.add(b.stableKey),b.groupKey!==void 0){const k=e.groups.find(S=>S.stableKey===b.groupKey);(!k||b.usageEdges.some(S=>!k.targetKeys.includes(S.targetKey)))&&n.addIssue({code:ye.custom,path:["reportingScopes",v,"groupKey"],message:"A market must link to an existing group containing all its assigned properties."})}const x=new Set;b.usageEdges.forEach((k,S)=>{const C=tw(k);u.has(C)||n.addIssue({code:ye.custom,path:["reportingScopes",v,"usageEdges",S],message:`Reporting scope "${b.stableKey}" references a usage edge that this revision does not contain.`}),x.has(C)&&n.addIssue({code:ye.custom,path:["reportingScopes",v,"usageEdges",S],message:`Reporting scope "${b.stableKey}" repeats a usage edge.`}),x.add(C)})}),e.assignments.forEach((b,v)=>{o.has(b.targetKey)||n.addIssue({code:ye.custom,path:["assignments",v,"targetKey"],message:`Assignment references unknown Target "${b.targetKey}"`})});const f=new Map;e.groups.forEach((b,v)=>{f.has(b.stableKey)&&n.addIssue({code:ye.custom,path:["groups",v,"stableKey"],message:"Duplicate group stable key "+b.stableKey}),f.set(b.stableKey,b)}),e.groups.forEach((b,v)=>{const x=b.parentGroupKey;if(x===void 0)return;if(x===b.stableKey){n.addIssue({code:ye.custom,path:["groups",v,"parentGroupKey"],message:"A group cannot be its own parent."});return}const k=f.get(x);if(!k){n.addIssue({code:ye.custom,path:["groups",v,"parentGroupKey"],message:"Group parent does not exist: "+x});return}const S=new Set(k.targetKeys);b.targetKeys.forEach((z,q)=>{S.has(z)||n.addIssue({code:ye.custom,path:["groups",v,"targetKeys",q],message:"Group target membership must be a subset of its parent."})});const C=new Set([b.stableKey]);let _=k;for(;_.parentGroupKey!==void 0;){if(C.has(_.stableKey)){n.addIssue({code:ye.custom,path:["groups",v,"parentGroupKey"],message:"Group parent relationships cannot contain a cycle."});break}C.add(_.stableKey);const z=f.get(_.parentGroupKey);if(!z)break;_=z}});for(const b of e.groups)for(const v of b.targetKeys)o.has(v)||n.addIssue({code:ye.custom,path:["groups"],message:`Group "${b.stableKey}" references unknown Target "${v}"`})}),pg=100;function zr(e){return d({items:y(e),nextCursor:r().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const Lc=j(["no_completed_run","plan_v1","no_population","evidence_incomplete","identity_ambiguous","not_applicable"]),dn=Be("state",[d({state:R("available"),value:we(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional(),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:"custom",path:["unchecked"],message:"A metric reads one signal: unattributed (mention) and unchecked (citation) cannot share it"})}),d({state:R("unavailable"),reason:Lc}).strict()]),ko=Be("state",[d({state:R("available"),value:m().int().nonnegative(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),d({state:R("unavailable"),reason:Lc}).strict()]),hg=j(["all","group","property"]),pa=ug,zI=j(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),fg=j(["not_measured","queued","running","complete","partial","failed"]),II=j(["run_measurement","review_flags","complete_setup","republish_setup","none"]);d({scope:hg,groupKey:he.optional(),targetKey:he.optional(),queryClass:pa.optional(),provider:jt.optional(),location:r().trim().min(1).optional(),from:r().trim().min(1).optional(),to:r().trim().min(1).optional(),runId:r().trim().min(1).optional(),search:r().optional(),sort:zI.optional(),cursor:r().trim().min(1).optional(),limit:m().int().positive().max(pg).optional(),compact:E().optional()}).strict();const OI=d({provider:jt,mentionCoverage:dn,citationCoverage:dn}).strict(),PI=d({bothSignals:m().int().nonnegative(),mentionedOnly:m().int().nonnegative(),citedOnly:m().int().nonnegative(),neither:m().int().nonnegative(),notMeasured:m().int().nonnegative(),total:m().int().nonnegative()}).strict(),i0=d({groupKey:he,label:r().trim().min(1)}).strict(),qI=d({targetKey:he,label:r().min(1),metro:i0.nullable().optional(),otherMetros:y(i0).min(1).optional(),mentionCoverage:dn,citationCoverage:dn,providers:y(OI),flags:m().int().nonnegative()}).strict(),MI=d({kind:j(["project","competitor"]),stableKey:r().min(1),label:r().min(1),domain:r().min(1),credits:m().int().nonnegative(),share:we(m().min(0).max(1))}).strict(),BI=d({groupKey:he,queryClass:R("non-brand"),denominator:m().int().positive(),entries:y(MI)}).strict();d({mode:j(["active-v1","active-v2"]),scope:d({kind:hg,key:r().min(1).optional(),label:r().min(1)}).strict(),queryClass:pa,measurement:d({state:fg,currentRunId:r().min(1).optional(),displayedRunId:r().min(1).optional(),completed:m().int().nonnegative(),expected:m().int().nonnegative(),completedAt:r().datetime().optional(),includesHistoricalData:E().optional()}).strict(),nextAction:d({kind:II,count:m().int().nonnegative().optional()}).strict(),metrics:d({propertiesMentioned:ko,mentionCoverage:dn,citationCoverage:dn,brandPresence:dn,sov:dn.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:zr(qI),outcomes:PI,flags:d({total:m().int().nonnegative()}).strict(),namedShareOfVoice:BI.optional(),detailsOmitted:y(r()).optional()}).strict();const V2=j(["sources","answers"]),LI=V2.enum;LI.sources;d({targetKey:he,queryClass:pa.optional(),provider:jt.optional(),location:r().trim().min(1).optional(),runId:r().trim().min(1).optional(),shape:V2.optional(),cursor:r().trim().min(1).optional(),limit:m().int().positive().max(pg).optional()}).strict();const $2=1,Uc=m().int().positive(),gn=r().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Vc=r().trim().min(1).max(256),nw=j(["sensitive","insensitive"]);function $d(e){const n=Bc(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function UI(e){const n=[];let i=!1;for(let o=0;o<e.length;o++){const u=e[o];u==="/"?(i||n.push(u),i=!0):(n.push(u),i=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function aw(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function G2(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return UI(n.replace(/%[0-9a-f]{2}/gi,i=>i.toUpperCase()))}function s0(e){const n=e.trim();if(!n||n.includes("?")||n.includes("#")||n.includes("://")||n.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const i=n.startsWith("/")?n:`/${n}`;for(const o of i.split("/")){let u;try{u=decodeURIComponent(o)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(u==="."||u==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return G2(i)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function VI(e){const n=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!n)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(n[0].length).split(/[?#]/,1)[0]||"/"}function iw(e){const n=e.trim();if(!n||n.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let i;try{i=new URL(n)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(i.protocol!=="http:"&&i.protocol!=="https:"||i.username||i.password||i.port||i.search||i.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const o=$d(i.hostname),u=s0(VI(n));return`https://${o}${u}`}const Cc=r().trim().min(1).refine(e=>{try{return $d(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>$d(e)),$I=r().trim().min(1).refine(e=>{try{return s0(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>s0(e)),GI=r().trim().min(1).refine(e=>{try{return iw(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>iw(e)),KI=Be("kind",[d({kind:R("exact"),url:GI,pathCase:nw}).strict(),d({kind:R("prefix"),host:Cc,pathPrefix:$I,pathCase:nw}).strict(),d({kind:R("host"),host:Cc}).strict()]),K2=r().trim().min(1).max(256).refine(e=>Ga(e).length>0,"A target alias must contain mention text"),HI=He(r().trim().min(1),r()),FI=Cc,H2=d({stableKey:gn,label:r().trim().min(1),urls:y(KI).min(1),aliases:y(K2),metadata:HI.optional()}).strict(),gg=d({stableKey:gn,label:r().trim().min(1),targetKeys:y(gn).min(1),competitors:y(FI).optional()}).strict(),F2=d({targetKey:gn,queryIds:y(Vc).min(1),context:mn.nullable().optional()}).strict();function QI(e,n){return e<n?-1:e>n?1:0}function ZI(e,n=i=>i){const i=new Set,o=new Set;for(const u of e){const h=n(u);i.has(h)&&o.add(h),i.add(h)}return o}function ff(e,n,i,o,u){for(const h of ZI(n,u))e.addIssue({code:"custom",path:[...i],message:`Duplicate ${o}: ${h}`})}function sw(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const n=new URL(e.url);return{host:$d(n.hostname),pathname:G2(n.pathname||"/")}}function YI(e,n,i,o){return e===i||(n==="insensitive"||o==="insensitive")&&aw(e)===aw(i)}function XI(e,n){if(e.kind!==n.kind)return!1;const i=sw(e),o=sw(n);return i.host!==o.host?!1:e.kind==="host"||n.kind==="host"?!0:YI(i.pathname,e.pathCase,o.pathname,n.pathCase)}function JI(e){const n=new Set;return[...e].sort(QI).filter(i=>{const o=Ga(i);return n.has(o)?!1:(n.add(o),!0)})}const Q2=d({schemaVersion:R($2),targets:y(H2).min(1),groups:y(gg).optional(),targetQuerySelections:y(F2).optional()}).strict().superRefine((e,n)=>{const i=e.groups??[],o=e.targetQuerySelections??[];ff(n,e.targets.map(v=>v.stableKey),["targets"],"target stable key"),ff(n,i.map(v=>v.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(v=>v.stableKey)),h=new Set(i.map(v=>v.stableKey));for(const v of u)h.has(v)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${v}`});const f=new Map,b=[];e.targets.forEach((v,x)=>{for(const k of JI(v.aliases)){const S=Ga(k),C=f.get(S);C&&C!==v.stableKey&&n.addIssue({code:"custom",path:["targets",x,"aliases"],message:`Target alias is already assigned to target ${C}: ${k}`}),f.set(S,v.stableKey)}v.urls.forEach((k,S)=>{b.find(_=>_.targetKey!==v.stableKey&&XI(_.matcher,k))&&n.addIssue({code:"custom",path:["targets",x,"urls",S],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:v.stableKey,matcher:k})})}),i.forEach((v,x)=>{ff(n,v.targetKeys,["groups",x,"targetKeys"],"group target key");for(let k=0;k<v.targetKeys.length;k++){const S=v.targetKeys[k];u.has(S)||n.addIssue({code:"custom",path:["groups",x,"targetKeys",k],message:`Unknown target: ${S}`})}}),o.forEach((v,x)=>{u.has(v.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",x,"targetKey"],message:`Unknown target: ${v.targetKey}`})})});Q2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));d({expectedActiveRevision:Uc.nullable(),plan:Q2}).strict();const WI=d({queryId:Vc,queryText:r().min(1)}).strict(),yg=d({stableKey:r().min(1),queryText:r().min(1),context:mn.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),eO=d({kind:R("baseline"),executionNodeKey:r().min(1),queryId:Vc}).strict(),tO=d({kind:R("target"),executionNodeKey:r().min(1),queryId:Vc,targetKey:gn}).strict(),o0=Be("kind",[eO,tO]),Z2=d({code:R("target-alias-prefix-overlap"),message:r().min(1),targetKeys:y(gn).min(1),aliases:y(r().min(1)).min(1)}).strict(),Y2=H2.extend({mentionNotApplicable:E()}),X2=d({schemaVersion:R($2),defaultContext:mn.nullable(),effectiveOwnedHosts:y(Cc),projectCanonicalHost:Cc,projectBrandNames:y(K2),targets:y(Y2),groups:y(gg),targetQuerySelections:y(F2),querySnapshots:y(WI),executionNodes:y(yg),usageEdges:y(o0),warnings:y(Z2)}).strict(),nO=X2,J2=Be("schemaVersion",[X2,xm]),bg=r().regex(/^[a-f0-9]{64}$/),vg=r().datetime(),W2=d({schemaVersion:R(1),language:r().min(1).optional(),providers:y(r().min(1)).min(1),models:He(r().min(1),r().min(1)),checksum:r().regex(/^[a-f0-9]{64}$/)}).strict(),aO=d({groups:y(gn).optional(),targets:y(gn).optional()}).strict(),iO=d({groups:y(gn),targets:y(gn),queries:y(r().min(1)),resolvedTargets:y(gn)}).strict().superRefine((e,n)=>{e.resolvedTargets.length===0&&e.queries.length===0&&n.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});d({stableKey:gn,retiredAt:r().datetime()});d({active:d({revision:Uc,checksum:bg,createdAt:vg,plan:J2}).nullable()});d({versions:y(d({revision:Uc,checksum:bg,createdAt:vg,active:E()}))});d({version:d({revision:Uc,checksum:bg,createdAt:vg,active:E(),plan:J2})});const _d=d({targets:m().int(),groups:m().int(),queries:m().int(),executionNodes:m().int(),usageEdges:m().int(),baselineEdges:m().int(),targetEdges:m().int(),dedupSavings:m().int()}).strict(),sO=j(["invalid-authoring","duplicate-identity","unknown-target","unknown-query","invalid-project-context","unowned-target-url","owned-competitor","target-query-context-conflict","target-url-ownership-tie","target-alias-cross-target-collision","target-alias-project-brand-collision","target-alias-prefix-overlap"]),ej=d({id:sO,severity:j(["fail","warn"]),message:r().min(1),path:y(Qe([r(),m().int()]))}).strict(),oO=d({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),tj=d({ok:R(!0),checks:y(ej),executionNodes:y(yg),dedupSaved:m().int().nonnegative(),usageEdges:oO,estCostUsd:ue(),plan:nO,warnings:y(Z2),counts:_d}).strict(),nj=d({ok:R(!1),checks:y(ej).min(1),executionNodes:y(yg).length(0),dedupSaved:R(0),usageEdges:d({baseline:R(0),target:R(0)}).strict(),estCostUsd:ue()}).strict();Be("ok",[tj,nj]);const md=d({targetKey:gn,context:mn.nullable(),queryIds:y(Vc)}).strict();function ow(e){return d({added:y(e),removed:y(e),changed:y(d({stableKey:gn,before:e,after:e}).strict()),unchanged:y(gn)}).strict()}const rO=tj.extend({diff:d({activeRevision:Uc.nullable(),targets:ow(Y2),groups:ow(gg),querySelections:d({added:y(md),removed:y(md),changed:y(d({targetKey:gn,before:md,after:md}).strict()),unchanged:y(d({targetKey:gn,context:mn.nullable()}).strict())}).strict(),execution:d({addedNodeKeys:y(r().min(1)),removedNodeKeys:y(r().min(1)),addedUsageEdges:y(o0),removedUsageEdges:y(o0),counts:d({before:_d.nullable(),after:_d,delta:_d.nullable()}).strict()}).strict()}).strict()}).strict(),lO=nj.extend({diff:ue()}).strict();Be("ok",[rO,lO]);const aj=j(["PROVIDER_AUTH","PROVIDER_BILLING","RATE_LIMITED","PROVIDER_UNAVAILABLE","NETWORK","TIMEOUT","PARSE_ERROR","UNKNOWN"]);aj.enum;const ha=j(["queued","running","completed","partial","failed","cancelled"]),Zt=ha.enum,xg=j(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync","google-ads-sync","gtm-sync"]),ze=xg.enum;d({kind:xg.optional(),status:ha.optional()});const wg=j(["manual","scheduled","config-apply","backfill","probe"]),ii=wg.enum,Li=j(["cited","not-cited"]),yc=Li.enum,Gd=j(["visible","not-visible"]);Gd.enum;const _c=j(["mentioned","not-mentioned"]);_c.enum;const ij=j(["new","cited","lost","emerging","not-cited"]);ij.enum;const cO=j(["new","mentioned","lost","emerging","not-mentioned"]);cO.enum;const uO=j([ii.manual,ii.probe]);d({kind:R(ze["answer-visibility"]).optional(),trigger:uO.optional(),providers:y(jt).optional(),queries:y(r().min(1)).min(1).optional(),measurementScope:aO.optional(),location:r().min(1).optional(),allLocations:E().optional(),noLocation:E().optional(),dispatchMode:Mc.optional(),force:E().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const dO=d({message:r(),raw:wn().optional(),code:aj.optional()}),mO=d({message:r().optional(),providers:He(r(),dO).optional()}),pO=He(r(),R(Mc.enum.batch)),hO=d({id:r(),provider:r(),model:r(),status:v2,requestCount:m().int().nonnegative(),ingestedCount:m().int().nonnegative(),recordedCount:m().int().nonnegative(),submittedAt:r().nullable(),endedAt:r().nullable(),deadlineAt:r(),error:r().nullable()}),fO=d({provider:r(),pricingTier:ag,answers:m().int().nonnegative(),inputTokens:m().int().nonnegative(),cachedInputTokens:m().int().nonnegative(),cacheWriteTokens:m().int().nonnegative(),outputTokens:m().int().nonnegative(),searchCount:m().int().nonnegative(),estimatedCostMicros:m().int().nonnegative().nullable(),unpricedAnswers:m().int().nonnegative()}),gO=d({id:r(),projectId:r(),kind:xg,status:ha,trigger:wg.default("manual"),measurementPlanVersionId:r().nullable().optional(),measurementManifest:He(r(),wn()).nullable().optional(),measurementScope:iO.nullable().optional(),measurementExecutionIdentity:W2.nullable().optional(),location:r().nullable().optional(),queries:y(r()).nullable().optional(),startedAt:r().nullable().optional(),finishedAt:r().nullable().optional(),error:mO.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),dispatchModes:pO.optional(),createdAt:r()});function kg(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[i,o]=n[0];return`${i}: ${o.message}`}if(n.length>1)return n.map(([i,o])=>`${i}: ${o.message}`).join(" • ")}return e.message??"Run failed."}const wm=d({uri:r(),title:r()}),yO=d({status:j(["applied","ignored","browser-implicit","unknown"]),resolved:mn.nullable().optional()}),sj=d({id:r(),runId:r(),queryId:r(),query:r().optional(),provider:jt,citationState:Li,answerMentioned:E().optional(),visibilityState:Gd.optional(),mentionState:_c.optional(),transition:ij.optional(),answerText:r().nullable().optional(),citedDomains:y(r()).default([]),citedUrls:y(r()).nullable().default(null),captureStatus:Qe([ym,ue()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Qe([Z0,ue()]).default(null),retrievalContract:Qe([Y0,ue()]).default(null),competitorOverlap:y(r()).default([]),citedCompetitorDomains:y(r()).default([]),mentionedCompetitorDomains:y(r()).default([]),mentionedCompetitorTerms:y(r()).default([]),recommendedCompetitors:y(r()).default([]),matchedTerms:y(r()).default([]),groundingSources:y(wm).default([]),searchQueries:y(r()).default([]),model:r().nullable().optional(),servedModel:r().nullable().optional(),location:r().nullable().optional(),requestedContext:mn.nullable().optional(),supportedContext:yO.nullable().optional(),dispatchMode:Qe([Mc,ue()]).optional(),stopReason:r().nullable().optional(),usage:$z.nullable().optional(),createdAt:r()});d({snapshots:y(sj),total:m().int().nonnegative()});const bO=d({queryId:r().nullable(),query:r().nullable(),run1State:Li.nullable(),run2State:Li.nullable(),run1AnswerMentioned:E().nullable(),run2AnswerMentioned:E().nullable(),run1VisibilityState:Gd.nullable(),run2VisibilityState:Gd.nullable(),run1MentionState:_c.nullable().optional(),run2MentionState:_c.nullable().optional(),changed:E(),visibilityChanged:E()});d({run1:r(),run2:r(),diff:y(bO)});const vO=d({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),mentionedQueries:m().int().nonnegative()}),xO=gO.extend({snapshots:y(sj).optional(),queryCounts:vO.nullable().optional(),providerBatches:y(hO).optional(),usage:y(fO).optional()}),wO=d({totalRuns:m().int().nonnegative(),run:xO.nullable()});d({id:r(),projectId:r().nullable().optional(),actor:r(),action:r(),entityType:r(),entityId:r().nullable().optional(),diff:wn().optional(),userAgent:r().nullable().optional(),actorSession:r().nullable().optional(),requestId:r().nullable().optional(),credentialId:r().nullable().optional(),createdAt:r()});const oj=Qe([ha,ue()]),Sg=j(["pass","partial","fail"]),Uee=Sg.enum,rj=j(["up","down","flat"]);rj.enum;const kO=d({id:r(),name:r(),weight:m(),sharePct:ot(m().min(0).max(100)).nullable().default(null),avgScore:m(),status:Sg,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),SO=d({factorId:r(),factorName:r(),avgScore:m(),affectedPages:m().int().nonnegative(),totalPages:m().int().nonnegative(),affectedPct:ot(m().nonnegative()),topRecommendations:y(r()).default([])}),Va=d({reason:j(["explicit-run","latest-date-complete","latest-date-most-pages","requested-date-complete","requested-date-most-pages"]),date:r(),sameDateRunCount:m().int().nonnegative(),ambiguousDate:E(),candidates:y(d({runId:r(),createdAt:r(),complete:E(),pages:m().int().nonnegative()})).max(10),candidatesTruncated:E()});d({project:r(),hasData:E(),runId:r().nullable(),runStatus:oj,sitemapUrl:r().nullable(),auditedAt:r().nullable(),aggregateScore:m(),pagesDiscovered:m().int().nonnegative(),pagesAudited:m().int().nonnegative(),pagesSkipped:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),deltaScore:m().nullable(),trend:Qe([rj,ue()]),previousScore:m().nullable(),previousAuditedAt:r().nullable(),runSelection:Va.optional(),factors:y(kO).default([]),affectedPageRanking:d({basis:R("pages-below-pass"),scope:R("audited-pages"),pagesAudited:m().int().nonnegative(),items:y(d({factorId:r(),pagesBelowPass:m().int().nonnegative(),pagesFailing:m().int().nonnegative(),pagesPartial:m().int().nonnegative()})),unavailableFactorIds:y(r())}).optional(),crossCuttingIssues:y(SO).default([]),prioritizedFixes:y(r()).default([])});const lj=d({id:r(),name:r(),weight:m(),score:m(),sharePct:ot(m().min(0).max(100)).nullable().default(null)}),jO=d({url:r(),overallScore:m(),status:j(["success","error"]),error:r().nullable().optional(),factors:y(lj).default([])});d({project:r(),runId:r().nullable(),auditedAt:r().nullable(),runSelection:Va.optional(),total:m().int().nonnegative(),pages:y(jO).default([])});const AO=d({runId:r(),auditedAt:r(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});d({project:r(),points:y(AO).default([])});const NO=j(["disabled","complete","partial","unavailable"]);NO.enum;const $r=j(["indexable","redirect-terminal","canonical-to-other","robots-disallow","noindex","non-html","fetch-error","not-fetched","unknown"]);$r.enum;const cj=d({healthReason:$r,pages:m().int().nonnegative(),exampleUrl:r()}),uj=d({scope:R("selected-snapshot"),total:m().int().nonnegative(),eligible:m().int().nonnegative(),excluded:m().int().nonnegative(),excludedReasons:y(cj).max($r.options.length)}),dj=d({recentDates:y(kn).max(10),totalDates:m().int().nonnegative(),matchingMonthDayDates:y(kn).max(10),matchingMonthDayTotal:m().int().nonnegative()}),CO=d({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),_O=Be("state",[d({state:R("unavailable")}),d({state:R("disabled")}),d({state:R("complete"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()}),d({state:R("partial"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()})]);d({project:r(),hasCrawlData:E(),legacyAuditAvailable:E(),runId:r().nullable(),runSelection:Va.optional(),requestedDate:kn.optional(),availableScanDates:dj.optional(),inventorySummary:uj.nullable().optional(),runStatus:oj,requestedRootUrl:r().nullable(),rootUrl:r().nullable(),crawlSchemaVersion:r().nullable().optional(),engineVersion:r().nullable().optional(),normalizationVersion:r().nullable().optional(),indexabilityVersion:r().nullable().optional(),linkScoreVersion:r().nullable().optional(),effectiveOptions:He(r(),wn()).default({}),complete:E(),termination:r().nullable(),detailsAvailable:E(),counts:CO,deadLinks:_O});j(["complete","unknown","max-pages","max-edges","max-fetches","max-duration","max-bytes","max-page-bytes","max-depth","max-links-per-page","max-query-variants","max-sitemap-fanout","max-sitemap-urls","root-host-redirect"]);const km=j(["eligible","hidden","resource","redirect","failed","unchecked"]),Vee=km.enum,$ee=km.options,Sr={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},pd={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},TO={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function EO(e){return e.indexabilityReasons?.some(n=>n===TO.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function Gee(e){switch(e.fetchState){case Sr.fetchError:return"failed";case Sr.discovered:return"unchecked";case Sr.nonHtml:return"resource";case Sr.redirect:return"redirect";case Sr.robotsBlocked:return"hidden";case Sr.html:break;default:return"unchecked"}if(EO(e))return"hidden";switch(e.indexabilityState){case pd.indexable:return"eligible";case pd.noindex:case pd.blocked:return"hidden";case pd.unknown:default:return"unchecked"}}const Kee=15,RO=j(["navigation","content","unknown"]);RO.enum;const DO=d({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),mj=j(["placement","ubiquity","unmeasured"]);mj.enum;const Sm=j(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);Sm.enum;function Hee(e){switch(e){case"applied":case"applied-placement":case"applied-placement-with-ubiquity":case"applied-placement-partial":return!0;case"unavailable-too-few-pages":case"unavailable-legacy-scan":return!1}}const jm=j(["all","content","template"]);jm.enum;const zO=j(["anchor","redirect","canonical","link"]);zO.enum;const Tc=d({nodeKey:r(),url:r(),finalUrl:r().nullable(),path:r(),parentPath:r(),discoverySource:r(),fetchState:r(),httpStatus:m().int().nullable(),canonicalUrl:r().nullable(),indexabilityState:r(),indexabilityReasons:y(r()).default([]),auditState:r(),auditScore:m().nullable(),inventoryEligible:E(),depth:m().int().nullable(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),inboundOccurrences:m().int().nonnegative(),outboundOccurrences:m().int().nonnegative(),linkScoreRaw:m().nullable(),linkScoreNormalized:ot().nullable(),healthState:km,healthReason:$r.optional()}),IO=d({type:j(["found","missing","info","timeout","unreachable"]),code:r().min(1),message:r().min(1)}),rw=lj.extend({status:Sg,applicable:E().nullable(),findings:y(IO).default([]),recommendations:y(r()).default([])}),lw=d({id:r().min(1),severity:j(["critical","warning"]),detail:r().min(1),recommendation:r().min(1)}),hd=d({project:r(),runId:r(),complete:E(),termination:r().nullable(),runSelection:Va.optional()}),cw=d({nodeKey:r(),url:r(),auditState:r()});Be("state",[d({state:R("no-crawl"),project:r(),runId:ue()}),hd.extend({state:R("details-unavailable")}),hd.extend({state:R("not-found")}),hd.merge(cw).extend({state:R("not-audited"),auditScore:ue(),factors:y(rw).length(0).default([]),criticalDefects:y(lw).length(0).default([])}),hd.merge(cw).extend({state:R("ready"),auditScore:m(),evidenceState:j(["complete","scores-only"]),factors:y(rw).default([]),criticalDefects:y(lw).default([])})]);const OO=j(["applied","unavailable-legacy-scan"]),$c={complete:E(),termination:r().nullable(),runSelection:Va.optional()};d({project:r(),hasCrawlData:E(),runId:r().nullable(),...$c,requestedDate:kn.optional(),availableScanDates:dj.optional(),inventorySummary:uj.nullable().optional(),healthReasonCounts:y(cj).max($r.options.length).nullable().optional(),total:m().int().nonnegative(),nextCursor:r().nullable(),healthStateFilter:Qe([OO,ue()]).default(null),pages:y(Tc).default([])});const PO=d({path:r(),url:r().nullable(),hasPage:E(),pageCount:m().int().positive(),inventoryEligibleCount:m().int().nonnegative(),fetchedCount:m().int().nonnegative()});d({project:r(),hasCrawlData:E(),runId:r().nullable(),...$c,parentPath:r(),nextCursor:r().nullable(),children:y(PO).default([])});const So=d({edgeKey:r(),sourceNodeKey:r(),sourceUrl:r(),targetNodeKey:r().nullable(),targetUrl:r(),relation:r(),internal:E(),followable:E(),occurrences:m().int().positive(),followableOccurrences:m().int().nonnegative(),nofollowOccurrences:m().int().nonnegative(),anchors:y(r()).default([]),isTemplate:Qe([E(),ue()]),templateRatio:Qe([we(),ue()]),templateSource:mj,placementOccurrences:Qe([DO,ue()])}),qO=d({nodeKey:r(),url:r(),path:r(),depth:m().int().nonnegative().nullable(),indexabilityState:r(),fetchState:r(),auditState:r(),auditScore:m().nullable(),inventoryEligible:E(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),linkScoreNormalized:ot().nullable(),healthState:km,healthReason:$r.optional(),x:m(),y:m()}),MO=d({edgeKey:r(),sourceNodeKey:r(),targetNodeKey:r(),followable:E(),occurrences:m().int().positive(),isTemplate:E()}),BO=j(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),LO=Be("state",[d({state:R("ready"),version:r().min(1),computedAt:r().min(1),templateLinksExcluded:E()}),d({state:R("unavailable"),version:ue(),reason:BO})]);d({project:r(),hasCrawlData:E(),runId:r().nullable(),rootNodeKey:r().nullable(),...$c,layout:LO,templateDetection:Sm,linkKind:jm,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(qO).default([]),edges:y(MO).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:E()});const Fee=2e4,Qee=5e4,UO=j(["focus","inbound","outbound","both","transitive"]),VO=Tc.extend({distance:m().int().nonnegative(),relationToFocus:UO});d({project:r(),hasCrawlData:E(),runId:r().nullable(),complete:E(),termination:r().nullable(),runSelection:Va.optional(),state:j(["no-crawl","details-unavailable","ready"]),focusNodeKey:r().nullable(),focusUrl:r().nullable(),hops:m().int().min(0).max(3),totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),nodes:y(VO).default([]),edges:y(So).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:j(["exact","lower-bound"]),truncated:E()});const uw=d({nodeKey:r(),url:r(),path:r()});d({project:r(),runId:r().nullable(),complete:E(),termination:r().nullable(),runSelection:Va.optional(),state:j(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:uw.nullable(),to:uw.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y(Tc).default([]),edges:y(So).default([])});const pj=j(["added","removed","changed"]),$O=d({entity:R("page"),change:pj,key:r(),changedFields:y(r()).default([]),before:Tc.nullable(),after:Tc.nullable()}),GO=d({entity:R("link"),change:pj,key:r(),changedFields:y(r()).default([]),before:So.nullable(),after:So.nullable()}),KO=Be("entity",[$O,GO]),dw=d({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),HO=d({scope:j(["all","pages","links"]),change:j(["all","added","removed","changed"])});Be("state",[d({project:r(),state:R("unavailable"),reason:j(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:r().nullable(),toRunId:r().nullable()}),d({project:r(),state:R("incompatible"),reason:R("incompatible-versions"),fromRunId:r(),toRunId:r(),mismatchedVersions:y(r()).min(1)}),d({project:r(),state:R("ready"),fromRunId:r(),toRunId:r(),versions:d({crawlSchema:r(),normalization:r(),indexability:r(),linkScore:r()}),filters:HO,summaryState:j(["exact","omitted-on-continuation"]),summary:d({pages:dw,links:dw}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:r().nullable(),changes:y(KO).default([])})]);d({project:r(),hasCrawlData:E(),runId:r().nullable(),...$c,total:m().int().nonnegative(),nextCursor:r().nullable(),templateDetection:Sm,linkKind:jm,edges:y(So).default([])});d({project:r(),hasCrawlData:E(),runId:r().nullable(),...$c,nodeKey:r().nullable(),url:r().nullable(),templateDetection:Sm,linkKind:jm,inbound:y(So).default([]),outbound:y(So).default([]),inboundTruncated:E(),outboundTruncated:E()});const mw=d({findingKey:r(),severity:r(),sourceNodeKey:r().nullable(),sourceUrl:r().nullable(),targetNodeKey:r().nullable(),targetUrl:r().nullable(),evidence:He(r(),wn()).default({})});Be("state",[d({project:r(),runId:r().nullable(),state:R("unavailable"),legacyAuditAvailable:E(),runSelection:Va.optional()}),d({project:r(),runId:r(),state:R("disabled"),checkDeadLinks:R(!1),runSelection:Va.optional()}),d({project:r(),runId:r(),state:R("complete"),checkDeadLinks:R(!0),runSelection:Va.optional(),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:r().nullable(),deadLinks:y(mw).default([])}),d({project:r(),runId:r(),state:R("partial"),checkDeadLinks:R(!0),runSelection:Va.optional(),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:r().nullable(),deadLinks:y(mw).default([])})]);const hj=5e4,Am=m().int().min(1).max(hj);function pw(e){return`${e.toLocaleString("en-US")} ${e===1?"page":"pages"}`}function Zee(e){return e===null?`full site (up to ${pw(hj)})`:pw(e)}const Yee=10,fj=100;d({sitemapUrl:r().url().optional(),limit:m().int().positive().max(2e3).optional(),maxPages:Am.optional(),maxEdges:m().int().positive().max(1e6).optional(),maxDepth:m().int().min(0).max(100).optional(),checkDeadLinks:E().default(!1)});d({runId:r(),status:ha});const FO=d({runId:r(),status:ha,createdAt:r(),startedAt:r().nullable(),finishedAt:r().nullable(),hasCrawlData:E()});d({project:r(),preferredRunId:r().nullable().optional(),scans:y(FO).default([])});const QO=j(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),ZO=d({state:j(["pending","ready","unavailable"]),layoutVersion:r().nullable(),failureCode:r().nullable(),updatedAt:r().nullable()}),YO=d({id:r(),state:r(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:r(),startedAt:r().nullable(),finishedAt:r().nullable(),error:r().nullable()});d({project:r(),runId:r(),status:ha,phase:QO,attempt:YO.nullable(),layout:ZO,error:r().nullable()});const XO=j(["waiting","collecting","terminal"]),JO=d({nodeKey:r(),url:r(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});d({project:r(),runId:r(),status:ha,state:XO,attemptId:r().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:r().nullable(),examples:y(JO).max(12).default([])});new Set(w2.map(e=>e.toLowerCase()));const WO=4,eP=3,tP=10,nP=80,gj=y(r()).describe(`Operator-curated names this competitor goes by in answer text (at most ${tP}, each ${nP} characters or fewer, at least ${eP} letters or digits).`);d({aliases:gj});const aP=d({domain:r().trim().min(1),aliases:gj.optional()}),yj=Qe([r().trim().min(1),aP]),bj=j(["cli","api","config-file"]);function iP(e){const n=new Set,i=new Set;for(const o of e){if(n.has(o.label)){i.add(o.label);continue}n.add(o.label)}return[...i]}function sP(e,n){return n?e.some(i=>i.label===n):!0}const vj=20,xj=200,oP=d({displayName:r().min(1),canonicalDomain:r().min(1),ownedDomains:y(r().min(1)).optional(),aliases:y(r()).optional(),country:r().length(2),language:r().min(2),tags:y(r()).optional(),labels:He(r(),r()).optional(),providers:y(jt).optional(),providerModels:X0.optional(),providerDispatchModes:ng.optional(),locations:y(mn).optional(),defaultLocation:r().nullable().optional(),measurement:tg.optional(),autoExtractBacklinks:E().optional(),qualifiedAliases:y(r().trim().min(1).max(xj)).max(vj).optional(),negativeReviewMaxStars:sg.nullable().optional(),siteAuditMaxPages:Am.nullable().optional(),configSource:bj.optional()});oP.extend({name:r().trim().min(1).max(120)});const rP=d({id:r(),name:r(),displayName:r().optional(),canonicalDomain:r(),ownedDomains:y(r()).default([]),aliases:y(r()).default([]),qualifiedAliases:y(r()).default([]),country:r().length(2),language:r().min(2),tags:y(r()).default([]),labels:He(r(),r()).default({}),providers:y(r()).default([]),providerModels:X0.default({}),providerDispatchModes:ng.default({}),locations:y(mn).default([]),defaultLocation:r().nullable().optional(),measurement:tg.default(b2),autoExtractBacklinks:E().default(!1),negativeReviewMaxStars:sg.nullable().optional(),siteAuditMaxPages:Am.nullable().optional(),configSource:bj.default("cli"),configRevision:m().int().positive().default(1),createdAt:r().optional(),updatedAt:r().optional()});d({id:r(),query:r(),createdAt:r()});d({id:r(),keyword:r(),createdAt:r()});d({queries:y(r().trim().min(1)).min(1)});d({keywords:y(r().trim().min(1)).min(1)});d({provider:jt,count:m().int().min(1).max(20).optional()});d({id:r(),domain:r(),aliases:y(r()),createdAt:r()});d({competitors:y(r().trim().min(1)).min(1)});d({competitors:y(yj).min(1)});function wj(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,o=[];for(const u of n){const h=u.trim();if(!h)continue;const f=Vd(h);i.has(f)||(i.add(f),o.push(h))}return o}function lP(e,n){if(!n||n.length===0)return[];const i=e?.trim().toLowerCase()??"",o=new Set,u=[];for(const h of n){const f=h.trim();if(!f)continue;const b=f.toLowerCase();b!==i&&(o.has(b)||(o.add(b),u.push(f)))}return u}function cP(e){const n=[],i=new Set,o=h=>{const f=Ga(h);!f||i.has(f)||(i.add(f),n.push(h))},u=e.displayName?.trim()??"";u&&o(u);for(const h of lP(e.displayName,e.aliases))o(h);for(const h of wj({canonicalDomain:e.canonicalDomain??"",ownedDomains:e.ownedDomains??[]})){const f=ig(h);if(Ga(f).length>=WO)o(f);else{const b=Vd(h);b.includes(".")&&o(b)}}return n}const uP=d({name:r().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:He(r(),r()).optional().default({})}),dP=d({preset:r().min(1).optional(),cron:r().min(1).optional(),recurrence:W0.optional(),timezone:r().optional().default("UTC"),providers:y(jt).optional().default([]),enabled:E().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(n=>n!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'}).optional(),mP=d({channel:R("webhook"),url:r().url(),events:y(eg).min(1)}),pP=d({gsc:d({propertyUrl:r()}).optional(),syncSchedule:d({preset:r().optional(),cron:r().optional()}).optional()}).optional(),hw=y(r().min(1)),hP=d({displayName:r().min(1),canonicalDomain:r().min(1),ownedDomains:y(r().min(1)).optional().default([]),aliases:y(r().min(1)).optional().default([]),qualifiedAliases:y(r().min(1).max(xj)).max(vj).optional(),country:r().length(2),language:r().min(2),queries:hw.optional(),keywords:hw.optional(),competitors:y(yj).optional().default([]),providers:y(jt).optional().default([]),providerModels:X0.optional().default({}),providerDispatchModes:ng.optional(),locations:y(mn).optional().default([]),defaultLocation:r().optional(),measurement:tg.optional().default(b2),schedule:dP,notifications:y(mP).optional().default([]),google:pP,autoExtractBacklinks:E().optional().default(!1),negativeReviewMaxStars:sg.optional(),siteAuditMaxPages:Am.nullable().optional()}).superRefine((e,n)=>{e.queries!==void 0&&e.keywords!==void 0&&n.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const i=iP(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),sP(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});d({apiVersion:R("canonry/v1"),kind:R("Project"),metadata:uP,spec:hP});const fP=1,gP=r().refine(e=>e.trim().length>0,{message:"Must not be blank"}),kj=d({displayName:r(),aliases:y(r()),canonicalDomain:r(),ownedDomains:y(r()),qualifiedAliases:y(r()).optional()}).strict(),Sj=d({provider:jt.refine(e=>e.trim().length>0,{message:"Provider must not be blank"}),requestedModel:r().nullable()}).strict(),jj=d({domain:r(),label:r(),aliases:y(r())}).strict(),Aj=d({queryId:gP,queryText:r(),provenance:r().nullable()}).strict(),yP=Aj.extend({queryClass:Vr.nullable()}).strict();function Nj(e,n){const i=new Set;e.engines.forEach((h,f)=>{const b=h.provider.trim().toLocaleLowerCase("en");i.has(b)&&n.addIssue({code:ye.custom,path:["engines",f,"provider"],message:`Duplicate engine provider "${h.provider}"`}),i.add(b)});const o=new Set;e.queries.forEach((h,f)=>{o.has(h.queryId)&&n.addIssue({code:ye.custom,path:["queries",f,"queryId"],message:`Duplicate query id "${h.queryId}"`}),o.add(h.queryId)});const u=new Set;e.competitors?.forEach((h,f)=>{const b=h.domain;u.has(b)&&n.addIssue({code:ye.custom,path:["competitors",f,"domain"],message:`Duplicate competitor domain "${h.domain}"`}),u.add(b)})}d({capturedAt:r().datetime(),identity:kj,country:r(),language:r(),location:mn.nullable(),engines:y(Sj).min(1),competitors:y(jj).optional(),queries:y(Aj)}).strict().superRefine(Nj);d({schemaVersion:R(fP),capturedAt:r().datetime(),identity:kj,country:r(),language:r(),location:mn.nullable(),engines:y(Sj).min(1),competitors:y(jj).optional(),queries:y(yP)}).strict().superRefine(Nj);const bP=j(["auto","simple","advanced"]),vP=j(["simple","advanced"]),Cj=j(["branded","non-brand","unknown","all"]),xP=j(["branded","non-brand","unknown"]),jg=j(["project","group","market","property"]),_j=Be("kind",[d({kind:R("all")}).strict(),d({kind:R("none")}).strict(),d({kind:R("exact"),value:r().trim().min(1)}).strict()]);function wP(e){if(e===void 0||e==="")return{kind:"all"};const n=e.normalize("NFKC").trim();return n===""?{kind:"all"}:n.toLocaleLowerCase("en")==="none"?{kind:"none"}:{kind:"exact",value:n}}const St=r().trim().min(1),Ui=r().datetime(),kP={mode:bP.default("auto"),queryClass:Cj.default("non-brand"),scope:jg.default("project"),scopeKey:St.optional(),marketKey:St.optional(),provider:St.optional(),model:St.optional(),location:r().trim().min(1).optional(),from:Ui.optional(),to:Ui.optional(),revision:m().int().positive().optional(),runId:St.optional(),queryKey:St.optional(),queryId:St.optional(),search:r().trim().min(1).optional(),cursor:St.optional(),limit:m().int().min(1).max(100).default(50)},Kd=d(kP).strict().superRefine((e,n)=>{e.scope!=="project"&&e.scopeKey===void 0&&n.addIssue({code:ye.custom,path:["scopeKey"],message:`scopeKey is required for ${e.scope} scope`}),e.scope==="project"&&e.scopeKey!==void 0&&n.addIssue({code:ye.custom,path:["scopeKey"],message:"scopeKey is not valid for project scope"}),e.scope==="market"&&e.marketKey!==void 0&&n.addIssue({code:ye.custom,path:["marketKey"],message:"marketKey is not valid for market scope"}),e.from!==void 0&&e.to!==void 0&&e.from>e.to&&n.addIssue({code:ye.custom,path:["to"],message:"to must be on or after from"}),e.queryKey!==void 0&&e.queryId!==void 0&&n.addIssue({code:ye.custom,path:["queryId"],message:"queryKey and queryId cannot both be supplied"})});Kd.transform(e=>({...e,location:wP(e.location)}));const Ea=d({numerator:m().int().nonnegative().nullable(),denominator:m().int().nonnegative().nullable(),rate:we(m().min(0).max(1)).nullable(),reason:j(["no-population","incomplete","evidence-incomplete","identity-ambiguous","not-applicable"]).optional(),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{if(e.numerator===null||e.denominator===null||e.rate===null){(e.numerator!==null||e.denominator!==null||e.rate!==null||e.reason===void 0)&&n.addIssue({code:ye.custom,message:"Unavailable rates require null values and a reason"}),e.unattributed!==void 0&&n.addIssue({code:ye.custom,path:["unattributed"],message:"Only an available rate can leave answers out"}),e.unchecked!==void 0&&n.addIssue({code:ye.custom,path:["unchecked"],message:"Only an available rate can leave answers out"});return}e.reason!==void 0&&n.addIssue({code:ye.custom,message:"Available rates cannot carry a reason"}),e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:ye.custom,path:["unchecked"],message:"A rate reads one signal: unattributed (mention) and unchecked (citation) cannot share it"});const{numerator:o,denominator:u}=e;u===null||o===null||(u===0&&n.addIssue({code:ye.custom,path:["denominator"],message:"Available rates require a positive denominator"}),o>u&&n.addIssue({code:ye.custom,path:["numerator"],message:"Numerator cannot exceed denominator"}))}),Tj=Be("kind",[d({kind:R("frozen-simple"),definitionRevision:ue()}).strict(),d({kind:R("legacy-simple"),definitionRevision:ue()}).strict(),d({kind:R("frozen-advanced"),definitionRevision:m().int().positive()}).strict(),d({kind:R("unsupported-advanced-v1"),definitionRevision:m().int().positive()}).strict()]),Hd=d({id:St,label:r().trim().min(1),kind:jg,targetCount:m().int().nonnegative(),parentGroupIds:y(St).optional(),marketKeys:y(St).optional()}).strict(),SP=d({provider:St,model:St}).strict(),jP=d({providers:y(St),models:y(SP),locations:y(_j)}).strict(),AP=d({queryCount:m().int().nonnegative(),answerCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea,propertyReach:Ea,outcomes:d({bothSignals:m().int().nonnegative(),mentionedOnly:m().int().nonnegative(),citedOnly:m().int().nonnegative(),neither:m().int().nonnegative(),notMeasured:m().int().nonnegative(),total:m().int().nonnegative()}).strict().superRefine((e,n)=>{e.bothSignals+e.mentionedOnly+e.citedOnly+e.neither+e.notMeasured!==e.total&&n.addIssue({code:ye.custom,message:"Outcome partition must sum to total"})})}).strict(),NP=d({runId:St,createdAt:Ui,revision:m().int().positive().nullable(),provenance:Tj,queryCount:m().int().nonnegative(),answerCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea,continuity:d({state:j(["first","comparable","definition-changed","model-changed","legacy-unknown"]),comparedRunId:r().nullable()}).strict()}).strict(),CP=d({sourceSnapshotIds:y(St).default([]),queryKey:St,queryId:r().nullable(),query:r(),provider:St,model:r().nullable(),location:r().nullable(),targetKeys:y(St),marketKeys:y(St).optional(),answerCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea}).strict(),_P=d({answerId:St,runId:St,queryKey:St,query:r(),provider:St,model:r().nullable(),location:r().nullable(),targetKeys:y(St),mentioned:E().nullable(),mentionUnavailableReason:R("identity-ambiguous").optional(),cited:E().nullable(),answerText:r().nullable(),createdAt:Ui,sources:y(r()),observedCompetitors:y(St)}).strict(),TP=d({domain:St,answerCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea}).strict(),EP=d({name:St,answerCount:m().int().nonnegative()}).strict(),RP=Be("state",[d({state:R("available")}).strict(),d({state:R("unavailable"),reason:R("frozen-competitor-identity-missing")}).strict()]),fw=d({id:St,label:r().trim().min(1),queryCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea}).strict();function gw(e){return d({items:y(e),nextCursor:r().nullable(),total:m().int().nonnegative()}).strict()}const Ej=j(["current-unavailable","previous-unavailable","not-applicable"]),Xee=Ej.enum,gf=Be("state",[d({state:R("available"),previous:Ea,delta:we(m().min(-1).max(1))}).strict(),d({state:R("unavailable"),reason:Ej}).strict()]),yw=d({id:St,createdAt:Ui,completedAt:Ui.nullable()}).strict(),Rj=j(["no-selected-run","no-previous-run","scoped-run","partial-run","definition-changed","model-changed","legacy-unknown"]),Jee=Rj.enum,DP=Be("state",[d({state:R("available"),previousRun:yw,mentionCoverage:gf,citationCoverage:gf,propertyReach:gf}).strict(),d({state:R("unavailable"),reason:Rj,previousRun:yw.nullable()}).strict()]),zP=d({queryClass:xP,summary:AP,trend:y(NP),comparison:DP.optional(),queries:gw(CP),evidence:gw(_P),competitorAvailability:RP,competitors:y(TP),observedCompetitors:y(EP),breakdown:d({properties:y(fw),groups:y(fw)}).strict()}).strict(),IP=j(["measured","not-measured","partial"]),OP=d({state:IP,activeRevision:m().int().positive().nullable(),measuredRevision:m().int().positive().nullable(),awaitingSweep:E(),pendingAssignmentCount:m().int().nonnegative(),completedAt:Ui.nullable()}).strict(),PP=d({mode:vP,queryClass:Cj,scope:Hd,market:Hd.optional(),provider:r().nullable(),model:r().nullable(),location:_j,time:d({from:Ui.nullable(),to:Ui.nullable()}).strict(),revision:m().int().positive().nullable(),run:d({id:r().nullable(),explicit:E()}).strict(),provenance:Tj,measurement:OP,availability:Be("state",[d({state:R("available")}).strict(),d({state:R("unsupported"),reason:R("advanced-v1")}).strict()])}).strict();d({selection:PP,scopeOptions:y(Hd),filterOptions:jP,populations:y(zP).min(1)}).strict().superRefine((e,n)=>{const i=e.selection.queryClass==="all"?["branded","non-brand","unknown"]:[e.selection.queryClass],o=e.populations.map(u=>u.queryClass);(o.length!==i.length||o.some((u,h)=>u!==i[h]))&&n.addIssue({code:ye.custom,path:["populations"],message:"Populations must exactly match the selected query class order"});for(const[u,h]of e.populations.entries()){const f=h.comparison;if(f?.state==="available")for(const b of["mentionCoverage","citationCoverage","propertyReach"]){const v=f[b];if(v.state!=="available")continue;const x=["populations",u,"comparison",b],k=h.summary[b].rate,S=v.previous.rate;k===null&&n.addIssue({code:ye.custom,path:x,message:"Available changes require a current rate"}),S===null&&n.addIssue({code:ye.custom,path:[...x,"previous","rate"],message:"Available changes require a previous rate"}),k!==null&&S!==null&&Math.abs(v.delta-(k-S))>Number.EPSILON&&n.addIssue({code:ye.custom,path:[...x,"delta"],message:"Delta must equal current minus previous"}),e.selection.run.id===null&&n.addIssue({code:ye.custom,path:x,message:"Available changes require a selected run"})}}});const Dj=j(["retired-scope","retired-market"]),qP=Dj.enum,MP=d({reason:Dj,kind:jg.exclude(["project"]),key:St}).strict().superRefine((e,n)=>{e.reason===qP["retired-market"]&&e.kind!=="market"&&n.addIssue({code:ye.custom,path:["kind"],message:"retired-market details must name a market"})});function Wee(e){const n=MP.safeParse(e);return n.success?n.data:void 0}function BP(e,n){let i=e;for(const[o,u]of Object.entries(n))i=i.split(`{${o}}`).join(u);return i.trim()}const Ag=r().regex(/^[a-f0-9]{64}$/),ca=r().trim().min(1).max(256),Ka=r().trim().min(1).max(4e3),Ng=r().datetime(),Nm=r().regex(/^qtw_[a-f0-9]{64}$/),zj=r().regex(/^qtp_[a-f0-9]{64}$/),Cg=j(["simple","advanced"]),Ij=d({templateId:ca,templateVersion:r().trim().min(1).max(256),template:Ka,bindings:He(r().trim().min(1).max(128),r().trim().min(1).max(128)),output:Ka}).strict(),LP=d({source:j(["manual","query-set","template","research","discovery"]),sourceId:ca.nullable(),capturedAt:r().datetime(),template:Ij.optional()}).strict().superRefine((e,n)=>{e.source==="template"&&e.template===void 0&&n.addIssue({code:ye.custom,path:["template"],message:"Template provenance is required for a template query."}),e.source!=="template"&&e.template!==void 0&&n.addIssue({code:ye.custom,path:["template"],message:"Only a template query may carry template provenance."})}),UP=Be("source",[d({source:R("manual"),text:Ka}).strict(),d({source:R("template"),templateId:ca,templateVersion:r().trim().min(1).max(256),template:Ka}).strict(),d({source:R("research"),researchRunQueryId:ca}).strict(),d({source:R("discovery"),discoveryProbeId:ca}).strict()]),_g=d({targetKeys:y(he).optional(),groupKeys:y(he).optional(),marketKeys:y(he).optional()}).strict(),VP=d({providers:y(jt).min(1),models:He(jt,r().trim().min(1)),location:r().trim().min(1).nullable()}).strict(),$P=d({input:UP,audience:_g.optional(),contexts:y(VP).min(1).optional(),queryClass:Vr.optional()}).strict(),GP=d({queryId:ca.optional(),queryText:Ka.optional(),audience:_g.optional()}).strict().superRefine((e,n)=>{e.queryId===void 0==(e.queryText===void 0)&&n.addIssue({code:ye.custom,message:"Provide exactly one of queryId or queryText."})}),KP=d({queryId:ca,audience:_g.optional(),text:Ka.optional(),queryClass:Qe([Vr,ue()]).optional()}).strict().superRefine((e,n)=>{e.text===void 0&&e.queryClass===void 0&&n.addIssue({code:ye.custom,message:"Provide query text or a classification change."})}),HP=d({additions:y($P),removals:y(GP),edits:y(KP).optional()}).strict(),FP=HP.extend({expectedWorkspaceVersion:Nm}).strict();FP.extend({previewToken:zj,reviewedAt:Ng}).strict();const QP=d({stableKey:he,label:r().trim().min(1)}).strict(),ZP=d({stableKey:he,parentGroupKey:he.optional(),label:r().trim().min(1),targetKeys:y(he)}).strict(),YP=d({stableKey:he,groupKey:he.optional(),label:r().trim().min(1),usageEdges:y(mg)}).strict(),XP=d({targetKey:he,groupKeys:y(he),marketKeys:y(he),queryClass:Vr.nullable(),classificationSource:j(["frozen","server","operator"]),contexts:y(vm).min(1)}).strict(),Oj=d({queryId:ca,queryText:Ka,normalizedText:Ka,provenance:LP.nullable(),state:j(["tracked","awaiting-sweep"]),lastMeasuredAt:r().datetime().nullable(),assignments:y(XP)}).strict(),JP=d({researchRunId:ca,researchRunQueryId:ca,queryText:Ka,createdAt:r().datetime()}).strict(),WP=d({discoverySessionId:ca,discoveryProbeId:ca,queryText:Ka,createdAt:r().datetime()}).strict();d({mode:Cg,workspaceVersion:Nm,active:d({revision:m().int().positive(),compiledChecksum:Ag}).strict().nullable(),defaultContexts:y(vm),targets:y(QP),groups:y(ZP),markets:y(YP),scopeOptions:y(Hd).optional(),tracked:y(Oj),savedSources:d({research:y(JP),discovery:y(WP)}).strict()}).strict();const fd=d({queryId:ca,queryText:Ka,assignmentCount:m().int().nonnegative()}).strict(),Pj=d({added:y(fd),removed:y(fd),reused:y(fd),unchanged:y(fd),noOp:E()}).strict(),qj=d({existingNodes:m().int().nonnegative(),existingProviderCalls:m().int().nonnegative(),nextSweepNodes:m().int().nonnegative(),nextSweepProviderCalls:m().int().nonnegative(),addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),removedNodes:m().int().nonnegative(),removedProviderCalls:m().int().nonnegative()}).strict();d({mode:Cg,workspaceVersion:Nm,previewToken:zj,reviewedAt:Ng,active:d({revision:m().int().positive(),compiledChecksum:Ag}).strict().nullable(),tracked:y(Oj),diff:Pj,workload:qj}).strict();d({committed:E(),mode:Cg,workspaceVersion:Nm,reviewedAt:Ng,active:d({revision:m().int().positive(),compiledChecksum:Ag}).strict().nullable(),diff:Pj,workload:qj}).strict();j(["proposed","alias","shared","unmatched","excluded"]);j(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const eq=j(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),tq=d({kind:j(["exact","prefix","suffix","contains"]),value:r().trim().min(1)}).strict(),bw=d({host:r().trim().min(1),pathTemplate:r().trim().min(1)}).strict(),Tg=d({primary:bw,aliases:y(bw).optional(),excludedSlugSuffixes:y(r().trim().min(1)).optional(),excludedSlugPatterns:y(tq).optional()}).strict();d({sitemapUrl:r().url().refine(e=>{try{const n=new URL(e).protocol;return n==="http:"||n==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:Tg,maxUrls:m().int().positive().max(1e4).optional()}).strict();const yf=d({url:r(),canonicalUrl:r().nullable(),classification:j(["shared","unmatched","excluded"]),reason:j(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,n)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||n.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),nq=d({classification:R("proposed"),reason:R("primary-match"),stableKey:gn,slug:r().trim().min(1),label:r().trim().min(1),primaryUrl:r().url(),aliasCoverageUrls:y(r().url())}).strict(),aq=d({classification:R("alias"),reason:R("exact-slug-match"),slug:r().trim().min(1),url:r().url(),targetStableKey:gn}).strict(),iq=d({kind:eq,url:r(),canonicalUrl:r().nullable(),duplicateOf:r().optional()}).strict();d({proposed:y(nq),aliases:y(aq),shared:y(yf),unmatched:y(yf),excluded:y(yf),diagnostics:y(iq)}).strict().superRefine((e,n)=>{const i=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[o,u]of i)for(const h of e[o])u.includes(h.classification)||n.addIssue({code:"custom",path:[o],message:"Discovery item is in the wrong result bucket"})});const Eg=j(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),Mj=j(["baseline","target"]),Bj=j(["incomplete","evidence-incomplete","identity-ambiguous","no-population","aliasless","no-competitors","no-project-aliases"]),jo=Qe([d({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:we(m().min(0).max(1)),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict(),d({numerator:ue(),denominator:ue(),rate:ue(),reason:Bj}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"}),e.numerator!==null&&e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:"custom",path:["unchecked"],message:"A rate reads one signal: unattributed (mention) and unchecked (citation) cannot share it"})}),sq=r().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),oq=d({executionId:r().trim().min(1),queryText:r().trim().min(1),provider:sq,context:mn.nullable(),requestedModel:r().trim().min(1).optional()}).strict();d({schemaVersion:R(1),expectedSlots:y(oq)}).strict().superRefine((e,n)=>{const i=new Set;for(const[o,u]of e.expectedSlots.entries()){const h=[u.executionId,u.provider].join("\0");i.has(h)&&n.addIssue({code:"custom",path:["expectedSlots",o],message:"Duplicate expected provider slot"}),i.add(h)}});const Cm=d({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:E(),sourceComplete:E(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:E()}).strict(),vw=Qe([d({domain:r().trim().min(1),own:E(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),d({domain:r().trim().min(1),own:E(),presentIn:ue(),of:ue(),reason:Bj}).strict()]),rq=d({domains:y(vw),providers:y(d({provider:jt,domains:y(vw)}).strict())}).strict(),lq=d({provider:jt,completeness:Cm,answerCoverage:jo}).strict(),cq=d({id:r().trim().min(1),label:r().trim().min(1),targetIds:y(r().trim().min(1)),completeness:Cm,answerCoverage:jo,targetCoverage:jo,sov:rq,providers:y(lq)}).strict(),uq=d({provider:jt,completeness:Cm,citationCoverage:jo,mentionCoverage:jo}).strict(),dq=d({id:r().trim().min(1),label:r().trim().min(1),completeness:Cm,citationCoverage:jo,mentionCoverage:jo,providers:y(uq)}).strict(),Lj=d({observationId:r().trim().min(1),expectedSlotId:r().trim().min(1),executionId:r().trim().min(1),usageEdgeId:r().trim().min(1),usageEdgeType:Mj,provider:jt,queryText:r().trim().min(1),location:r().nullable(),sourceUrl:r(),bridged:E(),historical:E(),evidenceComplete:E(),classification:Eg,normalizedUrl:r().nullable(),matchedTargetIds:y(r().trim().min(1)),matchedUrlIds:y(r().trim().min(1))}).strict(),mq=d({sourceUrl:r(),normalizedUrl:r().nullable(),classification:Eg,matchedTargetIds:y(r().trim().min(1)),matchedUrlIds:y(r().trim().min(1))}).strict(),pq=d({observationId:r().trim().min(1),expectedSlotId:r().trim().min(1),executionId:r().trim().min(1),usageEdgeId:r().trim().min(1),usageEdgeType:Mj,provider:jt,queryText:r().trim().min(1),location:r().nullable(),queryClass:Qe([j(["branded","non-brand"]),ue()]),mentioned:E().nullable(),cited:E().nullable(),sources:y(mq),sourceCount:m().int().nonnegative(),sourcesTruncated:E(),bridged:E(),historical:E(),evidenceComplete:E()}).strict(),hq=d({bridgedObservationIds:y(r()),historicalObservationIds:y(r()),evidenceIncompleteObservationIds:y(r()),ambiguousObservationIds:y(r()),unmatchedObservationIds:y(r())}).strict(),fq=d({id:r().trim().min(1),status:j(["completed","partial"]),createdAt:r().datetime(),startedAt:r().datetime().nullable(),finishedAt:r().datetime().nullable()}).strict();d({revision:m().int().positive(),run:fq.nullable(),groups:y(cq),targets:y(dq),evidence:y(Lj),diagnostics:hq}).strict();d({property:d({targetKey:he,label:r().min(1)}).strict(),queryClass:pa,measurement:d({state:fg,displayedRunId:r().min(1).optional(),completedAt:r().datetime().optional()}).strict(),evidence:zr(Lj).optional(),answers:zr(pq).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const Rg=j(["queued","running","completed","partial","failed"]);Rg.enum;const Uj=j(["not_answer_visibility","not_plan_run","scoped_or_probe","status_not_partial","plan_revision_changed","manifest_unreadable","model_not_frozen","model_retired","provider_not_in_plan","provider_nothing_missing","provider_not_configured","too_old","superseded","quota_insufficient"]);Uj.enum;d({providers:y(jt).min(1).optional(),dryRun:E().optional()}).strict();const Vj=d({id:r(),runId:r(),projectId:r(),status:Rg,providers:y(r()),expected:m().int().nonnegative(),filled:m().int().nonnegative(),error:r().nullable(),createdAt:r(),startedAt:r().nullable(),finishedAt:r().nullable()}),gq=d({runId:r(),status:ha,planned:E(),readable:E(),expected:m().int().nonnegative(),executed:m().int().nonnegative(),missing:m().int().nonnegative(),missingByProvider:He(r(),m().int().nonnegative()),fillable:E(),refusal:d({code:Uj,message:r()}).nullable(),latestFill:Vj.nullable()}),yq=j(["queued","already-complete","dry-run"]);d({outcome:yq,completeness:gq,fill:Vj.nullable()});const da=r().trim().min(1),Os=r().trim().min(1),bq=r().trim().min(1),ke=m().int().nonnegative(),Gc=d({state:fg,displayedRunId:da.nullable(),planRevision:m().int().positive(),completedAt:r().datetime().nullable()}).strict(),Eo=d({targetKey:he,label:Os}).strict(),ua={runId:da.optional(),provider:jt.optional(),location:bq.optional()},Ao=r().trim().min(1),bf=5,vq=10,xq=5,wq=10,kq="tied Properties have both zero mentions and zero citations; ordered by name, not ranked",Dg=j(["weakest-properties","strongest-mentions","weakest-mentions","excluded-mentions","markets","observed-names","cited-domains"]);Dg.enum;d({runId:ua.runId,groupKey:he.optional(),queryClass:pa.default("non-brand"),provider:ua.provider,location:ua.location,limit:m().int().positive().max(50).optional(),includeNestedMarkets:E().optional(),compact:E().optional(),list:Dg.optional(),cursor:da.optional(),answers:j(["all","not-mentioned"]).optional()}).strict();const xw=i0,$j={metro:xw.nullable(),otherMetros:y(xw).min(1).optional(),submarkets:y(Os),queries:ke},Gj=d({name:Ao,answers:ke}).strict(),Sq=d({name:Ao,occurrences:ke}).strict(),_m=d({domain:r().trim().min(1),answers:ke}).strict(),jq=Eo.extend({...$j,mentionCoverage:dn,citationCoverage:dn,flags:ke,namedInsteadInAnswerText:y(Gj).max(bf).optional(),namedInsteadInAnswerTextTotal:ke.optional(),citedDomains:y(_m).max(bf).optional(),citedDomainsTotal:ke.optional(),recommendedInstead:y(Sq).max(bf).optional().meta({deprecated:!0,description:"Deprecated: read namedInsteadInAnswerText, which carries the same names in the same order. occurrences counts answers, exactly as answers does there."}),recommendedInsteadTotal:ke.optional().meta({deprecated:!0,description:"Deprecated: read namedInsteadInAnswerTextTotal, which it always equals."}),recommendedInsteadTruncated:E().optional().meta({deprecated:!0,description:"Deprecated: true when namedInsteadInAnswerTextTotal exceeds the names returned in namedInsteadInAnswerText."})}).strict().superRefine((e,n)=>{e.namedInsteadInAnswerText!==void 0&&(e.namedInsteadInAnswerTextTotal===void 0||e.namedInsteadInAnswerText.length>e.namedInsteadInAnswerTextTotal)&&n.addIssue({code:ye.custom,path:["namedInsteadInAnswerTextTotal"],message:"Total cannot be smaller than the returned names"}),e.citedDomains!==void 0&&(e.citedDomainsTotal===void 0||e.citedDomains.length>e.citedDomainsTotal)&&n.addIssue({code:ye.custom,path:["citedDomainsTotal"],message:"Total cannot be smaller than the returned domains"}),e.recommendedInsteadTotal!==e.namedInsteadInAnswerTextTotal&&n.addIssue({code:ye.custom,path:["recommendedInsteadTotal"],message:"The deprecated total must equal namedInsteadInAnswerTextTotal"}),e.recommendedInstead!==void 0&&(e.recommendedInsteadTotal===void 0||e.recommendedInstead.length>e.recommendedInsteadTotal)&&n.addIssue({code:ye.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInstead!==void 0&&e.recommendedInsteadTotal!==void 0&&e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&n.addIssue({code:ye.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),Aq=d({metro:Os.nullable(),count:m().int().positive()}).strict(),Nq=d({count:m().int().min(2),mentionRate:we(),citationRate:we(),note:j([kq,"tied Properties are ordered by name, not ranked"]),byMetro:y(Aq).optional(),namedInstead:y(Gj).max(wq).optional(),namedInsteadTotal:ke.optional()}).strict().superRefine((e,n)=>{e.namedInstead!==void 0&&(e.namedInsteadTotal===void 0||e.namedInstead.length>e.namedInsteadTotal)&&n.addIssue({code:ye.custom,path:["namedInsteadTotal"],message:"Total cannot be smaller than the returned names"})}),Cq=d({basis:R("initial-weakest-selection-and-zero-signal-tie").optional(),properties:ke,answers:ke,domains:y(_m).max(vq),domainTotal:ke,ownDomainAnswers:ke.optional()}).strict().superRefine((e,n)=>{e.ownDomainAnswers!==void 0&&e.ownDomainAnswers>e.answers&&n.addIssue({code:ye.custom,path:["ownDomainAnswers"],message:"Own-domain answers cannot exceed the basis"}),e.domains.length>e.domainTotal&&n.addIssue({code:ye.custom,path:["domainTotal"],message:"Total cannot be smaller than the returned domains"}),e.domains.some(i=>i.answers>e.answers)&&n.addIssue({code:ye.custom,path:["domains"],message:"A domain cannot be cited by more answers than the basis holds"})}),_q=d({groupKey:he,label:Os,parentGroupKey:he.nullable(),childMarketCount:ke,propertyCount:ke,propertiesMentioned:ko,propertiesNeverMentioned:ko.optional(),mentionCoverage:dn,citationCoverage:dn}).strict(),Tq=d({population:R("top-level-markets"),queryClass:pa,totalMarkets:ke,eligibleMarketCount:ke,excludedMarketCount:ke,items:y(d({groupKey:he,label:Os,propertyCount:ke,mentionCoverage:dn.options[0],citationCoverage:dn.options[0]}).strict()).max(xq)}).strict(),ww=Eo.extend({...$j,mentionCoverage:dn.options[0],citationCoverage:dn}).strict(),Eq=d({eligiblePropertyCount:ke,strongest:y(ww).max(50),weakest:y(ww).max(50),excluded:y(Eo.extend({reason:Lc}).strict()),truncated:E(),excludedTotal:ke.optional()}).strict();d({portfolio:d({groupKey:he.nullable(),label:Os.nullable(),measurementScope:Qe([j(["full","spot_check"]),ue()])}).strict(),measurement:Gc,queryClass:pa,engines:y(jt),metrics:d({propertiesMentioned:ko,propertiesNeverMentioned:ko.optional(),mentionCoverage:dn,citationCoverage:dn}).strict(),weakestMarkets:Tq.optional().describe("Compact unscoped ranking from actual full top-level metro aggregates before pagination. Each rate uses the complete selected run/filter/class market population; tiedAtWeakest.byMetro counts only zero-signal Properties and never supplies these rates."),weakestProperties:y(jq),tiedAtWeakest:Nq.nullable(),weakestAnswerSources:Cq.nullable().optional(),mentionRanking:Eq,markets:y(_q),totalMarkets:ke,marketsTruncated:E(),totalProperties:ke,truncated:E(),pageList:Dg.optional(),nextCursor:da.nullable().optional(),detailsOmitted:y(r()).optional(),answerEvidence:d({answers:R("not-mentioned"),populationSize:ke,answerCount:ke,unknownMentionAnswers:ke,observedNames:y(d({name:Ao,answerCount:ke}).strict()),observedNamesTotal:ke,citedDomains:y(_m),citedDomainsTotal:ke}).strict().optional()}).strict().superRefine((e,n)=>{const i=e.detailsOmitted?.includes("weakestProperties.answerEvidence")??!1,o=["namedInsteadInAnswerText","namedInsteadInAnswerTextTotal","citedDomains","citedDomainsTotal","recommendedInstead","recommendedInsteadTotal","recommendedInsteadTruncated"];i||e.weakestProperties.forEach((u,h)=>{for(const f of o)u[f]===void 0&&n.addIssue({code:ye.custom,path:["weakestProperties",h,f],message:"Detailed evidence is required unless explicitly omitted by the compact projection"})}),e.weakestAnswerSources===void 0&&!e.detailsOmitted?.includes("weakestAnswerSources")&&n.addIssue({code:ye.custom,path:["weakestAnswerSources"],message:"Source evidence is required unless explicitly omitted by the compact projection"}),e.marketsTruncated!==e.markets.length<e.totalMarkets&&n.addIssue({code:ye.custom,path:["marketsTruncated"],message:"Market truncation must agree with the market total"})});d({targetKey:he,runId:ua.runId,provider:ua.provider,location:ua.location,queryClass:pa.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();j(["answered","missing"]);const r0={queryId:da,text:Os,class:dg,provider:jt,requestedModel:r().nullable(),servedModel:r().nullable(),location:r().nullable()},Rq=Be("status",[d({resultId:da,...r0,status:R("answered"),mentioned:E().nullable(),cited:E().nullable(),recommendedInstead:y(Ao),answerExcerpt:r().nullable()}).strict(),d({resultId:ue(),...r0,status:R("missing"),mentioned:ue(),cited:ue(),recommendedInstead:y(Ao).length(0),answerExcerpt:ue()}).strict()]);d({property:Eo,measurement:Gc,queryClass:pa,questions:y(Rq),total:ke,truncated:E()}).strict();d({targetKey:he,resultId:da}).strict();const Dq=d({url:da,classification:Eg,matchedTargetKeys:y(he),assigned:E(),historical:E(),evidenceComplete:E()}).strict().superRefine((e,n)=>{e.assigned!==(e.classification==="assigned")&&n.addIssue({code:ye.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});d({property:Eo,measurement:Gc,question:d({resultId:da,...r0,status:R("answered")}).strict(),mentioned:E().nullable(),cited:E().nullable(),recommendedInstead:y(Ao),answer:r().nullable(),sources:y(Dq),captureStatus:Qe([ym,ue()]),retrievalStatus:Qe([Z0,ue()]),retrievalContract:Qe([Y0,ue()])}).strict();d({targetKey:he,runId:ua.runId,provider:ua.provider,location:ua.location,queryClass:pa.optional(),limit:m().int().positive().max(50).optional()}).strict();const zq=Be("state",[d({state:R("available"),answeredResults:ke,targetMissResults:ke,recommendationOccurrences:ke}).strict(),d({state:R("unavailable"),reason:Lc}).strict()]),Iq=d({name:Ao,occurrences:ke,providers:y(jt).max(5),providerTotal:ke,providersTruncated:E(),questions:y(Os).max(5),questionTotal:ke,questionsTruncated:E()}).strict().superRefine((e,n)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&n.addIssue({code:ye.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&n.addIssue({code:ye.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&n.addIssue({code:ye.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})}),Oq=10;d({property:Eo,measurement:Gc,queryClass:pa,basis:zq,competitors:y(Iq),total:ke,truncated:E(),citedDomains:y(_m).max(Oq).optional(),citedDomainsTotal:ke.optional(),citedDomainsAnswers:ke.optional()}).strict().superRefine((e,n)=>{const{citedDomains:i,citedDomainsTotal:o,citedDomainsAnswers:u}=e;if(i!==void 0){if(o===void 0||u===void 0){n.addIssue({code:ye.custom,path:["citedDomains"],message:"Cited domains require their total and answer basis"});return}i.length>o&&n.addIssue({code:ye.custom,path:["citedDomainsTotal"],message:"Total cannot be smaller than the returned domains"}),i.some(h=>h.answers>u)&&n.addIssue({code:ye.custom,path:["citedDomains"],message:"A domain cannot be cited by more answers than the basis holds"})}});const Kj=j(["magnitude","label"]),Pq=2;d({runId:ua.runId,scope:hg.default("all"),groupKey:he.optional(),targetKey:he.optional(),queryClass:pa.default("all"),provider:ua.provider,location:ua.location,limit:m().int().positive().max(50).optional(),sort:Kj.optional()}).strict().superRefine((e,n)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&n.addIssue({code:ye.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&n.addIssue({code:ye.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&n.addIssue({code:ye.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const Hj=j(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),Fj=Gc.extend({executionIdentity:da.nullable(),measurementScope:Qe([j(["full","spot_check"]),ue()])}).strict();function Qj(e,n){if(e.previous.state!=="available"||e.current.state!=="available"){n.addIssue({code:ye.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&n.addIssue({code:ye.custom,path:["delta"],message:"Delta must equal current minus previous"})}const Zj=d({state:R("unavailable"),reason:Lc}).strict(),Fd=Be("state",[d({state:R("available"),previous:dn,current:dn,delta:we()}).strict().superRefine(Qj),Zj]),qq=Be("state",[d({state:R("available"),previous:ko,current:ko,delta:m().int()}).strict().superRefine(Qj),Zj]),vf=d({propertiesMentioned:qq,mentionCoverage:Fd,citationCoverage:Fd}).strict(),Mq=d({improved:ke,declined:ke,mixed:ke,withinNoise:ke,unchanged:ke,notComparable:ke,total:ke,noiseAnswers:R(Pq)}).strict().superRefine((e,n)=>{e.improved+e.declined+e.mixed+e.withinNoise+e.unchanged+e.notComparable!==e.total&&n.addIssue({code:ye.custom,path:["total"],message:"Move buckets must sum to total"})}),Bq=Eo.extend({mentionCoverage:Fd,citationCoverage:Fd,flags:ke,mentionAnswersDelta:m().int().nullable().optional(),citationAnswersDelta:m().int().nullable().optional(),denominatorChanged:E().optional(),withinNoise:E().optional(),mentionWithinNoise:E().nullable().optional(),citationWithinNoise:E().nullable().optional()}).strict();d({current:Fj,queryClass:pa.optional(),comparison:Be("state",[d({state:R("available"),previous:d({displayedRunId:da,planRevision:m().int().positive(),completedAt:r().datetime().nullable(),executionIdentity:da,measurementScope:j(["full","spot_check"])}).strict(),metrics:vf,metricsByClass:d({branded:vf,nonBrand:vf}).strict().optional(),sort:Kj.optional(),distribution:Mq.optional(),changedProperties:y(Bq),totalProperties:ke,truncated:E()}).strict(),d({state:R("unavailable"),reason:Hj}).strict()])}).strict().superRefine((e,n)=>{if(e.comparison.state!=="available")return;const{distribution:i}=e.comparison;if(i!==void 0&&i.total-i.unchanged!==e.comparison.totalProperties&&n.addIssue({code:ye.custom,path:["comparison","distribution"],message:"Changed Properties must equal the distribution total less unchanged"}),e.current.displayedRunId===null||e.current.executionIdentity===null){n.addIssue({code:ye.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&n.addIssue({code:ye.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&n.addIssue({code:ye.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})});d({runId:ua.runId}).strict();const Lq=j(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),Kc=d({state:R("unavailable"),reason:Lq}).strict(),Uq=d({state:R("available"),expected:ke,executed:ke,answered:ke,missing:ke}).strict(),Vq=Be("state",[Uq,Kc]).superRefine((e,n)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&n.addIssue({code:ye.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&n.addIssue({code:ye.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),$q=d({state:R("available"),complete:ke,partial:ke,failed:ke,unsupported:ke,notRecorded:ke}).strict(),Gq=Be("state",[$q,Kc]),Kq=d({state:R("available"),used:ke,notUsed:ke,unknown:ke,notApplicable:ke,notRecorded:ke}).strict(),Hq=Be("state",[Kq,Kc]),Fq=d({state:R("available"),expectedQuestions:ke,answeredQuestions:ke,missingQuestions:ke}).strict(),Qq=Be("state",[Fq,Kc]).superRefine((e,n)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&n.addIssue({code:ye.custom,message:"Expected questions must equal answered plus missing"})}),kw=Be("state",[d({state:R("available"),answered:ke,unattributed:ke}).strict(),Kc]).superRefine((e,n)=>{e.state==="available"&&e.unattributed>e.answered&&n.addIssue({code:ye.custom,path:["unattributed"],message:"Unattributed answers cannot exceed answered"})}),Zq=d({status:Rg,providers:y(r()),expected:ke,filled:ke,createdAt:r(),finishedAt:r().nullable()}).strict();d({run:Fj,completeness:Vq,capture:Gq,retrieval:Hq,population:Qq,comparison:Be("state",[d({state:R("available"),previousDisplayedRunId:da}).strict(),d({state:R("unavailable"),reason:Hj}).strict()]),unattributedByClass:d({branded:kw,nonBrand:kw}).strict().optional(),latestFill:Zq.nullable().optional()}).strict().superRefine((e,n)=>{if(e.completeness.state!=="available")return;const i=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==i&&n.addIssue({code:ye.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==i&&n.addIssue({code:ye.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const Ir=r().regex(/^[a-f0-9]{64}$/),Ha=r().trim().min(1).max(256),oi=m().int().positive(),Sw=d({kind:j(["user","api-key","system"]),id:r().trim().min(1),label:r().trim().min(1)}).strict(),Yq=j(["proposed","included","excluded"]),Xq=j(["manual","sitemap"]),zg=d({stableKey:he,label:r().trim().min(1),status:Yq,aliases:y(r().trim().min(1)),identityAliases:y(r().trim().min(1)).optional(),urlMatchers:y(r().trim().min(1)),source:Xq,discoveredUrl:r().trim().min(1).optional(),discoveryIdentity:r().trim().min(1).optional()}).strict(),Tm=d({providers:y(jt).optional(),models:He(jt,r().trim().min(1)).optional(),locations:y(r().trim().min(1)).optional()}).strict(),Jq=j(["branded","non-brand","unclassified"]),Wq=j(["rule","operator"]),Yj=d({targetKey:he,queryId:Ha,contextOverride:Tm.optional(),executionContexts:y(vm.extend({executionNodeKey:r().min(1).optional()})).min(1).optional(),queryProvenance:L2.optional(),queryClass:Jq,classificationSource:Wq}).strict().superRefine((e,n)=>{e.contextOverride!==void 0&&e.executionContexts!==void 0&&n.addIssue({code:"custom",path:["executionContexts"],message:"Use either frozen execution contexts or a context override, not both."})}),Em=B2,Xj=d({stableKey:he,label:r().trim().min(1),parentGroupKey:he.optional(),targetKeys:y(he),competitors:y(Em)}).strict(),eM=d({sitemapUrl:r().url(),rule:Tg,exclusions:y(r().trim().min(1)),inputChecksum:Ir,reviewedAt:r().datetime().optional()}).strict(),tM=d({providers:y(jt),models:He(jt,r().trim().min(1)).optional(),locations:y(r().trim().min(1))}).strict(),Jj=U2,nM=d({defaultContext:tM,targets:y(zg),assignments:y(Yj),groups:y(Xj),reportingScopes:y(Jj).optional(),discovery:eM.optional()}).strict(),aM=d({id:r().trim().min(1),projectId:r().trim().min(1),schemaVersion:R(2),baseActiveVersionId:r().trim().min(1).nullable(),baseActiveRevision:oi.nullable(),authoring:nM,createdBy:Sw,updatedBy:Sw,createdAt:r().datetime(),updatedAt:r().datetime()}).strict(),Ig=d({targets:m().int().nonnegative(),includedTargets:m().int().nonnegative(),assignments:m().int().nonnegative(),unclassifiedAssignments:m().int().nonnegative(),groups:m().int().nonnegative(),competitors:m().int().nonnegative()}).strict(),iM=d({code:r().trim().min(1),message:r().trim().min(1),path:y(Qe([r(),m().int()]))}).strict(),Wj=d({etag:r().trim().min(1),changed:E(),warnings:y(iM),counts:Ig}).strict();d({draft:aM.nullable(),etag:r().trim().min(1).nullable()}).strict();zr(zg);zr(Yj);zr(Xj);d({search:r().optional(),cursor:r().trim().min(1).optional(),limit:m().int().positive().max(pg).optional()}).strict();d({expectedActiveRevision:oi.nullable()}).strict();d({sitemapUrl:r().url(),rule:Tg,exclusions:y(r().trim().min(1)).optional()}).strict();const sM=d({discoveryIdentity:r().trim().min(1),action:j(["create","rebind","ignore"]),targetKey:he.optional(),label:r().trim().min(1).optional()}).strict();d({selections:y(sM),selectedTargetKeys:y(he).optional()}).strict().superRefine((e,n)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&n.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&n.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});d({target:zg}).strict();d({targetKey:he,label:r().trim().min(1)}).strict();d({targetKey:he,mergedKeys:y(he).min(1)}).strict();d({targetKey:he,cleanup:R("assignments-and-group-memberships").optional()}).strict();d({targetKey:he,discoveryIdentity:r().trim().min(1),discoveredUrl:r().url()}).strict();const e3={targetKeys:y(he).optional(),groupKeys:y(he).optional()};function t3(e,n){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&n.addIssue({code:"custom",message:"At least one Target or group selector is required."})}d(e3).strict().superRefine(t3);const oM=d({...e3,queryIds:y(Ha).min(1),contextOverride:Tm.optional()}).strict().superRefine(t3);Qe([d({targetKey:he,queryIds:y(Ha).min(1),contextOverride:Tm.optional()}).strict(),oM]);const rM=d({groupKey:he,label:r().trim().min(1),memberCount:m().int().positive()}).strict();d({draftEtag:r().trim().min(1),groups:y(rM),resolvedTargetKeys:y(he),overlapCount:m().int().nonnegative(),assignments:d({requested:m().int().nonnegative(),added:m().int().nonnegative(),alreadyPresent:m().int().nonnegative()}).strict(),execution:d({addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),fullRunNodes:m().int().nonnegative(),fullRunProviderCalls:m().int().nonnegative()}).strict()}).strict();d({pairs:y(d({targetKey:he,queryId:Ha}).strict()).min(1),contextOverride:Tm.optional()}).strict();Qe([d({targetKey:he,queryId:Ha}).strict(),d({targetKeys:y(he).min(1),queryId:Ha}).strict()]);d({targetKey:he}).strict();d({queryClass:dg,assignments:y(d({targetKey:he,queryId:Ha}).strict()).min(1)}).strict();d({group:d({stableKey:he,label:r().trim().min(1),parentGroupKey:he.nullable().optional(),targetKeys:y(he),competitors:y(Em).optional()}).strict()}).strict();d({market:Jj}).strict();d({groupKey:he}).strict();d({groupKey:he,competitor:Em}).strict();d({expectedActiveRevision:oi,groupKey:he,domain:r().trim().min(1).refine(e=>Bc(e)!==null,"A competitor domain must be a valid hostname"),label:r().trim().min(1).optional(),aliases:y(r().trim().min(1)).optional()}).strict();Wj.extend({groupKey:he,competitor:Em,draftCreated:E(),published:d({revision:oi,competitorsChanged:R(!1)}).strict()}).strict();d({groupKey:he,competitorKey:he}).strict();const Qd=d({ruleId:r().trim().min(1),severity:j(["fail","warn"]),message:r().trim().min(1),path:y(Qe([r(),m().int()]))}).strict();Be("ok",[d({ok:R(!0),compiledChecksum:Ir,checks:y(Qd),counts:Ig,plan:xm}).strict(),d({ok:R(!1),compiledChecksum:ue(),checks:y(Qd).min(1)}).strict()]);const jw=d({added:y(r().trim().min(1)),removed:y(r().trim().min(1)),changed:y(r().trim().min(1)),unchanged:y(r().trim().min(1))}).strict(),lM=d({activeRevision:oi.nullable(),targets:jw,groups:jw,assignments:d({added:m().int().nonnegative(),removed:m().int().nonnegative(),reclassified:m().int().nonnegative()}).strict(),execution:d({addedNodeKeys:y(r().trim().min(1)),removedNodeKeys:y(r().trim().min(1))}).strict()}).strict();Be("ok",[d({ok:R(!0),compiledChecksum:Ir,checks:y(Qd),counts:Ig,plan:xm,diff:lM}).strict(),d({ok:R(!1),compiledChecksum:ue(),checks:y(Qd).min(1),diff:ue()}).strict()]);d({expectedActiveRevision:oi.nullable(),expectedCompiledChecksum:Ir}).strict();d({published:E(),active:d({revision:oi,checksum:Ir,compiledChecksum:Ir,createdAt:r().datetime(),plan:xm}).strict()}).strict();d({discarded:E()}).strict();d({expectedActiveRevision:oi}).strict();d({deactivated:E(),previousRevision:oi.nullable()}).strict();const cM=j(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),uM=j(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),dM=j(["simple","draft-only","active-v1","active-v2"]);d({state:cM,nextAction:uM,mode:dM,answerVisibilityProviderReady:E(),activeRevision:oi.nullable(),activeSchemaVersion:Qe([R(1),R(2)]).nullable(),draft:d({etag:r().trim().min(1),updatedAt:r().datetime()}).strict().nullable()}).strict();const n3=d({id:r().trim().min(1),projectId:r().trim().min(1),name:r().trim().min(1),description:r().nullable(),itemCount:m().int().nonnegative(),createdAt:r().datetime(),updatedAt:r().datetime()}).strict(),mM=d({queryId:Ha,queryText:r().min(1),position:m().int().nonnegative()}).strict();n3.extend({items:y(mM)}).strict();d({querySets:y(n3)}).strict();d({name:r().trim().min(1),description:r().nullable().optional(),queryIds:y(Ha)}).strict();const pM=d({id:r().trim().min(1),projectId:r().trim().min(1),name:r().trim().min(1),description:r().nullable(),pattern:r().trim().min(1),variables:y(r().trim().min(1)),createdAt:r().datetime(),updatedAt:r().datetime()}).strict();d({templates:y(pM)}).strict();d({name:r().trim().min(1),description:r().nullable().optional(),pattern:r().trim().min(1),variables:y(r().trim().min(1))}).strict();d({bindings:y(He(r().trim().min(1),r().trim().min(1))).min(1),querySetId:r().trim().min(1).optional()}).strict();d({created:y(d({queryId:Ha,queryText:r().min(1)}).strict()),existing:y(d({queryId:Ha,queryText:r().min(1)}).strict())}).strict();const Zd=r().regex(/^[a-f0-9]{64}$/),Rm=m().int().positive();d({stableKey:he,kind:j(["target","group"]),retiredAt:r().datetime().nullable()}).strict();d({csv:r()}).strict();j(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const hM=j(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),l0=d({dataRow:Rm,property:r(),group:r(),url:r().nullable(),normalizedProperty:r(),normalizedGroupLabel:r()}).strict(),sc=l0.extend({reason:hM}),fM=d({source:j(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:he,kind:j(["target","group"]).optional(),retiredAt:r().datetime().nullable().optional(),normalizedGroupLabel:r().optional()}).strict(),gM=d({proposedGroupKey:he,evidence:y(fM).min(1)}).strict(),yM=Be("status",[l0.extend({status:R("matched"),targetKey:he,groupKey:he}).strict(),sc.extend({status:R("ambiguous"),candidateTargetKeys:y(he).min(1).optional(),candidateGroupKeys:y(he).min(1).optional()}).strict(),sc.extend({status:R("unmatched")}).strict(),sc.extend({status:R("invalid"),groupKeyConflict:gM.optional()}).strict(),l0.extend({status:R("duplicate"),duplicateOfRow:Rm,targetKey:he,groupKey:he}).strict(),sc.extend({status:R("proposed"),targetKey:he}).strict(),sc.extend({status:R("excluded"),targetKey:he}).strict()]),bM=d({normalizedGroupLabel:r(),groupKey:he,label:r().trim().min(1),action:j(["create","extend"]),matchedRows:y(Rm),targetKeys:y(he),addedTargetKeys:y(he),unchangedTargetKeys:y(he)}).strict(),vM=d({dataRows:m().int().nonnegative(),matchedRows:m().int().nonnegative(),ambiguousRows:m().int().nonnegative(),unmatchedRows:m().int().nonnegative(),invalidRows:m().int().nonnegative(),duplicateRows:m().int().nonnegative(),proposedRows:m().int().nonnegative(),excludedRows:m().int().nonnegative(),needsAttention:m().int().nonnegative(),groupsReady:m().int().nonnegative(),groupsToCreate:m().int().nonnegative(),groupsToExtend:m().int().nonnegative(),membershipsReady:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();d({draftEtag:r().trim().min(1),sourceChecksum:Zd,previewChecksum:Zd,rows:y(yM),groupChanges:y(bM),counts:vM}).strict();d({csv:r(),sourceChecksum:Zd,previewChecksum:Zd,acceptedRows:y(Rm).min(1)}).strict().superRefine((e,n)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&n.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});Wj.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();function a3(e,n){return Number((n===$a.percent?e:e*100).toFixed(6))}function i3(e){return Math.round(Number((e*10).toFixed(4)))/10}function Yd(e,n=$a.fraction){if(e==null||!Number.isFinite(e))return"—";const i=a3(e,n);if(i===0)return"0%";const o=i<0?"-":"",u=Math.abs(i);if(u===100)return`${o}100%`;const h=i3(u);return h===0?`${o}<0.1%`:h===100&&u<100?`${o}>99.9%`:`${o}${h.toFixed(1)}%`}function ete(e){return Number.isFinite(e)?Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}K`:e.toLocaleString("en-US"):"—"}const xM=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function bc(e,n=new Date){const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),o=i?xM[Number(i[2])-1]:void 0;if(!i||!o)return e;const u=`${o} ${Number(i[3])}`;return Number(i[1])===n.getFullYear()?u:`${u}, ${i[1]}`}function tte(e,n,i=800){const o=[];if(!/^\d{4}-\d{2}-\d{2}$/.test(e)||!/^\d{4}-\d{2}-\d{2}$/.test(n))return o;for(let u=e;u<=n&&(o.push(u),!(o.length>=i));u=wM(u,1));return o}function wM(e,n){if(!Number.isFinite(n))return e;const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!i?.[1]||!i[2]||!i[3])return e;const o=new Date(Date.UTC(Number(i[1]),Number(i[2])-1,Number(i[3])+Math.trunc(n)));if(Number.isNaN(o.getTime()))return e;const u=o.getUTCFullYear(),h=String(o.getUTCMonth()+1).padStart(2,"0"),f=String(o.getUTCDate()).padStart(2,"0");return`${u}-${h}-${f}`}function nte(e,n=$a.fraction){const i=a3(e,n);if(i===0)return{direction:"none",magnitude:"0"};const o=i3(Math.abs(i));return{direction:i>0?"up":"down",magnitude:o===0?"<0.1":o.toFixed(1)}}function ate(e,n="UTC"){const i=new Date(e);if(!Number.isFinite(i.getTime()))return null;const o={weekday:"short",year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"};try{return i.toLocaleString("en-US",{...o,timeZone:n})}catch{return i.toLocaleString("en-US",{...o,timeZone:"UTC"})}}const s3=j(["introduced","repointed","retired"]),kM=s3.enum;d({modelId:r().trim().min(1),date:r().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:s3,confirmed:E(),sourceUrl:r().url(),note:r().min(1)});const SM=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];kM.repointed;new Set(SM.map(e=>e.modelId.toLowerCase()));const jM=j(["not-exposed","no-known-change","known-change"]);jM.enum;const AM=d({modelId:r().trim().min(1),date:r().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:E(),sourceUrl:r().url()}),NM=d({status:j(["no-known-change","known-change"]),modelIds:y(r().trim().min(1)).min(1),changes:y(AM),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:r().optional(),lastChangeDate:r().optional(),knownGoodAsOf:r(),checkedThroughPeriodEnd:E()}),CM={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function _M(e){const n=e.trim().toLowerCase();return CM[n]??e.charAt(0).toUpperCase()+e.slice(1)}function xf(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function oc(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function wf(e){return[...new Set(e.filter(n=>n!==null))].sort()}function TM(e,n,i){const o=i(e),u=Array.isArray(n.changes)?n.changes:[],h=xf(n.changeCount)||u.length,f=Math.min(h,xf(n.unverifiedChangeCount)||xf(n.unconfirmedChangeCount)||u.filter(S=>S.confirmed===!1).length),b=oc(n.knownGoodAsOf),v=n.checkedThroughPeriodEnd!==!1,x={engine:o,confirmedCount:h-f,unconfirmedCount:f,knownGoodAsOf:b,checkedThroughPeriodEnd:v};if(u.length>0)return{...x,confirmedDates:wf(u.filter(S=>S.confirmed!==!1).map(S=>oc(S.date))),unconfirmedDates:wf(u.filter(S=>S.confirmed===!1).map(S=>oc(S.date)))};const k=wf([oc(n.firstChangeDate),oc(n.lastChangeDate)]);return h===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:k,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:k}:{...x,confirmedDates:[],unconfirmedDates:[]}}function EM(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function Aw(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${bc(e[0])}`:`more than once between ${bc(e[0])} and ${bc(e[e.length-1])}`}function RM(e){const n=Aw(e.confirmedDates,e.confirmedCount),i=Aw(e.unconfirmedDates,e.unconfirmedCount),o=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${o} was updated ${n}, inside this period.`:`${o} was updated inside this period.`;if(e.confirmedCount===0)return i?`${o} may have been updated ${i}, inside this period, though that is not confirmed.`:`${o} may have been updated inside this period, though that is not confirmed.`;if(n&&i)return`${o} was updated ${n}, inside this period, and may also have been updated ${i}.`;const u=e.unconfirmedCount>1?"more times":"once more";return`${o} was updated inside this period, and may have been updated ${u}, though that is not confirmed.`}function Nw(e){const n=e.filter(o=>!o.checkedThroughPeriodEnd&&o.knownGoodAsOf!==null);if(n.length===0)return null;const i=n.map(o=>o.knownGoodAsOf).sort()[0];return`We last checked for model updates on ${bc(i)}, and this period runs past that date, so there may be later updates we do not know about.`}function ite(e,n={}){const i=n.engineName??_M,o=Object.entries(e??{}).map(([k,S])=>TM(k,S??{},i)).sort((k,S)=>k.engine.localeCompare(S.engine));if(o.length===0)return null;const u=o.filter(k=>k.confirmedCount+k.unconfirmedCount>0);if(u.length===0){const k=[...new Set(o.map(q=>q.engine))],S=k.length>1,C=Nw(o),_=[...new Set(o.map(q=>q.knownGoodAsOf).filter(q=>q!==null))].sort(),z=C??(_.length>0?`We last checked for model updates on ${bc(_[0])}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${EM(k)} in this period.`,detail:`${S?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${z?` ${z}`:""}`}}const h=u.reduce((k,S)=>k+S.confirmedCount+S.unconfirmedCount,0),f=u.some(k=>k.confirmedCount>0),b=h===1?"this update":"these updates",v=f?`Some of the movement in these numbers may come from ${b} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${b} rather than from a real change in how AI answers about you, so compare periods carefully.`,x=Nw(o);return{kind:"change",text:`${u.map(RM).join(" ")} ${v}${x?` ${x}`:""}`}}const xo=d({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),DM=j(["gsc","ga4","gbp"]);d({id:r(),domain:r(),connectionType:DM,propertyId:r().nullable().optional(),sitemapUrl:r().nullable().optional(),scopes:y(r()).default([]),createdAt:r(),updatedAt:r()});const zM=d({date:r(),query:r(),page:r(),country:r().nullable().optional(),device:r().nullable().optional(),clicks:m(),impressions:m(),ctr:we(),position:m()});j(["clicks","impressions","date"]);d({rows:y(zM),totalMatching:m(),truncated:E(),latestAvailableDate:r().nullable()});const IM=d({date:r(),clicks:m(),impressions:m(),ctr:we(),position:m().nullable()}),o3=d({startDate:r().nullable(),endDate:r().nullable(),latestDataDate:r().nullable(),daysSinceLatestData:m().nullable()}),OM=d({clicks:xo.nullable(),impressions:xo.nullable(),ctr:xo.nullable(),position:xo.nullable()}),Cw=d({startDate:r(),endDate:r(),clicks:m(),impressions:m(),ctr:we().nullable(),position:m().nullable(),source:j(["property-daily","dimensioned","mixed","empty"])}),PM=d({days:m(),basis:j(["prior-window","split-window"]).optional(),prior:Cw,trailing:Cw,comparable:E(),change:d({clicks:we().nullable(),impressions:we().nullable(),ctr:we().nullable(),position:we().nullable()})});d({totals:d({clicks:m(),impressions:m(),ctr:we(),position:m().nullable(),positionDays:m(),days:m()}),daily:y(IM),window:o3.optional(),trends:OM.optional(),periodComparison:PM.nullable().optional()});const qM=d({page:r(),clicks:m(),impressions:m(),ctr:we()});d({rows:y(qM),totals:d({clicks:m(),impressions:m(),ctr:we(),days:m(),coveredFrom:r().nullable(),coveredThrough:r().nullable(),complete:E()}).nullable(),totalsSource:R("property-daily"),rankedFrom:r().nullable(),rankedThrough:r().nullable()});const MM=j(["google","page-summed","mixed"]),BM=d({query:r(),clicks:m(),impressions:m(),ctr:we(),position:m(),days:m(),source:MM});d({rows:y(BM),totalMatching:m(),truncated:E(),window:o3.extend({earliestDataDate:r().nullable().optional()})});const c0=d({id:r(),url:r(),indexingState:r().nullable().optional(),verdict:r().nullable().optional(),coverageState:r().nullable().optional(),pageFetchState:r().nullable().optional(),robotsTxtState:r().nullable().optional(),crawlTime:r().nullable().optional(),lastCrawlResult:r().nullable().optional(),isMobileFriendly:E().nullable().optional(),richResults:y(r()).default([]),referringUrls:y(r()).default([]),inspectedAt:r()});j(["stable","reindexed","deindexed","still-missing","new"]);const LM=d({url:r(),previousState:r().nullable(),currentState:r().nullable(),transitionDate:r()}),UM=d({reason:r(),count:m(),urls:y(c0).default([])});d({summary:d({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:ot(),indexedShare:we(m().min(0).max(1)).nullable(),notIndexedShare:we(m().min(0).max(1)).nullable()}),lastInspectedAt:r().nullable(),lastSyncedAt:r().nullable(),indexed:y(c0).default([]),notIndexed:y(c0).default([]),deindexed:y(LM).default([]),reasonGroups:y(UM).default([])});d({url:r(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:r()});const VM=d({url:r(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:r(),status:j(["success","error"]),error:r().optional()});d({summary:d({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(VM).default([])});d({date:r(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:He(r(),m()).default({})});const $M=d({siteUrl:r(),permissionLevel:r()});d({sites:y($M).default([])});const GM=d({type:r(),submitted:r(),indexed:r().optional().describe("Deprecated compatibility field.")}),r3=d({path:r(),parentSitemapUrl:r().optional(),lastSubmitted:r().optional(),isPending:E().optional(),isSitemapsIndex:E().optional(),type:r().optional(),lastDownloaded:r().optional(),warnings:r().optional(),errors:r().optional(),contents:y(GM).optional()});d({sitemaps:y(r3).default([]),summary:d({total:m().int().nonnegative(),indexes:m().int().nonnegative(),files:m().int().nonnegative()}),preferredSubmissionUrls:y(r()).default([])});d({sitemapUrls:y(r().url().refine(e=>{const n=new URL(e).protocol;return n==="http:"||n==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const KM=d({sitemapUrl:r(),status:j(["accepted","error"]),submittedAt:r().optional(),error:r().optional()});d({summary:d({total:m().int().nonnegative(),accepted:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(KM)});d({sitemaps:y(r3),primarySitemapUrl:r(),run:d({id:r(),projectId:r(),kind:r(),status:r(),trigger:r(),createdAt:r()}).nullable()});const mt=r().trim().min(1),_w=r().regex(/^[a-f0-9]{64}$/i),HM=j(["not-connected","selection-required","connected","stale"]),gd=HM.enum,FM=j(["live","draft"]),l3=FM.enum,Td=d({accountId:mt.nullable(),containerId:mt.nullable(),workspaceId:mt.nullable(),selectedAt:r().nullable()}).strict(),kf=d({id:mt,projectId:mt,scopes:y(r()).default([]),selection:Td,lastValidatedAt:r().nullable(),lastSnapshotAt:r().nullable(),createdAt:r(),updatedAt:r()}).strict(),c3=d({id:mt,path:r(),name:r(),shareData:E().nullable()}).strict(),u3=d({accountId:mt,id:mt,path:r(),name:r(),publicId:r().nullable(),domainName:r().nullable(),usageContexts:y(r())}).strict(),Og=d({accountId:mt,containerId:mt,id:mt,path:r(),name:r(),description:r().nullable(),fingerprint:r().nullable()}).strict(),QM=d({accounts:y(c3),totalAccessible:m().int().nonnegative(),truncated:E(),fetchedAt:r()}).strict();d({accountId:mt,containers:y(u3),totalAccessible:m().int().nonnegative(),truncated:E(),fetchedAt:r()}).strict();d({accountId:mt,containerId:mt,workspaces:y(Og),totalAccessible:m().int().nonnegative(),truncated:E(),fetchedAt:r()}).strict();const ZM=d({id:mt,name:r(),type:r(),paused:E(),firingTriggerIds:y(mt),blockingTriggerIds:y(mt),referencedVariableIds:y(mt),parameterKeys:y(r()),fingerprint:r().nullable()}).strict(),YM=d({id:mt,name:r(),type:r(),customEventNames:y(r()),filterKeys:y(r()),autoEventFilterKeys:y(r()),fingerprint:r().nullable()}).strict(),XM=d({id:mt,name:r(),type:r(),dataLayerVariableName:r().nullable(),parameterKeys:y(r()),fingerprint:r().nullable()}).strict(),d3=j(["recognized","unknown"]),Tw=d3.enum,JM=j(["literal","variable-ref","absent","unknown"]),Dm=JM.enum,WM=r().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),Gr=d({source:R(Dm.absent),literal:ue(),variableRef:ue()}).strict(),Kr=d({source:R(Dm.unknown),literal:ue(),variableRef:ue()}).strict(),Hr=d({source:R(Dm["variable-ref"]),literal:ue(),variableRef:WM}).strict();function Hc(e){return d({source:R(Dm.literal),literal:e,variableRef:ue()}).strict()}const eB=r().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),tB=r().trim().min(1).max(128).regex(/^[\w-]+$/),nB=r().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),aB=r().trim().length(3).regex(/^[a-z]{3}$/i);Be("source",[Hc(r().trim().min(1).max(256)),Hr,Gr,Kr]);const iB=Be("source",[Hc(eB),Hr,Gr,Kr]),sB=Be("source",[Hc(tB),Hr,Gr,Kr]),oB=Be("source",[Hc(nB),Hr,Gr,Kr]),rB=Be("source",[Hr,Gr,Kr]),lB=Be("source",[Hc(aB),Hr,Gr,Kr]),m3=j(["all-pages","custom-event","filtered","unknown"]);m3.enum;const Ew=d({operator:r().trim().min(1).max(64),value:r().max(2048),negated:E(),ignoreCase:E()}).strict(),cB=d({triggerId:mt,triggerType:r(),eventPredicates:y(Ew),hostnamePredicates:y(Ew),unsupportedConditionCount:m().int().nonnegative()}).strict(),p3=j(["not-google-ads-tag","unsupported-tag-type","custom-html-opaque","conversion-id-unresolved","conversion-label-unresolved","value-mapping-missing","transaction-id-mapping-missing","currency-mapping-missing","trigger-unresolved","hostname-filter-unresolved"]);p3.enum;const uB=d({tagId:mt,tagType:r(),recognition:d3,recognitionReason:r().nullable(),conversionId:iB,conversionLabel:sB,value:oB,transactionId:rB,currency:lB,triggerStrategy:m3,triggerIds:y(mt),triggerPredicates:y(cB),reviewReasons:y(p3)}).strict().superRefine((e,n)=>{e.recognition===Tw.recognized&&e.recognitionReason!==null&&n.addIssue({code:ye.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===Tw.unknown&&!e.recognitionReason&&n.addIssue({code:ye.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),h3=d({accountId:mt,containerId:mt,workspaceId:mt.nullable(),tags:y(ZM),triggers:y(YM),variables:y(XM),googleAdsTagAssessments:y(uB).default([])}).strict(),dB=d({accountId:mt,containerId:mt,id:mt,path:r(),name:r(),description:r().nullable(),fingerprint:r().nullable(),deleted:E()}).strict(),f3=d({source:R(l3.live),version:dB,graph:h3,fetchedAt:r()}).strict(),g3=d({source:R(l3.draft),workspace:Og,graph:h3,conflictCount:m().int().nonnegative(),fetchedAt:r()}).strict(),mB=d({account:c3,container:u3,workspaces:y(Og),live:f3.nullable(),draft:g3.nullable(),fetchedAt:r()}).strict();Be("status",[d({connected:R(!1),status:R(gd["not-connected"]),connection:ue(),selection:ue()}).strict(),d({connected:R(!0),status:R(gd["selection-required"]),connection:kf,selection:Td}).strict(),d({connected:R(!0),status:R(gd.connected),connection:kf,selection:Td}).strict(),d({connected:R(!0),status:R(gd.stale),connection:kf,selection:Td}).strict()]);const y3=j(["accounts","container","live","draft"]),yd=y3.enum,Pg=d({id:mt,projectId:mt,connectionId:mt,runId:mt,kind:y3,accountId:mt.nullable(),containerId:mt.nullable(),workspaceId:mt.nullable(),payloadChecksum:_w,rawPayloadSha256:_w.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:r(),createdAt:r()}).strict(),pB=Be("kind",[d({kind:R(yd.accounts),data:QM}).strict(),d({kind:R(yd.container),data:mB}).strict(),d({kind:R(yd.live),data:f3}).strict(),d({kind:R(yd.draft),data:g3}).strict()]),hB=d({metadata:Pg,payload:pB}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Yn=r().trim().min(1),fB=r().trim().min(1).refine(e=>Bc(e)!==null,"Expected a hostname or http(s) URL."),qg=j(["configured","statically-consistent","runtime-unverified","observed"]);qg.enum;const b3=j(["pass","fail","unknown"]);b3.enum;const v3=j(["ads-connection-missing","ads-conversion-action-missing","ads-goal-missing","ads-goal-not-biddable","ads-action-not-primary","gtm-connection-missing","gtm-live-graph-missing","gtm-tag-missing","gtm-tag-unrecognized","gtm-tag-paused","gtm-trigger-missing","gtm-variable-missing","gtm-event-mismatch","gtm-hostname-mismatch","gtm-value-mapping-missing","gtm-transaction-id-mapping-missing","gtm-currency-mapping-missing","gtm-conversion-id-mismatch","gtm-conversion-label-mismatch","runtime-event-not-observed","runtime-gtm-not-observed","runtime-ads-not-observed"]);v3.enum;const x3=d({id:Yn,projectId:Yn,name:r().trim().min(1),eventName:r().trim().min(1),googleAds:d({customerId:Yn,conversionActionId:Yn,conversionId:r().trim().min(1).optional(),conversionLabel:r().trim().min(1).optional(),campaignIds:y(Yn).max(50).default([]),requireBiddableGoal:E().default(!0),requirePrimaryAction:E().default(!0)}).strict(),gtm:d({accountId:Yn,containerId:Yn,tagId:Yn,triggerIds:y(Yn).default([]),variableIds:y(Yn).default([])}).strict(),runtime:d({verificationRequired:E().default(!0),requireTransactionId:E().default(!0),requireValue:E().default(!0),requireCurrency:E().default(!0),productionHosts:y(fB).default([])}).strict(),createdAt:r(),updatedAt:r()}).strict();x3.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const w3=j(["not-run","consistent","inconsistent"]);w3.enum;const k3=j(["not-run","not-observed","observed"]);k3.enum;d({staticCheck:w3,runtimeVerificationRequired:E(),runtimeObservation:k3}).strict();const gB=d({code:v3,subject:r().trim().min(1),outcome:b3,status:qg,evidenceIds:y(Yn).default([])}).strict(),yB=d({contract:x3,status:qg,findings:y(gB),evaluatedAt:r()}).strict(),Rw=d({id:Yn,name:r(),detail:r(),active:E()});d({googleAds:d({customerId:Yn.nullable(),syncedAt:r().nullable(),conversionActions:y(Rw)}),gtm:d({containerId:Yn.nullable(),syncedAt:r().nullable(),tags:y(Rw)})});const vc=r().trim().min(1);function Dw(e){const n=e.trim();return/^\d{10}$/.test(n)?n:/^\d{3}-\d{3}-\d{4}$/.test(n)?n.replaceAll("-",""):null}const bB=/^[\w-]+$/;function Mg(e){const n=e.trim();return bB.test(n)?n:null}function vB(e){const n=e.trim();return/^accounts\/([\w-]+)$/.exec(n)?.[1]??Mg(n)}function xB(e,n){const i=e.trim(),o=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(i);return o?o[1]===n?o[2]:null:Mg(i)}function wB(e,n,i){const o=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(o);return u?u[1]===n&&u[2]===i?u[3]:null:Mg(o)}function kB(e){const n=Dw(e.customerId);if(!n)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:n};if(e.loginCustomerId===void 0)return{customerId:n};const i=Dw(e.loginCustomerId);return i?{loginCustomerId:i,customerId:n}:null}function SB(e){const n=vB(e.accountId);if(!n)return null;const i=xB(e.containerId,n);if(!i)return null;if(e.workspaceId===void 0)return{accountId:n,containerId:i};const o=wB(e.workspaceId,n,i);return o?{accountId:n,containerId:i,workspaceId:o}:null}const zm=j(["google-ads","gtm"]);zm.enum;d({provider:zm,publicUrl:r().url().optional(),developerToken:r().trim().min(1).max(512).optional()}).strict();d({provider:zm,authorizationUrl:r().url(),redirectUri:r().url(),expiresAt:r().nullable()}).strict();d({loginCustomerId:vc.nullable().optional(),customerId:vc}).strict().superRefine((e,n)=>{kB(e)||n.addIssue({code:ye.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});d({accountId:vc,containerId:vc,workspaceId:vc.optional()}).strict().superRefine((e,n)=>{SB(e)||n.addIssue({code:ye.custom,message:"GTM resource paths must match the selected account and container."})});d({provider:zm,disconnected:E()}).strict();const S3=100;d({snapshots:y(lg).max(S3),nextCursor:r().nullable(),total:m().int().nonnegative()}).strict();d({snapshot:dI}).strict();d({snapshots:y(Pg).max(S3),nextCursor:r().nullable(),total:m().int().nonnegative()}).strict();d({snapshot:hB}).strict();d({assessment:yB,googleAdsSnapshot:lg.nullable(),gtmSnapshot:Pg.nullable()}).strict();d({id:r(),domain:r(),siteUrl:r().nullable().optional(),createdAt:r(),updatedAt:r()});const Sf=d({id:r(),url:r(),httpCode:m().nullable().optional(),inIndex:E().nullable().optional(),lastCrawledDate:r().nullable().optional(),inIndexDate:r().nullable().optional(),inspectedAt:r(),documentSize:m().nullable().optional(),anchorCount:m().nullable().optional(),discoveryDate:r().nullable().optional()});d({summary:d({total:m(),indexed:m(),notIndexed:m(),unknown:m().optional(),percentage:ot()}),lastInspectedAt:r().nullable(),indexed:y(Sf).default([]),notIndexed:y(Sf).default([]),unknown:y(Sf).default([]).optional()});d({query:r(),impressions:m(),clicks:m(),ctr:we(),averagePosition:m()});d({date:r(),indexed:m(),notIndexed:m(),unknown:m()});const jB=d({url:r(),status:j(["success","error"]),submittedAt:r(),error:r().optional()});d({summary:d({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(jB).default([])});const j3=d({url:r(),verified:E()});d({sites:y(j3).default([])});d({connected:E(),domain:r(),siteUrl:r().nullable(),createdAt:r().nullable(),updatedAt:r().nullable()});d({connected:E(),domain:r(),siteUrl:r().nullable(),availableSites:y(j3).default([])});d({siteUrl:r()});const AB=d({name:r(),alive:E(),lastUsed:r().nullable()});d({connected:E(),endpoint:r(),version:r().optional(),browserVersion:r().optional(),targets:y(AB).default([])});const Fr=j(["live","staging"]);d({projectName:r(),url:r(),stagingUrl:r().optional(),username:r(),defaultEnv:Fr,createdAt:r(),updatedAt:r()});const zw=d({url:r(),reachable:E(),pageCount:m().nullable().optional(),version:r().nullable().optional(),error:r().nullable().optional(),plugins:y(r()).optional(),authenticatedUser:d({id:m(),slug:r()}).nullable().optional()});d({connected:E(),projectName:r(),defaultEnv:Fr,live:zw.nullable(),staging:zw.nullable(),adminUrl:r().nullable().optional()});const NB=d({id:m(),slug:r(),title:r(),status:r(),modifiedAt:r().nullable().optional(),link:r().nullable().optional()}),A3=d({title:r().nullable(),description:r().nullable(),noindex:E().nullable(),writable:E().default(!1),writeTargets:y(r()).default([])}),CB=d({type:r(),json:He(r(),wn())}),_B=NB.extend({env:Fr,content:r(),seo:A3,schemaBlocks:y(CB).default([])}),Iw=_B.extend({contentHash:r(),contentSnippet:r()}),N3=d({manualRequired:R(!0),targetUrl:r(),adminUrl:r().nullable().optional(),content:r(),nextSteps:y(r()).default([])}),TB=d({slug:r(),severity:j(["high","medium","low"]),code:j(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:r()});d({slug:r(),title:r(),status:r(),wordCount:m(),seo:A3,schemaPresent:E(),issues:y(TB).default([])});const EB=d({slug:r(),status:j(["applied","skipped","manual"]),error:r().optional(),manualAssist:N3.optional()});d({env:Fr,strategy:j(["plugin","manual"]),results:y(EB)});const RB=d({slug:r(),status:j(["deployed","stripped","skipped","failed"]),schemasInjected:y(r()).optional(),manualAssist:N3.optional(),error:r().optional()});d({env:Fr,results:y(RB)});const DB=d({slug:r(),title:r(),canonrySchemas:y(r()),thirdPartySchemas:y(r()),hasCanonrySchema:E()});d({env:Fr,pages:y(DB)});const zB=d({name:r(),status:j(["completed","skipped","failed"]),summary:r().optional(),error:r().optional()});d({projectName:r(),steps:y(zB)});d({slug:r(),live:Iw,staging:Iw,hasDifferences:E(),differences:d({title:E(),slug:E(),content:E(),seoTitle:E(),seoDescription:E(),noindex:E(),schema:E()})});const IB=x2.shape.searchUnit.unwrap().enum;IB.query;const OB=d({name:r(),displayName:r().optional(),keyUrl:r().optional(),modelHint:r().optional(),model:r().optional(),defaultModel:r().optional(),configured:E(),quota:Cz.optional(),vertexConfigured:E().optional()}),PB=d({name:r(),displayName:r(),mode:j(["api","browser"]),modelConfigurable:E(),defaultModel:r(),knownModels:y(d({id:r(),displayName:r(),tier:j(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:d({source:r(),flags:r()}),modelValidationHint:r()}),Ow=d({configured:E()});d({providers:y(OB).default([]),providerCatalog:y(PB).default([]),google:Ow,bing:Ow});const qB=j(["recorded","errored","expired","canceled","parse_failed","duplicate"]);qB.enum;const MB=j(["not_plan_run","scoped_run","probe_run","batch_unavailable","model_not_frozen"]);MB.enum;Vx.standard,Vx.batch;const C3=j(["all","api","browser"]);C3.enum;const BB=j(["yes","no","unknown","not-mentioned"]),Pw=y(r().min(1)),qw=d({companyName:r().min(1),domain:r().min(1),queries:Pw.optional(),phrases:Pw.optional(),competitors:y(r().min(1)).optional(),providers:y(r().trim().min(1)).min(1).optional().describe("Configured provider names to use for both answers and analysis. Omit to use all providers matching providerMode."),providerMode:C3.optional().describe("Filter providers by transport; defaults to all. Browser-only selection requires manual queries and uses no API provider for analysis.")}).superRefine((e,n)=>{e.queries!==void 0&&e.phrases!==void 0&&n.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});qw.safeExtend({competitors:qw.shape.competitors.default([])});const LB=d({name:r(),count:m().int().nonnegative()}),UB=d({id:r(),name:r(),weight:m(),score:m(),findings:y(d({type:r(),message:r()})).default([]),recommendations:y(r()).default([])}),VB=d({url:r(),finalUrl:r(),auditedAt:r(),overallScore:m(),summary:r(),factors:y(UB).default([])}),$B=d({industry:r(),summary:r(),services:y(r()).default([]),categoryTerms:y(r()).default([])}),GB=d({provider:r(),displayName:r(),model:r().nullable().optional(),mentioned:E(),cited:E(),describedAccurately:BB,accuracyNotes:r().nullable().optional(),incorrectClaims:y(r()).default([]),recommendedCompetitors:y(r()).default([]),citedDomains:y(r()).default([]),groundingSources:y(wm).default([]),searchQueries:y(r()).default([]),answerText:r(),error:r().nullable().optional()}),KB=d({query:r(),providerResults:y(GB).default([])}),HB=d({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(LB).default([]),visibilityGap:r(),whatThisMeans:y(r()).default([]),recommendedActions:y(r()).default([])});d({companyName:r(),domain:r(),homepageUrl:r(),generatedAt:r(),queries:y(r()).default([]),competitors:y(r()).default([]),profile:$B,audit:VB,queryResults:y(KB).default([]),summary:HB});const FB=d({basis:j(["tracked","observed"]).nullable(),availability:j(["measured","not-measured","unavailable"]),reason:j(["select-query-class","answer-selection","no-competitors","insufficient-observed","no-answers","no-mentions","unavailable"]).nullable()}),Bg=FB.partial().shape,Lg=j(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);Lg.enum;const Ug=j(["cited","aspirational","wasted-surface"]),Mw=Ug.enum;Mw.cited,Mw.aspirational;const Fc=j(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),QB=Fc.enum;QB["direct-competitor"];const Im=j(["queued","seeding","probing","completed","failed"]);Im.enum;const _3=d({domain:r().min(1),hits:m().int().positive(),competitorType:Fc.default("unknown")}),ZB=d({id:r(),sessionId:r(),projectId:r(),query:r(),bucket:Ug.nullable().default(null),citationState:Li,citedDomains:y(r()).default([]),answerMentioned:E().nullable().default(null),createdAt:r()}),YB=d({id:r(),projectId:r(),status:Im,icpDescription:r().nullable().optional(),seedProvider:r().nullable().optional(),seedCountRaw:m().int().nullable().optional(),seedCount:m().int().nullable().optional(),seedFromAnswerCount:m().int().nullable().optional(),seedFromGroundingCount:m().int().nullable().optional(),seedBrandFilteredCount:m().int().nullable().optional(),buyerDescription:r().nullable().optional(),locations:y(mn).nullable().optional(),seedRawCandidates:y(r()).nullable().optional(),dedupClusterMinSims:y(m()).nullable().optional(),dedupBandPairFraction:we().nullable().optional(),dedupPairsTotal:m().int().nullable().optional(),seedProviders:y(r()).nullable().optional(),seedProviderCounts:He(r(),m().int()).nullable().optional(),canonicalCount:m().int().nullable().optional(),dedupThreshold:m().nullable().optional(),probeCount:m().int().nullable().optional(),citedCount:m().int().nullable().default(null),aspirationalCount:m().int().nullable().default(null),wastedCount:m().int().nullable().default(null),competitorMap:y(_3).default([]),warning:r().nullable().optional(),error:r().nullable().optional(),startedAt:r().nullable().optional(),finishedAt:r().nullable().optional(),createdAt:r()});YB.extend({probes:y(ZB).default([])});const XB=500,JB=8,WB=["gemini","openai"],eL=j(WB);d({icpDescription:r().min(1).optional(),buyerDescription:r().min(1).optional(),seedProviders:y(eL).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(XB).optional(),probeConcurrency:m().int().min(1).max(JB).optional(),locations:y(r().min(1)).optional()});d({buckets:y(Ug).min(1).optional(),includeCompetitors:E().optional(),competitorTypes:y(Fc).min(1).optional()});const Vg=d({domain:r().min(1),hits:m().int().positive(),competitorType:Fc,sources:y(_3)}),T3=j(["already-tracked","project-domain","shared-host","claimed-by-alias"]);T3.enum;const E3=Vg.extend({reason:T3,message:r()});d({sessionId:r(),projectId:r(),status:Im,queriesByBucket:d({cited:y(r()),aspirational:y(r()),"wasted-surface":y(r())}),suggestedCompetitors:y(Vg),skippedCompetitors:y(E3)});d({sessionId:r(),projectId:r(),promoted:d({queries:y(r()),competitors:y(r())}),skipped:d({queries:y(r()),competitors:y(r())}),competitorDetails:d({promoted:y(Vg),skipped:y(E3)})});Qe([R("cli"),r().regex(/^discovery:.+$/)]);const tL=d({query:r().min(1),probeHits:m().int().positive()}),nL=d({rawCandidates:m().int().nonnegative(),admitted:m().int().nonnegative(),rejected:d({belowFloor:m().int().nonnegative(),length:m().int().nonnegative(),navigational:m().int().nonnegative(),duplicate:m().int().nonnegative(),offAnchor:m().int().nonnegative(),semanticDuplicate:m().int().nonnegative()})});d({sessionId:r(),projectId:r(),provider:r(),status:Im,minProbeHits:m().int().positive(),anchorApplied:E(),semanticNoveltyApplied:E(),candidates:y(tL),stats:nL});const $g=j(["own","direct-competitor","ota-aggregator","editorial-media","other"]);$g.enum;const Om=j(["7d","30d","90d","all"]),Bw=j(["improving","declining","stable"]),aL=j(["mentioned","cited"]);aL.enum;const u0=d({citationRate:we(),cited:m().int(),total:m().int(),mentionRate:we(),mentionedCount:m().int()}),Qr=r().trim().min(1),iL=y(Qr).min(1).superRefine((e,n)=>{for(let i=1;i<e.length;i+=1)e[i-1]>=e[i]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[i]})}),No=Be("status",[d({status:R("known"),model:Qr}),d({status:R("unknown")}),d({status:R("mixed"),models:iL,includesUnknown:E()})]),sL=d({observedAt:r(),bucketStartDate:r(),from:No,to:No,fromPreWindowAnchor:E().optional(),anchorObservedAt:r().optional()}),R3=d({latestObservation:d({observedAt:r(),state:No}),events:y(sL),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:E().optional()}),oL=He(r(),R3),rL=R3.extend({latestServedModelIds:y(Qr).default([])}),lL=He(r(),rL),cL=d({observedAt:r(),configured:No,served:No}),uL=d({scope:j(["non-brand","pooled"]),rate:we().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),dL=d({startDate:r(),endDate:r(),dataStartDate:r(),dataEndDate:r(),sweepCount:m().int().nonnegative(),citationRate:we(),cited:m().int(),total:m().int(),queryCount:m().int(),mentionRate:we(),mentionedCount:m().int(),mentionShare:uL,byProvider:He(r(),u0),modelEvidenceByProvider:He(r(),No).default({}),basketRevision:m().int().nullable().default(null)}),jf=d({first:we(m().min(0).max(1)),latest:we(m().min(0).max(1)),delta:we(m().min(-1).max(1))}),mL=d({citationRate:jf.nullable(),mentionRate:jf.nullable(),mentionShare:jf.nullable()}),pL=d({revision:m().int(),at:r(),added:y(r()),removed:y(r())}),hL=d({date:r(),delta:m().int(),label:r()}),fL=d({at:r(),identity:W2});d({window:Om,mentionShareScope:j(["non-brand","pooled"]),buckets:y(dL),overall:u0,byProvider:He(r(),u0),trend:Bw,mentionTrend:Bw,windowChange:mL.default(()=>({citationRate:null,mentionRate:null,mentionShare:null})),queryChanges:y(hL),basketChanges:y(pL).default([]),executionIdentityChanges:y(fL).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:oL.default({}),servedModelAttribution:lL.default({}),modelServiceMismatch:He(r(),cL).default({}),modelPointerChanges:He(r(),NM).default({})});const Lw=d({category:Lg,label:r(),count:m().int(),percentage:we(),topDomains:y(d({domain:r(),count:m().int()}))}),gL=d({domain:r(),rank:m().int().positive().optional(),count:m().int(),percentage:we(),answerShare:we().optional(),category:Lg,label:r(),surfaceClass:$g}),yL=d({surfaceClass:$g,label:r(),count:m().int(),percentage:we(),domainCount:m().int()}),Uw=d({totalCitedSlots:m().int(),answerTotal:m().int().optional(),answersWithSources:m().int().optional(),domainTotal:m().int(),entries:y(gL),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(yL)}),bL=d({answers:y(r()),distinctDomains:y(r()),answerDomainPairs:y(r()),runs:y(r())}),vL=j(["measurement-plan","query-text"]);d({runId:r().trim().min(1).optional(),queryClass:ug.optional(),includeByQuery:j(["true","false","1","0"]).optional()});d({ranked:Uw,byProvider:He(r(),Uw),providersWithoutSources:y(r()).optional(),answerTotal:m().int().optional(),runCount:m().int().optional(),pooledAcrossRuns:E().optional(),unclassifiedAnswers:m().int().optional(),filters:d({runId:r().nullable(),queryClass:ug,queryClassBasis:Qe([vL,ue()]),includeByQuery:E()}).optional(),runId:r(),runIds:y(r()).optional(),countUnits:bL.optional(),window:Om,limit:m().int().nullable(),overall:y(Lw),byQuery:He(r(),y(Lw)).optional()});const xL=j(["own","direct-competitor","ota-aggregator","editorial-media","other","unknown"]),wL=Be("kind",[d({kind:R("project")}).strict(),d({kind:R("group"),groupKey:r().trim().min(1)}).strict(),d({kind:R("all-markets")}).strict()]),D3=j(["all","branded","non-brand"]),z3=j(["project","all-markets"]);d({window:Om.optional(),groupKey:r().trim().min(1).optional(),scope:z3.optional(),provider:r().trim().min(1).optional(),model:Qr.optional(),groupBy:R("model").optional(),queryClass:D3.optional(),location:r().trim().min(1).optional(),runId:r().trim().min(1).optional(),answers:j(["all","not-mentioned"]).optional()}).strict().superRefine((e,n)=>{e.scope==="all-markets"&&e.groupKey!==void 0&&n.addIssue({code:"custom",path:["groupKey"],message:"groupKey cannot be combined with scope=all-markets"}),e.model!==void 0&&e.provider===void 0&&n.addIssue({code:"custom",path:["provider"],message:"provider is required when filtering by model"})});const Ns=d({domain:r().trim().min(1),label:r().trim().min(1),surfaceClass:xL,pinned:E(),mentionCount:m().int().nonnegative(),shareOfVoice:ot(m().min(0).max(100)).nullable(),citationCount:m().int().nonnegative(),answeredResults:m().int().nonnegative(),firstSeenAt:r().datetime().nullable(),lastSeenAt:r().datetime().nullable(),sampleUrls:y(r().url()).max(3)}).strict(),I3=d({answeredResults:m().int().nonnegative(),sourceResults:m().int().nonnegative(),missingAnswerTextResults:m().int().nonnegative(),mentionCredits:m().int().nonnegative(),incompleteSourceResults:m().int().nonnegative(),excludedProbeResults:m().int().nonnegative(),excludedNonCompletedResults:m().int().nonnegative()}).strict(),kL=d({answers:y(r()),distinctNames:y(r()),runs:y(r())}).strict(),SL=50,jL=d({...Bg,comparison:y(d({domain:r(),mentions:m().int().nonnegative()})).optional(),observedNames:y(d({name:r(),answerCount:m().int().nonnegative()})).optional(),observedNamesTotal:m().int().nonnegative().optional(),provider:r().trim().min(1),model:Qr.nullable(),servedModels:No,snapshotCount:m().int().positive(),project:Ns,pinned:y(Ns),observed:y(Ns),otherSources:y(Ns),evidence:I3,truncated:E()}).strict(),AL=d({basis:R("requested-model"),groups:y(jL).max(SL),totalGroups:m().int().nonnegative(),truncated:E()}).strict();d({...Bg,comparison:y(d({domain:r(),mentions:m().int().nonnegative()})).optional(),observedNames:y(d({name:r(),answerCount:m().int().nonnegative()})).optional(),observedNamesTotal:m().int().nonnegative().optional(),answerSelection:d({answers:R("not-mentioned"),populationSize:m().int().nonnegative(),answerCount:m().int().nonnegative(),unknownMentionAnswers:m().int().nonnegative()}).strict().optional(),window:Om,scope:wL,project:Ns,pinned:y(Ns),observed:y(Ns),otherSources:y(Ns),evidence:I3,modelComparison:AL.optional(),marketState:d({activeRevision:m().int().positive(),draft:d({etag:r().trim().min(1),pendingCompetitorDomains:y(r().trim().min(1))}).strict().nullable()}).strict().nullable(),filters:d({scope:z3,groupKey:r().nullable(),provider:r().nullable(),model:Qr.optional(),groupBy:R("model").optional(),queryClass:D3,location:r().nullable(),runId:r().nullable(),answers:j(["all","not-mentioned"]).optional()}).strict(),truncated:E(),runCount:m().int().nonnegative().optional(),runIds:y(r()).optional(),countUnits:kL.optional()}).strict();const Gg=d({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:we().nullable(),citedRate:we().nullable()}),O3=Gg.extend({provider:r(),firstObserved:r(),lastObserved:r()}),NL=Gg.extend({queryId:r().nullable(),query:r(),firstObserved:r(),lastObserved:r(),providers:y(O3).optional()}),CL=d({since:r().nullable(),until:r().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),_L=j(["provider"]),d0=d({domain:r(),mentions:m().int()}),TL=d({...Bg,measurementScope:j(["project","all-markets"]).optional(),queryClass:j(["branded","non-brand","pooled"]),percent:ot().nullable(),competitorCount:m().int().nonnegative(),projectMentions:m().int(),competitorMentions:m().int(),snapshotsWithAnswerText:m().int(),perCompetitor:y(d0)});d({project:r(),groupBy:_L.optional(),window:CL,totals:Gg,byProvider:y(O3).optional(),queries:y(NL),shareOfVoice:TL.optional()});const EL=j(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),RL=j(["up","down","flat"]),Vw=d({availability:j(["available","no-observations","no-competitive-frame","classification-unavailable"]),point:we().nullable(),ciLow:we().nullable(),ciHigh:we().nullable(),numerator:m().int(),denominator:m().int(),excludedUnknown:m().int().nonnegative().optional()}),DL=j(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate","mention-rate-branded","cited-rate-branded","mention-rate-non-brand","cited-rate-non-brand"]),zL=d({key:DL,label:r(),queryClass:j(["all","branded","non-brand","pooled"]),driftRobust:E(),from:Vw,to:Vw,rateRatio:m().nullable(),direction:Qe([RL,ue()]),verdict:EL}),Xd=d({month:r(),since:r(),until:r(),runCount:m().int(),lowRunCount:E()}),P3=d({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(r()),excludedProviders:y(r())}),q3=d({provider:r(),fromModels:y(r()),toModels:y(r())}),IL=j(["included","model-discontinuous","model-unknown"]),OL=d({provider:r(),status:IL,fromModels:y(r()),toModels:y(r())}),PL=j(["comparable","model-discontinuous","model-unknown","insufficient-data"]),M3=d({status:PL,comparedProviders:y(r()),providers:y(OL)}),qL=d({provider:r(),from:d({checked:m().int(),mentioned:m().int(),cited:m().int()}),to:d({checked:m().int(),mentioned:m().int(),cited:m().int()})}),ML=d({from:d({count:m().int(),of:m().int()}),to:d({count:m().int(),of:m().int()})}),BL=d({scope:j(["project","group","market","property"]).optional(),scopeKey:r().min(1).optional(),marketKey:r().min(1).optional(),provider:r().min(1).optional(),location:r().min(1).optional()}),LL=d({from:Xd,to:Xd,basket:P3,continuity:M3,modelChanges:y(q3)});d({project:r(),selection:BL.optional(),classComparison:LL.optional(),from:Xd,to:Xd,basket:P3,metrics:y(zL),queriesMentioned:ML,byProvider:y(qL),modelChanges:y(q3),continuity:M3,competitors:d({from:y(d0),to:y(d0)})});j(["json","csv"]);const UL=d({runId:r(),runKind:R("answer-visibility"),runStatus:ha,runTrigger:wg,runCreatedAt:r(),runStartedAt:r().nullable(),runFinishedAt:r().nullable(),snapshotId:r(),snapshotCreatedAt:r(),queryId:r().nullable(),query:r().nullable(),provider:r(),model:r().nullable(),location:r().nullable(),citationState:Li,cited:E(),answerMentioned:E().nullable(),mentionState:Qe([_c,ue()]),citedDomains:y(r()),citedUrls:y(r()).nullable(),captureStatus:Qe([ym,ue()]),sourceCount:m().int().nonnegative().nullable(),resolvedCount:m().int().nonnegative().nullable(),captureVersion:m().int().positive().nullable(),competitorOverlap:y(r()),recommendedCompetitors:y(r()),answerText:r().nullable(),groundingSources:y(wm),searchQueries:y(r())}),VL=d({since:r().nullable(),until:r().nullable(),includeProbes:E()});d({schemaVersion:R("canonry.results-export/v1"),generatedAt:r(),project:d({id:r(),name:r(),displayName:r(),canonicalDomain:r(),country:r(),language:r()}),filters:VL,recordCount:m().int().nonnegative(),records:y(UL)});d({runIds:y(r().trim().min(1)).max(100).default([]),researchRunIds:y(r().trim().min(1)).max(100).default([]),confirm:E().default(!1)}).strict().superRefine((e,n)=>{e.runIds.length+e.researchRunIds.length===0&&n.addIssue({code:"custom",message:"Select at least one saved run."}),(new Set(e.runIds).size!==e.runIds.length||new Set(e.researchRunIds).size!==e.researchRunIds.length)&&n.addIssue({code:"custom",message:"Run IDs must be unique."})});d({dryRun:E(),runIds:y(r()),researchRunIds:y(r()),querySnapshots:m().int().nonnegative(),researchQueries:m().int().nonnegative(),insights:m().int().nonnegative(),healthSnapshots:m().int().nonnegative()});const Pm=j(["organic","paid"]);Pm.enum;d({id:r(),projectId:r(),propertyId:r(),clientEmail:r(),connected:E(),createdAt:r(),updatedAt:r()});d({date:r(),landingPage:r(),sessions:m(),organicSessions:m(),users:m()});const Kg=j(["session","first_user","manual_utm"]),$L=d({source:r(),medium:r(),trafficClass:Pm,sessions:m(),users:m().optional(),sourceDimension:Kg,share:we()}),GL=d({source:r(),medium:r(),trafficClass:Pm,sourceDimension:Kg,landingPage:r(),sessions:m(),users:m().optional()}),KL=d({source:r(),medium:r(),sessions:m(),users:m().optional(),channelGroup:r(),share:we()}),rc=d({sessions:m(),sharePct:ot(),sharePctDisplay:r()}),HL=d({organic:rc,social:rc,direct:rc,ai:rc,other:rc}),FL=d({totalSessions:m(),totalOrganicSessions:m(),totalDirectSessions:m(),totalUsers:m().nullable(),topPages:y(d({landingPage:r(),sessions:m(),organicSessions:m(),directSessions:m(),users:m(),organicShare:we().nullable()})),aiReferrals:y($L),aiReferralLandingPages:y(GL),aiSessionsDeduped:m(),aiUsersDeduped:m().optional(),paidAiSessionsDeduped:m(),paidAiUsersDeduped:m().optional(),organicAiSessionsDeduped:m(),organicAiUsersDeduped:m().optional(),aiSessionsBySession:m(),aiUsersBySession:m().optional(),paidAiSessionsBySession:m(),paidAiUsersBySession:m().optional(),organicAiSessionsBySession:m(),organicAiUsersBySession:m().optional(),socialReferrals:y(KL),socialSessions:m(),socialUsers:m().optional(),channelBreakdown:HL,organicSharePct:ot(),aiSharePct:ot(),aiSharePctBySession:ot(),paidAiSharePct:ot(),paidAiSharePctBySession:ot(),organicAiSharePct:ot(),organicAiSharePctBySession:ot(),directSharePct:ot(),socialSharePct:ot(),organicSharePctDisplay:r(),aiSharePctDisplay:r(),aiSharePctBySessionDisplay:r(),paidAiSharePctDisplay:r(),paidAiSharePctBySessionDisplay:r(),organicAiSharePctDisplay:r(),organicAiSharePctBySessionDisplay:r(),directSharePctDisplay:r(),socialSharePctDisplay:r(),otherSessions:m(),otherSharePct:ot(),otherSharePctDisplay:r(),lastSyncedAt:r().nullable()});d({connected:E(),propertyId:r().nullable(),clientEmail:r().nullable(),authMethod:j(["service-account","oauth"]).nullable(),lastSyncedAt:r().nullable(),createdAt:r().nullable().optional(),updatedAt:r().nullable().optional()});const QL=d({propertyId:r(),displayName:r(),accountName:r()});d({properties:y(QL)});d({synced:E(),rowCount:m().int().nonnegative(),aiReferralCount:m().int().nonnegative(),socialReferralCount:m().int().nonnegative(),days:m().int().nonnegative(),requestedDays:m().int().nonnegative(),clamped:E(),syncedAt:r(),measurement:d({acquisition:d({days:m().int().nonnegative(),status:j(["ready","error"]),rowCount:m().int().nonnegative(),error:r().optional()}),leads:d({days:m().int().nonnegative(),status:j(["ready","error","not-configured"]),rowCount:m().int().nonnegative(),attributionScope:j(["landing-page","channel"]).optional(),error:r().optional()})}),syncedComponents:y(r()).optional()});const B3=j(["new","small-base","percent"]);B3.enum;const m0=d({source:r(),sessions7d:m(),sessionsPrev7d:m(),changeSessions:m(),changePct:ot().nullable(),changeBasis:B3});d({socialSessions7d:m(),socialSessionsPrev7d:m(),trend7dPct:ot().nullable(),socialSessions30d:m(),socialSessionsPrev30d:m(),trend30dPct:ot().nullable(),biggestMover:m0.nullable()});const lc=d({sessions7d:m(),sessionsPrev7d:m(),trend7dPct:ot().nullable(),sessions30d:m(),sessionsPrev30d:m(),trend30dPct:ot().nullable()});d({organic:lc,ai:lc,social:lc,direct:lc,total:lc,aiBiggestMover:m0.nullable(),socialBiggestMover:m0.nullable()});FL.extend({windowStart:r().nullable(),windowEnd:r().nullable(),windowDays:m().nullable(),periodStart:r().nullable(),periodEnd:r().nullable()});d({date:r(),source:r(),medium:r(),trafficClass:Pm,landingPage:r(),sessions:m(),users:m(),sourceDimension:Kg});const ZL=d({source:r(),sessions:m(),paidSessions:m(),organicSessions:m()}),YL=d({date:r(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(ZL)});d({days:y(YL),sources:y(r()),totalSessions:m(),totalPaidSessions:m(),totalOrganicSessions:m()});d({date:r(),source:r(),medium:r(),sessions:m(),users:m(),channelGroup:r()});d({date:r(),sessions:m(),organicSessions:m(),users:m(),usersSource:j(["deduplicated","landing-page-sum"])});d({id:r(),projectId:r(),runId:r().nullable(),overallCitedRate:we(),overallMentionRate:we(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:He(r(),d({citedRate:we(),mentionRate:we(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:r(),status:j(["ready","no-data"]),reason:R("no-runs-yet").optional()});const XL=d({view:j(["project","visibility","property","queries","site-health"]),unavailableReason:r().trim().min(1).max(512).optional(),selection:Kd.optional(),page:d({runId:r().trim().min(1).max(256).optional(),nodeKey:r().trim().min(1).max(2048).optional()}).strict().optional()}).strict().superRefine((e,n)=>{e.page&&e.view!=="site-health"&&n.addIssue({code:"custom",message:"Page context requires Site Health."}),e.selection&&!["visibility","property","queries"].includes(e.view)&&n.addIssue({code:"custom",message:"Measurement selection requires a measurement view."})}),JL=d({maxToolCalls:m().int().min(1).max(100).default(30),timeoutMs:m().int().min(1e3).max(6e5).default(18e4)}).strict(),Hg=j(["claude","openai","gemini","zai"]),WL=d({id:Hg,label:r(),defaultModel:r(),configured:E(),keySource:j(["config","env"]).nullable()});d({providers:y(WL).default([]),defaultProvider:Hg.nullable()});const eU=j(["aero","user","compaction"]);eU.enum;const L3=128;d({key:r().min(1).max(L3),value:r().min(1)});d({key:r().min(1).max(L3)});d({prompt:r().trim().min(1),conversationId:r().min(1).nullable().optional(),provider:Hg.optional(),modelId:r().trim().min(1).optional(),scope:j(["all","read-only"]).optional(),profile:j(["default","ads-operator"]).optional(),context:XL.optional(),limits:JL.optional()});const tU=nz({role:r(),content:wn().optional()}),U3=d({id:r(),title:r(),active:E(),modelProvider:r(),modelId:r(),createdAt:r(),updatedAt:r()});U3.extend({messages:y(tU),isStreaming:E()});d({conversations:y(U3),currentConversationId:r().nullable(),nextOffset:m().int().nullable()});d({id:DD()}).strict();d({id:r(),status:R("deleted")});const nU=["status","changes","gaps","insights"],aU=j(nU),iU=d({text:r().optional(),tool:d({name:r(),label:r(),arguments:He(r(),wn()),result:wn(),durationMs:m().int().nonnegative()})}),sU=d({id:aU,steps:y(iU),answer:r()});d({project:r(),seededAt:r(),starters:y(sU)});d({offset:Bi().int().min(0).default(0),limit:Bi().int().min(1).max(100).default(50)}).strict();const Zr=j(["commoncrawl","bing-webmaster"]);Zr.enum;const Fg=j(["queued","downloading","querying","ready","failed"]);Fg.enum;d({id:r(),release:r(),status:Fg,phaseDetail:r().nullable().optional(),vertexPath:r().nullable().optional(),edgesPath:r().nullable().optional(),vertexSha256:r().nullable().optional(),edgesSha256:r().nullable().optional(),vertexBytes:m().int().nullable().optional(),edgesBytes:m().int().nullable().optional(),projectsProcessed:m().int().nullable().optional(),domainsDiscovered:m().int().nullable().optional(),downloadStartedAt:r().nullable().optional(),downloadFinishedAt:r().nullable().optional(),queryStartedAt:r().nullable().optional(),queryFinishedAt:r().nullable().optional(),error:r().nullable().optional(),createdAt:r(),updatedAt:r()});const oU=d({linkingDomain:r(),numHosts:m().int(),source:Zr}),rU=d({projectId:r(),release:r(),targetDomain:r(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:r(),queriedAt:r(),source:Zr,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});d({source:Zr,summary:rU.nullable(),total:m().int(),rows:y(oU)});d({release:r(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:r(),queriedAt:r(),source:Zr});const lU=d({source:Zr,connected:E(),hasData:E(),latestRelease:r().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:r().nullable()});d({projectId:r(),targetDomain:r(),sources:y(lU),anyConnected:E(),anyData:E()});d({duckdbInstalled:E(),duckdbVersion:r().nullable().optional(),duckdbSpec:r(),pluginDir:r()});d({installed:E(),version:r(),path:r(),alreadyPresent:E()});d({release:r(),vertexUrl:r(),edgesUrl:r(),vertexBytes:m().int().nullable(),edgesBytes:m().int().nullable(),lastModified:r().nullable()});d({release:r(),syncStatus:Fg.nullable(),bytes:m().int(),lastUsedAt:r().nullable()});const cU="jev-1.13.0",De=r().trim().min(1).max(256),kt=m().int().nonnegative(),V3=Ki(e=>typeof e=="string"?[e]:e,y(De).min(1).max(100)),Ed=we(m().min(0).max(1)).nullable(),Vi=j(["favorable","mixed","unfavorable","factual","subject-not-mentioned","wrong-subject","ambiguous-subject","ambiguous-judgment","subject-not-applicable","unsupported-language","missing-source-text","input-too-large","invalid-conclusion-evidence","pending","running","waiting-to-retry","failed","canceled"]);Vi.enum;const Qg=j(["disabled","not-measured","processing","partial","complete","failed","canceled","unsupported"]),Zg=d({schemaVersion:Qe([R(1),R(2)]),requestedModel:R(cU),verdictVersion:De,identityVersion:De,evidenceVersion:De,segmentationVersion:De,preprocessingVersion:De,languagePolicy:R("en-only"),comparisonMethodVersion:R("wilson-independent-v1"),confidenceThreshold:m().min(0).max(1).nullable(),questions:d({identity:r(),judgment:r(),stance:r(),conclusion:r(),complaint:r()}).strict()}).strict();function $3(e){if(typeof e!="object"||e===null||!("schemaVersion"in e)||e.schemaVersion!==1)return e;const n=Object.fromEntries(Object.entries(e).filter(([i])=>i!=="themes"));return typeof n.questions=="object"&&n.questions!==null&&(n.questions=Object.fromEntries(Object.entries(n.questions).filter(([i])=>i!=="theme"))),n}Ki($3,Zg);const G3=d({id:De,displayName:r(),aliases:y(r()),qualifiedAliases:y(r()).default([]),urls:y(r()),mentionNotApplicable:E()}).strict(),uU=d({queryId:De,executionNodeKey:De.nullable(),targetId:De,propertyId:De.nullable(),groupId:De.nullable(),marketId:De.nullable(),queryClass:j(["branded","non-brand"]),queryText:r().optional(),location:r().nullable()}).strict(),K3=d({queryId:De,queryText:r(),queryClass:j(["branded","non-brand"]),provider:De,requestedModel:r().nullable(),servedModel:r().nullable(),location:r().nullable(),revision:m().int().nullable(),usageEdges:y(uU),locationContext:mn.nullable().default(null)}).strict(),Ec=d({id:De,text:r().min(1),start:kt,end:kt}).strict(),H3=d({kind:j(["reported","estimated","unknown"]),inputTokens:kt.nullable(),outputTokens:kt.nullable()}).strict(),dU=d({sourceSnapshotId:De,sourceText:r(),sourceTextHash:De,subject:G3,subjectHash:De,context:K3,language:r(),definition:Zg,sentences:y(Ec)}).strict();Ki(e=>typeof e!="object"||e===null||!("definition"in e)?e:{...e,definition:$3(e.definition)},dU);const Af={returnedModel:r().nullable(),usage:H3},mU=Be("kind",[d({kind:R("classified"),...Af,returnedModel:r(),outcome:Vi,conclusion:y(Ec),complaint:y(Ec).nullable(),confidence:m().min(0).max(1).nullable()}).strict(),d({kind:R("abstained"),...Af,outcome:Vi,reason:r()}).strict(),d({kind:R("failed"),...Af,outcome:R("failed"),error:d({code:De,message:r(),retryable:E(),retryAfterMs:m().nonnegative().nullable()}).strict()}).strict()]).superRefine((e,n)=>{e.kind==="classified"&&["favorable","mixed","unfavorable"].includes(e.outcome)&&e.conclusion.length===0&&n.addIssue({code:"custom",path:["conclusion"],message:"Judgments require conclusion evidence"})});Ki(e=>typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).filter(([n])=>n!=="themes")):e,mU);const Yr=d({runId:De.optional(),runIds:V3.optional(),revision:Bi().int().positive().optional(),mode:j(["auto","simple","advanced"]).default("auto"),queryClass:j(["branded","non-brand"]).default("branded"),scope:j(["project","property","group","market"]).default("project"),queryId:De.optional(),scopeKey:De.optional(),marketKey:De.optional(),provider:De.optional(),model:De.optional(),location:r().min(1).optional(),evaluationDefinitionId:De.optional(),executionNodeKey:De.optional()}).strict();function Qc(e,n){e.runId&&e.runIds&&n.addIssue({code:"custom",path:["runIds"],message:"Choose runId or runIds, not both."}),e.runIds&&new Set(e.runIds).size!==e.runIds.length&&n.addIssue({code:"custom",path:["runIds"],message:"Run IDs must be unique."})}Yr.superRefine(Qc);const pU=j(["assessments","locations"]),hU=25,F3=500;Yr.extend({include:Ki(e=>typeof e=="string"?e.split(",").map(n=>n.trim()).filter(Boolean):e,y(pU).max(2)).optional(),queryLimit:Bi().int().min(1).max(F3).default(hU),queryCursor:r().min(1).max(16384).optional()}).superRefine(Qc);const fU=Ki(e=>{const n=typeof e=="string"?[e]:Array.isArray(e)?e:null;return n?[...new Set(n.flatMap(i=>typeof i=="string"?i.split(",").map(o=>o.trim()).filter(Boolean):[i]))]:e},y(Vi).min(1).max(Vi.options.length));Yr.extend({assessmentId:De.optional(),outcome:fU.optional(),cursor:r().min(1).max(16384).optional(),limit:Bi().int().min(1).max(100).default(50)}).superRefine(Qc);Yr.extend({fromRunId:De.describe("Run ID or previous-rated to select the preceding run with stored ratings in this scope."),toRunId:De}).superRefine((e,n)=>{Qc(e,n),e.runIds&&n.addIssue({code:"custom",path:["runIds"],message:"Comparison requires one explicit run per period."})});const Yg=Yr.extend({runId:De.nullable(),revision:m().int().nullable(),evaluationDefinitionId:De.nullable(),mode:j(["simple","advanced"])}),Xg=d(Object.fromEntries(Vi.options.map(e=>[e,kt]))).strict(),gU=d({selected:kt,eligibleAssessments:kt,unadmittedAssessments:kt,judged:kt,distinctSourceAnswers:kt,eligibleAnswers:kt.optional(),ratedAnswers:kt.optional(),ratedAnswerRate:Ed.optional(),subjectNotMentioned:kt.nullable().optional().describe("Distinct admitted answers where every assessed subject in the selected scope is absent. Expected for non-brand queries; not missing classification. Null while disabled."),counts:Xg,expectedProviderSlots:kt,completedProviderSlots:kt}).strict(),yU=d({favorableRate:Ed,mixedRate:Ed,unfavorableRate:Ed,favorableDisplay:r(),mixedDisplay:r(),unfavorableDisplay:r(),interval:d({low:m(),high:m()}).strict().nullable(),method:R("wilson-independent-v1"),limitation:r()}).strict(),Or={state:Qg,reason:r().nullable(),provisional:E(),coverage:gU,score:yU},$w=d({...Or,selection:Yg,runIds:y(De)}).strict(),Gw=d({...Or,queryClass:R("all"),pooled:R(!0).optional(),runIds:y(De)}).strict(),bU=d({configured:E(),branded:$w,nonBrand:$w,headlineQueryClass:R("branded").optional(),pooledOverall:Gw.optional(),overall:Gw.optional().describe("Deprecated compatibility field. Pooled branded and non-brand assessments; never use as the sentiment headline.")}).strict(),vU=d({assessmentId:De.nullable(),sourceSnapshotId:De,runId:De,subjectId:De,subjectLabel:r(),executionNodeKey:De.nullable(),provider:De,requestedModel:r().nullable(),servedModel:r().nullable(),location:r().nullable(),evaluationDefinitionId:De.nullable(),state:Qg,outcome:Qe([Vi,ue()]),reason:r().nullable()}).strict(),xU=d({...Or,queryId:De,executionNodeKey:De.nullable().optional(),queryText:r(),queryClass:j(["branded","non-brand"]),sourceSnapshotIds:y(De),assessments:y(vU).default([]),locations:y(d({...Or,location:r().nullable(),sourceSnapshotIds:y(De)}).strict())}).strict(),wU=d({...Or,dimension:j(["provider","property","market","query"]),key:r(),label:r(),queryClass:j(["branded","non-brand"])}).strict(),p0=d({...Or,configured:E(),selection:Yg,evaluationDefinition:Zg.nullable(),breakdowns:y(wU),queries:y(xU),criticizedProperties:d({total:kt,keys:y(r())}).strict().optional(),queryPage:d({total:kt,limit:kt,nextCursor:r().nullable()}).strict().optional()}).strict();d({enabled:E().optional()}).strict();const kU=d({installEnabled:E(),enabled:E(),ready:E(),readinessReasons:y(r()),model:r(),enablementEpoch:kt,completionBoundary:kt,evaluationDefinitionId:De.nullable(),actions:d({configure:E(),backfill:E()}).strict(),experimental:R(!0),disclosure:r()}).strict(),Q3=Yr.extend({runIds:V3.optional(),from:r().datetime().optional(),to:r().datetime().optional()}).superRefine(Qc);d({previewToken:r().min(1).max(65536),idempotencyKey:r().trim().min(1).max(128)}).strict();const SU=d({previewToken:r().nullable(),expiresAt:r().nullable(),selection:Q3,evaluationDefinitionId:De.nullable(),eligibleAssessments:kt,alreadyClassified:kt,skipped:y(d({runId:De,reason:r(),count:kt}).strict()),estimatedInputTokens:kt,estimatedCostUsd:m().nonnegative().nullable(),estimateMethod:r()}).strict(),jU=j(["pending","running","waiting-to-retry","complete","partial","failed","canceled"]),AU=d({id:De,workItemId:De,dispatchedAt:r(),completedAt:r().nullable(),returnedModel:r().nullable(),usage:H3,errorCode:r().nullable()}).strict(),Z3=d({id:De,projectId:De,origin:j(["automatic","backfill"]),state:jU,enablementEpoch:kt,evaluationDefinitionId:De,selection:Q3,createdAt:r(),updatedAt:r(),counts:Xg,selected:kt,cancellationReason:r().nullable(),attempts:y(AU),attemptCount:kt.optional(),nextAttemptCursor:r().nullable().optional()}).strict(),NU=Z3.omit({attempts:!0,attemptCount:!0,nextAttemptCursor:!0}).extend({attemptCount:kt}).strict(),CU=d({jobs:y(NU)}).strict(),_U=50;d({attemptLimit:Bi().int().min(1).max(200).default(_U),attemptCursor:r().min(1).max(4096).optional()}).strict();const TU=d({assessmentId:De,runId:De,sourceSnapshotId:De,sourceText:r(),sourceTextHash:De,subject:G3,subjectHash:De,context:K3,evaluationDefinitionId:De,outcome:Vi,conclusion:y(Ec),complaint:y(Ec).nullable(),returnedModel:r().nullable(),reason:r().nullable()}).strict(),EU=d({state:Qg,selection:Yg.extend({assessmentId:De.optional(),outcome:y(Vi).optional()}),items:y(TU),nextCursor:r().nullable()}).strict(),RU=d({from:p0,to:p0,verdict:j(["improved","declined","no-clear-change"]).nullable(),favorableRateDelta:m().nullable(),refusalReasons:y(r()),commonUnits:kt,excludedFrom:kt,excludedTo:kt,changedScope:E(),method:R("wilson-independent-v1"),limitation:r()}).strict(),Jg=j(["positive","caution","negative","neutral"]),As=d({label:r(),value:r(),delta:r(),tone:Jg,description:r(),tooltip:r().optional(),trend:y(ot()),progress:ot().optional(),providerCoverage:r().optional()}),Kw=d({projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative(),combinedMentionSnapshots:m().int().nonnegative(),perCompetitor:y(d({domain:r(),mentionSnapshots:m().int().nonnegative(),shareOfCompetitiveTotal:ot()})),ranking:y(d({kind:j(["project","competitor"]),domain:r().nullable(),mentionSnapshots:m().int().nonnegative(),share:we(m().min(0).max(1))})),snapshotsWithAnswerText:m().int().nonnegative(),snapshotsTotal:m().int().nonnegative(),score:ot(m().min(0).max(100)).nullable()}),DU=As.extend({breakdown:Kw,scope:j(["non-brand","pooled"]),branded:Kw}),Nf=d({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:Jg,hasPreviousRun:E(),gainedQueries:y(r()).optional(),lostQueries:y(r()).optional()}),zU=d({hasPreviousRun:E(),comparable:E(),querySetChanged:E(),previousRunAt:r().nullable(),currentQueryCount:m().int().nonnegative(),previousQueryCount:m().int().nonnegative(),comparableQueryCount:m().int().nonnegative(),addedQueryCount:m().int().nonnegative(),removedQueryCount:m().int().nonnegative(),addedQueries:y(r()),removedQueries:y(r())}),IU=d({id:r(),projectId:r(),runId:r().nullable(),type:j(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:j(["critical","high","medium","low"]),title:r(),query:r(),provider:r(),recommendation:d({action:r(),target:r().optional(),reason:r()}).optional(),cause:d({cause:r(),competitorDomain:r().optional(),details:r().optional()}).optional(),dismissed:E(),createdAt:r()}),OU=d({id:r(),projectId:r(),runId:r().nullable(),overallCitedRate:we(),overallMentionRate:we(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:He(r(),d({citedRate:we(),mentionRate:we(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:r(),status:j(["ready","no-data"]),reason:R("no-runs-yet").optional()});d({sentiment:bU.optional(),project:rP,latestRun:wO,health:OU.nullable(),topInsights:y(IU),queryClassScope:d({queryClass:R("all"),figures:y(r()),note:r()}).optional(),queryCounts:d({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),notCitedQueries:m().int().nonnegative(),citedRate:we(),mentionedQueries:m().int().nonnegative(),notMentionedQueries:m().int().nonnegative(),mentionRate:we()}),providers:y(d({provider:r(),citedRate:we(),cited:m().int().nonnegative(),total:m().int().nonnegative()})),transitions:d({since:r().nullable(),gained:m().int().nonnegative(),lost:m().int().nonnegative(),emerging:m().int().nonnegative()}),scores:d({mention:As,visibility:As,mentionShare:DU,gapQueries:As,mentionGaps:As,indexCoverage:As,competitorPressure:As,runStatus:As}),movementSummary:Nf,citationMovement:Nf,mentionMovement:Nf,movementComparison:zU,competitors:y(d({id:r(),domain:r(),aliases:y(r()).optional(),citationCount:m().int().nonnegative(),totalQueries:m().int().nonnegative(),pressureLabel:j(["None","Low","Moderate","High"]),citedQueries:y(r())})),providerScores:y(d({provider:r(),model:r().nullable(),score:ot(),cited:m().int().nonnegative(),total:m().int().nonnegative(),trend:y(ot()).optional()})),attentionItems:y(d({id:r(),tone:Jg,title:r(),detail:r(),actionLabel:r(),href:r()})),runHistory:y(d({runId:r(),createdAt:r(),citedCount:m().int().nonnegative(),totalCount:m().int().nonnegative(),citationRate:ot(),mentionedCount:m().int().nonnegative(),mentionRate:ot(),status:r()})),suggestedQueries:d({rows:y(d({query:r(),impressions:m(),clicks:m(),avgPosition:m(),reason:r()})),totalCandidates:m().int().nonnegative(),skippedAlreadyTracked:m().int().nonnegative()}),dateRangeLabel:r(),contextLabel:r()});j(["snapshot","insight"]);const PU=d({kind:R("snapshot"),id:r(),runId:r(),query:r(),provider:r(),model:r().nullable(),citationState:Li,matchedField:j(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:r(),createdAt:r()}),qU=d({kind:R("insight"),id:r(),runId:r().nullable(),type:j(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:j(["critical","high","medium","low"]),title:r(),query:r(),provider:r(),matchedField:j(["title","query","recommendation","cause"]),snippet:r(),dismissed:E(),createdAt:r()}),MU=Be("kind",[PU,qU]);d({query:r(),totalHits:m().int().nonnegative(),truncated:E(),hits:y(MU)});const Y3=j(["create","expand","refresh","add-schema"]);Y3.enum;const X3=j(["gsc","competitor-evidence","both"]);X3.enum;const J3=j(["high","medium","low"]);J3.enum;const BU=j(["blog-post","comparison","listicle","how-to","guide","glossary"]);BU.enum;const W3=j(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);W3.enum;const Wg=j(["ownable","ceded"]);Wg.enum;const LU=d({url:r(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),UU=d({domain:r(),url:r(),title:r(),citationCount:m().int().nonnegative()}),VU=d({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),$U=d({actionId:r(),state:W3,lastUpdated:r()}),GU=d({targetRef:r(),query:r(),action:Y3,ourBestPage:LU.nullable(),winningCompetitor:UU.nullable(),score:m(),scoreBreakdown:VU,drivers:y(r()),demandSource:X3,actionConfidence:J3,existingAction:$U.nullable(),winnabilityClass:Wg,winnability:we(m().min(0).max(1)).nullable()});d({targets:y(GU),contextMetrics:d({totalAiReferralSessions:m().int().nonnegative(),latestRunId:r(),runTimestamp:r()})});const KU=d({targetRef:r(),addressedUrl:r().nullable(),note:r().nullable(),dismissedAt:r()});d({dismissals:y(KU)});d({targetRef:r().min(1),addressedUrl:r().url().optional(),note:r().max(500).optional()});d({targetRef:r(),promptVersion:r(),provider:r(),model:r(),responseText:r(),costMillicents:m().int().nonnegative(),generatedAt:r()});d({provider:r().optional(),model:r().optional(),forceRefresh:E().optional()});const HU=d({targetQuery:r().trim().min(1),winnabilityClass:Wg,angle:r().trim().min(1),whyWinnable:r().trim().min(1),schemaHookup:r().trim().min(1),controllableSurfaceRationale:r().trim().min(1)});d({targetRef:r(),promptVersion:r(),provider:r(),model:r(),brief:HU,costMillicents:m().int().nonnegative(),generatedAt:r()});const FU=d({domain:r(),competitorType:Fc,hits:m().int().nonnegative(),updatedAt:r()});d({classifications:y(FU)});const QU=d({uri:r(),title:r(),domain:r(),isOurDomain:E(),isCompetitor:E(),citationCount:m().int().nonnegative(),providers:y(jt)}),ZU=d({query:r(),groundingSources:y(QU)});d({sources:y(ZU),latestRunId:r()});const YU=d({query:r(),competitorDomains:y(r()),competitorCount:m().int().nonnegative(),missRate:we(m().min(0).max(1)),lastSeenInRunId:r()});d({gaps:y(YU),latestRunId:r()});const eA=j(["ok","warn","fail","skipped"]);eA.enum;const e1=j(["global","project"]);e1.enum;const tA=j(["auth","config","providers","integrations","database","schedules","agent"]);tA.enum;const nA=j(["health","silent"]);nA.enum;const XU=r().regex(/^[1-9]\d{3}-(0[1-9]|1[0-2])$/,"Expected YYYY-MM"),JU=d({id:r(),category:tA,scope:e1,title:r(),status:eA,notificationPolicy:nA.optional().describe("Health checks page by default. Silent report advisories remain visible but never affect health alert state."),code:r().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:r(),remediation:r().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:He(r(),wn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:m().int().nonnegative().describe("How long the check took to execute.")});d({scope:e1,project:r().nullable().describe('Project name when scope is "project", null otherwise.'),reportMonths:y(XU).optional().describe("Calendar months evaluated by project report readiness checks."),generatedAt:r().describe("ISO-8601 timestamp when this doctor run started."),durationMs:m().int().nonnegative(),summary:d({total:m().int().nonnegative(),ok:m().int().nonnegative(),warn:m().int().nonnegative(),fail:m().int().nonnegative(),skipped:m().int().nonnegative()}),checks:y(JU)});function WU(e){return e.trim().toLowerCase()}const eV=d({provider:r(),citationState:Li,cited:E(),mentioned:E(),runId:r(),runCreatedAt:r()}),tV=d({queryId:r(),query:r(),providers:y(eV),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),nV=d({queryId:r(),query:r(),provider:r(),citingCompetitors:y(r()),runId:r(),runCreatedAt:r()}),aV=d({providersConfigured:m().int().nonnegative(),providersCiting:m().int().nonnegative(),providersMentioning:m().int().nonnegative(),totalQueries:m().int().nonnegative(),queriesCitedAndMentioned:m().int().nonnegative(),queriesCitedOnly:m().int().nonnegative(),queriesMentionedOnly:m().int().nonnegative(),queriesInvisible:m().int().nonnegative(),latestRunId:r().nullable(),latestRunAt:r().nullable()});d({summary:aV,byQuery:y(tV),competitorGaps:y(nV),status:j(["ready","no-data"]),reason:j(["no-runs-yet","no-queries"]).optional()});const iV=Qe([R(60),R(90)]),sV=j(["earliest","middle","prior","latest"]),jr=d({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),aA=d({name:sV,startDate:r(),endDate:r()}),oV=aA.extend({totals:jr}),rV=aA.extend({organicSessions:m().int().nonnegative()}),Cf=d({startDate:r(),endDate:r(),observedDays:m().int().nonnegative()}),bd=d({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),Hw=d({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});d({contractVersion:R("organic-evidence/v1"),periodDays:iV,asOfDate:r().nullable(),coverage:d({gsc:E(),ga4:E(),server:E(),visibility:E()}),sourceCoverage:d({gsc:Cf.nullable(),ga4:Cf.nullable(),server:Cf.nullable(),visibility:d({completedAt:r(),ageDays:m().nonnegative()}).nullable()}),gsc:d({propertyTotals:jr,namedBrand:jr,namedNonBrand:jr,suppressedOrUnreportedResidual:jr,cohorts:y(oV)}).nullable(),ga4:d({organicSessions:m().int().nonnegative(),cohorts:y(rV)}).nullable(),gaAiReferrals:d({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:d({crawlerHits:bd,userFetchHits:bd,referralSessions:Hw}).nullable(),visibility:d({runId:r(),completedAt:r(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:Uz,pages:y(d({path:r(),gsc:jr,ga4OrganicSessions:m().int().nonnegative(),server:d({crawlerHits:bd,userFetchHits:bd,referralSessions:Hw})})),findings:y(d({tone:j(["positive","caution","neutral"]),title:r(),detail:r()})),limitations:y(d({code:r(),detail:r()}))});const lV=j(["claude","codex"]);lV.enum;const cV=j(["claude","codex","all"]);cV.enum;const iA=d({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),uV=j(["content","sitemap","robots","asset","other"]),t1=j(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);t1.enum;const dV=j(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);dV.enum;const mV=j(["raw-request","aggregate-bucket"]),pV=mV.enum,hV=j(["observed","provider-aggregated","inferred"]),fV=hV.enum,gV=d({type:r().nullable(),labels:He(r(),r())}),yV=d({sourceType:t1,evidenceKind:R(pV["raw-request"]),confidence:R(fV.observed),eventId:r().min(1),observedAt:r().min(1),method:r().nullable(),requestUrl:r().nullable(),host:r().nullable(),path:r().min(1),queryString:r().nullable(),status:m().int().nullable(),userAgent:r().nullable(),remoteIp:r().nullable(),referer:r().nullable(),latencyMs:m().nullable(),requestSizeBytes:m().int().nullable(),responseSizeBytes:m().int().nullable(),providerResource:gV,providerLabels:He(r(),r())});d({events:y(yV),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:r().optional(),filter:r()});const sA=j(["connected","paused","error","archived"]),ste=sA.enum,oA=j(["oauth","service-account"]);oA.enum;const bV=j(["verified","claimed_unverified","unknown_ai_like"]),ote=bV.enum,vV=d({id:r().min(1),source:r().min(1),version:r().min(1)}),rA=d({manifestId:r().min(1),manifest:vV.nullable(),hits:m().int().nonnegative()});d({gcpProjectId:r().min(1),serviceName:r().nullable().optional(),location:r().nullable().optional(),authMode:oA});d({baseUrl:r().url(),username:r().min(1)});const n1=j(["production","preview"]);n1.enum;d({projectId:r().min(1),teamId:r().min(1),environment:n1});const lA=d({id:r(),projectId:r(),sourceType:t1,displayName:r(),status:sA,lastSyncedAt:r().nullable(),lastCursor:r().nullable(),lastError:r().nullable(),skippedThroughAt:r().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:r().nullable(),archivedAt:r().nullable(),config:He(r(),wn()),createdAt:r(),updatedAt:r()});d({gcpProjectId:r().min(1),serviceName:r().min(1).optional(),location:r().min(1).optional(),displayName:r().min(1).optional(),keyJson:r().optional()});d({baseUrl:r().url(),username:r().min(1),applicationPassword:r().min(1),displayName:r().min(1).optional()});d({projectId:r().min(1),teamId:r().min(1),token:r().min(1),environment:n1.optional(),displayName:r().min(1).optional()});const xV=j(["direct-push","queue-pull"]),Xr=xV.enum,a1=r().regex(/^(?=.{1,63}$)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,"Cloudflare Queue name must be 1-63 characters, use only letters, numbers, or dashes, and start and end with a letter or number"),cA=d({schemaVersion:R(1),workerVersion:r().min(1),expectedBotListVersion:r().min(1),zoneId:r().nullable()}),wV=cA.extend({deliveryMode:R(Xr["direct-push"]),accountId:r().nullable()}),kV=cA.extend({deliveryMode:R(Xr["queue-pull"]),accountId:r().min(1),queueId:r().min(1),queueName:a1,retentionSeconds:m().int().min(60).max(1209600)});function uA(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const n=e;return"deliveryMode"in n?e:{...n,deliveryMode:"direct-push"}}Ki(uA,Be("deliveryMode",[wV,kV]));const dA=d({displayName:r().min(1).optional(),zoneId:r().min(1).optional()}),SV=dA.extend({deliveryMode:R(Xr["direct-push"]),accountId:r().min(1).optional()}),jV=dA.extend({deliveryMode:R(Xr["queue-pull"]),accountId:r().min(1),queueId:r().min(1),queueName:a1,retentionSeconds:m().int().min(60).max(1209600),apiToken:r().min(1)});Ki(uA,Be("deliveryMode",[SV,jV]));const mA=d({sourceId:r().min(1),workerScript:r().min(1),wranglerToml:r().min(1),workerVersion:r().min(1),instructions:r().min(1)}),AV=mA.extend({deliveryMode:R(Xr["direct-push"]),activationRequired:E().default(!1)}),NV=mA.extend({deliveryMode:R(Xr["queue-pull"]),activationRequired:E().default(!1),accountId:r().min(1),queueId:r().min(1),queueName:a1,retentionSeconds:m().int().min(60).max(1209600)});Be("deliveryMode",[AV,NV]);const CV=d({eventId:r().min(1),observedAt:r().datetime(),method:r().nullable(),host:r().nullable(),path:r().min(1),queryString:r().nullable(),status:m().int().nullable(),userAgent:r().nullable(),remoteIp:r().nullable(),referer:r().nullable(),cf:d({verifiedBot:E().nullable(),botScore:m().int().nullable(),country:r().nullable(),asn:m().int().nullable(),asOrganization:r().nullable()}).nullable()});d({schemaVersion:R(1),workerVersion:r().min(1),events:y(CV).min(1).max(100)});d({acceptedEvents:m().int(),droppedEvents:m().int(),workerVersionAck:r(),crawlerBucketRows:m().int(),aiUserFetchBucketRows:m().int(),aiReferralBucketRows:m().int(),sampleRows:m().int()});d({sourceId:r(),runId:r(),syncedAt:r(),pulledEvents:m().int().nonnegative(),selfTrafficExcluded:m().int().nonnegative(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),unknownHits:m().int().nonnegative(),crawlerBucketRows:m().int().nonnegative(),aiUserFetchBucketRows:m().int().nonnegative(),aiReferralBucketRows:m().int().nonnegative(),sampleRows:m().int().nonnegative(),remainingBacklogCount:m().int().nonnegative().optional(),windowStart:r(),windowEnd:r()});d({days:m().int().positive().optional()});d({advanceToNow:R(!0)});d({sourceId:r(),runId:r(),status:ha,windowStart:r(),windowEnd:r(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const _V=d({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:iA,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});d({sources:y(lA)});const TV=lA.extend({totals24h:_V,latestRun:d({runId:r(),status:ha,startedAt:r().nullable(),finishedAt:r().nullable(),error:r().nullable()}).nullable()});d({sources:y(TV)});const EV=j(["crawler","ai-user-fetch","ai-referral"]),i1=EV.enum,pA=j(["hour","day"]);pA.enum;const RV=d({bucket:r(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),measured:E()}),DV=d({kind:R(i1.crawler),sourceId:r(),tsHour:r(),botId:r(),operator:r(),verificationStatus:r(),verificationManifests:y(rA).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:r(),pathClass:uV,status:m().int(),hits:m().int().nonnegative()}),zV=d({kind:R(i1["ai-user-fetch"]),sourceId:r(),tsHour:r(),botId:r(),operator:r(),verificationStatus:r(),verificationManifests:y(rA).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:r(),status:m().int(),hits:m().int().nonnegative()}),IV=d({kind:R(i1["ai-referral"]),sourceId:r(),tsHour:r(),product:r(),operator:r(),sourceDomain:r(),evidenceType:r(),landingPathNormalized:r(),status:m().int(),hits:m().int().nonnegative(),paidHits:m().int().nonnegative(),organicHits:m().int().nonnegative(),unknownHits:m().int().nonnegative()}),OV=Be("kind",[DV,zV,IV]);d({windowStart:r(),windowEnd:r(),series:d({granularity:pA,points:y(RV),coverageStart:r().nullable(),trends:d({crawlerContentHits:xo.nullable(),aiUserFetchHits:xo.nullable(),aiReferralLandedHits:xo.nullable()})}),totals:d({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:iA,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),aiReferralPaidHits:m().int().nonnegative(),aiReferralOrganicHits:m().int().nonnegative(),aiReferralUnknownHits:m().int().nonnegative()}),eventRows:d({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:E()}),events:y(OV)});const s1=j(["admin","viewer"]),PV=/^[a-z\d][\w.-]{0,63}$/i,qV=r().regex(PV,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Fw=12,MV=r().min(Fw,`A password must be at least ${Fw} characters.`),hA=d({id:r(),name:r(),role:s1,createdAt:r(),lastLoginAt:r().nullable()});d({users:y(hA)});d({name:qV,password:MV,role:s1});d({name:r().min(1),password:r().min(1)});d({authRequired:E(),user:hA.pick({name:!0,role:!0}).nullable()});const fA=j(["queued","running","completed","partial","failed"]),rte=fA.enum,gA=j(["queued","running","completed","failed"]),lte=gA.enum,BV=20,LV=20,h0=50,yA=d({kind:j(["market","property"]),key:he,expectedPlanRevision:m().int().positive().optional()}).strict(),UV=d({kind:j(["market","property"]),key:he,label:r().trim().min(1),planRevision:m().int().positive()}).strict(),bA=r().min(1).max(4e3).refine(e=>e.trim().length>0,"Research queries cannot be blank.");function cte(e){const n=new Set;return e.filter(i=>{const o=WU(i);return!o||n.has(o)?!1:(n.add(o),!0)})}function VV(e,n){const i=e?e.kind==="market"?{market:e.label,submarket:e.label}:{property:e.label,propertyBrand:e.label}:{};return n?{...i,location:n.label}:i}function ute(e,n,i){const o=new Set(e.variables),u=[...e.pattern.matchAll(/\{([^{}]+)\}/g)].map(x=>x[1]),h=[...new Set(u.filter(x=>!o.has(x)))];if(h.length)throw Px("The selected research template contains undeclared placeholders: "+h.join(", "));const f=VV(n,i),b=e.variables.filter(x=>f[x]===void 0);if(b.length)throw Px("The selected research template requires unavailable bindings: "+b.join(", "));const v=Object.fromEntries(e.variables.map(x=>[x,f[x]]));return{bindings:v,output:BP(e.pattern,v)}}const vA=d({templateId:r().trim().min(1).max(256),templateVersion:r().trim().min(1).max(256),bindingLocation:mn.nullable().optional()}).strict();d({queries:y(bA).min(1).max(50),provider:r().trim().min(1).optional(),model:r().trim().min(1).max(200).optional(),location:mn.nullable().optional(),scope:yA.optional(),template:vA.optional(),idempotencyKey:r().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:ye.custom,path:["provider"],message:"provider is required when model is supplied"})});const $V=yA.extend({expectedPlanRevision:m().int().positive()}).strict(),GV=d({queries:y(bA).min(1).max(h0),provider:r().trim().min(1),model:r().trim().min(1).max(200),location:mn.nullable(),scope:$V.optional(),template:vA.optional()}).strict();d({idempotencyKey:r().trim().min(1).max(128),runs:y(GV).min(1).max(LV)}).strict().superRefine((e,n)=>{e.runs.reduce((o,u)=>o+u.queries.length,0)>h0&&n.addIssue({code:ye.custom,path:["runs"],message:`A research batch may contain at most ${h0} concrete queries across all destinations`})});const KV=d({kind:j(["api-key","user"]),id:r(),name:r(),role:s1.nullable(),limited:E().optional()}),xA=d({id:r(),projectId:r(),status:fA,provider:r(),requestedModel:r().nullable(),resolvedModel:r(),location:mn.nullable(),scope:UV.nullable().optional(),template:Ij.nullable().optional(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:r().nullable(),initiatedBy:KV.nullable(),startedAt:r().nullable(),finishedAt:r().nullable(),createdAt:r()}),HV=d({id:r(),position:m().int(),query:r(),queryClass:Vr.nullable().optional(),status:gA,requestedModel:r().nullable(),resolvedModel:r(),servedModel:r().nullable(),answerText:r().nullable(),groundingSources:y(wm),citedDomains:y(r()),searchQueries:y(r()),namedCompetitors:y(r()).default([]),citedCompetitorDomains:y(r()).default([]),answerMentioned:E().nullable(),citationState:Li.nullable(),error:r().nullable(),startedAt:r().nullable(),finishedAt:r().nullable(),createdAt:r()}),FV=xA.extend({queries:y(HV)});d({runs:y(FV)});const QV=d({name:r(),displayName:r(),modelConfigurable:E(),defaultModel:r(),knownModels:y(d({id:r(),displayName:r()}))});d({runs:y(xA),nextCursor:r().nullable().optional(),providers:y(QV).optional(),access:d({canRun:E(),dailyRunLimit:m().int().positive().nullable()}).optional()});d({apiKey:r().min(1)});d({id:r(),name:r(),status:r(),currencyCode:r().nullable(),timezone:r().nullable(),url:r().nullable(),reviewStatus:r().nullable(),integrityReviewStatus:r().nullable(),integrityDecision:r().nullable()});d({q:r().trim().min(1).max(200),limit:m().int().min(1).max(100).default(20)});const ZV=d({id:r(),type:r(),canonicalName:r(),countryCode:r(),name:r(),regionCode:r().nullable()});d({count:m().int().nonnegative(),query:r(),results:y(ZV)});const YV=d({id:r(),clientType:r().optional(),name:r().optional(),pixelId:r().optional()});d({pixels:y(YV)});const XV=d({id:r(),name:r().optional()}),JV=d({id:r(),name:r().optional(),eventType:r().optional(),customEventName:r().nullable().optional(),attributionWindowDays:m().int().positive().optional(),adAccountId:r().optional(),sourceIds:y(r()).optional(),sources:y(XV).optional(),archived:E().optional(),version:m().int().nonnegative().optional()});d({eventSettings:y(JV)});d({connected:E(),adAccountId:r().nullable().optional(),displayName:r().nullable().optional(),currencyCode:r().nullable().optional(),timezone:r().nullable().optional(),status:r().nullable().optional(),reviewStatus:r().nullable().optional(),integrityReviewStatus:r().nullable().optional(),integrityDecision:r().nullable().optional(),lastSyncedAt:r().nullable().optional(),conversionTrackingConfigured:E().optional()});d({disconnected:E()});d({runId:r(),status:r()});const WV=["campaign_id","ad_group_id","ad_id","ad_account_id","oppref"],e$=/^[\w.-]+=[^&#\s]*$/,t$=/\{([^}]*)\}/g,Ro=r().min(1).max(1e3).superRefine((e,n)=>{const i=u=>n.addIssue({code:"custom",message:u});if(e.startsWith("?")||e.startsWith("&")){i("Tracking template must not start with ? or &");return}const o=new Set;for(const u of e.split("&")){if(!e$.test(u)){i(`Tracking template pair '${u}' must be key=value without whitespace, # or &`);return}const h=u.slice(0,u.indexOf("="));if(o.has(h)){i(`Tracking template repeats the parameter '${h}'`);return}o.add(h)}for(const u of e.matchAll(t$)){const h=u[1];if(!WV.includes(h)){i(`Tracking template macro '{${h}}' is not supported`);return}}}),n$=d({type:r().nullable().optional(),title:r().nullable().optional(),body:r().nullable().optional(),targetUrl:r().nullable().optional(),fileId:r().nullable().optional()}),Zc=j(["impressions","clicks"]);Zc.enum;const Yc=j(["impression","click"]);Yc.enum;const a$=d({id:r(),adGroupId:r(),name:r(),status:r(),reviewStatus:r().nullable().optional(),creative:n$.nullable().optional(),landingPageQueryStringTemplate:r().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:r().optional()}),i$=d({id:r(),campaignId:r(),name:r(),description:r().nullable().optional(),status:r(),billingEventType:Qe([Yc,ue()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(r()).default([]),ads:y(a$).default([]),landingPageQueryStringTemplate:r().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:r().optional()}),s$=d({id:r(),name:r(),description:r().nullable().optional(),status:r(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Qe([Zc,ue()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(r()).default([]),locationIds:y(r()).optional(),adGroups:y(i$).default([]),landingPageQueryStringTemplate:r().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:r().optional()});d({campaigns:y(s$)});const wA=j(["campaign","ad_group"]);wA.enum;const o$=d({level:wA,entityId:r(),date:r(),impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:we().nullable(),cpcMicros:m().int().nullable(),inProgress:E()});d({rows:y(o$),currencyCode:r().nullable().optional()});const kA=d({from:r().nullable(),to:r().nullable(),inProgressDate:r().nullable()}),SA=d({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:we().nullable(),cpcMicros:m().int().nullable()});d({connected:E(),displayName:r().nullable().optional(),currencyCode:r().nullable().optional(),lastSyncedAt:r().nullable().optional(),campaignCount:m().int(),adGroupCount:m().int(),adCount:m().int(),window:kA,totals:SA});const jA=j(["unavailable","partial","complete"]);jA.enum;const AA=j(["no_ads_connection","connection_not_synced","no_ads_sync","entity_rows_missing_sync_run_id","entity_rows_span_multiple_sync_runs","source_sync_missing","source_sync_not_ads_sync","source_sync_not_completed"]);AA.enum;const NA=j(["unavailable","reported"]);NA.enum;const r$={storedSnapshot:"stored_ads_snapshot"},CA=j(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);CA.enum;const l$=d({id:r(),name:r(),status:r(),reviewStatus:r().nullable()}),c$=d({id:r(),name:r(),status:r(),billingEventType:Qe([Yc,ue()]),maxBidMicros:m().int().nullable(),contextHints:y(r()),ads:y(l$)}),u$=d({id:r(),name:r(),status:r(),biddingType:Qe([Zc,ue()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(r()),adGroups:y(c$)});d({snapshot:d({status:jA,issue:Qe([AA,ue()]),lastSyncedAt:r().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:d({runId:r(),status:ha}).nullable()}),historicalCampaignRollups:d({status:NA,window:kA,totals:SA.nullable()}),storedConfiguration:d({basis:R(r$.storedSnapshot),connection:d({status:r().nullable(),reviewStatus:r().nullable(),integrityReviewStatus:r().nullable(),integrityDecision:r().nullable(),conversionTrackingConfigured:E()}).nullable(),campaigns:y(u$)}),assessment:d({state:CA})});const ri=r().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),$t=r().min(1).max(200),Do=r().min(3).max(1e3).refine(e=>e.trim().length>0),Pr=m().int().min(946684800).max(4102444800),qr=m().int().positive().max(Number.MAX_SAFE_INTEGER),o1=r().regex(/^[a-f0-9]{64}$/),_A=y($t).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),TA=r().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),EA=j(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_archive","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_group_archive","ad_create","ad_update","ad_pause","ad_archive"]);EA.enum;const RA=j(["pending","reconciling","succeeded","failed","unknown"]),Tr=RA.enum,DA=j(["known_entity","create_fingerprint","manual_only"]);DA.enum;const zA=j([Tr.pending,Tr.unknown,Tr.reconciling]);zA.enum;const IA=j(["active","paused","archived"]);IA.enum;const OA=j(["file","campaign","ad_group","ad"]);OA.enum;const PA=j(["campaign","ad_group","ad"]);PA.enum;const r1=d({id:$t,expectedUpdatedAt:m().int().nonnegative()}).strict(),d$=r1,Jd=1e3;function m$(e){return 1+e.campaign.adGroups.reduce((n,i)=>n+1+i.ads.length,0)}const p$=r1.extend({ads:y(d$).min(1).max(Jd-1)}).strict(),h$=r1.extend({adGroups:y(p$).min(1).max(Jd-1)}).strict();function f$(e,n){return e<n?-1:e>n?1:0}function Qw(e,n,i){for(let o=1;o<e.length;o+=1)if(f$(e[o-1].id,e[o].id)>=0){i.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const qA=d({campaign:h$}).strict().superRefine((e,n)=>{m$(e)>Jd&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${Jd} entities`}),Qw(e.campaign.adGroups,["campaign","adGroups"],n);const o=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const h=e.campaign.adGroups[u];Qw(h.ads,["campaign","adGroups",u,"ads"],n);for(let f=0;f<h.ads.length;f+=1){const b=h.ads[f];o.has(b.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",f,"id"],message:"An ad may appear only once in an activation manifest"}),o.add(b.id)}}}),MA=o1,g$=j(["approved","executing","consumed","revoked","expired","unknown"]),Mi=g$.enum,y$=j(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Ps=y$.enum,b$=d({name:Do.optional(),description:r().max(4e3).nullable().optional(),status:IA.optional(),startTime:Pr.nullable().optional(),endTime:Pr.nullable().optional(),lifetimeSpendLimitMicros:qr.min(1e6).optional(),locationIds:y($t).max(100).optional(),biddingType:Zc.optional(),conversionEventSettingIds:_A.optional(),campaignId:$t.optional(),contextHints:y(r().min(1).max(1e3)).max(100).optional(),maxBidMicros:qr.max(1e8).optional(),billingEventType:Yc.optional(),adGroupId:$t.optional(),creativeFingerprint:o1.optional(),landingPageQueryStringTemplate:Ro.nullable().optional()}).strict();d({operationKey:ri,imageUrl:TA});d({operationKey:ri,name:Do,description:r().max(4e3).optional(),startTime:Pr.optional(),endTime:Pr.optional(),lifetimeSpendLimitMicros:qr.min(1e6),locationIds:y($t).min(1).max(100),biddingType:Zc.optional(),conversionEventSettingIds:_A.optional(),landingPageQueryStringTemplate:Ro.optional()}).superRefine((e,n)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&n.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"})});d({operationKey:ri,campaignId:$t,name:Do,description:r().max(4e3).optional(),contextHints:y(r().min(1).max(1e3)).min(1).max(100),maxBidMicros:qr.max(1e8),billingEventType:Yc.optional(),landingPageQueryStringTemplate:Ro.optional()});const BA=d({title:r().min(3).max(50),body:r().min(1).max(100),targetUrl:TA,fileId:$t});d({operationKey:ri,adGroupId:$t,name:Do,creative:BA,landingPageQueryStringTemplate:Ro.optional()});function l1(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}d({operationKey:ri,expectedUpdatedAt:m().int().nonnegative(),name:Do.optional(),description:r().max(4e3).nullable().optional(),startTime:Pr.nullable().optional(),endTime:Pr.nullable().optional(),lifetimeSpendLimitMicros:qr.min(1e6).optional(),locationIds:y($t).min(1).max(100).optional(),landingPageQueryStringTemplate:Ro.nullable().optional()}).refine(l1,{message:"At least one campaign field must be updated"});d({operationKey:ri,expectedUpdatedAt:m().int().nonnegative(),name:Do.optional(),description:r().max(4e3).nullable().optional(),contextHints:y(r().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:qr.max(1e8).optional(),landingPageQueryStringTemplate:Ro.nullable().optional()}).refine(l1,{message:"At least one ad group field must be updated"});d({operationKey:ri,expectedUpdatedAt:m().int().nonnegative(),name:Do.optional(),creative:BA.optional(),landingPageQueryStringTemplate:Ro.nullable().optional()}).refine(l1,{message:"At least one ad field must be updated"});d({operationKey:ri});d({operationKey:ri,expectedUpdatedAt:m().int().nonnegative()});const qm=d({id:r(),adAccountId:r().nullable(),operationKey:r(),kind:EA,state:RA,entityType:Qe([OA,ue()]),entityId:r().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:r().nullable(),errorMessage:r().nullable(),reconcileStrategy:Qe([DA,ue()]),reconcileParentId:$t.nullable(),reconcileFingerprint:o1.nullable(),reconcileFields:b$.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:r().nullable(),createdAt:r(),updatedAt:r()});d({operation:qm,replayed:E()});const Ot=l2({offset:!0}),Jr={id:$t,projectId:$t,adAccountId:$t,manifestHash:MA,manifest:qA,executorApiKeyId:$t,approverApiKeyId:$t,expiresAt:Ot,approvedAt:Ot,createdAt:Ot,updatedAt:Ot,revocationRequestedAt:Ot.nullable()},v$=d({...Jr,state:R(Mi.approved),operationId:ue(),executionStartedAt:ue(),consumedAt:ue(),revokedAt:ue(),expiredAt:ue()}).strict(),x$=d({...Jr,state:R(Mi.executing),operationId:$t,executionStartedAt:Ot,consumedAt:ue(),revokedAt:ue(),expiredAt:ue()}).strict(),w$=d({...Jr,state:R(Mi.consumed),operationId:$t,executionStartedAt:Ot,consumedAt:Ot,revokedAt:ue(),expiredAt:ue()}).strict(),k$=d({...Jr,state:R(Mi.revoked),operationId:ue(),executionStartedAt:ue(),consumedAt:ue(),revokedAt:Ot,expiredAt:ue()}).strict(),S$=d({...Jr,state:R(Mi.expired),operationId:ue(),executionStartedAt:ue(),consumedAt:ue(),revokedAt:ue(),expiredAt:Ot}).strict(),j$=d({...Jr,state:R(Mi.unknown),operationId:$t,executionStartedAt:Ot,consumedAt:ue(),revokedAt:ue(),expiredAt:ue()}).strict(),LA=Be("state",[v$,x$,w$,k$,S$,j$]).superRefine((e,n)=>{e.executorApiKeyId===e.approverApiKeyId&&n.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Mi.executing&&e.state!==Mi.unknown&&e.state!==Mi.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),qs={id:$t,operationId:$t,ordinal:m().int().nonnegative(),entityType:PA,entityId:$t,expectedUpdatedAt:m().int().nonnegative(),createdAt:Ot,updatedAt:Ot},Xc={errorCode:ue(),errorMessage:ue()},c1={errorCode:r().min(1).max(100),errorMessage:r().min(1).max(500),remediation:r().min(1).max(500)},A$=d({...qs,...Xc,state:R(Ps.pending),providerUpdatedAt:ue(),remediation:ue(),startedAt:ue(),finishedAt:ue()}).strict(),N$=d({...qs,...Xc,state:R(Ps.executing),providerUpdatedAt:ue(),remediation:ue(),startedAt:Ot,finishedAt:ue()}).strict(),C$=d({...qs,...Xc,state:R(Ps.active),providerUpdatedAt:m().int().nonnegative(),remediation:ue(),startedAt:Ot,finishedAt:Ot}).strict(),_$=d({...qs,...c1,state:R(Ps.failed),providerUpdatedAt:Qe([m().int().nonnegative(),ue()]),startedAt:Ot,finishedAt:Ot}).strict(),T$=d({...qs,...Xc,state:R(Ps.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:r().min(1).max(500),startedAt:Ot,finishedAt:ue()}).strict(),E$=d({...qs,...Xc,state:R(Ps.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:r().min(1).max(500),startedAt:Ot,finishedAt:Ot}).strict(),R$=d({...qs,...c1,state:R(Ps.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:Ot,finishedAt:Ot}).strict(),D$=d({...qs,...c1,state:R(Ps.unknown),providerUpdatedAt:Qe([m().int().nonnegative(),ue()]),startedAt:Ot,finishedAt:Ot}).strict(),z$=Be("state",[A$,N$,C$,_$,T$,E$,R$,D$]),f0={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},I$=j([f0.exact,f0.refreshSemanticallyUnchanged]);d({manifest:qA,executorApiKeyId:$t,expiresAt:Ot,versionPolicy:I$.default(f0.exact)}).strict();d({grant:LA}).strict();d({}).strict();d({operationKey:ri,grantId:$t,manifestHash:MA}).strict();d({grant:LA,operation:qm,steps:y(z$)}).strict();const O$=[Tr.pending,Tr.unknown,Tr.reconciling];function P$(e){if(e===void 0||e==="")return O$;if(Array.isArray(e)){const n=[];for(const i of e)typeof i=="string"?n.push(...i.split(",")):n.push(i);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}d({state:Ki(P$,y(zA).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Bi().int().min(1).max(200).default(100),cursor:r().min(1).max(1e3).optional()});d({operations:y(qm),count:m().int().nonnegative(),nextCursor:r().nullable()});d({}).strict();d({operation:qm,resolved:E()});d({campaignId:r().min(1).max(200).optional(),lookbackDays:Bi().int().min(1).max(30).default(7)});const UA=j(["campaign","ad_group","ad"]);UA.enum;const VA=j(["both","live-only","stored-only"]);VA.enum;const q$=R("live-provider-read"),M$=d({date:r().nullable(),startTime:m().nullable(),endTime:m().nullable(),impressions:m().nullable(),clicks:m().nullable(),spend:m().nullable(),conversions:m().nullable(),ctr:we().nullable(),cpc:m().nullable(),cpm:m().nullable()}),Zw=d({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),B$=d({date:r(),live:Zw.nullable(),stored:Zw.nullable(),drifted:E()}),L$=d({field:r(),live:r().nullable(),stored:r().nullable()}),U$=d({name:r().nullable(),status:r(),reviewStatus:r().nullable(),mode:r().nullable(),updatedAt:m().nullable()}),V$=d({name:r(),status:r(),reviewStatus:r().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:r()}),$$=d({entityType:UA,id:r(),parentId:r().nullable(),presence:VA,live:U$.nullable(),stored:V$.nullable(),fieldDeltas:y(L$),liveMetrics:y(M$).nullable(),metricDeltas:y(B$).nullable(),drifted:E()}),G$=d({surface:r(),entityId:r().nullable(),upstreamStatus:m().int().nullable()});d({basis:q$,fetchedAt:r(),adAccountId:r(),storedSnapshotSyncedAt:r().nullable(),metricsWindow:d({lookbackDays:m().int().positive()}),bounds:d({maxCampaigns:m().int().positive(),maxAdGroupsPerCampaign:m().int().positive(),maxAdsPerAdGroup:m().int().positive(),maxReaderCalls:m().int().positive(),readerCalls:m().int().nonnegative(),maxPagesPerReaderCall:m().int().positive(),maxUpstreamHttpRequests:m().int().positive(),truncated:E()}),entities:y($$),drift:d({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(G$)});const K$=d({status:j(["available","unavailable","not-supported"])}),Yw="*";function $A(e){if(e?.some(n=>n.trim().toLowerCase()==="report"))return"The report embed tab has been retired. Remove report from the allowed tabs; explicitly configure overview to display AI Visibility."}const H$=j(["enabled","configured_disabled","CANONRY_TELEMETRY_DISABLED","DO_NOT_TRACK","CI","NO_CONFIG","CONFIG_UNAVAILABLE"]),F$=j(["server","local"]);d({enabled:E(),configuredEnabled:E(),reason:H$,anonymousId:r().regex(/^[0-9a-f]{8}\.\.\.$/i).optional(),target:F$.optional()}).strict();const ft=1,_f=j(["system","project","queries","competitors","run","finish"]),Q$=j(["copy_agent_command","connect_server_traffic","connect_search_console","connect_analytics","connect_business_profile","set_schedule","add_notification","open_project","review_page_health"]),Tf=j(["0","1","2-3","4-5","6-10","11+"]);function ai(e){return!Number.isFinite(e)||e<=0?"0":e<2?"1":e<4?"2-3":e<6?"4-5":e<11?"6-10":"11+"}const Xw=j(["api_unavailable","database_unavailable","worker_unavailable","no_provider","no_queries","provider_save_failed","project_create_failed","query_save_failed","run_rejected","run_failed","run_cancelled","rate_limited","provider_auth","network","unknown"]),Z$=j(["wizard","platform","site_health"]),vd=d({eventId:r().uuid(),flowVersion:R(ft),onboardingSessionId:r().uuid(),surface:Z$.optional()});Be("event",[vd.extend({event:R("onboarding.started"),step:_f,resumed:E()}).strict(),vd.extend({event:R("onboarding.step_completed"),step:_f,method:j(["existing","inline","manual","generated","skipped","automatic"]),countBucket:Tf.optional(),nextAction:Q$.optional()}).strict(),vd.extend({event:R("onboarding.blocked"),step:_f,action:j(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Xw}).strict(),vd.extend({event:R("run.requested"),origin:R("dashboard_setup"),result:j(["queued","rejected"]),kind:j(["answer_visibility","site_health"]).optional(),providerCountBucket:Tf,queryCountBucket:Tf,reasonCode:Xw.optional()}).strict()]);d({accepted:E()});j(["cli","mcp-stdio","mcp-http","aero","api","dashboard"]);const GA=["/","/projects","/projects/:projectName","/projects/:projectName/portfolio","/projects/:projectName/search-console","/projects/:projectName/conversions","/projects/:projectName/local","/projects/:projectName/discovery","/projects/:projectName/queries","/projects/:projectName/properties/:targetKey","/projects/:projectName/report","/projects/:projectName/activity","/projects/:projectName/backlinks","/projects/:projectName/technical-aeo","/projects/:projectName/history","/projects/:projectName/settings","/runs","/history","/settings","/setup","/backlinks","/traffic","/traffic/:projectName/:sourceId","not-found","other"],Y$=j(GA),KA=["overview","portfolio","search-console","conversions","local","discovery","queries","properties","report","activity","backlinks","technical-aeo","history","settings","other"],Ef=j(KA),X$=["sweep.launch","sweep.cancel","site_audit.launch","project.create","project.update","project.delete","query.add","query.delete","query.generate","competitor.save","competitor.delete","schedule.save","schedule.delete","provider.save","settings.save","integration.connect_started","integration.connect","integration.disconnect","traffic.sync","notification.save","notification.test","measurement_plan.publish","discovery.run","api_key.create","api_key.revoke","export.download","report.download","aero.open","aero.send","filter.change","search.submit"],J$=j(X$),W$=["google","gsc","ga","bing","gbp","wordpress","openai_ads","google_ads","gtm","traffic_cloudflare","traffic_vercel","traffic_cloud_run","traffic_wordpress"],eG=j(W$),tG=["provider","model","location","window","query_class","other"],nG=j(tG),aG=["csv","json","html"],iG=["render","unhandled","api"],sG=["4xx","5xx","network"],oG=["LCP","INP","CLS","FCP","TTFB"],rG=["good","needs-improvement","poor"],HA=/^[a-z][a-z0-9-]{0,39}$/,FA=/^[a-z_$][\w$]{0,39}$/i,lG=/^\/api\/v1(?:\/(?:[a-z][a-z0-9-]*(?:\.[a-z]+)?|\{[A-Za-z]+\}))*$/,QA=160,cG=new Set(["accounts","activation-grants","ad-groups","ads","cache","campaigns","competitors","confirm","connections","containers","contracts","conversations","dismissals","insights","jobs","keys","locations","measurement-query-sets","measurement-query-templates","notifications","operations","projects","providers","queries","recommendations","runs","screenshots","segments","sessions","snapshots","sources","users","versions"]),uG=new Set(["ads/account","ads/activation-grants","ads/ad-groups","ads/ads","ads/campaigns","ads/connect","ads/connection","ads/conversions","ads/delivery-diagnostics","ads/files","ads/geo","ads/insights","ads/live-delivery","ads/operations","ads/status","ads/summary","ads/sync","keys/self","locations/default","locations/discover","notifications/events","operations/logs","queries/generate","queries/replace-preview","runs/latest","snapshots/diff"]),dG=/^\{[a-z]+\}$/i;function ZA(e){if(e.length>QA||e.includes("://")||!lG.test(e))return!1;const n=e.split("/").slice(3);return n.every((i,o)=>{const u=n[o-1];return u===void 0||!cG.has(u)?!0:dG.test(i)||uG.has(`${u}/${i}`)})}const xd=d({eventId:r().uuid(),uiSessionId:r().uuid(),page:Y$});Be("event",[xd.extend({event:R("ui.page_viewed"),tab:Ef.optional()}).strict(),xd.extend({event:R("ui.action"),action:J$,tab:Ef.optional(),integration:eG.optional(),format:j(aG).optional(),filter:nG.optional()}).strict(),xd.extend({event:R("ui.error"),kind:j(iG),tab:Ef.optional(),component:r().regex(HA).optional(),errorName:r().regex(FA).optional(),route:r().max(QA).refine(ZA,"route must be a route template").optional(),method:j(["GET","POST","PUT","PATCH","DELETE"]).optional(),statusClass:j(sG).optional(),status:m().int().min(400).max(599).optional()}).strict(),xd.extend({event:R("ui.vitals"),metric:j(oG),rating:j(rG)}).strict()]);function mG(e){if(!e)return"other";if(e==="*"||e==="$"||e.endsWith("/*")||e.endsWith("/$"))return"not-found";const n=e.replace(/\$([a-z]\w*)/gi,":$1").replace(/(.)\/+$/,"$1");return GA.includes(n)?n:"other"}function YA(e){if(e==="/projects/:projectName")return"overview";const n=/^\/projects\/:projectName\/([a-z-]+)/.exec(e);if(!n)return;const i=n[1];return KA.includes(i)?i:"other"}const pG=["struggle","bug","improvement","other"],hG=j(pG),cc={summary:500,details:4e3,area:40,command:120,errorCode:40};d({kind:hG,summary:r().trim().min(1).max(cc.summary),details:r().trim().min(1).max(cc.details).optional(),area:r().trim().min(1).max(cc.area).optional(),command:r().trim().min(1).max(cc.command).optional(),errorCode:r().trim().min(1).max(cc.errorCode).optional()}).strict();d({accepted:E(),id:r()});const fG=4;function gG(e){return e.length<fG}const XA=j(["trace","debug","info","warn","error","fatal"]),JA=d({runId:r().min(1).max(256).optional(),projectId:r().min(1).max(256).optional(),requestId:r().min(1).max(256).optional(),actor:r().min(1).max(512).optional(),credentialId:r().min(1).max(512).optional(),userAgent:r().min(1).max(512).optional(),actorSession:r().min(1).max(512).optional(),method:r().min(1).max(16).optional(),route:r().min(1).max(256).optional(),operationId:r().min(1).max(256).optional(),jobId:r().min(1).max(256).optional(),taskId:r().min(1).max(256).optional(),traceId:r().min(1).max(256).optional(),provider:r().min(1).max(256).optional(),errorCode:r().min(1).max(128).optional(),attempt:m().finite().optional(),count:m().finite().optional(),total:m().finite().optional(),progress:m().finite().optional(),httpStatus:m().finite().optional(),statusCode:m().finite().optional(),durationMs:m().finite().optional(),bytes:m().finite().optional(),retryAfterMs:m().finite().optional(),retriable:E().optional(),retrying:E().optional(),cancelled:E().optional(),success:E().optional()}).strict(),WA=d({cursor:r().min(1).max(512),ts:r().datetime(),level:XA,module:r().min(1).max(256),action:r().min(1).max(256),message:r().max(4096).optional(),runId:r().min(1).max(256).optional(),projectId:r().min(1).max(256).optional(),context:JA}).strict();d({level:XA.optional(),module:r().trim().min(1).max(256).optional(),runId:r().trim().min(1).max(256).optional(),projectId:r().trim().min(1).max(256).optional(),actor:r().trim().min(1).max(512).optional(),requestId:r().trim().min(1).max(256).optional(),since:r().datetime().optional(),until:r().datetime().optional(),limit:Bi().int().min(1).max(200).default(100),cursor:r().trim().min(1).max(512).optional()}).strict().superRefine((e,n)=>{e.since&&e.until&&Date.parse(e.since)>Date.parse(e.until)&&n.addIssue({code:ye.custom,path:["until"],message:'"until" must be on or after "since".'})});const eN=d({maxEntries:m().int().positive(),maxAgeSeconds:m().int().positive()}).strict(),yG=d({entries:y(WA),nextCursor:r().min(1).max(512).nullable(),truncated:m().int().nonnegative(),dropped:m().int().nonnegative(),retention:j(["process","durable"]),retentionPolicy:eN.optional(),captureErrors:m().int().nonnegative().optional(),observedAt:r().datetime()}).strict(),bG=d(JA.shape),vG=d({...WA.shape,context:bG});d({...yG.shape,entries:y(vG),retentionPolicy:d(eN.shape).optional()});function Rf(e){return e!==""&&/^[\w./:@%+=,-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}d({startDate:kn,endDate:kn,sourceId:r().trim().min(1).optional(),burstThreshold:m().int().min(1).max(1e6).optional(),ratioThreshold:m().min(1).max(1e3).optional(),limit:m().int().min(1).max(500).optional()}).strict();const uo=d({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});d({scope:d({project:r(),sourceId:r().nullable(),attribution:R("project-source-only"),unavailableDimensions:y(j(["property","target","market"]))}),window:d({startDate:kn,endDate:kn,timeZone:R("UTC")}),rule:d({version:R("hourly-normalized-path-v1"),burstThreshold:m().int().positive(),ratioThreshold:m().positive(),calibration:j(["uncalibrated-default","request-override"]),grouping:y(r()),confirmsAutomation:R(!1)}),totals:d({raw:uo,redirects:uo,subresources:uo,countable:uo,suspected:uo,adjustedEstimate:uo}),bursts:y(d({sourceId:r(),product:r(),landingPathNormalized:r(),tsHour:r(),counts:uo})),evidence:d({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:E()}),comparison:d({status:R("unavailable"),serverCountable:m().int().nonnegative(),serverObservation:j(["missing","observed-zero","observed-positive"]),gaSessions:m().int().nonnegative().nullable(),gaObservation:j(["missing","observed-zero","observed-positive"]),observedRatio:m().nonnegative().nullable(),observedRatioAboveThreshold:E().nullable(),ratio:ue(),reasons:y(r()),gaScope:R("project")}),caveats:y(r())});const xG=new Set(["optional","nullable","default","prefault","readonly","catch","nonoptional"]),Jw=64;function Rd(e){return e._zod.def}function mo(e,n){return e.clone({...Rd(e),...n})}function Ww(e){if(e.length!==0){if(e.every(n=>typeof n=="string"))return r();if(e.every(n=>typeof n=="number"))return m();if(e.every(n=>typeof n=="boolean"))return E()}}function tN(e,n,i,o){if(o>Jw)throw new Error(`tolerantReadSchema: schema nesting exceeds ${Jw} levels`);const u=i.get(e);if(u)return u;const h=v=>tN(v,n,i,o+1),f=Rd(e);let b=e;if(f.type==="object"){const v=Object.fromEntries(Object.entries(e.shape).map(([S,C])=>[S,h(C)])),x=f.catchall,k=n.get(e)??(x&&Rd(x).type!=="never"?h(x):void 0);b=k?d(v).catchall(k):d(v)}else if(xG.has(f.type)){const v=f.innerType,x=h(v);b=x===v?e:mo(e,{innerType:x})}else if(f.type==="array"){const v=f.element,x=h(v);b=x===v?e:mo(e,{element:x})}else if(f.type==="pipe"){const v=f.in,x=f.out,k=h(v),S=h(x);b=k===v&&S===x?e:mo(e,{in:k,out:S})}else if(f.type==="union"){const v=f.options,x=v.map(h);b=x.some((S,C)=>S!==v[C])?f.discriminator?Qe(x):mo(e,{options:x}):e}else if(f.type==="record"){const v=f.keyType,x=f.valueType,k=Rd(v).type==="enum"?r():v,S=h(x);b=k===v&&S===x?e:mo(e,{keyType:k,valueType:S})}else if(f.type==="intersection"){const v=f.left,x=f.right,k=h(v),S=h(x);b=k===v&&S===x?e:mo(e,{left:k,right:S})}else if(f.type==="tuple"){const v=f.items,x=f.rest,k=v.map(h),S=x&&h(x);b=S!==x||k.some((_,z)=>_!==v[z])?mo(e,{items:k,rest:S}):e}else if(f.type==="lazy"){const v=f.getter;b=Sz(()=>h(v()))}else f.type==="enum"?b=Ww(Object.values(f.entries))??e:f.type==="literal"&&(b=Ww(f.values)??e);return i.set(e,b),b}function zo(e,n={}){const i=new Map(n.openKeys??[]);return tN(e,i,new Map,0)}const Io={openKeys:[[Xg,m().int().nonnegative()]]};zo(kU,Io);zo(p0,Io);zo(EU,Io);zo(RU,Io);zo(SU,Io);zo(Z3,Io);zo(CU,Io);Qe([R(7),R(14),R(30),R(90)]).describe("Traffic activity window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const po=d({current:m(),prior:m(),deltaPct:ot().nullable()}),wG=d({windowStart:r(),windowEnd:r(),coverageStart:r().nullable(),priorWindowComplete:E(),hasData:E().describe("True when the selected or prior window has stored crawler, user-fetch, countable referral or operator evidence, or the selected window has referral redirects. False means no qualifying stored evidence; it can occur with no, paused, errored or never-synced ingestion and out-of-window observations. It does not establish measured zero traffic or source health."),verifiedCrawlerHits:po,unverifiedCrawlerHits:po,aiUserFetchHits:po,referralArrivals:po,referralRedirects:m().int().nonnegative(),referralArrivalsByClass:d({paid:po,organic:po,unclassified:po}),referralArrivalsClassSummary:r(),byOperator:y(d({operator:r(),verifiedHits:m(),unverifiedHits:m(),userFetchHits:m(),referralArrivals:m(),deltaPct:ot().nullable()})),topCrawledPaths:y(d({path:r(),verifiedHits:m(),unverifiedHits:m().default(0),distinctOperators:m()})),referralProducts:y(d({product:r(),arrivals:m(),distinctLandingPaths:m()})),dailyTrend:y(d({date:r(),verifiedCrawlerHits:m(),unverifiedCrawlerHits:m().default(0),userFetchHits:m(),referralArrivals:m()})),topReferralLandingPaths:y(d({path:r(),arrivals:m(),distinctProducts:m()}))});d({activity:wG.nullable()});const dte={ambiguous:"Property identity unverified"},mte="No answer could be tied to one property";function kG(e){return e.denominator===null||e.denominator===void 0||e.unattributed===void 0||e.unattributed<=0?null:`${e.unattributed} of ${e.denominator+e.unattributed} answers could not be tied to one property`}function SG(e){if(e.denominator===null||e.denominator===void 0||e.unchecked===void 0||e.unchecked<=0)return null;const n=e.denominator+e.unchecked;return`${e.unchecked} of ${n} ${n===1?"answer":"answers"} had sources that could not be checked`}const jG="canonry.onboarding-session.v1",Wd="canonry.onboarding-launched-run.v1",u1="canonry.onboarding-handoff.v1",AG=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,NG=["system","project","queries","competitors","run"];function CG(e){return NG[e]??"system"}function _G(e){if(!e.apiReady)return"api_unavailable";if(e.databaseConfigured===!1)return"database_unavailable";if(!e.workerReady)return"worker_unavailable";if(!e.providerReady)return"no_provider"}function TG(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}const EG={NO_PROVIDER:"no_provider",NO_QUERIES:"no_queries",RATE_LIMITED:"rate_limited",QUOTA_EXCEEDED:"rate_limited",PROVIDER_AUTH:"provider_auth",PROVIDERS_FAILING:"provider_auth",AUTH_INVALID:"provider_auth",FORBIDDEN:"provider_auth",NETWORK:"network",CONNECTION_ERROR:"network",RUN_IN_PROGRESS:"run_rejected",RUN_CANCELLED:"run_cancelled"};function xc(e,n){const i=e&&typeof e=="object"&&"code"in e?String(e.code):"";return EG[i]??n}function d1(){return nN(jG)}function nN(e){try{const n=typeof window<"u"?window.sessionStorage.getItem(e):null;if(n&&AG.test(n))return n;const i=tm();return typeof window<"u"&&window.sessionStorage.setItem(e,i),i}catch{return tm()}}function m1(){return tm()}function aN(e){if(!e||typeof e!="object")return!1;const n=e;return typeof n.projectName=="string"&&n.projectName.length>0&&typeof n.runId=="string"&&n.runId.length>0&&typeof n.handled=="boolean"}function iN(e,n){try{typeof window<"u"&&window.sessionStorage.setItem(Wd,JSON.stringify({projectName:e,runId:n,handled:!1}))}catch{}}function sN(e){if(!e)return null;try{if(typeof window>"u")return null;const n=window.sessionStorage.getItem(Wd);if(!n)return null;const i=JSON.parse(n);return!aN(i)||i.projectName!==e||i.handled?null:i}catch{return null}}function em(e){try{if(typeof window>"u")return;const n=window.sessionStorage.getItem(Wd);if(!n)return;const i=JSON.parse(n);if(!aN(i)||i.runId!==e)return;window.sessionStorage.setItem(Wd,JSON.stringify({...i,handled:!0}))}catch{}}function RG(e){try{typeof window<"u"&&window.sessionStorage.setItem(u1,e)}catch{}}function DG(e){if(!e)return!1;try{return typeof window<"u"&&window.sessionStorage.getItem(u1)===e}catch{return!1}}function zG(){try{typeof window<"u"&&window.sessionStorage.removeItem(u1)}catch{}}function tm(){const e=globalThis.crypto;if(e.randomUUID)return e.randomUUID();const n=new Uint8Array(16);if(e.getRandomValues)e.getRandomValues(n);else for(let o=0;o<n.length;o+=1)n[o]=Math.floor(Math.random()*256);n[6]=n[6]&15|64,n[8]=n[8]&63|128;const i=[...n].map(o=>o.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}const IG="canonry.ui-session.v1",OG="canonry.ui-pages.v1",PG="canonry.ui-errors.v1",ek="canonry.ui-sent.v1",qG=30,MG=120,BG=200,Yt={sender:null,disabled:!1,page:"other",landingPage:null,pendingVitals:[],memory:new Map,sentAt:null,now:()=>Date.now()};function LG(e){Yt.sender=e.enabled===!1?null:e.send,Yt.disabled=!1,e.now&&(Yt.now=e.now)}function UG(e){const n=mG(e);if(Yt.page=n,Yt.landingPage===null){Yt.landingPage=n;const o=Yt.pendingVitals;Yt.pendingVitals=[];for(const[u,h]of o)oN(u,h)}const i=YA(n);rN(OG,`${n}|${i??""}`,{event:"ui.page_viewed"})}function Wr(e,n={}){p1({event:"ui.action",action:e,...n})}const VG=800,$G=1e3,Df=new Map;let uc,zf="";function GG(e){if(!Yt.sender)return;const n=Df.get(e);n&&clearTimeout(n),Df.set(e,setTimeout(()=>{Df.delete(e),Wr("filter.change",{filter:e})},VG))}function pte(e,n=!1){if(!Yt.sender)return;uc&&clearTimeout(uc),uc=void 0;const i=e.trim();if(i.length===0){zf="";return}const o=()=>{uc=void 0,i!==zf&&(zf=i,Wr("search.submit"))};n?o():uc=setTimeout(o,$G)}const KG={measurementProvider:"provider",measurementModel:"model",measurementLocation:"location",measurementFrom:"window",measurementTo:"window",runWindow:"window",queryClass:"query_class",class:"query_class",measurementScope:"other",measurementScopeKey:"other",measurementMarketKey:"other",scope:"other",runStatus:"other",runKind:"other",runProject:"other"};function HG(e,n){const i=new Set;for(const[o,u]of Object.entries(KG))FG(e[o],n[o])||i.add(u);for(const o of i)GG(o)}function FG(e,n){const i=o=>o==null||o===""?"":JSON.stringify(o);return i(e)===i(n)}function nm(e){const n=sK(e.error),i=e.route&&ZA(e.route)?e.route:void 0;if(e.kind==="api"&&!i)return;const o=cN(e.method),u=typeof e.status=="number"&&e.status>=400&&e.status<=599?e.status:void 0,h=e.network?"network":u===void 0?void 0:u>=500?"5xx":"4xx",f=e.component&&HA.test(e.component)?e.component:void 0,b=[e.kind,Yt.page,f,n,o,i,u??h].join("|");rN(PG,b,{event:"ui.error",kind:e.kind,...f?{component:f}:{},...n?{errorName:n}:{},...i?{route:i}:{},...o?{method:o}:{},...h?{statusClass:h}:{},...u?{status:u}:{}})}function QG(e,n){if(Yt.landingPage===null){Yt.pendingVitals.push([e,n]);return}oN(e,n)}function oN(e,n){const i=Yt.landingPage??"other";p1({event:"ui.vitals",metric:e,rating:n},i)}const ZG=[["POST","/api/v1/projects/{name}/runs","sweep.launch"],["POST","/api/v1/runs/{id}/cancel","sweep.cancel"],["POST","/api/v1/projects/{name}/technical-aeo/runs","site_audit.launch"],["POST","/api/v1/projects","project.create"],["PUT","/api/v1/projects/{name}","project.create",void 0,201],["PUT","/api/v1/projects/{name}","project.update",void 0,200],["DELETE","/api/v1/projects/{name}","project.delete"],["POST","/api/v1/projects/{name}/queries","query.add"],["PUT","/api/v1/projects/{name}/queries","query.add"],["DELETE","/api/v1/projects/{name}/queries","query.delete"],["DELETE","/api/v1/projects/{name}/queries/{id}","query.delete"],["POST","/api/v1/projects/{name}/queries/generate","query.generate"],["PUT","/api/v1/projects/{name}/competitors","competitor.save"],["POST","/api/v1/projects/{name}/competitors","competitor.save"],["DELETE","/api/v1/projects/{name}/competitors/{id}","competitor.delete"],["PUT","/api/v1/projects/{name}/schedule","schedule.save"],["DELETE","/api/v1/projects/{name}/schedule","schedule.delete"],["PUT","/api/v1/settings/providers/{name}","provider.save"],["PUT","/api/v1/settings/google","settings.save"],["PUT","/api/v1/settings/bing","settings.save"],["PUT","/api/v1/settings/cdp","settings.save"],["PUT","/api/v1/projects/{name}/sentiment/settings","settings.save"],["POST","/api/v1/projects/{name}/google/connect","integration.connect_started","google"],["POST","/api/v1/projects/{name}/ga/connect","integration.connect","ga"],["DELETE","/api/v1/projects/{name}/ga/disconnect","integration.disconnect","ga"],["POST","/api/v1/projects/{name}/bing/connect","integration.connect","bing"],["DELETE","/api/v1/projects/{name}/bing/disconnect","integration.disconnect","bing"],["PUT","/api/v1/projects/{name}/gbp/locations/{locationName}/selection","integration.connect","gbp"],["DELETE","/api/v1/projects/{name}/gbp/connection","integration.disconnect","gbp"],["POST","/api/v1/projects/{name}/wordpress/connect","integration.connect","wordpress"],["DELETE","/api/v1/projects/{name}/wordpress/disconnect","integration.disconnect","wordpress"],["POST","/api/v1/projects/{name}/ads/connect","integration.connect","openai_ads"],["DELETE","/api/v1/projects/{name}/ads/connection","integration.disconnect","openai_ads"],["POST","/api/v1/projects/{name}/google-ads/oauth/connect","integration.connect_started","google_ads"],["PUT","/api/v1/projects/{name}/google-ads/selection","integration.connect","google_ads"],["DELETE","/api/v1/projects/{name}/google-ads/connection","integration.disconnect","google_ads"],["POST","/api/v1/projects/{name}/gtm/oauth/connect","integration.connect_started","gtm"],["PUT","/api/v1/projects/{name}/gtm/selection","integration.connect","gtm"],["DELETE","/api/v1/projects/{name}/gtm/connection","integration.disconnect","gtm"],["POST","/api/v1/projects/{name}/traffic/connect/cloudflare","integration.connect","traffic_cloudflare"],["POST","/api/v1/projects/{name}/traffic/connect/vercel","integration.connect","traffic_vercel"],["POST","/api/v1/projects/{name}/traffic/connect/cloud-run","integration.connect","traffic_cloud_run"],["POST","/api/v1/projects/{name}/traffic/connect/wordpress","integration.connect","traffic_wordpress"],["POST","/api/v1/projects/{name}/traffic/sources/{id}/sync","traffic.sync"],["POST","/api/v1/projects/{name}/notifications","notification.save"],["POST","/api/v1/projects/{name}/notifications/{id}/test","notification.test"],["POST","/api/v1/projects/{name}/measurement-plan/draft/actions/publish","measurement_plan.publish"],["POST","/api/v1/projects/{name}/discover/run","discovery.run"],["POST","/api/v1/keys","api_key.create"],["POST","/api/v1/keys/{id}/revoke","api_key.revoke"]],tk="/api/v1/projects/{name}/google/connections/{type}",YG={gsc:"gsc",ga4:"ga",gbp:"gbp"};function XG(e,n,i){const o=e==="PUT"&&n===`${tk}/property`?"integration.connect":e==="DELETE"&&n===tk?"integration.disconnect":void 0;if(!o)return;const u=i?/\/google\/connections\/([^/?#]+)/.exec(i)?.[1]:void 0,h=u&&YG[decodeURIComponent(u)]||"google";return[e,n,o,h]}const JG=[["GET",/^\/api\/v1\/projects\/\{name\}\/schedule$/,[404]],["*",/^\/api\/v1\/projects\/\{name\}\/measurement-plan(?:\/draft(?:\/.*)?)?$/,[404,409,412]],["GET",/^\/api\/v1\/projects\/\{name\}\/technical-aeo\/runs\/\{runId\}\/progress$/,[404]],["GET",/^\/api\/v1\/projects\/\{name\}\/backlinks\/domains$/,[404]],["POST",/^\/api\/v1\/projects$/,[409]],["PUT",/^\/api\/v1\/projects\/\{name\}$/,[409]]];function WG(e,n,i){return JG.some(([o,u,h])=>(o==="*"||o===e)&&u.test(n)&&h.includes(i))}const eK=/^\/api\/v1\/(?:telemetry|feedback)(?:\/|$)/;function am(e){if(!e.route||eK.test(e.route))return;const n=cN(e.method);if(e.network||typeof e.status=="number"&&e.status>=400){if(e.status===401||typeof e.status=="number"&&e.status<500&&WG(n,e.route,e.status))return;nm({kind:"api",route:e.route,method:n,status:e.status,network:e.network});return}if(!n||n==="GET")return;const i=XG(n,e.route,e.path)??ZG.find(([o,u,,,h])=>o===n&&u===e.route&&(h===void 0||h===e.status));i&&Wr(i[2],i[3]?{integration:i[3]}:{})}function rN(e,n,i){const o=nK(e);if(!o.has(n)&&p1(i)){o.add(n);try{window.sessionStorage.setItem(e,JSON.stringify([...o].slice(-BG)))}catch{}}}function p1(e,n){try{const i=Yt.sender;if(!i||Yt.disabled||!tK())return!1;const o=n??Yt.page,u=YA(o),h={...e,eventId:tm(),uiSessionId:nN(IG),page:o,...u?{tab:u}:{}};return i(h).then(f=>{f&&f.accepted===!1&&(Yt.disabled=!0)},()=>{}),!0}catch{return!1}}function tK(){const e=Yt.now(),n=(Yt.sentAt??=iK(ek)).filter(i=>e-i<36e5&&i<=e);if(Yt.sentAt=n,n.length>=MG||n.filter(i=>e-i<6e4).length>=qG)return!1;n.push(e);try{window.sessionStorage.setItem(ek,JSON.stringify(n))}catch{}return!0}function nK(e){let n=Yt.memory.get(e);return n||(n=new Set(aK(e)),Yt.memory.set(e,n)),n}function lN(e){try{const n=window.sessionStorage.getItem(e),i=n?JSON.parse(n):[];return Array.isArray(i)?i:[]}catch{return[]}}function aK(e){return lN(e).filter(n=>typeof n=="string")}function iK(e){return lN(e).filter(n=>typeof n=="number"&&Number.isFinite(n))}function sK(e){const n=e instanceof Error?e.name:e&&typeof e=="object"&&"name"in e?String(e.name):void 0;return n&&FA.test(n)?n:void 0}function cN(e){const n=e?.toUpperCase();return n==="GET"||n==="POST"||n==="PUT"||n==="PATCH"||n==="DELETE"?n:void 0}class Tn extends Error{code;statusCode;details;constructor(n,i,o,u){super(n),this.name="ApiError",this.code=o??"UNKNOWN",this.statusCode=i,this.details=u}}function hte(e){if(e instanceof Tn)return e.details;if(typeof e!="object"||e===null)return;const n=e.error,i=typeof n=="object"&&n!==null?n.details:e.details;return typeof i=="object"&&i!==null&&!Array.isArray(i)?i:void 0}function wo(){if(typeof window>"u")return!1;const e=window.__CANONRY_CONFIG__?.demo;return e?.enabled===!0&&e.readOnly===!0&&e.sampleData===!0}function oK(){if(typeof window>"u")return"legacy";const e=window.__CANONRY_CONFIG__?.dashboard?.onboardingMode??window.__CANONRY_CONFIG__?.onboardingMode;return e==="platform"||e==="auto"||e==="legacy"?e:"auto"}function rK(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function uN(e){const n=rK();if(!n)return e;let i;const o=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{i=new URL(e,o)}catch{return e}const u=new URL(o).origin;if(i.origin!==u)return e;const f=`${Mm().replace(/\/$/,"")}/api/v1`;return i.pathname!==f&&!i.pathname.startsWith(`${f}/`)?e:(i.searchParams.set("token",n),/^[a-z][a-z\d+.-]*:/i.test(e)?i.toString():`${i.pathname}${i.search}${i.hash}`)}function lK(e,n){const i={method:e.method,headers:e.headers,cache:e.cache,credentials:e.credentials,integrity:e.integrity,keepalive:e.keepalive,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy,signal:e.signal};return e.body&&(i.body=e.body,i.duplex="half"),new Request(n,i)}function dN(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function cK(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function uK(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showAgentBar!==!1}function dK(){return typeof window>"u"?!1:window.__CANONRY_CONFIG__?.agent?.allowViewers===!0}function h1(){return wo()}function mK(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function go(){return pK(ze["answer-visibility"])}function pK(e){if(typeof window>"u")return!1;const n=window.__CANONRY_CONFIG__?.dashboard;return n?.managedRunKinds!==void 0?n.managedRunKinds.includes(e):e===ze["answer-visibility"]&&n?.managedSweeps===!0}function hK(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.research;if(e?.allowViewers!==!0)return null;const n=e.viewerDailyRunLimit;return{allowViewers:!0,viewerDailyRunLimit:Number.isInteger(n)&&(n??0)>0?n:BV}}function nk(){return hK()?"Analyst":"View only"}function f1(){return dN()!==null}function fK(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const mN=fK();function gK(){const e=typeof window<"u"&&window.location?window.location.origin:"";return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?e+window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):e}function Mm(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function yK(e){const n=e.trim().toLowerCase().replace(/^\[|\]$/g,"");return n==="localhost"||n==="::1"?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(n)}function bK(e,n){if(e.protocol!=="http:"&&e.protocol!=="https:"||!yK(e.hostname))return;const i=e.port?`:${e.port}`:"",o=n?n.replace(/\/$/,""):"";return`${e.protocol}//localhost${i}${o}`}function fte(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function gte(e){return`${e.replace(/\/$/,"")}/api/v1/google-marketing/callback`}function vK(){if(!(typeof window>"u"))return bK(window.location,Mm())}function xK(e){return`${Mm()}${e}`}function wK(e,n){if(n===404)return"Health endpoint returned 404. Check basePath or reverse-proxy configuration and make sure the dashboard reaches /health instead of an API-prefixed route."}function kK(){return""}function SK(){return!!kK()}let pN=null;function ak(e){pN=e}function g1(){pN?.()}const ee=M8({baseUrl:gK()});ee.interceptors.response.use((e,n)=>(e.status===401&&!n.url.includes("/api/v1/session")&&g1(),e));ee.interceptors.request.use(e=>{const n=uN(e.url);return n===e.url?e:lK(e,n)});async function fe(e){const n=await e();if(n.error!==void 0&&n.error!==null){const i=n.response.status;let o=`API ${i}: ${n.response.statusText}`,u,h;if(typeof n.error=="object"&&n.error!==null){const f=n.error.error;if(typeof f=="string")o=f;else if(f&&typeof f=="object"){const b=f;b.message&&(o=b.message),b.code&&(u=b.code),b.details&&(h=b.details)}else{const b=n.error;b.message&&(o=b.message),b.code&&(u=b.code),b.details&&(h=b.details)}}else typeof n.error=="string"&&(o=n.error);throw new Tn(o,i,u,h)}if(n.response.status!==204)return n.data}async function Ms(e,n){const i=n?.body!=null,o=await fetch(uN(`${mN}${e}`),{...n,credentials:n?.credentials??"same-origin",headers:{...i?{"Content-Type":"application/json"}:{},...n?.headers}});if(!o.ok){const u=await o.text();let h=`API ${o.status}: ${o.statusText}`,f,b;if(u)try{const v=JSON.parse(u);typeof v.error=="string"?h=v.error:v.error?.message?(h=v.error.message,f=v.error.code,b=v.error.details):v.message&&(h=v.message)}catch{h=u}throw o.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&g1(),new Tn(h,o.status,f,b)}if(o.status!==204)return o.json()}function jK(e){return fe(()=>NS({client:ee,path:{name:e}}))}function yte(e){return fe(()=>TS({client:ee,path:{name:e}}))}function g0(e){return fe(()=>ES({client:ee,path:{id:e}}))}function hN(e){return fe(()=>_S({client:ee,path:{name:e}}))}function AK(e,n,i){return fe(()=>f_({client:ee,path:{name:e},query:{location:n,limit:i}}))}function fN(e,n){return fe(()=>ZT({client:ee,path:{name:e},query:{location:n?.location,since:n?.since}}))}function gN(e,n){return fe(()=>C6({client:ee,path:{name:e},body:n}))}function NK(e){return fe(()=>A6({client:ee,body:e}))}function CK(e,n){return fe(()=>a_({client:ee,path:{name:e},body:{queries:n}}))}function _K(e,n){return fe(()=>n_({client:ee,path:{name:e},body:{queries:n}}))}function bte(e,n){return fe(()=>t_({client:ee,path:{name:e},body:{queries:n}}))}function TK(e,n){return fe(()=>o_({client:ee,path:{name:e},body:{competitors:n}}))}function vte(e,n){return fe(()=>s_({client:ee,path:{name:e},body:{competitors:n}}))}function xte(e,n){return fe(()=>r_({client:ee,path:{name:e,id:n}}))}async function wte(e,n){const i=await jK(e);return gN(e,{displayName:n.displayName??i.displayName??i.name,canonicalDomain:n.canonicalDomain??i.canonicalDomain,ownedDomains:n.ownedDomains??i.ownedDomains,aliases:n.aliases??i.aliases,country:n.country??i.country,language:n.language??i.language,tags:i.tags,labels:i.labels,providers:n.providers??i.providers,providerModels:n.providerModels??i.providerModels??{},locations:n.locations??i.locations,defaultLocation:n.defaultLocation!==void 0?n.defaultLocation:i.defaultLocation,autoExtractBacklinks:i.autoExtractBacklinks,...n.siteAuditMaxPages!==void 0?{siteAuditMaxPages:n.siteAuditMaxPages}:{}})}function EK(e,n){const i={};return n?.location&&(i.location=n.location),n?.allLocations&&(i.allLocations=!0),n?.noLocation&&(i.noLocation=!0),fe(()=>c_({client:ee,path:{name:e},body:i}))}function kte(e,n){return fe(()=>J6({client:ee,path:{name:e},body:n}))}async function Ste(e,n){await fe(()=>W6({client:ee,path:{name:e,label:n}}))}function jte(e,n){return fe(()=>e_({client:ee,path:{name:e},body:{label:n}}))}async function Ate(e){await fe(()=>N6({client:ee,path:{name:e}}))}function Nte(){return fe(()=>RS({client:ee}))}function ik(){return Ms("/session")}function RK(e){return Ms("/session/setup",{method:"POST",body:JSON.stringify({password:e})})}function DK(e){return Ms("/session",{method:"POST",body:JSON.stringify({password:e})})}function zK(e){return Ms("/session",{method:"POST",body:JSON.stringify({apiKey:e})})}function IK(){return Ms("/session",{method:"DELETE"})}function If(){return fe(()=>x_({client:ee}))}function sk(){return Ms("/auth/session")}function OK(e,n){return Ms("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:n})})}function ok(){return Ms("/auth/logout",{method:"POST"})}function yN(e,n){return fe(()=>b_({client:ee,path:{name:e},body:n}))}async function y1(e){for(let n=0;n<2;n+=1)try{await fe(()=>z_({client:ee,body:e}));return}catch(i){if(!(!(i instanceof Tn)||i.statusCode>=500)||n===1)return}}function Cte(e){return fe(()=>v_({client:ee,body:e}))}function _te(e,n){return fe(()=>A_({client:ee,path:{name:e},body:n}))}async function Tte(e,n){await fe(()=>S_({client:ee,path:{name:e},query:n===void 0?void 0:{expectedUpdatedAt:n}}))}function Ete(e){return fe(()=>C_({client:ee,path:{name:e}}))}function Rte(e,n){return fe(()=>__({client:ee,path:{name:e},body:n}))}async function Dte(e,n){await fe(()=>T_({client:ee,path:{name:e,id:n}}))}function zte(e,n){return fe(()=>E_({client:ee,path:{name:e,id:n}}))}function PK(e,n,i){return fe(()=>i_({client:ee,path:{name:e},body:{provider:n,count:i}}))}function qK(e){return fe(()=>m_({client:ee,body:e}))}function MK(e){return fe(()=>d_({client:ee,body:e??{}}))}function Ite(e,n){const i=vK();return fe(()=>aT({client:ee,path:{name:e},body:{type:n,...i?{publicUrl:i}:{}}}))}function Ote(e,n){return fe(()=>iT({client:ee,path:{name:e,type:n}}))}function Pte(e,n,i){return fe(()=>oT({client:ee,path:{name:e,type:n},body:{propertyId:i}}))}function qte(e,n,i){return fe(()=>rT({client:ee,path:{name:e,type:n},body:{sitemapUrl:i}}))}function BK(e,n){return fe(()=>lT({client:ee,path:{name:e},body:n??{}}))}function Mte(e,n){const i={};return n&&n!=="all"&&(i.window=n),fe(()=>g_({client:ee,path:{name:e},query:i}))}function Bte(e,n){return fe(()=>dT({client:ee,path:{name:e},body:{url:n}}))}function LK(e,n){return fe(()=>yT({client:ee,path:{name:e},body:n??{}}))}function Lte(e,n){return fe(()=>gT({client:ee,path:{name:e},query:n?{sitemapIndex:n}:void 0}))}function Ute(e,n){return fe(()=>S6({client:ee,path:{name:e},body:{sitemapUrls:n}}))}function UK(e,n){return fe(()=>E8({client:ee,path:{name:e},body:n??{}}))}function Vte(e,n){return fe(()=>y8({client:ee,path:{name:e},body:n??{}}))}function $te(){return fe(()=>DS({client:ee}))}function Gte(e,n){return fe(()=>k_({client:ee,body:{host:e,port:n}}))}function Kte(e,n){return fe(()=>bT({client:ee,path:{name:e},body:n}))}function Hte(e,n){return fe(()=>CT({client:ee,path:{name:e},body:{apiKey:n}}))}function Fte(e){return fe(()=>_T({client:ee,path:{name:e}}))}function Qte(e,n){return fe(()=>RT({client:ee,path:{name:e},body:{siteUrl:n}}))}function Zte(e,n){return fe(()=>IT({client:ee,path:{name:e},body:{url:n}}))}function Yte(e,n){return fe(()=>OT({client:ee,path:{name:e},body:{}}))}function Xte(e,n){return fe(()=>PT({client:ee,path:{name:e},body:n}))}function Jte(e){return fe(()=>w_({client:ee,body:{apiKey:e}}))}function VK(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function Wte(e,n){const i=await fetch(`${mN}/projects/${encodeURIComponent(e)}/results/export?format=${n}`,{credentials:"same-origin",headers:{}});if(!i.ok)throw am({method:"GET",route:"/api/v1/projects/{name}/results/export",status:i.status}),new Tn(`Failed to download results: ${i.status}`,i.status);Wr("export.download",{format:n});const o=await i.blob(),u=URL.createObjectURL(o),h=VK(i.headers.get("Content-Disposition"))??`canonry-results-${e}.${n}`,f=document.createElement("a");f.href=u,f.download=h,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(u)}function ene(e,n){return fe(()=>UT({client:ee,path:{name:e},body:{}}))}function tne(e,n){return fe(()=>MT({client:ee,path:{name:e},body:n}))}function nne(e){return fe(()=>BT({client:ee,path:{name:e}}))}function ane(e,n){return fe(()=>l8({client:ee,path:{name:e},body:n}))}function ine(e,n){return fe(()=>c8({client:ee,path:{name:e},body:n}))}function sne(e,n){return fe(()=>u8({client:ee,path:{name:e},body:n}))}function one(e,n,i){return fe(()=>d8({client:ee,path:{name:e,id:n},body:i??{}}))}function rne(e,n,i){return fe(()=>m8({client:ee,path:{name:e,id:n},body:{}}))}function lne(e,n){return fe(()=>HT({client:ee,path:{name:e},query:{runId:n}}))}function $K(e){if(!e||typeof e!="object")return;const n=e;if(!(typeof n.current!="string"||typeof n.latest!="string"||typeof n.url!="string"||typeof n.upgradeCommand!="string"))return{current:n.current,latest:n.latest,url:n.url,upgradeCommand:n.upgradeCommand}}async function GK(e,n){const i=xK(e);try{const o=await fetch(i,{credentials:"same-origin"});if(!o.ok)return{label:n,state:"error",detail:`${n} ${o.status}: ${o.statusText}`,statusCode:o.status,hint:wK(e,o.status)};const u=await o.json(),h=typeof u.version=="string"?u.version:"unknown",f=typeof u.databaseUrlConfigured=="boolean"?u.databaseUrlConfigured:void 0,b=typeof u.lastHeartbeatAt=="string"?u.lastHeartbeatAt:void 0,v=$K(u.updateAvailable),x=K$.safeParse(u.mcp),k=[h,f===!1?"database not configured":"database configured",b?`heartbeat ${b}`:void 0].filter(Boolean).join(" · ");return{label:n,state:"ok",detail:k,version:h,databaseConfigured:f,lastHeartbeatAt:b,...v?{updateAvailable:v}:{},...x.success?{mcp:x.data}:{}}}catch(o){return{label:n,state:"error",detail:o instanceof Error?o.message:"unreachable",hint:e==="/health"?`Request failed while checking ${i}. If this instance is served behind a sub-path, verify the dashboard basePath and reverse-proxy rewrites.`:void 0}}}function cne(){return fe(()=>YT({client:ee}))}function une(){return fe(()=>XT({client:ee}))}function dne(){return fe(()=>e8({client:ee}))}function mne(){return fe(()=>JT({client:ee}))}function pne(e){return fe(()=>WT({client:ee,body:e?{release:e}:{}}))}function hne(){return fe(()=>t8({client:ee}))}function fne(){return fe(()=>n8({client:ee}))}function gne(e){return fe(()=>a8({client:ee,path:{release:e}}))}function yne(e,n={}){return fe(()=>s8({client:ee,path:{name:e},query:{release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function bne(e,n={}){return fe(()=>o8({client:ee,path:{name:e},query:{limit:n.limit!==void 0?String(n.limit):void 0,offset:n.offset!==void 0?String(n.offset):void 0,release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function vne(e,n={}){return fe(()=>r8({client:ee,path:{name:e},query:{source:n.source}}))}function xne(e,n){return fe(()=>i8({client:ee,path:{name:e},body:{release:void 0}}))}async function rk(e,n){return fe(()=>z8({client:ee,path:{name:e},query:n}))}async function KK(e,n){return fe(()=>I8({client:ee,path:{name:e},body:{id:n}}))}async function HK(e,n){return fe(()=>P8({client:ee,path:{name:e,id:n}}))}async function FK(e,n){return fe(()=>O8({client:ee,path:{name:e,id:n}}))}async function QK(e,n){const i=f=>fe(()=>I6({client:ee,path:{name:e},query:{...n,include:["assessments","locations"],queryLimit:F3,queryCursor:f}})),o=await i(),u=[...o.queries];let h=o.queryPage?.nextCursor??null;for(;h;){const f=await i(h);u.push(...f.queries),h=f.queryPage?.nextCursor??null}return{...o,queries:u,...o.queryPage?{queryPage:{...o.queryPage,nextCursor:null}}:{}}}function Dd(e){return fe(()=>D6({client:ee,path:{name:e}}))}function ZK(e,n){return fe(()=>z6({client:ee,path:{name:e},body:n}))}function YK(e,n,i){return fe(()=>O6({client:ee,path:{name:e},query:{...n,cursor:i,limit:50}}))}function XK(e,n){return fe(()=>P6({client:ee,path:{name:e},query:n}))}function JK(e,n,i){return fe(()=>q6({client:ee,path:{name:e},body:{previewToken:n,idempotencyKey:i}}))}function WK(e){return fe(()=>M6({client:ee,path:{name:e}}))}function eH(e,n,i){return fe(()=>B6({client:ee,path:{name:e,jobId:n},query:{attemptCursor:i}}))}const bN={account:null,canWrite:!0,isAdmin:!0},tH={account:null,canWrite:!1,isAdmin:!1};function nH(e){const n=e.scopes.includes(Yw);return{account:null,canWrite:!e.readOnly&&n,isAdmin:e.projectId===null&&e.scopes.includes(Yw)}}const vN=N.createContext(bN);function aH({account:e,apiKey:n,apiKeyPending:i=!1,children:o}){const u=i?tH:n?nH(n):e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:bN;return l.jsx(vN.Provider,{value:u,children:o})}function fa(){return N.useContext(vN)}const xN="View only — your account cannot change this.";function fn(e){return(...n)=>{e(...n)}}const iH=6e3,sH=5,oH=180;let On=[],rH=0;const y0=new Set,b0=new Map,v0=new Map;function im(){const e=[...On];for(const n of y0)n(e)}function b1(e){const n=b0.get(e);n&&(clearTimeout(n),b0.delete(e));const i=v0.get(e);i&&(clearTimeout(i),v0.delete(e))}function wN(e){b1(e);const n=On.length;On=On.filter(i=>i.id!==e),On.length!==n&&im()}function lk(e){b1(e.id),b0.set(e.id,setTimeout(()=>{x0(e.id)},e.durationMs))}function lH(e,n,i){return typeof e=="string"?{title:e,tone:n,durationMs:i}:e}function xn(e,n="negative",i=iH){const o=lH(e,n,i),u={id:String(++rH),title:o.title,detail:o.detail,tone:o.tone??n,durationMs:o.durationMs??i,dedupeKey:o.dedupeKey,cta:o.cta,state:"open"};if(o.dedupeKey){const h=On.find(f=>f.dedupeKey===o.dedupeKey);if(h){if((o.dedupeMode??"drop")==="drop")return h.id;const f={...h,title:u.title,detail:u.detail,tone:u.tone,durationMs:u.durationMs,cta:u.cta,state:"open"};return On=On.map(b=>b.id===h.id?f:b),im(),lk(f),h.id}}return On.length>=sH&&wN(On[0].id),On=[...On,u],im(),lk(u),u.id}function x0(e){const n=On.find(i=>i.id===e);!n||n.state==="closing"||(b1(e),On=On.map(i=>i.id===e?{...i,state:"closing"}:i),im(),v0.set(e,setTimeout(()=>{wN(e)},oH)))}function cH(e){return y0.add(e),()=>{y0.delete(e)}}function ck(){return On}const uH=5*6e4,zd=30*6e4,wne=3e4,kne=6e4,Mr=3e4,dH=2e3,mH=3e4;function pH(){return new j5({defaultOptions:{queries:{staleTime:uH,retry:1,refetchOnWindowFocus:!1}},mutationCache:new A5({onError:(n,i,o,u)=>{u.meta?.skipGlobalErrorToast||xn({title:n instanceof Error?n.message:"An unexpected error occurred",tone:"negative"})}})})}const hH="modulepreload",fH=function(e,n){return new URL(e,n).href},uk={},Hi=function(n,i,o){let u=Promise.resolve();if(i&&i.length>0){let x=function(k){return Promise.all(k.map(S=>Promise.resolve(S).then(C=>({status:"fulfilled",value:C}),C=>({status:"rejected",reason:C}))))};const f=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),v=b?.nonce||b?.getAttribute("nonce");u=x(i.map(k=>{if(k=fH(k,o),k in uk)return;uk[k]=!0;const S=k.endsWith(".css"),C=S?'[rel="stylesheet"]':"";if(o)for(let z=f.length-1;z>=0;z--){const q=f[z];if(q.href===k&&(!S||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${k}"]${C}`))return;const _=document.createElement("link");if(_.rel=S?"stylesheet":hH,S||(_.as="script"),_.crossOrigin="",_.href=k,v&&_.setAttribute("nonce",v),document.head.appendChild(_),S)return new Promise((z,q)=>{_.addEventListener("load",z),_.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${k}`)))})}))}function h(f){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=f,window.dispatchEvent(b),!b.defaultPrevented)throw f}return u.then(f=>{for(const b of f||[])b.status==="rejected"&&h(b.reason);return n().catch(h)})},v1=N.createContext({view:null,publish:()=>()=>{}});function gH({children:e}){const[n,i]=N.useState(null),o=N.useCallback(u=>(i(u),()=>i(h=>h===u?null:h)),[]);return l.jsx(v1.Provider,{value:N.useMemo(()=>({view:n,publish:o}),[n,o]),children:e})}function Sne(e,n){const{publish:i}=N.useContext(v1),o=JSON.stringify(n);N.useEffect(()=>i({project:e,context:JSON.parse(o)}),[i,e,o])}function yH(e,n){const{view:i}=N.useContext(v1);return i?.project===e&&i.context.view===n.view?i.context:n}var bH=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(bH||{});const jne={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},Ane={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},vH=kg;function Nne(e){return e.endsWith("%")?{figure:e.slice(0,-1),sign:"%"}:{figure:e,sign:""}}function Cne(e,n){return n==="cited"?SG(e):kG(e)}function xH(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,o]of Object.entries(e.providers)){const u=`[${i}] ${o.message}`;o.raw!==void 0?n.push(`${u}
|
|
52
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const f of e.seen.entries()){const b=f[1];if(n===f[0]){h(f);continue}if(e.external){const x=e.external.registry.get(f[0])?.id;if(n!==f[0]&&x){h(f);continue}}if(e.metadataRegistry.get(f[0])?.id){h(f);continue}if(b.cycle){h(f);continue}if(b.count>1&&e.reused==="ref"){h(f);continue}}}function o2(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const o=f=>{const b=e.seen.get(f);if(b.ref===null)return;const v=b.def??b.schema,x={...v},k=b.ref;if(b.ref=null,k){o(k);const C=e.seen.get(k),_=C.schema;if(_.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(v.allOf=v.allOf??[],v.allOf.push(_)):Object.assign(v,_),Object.assign(v,x),f._zod.parent===k)for(const q in v)q==="$ref"||q==="allOf"||q in x||delete v[q];if(_.$ref&&C.def)for(const q in v)q==="$ref"||q==="allOf"||q in C.def&&JSON.stringify(v[q])===JSON.stringify(C.def[q])&&delete v[q]}const S=f._zod.parent;if(S&&S!==k){o(S);const C=e.seen.get(S);if(C?.schema.$ref&&(v.$ref=C.schema.$ref,C.def))for(const _ in v)_==="$ref"||_==="allOf"||_ in C.def&&JSON.stringify(v[_])===JSON.stringify(C.def[_])&&delete v[_]}e.override({zodSchema:f,jsonSchema:v,path:b.path??[]})};for(const f of[...e.seen.entries()].reverse())o(f[0]);const u={};if(e.target==="draft-2020-12"?u.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?u.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?u.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const f=e.external.registry.get(n)?.id;if(!f)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(f)}Object.assign(u,i.def??i.schema);const h=e.external?.defs??{};for(const f of e.seen.entries()){const b=f[1];b.def&&b.defId&&(h[b.defId]=b.def)}e.external||Object.keys(h).length>0&&(e.target==="draft-2020-12"?u.$defs=h:u.definitions=h);try{const f=JSON.parse(JSON.stringify(u));return Object.defineProperty(f,"~standard",{value:{...n["~standard"],jsonSchema:{input:Md(n,"input",e.processors),output:Md(n,"output",e.processors)}},enumerable:!1,writable:!1}),f}catch{throw new Error("Error converting schema to JSON.")}}function Ln(e,n){const i=n??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const o=e._zod.def;if(o.type==="transform")return!0;if(o.type==="array")return Ln(o.element,i);if(o.type==="set")return Ln(o.valueType,i);if(o.type==="lazy")return Ln(o.getter(),i);if(o.type==="promise"||o.type==="optional"||o.type==="nonoptional"||o.type==="nullable"||o.type==="readonly"||o.type==="default"||o.type==="prefault")return Ln(o.innerType,i);if(o.type==="intersection")return Ln(o.left,i)||Ln(o.right,i);if(o.type==="record"||o.type==="map")return Ln(o.keyType,i)||Ln(o.valueType,i);if(o.type==="pipe")return Ln(o.in,i)||Ln(o.out,i);if(o.type==="object"){for(const u in o.shape)if(Ln(o.shape[u],i))return!0;return!1}if(o.type==="union"){for(const u of o.options)if(Ln(u,i))return!0;return!1}if(o.type==="tuple"){for(const u of o.items)if(Ln(u,i))return!0;return!!(o.rest&&Ln(o.rest,i))}return!1}const LR=(e,n={})=>i=>{const o=i2({...i,processors:n});return an(e,o),s2(o,e),o2(o,e)},Md=(e,n,i={})=>o=>{const{libraryOptions:u,target:h}=o??{},f=i2({...u??{},target:h,io:n,processors:i});return an(e,f),s2(f,e),o2(f,e)},UR={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},VR=(e,n,i,o)=>{const u=i;u.type="string";const{minimum:h,maximum:f,format:b,patterns:v,contentEncoding:x}=e._zod.bag;if(typeof h=="number"&&(u.minLength=h),typeof f=="number"&&(u.maxLength=f),b&&(u.format=UR[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),x&&(u.contentEncoding=x),v&&v.size>0){const k=[...v];k.length===1?u.pattern=k[0].source:k.length>1&&(u.allOf=[...k.map(S=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:S.source}))])}},$R=(e,n,i,o)=>{const u=i,{minimum:h,maximum:f,format:b,multipleOf:v,exclusiveMaximum:x,exclusiveMinimum:k}=e._zod.bag;typeof b=="string"&&b.includes("int")?u.type="integer":u.type="number",typeof k=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.minimum=k,u.exclusiveMinimum=!0):u.exclusiveMinimum=k),typeof h=="number"&&(u.minimum=h,typeof k=="number"&&n.target!=="draft-04"&&(k>=h?delete u.minimum:delete u.exclusiveMinimum)),typeof x=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.maximum=x,u.exclusiveMaximum=!0):u.exclusiveMaximum=x),typeof f=="number"&&(u.maximum=f,typeof x=="number"&&n.target!=="draft-04"&&(x<=f?delete u.maximum:delete u.exclusiveMaximum)),typeof v=="number"&&(u.multipleOf=v)},GR=(e,n,i,o)=>{i.type="boolean"},KR=(e,n,i,o)=>{n.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},HR=(e,n,i,o)=>{i.not={}},FR=(e,n,i,o)=>{},QR=(e,n,i,o)=>{const u=e._zod.def,h=PS(u.entries);h.every(f=>typeof f=="number")&&(i.type="number"),h.every(f=>typeof f=="string")&&(i.type="string"),i.enum=h},ZR=(e,n,i,o)=>{const u=e._zod.def,h=[];for(const f of u.values)if(f===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof f=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");h.push(Number(f))}else h.push(f);if(h.length!==0)if(h.length===1){const f=h[0];i.type=f===null?"null":typeof f,n.target==="draft-04"||n.target==="openapi-3.0"?i.enum=[f]:i.const=f}else h.every(f=>typeof f=="number")&&(i.type="number"),h.every(f=>typeof f=="string")&&(i.type="string"),h.every(f=>typeof f=="boolean")&&(i.type="boolean"),h.every(f=>f===null)&&(i.type="null"),i.enum=h},YR=(e,n,i,o)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},XR=(e,n,i,o)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},JR=(e,n,i,o)=>{const u=i,h=e._zod.def,{minimum:f,maximum:b}=e._zod.bag;typeof f=="number"&&(u.minItems=f),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=an(h.element,n,{...o,path:[...o.path,"items"]})},WR=(e,n,i,o)=>{const u=i,h=e._zod.def;u.type="object",u.properties={};const f=h.shape;for(const x in f)u.properties[x]=an(f[x],n,{...o,path:[...o.path,"properties",x]});const b=new Set(Object.keys(f)),v=new Set([...b].filter(x=>{const k=h.shape[x]._zod;return n.io==="input"?k.optin===void 0:k.optout===void 0}));v.size>0&&(u.required=Array.from(v)),h.catchall?._zod.def.type==="never"?u.additionalProperties=!1:h.catchall?h.catchall&&(u.additionalProperties=an(h.catchall,n,{...o,path:[...o.path,"additionalProperties"]})):n.io==="output"&&(u.additionalProperties=!1)},eD=(e,n,i,o)=>{const u=e._zod.def,h=u.inclusive===!1,f=u.options.map((b,v)=>an(b,n,{...o,path:[...o.path,h?"oneOf":"anyOf",v]}));h?i.oneOf=f:i.anyOf=f},tD=(e,n,i,o)=>{const u=e._zod.def,h=an(u.left,n,{...o,path:[...o.path,"allOf",0]}),f=an(u.right,n,{...o,path:[...o.path,"allOf",1]}),b=x=>"allOf"in x&&Object.keys(x).length===1,v=[...b(h)?h.allOf:[h],...b(f)?f.allOf:[f]];i.allOf=v},nD=(e,n,i,o)=>{const u=i,h=e._zod.def;u.type="object";const f=h.keyType,v=f._zod.bag?.patterns;if(h.mode==="loose"&&v&&v.size>0){const k=an(h.valueType,n,{...o,path:[...o.path,"patternProperties","*"]});u.patternProperties={};for(const S of v)u.patternProperties[S.source]=k}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(u.propertyNames=an(h.keyType,n,{...o,path:[...o.path,"propertyNames"]})),u.additionalProperties=an(h.valueType,n,{...o,path:[...o.path,"additionalProperties"]});const x=f._zod.values;if(x){const k=[...x].filter(S=>typeof S=="string"||typeof S=="number");k.length>0&&(u.required=k)}},aD=(e,n,i,o)=>{const u=e._zod.def,h=an(u.innerType,n,o),f=n.seen.get(e);n.target==="openapi-3.0"?(f.ref=u.innerType,i.nullable=!0):i.anyOf=[h,{type:"null"}]},iD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType},sD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType,i.default=JSON.parse(JSON.stringify(u.defaultValue))},oD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType,n.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},rD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType;let f;try{f=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=f},lD=(e,n,i,o)=>{const u=e._zod.def,h=n.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;an(h,n,o);const f=n.seen.get(e);f.ref=h},cD=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType,i.readOnly=!0},r2=(e,n,i,o)=>{const u=e._zod.def;an(u.innerType,n,o);const h=n.seen.get(e);h.ref=u.innerType},uD=(e,n,i,o)=>{const u=e._zod.innerType;an(u,n,o);const h=n.seen.get(e);h.ref=u},dD=ae("ZodISODateTime",(e,n)=>{r7.init(e,n),Xt.init(e,n)});function l2(e){return hR(dD,e)}const mD=ae("ZodISODate",(e,n)=>{l7.init(e,n),Xt.init(e,n)});function c2(e){return fR(mD,e)}const pD=ae("ZodISOTime",(e,n)=>{c7.init(e,n),Xt.init(e,n)});function hD(e){return gR(pD,e)}const fD=ae("ZodISODuration",(e,n)=>{u7.init(e,n),Xt.init(e,n)});function gD(e){return yR(fD,e)}const yD=(e,n)=>{LS.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>W8(e,i)},flatten:{value:i=>J8(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,Ff,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,Ff,2)}},isEmpty:{get(){return e.issues.length===0}}})},Ra=ae("ZodError",yD,{Parent:Error}),bD=K0(Ra),vD=H0(Ra),xD=hm(Ra),wD=fm(Ra),kD=nE(Ra),SD=aE(Ra),jD=iE(Ra),AD=sE(Ra),ND=oE(Ra),CD=rE(Ra),_D=lE(Ra),TD=cE(Ra),Lt=ae("ZodType",(e,n)=>(Bt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:Md(e,"input"),output:Md(e,"output")}}),e.toJSONSchema=LR(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(zs(n,{checks:[...n.checks??[],...i.map(o=>typeof o=="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]}),{parent:!0}),e.with=e.check,e.clone=(i,o)=>Is(e,i,o),e.brand=()=>e,e.register=((i,o)=>(i.add(e,o),e)),e.parse=(i,o)=>bD(e,i,o,{callee:e.parse}),e.safeParse=(i,o)=>xD(e,i,o),e.parseAsync=async(i,o)=>vD(e,i,o,{callee:e.parseAsync}),e.safeParseAsync=async(i,o)=>wD(e,i,o),e.spa=e.safeParseAsync,e.encode=(i,o)=>kD(e,i,o),e.decode=(i,o)=>SD(e,i,o),e.encodeAsync=async(i,o)=>jD(e,i,o),e.decodeAsync=async(i,o)=>AD(e,i,o),e.safeEncode=(i,o)=>ND(e,i,o),e.safeDecode=(i,o)=>CD(e,i,o),e.safeEncodeAsync=async(i,o)=>_D(e,i,o),e.safeDecodeAsync=async(i,o)=>TD(e,i,o),e.refine=(i,o)=>e.check(Az(i,o)),e.superRefine=i=>e.check(Nz(i)),e.overwrite=i=>e.check(Ur(i)),e.optional=()=>Ix(e),e.exactOptional=()=>uz(e),e.nullable=()=>Ox(e),e.nullish=()=>Ix(Ox(e)),e.nonoptional=i=>gz(e,i),e.array=()=>y(e),e.or=i=>Qe([e,i]),e.and=i=>sz(e,i),e.transform=i=>Yf(e,p2(i)),e.default=i=>pz(e,i),e.prefault=i=>fz(e,i),e.catch=i=>bz(e,i),e.pipe=i=>Yf(e,i),e.readonly=()=>wz(e),e.describe=i=>{const o=e.clone();return pc.add(o,{description:i}),o},Object.defineProperty(e,"description",{get(){return pc.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return pc.get(e);const o=e.clone();return pc.add(o,i[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),u2=ae("_ZodString",(e,n)=>{F0.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(o,u,h)=>VR(e,o,u);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...o)=>e.check(AR(...o)),e.includes=(...o)=>e.check(_R(...o)),e.startsWith=(...o)=>e.check(TR(...o)),e.endsWith=(...o)=>e.check(ER(...o)),e.min=(...o)=>e.check(qd(...o)),e.max=(...o)=>e.check(n2(...o)),e.length=(...o)=>e.check(a2(...o)),e.nonempty=(...o)=>e.check(qd(1,...o)),e.lowercase=o=>e.check(NR(o)),e.uppercase=o=>e.check(CR(o)),e.trim=()=>e.check(DR()),e.normalize=(...o)=>e.check(RR(...o)),e.toLowerCase=()=>e.check(zR()),e.toUpperCase=()=>e.check(IR()),e.slugify=()=>e.check(OR())}),ED=ae("ZodString",(e,n)=>{F0.init(e,n),u2.init(e,n),e.email=i=>e.check(Q7(RD,i)),e.url=i=>e.check(J7(zD,i)),e.jwt=i=>e.check(pR(QD,i)),e.emoji=i=>e.check(W7(ID,i)),e.guid=i=>e.check(_x(Dx,i)),e.uuid=i=>e.check(t2(hc,i)),e.uuidv4=i=>e.check(Z7(hc,i)),e.uuidv6=i=>e.check(Y7(hc,i)),e.uuidv7=i=>e.check(X7(hc,i)),e.nanoid=i=>e.check(eR(OD,i)),e.guid=i=>e.check(_x(Dx,i)),e.cuid=i=>e.check(tR(PD,i)),e.cuid2=i=>e.check(nR(qD,i)),e.ulid=i=>e.check(aR(MD,i)),e.base64=i=>e.check(uR(KD,i)),e.base64url=i=>e.check(dR(HD,i)),e.xid=i=>e.check(iR(BD,i)),e.ksuid=i=>e.check(sR(LD,i)),e.ipv4=i=>e.check(oR(UD,i)),e.ipv6=i=>e.check(rR(VD,i)),e.cidrv4=i=>e.check(lR($D,i)),e.cidrv6=i=>e.check(cR(GD,i)),e.e164=i=>e.check(mR(FD,i)),e.datetime=i=>e.check(l2(i)),e.date=i=>e.check(c2(i)),e.time=i=>e.check(hD(i)),e.duration=i=>e.check(gD(i))});function r(e){return F7(ED,e)}const Xt=ae("ZodStringFormat",(e,n)=>{Gt.init(e,n),u2.init(e,n)}),RD=ae("ZodEmail",(e,n)=>{JE.init(e,n),Xt.init(e,n)}),Dx=ae("ZodGUID",(e,n)=>{YE.init(e,n),Xt.init(e,n)}),hc=ae("ZodUUID",(e,n)=>{XE.init(e,n),Xt.init(e,n)});function DD(e){return t2(hc,e)}const zD=ae("ZodURL",(e,n)=>{WE.init(e,n),Xt.init(e,n)}),ID=ae("ZodEmoji",(e,n)=>{e7.init(e,n),Xt.init(e,n)}),OD=ae("ZodNanoID",(e,n)=>{t7.init(e,n),Xt.init(e,n)}),PD=ae("ZodCUID",(e,n)=>{n7.init(e,n),Xt.init(e,n)}),qD=ae("ZodCUID2",(e,n)=>{a7.init(e,n),Xt.init(e,n)}),MD=ae("ZodULID",(e,n)=>{i7.init(e,n),Xt.init(e,n)}),BD=ae("ZodXID",(e,n)=>{s7.init(e,n),Xt.init(e,n)}),LD=ae("ZodKSUID",(e,n)=>{o7.init(e,n),Xt.init(e,n)}),UD=ae("ZodIPv4",(e,n)=>{d7.init(e,n),Xt.init(e,n)}),VD=ae("ZodIPv6",(e,n)=>{m7.init(e,n),Xt.init(e,n)}),$D=ae("ZodCIDRv4",(e,n)=>{p7.init(e,n),Xt.init(e,n)}),GD=ae("ZodCIDRv6",(e,n)=>{h7.init(e,n),Xt.init(e,n)}),KD=ae("ZodBase64",(e,n)=>{f7.init(e,n),Xt.init(e,n)}),HD=ae("ZodBase64URL",(e,n)=>{y7.init(e,n),Xt.init(e,n)}),FD=ae("ZodE164",(e,n)=>{b7.init(e,n),Xt.init(e,n)}),QD=ae("ZodJWT",(e,n)=>{x7.init(e,n),Xt.init(e,n)}),Q0=ae("ZodNumber",(e,n)=>{YS.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(o,u,h)=>$R(e,o,u),e.gt=(o,u)=>e.check(Ex(o,u)),e.gte=(o,u)=>e.check(rf(o,u)),e.min=(o,u)=>e.check(rf(o,u)),e.lt=(o,u)=>e.check(Tx(o,u)),e.lte=(o,u)=>e.check(of(o,u)),e.max=(o,u)=>e.check(of(o,u)),e.int=o=>e.check(zx(o)),e.safe=o=>e.check(zx(o)),e.positive=o=>e.check(Ex(0,o)),e.nonnegative=o=>e.check(rf(0,o)),e.negative=o=>e.check(Tx(0,o)),e.nonpositive=o=>e.check(of(0,o)),e.multipleOf=(o,u)=>e.check(Rx(o,u)),e.step=(o,u)=>e.check(Rx(o,u)),e.finite=()=>e;const i=e._zod.bag;e.minValue=Math.max(i.minimum??Number.NEGATIVE_INFINITY,i.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(i.maximum??Number.POSITIVE_INFINITY,i.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function m(e){return bR(Q0,e)}const ZD=ae("ZodNumberFormat",(e,n)=>{w7.init(e,n),Q0.init(e,n)});function zx(e){return xR(ZD,e)}const YD=ae("ZodBoolean",(e,n)=>{k7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>GR(e,i,o)});function E(e){return wR(YD,e)}const XD=ae("ZodNull",(e,n)=>{S7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>KR(e,i,o)});function ue(e){return kR(XD,e)}const JD=ae("ZodUnknown",(e,n)=>{j7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>FR()});function wn(){return SR(JD)}const WD=ae("ZodNever",(e,n)=>{A7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>HR(e,i,o)});function ez(e){return jR(WD,e)}const tz=ae("ZodArray",(e,n)=>{N7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>JR(e,i,o,u),e.element=n.element,e.min=(i,o)=>e.check(qd(i,o)),e.nonempty=i=>e.check(qd(1,i)),e.max=(i,o)=>e.check(n2(i,o)),e.length=(i,o)=>e.check(a2(i,o)),e.unwrap=()=>e.element});function y(e,n){return PR(tz,e,n)}const d2=ae("ZodObject",(e,n)=>{_7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>WR(e,i,o,u),gt(e,"shape",()=>n.shape),e.keyof=()=>j(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:wn()}),e.loose=()=>e.clone({...e._zod.def,catchall:wn()}),e.strict=()=>e.clone({...e._zod.def,catchall:ez()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>F8(e,i),e.safeExtend=i=>Q8(e,i),e.merge=i=>Z8(e,i),e.pick=i=>K8(e,i),e.omit=i=>H8(e,i),e.partial=(...i)=>Y8(h2,e,i[0]),e.required=(...i)=>X8(f2,e,i[0])});function d(e,n){const i={type:"object",shape:e??{},...Ie(n)};return new d2(i)}function nz(e,n){return new d2({type:"object",shape:e,catchall:wn(),...Ie(n)})}const m2=ae("ZodUnion",(e,n)=>{WS.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>eD(e,i,o,u),e.options=n.options});function Qe(e,n){return new m2({type:"union",options:e,...Ie(n)})}const az=ae("ZodDiscriminatedUnion",(e,n)=>{m2.init(e,n),T7.init(e,n)});function Be(e,n,i){return new az({type:"union",options:n,discriminator:e,...Ie(i)})}const iz=ae("ZodIntersection",(e,n)=>{E7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>tD(e,i,o,u)});function sz(e,n){return new iz({type:"intersection",left:e,right:n})}const oz=ae("ZodRecord",(e,n)=>{R7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>nD(e,i,o,u),e.keyType=n.keyType,e.valueType=n.valueType});function He(e,n,i){return new oz({type:"record",keyType:e,valueType:n,...Ie(i)})}const Zf=ae("ZodEnum",(e,n)=>{D7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(o,u,h)=>QR(e,o,u),e.enum=n.entries,e.options=Object.values(n.entries);const i=new Set(Object.keys(n.entries));e.extract=(o,u)=>{const h={};for(const f of o)if(i.has(f))h[f]=n.entries[f];else throw new Error(`Key ${f} not found in enum`);return new Zf({...n,checks:[],...Ie(u),entries:h})},e.exclude=(o,u)=>{const h={...n.entries};for(const f of o)if(i.has(f))delete h[f];else throw new Error(`Key ${f} not found in enum`);return new Zf({...n,checks:[],...Ie(u),entries:h})}});function j(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(o=>[o,o])):e;return new Zf({type:"enum",entries:i,...Ie(n)})}const rz=ae("ZodLiteral",(e,n)=>{z7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>ZR(e,i,o),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function R(e,n){return new rz({type:"literal",values:Array.isArray(e)?e:[e],...Ie(n)})}const lz=ae("ZodTransform",(e,n)=>{I7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>XR(e,i),e._zod.parse=(i,o)=>{if(o.direction==="backward")throw new IS(e.constructor.name);i.addIssue=h=>{if(typeof h=="string")i.issues.push(Nc(h,i.value,n));else{const f=h;f.fatal&&(f.continue=!1),f.code??(f.code="custom"),f.input??(f.input=i.value),f.inst??(f.inst=e),i.issues.push(Nc(f))}};const u=n.transform(i.value,i);return u instanceof Promise?u.then(h=>(i.value=h,i)):(i.value=u,i)}});function p2(e){return new lz({type:"transform",transform:e})}const h2=ae("ZodOptional",(e,n)=>{e2.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>r2(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function Ix(e){return new h2({type:"optional",innerType:e})}const cz=ae("ZodExactOptional",(e,n)=>{O7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>r2(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function uz(e){return new cz({type:"optional",innerType:e})}const dz=ae("ZodNullable",(e,n)=>{P7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>aD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function Ox(e){return new dz({type:"nullable",innerType:e})}const mz=ae("ZodDefault",(e,n)=>{q7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>sD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function pz(e,n){return new mz({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():MS(n)}})}const hz=ae("ZodPrefault",(e,n)=>{M7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>oD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function fz(e,n){return new hz({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():MS(n)}})}const f2=ae("ZodNonOptional",(e,n)=>{B7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>iD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function gz(e,n){return new f2({type:"nonoptional",innerType:e,...Ie(n)})}const yz=ae("ZodCatch",(e,n)=>{L7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>rD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function bz(e,n){return new yz({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const vz=ae("ZodPipe",(e,n)=>{U7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>lD(e,i,o,u),e.in=n.in,e.out=n.out});function Yf(e,n){return new vz({type:"pipe",in:e,out:n})}const xz=ae("ZodReadonly",(e,n)=>{V7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>cD(e,i,o,u),e.unwrap=()=>e._zod.def.innerType});function wz(e){return new xz({type:"readonly",innerType:e})}const kz=ae("ZodLazy",(e,n)=>{$7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>uD(e,i,o,u),e.unwrap=()=>e._zod.def.getter()});function Sz(e){return new kz({type:"lazy",getter:e})}const jz=ae("ZodCustom",(e,n)=>{G7.init(e,n),Lt.init(e,n),e._zod.processJSONSchema=(i,o,u)=>YR(e,i)});function Az(e,n={}){return qR(jz,e,n)}function Nz(e){return MR(e)}function Ki(e,n){return Yf(p2(e),n)}const ye={custom:"custom"};function Bi(e){return vR(Q0,e)}const g2=d({id:r(),name:r(),keyPrefix:r(),scopes:y(r()),projectId:r().nullable(),projectName:r().nullable(),readOnly:E(),operator:E().optional(),createdAt:r(),lastUsedAt:r().nullable(),revokedAt:r().nullable()});d({keys:y(g2)});d({name:r().min(1).max(100),scopes:y(r()).min(1).optional(),projectId:r().optional()});g2.extend({key:r()});const Z0=j(["used","not-used","unknown","not-applicable"]);Z0.enum;const Y0=j(["native-auto-v1","search-required-v1"]);Y0.enum;const Cz=d({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),jt=r().min(1),X0=He(r(),r().trim().min(1));r().min(1);const mn=d({label:r().min(1),city:r().min(1),region:r().min(1),country:r().length(2),timezone:r().optional()}),J0=j(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);J0.enum;const W0=d({everyDays:m().int().min(1).max(3650),startDate:r().date(),time:r().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"Time must be HH:mm")}).strict();d({id:r(),projectId:r(),kind:J0,cronExpr:r(),recurrence:W0.nullable().optional(),preset:r().nullable().optional(),timezone:r().default("UTC"),enabled:E().default(!0),providers:y(jt).default([]),sourceId:r().nullable().optional(),lastRunAt:r().nullable().optional(),nextRunAt:r().nullable().optional(),createdAt:r(),updatedAt:r()});const _z=r().datetime();d({kind:J0.optional(),preset:r().min(1).optional(),cron:r().min(1).optional(),recurrence:W0.optional(),timezone:r().optional().default("UTC"),enabled:E().optional().default(!0),providers:y(jt).optional().default([]),sourceId:r().optional(),expectedUpdatedAt:_z.nullable().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(n=>n!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'});const eg=j(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered","review.negative","review.rating-dropped"]);d({id:r(),projectId:r(),channel:R("webhook"),url:r().url(),urlDisplay:r(),urlHost:r(),events:y(eg),enabled:E().default(!0),source:r().optional(),webhookSecret:r().optional(),createdAt:r(),updatedAt:r()});d({channel:R("webhook"),url:r().url(),events:y(eg).min(1),source:r().optional()});class Tz extends Error{code;statusCode;details;constructor(n,i,o,u){super(i),this.name="AppError",this.code=n,this.statusCode=o,this.details=u}toJSON(){return{error:{code:this.code,message:this.message,...this.details?{details:this.details}:{}}}}}function Px(e,n){return new Tz("VALIDATION_ERROR",e,400,n)}function Oi(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const n=JSON.stringify(e);if(n!==void 0)return n}catch{}try{return String(e)}catch{return"unknown error"}}const Ez=j(["fraction","percent"]),$a=Ez.enum,Rz="x-unit";function y2(e,n){return e.meta({[Rz]:n})}function we(e=m()){return y2(e,$a.fraction)}function ot(e=m()){return y2(e,$a.percent)}$a.fraction+"",$a.percent+"";function lf(e,n=!1){const i=new Set,o=[];for(const u of e){const h=n?u.toLowerCase():u;i.has(h)||(i.add(h),o.push(u))}return o}function qx(e){try{const n=e.includes("://"),i=new URL(n?e:`https://${e}`);if(!n&&(i.pathname!=="/"||i.search||i.hash)||i.username||i.password||i.port)return null;const o=i.hostname.trim().toLowerCase().replace(/^www\./,"");return!o||o.includes("/")||o.includes("?")||o.includes("#")?null:o}catch{return null}}const Dz=r().trim().min(1).refine(e=>qx(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>qx(e)??e),zz=r().trim().min(1),Iz=r().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),tg=d({marketingHosts:y(Dz).overwrite(e=>lf(e,!0)),brandTerms:y(zz).overwrite(e=>lf(e,!0)),leadEventNames:y(Iz).overwrite(e=>lf(e))});function Oz(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const cf=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),b2=()=>Oz(),Mx=j(["never-synced","ready","error"]),Pz=j(["landing-page","channel"]),qz=j(["30d","60d","90d"]),Mz=j(["marketing","all"]),fc=c2(),qc=d({label:j(["earliest","middle","previous","latest"]),startDate:fc,endDate:fc}),uf=qc.extend({sessions:m().int().nonnegative()}),Bx=qc.extend({eventCount:m().int().nonnegative()}),Lx=qc.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),Bz=qc.extend({propertyClicks:m().int().nonnegative(),propertyImpressions:m().int().nonnegative(),reportedQueryClicks:m().int().nonnegative(),reportedQueryImpressions:m().int().nonnegative(),brandedClicks:m().int().nonnegative(),brandedImpressions:m().int().nonnegative(),nonBrandedClicks:m().int().nonnegative(),nonBrandedImpressions:m().int().nonnegative(),unreportedClicks:m().int().nonnegative(),unreportedImpressions:m().int().nonnegative()}),Lz=qc.extend({sessions:m().int().nonnegative(),engagementRate:we(m().min(0).max(1)).nullable(),dailyTotalUsers:m().int().nonnegative().nullable(),dailyNewUsers:m().int().nonnegative().nullable(),metricsAvailable:E(),daysInPeriod:m().int().nonnegative(),daysWithEngagementRate:m().int().nonnegative(),daysWithUserSplit:m().int().nonnegative()}),Uz=d({window:qz,bucketDays:R(30),filters:d({hostScope:Mz,marketingHosts:y(r()),pathPrefix:r().nullable(),brandTerms:y(r()),queryMixScope:R("property")}),acquisition:d({status:Mx,error:r().nullable(),syncedAt:r().datetime().nullable(),periods:y(uf),channels:y(d({channelGroup:r(),periods:y(uf)})),pages:y(d({hostName:r(),landingPage:r(),periods:y(uf)}))}),leads:d({status:Mx,error:r().nullable(),syncedAt:r().datetime().nullable(),attributionScope:Pz.nullable(),hostAndPathFiltersApplied:E(),periods:y(Bx),channels:y(d({channelGroup:r(),periods:y(Bx)}))}),engagement:d({status:j(["ready","unavailable"]),availableFromDate:fc.nullable(),latestDate:fc.nullable(),periods:y(Lz)}),searchDemand:d({status:j(["ready","unavailable"]),periods:y(Bz),queries:y(d({query:r(),classification:j(["branded","non-branded"]),periods:y(Lx)})),pages:y(d({hostName:r(),landingPage:r(),periods:y(Lx)})),latestDate:fc.nullable()})}),Mc=j(["sync","batch"]);Mc.enum;const ng=He(r(),Mc),v2=j(["submitting","submitted","ended","ingested","cancelled","failed","unknown"]),Ux=v2.enum;Ux.submitted,Ux.ended;const ag=j(["standard","batch"]),Vx=ag.enum,Vz=d({inputTokens:m().int().nonnegative(),cachedInputTokens:m().int().nonnegative(),cacheWriteTokens:m().int().nonnegative(),outputTokens:m().int().nonnegative(),searchCount:m().int().nonnegative()}),$z=Vz.extend({pricingTier:ag,estimatedCostMicros:m().int().nonnegative().nullable(),priceSource:Qe([j(["default","override"]),ue()])}),x2=d({inputPerMTok:m().nonnegative(),cachedInputPerMTok:m().nonnegative().optional(),cacheWritePerMTok:m().nonnegative().optional(),outputPerMTok:m().nonnegative(),searchPer1k:m().nonnegative().optional(),searchUnit:j(["query","prompt"]).optional(),batchTokenDiscount:m().min(0).max(1).optional()}).strict();d({models:He(r().min(1),x2).default({})}).strict();d({enabled:E().default(!1),maxRequestsPerBatch:m().int().positive().optional(),deadlineHours:m().positive().optional()}).strict();const Gz=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Kz=/[\0-\x1F\x7F-\x9F]/,Hz=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,Fz=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var Qz=class{src_Any=Gz.source;src_Cc=Kz.source;src_Z=Fz.source;src_P=Hz.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join("|");src_ZCc=[this.src_Z,this.src_Cc].join("|");cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}nestedPairRE(e,n,i=4){const o=this.escapeRE(e),u=this.escapeRE(n),h=`(?:(?!${this.src_ZCc}|${o}|${u}).)`;let f=`${o}${h}{0,1000}${u}`;for(let b=2;b<=i;b++)f=`${o}(?:${h}|${f}){0,1000}${u}`;return f}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])")}get_ipv6_addr(){const e="[0-9A-Fa-f]{1,4}",n=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${n}|::(?:${e}:){5}${n}|(?:${e})?::(?:${e}:){4}${n}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${n}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${n}|(?:(?:${e}:){0,3}${e})?::${e}:${n}|(?:(?:${e}:){0,4}${e})?::${n}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=new RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?")}get_host_terminator(){return this.cache.src_host_terminator??=new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=new RegExp(`(?:[/?#](?:${this.nestedPairRE("[","]")}|${this.nestedPairRE("(",")")}|${this.nestedPairRE("{","}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts["---"]?"\\-(?!--(?:[^-]|$))(?:-{0,19})|":"\\-{1,20}|")+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=new RegExp("xn--[a-z0-9\\-]{1,59}")}get_tld(){if(this.cache.tld)return this.cache.tld;const e=[...new Set(this.opts.tlds||[])].sort().reverse().join("|");return this.cache.tld=new RegExp(`${e||"$#none#$"}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=new RegExp("(?:"+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=new RegExp("(?:"+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=new RegExp("(?:"+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=new RegExp("(?:"+(this.opts.fuzzyIP?this.get_ipv4_addr().source+"|":"")+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=new RegExp("")}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=new RegExp(`@${this.get_fuzzy_mail_host().source}`,"ig")}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,"ig")}get_http_validator(){return this.cache.http_validator??=new RegExp("\\/\\/"+(this.opts.urlAuth?this.get_auth().source:"")+this.get_url_host_port().source+this.get_path().source,"iy")}get_relative_proto_validator(){return this.cache.relative_proto_validator??=new RegExp((this.opts.urlAuth?this.get_auth().source:"")+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,"iy")}get_mail_name_validator(){return this.cache.mail_name_validator??=new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,"iy")}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join("|"))}get_schema_search(){return this.cache.schema_search??=new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`,"ig")}get_schema_at_start(){return this.cache.schema_at_start??=new RegExp(`^${this.get_schema_search().source}`,"i")}},df={validate:(e,n,i)=>{const o=i.re.get_http_validator();o.lastIndex=n;const u=o.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)},Zz={"http:":df,"https:":df,"ftp:":df,"//":{validate:function(e,n,i){const o=i.re.get_relative_proto_validator();o.lastIndex=n;const u=o.exec(e);return u?n>=3&&e[n-3]===":"||n>=3&&e[n-3]==="/"?0:u[0].length:0},normalize:(e,n)=>n.normalize(e)},"mailto:":{validate:function(e,n,i){const o=i.re.get_mailto_validator();o.lastIndex=n;const u=o.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)}},Yz="a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw",Xz="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function Jz(){const e=Xz.split("|");return Yz.split("|").forEach(n=>{const i=n.indexOf(":"),o=n.slice(0,i);for(const u of n.slice(i+1))e.push(o+u)}),e}var Wz={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:Jz(),urlAuth:!1,maxLength:1e4},$x=class{schema;index;lastIndex;raw;text;url;constructor(e,n,i,o){const u=e.slice(i,o);this.schema=n.toLowerCase(),this.index=i,this.lastIndex=o,this.raw=u,this.text=u,this.url=u}},e9=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...i}=e;this.__opts__={...Wz,...i},this.__schemas__={...Zz},this.re=n||new Qz,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,n=null){if(!n)delete this.__schemas__[e];else{const i={normalize:(o,u)=>u.normalize(o),...n};this.__schemas__[e]=i}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let n,i;for(i=this.re.get_schema_search(),i.lastIndex=0;(n=i.exec(e))!==null;)if(this.testSchemaAt(e,n[2],i.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(i=this.re.get_fuzzy_link_search(),i.lastIndex=0,i.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&e.indexOf("@")>=0){const o=this.re.get_fuzzy_mail_host_search(),u=this.re.get_mail_name_validator();for(o.lastIndex=0;(n=o.exec(e))!==null;){const h=e.slice(Math.max(0,n.index-65),n.index);if(u.test(h))return!0}}return!1}testSchemaAt(e,n,i){return this.__schemas__[n.toLowerCase()]?this.__schemas__[n.toLowerCase()].validate(e.slice(0,i+this.__opts__.maxLength),i,this):0}match(e){const n=[],i=this.re.get_schema_search();let o,u,h,f,b,v,x=!1,k=!1,S=!1,C=0;if(!e.length)return null;for(i.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(o=this.re.get_fuzzy_link_search(),o.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(u=this.re.get_fuzzy_mail_host_search(),u.lastIndex=0,h=this.re.get_mail_name_validator());;){const _=Math.max(C-1,0);if(u&&h&&!S&&(!b||b.index<C))for(u.lastIndex<_&&(u.lastIndex=_);;){const Y=u.exec(e);if(!Y){S=!0,b=void 0;break}const M=h.exec(e.slice(Math.max(0,Y.index-65),Y.index));if(M){if(b={schema:"mailto:",index:Y.index-M[1].length,lastIndex:Y.index+Y[0].length},b.index>=C)break;u.lastIndex<_&&(u.lastIndex=_)}}if(o&&!k&&(!f||f.index<C))for(o.lastIndex<_&&(o.lastIndex=_);;){const Y=o.exec(e);if(!Y){k=!0,f=void 0;break}if(f={schema:"",index:Y.index+Y[1].length,lastIndex:Y.index+Y[0].length},f.index>=C)break;o.lastIndex<_&&(o.lastIndex=_)}let z=b;(!z||f&&(f.index<z.index||f.index===z.index&&f.lastIndex>z.lastIndex))&&(z=f);let q;if(!x)for(;;){if(!v){i.lastIndex<_&&(i.lastIndex=_);const U=i.exec(e);if(!U){x=!0;break}v={schema:U[2],index:U.index+U[1].length,lastIndex:U.index+U[0].length}}if(v.index<C){v=void 0;continue}if(z&&v.index>z.index)break;const Y=v;v=void 0;const M=this.testSchemaAt(e,Y.schema,Y.lastIndex);if(M){q={schema:Y.schema,index:Y.index,lastIndex:Y.lastIndex+M};break}}let T=q;if((!T||b&&(b.index<T.index||b.index===T.index&&b.lastIndex>T.lastIndex))&&(T=b),(!T||f&&(f.index<T.index||f.index===T.index&&f.lastIndex>T.lastIndex))&&(T=f),!T)break;T===b?b=void 0:T===f&&(f=void 0);const V=new $x(e,T.schema,T.index,T.lastIndex);V.schema?this.__schemas__[V.schema].normalize(V,this):this.normalize(V),n.push(V),C=T.lastIndex}return n.length?n:null}matchAtStart(e){if(!e.length)return null;const n=this.re.get_schema_at_start().exec(e);if(!n)return null;const i=this.testSchemaAt(e,n[2],n[0].length);if(!i)return null;const o=new $x(e,n[2],n.index+n[1].length,n.index+n[0].length+i);return this.__schemas__[o.schema].normalize(o,this),o}tlds(e,n=!1){return e=Array.isArray(e)?e:[e],n?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema==="mailto:"&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}};const w2=JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');function t9(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function n9(e,n){const i=e.length-n.length-2,o=e.lastIndexOf(".",i);return o===-1?e:e.slice(o+1)}function a9(e,n,i){if(i.validHosts!==null){const u=i.validHosts;for(const h of u)if(t9(n,h))return h}let o=0;if(n.startsWith("."))for(;o<n.length&&n[o]===".";)o+=1;return e.length===n.length-o?null:n9(n,e)}function i9(e,n){return e.slice(0,-n.length-1)}const mf=/[\t\n\r]/g;let Xf=!1;function Gx(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Kx(e,n,i){const o=i-n,u=e.charCodeAt(n)|32;if(o===2)return u===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(o===3){const h=e.charCodeAt(n+1)|32,f=e.charCodeAt(n+2)|32;return u===119&&h===115&&f===115||u===102&&h===116&&f===112?1:0}else if(o===4){const h=e.charCodeAt(n+1)|32,f=e.charCodeAt(n+2)|32,b=e.charCodeAt(n+3)|32;return u===104&&h===116&&f===116&&b===112?1:u===102&&h===105&&f===108&&b===101?2:0}else if(o===5)return u===104&&(e.charCodeAt(n+1)|32)===116&&(e.charCodeAt(n+2)|32)===116&&(e.charCodeAt(n+3)|32)===112&&(e.charCodeAt(n+4)|32)===115?1:0;return 0}function gc(e,n,i=!1){let o=0,u=e.length,h=!1,f=!1;if(Xf=!1,!n){if(e.startsWith("data:"))return null;for(;o<e.length&&e.charCodeAt(o)<=32;)o+=1;for(;u>o+1&&e.charCodeAt(u-1)<=32;)u-=1;if(e.charCodeAt(o)===47&&e.charCodeAt(o+1)===47)o+=2;else{const T=e.indexOf(":/",o);if(T!==-1){const V=Kx(e,o,T);if(V===1)for(f=!0,o=T+2;e.charCodeAt(o)===47||e.charCodeAt(o)===92;)o+=1;else if(V===2){f=!0,o=T+1;let Y=0;for(;(e.charCodeAt(o)===47||e.charCodeAt(o)===92)&&Y<2;)o+=1,Y+=1;if(Y<2)return null}else{for(let Y=o;Y<T;Y+=1){const M=e.charCodeAt(Y)|32;if(!(M>=97&&M<=122||M>=48&&M<=57||M===46||M===45||M===43)){const U=e.charCodeAt(Y);return U===9||U===10||U===13?gc(e.replace(mf,""),n,i):null}}if(e.charCodeAt(T+2)===47)o=T+3;else return null}}else if(e.charCodeAt(o)!==91){let V=-1;for(let Y=o;Y<u;Y+=1){const M=e.charCodeAt(Y);if(M===9||M===10||M===13)return gc(e.replace(mf,""),n,i);if(M===58){V=Y;break}if(M===47||M===92||M===63||M===35)break}if(V!==-1){let Y=!1;for(let M=V+1;M<u;M+=1){const U=e.charCodeAt(M);if(U===47||U===92||U===63||U===35)break;if(U===64){Y=!0;break}}if(!Y){let M=!0,U=V+1;for(;U<u;U+=1){const Z=e.charCodeAt(U);if(Z===47||Z===92||Z===63||Z===35)break;if(Z<48||Z>57){M=!1;break}}if(U===V+1&&(M=!1),!M){const Z=Kx(e,o,V);if(Z===0){let te=!1;for(let B=V+1;B<u;B+=1){const X=e.charCodeAt(B);if(X===47||X===92||X===63||X===35)break;if(X===58){te=!0;break}}if(!te)return null}else if(f=!0,o=V+1,Z===2){let te=0;for(;(e.charCodeAt(o)===47||e.charCodeAt(o)===92)&&te<2;)o+=1,te+=1;if(te<2)return null}else for(;e.charCodeAt(o)===47||e.charCodeAt(o)===92;)o+=1}}}}}let v=-1,x=-1,k=-1,S=-1,C=!1,_=i,z=o-1,q=-1;if(i&&o<u){const T=e.charCodeAt(o);(!(Gx(T)||T===46||T===95)||T===45)&&(_=!1)}for(let T=o;T<u;T+=1){const V=e.charCodeAt(T);if(V<64)if(V===47||V===35||V===63){u=T;break}else V===58?(S===-1&&(S=T),k=T):V===9||V===10||V===13?C=!0:i&&(V===46?((T-z>64||q===46||q===45)&&(_=!1),z=T):(V<48||V>57)&&(V!==45||q===46)&&(_=!1));else if(f&&V===92){u=T;break}else V===64?(v=T,S=-1):V===93?x=T:V>=65&&V<=90?h=!0:i&&!Gx(V)&&(_=!1);i&&(q=V)}if(C)return gc(e.replace(mf,""),n,i);if(v!==-1&&v>=o&&v<u&&(o=v+1),e.charCodeAt(o)===91)return x!==-1?e.slice(o+1,x).toLowerCase():null;if(k!==-1&&k>o&&k<u&&S===k&&(u=k),o>=u)return null;i&&_&&v===-1&&k===-1&&x===-1&&e.charCodeAt(u-1)!==46&&u-o<=255&&u-z-1<=63&&q!==45&&(Xf=!0)}for(;u>o+1&&e.charCodeAt(u-1)===46;)u-=1;const b=o!==0||u!==e.length?e.slice(o,u):e;return h?b.toLowerCase():b}function s9(e){if(e.length<7||e.length>15)return!1;let n=0;for(let i=0;i<e.length;i+=1){const o=e.charCodeAt(i);if(o===46)n+=1;else if(o<48||o>57)return!1}return n===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function o9(e){if(e.length<3)return!1;let n=e.startsWith("[")?1:0,i=e.length;if(e[i-1]==="]"&&(i-=1),i-n>39)return!1;let o=!1;for(;n<i;n+=1){const u=e.charCodeAt(n);if(u===58)o=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return o}function r9(e){return o9(e)||s9(e)}const l9=["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 c9(e){for(const n of l9)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function Hx(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Fx(e){if(e.length>255||e.length===0||!Hx(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,i=-1;const o=e.length;for(let u=0;u<o;u+=1){const h=e.charCodeAt(u);if(h===46){if(u-n>64||i===46||i===45)return!1;n=u}else if(!(Hx(h)||h===45||h===95)||h===45&&i===46)return!1;i=h}return o-n-1<=63&&i!==45}function k2({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:i=!0,detectSpecialUse:o=!1,extractHostname:u=!0,mixedInputs:h=!0,validHosts:f=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:i,detectSpecialUse:o,extractHostname:u,mixedInputs:h,validHosts:f,validateHostname:b}}const u9=k2({});function d9(e){return e===void 0?u9:k2(e)}function m9(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function p9(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function S2(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function j2(e,n,i,o,u){const h=d9(o);if(typeof e!="string")return u;let f=!1;return h.extractHostname?h.mixedInputs?(f=Fx(e),u.hostname=gc(e,f,h.validateHostname)):u.hostname=gc(e,!1,h.validateHostname):u.hostname=e,h.detectIp&&u.hostname!==null&&(u.isIp=r9(u.hostname),u.isIp)?u:h.validateHostname&&h.extractHostname&&u.hostname!==null&&!(f&&u.hostname===e)&&!Xf&&!Fx(u.hostname)?(u.hostname=null,u):(n===0||u.hostname===null||(n===5&&h.detectSpecialUse&&(u.isSpecialUse=c9(u.hostname)),i(u.hostname,h,u),n===2||u.publicSuffix===null)||(u.domain=a9(u.publicSuffix,u.hostname,h),n===3||u.domain===null)||(u.subdomain=m9(u.hostname,u.domain),n===4)||(u.domainWithoutSuffix=i9(u.domain,u.publicSuffix)),u)}function h9(e,n,i){if(!n.allowPrivateDomains&&e.length>3){const o=e.length-1,u=e.charCodeAt(o),h=e.charCodeAt(o-1),f=e.charCodeAt(o-2),b=e.charCodeAt(o-3);if(u===109&&h===111&&f===99&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(u===103&&h===114&&f===111&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(u===117&&h===100&&f===101&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(u===118&&h===111&&f===103&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(u===116&&h===101&&f===110&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(u===101&&h===100&&f===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}const vo=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,0,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,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,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,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,2,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,1,0,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,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,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,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,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,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,0,1,1,1,1,1,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]),Bd=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,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),Ld=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,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,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,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,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,10,14,14,14,13,13,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,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,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,12,9,10,7,8,7,6,8,6,11,12,7,9,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,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,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,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,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,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,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,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,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,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,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,6,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,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,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,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,9,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,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,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,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,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,4,6,10,7,8,13,8,8,9,14,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,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,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,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,3,5,9,10,10,8,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,8,9,6,4,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,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,16,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,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,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,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,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,4,5,5,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,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,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,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,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,11,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,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,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,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,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,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,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,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,11,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,2,2,12,5,5,5,8,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,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,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,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,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]),Qx=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,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,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,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,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,0,1,1,67,1,12,1,1,66,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,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,119,1,108,1,109,1,12,128,106,1,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,50,50,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,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,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,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,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,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,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,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,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,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,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,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,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,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,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,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,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,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,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,252,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,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,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,283,0,0,284,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,60,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,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,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,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,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,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,0,1,1,1,0,0,0,332,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,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,266,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,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,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,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,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,1,1,1,400,400,1,1,12,12,1,400,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,412,1,1,0,1,1,1,1,205,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,430,430,1,1,0,0,317,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,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,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,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,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,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,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,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,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,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,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,488,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,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,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,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,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,505,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,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,507,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,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,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,533,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,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,548,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,0,0,0,0,0,1,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,228,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,572,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,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,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,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,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,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,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,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,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,502,0,0,0,0,0,554,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,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,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,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,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,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,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,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),Jf="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-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-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-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-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-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-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*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-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-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--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-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-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-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-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-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-1us-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-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-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-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-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-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-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-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-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-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-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-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-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-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhä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-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-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-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--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-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-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-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--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üdtirolfriuliv-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-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-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-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-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-gradynmerseineshacknetenterprisecloudmineaccomaorimā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-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-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קוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทย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भारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--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",f9=621,g9=625,A2=vo.length,N2=Ld.length,C2=new Uint32Array(N2),Cd=new Uint32Array(N2),Wf=new Int32Array(A2).fill(-1);for(let e=0,n=0;e<A2;e+=1)for(let i=Bd[e];i<Bd[e+1];i+=1){C2[i]=n;const o=n+Ld[i];let u=5381;for(let h=o-1;h>=n;h-=1)u=u*33^Jf.charCodeAt(h);Cd[i]=u>>>0,Ld[i]===1&&Jf.charCodeAt(n)===42&&(Wf[e]=i),n=o}let Pi=-1,e0=0,t0=0;function Zx(e,n,i,o){if(Ld[e]!==o)return!1;const u=C2[e];for(let h=0;h<o;h+=1)if(Jf.charCodeAt(u+h)!==n.charCodeAt(i+h))return!1;return!0}function Yx(e,n,i,o,u){let h=Bd[e],f=Bd[e+1];for(;h<f;){const b=h+f>>>1,v=Cd[b];if(v<n)h=b+1;else if(v>n)f=b;else{for(let x=b;x>=h&&Cd[x]===n;x-=1)if(Zx(x,i,o,u))return x;for(let x=b+1;x<f&&Cd[x]===n;x+=1)if(Zx(x,i,o,u))return x;return-1}}return-1}function Xx(e,n,i){let o=n,u=e.length,h=5381;Pi=-1;for(let b=e.length-1;b>=0;b-=1){const v=e.charCodeAt(b);if(v===46){const x=b+1;let k=Yx(o,h>>>0,e,x,u-x);if(k===-1&&(k=Wf[o]),k===-1)return Pi!==-1;o=Qx[k],(vo[o]&i)!==0&&(Pi=o,e0=x,t0=u),u=b,h=5381}else h=h*33^v}let f=Yx(o,h>>>0,e,0,u);return f===-1&&(f=Wf[o]),f!==-1&&(o=Qx[f],(vo[o]&i)!==0&&(Pi=o,e0=0,t0=u)),Pi!==-1}function _2(e,n,i){if(h9(e,n,i))return;const o=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(Xx(e,g9,o)){i.isIcann=(vo[Pi]&1)!==0,i.isPrivate=(vo[Pi]&2)!==0,i.publicSuffix=e.slice(t0+1);return}if(Xx(e,f9,o)){i.isIcann=(vo[Pi]&1)!==0,i.isPrivate=(vo[Pi]&2)!==0,i.publicSuffix=e.slice(e0);return}i.isIcann=!1,i.isPrivate=!1;const u=e.lastIndexOf(".");i.publicSuffix=u===-1?e:e.slice(u+1)}const Ud=p9();function y9(e,n){return S2(Ud),j2(e,0,_2,n,Ud).hostname}function b9(e,n){return S2(Ud),j2(e,5,_2,n,Ud).domainWithoutSuffix}const v9={allowPrivateDomains:!0};new e9({fuzzyLink:!0,fuzzyEmail:!1}).tlds(w2);function Bc(e){if(e==null)return null;const n=e.trim();if(!n)return null;const i=y9(n);return i?i.replace(/^www\./i,"").toLowerCase():null}function Vd(e){return Bc(e)??e.trim().toLowerCase().replace(/^www\./,"")}function ig(e){return e==null||e.trim()===""?"":b9(e,v9)?.toLowerCase()??""}function Mee(e){return ig(e)||e}const x9=new Intl.Segmenter("en",{granularity:"word"}),w9=/[^\p{L}\p{N}]+/gu,k9=/[\p{L}\p{N}]+/gu,S9=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,j9=new RegExp("\\P{ASCII}","u");function A9(e){if(!j9.test(e))return e;let n="";for(const i of e){if(i.charCodeAt(0)<128){n+=i;continue}const o=i.normalize("NFD"),u=o[0];n+=o.length>1&&S9.test(u)?u:i}return n}function T2(e){return A9(e.normalize("NFKC")).toLocaleLowerCase("en")}function E2(e){const n=[];for(const i of x9.segment(e))if(i.isWordLike)for(const o of i.segment.match(k9)??[])n.push(o);return n}function N9(e){return E2(T2(e))}function Ga(e){return N9(e).join("")}const Jx=new WeakMap;function C9(e){if(!e)return null;const n=T2(e);return{normalized:n,stripped:n.replace(w9,"")}}function _9(e){const n=Jx.get(e);if(n)return n;const i=E2(e.normalized);return Jx.set(e,i),i}function T9(e){const n=new Set;let i=0;for(const o of e){if(!o)continue;const u=Ga(o);u&&(n.add(u),u.length>i&&(i=u.length))}return{keys:n,longest:i}}function E9(e,n){if(!n||e.keys.size===0)return!1;const i=typeof n=="string"?C9(n):n;if(!i)return!1;let o=!1;for(const h of e.keys)if(i.stripped.includes(h)){o=!0;break}if(!o)return!1;const u=_9(i);for(let h=0;h<u.length;h++){let f="";for(let b=h;b<u.length;b++){if(f+=u[b],e.keys.has(f))return!0;if(f.length>=e.longest)break}}return!1}const R9=d({name:r(),accountName:r().nullable(),type:r().nullable(),role:r().nullable()});d({accounts:y(R9),total:m().int().nonnegative()});const D9=d({id:r(),projectId:r(),accountName:r(),locationName:r(),displayName:r(),primaryCategoryDisplayName:r().nullable(),storefrontAddress:r().nullable(),websiteUri:r().nullable(),placeId:r().nullable(),mapsUri:r().nullable(),additionalCategories:y(r()),description:r().nullable(),serviceArea:He(r(),wn()).nullable(),regularHours:He(r(),wn()).nullable(),primaryPhone:r().nullable(),openStatus:r().nullable(),openingDate:r().nullable(),selected:E(),syncedAt:r().nullable(),createdAt:r(),updatedAt:r()});d({locations:y(D9),totalDiscovered:m().int().nonnegative(),totalSelected:m().int().nonnegative()});d({selectAllNew:E().default(!0),accountName:r().optional(),switchAccount:E().default(!1)});d({selected:E()});d({locationNames:y(r()).optional(),daysOfMetrics:m().int().positive().max(540).optional(),monthsOfKeywords:m().int().positive().max(18).optional()});d({runId:r(),status:r()});const z9=d({locationName:r(),date:r(),metric:r(),value:m().int()});d({metrics:y(z9),total:m().int().nonnegative()});const I9=d({locationName:r(),periodStart:r(),periodEnd:r(),keyword:r(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});d({keywords:y(I9),total:m().int().nonnegative(),thresholdedPct:ot(m().min(0).max(100))});const O9=d({locationName:r(),placeActionLinkName:r(),placeActionType:r(),uri:r().nullable(),isPreferred:E(),providerType:r().nullable()});d({placeActions:y(O9),total:m().int().nonnegative()});const P9=d({locationName:r(),populatedGroupCount:m().int().nonnegative(),syncedAt:r(),attributes:He(r(),wn())});d({lodging:y(P9),total:m().int().nonnegative()});const q9=d({name:r(),valueType:r(),values:y(Qe([E(),r()])),unsetValues:y(r()),uris:y(r())}),M9=d({locationName:r(),attributeCount:m().int().nonnegative(),syncedAt:r(),attributes:y(q9)});d({attributes:y(M9),total:m().int().nonnegative()});const B9=d({locationName:r(),placeId:r(),tier:r(),amenities:y(r()),syncedAt:r(),place:He(r(),wn())});d({places:y(B9),total:m().int().nonnegative()});const R2=j(["gbp","places"]),sg=m().int().min(1).max(4),L9=j(["ok","unavailable","error"]),D2=j(["none","baseline","stale","pending","sent","skipped","suppressed"]);D2.enum;const U9=d({locationName:r(),origin:R2,reviewName:r(),starRating:m().int().min(1).max(5).nullable(),negative:E(),comment:r().nullable(),reviewerName:r().nullable(),createTime:r().nullable(),updateTime:r(),replied:E().nullable(),replyComment:r().nullable(),replyUpdateTime:r().nullable(),reviewUri:r().nullable(),firstSeenAt:r(),lastSeenAt:r(),alertState:D2,alertStateAt:r().nullable()}),V9=d({locationName:r(),displayName:r(),reviewsAccess:L9.nullable(),reviewsAccessReason:r().nullable(),reviewsCheckedAt:r().nullable(),rating:m().nullable(),reviewCount:m().int().nonnegative().nullable(),ratingOrigin:R2.nullable(),ratingObservedAt:r().nullable()});d({negativeMaxStars:m().int().min(1).max(4),locations:y(V9),reviews:y(U9),total:m().int().nonnegative()});d({scope:d({locationName:r().nullable(),locationCount:m().int().nonnegative()}),performance:d({totals:He(r(),m()),recent7d:He(r(),m()),prior7d:He(r(),m()),deltaPct:He(r(),ot().nullable())}),freshness:d({dataThroughDate:r().nullable(),latestStoredDate:r().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(d({date:r(),pending:E(),metrics:He(r(),m())})),keywords:d({total:m().int().nonnegative(),thresholdedCount:m().int().nonnegative(),thresholdedPct:ot(m().min(0).max(100))}),placeActions:d({total:m().int().nonnegative(),hasReservationCta:E(),hasBookingCta:E(),hasDirectMerchantCta:E()}),lodging:d({lodgingLocationCount:m().int().nonnegative(),populatedLodgingCount:m().int().nonnegative(),emptyLodgingCount:m().int().nonnegative()}),profileCompleteness:d({locationCount:m().int().nonnegative(),withSecondaryCategories:m().int().nonnegative(),secondaryCategoryTotal:m().int().nonnegative(),withDescription:m().int().nonnegative(),withServiceArea:m().int().nonnegative(),withHours:m().int().nonnegative(),withPrimaryPhone:m().int().nonnegative(),permanentlyClosed:m().int().nonnegative(),temporarilyClosed:m().int().nonnegative()})});const $9={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function G9(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(o=>o.toLowerCase());if(n.length===0)return e;const i=n.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function Bee(e){return $9[e]??G9(e)}const K9=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],H9=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function Lee(e){return K9.includes(e)?"conversion":H9.includes(e)?"reach":"other"}const pt=r().trim().min(1),Wx=r().regex(/^[a-f0-9]{64}$/i);function F9(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const n=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(n.getTime())&&n.toISOString().slice(0,10)===e}const kn=r().refine(F9,{message:"Expected a calendar date as YYYY-MM-DD."});function Q9(e,n){const i=Date.parse(`${e}T00:00:00.000Z`),o=Date.parse(`${n}T00:00:00.000Z`);return Math.floor((o-i)/864e5)+1}const Z9=j(["not-connected","selection-required","connected","stale"]),dd=Z9.enum,z2=j(["enabled","suspended","closed","canceled","unspecified","unknown"]);z2.enum;const og=j(["enabled","paused","removed","unknown"]);og.enum;const I2=j(["enabled","hidden","removed","unknown"]);I2.enum;const rg=j(["customer","campaign"]);rg.enum;const O2=j(["customer-goal","campaign-goal","custom-goal"]);O2.enum;const P2=d({loginCustomerId:pt.nullable(),customerId:pt.nullable(),selectedAt:r().nullable()}).strict(),pf=d({id:pt,projectId:pt,scopes:y(r()).default([]),selection:P2,lastValidatedAt:r().nullable(),lastInventorySnapshotAt:r().nullable(),lastMetricsSnapshotAt:r().nullable(),createdAt:r(),updatedAt:r()}).strict(),n0=d({resourceName:pt,customerId:pt,parentCustomerId:pt.nullable(),descriptiveName:r().nullable(),currencyCode:r().nullable(),timeZone:r().nullable(),manager:E(),hidden:E(),testAccount:E(),level:m().int().nonnegative(),status:z2}).strict(),Y9=d({customers:y(n0),totalAccessible:m().int().nonnegative(),truncated:E(),selection:P2,fetchedAt:r()}).strict();Be("status",[d({connected:R(!1),status:R(dd["not-connected"]),connection:ue(),selectedCustomer:ue()}).strict(),d({connected:R(!0),status:R(dd["selection-required"]),connection:pf,selectedCustomer:ue()}).strict(),d({connected:R(!0),status:R(dd.connected),connection:pf,selectedCustomer:n0}).strict(),d({connected:R(!0),status:R(dd.stale),connection:pf,selectedCustomer:n0}).strict()]);const X9=d({id:pt,resourceName:pt,name:r(),status:og,advertisingChannelType:r().nullable(),biddingStrategyType:r().nullable()}).strict(),J9=d({id:pt,resourceName:pt,name:r(),status:I2,category:r(),origin:r(),primaryForGoal:E(),includeInConversionsMetric:E()}).strict(),W9=d({category:r(),origin:r(),biddable:E()}).strict(),eI=d({campaignId:pt,category:r(),origin:r(),biddable:E()}).strict(),tI=d({id:pt,name:r(),conversionActionIds:y(pt)}).strict(),nI=d({campaignId:pt,goalConfigLevel:rg,customGoalId:pt.nullable()}).strict(),aI=d({customerId:pt,fetchedAt:r(),campaigns:y(X9),conversionActions:y(J9),customerConversionGoals:y(W9),campaignConversionGoals:y(eI),campaignConversionGoalsComplete:E().optional(),customConversionGoals:y(tI),campaignGoalConfigurations:y(nI)}).strict(),iI=d({source:O2,category:r().nullable(),origin:r().nullable(),customGoalId:pt.nullable(),biddable:E().nullable(),conversionActionIds:y(pt),primaryConversionActionIds:y(pt),secondaryConversionActionIds:y(pt),missingConversionActionIds:y(pt)}).strict(),sI=d({campaignId:pt,goalConfigLevel:rg,customGoalId:pt.nullable(),missingCustomGoalId:pt.nullable(),goals:y(iI)}).strict();d({customerId:pt,derivedAt:r(),campaigns:y(sI)}).strict();const q2=50,a0=31,oI=q2*a0,rI=d({campaignIds:y(pt).min(1).max(q2),startDate:kn,endDate:kn}).strict().superRefine((e,n)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&n.addIssue({code:ye.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){n.addIssue({code:ye.custom,path:["endDate"],message:"endDate must not precede startDate."});return}Q9(e.startDate,e.endDate)>a0&&n.addIssue({code:ye.custom,path:["endDate"],message:`Campaign metrics may cover at most ${a0} calendar days.`})}),lI=d({campaignId:pt,date:kn,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),cI=d({query:rI,rows:y(lI).max(oI),truncated:E(),fetchedAt:r()}).strict(),M2=j(["accessible-customers","inventory","campaign-metrics"]),hf=M2.enum,lg=d({id:pt,projectId:pt,connectionId:pt,runId:pt,kind:M2,customerId:pt.nullable(),payloadChecksum:Wx,rawPayloadSha256:Wx.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:r(),createdAt:r()}).strict(),uI=Be("kind",[d({kind:R(hf["accessible-customers"]),data:Y9}).strict(),d({kind:R(hf.inventory),data:aI}).strict(),d({kind:R(hf["campaign-metrics"]),data:cI}).strict()]),dI=d({metadata:lg,payload:uI}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),mI=j(["7d","14d","30d"]),cg=d({impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable(),ctr:we().nullable(),cpcMicros:m().int().nonnegative().nullable(),conversionRate:we().nullable(),costPerConversionMicros:m().int().nonnegative().nullable()}),pI=d({date:kn,origin:j(["provider","filled"]),impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),ctr:we().nullable()}),hI=d({campaignId:pt,name:r().nullable(),status:og,totals:cg}),fI=d({snapshotId:pt,capturedAt:r(),customerId:pt,currencyCode:r().nullable(),timeZone:r().nullable(),asOfDate:kn,openDate:kn.nullable(),truncated:E(),campaignsQueried:m().int().nonnegative(),campaignsInInventory:m().int().nonnegative()}),gI=d({startDate:kn,endDate:kn,days:m().int().positive(),totals:cg}),yI=d({days:m().int().positive(),prior:gI,change:d({impressions:we().nullable(),clicks:we().nullable(),costMicros:we().nullable(),conversions:we().nullable(),ctr:we().nullable(),conversionRate:we().nullable()})});d({window:mI,startDate:kn,endDate:kn,days:m().int().positive(),totals:cg,daily:y(pI),campaigns:y(hI),comparison:yI.nullable(),comparisonUnavailableReason:j(["insufficient-history","no-snapshot"]).nullable(),source:fI.nullable()});const ym=j(["complete","partial","failed","unsupported"]);ym.enum;const bI=["branded","non-brand"],Vr=j(bI),ug=j(["all","branded","non-brand"]);function vI(e){const n=e.filter(o=>Ga(o).length>0);if(n.length===0)return null;const i=T9(n);return i.keys.size===0?null:{matcher:i,classify(o){return E9(i,o)?"branded":"non-brand"}}}const xI=2,wI=r().regex(/^[a-f0-9]{64}$/),bm=r().trim().min(1).max(256),ew=j(["sensitive","insensitive"]),he=r().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),kI=r().trim().min(1).refine(e=>Bc(e)!==null,"A competitor domain must be a valid hostname"),SI=Be("kind",[d({kind:R("exact"),url:r().min(1),pathCase:ew}).strict(),d({kind:R("prefix"),host:r().min(1),pathPrefix:r().min(1),pathCase:ew}).strict(),d({kind:R("host"),host:r().min(1)}).strict()]),jI=d({canonicalHost:r().min(1),ownedHosts:y(r().min(1)),names:y(r().min(1))}).strict(),AI=d({projectBrand:jI}).strict(),NI=d({stableKey:he,label:r().trim().min(1),aliases:y(r().min(1)),identityAliases:y(r().trim().min(1)).optional(),urlMatchers:y(SI),mentionNotApplicable:E(),discoveryIdentity:r().min(1).nullable()}).strict(),B2=d({stableKey:he,label:r().trim().min(1),domain:kI,aliases:y(r().min(1))}).strict(),CI=d({stableKey:he,label:r().trim().min(1),parentGroupKey:he.optional(),targetKeys:y(he),competitors:y(B2)}).strict(),_I=j(["manual","query-set","template","discovery","research"]),TI=d({templateId:r().trim().min(1).max(256),templateVersion:r().trim().min(1).max(256),template:r().trim().min(1).max(4e3),bindings:He(r().trim().min(1).max(128),r().trim().min(1).max(128)),output:r().trim().min(1).max(4e3)}).strict(),L2=d({source:_I,sourceId:r().min(1).nullable(),capturedAt:r().datetime(),template:TI.optional()}).strict(),EI=d({queryId:bm,queryText:r().min(1),provenance:L2}).strict(),vm=d({providers:y(jt).min(1),models:He(jt,r().min(1)),location:mn.nullable()}).strict(),RI=d({stableKey:r().min(1),queryId:bm,queryText:r().min(1),context:vm,expectedSnapshots:m().int().nonnegative()}).strict(),dg=Vr,DI=d({targetKey:he,queryId:bm,queryClass:dg,classificationSource:j(["server","operator"]).optional(),executionNodeKey:r().min(1)}).strict(),mg=d({executionNodeKey:r().min(1),targetKey:he,queryId:bm}).strict(),U2=d({stableKey:he,label:r().trim().min(1),kind:R("market"),groupKey:he.optional(),usageEdges:y(mg)}).strict();function tw(e){return[e.executionNodeKey,e.targetKey,e.queryId].join("\0")}const xm=d({schemaVersion:R(xI),identities:AI,targets:y(NI),groups:y(CI),querySnapshots:y(EI),assignments:y(DI),executionNodes:y(RI),usageEdges:y(mg),reportingScopes:y(U2).optional(),compiledChecksum:wI}).strict().superRefine((e,n)=>{const i=new Set;for(const b of e.executionNodes)i.has(b.stableKey)&&n.addIssue({code:ye.custom,path:["executionNodes"],message:`Duplicate execution node key "${b.stableKey}"`}),i.add(b.stableKey);const o=new Set(e.targets.map(b=>b.stableKey));e.usageEdges.forEach((b,v)=>{i.has(b.executionNodeKey)||n.addIssue({code:ye.custom,path:["usageEdges",v,"executionNodeKey"],message:`Usage edge references unknown execution node "${b.executionNodeKey}"`}),o.has(b.targetKey)||n.addIssue({code:ye.custom,path:["usageEdges",v,"targetKey"],message:`Usage edge references unknown Target "${b.targetKey}"`})});const u=new Set(e.usageEdges.map(tw)),h=new Set;e.reportingScopes?.forEach((b,v)=>{if(h.has(b.stableKey)&&n.addIssue({code:ye.custom,path:["reportingScopes",v,"stableKey"],message:`Duplicate reporting scope key "${b.stableKey}"`}),h.add(b.stableKey),b.groupKey!==void 0){const k=e.groups.find(S=>S.stableKey===b.groupKey);(!k||b.usageEdges.some(S=>!k.targetKeys.includes(S.targetKey)))&&n.addIssue({code:ye.custom,path:["reportingScopes",v,"groupKey"],message:"A market must link to an existing group containing all its assigned properties."})}const x=new Set;b.usageEdges.forEach((k,S)=>{const C=tw(k);u.has(C)||n.addIssue({code:ye.custom,path:["reportingScopes",v,"usageEdges",S],message:`Reporting scope "${b.stableKey}" references a usage edge that this revision does not contain.`}),x.has(C)&&n.addIssue({code:ye.custom,path:["reportingScopes",v,"usageEdges",S],message:`Reporting scope "${b.stableKey}" repeats a usage edge.`}),x.add(C)})}),e.assignments.forEach((b,v)=>{o.has(b.targetKey)||n.addIssue({code:ye.custom,path:["assignments",v,"targetKey"],message:`Assignment references unknown Target "${b.targetKey}"`})});const f=new Map;e.groups.forEach((b,v)=>{f.has(b.stableKey)&&n.addIssue({code:ye.custom,path:["groups",v,"stableKey"],message:"Duplicate group stable key "+b.stableKey}),f.set(b.stableKey,b)}),e.groups.forEach((b,v)=>{const x=b.parentGroupKey;if(x===void 0)return;if(x===b.stableKey){n.addIssue({code:ye.custom,path:["groups",v,"parentGroupKey"],message:"A group cannot be its own parent."});return}const k=f.get(x);if(!k){n.addIssue({code:ye.custom,path:["groups",v,"parentGroupKey"],message:"Group parent does not exist: "+x});return}const S=new Set(k.targetKeys);b.targetKeys.forEach((z,q)=>{S.has(z)||n.addIssue({code:ye.custom,path:["groups",v,"targetKeys",q],message:"Group target membership must be a subset of its parent."})});const C=new Set([b.stableKey]);let _=k;for(;_.parentGroupKey!==void 0;){if(C.has(_.stableKey)){n.addIssue({code:ye.custom,path:["groups",v,"parentGroupKey"],message:"Group parent relationships cannot contain a cycle."});break}C.add(_.stableKey);const z=f.get(_.parentGroupKey);if(!z)break;_=z}});for(const b of e.groups)for(const v of b.targetKeys)o.has(v)||n.addIssue({code:ye.custom,path:["groups"],message:`Group "${b.stableKey}" references unknown Target "${v}"`})}),pg=100;function zr(e){return d({items:y(e),nextCursor:r().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const Lc=j(["no_completed_run","plan_v1","no_population","evidence_incomplete","identity_ambiguous","not_applicable"]),dn=Be("state",[d({state:R("available"),value:we(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional(),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:"custom",path:["unchecked"],message:"A metric reads one signal: unattributed (mention) and unchecked (citation) cannot share it"})}),d({state:R("unavailable"),reason:Lc}).strict()]),ko=Be("state",[d({state:R("available"),value:m().int().nonnegative(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),d({state:R("unavailable"),reason:Lc}).strict()]),hg=j(["all","group","property"]),pa=ug,zI=j(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),fg=j(["not_measured","queued","running","complete","partial","failed"]),II=j(["run_measurement","review_flags","complete_setup","republish_setup","none"]);d({scope:hg,groupKey:he.optional(),targetKey:he.optional(),queryClass:pa.optional(),provider:jt.optional(),location:r().trim().min(1).optional(),from:r().trim().min(1).optional(),to:r().trim().min(1).optional(),runId:r().trim().min(1).optional(),search:r().optional(),sort:zI.optional(),cursor:r().trim().min(1).optional(),limit:m().int().positive().max(pg).optional(),compact:E().optional()}).strict();const OI=d({provider:jt,mentionCoverage:dn,citationCoverage:dn}).strict(),PI=d({bothSignals:m().int().nonnegative(),mentionedOnly:m().int().nonnegative(),citedOnly:m().int().nonnegative(),neither:m().int().nonnegative(),notMeasured:m().int().nonnegative(),total:m().int().nonnegative()}).strict(),i0=d({groupKey:he,label:r().trim().min(1)}).strict(),qI=d({targetKey:he,label:r().min(1),metro:i0.nullable().optional(),otherMetros:y(i0).min(1).optional(),mentionCoverage:dn,citationCoverage:dn,providers:y(OI),flags:m().int().nonnegative()}).strict(),MI=d({kind:j(["project","competitor"]),stableKey:r().min(1),label:r().min(1),domain:r().min(1),credits:m().int().nonnegative(),share:we(m().min(0).max(1))}).strict(),BI=d({groupKey:he,queryClass:R("non-brand"),denominator:m().int().positive(),entries:y(MI)}).strict();d({mode:j(["active-v1","active-v2"]),scope:d({kind:hg,key:r().min(1).optional(),label:r().min(1)}).strict(),queryClass:pa,measurement:d({state:fg,currentRunId:r().min(1).optional(),displayedRunId:r().min(1).optional(),completed:m().int().nonnegative(),expected:m().int().nonnegative(),completedAt:r().datetime().optional(),includesHistoricalData:E().optional()}).strict(),nextAction:d({kind:II,count:m().int().nonnegative().optional()}).strict(),metrics:d({propertiesMentioned:ko,mentionCoverage:dn,citationCoverage:dn,brandPresence:dn,sov:dn.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:zr(qI),outcomes:PI,flags:d({total:m().int().nonnegative()}).strict(),namedShareOfVoice:BI.optional(),detailsOmitted:y(r()).optional()}).strict();const V2=j(["sources","answers"]),LI=V2.enum;LI.sources;d({targetKey:he,queryClass:pa.optional(),provider:jt.optional(),location:r().trim().min(1).optional(),runId:r().trim().min(1).optional(),shape:V2.optional(),cursor:r().trim().min(1).optional(),limit:m().int().positive().max(pg).optional()}).strict();const $2=1,Uc=m().int().positive(),gn=r().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Vc=r().trim().min(1).max(256),nw=j(["sensitive","insensitive"]);function $d(e){const n=Bc(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function UI(e){const n=[];let i=!1;for(let o=0;o<e.length;o++){const u=e[o];u==="/"?(i||n.push(u),i=!0):(n.push(u),i=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function aw(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function G2(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return UI(n.replace(/%[0-9a-f]{2}/gi,i=>i.toUpperCase()))}function s0(e){const n=e.trim();if(!n||n.includes("?")||n.includes("#")||n.includes("://")||n.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const i=n.startsWith("/")?n:`/${n}`;for(const o of i.split("/")){let u;try{u=decodeURIComponent(o)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(u==="."||u==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return G2(i)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function VI(e){const n=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!n)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(n[0].length).split(/[?#]/,1)[0]||"/"}function iw(e){const n=e.trim();if(!n||n.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let i;try{i=new URL(n)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(i.protocol!=="http:"&&i.protocol!=="https:"||i.username||i.password||i.port||i.search||i.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const o=$d(i.hostname),u=s0(VI(n));return`https://${o}${u}`}const Cc=r().trim().min(1).refine(e=>{try{return $d(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>$d(e)),$I=r().trim().min(1).refine(e=>{try{return s0(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>s0(e)),GI=r().trim().min(1).refine(e=>{try{return iw(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>iw(e)),KI=Be("kind",[d({kind:R("exact"),url:GI,pathCase:nw}).strict(),d({kind:R("prefix"),host:Cc,pathPrefix:$I,pathCase:nw}).strict(),d({kind:R("host"),host:Cc}).strict()]),K2=r().trim().min(1).max(256).refine(e=>Ga(e).length>0,"A target alias must contain mention text"),HI=He(r().trim().min(1),r()),FI=Cc,H2=d({stableKey:gn,label:r().trim().min(1),urls:y(KI).min(1),aliases:y(K2),metadata:HI.optional()}).strict(),gg=d({stableKey:gn,label:r().trim().min(1),targetKeys:y(gn).min(1),competitors:y(FI).optional()}).strict(),F2=d({targetKey:gn,queryIds:y(Vc).min(1),context:mn.nullable().optional()}).strict();function QI(e,n){return e<n?-1:e>n?1:0}function ZI(e,n=i=>i){const i=new Set,o=new Set;for(const u of e){const h=n(u);i.has(h)&&o.add(h),i.add(h)}return o}function ff(e,n,i,o,u){for(const h of ZI(n,u))e.addIssue({code:"custom",path:[...i],message:`Duplicate ${o}: ${h}`})}function sw(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const n=new URL(e.url);return{host:$d(n.hostname),pathname:G2(n.pathname||"/")}}function YI(e,n,i,o){return e===i||(n==="insensitive"||o==="insensitive")&&aw(e)===aw(i)}function XI(e,n){if(e.kind!==n.kind)return!1;const i=sw(e),o=sw(n);return i.host!==o.host?!1:e.kind==="host"||n.kind==="host"?!0:YI(i.pathname,e.pathCase,o.pathname,n.pathCase)}function JI(e){const n=new Set;return[...e].sort(QI).filter(i=>{const o=Ga(i);return n.has(o)?!1:(n.add(o),!0)})}const Q2=d({schemaVersion:R($2),targets:y(H2).min(1),groups:y(gg).optional(),targetQuerySelections:y(F2).optional()}).strict().superRefine((e,n)=>{const i=e.groups??[],o=e.targetQuerySelections??[];ff(n,e.targets.map(v=>v.stableKey),["targets"],"target stable key"),ff(n,i.map(v=>v.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(v=>v.stableKey)),h=new Set(i.map(v=>v.stableKey));for(const v of u)h.has(v)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${v}`});const f=new Map,b=[];e.targets.forEach((v,x)=>{for(const k of JI(v.aliases)){const S=Ga(k),C=f.get(S);C&&C!==v.stableKey&&n.addIssue({code:"custom",path:["targets",x,"aliases"],message:`Target alias is already assigned to target ${C}: ${k}`}),f.set(S,v.stableKey)}v.urls.forEach((k,S)=>{b.find(_=>_.targetKey!==v.stableKey&&XI(_.matcher,k))&&n.addIssue({code:"custom",path:["targets",x,"urls",S],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:v.stableKey,matcher:k})})}),i.forEach((v,x)=>{ff(n,v.targetKeys,["groups",x,"targetKeys"],"group target key");for(let k=0;k<v.targetKeys.length;k++){const S=v.targetKeys[k];u.has(S)||n.addIssue({code:"custom",path:["groups",x,"targetKeys",k],message:`Unknown target: ${S}`})}}),o.forEach((v,x)=>{u.has(v.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",x,"targetKey"],message:`Unknown target: ${v.targetKey}`})})});Q2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));d({expectedActiveRevision:Uc.nullable(),plan:Q2}).strict();const WI=d({queryId:Vc,queryText:r().min(1)}).strict(),yg=d({stableKey:r().min(1),queryText:r().min(1),context:mn.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),eO=d({kind:R("baseline"),executionNodeKey:r().min(1),queryId:Vc}).strict(),tO=d({kind:R("target"),executionNodeKey:r().min(1),queryId:Vc,targetKey:gn}).strict(),o0=Be("kind",[eO,tO]),Z2=d({code:R("target-alias-prefix-overlap"),message:r().min(1),targetKeys:y(gn).min(1),aliases:y(r().min(1)).min(1)}).strict(),Y2=H2.extend({mentionNotApplicable:E()}),X2=d({schemaVersion:R($2),defaultContext:mn.nullable(),effectiveOwnedHosts:y(Cc),projectCanonicalHost:Cc,projectBrandNames:y(K2),targets:y(Y2),groups:y(gg),targetQuerySelections:y(F2),querySnapshots:y(WI),executionNodes:y(yg),usageEdges:y(o0),warnings:y(Z2)}).strict(),nO=X2,J2=Be("schemaVersion",[X2,xm]),bg=r().regex(/^[a-f0-9]{64}$/),vg=r().datetime(),W2=d({schemaVersion:R(1),language:r().min(1).optional(),providers:y(r().min(1)).min(1),models:He(r().min(1),r().min(1)),checksum:r().regex(/^[a-f0-9]{64}$/)}).strict(),aO=d({groups:y(gn).optional(),targets:y(gn).optional()}).strict(),iO=d({groups:y(gn),targets:y(gn),queries:y(r().min(1)),resolvedTargets:y(gn)}).strict().superRefine((e,n)=>{e.resolvedTargets.length===0&&e.queries.length===0&&n.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});d({stableKey:gn,retiredAt:r().datetime()});d({active:d({revision:Uc,checksum:bg,createdAt:vg,plan:J2}).nullable()});d({versions:y(d({revision:Uc,checksum:bg,createdAt:vg,active:E()}))});d({version:d({revision:Uc,checksum:bg,createdAt:vg,active:E(),plan:J2})});const _d=d({targets:m().int(),groups:m().int(),queries:m().int(),executionNodes:m().int(),usageEdges:m().int(),baselineEdges:m().int(),targetEdges:m().int(),dedupSavings:m().int()}).strict(),sO=j(["invalid-authoring","duplicate-identity","unknown-target","unknown-query","invalid-project-context","unowned-target-url","owned-competitor","target-query-context-conflict","target-url-ownership-tie","target-alias-cross-target-collision","target-alias-project-brand-collision","target-alias-prefix-overlap"]),ej=d({id:sO,severity:j(["fail","warn"]),message:r().min(1),path:y(Qe([r(),m().int()]))}).strict(),oO=d({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),tj=d({ok:R(!0),checks:y(ej),executionNodes:y(yg),dedupSaved:m().int().nonnegative(),usageEdges:oO,estCostUsd:ue(),plan:nO,warnings:y(Z2),counts:_d}).strict(),nj=d({ok:R(!1),checks:y(ej).min(1),executionNodes:y(yg).length(0),dedupSaved:R(0),usageEdges:d({baseline:R(0),target:R(0)}).strict(),estCostUsd:ue()}).strict();Be("ok",[tj,nj]);const md=d({targetKey:gn,context:mn.nullable(),queryIds:y(Vc)}).strict();function ow(e){return d({added:y(e),removed:y(e),changed:y(d({stableKey:gn,before:e,after:e}).strict()),unchanged:y(gn)}).strict()}const rO=tj.extend({diff:d({activeRevision:Uc.nullable(),targets:ow(Y2),groups:ow(gg),querySelections:d({added:y(md),removed:y(md),changed:y(d({targetKey:gn,before:md,after:md}).strict()),unchanged:y(d({targetKey:gn,context:mn.nullable()}).strict())}).strict(),execution:d({addedNodeKeys:y(r().min(1)),removedNodeKeys:y(r().min(1)),addedUsageEdges:y(o0),removedUsageEdges:y(o0),counts:d({before:_d.nullable(),after:_d,delta:_d.nullable()}).strict()}).strict()}).strict()}).strict(),lO=nj.extend({diff:ue()}).strict();Be("ok",[rO,lO]);const aj=j(["PROVIDER_AUTH","PROVIDER_BILLING","RATE_LIMITED","PROVIDER_UNAVAILABLE","NETWORK","TIMEOUT","PARSE_ERROR","UNKNOWN"]);aj.enum;const ha=j(["queued","running","completed","partial","failed","cancelled"]),Zt=ha.enum,xg=j(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync","google-ads-sync","gtm-sync"]),ze=xg.enum;d({kind:xg.optional(),status:ha.optional()});const wg=j(["manual","scheduled","config-apply","backfill","probe"]),ii=wg.enum,Li=j(["cited","not-cited"]),yc=Li.enum,Gd=j(["visible","not-visible"]);Gd.enum;const _c=j(["mentioned","not-mentioned"]);_c.enum;const ij=j(["new","cited","lost","emerging","not-cited"]);ij.enum;const cO=j(["new","mentioned","lost","emerging","not-mentioned"]);cO.enum;const uO=j([ii.manual,ii.probe]);d({kind:R(ze["answer-visibility"]).optional(),trigger:uO.optional(),providers:y(jt).optional(),queries:y(r().min(1)).min(1).optional(),measurementScope:aO.optional(),location:r().min(1).optional(),allLocations:E().optional(),noLocation:E().optional(),dispatchMode:Mc.optional(),force:E().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const dO=d({message:r(),raw:wn().optional(),code:aj.optional()}),mO=d({message:r().optional(),providers:He(r(),dO).optional()}),pO=He(r(),R(Mc.enum.batch)),hO=d({id:r(),provider:r(),model:r(),status:v2,requestCount:m().int().nonnegative(),ingestedCount:m().int().nonnegative(),recordedCount:m().int().nonnegative(),submittedAt:r().nullable(),endedAt:r().nullable(),deadlineAt:r(),error:r().nullable()}),fO=d({provider:r(),pricingTier:ag,answers:m().int().nonnegative(),inputTokens:m().int().nonnegative(),cachedInputTokens:m().int().nonnegative(),cacheWriteTokens:m().int().nonnegative(),outputTokens:m().int().nonnegative(),searchCount:m().int().nonnegative(),estimatedCostMicros:m().int().nonnegative().nullable(),unpricedAnswers:m().int().nonnegative()}),gO=d({id:r(),projectId:r(),kind:xg,status:ha,trigger:wg.default("manual"),measurementPlanVersionId:r().nullable().optional(),measurementManifest:He(r(),wn()).nullable().optional(),measurementScope:iO.nullable().optional(),measurementExecutionIdentity:W2.nullable().optional(),location:r().nullable().optional(),queries:y(r()).nullable().optional(),startedAt:r().nullable().optional(),finishedAt:r().nullable().optional(),error:mO.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),dispatchModes:pO.optional(),createdAt:r()});function kg(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[i,o]=n[0];return`${i}: ${o.message}`}if(n.length>1)return n.map(([i,o])=>`${i}: ${o.message}`).join(" • ")}return e.message??"Run failed."}const wm=d({uri:r(),title:r()}),yO=d({status:j(["applied","ignored","browser-implicit","unknown"]),resolved:mn.nullable().optional()}),sj=d({id:r(),runId:r(),queryId:r(),query:r().optional(),provider:jt,citationState:Li,answerMentioned:E().optional(),visibilityState:Gd.optional(),mentionState:_c.optional(),transition:ij.optional(),answerText:r().nullable().optional(),citedDomains:y(r()).default([]),citedUrls:y(r()).nullable().default(null),captureStatus:Qe([ym,ue()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Qe([Z0,ue()]).default(null),retrievalContract:Qe([Y0,ue()]).default(null),competitorOverlap:y(r()).default([]),citedCompetitorDomains:y(r()).default([]),mentionedCompetitorDomains:y(r()).default([]),mentionedCompetitorTerms:y(r()).default([]),recommendedCompetitors:y(r()).default([]),matchedTerms:y(r()).default([]),groundingSources:y(wm).default([]),searchQueries:y(r()).default([]),model:r().nullable().optional(),servedModel:r().nullable().optional(),location:r().nullable().optional(),requestedContext:mn.nullable().optional(),supportedContext:yO.nullable().optional(),dispatchMode:Qe([Mc,ue()]).optional(),stopReason:r().nullable().optional(),usage:$z.nullable().optional(),createdAt:r()});d({snapshots:y(sj),total:m().int().nonnegative()});const bO=d({queryId:r().nullable(),query:r().nullable(),run1State:Li.nullable(),run2State:Li.nullable(),run1AnswerMentioned:E().nullable(),run2AnswerMentioned:E().nullable(),run1VisibilityState:Gd.nullable(),run2VisibilityState:Gd.nullable(),run1MentionState:_c.nullable().optional(),run2MentionState:_c.nullable().optional(),changed:E(),visibilityChanged:E()});d({run1:r(),run2:r(),diff:y(bO)});const vO=d({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),mentionedQueries:m().int().nonnegative()}),xO=gO.extend({snapshots:y(sj).optional(),queryCounts:vO.nullable().optional(),providerBatches:y(hO).optional(),usage:y(fO).optional()}),wO=d({totalRuns:m().int().nonnegative(),run:xO.nullable()});d({id:r(),projectId:r().nullable().optional(),actor:r(),action:r(),entityType:r(),entityId:r().nullable().optional(),diff:wn().optional(),userAgent:r().nullable().optional(),actorSession:r().nullable().optional(),requestId:r().nullable().optional(),credentialId:r().nullable().optional(),createdAt:r()});const oj=Qe([ha,ue()]),Sg=j(["pass","partial","fail"]),Uee=Sg.enum,rj=j(["up","down","flat"]);rj.enum;const kO=d({id:r(),name:r(),weight:m(),sharePct:ot(m().min(0).max(100)).nullable().default(null),avgScore:m(),status:Sg,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),SO=d({factorId:r(),factorName:r(),avgScore:m(),affectedPages:m().int().nonnegative(),totalPages:m().int().nonnegative(),affectedPct:ot(m().nonnegative()),topRecommendations:y(r()).default([])}),Va=d({reason:j(["explicit-run","latest-date-complete","latest-date-most-pages","latest-scored-scan","requested-date-complete","requested-date-most-pages"]),date:r(),sameDateRunCount:m().int().nonnegative(),ambiguousDate:E(),candidates:y(d({runId:r(),createdAt:r(),complete:E(),pages:m().int().nonnegative()})).max(10),candidatesTruncated:E()});d({project:r(),hasData:E(),runId:r().nullable(),runStatus:oj,sitemapUrl:r().nullable(),auditedAt:r().nullable(),aggregateScore:m(),pagesDiscovered:m().int().nonnegative(),pagesAudited:m().int().nonnegative(),pagesSkipped:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),deltaScore:m().nullable(),trend:Qe([rj,ue()]),previousScore:m().nullable(),previousAuditedAt:r().nullable(),runSelection:Va.optional(),factors:y(kO).default([]),affectedPageRanking:d({basis:R("pages-below-pass"),scope:R("audited-pages"),pagesAudited:m().int().nonnegative(),items:y(d({factorId:r(),pagesBelowPass:m().int().nonnegative(),pagesFailing:m().int().nonnegative(),pagesPartial:m().int().nonnegative()})),unavailableFactorIds:y(r())}).optional(),crossCuttingIssues:y(SO).default([]),prioritizedFixes:y(r()).default([])});const lj=d({id:r(),name:r(),weight:m(),score:m(),sharePct:ot(m().min(0).max(100)).nullable().default(null)}),jO=d({url:r(),overallScore:m(),status:j(["success","error"]),error:r().nullable().optional(),factors:y(lj).default([])});d({project:r(),runId:r().nullable(),auditedAt:r().nullable(),runSelection:Va.optional(),total:m().int().nonnegative(),pages:y(jO).default([])});const AO=d({runId:r(),auditedAt:r(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});d({project:r(),points:y(AO).default([])});const NO=j(["disabled","complete","partial","unavailable"]);NO.enum;const $r=j(["indexable","redirect-terminal","canonical-to-other","robots-disallow","noindex","non-html","fetch-error","not-fetched","unknown"]);$r.enum;const cj=d({healthReason:$r,pages:m().int().nonnegative(),exampleUrl:r()}),uj=d({scope:R("selected-snapshot"),total:m().int().nonnegative(),eligible:m().int().nonnegative(),excluded:m().int().nonnegative(),excludedReasons:y(cj).max($r.options.length)}),dj=d({recentDates:y(kn).max(10),totalDates:m().int().nonnegative(),matchingMonthDayDates:y(kn).max(10),matchingMonthDayTotal:m().int().nonnegative()}),CO=d({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),_O=Be("state",[d({state:R("unavailable")}),d({state:R("disabled")}),d({state:R("complete"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()}),d({state:R("partial"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()})]);d({project:r(),hasCrawlData:E(),legacyAuditAvailable:E(),runId:r().nullable(),runSelection:Va.optional(),requestedDate:kn.optional(),availableScanDates:dj.optional(),inventorySummary:uj.nullable().optional(),runStatus:oj,requestedRootUrl:r().nullable(),rootUrl:r().nullable(),crawlSchemaVersion:r().nullable().optional(),engineVersion:r().nullable().optional(),normalizationVersion:r().nullable().optional(),indexabilityVersion:r().nullable().optional(),linkScoreVersion:r().nullable().optional(),effectiveOptions:He(r(),wn()).default({}),complete:E(),termination:r().nullable(),detailsAvailable:E(),counts:CO,deadLinks:_O});j(["complete","unknown","max-pages","max-edges","max-fetches","max-duration","max-bytes","max-page-bytes","max-depth","max-links-per-page","max-query-variants","max-sitemap-fanout","max-sitemap-urls","root-host-redirect"]);const km=j(["eligible","hidden","resource","redirect","failed","unchecked"]),Vee=km.enum,$ee=km.options,Sr={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},pd={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},TO={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function EO(e){return e.indexabilityReasons?.some(n=>n===TO.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function Gee(e){switch(e.fetchState){case Sr.fetchError:return"failed";case Sr.discovered:return"unchecked";case Sr.nonHtml:return"resource";case Sr.redirect:return"redirect";case Sr.robotsBlocked:return"hidden";case Sr.html:break;default:return"unchecked"}if(EO(e))return"hidden";switch(e.indexabilityState){case pd.indexable:return"eligible";case pd.noindex:case pd.blocked:return"hidden";case pd.unknown:default:return"unchecked"}}const Kee=15,RO=j(["navigation","content","unknown"]);RO.enum;const DO=d({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),mj=j(["placement","ubiquity","unmeasured"]);mj.enum;const Sm=j(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);Sm.enum;function Hee(e){switch(e){case"applied":case"applied-placement":case"applied-placement-with-ubiquity":case"applied-placement-partial":return!0;case"unavailable-too-few-pages":case"unavailable-legacy-scan":return!1}}const jm=j(["all","content","template"]);jm.enum;const zO=j(["anchor","redirect","canonical","link"]);zO.enum;const Tc=d({nodeKey:r(),url:r(),finalUrl:r().nullable(),path:r(),parentPath:r(),discoverySource:r(),fetchState:r(),httpStatus:m().int().nullable(),canonicalUrl:r().nullable(),indexabilityState:r(),indexabilityReasons:y(r()).default([]),auditState:r(),auditScore:m().nullable(),inventoryEligible:E(),depth:m().int().nullable(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),inboundOccurrences:m().int().nonnegative(),outboundOccurrences:m().int().nonnegative(),linkScoreRaw:m().nullable(),linkScoreNormalized:ot().nullable(),healthState:km,healthReason:$r.optional()}),IO=d({type:j(["found","missing","info","timeout","unreachable"]),code:r().min(1),message:r().min(1)}),rw=lj.extend({status:Sg,applicable:E().nullable(),findings:y(IO).default([]),recommendations:y(r()).default([])}),lw=d({id:r().min(1),severity:j(["critical","warning"]),detail:r().min(1),recommendation:r().min(1)}),hd=d({project:r(),runId:r(),complete:E(),termination:r().nullable(),runSelection:Va.optional()}),cw=d({nodeKey:r(),url:r(),auditState:r()});Be("state",[d({state:R("no-crawl"),project:r(),runId:ue()}),hd.extend({state:R("details-unavailable")}),hd.extend({state:R("not-found")}),hd.merge(cw).extend({state:R("not-audited"),auditScore:ue(),factors:y(rw).length(0).default([]),criticalDefects:y(lw).length(0).default([])}),hd.merge(cw).extend({state:R("ready"),auditScore:m(),evidenceState:j(["complete","scores-only"]),factors:y(rw).default([]),criticalDefects:y(lw).default([])})]);const OO=j(["applied","unavailable-legacy-scan"]),$c={complete:E(),termination:r().nullable(),runSelection:Va.optional()};d({project:r(),hasCrawlData:E(),runId:r().nullable(),...$c,requestedDate:kn.optional(),availableScanDates:dj.optional(),inventorySummary:uj.nullable().optional(),healthReasonCounts:y(cj).max($r.options.length).nullable().optional(),total:m().int().nonnegative(),nextCursor:r().nullable(),healthStateFilter:Qe([OO,ue()]).default(null),pages:y(Tc).default([])});const PO=d({path:r(),url:r().nullable(),hasPage:E(),pageCount:m().int().positive(),inventoryEligibleCount:m().int().nonnegative(),fetchedCount:m().int().nonnegative()});d({project:r(),hasCrawlData:E(),runId:r().nullable(),...$c,parentPath:r(),nextCursor:r().nullable(),children:y(PO).default([])});const So=d({edgeKey:r(),sourceNodeKey:r(),sourceUrl:r(),targetNodeKey:r().nullable(),targetUrl:r(),relation:r(),internal:E(),followable:E(),occurrences:m().int().positive(),followableOccurrences:m().int().nonnegative(),nofollowOccurrences:m().int().nonnegative(),anchors:y(r()).default([]),isTemplate:Qe([E(),ue()]),templateRatio:Qe([we(),ue()]),templateSource:mj,placementOccurrences:Qe([DO,ue()])}),qO=d({nodeKey:r(),url:r(),path:r(),depth:m().int().nonnegative().nullable(),indexabilityState:r(),fetchState:r(),auditState:r(),auditScore:m().nullable(),inventoryEligible:E(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),linkScoreNormalized:ot().nullable(),healthState:km,healthReason:$r.optional(),x:m(),y:m()}),MO=d({edgeKey:r(),sourceNodeKey:r(),targetNodeKey:r(),followable:E(),occurrences:m().int().positive(),isTemplate:E()}),BO=j(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),LO=Be("state",[d({state:R("ready"),version:r().min(1),computedAt:r().min(1),templateLinksExcluded:E()}),d({state:R("unavailable"),version:ue(),reason:BO})]);d({project:r(),hasCrawlData:E(),runId:r().nullable(),rootNodeKey:r().nullable(),...$c,layout:LO,templateDetection:Sm,linkKind:jm,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(qO).default([]),edges:y(MO).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:E()});const Fee=2e4,Qee=5e4,UO=j(["focus","inbound","outbound","both","transitive"]),VO=Tc.extend({distance:m().int().nonnegative(),relationToFocus:UO});d({project:r(),hasCrawlData:E(),runId:r().nullable(),complete:E(),termination:r().nullable(),runSelection:Va.optional(),state:j(["no-crawl","details-unavailable","ready"]),focusNodeKey:r().nullable(),focusUrl:r().nullable(),hops:m().int().min(0).max(3),totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),nodes:y(VO).default([]),edges:y(So).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:j(["exact","lower-bound"]),truncated:E()});const uw=d({nodeKey:r(),url:r(),path:r()});d({project:r(),runId:r().nullable(),complete:E(),termination:r().nullable(),runSelection:Va.optional(),state:j(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:uw.nullable(),to:uw.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y(Tc).default([]),edges:y(So).default([])});const pj=j(["added","removed","changed"]),$O=d({entity:R("page"),change:pj,key:r(),changedFields:y(r()).default([]),before:Tc.nullable(),after:Tc.nullable()}),GO=d({entity:R("link"),change:pj,key:r(),changedFields:y(r()).default([]),before:So.nullable(),after:So.nullable()}),KO=Be("entity",[$O,GO]),dw=d({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),HO=d({scope:j(["all","pages","links"]),change:j(["all","added","removed","changed"])});Be("state",[d({project:r(),state:R("unavailable"),reason:j(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:r().nullable(),toRunId:r().nullable()}),d({project:r(),state:R("incompatible"),reason:R("incompatible-versions"),fromRunId:r(),toRunId:r(),mismatchedVersions:y(r()).min(1)}),d({project:r(),state:R("ready"),fromRunId:r(),toRunId:r(),versions:d({crawlSchema:r(),normalization:r(),indexability:r(),linkScore:r()}),filters:HO,summaryState:j(["exact","omitted-on-continuation"]),summary:d({pages:dw,links:dw}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:r().nullable(),changes:y(KO).default([])})]);d({project:r(),hasCrawlData:E(),runId:r().nullable(),...$c,total:m().int().nonnegative(),nextCursor:r().nullable(),templateDetection:Sm,linkKind:jm,edges:y(So).default([])});d({project:r(),hasCrawlData:E(),runId:r().nullable(),...$c,nodeKey:r().nullable(),url:r().nullable(),templateDetection:Sm,linkKind:jm,inbound:y(So).default([]),outbound:y(So).default([]),inboundTruncated:E(),outboundTruncated:E()});const mw=d({findingKey:r(),severity:r(),sourceNodeKey:r().nullable(),sourceUrl:r().nullable(),targetNodeKey:r().nullable(),targetUrl:r().nullable(),evidence:He(r(),wn()).default({})});Be("state",[d({project:r(),runId:r().nullable(),state:R("unavailable"),legacyAuditAvailable:E(),runSelection:Va.optional()}),d({project:r(),runId:r(),state:R("disabled"),checkDeadLinks:R(!1),runSelection:Va.optional()}),d({project:r(),runId:r(),state:R("complete"),checkDeadLinks:R(!0),runSelection:Va.optional(),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:r().nullable(),deadLinks:y(mw).default([])}),d({project:r(),runId:r(),state:R("partial"),checkDeadLinks:R(!0),runSelection:Va.optional(),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:r().nullable(),deadLinks:y(mw).default([])})]);const hj=5e4,Am=m().int().min(1).max(hj);function pw(e){return`${e.toLocaleString("en-US")} ${e===1?"page":"pages"}`}function Zee(e){return e===null?`full site (up to ${pw(hj)})`:pw(e)}const Yee=10,fj=100;d({sitemapUrl:r().url().optional(),limit:m().int().positive().max(2e3).optional(),maxPages:Am.optional(),maxEdges:m().int().positive().max(1e6).optional(),maxDepth:m().int().min(0).max(100).optional(),checkDeadLinks:E().default(!1)});d({runId:r(),status:ha});const FO=d({runId:r(),status:ha,createdAt:r(),startedAt:r().nullable(),finishedAt:r().nullable(),hasCrawlData:E()});d({project:r(),preferredRunId:r().nullable().optional(),scans:y(FO).default([])});const QO=j(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),ZO=d({state:j(["pending","ready","unavailable"]),layoutVersion:r().nullable(),failureCode:r().nullable(),updatedAt:r().nullable()}),YO=d({id:r(),state:r(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:r(),startedAt:r().nullable(),finishedAt:r().nullable(),error:r().nullable()});d({project:r(),runId:r(),status:ha,phase:QO,attempt:YO.nullable(),layout:ZO,error:r().nullable()});const XO=j(["waiting","collecting","terminal"]),JO=d({nodeKey:r(),url:r(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});d({project:r(),runId:r(),status:ha,state:XO,attemptId:r().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:r().nullable(),examples:y(JO).max(12).default([])});new Set(w2.map(e=>e.toLowerCase()));const WO=4,eP=3,tP=10,nP=80,gj=y(r()).describe(`Operator-curated names this competitor goes by in answer text (at most ${tP}, each ${nP} characters or fewer, at least ${eP} letters or digits).`);d({aliases:gj});const aP=d({domain:r().trim().min(1),aliases:gj.optional()}),yj=Qe([r().trim().min(1),aP]),bj=j(["cli","api","config-file"]);function iP(e){const n=new Set,i=new Set;for(const o of e){if(n.has(o.label)){i.add(o.label);continue}n.add(o.label)}return[...i]}function sP(e,n){return n?e.some(i=>i.label===n):!0}const vj=20,xj=200,oP=d({displayName:r().min(1),canonicalDomain:r().min(1),ownedDomains:y(r().min(1)).optional(),aliases:y(r()).optional(),country:r().length(2),language:r().min(2),tags:y(r()).optional(),labels:He(r(),r()).optional(),providers:y(jt).optional(),providerModels:X0.optional(),providerDispatchModes:ng.optional(),locations:y(mn).optional(),defaultLocation:r().nullable().optional(),measurement:tg.optional(),autoExtractBacklinks:E().optional(),qualifiedAliases:y(r().trim().min(1).max(xj)).max(vj).optional(),negativeReviewMaxStars:sg.nullable().optional(),siteAuditMaxPages:Am.nullable().optional(),configSource:bj.optional()});oP.extend({name:r().trim().min(1).max(120)});const rP=d({id:r(),name:r(),displayName:r().optional(),canonicalDomain:r(),ownedDomains:y(r()).default([]),aliases:y(r()).default([]),qualifiedAliases:y(r()).default([]),country:r().length(2),language:r().min(2),tags:y(r()).default([]),labels:He(r(),r()).default({}),providers:y(r()).default([]),providerModels:X0.default({}),providerDispatchModes:ng.default({}),locations:y(mn).default([]),defaultLocation:r().nullable().optional(),measurement:tg.default(b2),autoExtractBacklinks:E().default(!1),negativeReviewMaxStars:sg.nullable().optional(),siteAuditMaxPages:Am.nullable().optional(),configSource:bj.default("cli"),configRevision:m().int().positive().default(1),createdAt:r().optional(),updatedAt:r().optional()});d({id:r(),query:r(),createdAt:r()});d({id:r(),keyword:r(),createdAt:r()});d({queries:y(r().trim().min(1)).min(1)});d({keywords:y(r().trim().min(1)).min(1)});d({provider:jt,count:m().int().min(1).max(20).optional()});d({id:r(),domain:r(),aliases:y(r()),createdAt:r()});d({competitors:y(r().trim().min(1)).min(1)});d({competitors:y(yj).min(1)});function wj(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,o=[];for(const u of n){const h=u.trim();if(!h)continue;const f=Vd(h);i.has(f)||(i.add(f),o.push(h))}return o}function lP(e,n){if(!n||n.length===0)return[];const i=e?.trim().toLowerCase()??"",o=new Set,u=[];for(const h of n){const f=h.trim();if(!f)continue;const b=f.toLowerCase();b!==i&&(o.has(b)||(o.add(b),u.push(f)))}return u}function cP(e){const n=[],i=new Set,o=h=>{const f=Ga(h);!f||i.has(f)||(i.add(f),n.push(h))},u=e.displayName?.trim()??"";u&&o(u);for(const h of lP(e.displayName,e.aliases))o(h);for(const h of wj({canonicalDomain:e.canonicalDomain??"",ownedDomains:e.ownedDomains??[]})){const f=ig(h);if(Ga(f).length>=WO)o(f);else{const b=Vd(h);b.includes(".")&&o(b)}}return n}const uP=d({name:r().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:He(r(),r()).optional().default({})}),dP=d({preset:r().min(1).optional(),cron:r().min(1).optional(),recurrence:W0.optional(),timezone:r().optional().default("UTC"),providers:y(jt).optional().default([]),enabled:E().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(n=>n!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'}).optional(),mP=d({channel:R("webhook"),url:r().url(),events:y(eg).min(1)}),pP=d({gsc:d({propertyUrl:r()}).optional(),syncSchedule:d({preset:r().optional(),cron:r().optional()}).optional()}).optional(),hw=y(r().min(1)),hP=d({displayName:r().min(1),canonicalDomain:r().min(1),ownedDomains:y(r().min(1)).optional().default([]),aliases:y(r().min(1)).optional().default([]),qualifiedAliases:y(r().min(1).max(xj)).max(vj).optional(),country:r().length(2),language:r().min(2),queries:hw.optional(),keywords:hw.optional(),competitors:y(yj).optional().default([]),providers:y(jt).optional().default([]),providerModels:X0.optional().default({}),providerDispatchModes:ng.optional(),locations:y(mn).optional().default([]),defaultLocation:r().optional(),measurement:tg.optional().default(b2),schedule:dP,notifications:y(mP).optional().default([]),google:pP,autoExtractBacklinks:E().optional().default(!1),negativeReviewMaxStars:sg.optional(),siteAuditMaxPages:Am.nullable().optional()}).superRefine((e,n)=>{e.queries!==void 0&&e.keywords!==void 0&&n.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const i=iP(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),sP(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});d({apiVersion:R("canonry/v1"),kind:R("Project"),metadata:uP,spec:hP});const fP=1,gP=r().refine(e=>e.trim().length>0,{message:"Must not be blank"}),kj=d({displayName:r(),aliases:y(r()),canonicalDomain:r(),ownedDomains:y(r()),qualifiedAliases:y(r()).optional()}).strict(),Sj=d({provider:jt.refine(e=>e.trim().length>0,{message:"Provider must not be blank"}),requestedModel:r().nullable()}).strict(),jj=d({domain:r(),label:r(),aliases:y(r())}).strict(),Aj=d({queryId:gP,queryText:r(),provenance:r().nullable()}).strict(),yP=Aj.extend({queryClass:Vr.nullable()}).strict();function Nj(e,n){const i=new Set;e.engines.forEach((h,f)=>{const b=h.provider.trim().toLocaleLowerCase("en");i.has(b)&&n.addIssue({code:ye.custom,path:["engines",f,"provider"],message:`Duplicate engine provider "${h.provider}"`}),i.add(b)});const o=new Set;e.queries.forEach((h,f)=>{o.has(h.queryId)&&n.addIssue({code:ye.custom,path:["queries",f,"queryId"],message:`Duplicate query id "${h.queryId}"`}),o.add(h.queryId)});const u=new Set;e.competitors?.forEach((h,f)=>{const b=h.domain;u.has(b)&&n.addIssue({code:ye.custom,path:["competitors",f,"domain"],message:`Duplicate competitor domain "${h.domain}"`}),u.add(b)})}d({capturedAt:r().datetime(),identity:kj,country:r(),language:r(),location:mn.nullable(),engines:y(Sj).min(1),competitors:y(jj).optional(),queries:y(Aj)}).strict().superRefine(Nj);d({schemaVersion:R(fP),capturedAt:r().datetime(),identity:kj,country:r(),language:r(),location:mn.nullable(),engines:y(Sj).min(1),competitors:y(jj).optional(),queries:y(yP)}).strict().superRefine(Nj);const bP=j(["auto","simple","advanced"]),vP=j(["simple","advanced"]),Cj=j(["branded","non-brand","unknown","all"]),xP=j(["branded","non-brand","unknown"]),jg=j(["project","group","market","property"]),_j=Be("kind",[d({kind:R("all")}).strict(),d({kind:R("none")}).strict(),d({kind:R("exact"),value:r().trim().min(1)}).strict()]);function wP(e){if(e===void 0||e==="")return{kind:"all"};const n=e.normalize("NFKC").trim();return n===""?{kind:"all"}:n.toLocaleLowerCase("en")==="none"?{kind:"none"}:{kind:"exact",value:n}}const St=r().trim().min(1),Ui=r().datetime(),kP={mode:bP.default("auto"),queryClass:Cj.default("non-brand"),scope:jg.default("project"),scopeKey:St.optional(),marketKey:St.optional(),provider:St.optional(),model:St.optional(),location:r().trim().min(1).optional(),from:Ui.optional(),to:Ui.optional(),revision:m().int().positive().optional(),runId:St.optional(),queryKey:St.optional(),queryId:St.optional(),search:r().trim().min(1).optional(),cursor:St.optional(),limit:m().int().min(1).max(100).default(50)},Kd=d(kP).strict().superRefine((e,n)=>{e.scope!=="project"&&e.scopeKey===void 0&&n.addIssue({code:ye.custom,path:["scopeKey"],message:`scopeKey is required for ${e.scope} scope`}),e.scope==="project"&&e.scopeKey!==void 0&&n.addIssue({code:ye.custom,path:["scopeKey"],message:"scopeKey is not valid for project scope"}),e.scope==="market"&&e.marketKey!==void 0&&n.addIssue({code:ye.custom,path:["marketKey"],message:"marketKey is not valid for market scope"}),e.from!==void 0&&e.to!==void 0&&e.from>e.to&&n.addIssue({code:ye.custom,path:["to"],message:"to must be on or after from"}),e.queryKey!==void 0&&e.queryId!==void 0&&n.addIssue({code:ye.custom,path:["queryId"],message:"queryKey and queryId cannot both be supplied"})});Kd.transform(e=>({...e,location:wP(e.location)}));const Ea=d({numerator:m().int().nonnegative().nullable(),denominator:m().int().nonnegative().nullable(),rate:we(m().min(0).max(1)).nullable(),reason:j(["no-population","incomplete","evidence-incomplete","identity-ambiguous","not-applicable"]).optional(),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{if(e.numerator===null||e.denominator===null||e.rate===null){(e.numerator!==null||e.denominator!==null||e.rate!==null||e.reason===void 0)&&n.addIssue({code:ye.custom,message:"Unavailable rates require null values and a reason"}),e.unattributed!==void 0&&n.addIssue({code:ye.custom,path:["unattributed"],message:"Only an available rate can leave answers out"}),e.unchecked!==void 0&&n.addIssue({code:ye.custom,path:["unchecked"],message:"Only an available rate can leave answers out"});return}e.reason!==void 0&&n.addIssue({code:ye.custom,message:"Available rates cannot carry a reason"}),e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:ye.custom,path:["unchecked"],message:"A rate reads one signal: unattributed (mention) and unchecked (citation) cannot share it"});const{numerator:o,denominator:u}=e;u===null||o===null||(u===0&&n.addIssue({code:ye.custom,path:["denominator"],message:"Available rates require a positive denominator"}),o>u&&n.addIssue({code:ye.custom,path:["numerator"],message:"Numerator cannot exceed denominator"}))}),Tj=Be("kind",[d({kind:R("frozen-simple"),definitionRevision:ue()}).strict(),d({kind:R("legacy-simple"),definitionRevision:ue()}).strict(),d({kind:R("frozen-advanced"),definitionRevision:m().int().positive()}).strict(),d({kind:R("unsupported-advanced-v1"),definitionRevision:m().int().positive()}).strict()]),Hd=d({id:St,label:r().trim().min(1),kind:jg,targetCount:m().int().nonnegative(),parentGroupIds:y(St).optional(),marketKeys:y(St).optional()}).strict(),SP=d({provider:St,model:St}).strict(),jP=d({providers:y(St),models:y(SP),locations:y(_j)}).strict(),AP=d({queryCount:m().int().nonnegative(),answerCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea,propertyReach:Ea,outcomes:d({bothSignals:m().int().nonnegative(),mentionedOnly:m().int().nonnegative(),citedOnly:m().int().nonnegative(),neither:m().int().nonnegative(),notMeasured:m().int().nonnegative(),total:m().int().nonnegative()}).strict().superRefine((e,n)=>{e.bothSignals+e.mentionedOnly+e.citedOnly+e.neither+e.notMeasured!==e.total&&n.addIssue({code:ye.custom,message:"Outcome partition must sum to total"})})}).strict(),NP=d({runId:St,createdAt:Ui,revision:m().int().positive().nullable(),provenance:Tj,queryCount:m().int().nonnegative(),answerCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea,continuity:d({state:j(["first","comparable","definition-changed","model-changed","legacy-unknown"]),comparedRunId:r().nullable()}).strict()}).strict(),CP=d({sourceSnapshotIds:y(St).default([]),queryKey:St,queryId:r().nullable(),query:r(),provider:St,model:r().nullable(),location:r().nullable(),targetKeys:y(St),marketKeys:y(St).optional(),answerCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea}).strict(),_P=d({answerId:St,runId:St,queryKey:St,query:r(),provider:St,model:r().nullable(),location:r().nullable(),targetKeys:y(St),mentioned:E().nullable(),mentionUnavailableReason:R("identity-ambiguous").optional(),cited:E().nullable(),answerText:r().nullable(),createdAt:Ui,sources:y(r()),observedCompetitors:y(St)}).strict(),TP=d({domain:St,answerCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea}).strict(),EP=d({name:St,answerCount:m().int().nonnegative()}).strict(),RP=Be("state",[d({state:R("available")}).strict(),d({state:R("unavailable"),reason:R("frozen-competitor-identity-missing")}).strict()]),fw=d({id:St,label:r().trim().min(1),queryCount:m().int().nonnegative(),mentionCoverage:Ea,citationCoverage:Ea}).strict();function gw(e){return d({items:y(e),nextCursor:r().nullable(),total:m().int().nonnegative()}).strict()}const Ej=j(["current-unavailable","previous-unavailable","not-applicable"]),Xee=Ej.enum,gf=Be("state",[d({state:R("available"),previous:Ea,delta:we(m().min(-1).max(1))}).strict(),d({state:R("unavailable"),reason:Ej}).strict()]),yw=d({id:St,createdAt:Ui,completedAt:Ui.nullable()}).strict(),Rj=j(["no-selected-run","no-previous-run","scoped-run","partial-run","definition-changed","model-changed","legacy-unknown"]),Jee=Rj.enum,DP=Be("state",[d({state:R("available"),previousRun:yw,mentionCoverage:gf,citationCoverage:gf,propertyReach:gf}).strict(),d({state:R("unavailable"),reason:Rj,previousRun:yw.nullable()}).strict()]),zP=d({queryClass:xP,summary:AP,trend:y(NP),comparison:DP.optional(),queries:gw(CP),evidence:gw(_P),competitorAvailability:RP,competitors:y(TP),observedCompetitors:y(EP),breakdown:d({properties:y(fw),groups:y(fw)}).strict()}).strict(),IP=j(["measured","not-measured","partial"]),OP=d({state:IP,activeRevision:m().int().positive().nullable(),measuredRevision:m().int().positive().nullable(),awaitingSweep:E(),pendingAssignmentCount:m().int().nonnegative(),completedAt:Ui.nullable()}).strict(),PP=d({mode:vP,queryClass:Cj,scope:Hd,market:Hd.optional(),provider:r().nullable(),model:r().nullable(),location:_j,time:d({from:Ui.nullable(),to:Ui.nullable()}).strict(),revision:m().int().positive().nullable(),run:d({id:r().nullable(),explicit:E()}).strict(),provenance:Tj,measurement:OP,availability:Be("state",[d({state:R("available")}).strict(),d({state:R("unsupported"),reason:R("advanced-v1")}).strict()])}).strict();d({selection:PP,scopeOptions:y(Hd),filterOptions:jP,populations:y(zP).min(1)}).strict().superRefine((e,n)=>{const i=e.selection.queryClass==="all"?["branded","non-brand","unknown"]:[e.selection.queryClass],o=e.populations.map(u=>u.queryClass);(o.length!==i.length||o.some((u,h)=>u!==i[h]))&&n.addIssue({code:ye.custom,path:["populations"],message:"Populations must exactly match the selected query class order"});for(const[u,h]of e.populations.entries()){const f=h.comparison;if(f?.state==="available")for(const b of["mentionCoverage","citationCoverage","propertyReach"]){const v=f[b];if(v.state!=="available")continue;const x=["populations",u,"comparison",b],k=h.summary[b].rate,S=v.previous.rate;k===null&&n.addIssue({code:ye.custom,path:x,message:"Available changes require a current rate"}),S===null&&n.addIssue({code:ye.custom,path:[...x,"previous","rate"],message:"Available changes require a previous rate"}),k!==null&&S!==null&&Math.abs(v.delta-(k-S))>Number.EPSILON&&n.addIssue({code:ye.custom,path:[...x,"delta"],message:"Delta must equal current minus previous"}),e.selection.run.id===null&&n.addIssue({code:ye.custom,path:x,message:"Available changes require a selected run"})}}});const Dj=j(["retired-scope","retired-market"]),qP=Dj.enum,MP=d({reason:Dj,kind:jg.exclude(["project"]),key:St}).strict().superRefine((e,n)=>{e.reason===qP["retired-market"]&&e.kind!=="market"&&n.addIssue({code:ye.custom,path:["kind"],message:"retired-market details must name a market"})});function Wee(e){const n=MP.safeParse(e);return n.success?n.data:void 0}function BP(e,n){let i=e;for(const[o,u]of Object.entries(n))i=i.split(`{${o}}`).join(u);return i.trim()}const Ag=r().regex(/^[a-f0-9]{64}$/),ca=r().trim().min(1).max(256),Ka=r().trim().min(1).max(4e3),Ng=r().datetime(),Nm=r().regex(/^qtw_[a-f0-9]{64}$/),zj=r().regex(/^qtp_[a-f0-9]{64}$/),Cg=j(["simple","advanced"]),Ij=d({templateId:ca,templateVersion:r().trim().min(1).max(256),template:Ka,bindings:He(r().trim().min(1).max(128),r().trim().min(1).max(128)),output:Ka}).strict(),LP=d({source:j(["manual","query-set","template","research","discovery"]),sourceId:ca.nullable(),capturedAt:r().datetime(),template:Ij.optional()}).strict().superRefine((e,n)=>{e.source==="template"&&e.template===void 0&&n.addIssue({code:ye.custom,path:["template"],message:"Template provenance is required for a template query."}),e.source!=="template"&&e.template!==void 0&&n.addIssue({code:ye.custom,path:["template"],message:"Only a template query may carry template provenance."})}),UP=Be("source",[d({source:R("manual"),text:Ka}).strict(),d({source:R("template"),templateId:ca,templateVersion:r().trim().min(1).max(256),template:Ka}).strict(),d({source:R("research"),researchRunQueryId:ca}).strict(),d({source:R("discovery"),discoveryProbeId:ca}).strict()]),_g=d({targetKeys:y(he).optional(),groupKeys:y(he).optional(),marketKeys:y(he).optional()}).strict(),VP=d({providers:y(jt).min(1),models:He(jt,r().trim().min(1)),location:r().trim().min(1).nullable()}).strict(),$P=d({input:UP,audience:_g.optional(),contexts:y(VP).min(1).optional(),queryClass:Vr.optional()}).strict(),GP=d({queryId:ca.optional(),queryText:Ka.optional(),audience:_g.optional()}).strict().superRefine((e,n)=>{e.queryId===void 0==(e.queryText===void 0)&&n.addIssue({code:ye.custom,message:"Provide exactly one of queryId or queryText."})}),KP=d({queryId:ca,audience:_g.optional(),text:Ka.optional(),queryClass:Qe([Vr,ue()]).optional()}).strict().superRefine((e,n)=>{e.text===void 0&&e.queryClass===void 0&&n.addIssue({code:ye.custom,message:"Provide query text or a classification change."})}),HP=d({additions:y($P),removals:y(GP),edits:y(KP).optional()}).strict(),FP=HP.extend({expectedWorkspaceVersion:Nm}).strict();FP.extend({previewToken:zj,reviewedAt:Ng}).strict();const QP=d({stableKey:he,label:r().trim().min(1)}).strict(),ZP=d({stableKey:he,parentGroupKey:he.optional(),label:r().trim().min(1),targetKeys:y(he)}).strict(),YP=d({stableKey:he,groupKey:he.optional(),label:r().trim().min(1),usageEdges:y(mg)}).strict(),XP=d({targetKey:he,groupKeys:y(he),marketKeys:y(he),queryClass:Vr.nullable(),classificationSource:j(["frozen","server","operator"]),contexts:y(vm).min(1)}).strict(),Oj=d({queryId:ca,queryText:Ka,normalizedText:Ka,provenance:LP.nullable(),state:j(["tracked","awaiting-sweep"]),lastMeasuredAt:r().datetime().nullable(),assignments:y(XP)}).strict(),JP=d({researchRunId:ca,researchRunQueryId:ca,queryText:Ka,createdAt:r().datetime()}).strict(),WP=d({discoverySessionId:ca,discoveryProbeId:ca,queryText:Ka,createdAt:r().datetime()}).strict();d({mode:Cg,workspaceVersion:Nm,active:d({revision:m().int().positive(),compiledChecksum:Ag}).strict().nullable(),defaultContexts:y(vm),targets:y(QP),groups:y(ZP),markets:y(YP),scopeOptions:y(Hd).optional(),tracked:y(Oj),savedSources:d({research:y(JP),discovery:y(WP)}).strict()}).strict();const fd=d({queryId:ca,queryText:Ka,assignmentCount:m().int().nonnegative()}).strict(),Pj=d({added:y(fd),removed:y(fd),reused:y(fd),unchanged:y(fd),noOp:E()}).strict(),qj=d({existingNodes:m().int().nonnegative(),existingProviderCalls:m().int().nonnegative(),nextSweepNodes:m().int().nonnegative(),nextSweepProviderCalls:m().int().nonnegative(),addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),removedNodes:m().int().nonnegative(),removedProviderCalls:m().int().nonnegative()}).strict();d({mode:Cg,workspaceVersion:Nm,previewToken:zj,reviewedAt:Ng,active:d({revision:m().int().positive(),compiledChecksum:Ag}).strict().nullable(),tracked:y(Oj),diff:Pj,workload:qj}).strict();d({committed:E(),mode:Cg,workspaceVersion:Nm,reviewedAt:Ng,active:d({revision:m().int().positive(),compiledChecksum:Ag}).strict().nullable(),diff:Pj,workload:qj}).strict();j(["proposed","alias","shared","unmatched","excluded"]);j(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const eq=j(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),tq=d({kind:j(["exact","prefix","suffix","contains"]),value:r().trim().min(1)}).strict(),bw=d({host:r().trim().min(1),pathTemplate:r().trim().min(1)}).strict(),Tg=d({primary:bw,aliases:y(bw).optional(),excludedSlugSuffixes:y(r().trim().min(1)).optional(),excludedSlugPatterns:y(tq).optional()}).strict();d({sitemapUrl:r().url().refine(e=>{try{const n=new URL(e).protocol;return n==="http:"||n==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:Tg,maxUrls:m().int().positive().max(1e4).optional()}).strict();const yf=d({url:r(),canonicalUrl:r().nullable(),classification:j(["shared","unmatched","excluded"]),reason:j(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,n)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||n.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),nq=d({classification:R("proposed"),reason:R("primary-match"),stableKey:gn,slug:r().trim().min(1),label:r().trim().min(1),primaryUrl:r().url(),aliasCoverageUrls:y(r().url())}).strict(),aq=d({classification:R("alias"),reason:R("exact-slug-match"),slug:r().trim().min(1),url:r().url(),targetStableKey:gn}).strict(),iq=d({kind:eq,url:r(),canonicalUrl:r().nullable(),duplicateOf:r().optional()}).strict();d({proposed:y(nq),aliases:y(aq),shared:y(yf),unmatched:y(yf),excluded:y(yf),diagnostics:y(iq)}).strict().superRefine((e,n)=>{const i=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[o,u]of i)for(const h of e[o])u.includes(h.classification)||n.addIssue({code:"custom",path:[o],message:"Discovery item is in the wrong result bucket"})});const Eg=j(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),Mj=j(["baseline","target"]),Bj=j(["incomplete","evidence-incomplete","identity-ambiguous","no-population","aliasless","no-competitors","no-project-aliases"]),jo=Qe([d({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:we(m().min(0).max(1)),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict(),d({numerator:ue(),denominator:ue(),rate:ue(),reason:Bj}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"}),e.numerator!==null&&e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:"custom",path:["unchecked"],message:"A rate reads one signal: unattributed (mention) and unchecked (citation) cannot share it"})}),sq=r().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),oq=d({executionId:r().trim().min(1),queryText:r().trim().min(1),provider:sq,context:mn.nullable(),requestedModel:r().trim().min(1).optional()}).strict();d({schemaVersion:R(1),expectedSlots:y(oq)}).strict().superRefine((e,n)=>{const i=new Set;for(const[o,u]of e.expectedSlots.entries()){const h=[u.executionId,u.provider].join("\0");i.has(h)&&n.addIssue({code:"custom",path:["expectedSlots",o],message:"Duplicate expected provider slot"}),i.add(h)}});const Cm=d({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:E(),sourceComplete:E(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:E()}).strict(),vw=Qe([d({domain:r().trim().min(1),own:E(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),d({domain:r().trim().min(1),own:E(),presentIn:ue(),of:ue(),reason:Bj}).strict()]),rq=d({domains:y(vw),providers:y(d({provider:jt,domains:y(vw)}).strict())}).strict(),lq=d({provider:jt,completeness:Cm,answerCoverage:jo}).strict(),cq=d({id:r().trim().min(1),label:r().trim().min(1),targetIds:y(r().trim().min(1)),completeness:Cm,answerCoverage:jo,targetCoverage:jo,sov:rq,providers:y(lq)}).strict(),uq=d({provider:jt,completeness:Cm,citationCoverage:jo,mentionCoverage:jo}).strict(),dq=d({id:r().trim().min(1),label:r().trim().min(1),completeness:Cm,citationCoverage:jo,mentionCoverage:jo,providers:y(uq)}).strict(),Lj=d({observationId:r().trim().min(1),expectedSlotId:r().trim().min(1),executionId:r().trim().min(1),usageEdgeId:r().trim().min(1),usageEdgeType:Mj,provider:jt,queryText:r().trim().min(1),location:r().nullable(),sourceUrl:r(),bridged:E(),historical:E(),evidenceComplete:E(),classification:Eg,normalizedUrl:r().nullable(),matchedTargetIds:y(r().trim().min(1)),matchedUrlIds:y(r().trim().min(1))}).strict(),mq=d({sourceUrl:r(),normalizedUrl:r().nullable(),classification:Eg,matchedTargetIds:y(r().trim().min(1)),matchedUrlIds:y(r().trim().min(1))}).strict(),pq=d({observationId:r().trim().min(1),expectedSlotId:r().trim().min(1),executionId:r().trim().min(1),usageEdgeId:r().trim().min(1),usageEdgeType:Mj,provider:jt,queryText:r().trim().min(1),location:r().nullable(),queryClass:Qe([j(["branded","non-brand"]),ue()]),mentioned:E().nullable(),cited:E().nullable(),sources:y(mq),sourceCount:m().int().nonnegative(),sourcesTruncated:E(),bridged:E(),historical:E(),evidenceComplete:E()}).strict(),hq=d({bridgedObservationIds:y(r()),historicalObservationIds:y(r()),evidenceIncompleteObservationIds:y(r()),ambiguousObservationIds:y(r()),unmatchedObservationIds:y(r())}).strict(),fq=d({id:r().trim().min(1),status:j(["completed","partial"]),createdAt:r().datetime(),startedAt:r().datetime().nullable(),finishedAt:r().datetime().nullable()}).strict();d({revision:m().int().positive(),run:fq.nullable(),groups:y(cq),targets:y(dq),evidence:y(Lj),diagnostics:hq}).strict();d({property:d({targetKey:he,label:r().min(1)}).strict(),queryClass:pa,measurement:d({state:fg,displayedRunId:r().min(1).optional(),completedAt:r().datetime().optional()}).strict(),evidence:zr(Lj).optional(),answers:zr(pq).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const Rg=j(["queued","running","completed","partial","failed"]);Rg.enum;const Uj=j(["not_answer_visibility","not_plan_run","scoped_or_probe","status_not_partial","plan_revision_changed","manifest_unreadable","model_not_frozen","model_retired","provider_not_in_plan","provider_nothing_missing","provider_not_configured","too_old","superseded","quota_insufficient"]);Uj.enum;d({providers:y(jt).min(1).optional(),dryRun:E().optional()}).strict();const Vj=d({id:r(),runId:r(),projectId:r(),status:Rg,providers:y(r()),expected:m().int().nonnegative(),filled:m().int().nonnegative(),error:r().nullable(),createdAt:r(),startedAt:r().nullable(),finishedAt:r().nullable()}),gq=d({runId:r(),status:ha,planned:E(),readable:E(),expected:m().int().nonnegative(),executed:m().int().nonnegative(),missing:m().int().nonnegative(),missingByProvider:He(r(),m().int().nonnegative()),fillable:E(),refusal:d({code:Uj,message:r()}).nullable(),latestFill:Vj.nullable()}),yq=j(["queued","already-complete","dry-run"]);d({outcome:yq,completeness:gq,fill:Vj.nullable()});const da=r().trim().min(1),Os=r().trim().min(1),bq=r().trim().min(1),ke=m().int().nonnegative(),Gc=d({state:fg,displayedRunId:da.nullable(),planRevision:m().int().positive(),completedAt:r().datetime().nullable()}).strict(),Eo=d({targetKey:he,label:Os}).strict(),ua={runId:da.optional(),provider:jt.optional(),location:bq.optional()},Ao=r().trim().min(1),bf=5,vq=10,xq=5,wq=10,kq="tied Properties have both zero mentions and zero citations; ordered by name, not ranked",Dg=j(["weakest-properties","strongest-mentions","weakest-mentions","excluded-mentions","markets","observed-names","cited-domains"]);Dg.enum;d({runId:ua.runId,groupKey:he.optional(),queryClass:pa.default("non-brand"),provider:ua.provider,location:ua.location,limit:m().int().positive().max(50).optional(),includeNestedMarkets:E().optional(),compact:E().optional(),list:Dg.optional(),cursor:da.optional(),answers:j(["all","not-mentioned"]).optional()}).strict();const xw=i0,$j={metro:xw.nullable(),otherMetros:y(xw).min(1).optional(),submarkets:y(Os),queries:ke},Gj=d({name:Ao,answers:ke}).strict(),Sq=d({name:Ao,occurrences:ke}).strict(),_m=d({domain:r().trim().min(1),answers:ke}).strict(),jq=Eo.extend({...$j,mentionCoverage:dn,citationCoverage:dn,flags:ke,namedInsteadInAnswerText:y(Gj).max(bf).optional(),namedInsteadInAnswerTextTotal:ke.optional(),citedDomains:y(_m).max(bf).optional(),citedDomainsTotal:ke.optional(),recommendedInstead:y(Sq).max(bf).optional().meta({deprecated:!0,description:"Deprecated: read namedInsteadInAnswerText, which carries the same names in the same order. occurrences counts answers, exactly as answers does there."}),recommendedInsteadTotal:ke.optional().meta({deprecated:!0,description:"Deprecated: read namedInsteadInAnswerTextTotal, which it always equals."}),recommendedInsteadTruncated:E().optional().meta({deprecated:!0,description:"Deprecated: true when namedInsteadInAnswerTextTotal exceeds the names returned in namedInsteadInAnswerText."})}).strict().superRefine((e,n)=>{e.namedInsteadInAnswerText!==void 0&&(e.namedInsteadInAnswerTextTotal===void 0||e.namedInsteadInAnswerText.length>e.namedInsteadInAnswerTextTotal)&&n.addIssue({code:ye.custom,path:["namedInsteadInAnswerTextTotal"],message:"Total cannot be smaller than the returned names"}),e.citedDomains!==void 0&&(e.citedDomainsTotal===void 0||e.citedDomains.length>e.citedDomainsTotal)&&n.addIssue({code:ye.custom,path:["citedDomainsTotal"],message:"Total cannot be smaller than the returned domains"}),e.recommendedInsteadTotal!==e.namedInsteadInAnswerTextTotal&&n.addIssue({code:ye.custom,path:["recommendedInsteadTotal"],message:"The deprecated total must equal namedInsteadInAnswerTextTotal"}),e.recommendedInstead!==void 0&&(e.recommendedInsteadTotal===void 0||e.recommendedInstead.length>e.recommendedInsteadTotal)&&n.addIssue({code:ye.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInstead!==void 0&&e.recommendedInsteadTotal!==void 0&&e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&n.addIssue({code:ye.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),Aq=d({metro:Os.nullable(),count:m().int().positive()}).strict(),Nq=d({count:m().int().min(2),mentionRate:we(),citationRate:we(),note:j([kq,"tied Properties are ordered by name, not ranked"]),byMetro:y(Aq).optional(),namedInstead:y(Gj).max(wq).optional(),namedInsteadTotal:ke.optional()}).strict().superRefine((e,n)=>{e.namedInstead!==void 0&&(e.namedInsteadTotal===void 0||e.namedInstead.length>e.namedInsteadTotal)&&n.addIssue({code:ye.custom,path:["namedInsteadTotal"],message:"Total cannot be smaller than the returned names"})}),Cq=d({basis:R("initial-weakest-selection-and-zero-signal-tie").optional(),properties:ke,answers:ke,domains:y(_m).max(vq),domainTotal:ke,ownDomainAnswers:ke.optional()}).strict().superRefine((e,n)=>{e.ownDomainAnswers!==void 0&&e.ownDomainAnswers>e.answers&&n.addIssue({code:ye.custom,path:["ownDomainAnswers"],message:"Own-domain answers cannot exceed the basis"}),e.domains.length>e.domainTotal&&n.addIssue({code:ye.custom,path:["domainTotal"],message:"Total cannot be smaller than the returned domains"}),e.domains.some(i=>i.answers>e.answers)&&n.addIssue({code:ye.custom,path:["domains"],message:"A domain cannot be cited by more answers than the basis holds"})}),_q=d({groupKey:he,label:Os,parentGroupKey:he.nullable(),childMarketCount:ke,propertyCount:ke,propertiesMentioned:ko,propertiesNeverMentioned:ko.optional(),mentionCoverage:dn,citationCoverage:dn}).strict(),Tq=d({population:R("top-level-markets"),queryClass:pa,totalMarkets:ke,eligibleMarketCount:ke,excludedMarketCount:ke,items:y(d({groupKey:he,label:Os,propertyCount:ke,mentionCoverage:dn.options[0],citationCoverage:dn.options[0]}).strict()).max(xq)}).strict(),ww=Eo.extend({...$j,mentionCoverage:dn.options[0],citationCoverage:dn}).strict(),Eq=d({eligiblePropertyCount:ke,strongest:y(ww).max(50),weakest:y(ww).max(50),excluded:y(Eo.extend({reason:Lc}).strict()),truncated:E(),excludedTotal:ke.optional()}).strict();d({portfolio:d({groupKey:he.nullable(),label:Os.nullable(),measurementScope:Qe([j(["full","spot_check"]),ue()])}).strict(),measurement:Gc,queryClass:pa,engines:y(jt),metrics:d({propertiesMentioned:ko,propertiesNeverMentioned:ko.optional(),mentionCoverage:dn,citationCoverage:dn}).strict(),weakestMarkets:Tq.optional().describe("Compact unscoped ranking from actual full top-level metro aggregates before pagination. Each rate uses the complete selected run/filter/class market population; tiedAtWeakest.byMetro counts only zero-signal Properties and never supplies these rates."),weakestProperties:y(jq),tiedAtWeakest:Nq.nullable(),weakestAnswerSources:Cq.nullable().optional(),mentionRanking:Eq,markets:y(_q),totalMarkets:ke,marketsTruncated:E(),totalProperties:ke,truncated:E(),pageList:Dg.optional(),nextCursor:da.nullable().optional(),detailsOmitted:y(r()).optional(),answerEvidence:d({answers:R("not-mentioned"),populationSize:ke,answerCount:ke,unknownMentionAnswers:ke,observedNames:y(d({name:Ao,answerCount:ke}).strict()),observedNamesTotal:ke,citedDomains:y(_m),citedDomainsTotal:ke}).strict().optional()}).strict().superRefine((e,n)=>{const i=e.detailsOmitted?.includes("weakestProperties.answerEvidence")??!1,o=["namedInsteadInAnswerText","namedInsteadInAnswerTextTotal","citedDomains","citedDomainsTotal","recommendedInstead","recommendedInsteadTotal","recommendedInsteadTruncated"];i||e.weakestProperties.forEach((u,h)=>{for(const f of o)u[f]===void 0&&n.addIssue({code:ye.custom,path:["weakestProperties",h,f],message:"Detailed evidence is required unless explicitly omitted by the compact projection"})}),e.weakestAnswerSources===void 0&&!e.detailsOmitted?.includes("weakestAnswerSources")&&n.addIssue({code:ye.custom,path:["weakestAnswerSources"],message:"Source evidence is required unless explicitly omitted by the compact projection"}),e.marketsTruncated!==e.markets.length<e.totalMarkets&&n.addIssue({code:ye.custom,path:["marketsTruncated"],message:"Market truncation must agree with the market total"})});d({targetKey:he,runId:ua.runId,provider:ua.provider,location:ua.location,queryClass:pa.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();j(["answered","missing"]);const r0={queryId:da,text:Os,class:dg,provider:jt,requestedModel:r().nullable(),servedModel:r().nullable(),location:r().nullable()},Rq=Be("status",[d({resultId:da,...r0,status:R("answered"),mentioned:E().nullable(),cited:E().nullable(),recommendedInstead:y(Ao),answerExcerpt:r().nullable()}).strict(),d({resultId:ue(),...r0,status:R("missing"),mentioned:ue(),cited:ue(),recommendedInstead:y(Ao).length(0),answerExcerpt:ue()}).strict()]);d({property:Eo,measurement:Gc,queryClass:pa,questions:y(Rq),total:ke,truncated:E()}).strict();d({targetKey:he,resultId:da}).strict();const Dq=d({url:da,classification:Eg,matchedTargetKeys:y(he),assigned:E(),historical:E(),evidenceComplete:E()}).strict().superRefine((e,n)=>{e.assigned!==(e.classification==="assigned")&&n.addIssue({code:ye.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});d({property:Eo,measurement:Gc,question:d({resultId:da,...r0,status:R("answered")}).strict(),mentioned:E().nullable(),cited:E().nullable(),recommendedInstead:y(Ao),answer:r().nullable(),sources:y(Dq),captureStatus:Qe([ym,ue()]),retrievalStatus:Qe([Z0,ue()]),retrievalContract:Qe([Y0,ue()])}).strict();d({targetKey:he,runId:ua.runId,provider:ua.provider,location:ua.location,queryClass:pa.optional(),limit:m().int().positive().max(50).optional()}).strict();const zq=Be("state",[d({state:R("available"),answeredResults:ke,targetMissResults:ke,recommendationOccurrences:ke}).strict(),d({state:R("unavailable"),reason:Lc}).strict()]),Iq=d({name:Ao,occurrences:ke,providers:y(jt).max(5),providerTotal:ke,providersTruncated:E(),questions:y(Os).max(5),questionTotal:ke,questionsTruncated:E()}).strict().superRefine((e,n)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&n.addIssue({code:ye.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&n.addIssue({code:ye.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&n.addIssue({code:ye.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})}),Oq=10;d({property:Eo,measurement:Gc,queryClass:pa,basis:zq,competitors:y(Iq),total:ke,truncated:E(),citedDomains:y(_m).max(Oq).optional(),citedDomainsTotal:ke.optional(),citedDomainsAnswers:ke.optional()}).strict().superRefine((e,n)=>{const{citedDomains:i,citedDomainsTotal:o,citedDomainsAnswers:u}=e;if(i!==void 0){if(o===void 0||u===void 0){n.addIssue({code:ye.custom,path:["citedDomains"],message:"Cited domains require their total and answer basis"});return}i.length>o&&n.addIssue({code:ye.custom,path:["citedDomainsTotal"],message:"Total cannot be smaller than the returned domains"}),i.some(h=>h.answers>u)&&n.addIssue({code:ye.custom,path:["citedDomains"],message:"A domain cannot be cited by more answers than the basis holds"})}});const Kj=j(["magnitude","label"]),Pq=2;d({runId:ua.runId,scope:hg.default("all"),groupKey:he.optional(),targetKey:he.optional(),queryClass:pa.default("all"),provider:ua.provider,location:ua.location,limit:m().int().positive().max(50).optional(),sort:Kj.optional()}).strict().superRefine((e,n)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&n.addIssue({code:ye.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&n.addIssue({code:ye.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&n.addIssue({code:ye.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const Hj=j(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),Fj=Gc.extend({executionIdentity:da.nullable(),measurementScope:Qe([j(["full","spot_check"]),ue()])}).strict();function Qj(e,n){if(e.previous.state!=="available"||e.current.state!=="available"){n.addIssue({code:ye.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&n.addIssue({code:ye.custom,path:["delta"],message:"Delta must equal current minus previous"})}const Zj=d({state:R("unavailable"),reason:Lc}).strict(),Fd=Be("state",[d({state:R("available"),previous:dn,current:dn,delta:we()}).strict().superRefine(Qj),Zj]),qq=Be("state",[d({state:R("available"),previous:ko,current:ko,delta:m().int()}).strict().superRefine(Qj),Zj]),vf=d({propertiesMentioned:qq,mentionCoverage:Fd,citationCoverage:Fd}).strict(),Mq=d({improved:ke,declined:ke,mixed:ke,withinNoise:ke,unchanged:ke,notComparable:ke,total:ke,noiseAnswers:R(Pq)}).strict().superRefine((e,n)=>{e.improved+e.declined+e.mixed+e.withinNoise+e.unchanged+e.notComparable!==e.total&&n.addIssue({code:ye.custom,path:["total"],message:"Move buckets must sum to total"})}),Bq=Eo.extend({mentionCoverage:Fd,citationCoverage:Fd,flags:ke,mentionAnswersDelta:m().int().nullable().optional(),citationAnswersDelta:m().int().nullable().optional(),denominatorChanged:E().optional(),withinNoise:E().optional(),mentionWithinNoise:E().nullable().optional(),citationWithinNoise:E().nullable().optional()}).strict();d({current:Fj,queryClass:pa.optional(),comparison:Be("state",[d({state:R("available"),previous:d({displayedRunId:da,planRevision:m().int().positive(),completedAt:r().datetime().nullable(),executionIdentity:da,measurementScope:j(["full","spot_check"])}).strict(),metrics:vf,metricsByClass:d({branded:vf,nonBrand:vf}).strict().optional(),sort:Kj.optional(),distribution:Mq.optional(),changedProperties:y(Bq),totalProperties:ke,truncated:E()}).strict(),d({state:R("unavailable"),reason:Hj}).strict()])}).strict().superRefine((e,n)=>{if(e.comparison.state!=="available")return;const{distribution:i}=e.comparison;if(i!==void 0&&i.total-i.unchanged!==e.comparison.totalProperties&&n.addIssue({code:ye.custom,path:["comparison","distribution"],message:"Changed Properties must equal the distribution total less unchanged"}),e.current.displayedRunId===null||e.current.executionIdentity===null){n.addIssue({code:ye.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&n.addIssue({code:ye.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&n.addIssue({code:ye.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})});d({runId:ua.runId}).strict();const Lq=j(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),Kc=d({state:R("unavailable"),reason:Lq}).strict(),Uq=d({state:R("available"),expected:ke,executed:ke,answered:ke,missing:ke}).strict(),Vq=Be("state",[Uq,Kc]).superRefine((e,n)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&n.addIssue({code:ye.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&n.addIssue({code:ye.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),$q=d({state:R("available"),complete:ke,partial:ke,failed:ke,unsupported:ke,notRecorded:ke}).strict(),Gq=Be("state",[$q,Kc]),Kq=d({state:R("available"),used:ke,notUsed:ke,unknown:ke,notApplicable:ke,notRecorded:ke}).strict(),Hq=Be("state",[Kq,Kc]),Fq=d({state:R("available"),expectedQuestions:ke,answeredQuestions:ke,missingQuestions:ke}).strict(),Qq=Be("state",[Fq,Kc]).superRefine((e,n)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&n.addIssue({code:ye.custom,message:"Expected questions must equal answered plus missing"})}),kw=Be("state",[d({state:R("available"),answered:ke,unattributed:ke}).strict(),Kc]).superRefine((e,n)=>{e.state==="available"&&e.unattributed>e.answered&&n.addIssue({code:ye.custom,path:["unattributed"],message:"Unattributed answers cannot exceed answered"})}),Zq=d({status:Rg,providers:y(r()),expected:ke,filled:ke,createdAt:r(),finishedAt:r().nullable()}).strict();d({run:Fj,completeness:Vq,capture:Gq,retrieval:Hq,population:Qq,comparison:Be("state",[d({state:R("available"),previousDisplayedRunId:da}).strict(),d({state:R("unavailable"),reason:Hj}).strict()]),unattributedByClass:d({branded:kw,nonBrand:kw}).strict().optional(),latestFill:Zq.nullable().optional()}).strict().superRefine((e,n)=>{if(e.completeness.state!=="available")return;const i=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==i&&n.addIssue({code:ye.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==i&&n.addIssue({code:ye.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const Ir=r().regex(/^[a-f0-9]{64}$/),Ha=r().trim().min(1).max(256),oi=m().int().positive(),Sw=d({kind:j(["user","api-key","system"]),id:r().trim().min(1),label:r().trim().min(1)}).strict(),Yq=j(["proposed","included","excluded"]),Xq=j(["manual","sitemap"]),zg=d({stableKey:he,label:r().trim().min(1),status:Yq,aliases:y(r().trim().min(1)),identityAliases:y(r().trim().min(1)).optional(),urlMatchers:y(r().trim().min(1)),source:Xq,discoveredUrl:r().trim().min(1).optional(),discoveryIdentity:r().trim().min(1).optional()}).strict(),Tm=d({providers:y(jt).optional(),models:He(jt,r().trim().min(1)).optional(),locations:y(r().trim().min(1)).optional()}).strict(),Jq=j(["branded","non-brand","unclassified"]),Wq=j(["rule","operator"]),Yj=d({targetKey:he,queryId:Ha,contextOverride:Tm.optional(),executionContexts:y(vm.extend({executionNodeKey:r().min(1).optional()})).min(1).optional(),queryProvenance:L2.optional(),queryClass:Jq,classificationSource:Wq}).strict().superRefine((e,n)=>{e.contextOverride!==void 0&&e.executionContexts!==void 0&&n.addIssue({code:"custom",path:["executionContexts"],message:"Use either frozen execution contexts or a context override, not both."})}),Em=B2,Xj=d({stableKey:he,label:r().trim().min(1),parentGroupKey:he.optional(),targetKeys:y(he),competitors:y(Em)}).strict(),eM=d({sitemapUrl:r().url(),rule:Tg,exclusions:y(r().trim().min(1)),inputChecksum:Ir,reviewedAt:r().datetime().optional()}).strict(),tM=d({providers:y(jt),models:He(jt,r().trim().min(1)).optional(),locations:y(r().trim().min(1))}).strict(),Jj=U2,nM=d({defaultContext:tM,targets:y(zg),assignments:y(Yj),groups:y(Xj),reportingScopes:y(Jj).optional(),discovery:eM.optional()}).strict(),aM=d({id:r().trim().min(1),projectId:r().trim().min(1),schemaVersion:R(2),baseActiveVersionId:r().trim().min(1).nullable(),baseActiveRevision:oi.nullable(),authoring:nM,createdBy:Sw,updatedBy:Sw,createdAt:r().datetime(),updatedAt:r().datetime()}).strict(),Ig=d({targets:m().int().nonnegative(),includedTargets:m().int().nonnegative(),assignments:m().int().nonnegative(),unclassifiedAssignments:m().int().nonnegative(),groups:m().int().nonnegative(),competitors:m().int().nonnegative()}).strict(),iM=d({code:r().trim().min(1),message:r().trim().min(1),path:y(Qe([r(),m().int()]))}).strict(),Wj=d({etag:r().trim().min(1),changed:E(),warnings:y(iM),counts:Ig}).strict();d({draft:aM.nullable(),etag:r().trim().min(1).nullable()}).strict();zr(zg);zr(Yj);zr(Xj);d({search:r().optional(),cursor:r().trim().min(1).optional(),limit:m().int().positive().max(pg).optional()}).strict();d({expectedActiveRevision:oi.nullable()}).strict();d({sitemapUrl:r().url(),rule:Tg,exclusions:y(r().trim().min(1)).optional()}).strict();const sM=d({discoveryIdentity:r().trim().min(1),action:j(["create","rebind","ignore"]),targetKey:he.optional(),label:r().trim().min(1).optional()}).strict();d({selections:y(sM),selectedTargetKeys:y(he).optional()}).strict().superRefine((e,n)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&n.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&n.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});d({target:zg}).strict();d({targetKey:he,label:r().trim().min(1)}).strict();d({targetKey:he,mergedKeys:y(he).min(1)}).strict();d({targetKey:he,cleanup:R("assignments-and-group-memberships").optional()}).strict();d({targetKey:he,discoveryIdentity:r().trim().min(1),discoveredUrl:r().url()}).strict();const e3={targetKeys:y(he).optional(),groupKeys:y(he).optional()};function t3(e,n){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&n.addIssue({code:"custom",message:"At least one Target or group selector is required."})}d(e3).strict().superRefine(t3);const oM=d({...e3,queryIds:y(Ha).min(1),contextOverride:Tm.optional()}).strict().superRefine(t3);Qe([d({targetKey:he,queryIds:y(Ha).min(1),contextOverride:Tm.optional()}).strict(),oM]);const rM=d({groupKey:he,label:r().trim().min(1),memberCount:m().int().positive()}).strict();d({draftEtag:r().trim().min(1),groups:y(rM),resolvedTargetKeys:y(he),overlapCount:m().int().nonnegative(),assignments:d({requested:m().int().nonnegative(),added:m().int().nonnegative(),alreadyPresent:m().int().nonnegative()}).strict(),execution:d({addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),fullRunNodes:m().int().nonnegative(),fullRunProviderCalls:m().int().nonnegative()}).strict()}).strict();d({pairs:y(d({targetKey:he,queryId:Ha}).strict()).min(1),contextOverride:Tm.optional()}).strict();Qe([d({targetKey:he,queryId:Ha}).strict(),d({targetKeys:y(he).min(1),queryId:Ha}).strict()]);d({targetKey:he}).strict();d({queryClass:dg,assignments:y(d({targetKey:he,queryId:Ha}).strict()).min(1)}).strict();d({group:d({stableKey:he,label:r().trim().min(1),parentGroupKey:he.nullable().optional(),targetKeys:y(he),competitors:y(Em).optional()}).strict()}).strict();d({market:Jj}).strict();d({groupKey:he}).strict();d({groupKey:he,competitor:Em}).strict();d({expectedActiveRevision:oi,groupKey:he,domain:r().trim().min(1).refine(e=>Bc(e)!==null,"A competitor domain must be a valid hostname"),label:r().trim().min(1).optional(),aliases:y(r().trim().min(1)).optional()}).strict();Wj.extend({groupKey:he,competitor:Em,draftCreated:E(),published:d({revision:oi,competitorsChanged:R(!1)}).strict()}).strict();d({groupKey:he,competitorKey:he}).strict();const Qd=d({ruleId:r().trim().min(1),severity:j(["fail","warn"]),message:r().trim().min(1),path:y(Qe([r(),m().int()]))}).strict();Be("ok",[d({ok:R(!0),compiledChecksum:Ir,checks:y(Qd),counts:Ig,plan:xm}).strict(),d({ok:R(!1),compiledChecksum:ue(),checks:y(Qd).min(1)}).strict()]);const jw=d({added:y(r().trim().min(1)),removed:y(r().trim().min(1)),changed:y(r().trim().min(1)),unchanged:y(r().trim().min(1))}).strict(),lM=d({activeRevision:oi.nullable(),targets:jw,groups:jw,assignments:d({added:m().int().nonnegative(),removed:m().int().nonnegative(),reclassified:m().int().nonnegative()}).strict(),execution:d({addedNodeKeys:y(r().trim().min(1)),removedNodeKeys:y(r().trim().min(1))}).strict()}).strict();Be("ok",[d({ok:R(!0),compiledChecksum:Ir,checks:y(Qd),counts:Ig,plan:xm,diff:lM}).strict(),d({ok:R(!1),compiledChecksum:ue(),checks:y(Qd).min(1),diff:ue()}).strict()]);d({expectedActiveRevision:oi.nullable(),expectedCompiledChecksum:Ir}).strict();d({published:E(),active:d({revision:oi,checksum:Ir,compiledChecksum:Ir,createdAt:r().datetime(),plan:xm}).strict()}).strict();d({discarded:E()}).strict();d({expectedActiveRevision:oi}).strict();d({deactivated:E(),previousRevision:oi.nullable()}).strict();const cM=j(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),uM=j(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),dM=j(["simple","draft-only","active-v1","active-v2"]);d({state:cM,nextAction:uM,mode:dM,answerVisibilityProviderReady:E(),activeRevision:oi.nullable(),activeSchemaVersion:Qe([R(1),R(2)]).nullable(),draft:d({etag:r().trim().min(1),updatedAt:r().datetime()}).strict().nullable()}).strict();const n3=d({id:r().trim().min(1),projectId:r().trim().min(1),name:r().trim().min(1),description:r().nullable(),itemCount:m().int().nonnegative(),createdAt:r().datetime(),updatedAt:r().datetime()}).strict(),mM=d({queryId:Ha,queryText:r().min(1),position:m().int().nonnegative()}).strict();n3.extend({items:y(mM)}).strict();d({querySets:y(n3)}).strict();d({name:r().trim().min(1),description:r().nullable().optional(),queryIds:y(Ha)}).strict();const pM=d({id:r().trim().min(1),projectId:r().trim().min(1),name:r().trim().min(1),description:r().nullable(),pattern:r().trim().min(1),variables:y(r().trim().min(1)),createdAt:r().datetime(),updatedAt:r().datetime()}).strict();d({templates:y(pM)}).strict();d({name:r().trim().min(1),description:r().nullable().optional(),pattern:r().trim().min(1),variables:y(r().trim().min(1))}).strict();d({bindings:y(He(r().trim().min(1),r().trim().min(1))).min(1),querySetId:r().trim().min(1).optional()}).strict();d({created:y(d({queryId:Ha,queryText:r().min(1)}).strict()),existing:y(d({queryId:Ha,queryText:r().min(1)}).strict())}).strict();const Zd=r().regex(/^[a-f0-9]{64}$/),Rm=m().int().positive();d({stableKey:he,kind:j(["target","group"]),retiredAt:r().datetime().nullable()}).strict();d({csv:r()}).strict();j(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const hM=j(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),l0=d({dataRow:Rm,property:r(),group:r(),url:r().nullable(),normalizedProperty:r(),normalizedGroupLabel:r()}).strict(),sc=l0.extend({reason:hM}),fM=d({source:j(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:he,kind:j(["target","group"]).optional(),retiredAt:r().datetime().nullable().optional(),normalizedGroupLabel:r().optional()}).strict(),gM=d({proposedGroupKey:he,evidence:y(fM).min(1)}).strict(),yM=Be("status",[l0.extend({status:R("matched"),targetKey:he,groupKey:he}).strict(),sc.extend({status:R("ambiguous"),candidateTargetKeys:y(he).min(1).optional(),candidateGroupKeys:y(he).min(1).optional()}).strict(),sc.extend({status:R("unmatched")}).strict(),sc.extend({status:R("invalid"),groupKeyConflict:gM.optional()}).strict(),l0.extend({status:R("duplicate"),duplicateOfRow:Rm,targetKey:he,groupKey:he}).strict(),sc.extend({status:R("proposed"),targetKey:he}).strict(),sc.extend({status:R("excluded"),targetKey:he}).strict()]),bM=d({normalizedGroupLabel:r(),groupKey:he,label:r().trim().min(1),action:j(["create","extend"]),matchedRows:y(Rm),targetKeys:y(he),addedTargetKeys:y(he),unchangedTargetKeys:y(he)}).strict(),vM=d({dataRows:m().int().nonnegative(),matchedRows:m().int().nonnegative(),ambiguousRows:m().int().nonnegative(),unmatchedRows:m().int().nonnegative(),invalidRows:m().int().nonnegative(),duplicateRows:m().int().nonnegative(),proposedRows:m().int().nonnegative(),excludedRows:m().int().nonnegative(),needsAttention:m().int().nonnegative(),groupsReady:m().int().nonnegative(),groupsToCreate:m().int().nonnegative(),groupsToExtend:m().int().nonnegative(),membershipsReady:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();d({draftEtag:r().trim().min(1),sourceChecksum:Zd,previewChecksum:Zd,rows:y(yM),groupChanges:y(bM),counts:vM}).strict();d({csv:r(),sourceChecksum:Zd,previewChecksum:Zd,acceptedRows:y(Rm).min(1)}).strict().superRefine((e,n)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&n.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});Wj.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();function a3(e,n){return Number((n===$a.percent?e:e*100).toFixed(6))}function i3(e){return Math.round(Number((e*10).toFixed(4)))/10}function Yd(e,n=$a.fraction){if(e==null||!Number.isFinite(e))return"—";const i=a3(e,n);if(i===0)return"0%";const o=i<0?"-":"",u=Math.abs(i);if(u===100)return`${o}100%`;const h=i3(u);return h===0?`${o}<0.1%`:h===100&&u<100?`${o}>99.9%`:`${o}${h.toFixed(1)}%`}function ete(e){return Number.isFinite(e)?Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}K`:e.toLocaleString("en-US"):"—"}const xM=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function bc(e,n=new Date){const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),o=i?xM[Number(i[2])-1]:void 0;if(!i||!o)return e;const u=`${o} ${Number(i[3])}`;return Number(i[1])===n.getFullYear()?u:`${u}, ${i[1]}`}function tte(e,n,i=800){const o=[];if(!/^\d{4}-\d{2}-\d{2}$/.test(e)||!/^\d{4}-\d{2}-\d{2}$/.test(n))return o;for(let u=e;u<=n&&(o.push(u),!(o.length>=i));u=wM(u,1));return o}function wM(e,n){if(!Number.isFinite(n))return e;const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!i?.[1]||!i[2]||!i[3])return e;const o=new Date(Date.UTC(Number(i[1]),Number(i[2])-1,Number(i[3])+Math.trunc(n)));if(Number.isNaN(o.getTime()))return e;const u=o.getUTCFullYear(),h=String(o.getUTCMonth()+1).padStart(2,"0"),f=String(o.getUTCDate()).padStart(2,"0");return`${u}-${h}-${f}`}function nte(e,n=$a.fraction){const i=a3(e,n);if(i===0)return{direction:"none",magnitude:"0"};const o=i3(Math.abs(i));return{direction:i>0?"up":"down",magnitude:o===0?"<0.1":o.toFixed(1)}}function ate(e,n="UTC"){const i=new Date(e);if(!Number.isFinite(i.getTime()))return null;const o={weekday:"short",year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"};try{return i.toLocaleString("en-US",{...o,timeZone:n})}catch{return i.toLocaleString("en-US",{...o,timeZone:"UTC"})}}const s3=j(["introduced","repointed","retired"]),kM=s3.enum;d({modelId:r().trim().min(1),date:r().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:s3,confirmed:E(),sourceUrl:r().url(),note:r().min(1)});const SM=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];kM.repointed;new Set(SM.map(e=>e.modelId.toLowerCase()));const jM=j(["not-exposed","no-known-change","known-change"]);jM.enum;const AM=d({modelId:r().trim().min(1),date:r().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:E(),sourceUrl:r().url()}),NM=d({status:j(["no-known-change","known-change"]),modelIds:y(r().trim().min(1)).min(1),changes:y(AM),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:r().optional(),lastChangeDate:r().optional(),knownGoodAsOf:r(),checkedThroughPeriodEnd:E()}),CM={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function _M(e){const n=e.trim().toLowerCase();return CM[n]??e.charAt(0).toUpperCase()+e.slice(1)}function xf(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function oc(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function wf(e){return[...new Set(e.filter(n=>n!==null))].sort()}function TM(e,n,i){const o=i(e),u=Array.isArray(n.changes)?n.changes:[],h=xf(n.changeCount)||u.length,f=Math.min(h,xf(n.unverifiedChangeCount)||xf(n.unconfirmedChangeCount)||u.filter(S=>S.confirmed===!1).length),b=oc(n.knownGoodAsOf),v=n.checkedThroughPeriodEnd!==!1,x={engine:o,confirmedCount:h-f,unconfirmedCount:f,knownGoodAsOf:b,checkedThroughPeriodEnd:v};if(u.length>0)return{...x,confirmedDates:wf(u.filter(S=>S.confirmed!==!1).map(S=>oc(S.date))),unconfirmedDates:wf(u.filter(S=>S.confirmed===!1).map(S=>oc(S.date)))};const k=wf([oc(n.firstChangeDate),oc(n.lastChangeDate)]);return h===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:k,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:k}:{...x,confirmedDates:[],unconfirmedDates:[]}}function EM(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function Aw(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${bc(e[0])}`:`more than once between ${bc(e[0])} and ${bc(e[e.length-1])}`}function RM(e){const n=Aw(e.confirmedDates,e.confirmedCount),i=Aw(e.unconfirmedDates,e.unconfirmedCount),o=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${o} was updated ${n}, inside this period.`:`${o} was updated inside this period.`;if(e.confirmedCount===0)return i?`${o} may have been updated ${i}, inside this period, though that is not confirmed.`:`${o} may have been updated inside this period, though that is not confirmed.`;if(n&&i)return`${o} was updated ${n}, inside this period, and may also have been updated ${i}.`;const u=e.unconfirmedCount>1?"more times":"once more";return`${o} was updated inside this period, and may have been updated ${u}, though that is not confirmed.`}function Nw(e){const n=e.filter(o=>!o.checkedThroughPeriodEnd&&o.knownGoodAsOf!==null);if(n.length===0)return null;const i=n.map(o=>o.knownGoodAsOf).sort()[0];return`We last checked for model updates on ${bc(i)}, and this period runs past that date, so there may be later updates we do not know about.`}function ite(e,n={}){const i=n.engineName??_M,o=Object.entries(e??{}).map(([k,S])=>TM(k,S??{},i)).sort((k,S)=>k.engine.localeCompare(S.engine));if(o.length===0)return null;const u=o.filter(k=>k.confirmedCount+k.unconfirmedCount>0);if(u.length===0){const k=[...new Set(o.map(q=>q.engine))],S=k.length>1,C=Nw(o),_=[...new Set(o.map(q=>q.knownGoodAsOf).filter(q=>q!==null))].sort(),z=C??(_.length>0?`We last checked for model updates on ${bc(_[0])}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${EM(k)} in this period.`,detail:`${S?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${z?` ${z}`:""}`}}const h=u.reduce((k,S)=>k+S.confirmedCount+S.unconfirmedCount,0),f=u.some(k=>k.confirmedCount>0),b=h===1?"this update":"these updates",v=f?`Some of the movement in these numbers may come from ${b} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${b} rather than from a real change in how AI answers about you, so compare periods carefully.`,x=Nw(o);return{kind:"change",text:`${u.map(RM).join(" ")} ${v}${x?` ${x}`:""}`}}const xo=d({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),DM=j(["gsc","ga4","gbp"]);d({id:r(),domain:r(),connectionType:DM,propertyId:r().nullable().optional(),sitemapUrl:r().nullable().optional(),scopes:y(r()).default([]),createdAt:r(),updatedAt:r()});const zM=d({date:r(),query:r(),page:r(),country:r().nullable().optional(),device:r().nullable().optional(),clicks:m(),impressions:m(),ctr:we(),position:m()});j(["clicks","impressions","date"]);d({rows:y(zM),totalMatching:m(),truncated:E(),latestAvailableDate:r().nullable()});const IM=d({date:r(),clicks:m(),impressions:m(),ctr:we(),position:m().nullable()}),o3=d({startDate:r().nullable(),endDate:r().nullable(),latestDataDate:r().nullable(),daysSinceLatestData:m().nullable()}),OM=d({clicks:xo.nullable(),impressions:xo.nullable(),ctr:xo.nullable(),position:xo.nullable()}),Cw=d({startDate:r(),endDate:r(),clicks:m(),impressions:m(),ctr:we().nullable(),position:m().nullable(),source:j(["property-daily","dimensioned","mixed","empty"])}),PM=d({days:m(),basis:j(["prior-window","split-window"]).optional(),prior:Cw,trailing:Cw,comparable:E(),change:d({clicks:we().nullable(),impressions:we().nullable(),ctr:we().nullable(),position:we().nullable()})});d({totals:d({clicks:m(),impressions:m(),ctr:we(),position:m().nullable(),positionDays:m(),days:m()}),daily:y(IM),window:o3.optional(),trends:OM.optional(),periodComparison:PM.nullable().optional()});const qM=d({page:r(),clicks:m(),impressions:m(),ctr:we()});d({rows:y(qM),totals:d({clicks:m(),impressions:m(),ctr:we(),days:m(),coveredFrom:r().nullable(),coveredThrough:r().nullable(),complete:E()}).nullable(),totalsSource:R("property-daily"),rankedFrom:r().nullable(),rankedThrough:r().nullable()});const MM=j(["google","page-summed","mixed"]),BM=d({query:r(),clicks:m(),impressions:m(),ctr:we(),position:m(),days:m(),source:MM});d({rows:y(BM),totalMatching:m(),truncated:E(),window:o3.extend({earliestDataDate:r().nullable().optional()})});const c0=d({id:r(),url:r(),indexingState:r().nullable().optional(),verdict:r().nullable().optional(),coverageState:r().nullable().optional(),pageFetchState:r().nullable().optional(),robotsTxtState:r().nullable().optional(),crawlTime:r().nullable().optional(),lastCrawlResult:r().nullable().optional(),isMobileFriendly:E().nullable().optional(),richResults:y(r()).default([]),referringUrls:y(r()).default([]),inspectedAt:r()});j(["stable","reindexed","deindexed","still-missing","new"]);const LM=d({url:r(),previousState:r().nullable(),currentState:r().nullable(),transitionDate:r()}),UM=d({reason:r(),count:m(),urls:y(c0).default([])});d({summary:d({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:ot(),indexedShare:we(m().min(0).max(1)).nullable(),notIndexedShare:we(m().min(0).max(1)).nullable()}),lastInspectedAt:r().nullable(),lastSyncedAt:r().nullable(),indexed:y(c0).default([]),notIndexed:y(c0).default([]),deindexed:y(LM).default([]),reasonGroups:y(UM).default([])});d({url:r(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:r()});const VM=d({url:r(),type:j(["URL_UPDATED","URL_DELETED"]),notifiedAt:r(),status:j(["success","error"]),error:r().optional()});d({summary:d({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(VM).default([])});d({date:r(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:He(r(),m()).default({})});const $M=d({siteUrl:r(),permissionLevel:r()});d({sites:y($M).default([])});const GM=d({type:r(),submitted:r(),indexed:r().optional().describe("Deprecated compatibility field.")}),r3=d({path:r(),parentSitemapUrl:r().optional(),lastSubmitted:r().optional(),isPending:E().optional(),isSitemapsIndex:E().optional(),type:r().optional(),lastDownloaded:r().optional(),warnings:r().optional(),errors:r().optional(),contents:y(GM).optional()});d({sitemaps:y(r3).default([]),summary:d({total:m().int().nonnegative(),indexes:m().int().nonnegative(),files:m().int().nonnegative()}),preferredSubmissionUrls:y(r()).default([])});d({sitemapUrls:y(r().url().refine(e=>{const n=new URL(e).protocol;return n==="http:"||n==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const KM=d({sitemapUrl:r(),status:j(["accepted","error"]),submittedAt:r().optional(),error:r().optional()});d({summary:d({total:m().int().nonnegative(),accepted:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(KM)});d({sitemaps:y(r3),primarySitemapUrl:r(),run:d({id:r(),projectId:r(),kind:r(),status:r(),trigger:r(),createdAt:r()}).nullable()});const mt=r().trim().min(1),_w=r().regex(/^[a-f0-9]{64}$/i),HM=j(["not-connected","selection-required","connected","stale"]),gd=HM.enum,FM=j(["live","draft"]),l3=FM.enum,Td=d({accountId:mt.nullable(),containerId:mt.nullable(),workspaceId:mt.nullable(),selectedAt:r().nullable()}).strict(),kf=d({id:mt,projectId:mt,scopes:y(r()).default([]),selection:Td,lastValidatedAt:r().nullable(),lastSnapshotAt:r().nullable(),createdAt:r(),updatedAt:r()}).strict(),c3=d({id:mt,path:r(),name:r(),shareData:E().nullable()}).strict(),u3=d({accountId:mt,id:mt,path:r(),name:r(),publicId:r().nullable(),domainName:r().nullable(),usageContexts:y(r())}).strict(),Og=d({accountId:mt,containerId:mt,id:mt,path:r(),name:r(),description:r().nullable(),fingerprint:r().nullable()}).strict(),QM=d({accounts:y(c3),totalAccessible:m().int().nonnegative(),truncated:E(),fetchedAt:r()}).strict();d({accountId:mt,containers:y(u3),totalAccessible:m().int().nonnegative(),truncated:E(),fetchedAt:r()}).strict();d({accountId:mt,containerId:mt,workspaces:y(Og),totalAccessible:m().int().nonnegative(),truncated:E(),fetchedAt:r()}).strict();const ZM=d({id:mt,name:r(),type:r(),paused:E(),firingTriggerIds:y(mt),blockingTriggerIds:y(mt),referencedVariableIds:y(mt),parameterKeys:y(r()),fingerprint:r().nullable()}).strict(),YM=d({id:mt,name:r(),type:r(),customEventNames:y(r()),filterKeys:y(r()),autoEventFilterKeys:y(r()),fingerprint:r().nullable()}).strict(),XM=d({id:mt,name:r(),type:r(),dataLayerVariableName:r().nullable(),parameterKeys:y(r()),fingerprint:r().nullable()}).strict(),d3=j(["recognized","unknown"]),Tw=d3.enum,JM=j(["literal","variable-ref","absent","unknown"]),Dm=JM.enum,WM=r().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),Gr=d({source:R(Dm.absent),literal:ue(),variableRef:ue()}).strict(),Kr=d({source:R(Dm.unknown),literal:ue(),variableRef:ue()}).strict(),Hr=d({source:R(Dm["variable-ref"]),literal:ue(),variableRef:WM}).strict();function Hc(e){return d({source:R(Dm.literal),literal:e,variableRef:ue()}).strict()}const eB=r().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),tB=r().trim().min(1).max(128).regex(/^[\w-]+$/),nB=r().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),aB=r().trim().length(3).regex(/^[a-z]{3}$/i);Be("source",[Hc(r().trim().min(1).max(256)),Hr,Gr,Kr]);const iB=Be("source",[Hc(eB),Hr,Gr,Kr]),sB=Be("source",[Hc(tB),Hr,Gr,Kr]),oB=Be("source",[Hc(nB),Hr,Gr,Kr]),rB=Be("source",[Hr,Gr,Kr]),lB=Be("source",[Hc(aB),Hr,Gr,Kr]),m3=j(["all-pages","custom-event","filtered","unknown"]);m3.enum;const Ew=d({operator:r().trim().min(1).max(64),value:r().max(2048),negated:E(),ignoreCase:E()}).strict(),cB=d({triggerId:mt,triggerType:r(),eventPredicates:y(Ew),hostnamePredicates:y(Ew),unsupportedConditionCount:m().int().nonnegative()}).strict(),p3=j(["not-google-ads-tag","unsupported-tag-type","custom-html-opaque","conversion-id-unresolved","conversion-label-unresolved","value-mapping-missing","transaction-id-mapping-missing","currency-mapping-missing","trigger-unresolved","hostname-filter-unresolved"]);p3.enum;const uB=d({tagId:mt,tagType:r(),recognition:d3,recognitionReason:r().nullable(),conversionId:iB,conversionLabel:sB,value:oB,transactionId:rB,currency:lB,triggerStrategy:m3,triggerIds:y(mt),triggerPredicates:y(cB),reviewReasons:y(p3)}).strict().superRefine((e,n)=>{e.recognition===Tw.recognized&&e.recognitionReason!==null&&n.addIssue({code:ye.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===Tw.unknown&&!e.recognitionReason&&n.addIssue({code:ye.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),h3=d({accountId:mt,containerId:mt,workspaceId:mt.nullable(),tags:y(ZM),triggers:y(YM),variables:y(XM),googleAdsTagAssessments:y(uB).default([])}).strict(),dB=d({accountId:mt,containerId:mt,id:mt,path:r(),name:r(),description:r().nullable(),fingerprint:r().nullable(),deleted:E()}).strict(),f3=d({source:R(l3.live),version:dB,graph:h3,fetchedAt:r()}).strict(),g3=d({source:R(l3.draft),workspace:Og,graph:h3,conflictCount:m().int().nonnegative(),fetchedAt:r()}).strict(),mB=d({account:c3,container:u3,workspaces:y(Og),live:f3.nullable(),draft:g3.nullable(),fetchedAt:r()}).strict();Be("status",[d({connected:R(!1),status:R(gd["not-connected"]),connection:ue(),selection:ue()}).strict(),d({connected:R(!0),status:R(gd["selection-required"]),connection:kf,selection:Td}).strict(),d({connected:R(!0),status:R(gd.connected),connection:kf,selection:Td}).strict(),d({connected:R(!0),status:R(gd.stale),connection:kf,selection:Td}).strict()]);const y3=j(["accounts","container","live","draft"]),yd=y3.enum,Pg=d({id:mt,projectId:mt,connectionId:mt,runId:mt,kind:y3,accountId:mt.nullable(),containerId:mt.nullable(),workspaceId:mt.nullable(),payloadChecksum:_w,rawPayloadSha256:_w.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:r(),createdAt:r()}).strict(),pB=Be("kind",[d({kind:R(yd.accounts),data:QM}).strict(),d({kind:R(yd.container),data:mB}).strict(),d({kind:R(yd.live),data:f3}).strict(),d({kind:R(yd.draft),data:g3}).strict()]),hB=d({metadata:Pg,payload:pB}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Yn=r().trim().min(1),fB=r().trim().min(1).refine(e=>Bc(e)!==null,"Expected a hostname or http(s) URL."),qg=j(["configured","statically-consistent","runtime-unverified","observed"]);qg.enum;const b3=j(["pass","fail","unknown"]);b3.enum;const v3=j(["ads-connection-missing","ads-conversion-action-missing","ads-goal-missing","ads-goal-not-biddable","ads-action-not-primary","gtm-connection-missing","gtm-live-graph-missing","gtm-tag-missing","gtm-tag-unrecognized","gtm-tag-paused","gtm-trigger-missing","gtm-variable-missing","gtm-event-mismatch","gtm-hostname-mismatch","gtm-value-mapping-missing","gtm-transaction-id-mapping-missing","gtm-currency-mapping-missing","gtm-conversion-id-mismatch","gtm-conversion-label-mismatch","runtime-event-not-observed","runtime-gtm-not-observed","runtime-ads-not-observed"]);v3.enum;const x3=d({id:Yn,projectId:Yn,name:r().trim().min(1),eventName:r().trim().min(1),googleAds:d({customerId:Yn,conversionActionId:Yn,conversionId:r().trim().min(1).optional(),conversionLabel:r().trim().min(1).optional(),campaignIds:y(Yn).max(50).default([]),requireBiddableGoal:E().default(!0),requirePrimaryAction:E().default(!0)}).strict(),gtm:d({accountId:Yn,containerId:Yn,tagId:Yn,triggerIds:y(Yn).default([]),variableIds:y(Yn).default([])}).strict(),runtime:d({verificationRequired:E().default(!0),requireTransactionId:E().default(!0),requireValue:E().default(!0),requireCurrency:E().default(!0),productionHosts:y(fB).default([])}).strict(),createdAt:r(),updatedAt:r()}).strict();x3.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const w3=j(["not-run","consistent","inconsistent"]);w3.enum;const k3=j(["not-run","not-observed","observed"]);k3.enum;d({staticCheck:w3,runtimeVerificationRequired:E(),runtimeObservation:k3}).strict();const gB=d({code:v3,subject:r().trim().min(1),outcome:b3,status:qg,evidenceIds:y(Yn).default([])}).strict(),yB=d({contract:x3,status:qg,findings:y(gB),evaluatedAt:r()}).strict(),Rw=d({id:Yn,name:r(),detail:r(),active:E()});d({googleAds:d({customerId:Yn.nullable(),syncedAt:r().nullable(),conversionActions:y(Rw)}),gtm:d({containerId:Yn.nullable(),syncedAt:r().nullable(),tags:y(Rw)})});const vc=r().trim().min(1);function Dw(e){const n=e.trim();return/^\d{10}$/.test(n)?n:/^\d{3}-\d{3}-\d{4}$/.test(n)?n.replaceAll("-",""):null}const bB=/^[\w-]+$/;function Mg(e){const n=e.trim();return bB.test(n)?n:null}function vB(e){const n=e.trim();return/^accounts\/([\w-]+)$/.exec(n)?.[1]??Mg(n)}function xB(e,n){const i=e.trim(),o=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(i);return o?o[1]===n?o[2]:null:Mg(i)}function wB(e,n,i){const o=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(o);return u?u[1]===n&&u[2]===i?u[3]:null:Mg(o)}function kB(e){const n=Dw(e.customerId);if(!n)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:n};if(e.loginCustomerId===void 0)return{customerId:n};const i=Dw(e.loginCustomerId);return i?{loginCustomerId:i,customerId:n}:null}function SB(e){const n=vB(e.accountId);if(!n)return null;const i=xB(e.containerId,n);if(!i)return null;if(e.workspaceId===void 0)return{accountId:n,containerId:i};const o=wB(e.workspaceId,n,i);return o?{accountId:n,containerId:i,workspaceId:o}:null}const zm=j(["google-ads","gtm"]);zm.enum;d({provider:zm,publicUrl:r().url().optional(),developerToken:r().trim().min(1).max(512).optional()}).strict();d({provider:zm,authorizationUrl:r().url(),redirectUri:r().url(),expiresAt:r().nullable()}).strict();d({loginCustomerId:vc.nullable().optional(),customerId:vc}).strict().superRefine((e,n)=>{kB(e)||n.addIssue({code:ye.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});d({accountId:vc,containerId:vc,workspaceId:vc.optional()}).strict().superRefine((e,n)=>{SB(e)||n.addIssue({code:ye.custom,message:"GTM resource paths must match the selected account and container."})});d({provider:zm,disconnected:E()}).strict();const S3=100;d({snapshots:y(lg).max(S3),nextCursor:r().nullable(),total:m().int().nonnegative()}).strict();d({snapshot:dI}).strict();d({snapshots:y(Pg).max(S3),nextCursor:r().nullable(),total:m().int().nonnegative()}).strict();d({snapshot:hB}).strict();d({assessment:yB,googleAdsSnapshot:lg.nullable(),gtmSnapshot:Pg.nullable()}).strict();d({id:r(),domain:r(),siteUrl:r().nullable().optional(),createdAt:r(),updatedAt:r()});const Sf=d({id:r(),url:r(),httpCode:m().nullable().optional(),inIndex:E().nullable().optional(),lastCrawledDate:r().nullable().optional(),inIndexDate:r().nullable().optional(),inspectedAt:r(),documentSize:m().nullable().optional(),anchorCount:m().nullable().optional(),discoveryDate:r().nullable().optional()});d({summary:d({total:m(),indexed:m(),notIndexed:m(),unknown:m().optional(),percentage:ot()}),lastInspectedAt:r().nullable(),indexed:y(Sf).default([]),notIndexed:y(Sf).default([]),unknown:y(Sf).default([]).optional()});d({query:r(),impressions:m(),clicks:m(),ctr:we(),averagePosition:m()});d({date:r(),indexed:m(),notIndexed:m(),unknown:m()});const jB=d({url:r(),status:j(["success","error"]),submittedAt:r(),error:r().optional()});d({summary:d({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(jB).default([])});const j3=d({url:r(),verified:E()});d({sites:y(j3).default([])});d({connected:E(),domain:r(),siteUrl:r().nullable(),createdAt:r().nullable(),updatedAt:r().nullable()});d({connected:E(),domain:r(),siteUrl:r().nullable(),availableSites:y(j3).default([])});d({siteUrl:r()});const AB=d({name:r(),alive:E(),lastUsed:r().nullable()});d({connected:E(),endpoint:r(),version:r().optional(),browserVersion:r().optional(),targets:y(AB).default([])});const Fr=j(["live","staging"]);d({projectName:r(),url:r(),stagingUrl:r().optional(),username:r(),defaultEnv:Fr,createdAt:r(),updatedAt:r()});const zw=d({url:r(),reachable:E(),pageCount:m().nullable().optional(),version:r().nullable().optional(),error:r().nullable().optional(),plugins:y(r()).optional(),authenticatedUser:d({id:m(),slug:r()}).nullable().optional()});d({connected:E(),projectName:r(),defaultEnv:Fr,live:zw.nullable(),staging:zw.nullable(),adminUrl:r().nullable().optional()});const NB=d({id:m(),slug:r(),title:r(),status:r(),modifiedAt:r().nullable().optional(),link:r().nullable().optional()}),A3=d({title:r().nullable(),description:r().nullable(),noindex:E().nullable(),writable:E().default(!1),writeTargets:y(r()).default([])}),CB=d({type:r(),json:He(r(),wn())}),_B=NB.extend({env:Fr,content:r(),seo:A3,schemaBlocks:y(CB).default([])}),Iw=_B.extend({contentHash:r(),contentSnippet:r()}),N3=d({manualRequired:R(!0),targetUrl:r(),adminUrl:r().nullable().optional(),content:r(),nextSteps:y(r()).default([])}),TB=d({slug:r(),severity:j(["high","medium","low"]),code:j(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:r()});d({slug:r(),title:r(),status:r(),wordCount:m(),seo:A3,schemaPresent:E(),issues:y(TB).default([])});const EB=d({slug:r(),status:j(["applied","skipped","manual"]),error:r().optional(),manualAssist:N3.optional()});d({env:Fr,strategy:j(["plugin","manual"]),results:y(EB)});const RB=d({slug:r(),status:j(["deployed","stripped","skipped","failed"]),schemasInjected:y(r()).optional(),manualAssist:N3.optional(),error:r().optional()});d({env:Fr,results:y(RB)});const DB=d({slug:r(),title:r(),canonrySchemas:y(r()),thirdPartySchemas:y(r()),hasCanonrySchema:E()});d({env:Fr,pages:y(DB)});const zB=d({name:r(),status:j(["completed","skipped","failed"]),summary:r().optional(),error:r().optional()});d({projectName:r(),steps:y(zB)});d({slug:r(),live:Iw,staging:Iw,hasDifferences:E(),differences:d({title:E(),slug:E(),content:E(),seoTitle:E(),seoDescription:E(),noindex:E(),schema:E()})});const IB=x2.shape.searchUnit.unwrap().enum;IB.query;const OB=d({name:r(),displayName:r().optional(),keyUrl:r().optional(),modelHint:r().optional(),model:r().optional(),defaultModel:r().optional(),configured:E(),quota:Cz.optional(),vertexConfigured:E().optional()}),PB=d({name:r(),displayName:r(),mode:j(["api","browser"]),modelConfigurable:E(),defaultModel:r(),knownModels:y(d({id:r(),displayName:r(),tier:j(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:d({source:r(),flags:r()}),modelValidationHint:r()}),Ow=d({configured:E()});d({providers:y(OB).default([]),providerCatalog:y(PB).default([]),google:Ow,bing:Ow});const qB=j(["recorded","errored","expired","canceled","parse_failed","duplicate"]);qB.enum;const MB=j(["not_plan_run","scoped_run","probe_run","batch_unavailable","model_not_frozen"]);MB.enum;Vx.standard,Vx.batch;const C3=j(["all","api","browser"]);C3.enum;const BB=j(["yes","no","unknown","not-mentioned"]),Pw=y(r().min(1)),qw=d({companyName:r().min(1),domain:r().min(1),queries:Pw.optional(),phrases:Pw.optional(),competitors:y(r().min(1)).optional(),providers:y(r().trim().min(1)).min(1).optional().describe("Configured provider names to use for both answers and analysis. Omit to use all providers matching providerMode."),providerMode:C3.optional().describe("Filter providers by transport; defaults to all. Browser-only selection requires manual queries and uses no API provider for analysis.")}).superRefine((e,n)=>{e.queries!==void 0&&e.phrases!==void 0&&n.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});qw.safeExtend({competitors:qw.shape.competitors.default([])});const LB=d({name:r(),count:m().int().nonnegative()}),UB=d({id:r(),name:r(),weight:m(),score:m(),findings:y(d({type:r(),message:r()})).default([]),recommendations:y(r()).default([])}),VB=d({url:r(),finalUrl:r(),auditedAt:r(),overallScore:m(),summary:r(),factors:y(UB).default([])}),$B=d({industry:r(),summary:r(),services:y(r()).default([]),categoryTerms:y(r()).default([])}),GB=d({provider:r(),displayName:r(),model:r().nullable().optional(),mentioned:E(),cited:E(),describedAccurately:BB,accuracyNotes:r().nullable().optional(),incorrectClaims:y(r()).default([]),recommendedCompetitors:y(r()).default([]),citedDomains:y(r()).default([]),groundingSources:y(wm).default([]),searchQueries:y(r()).default([]),answerText:r(),error:r().nullable().optional()}),KB=d({query:r(),providerResults:y(GB).default([])}),HB=d({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(LB).default([]),visibilityGap:r(),whatThisMeans:y(r()).default([]),recommendedActions:y(r()).default([])});d({companyName:r(),domain:r(),homepageUrl:r(),generatedAt:r(),queries:y(r()).default([]),competitors:y(r()).default([]),profile:$B,audit:VB,queryResults:y(KB).default([]),summary:HB});const FB=d({basis:j(["tracked","observed"]).nullable(),availability:j(["measured","not-measured","unavailable"]),reason:j(["select-query-class","answer-selection","no-competitors","insufficient-observed","no-answers","no-mentions","unavailable"]).nullable()}),Bg=FB.partial().shape,Lg=j(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);Lg.enum;const Ug=j(["cited","aspirational","wasted-surface"]),Mw=Ug.enum;Mw.cited,Mw.aspirational;const Fc=j(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),QB=Fc.enum;QB["direct-competitor"];const Im=j(["queued","seeding","probing","completed","failed"]);Im.enum;const _3=d({domain:r().min(1),hits:m().int().positive(),competitorType:Fc.default("unknown")}),ZB=d({id:r(),sessionId:r(),projectId:r(),query:r(),bucket:Ug.nullable().default(null),citationState:Li,citedDomains:y(r()).default([]),answerMentioned:E().nullable().default(null),createdAt:r()}),YB=d({id:r(),projectId:r(),status:Im,icpDescription:r().nullable().optional(),seedProvider:r().nullable().optional(),seedCountRaw:m().int().nullable().optional(),seedCount:m().int().nullable().optional(),seedFromAnswerCount:m().int().nullable().optional(),seedFromGroundingCount:m().int().nullable().optional(),seedBrandFilteredCount:m().int().nullable().optional(),buyerDescription:r().nullable().optional(),locations:y(mn).nullable().optional(),seedRawCandidates:y(r()).nullable().optional(),dedupClusterMinSims:y(m()).nullable().optional(),dedupBandPairFraction:we().nullable().optional(),dedupPairsTotal:m().int().nullable().optional(),seedProviders:y(r()).nullable().optional(),seedProviderCounts:He(r(),m().int()).nullable().optional(),canonicalCount:m().int().nullable().optional(),dedupThreshold:m().nullable().optional(),probeCount:m().int().nullable().optional(),citedCount:m().int().nullable().default(null),aspirationalCount:m().int().nullable().default(null),wastedCount:m().int().nullable().default(null),competitorMap:y(_3).default([]),warning:r().nullable().optional(),error:r().nullable().optional(),startedAt:r().nullable().optional(),finishedAt:r().nullable().optional(),createdAt:r()});YB.extend({probes:y(ZB).default([])});const XB=500,JB=8,WB=["gemini","openai"],eL=j(WB);d({icpDescription:r().min(1).optional(),buyerDescription:r().min(1).optional(),seedProviders:y(eL).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(XB).optional(),probeConcurrency:m().int().min(1).max(JB).optional(),locations:y(r().min(1)).optional()});d({buckets:y(Ug).min(1).optional(),includeCompetitors:E().optional(),competitorTypes:y(Fc).min(1).optional()});const Vg=d({domain:r().min(1),hits:m().int().positive(),competitorType:Fc,sources:y(_3)}),T3=j(["already-tracked","project-domain","shared-host","claimed-by-alias"]);T3.enum;const E3=Vg.extend({reason:T3,message:r()});d({sessionId:r(),projectId:r(),status:Im,queriesByBucket:d({cited:y(r()),aspirational:y(r()),"wasted-surface":y(r())}),suggestedCompetitors:y(Vg),skippedCompetitors:y(E3)});d({sessionId:r(),projectId:r(),promoted:d({queries:y(r()),competitors:y(r())}),skipped:d({queries:y(r()),competitors:y(r())}),competitorDetails:d({promoted:y(Vg),skipped:y(E3)})});Qe([R("cli"),r().regex(/^discovery:.+$/)]);const tL=d({query:r().min(1),probeHits:m().int().positive()}),nL=d({rawCandidates:m().int().nonnegative(),admitted:m().int().nonnegative(),rejected:d({belowFloor:m().int().nonnegative(),length:m().int().nonnegative(),navigational:m().int().nonnegative(),duplicate:m().int().nonnegative(),offAnchor:m().int().nonnegative(),semanticDuplicate:m().int().nonnegative()})});d({sessionId:r(),projectId:r(),provider:r(),status:Im,minProbeHits:m().int().positive(),anchorApplied:E(),semanticNoveltyApplied:E(),candidates:y(tL),stats:nL});const $g=j(["own","direct-competitor","ota-aggregator","editorial-media","other"]);$g.enum;const Om=j(["7d","30d","90d","all"]),Bw=j(["improving","declining","stable"]),aL=j(["mentioned","cited"]);aL.enum;const u0=d({citationRate:we(),cited:m().int(),total:m().int(),mentionRate:we(),mentionedCount:m().int()}),Qr=r().trim().min(1),iL=y(Qr).min(1).superRefine((e,n)=>{for(let i=1;i<e.length;i+=1)e[i-1]>=e[i]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[i]})}),No=Be("status",[d({status:R("known"),model:Qr}),d({status:R("unknown")}),d({status:R("mixed"),models:iL,includesUnknown:E()})]),sL=d({observedAt:r(),bucketStartDate:r(),from:No,to:No,fromPreWindowAnchor:E().optional(),anchorObservedAt:r().optional()}),R3=d({latestObservation:d({observedAt:r(),state:No}),events:y(sL),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:E().optional()}),oL=He(r(),R3),rL=R3.extend({latestServedModelIds:y(Qr).default([])}),lL=He(r(),rL),cL=d({observedAt:r(),configured:No,served:No}),uL=d({scope:j(["non-brand","pooled"]),rate:we().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),dL=d({startDate:r(),endDate:r(),dataStartDate:r(),dataEndDate:r(),sweepCount:m().int().nonnegative(),citationRate:we(),cited:m().int(),total:m().int(),queryCount:m().int(),mentionRate:we(),mentionedCount:m().int(),mentionShare:uL,byProvider:He(r(),u0),modelEvidenceByProvider:He(r(),No).default({}),basketRevision:m().int().nullable().default(null)}),jf=d({first:we(m().min(0).max(1)),latest:we(m().min(0).max(1)),delta:we(m().min(-1).max(1))}),mL=d({citationRate:jf.nullable(),mentionRate:jf.nullable(),mentionShare:jf.nullable()}),pL=d({revision:m().int(),at:r(),added:y(r()),removed:y(r())}),hL=d({date:r(),delta:m().int(),label:r()}),fL=d({at:r(),identity:W2});d({window:Om,mentionShareScope:j(["non-brand","pooled"]),buckets:y(dL),overall:u0,byProvider:He(r(),u0),trend:Bw,mentionTrend:Bw,windowChange:mL.default(()=>({citationRate:null,mentionRate:null,mentionShare:null})),queryChanges:y(hL),basketChanges:y(pL).default([]),executionIdentityChanges:y(fL).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:oL.default({}),servedModelAttribution:lL.default({}),modelServiceMismatch:He(r(),cL).default({}),modelPointerChanges:He(r(),NM).default({})});const Lw=d({category:Lg,label:r(),count:m().int(),percentage:we(),topDomains:y(d({domain:r(),count:m().int()}))}),gL=d({domain:r(),rank:m().int().positive().optional(),count:m().int(),percentage:we(),answerShare:we().optional(),category:Lg,label:r(),surfaceClass:$g}),yL=d({surfaceClass:$g,label:r(),count:m().int(),percentage:we(),domainCount:m().int()}),Uw=d({totalCitedSlots:m().int(),answerTotal:m().int().optional(),answersWithSources:m().int().optional(),domainTotal:m().int(),entries:y(gL),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(yL)}),bL=d({answers:y(r()),distinctDomains:y(r()),answerDomainPairs:y(r()),runs:y(r())}),vL=j(["measurement-plan","query-text"]);d({runId:r().trim().min(1).optional(),queryClass:ug.optional(),includeByQuery:j(["true","false","1","0"]).optional()});d({ranked:Uw,byProvider:He(r(),Uw),providersWithoutSources:y(r()).optional(),answerTotal:m().int().optional(),runCount:m().int().optional(),pooledAcrossRuns:E().optional(),unclassifiedAnswers:m().int().optional(),filters:d({runId:r().nullable(),queryClass:ug,queryClassBasis:Qe([vL,ue()]),includeByQuery:E()}).optional(),runId:r(),runIds:y(r()).optional(),countUnits:bL.optional(),window:Om,limit:m().int().nullable(),overall:y(Lw),byQuery:He(r(),y(Lw)).optional()});const xL=j(["own","direct-competitor","ota-aggregator","editorial-media","other","unknown"]),wL=Be("kind",[d({kind:R("project")}).strict(),d({kind:R("group"),groupKey:r().trim().min(1)}).strict(),d({kind:R("all-markets")}).strict()]),D3=j(["all","branded","non-brand"]),z3=j(["project","all-markets"]);d({window:Om.optional(),groupKey:r().trim().min(1).optional(),scope:z3.optional(),provider:r().trim().min(1).optional(),model:Qr.optional(),groupBy:R("model").optional(),queryClass:D3.optional(),location:r().trim().min(1).optional(),runId:r().trim().min(1).optional(),answers:j(["all","not-mentioned"]).optional()}).strict().superRefine((e,n)=>{e.scope==="all-markets"&&e.groupKey!==void 0&&n.addIssue({code:"custom",path:["groupKey"],message:"groupKey cannot be combined with scope=all-markets"}),e.model!==void 0&&e.provider===void 0&&n.addIssue({code:"custom",path:["provider"],message:"provider is required when filtering by model"})});const Ns=d({domain:r().trim().min(1),label:r().trim().min(1),surfaceClass:xL,pinned:E(),mentionCount:m().int().nonnegative(),shareOfVoice:ot(m().min(0).max(100)).nullable(),citationCount:m().int().nonnegative(),answeredResults:m().int().nonnegative(),firstSeenAt:r().datetime().nullable(),lastSeenAt:r().datetime().nullable(),sampleUrls:y(r().url()).max(3)}).strict(),I3=d({answeredResults:m().int().nonnegative(),sourceResults:m().int().nonnegative(),missingAnswerTextResults:m().int().nonnegative(),mentionCredits:m().int().nonnegative(),incompleteSourceResults:m().int().nonnegative(),excludedProbeResults:m().int().nonnegative(),excludedNonCompletedResults:m().int().nonnegative()}).strict(),kL=d({answers:y(r()),distinctNames:y(r()),runs:y(r())}).strict(),SL=50,jL=d({...Bg,comparison:y(d({domain:r(),mentions:m().int().nonnegative()})).optional(),observedNames:y(d({name:r(),answerCount:m().int().nonnegative()})).optional(),observedNamesTotal:m().int().nonnegative().optional(),provider:r().trim().min(1),model:Qr.nullable(),servedModels:No,snapshotCount:m().int().positive(),project:Ns,pinned:y(Ns),observed:y(Ns),otherSources:y(Ns),evidence:I3,truncated:E()}).strict(),AL=d({basis:R("requested-model"),groups:y(jL).max(SL),totalGroups:m().int().nonnegative(),truncated:E()}).strict();d({...Bg,comparison:y(d({domain:r(),mentions:m().int().nonnegative()})).optional(),observedNames:y(d({name:r(),answerCount:m().int().nonnegative()})).optional(),observedNamesTotal:m().int().nonnegative().optional(),answerSelection:d({answers:R("not-mentioned"),populationSize:m().int().nonnegative(),answerCount:m().int().nonnegative(),unknownMentionAnswers:m().int().nonnegative()}).strict().optional(),window:Om,scope:wL,project:Ns,pinned:y(Ns),observed:y(Ns),otherSources:y(Ns),evidence:I3,modelComparison:AL.optional(),marketState:d({activeRevision:m().int().positive(),draft:d({etag:r().trim().min(1),pendingCompetitorDomains:y(r().trim().min(1))}).strict().nullable()}).strict().nullable(),filters:d({scope:z3,groupKey:r().nullable(),provider:r().nullable(),model:Qr.optional(),groupBy:R("model").optional(),queryClass:D3,location:r().nullable(),runId:r().nullable(),answers:j(["all","not-mentioned"]).optional()}).strict(),truncated:E(),runCount:m().int().nonnegative().optional(),runIds:y(r()).optional(),countUnits:kL.optional()}).strict();const Gg=d({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:we().nullable(),citedRate:we().nullable()}),O3=Gg.extend({provider:r(),firstObserved:r(),lastObserved:r()}),NL=Gg.extend({queryId:r().nullable(),query:r(),firstObserved:r(),lastObserved:r(),providers:y(O3).optional()}),CL=d({since:r().nullable(),until:r().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),_L=j(["provider"]),d0=d({domain:r(),mentions:m().int()}),TL=d({...Bg,measurementScope:j(["project","all-markets"]).optional(),queryClass:j(["branded","non-brand","pooled"]),percent:ot().nullable(),competitorCount:m().int().nonnegative(),projectMentions:m().int(),competitorMentions:m().int(),snapshotsWithAnswerText:m().int(),perCompetitor:y(d0)});d({project:r(),groupBy:_L.optional(),window:CL,totals:Gg,byProvider:y(O3).optional(),queries:y(NL),shareOfVoice:TL.optional()});const EL=j(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),RL=j(["up","down","flat"]),Vw=d({availability:j(["available","no-observations","no-competitive-frame","classification-unavailable"]),point:we().nullable(),ciLow:we().nullable(),ciHigh:we().nullable(),numerator:m().int(),denominator:m().int(),excludedUnknown:m().int().nonnegative().optional()}),DL=j(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate","mention-rate-branded","cited-rate-branded","mention-rate-non-brand","cited-rate-non-brand"]),zL=d({key:DL,label:r(),queryClass:j(["all","branded","non-brand","pooled"]),driftRobust:E(),from:Vw,to:Vw,rateRatio:m().nullable(),direction:Qe([RL,ue()]),verdict:EL}),Xd=d({month:r(),since:r(),until:r(),runCount:m().int(),lowRunCount:E()}),P3=d({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(r()),excludedProviders:y(r())}),q3=d({provider:r(),fromModels:y(r()),toModels:y(r())}),IL=j(["included","model-discontinuous","model-unknown"]),OL=d({provider:r(),status:IL,fromModels:y(r()),toModels:y(r())}),PL=j(["comparable","model-discontinuous","model-unknown","insufficient-data"]),M3=d({status:PL,comparedProviders:y(r()),providers:y(OL)}),qL=d({provider:r(),from:d({checked:m().int(),mentioned:m().int(),cited:m().int()}),to:d({checked:m().int(),mentioned:m().int(),cited:m().int()})}),ML=d({from:d({count:m().int(),of:m().int()}),to:d({count:m().int(),of:m().int()})}),BL=d({scope:j(["project","group","market","property"]).optional(),scopeKey:r().min(1).optional(),marketKey:r().min(1).optional(),provider:r().min(1).optional(),location:r().min(1).optional()}),LL=d({from:Xd,to:Xd,basket:P3,continuity:M3,modelChanges:y(q3)});d({project:r(),selection:BL.optional(),classComparison:LL.optional(),from:Xd,to:Xd,basket:P3,metrics:y(zL),queriesMentioned:ML,byProvider:y(qL),modelChanges:y(q3),continuity:M3,competitors:d({from:y(d0),to:y(d0)})});j(["json","csv"]);const UL=d({runId:r(),runKind:R("answer-visibility"),runStatus:ha,runTrigger:wg,runCreatedAt:r(),runStartedAt:r().nullable(),runFinishedAt:r().nullable(),snapshotId:r(),snapshotCreatedAt:r(),queryId:r().nullable(),query:r().nullable(),provider:r(),model:r().nullable(),location:r().nullable(),citationState:Li,cited:E(),answerMentioned:E().nullable(),mentionState:Qe([_c,ue()]),citedDomains:y(r()),citedUrls:y(r()).nullable(),captureStatus:Qe([ym,ue()]),sourceCount:m().int().nonnegative().nullable(),resolvedCount:m().int().nonnegative().nullable(),captureVersion:m().int().positive().nullable(),competitorOverlap:y(r()),recommendedCompetitors:y(r()),answerText:r().nullable(),groundingSources:y(wm),searchQueries:y(r())}),VL=d({since:r().nullable(),until:r().nullable(),includeProbes:E()});d({schemaVersion:R("canonry.results-export/v1"),generatedAt:r(),project:d({id:r(),name:r(),displayName:r(),canonicalDomain:r(),country:r(),language:r()}),filters:VL,recordCount:m().int().nonnegative(),records:y(UL)});d({runIds:y(r().trim().min(1)).max(100).default([]),researchRunIds:y(r().trim().min(1)).max(100).default([]),confirm:E().default(!1)}).strict().superRefine((e,n)=>{e.runIds.length+e.researchRunIds.length===0&&n.addIssue({code:"custom",message:"Select at least one saved run."}),(new Set(e.runIds).size!==e.runIds.length||new Set(e.researchRunIds).size!==e.researchRunIds.length)&&n.addIssue({code:"custom",message:"Run IDs must be unique."})});d({dryRun:E(),runIds:y(r()),researchRunIds:y(r()),querySnapshots:m().int().nonnegative(),researchQueries:m().int().nonnegative(),insights:m().int().nonnegative(),healthSnapshots:m().int().nonnegative()});const Pm=j(["organic","paid"]);Pm.enum;d({id:r(),projectId:r(),propertyId:r(),clientEmail:r(),connected:E(),createdAt:r(),updatedAt:r()});d({date:r(),landingPage:r(),sessions:m(),organicSessions:m(),users:m()});const Kg=j(["session","first_user","manual_utm"]),$L=d({source:r(),medium:r(),trafficClass:Pm,sessions:m(),users:m().optional(),sourceDimension:Kg,share:we()}),GL=d({source:r(),medium:r(),trafficClass:Pm,sourceDimension:Kg,landingPage:r(),sessions:m(),users:m().optional()}),KL=d({source:r(),medium:r(),sessions:m(),users:m().optional(),channelGroup:r(),share:we()}),rc=d({sessions:m(),sharePct:ot(),sharePctDisplay:r()}),HL=d({organic:rc,social:rc,direct:rc,ai:rc,other:rc}),FL=d({totalSessions:m(),totalOrganicSessions:m(),totalDirectSessions:m(),totalUsers:m().nullable(),topPages:y(d({landingPage:r(),sessions:m(),organicSessions:m(),directSessions:m(),users:m(),organicShare:we().nullable()})),aiReferrals:y($L),aiReferralLandingPages:y(GL),aiSessionsDeduped:m(),aiUsersDeduped:m().optional(),paidAiSessionsDeduped:m(),paidAiUsersDeduped:m().optional(),organicAiSessionsDeduped:m(),organicAiUsersDeduped:m().optional(),aiSessionsBySession:m(),aiUsersBySession:m().optional(),paidAiSessionsBySession:m(),paidAiUsersBySession:m().optional(),organicAiSessionsBySession:m(),organicAiUsersBySession:m().optional(),socialReferrals:y(KL),socialSessions:m(),socialUsers:m().optional(),channelBreakdown:HL,organicSharePct:ot(),aiSharePct:ot(),aiSharePctBySession:ot(),paidAiSharePct:ot(),paidAiSharePctBySession:ot(),organicAiSharePct:ot(),organicAiSharePctBySession:ot(),directSharePct:ot(),socialSharePct:ot(),organicSharePctDisplay:r(),aiSharePctDisplay:r(),aiSharePctBySessionDisplay:r(),paidAiSharePctDisplay:r(),paidAiSharePctBySessionDisplay:r(),organicAiSharePctDisplay:r(),organicAiSharePctBySessionDisplay:r(),directSharePctDisplay:r(),socialSharePctDisplay:r(),otherSessions:m(),otherSharePct:ot(),otherSharePctDisplay:r(),lastSyncedAt:r().nullable()});d({connected:E(),propertyId:r().nullable(),clientEmail:r().nullable(),authMethod:j(["service-account","oauth"]).nullable(),lastSyncedAt:r().nullable(),createdAt:r().nullable().optional(),updatedAt:r().nullable().optional()});const QL=d({propertyId:r(),displayName:r(),accountName:r()});d({properties:y(QL)});d({synced:E(),rowCount:m().int().nonnegative(),aiReferralCount:m().int().nonnegative(),socialReferralCount:m().int().nonnegative(),days:m().int().nonnegative(),requestedDays:m().int().nonnegative(),clamped:E(),syncedAt:r(),measurement:d({acquisition:d({days:m().int().nonnegative(),status:j(["ready","error"]),rowCount:m().int().nonnegative(),error:r().optional()}),leads:d({days:m().int().nonnegative(),status:j(["ready","error","not-configured"]),rowCount:m().int().nonnegative(),attributionScope:j(["landing-page","channel"]).optional(),error:r().optional()})}),syncedComponents:y(r()).optional()});const B3=j(["new","small-base","percent"]);B3.enum;const m0=d({source:r(),sessions7d:m(),sessionsPrev7d:m(),changeSessions:m(),changePct:ot().nullable(),changeBasis:B3});d({socialSessions7d:m(),socialSessionsPrev7d:m(),trend7dPct:ot().nullable(),socialSessions30d:m(),socialSessionsPrev30d:m(),trend30dPct:ot().nullable(),biggestMover:m0.nullable()});const lc=d({sessions7d:m(),sessionsPrev7d:m(),trend7dPct:ot().nullable(),sessions30d:m(),sessionsPrev30d:m(),trend30dPct:ot().nullable()});d({organic:lc,ai:lc,social:lc,direct:lc,total:lc,aiBiggestMover:m0.nullable(),socialBiggestMover:m0.nullable()});FL.extend({windowStart:r().nullable(),windowEnd:r().nullable(),windowDays:m().nullable(),periodStart:r().nullable(),periodEnd:r().nullable()});d({date:r(),source:r(),medium:r(),trafficClass:Pm,landingPage:r(),sessions:m(),users:m(),sourceDimension:Kg});const ZL=d({source:r(),sessions:m(),paidSessions:m(),organicSessions:m()}),YL=d({date:r(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(ZL)});d({days:y(YL),sources:y(r()),totalSessions:m(),totalPaidSessions:m(),totalOrganicSessions:m()});d({date:r(),source:r(),medium:r(),sessions:m(),users:m(),channelGroup:r()});d({date:r(),sessions:m(),organicSessions:m(),users:m(),usersSource:j(["deduplicated","landing-page-sum"])});d({id:r(),projectId:r(),runId:r().nullable(),overallCitedRate:we(),overallMentionRate:we(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:He(r(),d({citedRate:we(),mentionRate:we(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:r(),status:j(["ready","no-data"]),reason:R("no-runs-yet").optional()});const XL=d({view:j(["project","visibility","property","queries","site-health"]),unavailableReason:r().trim().min(1).max(512).optional(),selection:Kd.optional(),page:d({runId:r().trim().min(1).max(256).optional(),nodeKey:r().trim().min(1).max(2048).optional()}).strict().optional()}).strict().superRefine((e,n)=>{e.page&&e.view!=="site-health"&&n.addIssue({code:"custom",message:"Page context requires Site Health."}),e.selection&&!["visibility","property","queries"].includes(e.view)&&n.addIssue({code:"custom",message:"Measurement selection requires a measurement view."})}),JL=d({maxToolCalls:m().int().min(1).max(100).default(30),timeoutMs:m().int().min(1e3).max(6e5).default(18e4)}).strict(),Hg=j(["claude","openai","gemini","zai"]),WL=d({id:Hg,label:r(),defaultModel:r(),configured:E(),keySource:j(["config","env"]).nullable()});d({providers:y(WL).default([]),defaultProvider:Hg.nullable()});const eU=j(["aero","user","compaction"]);eU.enum;const L3=128;d({key:r().min(1).max(L3),value:r().min(1)});d({key:r().min(1).max(L3)});d({prompt:r().trim().min(1),conversationId:r().min(1).nullable().optional(),provider:Hg.optional(),modelId:r().trim().min(1).optional(),scope:j(["all","read-only"]).optional(),profile:j(["default","ads-operator"]).optional(),context:XL.optional(),limits:JL.optional()});const tU=nz({role:r(),content:wn().optional()}),U3=d({id:r(),title:r(),active:E(),modelProvider:r(),modelId:r(),createdAt:r(),updatedAt:r()});U3.extend({messages:y(tU),isStreaming:E()});d({conversations:y(U3),currentConversationId:r().nullable(),nextOffset:m().int().nullable()});d({id:DD()}).strict();d({id:r(),status:R("deleted")});const nU=["status","changes","gaps","insights"],aU=j(nU),iU=d({text:r().optional(),tool:d({name:r(),label:r(),arguments:He(r(),wn()),result:wn(),durationMs:m().int().nonnegative()})}),sU=d({id:aU,steps:y(iU),answer:r()});d({project:r(),seededAt:r(),starters:y(sU)});d({offset:Bi().int().min(0).default(0),limit:Bi().int().min(1).max(100).default(50)}).strict();const Zr=j(["commoncrawl","bing-webmaster"]);Zr.enum;const Fg=j(["queued","downloading","querying","ready","failed"]);Fg.enum;d({id:r(),release:r(),status:Fg,phaseDetail:r().nullable().optional(),vertexPath:r().nullable().optional(),edgesPath:r().nullable().optional(),vertexSha256:r().nullable().optional(),edgesSha256:r().nullable().optional(),vertexBytes:m().int().nullable().optional(),edgesBytes:m().int().nullable().optional(),projectsProcessed:m().int().nullable().optional(),domainsDiscovered:m().int().nullable().optional(),downloadStartedAt:r().nullable().optional(),downloadFinishedAt:r().nullable().optional(),queryStartedAt:r().nullable().optional(),queryFinishedAt:r().nullable().optional(),error:r().nullable().optional(),createdAt:r(),updatedAt:r()});const oU=d({linkingDomain:r(),numHosts:m().int(),source:Zr}),rU=d({projectId:r(),release:r(),targetDomain:r(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:r(),queriedAt:r(),source:Zr,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});d({source:Zr,summary:rU.nullable(),total:m().int(),rows:y(oU)});d({release:r(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:r(),queriedAt:r(),source:Zr});const lU=d({source:Zr,connected:E(),hasData:E(),latestRelease:r().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:r().nullable()});d({projectId:r(),targetDomain:r(),sources:y(lU),anyConnected:E(),anyData:E()});d({duckdbInstalled:E(),duckdbVersion:r().nullable().optional(),duckdbSpec:r(),pluginDir:r()});d({installed:E(),version:r(),path:r(),alreadyPresent:E()});d({release:r(),vertexUrl:r(),edgesUrl:r(),vertexBytes:m().int().nullable(),edgesBytes:m().int().nullable(),lastModified:r().nullable()});d({release:r(),syncStatus:Fg.nullable(),bytes:m().int(),lastUsedAt:r().nullable()});const cU="jev-1.13.0",De=r().trim().min(1).max(256),kt=m().int().nonnegative(),V3=Ki(e=>typeof e=="string"?[e]:e,y(De).min(1).max(100)),Ed=we(m().min(0).max(1)).nullable(),Vi=j(["favorable","mixed","unfavorable","factual","subject-not-mentioned","wrong-subject","ambiguous-subject","ambiguous-judgment","subject-not-applicable","unsupported-language","missing-source-text","input-too-large","invalid-conclusion-evidence","pending","running","waiting-to-retry","failed","canceled"]);Vi.enum;const Qg=j(["disabled","not-measured","processing","partial","complete","failed","canceled","unsupported"]),Zg=d({schemaVersion:Qe([R(1),R(2)]),requestedModel:R(cU),verdictVersion:De,identityVersion:De,evidenceVersion:De,segmentationVersion:De,preprocessingVersion:De,languagePolicy:R("en-only"),comparisonMethodVersion:R("wilson-independent-v1"),confidenceThreshold:m().min(0).max(1).nullable(),questions:d({identity:r(),judgment:r(),stance:r(),conclusion:r(),complaint:r()}).strict()}).strict();function $3(e){if(typeof e!="object"||e===null||!("schemaVersion"in e)||e.schemaVersion!==1)return e;const n=Object.fromEntries(Object.entries(e).filter(([i])=>i!=="themes"));return typeof n.questions=="object"&&n.questions!==null&&(n.questions=Object.fromEntries(Object.entries(n.questions).filter(([i])=>i!=="theme"))),n}Ki($3,Zg);const G3=d({id:De,displayName:r(),aliases:y(r()),qualifiedAliases:y(r()).default([]),urls:y(r()),mentionNotApplicable:E()}).strict(),uU=d({queryId:De,executionNodeKey:De.nullable(),targetId:De,propertyId:De.nullable(),groupId:De.nullable(),marketId:De.nullable(),queryClass:j(["branded","non-brand"]),queryText:r().optional(),location:r().nullable()}).strict(),K3=d({queryId:De,queryText:r(),queryClass:j(["branded","non-brand"]),provider:De,requestedModel:r().nullable(),servedModel:r().nullable(),location:r().nullable(),revision:m().int().nullable(),usageEdges:y(uU),locationContext:mn.nullable().default(null)}).strict(),Ec=d({id:De,text:r().min(1),start:kt,end:kt}).strict(),H3=d({kind:j(["reported","estimated","unknown"]),inputTokens:kt.nullable(),outputTokens:kt.nullable()}).strict(),dU=d({sourceSnapshotId:De,sourceText:r(),sourceTextHash:De,subject:G3,subjectHash:De,context:K3,language:r(),definition:Zg,sentences:y(Ec)}).strict();Ki(e=>typeof e!="object"||e===null||!("definition"in e)?e:{...e,definition:$3(e.definition)},dU);const Af={returnedModel:r().nullable(),usage:H3},mU=Be("kind",[d({kind:R("classified"),...Af,returnedModel:r(),outcome:Vi,conclusion:y(Ec),complaint:y(Ec).nullable(),confidence:m().min(0).max(1).nullable()}).strict(),d({kind:R("abstained"),...Af,outcome:Vi,reason:r()}).strict(),d({kind:R("failed"),...Af,outcome:R("failed"),error:d({code:De,message:r(),retryable:E(),retryAfterMs:m().nonnegative().nullable()}).strict()}).strict()]).superRefine((e,n)=>{e.kind==="classified"&&["favorable","mixed","unfavorable"].includes(e.outcome)&&e.conclusion.length===0&&n.addIssue({code:"custom",path:["conclusion"],message:"Judgments require conclusion evidence"})});Ki(e=>typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).filter(([n])=>n!=="themes")):e,mU);const Yr=d({runId:De.optional(),runIds:V3.optional(),revision:Bi().int().positive().optional(),mode:j(["auto","simple","advanced"]).default("auto"),queryClass:j(["branded","non-brand"]).default("branded"),scope:j(["project","property","group","market"]).default("project"),queryId:De.optional(),scopeKey:De.optional(),marketKey:De.optional(),provider:De.optional(),model:De.optional(),location:r().min(1).optional(),evaluationDefinitionId:De.optional(),executionNodeKey:De.optional()}).strict();function Qc(e,n){e.runId&&e.runIds&&n.addIssue({code:"custom",path:["runIds"],message:"Choose runId or runIds, not both."}),e.runIds&&new Set(e.runIds).size!==e.runIds.length&&n.addIssue({code:"custom",path:["runIds"],message:"Run IDs must be unique."})}Yr.superRefine(Qc);const pU=j(["assessments","locations"]),hU=25,F3=500;Yr.extend({include:Ki(e=>typeof e=="string"?e.split(",").map(n=>n.trim()).filter(Boolean):e,y(pU).max(2)).optional(),queryLimit:Bi().int().min(1).max(F3).default(hU),queryCursor:r().min(1).max(16384).optional()}).superRefine(Qc);const fU=Ki(e=>{const n=typeof e=="string"?[e]:Array.isArray(e)?e:null;return n?[...new Set(n.flatMap(i=>typeof i=="string"?i.split(",").map(o=>o.trim()).filter(Boolean):[i]))]:e},y(Vi).min(1).max(Vi.options.length));Yr.extend({assessmentId:De.optional(),outcome:fU.optional(),cursor:r().min(1).max(16384).optional(),limit:Bi().int().min(1).max(100).default(50)}).superRefine(Qc);Yr.extend({fromRunId:De.describe("Run ID or previous-rated to select the preceding run with stored ratings in this scope."),toRunId:De}).superRefine((e,n)=>{Qc(e,n),e.runIds&&n.addIssue({code:"custom",path:["runIds"],message:"Comparison requires one explicit run per period."})});const Yg=Yr.extend({runId:De.nullable(),revision:m().int().nullable(),evaluationDefinitionId:De.nullable(),mode:j(["simple","advanced"])}),Xg=d(Object.fromEntries(Vi.options.map(e=>[e,kt]))).strict(),gU=d({selected:kt,eligibleAssessments:kt,unadmittedAssessments:kt,judged:kt,distinctSourceAnswers:kt,eligibleAnswers:kt.optional(),ratedAnswers:kt.optional(),ratedAnswerRate:Ed.optional(),subjectNotMentioned:kt.nullable().optional().describe("Distinct admitted answers where every assessed subject in the selected scope is absent. Expected for non-brand queries; not missing classification. Null while disabled."),counts:Xg,expectedProviderSlots:kt,completedProviderSlots:kt}).strict(),yU=d({favorableRate:Ed,mixedRate:Ed,unfavorableRate:Ed,favorableDisplay:r(),mixedDisplay:r(),unfavorableDisplay:r(),interval:d({low:m(),high:m()}).strict().nullable(),method:R("wilson-independent-v1"),limitation:r()}).strict(),Or={state:Qg,reason:r().nullable(),provisional:E(),coverage:gU,score:yU},$w=d({...Or,selection:Yg,runIds:y(De)}).strict(),Gw=d({...Or,queryClass:R("all"),pooled:R(!0).optional(),runIds:y(De)}).strict(),bU=d({configured:E(),branded:$w,nonBrand:$w,headlineQueryClass:R("branded").optional(),pooledOverall:Gw.optional(),overall:Gw.optional().describe("Deprecated compatibility field. Pooled branded and non-brand assessments; never use as the sentiment headline.")}).strict(),vU=d({assessmentId:De.nullable(),sourceSnapshotId:De,runId:De,subjectId:De,subjectLabel:r(),executionNodeKey:De.nullable(),provider:De,requestedModel:r().nullable(),servedModel:r().nullable(),location:r().nullable(),evaluationDefinitionId:De.nullable(),state:Qg,outcome:Qe([Vi,ue()]),reason:r().nullable()}).strict(),xU=d({...Or,queryId:De,executionNodeKey:De.nullable().optional(),queryText:r(),queryClass:j(["branded","non-brand"]),sourceSnapshotIds:y(De),assessments:y(vU).default([]),locations:y(d({...Or,location:r().nullable(),sourceSnapshotIds:y(De)}).strict())}).strict(),wU=d({...Or,dimension:j(["provider","property","market","query"]),key:r(),label:r(),queryClass:j(["branded","non-brand"])}).strict(),p0=d({...Or,configured:E(),selection:Yg,evaluationDefinition:Zg.nullable(),breakdowns:y(wU),queries:y(xU),criticizedProperties:d({total:kt,keys:y(r())}).strict().optional(),queryPage:d({total:kt,limit:kt,nextCursor:r().nullable()}).strict().optional()}).strict();d({enabled:E().optional()}).strict();const kU=d({installEnabled:E(),enabled:E(),ready:E(),readinessReasons:y(r()),model:r(),enablementEpoch:kt,completionBoundary:kt,evaluationDefinitionId:De.nullable(),actions:d({configure:E(),backfill:E()}).strict(),experimental:R(!0),disclosure:r()}).strict(),Q3=Yr.extend({runIds:V3.optional(),from:r().datetime().optional(),to:r().datetime().optional()}).superRefine(Qc);d({previewToken:r().min(1).max(65536),idempotencyKey:r().trim().min(1).max(128)}).strict();const SU=d({previewToken:r().nullable(),expiresAt:r().nullable(),selection:Q3,evaluationDefinitionId:De.nullable(),eligibleAssessments:kt,alreadyClassified:kt,skipped:y(d({runId:De,reason:r(),count:kt}).strict()),estimatedInputTokens:kt,estimatedCostUsd:m().nonnegative().nullable(),estimateMethod:r()}).strict(),jU=j(["pending","running","waiting-to-retry","complete","partial","failed","canceled"]),AU=d({id:De,workItemId:De,dispatchedAt:r(),completedAt:r().nullable(),returnedModel:r().nullable(),usage:H3,errorCode:r().nullable()}).strict(),Z3=d({id:De,projectId:De,origin:j(["automatic","backfill"]),state:jU,enablementEpoch:kt,evaluationDefinitionId:De,selection:Q3,createdAt:r(),updatedAt:r(),counts:Xg,selected:kt,cancellationReason:r().nullable(),attempts:y(AU),attemptCount:kt.optional(),nextAttemptCursor:r().nullable().optional()}).strict(),NU=Z3.omit({attempts:!0,attemptCount:!0,nextAttemptCursor:!0}).extend({attemptCount:kt}).strict(),CU=d({jobs:y(NU)}).strict(),_U=50;d({attemptLimit:Bi().int().min(1).max(200).default(_U),attemptCursor:r().min(1).max(4096).optional()}).strict();const TU=d({assessmentId:De,runId:De,sourceSnapshotId:De,sourceText:r(),sourceTextHash:De,subject:G3,subjectHash:De,context:K3,evaluationDefinitionId:De,outcome:Vi,conclusion:y(Ec),complaint:y(Ec).nullable(),returnedModel:r().nullable(),reason:r().nullable()}).strict(),EU=d({state:Qg,selection:Yg.extend({assessmentId:De.optional(),outcome:y(Vi).optional()}),items:y(TU),nextCursor:r().nullable()}).strict(),RU=d({from:p0,to:p0,verdict:j(["improved","declined","no-clear-change"]).nullable(),favorableRateDelta:m().nullable(),refusalReasons:y(r()),commonUnits:kt,excludedFrom:kt,excludedTo:kt,changedScope:E(),method:R("wilson-independent-v1"),limitation:r()}).strict(),Jg=j(["positive","caution","negative","neutral"]),As=d({label:r(),value:r(),delta:r(),tone:Jg,description:r(),tooltip:r().optional(),trend:y(ot()),progress:ot().optional(),providerCoverage:r().optional()}),Kw=d({projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative(),combinedMentionSnapshots:m().int().nonnegative(),perCompetitor:y(d({domain:r(),mentionSnapshots:m().int().nonnegative(),shareOfCompetitiveTotal:ot()})),ranking:y(d({kind:j(["project","competitor"]),domain:r().nullable(),mentionSnapshots:m().int().nonnegative(),share:we(m().min(0).max(1))})),snapshotsWithAnswerText:m().int().nonnegative(),snapshotsTotal:m().int().nonnegative(),score:ot(m().min(0).max(100)).nullable()}),DU=As.extend({breakdown:Kw,scope:j(["non-brand","pooled"]),branded:Kw}),Nf=d({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:Jg,hasPreviousRun:E(),gainedQueries:y(r()).optional(),lostQueries:y(r()).optional()}),zU=d({hasPreviousRun:E(),comparable:E(),querySetChanged:E(),previousRunAt:r().nullable(),currentQueryCount:m().int().nonnegative(),previousQueryCount:m().int().nonnegative(),comparableQueryCount:m().int().nonnegative(),addedQueryCount:m().int().nonnegative(),removedQueryCount:m().int().nonnegative(),addedQueries:y(r()),removedQueries:y(r())}),IU=d({id:r(),projectId:r(),runId:r().nullable(),type:j(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:j(["critical","high","medium","low"]),title:r(),query:r(),provider:r(),recommendation:d({action:r(),target:r().optional(),reason:r()}).optional(),cause:d({cause:r(),competitorDomain:r().optional(),details:r().optional()}).optional(),dismissed:E(),createdAt:r()}),OU=d({id:r(),projectId:r(),runId:r().nullable(),overallCitedRate:we(),overallMentionRate:we(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:He(r(),d({citedRate:we(),mentionRate:we(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:r(),status:j(["ready","no-data"]),reason:R("no-runs-yet").optional()});d({sentiment:bU.optional(),project:rP,latestRun:wO,health:OU.nullable(),topInsights:y(IU),queryClassScope:d({queryClass:R("all"),figures:y(r()),note:r()}).optional(),queryCounts:d({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),notCitedQueries:m().int().nonnegative(),citedRate:we(),mentionedQueries:m().int().nonnegative(),notMentionedQueries:m().int().nonnegative(),mentionRate:we()}),providers:y(d({provider:r(),citedRate:we(),cited:m().int().nonnegative(),total:m().int().nonnegative()})),transitions:d({since:r().nullable(),gained:m().int().nonnegative(),lost:m().int().nonnegative(),emerging:m().int().nonnegative()}),scores:d({mention:As,visibility:As,mentionShare:DU,gapQueries:As,mentionGaps:As,indexCoverage:As,competitorPressure:As,runStatus:As}),movementSummary:Nf,citationMovement:Nf,mentionMovement:Nf,movementComparison:zU,competitors:y(d({id:r(),domain:r(),aliases:y(r()).optional(),citationCount:m().int().nonnegative(),totalQueries:m().int().nonnegative(),pressureLabel:j(["None","Low","Moderate","High"]),citedQueries:y(r())})),providerScores:y(d({provider:r(),model:r().nullable(),score:ot(),cited:m().int().nonnegative(),total:m().int().nonnegative(),trend:y(ot()).optional()})),attentionItems:y(d({id:r(),tone:Jg,title:r(),detail:r(),actionLabel:r(),href:r()})),runHistory:y(d({runId:r(),createdAt:r(),citedCount:m().int().nonnegative(),totalCount:m().int().nonnegative(),citationRate:ot(),mentionedCount:m().int().nonnegative(),mentionRate:ot(),status:r()})),suggestedQueries:d({rows:y(d({query:r(),impressions:m(),clicks:m(),avgPosition:m(),reason:r()})),totalCandidates:m().int().nonnegative(),skippedAlreadyTracked:m().int().nonnegative()}),dateRangeLabel:r(),contextLabel:r()});j(["snapshot","insight"]);const PU=d({kind:R("snapshot"),id:r(),runId:r(),query:r(),provider:r(),model:r().nullable(),citationState:Li,matchedField:j(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:r(),createdAt:r()}),qU=d({kind:R("insight"),id:r(),runId:r().nullable(),type:j(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:j(["critical","high","medium","low"]),title:r(),query:r(),provider:r(),matchedField:j(["title","query","recommendation","cause"]),snippet:r(),dismissed:E(),createdAt:r()}),MU=Be("kind",[PU,qU]);d({query:r(),totalHits:m().int().nonnegative(),truncated:E(),hits:y(MU)});const Y3=j(["create","expand","refresh","add-schema"]);Y3.enum;const X3=j(["gsc","competitor-evidence","both"]);X3.enum;const J3=j(["high","medium","low"]);J3.enum;const BU=j(["blog-post","comparison","listicle","how-to","guide","glossary"]);BU.enum;const W3=j(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);W3.enum;const Wg=j(["ownable","ceded"]);Wg.enum;const LU=d({url:r(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),UU=d({domain:r(),url:r(),title:r(),citationCount:m().int().nonnegative()}),VU=d({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),$U=d({actionId:r(),state:W3,lastUpdated:r()}),GU=d({targetRef:r(),query:r(),action:Y3,ourBestPage:LU.nullable(),winningCompetitor:UU.nullable(),score:m(),scoreBreakdown:VU,drivers:y(r()),demandSource:X3,actionConfidence:J3,existingAction:$U.nullable(),winnabilityClass:Wg,winnability:we(m().min(0).max(1)).nullable()});d({targets:y(GU),contextMetrics:d({totalAiReferralSessions:m().int().nonnegative(),latestRunId:r(),runTimestamp:r()})});const KU=d({targetRef:r(),addressedUrl:r().nullable(),note:r().nullable(),dismissedAt:r()});d({dismissals:y(KU)});d({targetRef:r().min(1),addressedUrl:r().url().optional(),note:r().max(500).optional()});d({targetRef:r(),promptVersion:r(),provider:r(),model:r(),responseText:r(),costMillicents:m().int().nonnegative(),generatedAt:r()});d({provider:r().optional(),model:r().optional(),forceRefresh:E().optional()});const HU=d({targetQuery:r().trim().min(1),winnabilityClass:Wg,angle:r().trim().min(1),whyWinnable:r().trim().min(1),schemaHookup:r().trim().min(1),controllableSurfaceRationale:r().trim().min(1)});d({targetRef:r(),promptVersion:r(),provider:r(),model:r(),brief:HU,costMillicents:m().int().nonnegative(),generatedAt:r()});const FU=d({domain:r(),competitorType:Fc,hits:m().int().nonnegative(),updatedAt:r()});d({classifications:y(FU)});const QU=d({uri:r(),title:r(),domain:r(),isOurDomain:E(),isCompetitor:E(),citationCount:m().int().nonnegative(),providers:y(jt)}),ZU=d({query:r(),groundingSources:y(QU)});d({sources:y(ZU),latestRunId:r()});const YU=d({query:r(),competitorDomains:y(r()),competitorCount:m().int().nonnegative(),missRate:we(m().min(0).max(1)),lastSeenInRunId:r()});d({gaps:y(YU),latestRunId:r()});const eA=j(["ok","warn","fail","skipped"]);eA.enum;const e1=j(["global","project"]);e1.enum;const tA=j(["auth","config","providers","integrations","database","schedules","agent"]);tA.enum;const nA=j(["health","silent"]);nA.enum;const XU=r().regex(/^[1-9]\d{3}-(0[1-9]|1[0-2])$/,"Expected YYYY-MM"),JU=d({id:r(),category:tA,scope:e1,title:r(),status:eA,notificationPolicy:nA.optional().describe("Health checks page by default. Silent report advisories remain visible but never affect health alert state."),code:r().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:r(),remediation:r().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:He(r(),wn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:m().int().nonnegative().describe("How long the check took to execute.")});d({scope:e1,project:r().nullable().describe('Project name when scope is "project", null otherwise.'),reportMonths:y(XU).optional().describe("Calendar months evaluated by project report readiness checks."),generatedAt:r().describe("ISO-8601 timestamp when this doctor run started."),durationMs:m().int().nonnegative(),summary:d({total:m().int().nonnegative(),ok:m().int().nonnegative(),warn:m().int().nonnegative(),fail:m().int().nonnegative(),skipped:m().int().nonnegative()}),checks:y(JU)});function WU(e){return e.trim().toLowerCase()}const eV=d({provider:r(),citationState:Li,cited:E(),mentioned:E(),runId:r(),runCreatedAt:r()}),tV=d({queryId:r(),query:r(),providers:y(eV),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),nV=d({queryId:r(),query:r(),provider:r(),citingCompetitors:y(r()),runId:r(),runCreatedAt:r()}),aV=d({providersConfigured:m().int().nonnegative(),providersCiting:m().int().nonnegative(),providersMentioning:m().int().nonnegative(),totalQueries:m().int().nonnegative(),queriesCitedAndMentioned:m().int().nonnegative(),queriesCitedOnly:m().int().nonnegative(),queriesMentionedOnly:m().int().nonnegative(),queriesInvisible:m().int().nonnegative(),latestRunId:r().nullable(),latestRunAt:r().nullable()});d({summary:aV,byQuery:y(tV),competitorGaps:y(nV),status:j(["ready","no-data"]),reason:j(["no-runs-yet","no-queries"]).optional()});const iV=Qe([R(60),R(90)]),sV=j(["earliest","middle","prior","latest"]),jr=d({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),aA=d({name:sV,startDate:r(),endDate:r()}),oV=aA.extend({totals:jr}),rV=aA.extend({organicSessions:m().int().nonnegative()}),Cf=d({startDate:r(),endDate:r(),observedDays:m().int().nonnegative()}),bd=d({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),Hw=d({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});d({contractVersion:R("organic-evidence/v1"),periodDays:iV,asOfDate:r().nullable(),coverage:d({gsc:E(),ga4:E(),server:E(),visibility:E()}),sourceCoverage:d({gsc:Cf.nullable(),ga4:Cf.nullable(),server:Cf.nullable(),visibility:d({completedAt:r(),ageDays:m().nonnegative()}).nullable()}),gsc:d({propertyTotals:jr,namedBrand:jr,namedNonBrand:jr,suppressedOrUnreportedResidual:jr,cohorts:y(oV)}).nullable(),ga4:d({organicSessions:m().int().nonnegative(),cohorts:y(rV)}).nullable(),gaAiReferrals:d({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:d({crawlerHits:bd,userFetchHits:bd,referralSessions:Hw}).nullable(),visibility:d({runId:r(),completedAt:r(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:Uz,pages:y(d({path:r(),gsc:jr,ga4OrganicSessions:m().int().nonnegative(),server:d({crawlerHits:bd,userFetchHits:bd,referralSessions:Hw})})),findings:y(d({tone:j(["positive","caution","neutral"]),title:r(),detail:r()})),limitations:y(d({code:r(),detail:r()}))});const lV=j(["claude","codex"]);lV.enum;const cV=j(["claude","codex","all"]);cV.enum;const iA=d({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),uV=j(["content","sitemap","robots","asset","other"]),t1=j(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);t1.enum;const dV=j(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);dV.enum;const mV=j(["raw-request","aggregate-bucket"]),pV=mV.enum,hV=j(["observed","provider-aggregated","inferred"]),fV=hV.enum,gV=d({type:r().nullable(),labels:He(r(),r())}),yV=d({sourceType:t1,evidenceKind:R(pV["raw-request"]),confidence:R(fV.observed),eventId:r().min(1),observedAt:r().min(1),method:r().nullable(),requestUrl:r().nullable(),host:r().nullable(),path:r().min(1),queryString:r().nullable(),status:m().int().nullable(),userAgent:r().nullable(),remoteIp:r().nullable(),referer:r().nullable(),latencyMs:m().nullable(),requestSizeBytes:m().int().nullable(),responseSizeBytes:m().int().nullable(),providerResource:gV,providerLabels:He(r(),r())});d({events:y(yV),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:r().optional(),filter:r()});const sA=j(["connected","paused","error","archived"]),ste=sA.enum,oA=j(["oauth","service-account"]);oA.enum;const bV=j(["verified","claimed_unverified","unknown_ai_like"]),ote=bV.enum,vV=d({id:r().min(1),source:r().min(1),version:r().min(1)}),rA=d({manifestId:r().min(1),manifest:vV.nullable(),hits:m().int().nonnegative()});d({gcpProjectId:r().min(1),serviceName:r().nullable().optional(),location:r().nullable().optional(),authMode:oA});d({baseUrl:r().url(),username:r().min(1)});const n1=j(["production","preview"]);n1.enum;d({projectId:r().min(1),teamId:r().min(1),environment:n1});const lA=d({id:r(),projectId:r(),sourceType:t1,displayName:r(),status:sA,lastSyncedAt:r().nullable(),lastCursor:r().nullable(),lastError:r().nullable(),skippedThroughAt:r().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:r().nullable(),archivedAt:r().nullable(),config:He(r(),wn()),createdAt:r(),updatedAt:r()});d({gcpProjectId:r().min(1),serviceName:r().min(1).optional(),location:r().min(1).optional(),displayName:r().min(1).optional(),keyJson:r().optional()});d({baseUrl:r().url(),username:r().min(1),applicationPassword:r().min(1),displayName:r().min(1).optional()});d({projectId:r().min(1),teamId:r().min(1),token:r().min(1),environment:n1.optional(),displayName:r().min(1).optional()});const xV=j(["direct-push","queue-pull"]),Xr=xV.enum,a1=r().regex(/^(?=.{1,63}$)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,"Cloudflare Queue name must be 1-63 characters, use only letters, numbers, or dashes, and start and end with a letter or number"),cA=d({schemaVersion:R(1),workerVersion:r().min(1),expectedBotListVersion:r().min(1),zoneId:r().nullable()}),wV=cA.extend({deliveryMode:R(Xr["direct-push"]),accountId:r().nullable()}),kV=cA.extend({deliveryMode:R(Xr["queue-pull"]),accountId:r().min(1),queueId:r().min(1),queueName:a1,retentionSeconds:m().int().min(60).max(1209600)});function uA(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const n=e;return"deliveryMode"in n?e:{...n,deliveryMode:"direct-push"}}Ki(uA,Be("deliveryMode",[wV,kV]));const dA=d({displayName:r().min(1).optional(),zoneId:r().min(1).optional()}),SV=dA.extend({deliveryMode:R(Xr["direct-push"]),accountId:r().min(1).optional()}),jV=dA.extend({deliveryMode:R(Xr["queue-pull"]),accountId:r().min(1),queueId:r().min(1),queueName:a1,retentionSeconds:m().int().min(60).max(1209600),apiToken:r().min(1)});Ki(uA,Be("deliveryMode",[SV,jV]));const mA=d({sourceId:r().min(1),workerScript:r().min(1),wranglerToml:r().min(1),workerVersion:r().min(1),instructions:r().min(1)}),AV=mA.extend({deliveryMode:R(Xr["direct-push"]),activationRequired:E().default(!1)}),NV=mA.extend({deliveryMode:R(Xr["queue-pull"]),activationRequired:E().default(!1),accountId:r().min(1),queueId:r().min(1),queueName:a1,retentionSeconds:m().int().min(60).max(1209600)});Be("deliveryMode",[AV,NV]);const CV=d({eventId:r().min(1),observedAt:r().datetime(),method:r().nullable(),host:r().nullable(),path:r().min(1),queryString:r().nullable(),status:m().int().nullable(),userAgent:r().nullable(),remoteIp:r().nullable(),referer:r().nullable(),cf:d({verifiedBot:E().nullable(),botScore:m().int().nullable(),country:r().nullable(),asn:m().int().nullable(),asOrganization:r().nullable()}).nullable()});d({schemaVersion:R(1),workerVersion:r().min(1),events:y(CV).min(1).max(100)});d({acceptedEvents:m().int(),droppedEvents:m().int(),workerVersionAck:r(),crawlerBucketRows:m().int(),aiUserFetchBucketRows:m().int(),aiReferralBucketRows:m().int(),sampleRows:m().int()});d({sourceId:r(),runId:r(),syncedAt:r(),pulledEvents:m().int().nonnegative(),selfTrafficExcluded:m().int().nonnegative(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),unknownHits:m().int().nonnegative(),crawlerBucketRows:m().int().nonnegative(),aiUserFetchBucketRows:m().int().nonnegative(),aiReferralBucketRows:m().int().nonnegative(),sampleRows:m().int().nonnegative(),remainingBacklogCount:m().int().nonnegative().optional(),windowStart:r(),windowEnd:r()});d({days:m().int().positive().optional()});d({advanceToNow:R(!0)});d({sourceId:r(),runId:r(),status:ha,windowStart:r(),windowEnd:r(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const _V=d({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:iA,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});d({sources:y(lA)});const TV=lA.extend({totals24h:_V,latestRun:d({runId:r(),status:ha,startedAt:r().nullable(),finishedAt:r().nullable(),error:r().nullable()}).nullable()});d({sources:y(TV)});const EV=j(["crawler","ai-user-fetch","ai-referral"]),i1=EV.enum,pA=j(["hour","day"]);pA.enum;const RV=d({bucket:r(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),measured:E()}),DV=d({kind:R(i1.crawler),sourceId:r(),tsHour:r(),botId:r(),operator:r(),verificationStatus:r(),verificationManifests:y(rA).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:r(),pathClass:uV,status:m().int(),hits:m().int().nonnegative()}),zV=d({kind:R(i1["ai-user-fetch"]),sourceId:r(),tsHour:r(),botId:r(),operator:r(),verificationStatus:r(),verificationManifests:y(rA).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:r(),status:m().int(),hits:m().int().nonnegative()}),IV=d({kind:R(i1["ai-referral"]),sourceId:r(),tsHour:r(),product:r(),operator:r(),sourceDomain:r(),evidenceType:r(),landingPathNormalized:r(),status:m().int(),hits:m().int().nonnegative(),paidHits:m().int().nonnegative(),organicHits:m().int().nonnegative(),unknownHits:m().int().nonnegative()}),OV=Be("kind",[DV,zV,IV]);d({windowStart:r(),windowEnd:r(),series:d({granularity:pA,points:y(RV),coverageStart:r().nullable(),trends:d({crawlerContentHits:xo.nullable(),aiUserFetchHits:xo.nullable(),aiReferralLandedHits:xo.nullable()})}),totals:d({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:iA,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),aiReferralPaidHits:m().int().nonnegative(),aiReferralOrganicHits:m().int().nonnegative(),aiReferralUnknownHits:m().int().nonnegative()}),eventRows:d({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:E()}),events:y(OV)});const s1=j(["admin","viewer"]),PV=/^[a-z\d][\w.-]{0,63}$/i,qV=r().regex(PV,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Fw=12,MV=r().min(Fw,`A password must be at least ${Fw} characters.`),hA=d({id:r(),name:r(),role:s1,createdAt:r(),lastLoginAt:r().nullable()});d({users:y(hA)});d({name:qV,password:MV,role:s1});d({name:r().min(1),password:r().min(1)});d({authRequired:E(),user:hA.pick({name:!0,role:!0}).nullable()});const fA=j(["queued","running","completed","partial","failed"]),rte=fA.enum,gA=j(["queued","running","completed","failed"]),lte=gA.enum,BV=20,LV=20,h0=50,yA=d({kind:j(["market","property"]),key:he,expectedPlanRevision:m().int().positive().optional()}).strict(),UV=d({kind:j(["market","property"]),key:he,label:r().trim().min(1),planRevision:m().int().positive()}).strict(),bA=r().min(1).max(4e3).refine(e=>e.trim().length>0,"Research queries cannot be blank.");function cte(e){const n=new Set;return e.filter(i=>{const o=WU(i);return!o||n.has(o)?!1:(n.add(o),!0)})}function VV(e,n){const i=e?e.kind==="market"?{market:e.label,submarket:e.label}:{property:e.label,propertyBrand:e.label}:{};return n?{...i,location:n.label}:i}function ute(e,n,i){const o=new Set(e.variables),u=[...e.pattern.matchAll(/\{([^{}]+)\}/g)].map(x=>x[1]),h=[...new Set(u.filter(x=>!o.has(x)))];if(h.length)throw Px("The selected research template contains undeclared placeholders: "+h.join(", "));const f=VV(n,i),b=e.variables.filter(x=>f[x]===void 0);if(b.length)throw Px("The selected research template requires unavailable bindings: "+b.join(", "));const v=Object.fromEntries(e.variables.map(x=>[x,f[x]]));return{bindings:v,output:BP(e.pattern,v)}}const vA=d({templateId:r().trim().min(1).max(256),templateVersion:r().trim().min(1).max(256),bindingLocation:mn.nullable().optional()}).strict();d({queries:y(bA).min(1).max(50),provider:r().trim().min(1).optional(),model:r().trim().min(1).max(200).optional(),location:mn.nullable().optional(),scope:yA.optional(),template:vA.optional(),idempotencyKey:r().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:ye.custom,path:["provider"],message:"provider is required when model is supplied"})});const $V=yA.extend({expectedPlanRevision:m().int().positive()}).strict(),GV=d({queries:y(bA).min(1).max(h0),provider:r().trim().min(1),model:r().trim().min(1).max(200),location:mn.nullable(),scope:$V.optional(),template:vA.optional()}).strict();d({idempotencyKey:r().trim().min(1).max(128),runs:y(GV).min(1).max(LV)}).strict().superRefine((e,n)=>{e.runs.reduce((o,u)=>o+u.queries.length,0)>h0&&n.addIssue({code:ye.custom,path:["runs"],message:`A research batch may contain at most ${h0} concrete queries across all destinations`})});const KV=d({kind:j(["api-key","user"]),id:r(),name:r(),role:s1.nullable(),limited:E().optional()}),xA=d({id:r(),projectId:r(),status:fA,provider:r(),requestedModel:r().nullable(),resolvedModel:r(),location:mn.nullable(),scope:UV.nullable().optional(),template:Ij.nullable().optional(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:r().nullable(),initiatedBy:KV.nullable(),startedAt:r().nullable(),finishedAt:r().nullable(),createdAt:r()}),HV=d({id:r(),position:m().int(),query:r(),queryClass:Vr.nullable().optional(),status:gA,requestedModel:r().nullable(),resolvedModel:r(),servedModel:r().nullable(),answerText:r().nullable(),groundingSources:y(wm),citedDomains:y(r()),searchQueries:y(r()),namedCompetitors:y(r()).default([]),citedCompetitorDomains:y(r()).default([]),answerMentioned:E().nullable(),citationState:Li.nullable(),error:r().nullable(),startedAt:r().nullable(),finishedAt:r().nullable(),createdAt:r()}),FV=xA.extend({queries:y(HV)});d({runs:y(FV)});const QV=d({name:r(),displayName:r(),modelConfigurable:E(),defaultModel:r(),knownModels:y(d({id:r(),displayName:r()}))});d({runs:y(xA),nextCursor:r().nullable().optional(),providers:y(QV).optional(),access:d({canRun:E(),dailyRunLimit:m().int().positive().nullable()}).optional()});d({apiKey:r().min(1)});d({id:r(),name:r(),status:r(),currencyCode:r().nullable(),timezone:r().nullable(),url:r().nullable(),reviewStatus:r().nullable(),integrityReviewStatus:r().nullable(),integrityDecision:r().nullable()});d({q:r().trim().min(1).max(200),limit:m().int().min(1).max(100).default(20)});const ZV=d({id:r(),type:r(),canonicalName:r(),countryCode:r(),name:r(),regionCode:r().nullable()});d({count:m().int().nonnegative(),query:r(),results:y(ZV)});const YV=d({id:r(),clientType:r().optional(),name:r().optional(),pixelId:r().optional()});d({pixels:y(YV)});const XV=d({id:r(),name:r().optional()}),JV=d({id:r(),name:r().optional(),eventType:r().optional(),customEventName:r().nullable().optional(),attributionWindowDays:m().int().positive().optional(),adAccountId:r().optional(),sourceIds:y(r()).optional(),sources:y(XV).optional(),archived:E().optional(),version:m().int().nonnegative().optional()});d({eventSettings:y(JV)});d({connected:E(),adAccountId:r().nullable().optional(),displayName:r().nullable().optional(),currencyCode:r().nullable().optional(),timezone:r().nullable().optional(),status:r().nullable().optional(),reviewStatus:r().nullable().optional(),integrityReviewStatus:r().nullable().optional(),integrityDecision:r().nullable().optional(),lastSyncedAt:r().nullable().optional(),conversionTrackingConfigured:E().optional()});d({disconnected:E()});d({runId:r(),status:r()});const WV=["campaign_id","ad_group_id","ad_id","ad_account_id","oppref"],e$=/^[\w.-]+=[^&#\s]*$/,t$=/\{([^}]*)\}/g,Ro=r().min(1).max(1e3).superRefine((e,n)=>{const i=u=>n.addIssue({code:"custom",message:u});if(e.startsWith("?")||e.startsWith("&")){i("Tracking template must not start with ? or &");return}const o=new Set;for(const u of e.split("&")){if(!e$.test(u)){i(`Tracking template pair '${u}' must be key=value without whitespace, # or &`);return}const h=u.slice(0,u.indexOf("="));if(o.has(h)){i(`Tracking template repeats the parameter '${h}'`);return}o.add(h)}for(const u of e.matchAll(t$)){const h=u[1];if(!WV.includes(h)){i(`Tracking template macro '{${h}}' is not supported`);return}}}),n$=d({type:r().nullable().optional(),title:r().nullable().optional(),body:r().nullable().optional(),targetUrl:r().nullable().optional(),fileId:r().nullable().optional()}),Zc=j(["impressions","clicks"]);Zc.enum;const Yc=j(["impression","click"]);Yc.enum;const a$=d({id:r(),adGroupId:r(),name:r(),status:r(),reviewStatus:r().nullable().optional(),creative:n$.nullable().optional(),landingPageQueryStringTemplate:r().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:r().optional()}),i$=d({id:r(),campaignId:r(),name:r(),description:r().nullable().optional(),status:r(),billingEventType:Qe([Yc,ue()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(r()).default([]),ads:y(a$).default([]),landingPageQueryStringTemplate:r().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:r().optional()}),s$=d({id:r(),name:r(),description:r().nullable().optional(),status:r(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Qe([Zc,ue()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(r()).default([]),locationIds:y(r()).optional(),adGroups:y(i$).default([]),landingPageQueryStringTemplate:r().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:r().optional()});d({campaigns:y(s$)});const wA=j(["campaign","ad_group"]);wA.enum;const o$=d({level:wA,entityId:r(),date:r(),impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:we().nullable(),cpcMicros:m().int().nullable(),inProgress:E()});d({rows:y(o$),currencyCode:r().nullable().optional()});const kA=d({from:r().nullable(),to:r().nullable(),inProgressDate:r().nullable()}),SA=d({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:we().nullable(),cpcMicros:m().int().nullable()});d({connected:E(),displayName:r().nullable().optional(),currencyCode:r().nullable().optional(),lastSyncedAt:r().nullable().optional(),campaignCount:m().int(),adGroupCount:m().int(),adCount:m().int(),window:kA,totals:SA});const jA=j(["unavailable","partial","complete"]);jA.enum;const AA=j(["no_ads_connection","connection_not_synced","no_ads_sync","entity_rows_missing_sync_run_id","entity_rows_span_multiple_sync_runs","source_sync_missing","source_sync_not_ads_sync","source_sync_not_completed"]);AA.enum;const NA=j(["unavailable","reported"]);NA.enum;const r$={storedSnapshot:"stored_ads_snapshot"},CA=j(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);CA.enum;const l$=d({id:r(),name:r(),status:r(),reviewStatus:r().nullable()}),c$=d({id:r(),name:r(),status:r(),billingEventType:Qe([Yc,ue()]),maxBidMicros:m().int().nullable(),contextHints:y(r()),ads:y(l$)}),u$=d({id:r(),name:r(),status:r(),biddingType:Qe([Zc,ue()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(r()),adGroups:y(c$)});d({snapshot:d({status:jA,issue:Qe([AA,ue()]),lastSyncedAt:r().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:d({runId:r(),status:ha}).nullable()}),historicalCampaignRollups:d({status:NA,window:kA,totals:SA.nullable()}),storedConfiguration:d({basis:R(r$.storedSnapshot),connection:d({status:r().nullable(),reviewStatus:r().nullable(),integrityReviewStatus:r().nullable(),integrityDecision:r().nullable(),conversionTrackingConfigured:E()}).nullable(),campaigns:y(u$)}),assessment:d({state:CA})});const ri=r().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),$t=r().min(1).max(200),Do=r().min(3).max(1e3).refine(e=>e.trim().length>0),Pr=m().int().min(946684800).max(4102444800),qr=m().int().positive().max(Number.MAX_SAFE_INTEGER),o1=r().regex(/^[a-f0-9]{64}$/),_A=y($t).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),TA=r().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),EA=j(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_archive","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_group_archive","ad_create","ad_update","ad_pause","ad_archive"]);EA.enum;const RA=j(["pending","reconciling","succeeded","failed","unknown"]),Tr=RA.enum,DA=j(["known_entity","create_fingerprint","manual_only"]);DA.enum;const zA=j([Tr.pending,Tr.unknown,Tr.reconciling]);zA.enum;const IA=j(["active","paused","archived"]);IA.enum;const OA=j(["file","campaign","ad_group","ad"]);OA.enum;const PA=j(["campaign","ad_group","ad"]);PA.enum;const r1=d({id:$t,expectedUpdatedAt:m().int().nonnegative()}).strict(),d$=r1,Jd=1e3;function m$(e){return 1+e.campaign.adGroups.reduce((n,i)=>n+1+i.ads.length,0)}const p$=r1.extend({ads:y(d$).min(1).max(Jd-1)}).strict(),h$=r1.extend({adGroups:y(p$).min(1).max(Jd-1)}).strict();function f$(e,n){return e<n?-1:e>n?1:0}function Qw(e,n,i){for(let o=1;o<e.length;o+=1)if(f$(e[o-1].id,e[o].id)>=0){i.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const qA=d({campaign:h$}).strict().superRefine((e,n)=>{m$(e)>Jd&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${Jd} entities`}),Qw(e.campaign.adGroups,["campaign","adGroups"],n);const o=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const h=e.campaign.adGroups[u];Qw(h.ads,["campaign","adGroups",u,"ads"],n);for(let f=0;f<h.ads.length;f+=1){const b=h.ads[f];o.has(b.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",f,"id"],message:"An ad may appear only once in an activation manifest"}),o.add(b.id)}}}),MA=o1,g$=j(["approved","executing","consumed","revoked","expired","unknown"]),Mi=g$.enum,y$=j(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Ps=y$.enum,b$=d({name:Do.optional(),description:r().max(4e3).nullable().optional(),status:IA.optional(),startTime:Pr.nullable().optional(),endTime:Pr.nullable().optional(),lifetimeSpendLimitMicros:qr.min(1e6).optional(),locationIds:y($t).max(100).optional(),biddingType:Zc.optional(),conversionEventSettingIds:_A.optional(),campaignId:$t.optional(),contextHints:y(r().min(1).max(1e3)).max(100).optional(),maxBidMicros:qr.max(1e8).optional(),billingEventType:Yc.optional(),adGroupId:$t.optional(),creativeFingerprint:o1.optional(),landingPageQueryStringTemplate:Ro.nullable().optional()}).strict();d({operationKey:ri,imageUrl:TA});d({operationKey:ri,name:Do,description:r().max(4e3).optional(),startTime:Pr.optional(),endTime:Pr.optional(),lifetimeSpendLimitMicros:qr.min(1e6),locationIds:y($t).min(1).max(100),biddingType:Zc.optional(),conversionEventSettingIds:_A.optional(),landingPageQueryStringTemplate:Ro.optional()}).superRefine((e,n)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&n.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"})});d({operationKey:ri,campaignId:$t,name:Do,description:r().max(4e3).optional(),contextHints:y(r().min(1).max(1e3)).min(1).max(100),maxBidMicros:qr.max(1e8),billingEventType:Yc.optional(),landingPageQueryStringTemplate:Ro.optional()});const BA=d({title:r().min(3).max(50),body:r().min(1).max(100),targetUrl:TA,fileId:$t});d({operationKey:ri,adGroupId:$t,name:Do,creative:BA,landingPageQueryStringTemplate:Ro.optional()});function l1(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}d({operationKey:ri,expectedUpdatedAt:m().int().nonnegative(),name:Do.optional(),description:r().max(4e3).nullable().optional(),startTime:Pr.nullable().optional(),endTime:Pr.nullable().optional(),lifetimeSpendLimitMicros:qr.min(1e6).optional(),locationIds:y($t).min(1).max(100).optional(),landingPageQueryStringTemplate:Ro.nullable().optional()}).refine(l1,{message:"At least one campaign field must be updated"});d({operationKey:ri,expectedUpdatedAt:m().int().nonnegative(),name:Do.optional(),description:r().max(4e3).nullable().optional(),contextHints:y(r().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:qr.max(1e8).optional(),landingPageQueryStringTemplate:Ro.nullable().optional()}).refine(l1,{message:"At least one ad group field must be updated"});d({operationKey:ri,expectedUpdatedAt:m().int().nonnegative(),name:Do.optional(),creative:BA.optional(),landingPageQueryStringTemplate:Ro.nullable().optional()}).refine(l1,{message:"At least one ad field must be updated"});d({operationKey:ri});d({operationKey:ri,expectedUpdatedAt:m().int().nonnegative()});const qm=d({id:r(),adAccountId:r().nullable(),operationKey:r(),kind:EA,state:RA,entityType:Qe([OA,ue()]),entityId:r().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:r().nullable(),errorMessage:r().nullable(),reconcileStrategy:Qe([DA,ue()]),reconcileParentId:$t.nullable(),reconcileFingerprint:o1.nullable(),reconcileFields:b$.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:r().nullable(),createdAt:r(),updatedAt:r()});d({operation:qm,replayed:E()});const Ot=l2({offset:!0}),Jr={id:$t,projectId:$t,adAccountId:$t,manifestHash:MA,manifest:qA,executorApiKeyId:$t,approverApiKeyId:$t,expiresAt:Ot,approvedAt:Ot,createdAt:Ot,updatedAt:Ot,revocationRequestedAt:Ot.nullable()},v$=d({...Jr,state:R(Mi.approved),operationId:ue(),executionStartedAt:ue(),consumedAt:ue(),revokedAt:ue(),expiredAt:ue()}).strict(),x$=d({...Jr,state:R(Mi.executing),operationId:$t,executionStartedAt:Ot,consumedAt:ue(),revokedAt:ue(),expiredAt:ue()}).strict(),w$=d({...Jr,state:R(Mi.consumed),operationId:$t,executionStartedAt:Ot,consumedAt:Ot,revokedAt:ue(),expiredAt:ue()}).strict(),k$=d({...Jr,state:R(Mi.revoked),operationId:ue(),executionStartedAt:ue(),consumedAt:ue(),revokedAt:Ot,expiredAt:ue()}).strict(),S$=d({...Jr,state:R(Mi.expired),operationId:ue(),executionStartedAt:ue(),consumedAt:ue(),revokedAt:ue(),expiredAt:Ot}).strict(),j$=d({...Jr,state:R(Mi.unknown),operationId:$t,executionStartedAt:Ot,consumedAt:ue(),revokedAt:ue(),expiredAt:ue()}).strict(),LA=Be("state",[v$,x$,w$,k$,S$,j$]).superRefine((e,n)=>{e.executorApiKeyId===e.approverApiKeyId&&n.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Mi.executing&&e.state!==Mi.unknown&&e.state!==Mi.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),qs={id:$t,operationId:$t,ordinal:m().int().nonnegative(),entityType:PA,entityId:$t,expectedUpdatedAt:m().int().nonnegative(),createdAt:Ot,updatedAt:Ot},Xc={errorCode:ue(),errorMessage:ue()},c1={errorCode:r().min(1).max(100),errorMessage:r().min(1).max(500),remediation:r().min(1).max(500)},A$=d({...qs,...Xc,state:R(Ps.pending),providerUpdatedAt:ue(),remediation:ue(),startedAt:ue(),finishedAt:ue()}).strict(),N$=d({...qs,...Xc,state:R(Ps.executing),providerUpdatedAt:ue(),remediation:ue(),startedAt:Ot,finishedAt:ue()}).strict(),C$=d({...qs,...Xc,state:R(Ps.active),providerUpdatedAt:m().int().nonnegative(),remediation:ue(),startedAt:Ot,finishedAt:Ot}).strict(),_$=d({...qs,...c1,state:R(Ps.failed),providerUpdatedAt:Qe([m().int().nonnegative(),ue()]),startedAt:Ot,finishedAt:Ot}).strict(),T$=d({...qs,...Xc,state:R(Ps.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:r().min(1).max(500),startedAt:Ot,finishedAt:ue()}).strict(),E$=d({...qs,...Xc,state:R(Ps.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:r().min(1).max(500),startedAt:Ot,finishedAt:Ot}).strict(),R$=d({...qs,...c1,state:R(Ps.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:Ot,finishedAt:Ot}).strict(),D$=d({...qs,...c1,state:R(Ps.unknown),providerUpdatedAt:Qe([m().int().nonnegative(),ue()]),startedAt:Ot,finishedAt:Ot}).strict(),z$=Be("state",[A$,N$,C$,_$,T$,E$,R$,D$]),f0={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},I$=j([f0.exact,f0.refreshSemanticallyUnchanged]);d({manifest:qA,executorApiKeyId:$t,expiresAt:Ot,versionPolicy:I$.default(f0.exact)}).strict();d({grant:LA}).strict();d({}).strict();d({operationKey:ri,grantId:$t,manifestHash:MA}).strict();d({grant:LA,operation:qm,steps:y(z$)}).strict();const O$=[Tr.pending,Tr.unknown,Tr.reconciling];function P$(e){if(e===void 0||e==="")return O$;if(Array.isArray(e)){const n=[];for(const i of e)typeof i=="string"?n.push(...i.split(",")):n.push(i);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}d({state:Ki(P$,y(zA).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Bi().int().min(1).max(200).default(100),cursor:r().min(1).max(1e3).optional()});d({operations:y(qm),count:m().int().nonnegative(),nextCursor:r().nullable()});d({}).strict();d({operation:qm,resolved:E()});d({campaignId:r().min(1).max(200).optional(),lookbackDays:Bi().int().min(1).max(30).default(7)});const UA=j(["campaign","ad_group","ad"]);UA.enum;const VA=j(["both","live-only","stored-only"]);VA.enum;const q$=R("live-provider-read"),M$=d({date:r().nullable(),startTime:m().nullable(),endTime:m().nullable(),impressions:m().nullable(),clicks:m().nullable(),spend:m().nullable(),conversions:m().nullable(),ctr:we().nullable(),cpc:m().nullable(),cpm:m().nullable()}),Zw=d({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),B$=d({date:r(),live:Zw.nullable(),stored:Zw.nullable(),drifted:E()}),L$=d({field:r(),live:r().nullable(),stored:r().nullable()}),U$=d({name:r().nullable(),status:r(),reviewStatus:r().nullable(),mode:r().nullable(),updatedAt:m().nullable()}),V$=d({name:r(),status:r(),reviewStatus:r().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:r()}),$$=d({entityType:UA,id:r(),parentId:r().nullable(),presence:VA,live:U$.nullable(),stored:V$.nullable(),fieldDeltas:y(L$),liveMetrics:y(M$).nullable(),metricDeltas:y(B$).nullable(),drifted:E()}),G$=d({surface:r(),entityId:r().nullable(),upstreamStatus:m().int().nullable()});d({basis:q$,fetchedAt:r(),adAccountId:r(),storedSnapshotSyncedAt:r().nullable(),metricsWindow:d({lookbackDays:m().int().positive()}),bounds:d({maxCampaigns:m().int().positive(),maxAdGroupsPerCampaign:m().int().positive(),maxAdsPerAdGroup:m().int().positive(),maxReaderCalls:m().int().positive(),readerCalls:m().int().nonnegative(),maxPagesPerReaderCall:m().int().positive(),maxUpstreamHttpRequests:m().int().positive(),truncated:E()}),entities:y($$),drift:d({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(G$)});const K$=d({status:j(["available","unavailable","not-supported"])}),Yw="*";function $A(e){if(e?.some(n=>n.trim().toLowerCase()==="report"))return"The report embed tab has been retired. Remove report from the allowed tabs; explicitly configure overview to display AI Visibility."}const H$=j(["enabled","configured_disabled","CANONRY_TELEMETRY_DISABLED","DO_NOT_TRACK","CI","NO_CONFIG","CONFIG_UNAVAILABLE"]),F$=j(["server","local"]);d({enabled:E(),configuredEnabled:E(),reason:H$,anonymousId:r().regex(/^[0-9a-f]{8}\.\.\.$/i).optional(),target:F$.optional()}).strict();const ft=1,_f=j(["system","project","queries","competitors","run","finish"]),Q$=j(["copy_agent_command","connect_server_traffic","connect_search_console","connect_analytics","connect_business_profile","set_schedule","add_notification","open_project","review_page_health"]),Tf=j(["0","1","2-3","4-5","6-10","11+"]);function ai(e){return!Number.isFinite(e)||e<=0?"0":e<2?"1":e<4?"2-3":e<6?"4-5":e<11?"6-10":"11+"}const Xw=j(["api_unavailable","database_unavailable","worker_unavailable","no_provider","no_queries","provider_save_failed","project_create_failed","query_save_failed","run_rejected","run_failed","run_cancelled","rate_limited","provider_auth","network","unknown"]),Z$=j(["wizard","platform","site_health"]),vd=d({eventId:r().uuid(),flowVersion:R(ft),onboardingSessionId:r().uuid(),surface:Z$.optional()});Be("event",[vd.extend({event:R("onboarding.started"),step:_f,resumed:E()}).strict(),vd.extend({event:R("onboarding.step_completed"),step:_f,method:j(["existing","inline","manual","generated","skipped","automatic"]),countBucket:Tf.optional(),nextAction:Q$.optional()}).strict(),vd.extend({event:R("onboarding.blocked"),step:_f,action:j(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Xw}).strict(),vd.extend({event:R("run.requested"),origin:R("dashboard_setup"),result:j(["queued","rejected"]),kind:j(["answer_visibility","site_health"]).optional(),providerCountBucket:Tf,queryCountBucket:Tf,reasonCode:Xw.optional()}).strict()]);d({accepted:E()});j(["cli","mcp-stdio","mcp-http","aero","api","dashboard"]);const GA=["/","/projects","/projects/:projectName","/projects/:projectName/portfolio","/projects/:projectName/search-console","/projects/:projectName/conversions","/projects/:projectName/local","/projects/:projectName/discovery","/projects/:projectName/queries","/projects/:projectName/properties/:targetKey","/projects/:projectName/report","/projects/:projectName/activity","/projects/:projectName/backlinks","/projects/:projectName/technical-aeo","/projects/:projectName/history","/projects/:projectName/settings","/runs","/history","/settings","/setup","/backlinks","/traffic","/traffic/:projectName/:sourceId","not-found","other"],Y$=j(GA),KA=["overview","portfolio","search-console","conversions","local","discovery","queries","properties","report","activity","backlinks","technical-aeo","history","settings","other"],Ef=j(KA),X$=["sweep.launch","sweep.cancel","site_audit.launch","project.create","project.update","project.delete","query.add","query.delete","query.generate","competitor.save","competitor.delete","schedule.save","schedule.delete","provider.save","settings.save","integration.connect_started","integration.connect","integration.disconnect","traffic.sync","notification.save","notification.test","measurement_plan.publish","discovery.run","api_key.create","api_key.revoke","export.download","report.download","aero.open","aero.send","filter.change","search.submit"],J$=j(X$),W$=["google","gsc","ga","bing","gbp","wordpress","openai_ads","google_ads","gtm","traffic_cloudflare","traffic_vercel","traffic_cloud_run","traffic_wordpress"],eG=j(W$),tG=["provider","model","location","window","query_class","other"],nG=j(tG),aG=["csv","json","html"],iG=["render","unhandled","api"],sG=["4xx","5xx","network"],oG=["LCP","INP","CLS","FCP","TTFB"],rG=["good","needs-improvement","poor"],HA=/^[a-z][a-z0-9-]{0,39}$/,FA=/^[a-z_$][\w$]{0,39}$/i,lG=/^\/api\/v1(?:\/(?:[a-z][a-z0-9-]*(?:\.[a-z]+)?|\{[A-Za-z]+\}))*$/,QA=160,cG=new Set(["accounts","activation-grants","ad-groups","ads","cache","campaigns","competitors","confirm","connections","containers","contracts","conversations","dismissals","insights","jobs","keys","locations","measurement-query-sets","measurement-query-templates","notifications","operations","projects","providers","queries","recommendations","runs","screenshots","segments","sessions","snapshots","sources","users","versions"]),uG=new Set(["ads/account","ads/activation-grants","ads/ad-groups","ads/ads","ads/campaigns","ads/connect","ads/connection","ads/conversions","ads/delivery-diagnostics","ads/files","ads/geo","ads/insights","ads/live-delivery","ads/operations","ads/status","ads/summary","ads/sync","keys/self","locations/default","locations/discover","notifications/events","operations/logs","queries/generate","queries/replace-preview","runs/latest","snapshots/diff"]),dG=/^\{[a-z]+\}$/i;function ZA(e){if(e.length>QA||e.includes("://")||!lG.test(e))return!1;const n=e.split("/").slice(3);return n.every((i,o)=>{const u=n[o-1];return u===void 0||!cG.has(u)?!0:dG.test(i)||uG.has(`${u}/${i}`)})}const xd=d({eventId:r().uuid(),uiSessionId:r().uuid(),page:Y$});Be("event",[xd.extend({event:R("ui.page_viewed"),tab:Ef.optional()}).strict(),xd.extend({event:R("ui.action"),action:J$,tab:Ef.optional(),integration:eG.optional(),format:j(aG).optional(),filter:nG.optional()}).strict(),xd.extend({event:R("ui.error"),kind:j(iG),tab:Ef.optional(),component:r().regex(HA).optional(),errorName:r().regex(FA).optional(),route:r().max(QA).refine(ZA,"route must be a route template").optional(),method:j(["GET","POST","PUT","PATCH","DELETE"]).optional(),statusClass:j(sG).optional(),status:m().int().min(400).max(599).optional()}).strict(),xd.extend({event:R("ui.vitals"),metric:j(oG),rating:j(rG)}).strict()]);function mG(e){if(!e)return"other";if(e==="*"||e==="$"||e.endsWith("/*")||e.endsWith("/$"))return"not-found";const n=e.replace(/\$([a-z]\w*)/gi,":$1").replace(/(.)\/+$/,"$1");return GA.includes(n)?n:"other"}function YA(e){if(e==="/projects/:projectName")return"overview";const n=/^\/projects\/:projectName\/([a-z-]+)/.exec(e);if(!n)return;const i=n[1];return KA.includes(i)?i:"other"}const pG=["struggle","bug","improvement","other"],hG=j(pG),cc={summary:500,details:4e3,area:40,command:120,errorCode:40};d({kind:hG,summary:r().trim().min(1).max(cc.summary),details:r().trim().min(1).max(cc.details).optional(),area:r().trim().min(1).max(cc.area).optional(),command:r().trim().min(1).max(cc.command).optional(),errorCode:r().trim().min(1).max(cc.errorCode).optional()}).strict();d({accepted:E(),id:r()});const fG=4;function gG(e){return e.length<fG}const XA=j(["trace","debug","info","warn","error","fatal"]),JA=d({runId:r().min(1).max(256).optional(),projectId:r().min(1).max(256).optional(),requestId:r().min(1).max(256).optional(),actor:r().min(1).max(512).optional(),credentialId:r().min(1).max(512).optional(),userAgent:r().min(1).max(512).optional(),actorSession:r().min(1).max(512).optional(),method:r().min(1).max(16).optional(),route:r().min(1).max(256).optional(),operationId:r().min(1).max(256).optional(),jobId:r().min(1).max(256).optional(),taskId:r().min(1).max(256).optional(),traceId:r().min(1).max(256).optional(),provider:r().min(1).max(256).optional(),errorCode:r().min(1).max(128).optional(),attempt:m().finite().optional(),count:m().finite().optional(),total:m().finite().optional(),progress:m().finite().optional(),httpStatus:m().finite().optional(),statusCode:m().finite().optional(),durationMs:m().finite().optional(),bytes:m().finite().optional(),retryAfterMs:m().finite().optional(),retriable:E().optional(),retrying:E().optional(),cancelled:E().optional(),success:E().optional()}).strict(),WA=d({cursor:r().min(1).max(512),ts:r().datetime(),level:XA,module:r().min(1).max(256),action:r().min(1).max(256),message:r().max(4096).optional(),runId:r().min(1).max(256).optional(),projectId:r().min(1).max(256).optional(),context:JA}).strict();d({level:XA.optional(),module:r().trim().min(1).max(256).optional(),runId:r().trim().min(1).max(256).optional(),projectId:r().trim().min(1).max(256).optional(),actor:r().trim().min(1).max(512).optional(),requestId:r().trim().min(1).max(256).optional(),since:r().datetime().optional(),until:r().datetime().optional(),limit:Bi().int().min(1).max(200).default(100),cursor:r().trim().min(1).max(512).optional()}).strict().superRefine((e,n)=>{e.since&&e.until&&Date.parse(e.since)>Date.parse(e.until)&&n.addIssue({code:ye.custom,path:["until"],message:'"until" must be on or after "since".'})});const eN=d({maxEntries:m().int().positive(),maxAgeSeconds:m().int().positive()}).strict(),yG=d({entries:y(WA),nextCursor:r().min(1).max(512).nullable(),truncated:m().int().nonnegative(),dropped:m().int().nonnegative(),retention:j(["process","durable"]),retentionPolicy:eN.optional(),captureErrors:m().int().nonnegative().optional(),observedAt:r().datetime()}).strict(),bG=d(JA.shape),vG=d({...WA.shape,context:bG});d({...yG.shape,entries:y(vG),retentionPolicy:d(eN.shape).optional()});function Rf(e){return e!==""&&/^[\w./:@%+=,-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}d({startDate:kn,endDate:kn,sourceId:r().trim().min(1).optional(),burstThreshold:m().int().min(1).max(1e6).optional(),ratioThreshold:m().min(1).max(1e3).optional(),limit:m().int().min(1).max(500).optional()}).strict();const uo=d({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});d({scope:d({project:r(),sourceId:r().nullable(),attribution:R("project-source-only"),unavailableDimensions:y(j(["property","target","market"]))}),window:d({startDate:kn,endDate:kn,timeZone:R("UTC")}),rule:d({version:R("hourly-normalized-path-v1"),burstThreshold:m().int().positive(),ratioThreshold:m().positive(),calibration:j(["uncalibrated-default","request-override"]),grouping:y(r()),confirmsAutomation:R(!1)}),totals:d({raw:uo,redirects:uo,subresources:uo,countable:uo,suspected:uo,adjustedEstimate:uo}),bursts:y(d({sourceId:r(),product:r(),landingPathNormalized:r(),tsHour:r(),counts:uo})),evidence:d({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:E()}),comparison:d({status:R("unavailable"),serverCountable:m().int().nonnegative(),serverObservation:j(["missing","observed-zero","observed-positive"]),gaSessions:m().int().nonnegative().nullable(),gaObservation:j(["missing","observed-zero","observed-positive"]),observedRatio:m().nonnegative().nullable(),observedRatioAboveThreshold:E().nullable(),ratio:ue(),reasons:y(r()),gaScope:R("project")}),caveats:y(r())});const xG=new Set(["optional","nullable","default","prefault","readonly","catch","nonoptional"]),Jw=64;function Rd(e){return e._zod.def}function mo(e,n){return e.clone({...Rd(e),...n})}function Ww(e){if(e.length!==0){if(e.every(n=>typeof n=="string"))return r();if(e.every(n=>typeof n=="number"))return m();if(e.every(n=>typeof n=="boolean"))return E()}}function tN(e,n,i,o){if(o>Jw)throw new Error(`tolerantReadSchema: schema nesting exceeds ${Jw} levels`);const u=i.get(e);if(u)return u;const h=v=>tN(v,n,i,o+1),f=Rd(e);let b=e;if(f.type==="object"){const v=Object.fromEntries(Object.entries(e.shape).map(([S,C])=>[S,h(C)])),x=f.catchall,k=n.get(e)??(x&&Rd(x).type!=="never"?h(x):void 0);b=k?d(v).catchall(k):d(v)}else if(xG.has(f.type)){const v=f.innerType,x=h(v);b=x===v?e:mo(e,{innerType:x})}else if(f.type==="array"){const v=f.element,x=h(v);b=x===v?e:mo(e,{element:x})}else if(f.type==="pipe"){const v=f.in,x=f.out,k=h(v),S=h(x);b=k===v&&S===x?e:mo(e,{in:k,out:S})}else if(f.type==="union"){const v=f.options,x=v.map(h);b=x.some((S,C)=>S!==v[C])?f.discriminator?Qe(x):mo(e,{options:x}):e}else if(f.type==="record"){const v=f.keyType,x=f.valueType,k=Rd(v).type==="enum"?r():v,S=h(x);b=k===v&&S===x?e:mo(e,{keyType:k,valueType:S})}else if(f.type==="intersection"){const v=f.left,x=f.right,k=h(v),S=h(x);b=k===v&&S===x?e:mo(e,{left:k,right:S})}else if(f.type==="tuple"){const v=f.items,x=f.rest,k=v.map(h),S=x&&h(x);b=S!==x||k.some((_,z)=>_!==v[z])?mo(e,{items:k,rest:S}):e}else if(f.type==="lazy"){const v=f.getter;b=Sz(()=>h(v()))}else f.type==="enum"?b=Ww(Object.values(f.entries))??e:f.type==="literal"&&(b=Ww(f.values)??e);return i.set(e,b),b}function zo(e,n={}){const i=new Map(n.openKeys??[]);return tN(e,i,new Map,0)}const Io={openKeys:[[Xg,m().int().nonnegative()]]};zo(kU,Io);zo(p0,Io);zo(EU,Io);zo(RU,Io);zo(SU,Io);zo(Z3,Io);zo(CU,Io);Qe([R(7),R(14),R(30),R(90)]).describe("Traffic activity window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const po=d({current:m(),prior:m(),deltaPct:ot().nullable()}),wG=d({windowStart:r(),windowEnd:r(),coverageStart:r().nullable(),priorWindowComplete:E(),hasData:E().describe("True when the selected or prior window has stored crawler, user-fetch, countable referral or operator evidence, or the selected window has referral redirects. False means no qualifying stored evidence; it can occur with no, paused, errored or never-synced ingestion and out-of-window observations. It does not establish measured zero traffic or source health."),verifiedCrawlerHits:po,unverifiedCrawlerHits:po,aiUserFetchHits:po,referralArrivals:po,referralRedirects:m().int().nonnegative(),referralArrivalsByClass:d({paid:po,organic:po,unclassified:po}),referralArrivalsClassSummary:r(),byOperator:y(d({operator:r(),verifiedHits:m(),unverifiedHits:m(),userFetchHits:m(),referralArrivals:m(),deltaPct:ot().nullable()})),topCrawledPaths:y(d({path:r(),verifiedHits:m(),unverifiedHits:m().default(0),distinctOperators:m()})),referralProducts:y(d({product:r(),arrivals:m(),distinctLandingPaths:m()})),dailyTrend:y(d({date:r(),verifiedCrawlerHits:m(),unverifiedCrawlerHits:m().default(0),userFetchHits:m(),referralArrivals:m()})),topReferralLandingPaths:y(d({path:r(),arrivals:m(),distinctProducts:m()}))});d({activity:wG.nullable()});const dte={ambiguous:"Property identity unverified"},mte="No answer could be tied to one property";function kG(e){return e.denominator===null||e.denominator===void 0||e.unattributed===void 0||e.unattributed<=0?null:`${e.unattributed} of ${e.denominator+e.unattributed} answers could not be tied to one property`}function SG(e){if(e.denominator===null||e.denominator===void 0||e.unchecked===void 0||e.unchecked<=0)return null;const n=e.denominator+e.unchecked;return`${e.unchecked} of ${n} ${n===1?"answer":"answers"} had sources that could not be checked`}const jG="canonry.onboarding-session.v1",Wd="canonry.onboarding-launched-run.v1",u1="canonry.onboarding-handoff.v1",AG=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,NG=["system","project","queries","competitors","run"];function CG(e){return NG[e]??"system"}function _G(e){if(!e.apiReady)return"api_unavailable";if(e.databaseConfigured===!1)return"database_unavailable";if(!e.workerReady)return"worker_unavailable";if(!e.providerReady)return"no_provider"}function TG(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}const EG={NO_PROVIDER:"no_provider",NO_QUERIES:"no_queries",RATE_LIMITED:"rate_limited",QUOTA_EXCEEDED:"rate_limited",PROVIDER_AUTH:"provider_auth",PROVIDERS_FAILING:"provider_auth",AUTH_INVALID:"provider_auth",FORBIDDEN:"provider_auth",NETWORK:"network",CONNECTION_ERROR:"network",RUN_IN_PROGRESS:"run_rejected",RUN_CANCELLED:"run_cancelled"};function xc(e,n){const i=e&&typeof e=="object"&&"code"in e?String(e.code):"";return EG[i]??n}function d1(){return nN(jG)}function nN(e){try{const n=typeof window<"u"?window.sessionStorage.getItem(e):null;if(n&&AG.test(n))return n;const i=tm();return typeof window<"u"&&window.sessionStorage.setItem(e,i),i}catch{return tm()}}function m1(){return tm()}function aN(e){if(!e||typeof e!="object")return!1;const n=e;return typeof n.projectName=="string"&&n.projectName.length>0&&typeof n.runId=="string"&&n.runId.length>0&&typeof n.handled=="boolean"}function iN(e,n){try{typeof window<"u"&&window.sessionStorage.setItem(Wd,JSON.stringify({projectName:e,runId:n,handled:!1}))}catch{}}function sN(e){if(!e)return null;try{if(typeof window>"u")return null;const n=window.sessionStorage.getItem(Wd);if(!n)return null;const i=JSON.parse(n);return!aN(i)||i.projectName!==e||i.handled?null:i}catch{return null}}function em(e){try{if(typeof window>"u")return;const n=window.sessionStorage.getItem(Wd);if(!n)return;const i=JSON.parse(n);if(!aN(i)||i.runId!==e)return;window.sessionStorage.setItem(Wd,JSON.stringify({...i,handled:!0}))}catch{}}function RG(e){try{typeof window<"u"&&window.sessionStorage.setItem(u1,e)}catch{}}function DG(e){if(!e)return!1;try{return typeof window<"u"&&window.sessionStorage.getItem(u1)===e}catch{return!1}}function zG(){try{typeof window<"u"&&window.sessionStorage.removeItem(u1)}catch{}}function tm(){const e=globalThis.crypto;if(e.randomUUID)return e.randomUUID();const n=new Uint8Array(16);if(e.getRandomValues)e.getRandomValues(n);else for(let o=0;o<n.length;o+=1)n[o]=Math.floor(Math.random()*256);n[6]=n[6]&15|64,n[8]=n[8]&63|128;const i=[...n].map(o=>o.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}const IG="canonry.ui-session.v1",OG="canonry.ui-pages.v1",PG="canonry.ui-errors.v1",ek="canonry.ui-sent.v1",qG=30,MG=120,BG=200,Yt={sender:null,disabled:!1,page:"other",landingPage:null,pendingVitals:[],memory:new Map,sentAt:null,now:()=>Date.now()};function LG(e){Yt.sender=e.enabled===!1?null:e.send,Yt.disabled=!1,e.now&&(Yt.now=e.now)}function UG(e){const n=mG(e);if(Yt.page=n,Yt.landingPage===null){Yt.landingPage=n;const o=Yt.pendingVitals;Yt.pendingVitals=[];for(const[u,h]of o)oN(u,h)}const i=YA(n);rN(OG,`${n}|${i??""}`,{event:"ui.page_viewed"})}function Wr(e,n={}){p1({event:"ui.action",action:e,...n})}const VG=800,$G=1e3,Df=new Map;let uc,zf="";function GG(e){if(!Yt.sender)return;const n=Df.get(e);n&&clearTimeout(n),Df.set(e,setTimeout(()=>{Df.delete(e),Wr("filter.change",{filter:e})},VG))}function pte(e,n=!1){if(!Yt.sender)return;uc&&clearTimeout(uc),uc=void 0;const i=e.trim();if(i.length===0){zf="";return}const o=()=>{uc=void 0,i!==zf&&(zf=i,Wr("search.submit"))};n?o():uc=setTimeout(o,$G)}const KG={measurementProvider:"provider",measurementModel:"model",measurementLocation:"location",measurementFrom:"window",measurementTo:"window",runWindow:"window",queryClass:"query_class",class:"query_class",measurementScope:"other",measurementScopeKey:"other",measurementMarketKey:"other",scope:"other",runStatus:"other",runKind:"other",runProject:"other"};function HG(e,n){const i=new Set;for(const[o,u]of Object.entries(KG))FG(e[o],n[o])||i.add(u);for(const o of i)GG(o)}function FG(e,n){const i=o=>o==null||o===""?"":JSON.stringify(o);return i(e)===i(n)}function nm(e){const n=sK(e.error),i=e.route&&ZA(e.route)?e.route:void 0;if(e.kind==="api"&&!i)return;const o=cN(e.method),u=typeof e.status=="number"&&e.status>=400&&e.status<=599?e.status:void 0,h=e.network?"network":u===void 0?void 0:u>=500?"5xx":"4xx",f=e.component&&HA.test(e.component)?e.component:void 0,b=[e.kind,Yt.page,f,n,o,i,u??h].join("|");rN(PG,b,{event:"ui.error",kind:e.kind,...f?{component:f}:{},...n?{errorName:n}:{},...i?{route:i}:{},...o?{method:o}:{},...h?{statusClass:h}:{},...u?{status:u}:{}})}function QG(e,n){if(Yt.landingPage===null){Yt.pendingVitals.push([e,n]);return}oN(e,n)}function oN(e,n){const i=Yt.landingPage??"other";p1({event:"ui.vitals",metric:e,rating:n},i)}const ZG=[["POST","/api/v1/projects/{name}/runs","sweep.launch"],["POST","/api/v1/runs/{id}/cancel","sweep.cancel"],["POST","/api/v1/projects/{name}/technical-aeo/runs","site_audit.launch"],["POST","/api/v1/projects","project.create"],["PUT","/api/v1/projects/{name}","project.create",void 0,201],["PUT","/api/v1/projects/{name}","project.update",void 0,200],["DELETE","/api/v1/projects/{name}","project.delete"],["POST","/api/v1/projects/{name}/queries","query.add"],["PUT","/api/v1/projects/{name}/queries","query.add"],["DELETE","/api/v1/projects/{name}/queries","query.delete"],["DELETE","/api/v1/projects/{name}/queries/{id}","query.delete"],["POST","/api/v1/projects/{name}/queries/generate","query.generate"],["PUT","/api/v1/projects/{name}/competitors","competitor.save"],["POST","/api/v1/projects/{name}/competitors","competitor.save"],["DELETE","/api/v1/projects/{name}/competitors/{id}","competitor.delete"],["PUT","/api/v1/projects/{name}/schedule","schedule.save"],["DELETE","/api/v1/projects/{name}/schedule","schedule.delete"],["PUT","/api/v1/settings/providers/{name}","provider.save"],["PUT","/api/v1/settings/google","settings.save"],["PUT","/api/v1/settings/bing","settings.save"],["PUT","/api/v1/settings/cdp","settings.save"],["PUT","/api/v1/projects/{name}/sentiment/settings","settings.save"],["POST","/api/v1/projects/{name}/google/connect","integration.connect_started","google"],["POST","/api/v1/projects/{name}/ga/connect","integration.connect","ga"],["DELETE","/api/v1/projects/{name}/ga/disconnect","integration.disconnect","ga"],["POST","/api/v1/projects/{name}/bing/connect","integration.connect","bing"],["DELETE","/api/v1/projects/{name}/bing/disconnect","integration.disconnect","bing"],["PUT","/api/v1/projects/{name}/gbp/locations/{locationName}/selection","integration.connect","gbp"],["DELETE","/api/v1/projects/{name}/gbp/connection","integration.disconnect","gbp"],["POST","/api/v1/projects/{name}/wordpress/connect","integration.connect","wordpress"],["DELETE","/api/v1/projects/{name}/wordpress/disconnect","integration.disconnect","wordpress"],["POST","/api/v1/projects/{name}/ads/connect","integration.connect","openai_ads"],["DELETE","/api/v1/projects/{name}/ads/connection","integration.disconnect","openai_ads"],["POST","/api/v1/projects/{name}/google-ads/oauth/connect","integration.connect_started","google_ads"],["PUT","/api/v1/projects/{name}/google-ads/selection","integration.connect","google_ads"],["DELETE","/api/v1/projects/{name}/google-ads/connection","integration.disconnect","google_ads"],["POST","/api/v1/projects/{name}/gtm/oauth/connect","integration.connect_started","gtm"],["PUT","/api/v1/projects/{name}/gtm/selection","integration.connect","gtm"],["DELETE","/api/v1/projects/{name}/gtm/connection","integration.disconnect","gtm"],["POST","/api/v1/projects/{name}/traffic/connect/cloudflare","integration.connect","traffic_cloudflare"],["POST","/api/v1/projects/{name}/traffic/connect/vercel","integration.connect","traffic_vercel"],["POST","/api/v1/projects/{name}/traffic/connect/cloud-run","integration.connect","traffic_cloud_run"],["POST","/api/v1/projects/{name}/traffic/connect/wordpress","integration.connect","traffic_wordpress"],["POST","/api/v1/projects/{name}/traffic/sources/{id}/sync","traffic.sync"],["POST","/api/v1/projects/{name}/notifications","notification.save"],["POST","/api/v1/projects/{name}/notifications/{id}/test","notification.test"],["POST","/api/v1/projects/{name}/measurement-plan/draft/actions/publish","measurement_plan.publish"],["POST","/api/v1/projects/{name}/discover/run","discovery.run"],["POST","/api/v1/keys","api_key.create"],["POST","/api/v1/keys/{id}/revoke","api_key.revoke"]],tk="/api/v1/projects/{name}/google/connections/{type}",YG={gsc:"gsc",ga4:"ga",gbp:"gbp"};function XG(e,n,i){const o=e==="PUT"&&n===`${tk}/property`?"integration.connect":e==="DELETE"&&n===tk?"integration.disconnect":void 0;if(!o)return;const u=i?/\/google\/connections\/([^/?#]+)/.exec(i)?.[1]:void 0,h=u&&YG[decodeURIComponent(u)]||"google";return[e,n,o,h]}const JG=[["GET",/^\/api\/v1\/projects\/\{name\}\/schedule$/,[404]],["*",/^\/api\/v1\/projects\/\{name\}\/measurement-plan(?:\/draft(?:\/.*)?)?$/,[404,409,412]],["GET",/^\/api\/v1\/projects\/\{name\}\/technical-aeo\/runs\/\{runId\}\/progress$/,[404]],["GET",/^\/api\/v1\/projects\/\{name\}\/backlinks\/domains$/,[404]],["POST",/^\/api\/v1\/projects$/,[409]],["PUT",/^\/api\/v1\/projects\/\{name\}$/,[409]]];function WG(e,n,i){return JG.some(([o,u,h])=>(o==="*"||o===e)&&u.test(n)&&h.includes(i))}const eK=/^\/api\/v1\/(?:telemetry|feedback)(?:\/|$)/;function am(e){if(!e.route||eK.test(e.route))return;const n=cN(e.method);if(e.network||typeof e.status=="number"&&e.status>=400){if(e.status===401||typeof e.status=="number"&&e.status<500&&WG(n,e.route,e.status))return;nm({kind:"api",route:e.route,method:n,status:e.status,network:e.network});return}if(!n||n==="GET")return;const i=XG(n,e.route,e.path)??ZG.find(([o,u,,,h])=>o===n&&u===e.route&&(h===void 0||h===e.status));i&&Wr(i[2],i[3]?{integration:i[3]}:{})}function rN(e,n,i){const o=nK(e);if(!o.has(n)&&p1(i)){o.add(n);try{window.sessionStorage.setItem(e,JSON.stringify([...o].slice(-BG)))}catch{}}}function p1(e,n){try{const i=Yt.sender;if(!i||Yt.disabled||!tK())return!1;const o=n??Yt.page,u=YA(o),h={...e,eventId:tm(),uiSessionId:nN(IG),page:o,...u?{tab:u}:{}};return i(h).then(f=>{f&&f.accepted===!1&&(Yt.disabled=!0)},()=>{}),!0}catch{return!1}}function tK(){const e=Yt.now(),n=(Yt.sentAt??=iK(ek)).filter(i=>e-i<36e5&&i<=e);if(Yt.sentAt=n,n.length>=MG||n.filter(i=>e-i<6e4).length>=qG)return!1;n.push(e);try{window.sessionStorage.setItem(ek,JSON.stringify(n))}catch{}return!0}function nK(e){let n=Yt.memory.get(e);return n||(n=new Set(aK(e)),Yt.memory.set(e,n)),n}function lN(e){try{const n=window.sessionStorage.getItem(e),i=n?JSON.parse(n):[];return Array.isArray(i)?i:[]}catch{return[]}}function aK(e){return lN(e).filter(n=>typeof n=="string")}function iK(e){return lN(e).filter(n=>typeof n=="number"&&Number.isFinite(n))}function sK(e){const n=e instanceof Error?e.name:e&&typeof e=="object"&&"name"in e?String(e.name):void 0;return n&&FA.test(n)?n:void 0}function cN(e){const n=e?.toUpperCase();return n==="GET"||n==="POST"||n==="PUT"||n==="PATCH"||n==="DELETE"?n:void 0}class Tn extends Error{code;statusCode;details;constructor(n,i,o,u){super(n),this.name="ApiError",this.code=o??"UNKNOWN",this.statusCode=i,this.details=u}}function hte(e){if(e instanceof Tn)return e.details;if(typeof e!="object"||e===null)return;const n=e.error,i=typeof n=="object"&&n!==null?n.details:e.details;return typeof i=="object"&&i!==null&&!Array.isArray(i)?i:void 0}function wo(){if(typeof window>"u")return!1;const e=window.__CANONRY_CONFIG__?.demo;return e?.enabled===!0&&e.readOnly===!0&&e.sampleData===!0}function oK(){if(typeof window>"u")return"legacy";const e=window.__CANONRY_CONFIG__?.dashboard?.onboardingMode??window.__CANONRY_CONFIG__?.onboardingMode;return e==="platform"||e==="auto"||e==="legacy"?e:"auto"}function rK(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function uN(e){const n=rK();if(!n)return e;let i;const o=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{i=new URL(e,o)}catch{return e}const u=new URL(o).origin;if(i.origin!==u)return e;const f=`${Mm().replace(/\/$/,"")}/api/v1`;return i.pathname!==f&&!i.pathname.startsWith(`${f}/`)?e:(i.searchParams.set("token",n),/^[a-z][a-z\d+.-]*:/i.test(e)?i.toString():`${i.pathname}${i.search}${i.hash}`)}function lK(e,n){const i={method:e.method,headers:e.headers,cache:e.cache,credentials:e.credentials,integrity:e.integrity,keepalive:e.keepalive,mode:e.mode,redirect:e.redirect,referrer:e.referrer,referrerPolicy:e.referrerPolicy,signal:e.signal};return e.body&&(i.body=e.body,i.duplex="half"),new Request(n,i)}function dN(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function cK(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function uK(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showAgentBar!==!1}function dK(){return typeof window>"u"?!1:window.__CANONRY_CONFIG__?.agent?.allowViewers===!0}function h1(){return wo()}function mK(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function go(){return pK(ze["answer-visibility"])}function pK(e){if(typeof window>"u")return!1;const n=window.__CANONRY_CONFIG__?.dashboard;return n?.managedRunKinds!==void 0?n.managedRunKinds.includes(e):e===ze["answer-visibility"]&&n?.managedSweeps===!0}function hK(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.research;if(e?.allowViewers!==!0)return null;const n=e.viewerDailyRunLimit;return{allowViewers:!0,viewerDailyRunLimit:Number.isInteger(n)&&(n??0)>0?n:BV}}function nk(){return hK()?"Analyst":"View only"}function f1(){return dN()!==null}function fK(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const mN=fK();function gK(){const e=typeof window<"u"&&window.location?window.location.origin:"";return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?e+window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):e}function Mm(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function yK(e){const n=e.trim().toLowerCase().replace(/^\[|\]$/g,"");return n==="localhost"||n==="::1"?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(n)}function bK(e,n){if(e.protocol!=="http:"&&e.protocol!=="https:"||!yK(e.hostname))return;const i=e.port?`:${e.port}`:"",o=n?n.replace(/\/$/,""):"";return`${e.protocol}//localhost${i}${o}`}function fte(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function gte(e){return`${e.replace(/\/$/,"")}/api/v1/google-marketing/callback`}function vK(){if(!(typeof window>"u"))return bK(window.location,Mm())}function xK(e){return`${Mm()}${e}`}function wK(e,n){if(n===404)return"Health endpoint returned 404. Check basePath or reverse-proxy configuration and make sure the dashboard reaches /health instead of an API-prefixed route."}function kK(){return""}function SK(){return!!kK()}let pN=null;function ak(e){pN=e}function g1(){pN?.()}const ee=M8({baseUrl:gK()});ee.interceptors.response.use((e,n)=>(e.status===401&&!n.url.includes("/api/v1/session")&&g1(),e));ee.interceptors.request.use(e=>{const n=uN(e.url);return n===e.url?e:lK(e,n)});async function fe(e){const n=await e();if(n.error!==void 0&&n.error!==null){const i=n.response.status;let o=`API ${i}: ${n.response.statusText}`,u,h;if(typeof n.error=="object"&&n.error!==null){const f=n.error.error;if(typeof f=="string")o=f;else if(f&&typeof f=="object"){const b=f;b.message&&(o=b.message),b.code&&(u=b.code),b.details&&(h=b.details)}else{const b=n.error;b.message&&(o=b.message),b.code&&(u=b.code),b.details&&(h=b.details)}}else typeof n.error=="string"&&(o=n.error);throw new Tn(o,i,u,h)}if(n.response.status!==204)return n.data}async function Ms(e,n){const i=n?.body!=null,o=await fetch(uN(`${mN}${e}`),{...n,credentials:n?.credentials??"same-origin",headers:{...i?{"Content-Type":"application/json"}:{},...n?.headers}});if(!o.ok){const u=await o.text();let h=`API ${o.status}: ${o.statusText}`,f,b;if(u)try{const v=JSON.parse(u);typeof v.error=="string"?h=v.error:v.error?.message?(h=v.error.message,f=v.error.code,b=v.error.details):v.message&&(h=v.message)}catch{h=u}throw o.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&g1(),new Tn(h,o.status,f,b)}if(o.status!==204)return o.json()}function jK(e){return fe(()=>NS({client:ee,path:{name:e}}))}function yte(e){return fe(()=>TS({client:ee,path:{name:e}}))}function g0(e){return fe(()=>ES({client:ee,path:{id:e}}))}function hN(e){return fe(()=>_S({client:ee,path:{name:e}}))}function AK(e,n,i){return fe(()=>f_({client:ee,path:{name:e},query:{location:n,limit:i}}))}function fN(e,n){return fe(()=>ZT({client:ee,path:{name:e},query:{location:n?.location,since:n?.since}}))}function gN(e,n){return fe(()=>C6({client:ee,path:{name:e},body:n}))}function NK(e){return fe(()=>A6({client:ee,body:e}))}function CK(e,n){return fe(()=>a_({client:ee,path:{name:e},body:{queries:n}}))}function _K(e,n){return fe(()=>n_({client:ee,path:{name:e},body:{queries:n}}))}function bte(e,n){return fe(()=>t_({client:ee,path:{name:e},body:{queries:n}}))}function TK(e,n){return fe(()=>o_({client:ee,path:{name:e},body:{competitors:n}}))}function vte(e,n){return fe(()=>s_({client:ee,path:{name:e},body:{competitors:n}}))}function xte(e,n){return fe(()=>r_({client:ee,path:{name:e,id:n}}))}async function wte(e,n){const i=await jK(e);return gN(e,{displayName:n.displayName??i.displayName??i.name,canonicalDomain:n.canonicalDomain??i.canonicalDomain,ownedDomains:n.ownedDomains??i.ownedDomains,aliases:n.aliases??i.aliases,country:n.country??i.country,language:n.language??i.language,tags:i.tags,labels:i.labels,providers:n.providers??i.providers,providerModels:n.providerModels??i.providerModels??{},locations:n.locations??i.locations,defaultLocation:n.defaultLocation!==void 0?n.defaultLocation:i.defaultLocation,autoExtractBacklinks:i.autoExtractBacklinks,...n.siteAuditMaxPages!==void 0?{siteAuditMaxPages:n.siteAuditMaxPages}:{}})}function EK(e,n){const i={};return n?.location&&(i.location=n.location),n?.allLocations&&(i.allLocations=!0),n?.noLocation&&(i.noLocation=!0),fe(()=>c_({client:ee,path:{name:e},body:i}))}function kte(e,n){return fe(()=>J6({client:ee,path:{name:e},body:n}))}async function Ste(e,n){await fe(()=>W6({client:ee,path:{name:e,label:n}}))}function jte(e,n){return fe(()=>e_({client:ee,path:{name:e},body:{label:n}}))}async function Ate(e){await fe(()=>N6({client:ee,path:{name:e}}))}function Nte(){return fe(()=>RS({client:ee}))}function ik(){return Ms("/session")}function RK(e){return Ms("/session/setup",{method:"POST",body:JSON.stringify({password:e})})}function DK(e){return Ms("/session",{method:"POST",body:JSON.stringify({password:e})})}function zK(e){return Ms("/session",{method:"POST",body:JSON.stringify({apiKey:e})})}function IK(){return Ms("/session",{method:"DELETE"})}function If(){return fe(()=>x_({client:ee}))}function sk(){return Ms("/auth/session")}function OK(e,n){return Ms("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:n})})}function ok(){return Ms("/auth/logout",{method:"POST"})}function yN(e,n){return fe(()=>b_({client:ee,path:{name:e},body:n}))}async function y1(e){for(let n=0;n<2;n+=1)try{await fe(()=>z_({client:ee,body:e}));return}catch(i){if(!(!(i instanceof Tn)||i.statusCode>=500)||n===1)return}}function Cte(e){return fe(()=>v_({client:ee,body:e}))}function _te(e,n){return fe(()=>A_({client:ee,path:{name:e},body:n}))}async function Tte(e,n){await fe(()=>S_({client:ee,path:{name:e},query:n===void 0?void 0:{expectedUpdatedAt:n}}))}function Ete(e){return fe(()=>C_({client:ee,path:{name:e}}))}function Rte(e,n){return fe(()=>__({client:ee,path:{name:e},body:n}))}async function Dte(e,n){await fe(()=>T_({client:ee,path:{name:e,id:n}}))}function zte(e,n){return fe(()=>E_({client:ee,path:{name:e,id:n}}))}function PK(e,n,i){return fe(()=>i_({client:ee,path:{name:e},body:{provider:n,count:i}}))}function qK(e){return fe(()=>m_({client:ee,body:e}))}function MK(e){return fe(()=>d_({client:ee,body:e??{}}))}function Ite(e,n){const i=vK();return fe(()=>aT({client:ee,path:{name:e},body:{type:n,...i?{publicUrl:i}:{}}}))}function Ote(e,n){return fe(()=>iT({client:ee,path:{name:e,type:n}}))}function Pte(e,n,i){return fe(()=>oT({client:ee,path:{name:e,type:n},body:{propertyId:i}}))}function qte(e,n,i){return fe(()=>rT({client:ee,path:{name:e,type:n},body:{sitemapUrl:i}}))}function BK(e,n){return fe(()=>lT({client:ee,path:{name:e},body:n??{}}))}function Mte(e,n){const i={};return n&&n!=="all"&&(i.window=n),fe(()=>g_({client:ee,path:{name:e},query:i}))}function Bte(e,n){return fe(()=>dT({client:ee,path:{name:e},body:{url:n}}))}function LK(e,n){return fe(()=>yT({client:ee,path:{name:e},body:n??{}}))}function Lte(e,n){return fe(()=>gT({client:ee,path:{name:e},query:n?{sitemapIndex:n}:void 0}))}function Ute(e,n){return fe(()=>S6({client:ee,path:{name:e},body:{sitemapUrls:n}}))}function UK(e,n){return fe(()=>E8({client:ee,path:{name:e},body:n??{}}))}function Vte(e,n){return fe(()=>y8({client:ee,path:{name:e},body:n??{}}))}function $te(){return fe(()=>DS({client:ee}))}function Gte(e,n){return fe(()=>k_({client:ee,body:{host:e,port:n}}))}function Kte(e,n){return fe(()=>bT({client:ee,path:{name:e},body:n}))}function Hte(e,n){return fe(()=>CT({client:ee,path:{name:e},body:{apiKey:n}}))}function Fte(e){return fe(()=>_T({client:ee,path:{name:e}}))}function Qte(e,n){return fe(()=>RT({client:ee,path:{name:e},body:{siteUrl:n}}))}function Zte(e,n){return fe(()=>IT({client:ee,path:{name:e},body:{url:n}}))}function Yte(e,n){return fe(()=>OT({client:ee,path:{name:e},body:{}}))}function Xte(e,n){return fe(()=>PT({client:ee,path:{name:e},body:n}))}function Jte(e){return fe(()=>w_({client:ee,body:{apiKey:e}}))}function VK(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function Wte(e,n){const i=await fetch(`${mN}/projects/${encodeURIComponent(e)}/results/export?format=${n}`,{credentials:"same-origin",headers:{}});if(!i.ok)throw am({method:"GET",route:"/api/v1/projects/{name}/results/export",status:i.status}),new Tn(`Failed to download results: ${i.status}`,i.status);Wr("export.download",{format:n});const o=await i.blob(),u=URL.createObjectURL(o),h=VK(i.headers.get("Content-Disposition"))??`canonry-results-${e}.${n}`,f=document.createElement("a");f.href=u,f.download=h,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(u)}function ene(e,n){return fe(()=>UT({client:ee,path:{name:e},body:{}}))}function tne(e,n){return fe(()=>MT({client:ee,path:{name:e},body:n}))}function nne(e){return fe(()=>BT({client:ee,path:{name:e}}))}function ane(e,n){return fe(()=>l8({client:ee,path:{name:e},body:n}))}function ine(e,n){return fe(()=>c8({client:ee,path:{name:e},body:n}))}function sne(e,n){return fe(()=>u8({client:ee,path:{name:e},body:n}))}function one(e,n,i){return fe(()=>d8({client:ee,path:{name:e,id:n},body:i??{}}))}function rne(e,n,i){return fe(()=>m8({client:ee,path:{name:e,id:n},body:{}}))}function lne(e,n){return fe(()=>HT({client:ee,path:{name:e},query:{runId:n}}))}function $K(e){if(!e||typeof e!="object")return;const n=e;if(!(typeof n.current!="string"||typeof n.latest!="string"||typeof n.url!="string"||typeof n.upgradeCommand!="string"))return{current:n.current,latest:n.latest,url:n.url,upgradeCommand:n.upgradeCommand}}async function GK(e,n){const i=xK(e);try{const o=await fetch(i,{credentials:"same-origin"});if(!o.ok)return{label:n,state:"error",detail:`${n} ${o.status}: ${o.statusText}`,statusCode:o.status,hint:wK(e,o.status)};const u=await o.json(),h=typeof u.version=="string"?u.version:"unknown",f=typeof u.databaseUrlConfigured=="boolean"?u.databaseUrlConfigured:void 0,b=typeof u.lastHeartbeatAt=="string"?u.lastHeartbeatAt:void 0,v=$K(u.updateAvailable),x=K$.safeParse(u.mcp),k=[h,f===!1?"database not configured":"database configured",b?`heartbeat ${b}`:void 0].filter(Boolean).join(" · ");return{label:n,state:"ok",detail:k,version:h,databaseConfigured:f,lastHeartbeatAt:b,...v?{updateAvailable:v}:{},...x.success?{mcp:x.data}:{}}}catch(o){return{label:n,state:"error",detail:o instanceof Error?o.message:"unreachable",hint:e==="/health"?`Request failed while checking ${i}. If this instance is served behind a sub-path, verify the dashboard basePath and reverse-proxy rewrites.`:void 0}}}function cne(){return fe(()=>YT({client:ee}))}function une(){return fe(()=>XT({client:ee}))}function dne(){return fe(()=>e8({client:ee}))}function mne(){return fe(()=>JT({client:ee}))}function pne(e){return fe(()=>WT({client:ee,body:e?{release:e}:{}}))}function hne(){return fe(()=>t8({client:ee}))}function fne(){return fe(()=>n8({client:ee}))}function gne(e){return fe(()=>a8({client:ee,path:{release:e}}))}function yne(e,n={}){return fe(()=>s8({client:ee,path:{name:e},query:{release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function bne(e,n={}){return fe(()=>o8({client:ee,path:{name:e},query:{limit:n.limit!==void 0?String(n.limit):void 0,offset:n.offset!==void 0?String(n.offset):void 0,release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function vne(e,n={}){return fe(()=>r8({client:ee,path:{name:e},query:{source:n.source}}))}function xne(e,n){return fe(()=>i8({client:ee,path:{name:e},body:{release:void 0}}))}async function rk(e,n){return fe(()=>z8({client:ee,path:{name:e},query:n}))}async function KK(e,n){return fe(()=>I8({client:ee,path:{name:e},body:{id:n}}))}async function HK(e,n){return fe(()=>P8({client:ee,path:{name:e,id:n}}))}async function FK(e,n){return fe(()=>O8({client:ee,path:{name:e,id:n}}))}async function QK(e,n){const i=f=>fe(()=>I6({client:ee,path:{name:e},query:{...n,include:["assessments","locations"],queryLimit:F3,queryCursor:f}})),o=await i(),u=[...o.queries];let h=o.queryPage?.nextCursor??null;for(;h;){const f=await i(h);u.push(...f.queries),h=f.queryPage?.nextCursor??null}return{...o,queries:u,...o.queryPage?{queryPage:{...o.queryPage,nextCursor:null}}:{}}}function Dd(e){return fe(()=>D6({client:ee,path:{name:e}}))}function ZK(e,n){return fe(()=>z6({client:ee,path:{name:e},body:n}))}function YK(e,n,i){return fe(()=>O6({client:ee,path:{name:e},query:{...n,cursor:i,limit:50}}))}function XK(e,n){return fe(()=>P6({client:ee,path:{name:e},query:n}))}function JK(e,n,i){return fe(()=>q6({client:ee,path:{name:e},body:{previewToken:n,idempotencyKey:i}}))}function WK(e){return fe(()=>M6({client:ee,path:{name:e}}))}function eH(e,n,i){return fe(()=>B6({client:ee,path:{name:e,jobId:n},query:{attemptCursor:i}}))}const bN={account:null,canWrite:!0,isAdmin:!0},tH={account:null,canWrite:!1,isAdmin:!1};function nH(e){const n=e.scopes.includes(Yw);return{account:null,canWrite:!e.readOnly&&n,isAdmin:e.projectId===null&&e.scopes.includes(Yw)}}const vN=N.createContext(bN);function aH({account:e,apiKey:n,apiKeyPending:i=!1,children:o}){const u=i?tH:n?nH(n):e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:bN;return l.jsx(vN.Provider,{value:u,children:o})}function fa(){return N.useContext(vN)}const xN="View only — your account cannot change this.";function fn(e){return(...n)=>{e(...n)}}const iH=6e3,sH=5,oH=180;let On=[],rH=0;const y0=new Set,b0=new Map,v0=new Map;function im(){const e=[...On];for(const n of y0)n(e)}function b1(e){const n=b0.get(e);n&&(clearTimeout(n),b0.delete(e));const i=v0.get(e);i&&(clearTimeout(i),v0.delete(e))}function wN(e){b1(e);const n=On.length;On=On.filter(i=>i.id!==e),On.length!==n&&im()}function lk(e){b1(e.id),b0.set(e.id,setTimeout(()=>{x0(e.id)},e.durationMs))}function lH(e,n,i){return typeof e=="string"?{title:e,tone:n,durationMs:i}:e}function xn(e,n="negative",i=iH){const o=lH(e,n,i),u={id:String(++rH),title:o.title,detail:o.detail,tone:o.tone??n,durationMs:o.durationMs??i,dedupeKey:o.dedupeKey,cta:o.cta,state:"open"};if(o.dedupeKey){const h=On.find(f=>f.dedupeKey===o.dedupeKey);if(h){if((o.dedupeMode??"drop")==="drop")return h.id;const f={...h,title:u.title,detail:u.detail,tone:u.tone,durationMs:u.durationMs,cta:u.cta,state:"open"};return On=On.map(b=>b.id===h.id?f:b),im(),lk(f),h.id}}return On.length>=sH&&wN(On[0].id),On=[...On,u],im(),lk(u),u.id}function x0(e){const n=On.find(i=>i.id===e);!n||n.state==="closing"||(b1(e),On=On.map(i=>i.id===e?{...i,state:"closing"}:i),im(),v0.set(e,setTimeout(()=>{wN(e)},oH)))}function cH(e){return y0.add(e),()=>{y0.delete(e)}}function ck(){return On}const uH=5*6e4,zd=30*6e4,wne=3e4,kne=6e4,Mr=3e4,dH=2e3,mH=3e4;function pH(){return new j5({defaultOptions:{queries:{staleTime:uH,retry:1,refetchOnWindowFocus:!1}},mutationCache:new A5({onError:(n,i,o,u)=>{u.meta?.skipGlobalErrorToast||xn({title:n instanceof Error?n.message:"An unexpected error occurred",tone:"negative"})}})})}const hH="modulepreload",fH=function(e,n){return new URL(e,n).href},uk={},Hi=function(n,i,o){let u=Promise.resolve();if(i&&i.length>0){let x=function(k){return Promise.all(k.map(S=>Promise.resolve(S).then(C=>({status:"fulfilled",value:C}),C=>({status:"rejected",reason:C}))))};const f=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),v=b?.nonce||b?.getAttribute("nonce");u=x(i.map(k=>{if(k=fH(k,o),k in uk)return;uk[k]=!0;const S=k.endsWith(".css"),C=S?'[rel="stylesheet"]':"";if(o)for(let z=f.length-1;z>=0;z--){const q=f[z];if(q.href===k&&(!S||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${k}"]${C}`))return;const _=document.createElement("link");if(_.rel=S?"stylesheet":hH,S||(_.as="script"),_.crossOrigin="",_.href=k,v&&_.setAttribute("nonce",v),document.head.appendChild(_),S)return new Promise((z,q)=>{_.addEventListener("load",z),_.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${k}`)))})}))}function h(f){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=f,window.dispatchEvent(b),!b.defaultPrevented)throw f}return u.then(f=>{for(const b of f||[])b.status==="rejected"&&h(b.reason);return n().catch(h)})},v1=N.createContext({view:null,publish:()=>()=>{}});function gH({children:e}){const[n,i]=N.useState(null),o=N.useCallback(u=>(i(u),()=>i(h=>h===u?null:h)),[]);return l.jsx(v1.Provider,{value:N.useMemo(()=>({view:n,publish:o}),[n,o]),children:e})}function Sne(e,n){const{publish:i}=N.useContext(v1),o=JSON.stringify(n);N.useEffect(()=>i({project:e,context:JSON.parse(o)}),[i,e,o])}function yH(e,n){const{view:i}=N.useContext(v1);return i?.project===e&&i.context.view===n.view?i.context:n}var bH=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(bH||{});const jne={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},Ane={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},vH=kg;function Nne(e){return e.endsWith("%")?{figure:e.slice(0,-1),sign:"%"}:{figure:e,sign:""}}function Cne(e,n){return n==="cited"?SG(e):kG(e)}function xH(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,o]of Object.entries(e.providers)){const u=`[${i}] ${o.message}`;o.raw!==void 0?n.push(`${u}
|
|
53
53
|
|
|
54
54
|
${JSON.stringify(o.raw,null,2)}`):n.push(u)}return n.length>0?n.join(`
|
|
55
55
|
|
|
@@ -83,4 +83,4 @@ spec:
|
|
|
83
83
|
`);En(Fe),Vs(!0)}}catch(K){al(K instanceof Error?K.message:"Failed to generate queries"),Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:xc(K,"unknown")},"onboarding.blocked:queries:generate")}finally{tl(!1)}}},pl=async()=>{if(!Ke)return;const K=fi;if(K.length!==0){Fa(!0),rl(null);try{await TK(Ke,K),Xi(!0),await o(),Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:ai(K.length)},"onboarding.step_completed:competitors"),J(4)}catch(Fe){rl(Fe instanceof Error?Fe.message:"Failed to save competitors"),Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{Fa(!1)}}},hl=async()=>{const K=Wi.trim();if(K){Vo(!0),$o(null);try{await yN("gemini",{apiKey:K}),xn({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),au(""),await o(),mi(v.providerStatuses.find(Fe=>Fe.name.toLowerCase()==="gemini")?.name??"gemini"),Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(Fe){$o(Fe instanceof Error?Fe.message:"Failed to save Gemini key"),Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{Vo(!1)}}},gi=async()=>{if(!go()){if(!Ke||Ya){zn(Ya??"Complete setup before launching the first sweep.");const K=ba??(Ke?ya===0?"no_queries":"run_rejected":"unknown");Ia||Y({flowVersion:ft,onboardingSessionId:T,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:ai(xt),queryCountBucket:ai(ya),reasonCode:K});return}Hs(!0),zn(null);try{const K=await dl.mutateAsync({projectName:Ke,projectLabel:ve||_e||Ke,sourceAction:"setup-launch"});ep(K.id),Wm(!0),iN(Ke,K.id),ul.current=K.id,Ia||Y({flowVersion:ft,onboardingSessionId:T,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:ai(xt),queryCountBucket:ai(ya)}),await o()}catch(K){zn(K instanceof Error?K.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),Ia||Y({flowVersion:ft,onboardingSessionId:T,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:ai(xt),queryCountBucket:ai(ya),reasonCode:xc(K,"run_rejected")})}finally{Hs(!1)}}},qn=()=>J(K=>_?2:Math.max(0,K-1)),Ho=(K,Fe,yi)=>{Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.step_completed",step:K,method:"existing",...yi===void 0?{}:{countBucket:ai(yi)}},`onboarding.step_completed:${K}`),J(Fe)},fl=()=>{if(Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.step_completed",step:"queries",method:"skipped",countBucket:"0"},"onboarding.step_completed:queries"),_){Ht();return}J(3)},gl=()=>{Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),J(4)},Fs=_?"section":_a,va=Xe!==!0||It===!0?l.jsx(re,{type:"button",variant:"ghost",size:"sm",className:"min-h-11",onClick:()=>{o(),$s&&Ze.refetch()},children:"Check again"}):null,yl=(Xe===!1||ga)&&!!Wn,Qs=_&&(P===2||P===4)?x?l.jsxs("section",{"aria-labelledby":"setup-provider-heading",className:"space-y-3 border-b border-default pb-6 mb-6",children:[l.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[l.jsx("h2",{id:"setup-provider-heading",className:"text-lg font-semibold text-heading",children:Xe===!1?"Connect a provider":"Answer engine provider"}),l.jsx(vn,{tone:Xe===!0?"positive":"neutral",children:Xe===!0?"Configured":Xe===!1?"Not connected":"Checking"})]}),l.jsx("p",{className:"max-w-prose text-sm text-secondary",children:Xe===!0?_t.length>0?`${_t.map(K=>K.displayName??K.name).join(", ")} available for this project. Research and sweeps use your provider account.`:"ChatGPT in Chrome is configured for sweeps. Query Research needs an API provider.":Xe===!1?"An answer engine is required for visibility sweeps. You can save queries now and connect later.":"Checking available providers. You can choose queries while this finishes."}),Xe===!1||ga?Wn?l.jsx("div",{children:l.jsx(AJ,{compact:!0,leadingField:l.jsxs("div",{className:"min-w-0 space-y-1.5",children:[l.jsx("label",{className:"block text-sm font-medium text-secondary",htmlFor:"setup-provider",children:"Provider to connect"}),l.jsx("select",{ref:tu,id:"setup-provider",className:"setup-input",value:Wn.name,onChange:K=>{K.target.value!==Wn.name&&(Bo.current=document.activeElement===K.currentTarget,sl(K.target.value))},children:Uo.map(K=>l.jsx("option",{value:K.name,children:K.displayName??K.name},K.name))})]}),secondaryActions:va,providerName:Wn.name,keyUrl:Wn.keyUrl,modelHint:Wn.modelHint,onSaved:()=>{on(!1),o()}},Wn.name)}):l.jsx("p",{className:"max-w-prose text-sm text-secondary",children:yn.length>0?`This project's provider selection is ${yn.join(", ")}. Configure an allowed provider in Settings, or change the selection in project Settings.`:"Provider configuration is unavailable here. Open Settings to connect an answer engine, then check again."}):null,l.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[Xe===!0&&!ga&&Wn?l.jsx(re,{type:"button",variant:"outline",size:"sm",onClick:()=>on(!0),children:"Configure a provider"}):null,!Wn||It===!0?l.jsx(re,{type:"button",variant:"outline",size:"sm",asChild:!0,children:l.jsx(et,{to:"/settings",target:"_blank",rel:"noopener noreferrer",children:"Open provider settings"})}):null,yl?null:va]})]}):l.jsxs("section",{"aria-labelledby":"setup-provider-heading",className:"space-y-2 border-b border-default pb-6 mb-6",children:[l.jsx("h2",{id:"setup-provider-heading",className:"text-lg font-semibold text-heading",children:"Answer engine provider"}),l.jsx("p",{className:"max-w-prose text-sm text-secondary",children:"Provider settings are managed by an administrator."}),Ee?l.jsx("p",{role:"alert",className:"text-sm text-negative",children:"Provider readiness could not be checked. Try again."}):l.jsx("p",{className:"max-w-prose text-sm text-secondary",role:"status",children:Xe===!0?"An answer engine is available for this project.":Xe===!1?"Ask an administrator to connect an answer engine for this project. You can save queries now.":"Checking provider readiness. You can save queries now."}),l.jsx(re,{type:"button",variant:"ghost",size:"sm",className:"min-h-11",disabled:Jn.isFetching,onClick:()=>{Jn.refetch()},children:Ee?"Retry provider check":"Check again"})]}):null,Xa=(()=>{switch(P){case 0:return l.jsxs(_a,{className:"surface-card step-card",children:[l.jsx("div",{className:"section-head",children:l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),l.jsx("h2",{children:"System check"})]})}),l.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),l.jsx("div",{className:"compact-stack",children:C.healthChecks.map(K=>l.jsxs("div",{className:"health-check-row",children:[l.jsxs("div",{children:[l.jsx("p",{className:"run-row-title",children:K.label}),l.jsx("p",{className:"supporting-copy",children:K.detail}),K.id==="provider"&&K.state!=="ready"&&l.jsxs("div",{className:"mt-3 rounded-md border border-default bg-bg-elevated/40 p-3 space-y-2",children:[l.jsxs("p",{className:"text-xs text-secondary",children:["Paste a Gemini key to enable visibility checks (free at"," ",l.jsx("a",{href:"https://aistudio.google.com/apikey",target:"_blank",rel:"noreferrer",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"aistudio.google.com"}),")."]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("input",{type:"password",value:Wi,onChange:Fe=>au(Fe.target.value),placeholder:"AI... (paste here)",className:"flex-1 rounded-md border border-base bg-bg px-2.5 py-1.5 text-sm text-heading placeholder:text-faint focus:border-mono-600 focus:outline-none font-mono",disabled:In}),l.jsx(re,{type:"button",size:"sm",disabled:In||!Wi.trim(),onClick:fn(hl),children:In?"Saving...":"Save"})]}),ml&&l.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[l.jsx("p",{children:ml}),l.jsx("p",{children:"Check that the key is complete, then retry Save."})]}),l.jsxs("p",{className:"text-sm text-secondary",children:["Connect more answer engines later in"," ",l.jsx(et,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),l.jsx(vn,{tone:K.state==="ready"?"positive":"caution",title:K.id==="api"?Br(S.apiStatus):K.id==="worker"?Br(S.workerStatus):K.detail,children:K.state==="ready"?"Ready":"Attention"})]},K.id))}),l.jsxs("div",{className:"setup-nav",children:[C.launchState.blockedReason?l.jsx("p",{role:"status",className:"supporting-copy text-negative",children:C.launchState.blockedReason}):l.jsx("span",{}),l.jsx(re,{type:"button",disabled:!C.launchState.enabled,title:C.launchState.blockedReason,onClick:()=>{Y({flowVersion:ft,onboardingSessionId:T,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),J(Ue)},children:"Continue"})]})]});case 1:return l.jsxs(_a,{className:"surface-card step-card",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),l.jsx("h2",{children:"Create project"})]}),Ke?l.jsx(vn,{tone:"positive",children:"Created"}):null]}),Ke?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-neutral",children:["Project ",l.jsx("span",{className:"text-heading font-medium",children:Ke})," created successfully."]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:qn,children:"Back"}),l.jsx(re,{type:"button",onClick:()=>Ho("project",2),children:"Continue"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),l.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:_e,onChange:K=>qe(K.target.value)}),Gn&&Gn!==_e?l.jsxs("p",{className:"supporting-copy",children:["Slug: ",Gn]}):null]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),l.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:ve,onChange:K=>de(K.target.value)})]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),l.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:ce,onChange:K=>F(K.target.value)})]}),l.jsxs("div",{className:"setup-field-row",children:[l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),l.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:pe,onChange:K=>Oe(K.target.value.toUpperCase())})]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),l.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:Ae,onChange:K=>st(K.target.value.toLowerCase())})]})]}),l.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-default bg-surface p-3 cursor-pointer hover:border-strong",children:[l.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-strong bg-bg",checked:Ve,onChange:K=>At(K.target.checked)}),l.jsxs("span",{className:"flex-1",children:[l.jsx("span",{className:"block text-sm text-heading",children:"Auto-extract backlinks"}),l.jsxs("span",{className:"block text-xs text-muted mt-0.5",children:["When a new Common Crawl release syncs, automatically extract backlinks for this project."," ",l.jsx(et,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),at?l.jsx("p",{className:"text-negative-400 text-sm",children:at}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:qn,children:"Back"}),l.jsx(re,{type:"button",disabled:!Gn||!ce||Pn,onClick:fn(np),children:Pn?"Creating...":"Create project"})]})]})]});case 2:return l.jsxs(Fs,{className:_?"visibility-setup-section step-card":"surface-card step-card","aria-labelledby":"setup-queries-heading",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:_?"Step 1 of 2":"Step 3 of 5"}),l.jsx("h2",{id:"setup-queries-heading",children:"Add queries"})]}),W?l.jsx(vn,{tone:"neutral",children:"Loading"}):B.isError?l.jsx(vn,{tone:"negative",children:"Load failed"}):Ut?l.jsxs(vn,{tone:"positive",children:[ea.length," saved"]}):l.jsxs(vn,{tone:"neutral",children:[ea.length," quer",ea.length!==1?"ies":"y"]})]}),l.jsx("p",{className:"supporting-copy",children:"Add the queries your customers use, one per line. You can refine your list later."}),l.jsxs("div",{className:"space-y-2 border-b border-default pb-4",children:[l.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[l.jsxs("div",{className:"min-w-0 space-y-1",children:[l.jsx("h3",{className:"text-sm font-semibold text-heading",children:"Research queries with your agent"}),l.jsx("p",{className:"max-w-prose text-sm text-secondary",children:"Ask your agent to compare answers and available sources with Canonry Research, then recommend queries. Research does not change your tracked queries."})]}),l.jsx(re,{type:"button",variant:"outline",size:"sm",className:"min-h-11 shrink-0 self-start",onClick:fn(ol),children:Dn?"Research prompt copied":"Copy research prompt"})]}),l.jsxs("details",{open:Lo||void 0,className:"text-sm text-secondary",children:[l.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-link",children:"View agent prompt"}),l.jsx("textarea",{"aria-label":"Agent query research prompt",readOnly:!0,className:"setup-textarea mt-2 w-full",rows:8,value:Qi})]}),Lo?l.jsx("p",{role:"alert",className:"text-sm text-negative",children:"Could not copy. Select and copy the prompt above."}):null]}),W?l.jsx("div",{className:"rounded-md border border-default bg-bg-elevated/40 p-4 text-sm text-secondary",role:"status",children:"Loading saved queries…"}):B.isError?l.jsxs("div",{className:"compact-stack",children:[l.jsx("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:"Saved queries could not be loaded. Retry before changing the query basket."}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:_?Me:qn,children:"Back"}),l.jsx(re,{type:"button",onClick:()=>{B.refetch()},children:"Retry loading queries"})]})]}):Ut?l.jsxs("div",{className:"compact-stack",children:[l.jsx("ul",{className:"detail-list",children:ea.map(K=>l.jsx("li",{children:K},K))}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:_?Me:qn,children:"Back"}),l.jsx(re,{type:"button",variant:"outline",onClick:()=>ci(!1),children:"Edit queries"}),l.jsx(re,{type:"button",onClick:()=>Ho("queries",_?4:3,ea.length),children:"Continue"})]})]}):l.jsxs("div",{className:"compact-stack",children:[_t.length>0?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[l.jsx("span",{className:"flex-1 border-t border-base"}),"auto-generate",l.jsx("span",{className:"flex-1 border-t border-base"})]}),l.jsxs("div",{className:"flex items-end gap-2",children:[l.jsxs("div",{className:"setup-field flex-1",children:[l.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),l.jsx("select",{id:"gen-provider",className:"setup-input",value:sn,onChange:K=>mi(K.target.value),children:_t.map(K=>l.jsxs("option",{value:K.name,children:[K.displayName??K.name,K.model?` (${K.model})`:""]},K.name))})]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),l.jsx("select",{id:"gen-count",className:"setup-input",value:Mo,onChange:K=>Gs(Number(K.target.value)),children:[3,5,10,15,20].map(K=>l.jsx("option",{value:K,children:K},K))})]}),l.jsx(re,{type:"button",variant:"outline",disabled:eu||!sn,onClick:fn(Pa),children:eu?"Analyzing site...":"Generate"})]}),nl?l.jsx("p",{className:"text-negative-400 text-sm",children:nl}):null]}):null,_?null:l.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[l.jsx("span",{className:"flex-1 border-t border-base"}),"or type manually",l.jsx("span",{className:"flex-1 border-t border-base"})]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),l.jsx("textarea",{id:"queries",className:"setup-textarea",rows:6,placeholder:`emergency dentist brooklyn
|
|
84
84
|
best invisalign downtown brooklyn
|
|
85
85
|
pediatric dentist brooklyn heights`,value:Ft,onChange:K=>En(K.target.value)})]}),Ls?l.jsx("p",{className:"text-negative-400 text-sm",children:Ls}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:_?Me:qn,children:"Back"}),l.jsx(re,{type:"button",variant:"ghost",onClick:fl,children:_?"Finish without AI Visibility":"Skip for now"}),l.jsx(re,{type:"button",disabled:ea.length===0||Rn,onClick:fn(Ko),children:Rn?"Saving...":`Save ${ea.length} quer${ea.length!==1?"ies":"y"}`})]})]})]});case 3:return l.jsxs(_a,{className:"surface-card step-card",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 4 of 5"}),l.jsx("h2",{children:"Add competitors"})]}),Yi?l.jsx(vn,{tone:"positive",children:"Saved"}):null]}),l.jsx("p",{className:"supporting-copy",children:"Optional. Domains that compete for the same queries, one per line. You can add them later from the project."}),Yi?l.jsxs("div",{className:"compact-stack",children:[l.jsx("ul",{className:"detail-list",children:fi.map(K=>l.jsx("li",{children:K},K))}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:qn,children:"Back"}),l.jsx(re,{type:"button",onClick:()=>Ho("competitors",4,fi.length),children:"Continue"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"competitors",children:"Competitor domains (one per line)"}),l.jsx("textarea",{id:"competitors",className:"setup-textarea",rows:4,placeholder:`competitor1.com
|
|
86
|
-
competitor2.com`,value:pi,onChange:K=>Zi(K.target.value)})]}),en?l.jsx("p",{className:"text-negative-400 text-sm",children:en}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:qn,children:"Back"}),l.jsx("div",{className:"flex gap-2",children:fi.length===0?l.jsx(re,{type:"button",onClick:gl,children:"Continue without competitors"}):l.jsxs(l.Fragment,{children:[l.jsx(re,{type:"button",variant:"outline",onClick:gl,children:"Skip"}),l.jsx(re,{type:"button",disabled:ll,onClick:fn(pl),children:ll?"Saving...":`Save ${fi.length} competitor${fi.length!==1?"s":""}`})]})})]})]})]});case 4:{const K=Za.data,Fe=K?.status??(Ji===nt?.id?nt.status:void 0),yi=Fe==="completed"||Fe==="partial"||Fe==="failed"||Fe==="cancelled",es=K?.snapshots??[],qa=K?.queryCounts,bl=Fe?Yk(Fe,es.length):!1,jn=$e&&!Qa,bi=Sn??(K?.error?vH(K.error):Fe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Fe==="completed"||Fe==="partial")&&es.length===0?"The sweep finished without producing any snapshots.":nt?.statusDetail||"The sweep did not produce a baseline.");let Ja=null;return jn||bl?Ja=l.jsx(vn,{tone:"positive",children:"Complete"}):Sn&&!Qa?Ja=l.jsx(vn,{tone:"negative",children:"Failed"}):yi?Ja=l.jsx(vn,{tone:"negative",children:Fe==="cancelled"?"Cancelled":"Failed"}):Qa&&(Ja=l.jsx(vn,{tone:"caution",children:"Running"})),l.jsxs(_a,{className:"surface-card step-card",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:_?"Step 2 of 2":"Step 5 of 5"}),l.jsx("h2",{children:go()?"AI Visibility":"Launch first run"})]}),Ja]}),jn?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",l.jsx("span",{className:"text-strong font-medium",children:Ke})," already has a successful answer-visibility baseline."]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(re,{type:"button",onClick:()=>ct(),children:f?"Finish setup":"Open project dashboard →"})]})]}):!Qa&&go()?l.jsxs("div",{className:"compact-stack",children:[Ke?l.jsx(PY,{projectName:Ke}):l.jsx("p",{className:"text-sm text-secondary",children:C0}),Sn&&l.jsx("p",{role:"alert",className:"text-sm text-negative",children:Sn}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(re,{type:"button",onClick:Me,children:"Open project dashboard →"})]})]}):Qa?yi?bl?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",l.jsx("span",{className:"text-heading font-medium",children:Ke}),":"]}),l.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:qa?l.jsxs(l.Fragment,{children:[qa.mentionedQueries,l.jsxs("span",{className:"text-faint text-lg",children:[" / ",qa.totalQueries]})]}):"Unavailable"}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:qa?l.jsxs(l.Fragment,{children:[qa.citedQueries,l.jsxs("span",{className:"text-faint text-lg",children:[" / ",qa.totalQueries]})]}):"Unavailable"}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:es.length}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),!b&&Ke?l.jsx(jJ,{projectName:Ke}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(re,{type:"button",onClick:()=>ct(),children:f?"Finish setup":"Open project dashboard →"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:bi}),l.jsx("p",{className:"mt-1 text-xs text-secondary",children:go()?C0:x?"Fix provider or query configuration if needed, then retry without leaving setup.":"Ask an administrator to review the provider and query configuration."})]}),l.jsxs("div",{className:"setup-nav",children:[x&&!go()?l.jsx(re,{type:"button",variant:"outline",asChild:!0,children:l.jsx(et,{to:"/settings",children:"Configure providers"})}):l.jsx("span",{}),go()||!x?l.jsx(re,{type:"button",onClick:Me,children:"Open project dashboard →"}):l.jsx(re,{type:"button",disabled:hi||!!Ya,onClick:fn(gi),children:hi?"Retrying...":"Retry visibility sweep"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),l.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:l.jsxs("p",{children:["Status: ",l.jsx("span",{className:"text-neutral",children:Fe??"queued"})]})}),Za.isError&&l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:Za.error instanceof Error?Za.error.message:"Could not refresh the sweep status."}),l.jsx(re,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{Za.refetch()},children:"Retry status check"})]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(re,{type:"button",variant:"outline",onClick:f?()=>ct():Me,children:f?"Finish setup":"Watch on project page"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"supporting-copy",children:["Your queries are saved. Run a first sweep to get a baseline for"," ",l.jsx("span",{className:"text-heading font-medium",children:Ke}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(Ya||Sn)&&l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:Sn??Ya}),l.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:qn,children:"Back"}),l.jsx(re,{type:"button",variant:"ghost",onClick:Ht,children:"Finish without running"}),ba==="no_provider"&&!_?l.jsx(re,{type:"button",asChild:!0,children:l.jsx(et,{to:"/settings",children:"Configure a provider"})}):l.jsx(re,{type:"button",disabled:hi||!!Ya,title:Ya,onClick:fn(gi),children:hi?"Launching...":Sn?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return l.jsxs("div",{className:_?"page-container visibility-setup":"page-container",children:[f?l.jsx(_o,{current:"visibility"}):null,l.jsxs("div",{className:"page-header",children:[l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{ref:u?h:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),l.jsx("p",{className:"page-subtitle",children:u?"Connect an answer engine, then choose queries for your first sweep.":"Create a project and run its first visibility check."})]}),f?l.jsx("div",{className:"page-header-right",children:l.jsx(re,{type:"button",variant:"outline",className:"min-h-11",onClick:Ht,children:"Skip AI Visibility"})}):null]}),f?null:l.jsx(EJ,{current:_?P===4?1:0:P,labels:_?_J:CJ}),l.jsxs("section",{className:"setup-wizard",children:[Qs,Xa]})]})}const $f="canonry mcp install --client claude-code",zJ="https://github.com/Canonry/canonry/blob/main/docs/mcp.md";function IJ(){const e=N.useRef(d1()).current,n=N.useRef(new Set),i=N.useCallback((o,u)=>{n.current.has(o)||(n.current.add(o),y1({...u,flowVersion:ft,onboardingSessionId:e,surface:"platform",eventId:m1()}))},[e]);return N.useEffect(()=>{i("started",{event:"onboarding.started",step:"finish",resumed:!1})},[i]),N.useCallback(o=>{i(`action:${o}`,{event:"onboarding.step_completed",step:"finish",method:"manual",nextAction:o})},[i])}const Xm=N.createContext(()=>{});function OJ({projectName:e,skippedVisibility:n=!1}){const i=yt({...nQ({client:ee,path:{name:e}}),retry:!1}),o=i.data?.hasData?i.data:null,u=IJ(),h=Wk(e,ze["site-audit"]),f=Wk(e,ze["answer-visibility"]),b={...h?{site:h,fixes:h}:{},...PJ(f,n)};return l.jsx(Xm.Provider,{value:u,children:l.jsxs("div",{className:"page-container max-w-6xl py-8 md:py-10",children:[l.jsx(_o,{current:"done",outcomes:b}),l.jsxs("header",{className:"relative mx-auto mt-12 max-w-2xl text-center md:mt-16",children:[l.jsx(qJ,{}),l.jsx("p",{className:"onb-reveal mt-6 text-sm font-medium text-positive",style:Ta(250),children:"Setup complete"}),l.jsx("h1",{className:"onb-reveal mt-2 text-5xl font-semibold tracking-tight text-heading md:text-6xl",style:Ta(350),children:"You’re set."}),l.jsxs("p",{className:"onb-reveal mx-auto mt-4 max-w-xl text-lg text-secondary",style:Ta(450),children:["Canonry is tracking ",l.jsx("span",{className:"font-medium text-heading",children:e}),". Here’s how to get the most out of it from here."]})]}),l.jsxs("div",{className:"mt-14 grid gap-4 md:grid-cols-6",children:[l.jsx(Ad,{className:"md:col-span-4 md:row-span-2",delayMs:600,labelledBy:"onb-agent-heading",children:l.jsx(LJ,{projectName:e})}),l.jsx(Ad,{className:"md:col-span-2 md:row-span-2",delayMs:700,labelledBy:"onb-data-heading",children:l.jsx($J,{projectName:e})}),l.jsx(Ad,{className:"md:col-span-3",delayMs:800,labelledBy:"onb-schedule-heading",children:l.jsx(HJ,{projectName:e})}),l.jsx(Ad,{className:"md:col-span-3",delayMs:900,labelledBy:"onb-alerts-heading",children:l.jsx(FJ,{projectName:e,score:o?.aggregateScore??null})})]}),l.jsxs("div",{className:"onb-reveal mt-12 flex flex-col items-center gap-3 sm:flex-row sm:justify-center",style:Ta(1e3),children:[l.jsx(re,{asChild:!0,className:"h-11 rounded-full px-6 text-base md:h-11",children:l.jsxs(et,{to:"/projects/$projectName",params:{projectName:e},replace:!0,onClick:()=>u("open_project"),children:["Open ",e,l.jsx(jc,{className:"size-4","aria-hidden":"true"})]})}),l.jsx(re,{asChild:!0,variant:"ghost",className:"h-11 rounded-full px-5 md:h-11",children:l.jsx(et,{to:"/projects/$projectName/technical-aeo",params:{projectName:e},replace:!0,onClick:()=>u("review_page_health"),children:"Review page health"})})]})]})})}function Wk(e,n){const i=yt({...jN({client:ee,path:{name:e},query:{kind:n,limit:20}}),retry:!1,refetchInterval:o=>eS(o.state.status==="success"?{isSuccess:!0,data:o.state.data}:{isSuccess:!1})==="pending"?5e3:!1});return eS(i)}function PJ(e,n){return e===void 0?{}:n?{visibility:"skipped"}:{visibility:e}}function eS(e){if(!e.isSuccess||!e.data)return"unknown";const n=e.data.filter(i=>i.trigger!==ii.probe);if(!n.some(i=>i.status===Zt.completed||i.status===Zt.partial))return n.some(i=>i.status===Zt.queued||i.status===Zt.running)?"pending":n.length>0?"incomplete":"skipped"}function Ta(e){return{"--onb-delay":`${e}ms`}}function qJ(){return l.jsx("div",{className:"onb-check relative mx-auto size-20","aria-hidden":"true",children:l.jsxs("svg",{viewBox:"0 0 80 80",className:"relative size-20",children:[l.jsx("circle",{className:"onb-check-ring",cx:"40",cy:"40",r:"36",fill:"none",strokeWidth:"3",pathLength:"1"}),l.jsx("path",{className:"onb-check-mark",d:"M25 41 L35 51 L56 30",fill:"none",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",pathLength:"1"})]})})}function Ad({className:e="",delayMs:n,labelledBy:i,children:o}){return l.jsx("section",{"aria-labelledby":i,className:`onb-reveal onb-tile flex flex-col overflow-hidden rounded-2xl border border-default bg-surface p-6 md:p-7 ${e}`,style:Ta(n),children:o})}function Jm({id:e,eyebrow:n,title:i,children:o}){return l.jsxs("div",{children:[l.jsx("p",{className:"text-xs font-medium uppercase tracking-wide text-muted",children:n}),l.jsx("h2",{id:e,className:"mt-1.5 text-2xl font-semibold tracking-tight text-heading",children:i}),l.jsx("p",{className:"mt-2 text-sm text-secondary",children:o})]})}const Nd=[{id:"diagnose",label:"Diagnose",prompt:"Why did we lose citations this week?",calls:["canonry_insights_list","canonry_competitor_landscape"],reply:"Two engines started citing a competitor’s comparison page instead of yours. Want me to draft one that answers the same query?"},{id:"fix",label:"Fix",prompt:"Fix the weakest pages on the site.",calls:["canonry_technical_aeo_pages","canonry_site_health_page_audit"],reply:"The lowest-scoring pages are missing structured data and answer-first intros. I’ve written the changes for you to review."},{id:"automate",label:"Automate",prompt:"Re-check everything every Monday and tell me in Slack.",calls:["canonry_schedule_set","canonry_agent_webhook_attach"],reply:"Done. A sweep runs every Monday, and I’ll post what changed to Slack."}],MJ=9e3;function BJ(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function LJ({projectName:e}){const n=N.useContext(Xm),[i,o]=N.useState(0),[u,h]=N.useState(!1),[f,b]=N.useState(!1);N.useEffect(()=>{if(u||BJ())return;const k=window.setTimeout(()=>o(S=>(S+1)%Nd.length),MJ);return()=>window.clearTimeout(k)},[i,u]);const v=async()=>{try{await navigator.clipboard.writeText($f),n("copy_agent_command"),b(!0),window.setTimeout(()=>b(!1),1800)}catch{xn({tone:"negative",title:"Could not copy the command",detail:`Run ${$f} in your terminal.`})}},x=Nd[i]??Nd[0];return l.jsxs(l.Fragment,{children:[l.jsxs(Jm,{id:"onb-agent-heading",eyebrow:"Your agent",title:"Let your agent run it.",children:["Your agent can do everything in Canonry: diagnose a drop, fix pages, run sweeps and scans, and write the client report. Use Claude Code, Codex, Cursor, or Aero, the analyst built into"," ",l.jsx("span",{className:"text-heading",children:e})," that reviews every sweep on its own."]}),l.jsxs("div",{className:"mt-6 flex flex-1 flex-col rounded-xl border border-default bg-bg",onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),onFocus:()=>h(!0),children:[l.jsxs("div",{className:"flex items-center gap-1 border-b border-default px-3 py-2",role:"tablist","aria-label":"Example agent sessions",children:[Nd.map((k,S)=>l.jsx("button",{type:"button",role:"tab","aria-selected":S===i,onClick:()=>{o(S),h(!0)},className:`rounded-md px-2.5 py-1 text-xs font-medium transition-colors ${S===i?"bg-surface-inset text-heading":"text-muted hover:text-secondary"}`,children:k.label},k.id)),l.jsx("span",{className:"ml-auto text-xs text-faint",children:"Example"})]}),l.jsxs("div",{role:"tabpanel","aria-label":`${x.label} example`,className:"flex-1 p-4 font-mono text-[13px] leading-relaxed",children:[l.jsxs("p",{className:"onb-type text-heading",style:Ta(150),children:[l.jsx("span",{className:"text-muted",children:"> "}),x.prompt]}),x.calls.map((k,S)=>l.jsxs("p",{className:"onb-line mt-1 text-muted first:mt-3",style:Ta(1300+S*450),children:[l.jsx("span",{className:"text-positive",children:"●"})," ",k]},k)),l.jsx("p",{className:"onb-line mt-3 text-secondary",style:Ta(1500+x.calls.length*450),children:x.reply}),l.jsx("span",{className:"onb-caret mt-2 inline-block h-4 w-2 bg-current align-middle text-secondary",style:Ta(1900+x.calls.length*450),"aria-hidden":"true"})]},x.id)]}),l.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[l.jsx("code",{className:"min-w-0 flex-1 truncate rounded-lg border border-default bg-surface-inset px-3 py-2 font-mono text-[13px] text-heading",children:$f}),l.jsxs(re,{type:"button",variant:"secondary",size:"sm",className:"h-9 md:h-9",onClick:()=>{v()},children:[f?l.jsx(Oc,{className:"size-4","aria-hidden":"true"}):l.jsx(U0,{className:"size-4","aria-hidden":"true"}),f?"Copied":"Copy"]}),l.jsx("a",{href:zJ,target:"_blank",rel:"noreferrer",className:"text-sm font-medium text-link underline-offset-4 hover:underline",children:"Other clients"})]})]})}const UJ=[{icon:L0,label:"Search Console",action:"connect_search_console",to:"/projects/$projectName/search-console"},{icon:gS,label:"Google Analytics",action:"connect_analytics",to:"/projects/$projectName/activity"},{icon:bS,label:"Business Profile",action:"connect_business_profile",to:"/projects/$projectName/local"}],VJ=["GPTBot","ClaudeBot","PerplexityBot"];function $J({projectName:e}){const n=N.useContext(Xm);return l.jsxs(l.Fragment,{children:[l.jsx(Jm,{id:"onb-data-heading",eyebrow:"Server-side traffic",title:"See the AI bots.",children:"AI crawlers and answer-engine fetches never run JavaScript, so Google Analytics never sees them. Canonry reads them straight from your server."}),l.jsx(GJ,{}),l.jsxs(et,{to:"/traffic",onClick:()=>n("connect_server_traffic"),"aria-label":"Connect server-side traffic",className:"group flex items-center gap-3 rounded-xl border border-strong bg-surface-inset px-4 py-3 text-sm font-medium text-heading transition-colors hover:bg-surface-inset-hover",children:[l.jsx(vS,{className:"size-4 text-positive","aria-hidden":"true"}),l.jsxs("span",{className:"flex-1",children:["Connect your server",l.jsx("span",{className:"block text-xs font-normal text-secondary",children:"Cloudflare, Vercel, WordPress, or Cloud Run"})]}),l.jsx(jc,{className:"size-4 text-link transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]}),l.jsx("p",{className:"mt-5 text-xs font-medium uppercase tracking-wide text-muted",children:"Also connect"}),l.jsx("ul",{className:"mt-1 divide-y divide-default",children:UJ.map(({icon:i,label:o,action:u,to:h})=>l.jsx("li",{children:l.jsxs(et,{to:h,params:{projectName:e},"aria-label":`Connect ${o}`,onClick:()=>n(u),className:"group flex items-center gap-3 py-2.5 text-sm text-heading",children:[l.jsx(i,{className:"size-4 text-muted","aria-hidden":"true"}),l.jsx("span",{className:"flex-1",children:o}),l.jsx(jc,{className:"size-3.5 text-link transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})},o))})]})}function GJ(){const e=[22,70,118];return l.jsxs("div",{className:"relative my-6 h-36","aria-hidden":"true",children:[l.jsx("svg",{viewBox:"0 0 200 140",preserveAspectRatio:"none",className:"absolute inset-0 size-full",children:e.map((n,i)=>l.jsx("path",{className:"onb-flow",style:Ta(i*400),d:`M20 ${n} C 100 ${n}, 118 70, 170 70`,fill:"none",strokeWidth:"1.5"},n))}),VJ.map((n,i)=>l.jsx("span",{className:"onb-bot absolute left-0 -translate-y-1/2 rounded-md border border-default bg-bg-elevated px-2 py-1 font-mono text-[11px] text-secondary",style:{top:`${(e[i]??70)/140*100}%`,...Ta(i*600)},children:n},n)),l.jsx("span",{className:"onb-hub absolute right-0 top-1/2 flex size-11 -translate-y-1/2 items-center justify-center rounded-2xl bg-accent text-on-inverse",children:l.jsx(vS,{className:"size-5"})})]})}const KJ=["M","T","W","T","F","S","S"];function HJ({projectName:e}){return l.jsxs(l.Fragment,{children:[l.jsx(Jm,{id:"onb-schedule-heading",eyebrow:"Scheduled sweeps",title:"Runs on its own.",children:"Re-measure every week without lifting a finger, so a drop shows up before a customer notices."}),l.jsx("ol",{className:"mt-6 grid grid-cols-7 gap-2","aria-hidden":"true",children:KJ.map((n,i)=>l.jsxs("li",{className:"flex flex-col items-center gap-2",children:[l.jsx("span",{className:"onb-day size-3 rounded-full bg-surface-inset",style:Ta(i*500)}),l.jsx("span",{className:"text-xs text-muted",children:n})]},i))}),l.jsx(fC,{projectName:e,to:"/projects/$projectName/settings",icon:yS,label:"Set a schedule",action:"set_schedule"})]})}function FJ({projectName:e,score:n}){return l.jsxs(l.Fragment,{children:[l.jsx(Jm,{id:"onb-alerts-heading",eyebrow:"Notifications",title:"Hear about changes.",children:"Get a webhook in Slack or anywhere else when a sweep finishes or a score moves."}),l.jsxs("div",{className:"relative mt-6 flex h-14 items-center","aria-hidden":"true",children:[l.jsx("span",{className:"onb-bell flex size-10 items-center justify-center rounded-full border border-default bg-bg-elevated",children:l.jsx(Hf,{className:"size-4 text-secondary"})}),l.jsxs("span",{className:"onb-toast ml-3 flex items-center gap-2 rounded-xl border border-default bg-bg-elevated px-3 py-2 text-sm shadow-[0_8px_24px_var(--color-shadow-panel)]",children:[l.jsx("span",{className:"size-2 rounded-full bg-positive-400"}),l.jsx("span",{className:"text-heading",children:e}),l.jsx("span",{className:"text-secondary",children:n===null?"sweep finished":`page health ${n}`})]})]}),l.jsx(fC,{projectName:e,to:"/projects/$projectName/settings",icon:Hf,label:"Add a notification",action:"add_notification"})]})}function fC({projectName:e,to:n,icon:i,label:o,action:u}){const h=N.useContext(Xm);return l.jsxs(et,{to:n,params:{projectName:e},onClick:()=>h(u),className:"group mt-6 inline-flex items-center gap-2 self-start text-sm font-medium text-link",children:[l.jsx(i,{className:"size-4","aria-hidden":"true"}),o,l.jsx(jc,{className:"size-3.5 transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})}const QJ=N.lazy(async()=>({default:(await Hi(()=>import("./SiteHealthSection-hi54eSIt.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),ZJ=`Public pages only, crawled from this computer and stored locally. The first scan reads up to ${fj} pages, then stops.`,YJ=1800,XJ="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",JJ="Help me set up Canonry for my public site.\n\nUse the official Canonry docs:\n- Agent quickstart: https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent\n- CLI reference: https://github.com/Canonry/canonry/blob/main/skills/canonry/references/canonry-cli.md\n- Plugin setup: https://github.com/Canonry/canonry/blob/main/docs/plugins.md\n- MCP setup: https://github.com/Canonry/canonry/blob/main/docs/mcp.md\n\nPick one path and stay on it. Use connected Canonry tools (plugin or MCP) only if you have them and I have not pointed you at a specific install. A connected tool runs in its own process and never sees `CANONRY_CONFIG_DIR`, `CANONRY_PORT`, or anything else you export in a shell, so it always acts on my default install. If I named a config directory, a port, or a sandbox, that is the shell path: use `cnry` and tell me which path you chose. Never mix the two in one run, and never create a duplicate project. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet. Country and language are only applied when a project is created, so if you reuse an existing project, report its country and language instead of changing them.\n2. Shell path only: confirm `cnry` is on PATH, then run `cnry --version`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. Then run `cnry doctor --format json`, which is the command that says whether config, database, and server are in place. `cnry --version` does not read config and succeeds on a completely unconfigured install, so it cannot answer this. If config is missing, run `cnry bootstrap` yourself: it is not interactive, takes about a second, and is safe to rerun. Do not hand it to me and wait. The interactive command is `cnry init`, which is optional provider and OAuth setup that Page Health does not need. Bootstrap prints an API key, so do not repeat its output back to me, and never ask me to paste passwords, API keys, OAuth credentials, or command output.\n3. Confirm the API is reachable. `cnry doctor --format json` reports it, and any project read exits non-zero with `CONNECTION_ERROR` when it is not. If it is unreachable, propose `cnry start` and wait for approval. Use `cnry start`, which is the background daemon, and not `cnry serve`, which runs in the foreground and will block you until I stop it, even though some error messages suggest it. Stop anything you started with `cnry stop`.\n4. List projects with the connected project tool or `cnry project list --format json`, and reuse one whose domain matches. Confirm the proposed name is not already assigned to a different domain. To find out whether a project has already been scanned, run `cnry technical-aeo score <project> --format json` with no `--run-id`, which reports the latest run. Read the `hasData` field, not the score: this command exits 0 and reports `aggregateScore: 0` for a project that has never been scanned, so reading the score alone would have you tell me my site scored zero. If `hasData` is true and `runStatus` is `completed` or `partial`, read that scan instead of starting a new one. If no project matches, show the exact create operation and wait for approval.\n5. Propose a bounded Site Health scan: `--max-pages 100` for a first look, plus whether dead-link checking is on (it is off unless you pass `--check-dead-links`). Show the connected operation or the exact `cnry technical-aeo run <project> --max-pages 100 --wait --format json` command with the project name filled in, and wait for separate approval before scanning. `--wait` polls for up to 15 minutes and returns only the run id and status. If the status it returns is still `queued` or `running`, the scan has not finished: do not rerun it or report results, poll `cnry technical-aeo progress <project> --run-id <run-id> --format json` until it is terminal. If `--wait` outruns your own tool timeout first, recover the run id with `cnry technical-aeo score <project> --format json` and poll the same way.\n6. When the run is `completed` or `partial`, read `cnry technical-aeo crawl <project> --run-id <run-id> --format json` first. It is the only one of these commands that carries `termination` and `complete`; the score and pages commands do not. Then read `cnry technical-aeo score <project> --run-id <run-id> --format json` and `cnry technical-aeo pages <project> --run-id <run-id> --sort score-asc --limit 10 --format jsonl`. Tell me the termination reason in plain words and whether the scan covered the whole site or stopped at a page, link, depth, or time limit. A `partial` run scored the pages it reached and not my site, so never present it as a full-site result. If it stopped early, the fix depends on the reason, so say which: a page or depth limit needs a larger budget, a time limit needs a smaller scan (a lower `--max-pages` or `--max-depth`). If the run failed or was cancelled, inspect the run error and stop.\n7. Summarize only completed evidence, then propose AI Visibility setup. Ask before you add queries, connect providers, start a provider-backed or quota-consuming run, edit files, or publish.";function WJ(e,n){return e==="legacy"?"legacy":e==="platform"?"platform":n.state==="success"?n.projectCount===0?"platform":"legacy":n.state==="error"?"retry":"loading"}const eW="2000-01-01T00:00:00.000Z",tW=5e3;function nW(e,n){const i=new Set,o=new Map;for(const f of n)f.trigger!==ii.probe&&(o.has(f.projectId)||o.set(f.projectId,f.id),(f.status===Zt.completed||f.status===Zt.partial)&&i.add(f.projectId));const h=(e.every(f=>f.createdAt)?[...e].sort((f,b)=>(f.createdAt??"").localeCompare(b.createdAt??"")||f.name.localeCompare(b.name)):e).find(f=>!i.has(f.id));return h?{projectName:h.name,runId:o.get(h.id)}:null}const gC=[{value:"US",label:"United States"},{value:"CA",label:"Canada"},{value:"GB",label:"United Kingdom"},{value:"AU",label:"Australia"},{value:"NZ",label:"New Zealand"},{value:"IE",label:"Ireland"},{value:"DE",label:"Germany"},{value:"FR",label:"France"},{value:"ES",label:"Spain"},{value:"IT",label:"Italy"},{value:"NL",label:"Netherlands"},{value:"BR",label:"Brazil"},{value:"MX",label:"Mexico"},{value:"IN",label:"India"},{value:"SG",label:"Singapore"},{value:"JP",label:"Japan"}],yC=[{value:"en",label:"English"},{value:"es",label:"Spanish"},{value:"fr",label:"French"},{value:"de",label:"German"},{value:"it",label:"Italian"},{value:"pt",label:"Portuguese"},{value:"nl",label:"Dutch"},{value:"ja",label:"Japanese"}];function aW(e,n){try{const i=new Intl.DisplayNames(["en"],{type:"region"}),o=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?i.of(e.toUpperCase()):void 0,h=n?o.of(n.toLowerCase()):void 0;return`${u??(e||"Country")} · ${h??(n||"Language")}`}catch{return`${e||"Country"} · ${n||"Language"}`}}function iW(e,n){const i=e.trim().toUpperCase(),o=n.trim().toLowerCase();return{countryValid:gC.some(u=>u.value===i),languageValid:yC.some(u=>u.value===o)}}function sW(e){const n=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(n)||n.includes(":")}function oW(e){const n=e.trim();if(!n)return null;const i=/^[a-z][a-z\d+.-]*:\/\//i.test(n)?n:`https://${n}`;let o;try{o=new URL(i)}catch{return null}if(o.protocol!=="http:"&&o.protocol!=="https:")return null;const u=o.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||sW(u)||!u.includes("."))return null;const h=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return h?{canonicalDomain:u,projectName:h,displayName:u}:null}async function rW(e,n=YJ){let i;const o=new Promise(h=>{i=setTimeout(()=>h({state:"timed-out"}),n)}),u=await Promise.race([e.then(h=>({state:"queued",run:h})),o]);return i&&clearTimeout(i),u}function lW(e,n){e.catch(()=>{xn({title:"Site Health scan did not start",detail:"The project is safe. Choose Run scan in Site Health to retry.",tone:"negative",dedupeKey:`site-health-dispatch:${n}`})})}function bC(e){const n=N.useRef(d1()).current,i=N.useRef(new Set),o=N.useCallback((u,h)=>{if(h){if(i.current.has(h))return;i.current.add(h)}y1({...u,surface:e,eventId:m1()})},[e]);return{onboardingSessionId:n,emit:o}}function tS(e,n){return e instanceof Tn&&e.statusCode===409?"A project with this name already exists. Change the project name, or open the existing project.":e instanceof Error&&e.message?e.message:n}function O0(){return l.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Preparing setup"}),l.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),l.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[l.jsx(Cs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function cW({onRetry:e}){return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Can’t load projects"}),l.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),l.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),l.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),l.jsx(re,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function uW({projectName:e,initialRunId:n}){return l.jsx(E1,{title:"Site Health setup",children:l.jsx(dW,{projectName:e,initialRunId:n})})}function dW({projectName:e,initialRunId:n}){const i=Rs(),o=yt({...Oo({client:ee}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:h}=bC("site_health"),[f]=N.useState(()=>DG(n));N.useEffect(()=>{f&&zG()},[f]),N.useEffect(()=>{e&&h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.started",step:"run",resumed:!!n&&!f},"onboarding.started")},[h,f,n,u,e]),N.useEffect(()=>{!e||!n||sN(e)?.runId!==n&&iN(e,n)},[n,e]);const v=yt({...w1({client:ee,path:{id:n??""}}),enabled:!!n,refetchInterval:({state:_})=>{const z=_.data?.status;return z==="completed"||z==="partial"||z==="failed"||z==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}).data?.status;if(N.useEffect(()=>{if(!e||!n||!v)return;if(v==="completed"||v==="partial"){h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"automatic"},"onboarding.step_completed:run"),em(n);return}if(v!=="failed"&&v!=="cancelled")return;const _=v==="cancelled"?"run_cancelled":"run_failed";h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:_},`onboarding.blocked:run:${_}`),em(n)},[h,n,u,e,v]),!e)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project not found"}),l.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),l.jsx(re,{type:"button",variant:"secondary",onClick:()=>{i({to:"/projects"})},children:"View projects"})]});if(o.isPending)return l.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[l.jsx(_o,{current:"site"}),l.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[l.jsx(Cs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(o.isError)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),l.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),l.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[l.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),l.jsx(re,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{o.refetch()},children:"Retry project check"})]})]});const x=o.data.find(_=>_.name===e);if(!x)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project not found"}),l.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),l.jsx(re,{type:"button",variant:"secondary",onClick:()=>{i({to:"/projects"})},children:"View projects"})]});const k=()=>{i({to:"/setup",search:{onboarding:"site-health",setupProject:x.name},replace:!0})},S=()=>{i({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:x.name},replace:!0})},C=()=>{h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"skipped"},"onboarding.step_completed:run"),i({to:"/setup",search:{onboarding:"complete",setupProject:x.name,skipped:"visibility"},replace:!0})};return l.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[l.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),l.jsx(N.Suspense,{fallback:l.jsxs("div",{className:"space-y-5",children:[l.jsx(_o,{current:"site"}),l.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[l.jsx(Cs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:l.jsx(QJ,{projectName:x.name,projectId:x.id,initialRunId:n,onReleaseInitialRun:k,showOnboardingActions:!0,onContinueOnboarding:S,onSkipOnboarding:C})})]})}function mW(){const e=iS({from:"/setup"}),n=e.onboarding==="site-health"&&!e.setupProject,i=e.onboarding==="site-health"&&e.experience!=="legacy",o=oK(),u=e.experience==="legacy"?"legacy":e.experience==="platform"?"platform":o,[h,f]=N.useState(!1),[b,v]=N.useState(void 0),x=yt({...Oo({client:ee}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),k=yt({...Bm({client:ee,query:{kind:ze["site-audit"],since:eW,limit:tW}}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),S=u==="auto"&&x.isSuccess&&x.isFetchedAfterMount&&x.data.length===0;N.useEffect(()=>{S&&f(!0)},[S]);const C=u!=="auto"?{state:"idle"}:x.isSuccess&&x.isFetchedAfterMount?{state:"success",projectCount:x.data.length}:x.isError?{state:"error"}:{state:"loading"},_=u==="legacy"?"legacy":h||S?"platform":WJ(u,C);if(e.onboarding==="complete"&&e.setupProject)return l.jsx(OJ,{projectName:e.setupProject,skippedVisibility:e.skipped==="visibility"});if(n||i)return l.jsx(uW,{projectName:e.setupProject,initialRunId:e.siteHealthRunId});const z=u==="auto"&&_==="legacy"&&!e.setupProject&&x.isSuccess;if(z&&b===void 0)return k.isError?v(null):k.isSuccess&&k.isFetchedAfterMount&&v(nW(x.data,k.data)),l.jsx(O0,{});const q=z?b:null;return q?l.jsx(pW,{projectName:q.projectName,runId:q.runId}):_==="legacy"?l.jsx(RJ,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health",onboardingFinish:e.onboarding==="site-health"||e.onboarding==="first-run"}):_==="loading"?l.jsx(O0,{}):_==="retry"?l.jsx(cW,{onRetry:()=>{x.refetch()}}):l.jsx(hW,{onActivationStarted:()=>f(!0),skipSiteScan:e.siteScan==="skip"})}function pW({projectName:e,runId:n}){const i=Rs();return N.useEffect(()=>{i({to:"/setup",search:{onboarding:"site-health",setupProject:e,...n?{siteHealthRunId:n}:{}},replace:!0})},[i,e,n]),l.jsx(O0,{})}function hW({onActivationStarted:e,skipSiteScan:n}){return l.jsx(E1,{title:"Site Health setup",children:l.jsx(fW,{onActivationStarted:e,skipSiteScan:n})})}function fW({onActivationStarted:e,skipSiteScan:n}){const i=Rs(),o=ma(),u=wJ(),h=yt({...rF({client:ee}),retry:!1}),f=si(lF()),[b,v]=N.useState(""),[x,k]=N.useState(""),[S,C]=N.useState(""),[_,z]=N.useState("US"),[q,T]=N.useState("en"),[V,Y]=N.useState(!1),[M,U]=N.useState("idle"),[Z,te]=N.useState(null),[B,X]=N.useState(null),[le,Je]=N.useState(!1),[nt,$e]=N.useState(null),[Pe,Se]=N.useState(!1),Ue=h.isError?void 0:h.data,P=typeof Ue?.enabled=="boolean"?Ue.enabled:null,J=f.isPending?f.variables.body.enabled:P,[be,je]=N.useState(null),W=N.useRef(null),{onboardingSessionId:_e,emit:qe}=bC("platform");N.useEffect(()=>{qe({flowVersion:ft,onboardingSessionId:_e,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[qe,_e]);const ve=oW(b),de=x||ve?.projectName||"",ce=S||ve?.displayName||"",F=M==="creating"||M==="dispatching",pe=B??nt,Oe=aW(_,q),{countryValid:Ae,languageValid:st}=iW(_,q),Ve=Ae&&st;N.useEffect(()=>{pe&&W.current?.focus()},[pe]);const At=(Me,ct)=>i({to:"/setup",search:{...ct?{siteHealthRunId:ct}:{},onboarding:"site-health",setupProject:Me.name},replace:!0}),Ke=async Me=>{U("dispatching"),$e(null);try{const ct=u.mutateAsync({projectName:Me.name,projectId:Me.id,projectLabel:Me.displayName||Me.name,suppressErrorToast:!0,body:{checkDeadLinks:!0,maxPages:fj}}),Ht=await rW(ct);if(Ht.state==="queued"){qe({flowVersion:ft,onboardingSessionId:_e,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"}),RG(Ht.run.runId),await At(Me,Ht.run.runId);return}ct.then(()=>{qe({flowVersion:ft,onboardingSessionId:_e,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"})},Ft=>{qe({flowVersion:ft,onboardingSessionId:_e,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:xc(Ft,"run_rejected")})}),lW(ct,Me.id),await At(Me)}catch(ct){U("recovery"),$e(tS(ct,"The project was created, but the Site Health scan could not be started."));const Ht=xc(ct,"run_rejected");qe({flowVersion:ft,onboardingSessionId:_e,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Ht}),qe({flowVersion:ft,onboardingSessionId:_e,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:Ht},`onboarding.blocked:run:${Ht}`)}},me=async Me=>{if(Me.preventDefault(),!(!ve||!n&&!V||!Ve||F)){U("creating"),X(null),Je(!1),$e(null);try{const ct=await NK({name:de,displayName:ce,canonicalDomain:ve.canonicalDomain,country:_,language:q});if(e(),te(ct),qe({flowVersion:ft,onboardingSessionId:_e,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),await o.invalidateQueries({queryKey:Es({client:ee})}),n){await i({to:"/setup",search:{experience:"legacy",onboarding:"first-run",setupProject:ct.name},replace:!0});return}await Ke(ct)}catch(ct){U("idle");const Ht=ct instanceof Tn&&ct.statusCode===409;Je(Ht),X(tS(ct,"Could not create the project. Try again.")),qe({flowVersion:ft,onboardingSessionId:_e,event:"onboarding.blocked",step:"project",action:"save",reasonCode:xc(ct,"project_create_failed")},"onboarding.blocked:project"),Ht&&(e(),o.invalidateQueries({queryKey:Es({client:ee})}))}}},at=()=>{Z&&!F&&Ke(Z)},zt=()=>{F||i({to:"/projects"})},Pn=async()=>{try{await navigator.clipboard.writeText(JJ),Se(!0)}catch{xn({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}},Kt=async Me=>{je(null);try{const ct=await f.mutateAsync({client:ee,body:{enabled:Me}});o.setQueryData(AN({client:ee}),ct),ct.enabled!==Me&&je(`The server kept telemetry ${ct.enabled?"on":"off"}. Check its telemetry settings.`)}catch{je("Could not update telemetry. Try again.")}};return Z&&M==="recovery"?l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx(_o,{current:"site"}),l.jsx("div",{className:"page-header mt-8",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project created"}),l.jsxs("p",{className:"page-subtitle",children:[Z.displayName||Z.name," is ready. The Site Health scan needs another try."]})]})}),l.jsxs("div",{ref:W,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:nt}),l.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),l.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[l.jsx(re,{type:"button",onClick:at,children:"Retry Site Health scan"}),l.jsx(re,{type:"button",variant:"secondary",onClick:()=>{At(Z)},children:"Continue setup"})]})]})]}):l.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[n?null:l.jsx(_o,{current:"site"}),l.jsxs("header",{className:`mb-8 ${n?"":"mt-8"}`,children:[l.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:n?"Create a project":"Scan your site"}),l.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:n?"Add a public domain, then choose the queries you want to track. No site scan will run.":"Enter your public website to see its pages, structure, internal links, and technical SEO scores."})]}),l.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:fn(me),noValidate:!0,children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),l.jsx("input",{id:"launchpad-domain",className:"h-11 w-full rounded-md border border-strong bg-bg-elevated/50 px-3 text-base text-heading outline-none transition placeholder:text-muted focus:border-mono-500 focus:ring-1 focus:ring-mono-500",type:"text",inputMode:"url",autoComplete:"url",autoCapitalize:"none",spellCheck:!1,required:!0,"aria-invalid":!!(b&&!ve),"aria-describedby":b&&!ve?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:b,onChange:Me=>{v(Me.target.value),X(null),Je(!1)}}),l.jsx("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:n?l.jsxs(l.Fragment,{children:["A public domain is still required."," ",l.jsx(et,{to:"/setup",search:{experience:"platform"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Map with Site Health instead"})]}):l.jsxs(l.Fragment,{children:["Only public pages are scanned."," ",l.jsx(et,{to:"/setup",search:{experience:"platform",onboarding:"first-run",siteScan:"skip"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]})}),b&&!ve?l.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),l.jsxs("details",{className:"group border-y border-default",children:[l.jsxs("summary",{className:"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 py-3 text-sm [&::-webkit-details-marker]:hidden",children:[l.jsx("span",{className:"font-medium text-heading",children:"Project name and locale"}),l.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[Oe,l.jsx(Ic,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),l.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[ve?l.jsxs("div",{children:[l.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),l.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:de,onChange:Me=>k(Me.target.value)})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),l.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:ce,onChange:Me=>C(Me.target.value)})]})]})]}):null,l.jsxs("div",{children:[l.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),l.jsx("select",{id:"launchpad-country",className:"setup-input h-10",value:_,onChange:Me=>z(Me.target.value),children:gC.map(Me=>l.jsx("option",{value:Me.value,children:Me.label},Me.value))})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),l.jsx("select",{id:"launchpad-language",className:"setup-input h-10",value:q,onChange:Me=>T(Me.target.value),children:yC.map(Me=>l.jsx("option",{value:Me.value,children:Me.label},Me.value))})]})]})]})]})]}),n?null:l.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[l.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:V,onChange:Me=>Y(Me.target.checked),"aria-label":"Allow Canonry to scan this public site."}),l.jsxs("span",{className:"flex items-center gap-1.5",children:[l.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),l.jsx(la,{text:ZJ})]})]}),pe?l.jsxs("div",{ref:W,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:pe}),le?l.jsx(re,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:zt,children:"View projects"}):null]}):null,l.jsxs("div",{className:"grid gap-2",children:[l.jsx(re,{className:"h-11 w-full",type:"submit",disabled:!ve||!n&&!V||!Ve||F,children:M==="creating"||M==="dispatching"?l.jsxs(l.Fragment,{children:[l.jsx(Cs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," ",n?"Creating project…":"Mapping site…"]}):n?"Create project":"Scan site"}),M==="dispatching"?l.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),l.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[l.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),l.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any agent."}),l.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[l.jsxs(re,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:fn(Pn),children:[Pe?l.jsx(Oc,{className:"size-3.5","aria-hidden":"true"}):l.jsx(U0,{className:"size-3.5","aria-hidden":"true"}),l.jsx("span",{"aria-live":"polite",children:Pe?"Copied setup request":"Copy setup request"})]}),l.jsx(re,{asChild:!0,variant:"ghost",size:"sm",children:l.jsxs("a",{href:XJ,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",l.jsx(X5,{className:"size-3.5","aria-hidden":"true"}),l.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]}),P!==null?l.jsxs("section",{className:"mt-6 border-t border-default pt-5","aria-labelledby":"telemetry-title",children:[l.jsxs("label",{className:`flex min-h-11 items-start gap-3 py-2 ${f.isPending?"cursor-wait":"cursor-pointer"}`,children:[l.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg accent-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mono-500 disabled:cursor-wait",type:"checkbox",checked:J??!1,disabled:f.isPending,onChange:Me=>{Kt(Me.target.checked)},"aria-describedby":"telemetry-detail"}),l.jsxs("span",{className:"grid gap-0.5",children:[l.jsx("span",{id:"telemetry-title",className:"text-sm leading-5 text-heading",children:"Share anonymous product telemetry"}),l.jsx("span",{id:"telemetry-detail",className:"max-w-[70ch] text-sm leading-5 text-secondary",children:"Helps prioritize improvements. Canonry does not send raw domains, URLs, queries, answer content, or credentials."})]})]}),f.isPending?l.jsx("p",{className:"mt-1 text-sm text-secondary",role:"status",children:"Saving preference…"}):null,be?l.jsx("p",{className:"mt-1 text-sm text-negative",role:"alert",children:be}):null]}):null]})}function gW(){return l.jsx("div",{className:"page-container",children:l.jsx("section",{className:"page-section",children:l.jsxs(_a,{className:"surface-card empty-card",children:[l.jsx("h1",{children:"Route not found"}),l.jsx("p",{children:"The current path does not map to a dashboard view."}),l.jsx(re,{asChild:!0,children:l.jsx(et,{to:"/",children:"Return to overview"})})]})})})}const za=Ds(()=>Hi(()=>import("./ProjectPage-DmZZ2C7q.js"),__vite__mapDeps([5,1,0,2,3,4,6,7,8,9,10,11]),import.meta.url),"ProjectPage"),yW=Ds(()=>Hi(()=>import("./RunsPage-DHTvHcGm.js"),__vite__mapDeps([12,1,10,4,2,7,11]),import.meta.url),"RunsPage"),bW=Ds(()=>Hi(()=>import("./HistoryPage-DvupqQDM.js"),__vite__mapDeps([13,1,9,10,4,2,7,11]),import.meta.url),"HistoryPage"),vW=Ds(()=>Hi(()=>import("./SettingsPage-BwAFzB7A.js"),__vite__mapDeps([14,1,10,4,2,7,11]),import.meta.url),"SettingsPage"),xW=Ds(()=>Hi(()=>import("./BacklinksPage-B525ij0g.js"),__vite__mapDeps([15,1,2,10,4,7,11]),import.meta.url),"BacklinksPage"),wW=Ds(()=>Hi(()=>import("./TrafficPage-BOcXASAM.js"),__vite__mapDeps([16,1,8,2,10,4,7,11]),import.meta.url),"TrafficPage"),kW=Ds(()=>Hi(()=>import("./TrafficSourceDetailPage-DTq0cN6g.js"),__vite__mapDeps([17,1,8,3,4,2,10,7,11]),import.meta.url),"TrafficSourceDetailPage"),SW=Ds(()=>Hi(()=>import("./MeasurementPropertyPage-CwDbi1XN.js"),__vite__mapDeps([18,1,3,4,6,7,2,10,11]),import.meta.url),"MeasurementPropertyPage");function jW(){return l.jsx(TX,{children:l.jsx(gH,{children:l.jsx(_X,{})})})}const Un=T5()({component:jW,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,runId:typeof e.runId=="string"?e.runId:void 0,siteHealthRunId:typeof e.siteHealthRunId=="string"?e.siteHealthRunId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0,onboarding:e.onboarding==="site-health"||e.onboarding==="first-run"||e.onboarding==="complete"?e.onboarding:void 0,experience:e.experience==="legacy"||e.experience==="platform"?e.experience:void 0,siteScan:e.siteScan==="skip"?"skip":void 0,skipped:e.skipped==="visibility"?"visibility":void 0,setupProject:typeof e.setupProject=="string"?e.setupProject:void 0,scope:typeof e.scope=="string"?e.scope:void 0,class:typeof e.class=="string"?e.class:void 0,...Object.fromEntries(["queryWorkspace","researchMode","trackingQueryId","measurementScope","measurementScopeKey","measurementMarketKey","queryClass","measurementProvider","measurementModel","measurementLocation","measurementFrom","measurementTo","measurementRevision","measurementRunId","measurementQueryKey","measurementAnswer"].map(n=>[n,typeof e[n]=="string"?e[n]:void 0]))})}),AW=Mt({getParentRoute:()=>Un,path:"/",component:uJ,beforeLoad:async({context:e})=>{let n=e.queryClient.getQueryData(Es({client:ee}));if(n===void 0)try{n=await e.queryClient.ensureQueryData(Oo({client:ee}))}catch{return}if(n.length===0)throw P0({to:"/setup"})}}),NW=Mt({getParentRoute:()=>Un,path:"/projects",component:hJ}),CW=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Vn=Mt({getParentRoute:()=>Un,path:"/projects/$projectName",component:()=>l.jsx(Gf,{}),beforeLoad:async({context:e,params:n,location:i})=>{const o=n.projectName;if(!CW.test(o))return;let u=e.queryClient.getQueryData(Es({client:ee}));if(!u)try{u=await e.queryClient.ensureQueryData(Oo({client:ee}))}catch{return}const h=u.find(f=>f.id===o);if(h)throw P0({to:i.pathname.replace(`/projects/${o}`,`/projects/${encodeURIComponent(h.name)}`),replace:!0})}}),_W=Mt({getParentRoute:()=>Vn,path:"/",component:()=>l.jsx(za,{tab:"overview"})}),TW=Mt({getParentRoute:()=>Vn,path:"/portfolio",component:()=>l.jsx(za,{tab:"portfolio"})}),EW=Mt({getParentRoute:()=>Vn,path:"/search-console",component:()=>l.jsx(za,{tab:"search-console"})}),RW=Mt({getParentRoute:()=>Vn,path:"/conversions",component:()=>l.jsx(za,{tab:"conversions"})}),DW=Mt({getParentRoute:()=>Vn,path:"/local",component:()=>l.jsx(za,{tab:"local"})}),zW=Mt({getParentRoute:()=>Vn,path:"/discovery",component:()=>l.jsx(za,{tab:"discovery"})}),IW=Mt({getParentRoute:()=>Vn,path:"/queries",component:()=>l.jsx(za,{tab:"queries"})}),OW=Mt({getParentRoute:()=>Vn,path:"/properties/$targetKey",component:()=>l.jsx(SW,{})}),PW=Mt({getParentRoute:()=>Vn,path:"/report",beforeLoad:({params:e})=>{throw P0({to:"/projects/$projectName",params:e,replace:!0})}}),qW=Mt({getParentRoute:()=>Vn,path:"/activity",component:()=>l.jsx(za,{tab:"activity"})}),MW=Mt({getParentRoute:()=>Vn,path:"/backlinks",component:()=>l.jsx(za,{tab:"backlinks"})}),BW=Mt({getParentRoute:()=>Vn,path:"/technical-aeo",component:()=>l.jsx(za,{tab:"technical-aeo"})}),LW=Mt({getParentRoute:()=>Vn,path:"/history",component:()=>l.jsx(za,{tab:"history"})}),UW=Mt({getParentRoute:()=>Vn,path:"/settings",component:()=>l.jsx(za,{tab:"settings"})}),VW=Mt({getParentRoute:()=>Un,path:"/runs",component:yW}),$W=Mt({getParentRoute:()=>Un,path:"/history",component:bW}),GW=Mt({getParentRoute:()=>Un,path:"/settings",component:vW,beforeLoad:({context:e})=>{}}),KW=Mt({getParentRoute:()=>Un,path:"/setup",component:mW}),HW=Mt({getParentRoute:()=>Un,path:"/backlinks",component:xW}),FW=Mt({getParentRoute:()=>Un,path:"/traffic",component:wW}),QW=Mt({getParentRoute:()=>Un,path:"/traffic/$projectName/$sourceId",component:kW}),ZW=Mt({getParentRoute:()=>Un,path:"*",component:gW}),YW=Un.addChildren([AW,NW,Vn.addChildren([_W,TW,EW,RW,DW,zW,IW,OW,PW,qW,MW,BW,LW,UW]),VW,$W,GW,KW,HW,FW,QW,ZW]);function XW(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const nS=XW(),JW=nS==="/"?"":nS.replace(/\/$/,"");function WW(e,n){return E5({routeTree:YW,basepath:JW||"/",context:{queryClient:e},...n?.initialEntries})}let aS=!1;async function eee(e){return(await I_({client:ee,body:e,keepalive:!0})).data}function tee(){aS||typeof window>"u"||(aS=!0,!(f1()||wo())&&(LG({send:eee}),ee.interceptors.request.use((e,n)=>{const i=n.fetch??globalThis.fetch,o=typeof n.url=="string"?n.url:void 0;return n.fetch=async(u,h)=>{try{return await i(u,h)}catch(f){throw f instanceof DOMException&&f.name==="AbortError"||am({method:e.method,route:o,network:!0}),f}},e}),ee.interceptors.response.use((e,n,i)=>(am({method:n.method,route:typeof i.url=="string"?i.url:void 0,path:aee(n.url),status:e.status}),e)),window.addEventListener("error",e=>{nm({kind:"unhandled",error:e.error})}),window.addEventListener("unhandledrejection",e=>{nm({kind:"unhandled",error:e.reason})}),lee()))}function nee(e){let n=null;const i=()=>{const o=e.state.matches.at(-1);if(!o)return;UG(o.fullPath);const u=e.state.location;if(!u)return;const h=u.search&&typeof u.search=="object"?u.search:{};n&&n.pathname===u.pathname&&HG(n.search,h),n={pathname:u.pathname,search:h}};return i(),e.subscribe("onResolved",i)}function aee(e){try{return new URL(e,window.location.origin).pathname}catch{return}}const iee={LCP:[2500,4e3],INP:[200,500],CLS:[.1,.25],FCP:[1800,3e3],TTFB:[800,1800]};function see(e,n){const[i,o]=iee[e];return n<=i?"good":n<=o?"needs-improvement":"poor"}function oee(){let e=0,n=0,i=-1/0,o=-1/0;return{add(u){u.hadRecentInput||(u.startTime-o<1e3&&u.startTime-i<5e3?n+=u.value:(n=u.value,i=u.startTime),o=u.startTime,e=Math.max(e,n))},value:()=>e}}function ree(){let e=0;return{add(n){n.interactionId&&(e=Math.max(e,n.duration))},value:()=>e}}function lee(){if(typeof PerformanceObserver>"u")return;const e=new Set,n=(b,v)=>{e.has(b)||!Number.isFinite(v)||(e.add(b),QG(b,see(b,v)))},i=(b,v,x={})=>{try{new PerformanceObserver(k=>v(k.getEntries())).observe({type:b,buffered:!0,...x})}catch{}};try{const b=performance.getEntriesByType("navigation")[0];b&&b.responseStart>0&&n("TTFB",b.responseStart)}catch{}i("paint",b=>{const v=b.find(x=>x.name==="first-contentful-paint");v&&n("FCP",v.startTime)});let o=0;i("largest-contentful-paint",b=>{const v=b.at(-1);v&&(o=v.startTime)});const u=oee();i("layout-shift",b=>{for(const v of b)u.add({startTime:v.startTime,value:v.value??0,hadRecentInput:v.hadRecentInput===!0})});const h=ree();i("event",b=>{for(const v of b)h.add(v)},{durationThreshold:40});const f=()=>{o>0&&n("LCP",o),n("CLS",u.value()),h.value()>0&&n("INP",h.value())};document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&f()}),window.addEventListener("pagehide",f)}const cee=6e4;function uee(){const e=N.useRef(SK()).current,[n,i]=N.useState(e?"ready":"checking"),[o,u]=N.useState(null),[h,f]=N.useState(null),[b,v]=N.useState(e),[x,k]=N.useState(!1),[S,C]=N.useState(""),[_,z]=N.useState(""),[q,T]=N.useState(""),[V,Y]=N.useState(!1),[M,U]=N.useState("password"),[Z,te]=N.useState(null),[B,X]=N.useState(!1),[le,Je]=N.useState(!1),nt=N.useRef(null),$e=N.useRef(null),Pe=N.useRef(null),Se=()=>{const F=o?`${o.name}:${o.role}`:e?"api-key:explicit":h?`api-key:${h.id}`:"no-accounts";if(!nt.current||Pe.current!==F){$e.current?.clear();const pe=pH();$e.current=pe,nt.current=WW(pe),nee(nt.current),Pe.current=F}return{queryClient:$e.current,router:nt.current}},Ue=F=>F.authRequired?(k(!0),u(F.user),f(null),v(!1),i(F.user?"ready":"account-login"),!0):!1;N.useEffect(()=>{let F=!1;const pe=async(Oe,Ae=!1)=>{try{const st=await If();if(F)return;f(st),v(!1),i("ready")}catch(st){if(F)return;if(Ae&&st instanceof Tn&&st.statusCode===401)return IK().then(()=>{F||(te(null),f(null),v(!1),Je(!0),i("login"))}).catch(Ve=>{F||(te(Ve instanceof Error?Ve.message:"Could not clear the invalid session"),i(Oe))});te(st instanceof Error?st.message:"Could not verify API key access"),i(Oe)}};return e?(pe("api-key-error"),()=>{F=!0}):(Promise.allSettled([sk(),ik()]).then(([Oe,Ae])=>{if(F||Oe.status==="fulfilled"&&Ue(Oe.value))return;if(Ae.status==="rejected"){const Ve=Ae.reason;te(Ve instanceof Error?Ve.message:"Failed to reach the Canonry API"),i("login");return}const st=Ae.value;st.authenticated?(v(!0),pe("api-key-error",!0)):(f(null),v(!1),i(st.setupRequired?"setup":"login"))}),()=>{F=!0})},[]),N.useEffect(()=>{if(n!=="ready"||e)return;const F=setInterval(()=>{if(x){sk().then(pe=>{pe.authRequired&&!pe.user&&(Je(!0),u(null),f(null),i("account-login"))}).catch(()=>{});return}ik().then(pe=>{pe.authenticated||(Je(!0),f(null),i(pe.setupRequired?"setup":"login"))}).catch(()=>{})},cee);return ak(()=>{Je(!0),u(null),f(null),v(!1),i(x?"account-login":"login")}),()=>{clearInterval(F),ak(null)}},[n,x,e]);const P=async F=>{if(F.preventDefault(),!_.trim()||_.trim().length<8){te("Password must be at least 8 characters");return}if(_!==q){te("Passwords do not match");return}X(!0),te(null);try{if(!(await RK(_.trim())).authenticated){te("Setup failed");return}z(""),T(""),Y(!1),Je(!1),f(null),v(!0),i("checking");try{const Oe=await If();f(Oe),v(!1),i("ready")}catch(Oe){te(Oe instanceof Error?Oe.message:"Could not verify API key access"),i("api-key-error")}}catch(pe){te(pe instanceof Tn||pe instanceof Error?pe.message:"Setup failed")}finally{X(!1)}},J=F=>{z(F),te(null)},be=F=>{T(F),te(null)},je=async F=>{if(F.preventDefault(),!!_.trim()){X(!0),te(null);try{if(!(M==="api-key"?await zK(_.trim()):await DK(_.trim())).authenticated){te(M==="api-key"?"Invalid API key":"Incorrect password");return}const Oe=await If();f(Oe),v(!1),z(""),Y(!1),Je(!1),i("ready")}catch(pe){te(pe instanceof Tn||pe instanceof Error?pe.message:"Authentication failed")}finally{X(!1)}}},W=F=>{U(F),z(""),Y(!1),te(null)},_e=async F=>{if(F.preventDefault(),!(!S.trim()||!_)){X(!0),te(null);try{const pe=await OK(S.trim(),_);if(!pe.user){te("Incorrect name or password.");return}z(""),Je(!1),u(pe.user),f(null),v(!1),i("ready")}catch(pe){te(pe instanceof Tn?pe.message:"Incorrect name or password.")}finally{X(!1)}}};if(n==="ready"){const{queryClient:F,router:pe}=Se();return l.jsx(aH,{account:o,apiKey:h,apiKeyPending:b,children:l.jsx(R5,{client:F,children:l.jsx(D5,{router:pe})})})}const qe=_.trim(),ve=_.length>0&&qe.length<8,de=q.length>0&&_!==q,ce=qe.length>=8&&_===q;return l.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:l.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[l.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[l.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),l.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),l.jsx(_a,{className:"surface-card w-full",children:n==="checking"?l.jsx(yo,{className:"py-8",children:l.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):n==="api-key-error"?l.jsxs(l.Fragment,{children:[l.jsxs(Cr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Could not verify API key access"})]}),l.jsxs(yo,{className:"space-y-4",children:[l.jsx("p",{className:"supporting-copy",children:Z??"Canonry could not verify this session’s access, so the dashboard stayed locked."}),l.jsx(re,{type:"button",className:"w-full",onClick:()=>{window.location.reload()},children:"Try again"})]})]}):n==="account-login"?l.jsxs(l.Fragment,{children:[l.jsxs(Cr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"})]}),l.jsxs(yo,{children:[le?l.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"You were signed out — please sign in again."}):null,l.jsxs("form",{className:"space-y-4",onSubmit:fn(_e),children:[l.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),l.jsx("input",{autoFocus:!0,id:"account-name",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"text",name:"username",autoComplete:"username",value:S,onChange:F=>{C(F.target.value),te(null)},"aria-invalid":!!Z,"aria-describedby":Z?"account-login-error":void 0})]}),l.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),l.jsx("input",{id:"account-password",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",name:"password",autoComplete:"current-password",value:_,onChange:F=>J(F.target.value),"aria-invalid":!!Z,"aria-describedby":Z?"account-login-error":void 0})]}),Z?l.jsx("p",{id:"account-login-error",role:"alert",className:"text-sm text-negative-400",children:Z}):null,l.jsx(re,{type:"submit",disabled:B||!S.trim()||!_,children:B?"Signing in…":"Sign in"})]})]})]}):n==="setup"?l.jsxs(l.Fragment,{children:[l.jsxs(Cr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Create a dashboard password"}),l.jsx(cm,{children:"This password protects the dashboard on this computer."})]}),l.jsx(yo,{children:l.jsxs("form",{className:"space-y-4",onSubmit:fn(P),children:[l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-new",children:"Password"}),l.jsx("input",{autoFocus:!0,id:"dashboard-password-new",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:V?"text":"password",name:"new-password",autoComplete:"new-password",minLength:8,required:!0,value:_,onChange:F=>J(F.target.value),"aria-invalid":ve,"aria-describedby":"dashboard-password-new-help"}),l.jsx("span",{id:"dashboard-password-new-help","aria-live":"polite",className:ve?"block text-sm text-negative-400":"block text-sm text-secondary",children:ve?"Enter at least 8 characters.":"Use at least 8 characters."})]}),l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-confirm",children:"Confirm password"}),l.jsx("input",{id:"dashboard-password-confirm",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:V?"text":"password",name:"confirm-password",autoComplete:"new-password",minLength:8,required:!0,value:q,onChange:F=>be(F.target.value),"aria-invalid":de,"aria-describedby":"dashboard-password-confirm-help"}),l.jsx("span",{id:"dashboard-password-confirm-help","aria-live":"polite",className:de?"block text-sm text-negative-400":"block text-sm text-secondary",children:de?"Passwords do not match.":"Enter the same password again."})]}),l.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-password-show",children:[l.jsx("input",{id:"dashboard-password-show",type:"checkbox",checked:V,onChange:F=>Y(F.target.checked)}),"Show passwords"]}),Z?l.jsx("p",{id:"dashboard-password-setup-error",role:"alert",className:"text-sm text-negative-400",children:Z}):null,l.jsx(re,{type:"submit",disabled:B||!ce,children:B?"Creating password…":"Create password and continue"})]})})]}):l.jsxs(l.Fragment,{children:[l.jsxs(Cr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"}),l.jsx(cm,{children:M==="api-key"?"Enter an API key from this Canonry install. This opens the dashboard with that key’s access and does not change the password.":"Enter your dashboard password to continue."})]}),l.jsxs(yo,{children:[le?l.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,l.jsxs("form",{className:"space-y-4",onSubmit:fn(je),children:[l.jsxs("label",{className:"block space-y-1.5",htmlFor:"dashboard-password-current",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:M==="api-key"?"Canonry API key":"Password"}),l.jsx("input",{autoFocus:!0,id:"dashboard-password-current",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:V?"text":"password",name:M==="api-key"?"apiKey":"password",autoComplete:M==="api-key"?"off":"current-password",spellCheck:!1,required:!0,value:_,onChange:F=>J(F.target.value),"aria-invalid":!!Z,"aria-describedby":Z?"dashboard-password-login-error":void 0})]}),l.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-login-password-show",children:[l.jsx("input",{id:"dashboard-login-password-show",type:"checkbox",checked:V,onChange:F=>Y(F.target.checked)}),M==="api-key"?"Show API key":"Show password"]}),Z?l.jsx("p",{id:"dashboard-password-login-error",role:"alert",className:"text-sm text-negative-400",children:Z}):null,l.jsx(re,{type:"submit",disabled:B||!_.trim(),children:B?"Signing in…":"Open dashboard"}),l.jsx(re,{type:"button",variant:"ghost",onClick:()=>W(M==="api-key"?"password":"api-key"),children:M==="api-key"?"Use dashboard password instead":"Forgot password? Use API key"})]})]})]})})]})})}const vC=document.getElementById("root");if(!vC)throw new Error("Expected #root element for web app bootstrap.");tee();s6.createRoot(vC).render(l.jsx(N.StrictMode,{children:l.jsx(uee,{})}));export{_ae as $,Bn as A,re as B,yc as C,fn as D,Qae as E,Xae as F,Yae as G,ene as H,la as I,nne as J,tne as K,fa as L,xie as M,bH as N,qie as O,Mie as P,TZ as Q,$a as R,Qk as S,vn as T,AH as U,tte as V,jne as W,_ne as X,Nte as Y,kne as Z,Aae as _,vie as a,Cne as a$,Cae as a0,Ote as a1,Ite as a2,Kte as a3,xn as a4,Rae as a5,Dae as a6,Lte as a7,zae as a8,Ute as a9,bne as aA,Tn as aB,vne as aC,yte as aD,vH as aE,_Q as aF,g0 as aG,xne as aH,zd as aI,Wae as aJ,C0 as aK,go as aL,kH as aM,Zt as aN,uH as aO,Lne as aP,TY as aQ,Mte as aR,ite as aS,nte as aT,Oi as aU,Die as aV,Wee as aW,hte as aX,qP as aY,dte as aZ,Jee as a_,qte as aa,Bte as ab,Tae as ac,Eae as ad,Nae as ae,Pte as af,Iae as ag,Uae as ah,qae as ai,Bae as aj,Mae as ak,Lae as al,lne as am,k1 as an,ze as ao,Pae as ap,TN as aq,$i as ar,Oae as as,D0 as at,K9 as au,H9 as av,Lee as aw,Bee as ax,dne as ay,yne as az,jH as b,kee as b$,Xee as b0,OH as b1,aF as b2,Hne as b3,Xne as b4,Fne as b5,rte as b6,cte as b7,LV as b8,ute as b9,oae as bA,hae as bB,fae as bC,gae as bD,sae as bE,pae as bF,rae as bG,yae as bH,lae as bI,bae as bJ,dae as bK,xae as bL,Sae as bM,gJ as bN,cae as bO,fe as bP,qee as bQ,Pee as bR,Oee as bS,Iee as bT,Ree as bU,Eee as bV,zee as bW,Dee as bX,Tee as bY,_ee as bZ,wee as b_,HH as ba,Kne as bb,VV as bc,h0 as bd,lte as be,hK as bf,Qne as bg,Gne as bh,QH as bi,Zne as bj,Cie as bk,Yne as bl,iie as bm,sie as bn,Vte as bo,x1 as bp,Jae as bq,jN as br,nae as bs,iae as bt,mae as bu,kae as bv,wae as bw,uae as bx,vae as by,jae as bz,Mee as c,qne as c$,Cee as c0,Nee as c1,Aee as c2,See as c3,jee as c4,xee as c5,vee as c6,bee as c7,yee as c8,E6 as c9,zne as cA,pY as cB,S0 as cC,om as cD,j0 as cE,rm as cF,lm as cG,_Y as cH,BH as cI,bo as cJ,um as cK,uF as cL,NJ as cM,Bie as cN,Aie as cO,NY as cP,jie as cQ,xJ as cR,Jne as cS,One as cT,Sie as cU,Bne as cV,Pne as cW,vI as cX,cP as cY,Wne as cZ,kie as c_,mte as ca,jte as cb,Ste as cc,kte as cd,Wte as ce,pK as cf,hj as cg,Am as ch,fj as ci,oF as cj,aae as ck,Rne as cl,ate as cm,dk as cn,_te as co,Tte as cp,Tne as cq,Ene as cr,Ete as cs,Rte as ct,zte as cu,Dte as cv,Wc as cw,Oo as cx,dN as cy,Ine as cz,SH as d,mJ as d$,gie as d0,OY as d1,AK as d2,_H as d3,PY as d4,vte as d5,xte as d6,bte as d7,_K as d8,Nie as d9,Pie as dA,$m as dB,eae as dC,tae as dD,bK as dE,fte as dF,gte as dG,Cte as dH,$te as dI,Gte as dJ,E1 as dK,Gm as dL,N1 as dM,AJ as dN,Jte as dO,Br as dP,pk as dQ,cne as dR,mne as dS,hne as dT,fne as dU,une as dV,pne as dW,gne as dX,Rf as dY,rne as dZ,nie as d_,_ie as da,Tie as db,Rie as dc,wte as dd,Es as de,IH as df,MH as dg,Ate as dh,jZ as di,Vae as dj,BK as dk,Yte as dl,Gae as dm,Kae as dn,Hae as dp,$ae as dq,Ane as dr,Hte as ds,Fte as dt,Qte as du,Xte as dv,Zte as dw,A1 as dx,Mr as dy,Bm as dz,zie as e,ote as e0,i1 as e1,Dne as e2,eie as e3,aie as e4,one as e5,ste as e6,ine as e7,sne as e8,ane as e9,cie as eA,Vee as eB,mie as eC,fie as eD,die as eE,hie as eF,_o as eG,Yee as eH,Hee as eI,pie as eJ,Kee as eK,TO as eL,Qee as eM,Fee as eN,tie as ea,Sne as eb,LI as ec,Une as ed,Mne as ee,$ne as ef,Vne as eg,jk as eh,Zee as ei,pw as ej,Gee as ek,Hi as el,Da as em,$ee as en,nm as eo,pte as ep,nQ as eq,rie as er,oie as es,wJ as et,uie as eu,DY as ev,Uee as ew,yie as ex,bie as ey,lie as ez,Yd as f,Eie as g,Iie as h,Oie as i,A0 as j,Bc as k,EZ as l,wie as m,WU as n,GG as o,wne as p,Fae as q,Zae as r,Nne as s,wH as t,C1 as u,_a as v,ete as w,ee as x,f1 as y,wo as z};
|
|
86
|
+
competitor2.com`,value:pi,onChange:K=>Zi(K.target.value)})]}),en?l.jsx("p",{className:"text-negative-400 text-sm",children:en}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:qn,children:"Back"}),l.jsx("div",{className:"flex gap-2",children:fi.length===0?l.jsx(re,{type:"button",onClick:gl,children:"Continue without competitors"}):l.jsxs(l.Fragment,{children:[l.jsx(re,{type:"button",variant:"outline",onClick:gl,children:"Skip"}),l.jsx(re,{type:"button",disabled:ll,onClick:fn(pl),children:ll?"Saving...":`Save ${fi.length} competitor${fi.length!==1?"s":""}`})]})})]})]})]});case 4:{const K=Za.data,Fe=K?.status??(Ji===nt?.id?nt.status:void 0),yi=Fe==="completed"||Fe==="partial"||Fe==="failed"||Fe==="cancelled",es=K?.snapshots??[],qa=K?.queryCounts,bl=Fe?Yk(Fe,es.length):!1,jn=$e&&!Qa,bi=Sn??(K?.error?vH(K.error):Fe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Fe==="completed"||Fe==="partial")&&es.length===0?"The sweep finished without producing any snapshots.":nt?.statusDetail||"The sweep did not produce a baseline.");let Ja=null;return jn||bl?Ja=l.jsx(vn,{tone:"positive",children:"Complete"}):Sn&&!Qa?Ja=l.jsx(vn,{tone:"negative",children:"Failed"}):yi?Ja=l.jsx(vn,{tone:"negative",children:Fe==="cancelled"?"Cancelled":"Failed"}):Qa&&(Ja=l.jsx(vn,{tone:"caution",children:"Running"})),l.jsxs(_a,{className:"surface-card step-card",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:_?"Step 2 of 2":"Step 5 of 5"}),l.jsx("h2",{children:go()?"AI Visibility":"Launch first run"})]}),Ja]}),jn?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",l.jsx("span",{className:"text-strong font-medium",children:Ke})," already has a successful answer-visibility baseline."]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(re,{type:"button",onClick:()=>ct(),children:f?"Finish setup":"Open project dashboard →"})]})]}):!Qa&&go()?l.jsxs("div",{className:"compact-stack",children:[Ke?l.jsx(PY,{projectName:Ke}):l.jsx("p",{className:"text-sm text-secondary",children:C0}),Sn&&l.jsx("p",{role:"alert",className:"text-sm text-negative",children:Sn}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(re,{type:"button",onClick:Me,children:"Open project dashboard →"})]})]}):Qa?yi?bl?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",l.jsx("span",{className:"text-heading font-medium",children:Ke}),":"]}),l.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:qa?l.jsxs(l.Fragment,{children:[qa.mentionedQueries,l.jsxs("span",{className:"text-faint text-lg",children:[" / ",qa.totalQueries]})]}):"Unavailable"}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:qa?l.jsxs(l.Fragment,{children:[qa.citedQueries,l.jsxs("span",{className:"text-faint text-lg",children:[" / ",qa.totalQueries]})]}):"Unavailable"}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:es.length}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),!b&&Ke?l.jsx(jJ,{projectName:Ke}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(re,{type:"button",onClick:()=>ct(),children:f?"Finish setup":"Open project dashboard →"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:bi}),l.jsx("p",{className:"mt-1 text-xs text-secondary",children:go()?C0:x?"Fix provider or query configuration if needed, then retry without leaving setup.":"Ask an administrator to review the provider and query configuration."})]}),l.jsxs("div",{className:"setup-nav",children:[x&&!go()?l.jsx(re,{type:"button",variant:"outline",asChild:!0,children:l.jsx(et,{to:"/settings",children:"Configure providers"})}):l.jsx("span",{}),go()||!x?l.jsx(re,{type:"button",onClick:Me,children:"Open project dashboard →"}):l.jsx(re,{type:"button",disabled:hi||!!Ya,onClick:fn(gi),children:hi?"Retrying...":"Retry visibility sweep"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),l.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:l.jsxs("p",{children:["Status: ",l.jsx("span",{className:"text-neutral",children:Fe??"queued"})]})}),Za.isError&&l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:Za.error instanceof Error?Za.error.message:"Could not refresh the sweep status."}),l.jsx(re,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{Za.refetch()},children:"Retry status check"})]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(re,{type:"button",variant:"outline",onClick:f?()=>ct():Me,children:f?"Finish setup":"Watch on project page"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"supporting-copy",children:["Your queries are saved. Run a first sweep to get a baseline for"," ",l.jsx("span",{className:"text-heading font-medium",children:Ke}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(Ya||Sn)&&l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:Sn??Ya}),l.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(re,{type:"button",variant:"outline",onClick:qn,children:"Back"}),l.jsx(re,{type:"button",variant:"ghost",onClick:Ht,children:"Finish without running"}),ba==="no_provider"&&!_?l.jsx(re,{type:"button",asChild:!0,children:l.jsx(et,{to:"/settings",children:"Configure a provider"})}):l.jsx(re,{type:"button",disabled:hi||!!Ya,title:Ya,onClick:fn(gi),children:hi?"Launching...":Sn?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return l.jsxs("div",{className:_?"page-container visibility-setup":"page-container",children:[f?l.jsx(_o,{current:"visibility"}):null,l.jsxs("div",{className:"page-header",children:[l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{ref:u?h:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),l.jsx("p",{className:"page-subtitle",children:u?"Connect an answer engine, then choose queries for your first sweep.":"Create a project and run its first visibility check."})]}),f?l.jsx("div",{className:"page-header-right",children:l.jsx(re,{type:"button",variant:"outline",className:"min-h-11",onClick:Ht,children:"Skip AI Visibility"})}):null]}),f?null:l.jsx(EJ,{current:_?P===4?1:0:P,labels:_?_J:CJ}),l.jsxs("section",{className:"setup-wizard",children:[Qs,Xa]})]})}const $f="canonry mcp install --client claude-code",zJ="https://github.com/Canonry/canonry/blob/main/docs/mcp.md";function IJ(){const e=N.useRef(d1()).current,n=N.useRef(new Set),i=N.useCallback((o,u)=>{n.current.has(o)||(n.current.add(o),y1({...u,flowVersion:ft,onboardingSessionId:e,surface:"platform",eventId:m1()}))},[e]);return N.useEffect(()=>{i("started",{event:"onboarding.started",step:"finish",resumed:!1})},[i]),N.useCallback(o=>{i(`action:${o}`,{event:"onboarding.step_completed",step:"finish",method:"manual",nextAction:o})},[i])}const Xm=N.createContext(()=>{});function OJ({projectName:e,skippedVisibility:n=!1}){const i=yt({...nQ({client:ee,path:{name:e}}),retry:!1}),o=i.data?.hasData?i.data:null,u=IJ(),h=Wk(e,ze["site-audit"]),f=Wk(e,ze["answer-visibility"]),b={...h?{site:h,fixes:h}:{},...PJ(f,n)};return l.jsx(Xm.Provider,{value:u,children:l.jsxs("div",{className:"page-container max-w-6xl py-8 md:py-10",children:[l.jsx(_o,{current:"done",outcomes:b}),l.jsxs("header",{className:"relative mx-auto mt-12 max-w-2xl text-center md:mt-16",children:[l.jsx(qJ,{}),l.jsx("p",{className:"onb-reveal mt-6 text-sm font-medium text-positive",style:Ta(250),children:"Setup complete"}),l.jsx("h1",{className:"onb-reveal mt-2 text-5xl font-semibold tracking-tight text-heading md:text-6xl",style:Ta(350),children:"You’re set."}),l.jsxs("p",{className:"onb-reveal mx-auto mt-4 max-w-xl text-lg text-secondary",style:Ta(450),children:["Canonry is tracking ",l.jsx("span",{className:"font-medium text-heading",children:e}),". Here’s how to get the most out of it from here."]})]}),l.jsxs("div",{className:"mt-14 grid gap-4 md:grid-cols-6",children:[l.jsx(Ad,{className:"md:col-span-4 md:row-span-2",delayMs:600,labelledBy:"onb-agent-heading",children:l.jsx(LJ,{projectName:e})}),l.jsx(Ad,{className:"md:col-span-2 md:row-span-2",delayMs:700,labelledBy:"onb-data-heading",children:l.jsx($J,{projectName:e})}),l.jsx(Ad,{className:"md:col-span-3",delayMs:800,labelledBy:"onb-schedule-heading",children:l.jsx(HJ,{projectName:e})}),l.jsx(Ad,{className:"md:col-span-3",delayMs:900,labelledBy:"onb-alerts-heading",children:l.jsx(FJ,{projectName:e,score:o?.aggregateScore??null})})]}),l.jsxs("div",{className:"onb-reveal mt-12 flex flex-col items-center gap-3 sm:flex-row sm:justify-center",style:Ta(1e3),children:[l.jsx(re,{asChild:!0,className:"h-11 rounded-full px-6 text-base md:h-11",children:l.jsxs(et,{to:"/projects/$projectName",params:{projectName:e},replace:!0,onClick:()=>u("open_project"),children:["Open ",e,l.jsx(jc,{className:"size-4","aria-hidden":"true"})]})}),l.jsx(re,{asChild:!0,variant:"ghost",className:"h-11 rounded-full px-5 md:h-11",children:l.jsx(et,{to:"/projects/$projectName/technical-aeo",params:{projectName:e},replace:!0,onClick:()=>u("review_page_health"),children:"Review page health"})})]})]})})}function Wk(e,n){const i=yt({...jN({client:ee,path:{name:e},query:{kind:n,limit:20}}),retry:!1,refetchInterval:o=>eS(o.state.status==="success"?{isSuccess:!0,data:o.state.data}:{isSuccess:!1})==="pending"?5e3:!1});return eS(i)}function PJ(e,n){return e===void 0?{}:n?{visibility:"skipped"}:{visibility:e}}function eS(e){if(!e.isSuccess||!e.data)return"unknown";const n=e.data.filter(i=>i.trigger!==ii.probe);if(!n.some(i=>i.status===Zt.completed||i.status===Zt.partial))return n.some(i=>i.status===Zt.queued||i.status===Zt.running)?"pending":n.length>0?"incomplete":"skipped"}function Ta(e){return{"--onb-delay":`${e}ms`}}function qJ(){return l.jsx("div",{className:"onb-check relative mx-auto size-20","aria-hidden":"true",children:l.jsxs("svg",{viewBox:"0 0 80 80",className:"relative size-20",children:[l.jsx("circle",{className:"onb-check-ring",cx:"40",cy:"40",r:"36",fill:"none",strokeWidth:"3",pathLength:"1"}),l.jsx("path",{className:"onb-check-mark",d:"M25 41 L35 51 L56 30",fill:"none",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",pathLength:"1"})]})})}function Ad({className:e="",delayMs:n,labelledBy:i,children:o}){return l.jsx("section",{"aria-labelledby":i,className:`onb-reveal onb-tile flex flex-col overflow-hidden rounded-2xl border border-default bg-surface p-6 md:p-7 ${e}`,style:Ta(n),children:o})}function Jm({id:e,eyebrow:n,title:i,children:o}){return l.jsxs("div",{children:[l.jsx("p",{className:"text-xs font-medium uppercase tracking-wide text-muted",children:n}),l.jsx("h2",{id:e,className:"mt-1.5 text-2xl font-semibold tracking-tight text-heading",children:i}),l.jsx("p",{className:"mt-2 text-sm text-secondary",children:o})]})}const Nd=[{id:"diagnose",label:"Diagnose",prompt:"Why did we lose citations this week?",calls:["canonry_insights_list","canonry_competitor_landscape"],reply:"Two engines started citing a competitor’s comparison page instead of yours. Want me to draft one that answers the same query?"},{id:"fix",label:"Fix",prompt:"Fix the weakest pages on the site.",calls:["canonry_technical_aeo_pages","canonry_site_health_page_audit"],reply:"The lowest-scoring pages are missing structured data and answer-first intros. I’ve written the changes for you to review."},{id:"automate",label:"Automate",prompt:"Re-check everything every Monday and tell me in Slack.",calls:["canonry_schedule_set","canonry_agent_webhook_attach"],reply:"Done. A sweep runs every Monday, and I’ll post what changed to Slack."}],MJ=9e3;function BJ(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function LJ({projectName:e}){const n=N.useContext(Xm),[i,o]=N.useState(0),[u,h]=N.useState(!1),[f,b]=N.useState(!1);N.useEffect(()=>{if(u||BJ())return;const k=window.setTimeout(()=>o(S=>(S+1)%Nd.length),MJ);return()=>window.clearTimeout(k)},[i,u]);const v=async()=>{try{await navigator.clipboard.writeText($f),n("copy_agent_command"),b(!0),window.setTimeout(()=>b(!1),1800)}catch{xn({tone:"negative",title:"Could not copy the command",detail:`Run ${$f} in your terminal.`})}},x=Nd[i]??Nd[0];return l.jsxs(l.Fragment,{children:[l.jsxs(Jm,{id:"onb-agent-heading",eyebrow:"Your agent",title:"Let your agent run it.",children:["Your agent can do everything in Canonry: diagnose a drop, fix pages, run sweeps and scans, and write the client report. Use Claude Code, Codex, Cursor, or Aero, the analyst built into"," ",l.jsx("span",{className:"text-heading",children:e})," that reviews every sweep on its own."]}),l.jsxs("div",{className:"mt-6 flex flex-1 flex-col rounded-xl border border-default bg-bg",onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),onFocus:()=>h(!0),children:[l.jsxs("div",{className:"flex items-center gap-1 border-b border-default px-3 py-2",role:"tablist","aria-label":"Example agent sessions",children:[Nd.map((k,S)=>l.jsx("button",{type:"button",role:"tab","aria-selected":S===i,onClick:()=>{o(S),h(!0)},className:`rounded-md px-2.5 py-1 text-xs font-medium transition-colors ${S===i?"bg-surface-inset text-heading":"text-muted hover:text-secondary"}`,children:k.label},k.id)),l.jsx("span",{className:"ml-auto text-xs text-faint",children:"Example"})]}),l.jsxs("div",{role:"tabpanel","aria-label":`${x.label} example`,className:"flex-1 p-4 font-mono text-[13px] leading-relaxed",children:[l.jsxs("p",{className:"onb-type text-heading",style:Ta(150),children:[l.jsx("span",{className:"text-muted",children:"> "}),x.prompt]}),x.calls.map((k,S)=>l.jsxs("p",{className:"onb-line mt-1 text-muted first:mt-3",style:Ta(1300+S*450),children:[l.jsx("span",{className:"text-positive",children:"●"})," ",k]},k)),l.jsx("p",{className:"onb-line mt-3 text-secondary",style:Ta(1500+x.calls.length*450),children:x.reply}),l.jsx("span",{className:"onb-caret mt-2 inline-block h-4 w-2 bg-current align-middle text-secondary",style:Ta(1900+x.calls.length*450),"aria-hidden":"true"})]},x.id)]}),l.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[l.jsx("code",{className:"min-w-0 flex-1 truncate rounded-lg border border-default bg-surface-inset px-3 py-2 font-mono text-[13px] text-heading",children:$f}),l.jsxs(re,{type:"button",variant:"secondary",size:"sm",className:"h-9 md:h-9",onClick:()=>{v()},children:[f?l.jsx(Oc,{className:"size-4","aria-hidden":"true"}):l.jsx(U0,{className:"size-4","aria-hidden":"true"}),f?"Copied":"Copy"]}),l.jsx("a",{href:zJ,target:"_blank",rel:"noreferrer",className:"text-sm font-medium text-link underline-offset-4 hover:underline",children:"Other clients"})]})]})}const UJ=[{icon:L0,label:"Search Console",action:"connect_search_console",to:"/projects/$projectName/search-console"},{icon:gS,label:"Google Analytics",action:"connect_analytics",to:"/projects/$projectName/activity"},{icon:bS,label:"Business Profile",action:"connect_business_profile",to:"/projects/$projectName/local"}],VJ=["GPTBot","ClaudeBot","PerplexityBot"];function $J({projectName:e}){const n=N.useContext(Xm);return l.jsxs(l.Fragment,{children:[l.jsx(Jm,{id:"onb-data-heading",eyebrow:"Server-side traffic",title:"See the AI bots.",children:"AI crawlers and answer-engine fetches never run JavaScript, so Google Analytics never sees them. Canonry reads them straight from your server."}),l.jsx(GJ,{}),l.jsxs(et,{to:"/traffic",onClick:()=>n("connect_server_traffic"),"aria-label":"Connect server-side traffic",className:"group flex items-center gap-3 rounded-xl border border-strong bg-surface-inset px-4 py-3 text-sm font-medium text-heading transition-colors hover:bg-surface-inset-hover",children:[l.jsx(vS,{className:"size-4 text-positive","aria-hidden":"true"}),l.jsxs("span",{className:"flex-1",children:["Connect your server",l.jsx("span",{className:"block text-xs font-normal text-secondary",children:"Cloudflare, Vercel, WordPress, or Cloud Run"})]}),l.jsx(jc,{className:"size-4 text-link transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]}),l.jsx("p",{className:"mt-5 text-xs font-medium uppercase tracking-wide text-muted",children:"Also connect"}),l.jsx("ul",{className:"mt-1 divide-y divide-default",children:UJ.map(({icon:i,label:o,action:u,to:h})=>l.jsx("li",{children:l.jsxs(et,{to:h,params:{projectName:e},"aria-label":`Connect ${o}`,onClick:()=>n(u),className:"group flex items-center gap-3 py-2.5 text-sm text-heading",children:[l.jsx(i,{className:"size-4 text-muted","aria-hidden":"true"}),l.jsx("span",{className:"flex-1",children:o}),l.jsx(jc,{className:"size-3.5 text-link transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})},o))})]})}function GJ(){const e=[22,70,118];return l.jsxs("div",{className:"relative my-6 h-36","aria-hidden":"true",children:[l.jsx("svg",{viewBox:"0 0 200 140",preserveAspectRatio:"none",className:"absolute inset-0 size-full",children:e.map((n,i)=>l.jsx("path",{className:"onb-flow",style:Ta(i*400),d:`M20 ${n} C 100 ${n}, 118 70, 170 70`,fill:"none",strokeWidth:"1.5"},n))}),VJ.map((n,i)=>l.jsx("span",{className:"onb-bot absolute left-0 -translate-y-1/2 rounded-md border border-default bg-bg-elevated px-2 py-1 font-mono text-[11px] text-secondary",style:{top:`${(e[i]??70)/140*100}%`,...Ta(i*600)},children:n},n)),l.jsx("span",{className:"onb-hub absolute right-0 top-1/2 flex size-11 -translate-y-1/2 items-center justify-center rounded-2xl bg-accent text-on-inverse",children:l.jsx(vS,{className:"size-5"})})]})}const KJ=["M","T","W","T","F","S","S"];function HJ({projectName:e}){return l.jsxs(l.Fragment,{children:[l.jsx(Jm,{id:"onb-schedule-heading",eyebrow:"Scheduled sweeps",title:"Runs on its own.",children:"Re-measure every week without lifting a finger, so a drop shows up before a customer notices."}),l.jsx("ol",{className:"mt-6 grid grid-cols-7 gap-2","aria-hidden":"true",children:KJ.map((n,i)=>l.jsxs("li",{className:"flex flex-col items-center gap-2",children:[l.jsx("span",{className:"onb-day size-3 rounded-full bg-surface-inset",style:Ta(i*500)}),l.jsx("span",{className:"text-xs text-muted",children:n})]},i))}),l.jsx(fC,{projectName:e,to:"/projects/$projectName/settings",icon:yS,label:"Set a schedule",action:"set_schedule"})]})}function FJ({projectName:e,score:n}){return l.jsxs(l.Fragment,{children:[l.jsx(Jm,{id:"onb-alerts-heading",eyebrow:"Notifications",title:"Hear about changes.",children:"Get a webhook in Slack or anywhere else when a sweep finishes or a score moves."}),l.jsxs("div",{className:"relative mt-6 flex h-14 items-center","aria-hidden":"true",children:[l.jsx("span",{className:"onb-bell flex size-10 items-center justify-center rounded-full border border-default bg-bg-elevated",children:l.jsx(Hf,{className:"size-4 text-secondary"})}),l.jsxs("span",{className:"onb-toast ml-3 flex items-center gap-2 rounded-xl border border-default bg-bg-elevated px-3 py-2 text-sm shadow-[0_8px_24px_var(--color-shadow-panel)]",children:[l.jsx("span",{className:"size-2 rounded-full bg-positive-400"}),l.jsx("span",{className:"text-heading",children:e}),l.jsx("span",{className:"text-secondary",children:n===null?"sweep finished":`page health ${n}`})]})]}),l.jsx(fC,{projectName:e,to:"/projects/$projectName/settings",icon:Hf,label:"Add a notification",action:"add_notification"})]})}function fC({projectName:e,to:n,icon:i,label:o,action:u}){const h=N.useContext(Xm);return l.jsxs(et,{to:n,params:{projectName:e},onClick:()=>h(u),className:"group mt-6 inline-flex items-center gap-2 self-start text-sm font-medium text-link",children:[l.jsx(i,{className:"size-4","aria-hidden":"true"}),o,l.jsx(jc,{className:"size-3.5 transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})}const QJ=N.lazy(async()=>({default:(await Hi(()=>import("./SiteHealthSection-C5x7oiFL.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),ZJ=`Public pages only, crawled from this computer and stored locally. The first scan reads up to ${fj} pages, then stops.`,YJ=1800,XJ="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",JJ="Help me set up Canonry for my public site.\n\nUse the official Canonry docs:\n- Agent quickstart: https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent\n- CLI reference: https://github.com/Canonry/canonry/blob/main/skills/canonry/references/canonry-cli.md\n- Plugin setup: https://github.com/Canonry/canonry/blob/main/docs/plugins.md\n- MCP setup: https://github.com/Canonry/canonry/blob/main/docs/mcp.md\n\nPick one path and stay on it. Use connected Canonry tools (plugin or MCP) only if you have them and I have not pointed you at a specific install. A connected tool runs in its own process and never sees `CANONRY_CONFIG_DIR`, `CANONRY_PORT`, or anything else you export in a shell, so it always acts on my default install. If I named a config directory, a port, or a sandbox, that is the shell path: use `cnry` and tell me which path you chose. Never mix the two in one run, and never create a duplicate project. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet. Country and language are only applied when a project is created, so if you reuse an existing project, report its country and language instead of changing them.\n2. Shell path only: confirm `cnry` is on PATH, then run `cnry --version`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. Then run `cnry doctor --format json`, which is the command that says whether config, database, and server are in place. `cnry --version` does not read config and succeeds on a completely unconfigured install, so it cannot answer this. If config is missing, run `cnry bootstrap` yourself: it is not interactive, takes about a second, and is safe to rerun. Do not hand it to me and wait. The interactive command is `cnry init`, which is optional provider and OAuth setup that Page Health does not need. Bootstrap prints an API key, so do not repeat its output back to me, and never ask me to paste passwords, API keys, OAuth credentials, or command output.\n3. Confirm the API is reachable. `cnry doctor --format json` reports it, and any project read exits non-zero with `CONNECTION_ERROR` when it is not. If it is unreachable, propose `cnry start` and wait for approval. Use `cnry start`, which is the background daemon, and not `cnry serve`, which runs in the foreground and will block you until I stop it, even though some error messages suggest it. Stop anything you started with `cnry stop`.\n4. List projects with the connected project tool or `cnry project list --format json`, and reuse one whose domain matches. Confirm the proposed name is not already assigned to a different domain. To find out whether a project has already been scanned, run `cnry technical-aeo score <project> --format json` with no `--run-id`, which reports the latest run. Read the `hasData` field, not the score: this command exits 0 and reports `aggregateScore: 0` for a project that has never been scanned, so reading the score alone would have you tell me my site scored zero. If `hasData` is true and `runStatus` is `completed` or `partial`, read that scan instead of starting a new one. If no project matches, show the exact create operation and wait for approval.\n5. Propose a bounded Site Health scan: `--max-pages 100` for a first look, plus whether dead-link checking is on (it is off unless you pass `--check-dead-links`). Show the connected operation or the exact `cnry technical-aeo run <project> --max-pages 100 --wait --format json` command with the project name filled in, and wait for separate approval before scanning. `--wait` polls for up to 15 minutes and returns only the run id and status. If the status it returns is still `queued` or `running`, the scan has not finished: do not rerun it or report results, poll `cnry technical-aeo progress <project> --run-id <run-id> --format json` until it is terminal. If `--wait` outruns your own tool timeout first, recover the run id with `cnry technical-aeo score <project> --format json` and poll the same way.\n6. When the run is `completed` or `partial`, read `cnry technical-aeo crawl <project> --run-id <run-id> --format json` first. It is the only one of these commands that carries `termination` and `complete`; the score and pages commands do not. Then read `cnry technical-aeo score <project> --run-id <run-id> --format json` and `cnry technical-aeo pages <project> --run-id <run-id> --sort score-asc --limit 10 --format jsonl`. Tell me the termination reason in plain words and whether the scan covered the whole site or stopped at a page, link, depth, or time limit. A `partial` run scored the pages it reached and not my site, so never present it as a full-site result. If it stopped early, the fix depends on the reason, so say which: a page or depth limit needs a larger budget, a time limit needs a smaller scan (a lower `--max-pages` or `--max-depth`). If the run failed or was cancelled, inspect the run error and stop.\n7. Summarize only completed evidence, then propose AI Visibility setup. Ask before you add queries, connect providers, start a provider-backed or quota-consuming run, edit files, or publish.";function WJ(e,n){return e==="legacy"?"legacy":e==="platform"?"platform":n.state==="success"?n.projectCount===0?"platform":"legacy":n.state==="error"?"retry":"loading"}const eW="2000-01-01T00:00:00.000Z",tW=5e3;function nW(e,n){const i=new Set,o=new Map;for(const f of n)f.trigger!==ii.probe&&(o.has(f.projectId)||o.set(f.projectId,f.id),(f.status===Zt.completed||f.status===Zt.partial)&&i.add(f.projectId));const h=(e.every(f=>f.createdAt)?[...e].sort((f,b)=>(f.createdAt??"").localeCompare(b.createdAt??"")||f.name.localeCompare(b.name)):e).find(f=>!i.has(f.id));return h?{projectName:h.name,runId:o.get(h.id)}:null}const gC=[{value:"US",label:"United States"},{value:"CA",label:"Canada"},{value:"GB",label:"United Kingdom"},{value:"AU",label:"Australia"},{value:"NZ",label:"New Zealand"},{value:"IE",label:"Ireland"},{value:"DE",label:"Germany"},{value:"FR",label:"France"},{value:"ES",label:"Spain"},{value:"IT",label:"Italy"},{value:"NL",label:"Netherlands"},{value:"BR",label:"Brazil"},{value:"MX",label:"Mexico"},{value:"IN",label:"India"},{value:"SG",label:"Singapore"},{value:"JP",label:"Japan"}],yC=[{value:"en",label:"English"},{value:"es",label:"Spanish"},{value:"fr",label:"French"},{value:"de",label:"German"},{value:"it",label:"Italian"},{value:"pt",label:"Portuguese"},{value:"nl",label:"Dutch"},{value:"ja",label:"Japanese"}];function aW(e,n){try{const i=new Intl.DisplayNames(["en"],{type:"region"}),o=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?i.of(e.toUpperCase()):void 0,h=n?o.of(n.toLowerCase()):void 0;return`${u??(e||"Country")} · ${h??(n||"Language")}`}catch{return`${e||"Country"} · ${n||"Language"}`}}function iW(e,n){const i=e.trim().toUpperCase(),o=n.trim().toLowerCase();return{countryValid:gC.some(u=>u.value===i),languageValid:yC.some(u=>u.value===o)}}function sW(e){const n=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(n)||n.includes(":")}function oW(e){const n=e.trim();if(!n)return null;const i=/^[a-z][a-z\d+.-]*:\/\//i.test(n)?n:`https://${n}`;let o;try{o=new URL(i)}catch{return null}if(o.protocol!=="http:"&&o.protocol!=="https:")return null;const u=o.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||sW(u)||!u.includes("."))return null;const h=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return h?{canonicalDomain:u,projectName:h,displayName:u}:null}async function rW(e,n=YJ){let i;const o=new Promise(h=>{i=setTimeout(()=>h({state:"timed-out"}),n)}),u=await Promise.race([e.then(h=>({state:"queued",run:h})),o]);return i&&clearTimeout(i),u}function lW(e,n){e.catch(()=>{xn({title:"Site Health scan did not start",detail:"The project is safe. Choose Run scan in Site Health to retry.",tone:"negative",dedupeKey:`site-health-dispatch:${n}`})})}function bC(e){const n=N.useRef(d1()).current,i=N.useRef(new Set),o=N.useCallback((u,h)=>{if(h){if(i.current.has(h))return;i.current.add(h)}y1({...u,surface:e,eventId:m1()})},[e]);return{onboardingSessionId:n,emit:o}}function tS(e,n){return e instanceof Tn&&e.statusCode===409?"A project with this name already exists. Change the project name, or open the existing project.":e instanceof Error&&e.message?e.message:n}function O0(){return l.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Preparing setup"}),l.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),l.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[l.jsx(Cs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function cW({onRetry:e}){return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Can’t load projects"}),l.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),l.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),l.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),l.jsx(re,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function uW({projectName:e,initialRunId:n}){return l.jsx(E1,{title:"Site Health setup",children:l.jsx(dW,{projectName:e,initialRunId:n})})}function dW({projectName:e,initialRunId:n}){const i=Rs(),o=yt({...Oo({client:ee}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:h}=bC("site_health"),[f]=N.useState(()=>DG(n));N.useEffect(()=>{f&&zG()},[f]),N.useEffect(()=>{e&&h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.started",step:"run",resumed:!!n&&!f},"onboarding.started")},[h,f,n,u,e]),N.useEffect(()=>{!e||!n||sN(e)?.runId!==n&&iN(e,n)},[n,e]);const v=yt({...w1({client:ee,path:{id:n??""}}),enabled:!!n,refetchInterval:({state:_})=>{const z=_.data?.status;return z==="completed"||z==="partial"||z==="failed"||z==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}).data?.status;if(N.useEffect(()=>{if(!e||!n||!v)return;if(v==="completed"||v==="partial"){h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"automatic"},"onboarding.step_completed:run"),em(n);return}if(v!=="failed"&&v!=="cancelled")return;const _=v==="cancelled"?"run_cancelled":"run_failed";h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:_},`onboarding.blocked:run:${_}`),em(n)},[h,n,u,e,v]),!e)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project not found"}),l.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),l.jsx(re,{type:"button",variant:"secondary",onClick:()=>{i({to:"/projects"})},children:"View projects"})]});if(o.isPending)return l.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[l.jsx(_o,{current:"site"}),l.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[l.jsx(Cs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(o.isError)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),l.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),l.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[l.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),l.jsx(re,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{o.refetch()},children:"Retry project check"})]})]});const x=o.data.find(_=>_.name===e);if(!x)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project not found"}),l.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),l.jsx(re,{type:"button",variant:"secondary",onClick:()=>{i({to:"/projects"})},children:"View projects"})]});const k=()=>{i({to:"/setup",search:{onboarding:"site-health",setupProject:x.name},replace:!0})},S=()=>{i({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:x.name},replace:!0})},C=()=>{h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"skipped"},"onboarding.step_completed:run"),i({to:"/setup",search:{onboarding:"complete",setupProject:x.name,skipped:"visibility"},replace:!0})};return l.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[l.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),l.jsx(N.Suspense,{fallback:l.jsxs("div",{className:"space-y-5",children:[l.jsx(_o,{current:"site"}),l.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[l.jsx(Cs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:l.jsx(QJ,{projectName:x.name,projectId:x.id,initialRunId:n,onReleaseInitialRun:k,showOnboardingActions:!0,onContinueOnboarding:S,onSkipOnboarding:C})})]})}function mW(){const e=iS({from:"/setup"}),n=e.onboarding==="site-health"&&!e.setupProject,i=e.onboarding==="site-health"&&e.experience!=="legacy",o=oK(),u=e.experience==="legacy"?"legacy":e.experience==="platform"?"platform":o,[h,f]=N.useState(!1),[b,v]=N.useState(void 0),x=yt({...Oo({client:ee}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),k=yt({...Bm({client:ee,query:{kind:ze["site-audit"],since:eW,limit:tW}}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),S=u==="auto"&&x.isSuccess&&x.isFetchedAfterMount&&x.data.length===0;N.useEffect(()=>{S&&f(!0)},[S]);const C=u!=="auto"?{state:"idle"}:x.isSuccess&&x.isFetchedAfterMount?{state:"success",projectCount:x.data.length}:x.isError?{state:"error"}:{state:"loading"},_=u==="legacy"?"legacy":h||S?"platform":WJ(u,C);if(e.onboarding==="complete"&&e.setupProject)return l.jsx(OJ,{projectName:e.setupProject,skippedVisibility:e.skipped==="visibility"});if(n||i)return l.jsx(uW,{projectName:e.setupProject,initialRunId:e.siteHealthRunId});const z=u==="auto"&&_==="legacy"&&!e.setupProject&&x.isSuccess;if(z&&b===void 0)return k.isError?v(null):k.isSuccess&&k.isFetchedAfterMount&&v(nW(x.data,k.data)),l.jsx(O0,{});const q=z?b:null;return q?l.jsx(pW,{projectName:q.projectName,runId:q.runId}):_==="legacy"?l.jsx(RJ,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health",onboardingFinish:e.onboarding==="site-health"||e.onboarding==="first-run"}):_==="loading"?l.jsx(O0,{}):_==="retry"?l.jsx(cW,{onRetry:()=>{x.refetch()}}):l.jsx(hW,{onActivationStarted:()=>f(!0),skipSiteScan:e.siteScan==="skip"})}function pW({projectName:e,runId:n}){const i=Rs();return N.useEffect(()=>{i({to:"/setup",search:{onboarding:"site-health",setupProject:e,...n?{siteHealthRunId:n}:{}},replace:!0})},[i,e,n]),l.jsx(O0,{})}function hW({onActivationStarted:e,skipSiteScan:n}){return l.jsx(E1,{title:"Site Health setup",children:l.jsx(fW,{onActivationStarted:e,skipSiteScan:n})})}function fW({onActivationStarted:e,skipSiteScan:n}){const i=Rs(),o=ma(),u=wJ(),h=yt({...rF({client:ee}),retry:!1}),f=si(lF()),[b,v]=N.useState(""),[x,k]=N.useState(""),[S,C]=N.useState(""),[_,z]=N.useState("US"),[q,T]=N.useState("en"),[V,Y]=N.useState(!1),[M,U]=N.useState("idle"),[Z,te]=N.useState(null),[B,X]=N.useState(null),[le,Je]=N.useState(!1),[nt,$e]=N.useState(null),[Pe,Se]=N.useState(!1),Ue=h.isError?void 0:h.data,P=typeof Ue?.enabled=="boolean"?Ue.enabled:null,J=f.isPending?f.variables.body.enabled:P,[be,je]=N.useState(null),W=N.useRef(null),{onboardingSessionId:_e,emit:qe}=bC("platform");N.useEffect(()=>{qe({flowVersion:ft,onboardingSessionId:_e,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[qe,_e]);const ve=oW(b),de=x||ve?.projectName||"",ce=S||ve?.displayName||"",F=M==="creating"||M==="dispatching",pe=B??nt,Oe=aW(_,q),{countryValid:Ae,languageValid:st}=iW(_,q),Ve=Ae&&st;N.useEffect(()=>{pe&&W.current?.focus()},[pe]);const At=(Me,ct)=>i({to:"/setup",search:{...ct?{siteHealthRunId:ct}:{},onboarding:"site-health",setupProject:Me.name},replace:!0}),Ke=async Me=>{U("dispatching"),$e(null);try{const ct=u.mutateAsync({projectName:Me.name,projectId:Me.id,projectLabel:Me.displayName||Me.name,suppressErrorToast:!0,body:{checkDeadLinks:!0,maxPages:fj}}),Ht=await rW(ct);if(Ht.state==="queued"){qe({flowVersion:ft,onboardingSessionId:_e,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"}),RG(Ht.run.runId),await At(Me,Ht.run.runId);return}ct.then(()=>{qe({flowVersion:ft,onboardingSessionId:_e,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"})},Ft=>{qe({flowVersion:ft,onboardingSessionId:_e,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:xc(Ft,"run_rejected")})}),lW(ct,Me.id),await At(Me)}catch(ct){U("recovery"),$e(tS(ct,"The project was created, but the Site Health scan could not be started."));const Ht=xc(ct,"run_rejected");qe({flowVersion:ft,onboardingSessionId:_e,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Ht}),qe({flowVersion:ft,onboardingSessionId:_e,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:Ht},`onboarding.blocked:run:${Ht}`)}},me=async Me=>{if(Me.preventDefault(),!(!ve||!n&&!V||!Ve||F)){U("creating"),X(null),Je(!1),$e(null);try{const ct=await NK({name:de,displayName:ce,canonicalDomain:ve.canonicalDomain,country:_,language:q});if(e(),te(ct),qe({flowVersion:ft,onboardingSessionId:_e,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),await o.invalidateQueries({queryKey:Es({client:ee})}),n){await i({to:"/setup",search:{experience:"legacy",onboarding:"first-run",setupProject:ct.name},replace:!0});return}await Ke(ct)}catch(ct){U("idle");const Ht=ct instanceof Tn&&ct.statusCode===409;Je(Ht),X(tS(ct,"Could not create the project. Try again.")),qe({flowVersion:ft,onboardingSessionId:_e,event:"onboarding.blocked",step:"project",action:"save",reasonCode:xc(ct,"project_create_failed")},"onboarding.blocked:project"),Ht&&(e(),o.invalidateQueries({queryKey:Es({client:ee})}))}}},at=()=>{Z&&!F&&Ke(Z)},zt=()=>{F||i({to:"/projects"})},Pn=async()=>{try{await navigator.clipboard.writeText(JJ),Se(!0)}catch{xn({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}},Kt=async Me=>{je(null);try{const ct=await f.mutateAsync({client:ee,body:{enabled:Me}});o.setQueryData(AN({client:ee}),ct),ct.enabled!==Me&&je(`The server kept telemetry ${ct.enabled?"on":"off"}. Check its telemetry settings.`)}catch{je("Could not update telemetry. Try again.")}};return Z&&M==="recovery"?l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx(_o,{current:"site"}),l.jsx("div",{className:"page-header mt-8",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project created"}),l.jsxs("p",{className:"page-subtitle",children:[Z.displayName||Z.name," is ready. The Site Health scan needs another try."]})]})}),l.jsxs("div",{ref:W,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:nt}),l.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),l.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[l.jsx(re,{type:"button",onClick:at,children:"Retry Site Health scan"}),l.jsx(re,{type:"button",variant:"secondary",onClick:()=>{At(Z)},children:"Continue setup"})]})]})]}):l.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[n?null:l.jsx(_o,{current:"site"}),l.jsxs("header",{className:`mb-8 ${n?"":"mt-8"}`,children:[l.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:n?"Create a project":"Scan your site"}),l.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:n?"Add a public domain, then choose the queries you want to track. No site scan will run.":"Enter your public website to see its pages, structure, internal links, and technical SEO scores."})]}),l.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:fn(me),noValidate:!0,children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),l.jsx("input",{id:"launchpad-domain",className:"h-11 w-full rounded-md border border-strong bg-bg-elevated/50 px-3 text-base text-heading outline-none transition placeholder:text-muted focus:border-mono-500 focus:ring-1 focus:ring-mono-500",type:"text",inputMode:"url",autoComplete:"url",autoCapitalize:"none",spellCheck:!1,required:!0,"aria-invalid":!!(b&&!ve),"aria-describedby":b&&!ve?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:b,onChange:Me=>{v(Me.target.value),X(null),Je(!1)}}),l.jsx("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:n?l.jsxs(l.Fragment,{children:["A public domain is still required."," ",l.jsx(et,{to:"/setup",search:{experience:"platform"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Map with Site Health instead"})]}):l.jsxs(l.Fragment,{children:["Only public pages are scanned."," ",l.jsx(et,{to:"/setup",search:{experience:"platform",onboarding:"first-run",siteScan:"skip"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]})}),b&&!ve?l.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),l.jsxs("details",{className:"group border-y border-default",children:[l.jsxs("summary",{className:"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 py-3 text-sm [&::-webkit-details-marker]:hidden",children:[l.jsx("span",{className:"font-medium text-heading",children:"Project name and locale"}),l.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[Oe,l.jsx(Ic,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),l.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[ve?l.jsxs("div",{children:[l.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),l.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:de,onChange:Me=>k(Me.target.value)})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),l.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:ce,onChange:Me=>C(Me.target.value)})]})]})]}):null,l.jsxs("div",{children:[l.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),l.jsx("select",{id:"launchpad-country",className:"setup-input h-10",value:_,onChange:Me=>z(Me.target.value),children:gC.map(Me=>l.jsx("option",{value:Me.value,children:Me.label},Me.value))})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),l.jsx("select",{id:"launchpad-language",className:"setup-input h-10",value:q,onChange:Me=>T(Me.target.value),children:yC.map(Me=>l.jsx("option",{value:Me.value,children:Me.label},Me.value))})]})]})]})]})]}),n?null:l.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[l.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:V,onChange:Me=>Y(Me.target.checked),"aria-label":"Allow Canonry to scan this public site."}),l.jsxs("span",{className:"flex items-center gap-1.5",children:[l.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),l.jsx(la,{text:ZJ})]})]}),pe?l.jsxs("div",{ref:W,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:pe}),le?l.jsx(re,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:zt,children:"View projects"}):null]}):null,l.jsxs("div",{className:"grid gap-2",children:[l.jsx(re,{className:"h-11 w-full",type:"submit",disabled:!ve||!n&&!V||!Ve||F,children:M==="creating"||M==="dispatching"?l.jsxs(l.Fragment,{children:[l.jsx(Cs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," ",n?"Creating project…":"Mapping site…"]}):n?"Create project":"Scan site"}),M==="dispatching"?l.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),l.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[l.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),l.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any agent."}),l.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[l.jsxs(re,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:fn(Pn),children:[Pe?l.jsx(Oc,{className:"size-3.5","aria-hidden":"true"}):l.jsx(U0,{className:"size-3.5","aria-hidden":"true"}),l.jsx("span",{"aria-live":"polite",children:Pe?"Copied setup request":"Copy setup request"})]}),l.jsx(re,{asChild:!0,variant:"ghost",size:"sm",children:l.jsxs("a",{href:XJ,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",l.jsx(X5,{className:"size-3.5","aria-hidden":"true"}),l.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]}),P!==null?l.jsxs("section",{className:"mt-6 border-t border-default pt-5","aria-labelledby":"telemetry-title",children:[l.jsxs("label",{className:`flex min-h-11 items-start gap-3 py-2 ${f.isPending?"cursor-wait":"cursor-pointer"}`,children:[l.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg accent-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mono-500 disabled:cursor-wait",type:"checkbox",checked:J??!1,disabled:f.isPending,onChange:Me=>{Kt(Me.target.checked)},"aria-describedby":"telemetry-detail"}),l.jsxs("span",{className:"grid gap-0.5",children:[l.jsx("span",{id:"telemetry-title",className:"text-sm leading-5 text-heading",children:"Share anonymous product telemetry"}),l.jsx("span",{id:"telemetry-detail",className:"max-w-[70ch] text-sm leading-5 text-secondary",children:"Helps prioritize improvements. Canonry does not send raw domains, URLs, queries, answer content, or credentials."})]})]}),f.isPending?l.jsx("p",{className:"mt-1 text-sm text-secondary",role:"status",children:"Saving preference…"}):null,be?l.jsx("p",{className:"mt-1 text-sm text-negative",role:"alert",children:be}):null]}):null]})}function gW(){return l.jsx("div",{className:"page-container",children:l.jsx("section",{className:"page-section",children:l.jsxs(_a,{className:"surface-card empty-card",children:[l.jsx("h1",{children:"Route not found"}),l.jsx("p",{children:"The current path does not map to a dashboard view."}),l.jsx(re,{asChild:!0,children:l.jsx(et,{to:"/",children:"Return to overview"})})]})})})}const za=Ds(()=>Hi(()=>import("./ProjectPage-CCf70zbI.js"),__vite__mapDeps([5,1,0,2,3,4,6,7,8,9,10,11]),import.meta.url),"ProjectPage"),yW=Ds(()=>Hi(()=>import("./RunsPage-B6MhRqxN.js"),__vite__mapDeps([12,1,10,4,2,7,11]),import.meta.url),"RunsPage"),bW=Ds(()=>Hi(()=>import("./HistoryPage-DWG52dz1.js"),__vite__mapDeps([13,1,9,10,4,2,7,11]),import.meta.url),"HistoryPage"),vW=Ds(()=>Hi(()=>import("./SettingsPage-Bxv7OSHT.js"),__vite__mapDeps([14,1,10,4,2,7,11]),import.meta.url),"SettingsPage"),xW=Ds(()=>Hi(()=>import("./BacklinksPage-DZ4tauAs.js"),__vite__mapDeps([15,1,2,10,4,7,11]),import.meta.url),"BacklinksPage"),wW=Ds(()=>Hi(()=>import("./TrafficPage-C5gyQopi.js"),__vite__mapDeps([16,1,8,2,10,4,7,11]),import.meta.url),"TrafficPage"),kW=Ds(()=>Hi(()=>import("./TrafficSourceDetailPage-Dv2ZRNvN.js"),__vite__mapDeps([17,1,8,3,4,2,10,7,11]),import.meta.url),"TrafficSourceDetailPage"),SW=Ds(()=>Hi(()=>import("./MeasurementPropertyPage-DTx2iQLV.js"),__vite__mapDeps([18,1,3,4,6,7,2,10,11]),import.meta.url),"MeasurementPropertyPage");function jW(){return l.jsx(TX,{children:l.jsx(gH,{children:l.jsx(_X,{})})})}const Un=T5()({component:jW,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,runId:typeof e.runId=="string"?e.runId:void 0,siteHealthRunId:typeof e.siteHealthRunId=="string"?e.siteHealthRunId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0,onboarding:e.onboarding==="site-health"||e.onboarding==="first-run"||e.onboarding==="complete"?e.onboarding:void 0,experience:e.experience==="legacy"||e.experience==="platform"?e.experience:void 0,siteScan:e.siteScan==="skip"?"skip":void 0,skipped:e.skipped==="visibility"?"visibility":void 0,setupProject:typeof e.setupProject=="string"?e.setupProject:void 0,scope:typeof e.scope=="string"?e.scope:void 0,class:typeof e.class=="string"?e.class:void 0,...Object.fromEntries(["queryWorkspace","researchMode","trackingQueryId","measurementScope","measurementScopeKey","measurementMarketKey","queryClass","measurementProvider","measurementModel","measurementLocation","measurementFrom","measurementTo","measurementRevision","measurementRunId","measurementQueryKey","measurementAnswer"].map(n=>[n,typeof e[n]=="string"?e[n]:void 0]))})}),AW=Mt({getParentRoute:()=>Un,path:"/",component:uJ,beforeLoad:async({context:e})=>{let n=e.queryClient.getQueryData(Es({client:ee}));if(n===void 0)try{n=await e.queryClient.ensureQueryData(Oo({client:ee}))}catch{return}if(n.length===0)throw P0({to:"/setup"})}}),NW=Mt({getParentRoute:()=>Un,path:"/projects",component:hJ}),CW=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Vn=Mt({getParentRoute:()=>Un,path:"/projects/$projectName",component:()=>l.jsx(Gf,{}),beforeLoad:async({context:e,params:n,location:i})=>{const o=n.projectName;if(!CW.test(o))return;let u=e.queryClient.getQueryData(Es({client:ee}));if(!u)try{u=await e.queryClient.ensureQueryData(Oo({client:ee}))}catch{return}const h=u.find(f=>f.id===o);if(h)throw P0({to:i.pathname.replace(`/projects/${o}`,`/projects/${encodeURIComponent(h.name)}`),replace:!0})}}),_W=Mt({getParentRoute:()=>Vn,path:"/",component:()=>l.jsx(za,{tab:"overview"})}),TW=Mt({getParentRoute:()=>Vn,path:"/portfolio",component:()=>l.jsx(za,{tab:"portfolio"})}),EW=Mt({getParentRoute:()=>Vn,path:"/search-console",component:()=>l.jsx(za,{tab:"search-console"})}),RW=Mt({getParentRoute:()=>Vn,path:"/conversions",component:()=>l.jsx(za,{tab:"conversions"})}),DW=Mt({getParentRoute:()=>Vn,path:"/local",component:()=>l.jsx(za,{tab:"local"})}),zW=Mt({getParentRoute:()=>Vn,path:"/discovery",component:()=>l.jsx(za,{tab:"discovery"})}),IW=Mt({getParentRoute:()=>Vn,path:"/queries",component:()=>l.jsx(za,{tab:"queries"})}),OW=Mt({getParentRoute:()=>Vn,path:"/properties/$targetKey",component:()=>l.jsx(SW,{})}),PW=Mt({getParentRoute:()=>Vn,path:"/report",beforeLoad:({params:e})=>{throw P0({to:"/projects/$projectName",params:e,replace:!0})}}),qW=Mt({getParentRoute:()=>Vn,path:"/activity",component:()=>l.jsx(za,{tab:"activity"})}),MW=Mt({getParentRoute:()=>Vn,path:"/backlinks",component:()=>l.jsx(za,{tab:"backlinks"})}),BW=Mt({getParentRoute:()=>Vn,path:"/technical-aeo",component:()=>l.jsx(za,{tab:"technical-aeo"})}),LW=Mt({getParentRoute:()=>Vn,path:"/history",component:()=>l.jsx(za,{tab:"history"})}),UW=Mt({getParentRoute:()=>Vn,path:"/settings",component:()=>l.jsx(za,{tab:"settings"})}),VW=Mt({getParentRoute:()=>Un,path:"/runs",component:yW}),$W=Mt({getParentRoute:()=>Un,path:"/history",component:bW}),GW=Mt({getParentRoute:()=>Un,path:"/settings",component:vW,beforeLoad:({context:e})=>{}}),KW=Mt({getParentRoute:()=>Un,path:"/setup",component:mW}),HW=Mt({getParentRoute:()=>Un,path:"/backlinks",component:xW}),FW=Mt({getParentRoute:()=>Un,path:"/traffic",component:wW}),QW=Mt({getParentRoute:()=>Un,path:"/traffic/$projectName/$sourceId",component:kW}),ZW=Mt({getParentRoute:()=>Un,path:"*",component:gW}),YW=Un.addChildren([AW,NW,Vn.addChildren([_W,TW,EW,RW,DW,zW,IW,OW,PW,qW,MW,BW,LW,UW]),VW,$W,GW,KW,HW,FW,QW,ZW]);function XW(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const nS=XW(),JW=nS==="/"?"":nS.replace(/\/$/,"");function WW(e,n){return E5({routeTree:YW,basepath:JW||"/",context:{queryClient:e},...n?.initialEntries})}let aS=!1;async function eee(e){return(await I_({client:ee,body:e,keepalive:!0})).data}function tee(){aS||typeof window>"u"||(aS=!0,!(f1()||wo())&&(LG({send:eee}),ee.interceptors.request.use((e,n)=>{const i=n.fetch??globalThis.fetch,o=typeof n.url=="string"?n.url:void 0;return n.fetch=async(u,h)=>{try{return await i(u,h)}catch(f){throw f instanceof DOMException&&f.name==="AbortError"||am({method:e.method,route:o,network:!0}),f}},e}),ee.interceptors.response.use((e,n,i)=>(am({method:n.method,route:typeof i.url=="string"?i.url:void 0,path:aee(n.url),status:e.status}),e)),window.addEventListener("error",e=>{nm({kind:"unhandled",error:e.error})}),window.addEventListener("unhandledrejection",e=>{nm({kind:"unhandled",error:e.reason})}),lee()))}function nee(e){let n=null;const i=()=>{const o=e.state.matches.at(-1);if(!o)return;UG(o.fullPath);const u=e.state.location;if(!u)return;const h=u.search&&typeof u.search=="object"?u.search:{};n&&n.pathname===u.pathname&&HG(n.search,h),n={pathname:u.pathname,search:h}};return i(),e.subscribe("onResolved",i)}function aee(e){try{return new URL(e,window.location.origin).pathname}catch{return}}const iee={LCP:[2500,4e3],INP:[200,500],CLS:[.1,.25],FCP:[1800,3e3],TTFB:[800,1800]};function see(e,n){const[i,o]=iee[e];return n<=i?"good":n<=o?"needs-improvement":"poor"}function oee(){let e=0,n=0,i=-1/0,o=-1/0;return{add(u){u.hadRecentInput||(u.startTime-o<1e3&&u.startTime-i<5e3?n+=u.value:(n=u.value,i=u.startTime),o=u.startTime,e=Math.max(e,n))},value:()=>e}}function ree(){let e=0;return{add(n){n.interactionId&&(e=Math.max(e,n.duration))},value:()=>e}}function lee(){if(typeof PerformanceObserver>"u")return;const e=new Set,n=(b,v)=>{e.has(b)||!Number.isFinite(v)||(e.add(b),QG(b,see(b,v)))},i=(b,v,x={})=>{try{new PerformanceObserver(k=>v(k.getEntries())).observe({type:b,buffered:!0,...x})}catch{}};try{const b=performance.getEntriesByType("navigation")[0];b&&b.responseStart>0&&n("TTFB",b.responseStart)}catch{}i("paint",b=>{const v=b.find(x=>x.name==="first-contentful-paint");v&&n("FCP",v.startTime)});let o=0;i("largest-contentful-paint",b=>{const v=b.at(-1);v&&(o=v.startTime)});const u=oee();i("layout-shift",b=>{for(const v of b)u.add({startTime:v.startTime,value:v.value??0,hadRecentInput:v.hadRecentInput===!0})});const h=ree();i("event",b=>{for(const v of b)h.add(v)},{durationThreshold:40});const f=()=>{o>0&&n("LCP",o),n("CLS",u.value()),h.value()>0&&n("INP",h.value())};document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&f()}),window.addEventListener("pagehide",f)}const cee=6e4;function uee(){const e=N.useRef(SK()).current,[n,i]=N.useState(e?"ready":"checking"),[o,u]=N.useState(null),[h,f]=N.useState(null),[b,v]=N.useState(e),[x,k]=N.useState(!1),[S,C]=N.useState(""),[_,z]=N.useState(""),[q,T]=N.useState(""),[V,Y]=N.useState(!1),[M,U]=N.useState("password"),[Z,te]=N.useState(null),[B,X]=N.useState(!1),[le,Je]=N.useState(!1),nt=N.useRef(null),$e=N.useRef(null),Pe=N.useRef(null),Se=()=>{const F=o?`${o.name}:${o.role}`:e?"api-key:explicit":h?`api-key:${h.id}`:"no-accounts";if(!nt.current||Pe.current!==F){$e.current?.clear();const pe=pH();$e.current=pe,nt.current=WW(pe),nee(nt.current),Pe.current=F}return{queryClient:$e.current,router:nt.current}},Ue=F=>F.authRequired?(k(!0),u(F.user),f(null),v(!1),i(F.user?"ready":"account-login"),!0):!1;N.useEffect(()=>{let F=!1;const pe=async(Oe,Ae=!1)=>{try{const st=await If();if(F)return;f(st),v(!1),i("ready")}catch(st){if(F)return;if(Ae&&st instanceof Tn&&st.statusCode===401)return IK().then(()=>{F||(te(null),f(null),v(!1),Je(!0),i("login"))}).catch(Ve=>{F||(te(Ve instanceof Error?Ve.message:"Could not clear the invalid session"),i(Oe))});te(st instanceof Error?st.message:"Could not verify API key access"),i(Oe)}};return e?(pe("api-key-error"),()=>{F=!0}):(Promise.allSettled([sk(),ik()]).then(([Oe,Ae])=>{if(F||Oe.status==="fulfilled"&&Ue(Oe.value))return;if(Ae.status==="rejected"){const Ve=Ae.reason;te(Ve instanceof Error?Ve.message:"Failed to reach the Canonry API"),i("login");return}const st=Ae.value;st.authenticated?(v(!0),pe("api-key-error",!0)):(f(null),v(!1),i(st.setupRequired?"setup":"login"))}),()=>{F=!0})},[]),N.useEffect(()=>{if(n!=="ready"||e)return;const F=setInterval(()=>{if(x){sk().then(pe=>{pe.authRequired&&!pe.user&&(Je(!0),u(null),f(null),i("account-login"))}).catch(()=>{});return}ik().then(pe=>{pe.authenticated||(Je(!0),f(null),i(pe.setupRequired?"setup":"login"))}).catch(()=>{})},cee);return ak(()=>{Je(!0),u(null),f(null),v(!1),i(x?"account-login":"login")}),()=>{clearInterval(F),ak(null)}},[n,x,e]);const P=async F=>{if(F.preventDefault(),!_.trim()||_.trim().length<8){te("Password must be at least 8 characters");return}if(_!==q){te("Passwords do not match");return}X(!0),te(null);try{if(!(await RK(_.trim())).authenticated){te("Setup failed");return}z(""),T(""),Y(!1),Je(!1),f(null),v(!0),i("checking");try{const Oe=await If();f(Oe),v(!1),i("ready")}catch(Oe){te(Oe instanceof Error?Oe.message:"Could not verify API key access"),i("api-key-error")}}catch(pe){te(pe instanceof Tn||pe instanceof Error?pe.message:"Setup failed")}finally{X(!1)}},J=F=>{z(F),te(null)},be=F=>{T(F),te(null)},je=async F=>{if(F.preventDefault(),!!_.trim()){X(!0),te(null);try{if(!(M==="api-key"?await zK(_.trim()):await DK(_.trim())).authenticated){te(M==="api-key"?"Invalid API key":"Incorrect password");return}const Oe=await If();f(Oe),v(!1),z(""),Y(!1),Je(!1),i("ready")}catch(pe){te(pe instanceof Tn||pe instanceof Error?pe.message:"Authentication failed")}finally{X(!1)}}},W=F=>{U(F),z(""),Y(!1),te(null)},_e=async F=>{if(F.preventDefault(),!(!S.trim()||!_)){X(!0),te(null);try{const pe=await OK(S.trim(),_);if(!pe.user){te("Incorrect name or password.");return}z(""),Je(!1),u(pe.user),f(null),v(!1),i("ready")}catch(pe){te(pe instanceof Tn?pe.message:"Incorrect name or password.")}finally{X(!1)}}};if(n==="ready"){const{queryClient:F,router:pe}=Se();return l.jsx(aH,{account:o,apiKey:h,apiKeyPending:b,children:l.jsx(R5,{client:F,children:l.jsx(D5,{router:pe})})})}const qe=_.trim(),ve=_.length>0&&qe.length<8,de=q.length>0&&_!==q,ce=qe.length>=8&&_===q;return l.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:l.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[l.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[l.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),l.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),l.jsx(_a,{className:"surface-card w-full",children:n==="checking"?l.jsx(yo,{className:"py-8",children:l.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):n==="api-key-error"?l.jsxs(l.Fragment,{children:[l.jsxs(Cr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Could not verify API key access"})]}),l.jsxs(yo,{className:"space-y-4",children:[l.jsx("p",{className:"supporting-copy",children:Z??"Canonry could not verify this session’s access, so the dashboard stayed locked."}),l.jsx(re,{type:"button",className:"w-full",onClick:()=>{window.location.reload()},children:"Try again"})]})]}):n==="account-login"?l.jsxs(l.Fragment,{children:[l.jsxs(Cr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"})]}),l.jsxs(yo,{children:[le?l.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"You were signed out — please sign in again."}):null,l.jsxs("form",{className:"space-y-4",onSubmit:fn(_e),children:[l.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),l.jsx("input",{autoFocus:!0,id:"account-name",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"text",name:"username",autoComplete:"username",value:S,onChange:F=>{C(F.target.value),te(null)},"aria-invalid":!!Z,"aria-describedby":Z?"account-login-error":void 0})]}),l.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),l.jsx("input",{id:"account-password",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",name:"password",autoComplete:"current-password",value:_,onChange:F=>J(F.target.value),"aria-invalid":!!Z,"aria-describedby":Z?"account-login-error":void 0})]}),Z?l.jsx("p",{id:"account-login-error",role:"alert",className:"text-sm text-negative-400",children:Z}):null,l.jsx(re,{type:"submit",disabled:B||!S.trim()||!_,children:B?"Signing in…":"Sign in"})]})]})]}):n==="setup"?l.jsxs(l.Fragment,{children:[l.jsxs(Cr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Create a dashboard password"}),l.jsx(cm,{children:"This password protects the dashboard on this computer."})]}),l.jsx(yo,{children:l.jsxs("form",{className:"space-y-4",onSubmit:fn(P),children:[l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-new",children:"Password"}),l.jsx("input",{autoFocus:!0,id:"dashboard-password-new",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:V?"text":"password",name:"new-password",autoComplete:"new-password",minLength:8,required:!0,value:_,onChange:F=>J(F.target.value),"aria-invalid":ve,"aria-describedby":"dashboard-password-new-help"}),l.jsx("span",{id:"dashboard-password-new-help","aria-live":"polite",className:ve?"block text-sm text-negative-400":"block text-sm text-secondary",children:ve?"Enter at least 8 characters.":"Use at least 8 characters."})]}),l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-confirm",children:"Confirm password"}),l.jsx("input",{id:"dashboard-password-confirm",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:V?"text":"password",name:"confirm-password",autoComplete:"new-password",minLength:8,required:!0,value:q,onChange:F=>be(F.target.value),"aria-invalid":de,"aria-describedby":"dashboard-password-confirm-help"}),l.jsx("span",{id:"dashboard-password-confirm-help","aria-live":"polite",className:de?"block text-sm text-negative-400":"block text-sm text-secondary",children:de?"Passwords do not match.":"Enter the same password again."})]}),l.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-password-show",children:[l.jsx("input",{id:"dashboard-password-show",type:"checkbox",checked:V,onChange:F=>Y(F.target.checked)}),"Show passwords"]}),Z?l.jsx("p",{id:"dashboard-password-setup-error",role:"alert",className:"text-sm text-negative-400",children:Z}):null,l.jsx(re,{type:"submit",disabled:B||!ce,children:B?"Creating password…":"Create password and continue"})]})})]}):l.jsxs(l.Fragment,{children:[l.jsxs(Cr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"}),l.jsx(cm,{children:M==="api-key"?"Enter an API key from this Canonry install. This opens the dashboard with that key’s access and does not change the password.":"Enter your dashboard password to continue."})]}),l.jsxs(yo,{children:[le?l.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,l.jsxs("form",{className:"space-y-4",onSubmit:fn(je),children:[l.jsxs("label",{className:"block space-y-1.5",htmlFor:"dashboard-password-current",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:M==="api-key"?"Canonry API key":"Password"}),l.jsx("input",{autoFocus:!0,id:"dashboard-password-current",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:V?"text":"password",name:M==="api-key"?"apiKey":"password",autoComplete:M==="api-key"?"off":"current-password",spellCheck:!1,required:!0,value:_,onChange:F=>J(F.target.value),"aria-invalid":!!Z,"aria-describedby":Z?"dashboard-password-login-error":void 0})]}),l.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-login-password-show",children:[l.jsx("input",{id:"dashboard-login-password-show",type:"checkbox",checked:V,onChange:F=>Y(F.target.checked)}),M==="api-key"?"Show API key":"Show password"]}),Z?l.jsx("p",{id:"dashboard-password-login-error",role:"alert",className:"text-sm text-negative-400",children:Z}):null,l.jsx(re,{type:"submit",disabled:B||!_.trim(),children:B?"Signing in…":"Open dashboard"}),l.jsx(re,{type:"button",variant:"ghost",onClick:()=>W(M==="api-key"?"password":"api-key"),children:M==="api-key"?"Use dashboard password instead":"Forgot password? Use API key"})]})]})]})})]})})}const vC=document.getElementById("root");if(!vC)throw new Error("Expected #root element for web app bootstrap.");tee();s6.createRoot(vC).render(l.jsx(N.StrictMode,{children:l.jsx(uee,{})}));export{_ae as $,Bn as A,re as B,yc as C,fn as D,Qae as E,Xae as F,Yae as G,ene as H,la as I,nne as J,tne as K,fa as L,xie as M,bH as N,qie as O,Mie as P,TZ as Q,$a as R,Qk as S,vn as T,AH as U,tte as V,jne as W,_ne as X,Nte as Y,kne as Z,Aae as _,vie as a,Cne as a$,Cae as a0,Ote as a1,Ite as a2,Kte as a3,xn as a4,Rae as a5,Dae as a6,Lte as a7,zae as a8,Ute as a9,bne as aA,Tn as aB,vne as aC,yte as aD,vH as aE,_Q as aF,g0 as aG,xne as aH,zd as aI,Wae as aJ,C0 as aK,go as aL,kH as aM,Zt as aN,uH as aO,Lne as aP,TY as aQ,Mte as aR,ite as aS,nte as aT,Oi as aU,Die as aV,Wee as aW,hte as aX,qP as aY,dte as aZ,Jee as a_,qte as aa,Bte as ab,Tae as ac,Eae as ad,Nae as ae,Pte as af,Iae as ag,Uae as ah,qae as ai,Bae as aj,Mae as ak,Lae as al,lne as am,k1 as an,ze as ao,Pae as ap,TN as aq,$i as ar,Oae as as,D0 as at,K9 as au,H9 as av,Lee as aw,Bee as ax,dne as ay,yne as az,jH as b,kee as b$,Xee as b0,OH as b1,aF as b2,Hne as b3,Xne as b4,Fne as b5,rte as b6,cte as b7,LV as b8,ute as b9,oae as bA,hae as bB,fae as bC,gae as bD,sae as bE,pae as bF,rae as bG,yae as bH,lae as bI,bae as bJ,dae as bK,xae as bL,Sae as bM,gJ as bN,cae as bO,fe as bP,qee as bQ,Pee as bR,Oee as bS,Iee as bT,Ree as bU,Eee as bV,zee as bW,Dee as bX,Tee as bY,_ee as bZ,wee as b_,HH as ba,Kne as bb,VV as bc,h0 as bd,lte as be,hK as bf,Qne as bg,Gne as bh,QH as bi,Zne as bj,Cie as bk,Yne as bl,iie as bm,sie as bn,Vte as bo,x1 as bp,Jae as bq,jN as br,nae as bs,iae as bt,mae as bu,kae as bv,wae as bw,uae as bx,vae as by,jae as bz,Mee as c,qne as c$,Cee as c0,Nee as c1,Aee as c2,See as c3,jee as c4,xee as c5,vee as c6,bee as c7,yee as c8,E6 as c9,zne as cA,pY as cB,S0 as cC,om as cD,j0 as cE,rm as cF,lm as cG,_Y as cH,BH as cI,bo as cJ,um as cK,uF as cL,NJ as cM,Bie as cN,Aie as cO,NY as cP,jie as cQ,xJ as cR,Jne as cS,One as cT,Sie as cU,Bne as cV,Pne as cW,vI as cX,cP as cY,Wne as cZ,kie as c_,mte as ca,jte as cb,Ste as cc,kte as cd,Wte as ce,pK as cf,hj as cg,Am as ch,fj as ci,oF as cj,aae as ck,Rne as cl,ate as cm,dk as cn,_te as co,Tte as cp,Tne as cq,Ene as cr,Ete as cs,Rte as ct,zte as cu,Dte as cv,Wc as cw,Oo as cx,dN as cy,Ine as cz,SH as d,mJ as d$,gie as d0,OY as d1,AK as d2,_H as d3,PY as d4,vte as d5,xte as d6,bte as d7,_K as d8,Nie as d9,Pie as dA,$m as dB,eae as dC,tae as dD,bK as dE,fte as dF,gte as dG,Cte as dH,$te as dI,Gte as dJ,E1 as dK,Gm as dL,N1 as dM,AJ as dN,Jte as dO,Br as dP,pk as dQ,cne as dR,mne as dS,hne as dT,fne as dU,une as dV,pne as dW,gne as dX,Rf as dY,rne as dZ,nie as d_,_ie as da,Tie as db,Rie as dc,wte as dd,Es as de,IH as df,MH as dg,Ate as dh,jZ as di,Vae as dj,BK as dk,Yte as dl,Gae as dm,Kae as dn,Hae as dp,$ae as dq,Ane as dr,Hte as ds,Fte as dt,Qte as du,Xte as dv,Zte as dw,A1 as dx,Mr as dy,Bm as dz,zie as e,ote as e0,i1 as e1,Dne as e2,eie as e3,aie as e4,one as e5,ste as e6,ine as e7,sne as e8,ane as e9,cie as eA,Vee as eB,mie as eC,fie as eD,die as eE,hie as eF,_o as eG,Yee as eH,Hee as eI,pie as eJ,Kee as eK,TO as eL,Qee as eM,Fee as eN,tie as ea,Sne as eb,LI as ec,Une as ed,Mne as ee,$ne as ef,Vne as eg,jk as eh,Zee as ei,pw as ej,Gee as ek,Hi as el,Da as em,$ee as en,nm as eo,pte as ep,nQ as eq,rie as er,oie as es,wJ as et,uie as eu,DY as ev,Uee as ew,yie as ex,bie as ey,lie as ez,Yd as f,Eie as g,Iie as h,Oie as i,A0 as j,Bc as k,EZ as l,wie as m,WU as n,GG as o,wne as p,Fae as q,Zae as r,Nne as s,wH as t,C1 as u,_a as v,ete as w,ee as x,f1 as y,wo as z};
|