@canonry/canonry 4.144.0 → 4.145.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-DxRP9WsD.js → AuditHistoryPanel-CV9g5mLR.js} +1 -1
- package/assets/assets/{BacklinksPage-yiEbyV67.js → BacklinksPage-RTcYKA5I.js} +1 -1
- package/assets/assets/{ChartPrimitives-D2hRlMHn.js → ChartPrimitives-BMR0Dqnf.js} +1 -1
- package/assets/assets/{HistoryPage-CW6MJ-dR.js → HistoryPage-DAN9QO6x.js} +1 -1
- package/assets/assets/{ProjectPage-Bnr7I5qu.js → ProjectPage-aFV2nddp.js} +1 -1
- package/assets/assets/{RunRow-Dr607W0P.js → RunRow-WDCIS9MJ.js} +1 -1
- package/assets/assets/{RunsPage-CtF3P7CA.js → RunsPage-D3Zxd6oc.js} +1 -1
- package/assets/assets/{SettingsPage-3-uzs2lp.js → SettingsPage-DcCFVeA7.js} +1 -1
- package/assets/assets/{TrafficPage-Bww4KUn8.js → TrafficPage-D0tPBu5O.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-DiHxUH2H.js → TrafficSourceDetailPage-CtyEE9eJ.js} +1 -1
- package/assets/assets/{arrow-left-D-PcVbQ4.js → arrow-left-hBxXIGS1.js} +1 -1
- package/assets/assets/{extract-error-message-BRq0yLWg.js → extract-error-message-DRu89RHb.js} +1 -1
- package/assets/assets/{index-b5M4QpB0.js → index-DSOfEiTH.js} +42 -42
- package/assets/assets/{trash-2-B6aJTnJl.js → trash-2-DP0ukgbl.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-WADGZMWT.js → chunk-EFBTZ6ZT.js} +14 -0
- package/dist/{chunk-7D2GZU6O.js → chunk-GTBCGJNT.js} +194 -25
- package/dist/{chunk-Z672VQ7G.js → chunk-MBLATP5L.js} +1250 -70
- package/dist/{chunk-3NYTF3YC.js → chunk-XNAJXSZ2.js} +4 -4
- package/dist/cli.js +4 -4
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-OLIGR6HE.js → intelligence-service-DVMEVHAG.js} +2 -2
- package/dist/mcp.js +5 -5
- package/package.json +10 -10
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProjectPage-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ProjectPage-aFV2nddp.js","./vendor-tanstack-Be8JdV5M.js","./RunRow-WDCIS9MJ.js","./ChartPrimitives-BMR0Dqnf.js","./extract-error-message-DRu89RHb.js","./vendor-recharts-DSxTZhaH.js","./trash-2-DP0ukgbl.js","./AuditHistoryPanel-CV9g5mLR.js","./vendor-radix-CQ77EO2y.js","./vendor-markdown-6dwjPOKK.js","./RunsPage-D3Zxd6oc.js","./HistoryPage-DAN9QO6x.js","./SettingsPage-DcCFVeA7.js","./BacklinksPage-RTcYKA5I.js","./TrafficPage-D0tPBu5O.js","./arrow-left-hBxXIGS1.js","./TrafficSourceDetailPage-CtyEE9eJ.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{c as N4,d as A4,r as q,j as m,Q as _4,M as C4,q as _e,L as Xe,a as z4,e as ro,u as on,f as E4,h as Au,k as T4,l as D4,m as Jv,O as Fp,n as zi,o as hs,p as O4,s as St,t as Wv,v as gs,x as R4,y as M4,z as B4}from"./vendor-tanstack-Be8JdV5M.js";import{S as q4,O as zf,P as e2,C as Ef,a as t2,T as Tf,D as n2,R as a2}from"./vendor-radix-CQ77EO2y.js";import{c as i2}from"./vendor-recharts-DSxTZhaH.js";import{M as L4}from"./vendor-markdown-6dwjPOKK.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const u of r)if(u.type==="childList")for(const d of u.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&s(d)}).observe(document,{childList:!0,subtree:!0});function i(r){const u={};return r.integrity&&(u.integrity=r.integrity),r.referrerPolicy&&(u.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?u.credentials="include":r.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function s(r){if(r.ep)return;r.ep=!0;const u=i(r);fetch(r.href,u)}})();var yp={exports:{}},Hr={},bp={exports:{}},vp={};var Iy;function $4(){return Iy||(Iy=1,(function(e){function n(K,ee){var he=K.length;K.push(ee);e:for(;0<he;){var Ae=he-1>>>1,le=K[Ae];if(0<r(le,ee))K[Ae]=ee,K[he]=le,he=Ae;else break e}}function i(K){return K.length===0?null:K[0]}function s(K){if(K.length===0)return null;var ee=K[0],he=K.pop();if(he!==ee){K[0]=he;e:for(var Ae=0,le=K.length,Ye=le>>>1;Ae<Ye;){var M=2*(Ae+1)-1,re=K[M],ne=M+1,ie=K[ne];if(0>r(re,he))ne<le&&0>r(ie,re)?(K[Ae]=ie,K[ne]=he,Ae=ne):(K[Ae]=re,K[M]=he,Ae=M);else if(ne<le&&0>r(ie,he))K[Ae]=ie,K[ne]=he,Ae=ne;else break e}}return ee}function r(K,ee){var he=K.sortIndex-ee.sortIndex;return he!==0?he:K.id-ee.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;e.unstable_now=function(){return u.now()}}else{var d=Date,g=d.now();e.unstable_now=function(){return d.now()-g}}var y=[],v=[],w=1,S=null,j=3,_=!1,E=!1,A=!1,C=!1,O=typeof setTimeout=="function"?setTimeout:null,L=typeof clearTimeout=="function"?clearTimeout:null,G=typeof setImmediate<"u"?setImmediate:null;function P(K){for(var ee=i(v);ee!==null;){if(ee.callback===null)s(v);else if(ee.startTime<=K)s(v),ee.sortIndex=ee.expirationTime,n(y,ee);else break;ee=i(v)}}function H(K){if(A=!1,P(K),!E)if(i(y)!==null)E=!0,ae||(ae=!0,pe());else{var ee=i(v);ee!==null&&Ne(H,ee.startTime-K)}}var ae=!1,R=-1,$=5,fe=-1;function ue(){return C?!0:!(e.unstable_now()-fe<$)}function me(){if(C=!1,ae){var K=e.unstable_now();fe=K;var ee=!0;try{e:{E=!1,A&&(A=!1,L(R),R=-1),_=!0;var he=j;try{t:{for(P(K),S=i(y);S!==null&&!(S.expirationTime>K&&ue());){var Ae=S.callback;if(typeof Ae=="function"){S.callback=null,j=S.priorityLevel;var le=Ae(S.expirationTime<=K);if(K=e.unstable_now(),typeof le=="function"){S.callback=le,P(K),ee=!0;break t}S===i(y)&&s(y),P(K)}else s(y);S=i(y)}if(S!==null)ee=!0;else{var Ye=i(v);Ye!==null&&Ne(H,Ye.startTime-K),ee=!1}}break e}finally{S=null,j=he,_=!1}ee=void 0}}finally{ee?pe():ae=!1}}}var pe;if(typeof G=="function")pe=function(){G(me)};else if(typeof MessageChannel<"u"){var Ge=new MessageChannel,De=Ge.port2;Ge.port1.onmessage=me,pe=function(){De.postMessage(null)}}else pe=function(){O(me,0)};function Ne(K,ee){R=O(function(){K(e.unstable_now())},ee)}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(K){K.callback=null},e.unstable_forceFrameRate=function(K){0>K||125<K?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):$=0<K?Math.floor(1e3/K):5},e.unstable_getCurrentPriorityLevel=function(){return j},e.unstable_next=function(K){switch(j){case 1:case 2:case 3:var ee=3;break;default:ee=j}var he=j;j=ee;try{return K()}finally{j=he}},e.unstable_requestPaint=function(){C=!0},e.unstable_runWithPriority=function(K,ee){switch(K){case 1:case 2:case 3:case 4:case 5:break;default:K=3}var he=j;j=K;try{return ee()}finally{j=he}},e.unstable_scheduleCallback=function(K,ee,he){var Ae=e.unstable_now();switch(typeof he=="object"&&he!==null?(he=he.delay,he=typeof he=="number"&&0<he?Ae+he:Ae):he=Ae,K){case 1:var le=-1;break;case 2:le=250;break;case 5:le=1073741823;break;case 4:le=1e4;break;default:le=5e3}return le=he+le,K={id:w++,callback:ee,priorityLevel:K,startTime:he,expirationTime:le,sortIndex:-1},he>Ae?(K.sortIndex=he,n(v,K),i(y)===null&&K===i(v)&&(A?(L(R),R=-1):A=!0,Ne(H,he-Ae))):(K.sortIndex=le,n(y,K),E||_||(E=!0,ae||(ae=!0,pe()))),K},e.unstable_shouldYield=ue,e.unstable_wrapCallback=function(K){var ee=j;return function(){var he=j;j=ee;try{return K.apply(this,arguments)}finally{j=he}}}})(vp)),vp}var Uy;function I4(){return Uy||(Uy=1,bp.exports=$4()),bp.exports}var Py;function U4(){if(Py)return Hr;Py=1;var e=I4(),n=N4(),i=A4();function s(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var o=2;o<arguments.length;o++)a+="&args[]="+encodeURIComponent(arguments[o])}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 r(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function u(t){var a=t,o=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(o=a.return),t=a.return;while(t)}return a.tag===3?o:null}function d(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 g(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 y(t){if(u(t)!==t)throw Error(s(188))}function v(t){var a=t.alternate;if(!a){if(a=u(t),a===null)throw Error(s(188));return a!==t?null:t}for(var o=t,l=a;;){var p=o.return;if(p===null)break;var f=p.alternate;if(f===null){if(l=p.return,l!==null){o=l;continue}break}if(p.child===f.child){for(f=p.child;f;){if(f===o)return y(p),t;if(f===l)return y(p),a;f=f.sibling}throw Error(s(188))}if(o.return!==l.return)o=p,l=f;else{for(var k=!1,N=p.child;N;){if(N===o){k=!0,o=p,l=f;break}if(N===l){k=!0,l=p,o=f;break}N=N.sibling}if(!k){for(N=f.child;N;){if(N===o){k=!0,o=f,l=p;break}if(N===l){k=!0,l=f,o=p;break}N=N.sibling}if(!k)throw Error(s(189))}}if(o.alternate!==l)throw Error(s(190))}if(o.tag!==3)throw Error(s(188));return o.stateNode.current===o?t:a}function w(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=w(t),a!==null)return a;t=t.sibling}return null}var S=Object.assign,j=Symbol.for("react.element"),_=Symbol.for("react.transitional.element"),E=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),O=Symbol.for("react.profiler"),L=Symbol.for("react.consumer"),G=Symbol.for("react.context"),P=Symbol.for("react.forward_ref"),H=Symbol.for("react.suspense"),ae=Symbol.for("react.suspense_list"),R=Symbol.for("react.memo"),$=Symbol.for("react.lazy"),fe=Symbol.for("react.activity"),ue=Symbol.for("react.memo_cache_sentinel"),me=Symbol.iterator;function pe(t){return t===null||typeof t!="object"?null:(t=me&&t[me]||t["@@iterator"],typeof t=="function"?t:null)}var Ge=Symbol.for("react.client.reference");function De(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===Ge?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case A:return"Fragment";case O:return"Profiler";case C:return"StrictMode";case H:return"Suspense";case ae:return"SuspenseList";case fe:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case E:return"Portal";case G:return t.displayName||"Context";case L:return(t._context.displayName||"Context")+".Consumer";case P:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case R:return a=t.displayName||null,a!==null?a:De(t.type)||"Memo";case $:a=t._payload,t=t._init;try{return De(t(a))}catch{}}return null}var Ne=Array.isArray,K=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ee=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,he={pending:!1,data:null,method:null,action:null},Ae=[],le=-1;function Ye(t){return{current:t}}function M(t){0>le||(t.current=Ae[le],Ae[le]=null,le--)}function re(t,a){le++,Ae[le]=t.current,t.current=a}var ne=Ye(null),ie=Ye(null),se=Ye(null),ze=Ye(null);function rt(t,a){switch(re(se,a),re(ie,t),re(ne,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?cy(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=cy(a),t=uy(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}M(ne),re(ne,t)}function Se(){M(ne),M(ie),M(se)}function Ke(t){t.memoizedState!==null&&re(ze,t);var a=ne.current,o=uy(a,t.type);a!==o&&(re(ie,t),re(ne,o))}function Ze(t){ie.current===t&&(M(ne),M(ie)),ze.current===t&&(M(ze),Pr._currentValue=he)}var $t,En;function Ut(t){if($t===void 0)try{throw Error()}catch(o){var a=o.stack.trim().match(/\n( *(at )?)/);$t=a&&a[1]||"",En=-1<o.stack.indexOf(`
|
|
3
3
|
at`)?" (<anonymous>)":-1<o.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
4
4
|
`+$t+t+En}var Ss=!1;function js(t,a){if(!t||Ss)return"";Ss=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(a){var te=function(){throw Error()};if(Object.defineProperty(te.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(te,[])}catch(Q){var V=Q}Reflect.construct(t,[],te)}else{try{te.call()}catch(Q){V=Q}t.call(te.prototype)}}else{try{throw Error()}catch(Q){V=Q}(te=t())&&typeof te.catch=="function"&&te.catch(function(){})}}catch(Q){if(Q&&V&&typeof Q.stack=="string")return[Q.stack,V.stack]}return[null,null]}};l.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(l.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(l.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var f=l.DetermineComponentFrameRoot(),k=f[0],N=f[1];if(k&&N){var z=k.split(`
|
|
@@ -11,7 +11,7 @@ Error generating stack: `+l.message+`
|
|
|
11
11
|
|
|
12
12
|
`);$=pe.pop()??"";for(const Ge of pe){const De=Ge.split(`
|
|
13
13
|
`),Ne=[];let K;for(const Ae of De)if(Ae.startsWith("data:"))Ne.push(Ae.replace(/^data:\s*/,""));else if(Ae.startsWith("event:"))K=Ae.replace(/^event:\s*/,"");else if(Ae.startsWith("id:"))S=Ae.replace(/^id:\s*/,"");else if(Ae.startsWith("retry:")){const le=Number.parseInt(Ae.replace(/^retry:\s*/,""),10);Number.isNaN(le)||(A=le)}let ee,he=!1;if(Ne.length){const Ae=Ne.join(`
|
|
14
|
-
`);try{ee=JSON.parse(Ae),he=!0}catch{ee=Ae}}he&&(r&&await r(ee),s&&(ee=await s(ee))),i?.({data:ee,event:K,id:S,retry:A}),Ne.length&&(yield ee)}}}finally{O.removeEventListener("abort",fe),R.releaseLock()}break}catch(G){if(n?.(G),d!==void 0&&C>=d)break;const P=Math.min(A*2**(C-1),g??3e4);await j(P)}}}()}},H4=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Q4=e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},Z4=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},s2=({allowReserved:e,explode:n,name:i,style:s,value:r})=>{if(!n){const g=(e?r:r.map(y=>encodeURIComponent(y))).join(Q4(s));switch(s){case"label":return`.${g}`;case"matrix":return`;${i}=${g}`;case"simple":return g;default:return`${i}=${g}`}}const u=H4(s),d=r.map(g=>s==="label"||s==="simple"?e?g:encodeURIComponent(g):_u({allowReserved:e,name:i,value:g})).join(u);return s==="label"||s==="matrix"?u+d:d},_u=({allowReserved:e,name:n,value:i})=>{if(i==null)return"";if(typeof i=="object")throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${n}=${e?i:encodeURIComponent(i)}`},o2=({allowReserved:e,explode:n,name:i,style:s,value:r,valueOnly:u})=>{if(r instanceof Date)return u?r.toISOString():`${i}=${r.toISOString()}`;if(s!=="deepObject"&&!n){let y=[];Object.entries(r).forEach(([w,S])=>{y=[...y,w,e?S:encodeURIComponent(S)]});const v=y.join(",");switch(s){case"form":return`${i}=${v}`;case"label":return`.${v}`;case"matrix":return`;${i}=${v}`;default:return v}}const d=Z4(s),g=Object.entries(r).map(([y,v])=>_u({allowReserved:e,name:s==="deepObject"?`${i}[${y}]`:y,value:v})).join(d);return s==="label"||s==="matrix"?d+g:g},F4=/\{[^{}]+\}/g,Y4=({path:e,url:n})=>{let i=n;const s=n.match(F4);if(s)for(const r of s){let u=!1,d=r.substring(1,r.length-1),g="simple";d.endsWith("*")&&(u=!0,d=d.substring(0,d.length-1)),d.startsWith(".")?(d=d.substring(1),g="label"):d.startsWith(";")&&(d=d.substring(1),g="matrix");const y=e[d];if(y==null)continue;if(Array.isArray(y)){i=i.replace(r,s2({explode:u,name:d,style:g,value:y}));continue}if(typeof y=="object"){i=i.replace(r,o2({explode:u,name:d,style:g,value:y,valueOnly:!0}));continue}if(g==="matrix"){i=i.replace(r,`;${_u({name:d,value:y})}`);continue}const v=encodeURIComponent(g==="label"?`.${y}`:y);i=i.replace(r,v)}return i},X4=({baseUrl:e,path:n,query:i,querySerializer:s,url:r})=>{const u=r.startsWith("/")?r:`/${r}`;let d=(e??"")+u;n&&(d=Y4({path:n,url:d}));let g=i?s(i):"";return g.startsWith("?")&&(g=g.substring(1)),g&&(d+=`?${g}`),d};function J4(e){const n=e.body!==void 0;if(n&&e.bodySerializer)return"serializedBody"in e?e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null:e.body!==""?e.body:null;if(n)return e.body}const W4=async(e,n)=>{const i=typeof n=="function"?await n(e):n;if(i)return e.scheme==="bearer"?`Bearer ${i}`:e.scheme==="basic"?`Basic ${btoa(i)}`:i},r2=({allowReserved:e,array:n,object:i}={})=>r=>{const u=[];if(r&&typeof r=="object")for(const d in r){const g=r[d];if(g!=null)if(Array.isArray(g)){const y=s2({allowReserved:e,explode:!0,name:d,style:"form",value:g,...n});y&&u.push(y)}else if(typeof g=="object"){const y=o2({allowReserved:e,explode:!0,name:d,style:"deepObject",value:g,...i});y&&u.push(y)}else{const y=_u({allowReserved:e,name:d,value:g});y&&u.push(y)}}return u.join("&")},ej=e=>{if(!e)return"stream";const n=e.split(";")[0]?.trim();if(n){if(n.startsWith("application/json")||n.endsWith("+json"))return"json";if(n==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(i=>n.startsWith(i)))return"blob";if(n.startsWith("text/"))return"text"}},tj=(e,n)=>n?!!(e.headers.has(n)||e.query?.[n]||e.headers.get("Cookie")?.includes(`${n}=`)):!1,nj=async({security:e,...n})=>{for(const i of e){if(tj(n,i.name))continue;const s=await W4(i,n.auth);if(!s)continue;const r=i.name??"Authorization";switch(i.in){case"query":n.query||(n.query={}),n.query[r]=s;break;case"cookie":n.headers.append("Cookie",`${r}=${s}`);break;default:n.headers.set(r,s);break}}},Gy=e=>X4({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:r2(e.querySerializer),url:e.url}),Ky=(e,n)=>{const i={...e,...n};return i.baseUrl?.endsWith("/")&&(i.baseUrl=i.baseUrl.substring(0,i.baseUrl.length-1)),i.headers=l2(e.headers,n.headers),i},aj=e=>{const n=[];return e.forEach((i,s)=>{n.push([s,i])}),n},l2=(...e)=>{const n=new Headers;for(const i of e){if(!i)continue;const s=i instanceof Headers?aj(i):Object.entries(i);for(const[r,u]of s)if(u===null)n.delete(r);else if(Array.isArray(u))for(const d of u)n.append(r,d);else u!==void 0&&n.set(r,typeof u=="object"?JSON.stringify(u):u)}return n};class kp{fns=[];clear(){this.fns=[]}eject(n){const i=this.getInterceptorIndex(n);this.fns[i]&&(this.fns[i]=null)}exists(n){const i=this.getInterceptorIndex(n);return!!this.fns[i]}getInterceptorIndex(n){return typeof n=="number"?this.fns[n]?n:-1:this.fns.indexOf(n)}update(n,i){const s=this.getInterceptorIndex(n);return this.fns[s]?(this.fns[s]=i,n):!1}use(n){return this.fns.push(n),this.fns.length-1}}const ij=()=>({error:new kp,request:new kp,response:new kp}),sj=r2({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),oj={"Content-Type":"application/json"},c2=(e={})=>({...G4,headers:oj,parseAs:"auto",querySerializer:sj,...e}),u2=(e={})=>{let n=Ky(c2(),e);const i=()=>({...n}),s=v=>(n=Ky(n,v),i()),r=ij(),u=async v=>{const w={...n,...v,fetch:v.fetch??n.fetch??globalThis.fetch,headers:l2(n.headers,v.headers),serializedBody:void 0};w.security&&await nj({...w,security:w.security}),w.requestValidator&&await w.requestValidator(w),w.body!==void 0&&w.bodySerializer&&(w.serializedBody=w.bodySerializer(w.body)),(w.body===void 0||w.serializedBody==="")&&w.headers.delete("Content-Type");const S=Gy(w);return{opts:w,url:S}},d=async v=>{const{opts:w,url:S}=await u(v),j={redirect:"follow",...w,body:J4(w)};let _=new Request(S,j);for(const H of r.request.fns)H&&(_=await H(_,w));const E=w.fetch;let A=await E(_);for(const H of r.response.fns)H&&(A=await H(A,_,w));const C={request:_,response:A};if(A.ok){const H=(w.parseAs==="auto"?ej(A.headers.get("Content-Type")):w.parseAs)??"json";if(A.status===204||A.headers.get("Content-Length")==="0"){let R;switch(H){case"arrayBuffer":case"blob":case"text":R=await A[H]();break;case"formData":R=new FormData;break;case"stream":R=A.body;break;default:R={};break}return w.responseStyle==="data"?R:{data:R,...C}}let ae;switch(H){case"arrayBuffer":case"blob":case"formData":case"json":case"text":ae=await A[H]();break;case"stream":return w.responseStyle==="data"?A.body:{data:A.body,...C}}return H==="json"&&(w.responseValidator&&await w.responseValidator(ae),w.responseTransformer&&(ae=await w.responseTransformer(ae))),w.responseStyle==="data"?ae:{data:ae,...C}}const O=await A.text();let L;try{L=JSON.parse(O)}catch{}const G=L??O;let P=G;for(const H of r.error.fns)H&&(P=await H(G,A,_,w));if(P=P||{},w.throwOnError)throw P;return w.responseStyle==="data"?void 0:{error:P,...C}},g=v=>w=>d({...w,method:v}),y=v=>async w=>{const{opts:S,url:j}=await u(w);return K4({...S,body:S.body,headers:S.headers,method:v,onRequest:async(_,E)=>{let A=new Request(_,E);for(const C of r.request.fns)C&&(A=await C(A,S));return A},url:j})};return{buildUrl:Gy,connect:g("CONNECT"),delete:g("DELETE"),get:g("GET"),getConfig:i,head:g("HEAD"),interceptors:r,options:g("OPTIONS"),patch:g("PATCH"),post:g("POST"),put:g("PUT"),request:d,setConfig:s,sse:{connect:y("CONNECT"),delete:y("DELETE"),get:y("GET"),head:y("HEAD"),options:y("OPTIONS"),patch:y("PATCH"),post:y("POST"),put:y("PUT"),trace:y("TRACE")},trace:g("TRACE")}},Y=u2(c2()),rj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps/submit",...e,headers:{"Content-Type":"application/json",...e.headers}}),lj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),d2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),cj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),fU=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-discovery",...e,headers:{"Content-Type":"application/json",...e.headers}}),uj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan",...e}),hU=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan",...e,headers:{"Content-Type":"application/json",...e.headers}}),gU=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/compile-preview",...e,headers:{"Content-Type":"application/json",...e.headers}}),yU=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/diff-preview",...e,headers:{"Content-Type":"application/json",...e.headers}}),dj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-report",...e}),mj=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e}),pj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e}),fj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),hj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs/{runId}",...e}),gj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations",...e,headers:{"Content-Type":"application/json",...e.headers}}),yj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/{label}",...e}),bj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/default",...e,headers:{"Content-Type":"application/json",...e.headers}}),vj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),m2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e}),kj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),xj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),wj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries/generate",...e,headers:{"Content-Type":"application/json",...e.headers}}),Sj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e}),jj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),Nj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),Aj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors/{id}",...e}),p2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e}),_j=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),Cj=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e}),zj=e=>(e?.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),f2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs/{id}",...e}),Ej=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/apply",...e,headers:{"Content-Type":"application/json",...e.headers}}),Tj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/history",...e}),Dj=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/history",...e}),Oj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/timeline",...e}),Rj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/analytics/metrics",...e}),Mj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/snapshots/diff",...e}),h2=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings",...e}),Bj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/providers/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),qj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/google",...e,headers:{"Content-Type":"application/json",...e.headers}}),Lj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/bing",...e,headers:{"Content-Type":"application/json",...e.headers}}),$j=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/cdp",...e,headers:{"Content-Type":"application/json",...e.headers}}),Ij=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),Uj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),Pj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e,headers:{"Content-Type":"application/json",...e.headers}}),Vj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e}),Gj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e,headers:{"Content-Type":"application/json",...e.headers}}),Kj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}",...e}),Hj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}/test",...e}),Qj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry/onboarding",...e,headers:{"Content-Type":"application/json",...e.headers}}),Zj=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/cdp/status",...e}),Fj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections",...e}),Yj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),Xj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}",...e}),Jj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/properties",...e}),Wj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/property",...e,headers:{"Content-Type":"application/json",...e.headers}}),e5=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),t5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),n5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance",...e}),a5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance/daily",...e}),i5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect",...e,headers:{"Content-Type":"application/json",...e.headers}}),s5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspections",...e}),o5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/deindexed",...e}),g2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage",...e}),r5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage/history",...e}),l5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps",...e}),c5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),u5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/indexing/request",...e,headers:{"Content-Type":"application/json",...e.headers}}),d5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations",...e}),m5=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations/{locationName}/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),p5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),f5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/keywords",...e}),h5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/place-actions",...e}),g5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/lodging",...e}),y5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/places",...e}),b5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/summary",...e}),v5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),k5=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/disconnect",...e}),x5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/status",...e}),w5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/sites",...e}),S5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/set-site",...e,headers:{"Content-Type":"application/json",...e.headers}}),y2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/coverage",...e}),j5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspections",...e}),N5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-url",...e,headers:{"Content-Type":"application/json",...e.headers}}),A5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),_5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/request-indexing",...e,headers:{"Content-Type":"application/json",...e.headers}}),C5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/performance",...e}),z5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),E5=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/disconnect",...e}),T5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/status",...e}),D5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),O5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/traffic",...e}),R5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/ai-referral-daily",...e}),M5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/social-referral-history",...e}),B5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/session-history",...e}),q5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/insights",...e}),L5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/report",...e}),$5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/health/history",...e}),I5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/citations/visibility",...e}),U5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/content/dismissals",...e,headers:{"Content-Type":"application/json",...e.headers}}),P5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/overview",...e}),V5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/status",...e}),G5=e=>(e?.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/install",...e}),K5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e}),H5=e=>(e?.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),Q5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs/latest",...e}),Z5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/releases",...e}),F5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/latest-release",...e}),Y5=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/cache/{release}",...e}),X5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/extract",...e,headers:{"Content-Type":"application/json",...e.headers}}),J5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/summary",...e}),W5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/domains",...e}),e6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/history",...e}),t6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/cloud-run",...e,headers:{"Content-Type":"application/json",...e.headers}}),n6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/wordpress",...e,headers:{"Content-Type":"application/json",...e.headers}}),a6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/vercel",...e,headers:{"Content-Type":"application/json",...e.headers}}),i6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),s6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/backfill",...e,headers:{"Content-Type":"application/json",...e.headers}}),o6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources",...e}),r6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/status",...e}),l6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}",...e}),c6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/events",...e}),u6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/run",...e,headers:{"Content-Type":"application/json",...e.headers}}),d6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions",...e}),m6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}",...e}),p6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}/promote",...e}),f6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}/promote",...e,headers:{"Content-Type":"application/json",...e.headers}}),h6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo",...e}),g6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/pages",...e}),y6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/trend",...e}),b6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),v6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/agent/providers",...e});function k6(e){const n={baseUrl:e.baseUrl,fetch:e.fetch,headers:{...e.headers??{}}};return u2(n)}class zn extends Error{code;statusCode;details;constructor(n,i,s,r){super(n),this.name="ApiError",this.code=s??"UNKNOWN",this.statusCode=i,this.details=r}}function x6(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function Df(e){const n=x6();if(!n)return e;let i;const s=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{i=new URL(e,s)}catch{return e}const r=new URL(s).origin;if(i.origin!==r)return e;const d=`${Rf().replace(/\/$/,"")}/api/v1`;return i.pathname!==d&&!i.pathname.startsWith(`${d}/`)?e:(i.searchParams.set("token",n),/^[a-z][a-z\d+.-]*:/i.test(e)?i.toString():`${i.pathname}${i.search}${i.hash}`)}function w6(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 b2(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function S6(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function j6(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function N6(){return b2()!==null}function A6(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const Of=A6();function _6(){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 Rf(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function C6(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 z6(e,n){if(e.protocol!=="http:"&&e.protocol!=="https:"||!C6(e.hostname))return;const i=e.port?`:${e.port}`:"",s=n?n.replace(/\/$/,""):"";return`${e.protocol}//localhost${i}${s}`}function bU(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function E6(){if(!(typeof window>"u"))return z6(window.location,Rf())}function T6(e){return`${Rf()}${e}`}function D6(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 O6(){return""}function xp(){return!!O6()}let v2=null;function Hy(e){v2=e}function Mf(){v2?.()}const oe=k6({baseUrl:_6()});oe.interceptors.response.use((e,n)=>(e.status===401&&!n.url.includes("/api/v1/session")&&Mf(),e));oe.interceptors.request.use(e=>{const n=Df(e.url);return n===e.url?e:w6(e,n)});async function de(e){const n=await e();if(n.error!==void 0&&n.error!==null){const i=n.response.status;let s=`API ${i}: ${n.response.statusText}`,r,u;if(typeof n.error=="object"&&n.error!==null){const d=n.error.error;if(typeof d=="string")s=d;else if(d&&typeof d=="object"){const g=d;g.message&&(s=g.message),g.code&&(r=g.code),g.details&&(u=g.details)}else{const g=n.error;g.message&&(s=g.message),g.code&&(r=g.code),g.details&&(u=g.details)}}else typeof n.error=="string"&&(s=n.error);throw new zn(s,i,r,u)}if(n.response.status!==204)return n.data}async function Mo(e,n){const i=n?.body!=null,s=await fetch(Df(`${Of}${e}`),{...n,credentials:n?.credentials??"same-origin",headers:{...i?{"Content-Type":"application/json"}:{},...n?.headers}});if(!s.ok){const r=await s.text();let u=`API ${s.status}: ${s.statusText}`,d,g;if(r)try{const y=JSON.parse(r);typeof y.error=="string"?u=y.error:y.error?.message?(u=y.error.message,d=y.error.code,g=y.error.details):y.message&&(u=y.message)}catch{u=r}throw s.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&Mf(),new zn(u,s.status,d,g)}if(s.status!==204)return s.json()}function R6(e){return de(()=>d2({client:oe,path:{name:e}}))}function vU(e){return de(()=>p2({client:oe,path:{name:e}}))}function cu(e){return de(()=>f2({client:oe,path:{id:e}}))}function k2(e){return de(()=>m2({client:oe,path:{name:e}}))}function M6(e){return de(()=>Sj({client:oe,path:{name:e}}))}function B6(e,n,i){return de(()=>Oj({client:oe,path:{name:e},query:{location:n,limit:i}}))}function x2(e,n){return de(()=>P5({client:oe,path:{name:e},query:{location:n?.location,since:n?.since}}))}function Bf(e,n){return de(()=>cj({client:oe,path:{name:e},body:n}))}function q6(e,n){return de(()=>xj({client:oe,path:{name:e},body:{queries:n}}))}function L6(e,n){return de(()=>kj({client:oe,path:{name:e},body:{queries:n}}))}function kU(e,n){return de(()=>vj({client:oe,path:{name:e},body:{queries:n}}))}function $6(e,n){return de(()=>U5({client:oe,path:{name:e},body:n}))}function I6(e,n){return de(()=>Nj({client:oe,path:{name:e},body:{competitors:n}}))}function xU(e,n){return de(()=>jj({client:oe,path:{name:e},body:{competitors:n}}))}function wU(e,n){return de(()=>Aj({client:oe,path:{name:e,id:n}}))}async function SU(e,n){const i=await R6(e);return Bf(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})}function U6(e,n){const i={};return n?.location&&(i.location=n.location),n?.allLocations&&(i.allLocations=!0),n?.noLocation&&(i.noLocation=!0),de(()=>_j({client:oe,path:{name:e},body:i}))}function jU(e,n){return de(()=>gj({client:oe,path:{name:e},body:n}))}async function NU(e,n){await de(()=>yj({client:oe,path:{name:e,label:n}}))}function AU(e,n){return de(()=>bj({client:oe,path:{name:e},body:{label:n}}))}async function _U(e){await de(()=>lj({client:oe,path:{name:e}}))}function CU(){return de(()=>h2({client:oe}))}function Qy(){return Mo("/session")}function P6(e){return Mo("/session/setup",{method:"POST",body:JSON.stringify({password:e})})}function V6(e){return Mo("/session",{method:"POST",body:JSON.stringify({password:e})})}function Zy(){return Mo("/auth/session")}function G6(e,n){return Mo("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:n})})}function Fy(){return Mo("/auth/logout",{method:"POST"})}function K6(e,n){return de(()=>Bj({client:oe,path:{name:e},body:n}))}async function H6(e){for(let n=0;n<2;n+=1)try{await de(()=>Qj({client:oe,body:e}));return}catch(i){if(!(!(i instanceof zn)||i.statusCode>=500)||n===1)return}}function zU(e){return de(()=>qj({client:oe,body:e}))}async function EU(e){try{return await de(()=>Uj({client:oe,path:{name:e}}))}catch(n){if(n instanceof zn&&n.statusCode===404)return null;throw n}}function TU(e,n){return de(()=>Pj({client:oe,path:{name:e},body:n}))}async function DU(e){await de(()=>Ij({client:oe,path:{name:e}}))}function OU(e){return de(()=>Vj({client:oe,path:{name:e}}))}function RU(e,n){return de(()=>Gj({client:oe,path:{name:e},body:n}))}async function MU(e,n){await de(()=>Kj({client:oe,path:{name:e,id:n}}))}function BU(e,n){return de(()=>Hj({client:oe,path:{name:e,id:n}}))}function Q6(e,n,i){return de(()=>wj({client:oe,path:{name:e},body:{provider:n,count:i}}))}function Z6(e){return de(()=>Ej({client:oe,body:e}))}function F6(e){return de(()=>zj({client:oe,body:e??{}}))}function qU(e,n){const i=E6();return de(()=>Yj({client:oe,path:{name:e},body:{type:n,...i?{publicUrl:i}:{}}}))}function LU(e,n){return de(()=>Xj({client:oe,path:{name:e,type:n}}))}function $U(e,n,i){return de(()=>Wj({client:oe,path:{name:e,type:n},body:{propertyId:i}}))}function IU(e,n,i){return de(()=>e5({client:oe,path:{name:e,type:n},body:{sitemapUrl:i}}))}function Y6(e,n){return de(()=>t5({client:oe,path:{name:e},body:n??{}}))}function UU(e,n){const i={};return n&&n!=="all"&&(i.window=n),de(()=>Rj({client:oe,path:{name:e},query:i}))}function PU(e,n){return de(()=>i5({client:oe,path:{name:e},body:{url:n}}))}function X6(e){return de(()=>g2({client:oe,path:{name:e}}))}function J6(e,n){return de(()=>c5({client:oe,path:{name:e},body:n??{}}))}function VU(e,n){return de(()=>l5({client:oe,path:{name:e},query:n?{sitemapIndex:n}:void 0}))}function GU(e,n){return de(()=>rj({client:oe,path:{name:e},body:{sitemapUrls:n}}))}function W6(e,n){return de(()=>b6({client:oe,path:{name:e},body:n??{}}))}function KU(e,n){return de(()=>u6({client:oe,path:{name:e},body:n??{}}))}function HU(e,n,i){return de(()=>f6({client:oe,path:{name:e,id:n},body:i??{}}))}function QU(){return de(()=>Zj({client:oe}))}function ZU(e,n){return de(()=>$j({client:oe,body:{host:e,port:n}}))}function FU(e,n){return de(()=>u5({client:oe,path:{name:e},body:n}))}function YU(e,n){return de(()=>v5({client:oe,path:{name:e},body:{apiKey:n}}))}function XU(e){return de(()=>k5({client:oe,path:{name:e}}))}function JU(e,n){return de(()=>S5({client:oe,path:{name:e},body:{siteUrl:n}}))}function eN(e){return de(()=>y2({client:oe,path:{name:e}}))}function WU(e,n){return de(()=>N5({client:oe,path:{name:e},body:{url:n}}))}function eP(e,n){return de(()=>A5({client:oe,path:{name:e},body:{}}))}function tP(e,n){return de(()=>_5({client:oe,path:{name:e},body:n}))}function nP(e){return de(()=>Lj({client:oe,body:{apiKey:e}}))}function w2(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function aP(e,n="agency",i){const s=new URLSearchParams({audience:n});i!==void 0&&s.set("period",String(i));const r=await fetch(Df(`${Of}/projects/${encodeURIComponent(e)}/report.html?${s.toString()}`),{credentials:"same-origin",headers:{}});if(!r.ok)throw new zn(`Failed to download report: ${r.status}`,r.status);const u=await r.blob(),d=URL.createObjectURL(u),g=w2(r.headers.get("Content-Disposition"))??`canonry-report-${e}.html`,y=document.createElement("a");y.href=d,y.download=g,document.body.appendChild(y),y.click(),document.body.removeChild(y),URL.revokeObjectURL(d)}async function iP(e,n){const i=await fetch(`${Of}/projects/${encodeURIComponent(e)}/results/export?format=${n}`,{credentials:"same-origin",headers:{}});if(!i.ok)throw new zn(`Failed to download results: ${i.status}`,i.status);const s=await i.blob(),r=URL.createObjectURL(s),u=w2(i.headers.get("Content-Disposition"))??`canonry-results-${e}.${n}`,d=document.createElement("a");d.href=r,d.download=u,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(r)}function sP(e,n){return de(()=>D5({client:oe,path:{name:e},body:{}}))}function oP(e,n){return de(()=>z5({client:oe,path:{name:e},body:n}))}function rP(e){return de(()=>E5({client:oe,path:{name:e}}))}function lP(e,n){return de(()=>t6({client:oe,path:{name:e},body:n}))}function cP(e,n){return de(()=>n6({client:oe,path:{name:e},body:n}))}function uP(e,n){return de(()=>a6({client:oe,path:{name:e},body:n}))}function dP(e,n,i){return de(()=>i6({client:oe,path:{name:e,id:n},body:i??{}}))}function mP(e,n,i){return de(()=>s6({client:oe,path:{name:e,id:n},body:{}}))}function tN(e,n){return de(()=>q5({client:oe,path:{name:e},query:{runId:n}}))}function nN(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 aN(e,n){const i=T6(e);try{const s=await fetch(i,{credentials:"same-origin"});if(!s.ok)return{label:n,state:"error",detail:`${n} ${s.status}: ${s.statusText}`,statusCode:s.status,hint:D6(e,s.status)};const r=await s.json(),u=typeof r.version=="string"?r.version:"unknown",d=typeof r.databaseUrlConfigured=="boolean"?r.databaseUrlConfigured:void 0,g=typeof r.lastHeartbeatAt=="string"?r.lastHeartbeatAt:void 0,y=nN(r.updateAvailable),v=[u,d===!1?"database not configured":"database configured",g?`heartbeat ${g}`:void 0].filter(Boolean).join(" · ");return{label:n,state:"ok",detail:v,version:u,databaseConfigured:d,lastHeartbeatAt:g,...y?{updateAvailable:y}:{}}}catch(s){return{label:n,state:"error",detail:s instanceof Error?s.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 pP(){return de(()=>V5({client:oe}))}function fP(){return de(()=>G5({client:oe}))}function hP(){return de(()=>Q5({client:oe}))}function gP(){return de(()=>K5({client:oe}))}function yP(e){return de(()=>H5({client:oe,body:e?{release:e}:{}}))}function bP(){return de(()=>Z5({client:oe}))}function vP(){return de(()=>F5({client:oe}))}function kP(e){return de(()=>Y5({client:oe,path:{release:e}}))}function xP(e,n={}){return de(()=>J5({client:oe,path:{name:e},query:{release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function wP(e,n={}){return de(()=>W5({client:oe,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 SP(e,n={}){return de(()=>e6({client:oe,path:{name:e},query:{source:n.source}}))}function jP(e,n){return de(()=>X5({client:oe,path:{name:e},body:{release:void 0}}))}const S2={account:null,canWrite:!0,isAdmin:!0},j2=q.createContext(S2);function iN({account:e,children:n}){const i=e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:S2;return m.jsx(j2.Provider,{value:i,children:n})}function hl(){return q.useContext(j2)}const N2="View only — your account cannot change this.";function Xt(e){return(...n)=>{e(...n)}}const sN=6e3,oN=5,rN=180;let Jt=[],lN=0;const Yp=new Set,Xp=new Map,Jp=new Map;function uu(){const e=[...Jt];for(const n of Yp)n(e)}function qf(e){const n=Xp.get(e);n&&(clearTimeout(n),Xp.delete(e));const i=Jp.get(e);i&&(clearTimeout(i),Jp.delete(e))}function A2(e){qf(e);const n=Jt.length;Jt=Jt.filter(i=>i.id!==e),Jt.length!==n&&uu()}function Yy(e){qf(e.id),Xp.set(e.id,setTimeout(()=>{Wp(e.id)},e.durationMs))}function cN(e,n,i){return typeof e=="string"?{title:e,tone:n,durationMs:i}:e}function rn(e,n="negative",i=sN){const s=cN(e,n,i),r={id:String(++lN),title:s.title,detail:s.detail,tone:s.tone??n,durationMs:s.durationMs??i,dedupeKey:s.dedupeKey,cta:s.cta,state:"open"};if(s.dedupeKey){const u=Jt.find(d=>d.dedupeKey===s.dedupeKey);if(u){if((s.dedupeMode??"drop")==="drop")return u.id;const d={...u,title:r.title,detail:r.detail,tone:r.tone,durationMs:r.durationMs,cta:r.cta,state:"open"};return Jt=Jt.map(g=>g.id===u.id?d:g),uu(),Yy(d),u.id}}return Jt.length>=oN&&A2(Jt[0].id),Jt=[...Jt,r],uu(),Yy(r),r.id}function Wp(e){const n=Jt.find(i=>i.id===e);!n||n.state==="closing"||(qf(e),Jt=Jt.map(i=>i.id===e?{...i,state:"closing"}:i),uu(),Jp.set(e,setTimeout(()=>{A2(e)},rN)))}function uN(e){return Yp.add(e),()=>{Yp.delete(e)}}function Xy(){return Jt}const dN=5*6e4,ef=30*6e4,NP=3e4,AP=6e4,No=3e4,mN=2e3;function pN(){return new _4({defaultOptions:{queries:{staleTime:dN,retry:1,refetchOnWindowFocus:!1}},mutationCache:new C4({onError:(n,i,s,r)=>{r.meta?.skipGlobalErrorToast||rn({title:n instanceof Error?n.message:"An unexpected error occurred",tone:"negative"})}})})}const fN="modulepreload",hN=function(e,n){return new URL(e,n).href},Jy={},ys=function(n,i,s){let r=Promise.resolve();if(i&&i.length>0){let v=function(w){return Promise.all(w.map(S=>Promise.resolve(S).then(j=>({status:"fulfilled",value:j}),j=>({status:"rejected",reason:j}))))};const d=document.getElementsByTagName("link"),g=document.querySelector("meta[property=csp-nonce]"),y=g?.nonce||g?.getAttribute("nonce");r=v(i.map(w=>{if(w=hN(w,s),w in Jy)return;Jy[w]=!0;const S=w.endsWith(".css"),j=S?'[rel="stylesheet"]':"";if(s)for(let E=d.length-1;E>=0;E--){const A=d[E];if(A.href===w&&(!S||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${w}"]${j}`))return;const _=document.createElement("link");if(_.rel=S?"stylesheet":fN,S||(_.as="script"),_.crossOrigin="",_.href=w,y&&_.setAttribute("nonce",y),document.head.appendChild(_),S)return new Promise((E,A)=>{_.addEventListener("load",E),_.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${w}`)))})}))}function u(d){const g=new Event("vite:preloadError",{cancelable:!0});if(g.payload=d,window.dispatchEvent(g),!g.defaultPrevented)throw d}return r.then(d=>{for(const g of d||[])g.status==="rejected"&&u(g.reason);return n().catch(u)})};const gN=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),yN=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,i,s)=>s?s.toUpperCase():i.toLowerCase()),Wy=e=>{const n=yN(e);return n.charAt(0).toUpperCase()+n.slice(1)},_2=(...e)=>e.filter((n,i,s)=>!!n&&n.trim()!==""&&s.indexOf(n)===i).join(" ").trim(),bN=e=>{for(const n in e)if(n.startsWith("aria-")||n==="role"||n==="title")return!0};var vN={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const kN=q.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:i=2,absoluteStrokeWidth:s,className:r="",children:u,iconNode:d,...g},y)=>q.createElement("svg",{ref:y,...vN,width:n,height:n,stroke:e,strokeWidth:s?Number(i)*24/Number(n):i,className:_2("lucide",r),...!u&&!bN(g)&&{"aria-hidden":"true"},...g},[...d.map(([v,w])=>q.createElement(v,w)),...Array.isArray(u)?u:[u]]));const et=(e,n)=>{const i=q.forwardRef(({className:s,...r},u)=>q.createElement(kN,{ref:u,iconNode:n,className:_2(`lucide-${gN(Wy(e))}`,`lucide-${e}`,s),...r}));return i.displayName=Wy(e),i};const xN=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],wN=et("arrow-right",xN);const SN=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],jN=et("arrow-up",SN);const NN=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],AN=et("book-open",NN);const _N=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],C2=et("check",_N);const CN=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],z2=et("chevron-down",CN);const zN=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],Lf=et("chevron-right",zN);const EN=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],TN=et("copy",EN);const DN=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],ON=et("file-text",DN);const RN=[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]],MN=et("github",RN);const BN=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],qN=et("globe",BN);const LN=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]],$N=et("history",LN);const IN=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],UN=et("layout-dashboard",IN);const PN=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],VN=et("link-2",PN);const GN=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],E2=et("loader-circle",GN);const KN=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],HN=et("maximize-2",KN);const QN=[["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 18h16",key:"19g7jn"}],["path",{d:"M4 6h16",key:"1o0s65"}]],ZN=et("menu",QN);const FN=[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]],YN=et("minimize-2",FN);const XN=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]],JN=et("panel-left-close",XN);const WN=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]],eA=et("panel-left-open",WN);const tA=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],nA=et("play",tA);const aA=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],eb=et("plus",aA);const iA=[["path",{d:"M19.07 4.93A10 10 0 0 0 6.99 3.34",key:"z3du51"}],["path",{d:"M4 6h.01",key:"oypzma"}],["path",{d:"M2.29 9.62A10 10 0 1 0 21.31 8.35",key:"qzzz0"}],["path",{d:"M16.24 7.76A6 6 0 1 0 8.23 16.67",key:"1yjesh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M17.99 11.66A6 6 0 0 1 15.77 16.67",key:"1u2y91"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"m13.41 10.59 5.66-5.66",key:"mhq4k0"}]],sA=et("radar",iA);const oA=[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],tb=et("radio",oA);const rA=[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]],lA=et("rocket",rA);const cA=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],T2=et("rotate-ccw",cA);const uA=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],dA=et("search",uA);const mA=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],pA=et("settings",mA);const fA=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],D2=et("triangle-alert",fA);const hA=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],gA=et("wrench",hA);const yA=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Bo=et("x",yA);function J(e,n,i){function s(g,y){if(g._zod||Object.defineProperty(g,"_zod",{value:{def:y,constr:d,traits:new Set},enumerable:!1}),g._zod.traits.has(e))return;g._zod.traits.add(e),n(g,y);const v=d.prototype,w=Object.keys(v);for(let S=0;S<w.length;S++){const j=w[S];j in g||(g[j]=v[j].bind(g))}}const r=i?.Parent??Object;class u extends r{}Object.defineProperty(u,"name",{value:e});function d(g){var y;const v=i?.Parent?new u:this;s(v,g),(y=v._zod).deferred??(y.deferred=[]);for(const w of v._zod.deferred)w();return v}return Object.defineProperty(d,"init",{value:s}),Object.defineProperty(d,Symbol.hasInstance,{value:g=>i?.Parent&&g instanceof i.Parent?!0:g?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}class ko extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class O2 extends Error{constructor(n){super(`Encountered unidirectional transform during encode: ${n}`),this.name="ZodEncodeError"}}const R2={};function Ai(e){return R2}function M2(e){const n=Object.values(e).filter(s=>typeof s=="number");return Object.entries(e).filter(([s,r])=>n.indexOf(+s)===-1).map(([s,r])=>r)}function tf(e,n){return typeof n=="bigint"?n.toString():n}function Cu(e){return{get value(){{const n=e();return Object.defineProperty(this,"value",{value:n}),n}}}}function $f(e){return e==null}function If(e){const n=e.startsWith("^")?1:0,i=e.endsWith("$")?e.length-1:e.length;return e.slice(n,i)}function bA(e,n){const i=(e.toString().split(".")[1]||"").length,s=n.toString();let r=(s.split(".")[1]||"").length;if(r===0&&/\d?e-\d?/.test(s)){const y=s.match(/\d?e-(\d?)/);y?.[1]&&(r=Number.parseInt(y[1]))}const u=i>r?i:r,d=Number.parseInt(e.toFixed(u).replace(".","")),g=Number.parseInt(n.toFixed(u).replace(".",""));return d%g/10**u}const nb=Symbol("evaluating");function Je(e,n,i){let s;Object.defineProperty(e,n,{get(){if(s!==nb)return s===void 0&&(s=nb,s=i()),s},set(r){Object.defineProperty(e,n,{value:r})},configurable:!0})}function bs(e,n,i){Object.defineProperty(e,n,{value:i,writable:!0,enumerable:!0,configurable:!0})}function Ei(...e){const n={};for(const i of e){const s=Object.getOwnPropertyDescriptors(i);Object.assign(n,s)}return Object.defineProperties({},n)}function ab(e){return JSON.stringify(e)}function vA(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const B2="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function cl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const kA=Cu(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function Ao(e){if(cl(e)===!1)return!1;const n=e.constructor;if(n===void 0||typeof n!="function")return!0;const i=n.prototype;return!(cl(i)===!1||Object.prototype.hasOwnProperty.call(i,"isPrototypeOf")===!1)}function q2(e){return Ao(e)?{...e}:Array.isArray(e)?[...e]:e}const xA=new Set(["string","number","symbol"]);function _o(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ti(e,n,i){const s=new e._zod.constr(n??e._zod.def);return(!n||i?.parent)&&(s._zod.parent=e),s}function ke(e){const n=e;if(!n)return{};if(typeof n=="string")return{error:()=>n};if(n?.message!==void 0){if(n?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");n.error=n.message}return delete n.message,typeof n.error=="string"?{...n,error:()=>n.error}:n}function wA(e){return Object.keys(e).filter(n=>e[n]._zod.optin==="optional"&&e[n]._zod.optout==="optional")}const SA={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function jA(e,n){const i=e._zod.def,s=i.checks;if(s&&s.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const u=Ei(e._zod.def,{get shape(){const d={};for(const g in n){if(!(g in i.shape))throw new Error(`Unrecognized key: "${g}"`);n[g]&&(d[g]=i.shape[g])}return bs(this,"shape",d),d},checks:[]});return Ti(e,u)}function NA(e,n){const i=e._zod.def,s=i.checks;if(s&&s.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const u=Ei(e._zod.def,{get shape(){const d={...e._zod.def.shape};for(const g in n){if(!(g in i.shape))throw new Error(`Unrecognized key: "${g}"`);n[g]&&delete d[g]}return bs(this,"shape",d),d},checks:[]});return Ti(e,u)}function AA(e,n){if(!Ao(n))throw new Error("Invalid input to extend: expected a plain object");const i=e._zod.def.checks;if(i&&i.length>0){const u=e._zod.def.shape;for(const d in n)if(Object.getOwnPropertyDescriptor(u,d)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const r=Ei(e._zod.def,{get shape(){const u={...e._zod.def.shape,...n};return bs(this,"shape",u),u}});return Ti(e,r)}function _A(e,n){if(!Ao(n))throw new Error("Invalid input to safeExtend: expected a plain object");const i=Ei(e._zod.def,{get shape(){const s={...e._zod.def.shape,...n};return bs(this,"shape",s),s}});return Ti(e,i)}function CA(e,n){const i=Ei(e._zod.def,{get shape(){const s={...e._zod.def.shape,...n._zod.def.shape};return bs(this,"shape",s),s},get catchall(){return n._zod.def.catchall},checks:[]});return Ti(e,i)}function zA(e,n,i){const r=n._zod.def.checks;if(r&&r.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const d=Ei(n._zod.def,{get shape(){const g=n._zod.def.shape,y={...g};if(i)for(const v in i){if(!(v in g))throw new Error(`Unrecognized key: "${v}"`);i[v]&&(y[v]=e?new e({type:"optional",innerType:g[v]}):g[v])}else for(const v in g)y[v]=e?new e({type:"optional",innerType:g[v]}):g[v];return bs(this,"shape",y),y},checks:[]});return Ti(n,d)}function EA(e,n,i){const s=Ei(n._zod.def,{get shape(){const r=n._zod.def.shape,u={...r};if(i)for(const d in i){if(!(d in u))throw new Error(`Unrecognized key: "${d}"`);i[d]&&(u[d]=new e({type:"nonoptional",innerType:r[d]}))}else for(const d in r)u[d]=new e({type:"nonoptional",innerType:r[d]});return bs(this,"shape",u),u}});return Ti(n,s)}function fo(e,n=0){if(e.aborted===!0)return!0;for(let i=n;i<e.issues.length;i++)if(e.issues[i]?.continue!==!0)return!0;return!1}function ho(e,n){return n.map(i=>{var s;return(s=i).path??(s.path=[]),i.path.unshift(e),i})}function Vc(e){return typeof e=="string"?e:e?.message}function _i(e,n,i){const s={...e,path:e.path??[]};if(!e.message){const r=Vc(e.inst?._zod.def?.error?.(e))??Vc(n?.error?.(e))??Vc(i.customError?.(e))??Vc(i.localeError?.(e))??"Invalid input";s.message=r}return delete s.inst,delete s.continue,n?.reportInput||delete s.input,s}function Uf(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function ul(...e){const[n,i,s]=e;return typeof n=="string"?{message:n,code:"custom",input:i,inst:s}:{...n}}const L2=(e,n)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:n,enumerable:!1}),e.message=JSON.stringify(n,tf,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},$2=J("$ZodError",L2),I2=J("$ZodError",L2,{Parent:Error});function TA(e,n=i=>i.message){const i={},s=[];for(const r of e.issues)r.path.length>0?(i[r.path[0]]=i[r.path[0]]||[],i[r.path[0]].push(n(r))):s.push(n(r));return{formErrors:s,fieldErrors:i}}function DA(e,n=i=>i.message){const i={_errors:[]},s=r=>{for(const u of r.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(d=>s({issues:d}));else if(u.code==="invalid_key")s({issues:u.issues});else if(u.code==="invalid_element")s({issues:u.issues});else if(u.path.length===0)i._errors.push(n(u));else{let d=i,g=0;for(;g<u.path.length;){const y=u.path[g];g===u.path.length-1?(d[y]=d[y]||{_errors:[]},d[y]._errors.push(n(u))):d[y]=d[y]||{_errors:[]},d=d[y],g++}}};return s(e),i}const Pf=e=>(n,i,s,r)=>{const u=s?Object.assign(s,{async:!1}):{async:!1},d=n._zod.run({value:i,issues:[]},u);if(d instanceof Promise)throw new ko;if(d.issues.length){const g=new(r?.Err??e)(d.issues.map(y=>_i(y,u,Ai())));throw B2(g,r?.callee),g}return d.value},Vf=e=>async(n,i,s,r)=>{const u=s?Object.assign(s,{async:!0}):{async:!0};let d=n._zod.run({value:i,issues:[]},u);if(d instanceof Promise&&(d=await d),d.issues.length){const g=new(r?.Err??e)(d.issues.map(y=>_i(y,u,Ai())));throw B2(g,r?.callee),g}return d.value},zu=e=>(n,i,s)=>{const r=s?{...s,async:!1}:{async:!1},u=n._zod.run({value:i,issues:[]},r);if(u instanceof Promise)throw new ko;return u.issues.length?{success:!1,error:new(e??$2)(u.issues.map(d=>_i(d,r,Ai())))}:{success:!0,data:u.value}},OA=zu(I2),Eu=e=>async(n,i,s)=>{const r=s?Object.assign(s,{async:!0}):{async:!0};let u=n._zod.run({value:i,issues:[]},r);return u instanceof Promise&&(u=await u),u.issues.length?{success:!1,error:new e(u.issues.map(d=>_i(d,r,Ai())))}:{success:!0,data:u.value}},RA=Eu(I2),MA=e=>(n,i,s)=>{const r=s?Object.assign(s,{direction:"backward"}):{direction:"backward"};return Pf(e)(n,i,r)},BA=e=>(n,i,s)=>Pf(e)(n,i,s),qA=e=>async(n,i,s)=>{const r=s?Object.assign(s,{direction:"backward"}):{direction:"backward"};return Vf(e)(n,i,r)},LA=e=>async(n,i,s)=>Vf(e)(n,i,s),$A=e=>(n,i,s)=>{const r=s?Object.assign(s,{direction:"backward"}):{direction:"backward"};return zu(e)(n,i,r)},IA=e=>(n,i,s)=>zu(e)(n,i,s),UA=e=>async(n,i,s)=>{const r=s?Object.assign(s,{direction:"backward"}):{direction:"backward"};return Eu(e)(n,i,r)},PA=e=>async(n,i,s)=>Eu(e)(n,i,s),VA=/^[cC][^\s-]{8,}$/,GA=/^[0-9a-z]+$/,KA=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,HA=/^[0-9a-vA-V]{20}$/,QA=/^[A-Za-z0-9]{27}$/,ZA=/^[a-zA-Z0-9_-]{21}$/,FA=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,YA=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ib=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,XA=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,JA="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function WA(){return new RegExp(JA,"u")}const e8=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,t8=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,n8=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,a8=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,i8=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,U2=/^[A-Za-z0-9_-]*$/,s8=/^\+[1-9]\d{6,14}$/,P2="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",o8=new RegExp(`^${P2}$`);function V2(e){const n="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${n}`:e.precision===0?`${n}:[0-5]\\d`:`${n}:[0-5]\\d\\.\\d{${e.precision}}`:`${n}(?::[0-5]\\d(?:\\.\\d+)?)?`}function r8(e){return new RegExp(`^${V2(e)}$`)}function l8(e){const n=V2({precision:e.precision}),i=["Z"];e.local&&i.push(""),e.offset&&i.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const s=`${n}(?:${i.join("|")})`;return new RegExp(`^${P2}T(?:${s})$`)}const c8=e=>{const n=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${n}$`)},u8=/^-?\d+$/,G2=/^-?\d+(?:\.\d+)?$/,d8=/^(?:true|false)$/i,m8=/^null$/i,p8=/^[^A-Z]*$/,f8=/^[^a-z]*$/,kn=J("$ZodCheck",(e,n)=>{var i;e._zod??(e._zod={}),e._zod.def=n,(i=e._zod).onattach??(i.onattach=[])}),K2={number:"number",bigint:"bigint",object:"date"},H2=J("$ZodCheckLessThan",(e,n)=>{kn.init(e,n);const i=K2[typeof n.value];e._zod.onattach.push(s=>{const r=s._zod.bag,u=(n.inclusive?r.maximum:r.exclusiveMaximum)??Number.POSITIVE_INFINITY;n.value<u&&(n.inclusive?r.maximum=n.value:r.exclusiveMaximum=n.value)}),e._zod.check=s=>{(n.inclusive?s.value<=n.value:s.value<n.value)||s.issues.push({origin:i,code:"too_big",maximum:typeof n.value=="object"?n.value.getTime():n.value,input:s.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),Q2=J("$ZodCheckGreaterThan",(e,n)=>{kn.init(e,n);const i=K2[typeof n.value];e._zod.onattach.push(s=>{const r=s._zod.bag,u=(n.inclusive?r.minimum:r.exclusiveMinimum)??Number.NEGATIVE_INFINITY;n.value>u&&(n.inclusive?r.minimum=n.value:r.exclusiveMinimum=n.value)}),e._zod.check=s=>{(n.inclusive?s.value>=n.value:s.value>n.value)||s.issues.push({origin:i,code:"too_small",minimum:typeof n.value=="object"?n.value.getTime():n.value,input:s.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),h8=J("$ZodCheckMultipleOf",(e,n)=>{kn.init(e,n),e._zod.onattach.push(i=>{var s;(s=i._zod.bag).multipleOf??(s.multipleOf=n.value)}),e._zod.check=i=>{if(typeof i.value!=typeof n.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof i.value=="bigint"?i.value%n.value===BigInt(0):bA(i.value,n.value)===0)||i.issues.push({origin:typeof i.value,code:"not_multiple_of",divisor:n.value,input:i.value,inst:e,continue:!n.abort})}}),g8=J("$ZodCheckNumberFormat",(e,n)=>{kn.init(e,n),n.format=n.format||"float64";const i=n.format?.includes("int"),s=i?"int":"number",[r,u]=SA[n.format];e._zod.onattach.push(d=>{const g=d._zod.bag;g.format=n.format,g.minimum=r,g.maximum=u,i&&(g.pattern=u8)}),e._zod.check=d=>{const g=d.value;if(i){if(!Number.isInteger(g)){d.issues.push({expected:s,format:n.format,code:"invalid_type",continue:!1,input:g,inst:e});return}if(!Number.isSafeInteger(g)){g>0?d.issues.push({input:g,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:s,inclusive:!0,continue:!n.abort}):d.issues.push({input:g,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:s,inclusive:!0,continue:!n.abort});return}}g<r&&d.issues.push({origin:"number",input:g,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!n.abort}),g>u&&d.issues.push({origin:"number",input:g,code:"too_big",maximum:u,inclusive:!0,inst:e,continue:!n.abort})}}),y8=J("$ZodCheckMaxLength",(e,n)=>{var i;kn.init(e,n),(i=e._zod.def).when??(i.when=s=>{const r=s.value;return!$f(r)&&r.length!==void 0}),e._zod.onattach.push(s=>{const r=s._zod.bag.maximum??Number.POSITIVE_INFINITY;n.maximum<r&&(s._zod.bag.maximum=n.maximum)}),e._zod.check=s=>{const r=s.value;if(r.length<=n.maximum)return;const d=Uf(r);s.issues.push({origin:d,code:"too_big",maximum:n.maximum,inclusive:!0,input:r,inst:e,continue:!n.abort})}}),b8=J("$ZodCheckMinLength",(e,n)=>{var i;kn.init(e,n),(i=e._zod.def).when??(i.when=s=>{const r=s.value;return!$f(r)&&r.length!==void 0}),e._zod.onattach.push(s=>{const r=s._zod.bag.minimum??Number.NEGATIVE_INFINITY;n.minimum>r&&(s._zod.bag.minimum=n.minimum)}),e._zod.check=s=>{const r=s.value;if(r.length>=n.minimum)return;const d=Uf(r);s.issues.push({origin:d,code:"too_small",minimum:n.minimum,inclusive:!0,input:r,inst:e,continue:!n.abort})}}),v8=J("$ZodCheckLengthEquals",(e,n)=>{var i;kn.init(e,n),(i=e._zod.def).when??(i.when=s=>{const r=s.value;return!$f(r)&&r.length!==void 0}),e._zod.onattach.push(s=>{const r=s._zod.bag;r.minimum=n.length,r.maximum=n.length,r.length=n.length}),e._zod.check=s=>{const r=s.value,u=r.length;if(u===n.length)return;const d=Uf(r),g=u>n.length;s.issues.push({origin:d,...g?{code:"too_big",maximum:n.length}:{code:"too_small",minimum:n.length},inclusive:!0,exact:!0,input:s.value,inst:e,continue:!n.abort})}}),Tu=J("$ZodCheckStringFormat",(e,n)=>{var i,s;kn.init(e,n),e._zod.onattach.push(r=>{const u=r._zod.bag;u.format=n.format,n.pattern&&(u.patterns??(u.patterns=new Set),u.patterns.add(n.pattern))}),n.pattern?(i=e._zod).check??(i.check=r=>{n.pattern.lastIndex=0,!n.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:n.format,input:r.value,...n.pattern?{pattern:n.pattern.toString()}:{},inst:e,continue:!n.abort})}):(s=e._zod).check??(s.check=()=>{})}),k8=J("$ZodCheckRegex",(e,n)=>{Tu.init(e,n),e._zod.check=i=>{n.pattern.lastIndex=0,!n.pattern.test(i.value)&&i.issues.push({origin:"string",code:"invalid_format",format:"regex",input:i.value,pattern:n.pattern.toString(),inst:e,continue:!n.abort})}}),x8=J("$ZodCheckLowerCase",(e,n)=>{n.pattern??(n.pattern=p8),Tu.init(e,n)}),w8=J("$ZodCheckUpperCase",(e,n)=>{n.pattern??(n.pattern=f8),Tu.init(e,n)}),S8=J("$ZodCheckIncludes",(e,n)=>{kn.init(e,n);const i=_o(n.includes),s=new RegExp(typeof n.position=="number"?`^.{${n.position}}${i}`:i);n.pattern=s,e._zod.onattach.push(r=>{const u=r._zod.bag;u.patterns??(u.patterns=new Set),u.patterns.add(s)}),e._zod.check=r=>{r.value.includes(n.includes,n.position)||r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:n.includes,input:r.value,inst:e,continue:!n.abort})}}),j8=J("$ZodCheckStartsWith",(e,n)=>{kn.init(e,n);const i=new RegExp(`^${_o(n.prefix)}.*`);n.pattern??(n.pattern=i),e._zod.onattach.push(s=>{const r=s._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(i)}),e._zod.check=s=>{s.value.startsWith(n.prefix)||s.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:n.prefix,input:s.value,inst:e,continue:!n.abort})}}),N8=J("$ZodCheckEndsWith",(e,n)=>{kn.init(e,n);const i=new RegExp(`.*${_o(n.suffix)}$`);n.pattern??(n.pattern=i),e._zod.onattach.push(s=>{const r=s._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(i)}),e._zod.check=s=>{s.value.endsWith(n.suffix)||s.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:n.suffix,input:s.value,inst:e,continue:!n.abort})}}),A8=J("$ZodCheckOverwrite",(e,n)=>{kn.init(e,n),e._zod.check=i=>{i.value=n.tx(i.value)}});class _8{constructor(n=[]){this.content=[],this.indent=0,this&&(this.args=n)}indented(n){this.indent+=1,n(this),this.indent-=1}write(n){if(typeof n=="function"){n(this,{execution:"sync"}),n(this,{execution:"async"});return}const s=n.split(`
|
|
14
|
+
`);try{ee=JSON.parse(Ae),he=!0}catch{ee=Ae}}he&&(r&&await r(ee),s&&(ee=await s(ee))),i?.({data:ee,event:K,id:S,retry:A}),Ne.length&&(yield ee)}}}finally{O.removeEventListener("abort",fe),R.releaseLock()}break}catch(G){if(n?.(G),d!==void 0&&C>=d)break;const P=Math.min(A*2**(C-1),g??3e4);await j(P)}}}()}},H4=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},Q4=e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},Z4=e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},s2=({allowReserved:e,explode:n,name:i,style:s,value:r})=>{if(!n){const g=(e?r:r.map(y=>encodeURIComponent(y))).join(Q4(s));switch(s){case"label":return`.${g}`;case"matrix":return`;${i}=${g}`;case"simple":return g;default:return`${i}=${g}`}}const u=H4(s),d=r.map(g=>s==="label"||s==="simple"?e?g:encodeURIComponent(g):_u({allowReserved:e,name:i,value:g})).join(u);return s==="label"||s==="matrix"?u+d:d},_u=({allowReserved:e,name:n,value:i})=>{if(i==null)return"";if(typeof i=="object")throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.");return`${n}=${e?i:encodeURIComponent(i)}`},o2=({allowReserved:e,explode:n,name:i,style:s,value:r,valueOnly:u})=>{if(r instanceof Date)return u?r.toISOString():`${i}=${r.toISOString()}`;if(s!=="deepObject"&&!n){let y=[];Object.entries(r).forEach(([w,S])=>{y=[...y,w,e?S:encodeURIComponent(S)]});const v=y.join(",");switch(s){case"form":return`${i}=${v}`;case"label":return`.${v}`;case"matrix":return`;${i}=${v}`;default:return v}}const d=Z4(s),g=Object.entries(r).map(([y,v])=>_u({allowReserved:e,name:s==="deepObject"?`${i}[${y}]`:y,value:v})).join(d);return s==="label"||s==="matrix"?d+g:g},F4=/\{[^{}]+\}/g,Y4=({path:e,url:n})=>{let i=n;const s=n.match(F4);if(s)for(const r of s){let u=!1,d=r.substring(1,r.length-1),g="simple";d.endsWith("*")&&(u=!0,d=d.substring(0,d.length-1)),d.startsWith(".")?(d=d.substring(1),g="label"):d.startsWith(";")&&(d=d.substring(1),g="matrix");const y=e[d];if(y==null)continue;if(Array.isArray(y)){i=i.replace(r,s2({explode:u,name:d,style:g,value:y}));continue}if(typeof y=="object"){i=i.replace(r,o2({explode:u,name:d,style:g,value:y,valueOnly:!0}));continue}if(g==="matrix"){i=i.replace(r,`;${_u({name:d,value:y})}`);continue}const v=encodeURIComponent(g==="label"?`.${y}`:y);i=i.replace(r,v)}return i},X4=({baseUrl:e,path:n,query:i,querySerializer:s,url:r})=>{const u=r.startsWith("/")?r:`/${r}`;let d=(e??"")+u;n&&(d=Y4({path:n,url:d}));let g=i?s(i):"";return g.startsWith("?")&&(g=g.substring(1)),g&&(d+=`?${g}`),d};function J4(e){const n=e.body!==void 0;if(n&&e.bodySerializer)return"serializedBody"in e?e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null:e.body!==""?e.body:null;if(n)return e.body}const W4=async(e,n)=>{const i=typeof n=="function"?await n(e):n;if(i)return e.scheme==="bearer"?`Bearer ${i}`:e.scheme==="basic"?`Basic ${btoa(i)}`:i},r2=({allowReserved:e,array:n,object:i}={})=>r=>{const u=[];if(r&&typeof r=="object")for(const d in r){const g=r[d];if(g!=null)if(Array.isArray(g)){const y=s2({allowReserved:e,explode:!0,name:d,style:"form",value:g,...n});y&&u.push(y)}else if(typeof g=="object"){const y=o2({allowReserved:e,explode:!0,name:d,style:"deepObject",value:g,...i});y&&u.push(y)}else{const y=_u({allowReserved:e,name:d,value:g});y&&u.push(y)}}return u.join("&")},ej=e=>{if(!e)return"stream";const n=e.split(";")[0]?.trim();if(n){if(n.startsWith("application/json")||n.endsWith("+json"))return"json";if(n==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(i=>n.startsWith(i)))return"blob";if(n.startsWith("text/"))return"text"}},tj=(e,n)=>n?!!(e.headers.has(n)||e.query?.[n]||e.headers.get("Cookie")?.includes(`${n}=`)):!1,nj=async({security:e,...n})=>{for(const i of e){if(tj(n,i.name))continue;const s=await W4(i,n.auth);if(!s)continue;const r=i.name??"Authorization";switch(i.in){case"query":n.query||(n.query={}),n.query[r]=s;break;case"cookie":n.headers.append("Cookie",`${r}=${s}`);break;default:n.headers.set(r,s);break}}},Gy=e=>X4({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:r2(e.querySerializer),url:e.url}),Ky=(e,n)=>{const i={...e,...n};return i.baseUrl?.endsWith("/")&&(i.baseUrl=i.baseUrl.substring(0,i.baseUrl.length-1)),i.headers=l2(e.headers,n.headers),i},aj=e=>{const n=[];return e.forEach((i,s)=>{n.push([s,i])}),n},l2=(...e)=>{const n=new Headers;for(const i of e){if(!i)continue;const s=i instanceof Headers?aj(i):Object.entries(i);for(const[r,u]of s)if(u===null)n.delete(r);else if(Array.isArray(u))for(const d of u)n.append(r,d);else u!==void 0&&n.set(r,typeof u=="object"?JSON.stringify(u):u)}return n};class kp{fns=[];clear(){this.fns=[]}eject(n){const i=this.getInterceptorIndex(n);this.fns[i]&&(this.fns[i]=null)}exists(n){const i=this.getInterceptorIndex(n);return!!this.fns[i]}getInterceptorIndex(n){return typeof n=="number"?this.fns[n]?n:-1:this.fns.indexOf(n)}update(n,i){const s=this.getInterceptorIndex(n);return this.fns[s]?(this.fns[s]=i,n):!1}use(n){return this.fns.push(n),this.fns.length-1}}const ij=()=>({error:new kp,request:new kp,response:new kp}),sj=r2({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),oj={"Content-Type":"application/json"},c2=(e={})=>({...G4,headers:oj,parseAs:"auto",querySerializer:sj,...e}),u2=(e={})=>{let n=Ky(c2(),e);const i=()=>({...n}),s=v=>(n=Ky(n,v),i()),r=ij(),u=async v=>{const w={...n,...v,fetch:v.fetch??n.fetch??globalThis.fetch,headers:l2(n.headers,v.headers),serializedBody:void 0};w.security&&await nj({...w,security:w.security}),w.requestValidator&&await w.requestValidator(w),w.body!==void 0&&w.bodySerializer&&(w.serializedBody=w.bodySerializer(w.body)),(w.body===void 0||w.serializedBody==="")&&w.headers.delete("Content-Type");const S=Gy(w);return{opts:w,url:S}},d=async v=>{const{opts:w,url:S}=await u(v),j={redirect:"follow",...w,body:J4(w)};let _=new Request(S,j);for(const H of r.request.fns)H&&(_=await H(_,w));const E=w.fetch;let A=await E(_);for(const H of r.response.fns)H&&(A=await H(A,_,w));const C={request:_,response:A};if(A.ok){const H=(w.parseAs==="auto"?ej(A.headers.get("Content-Type")):w.parseAs)??"json";if(A.status===204||A.headers.get("Content-Length")==="0"){let R;switch(H){case"arrayBuffer":case"blob":case"text":R=await A[H]();break;case"formData":R=new FormData;break;case"stream":R=A.body;break;default:R={};break}return w.responseStyle==="data"?R:{data:R,...C}}let ae;switch(H){case"arrayBuffer":case"blob":case"formData":case"json":case"text":ae=await A[H]();break;case"stream":return w.responseStyle==="data"?A.body:{data:A.body,...C}}return H==="json"&&(w.responseValidator&&await w.responseValidator(ae),w.responseTransformer&&(ae=await w.responseTransformer(ae))),w.responseStyle==="data"?ae:{data:ae,...C}}const O=await A.text();let L;try{L=JSON.parse(O)}catch{}const G=L??O;let P=G;for(const H of r.error.fns)H&&(P=await H(G,A,_,w));if(P=P||{},w.throwOnError)throw P;return w.responseStyle==="data"?void 0:{error:P,...C}},g=v=>w=>d({...w,method:v}),y=v=>async w=>{const{opts:S,url:j}=await u(w);return K4({...S,body:S.body,headers:S.headers,method:v,onRequest:async(_,E)=>{let A=new Request(_,E);for(const C of r.request.fns)C&&(A=await C(A,S));return A},url:j})};return{buildUrl:Gy,connect:g("CONNECT"),delete:g("DELETE"),get:g("GET"),getConfig:i,head:g("HEAD"),interceptors:r,options:g("OPTIONS"),patch:g("PATCH"),post:g("POST"),put:g("PUT"),request:d,setConfig:s,sse:{connect:y("CONNECT"),delete:y("DELETE"),get:y("GET"),head:y("HEAD"),options:y("OPTIONS"),patch:y("PATCH"),post:y("POST"),put:y("PUT"),trace:y("TRACE")},trace:g("TRACE")}},Y=u2(c2()),rj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps/submit",...e,headers:{"Content-Type":"application/json",...e.headers}}),lj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),d2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e}),cj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),hU=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-discovery",...e,headers:{"Content-Type":"application/json",...e.headers}}),uj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan",...e}),gU=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan",...e,headers:{"Content-Type":"application/json",...e.headers}}),yU=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/compile-preview",...e,headers:{"Content-Type":"application/json",...e.headers}}),bU=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-plan/diff-preview",...e,headers:{"Content-Type":"application/json",...e.headers}}),dj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/measurement-report",...e}),mj=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects",...e}),pj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e}),fj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),hj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/research/runs/{runId}",...e}),gj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations",...e,headers:{"Content-Type":"application/json",...e.headers}}),yj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/{label}",...e}),bj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/locations/default",...e,headers:{"Content-Type":"application/json",...e.headers}}),vj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),m2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e}),kj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),xj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries",...e,headers:{"Content-Type":"application/json",...e.headers}}),wj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/queries/generate",...e,headers:{"Content-Type":"application/json",...e.headers}}),Sj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e}),jj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),Nj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors",...e,headers:{"Content-Type":"application/json",...e.headers}}),Aj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/competitors/{id}",...e}),p2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e}),_j=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),Cj=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e}),zj=e=>(e?.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),f2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/runs/{id}",...e}),Ej=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/apply",...e,headers:{"Content-Type":"application/json",...e.headers}}),Tj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/history",...e}),Dj=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/history",...e}),Oj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/timeline",...e}),Rj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/analytics/metrics",...e}),Mj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/snapshots/diff",...e}),h2=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings",...e}),Bj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/providers/{name}",...e,headers:{"Content-Type":"application/json",...e.headers}}),qj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/google",...e,headers:{"Content-Type":"application/json",...e.headers}}),Lj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/bing",...e,headers:{"Content-Type":"application/json",...e.headers}}),$j=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/settings/cdp",...e,headers:{"Content-Type":"application/json",...e.headers}}),Ij=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),Uj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e}),Pj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/schedule",...e,headers:{"Content-Type":"application/json",...e.headers}}),Vj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e}),Gj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications",...e,headers:{"Content-Type":"application/json",...e.headers}}),Kj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}",...e}),Hj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/notifications/{id}/test",...e}),Qj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/telemetry/onboarding",...e,headers:{"Content-Type":"application/json",...e.headers}}),Zj=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/cdp/status",...e}),Fj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections",...e}),Yj=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),Xj=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}",...e}),Jj=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/properties",...e}),Wj=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/property",...e,headers:{"Content-Type":"application/json",...e.headers}}),e5=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/connections/{type}/sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),t5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),n5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance",...e}),a5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/performance/daily",...e}),i5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect",...e,headers:{"Content-Type":"application/json",...e.headers}}),s5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspections",...e}),o5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/deindexed",...e}),g2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage",...e}),r5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/coverage/history",...e}),l5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/sitemaps",...e}),c5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/gsc/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),u5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/google/indexing/request",...e,headers:{"Content-Type":"application/json",...e.headers}}),d5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations",...e}),m5=e=>(e.client??Y).put({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/locations/{locationName}/selection",...e,headers:{"Content-Type":"application/json",...e.headers}}),p5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),f5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/keywords",...e}),h5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/place-actions",...e}),g5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/lodging",...e}),y5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/places",...e}),b5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/gbp/summary",...e}),v5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),k5=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/disconnect",...e}),x5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/status",...e}),w5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/sites",...e}),S5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/set-site",...e,headers:{"Content-Type":"application/json",...e.headers}}),y2=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/coverage",...e}),j5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspections",...e}),N5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-url",...e,headers:{"Content-Type":"application/json",...e.headers}}),A5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/inspect-sitemap",...e,headers:{"Content-Type":"application/json",...e.headers}}),_5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/request-indexing",...e,headers:{"Content-Type":"application/json",...e.headers}}),C5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/bing/performance",...e}),z5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/connect",...e,headers:{"Content-Type":"application/json",...e.headers}}),E5=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/disconnect",...e}),T5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/status",...e}),D5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),O5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/traffic",...e}),R5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/ai-referral-daily",...e}),M5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/social-referral-history",...e}),B5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/ga/session-history",...e}),q5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/insights",...e}),L5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/report",...e}),$5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/health/history",...e}),I5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/citations/visibility",...e}),U5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/content/dismissals",...e,headers:{"Content-Type":"application/json",...e.headers}}),P5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/overview",...e}),V5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/status",...e}),G5=e=>(e?.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/install",...e}),K5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e}),H5=e=>(e?.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs",...e,headers:{"Content-Type":"application/json",...e?.headers}}),Q5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/syncs/latest",...e}),Z5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/releases",...e}),F5=e=>(e?.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/latest-release",...e}),Y5=e=>(e.client??Y).delete({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/backlinks/cache/{release}",...e}),X5=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/extract",...e,headers:{"Content-Type":"application/json",...e.headers}}),J5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/summary",...e}),W5=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/domains",...e}),e6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/backlinks/history",...e}),t6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/cloud-run",...e,headers:{"Content-Type":"application/json",...e.headers}}),n6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/wordpress",...e,headers:{"Content-Type":"application/json",...e.headers}}),a6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/connect/vercel",...e,headers:{"Content-Type":"application/json",...e.headers}}),i6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/sync",...e,headers:{"Content-Type":"application/json",...e.headers}}),s6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}/backfill",...e,headers:{"Content-Type":"application/json",...e.headers}}),o6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources",...e}),r6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/status",...e}),l6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/sources/{id}",...e}),c6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/traffic/events",...e}),u6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/run",...e,headers:{"Content-Type":"application/json",...e.headers}}),d6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions",...e}),m6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}",...e}),p6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}/promote",...e}),f6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/discover/sessions/{id}/promote",...e,headers:{"Content-Type":"application/json",...e.headers}}),h6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo",...e}),g6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/pages",...e}),y6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/trend",...e}),b6=e=>(e.client??Y).post({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/technical-aeo/runs",...e,headers:{"Content-Type":"application/json",...e.headers}}),v6=e=>(e.client??Y).get({security:[{scheme:"bearer",type:"http"}],url:"/api/v1/projects/{name}/agent/providers",...e});function k6(e){const n={baseUrl:e.baseUrl,fetch:e.fetch,headers:{...e.headers??{}}};return u2(n)}class zn extends Error{code;statusCode;details;constructor(n,i,s,r){super(n),this.name="ApiError",this.code=s??"UNKNOWN",this.statusCode=i,this.details=r}}function x6(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function Df(e){const n=x6();if(!n)return e;let i;const s=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{i=new URL(e,s)}catch{return e}const r=new URL(s).origin;if(i.origin!==r)return e;const d=`${Rf().replace(/\/$/,"")}/api/v1`;return i.pathname!==d&&!i.pathname.startsWith(`${d}/`)?e:(i.searchParams.set("token",n),/^[a-z][a-z\d+.-]*:/i.test(e)?i.toString():`${i.pathname}${i.search}${i.hash}`)}function w6(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 b2(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function S6(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function j6(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function N6(){return b2()!==null}function A6(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const Of=A6();function _6(){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 Rf(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function C6(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 z6(e,n){if(e.protocol!=="http:"&&e.protocol!=="https:"||!C6(e.hostname))return;const i=e.port?`:${e.port}`:"",s=n?n.replace(/\/$/,""):"";return`${e.protocol}//localhost${i}${s}`}function vU(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function E6(){if(!(typeof window>"u"))return z6(window.location,Rf())}function T6(e){return`${Rf()}${e}`}function D6(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 O6(){return""}function xp(){return!!O6()}let v2=null;function Hy(e){v2=e}function Mf(){v2?.()}const oe=k6({baseUrl:_6()});oe.interceptors.response.use((e,n)=>(e.status===401&&!n.url.includes("/api/v1/session")&&Mf(),e));oe.interceptors.request.use(e=>{const n=Df(e.url);return n===e.url?e:w6(e,n)});async function de(e){const n=await e();if(n.error!==void 0&&n.error!==null){const i=n.response.status;let s=`API ${i}: ${n.response.statusText}`,r,u;if(typeof n.error=="object"&&n.error!==null){const d=n.error.error;if(typeof d=="string")s=d;else if(d&&typeof d=="object"){const g=d;g.message&&(s=g.message),g.code&&(r=g.code),g.details&&(u=g.details)}else{const g=n.error;g.message&&(s=g.message),g.code&&(r=g.code),g.details&&(u=g.details)}}else typeof n.error=="string"&&(s=n.error);throw new zn(s,i,r,u)}if(n.response.status!==204)return n.data}async function Mo(e,n){const i=n?.body!=null,s=await fetch(Df(`${Of}${e}`),{...n,credentials:n?.credentials??"same-origin",headers:{...i?{"Content-Type":"application/json"}:{},...n?.headers}});if(!s.ok){const r=await s.text();let u=`API ${s.status}: ${s.statusText}`,d,g;if(r)try{const y=JSON.parse(r);typeof y.error=="string"?u=y.error:y.error?.message?(u=y.error.message,d=y.error.code,g=y.error.details):y.message&&(u=y.message)}catch{u=r}throw s.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&Mf(),new zn(u,s.status,d,g)}if(s.status!==204)return s.json()}function R6(e){return de(()=>d2({client:oe,path:{name:e}}))}function kU(e){return de(()=>p2({client:oe,path:{name:e}}))}function cu(e){return de(()=>f2({client:oe,path:{id:e}}))}function k2(e){return de(()=>m2({client:oe,path:{name:e}}))}function M6(e){return de(()=>Sj({client:oe,path:{name:e}}))}function B6(e,n,i){return de(()=>Oj({client:oe,path:{name:e},query:{location:n,limit:i}}))}function x2(e,n){return de(()=>P5({client:oe,path:{name:e},query:{location:n?.location,since:n?.since}}))}function Bf(e,n){return de(()=>cj({client:oe,path:{name:e},body:n}))}function q6(e,n){return de(()=>xj({client:oe,path:{name:e},body:{queries:n}}))}function L6(e,n){return de(()=>kj({client:oe,path:{name:e},body:{queries:n}}))}function xU(e,n){return de(()=>vj({client:oe,path:{name:e},body:{queries:n}}))}function $6(e,n){return de(()=>U5({client:oe,path:{name:e},body:n}))}function I6(e,n){return de(()=>Nj({client:oe,path:{name:e},body:{competitors:n}}))}function wU(e,n){return de(()=>jj({client:oe,path:{name:e},body:{competitors:n}}))}function SU(e,n){return de(()=>Aj({client:oe,path:{name:e,id:n}}))}async function jU(e,n){const i=await R6(e);return Bf(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})}function U6(e,n){const i={};return n?.location&&(i.location=n.location),n?.allLocations&&(i.allLocations=!0),n?.noLocation&&(i.noLocation=!0),de(()=>_j({client:oe,path:{name:e},body:i}))}function NU(e,n){return de(()=>gj({client:oe,path:{name:e},body:n}))}async function AU(e,n){await de(()=>yj({client:oe,path:{name:e,label:n}}))}function _U(e,n){return de(()=>bj({client:oe,path:{name:e},body:{label:n}}))}async function CU(e){await de(()=>lj({client:oe,path:{name:e}}))}function zU(){return de(()=>h2({client:oe}))}function Qy(){return Mo("/session")}function P6(e){return Mo("/session/setup",{method:"POST",body:JSON.stringify({password:e})})}function V6(e){return Mo("/session",{method:"POST",body:JSON.stringify({password:e})})}function Zy(){return Mo("/auth/session")}function G6(e,n){return Mo("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:n})})}function Fy(){return Mo("/auth/logout",{method:"POST"})}function K6(e,n){return de(()=>Bj({client:oe,path:{name:e},body:n}))}async function H6(e){for(let n=0;n<2;n+=1)try{await de(()=>Qj({client:oe,body:e}));return}catch(i){if(!(!(i instanceof zn)||i.statusCode>=500)||n===1)return}}function EU(e){return de(()=>qj({client:oe,body:e}))}async function TU(e){try{return await de(()=>Uj({client:oe,path:{name:e}}))}catch(n){if(n instanceof zn&&n.statusCode===404)return null;throw n}}function DU(e,n){return de(()=>Pj({client:oe,path:{name:e},body:n}))}async function OU(e){await de(()=>Ij({client:oe,path:{name:e}}))}function RU(e){return de(()=>Vj({client:oe,path:{name:e}}))}function MU(e,n){return de(()=>Gj({client:oe,path:{name:e},body:n}))}async function BU(e,n){await de(()=>Kj({client:oe,path:{name:e,id:n}}))}function qU(e,n){return de(()=>Hj({client:oe,path:{name:e,id:n}}))}function Q6(e,n,i){return de(()=>wj({client:oe,path:{name:e},body:{provider:n,count:i}}))}function Z6(e){return de(()=>Ej({client:oe,body:e}))}function F6(e){return de(()=>zj({client:oe,body:e??{}}))}function LU(e,n){const i=E6();return de(()=>Yj({client:oe,path:{name:e},body:{type:n,...i?{publicUrl:i}:{}}}))}function $U(e,n){return de(()=>Xj({client:oe,path:{name:e,type:n}}))}function IU(e,n,i){return de(()=>Wj({client:oe,path:{name:e,type:n},body:{propertyId:i}}))}function UU(e,n,i){return de(()=>e5({client:oe,path:{name:e,type:n},body:{sitemapUrl:i}}))}function Y6(e,n){return de(()=>t5({client:oe,path:{name:e},body:n??{}}))}function PU(e,n){const i={};return n&&n!=="all"&&(i.window=n),de(()=>Rj({client:oe,path:{name:e},query:i}))}function VU(e,n){return de(()=>i5({client:oe,path:{name:e},body:{url:n}}))}function X6(e){return de(()=>g2({client:oe,path:{name:e}}))}function J6(e,n){return de(()=>c5({client:oe,path:{name:e},body:n??{}}))}function GU(e,n){return de(()=>l5({client:oe,path:{name:e},query:n?{sitemapIndex:n}:void 0}))}function KU(e,n){return de(()=>rj({client:oe,path:{name:e},body:{sitemapUrls:n}}))}function W6(e,n){return de(()=>b6({client:oe,path:{name:e},body:n??{}}))}function HU(e,n){return de(()=>u6({client:oe,path:{name:e},body:n??{}}))}function QU(e,n,i){return de(()=>f6({client:oe,path:{name:e,id:n},body:i??{}}))}function ZU(){return de(()=>Zj({client:oe}))}function FU(e,n){return de(()=>$j({client:oe,body:{host:e,port:n}}))}function YU(e,n){return de(()=>u5({client:oe,path:{name:e},body:n}))}function XU(e,n){return de(()=>v5({client:oe,path:{name:e},body:{apiKey:n}}))}function JU(e){return de(()=>k5({client:oe,path:{name:e}}))}function WU(e,n){return de(()=>S5({client:oe,path:{name:e},body:{siteUrl:n}}))}function eN(e){return de(()=>y2({client:oe,path:{name:e}}))}function eP(e,n){return de(()=>N5({client:oe,path:{name:e},body:{url:n}}))}function tP(e,n){return de(()=>A5({client:oe,path:{name:e},body:{}}))}function nP(e,n){return de(()=>_5({client:oe,path:{name:e},body:n}))}function aP(e){return de(()=>Lj({client:oe,body:{apiKey:e}}))}function w2(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function iP(e,n="agency",i){const s=new URLSearchParams({audience:n});i!==void 0&&s.set("period",String(i));const r=await fetch(Df(`${Of}/projects/${encodeURIComponent(e)}/report.html?${s.toString()}`),{credentials:"same-origin",headers:{}});if(!r.ok)throw new zn(`Failed to download report: ${r.status}`,r.status);const u=await r.blob(),d=URL.createObjectURL(u),g=w2(r.headers.get("Content-Disposition"))??`canonry-report-${e}.html`,y=document.createElement("a");y.href=d,y.download=g,document.body.appendChild(y),y.click(),document.body.removeChild(y),URL.revokeObjectURL(d)}async function sP(e,n){const i=await fetch(`${Of}/projects/${encodeURIComponent(e)}/results/export?format=${n}`,{credentials:"same-origin",headers:{}});if(!i.ok)throw new zn(`Failed to download results: ${i.status}`,i.status);const s=await i.blob(),r=URL.createObjectURL(s),u=w2(i.headers.get("Content-Disposition"))??`canonry-results-${e}.${n}`,d=document.createElement("a");d.href=r,d.download=u,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(r)}function oP(e,n){return de(()=>D5({client:oe,path:{name:e},body:{}}))}function rP(e,n){return de(()=>z5({client:oe,path:{name:e},body:n}))}function lP(e){return de(()=>E5({client:oe,path:{name:e}}))}function cP(e,n){return de(()=>t6({client:oe,path:{name:e},body:n}))}function uP(e,n){return de(()=>n6({client:oe,path:{name:e},body:n}))}function dP(e,n){return de(()=>a6({client:oe,path:{name:e},body:n}))}function mP(e,n,i){return de(()=>i6({client:oe,path:{name:e,id:n},body:i??{}}))}function pP(e,n,i){return de(()=>s6({client:oe,path:{name:e,id:n},body:{}}))}function tN(e,n){return de(()=>q5({client:oe,path:{name:e},query:{runId:n}}))}function nN(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 aN(e,n){const i=T6(e);try{const s=await fetch(i,{credentials:"same-origin"});if(!s.ok)return{label:n,state:"error",detail:`${n} ${s.status}: ${s.statusText}`,statusCode:s.status,hint:D6(e,s.status)};const r=await s.json(),u=typeof r.version=="string"?r.version:"unknown",d=typeof r.databaseUrlConfigured=="boolean"?r.databaseUrlConfigured:void 0,g=typeof r.lastHeartbeatAt=="string"?r.lastHeartbeatAt:void 0,y=nN(r.updateAvailable),v=[u,d===!1?"database not configured":"database configured",g?`heartbeat ${g}`:void 0].filter(Boolean).join(" · ");return{label:n,state:"ok",detail:v,version:u,databaseConfigured:d,lastHeartbeatAt:g,...y?{updateAvailable:y}:{}}}catch(s){return{label:n,state:"error",detail:s instanceof Error?s.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 fP(){return de(()=>V5({client:oe}))}function hP(){return de(()=>G5({client:oe}))}function gP(){return de(()=>Q5({client:oe}))}function yP(){return de(()=>K5({client:oe}))}function bP(e){return de(()=>H5({client:oe,body:e?{release:e}:{}}))}function vP(){return de(()=>Z5({client:oe}))}function kP(){return de(()=>F5({client:oe}))}function xP(e){return de(()=>Y5({client:oe,path:{release:e}}))}function wP(e,n={}){return de(()=>J5({client:oe,path:{name:e},query:{release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function SP(e,n={}){return de(()=>W5({client:oe,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 jP(e,n={}){return de(()=>e6({client:oe,path:{name:e},query:{source:n.source}}))}function NP(e,n){return de(()=>X5({client:oe,path:{name:e},body:{release:void 0}}))}const S2={account:null,canWrite:!0,isAdmin:!0},j2=q.createContext(S2);function iN({account:e,children:n}){const i=e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:S2;return m.jsx(j2.Provider,{value:i,children:n})}function hl(){return q.useContext(j2)}const N2="View only — your account cannot change this.";function Xt(e){return(...n)=>{e(...n)}}const sN=6e3,oN=5,rN=180;let Jt=[],lN=0;const Yp=new Set,Xp=new Map,Jp=new Map;function uu(){const e=[...Jt];for(const n of Yp)n(e)}function qf(e){const n=Xp.get(e);n&&(clearTimeout(n),Xp.delete(e));const i=Jp.get(e);i&&(clearTimeout(i),Jp.delete(e))}function A2(e){qf(e);const n=Jt.length;Jt=Jt.filter(i=>i.id!==e),Jt.length!==n&&uu()}function Yy(e){qf(e.id),Xp.set(e.id,setTimeout(()=>{Wp(e.id)},e.durationMs))}function cN(e,n,i){return typeof e=="string"?{title:e,tone:n,durationMs:i}:e}function rn(e,n="negative",i=sN){const s=cN(e,n,i),r={id:String(++lN),title:s.title,detail:s.detail,tone:s.tone??n,durationMs:s.durationMs??i,dedupeKey:s.dedupeKey,cta:s.cta,state:"open"};if(s.dedupeKey){const u=Jt.find(d=>d.dedupeKey===s.dedupeKey);if(u){if((s.dedupeMode??"drop")==="drop")return u.id;const d={...u,title:r.title,detail:r.detail,tone:r.tone,durationMs:r.durationMs,cta:r.cta,state:"open"};return Jt=Jt.map(g=>g.id===u.id?d:g),uu(),Yy(d),u.id}}return Jt.length>=oN&&A2(Jt[0].id),Jt=[...Jt,r],uu(),Yy(r),r.id}function Wp(e){const n=Jt.find(i=>i.id===e);!n||n.state==="closing"||(qf(e),Jt=Jt.map(i=>i.id===e?{...i,state:"closing"}:i),uu(),Jp.set(e,setTimeout(()=>{A2(e)},rN)))}function uN(e){return Yp.add(e),()=>{Yp.delete(e)}}function Xy(){return Jt}const dN=5*6e4,ef=30*6e4,AP=3e4,_P=6e4,No=3e4,mN=2e3;function pN(){return new _4({defaultOptions:{queries:{staleTime:dN,retry:1,refetchOnWindowFocus:!1}},mutationCache:new C4({onError:(n,i,s,r)=>{r.meta?.skipGlobalErrorToast||rn({title:n instanceof Error?n.message:"An unexpected error occurred",tone:"negative"})}})})}const fN="modulepreload",hN=function(e,n){return new URL(e,n).href},Jy={},ys=function(n,i,s){let r=Promise.resolve();if(i&&i.length>0){let v=function(w){return Promise.all(w.map(S=>Promise.resolve(S).then(j=>({status:"fulfilled",value:j}),j=>({status:"rejected",reason:j}))))};const d=document.getElementsByTagName("link"),g=document.querySelector("meta[property=csp-nonce]"),y=g?.nonce||g?.getAttribute("nonce");r=v(i.map(w=>{if(w=hN(w,s),w in Jy)return;Jy[w]=!0;const S=w.endsWith(".css"),j=S?'[rel="stylesheet"]':"";if(s)for(let E=d.length-1;E>=0;E--){const A=d[E];if(A.href===w&&(!S||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${w}"]${j}`))return;const _=document.createElement("link");if(_.rel=S?"stylesheet":fN,S||(_.as="script"),_.crossOrigin="",_.href=w,y&&_.setAttribute("nonce",y),document.head.appendChild(_),S)return new Promise((E,A)=>{_.addEventListener("load",E),_.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${w}`)))})}))}function u(d){const g=new Event("vite:preloadError",{cancelable:!0});if(g.payload=d,window.dispatchEvent(g),!g.defaultPrevented)throw d}return r.then(d=>{for(const g of d||[])g.status==="rejected"&&u(g.reason);return n().catch(u)})};const gN=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),yN=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,i,s)=>s?s.toUpperCase():i.toLowerCase()),Wy=e=>{const n=yN(e);return n.charAt(0).toUpperCase()+n.slice(1)},_2=(...e)=>e.filter((n,i,s)=>!!n&&n.trim()!==""&&s.indexOf(n)===i).join(" ").trim(),bN=e=>{for(const n in e)if(n.startsWith("aria-")||n==="role"||n==="title")return!0};var vN={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const kN=q.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:i=2,absoluteStrokeWidth:s,className:r="",children:u,iconNode:d,...g},y)=>q.createElement("svg",{ref:y,...vN,width:n,height:n,stroke:e,strokeWidth:s?Number(i)*24/Number(n):i,className:_2("lucide",r),...!u&&!bN(g)&&{"aria-hidden":"true"},...g},[...d.map(([v,w])=>q.createElement(v,w)),...Array.isArray(u)?u:[u]]));const et=(e,n)=>{const i=q.forwardRef(({className:s,...r},u)=>q.createElement(kN,{ref:u,iconNode:n,className:_2(`lucide-${gN(Wy(e))}`,`lucide-${e}`,s),...r}));return i.displayName=Wy(e),i};const xN=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],wN=et("arrow-right",xN);const SN=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],jN=et("arrow-up",SN);const NN=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],AN=et("book-open",NN);const _N=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],C2=et("check",_N);const CN=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],z2=et("chevron-down",CN);const zN=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],Lf=et("chevron-right",zN);const EN=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],TN=et("copy",EN);const DN=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],ON=et("file-text",DN);const RN=[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]],MN=et("github",RN);const BN=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],qN=et("globe",BN);const LN=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]],$N=et("history",LN);const IN=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],UN=et("layout-dashboard",IN);const PN=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],VN=et("link-2",PN);const GN=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],E2=et("loader-circle",GN);const KN=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],HN=et("maximize-2",KN);const QN=[["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 18h16",key:"19g7jn"}],["path",{d:"M4 6h16",key:"1o0s65"}]],ZN=et("menu",QN);const FN=[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]],YN=et("minimize-2",FN);const XN=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]],JN=et("panel-left-close",XN);const WN=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]],eA=et("panel-left-open",WN);const tA=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],nA=et("play",tA);const aA=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],eb=et("plus",aA);const iA=[["path",{d:"M19.07 4.93A10 10 0 0 0 6.99 3.34",key:"z3du51"}],["path",{d:"M4 6h.01",key:"oypzma"}],["path",{d:"M2.29 9.62A10 10 0 1 0 21.31 8.35",key:"qzzz0"}],["path",{d:"M16.24 7.76A6 6 0 1 0 8.23 16.67",key:"1yjesh"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M17.99 11.66A6 6 0 0 1 15.77 16.67",key:"1u2y91"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"m13.41 10.59 5.66-5.66",key:"mhq4k0"}]],sA=et("radar",iA);const oA=[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],tb=et("radio",oA);const rA=[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]],lA=et("rocket",rA);const cA=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],T2=et("rotate-ccw",cA);const uA=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],dA=et("search",uA);const mA=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],pA=et("settings",mA);const fA=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],D2=et("triangle-alert",fA);const hA=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],gA=et("wrench",hA);const yA=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Bo=et("x",yA);function J(e,n,i){function s(g,y){if(g._zod||Object.defineProperty(g,"_zod",{value:{def:y,constr:d,traits:new Set},enumerable:!1}),g._zod.traits.has(e))return;g._zod.traits.add(e),n(g,y);const v=d.prototype,w=Object.keys(v);for(let S=0;S<w.length;S++){const j=w[S];j in g||(g[j]=v[j].bind(g))}}const r=i?.Parent??Object;class u extends r{}Object.defineProperty(u,"name",{value:e});function d(g){var y;const v=i?.Parent?new u:this;s(v,g),(y=v._zod).deferred??(y.deferred=[]);for(const w of v._zod.deferred)w();return v}return Object.defineProperty(d,"init",{value:s}),Object.defineProperty(d,Symbol.hasInstance,{value:g=>i?.Parent&&g instanceof i.Parent?!0:g?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}class ko extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class O2 extends Error{constructor(n){super(`Encountered unidirectional transform during encode: ${n}`),this.name="ZodEncodeError"}}const R2={};function Ai(e){return R2}function M2(e){const n=Object.values(e).filter(s=>typeof s=="number");return Object.entries(e).filter(([s,r])=>n.indexOf(+s)===-1).map(([s,r])=>r)}function tf(e,n){return typeof n=="bigint"?n.toString():n}function Cu(e){return{get value(){{const n=e();return Object.defineProperty(this,"value",{value:n}),n}}}}function $f(e){return e==null}function If(e){const n=e.startsWith("^")?1:0,i=e.endsWith("$")?e.length-1:e.length;return e.slice(n,i)}function bA(e,n){const i=(e.toString().split(".")[1]||"").length,s=n.toString();let r=(s.split(".")[1]||"").length;if(r===0&&/\d?e-\d?/.test(s)){const y=s.match(/\d?e-(\d?)/);y?.[1]&&(r=Number.parseInt(y[1]))}const u=i>r?i:r,d=Number.parseInt(e.toFixed(u).replace(".","")),g=Number.parseInt(n.toFixed(u).replace(".",""));return d%g/10**u}const nb=Symbol("evaluating");function Je(e,n,i){let s;Object.defineProperty(e,n,{get(){if(s!==nb)return s===void 0&&(s=nb,s=i()),s},set(r){Object.defineProperty(e,n,{value:r})},configurable:!0})}function bs(e,n,i){Object.defineProperty(e,n,{value:i,writable:!0,enumerable:!0,configurable:!0})}function Ei(...e){const n={};for(const i of e){const s=Object.getOwnPropertyDescriptors(i);Object.assign(n,s)}return Object.defineProperties({},n)}function ab(e){return JSON.stringify(e)}function vA(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const B2="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function cl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const kA=Cu(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function Ao(e){if(cl(e)===!1)return!1;const n=e.constructor;if(n===void 0||typeof n!="function")return!0;const i=n.prototype;return!(cl(i)===!1||Object.prototype.hasOwnProperty.call(i,"isPrototypeOf")===!1)}function q2(e){return Ao(e)?{...e}:Array.isArray(e)?[...e]:e}const xA=new Set(["string","number","symbol"]);function _o(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ti(e,n,i){const s=new e._zod.constr(n??e._zod.def);return(!n||i?.parent)&&(s._zod.parent=e),s}function ke(e){const n=e;if(!n)return{};if(typeof n=="string")return{error:()=>n};if(n?.message!==void 0){if(n?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");n.error=n.message}return delete n.message,typeof n.error=="string"?{...n,error:()=>n.error}:n}function wA(e){return Object.keys(e).filter(n=>e[n]._zod.optin==="optional"&&e[n]._zod.optout==="optional")}const SA={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function jA(e,n){const i=e._zod.def,s=i.checks;if(s&&s.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const u=Ei(e._zod.def,{get shape(){const d={};for(const g in n){if(!(g in i.shape))throw new Error(`Unrecognized key: "${g}"`);n[g]&&(d[g]=i.shape[g])}return bs(this,"shape",d),d},checks:[]});return Ti(e,u)}function NA(e,n){const i=e._zod.def,s=i.checks;if(s&&s.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const u=Ei(e._zod.def,{get shape(){const d={...e._zod.def.shape};for(const g in n){if(!(g in i.shape))throw new Error(`Unrecognized key: "${g}"`);n[g]&&delete d[g]}return bs(this,"shape",d),d},checks:[]});return Ti(e,u)}function AA(e,n){if(!Ao(n))throw new Error("Invalid input to extend: expected a plain object");const i=e._zod.def.checks;if(i&&i.length>0){const u=e._zod.def.shape;for(const d in n)if(Object.getOwnPropertyDescriptor(u,d)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const r=Ei(e._zod.def,{get shape(){const u={...e._zod.def.shape,...n};return bs(this,"shape",u),u}});return Ti(e,r)}function _A(e,n){if(!Ao(n))throw new Error("Invalid input to safeExtend: expected a plain object");const i=Ei(e._zod.def,{get shape(){const s={...e._zod.def.shape,...n};return bs(this,"shape",s),s}});return Ti(e,i)}function CA(e,n){const i=Ei(e._zod.def,{get shape(){const s={...e._zod.def.shape,...n._zod.def.shape};return bs(this,"shape",s),s},get catchall(){return n._zod.def.catchall},checks:[]});return Ti(e,i)}function zA(e,n,i){const r=n._zod.def.checks;if(r&&r.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const d=Ei(n._zod.def,{get shape(){const g=n._zod.def.shape,y={...g};if(i)for(const v in i){if(!(v in g))throw new Error(`Unrecognized key: "${v}"`);i[v]&&(y[v]=e?new e({type:"optional",innerType:g[v]}):g[v])}else for(const v in g)y[v]=e?new e({type:"optional",innerType:g[v]}):g[v];return bs(this,"shape",y),y},checks:[]});return Ti(n,d)}function EA(e,n,i){const s=Ei(n._zod.def,{get shape(){const r=n._zod.def.shape,u={...r};if(i)for(const d in i){if(!(d in u))throw new Error(`Unrecognized key: "${d}"`);i[d]&&(u[d]=new e({type:"nonoptional",innerType:r[d]}))}else for(const d in r)u[d]=new e({type:"nonoptional",innerType:r[d]});return bs(this,"shape",u),u}});return Ti(n,s)}function fo(e,n=0){if(e.aborted===!0)return!0;for(let i=n;i<e.issues.length;i++)if(e.issues[i]?.continue!==!0)return!0;return!1}function ho(e,n){return n.map(i=>{var s;return(s=i).path??(s.path=[]),i.path.unshift(e),i})}function Vc(e){return typeof e=="string"?e:e?.message}function _i(e,n,i){const s={...e,path:e.path??[]};if(!e.message){const r=Vc(e.inst?._zod.def?.error?.(e))??Vc(n?.error?.(e))??Vc(i.customError?.(e))??Vc(i.localeError?.(e))??"Invalid input";s.message=r}return delete s.inst,delete s.continue,n?.reportInput||delete s.input,s}function Uf(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function ul(...e){const[n,i,s]=e;return typeof n=="string"?{message:n,code:"custom",input:i,inst:s}:{...n}}const L2=(e,n)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:n,enumerable:!1}),e.message=JSON.stringify(n,tf,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},$2=J("$ZodError",L2),I2=J("$ZodError",L2,{Parent:Error});function TA(e,n=i=>i.message){const i={},s=[];for(const r of e.issues)r.path.length>0?(i[r.path[0]]=i[r.path[0]]||[],i[r.path[0]].push(n(r))):s.push(n(r));return{formErrors:s,fieldErrors:i}}function DA(e,n=i=>i.message){const i={_errors:[]},s=r=>{for(const u of r.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(d=>s({issues:d}));else if(u.code==="invalid_key")s({issues:u.issues});else if(u.code==="invalid_element")s({issues:u.issues});else if(u.path.length===0)i._errors.push(n(u));else{let d=i,g=0;for(;g<u.path.length;){const y=u.path[g];g===u.path.length-1?(d[y]=d[y]||{_errors:[]},d[y]._errors.push(n(u))):d[y]=d[y]||{_errors:[]},d=d[y],g++}}};return s(e),i}const Pf=e=>(n,i,s,r)=>{const u=s?Object.assign(s,{async:!1}):{async:!1},d=n._zod.run({value:i,issues:[]},u);if(d instanceof Promise)throw new ko;if(d.issues.length){const g=new(r?.Err??e)(d.issues.map(y=>_i(y,u,Ai())));throw B2(g,r?.callee),g}return d.value},Vf=e=>async(n,i,s,r)=>{const u=s?Object.assign(s,{async:!0}):{async:!0};let d=n._zod.run({value:i,issues:[]},u);if(d instanceof Promise&&(d=await d),d.issues.length){const g=new(r?.Err??e)(d.issues.map(y=>_i(y,u,Ai())));throw B2(g,r?.callee),g}return d.value},zu=e=>(n,i,s)=>{const r=s?{...s,async:!1}:{async:!1},u=n._zod.run({value:i,issues:[]},r);if(u instanceof Promise)throw new ko;return u.issues.length?{success:!1,error:new(e??$2)(u.issues.map(d=>_i(d,r,Ai())))}:{success:!0,data:u.value}},OA=zu(I2),Eu=e=>async(n,i,s)=>{const r=s?Object.assign(s,{async:!0}):{async:!0};let u=n._zod.run({value:i,issues:[]},r);return u instanceof Promise&&(u=await u),u.issues.length?{success:!1,error:new e(u.issues.map(d=>_i(d,r,Ai())))}:{success:!0,data:u.value}},RA=Eu(I2),MA=e=>(n,i,s)=>{const r=s?Object.assign(s,{direction:"backward"}):{direction:"backward"};return Pf(e)(n,i,r)},BA=e=>(n,i,s)=>Pf(e)(n,i,s),qA=e=>async(n,i,s)=>{const r=s?Object.assign(s,{direction:"backward"}):{direction:"backward"};return Vf(e)(n,i,r)},LA=e=>async(n,i,s)=>Vf(e)(n,i,s),$A=e=>(n,i,s)=>{const r=s?Object.assign(s,{direction:"backward"}):{direction:"backward"};return zu(e)(n,i,r)},IA=e=>(n,i,s)=>zu(e)(n,i,s),UA=e=>async(n,i,s)=>{const r=s?Object.assign(s,{direction:"backward"}):{direction:"backward"};return Eu(e)(n,i,r)},PA=e=>async(n,i,s)=>Eu(e)(n,i,s),VA=/^[cC][^\s-]{8,}$/,GA=/^[0-9a-z]+$/,KA=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,HA=/^[0-9a-vA-V]{20}$/,QA=/^[A-Za-z0-9]{27}$/,ZA=/^[a-zA-Z0-9_-]{21}$/,FA=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,YA=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ib=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,XA=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,JA="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function WA(){return new RegExp(JA,"u")}const e8=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,t8=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,n8=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,a8=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,i8=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,U2=/^[A-Za-z0-9_-]*$/,s8=/^\+[1-9]\d{6,14}$/,P2="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",o8=new RegExp(`^${P2}$`);function V2(e){const n="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${n}`:e.precision===0?`${n}:[0-5]\\d`:`${n}:[0-5]\\d\\.\\d{${e.precision}}`:`${n}(?::[0-5]\\d(?:\\.\\d+)?)?`}function r8(e){return new RegExp(`^${V2(e)}$`)}function l8(e){const n=V2({precision:e.precision}),i=["Z"];e.local&&i.push(""),e.offset&&i.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const s=`${n}(?:${i.join("|")})`;return new RegExp(`^${P2}T(?:${s})$`)}const c8=e=>{const n=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${n}$`)},u8=/^-?\d+$/,G2=/^-?\d+(?:\.\d+)?$/,d8=/^(?:true|false)$/i,m8=/^null$/i,p8=/^[^A-Z]*$/,f8=/^[^a-z]*$/,kn=J("$ZodCheck",(e,n)=>{var i;e._zod??(e._zod={}),e._zod.def=n,(i=e._zod).onattach??(i.onattach=[])}),K2={number:"number",bigint:"bigint",object:"date"},H2=J("$ZodCheckLessThan",(e,n)=>{kn.init(e,n);const i=K2[typeof n.value];e._zod.onattach.push(s=>{const r=s._zod.bag,u=(n.inclusive?r.maximum:r.exclusiveMaximum)??Number.POSITIVE_INFINITY;n.value<u&&(n.inclusive?r.maximum=n.value:r.exclusiveMaximum=n.value)}),e._zod.check=s=>{(n.inclusive?s.value<=n.value:s.value<n.value)||s.issues.push({origin:i,code:"too_big",maximum:typeof n.value=="object"?n.value.getTime():n.value,input:s.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),Q2=J("$ZodCheckGreaterThan",(e,n)=>{kn.init(e,n);const i=K2[typeof n.value];e._zod.onattach.push(s=>{const r=s._zod.bag,u=(n.inclusive?r.minimum:r.exclusiveMinimum)??Number.NEGATIVE_INFINITY;n.value>u&&(n.inclusive?r.minimum=n.value:r.exclusiveMinimum=n.value)}),e._zod.check=s=>{(n.inclusive?s.value>=n.value:s.value>n.value)||s.issues.push({origin:i,code:"too_small",minimum:typeof n.value=="object"?n.value.getTime():n.value,input:s.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),h8=J("$ZodCheckMultipleOf",(e,n)=>{kn.init(e,n),e._zod.onattach.push(i=>{var s;(s=i._zod.bag).multipleOf??(s.multipleOf=n.value)}),e._zod.check=i=>{if(typeof i.value!=typeof n.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof i.value=="bigint"?i.value%n.value===BigInt(0):bA(i.value,n.value)===0)||i.issues.push({origin:typeof i.value,code:"not_multiple_of",divisor:n.value,input:i.value,inst:e,continue:!n.abort})}}),g8=J("$ZodCheckNumberFormat",(e,n)=>{kn.init(e,n),n.format=n.format||"float64";const i=n.format?.includes("int"),s=i?"int":"number",[r,u]=SA[n.format];e._zod.onattach.push(d=>{const g=d._zod.bag;g.format=n.format,g.minimum=r,g.maximum=u,i&&(g.pattern=u8)}),e._zod.check=d=>{const g=d.value;if(i){if(!Number.isInteger(g)){d.issues.push({expected:s,format:n.format,code:"invalid_type",continue:!1,input:g,inst:e});return}if(!Number.isSafeInteger(g)){g>0?d.issues.push({input:g,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:s,inclusive:!0,continue:!n.abort}):d.issues.push({input:g,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:s,inclusive:!0,continue:!n.abort});return}}g<r&&d.issues.push({origin:"number",input:g,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!n.abort}),g>u&&d.issues.push({origin:"number",input:g,code:"too_big",maximum:u,inclusive:!0,inst:e,continue:!n.abort})}}),y8=J("$ZodCheckMaxLength",(e,n)=>{var i;kn.init(e,n),(i=e._zod.def).when??(i.when=s=>{const r=s.value;return!$f(r)&&r.length!==void 0}),e._zod.onattach.push(s=>{const r=s._zod.bag.maximum??Number.POSITIVE_INFINITY;n.maximum<r&&(s._zod.bag.maximum=n.maximum)}),e._zod.check=s=>{const r=s.value;if(r.length<=n.maximum)return;const d=Uf(r);s.issues.push({origin:d,code:"too_big",maximum:n.maximum,inclusive:!0,input:r,inst:e,continue:!n.abort})}}),b8=J("$ZodCheckMinLength",(e,n)=>{var i;kn.init(e,n),(i=e._zod.def).when??(i.when=s=>{const r=s.value;return!$f(r)&&r.length!==void 0}),e._zod.onattach.push(s=>{const r=s._zod.bag.minimum??Number.NEGATIVE_INFINITY;n.minimum>r&&(s._zod.bag.minimum=n.minimum)}),e._zod.check=s=>{const r=s.value;if(r.length>=n.minimum)return;const d=Uf(r);s.issues.push({origin:d,code:"too_small",minimum:n.minimum,inclusive:!0,input:r,inst:e,continue:!n.abort})}}),v8=J("$ZodCheckLengthEquals",(e,n)=>{var i;kn.init(e,n),(i=e._zod.def).when??(i.when=s=>{const r=s.value;return!$f(r)&&r.length!==void 0}),e._zod.onattach.push(s=>{const r=s._zod.bag;r.minimum=n.length,r.maximum=n.length,r.length=n.length}),e._zod.check=s=>{const r=s.value,u=r.length;if(u===n.length)return;const d=Uf(r),g=u>n.length;s.issues.push({origin:d,...g?{code:"too_big",maximum:n.length}:{code:"too_small",minimum:n.length},inclusive:!0,exact:!0,input:s.value,inst:e,continue:!n.abort})}}),Tu=J("$ZodCheckStringFormat",(e,n)=>{var i,s;kn.init(e,n),e._zod.onattach.push(r=>{const u=r._zod.bag;u.format=n.format,n.pattern&&(u.patterns??(u.patterns=new Set),u.patterns.add(n.pattern))}),n.pattern?(i=e._zod).check??(i.check=r=>{n.pattern.lastIndex=0,!n.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:n.format,input:r.value,...n.pattern?{pattern:n.pattern.toString()}:{},inst:e,continue:!n.abort})}):(s=e._zod).check??(s.check=()=>{})}),k8=J("$ZodCheckRegex",(e,n)=>{Tu.init(e,n),e._zod.check=i=>{n.pattern.lastIndex=0,!n.pattern.test(i.value)&&i.issues.push({origin:"string",code:"invalid_format",format:"regex",input:i.value,pattern:n.pattern.toString(),inst:e,continue:!n.abort})}}),x8=J("$ZodCheckLowerCase",(e,n)=>{n.pattern??(n.pattern=p8),Tu.init(e,n)}),w8=J("$ZodCheckUpperCase",(e,n)=>{n.pattern??(n.pattern=f8),Tu.init(e,n)}),S8=J("$ZodCheckIncludes",(e,n)=>{kn.init(e,n);const i=_o(n.includes),s=new RegExp(typeof n.position=="number"?`^.{${n.position}}${i}`:i);n.pattern=s,e._zod.onattach.push(r=>{const u=r._zod.bag;u.patterns??(u.patterns=new Set),u.patterns.add(s)}),e._zod.check=r=>{r.value.includes(n.includes,n.position)||r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:n.includes,input:r.value,inst:e,continue:!n.abort})}}),j8=J("$ZodCheckStartsWith",(e,n)=>{kn.init(e,n);const i=new RegExp(`^${_o(n.prefix)}.*`);n.pattern??(n.pattern=i),e._zod.onattach.push(s=>{const r=s._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(i)}),e._zod.check=s=>{s.value.startsWith(n.prefix)||s.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:n.prefix,input:s.value,inst:e,continue:!n.abort})}}),N8=J("$ZodCheckEndsWith",(e,n)=>{kn.init(e,n);const i=new RegExp(`.*${_o(n.suffix)}$`);n.pattern??(n.pattern=i),e._zod.onattach.push(s=>{const r=s._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(i)}),e._zod.check=s=>{s.value.endsWith(n.suffix)||s.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:n.suffix,input:s.value,inst:e,continue:!n.abort})}}),A8=J("$ZodCheckOverwrite",(e,n)=>{kn.init(e,n),e._zod.check=i=>{i.value=n.tx(i.value)}});class _8{constructor(n=[]){this.content=[],this.indent=0,this&&(this.args=n)}indented(n){this.indent+=1,n(this),this.indent-=1}write(n){if(typeof n=="function"){n(this,{execution:"sync"}),n(this,{execution:"async"});return}const s=n.split(`
|
|
15
15
|
`).filter(d=>d),r=Math.min(...s.map(d=>d.length-d.trimStart().length)),u=s.map(d=>d.slice(r)).map(d=>" ".repeat(this.indent*2)+d);for(const d of u)this.content.push(d)}compile(){const n=Function,i=this?.args,r=[...(this?.content??[""]).map(u=>` ${u}`)];return new n(...i,r.join(`
|
|
16
16
|
`))}}const C8={major:4,minor:3,patch:6},gt=J("$ZodType",(e,n)=>{var i;e??(e={}),e._zod.def=n,e._zod.bag=e._zod.bag||{},e._zod.version=C8;const s=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&s.unshift(e);for(const r of s)for(const u of r._zod.onattach)u(e);if(s.length===0)(i=e._zod).deferred??(i.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const r=(d,g,y)=>{let v=fo(d),w;for(const S of g){if(S._zod.def.when){if(!S._zod.def.when(d))continue}else if(v)continue;const j=d.issues.length,_=S._zod.check(d);if(_ instanceof Promise&&y?.async===!1)throw new ko;if(w||_ instanceof Promise)w=(w??Promise.resolve()).then(async()=>{await _,d.issues.length!==j&&(v||(v=fo(d,j)))});else{if(d.issues.length===j)continue;v||(v=fo(d,j))}}return w?w.then(()=>d):d},u=(d,g,y)=>{if(fo(d))return d.aborted=!0,d;const v=r(g,s,y);if(v instanceof Promise){if(y.async===!1)throw new ko;return v.then(w=>e._zod.parse(w,y))}return e._zod.parse(v,y)};e._zod.run=(d,g)=>{if(g.skipChecks)return e._zod.parse(d,g);if(g.direction==="backward"){const v=e._zod.parse({value:d.value,issues:[]},{...g,skipChecks:!0});return v instanceof Promise?v.then(w=>u(w,d,g)):u(v,d,g)}const y=e._zod.parse(d,g);if(y instanceof Promise){if(g.async===!1)throw new ko;return y.then(v=>r(v,s,g))}return r(y,s,g)}}Je(e,"~standard",()=>({validate:r=>{try{const u=OA(e,r);return u.success?{value:u.data}:{issues:u.error?.issues}}catch{return RA(e,r).then(d=>d.success?{value:d.data}:{issues:d.error?.issues})}},vendor:"zod",version:1}))}),Gf=J("$ZodString",(e,n)=>{gt.init(e,n),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??c8(e._zod.bag),e._zod.parse=(i,s)=>{if(n.coerce)try{i.value=String(i.value)}catch{}return typeof i.value=="string"||i.issues.push({expected:"string",code:"invalid_type",input:i.value,inst:e}),i}}),yt=J("$ZodStringFormat",(e,n)=>{Tu.init(e,n),Gf.init(e,n)}),z8=J("$ZodGUID",(e,n)=>{n.pattern??(n.pattern=YA),yt.init(e,n)}),E8=J("$ZodUUID",(e,n)=>{if(n.version){const s={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[n.version];if(s===void 0)throw new Error(`Invalid UUID version: "${n.version}"`);n.pattern??(n.pattern=ib(s))}else n.pattern??(n.pattern=ib());yt.init(e,n)}),T8=J("$ZodEmail",(e,n)=>{n.pattern??(n.pattern=XA),yt.init(e,n)}),D8=J("$ZodURL",(e,n)=>{yt.init(e,n),e._zod.check=i=>{try{const s=i.value.trim(),r=new URL(s);n.hostname&&(n.hostname.lastIndex=0,n.hostname.test(r.hostname)||i.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:n.hostname.source,input:i.value,inst:e,continue:!n.abort})),n.protocol&&(n.protocol.lastIndex=0,n.protocol.test(r.protocol.endsWith(":")?r.protocol.slice(0,-1):r.protocol)||i.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:n.protocol.source,input:i.value,inst:e,continue:!n.abort})),n.normalize?i.value=r.href:i.value=s;return}catch{i.issues.push({code:"invalid_format",format:"url",input:i.value,inst:e,continue:!n.abort})}}}),O8=J("$ZodEmoji",(e,n)=>{n.pattern??(n.pattern=WA()),yt.init(e,n)}),R8=J("$ZodNanoID",(e,n)=>{n.pattern??(n.pattern=ZA),yt.init(e,n)}),M8=J("$ZodCUID",(e,n)=>{n.pattern??(n.pattern=VA),yt.init(e,n)}),B8=J("$ZodCUID2",(e,n)=>{n.pattern??(n.pattern=GA),yt.init(e,n)}),q8=J("$ZodULID",(e,n)=>{n.pattern??(n.pattern=KA),yt.init(e,n)}),L8=J("$ZodXID",(e,n)=>{n.pattern??(n.pattern=HA),yt.init(e,n)}),$8=J("$ZodKSUID",(e,n)=>{n.pattern??(n.pattern=QA),yt.init(e,n)}),I8=J("$ZodISODateTime",(e,n)=>{n.pattern??(n.pattern=l8(n)),yt.init(e,n)}),U8=J("$ZodISODate",(e,n)=>{n.pattern??(n.pattern=o8),yt.init(e,n)}),P8=J("$ZodISOTime",(e,n)=>{n.pattern??(n.pattern=r8(n)),yt.init(e,n)}),V8=J("$ZodISODuration",(e,n)=>{n.pattern??(n.pattern=FA),yt.init(e,n)}),G8=J("$ZodIPv4",(e,n)=>{n.pattern??(n.pattern=e8),yt.init(e,n),e._zod.bag.format="ipv4"}),K8=J("$ZodIPv6",(e,n)=>{n.pattern??(n.pattern=t8),yt.init(e,n),e._zod.bag.format="ipv6",e._zod.check=i=>{try{new URL(`http://[${i.value}]`)}catch{i.issues.push({code:"invalid_format",format:"ipv6",input:i.value,inst:e,continue:!n.abort})}}}),H8=J("$ZodCIDRv4",(e,n)=>{n.pattern??(n.pattern=n8),yt.init(e,n)}),Q8=J("$ZodCIDRv6",(e,n)=>{n.pattern??(n.pattern=a8),yt.init(e,n),e._zod.check=i=>{const s=i.value.split("/");try{if(s.length!==2)throw new Error;const[r,u]=s;if(!u)throw new Error;const d=Number(u);if(`${d}`!==u)throw new Error;if(d<0||d>128)throw new Error;new URL(`http://[${r}]`)}catch{i.issues.push({code:"invalid_format",format:"cidrv6",input:i.value,inst:e,continue:!n.abort})}}});function Z2(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}const Z8=J("$ZodBase64",(e,n)=>{n.pattern??(n.pattern=i8),yt.init(e,n),e._zod.bag.contentEncoding="base64",e._zod.check=i=>{Z2(i.value)||i.issues.push({code:"invalid_format",format:"base64",input:i.value,inst:e,continue:!n.abort})}});function F8(e){if(!U2.test(e))return!1;const n=e.replace(/[-_]/g,s=>s==="-"?"+":"/"),i=n.padEnd(Math.ceil(n.length/4)*4,"=");return Z2(i)}const Y8=J("$ZodBase64URL",(e,n)=>{n.pattern??(n.pattern=U2),yt.init(e,n),e._zod.bag.contentEncoding="base64url",e._zod.check=i=>{F8(i.value)||i.issues.push({code:"invalid_format",format:"base64url",input:i.value,inst:e,continue:!n.abort})}}),X8=J("$ZodE164",(e,n)=>{n.pattern??(n.pattern=s8),yt.init(e,n)});function J8(e,n=null){try{const i=e.split(".");if(i.length!==3)return!1;const[s]=i;if(!s)return!1;const r=JSON.parse(atob(s));return!("typ"in r&&r?.typ!=="JWT"||!r.alg||n&&(!("alg"in r)||r.alg!==n))}catch{return!1}}const W8=J("$ZodJWT",(e,n)=>{yt.init(e,n),e._zod.check=i=>{J8(i.value,n.alg)||i.issues.push({code:"invalid_format",format:"jwt",input:i.value,inst:e,continue:!n.abort})}}),F2=J("$ZodNumber",(e,n)=>{gt.init(e,n),e._zod.pattern=e._zod.bag.pattern??G2,e._zod.parse=(i,s)=>{if(n.coerce)try{i.value=Number(i.value)}catch{}const r=i.value;if(typeof r=="number"&&!Number.isNaN(r)&&Number.isFinite(r))return i;const u=typeof r=="number"?Number.isNaN(r)?"NaN":Number.isFinite(r)?void 0:"Infinity":void 0;return i.issues.push({expected:"number",code:"invalid_type",input:r,inst:e,...u?{received:u}:{}}),i}}),e7=J("$ZodNumberFormat",(e,n)=>{g8.init(e,n),F2.init(e,n)}),t7=J("$ZodBoolean",(e,n)=>{gt.init(e,n),e._zod.pattern=d8,e._zod.parse=(i,s)=>{if(n.coerce)try{i.value=!!i.value}catch{}const r=i.value;return typeof r=="boolean"||i.issues.push({expected:"boolean",code:"invalid_type",input:r,inst:e}),i}}),n7=J("$ZodNull",(e,n)=>{gt.init(e,n),e._zod.pattern=m8,e._zod.values=new Set([null]),e._zod.parse=(i,s)=>{const r=i.value;return r===null||i.issues.push({expected:"null",code:"invalid_type",input:r,inst:e}),i}}),a7=J("$ZodUnknown",(e,n)=>{gt.init(e,n),e._zod.parse=i=>i}),i7=J("$ZodNever",(e,n)=>{gt.init(e,n),e._zod.parse=(i,s)=>(i.issues.push({expected:"never",code:"invalid_type",input:i.value,inst:e}),i)});function sb(e,n,i){e.issues.length&&n.issues.push(...ho(i,e.issues)),n.value[i]=e.value}const s7=J("$ZodArray",(e,n)=>{gt.init(e,n),e._zod.parse=(i,s)=>{const r=i.value;if(!Array.isArray(r))return i.issues.push({expected:"array",code:"invalid_type",input:r,inst:e}),i;i.value=Array(r.length);const u=[];for(let d=0;d<r.length;d++){const g=r[d],y=n.element._zod.run({value:g,issues:[]},s);y instanceof Promise?u.push(y.then(v=>sb(v,i,d))):sb(y,i,d)}return u.length?Promise.all(u).then(()=>i):i}});function du(e,n,i,s,r){if(e.issues.length){if(r&&!(i in s))return;n.issues.push(...ho(i,e.issues))}e.value===void 0?i in s&&(n.value[i]=void 0):n.value[i]=e.value}function Y2(e){const n=Object.keys(e.shape);for(const s of n)if(!e.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${s}": expected a Zod schema`);const i=wA(e.shape);return{...e,keys:n,keySet:new Set(n),numKeys:n.length,optionalKeys:new Set(i)}}function X2(e,n,i,s,r,u){const d=[],g=r.keySet,y=r.catchall._zod,v=y.def.type,w=y.optout==="optional";for(const S in n){if(g.has(S))continue;if(v==="never"){d.push(S);continue}const j=y.run({value:n[S],issues:[]},s);j instanceof Promise?e.push(j.then(_=>du(_,i,S,n,w))):du(j,i,S,n,w)}return d.length&&i.issues.push({code:"unrecognized_keys",keys:d,input:n,inst:u}),e.length?Promise.all(e).then(()=>i):i}const o7=J("$ZodObject",(e,n)=>{if(gt.init(e,n),!Object.getOwnPropertyDescriptor(n,"shape")?.get){const g=n.shape;Object.defineProperty(n,"shape",{get:()=>{const y={...g};return Object.defineProperty(n,"shape",{value:y}),y}})}const s=Cu(()=>Y2(n));Je(e._zod,"propValues",()=>{const g=n.shape,y={};for(const v in g){const w=g[v]._zod;if(w.values){y[v]??(y[v]=new Set);for(const S of w.values)y[v].add(S)}}return y});const r=cl,u=n.catchall;let d;e._zod.parse=(g,y)=>{d??(d=s.value);const v=g.value;if(!r(v))return g.issues.push({expected:"object",code:"invalid_type",input:v,inst:e}),g;g.value={};const w=[],S=d.shape;for(const j of d.keys){const _=S[j],E=_._zod.optout==="optional",A=_._zod.run({value:v[j],issues:[]},y);A instanceof Promise?w.push(A.then(C=>du(C,g,j,v,E))):du(A,g,j,v,E)}return u?X2(w,v,g,y,s.value,e):w.length?Promise.all(w).then(()=>g):g}}),r7=J("$ZodObjectJIT",(e,n)=>{o7.init(e,n);const i=e._zod.parse,s=Cu(()=>Y2(n)),r=j=>{const _=new _8(["shape","payload","ctx"]),E=s.value,A=G=>{const P=ab(G);return`shape[${P}]._zod.run({ value: input[${P}], issues: [] }, ctx)`};_.write("const input = payload.value;");const C=Object.create(null);let O=0;for(const G of E.keys)C[G]=`key_${O++}`;_.write("const newResult = {};");for(const G of E.keys){const P=C[G],H=ab(G),R=j[G]?._zod?.optout==="optional";_.write(`const ${P} = ${A(G)};`),R?_.write(`
|
|
17
17
|
if (${P}.issues.length) {
|
|
@@ -49,20 +49,20 @@ Error generating stack: `+l.message+`
|
|
|
49
49
|
|
|
50
50
|
`)}_.write("payload.value = newResult;"),_.write("return payload;");const L=_.compile();return(G,P)=>L(j,G,P)};let u;const d=cl,g=!R2.jitless,v=g&&kA.value,w=n.catchall;let S;e._zod.parse=(j,_)=>{S??(S=s.value);const E=j.value;return d(E)?g&&v&&_?.async===!1&&_.jitless!==!0?(u||(u=r(n.shape)),j=u(j,_),w?X2([],E,j,_,S,e):j):i(j,_):(j.issues.push({expected:"object",code:"invalid_type",input:E,inst:e}),j)}});function ob(e,n,i,s){for(const u of e)if(u.issues.length===0)return n.value=u.value,n;const r=e.filter(u=>!fo(u));return r.length===1?(n.value=r[0].value,r[0]):(n.issues.push({code:"invalid_union",input:n.value,inst:i,errors:e.map(u=>u.issues.map(d=>_i(d,s,Ai())))}),n)}const J2=J("$ZodUnion",(e,n)=>{gt.init(e,n),Je(e._zod,"optin",()=>n.options.some(r=>r._zod.optin==="optional")?"optional":void 0),Je(e._zod,"optout",()=>n.options.some(r=>r._zod.optout==="optional")?"optional":void 0),Je(e._zod,"values",()=>{if(n.options.every(r=>r._zod.values))return new Set(n.options.flatMap(r=>Array.from(r._zod.values)))}),Je(e._zod,"pattern",()=>{if(n.options.every(r=>r._zod.pattern)){const r=n.options.map(u=>u._zod.pattern);return new RegExp(`^(${r.map(u=>If(u.source)).join("|")})$`)}});const i=n.options.length===1,s=n.options[0]._zod.run;e._zod.parse=(r,u)=>{if(i)return s(r,u);let d=!1;const g=[];for(const y of n.options){const v=y._zod.run({value:r.value,issues:[]},u);if(v instanceof Promise)g.push(v),d=!0;else{if(v.issues.length===0)return v;g.push(v)}}return d?Promise.all(g).then(y=>ob(y,r,e,u)):ob(g,r,e,u)}}),l7=J("$ZodDiscriminatedUnion",(e,n)=>{n.inclusive=!1,J2.init(e,n);const i=e._zod.parse;Je(e._zod,"propValues",()=>{const r={};for(const u of n.options){const d=u._zod.propValues;if(!d||Object.keys(d).length===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(u)}"`);for(const[g,y]of Object.entries(d)){r[g]||(r[g]=new Set);for(const v of y)r[g].add(v)}}return r});const s=Cu(()=>{const r=n.options,u=new Map;for(const d of r){const g=d._zod.propValues?.[n.discriminator];if(!g||g.size===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(d)}"`);for(const y of g){if(u.has(y))throw new Error(`Duplicate discriminator value "${String(y)}"`);u.set(y,d)}}return u});e._zod.parse=(r,u)=>{const d=r.value;if(!cl(d))return r.issues.push({code:"invalid_type",expected:"object",input:d,inst:e}),r;const g=s.value.get(d?.[n.discriminator]);return g?g._zod.run(r,u):n.unionFallback?i(r,u):(r.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:n.discriminator,input:d,path:[n.discriminator],inst:e}),r)}}),c7=J("$ZodIntersection",(e,n)=>{gt.init(e,n),e._zod.parse=(i,s)=>{const r=i.value,u=n.left._zod.run({value:r,issues:[]},s),d=n.right._zod.run({value:r,issues:[]},s);return u instanceof Promise||d instanceof Promise?Promise.all([u,d]).then(([y,v])=>rb(i,y,v)):rb(i,u,d)}});function nf(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(Ao(e)&&Ao(n)){const i=Object.keys(n),s=Object.keys(e).filter(u=>i.indexOf(u)!==-1),r={...e,...n};for(const u of s){const d=nf(e[u],n[u]);if(!d.valid)return{valid:!1,mergeErrorPath:[u,...d.mergeErrorPath]};r[u]=d.data}return{valid:!0,data:r}}if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return{valid:!1,mergeErrorPath:[]};const i=[];for(let s=0;s<e.length;s++){const r=e[s],u=n[s],d=nf(r,u);if(!d.valid)return{valid:!1,mergeErrorPath:[s,...d.mergeErrorPath]};i.push(d.data)}return{valid:!0,data:i}}return{valid:!1,mergeErrorPath:[]}}function rb(e,n,i){const s=new Map;let r;for(const g of n.issues)if(g.code==="unrecognized_keys"){r??(r=g);for(const y of g.keys)s.has(y)||s.set(y,{}),s.get(y).l=!0}else e.issues.push(g);for(const g of i.issues)if(g.code==="unrecognized_keys")for(const y of g.keys)s.has(y)||s.set(y,{}),s.get(y).r=!0;else e.issues.push(g);const u=[...s].filter(([,g])=>g.l&&g.r).map(([g])=>g);if(u.length&&r&&e.issues.push({...r,keys:u}),fo(e))return e;const d=nf(n.value,i.value);if(!d.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(d.mergeErrorPath)}`);return e.value=d.data,e}const u7=J("$ZodRecord",(e,n)=>{gt.init(e,n),e._zod.parse=(i,s)=>{const r=i.value;if(!Ao(r))return i.issues.push({expected:"record",code:"invalid_type",input:r,inst:e}),i;const u=[],d=n.keyType._zod.values;if(d){i.value={};const g=new Set;for(const v of d)if(typeof v=="string"||typeof v=="number"||typeof v=="symbol"){g.add(typeof v=="number"?v.toString():v);const w=n.valueType._zod.run({value:r[v],issues:[]},s);w instanceof Promise?u.push(w.then(S=>{S.issues.length&&i.issues.push(...ho(v,S.issues)),i.value[v]=S.value})):(w.issues.length&&i.issues.push(...ho(v,w.issues)),i.value[v]=w.value)}let y;for(const v in r)g.has(v)||(y=y??[],y.push(v));y&&y.length>0&&i.issues.push({code:"unrecognized_keys",input:r,inst:e,keys:y})}else{i.value={};for(const g of Reflect.ownKeys(r)){if(g==="__proto__")continue;let y=n.keyType._zod.run({value:g,issues:[]},s);if(y instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof g=="string"&&G2.test(g)&&y.issues.length){const S=n.keyType._zod.run({value:Number(g),issues:[]},s);if(S instanceof Promise)throw new Error("Async schemas not supported in object keys currently");S.issues.length===0&&(y=S)}if(y.issues.length){n.mode==="loose"?i.value[g]=r[g]:i.issues.push({code:"invalid_key",origin:"record",issues:y.issues.map(S=>_i(S,s,Ai())),input:g,path:[g],inst:e});continue}const w=n.valueType._zod.run({value:r[g],issues:[]},s);w instanceof Promise?u.push(w.then(S=>{S.issues.length&&i.issues.push(...ho(g,S.issues)),i.value[y.value]=S.value})):(w.issues.length&&i.issues.push(...ho(g,w.issues)),i.value[y.value]=w.value)}}return u.length?Promise.all(u).then(()=>i):i}}),d7=J("$ZodEnum",(e,n)=>{gt.init(e,n);const i=M2(n.entries),s=new Set(i);e._zod.values=s,e._zod.pattern=new RegExp(`^(${i.filter(r=>xA.has(typeof r)).map(r=>typeof r=="string"?_o(r):r.toString()).join("|")})$`),e._zod.parse=(r,u)=>{const d=r.value;return s.has(d)||r.issues.push({code:"invalid_value",values:i,input:d,inst:e}),r}}),m7=J("$ZodLiteral",(e,n)=>{if(gt.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(s=>typeof s=="string"?_o(s):s?_o(s.toString()):String(s)).join("|")})$`),e._zod.parse=(s,r)=>{const u=s.value;return i.has(u)||s.issues.push({code:"invalid_value",values:n.values,input:u,inst:e}),s}}),p7=J("$ZodTransform",(e,n)=>{gt.init(e,n),e._zod.parse=(i,s)=>{if(s.direction==="backward")throw new O2(e.constructor.name);const r=n.transform(i.value,i);if(s.async)return(r instanceof Promise?r:Promise.resolve(r)).then(d=>(i.value=d,i));if(r instanceof Promise)throw new ko;return i.value=r,i}});function lb(e,n){return e.issues.length&&n===void 0?{issues:[],value:void 0}:e}const W2=J("$ZodOptional",(e,n)=>{gt.init(e,n),e._zod.optin="optional",e._zod.optout="optional",Je(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,void 0]):void 0),Je(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${If(i.source)})?$`):void 0}),e._zod.parse=(i,s)=>{if(n.innerType._zod.optin==="optional"){const r=n.innerType._zod.run(i,s);return r instanceof Promise?r.then(u=>lb(u,i.value)):lb(r,i.value)}return i.value===void 0?i:n.innerType._zod.run(i,s)}}),f7=J("$ZodExactOptional",(e,n)=>{W2.init(e,n),Je(e._zod,"values",()=>n.innerType._zod.values),Je(e._zod,"pattern",()=>n.innerType._zod.pattern),e._zod.parse=(i,s)=>n.innerType._zod.run(i,s)}),h7=J("$ZodNullable",(e,n)=>{gt.init(e,n),Je(e._zod,"optin",()=>n.innerType._zod.optin),Je(e._zod,"optout",()=>n.innerType._zod.optout),Je(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${If(i.source)}|null)$`):void 0}),Je(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,null]):void 0),e._zod.parse=(i,s)=>i.value===null?i:n.innerType._zod.run(i,s)}),g7=J("$ZodDefault",(e,n)=>{gt.init(e,n),e._zod.optin="optional",Je(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,s)=>{if(s.direction==="backward")return n.innerType._zod.run(i,s);if(i.value===void 0)return i.value=n.defaultValue,i;const r=n.innerType._zod.run(i,s);return r instanceof Promise?r.then(u=>cb(u,n)):cb(r,n)}});function cb(e,n){return e.value===void 0&&(e.value=n.defaultValue),e}const y7=J("$ZodPrefault",(e,n)=>{gt.init(e,n),e._zod.optin="optional",Je(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,s)=>(s.direction==="backward"||i.value===void 0&&(i.value=n.defaultValue),n.innerType._zod.run(i,s))}),b7=J("$ZodNonOptional",(e,n)=>{gt.init(e,n),Je(e._zod,"values",()=>{const i=n.innerType._zod.values;return i?new Set([...i].filter(s=>s!==void 0)):void 0}),e._zod.parse=(i,s)=>{const r=n.innerType._zod.run(i,s);return r instanceof Promise?r.then(u=>ub(u,e)):ub(r,e)}});function ub(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 v7=J("$ZodCatch",(e,n)=>{gt.init(e,n),Je(e._zod,"optin",()=>n.innerType._zod.optin),Je(e._zod,"optout",()=>n.innerType._zod.optout),Je(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,s)=>{if(s.direction==="backward")return n.innerType._zod.run(i,s);const r=n.innerType._zod.run(i,s);return r instanceof Promise?r.then(u=>(i.value=u.value,u.issues.length&&(i.value=n.catchValue({...i,error:{issues:u.issues.map(d=>_i(d,s,Ai()))},input:i.value}),i.issues=[]),i)):(i.value=r.value,r.issues.length&&(i.value=n.catchValue({...i,error:{issues:r.issues.map(u=>_i(u,s,Ai()))},input:i.value}),i.issues=[]),i)}}),k7=J("$ZodPipe",(e,n)=>{gt.init(e,n),Je(e._zod,"values",()=>n.in._zod.values),Je(e._zod,"optin",()=>n.in._zod.optin),Je(e._zod,"optout",()=>n.out._zod.optout),Je(e._zod,"propValues",()=>n.in._zod.propValues),e._zod.parse=(i,s)=>{if(s.direction==="backward"){const u=n.out._zod.run(i,s);return u instanceof Promise?u.then(d=>Gc(d,n.in,s)):Gc(u,n.in,s)}const r=n.in._zod.run(i,s);return r instanceof Promise?r.then(u=>Gc(u,n.out,s)):Gc(r,n.out,s)}});function Gc(e,n,i){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},i)}const x7=J("$ZodReadonly",(e,n)=>{gt.init(e,n),Je(e._zod,"propValues",()=>n.innerType._zod.propValues),Je(e._zod,"values",()=>n.innerType._zod.values),Je(e._zod,"optin",()=>n.innerType?._zod?.optin),Je(e._zod,"optout",()=>n.innerType?._zod?.optout),e._zod.parse=(i,s)=>{if(s.direction==="backward")return n.innerType._zod.run(i,s);const r=n.innerType._zod.run(i,s);return r instanceof Promise?r.then(db):db(r)}});function db(e){return e.value=Object.freeze(e.value),e}const w7=J("$ZodCustom",(e,n)=>{kn.init(e,n),gt.init(e,n),e._zod.parse=(i,s)=>i,e._zod.check=i=>{const s=i.value,r=n.fn(s);if(r instanceof Promise)return r.then(u=>mb(u,i,s,e));mb(r,i,s,e)}});function mb(e,n,i,s){if(!e){const r={code:"custom",input:i,inst:s,path:[...s._zod.def.path??[]],continue:!s._zod.def.abort};s._zod.def.params&&(r.params=s._zod.def.params),n.issues.push(ul(r))}}var pb;class S7{constructor(){this._map=new WeakMap,this._idmap=new Map}add(n,...i){const s=i[0];return this._map.set(n,s),s&&typeof s=="object"&&"id"in s&&this._idmap.set(s.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 s={...this.get(i)??{}};delete s.id;const r={...s,...this._map.get(n)};return Object.keys(r).length?r:void 0}return this._map.get(n)}has(n){return this._map.has(n)}}function j7(){return new S7}(pb=globalThis).__zod_globalRegistry??(pb.__zod_globalRegistry=j7());const Wr=globalThis.__zod_globalRegistry;function N7(e,n){return new e({type:"string",...ke(n)})}function A7(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ke(n)})}function fb(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ke(n)})}function _7(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ke(n)})}function C7(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ke(n)})}function z7(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ke(n)})}function E7(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ke(n)})}function T7(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ke(n)})}function D7(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ke(n)})}function O7(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ke(n)})}function R7(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ke(n)})}function M7(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ke(n)})}function B7(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ke(n)})}function q7(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ke(n)})}function L7(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ke(n)})}function $7(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ke(n)})}function I7(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ke(n)})}function U7(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ke(n)})}function P7(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ke(n)})}function V7(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ke(n)})}function G7(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ke(n)})}function K7(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ke(n)})}function H7(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ke(n)})}function Q7(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ke(n)})}function Z7(e,n){return new e({type:"string",format:"date",check:"string_format",...ke(n)})}function F7(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...ke(n)})}function Y7(e,n){return new e({type:"string",format:"duration",check:"string_format",...ke(n)})}function X7(e,n){return new e({type:"number",checks:[],...ke(n)})}function J7(e,n){return new e({type:"number",coerce:!0,checks:[],...ke(n)})}function W7(e,n){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ke(n)})}function e_(e,n){return new e({type:"boolean",...ke(n)})}function t_(e,n){return new e({type:"null",...ke(n)})}function n_(e){return new e({type:"unknown"})}function a_(e,n){return new e({type:"never",...ke(n)})}function hb(e,n){return new H2({check:"less_than",...ke(n),value:e,inclusive:!1})}function wp(e,n){return new H2({check:"less_than",...ke(n),value:e,inclusive:!0})}function gb(e,n){return new Q2({check:"greater_than",...ke(n),value:e,inclusive:!1})}function Sp(e,n){return new Q2({check:"greater_than",...ke(n),value:e,inclusive:!0})}function yb(e,n){return new h8({check:"multiple_of",...ke(n),value:e})}function ek(e,n){return new y8({check:"max_length",...ke(n),maximum:e})}function mu(e,n){return new b8({check:"min_length",...ke(n),minimum:e})}function tk(e,n){return new v8({check:"length_equals",...ke(n),length:e})}function i_(e,n){return new k8({check:"string_format",format:"regex",...ke(n),pattern:e})}function s_(e){return new x8({check:"string_format",format:"lowercase",...ke(e)})}function o_(e){return new w8({check:"string_format",format:"uppercase",...ke(e)})}function r_(e,n){return new S8({check:"string_format",format:"includes",...ke(n),includes:e})}function l_(e,n){return new j8({check:"string_format",format:"starts_with",...ke(n),prefix:e})}function c_(e,n){return new N8({check:"string_format",format:"ends_with",...ke(n),suffix:e})}function qo(e){return new A8({check:"overwrite",tx:e})}function u_(e){return qo(n=>n.normalize(e))}function d_(){return qo(e=>e.trim())}function m_(){return qo(e=>e.toLowerCase())}function p_(){return qo(e=>e.toUpperCase())}function f_(){return qo(e=>vA(e))}function h_(e,n,i){return new e({type:"array",element:n,...ke(i)})}function g_(e,n,i){return new e({type:"custom",check:"custom",fn:n,...ke(i)})}function y_(e){const n=b_(i=>(i.addIssue=s=>{if(typeof s=="string")i.issues.push(ul(s,i.value,n._zod.def));else{const r=s;r.fatal&&(r.continue=!1),r.code??(r.code="custom"),r.input??(r.input=i.value),r.inst??(r.inst=n),r.continue??(r.continue=!n._zod.def.abort),i.issues.push(ul(r))}},e(i.value,i)));return n}function b_(e,n){const i=new kn({check:"custom",...ke(n)});return i._zod.check=e,i}function nk(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??Wr,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 Rt(e,n,i={path:[],schemaPath:[]}){var s;const r=e._zod.def,u=n.seen.get(e);if(u)return u.count++,i.schemaPath.includes(e)&&(u.cycle=i.path),u.schema;const d={schema:{},count:1,cycle:void 0,path:i.path};n.seen.set(e,d);const g=e._zod.toJSONSchema?.();if(g)d.schema=g;else{const w={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(n,d.schema,w);else{const j=d.schema,_=n.processors[r.type];if(!_)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${r.type}`);_(e,n,j,w)}const S=e._zod.parent;S&&(d.ref||(d.ref=S),Rt(S,n,w),n.seen.get(S).isParent=!0)}const y=n.metadataRegistry.get(e);return y&&Object.assign(d.schema,y),n.io==="input"&&nn(e)&&(delete d.schema.examples,delete d.schema.default),n.io==="input"&&d.schema._prefault&&((s=d.schema).default??(s.default=d.schema._prefault)),delete d.schema._prefault,n.seen.get(e).schema}function ak(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const s=new Map;for(const d of e.seen.entries()){const g=e.metadataRegistry.get(d[0])?.id;if(g){const y=s.get(g);if(y&&y!==d[0])throw new Error(`Duplicate schema id "${g}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);s.set(g,d[0])}}const r=d=>{const g=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const S=e.external.registry.get(d[0])?.id,j=e.external.uri??(E=>E);if(S)return{ref:j(S)};const _=d[1].defId??d[1].schema.id??`schema${e.counter++}`;return d[1].defId=_,{defId:_,ref:`${j("__shared")}#/${g}/${_}`}}if(d[1]===i)return{ref:"#"};const v=`#/${g}/`,w=d[1].schema.id??`__schema${e.counter++}`;return{defId:w,ref:v+w}},u=d=>{if(d[1].schema.$ref)return;const g=d[1],{ref:y,defId:v}=r(d);g.def={...g.schema},v&&(g.defId=v);const w=g.schema;for(const S in w)delete w[S];w.$ref=y};if(e.cycles==="throw")for(const d of e.seen.entries()){const g=d[1];if(g.cycle)throw new Error(`Cycle detected: #/${g.cycle?.join("/")}/<root>
|
|
51
51
|
|
|
52
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const d of e.seen.entries()){const g=d[1];if(n===d[0]){u(d);continue}if(e.external){const v=e.external.registry.get(d[0])?.id;if(n!==d[0]&&v){u(d);continue}}if(e.metadataRegistry.get(d[0])?.id){u(d);continue}if(g.cycle){u(d);continue}if(g.count>1&&e.reused==="ref"){u(d);continue}}}function ik(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const s=d=>{const g=e.seen.get(d);if(g.ref===null)return;const y=g.def??g.schema,v={...y},w=g.ref;if(g.ref=null,w){s(w);const j=e.seen.get(w),_=j.schema;if(_.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(y.allOf=y.allOf??[],y.allOf.push(_)):Object.assign(y,_),Object.assign(y,v),d._zod.parent===w)for(const A in y)A==="$ref"||A==="allOf"||A in v||delete y[A];if(_.$ref&&j.def)for(const A in y)A==="$ref"||A==="allOf"||A in j.def&&JSON.stringify(y[A])===JSON.stringify(j.def[A])&&delete y[A]}const S=d._zod.parent;if(S&&S!==w){s(S);const j=e.seen.get(S);if(j?.schema.$ref&&(y.$ref=j.schema.$ref,j.def))for(const _ in y)_==="$ref"||_==="allOf"||_ in j.def&&JSON.stringify(y[_])===JSON.stringify(j.def[_])&&delete y[_]}e.override({zodSchema:d,jsonSchema:y,path:g.path??[]})};for(const d of[...e.seen.entries()].reverse())s(d[0]);const r={};if(e.target==="draft-2020-12"?r.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?r.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?r.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const d=e.external.registry.get(n)?.id;if(!d)throw new Error("Schema is missing an `id` property");r.$id=e.external.uri(d)}Object.assign(r,i.def??i.schema);const u=e.external?.defs??{};for(const d of e.seen.entries()){const g=d[1];g.def&&g.defId&&(u[g.defId]=g.def)}e.external||Object.keys(u).length>0&&(e.target==="draft-2020-12"?r.$defs=u:r.definitions=u);try{const d=JSON.parse(JSON.stringify(r));return Object.defineProperty(d,"~standard",{value:{...n["~standard"],jsonSchema:{input:pu(n,"input",e.processors),output:pu(n,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function nn(e,n){const i=n??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const s=e._zod.def;if(s.type==="transform")return!0;if(s.type==="array")return nn(s.element,i);if(s.type==="set")return nn(s.valueType,i);if(s.type==="lazy")return nn(s.getter(),i);if(s.type==="promise"||s.type==="optional"||s.type==="nonoptional"||s.type==="nullable"||s.type==="readonly"||s.type==="default"||s.type==="prefault")return nn(s.innerType,i);if(s.type==="intersection")return nn(s.left,i)||nn(s.right,i);if(s.type==="record"||s.type==="map")return nn(s.keyType,i)||nn(s.valueType,i);if(s.type==="pipe")return nn(s.in,i)||nn(s.out,i);if(s.type==="object"){for(const r in s.shape)if(nn(s.shape[r],i))return!0;return!1}if(s.type==="union"){for(const r of s.options)if(nn(r,i))return!0;return!1}if(s.type==="tuple"){for(const r of s.items)if(nn(r,i))return!0;return!!(s.rest&&nn(s.rest,i))}return!1}const v_=(e,n={})=>i=>{const s=nk({...i,processors:n});return Rt(e,s),ak(s,e),ik(s,e)},pu=(e,n,i={})=>s=>{const{libraryOptions:r,target:u}=s??{},d=nk({...r??{},target:u,io:n,processors:i});return Rt(e,d),ak(d,e),ik(d,e)},k_={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},x_=(e,n,i,s)=>{const r=i;r.type="string";const{minimum:u,maximum:d,format:g,patterns:y,contentEncoding:v}=e._zod.bag;if(typeof u=="number"&&(r.minLength=u),typeof d=="number"&&(r.maxLength=d),g&&(r.format=k_[g]??g,r.format===""&&delete r.format,g==="time"&&delete r.format),v&&(r.contentEncoding=v),y&&y.size>0){const w=[...y];w.length===1?r.pattern=w[0].source:w.length>1&&(r.allOf=[...w.map(S=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:S.source}))])}},w_=(e,n,i,s)=>{const r=i,{minimum:u,maximum:d,format:g,multipleOf:y,exclusiveMaximum:v,exclusiveMinimum:w}=e._zod.bag;typeof g=="string"&&g.includes("int")?r.type="integer":r.type="number",typeof w=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(r.minimum=w,r.exclusiveMinimum=!0):r.exclusiveMinimum=w),typeof u=="number"&&(r.minimum=u,typeof w=="number"&&n.target!=="draft-04"&&(w>=u?delete r.minimum:delete r.exclusiveMinimum)),typeof v=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(r.maximum=v,r.exclusiveMaximum=!0):r.exclusiveMaximum=v),typeof d=="number"&&(r.maximum=d,typeof v=="number"&&n.target!=="draft-04"&&(v<=d?delete r.maximum:delete r.exclusiveMaximum)),typeof y=="number"&&(r.multipleOf=y)},S_=(e,n,i,s)=>{i.type="boolean"},j_=(e,n,i,s)=>{n.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},N_=(e,n,i,s)=>{i.not={}},A_=(e,n,i,s)=>{},__=(e,n,i,s)=>{const r=e._zod.def,u=M2(r.entries);u.every(d=>typeof d=="number")&&(i.type="number"),u.every(d=>typeof d=="string")&&(i.type="string"),i.enum=u},C_=(e,n,i,s)=>{const r=e._zod.def,u=[];for(const d of r.values)if(d===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof d=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");u.push(Number(d))}else u.push(d);if(u.length!==0)if(u.length===1){const d=u[0];i.type=d===null?"null":typeof d,n.target==="draft-04"||n.target==="openapi-3.0"?i.enum=[d]:i.const=d}else u.every(d=>typeof d=="number")&&(i.type="number"),u.every(d=>typeof d=="string")&&(i.type="string"),u.every(d=>typeof d=="boolean")&&(i.type="boolean"),u.every(d=>d===null)&&(i.type="null"),i.enum=u},z_=(e,n,i,s)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},E_=(e,n,i,s)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},T_=(e,n,i,s)=>{const r=i,u=e._zod.def,{minimum:d,maximum:g}=e._zod.bag;typeof d=="number"&&(r.minItems=d),typeof g=="number"&&(r.maxItems=g),r.type="array",r.items=Rt(u.element,n,{...s,path:[...s.path,"items"]})},D_=(e,n,i,s)=>{const r=i,u=e._zod.def;r.type="object",r.properties={};const d=u.shape;for(const v in d)r.properties[v]=Rt(d[v],n,{...s,path:[...s.path,"properties",v]});const g=new Set(Object.keys(d)),y=new Set([...g].filter(v=>{const w=u.shape[v]._zod;return n.io==="input"?w.optin===void 0:w.optout===void 0}));y.size>0&&(r.required=Array.from(y)),u.catchall?._zod.def.type==="never"?r.additionalProperties=!1:u.catchall?u.catchall&&(r.additionalProperties=Rt(u.catchall,n,{...s,path:[...s.path,"additionalProperties"]})):n.io==="output"&&(r.additionalProperties=!1)},O_=(e,n,i,s)=>{const r=e._zod.def,u=r.inclusive===!1,d=r.options.map((g,y)=>Rt(g,n,{...s,path:[...s.path,u?"oneOf":"anyOf",y]}));u?i.oneOf=d:i.anyOf=d},R_=(e,n,i,s)=>{const r=e._zod.def,u=Rt(r.left,n,{...s,path:[...s.path,"allOf",0]}),d=Rt(r.right,n,{...s,path:[...s.path,"allOf",1]}),g=v=>"allOf"in v&&Object.keys(v).length===1,y=[...g(u)?u.allOf:[u],...g(d)?d.allOf:[d]];i.allOf=y},M_=(e,n,i,s)=>{const r=i,u=e._zod.def;r.type="object";const d=u.keyType,y=d._zod.bag?.patterns;if(u.mode==="loose"&&y&&y.size>0){const w=Rt(u.valueType,n,{...s,path:[...s.path,"patternProperties","*"]});r.patternProperties={};for(const S of y)r.patternProperties[S.source]=w}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(r.propertyNames=Rt(u.keyType,n,{...s,path:[...s.path,"propertyNames"]})),r.additionalProperties=Rt(u.valueType,n,{...s,path:[...s.path,"additionalProperties"]});const v=d._zod.values;if(v){const w=[...v].filter(S=>typeof S=="string"||typeof S=="number");w.length>0&&(r.required=w)}},B_=(e,n,i,s)=>{const r=e._zod.def,u=Rt(r.innerType,n,s),d=n.seen.get(e);n.target==="openapi-3.0"?(d.ref=r.innerType,i.nullable=!0):i.anyOf=[u,{type:"null"}]},q_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType},L_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType,i.default=JSON.parse(JSON.stringify(r.defaultValue))},$_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType,n.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(r.defaultValue)))},I_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType;let d;try{d=r.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=d},U_=(e,n,i,s)=>{const r=e._zod.def,u=n.io==="input"?r.in._zod.def.type==="transform"?r.out:r.in:r.out;Rt(u,n,s);const d=n.seen.get(e);d.ref=u},P_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType,i.readOnly=!0},sk=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType},V_=J("ZodISODateTime",(e,n)=>{I8.init(e,n),vt.init(e,n)});function ok(e){return Q7(V_,e)}const G_=J("ZodISODate",(e,n)=>{U8.init(e,n),vt.init(e,n)});function rk(e){return Z7(G_,e)}const K_=J("ZodISOTime",(e,n)=>{P8.init(e,n),vt.init(e,n)});function H_(e){return F7(K_,e)}const Q_=J("ZodISODuration",(e,n)=>{V8.init(e,n),vt.init(e,n)});function Z_(e){return Y7(Q_,e)}const F_=(e,n)=>{$2.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>DA(e,i)},flatten:{value:i=>TA(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,tf,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,tf,2)}},isEmpty:{get(){return e.issues.length===0}}})},Hn=J("ZodError",F_,{Parent:Error}),Y_=Pf(Hn),X_=Vf(Hn),J_=zu(Hn),W_=Eu(Hn),eC=MA(Hn),tC=BA(Hn),nC=qA(Hn),aC=LA(Hn),iC=$A(Hn),sC=IA(Hn),oC=UA(Hn),rC=PA(Hn),bt=J("ZodType",(e,n)=>(gt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:pu(e,"input"),output:pu(e,"output")}}),e.toJSONSchema=v_(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(Ei(n,{checks:[...n.checks??[],...i.map(s=>typeof s=="function"?{_zod:{check:s,def:{check:"custom"},onattach:[]}}:s)]}),{parent:!0}),e.with=e.check,e.clone=(i,s)=>Ti(e,i,s),e.brand=()=>e,e.register=((i,s)=>(i.add(e,s),e)),e.parse=(i,s)=>Y_(e,i,s,{callee:e.parse}),e.safeParse=(i,s)=>J_(e,i,s),e.parseAsync=async(i,s)=>X_(e,i,s,{callee:e.parseAsync}),e.safeParseAsync=async(i,s)=>W_(e,i,s),e.spa=e.safeParseAsync,e.encode=(i,s)=>eC(e,i,s),e.decode=(i,s)=>tC(e,i,s),e.encodeAsync=async(i,s)=>nC(e,i,s),e.decodeAsync=async(i,s)=>aC(e,i,s),e.safeEncode=(i,s)=>iC(e,i,s),e.safeDecode=(i,s)=>sC(e,i,s),e.safeEncodeAsync=async(i,s)=>oC(e,i,s),e.safeDecodeAsync=async(i,s)=>rC(e,i,s),e.refine=(i,s)=>e.check(e9(i,s)),e.superRefine=i=>e.check(t9(i)),e.overwrite=i=>e.check(qo(i)),e.optional=()=>kb(e),e.exactOptional=()=>UC(e),e.nullable=()=>xb(e),e.nullish=()=>kb(xb(e)),e.nonoptional=i=>QC(e,i),e.array=()=>x(e),e.or=i=>ct([e,i]),e.and=i=>BC(e,i),e.transform=i=>sf(e,uk(i)),e.default=i=>GC(e,i),e.prefault=i=>HC(e,i),e.catch=i=>FC(e,i),e.pipe=i=>sf(e,i),e.readonly=()=>JC(e),e.describe=i=>{const s=e.clone();return Wr.add(s,{description:i}),s},Object.defineProperty(e,"description",{get(){return Wr.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return Wr.get(e);const s=e.clone();return Wr.add(s,i[0]),s},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),lk=J("_ZodString",(e,n)=>{Gf.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(s,r,u)=>x_(e,s,r);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...s)=>e.check(i_(...s)),e.includes=(...s)=>e.check(r_(...s)),e.startsWith=(...s)=>e.check(l_(...s)),e.endsWith=(...s)=>e.check(c_(...s)),e.min=(...s)=>e.check(mu(...s)),e.max=(...s)=>e.check(ek(...s)),e.length=(...s)=>e.check(tk(...s)),e.nonempty=(...s)=>e.check(mu(1,...s)),e.lowercase=s=>e.check(s_(s)),e.uppercase=s=>e.check(o_(s)),e.trim=()=>e.check(d_()),e.normalize=(...s)=>e.check(u_(...s)),e.toLowerCase=()=>e.check(m_()),e.toUpperCase=()=>e.check(p_()),e.slugify=()=>e.check(f_())}),lC=J("ZodString",(e,n)=>{Gf.init(e,n),lk.init(e,n),e.email=i=>e.check(A7(cC,i)),e.url=i=>e.check(T7(uC,i)),e.jwt=i=>e.check(H7(NC,i)),e.emoji=i=>e.check(D7(dC,i)),e.guid=i=>e.check(fb(bb,i)),e.uuid=i=>e.check(_7(Kc,i)),e.uuidv4=i=>e.check(C7(Kc,i)),e.uuidv6=i=>e.check(z7(Kc,i)),e.uuidv7=i=>e.check(E7(Kc,i)),e.nanoid=i=>e.check(O7(mC,i)),e.guid=i=>e.check(fb(bb,i)),e.cuid=i=>e.check(R7(pC,i)),e.cuid2=i=>e.check(M7(fC,i)),e.ulid=i=>e.check(B7(hC,i)),e.base64=i=>e.check(V7(wC,i)),e.base64url=i=>e.check(G7(SC,i)),e.xid=i=>e.check(q7(gC,i)),e.ksuid=i=>e.check(L7(yC,i)),e.ipv4=i=>e.check($7(bC,i)),e.ipv6=i=>e.check(I7(vC,i)),e.cidrv4=i=>e.check(U7(kC,i)),e.cidrv6=i=>e.check(P7(xC,i)),e.e164=i=>e.check(K7(jC,i)),e.datetime=i=>e.check(ok(i)),e.date=i=>e.check(rk(i)),e.time=i=>e.check(H_(i)),e.duration=i=>e.check(Z_(i))});function c(e){return N7(lC,e)}const vt=J("ZodStringFormat",(e,n)=>{yt.init(e,n),lk.init(e,n)}),cC=J("ZodEmail",(e,n)=>{T8.init(e,n),vt.init(e,n)}),bb=J("ZodGUID",(e,n)=>{z8.init(e,n),vt.init(e,n)}),Kc=J("ZodUUID",(e,n)=>{E8.init(e,n),vt.init(e,n)}),uC=J("ZodURL",(e,n)=>{D8.init(e,n),vt.init(e,n)}),dC=J("ZodEmoji",(e,n)=>{O8.init(e,n),vt.init(e,n)}),mC=J("ZodNanoID",(e,n)=>{R8.init(e,n),vt.init(e,n)}),pC=J("ZodCUID",(e,n)=>{M8.init(e,n),vt.init(e,n)}),fC=J("ZodCUID2",(e,n)=>{B8.init(e,n),vt.init(e,n)}),hC=J("ZodULID",(e,n)=>{q8.init(e,n),vt.init(e,n)}),gC=J("ZodXID",(e,n)=>{L8.init(e,n),vt.init(e,n)}),yC=J("ZodKSUID",(e,n)=>{$8.init(e,n),vt.init(e,n)}),bC=J("ZodIPv4",(e,n)=>{G8.init(e,n),vt.init(e,n)}),vC=J("ZodIPv6",(e,n)=>{K8.init(e,n),vt.init(e,n)}),kC=J("ZodCIDRv4",(e,n)=>{H8.init(e,n),vt.init(e,n)}),xC=J("ZodCIDRv6",(e,n)=>{Q8.init(e,n),vt.init(e,n)}),wC=J("ZodBase64",(e,n)=>{Z8.init(e,n),vt.init(e,n)}),SC=J("ZodBase64URL",(e,n)=>{Y8.init(e,n),vt.init(e,n)}),jC=J("ZodE164",(e,n)=>{X8.init(e,n),vt.init(e,n)}),NC=J("ZodJWT",(e,n)=>{W8.init(e,n),vt.init(e,n)}),Kf=J("ZodNumber",(e,n)=>{F2.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(s,r,u)=>w_(e,s,r),e.gt=(s,r)=>e.check(gb(s,r)),e.gte=(s,r)=>e.check(Sp(s,r)),e.min=(s,r)=>e.check(Sp(s,r)),e.lt=(s,r)=>e.check(hb(s,r)),e.lte=(s,r)=>e.check(wp(s,r)),e.max=(s,r)=>e.check(wp(s,r)),e.int=s=>e.check(vb(s)),e.safe=s=>e.check(vb(s)),e.positive=s=>e.check(gb(0,s)),e.nonnegative=s=>e.check(Sp(0,s)),e.negative=s=>e.check(hb(0,s)),e.nonpositive=s=>e.check(wp(0,s)),e.multipleOf=(s,r)=>e.check(yb(s,r)),e.step=(s,r)=>e.check(yb(s,r)),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 h(e){return X7(Kf,e)}const AC=J("ZodNumberFormat",(e,n)=>{e7.init(e,n),Kf.init(e,n)});function vb(e){return W7(AC,e)}const _C=J("ZodBoolean",(e,n)=>{t7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>S_(e,i,s)});function F(e){return e_(_C,e)}const CC=J("ZodNull",(e,n)=>{n7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>j_(e,i,s)});function xe(e){return t_(CC,e)}const zC=J("ZodUnknown",(e,n)=>{a7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>A_()});function Gn(){return n_(zC)}const EC=J("ZodNever",(e,n)=>{i7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>N_(e,i,s)});function TC(e){return a_(EC,e)}const DC=J("ZodArray",(e,n)=>{s7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>T_(e,i,s,r),e.element=n.element,e.min=(i,s)=>e.check(mu(i,s)),e.nonempty=i=>e.check(mu(1,i)),e.max=(i,s)=>e.check(ek(i,s)),e.length=(i,s)=>e.check(tk(i,s)),e.unwrap=()=>e.element});function x(e,n){return h_(DC,e,n)}const OC=J("ZodObject",(e,n)=>{r7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>D_(e,i,s,r),Je(e,"shape",()=>n.shape),e.keyof=()=>D(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Gn()}),e.loose=()=>e.clone({...e._zod.def,catchall:Gn()}),e.strict=()=>e.clone({...e._zod.def,catchall:TC()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>AA(e,i),e.safeExtend=i=>_A(e,i),e.merge=i=>CA(e,i),e.pick=i=>jA(e,i),e.omit=i=>NA(e,i),e.partial=(...i)=>zA(dk,e,i[0]),e.required=(...i)=>EA(mk,e,i[0])});function b(e,n){const i={type:"object",shape:e??{},...ke(n)};return new OC(i)}const ck=J("ZodUnion",(e,n)=>{J2.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>O_(e,i,s,r),e.options=n.options});function ct(e,n){return new ck({type:"union",options:e,...ke(n)})}const RC=J("ZodDiscriminatedUnion",(e,n)=>{ck.init(e,n),l7.init(e,n)});function xn(e,n,i){return new RC({type:"union",options:n,discriminator:e,...ke(i)})}const MC=J("ZodIntersection",(e,n)=>{c7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>R_(e,i,s,r)});function BC(e,n){return new MC({type:"intersection",left:e,right:n})}const qC=J("ZodRecord",(e,n)=>{u7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>M_(e,i,s,r),e.keyType=n.keyType,e.valueType=n.valueType});function Le(e,n,i){return new qC({type:"record",keyType:e,valueType:n,...ke(i)})}const af=J("ZodEnum",(e,n)=>{d7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(s,r,u)=>__(e,s,r),e.enum=n.entries,e.options=Object.values(n.entries);const i=new Set(Object.keys(n.entries));e.extract=(s,r)=>{const u={};for(const d of s)if(i.has(d))u[d]=n.entries[d];else throw new Error(`Key ${d} not found in enum`);return new af({...n,checks:[],...ke(r),entries:u})},e.exclude=(s,r)=>{const u={...n.entries};for(const d of s)if(i.has(d))delete u[d];else throw new Error(`Key ${d} not found in enum`);return new af({...n,checks:[],...ke(r),entries:u})}});function D(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(s=>[s,s])):e;return new af({type:"enum",entries:i,...ke(n)})}const LC=J("ZodLiteral",(e,n)=>{m7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>C_(e,i,s),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 ce(e,n){return new LC({type:"literal",values:Array.isArray(e)?e:[e],...ke(n)})}const $C=J("ZodTransform",(e,n)=>{p7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>E_(e,i),e._zod.parse=(i,s)=>{if(s.direction==="backward")throw new O2(e.constructor.name);i.addIssue=u=>{if(typeof u=="string")i.issues.push(ul(u,i.value,n));else{const d=u;d.fatal&&(d.continue=!1),d.code??(d.code="custom"),d.input??(d.input=i.value),d.inst??(d.inst=e),i.issues.push(ul(d))}};const r=n.transform(i.value,i);return r instanceof Promise?r.then(u=>(i.value=u,i)):(i.value=r,i)}});function uk(e){return new $C({type:"transform",transform:e})}const dk=J("ZodOptional",(e,n)=>{W2.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>sk(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function kb(e){return new dk({type:"optional",innerType:e})}const IC=J("ZodExactOptional",(e,n)=>{f7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>sk(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function UC(e){return new IC({type:"optional",innerType:e})}const PC=J("ZodNullable",(e,n)=>{h7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>B_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function xb(e){return new PC({type:"nullable",innerType:e})}const VC=J("ZodDefault",(e,n)=>{g7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>L_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function GC(e,n){return new VC({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():q2(n)}})}const KC=J("ZodPrefault",(e,n)=>{y7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>$_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function HC(e,n){return new KC({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():q2(n)}})}const mk=J("ZodNonOptional",(e,n)=>{b7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>q_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function QC(e,n){return new mk({type:"nonoptional",innerType:e,...ke(n)})}const ZC=J("ZodCatch",(e,n)=>{v7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>I_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function FC(e,n){return new ZC({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const YC=J("ZodPipe",(e,n)=>{k7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>U_(e,i,s,r),e.in=n.in,e.out=n.out});function sf(e,n){return new YC({type:"pipe",in:e,out:n})}const XC=J("ZodReadonly",(e,n)=>{x7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>P_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function JC(e){return new XC({type:"readonly",innerType:e})}const WC=J("ZodCustom",(e,n)=>{w7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>z_(e,i)});function e9(e,n={}){return g_(WC,e,n)}function t9(e){return y_(e)}function n9(e,n){return sf(uk(e),n)}const mo={custom:"custom"};function pk(e){return J7(Kf,e)}const fk=b({id:c(),name:c(),keyPrefix:c(),scopes:x(c()),projectId:c().nullable(),readOnly:F(),createdAt:c(),lastUsedAt:c().nullable(),revokedAt:c().nullable()});b({keys:x(fk)});b({name:c().min(1).max(100),scopes:x(c()).min(1).optional(),projectId:c().optional()});fk.extend({key:c()});const a9=b({maxConcurrency:h().int().positive(),maxRequestsPerMinute:h().int().positive(),maxRequestsPerDay:h().int().positive()}),Mt=c().min(1),Hf=Le(c(),c().trim().min(1));c().min(1);const un=b({label:c().min(1),city:c().min(1),region:c().min(1),country:c().length(2),timezone:c().optional()}),Qf=D(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);b({id:c(),projectId:c(),channel:ce("webhook"),url:c().url(),urlDisplay:c(),urlHost:c(),events:x(Qf),enabled:F().default(!0),source:c().optional(),webhookSecret:c().optional(),createdAt:c(),updatedAt:c()});b({channel:ce("webhook"),url:c().url(),events:x(Qf).min(1),source:c().optional()});function jp(e,n=!1){const i=new Set,s=[];for(const r of e){const u=n?r.toLowerCase():r;i.has(u)||(i.add(u),s.push(r))}return s}function wb(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 s=i.hostname.trim().toLowerCase().replace(/^www\./,"");return!s||s.includes("/")||s.includes("?")||s.includes("#")?null:s}catch{return null}}const i9=c().trim().min(1).refine(e=>wb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>wb(e)??e),s9=c().trim().min(1),o9=c().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),Zf=b({marketingHosts:x(i9).overwrite(e=>jp(e,!0)),brandTerms:x(s9).overwrite(e=>jp(e,!0)),leadEventNames:x(o9).overwrite(e=>jp(e))});function r9(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const Np=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),hk=()=>r9(),Sb=D(["never-synced","ready","error"]),l9=D(["landing-page","channel"]),c9=D(["30d","60d","90d"]),u9=D(["marketing","all"]),tl=rk(),gl=b({label:D(["earliest","middle","previous","latest"]),startDate:tl,endDate:tl}),Ap=gl.extend({sessions:h().int().nonnegative()}),jb=gl.extend({eventCount:h().int().nonnegative()}),Nb=gl.extend({clicks:h().int().nonnegative(),impressions:h().int().nonnegative()}),d9=gl.extend({propertyClicks:h().int().nonnegative(),propertyImpressions:h().int().nonnegative(),reportedQueryClicks:h().int().nonnegative(),reportedQueryImpressions:h().int().nonnegative(),brandedClicks:h().int().nonnegative(),brandedImpressions:h().int().nonnegative(),nonBrandedClicks:h().int().nonnegative(),nonBrandedImpressions:h().int().nonnegative(),unreportedClicks:h().int().nonnegative(),unreportedImpressions:h().int().nonnegative()}),m9=gl.extend({sessions:h().int().nonnegative(),engagementRate:h().min(0).max(1).nullable(),dailyTotalUsers:h().int().nonnegative().nullable(),dailyNewUsers:h().int().nonnegative().nullable(),metricsAvailable:F(),daysInPeriod:h().int().nonnegative(),daysWithEngagementRate:h().int().nonnegative(),daysWithUserSplit:h().int().nonnegative()}),p9=b({window:c9,bucketDays:ce(30),filters:b({hostScope:u9,marketingHosts:x(c()),pathPrefix:c().nullable(),brandTerms:x(c()),queryMixScope:ce("property")}),acquisition:b({status:Sb,error:c().nullable(),syncedAt:c().datetime().nullable(),periods:x(Ap),channels:x(b({channelGroup:c(),periods:x(Ap)})),pages:x(b({hostName:c(),landingPage:c(),periods:x(Ap)}))}),leads:b({status:Sb,error:c().nullable(),syncedAt:c().datetime().nullable(),attributionScope:l9.nullable(),hostAndPathFiltersApplied:F(),periods:x(jb),channels:x(b({channelGroup:c(),periods:x(jb)}))}),engagement:b({status:D(["ready","unavailable"]),availableFromDate:tl.nullable(),latestDate:tl.nullable(),periods:x(m9)}),searchDemand:b({status:D(["ready","unavailable"]),periods:x(d9),queries:x(b({query:c(),classification:D(["branded","non-branded"]),periods:x(Nb)})),pages:x(b({hostName:c(),landingPage:c(),periods:x(Nb)})),latestDate:tl.nullable()})}),f9=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,h9=/[\0-\x1F\x7F-\x9F]/,g9=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,y9=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var b9=class{src_Any=f9.source;src_Cc=h9.source;src_Z=y9.source;src_P=g9.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 s=this.escapeRE(e),r=this.escapeRE(n),u=`(?:(?!${this.src_ZCc}|${s}|${r}).)`;let d=`${s}${u}{0,1000}${r}`;for(let g=2;g<=i;g++)d=`${s}(?:${u}|${d}){0,1000}${r}`;return d}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")}},_p={validate:(e,n,i)=>{const s=i.re.get_http_validator();s.lastIndex=n;const r=s.exec(e);return r?r[0].length:0},normalize:(e,n)=>n.normalize(e)},v9={"http:":_p,"https:":_p,"ftp:":_p,"//":{validate:function(e,n,i){const s=i.re.get_relative_proto_validator();s.lastIndex=n;const r=s.exec(e);return r?n>=3&&e[n-3]===":"||n>=3&&e[n-3]==="/"?0:r[0].length:0},normalize:(e,n)=>n.normalize(e)},"mailto:":{validate:function(e,n,i){const s=i.re.get_mailto_validator();s.lastIndex=n;const r=s.exec(e);return r?r[0].length:0},normalize:(e,n)=>n.normalize(e)}},k9="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",x9="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function w9(){const e=x9.split("|");return k9.split("|").forEach(n=>{const i=n.indexOf(":"),s=n.slice(0,i);for(const r of n.slice(i+1))e.push(s+r)}),e}var S9={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:w9(),urlAuth:!1,maxLength:1e4},Ab=class{schema;index;lastIndex;raw;text;url;constructor(e,n,i,s){const r=e.slice(i,s);this.schema=n.toLowerCase(),this.index=i,this.lastIndex=s,this.raw=r,this.text=r,this.url=r}},j9=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...i}=e;this.__opts__={...S9,...i},this.__schemas__={...v9},this.re=n||new b9,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:(s,r)=>r.normalize(s),...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 s=this.re.get_fuzzy_mail_host_search(),r=this.re.get_mail_name_validator();for(s.lastIndex=0;(n=s.exec(e))!==null;){const u=e.slice(Math.max(0,n.index-65),n.index);if(r.test(u))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 s,r,u,d,g,y,v=!1,w=!1,S=!1,j=0;if(!e.length)return null;for(i.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(s=this.re.get_fuzzy_link_search(),s.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(r=this.re.get_fuzzy_mail_host_search(),r.lastIndex=0,u=this.re.get_mail_name_validator());;){const _=Math.max(j-1,0);if(r&&u&&!S&&(!g||g.index<j))for(r.lastIndex<_&&(r.lastIndex=_);;){const L=r.exec(e);if(!L){S=!0,g=void 0;break}const G=u.exec(e.slice(Math.max(0,L.index-65),L.index));if(G){if(g={schema:"mailto:",index:L.index-G[1].length,lastIndex:L.index+L[0].length},g.index>=j)break;r.lastIndex<_&&(r.lastIndex=_)}}if(s&&!w&&(!d||d.index<j))for(s.lastIndex<_&&(s.lastIndex=_);;){const L=s.exec(e);if(!L){w=!0,d=void 0;break}if(d={schema:"",index:L.index+L[1].length,lastIndex:L.index+L[0].length},d.index>=j)break;s.lastIndex<_&&(s.lastIndex=_)}let E=g;(!E||d&&(d.index<E.index||d.index===E.index&&d.lastIndex>E.lastIndex))&&(E=d);let A;if(!v)for(;;){if(!y){i.lastIndex<_&&(i.lastIndex=_);const P=i.exec(e);if(!P){v=!0;break}y={schema:P[2],index:P.index+P[1].length,lastIndex:P.index+P[0].length}}if(y.index<j){y=void 0;continue}if(E&&y.index>E.index)break;const L=y;y=void 0;const G=this.testSchemaAt(e,L.schema,L.lastIndex);if(G){A={schema:L.schema,index:L.index,lastIndex:L.lastIndex+G};break}}let C=A;if((!C||g&&(g.index<C.index||g.index===C.index&&g.lastIndex>C.lastIndex))&&(C=g),(!C||d&&(d.index<C.index||d.index===C.index&&d.lastIndex>C.lastIndex))&&(C=d),!C)break;C===g?g=void 0:C===d&&(d=void 0);const O=new Ab(e,C.schema,C.index,C.lastIndex);O.schema?this.__schemas__[O.schema].normalize(O,this):this.normalize(O),n.push(O),j=C.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 s=new Ab(e,n[2],n.index+n[1].length,n.index+n[0].length+i);return this.__schemas__[s.schema].normalize(s,this),s}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 N9=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 A9(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function _9(e,n){const i=e.length-n.length-2,s=e.lastIndexOf(".",i);return s===-1?e:e.slice(s+1)}function C9(e,n,i){if(i.validHosts!==null){const r=i.validHosts;for(const u of r)if(A9(n,u))return u}let s=0;if(n.startsWith("."))for(;s<n.length&&n[s]===".";)s+=1;return e.length===n.length-s?null:_9(n,e)}function z9(e,n){return e.slice(0,-n.length-1)}const Cp=/[\t\n\r]/g;let of=!1;function _b(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Cb(e,n,i){const s=i-n,r=e.charCodeAt(n)|32;if(s===2)return r===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(s===3){const u=e.charCodeAt(n+1)|32,d=e.charCodeAt(n+2)|32;return r===119&&u===115&&d===115||r===102&&u===116&&d===112?1:0}else if(s===4){const u=e.charCodeAt(n+1)|32,d=e.charCodeAt(n+2)|32,g=e.charCodeAt(n+3)|32;return r===104&&u===116&&d===116&&g===112?1:r===102&&u===105&&d===108&&g===101?2:0}else if(s===5)return r===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 nl(e,n,i=!1){let s=0,r=e.length,u=!1,d=!1;if(of=!1,!n){if(e.startsWith("data:"))return null;for(;s<e.length&&e.charCodeAt(s)<=32;)s+=1;for(;r>s+1&&e.charCodeAt(r-1)<=32;)r-=1;if(e.charCodeAt(s)===47&&e.charCodeAt(s+1)===47)s+=2;else{const C=e.indexOf(":/",s);if(C!==-1){const O=Cb(e,s,C);if(O===1)for(d=!0,s=C+2;e.charCodeAt(s)===47||e.charCodeAt(s)===92;)s+=1;else if(O===2){d=!0,s=C+1;let L=0;for(;(e.charCodeAt(s)===47||e.charCodeAt(s)===92)&&L<2;)s+=1,L+=1;if(L<2)return null}else{for(let L=s;L<C;L+=1){const G=e.charCodeAt(L)|32;if(!(G>=97&&G<=122||G>=48&&G<=57||G===46||G===45||G===43)){const P=e.charCodeAt(L);return P===9||P===10||P===13?nl(e.replace(Cp,""),n,i):null}}if(e.charCodeAt(C+2)===47)s=C+3;else return null}}else if(e.charCodeAt(s)!==91){let O=-1;for(let L=s;L<r;L+=1){const G=e.charCodeAt(L);if(G===9||G===10||G===13)return nl(e.replace(Cp,""),n,i);if(G===58){O=L;break}if(G===47||G===92||G===63||G===35)break}if(O!==-1){let L=!1;for(let G=O+1;G<r;G+=1){const P=e.charCodeAt(G);if(P===47||P===92||P===63||P===35)break;if(P===64){L=!0;break}}if(!L){let G=!0,P=O+1;for(;P<r;P+=1){const H=e.charCodeAt(P);if(H===47||H===92||H===63||H===35)break;if(H<48||H>57){G=!1;break}}if(P===O+1&&(G=!1),!G){const H=Cb(e,s,O);if(H===0){let ae=!1;for(let R=O+1;R<r;R+=1){const $=e.charCodeAt(R);if($===47||$===92||$===63||$===35)break;if($===58){ae=!0;break}}if(!ae)return null}else if(d=!0,s=O+1,H===2){let ae=0;for(;(e.charCodeAt(s)===47||e.charCodeAt(s)===92)&&ae<2;)s+=1,ae+=1;if(ae<2)return null}else for(;e.charCodeAt(s)===47||e.charCodeAt(s)===92;)s+=1}}}}}let y=-1,v=-1,w=-1,S=-1,j=!1,_=i,E=s-1,A=-1;if(i&&s<r){const C=e.charCodeAt(s);(!(_b(C)||C===46||C===95)||C===45)&&(_=!1)}for(let C=s;C<r;C+=1){const O=e.charCodeAt(C);if(O<64)if(O===47||O===35||O===63){r=C;break}else O===58?(S===-1&&(S=C),w=C):O===9||O===10||O===13?j=!0:i&&(O===46?((C-E>64||A===46||A===45)&&(_=!1),E=C):(O<48||O>57)&&(O!==45||A===46)&&(_=!1));else if(d&&O===92){r=C;break}else O===64?(y=C,S=-1):O===93?v=C:O>=65&&O<=90?u=!0:i&&!_b(O)&&(_=!1);i&&(A=O)}if(j)return nl(e.replace(Cp,""),n,i);if(y!==-1&&y>=s&&y<r&&(s=y+1),e.charCodeAt(s)===91)return v!==-1?e.slice(s+1,v).toLowerCase():null;if(w!==-1&&w>s&&w<r&&S===w&&(r=w),s>=r)return null;i&&_&&y===-1&&w===-1&&v===-1&&e.charCodeAt(r-1)!==46&&r-s<=255&&r-E-1<=63&&A!==45&&(of=!0)}for(;r>s+1&&e.charCodeAt(r-1)===46;)r-=1;const g=s!==0||r!==e.length?e.slice(s,r):e;return u?g.toLowerCase():g}function E9(e){if(e.length<7||e.length>15)return!1;let n=0;for(let i=0;i<e.length;i+=1){const s=e.charCodeAt(i);if(s===46)n+=1;else if(s<48||s>57)return!1}return n===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function T9(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 s=!1;for(;n<i;n+=1){const r=e.charCodeAt(n);if(r===58)s=!0;else if(!(r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70))return!1}return s}function D9(e){return T9(e)||E9(e)}const O9=["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 R9(e){for(const n of O9)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function zb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Eb(e){if(e.length>255||e.length===0||!zb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,i=-1;const s=e.length;for(let r=0;r<s;r+=1){const u=e.charCodeAt(r);if(u===46){if(r-n>64||i===46||i===45)return!1;n=r}else if(!(zb(u)||u===45||u===95)||u===45&&i===46)return!1;i=u}return s-n-1<=63&&i!==45}function gk({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:i=!0,detectSpecialUse:s=!1,extractHostname:r=!0,mixedInputs:u=!0,validHosts:d=null,validateHostname:g=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:i,detectSpecialUse:s,extractHostname:r,mixedInputs:u,validHosts:d,validateHostname:g}}const M9=gk({});function B9(e){return e===void 0?M9:gk(e)}function q9(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function L9(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function yk(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 bk(e,n,i,s,r){const u=B9(s);if(typeof e!="string")return r;let d=!1;return u.extractHostname?u.mixedInputs?(d=Eb(e),r.hostname=nl(e,d,u.validateHostname)):r.hostname=nl(e,!1,u.validateHostname):r.hostname=e,u.detectIp&&r.hostname!==null&&(r.isIp=D9(r.hostname),r.isIp)?r:u.validateHostname&&u.extractHostname&&r.hostname!==null&&!(d&&r.hostname===e)&&!of&&!Eb(r.hostname)?(r.hostname=null,r):(n===0||r.hostname===null||(n===5&&u.detectSpecialUse&&(r.isSpecialUse=R9(r.hostname)),i(r.hostname,u,r),n===2||r.publicSuffix===null)||(r.domain=C9(r.publicSuffix,r.hostname,u),n===3||r.domain===null)||(r.subdomain=q9(r.hostname,r.domain),n===4)||(r.domainWithoutSuffix=z9(r.domain,r.publicSuffix)),r)}function $9(e,n,i){if(!n.allowPrivateDomains&&e.length>3){const s=e.length-1,r=e.charCodeAt(s),u=e.charCodeAt(s-1),d=e.charCodeAt(s-2),g=e.charCodeAt(s-3);if(r===109&&u===111&&d===99&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(r===103&&u===114&&d===111&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(r===117&&u===100&&d===101&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(r===118&&u===111&&d===103&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(r===116&&u===101&&d===110&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(r===101&&u===100&&d===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}const cs=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]),fu=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]),hu=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]),Tb=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]),rf="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",I9=621,U9=625,vk=cs.length,kk=hu.length,xk=new Uint32Array(kk),iu=new Uint32Array(kk),lf=new Int32Array(vk).fill(-1);for(let e=0,n=0;e<vk;e+=1)for(let i=fu[e];i<fu[e+1];i+=1){xk[i]=n;const s=n+hu[i];let r=5381;for(let u=s-1;u>=n;u-=1)r=r*33^rf.charCodeAt(u);iu[i]=r>>>0,hu[i]===1&&rf.charCodeAt(n)===42&&(lf[e]=i),n=s}let La=-1,cf=0,uf=0;function Db(e,n,i,s){if(hu[e]!==s)return!1;const r=xk[e];for(let u=0;u<s;u+=1)if(rf.charCodeAt(r+u)!==n.charCodeAt(i+u))return!1;return!0}function Ob(e,n,i,s,r){let u=fu[e],d=fu[e+1];for(;u<d;){const g=u+d>>>1,y=iu[g];if(y<n)u=g+1;else if(y>n)d=g;else{for(let v=g;v>=u&&iu[v]===n;v-=1)if(Db(v,i,s,r))return v;for(let v=g+1;v<d&&iu[v]===n;v+=1)if(Db(v,i,s,r))return v;return-1}}return-1}function Rb(e,n,i){let s=n,r=e.length,u=5381;La=-1;for(let g=e.length-1;g>=0;g-=1){const y=e.charCodeAt(g);if(y===46){const v=g+1;let w=Ob(s,u>>>0,e,v,r-v);if(w===-1&&(w=lf[s]),w===-1)return La!==-1;s=Tb[w],(cs[s]&i)!==0&&(La=s,cf=v,uf=r),r=g,u=5381}else u=u*33^y}let d=Ob(s,u>>>0,e,0,r);return d===-1&&(d=lf[s]),d!==-1&&(s=Tb[d],(cs[s]&i)!==0&&(La=s,cf=0,uf=r)),La!==-1}function wk(e,n,i){if($9(e,n,i))return;const s=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(Rb(e,U9,s)){i.isIcann=(cs[La]&1)!==0,i.isPrivate=(cs[La]&2)!==0,i.publicSuffix=e.slice(uf+1);return}if(Rb(e,I9,s)){i.isIcann=(cs[La]&1)!==0,i.isPrivate=(cs[La]&2)!==0,i.publicSuffix=e.slice(cf);return}i.isIcann=!1,i.isPrivate=!1;const r=e.lastIndexOf(".");i.publicSuffix=r===-1?e:e.slice(r+1)}const gu=L9();function P9(e,n){return yk(gu),bk(e,0,wk,n,gu).hostname}function V9(e,n){return yk(gu),bk(e,5,wk,n,gu).domainWithoutSuffix}const G9={allowPrivateDomains:!0};new j9({fuzzyLink:!0,fuzzyEmail:!1}).tlds(N9);function Ff(e){if(e==null)return null;const n=e.trim();if(!n)return null;const i=P9(n);return i?i.replace(/^www\./i,"").toLowerCase():null}function K9(e){return e==null||e.trim()===""?"":V9(e,G9)?.toLowerCase()??""}const H9=new Intl.Segmenter("en",{granularity:"word"}),Q9=/[\p{L}\p{N}]+/gu;function Z9(e){return e.normalize("NFKC").toLocaleLowerCase("en")}function F9(e){const n=[];for(const i of H9.segment(e))if(i.isWordLike)for(const s of i.segment.match(Q9)??[])n.push(s);return n}function Y9(e){return F9(Z9(e))}function ms(e){return Y9(e).join("")}const Sk=D(["cli","api","config-file"]);function X9(e){const n=new Set,i=new Set;for(const s of e){if(n.has(s.label)){i.add(s.label);continue}n.add(s.label)}return[...i]}function J9(e,n){return n?e.some(i=>i.label===n):!0}b({displayName:c().min(1),canonicalDomain:c().min(1),ownedDomains:x(c().min(1)).optional(),aliases:x(c()).optional(),country:c().length(2),language:c().min(2),tags:x(c()).optional(),labels:Le(c(),c()).optional(),providers:x(Mt).optional(),providerModels:Hf.optional(),locations:x(un).optional(),defaultLocation:c().nullable().optional(),measurement:Zf.optional(),autoExtractBacklinks:F().optional(),configSource:Sk.optional()});const W9=b({id:c(),name:c(),displayName:c().optional(),canonicalDomain:c(),ownedDomains:x(c()).default([]),aliases:x(c()).default([]),country:c().length(2),language:c().min(2),tags:x(c()).default([]),labels:Le(c(),c()).default({}),providers:x(c()).default([]),providerModels:Hf.default({}),locations:x(un).default([]),defaultLocation:c().nullable().optional(),measurement:Zf.default(hk),autoExtractBacklinks:F().default(!1),configSource:Sk.default("cli"),configRevision:h().int().positive().default(1),createdAt:c().optional(),updatedAt:c().optional()});b({id:c(),query:c(),createdAt:c()});b({id:c(),keyword:c(),createdAt:c()});b({queries:x(c().trim().min(1)).min(1)});b({keywords:x(c().trim().min(1)).min(1)});b({provider:Mt,count:h().int().min(1).max(20).optional()});b({id:c(),domain:c(),createdAt:c()});b({competitors:x(c().trim().min(1)).min(1)});function df(e){return Ff(e)??e.trim().toLowerCase().replace(/^www\./,"")}function ez(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,s=[];for(const r of n){const u=r.trim();if(!u)continue;const d=df(u);i.has(d)||(i.add(d),s.push(u))}return s}const tz=b({name:c().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:Le(c(),c()).optional().default({})}),nz=b({preset:c().optional(),cron:c().optional(),timezone:c().optional().default("UTC"),providers:x(Mt).optional().default([]),enabled:F().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),az=b({channel:ce("webhook"),url:c().url(),events:x(Qf).min(1)}),iz=b({gsc:b({propertyUrl:c()}).optional(),syncSchedule:b({preset:c().optional(),cron:c().optional()}).optional()}).optional(),Mb=x(c().min(1)),sz=b({displayName:c().min(1),canonicalDomain:c().min(1),ownedDomains:x(c().min(1)).optional().default([]),aliases:x(c().min(1)).optional().default([]),country:c().length(2),language:c().min(2),queries:Mb.optional(),keywords:Mb.optional(),competitors:x(c().min(1)).optional().default([]),providers:x(Mt).optional().default([]),providerModels:Hf.optional().default({}),locations:x(un).optional().default([]),defaultLocation:c().optional(),measurement:Zf.optional().default(hk),schedule:nz,notifications:x(az).optional().default([]),google:iz,autoExtractBacklinks:F().optional().default(!1)}).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=X9(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),J9(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});b({apiVersion:ce("canonry/v1"),kind:ce("Project"),metadata:tz,spec:sz});const oz=2,rz=c().regex(/^[a-f0-9]{64}$/),Du=c().trim().min(1).max(256),Bb=D(["sensitive","insensitive"]),We=c().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),lz=c().trim().min(1).refine(e=>Ff(e)!==null,"A competitor domain must be a valid hostname"),cz=xn("kind",[b({kind:ce("exact"),url:c().min(1),pathCase:Bb}).strict(),b({kind:ce("prefix"),host:c().min(1),pathPrefix:c().min(1),pathCase:Bb}).strict(),b({kind:ce("host"),host:c().min(1)}).strict()]),uz=b({canonicalHost:c().min(1),ownedHosts:x(c().min(1)),names:x(c().min(1))}).strict(),dz=b({projectBrand:uz}).strict(),mz=b({stableKey:We,label:c().trim().min(1),aliases:x(c().min(1)),urlMatchers:x(cz),mentionNotApplicable:F(),discoveryIdentity:c().min(1).nullable()}).strict(),jk=b({stableKey:We,label:c().trim().min(1),domain:lz,aliases:x(c().min(1))}).strict(),pz=b({stableKey:We,label:c().trim().min(1),targetKeys:x(We),competitors:x(jk)}).strict(),fz=D(["manual","query-set","template","discovery"]),hz=b({source:fz,sourceId:c().min(1).nullable(),capturedAt:c().datetime()}).strict(),gz=b({queryId:Du,queryText:c().min(1),provenance:hz}).strict(),yz=b({providers:x(Mt).min(1),models:Le(Mt,c().min(1)),location:un.nullable()}).strict(),bz=b({stableKey:c().min(1),queryId:Du,queryText:c().min(1),context:yz,expectedSnapshots:h().int().nonnegative()}).strict(),Nk=D(["branded","non-brand"]),vz=b({targetKey:We,queryId:Du,queryClass:Nk,executionNodeKey:c().min(1)}).strict(),kz=b({executionNodeKey:c().min(1),targetKey:We,queryId:Du}).strict(),Yf=b({schemaVersion:ce(oz),identities:dz,targets:x(mz),groups:x(pz),querySnapshots:x(gz),assignments:x(vz),executionNodes:x(bz),usageEdges:x(kz),compiledChecksum:rz}).strict().superRefine((e,n)=>{const i=new Set;for(const r of e.executionNodes)i.has(r.stableKey)&&n.addIssue({code:mo.custom,path:["executionNodes"],message:`Duplicate execution node key "${r.stableKey}"`}),i.add(r.stableKey);const s=new Set(e.targets.map(r=>r.stableKey));e.usageEdges.forEach((r,u)=>{i.has(r.executionNodeKey)||n.addIssue({code:mo.custom,path:["usageEdges",u,"executionNodeKey"],message:`Usage edge references unknown execution node "${r.executionNodeKey}"`}),s.has(r.targetKey)||n.addIssue({code:mo.custom,path:["usageEdges",u,"targetKey"],message:`Usage edge references unknown Target "${r.targetKey}"`})}),e.assignments.forEach((r,u)=>{s.has(r.targetKey)||n.addIssue({code:mo.custom,path:["assignments",u,"targetKey"],message:`Assignment references unknown Target "${r.targetKey}"`})});for(const r of e.groups)for(const u of r.targetKeys)s.has(u)||n.addIssue({code:mo.custom,path:["groups"],message:`Group "${r.stableKey}" references unknown Target "${u}"`})}),Ak=100;function Ou(e){return b({items:x(e),nextCursor:c().min(1).nullable(),totalEstimate:h().int().nonnegative().optional()}).strict()}const xz=D(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),ls=xn("state",[b({state:ce("available"),value:h(),numerator:h().int().nonnegative().optional(),denominator:h().int().positive().optional()}).strict(),b({state:ce("unavailable"),reason:xz}).strict()]),_k=D(["all","group","property"]),Ck=D(["all","branded","non-brand"]),wz=D(["not_measured","queued","running","complete","partial","failed"]),Sz=D(["run_measurement","review_flags","complete_setup","republish_setup","none"]);b({scope:_k,groupKey:We.optional(),targetKey:We.optional(),queryClass:Ck.optional(),provider:Mt.optional(),location:c().trim().min(1).optional(),from:c().trim().min(1).optional(),to:c().trim().min(1).optional(),runId:c().trim().min(1).optional(),search:c().optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(Ak).optional()}).strict();const jz=b({targetKey:We,label:c().min(1),mentionCoverage:ls,citationCoverage:ls,flags:h().int().nonnegative()}).strict(),Nz=b({kind:D(["project","competitor"]),stableKey:c().min(1),label:c().min(1),domain:c().min(1),credits:h().int().nonnegative(),share:h().min(0).max(1)}).strict(),Az=b({groupKey:We,queryClass:ce("non-brand"),denominator:h().int().positive(),entries:x(Nz)}).strict();b({mode:D(["active-v1","active-v2"]),scope:b({kind:_k,key:c().min(1).optional(),label:c().min(1)}).strict(),queryClass:Ck,measurement:b({state:wz,currentRunId:c().min(1).optional(),displayedRunId:c().min(1).optional(),completed:h().int().nonnegative(),expected:h().int().nonnegative(),completedAt:c().datetime().optional()}).strict(),nextAction:b({kind:Sz,count:h().int().nonnegative().optional()}).strict(),metrics:b({propertiesMentioned:ls,mentionCoverage:ls,citationCoverage:ls,brandPresence:ls,sov:ls.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:Ou(jz),flags:b({total:h().int().nonnegative()}).strict(),namedShareOfVoice:Az.optional()}).strict();const zk=1,yl=h().int().positive(),Lt=c().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),bl=c().trim().min(1).max(256),qb=D(["sensitive","insensitive"]);function yu(e){const n=Ff(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function _z(e){const n=[];let i=!1;for(let s=0;s<e.length;s++){const r=e[s];r==="/"?(i||n.push(r),i=!0):(n.push(r),i=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function Lb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function Ek(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return _z(n.replace(/%[0-9a-f]{2}/gi,i=>i.toUpperCase()))}function mf(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 s of i.split("/")){let r;try{r=decodeURIComponent(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(r==="."||r==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return Ek(i)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function Cz(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 $b(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 s=yu(i.hostname),r=mf(Cz(n));return`https://${s}${r}`}const dl=c().trim().min(1).refine(e=>{try{return yu(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>yu(e)),zz=c().trim().min(1).refine(e=>{try{return mf(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>mf(e)),Ez=c().trim().min(1).refine(e=>{try{return $b(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>$b(e)),Tz=xn("kind",[b({kind:ce("exact"),url:Ez,pathCase:qb}).strict(),b({kind:ce("prefix"),host:dl,pathPrefix:zz,pathCase:qb}).strict(),b({kind:ce("host"),host:dl}).strict()]),Tk=c().trim().min(1).max(256).refine(e=>ms(e).length>0,"A target alias must contain mention text"),Dz=Le(c().trim().min(1),c()),Oz=dl,Dk=b({stableKey:Lt,label:c().trim().min(1),urls:x(Tz).min(1),aliases:x(Tk),metadata:Dz.optional()}).strict(),Xf=b({stableKey:Lt,label:c().trim().min(1),targetKeys:x(Lt).min(1),competitors:x(Oz).optional()}).strict(),Ok=b({targetKey:Lt,queryIds:x(bl).min(1),context:un.nullable().optional()}).strict();function Rz(e,n){return e<n?-1:e>n?1:0}function Mz(e,n=i=>i){const i=new Set,s=new Set;for(const r of e){const u=n(r);i.has(u)&&s.add(u),i.add(u)}return s}function zp(e,n,i,s,r){for(const u of Mz(n,r))e.addIssue({code:"custom",path:[...i],message:`Duplicate ${s}: ${u}`})}function Ib(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:yu(n.hostname),pathname:Ek(n.pathname||"/")}}function Bz(e,n,i,s){return e===i||(n==="insensitive"||s==="insensitive")&&Lb(e)===Lb(i)}function qz(e,n){if(e.kind!==n.kind)return!1;const i=Ib(e),s=Ib(n);return i.host!==s.host?!1:e.kind==="host"||n.kind==="host"?!0:Bz(i.pathname,e.pathCase,s.pathname,n.pathCase)}function Lz(e){const n=new Set;return[...e].sort(Rz).filter(i=>{const s=ms(i);return n.has(s)?!1:(n.add(s),!0)})}const Rk=b({schemaVersion:ce(zk),targets:x(Dk).min(1),groups:x(Xf).optional(),targetQuerySelections:x(Ok).optional()}).strict().superRefine((e,n)=>{const i=e.groups??[],s=e.targetQuerySelections??[];zp(n,e.targets.map(y=>y.stableKey),["targets"],"target stable key"),zp(n,i.map(y=>y.stableKey),["groups"],"group stable key");const r=new Set(e.targets.map(y=>y.stableKey)),u=new Set(i.map(y=>y.stableKey));for(const y of r)u.has(y)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${y}`});const d=new Map,g=[];e.targets.forEach((y,v)=>{for(const w of Lz(y.aliases)){const S=ms(w),j=d.get(S);j&&j!==y.stableKey&&n.addIssue({code:"custom",path:["targets",v,"aliases"],message:`Target alias is already assigned to target ${j}: ${w}`}),d.set(S,y.stableKey)}y.urls.forEach((w,S)=>{g.find(_=>_.targetKey!==y.stableKey&&qz(_.matcher,w))&&n.addIssue({code:"custom",path:["targets",v,"urls",S],message:"Target URL matcher has an equal-specificity cross-target tie"}),g.push({targetKey:y.stableKey,matcher:w})})}),i.forEach((y,v)=>{zp(n,y.targetKeys,["groups",v,"targetKeys"],"group target key");for(let w=0;w<y.targetKeys.length;w++){const S=y.targetKeys[w];r.has(S)||n.addIssue({code:"custom",path:["groups",v,"targetKeys",w],message:`Unknown target: ${S}`})}}),s.forEach((y,v)=>{r.has(y.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",v,"targetKey"],message:`Unknown target: ${y.targetKey}`})})});Rk.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));b({expectedActiveRevision:yl.nullable(),plan:Rk}).strict();const $z=b({queryId:bl,queryText:c().min(1)}).strict(),Jf=b({stableKey:c().min(1),queryText:c().min(1),context:un.nullable(),expectedSnapshots:h().int().nonnegative()}).strict(),Iz=b({kind:ce("baseline"),executionNodeKey:c().min(1),queryId:bl}).strict(),Uz=b({kind:ce("target"),executionNodeKey:c().min(1),queryId:bl,targetKey:Lt}).strict(),pf=xn("kind",[Iz,Uz]),Mk=b({code:ce("target-alias-prefix-overlap"),message:c().min(1),targetKeys:x(Lt).min(1),aliases:x(c().min(1)).min(1)}).strict(),Bk=Dk.extend({mentionNotApplicable:F()}),Pz=b({schemaVersion:ce(zk),defaultContext:un.nullable(),effectiveOwnedHosts:x(dl),projectCanonicalHost:dl,projectBrandNames:x(Tk),targets:x(Bk),groups:x(Xf),targetQuerySelections:x(Ok),querySnapshots:x($z),executionNodes:x(Jf),usageEdges:x(pf),warnings:x(Mk)}).strict(),Wf=Pz,e0=c().regex(/^[a-f0-9]{64}$/),t0=c().datetime(),qk=b({schemaVersion:ce(1),providers:x(c().min(1)).min(1),models:Le(c().min(1),c().min(1)),checksum:c().regex(/^[a-f0-9]{64}$/)}).strict(),Vz=b({groups:x(Lt).optional(),targets:x(Lt).optional()}).strict(),Gz=b({groups:x(Lt),targets:x(Lt),queries:x(c().min(1)),resolvedTargets:x(Lt)}).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"})});b({stableKey:Lt,retiredAt:c().datetime()});b({active:b({revision:yl,checksum:e0,createdAt:t0,plan:Wf}).nullable()});b({versions:x(b({revision:yl,checksum:e0,createdAt:t0,active:F()}))});b({version:b({revision:yl,checksum:e0,createdAt:t0,active:F(),plan:Wf})});const su=b({targets:h().int(),groups:h().int(),queries:h().int(),executionNodes:h().int(),usageEdges:h().int(),baselineEdges:h().int(),targetEdges:h().int(),dedupSavings:h().int()}).strict(),Kz=D(["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"]),Lk=b({id:Kz,severity:D(["fail","warn"]),message:c().min(1),path:x(ct([c(),h().int()]))}).strict(),Hz=b({baseline:h().int().nonnegative(),target:h().int().nonnegative()}).strict(),$k=b({ok:ce(!0),checks:x(Lk),executionNodes:x(Jf),dedupSaved:h().int().nonnegative(),usageEdges:Hz,estCostUsd:xe(),plan:Wf,warnings:x(Mk),counts:su}).strict(),Ik=b({ok:ce(!1),checks:x(Lk).min(1),executionNodes:x(Jf).length(0),dedupSaved:ce(0),usageEdges:b({baseline:ce(0),target:ce(0)}).strict(),estCostUsd:xe()}).strict();xn("ok",[$k,Ik]);const Hc=b({targetKey:Lt,context:un.nullable(),queryIds:x(bl)}).strict();function Ub(e){return b({added:x(e),removed:x(e),changed:x(b({stableKey:Lt,before:e,after:e}).strict()),unchanged:x(Lt)}).strict()}const Qz=$k.extend({diff:b({activeRevision:yl.nullable(),targets:Ub(Bk),groups:Ub(Xf),querySelections:b({added:x(Hc),removed:x(Hc),changed:x(b({targetKey:Lt,before:Hc,after:Hc}).strict()),unchanged:x(b({targetKey:Lt,context:un.nullable()}).strict())}).strict(),execution:b({addedNodeKeys:x(c().min(1)),removedNodeKeys:x(c().min(1)),addedUsageEdges:x(pf),removedUsageEdges:x(pf),counts:b({before:su.nullable(),after:su,delta:su.nullable()}).strict()}).strict()}).strict()}).strict(),Zz=Ik.extend({diff:xe()}).strict();xn("ok",[Qz,Zz]);D(["proposed","alias","shared","unmatched","excluded"]);D(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const Fz=D(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),Yz=b({kind:D(["exact","prefix","suffix","contains"]),value:c().trim().min(1)}).strict(),Pb=b({host:c().trim().min(1),pathTemplate:c().trim().min(1)}).strict(),n0=b({primary:Pb,aliases:x(Pb).optional(),excludedSlugSuffixes:x(c().trim().min(1)).optional(),excludedSlugPatterns:x(Yz).optional()}).strict();b({sitemapUrl:c().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:n0,maxUrls:h().int().positive().max(1e4).optional()}).strict();const Ep=b({url:c(),canonicalUrl:c().nullable(),classification:D(["shared","unmatched","excluded"]),reason:D(["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"})}),Xz=b({classification:ce("proposed"),reason:ce("primary-match"),stableKey:Lt,slug:c().trim().min(1),label:c().trim().min(1),primaryUrl:c().url(),aliasCoverageUrls:x(c().url())}).strict(),Jz=b({classification:ce("alias"),reason:ce("exact-slug-match"),slug:c().trim().min(1),url:c().url(),targetStableKey:Lt}).strict(),Wz=b({kind:Fz,url:c(),canonicalUrl:c().nullable(),duplicateOf:c().optional()}).strict();b({proposed:x(Xz),aliases:x(Jz),shared:x(Ep),unmatched:x(Ep),excluded:x(Ep),diagnostics:x(Wz)}).strict().superRefine((e,n)=>{const i=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[s,r]of i)for(const u of e[s])r.includes(u.classification)||n.addIssue({code:"custom",path:[s],message:"Discovery item is in the wrong result bucket"})});const eE=D(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),tE=D(["baseline","target"]),Uk=D(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),ps=ct([b({numerator:h().int().nonnegative(),denominator:h().int().positive(),rate:h().min(0).max(1)}).strict(),b({numerator:xe(),denominator:xe(),rate:xe(),reason:Uk}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),nE=c().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),aE=b({executionId:c().trim().min(1),queryText:c().trim().min(1),provider:nE,context:un.nullable(),requestedModel:c().trim().min(1).optional()}).strict();b({schemaVersion:ce(1),expectedSlots:x(aE)}).strict().superRefine((e,n)=>{const i=new Set;for(const[s,r]of e.expectedSlots.entries()){const u=[r.executionId,r.provider].join("\0");i.has(u)&&n.addIssue({code:"custom",path:["expectedSlots",s],message:"Duplicate expected provider slot"}),i.add(u)}});const Ru=b({executed:h().int().nonnegative(),expected:h().int().nonnegative(),complete:F(),sourceComplete:F(),sourceCompleteObservations:h().int().nonnegative(),answerComplete:F()}).strict(),Vb=ct([b({domain:c().trim().min(1),own:F(),presentIn:h().int().nonnegative(),of:h().int().positive()}).strict(),b({domain:c().trim().min(1),own:F(),presentIn:xe(),of:xe(),reason:Uk}).strict()]),iE=b({domains:x(Vb),providers:x(b({provider:Mt,domains:x(Vb)}).strict())}).strict(),sE=b({provider:Mt,completeness:Ru,answerCoverage:ps}).strict(),oE=b({id:c().trim().min(1),label:c().trim().min(1),targetIds:x(c().trim().min(1)),completeness:Ru,answerCoverage:ps,targetCoverage:ps,sov:iE,providers:x(sE)}).strict(),rE=b({provider:Mt,completeness:Ru,citationCoverage:ps,mentionCoverage:ps}).strict(),lE=b({id:c().trim().min(1),label:c().trim().min(1),completeness:Ru,citationCoverage:ps,mentionCoverage:ps,providers:x(rE)}).strict(),cE=b({observationId:c().trim().min(1),expectedSlotId:c().trim().min(1),executionId:c().trim().min(1),usageEdgeId:c().trim().min(1),usageEdgeType:tE,provider:Mt,queryText:c().trim().min(1),location:c().nullable(),sourceUrl:c(),bridged:F(),historical:F(),evidenceComplete:F(),classification:eE,normalizedUrl:c().nullable(),matchedTargetIds:x(c().trim().min(1)),matchedUrlIds:x(c().trim().min(1))}).strict(),uE=b({bridgedObservationIds:x(c()),historicalObservationIds:x(c()),evidenceIncompleteObservationIds:x(c()),ambiguousObservationIds:x(c()),unmatchedObservationIds:x(c())}).strict(),dE=b({id:c().trim().min(1),status:D(["completed","partial"]),createdAt:c().datetime(),startedAt:c().datetime().nullable(),finishedAt:c().datetime().nullable()}).strict();b({revision:h().int().positive(),run:dE.nullable(),groups:x(oE),targets:x(lE),evidence:x(cE),diagnostics:uE}).strict();const Co=c().regex(/^[a-f0-9]{64}$/),Ci=c().trim().min(1).max(256),Di=h().int().positive(),Gb=b({kind:D(["user","api-key","system"]),id:c().trim().min(1),label:c().trim().min(1)}).strict(),mE=D(["proposed","included","excluded"]),pE=D(["manual","sitemap"]),a0=b({stableKey:We,label:c().trim().min(1),status:mE,aliases:x(c().trim().min(1)),urlMatchers:x(c().trim().min(1)),source:pE,discoveredUrl:c().trim().min(1).optional(),discoveryIdentity:c().trim().min(1).optional()}).strict(),Pk=b({providers:x(Mt).optional(),models:Le(Mt,c().trim().min(1)).optional(),locations:x(c().trim().min(1)).optional()}).strict(),fE=D(["branded","non-brand","unclassified"]),hE=D(["rule","operator"]),Vk=b({targetKey:We,queryId:Ci,contextOverride:Pk.optional(),queryClass:fE,classificationSource:hE}).strict(),Gk=jk,Kk=b({stableKey:We,label:c().trim().min(1),targetKeys:x(We),competitors:x(Gk)}).strict(),gE=b({sitemapUrl:c().url(),rule:n0,exclusions:x(c().trim().min(1)),inputChecksum:Co,reviewedAt:c().datetime().optional()}).strict(),yE=b({providers:x(Mt),models:Le(Mt,c().trim().min(1)).optional(),locations:x(c().trim().min(1))}).strict(),bE=b({defaultContext:yE,targets:x(a0),assignments:x(Vk),groups:x(Kk),discovery:gE.optional()}).strict(),vE=b({id:c().trim().min(1),projectId:c().trim().min(1),schemaVersion:ce(2),baseActiveVersionId:c().trim().min(1).nullable(),baseActiveRevision:Di.nullable(),authoring:bE,createdBy:Gb,updatedBy:Gb,createdAt:c().datetime(),updatedAt:c().datetime()}).strict(),i0=b({targets:h().int().nonnegative(),includedTargets:h().int().nonnegative(),assignments:h().int().nonnegative(),unclassifiedAssignments:h().int().nonnegative(),groups:h().int().nonnegative(),competitors:h().int().nonnegative()}).strict(),kE=b({code:c().trim().min(1),message:c().trim().min(1),path:x(ct([c(),h().int()]))}).strict();b({etag:c().trim().min(1),changed:F(),warnings:x(kE),counts:i0}).strict();b({draft:vE.nullable(),etag:c().trim().min(1).nullable()}).strict();Ou(a0);Ou(Vk);Ou(Kk);b({search:c().optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(Ak).optional()}).strict();b({expectedActiveRevision:Di.nullable()}).strict();b({sitemapUrl:c().url(),rule:n0,exclusions:x(c().trim().min(1)).optional()}).strict();const xE=b({discoveryIdentity:c().trim().min(1),action:D(["create","rebind","ignore"]),targetKey:We.optional(),label:c().trim().min(1).optional()}).strict();b({selections:x(xE).min(1)}).strict();b({target:a0}).strict();b({targetKey:We,label:c().trim().min(1)}).strict();b({targetKey:We,mergedKeys:x(We).min(1)}).strict();b({targetKey:We}).strict();b({targetKey:We,discoveryIdentity:c().trim().min(1),discoveredUrl:c().url()}).strict();b({targetKey:We,queryIds:x(Ci).min(1),contextOverride:Pk.optional()}).strict();b({targetKey:We,queryId:Ci}).strict();b({targetKey:We}).strict();b({queryClass:Nk,assignments:x(b({targetKey:We,queryId:Ci}).strict()).min(1)}).strict();b({group:b({stableKey:We,label:c().trim().min(1),targetKeys:x(We)}).strict()}).strict();b({groupKey:We}).strict();b({groupKey:We,competitor:Gk}).strict();b({groupKey:We,competitorKey:We}).strict();const bu=b({ruleId:c().trim().min(1),severity:D(["fail","warn"]),message:c().trim().min(1),path:x(ct([c(),h().int()]))}).strict();xn("ok",[b({ok:ce(!0),compiledChecksum:Co,checks:x(bu),counts:i0,plan:Yf}).strict(),b({ok:ce(!1),compiledChecksum:xe(),checks:x(bu).min(1)}).strict()]);const Kb=b({added:x(c().trim().min(1)),removed:x(c().trim().min(1)),changed:x(c().trim().min(1)),unchanged:x(c().trim().min(1))}).strict(),wE=b({activeRevision:Di.nullable(),targets:Kb,groups:Kb,assignments:b({added:h().int().nonnegative(),removed:h().int().nonnegative(),reclassified:h().int().nonnegative()}).strict(),execution:b({addedNodeKeys:x(c().trim().min(1)),removedNodeKeys:x(c().trim().min(1))}).strict()}).strict();xn("ok",[b({ok:ce(!0),compiledChecksum:Co,checks:x(bu),counts:i0,plan:Yf,diff:wE}).strict(),b({ok:ce(!1),compiledChecksum:xe(),checks:x(bu).min(1),diff:xe()}).strict()]);b({expectedActiveRevision:Di.nullable(),expectedCompiledChecksum:Co}).strict();b({published:F(),active:b({revision:Di,checksum:Co,compiledChecksum:Co,createdAt:c().datetime(),plan:Yf}).strict()}).strict();b({discarded:F()}).strict();b({expectedActiveRevision:Di}).strict();b({deactivated:F(),previousRevision:Di.nullable()}).strict();const SE=D(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),jE=D(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),NE=D(["simple","draft-only","active-v1","active-v2"]);b({state:SE,nextAction:jE,mode:NE,activeRevision:Di.nullable(),activeSchemaVersion:ct([ce(1),ce(2)]).nullable(),draft:b({etag:c().trim().min(1),updatedAt:c().datetime()}).strict().nullable()}).strict();const Hk=b({id:c().trim().min(1),projectId:c().trim().min(1),name:c().trim().min(1),description:c().nullable(),itemCount:h().int().nonnegative(),createdAt:c().datetime(),updatedAt:c().datetime()}).strict(),AE=b({queryId:Ci,queryText:c().min(1),position:h().int().nonnegative()}).strict();Hk.extend({items:x(AE)}).strict();b({querySets:x(Hk)}).strict();b({name:c().trim().min(1),description:c().nullable().optional(),queryIds:x(Ci)}).strict();const _E=b({id:c().trim().min(1),projectId:c().trim().min(1),name:c().trim().min(1),description:c().nullable(),pattern:c().trim().min(1),variables:x(c().trim().min(1)),createdAt:c().datetime(),updatedAt:c().datetime()}).strict();b({templates:x(_E)}).strict();b({name:c().trim().min(1),description:c().nullable().optional(),pattern:c().trim().min(1),variables:x(c().trim().min(1))}).strict();b({bindings:x(Le(c().trim().min(1),c().trim().min(1))).min(1),querySetId:c().trim().min(1).optional()}).strict();b({created:x(b({queryId:Ci,queryText:c().min(1)}).strict()),existing:x(b({queryId:Ci,queryText:c().min(1)}).strict())}).strict();const Qk=D(["introduced","repointed","retired"]),CE=Qk.enum;b({modelId:c().trim().min(1),date:c().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:Qk,confirmed:F(),sourceUrl:c().url(),note:c().min(1)});const zE=[{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.'}];CE.repointed;new Set(zE.map(e=>e.modelId.toLowerCase()));const EE=D(["not-exposed","no-known-change","known-change"]);EE.enum;const TE=b({modelId:c().trim().min(1),date:c().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:F(),sourceUrl:c().url()}),DE=b({status:D(["no-known-change","known-change"]),modelIds:x(c().trim().min(1)).min(1),changes:x(TE),changeCount:h().int().nonnegative(),unverifiedChangeCount:h().int().nonnegative(),firstChangeDate:c().optional(),lastChangeDate:c().optional(),knownGoodAsOf:c(),checkedThroughPeriodEnd:F()}),OE={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function RE(e){const n=e.trim().toLowerCase();return OE[n]??e.charAt(0).toUpperCase()+e.slice(1)}function Tp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Qr(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function Dp(e){return[...new Set(e.filter(n=>n!==null))].sort()}function ME(e,n){const i=RE(e),s=Array.isArray(n.changes)?n.changes:[],r=Tp(n.changeCount)||s.length,u=Math.min(r,Tp(n.unverifiedChangeCount)||Tp(n.unconfirmedChangeCount)||s.filter(w=>w.confirmed===!1).length),d=Qr(n.knownGoodAsOf),g=n.checkedThroughPeriodEnd!==!1,y={engine:i,confirmedCount:r-u,unconfirmedCount:u,knownGoodAsOf:d,checkedThroughPeriodEnd:g};if(s.length>0)return{...y,confirmedDates:Dp(s.filter(w=>w.confirmed!==!1).map(w=>Qr(w.date))),unconfirmedDates:Dp(s.filter(w=>w.confirmed===!1).map(w=>Qr(w.date)))};const v=Dp([Qr(n.firstChangeDate),Qr(n.lastChangeDate)]);return r===0?{...y,confirmedDates:[],unconfirmedDates:[]}:u===0?{...y,confirmedDates:v,unconfirmedDates:[]}:y.confirmedCount===0?{...y,confirmedDates:[],unconfirmedDates:v}:{...y,confirmedDates:[],unconfirmedDates:[]}}function BE(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 Hb(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function qE(e){const n=Hb(e.confirmedDates,e.confirmedCount),i=Hb(e.unconfirmedDates,e.unconfirmedCount),s=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${s} was updated ${n}, inside this period.`:`${s} was updated inside this period.`;if(e.confirmedCount===0)return i?`${s} may have been updated ${i}, inside this period, though that is not confirmed.`:`${s} may have been updated inside this period, though that is not confirmed.`;if(n&&i)return`${s} was updated ${n}, inside this period, and may also have been updated ${i}.`;const r=e.unconfirmedCount>1?"more times":"once more";return`${s} was updated inside this period, and may have been updated ${r}, though that is not confirmed.`}function Qb(e){const n=e.filter(s=>!s.checkedThroughPeriodEnd&&s.knownGoodAsOf!==null);return n.length===0?null:`We last checked for model updates on ${n.map(s=>s.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function _P(e){const n=Object.entries(e??{}).map(([y,v])=>ME(y,v??{})).sort((y,v)=>y.engine.localeCompare(v.engine));if(n.length===0)return null;const i=n.filter(y=>y.confirmedCount+y.unconfirmedCount>0);if(i.length===0){const y=[...new Set(n.map(_=>_.engine))],v=y.length>1,w=Qb(n),S=[...new Set(n.map(_=>_.knownGoodAsOf).filter(_=>_!==null))].sort(),j=w??(S.length>0?`We last checked for model updates on ${S[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${BE(y)} in this period.`,detail:`${v?"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.${j?` ${j}`:""}`}}const s=i.reduce((y,v)=>y+v.confirmedCount+v.unconfirmedCount,0),r=i.some(y=>y.confirmedCount>0),u=s===1?"this update":"these updates",d=r?`Some of the movement in these numbers may come from ${u} 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 ${u} rather than from a real change in how AI answers about you, so compare periods carefully.`,g=Qb(n);return{kind:"change",text:`${i.map(qE).join(" ")} ${d}${g?` ${g}`:""}`}}const LE=D(["gsc","ga4","gbp"]);b({id:c(),domain:c(),connectionType:LE,propertyId:c().nullable().optional(),sitemapUrl:c().nullable().optional(),scopes:x(c()).default([]),createdAt:c(),updatedAt:c()});const $E=b({date:c(),query:c(),page:c(),country:c().nullable().optional(),device:c().nullable().optional(),clicks:h(),impressions:h(),ctr:h(),position:h()});D(["clicks","impressions","date"]);b({rows:x($E),totalMatching:h(),truncated:F(),latestAvailableDate:c().nullable()});const IE=b({date:c(),clicks:h(),impressions:h(),ctr:h()});b({totals:b({clicks:h(),impressions:h(),ctr:h(),days:h()}),daily:x(IE)});const UE=b({page:c(),clicks:h(),impressions:h(),ctr:h()});b({rows:x(UE),totals:b({clicks:h(),impressions:h(),ctr:h(),days:h(),coveredFrom:c().nullable(),coveredThrough:c().nullable(),complete:F()}).nullable(),totalsSource:ce("property-daily"),rankedFrom:c().nullable(),rankedThrough:c().nullable()});const ff=b({id:c(),url:c(),indexingState:c().nullable().optional(),verdict:c().nullable().optional(),coverageState:c().nullable().optional(),pageFetchState:c().nullable().optional(),robotsTxtState:c().nullable().optional(),crawlTime:c().nullable().optional(),lastCrawlResult:c().nullable().optional(),isMobileFriendly:F().nullable().optional(),richResults:x(c()).default([]),referringUrls:x(c()).default([]),inspectedAt:c()});D(["stable","reindexed","deindexed","still-missing","new"]);const PE=b({url:c(),previousState:c().nullable(),currentState:c().nullable(),transitionDate:c()}),VE=b({reason:c(),count:h(),urls:x(ff).default([])});b({summary:b({total:h(),indexed:h(),notIndexed:h(),deindexed:h(),percentage:h()}),lastInspectedAt:c().nullable(),lastSyncedAt:c().nullable(),indexed:x(ff).default([]),notIndexed:x(ff).default([]),deindexed:x(PE).default([]),reasonGroups:x(VE).default([])});b({url:c(),type:D(["URL_UPDATED","URL_DELETED"]),notifiedAt:c()});const GE=b({url:c(),type:D(["URL_UPDATED","URL_DELETED"]),notifiedAt:c(),status:D(["success","error"]),error:c().optional()});b({summary:b({total:h().int().nonnegative(),succeeded:h().int().nonnegative(),failed:h().int().nonnegative()}),results:x(GE).default([])});b({date:c(),indexed:h(),notIndexed:h(),reasonBreakdown:Le(c(),h()).default({})});const KE=b({siteUrl:c(),permissionLevel:c()});b({sites:x(KE).default([])});const HE=b({type:c(),submitted:c(),indexed:c().optional().describe("Deprecated compatibility field.")}),Zk=b({path:c(),parentSitemapUrl:c().optional(),lastSubmitted:c().optional(),isPending:F().optional(),isSitemapsIndex:F().optional(),type:c().optional(),lastDownloaded:c().optional(),warnings:c().optional(),errors:c().optional(),contents:x(HE).optional()});b({sitemaps:x(Zk).default([]),summary:b({total:h().int().nonnegative(),indexes:h().int().nonnegative(),files:h().int().nonnegative()}),preferredSubmissionUrls:x(c()).default([])});b({sitemapUrls:x(c().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 QE=b({sitemapUrl:c(),status:D(["accepted","error"]),submittedAt:c().optional(),error:c().optional()});b({summary:b({total:h().int().nonnegative(),accepted:h().int().nonnegative(),failed:h().int().nonnegative()}),results:x(QE)});b({sitemaps:x(Zk),primarySitemapUrl:c(),run:b({id:c(),projectId:c(),kind:c(),status:c(),trigger:c(),createdAt:c()}).nullable()});const ZE=b({name:c(),accountName:c().nullable(),type:c().nullable(),role:c().nullable()});b({accounts:x(ZE),total:h().int().nonnegative()});const FE=b({id:c(),projectId:c(),accountName:c(),locationName:c(),displayName:c(),primaryCategoryDisplayName:c().nullable(),storefrontAddress:c().nullable(),websiteUri:c().nullable(),placeId:c().nullable(),mapsUri:c().nullable(),additionalCategories:x(c()),description:c().nullable(),serviceArea:Le(c(),Gn()).nullable(),regularHours:Le(c(),Gn()).nullable(),primaryPhone:c().nullable(),openStatus:c().nullable(),openingDate:c().nullable(),selected:F(),syncedAt:c().nullable(),createdAt:c(),updatedAt:c()});b({locations:x(FE),totalDiscovered:h().int().nonnegative(),totalSelected:h().int().nonnegative()});b({selectAllNew:F().default(!0),accountName:c().optional(),switchAccount:F().default(!1)});b({selected:F()});b({locationNames:x(c()).optional(),daysOfMetrics:h().int().positive().max(540).optional(),monthsOfKeywords:h().int().positive().max(18).optional()});b({runId:c(),status:c()});const YE=b({locationName:c(),date:c(),metric:c(),value:h().int()});b({metrics:x(YE),total:h().int().nonnegative()});const XE=b({locationName:c(),periodStart:c(),periodEnd:c(),keyword:c(),valueCount:h().int().nullable(),valueThreshold:h().int().nullable()});b({keywords:x(XE),total:h().int().nonnegative(),thresholdedPct:h().int().min(0).max(100)});const JE=b({locationName:c(),placeActionLinkName:c(),placeActionType:c(),uri:c().nullable(),isPreferred:F(),providerType:c().nullable()});b({placeActions:x(JE),total:h().int().nonnegative()});const WE=b({locationName:c(),populatedGroupCount:h().int().nonnegative(),syncedAt:c(),attributes:Le(c(),Gn())});b({lodging:x(WE),total:h().int().nonnegative()});const eT=b({name:c(),valueType:c(),values:x(ct([F(),c()])),unsetValues:x(c()),uris:x(c())}),tT=b({locationName:c(),attributeCount:h().int().nonnegative(),syncedAt:c(),attributes:x(eT)});b({attributes:x(tT),total:h().int().nonnegative()});const nT=b({locationName:c(),placeId:c(),tier:c(),amenities:x(c()),syncedAt:c(),place:Le(c(),Gn())});b({places:x(nT),total:h().int().nonnegative()});b({scope:b({locationName:c().nullable(),locationCount:h().int().nonnegative()}),performance:b({totals:Le(c(),h()),recent7d:Le(c(),h()),prior7d:Le(c(),h()),deltaPct:Le(c(),h().nullable())}),freshness:b({dataThroughDate:c().nullable(),latestStoredDate:c().nullable(),pendingDays:h().int().nonnegative()}),timeseries:x(b({date:c(),pending:F(),metrics:Le(c(),h())})),keywords:b({total:h().int().nonnegative(),thresholdedCount:h().int().nonnegative(),thresholdedPct:h().int().min(0).max(100)}),placeActions:b({total:h().int().nonnegative(),hasReservationCta:F(),hasBookingCta:F(),hasDirectMerchantCta:F()}),lodging:b({lodgingLocationCount:h().int().nonnegative(),populatedLodgingCount:h().int().nonnegative(),emptyLodgingCount:h().int().nonnegative()}),profileCompleteness:b({locationCount:h().int().nonnegative(),withSecondaryCategories:h().int().nonnegative(),secondaryCategoryTotal:h().int().nonnegative(),withDescription:h().int().nonnegative(),withServiceArea:h().int().nonnegative(),withHours:h().int().nonnegative(),withPrimaryPhone:h().int().nonnegative(),permanentlyClosed:h().int().nonnegative(),temporarilyClosed:h().int().nonnegative()})});const aT={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 iT(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(s=>s.toLowerCase());if(n.length===0)return e;const i=n.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function CP(e){return aT[e]??iT(e)}const sT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],oT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function zP(e){return sT.includes(e)?"conversion":oT.includes(e)?"reach":"other"}b({id:c(),domain:c(),siteUrl:c().nullable().optional(),createdAt:c(),updatedAt:c()});const Op=b({id:c(),url:c(),httpCode:h().nullable().optional(),inIndex:F().nullable().optional(),lastCrawledDate:c().nullable().optional(),inIndexDate:c().nullable().optional(),inspectedAt:c(),documentSize:h().nullable().optional(),anchorCount:h().nullable().optional(),discoveryDate:c().nullable().optional()});b({summary:b({total:h(),indexed:h(),notIndexed:h(),unknown:h().optional(),percentage:h()}),lastInspectedAt:c().nullable(),indexed:x(Op).default([]),notIndexed:x(Op).default([]),unknown:x(Op).default([]).optional()});b({query:c(),impressions:h(),clicks:h(),ctr:h(),averagePosition:h()});b({date:c(),indexed:h(),notIndexed:h(),unknown:h()});const rT=b({url:c(),status:D(["success","error"]),submittedAt:c(),error:c().optional()});b({summary:b({total:h().int().nonnegative(),succeeded:h().int().nonnegative(),failed:h().int().nonnegative()}),results:x(rT).default([])});const Fk=b({url:c(),verified:F()});b({sites:x(Fk).default([])});b({connected:F(),domain:c(),siteUrl:c().nullable(),createdAt:c().nullable(),updatedAt:c().nullable()});b({connected:F(),domain:c(),siteUrl:c().nullable(),availableSites:x(Fk).default([])});b({siteUrl:c()});const lT=b({name:c(),alive:F(),lastUsed:c().nullable()});b({connected:F(),endpoint:c(),version:c().optional(),browserVersion:c().optional(),targets:x(lT).default([])});const s0=D(["complete","partial","failed","unsupported"]);s0.enum;const Yk=D(["used","not-used","unknown","not-applicable"]);Yk.enum;const Xk=D(["native-auto-v1","search-required-v1"]);Xk.enum;const Lo=D(["live","staging"]);b({projectName:c(),url:c(),stagingUrl:c().optional(),username:c(),defaultEnv:Lo,createdAt:c(),updatedAt:c()});const Zb=b({url:c(),reachable:F(),pageCount:h().nullable().optional(),version:c().nullable().optional(),error:c().nullable().optional(),plugins:x(c()).optional(),authenticatedUser:b({id:h(),slug:c()}).nullable().optional()});b({connected:F(),projectName:c(),defaultEnv:Lo,live:Zb.nullable(),staging:Zb.nullable(),adminUrl:c().nullable().optional()});const cT=b({id:h(),slug:c(),title:c(),status:c(),modifiedAt:c().nullable().optional(),link:c().nullable().optional()}),Jk=b({title:c().nullable(),description:c().nullable(),noindex:F().nullable(),writable:F().default(!1),writeTargets:x(c()).default([])}),uT=b({type:c(),json:Le(c(),Gn())}),dT=cT.extend({env:Lo,content:c(),seo:Jk,schemaBlocks:x(uT).default([])}),Fb=dT.extend({contentHash:c(),contentSnippet:c()}),Wk=b({manualRequired:ce(!0),targetUrl:c(),adminUrl:c().nullable().optional(),content:c(),nextSteps:x(c()).default([])}),mT=b({slug:c(),severity:D(["high","medium","low"]),code:D(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:c()});b({slug:c(),title:c(),status:c(),wordCount:h(),seo:Jk,schemaPresent:F(),issues:x(mT).default([])});const pT=b({slug:c(),status:D(["applied","skipped","manual"]),error:c().optional(),manualAssist:Wk.optional()});b({env:Lo,strategy:D(["plugin","manual"]),results:x(pT)});const fT=b({slug:c(),status:D(["deployed","stripped","skipped","failed"]),schemasInjected:x(c()).optional(),manualAssist:Wk.optional(),error:c().optional()});b({env:Lo,results:x(fT)});const hT=b({slug:c(),title:c(),canonrySchemas:x(c()),thirdPartySchemas:x(c()),hasCanonrySchema:F()});b({env:Lo,pages:x(hT)});const gT=b({name:c(),status:D(["completed","skipped","failed"]),summary:c().optional(),error:c().optional()});b({projectName:c(),steps:x(gT)});b({slug:c(),live:Fb,staging:Fb,hasDifferences:F(),differences:b({title:F(),slug:F(),content:F(),seoTitle:F(),seoDescription:F(),noindex:F(),schema:F()})});const yT=b({name:c(),displayName:c().optional(),keyUrl:c().optional(),modelHint:c().optional(),model:c().optional(),defaultModel:c().optional(),configured:F(),quota:a9.optional(),vertexConfigured:F().optional()}),bT=b({name:c(),displayName:c(),mode:D(["api","browser"]),modelConfigurable:F(),defaultModel:c(),knownModels:x(b({id:c(),displayName:c(),tier:D(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:b({source:c(),flags:c()}),modelValidationHint:c()}),Yb=b({configured:F()});b({providers:x(yT).default([]),providerCatalog:x(bT).default([]),google:Yb,bing:Yb});const Oi=D(["queued","running","completed","partial","failed","cancelled"]),sn=Oi.enum,e3=D(["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"]),Te=e3.enum,o0=D(["manual","scheduled","config-apply","backfill","probe"]),xo=o0.enum,Pa=D(["cited","not-cited"]),vu=Pa.enum,ku=D(["visible","not-visible"]);ku.enum;const ml=D(["mentioned","not-mentioned"]);ml.enum;const t3=D(["new","cited","lost","emerging","not-cited"]);t3.enum;const vT=D(["new","mentioned","lost","emerging","not-mentioned"]);vT.enum;const kT=D([xo.manual,xo.probe]);b({kind:ce(Te["answer-visibility"]).optional(),trigger:kT.optional(),providers:x(Mt).optional(),queries:x(c().min(1)).min(1).optional(),measurementScope:Vz.optional(),location:c().min(1).optional(),allLocations:F().optional(),noLocation:F().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const xT=b({message:c(),raw:Gn().optional()}),wT=b({message:c().optional(),providers:Le(c(),xT).optional()}),ST=b({id:c(),projectId:c(),kind:e3,status:Oi,trigger:o0.default("manual"),measurementPlanVersionId:c().nullable().optional(),measurementManifest:Le(c(),Gn()).nullable().optional(),measurementScope:Gz.nullable().optional(),measurementExecutionIdentity:qk.nullable().optional(),location:c().nullable().optional(),queries:x(c()).nullable().optional(),startedAt:c().nullable().optional(),finishedAt:c().nullable().optional(),error:wT.nullable().optional(),queryBasketRevision:h().int().nullable().optional(),createdAt:c()});function r0(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[i,s]=n[0];return`${i}: ${s.message}`}if(n.length>1)return n.map(([i,s])=>`${i}: ${s.message}`).join(" • ")}return e.message??"Run failed."}const Mu=b({uri:c(),title:c()}),jT=b({status:D(["applied","ignored","browser-implicit","unknown"]),resolved:un.nullable().optional()}),n3=b({id:c(),runId:c(),queryId:c(),query:c().optional(),provider:Mt,citationState:Pa,answerMentioned:F().optional(),visibilityState:ku.optional(),mentionState:ml.optional(),transition:t3.optional(),answerText:c().nullable().optional(),citedDomains:x(c()).default([]),citedUrls:x(c()).nullable().default(null),captureStatus:ct([s0,xe()]).default(null),sourceCount:h().int().nonnegative().nullable().default(null),resolvedCount:h().int().nonnegative().nullable().default(null),captureVersion:h().int().positive().nullable().default(null),retrievalStatus:ct([Yk,xe()]).default(null),retrievalContract:ct([Xk,xe()]).default(null),competitorOverlap:x(c()).default([]),recommendedCompetitors:x(c()).default([]),matchedTerms:x(c()).default([]),groundingSources:x(Mu).default([]),searchQueries:x(c()).default([]),model:c().nullable().optional(),servedModel:c().nullable().optional(),location:c().nullable().optional(),requestedContext:un.nullable().optional(),supportedContext:jT.nullable().optional(),createdAt:c()});b({snapshots:x(n3),total:h().int().nonnegative()});const NT=b({queryId:c().nullable(),query:c().nullable(),run1State:Pa.nullable(),run2State:Pa.nullable(),run1AnswerMentioned:F().nullable(),run2AnswerMentioned:F().nullable(),run1VisibilityState:ku.nullable(),run2VisibilityState:ku.nullable(),run1MentionState:ml.nullable().optional(),run2MentionState:ml.nullable().optional(),changed:F(),visibilityChanged:F()});b({run1:c(),run2:c(),diff:x(NT)});const AT=ST.extend({snapshots:x(n3).optional()}),_T=b({totalRuns:h().int().nonnegative(),run:AT.nullable()});b({id:c(),projectId:c().nullable().optional(),actor:c(),action:c(),entityType:c(),entityId:c().nullable().optional(),diff:Gn().optional(),userAgent:c().nullable().optional(),actorSession:c().nullable().optional(),createdAt:c()});const CT=D(["yes","no","unknown","not-mentioned"]),Xb=x(c().min(1));b({companyName:c().min(1),domain:c().min(1),queries:Xb.optional(),phrases:Xb.optional(),competitors:x(c().min(1)).optional().default([])}).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"]})});const zT=b({name:c(),count:h().int().nonnegative()}),ET=b({id:c(),name:c(),weight:h(),score:h(),findings:x(b({type:c(),message:c()})).default([]),recommendations:x(c()).default([])}),TT=b({url:c(),finalUrl:c(),auditedAt:c(),overallScore:h(),summary:c(),factors:x(ET).default([])}),DT=b({industry:c(),summary:c(),services:x(c()).default([]),categoryTerms:x(c()).default([])}),OT=b({provider:c(),displayName:c(),model:c().nullable().optional(),mentioned:F(),cited:F(),describedAccurately:CT,accuracyNotes:c().nullable().optional(),incorrectClaims:x(c()).default([]),recommendedCompetitors:x(c()).default([]),citedDomains:x(c()).default([]),groundingSources:x(Mu).default([]),searchQueries:x(c()).default([]),answerText:c(),error:c().nullable().optional()}),RT=b({query:c(),providerResults:x(OT).default([])}),MT=b({totalQueries:h().int().nonnegative(),totalProviders:h().int().nonnegative(),totalComparisons:h().int().nonnegative(),mentionCount:h().int().nonnegative(),citationCount:h().int().nonnegative(),topCompetitors:x(zT).default([]),visibilityGap:c(),whatThisMeans:x(c()).default([]),recommendedActions:x(c()).default([])});b({companyName:c(),domain:c(),homepageUrl:c(),generatedAt:c(),queries:x(c()).default([]),competitors:x(c()).default([]),profile:DT,audit:TT,queryResults:x(RT).default([]),summary:MT});const a3=D(["pass","partial","fail"]);a3.enum;const i3=D(["up","down","flat"]);i3.enum;const BT=b({id:c(),name:c(),weight:h(),avgScore:h(),status:a3,pagesPassing:h().int().nonnegative(),pagesPartial:h().int().nonnegative(),pagesFailing:h().int().nonnegative()}),qT=b({factorId:c(),factorName:c(),avgScore:h(),affectedPages:h().int().nonnegative(),totalPages:h().int().nonnegative(),affectedPct:h().int().nonnegative(),topRecommendations:x(c()).default([])});b({project:c(),hasData:F(),runId:c().nullable(),runStatus:Oi.nullable(),sitemapUrl:c().nullable(),auditedAt:c().nullable(),aggregateScore:h(),pagesDiscovered:h().int().nonnegative(),pagesAudited:h().int().nonnegative(),pagesSkipped:h().int().nonnegative(),pagesErrored:h().int().nonnegative(),deltaScore:h().nullable(),trend:i3.nullable(),previousScore:h().nullable(),previousAuditedAt:c().nullable(),factors:x(BT).default([]),crossCuttingIssues:x(qT).default([]),prioritizedFixes:x(c()).default([])});const LT=b({id:c(),name:c(),weight:h(),score:h()}),$T=b({url:c(),overallScore:h(),status:D(["success","error"]),error:c().nullable().optional(),factors:x(LT).default([])});b({project:c(),runId:c().nullable(),auditedAt:c().nullable(),total:h().int().nonnegative(),pages:x($T).default([])});const IT=b({runId:c(),auditedAt:c(),aggregateScore:h(),pagesAudited:h().int().nonnegative()});b({project:c(),points:x(IT).default([])});b({sitemapUrl:c().url().optional(),limit:h().int().positive().max(2e3).optional()});b({runId:c(),status:Oi});const l0=D(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);l0.enum;b({id:c(),projectId:c(),kind:l0,cronExpr:c(),preset:c().nullable().optional(),timezone:c().default("UTC"),enabled:F().default(!0),providers:x(Mt).default([]),sourceId:c().nullable().optional(),lastRunAt:c().nullable().optional(),nextRunAt:c().nullable().optional(),createdAt:c(),updatedAt:c()});b({kind:l0.optional(),preset:c().optional(),cron:c().optional(),timezone:c().optional().default("UTC"),enabled:F().optional().default(!0),providers:x(Mt).optional().default([]),sourceId:c().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const c0=D(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);c0.enum;const u0=D(["cited","aspirational","wasted-surface"]),Jb=u0.enum;Jb.cited,Jb.aspirational;const Bu=D(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),UT=Bu.enum;UT["direct-competitor"];const qu=D(["queued","seeding","probing","completed","failed"]);qu.enum;const s3=b({domain:c().min(1),hits:h().int().positive(),competitorType:Bu.default("unknown")}),PT=b({id:c(),sessionId:c(),projectId:c(),query:c(),bucket:u0.nullable().default(null),citationState:Pa,citedDomains:x(c()).default([]),answerMentioned:F().nullable().default(null),createdAt:c()}),VT=b({id:c(),projectId:c(),status:qu,icpDescription:c().nullable().optional(),seedProvider:c().nullable().optional(),seedCountRaw:h().int().nullable().optional(),seedCount:h().int().nullable().optional(),seedFromAnswerCount:h().int().nullable().optional(),seedFromGroundingCount:h().int().nullable().optional(),seedBrandFilteredCount:h().int().nullable().optional(),buyerDescription:c().nullable().optional(),locations:x(un).nullable().optional(),seedRawCandidates:x(c()).nullable().optional(),dedupClusterMinSims:x(h()).nullable().optional(),dedupBandPairFraction:h().nullable().optional(),dedupPairsTotal:h().int().nullable().optional(),seedProviders:x(c()).nullable().optional(),seedProviderCounts:Le(c(),h().int()).nullable().optional(),canonicalCount:h().int().nullable().optional(),dedupThreshold:h().nullable().optional(),probeCount:h().int().nullable().optional(),citedCount:h().int().nullable().default(null),aspirationalCount:h().int().nullable().default(null),wastedCount:h().int().nullable().default(null),competitorMap:x(s3).default([]),warning:c().nullable().optional(),error:c().nullable().optional(),startedAt:c().nullable().optional(),finishedAt:c().nullable().optional(),createdAt:c()});VT.extend({probes:x(PT).default([])});const GT=500,KT=8,HT=["gemini","openai"],QT=D(HT);b({icpDescription:c().min(1).optional(),buyerDescription:c().min(1).optional(),seedProviders:x(QT).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:h().min(0).max(1).optional(),maxProbes:h().int().positive().max(GT).optional(),probeConcurrency:h().int().min(1).max(KT).optional(),locations:x(c().min(1)).optional()});b({buckets:x(u0).min(1).optional(),includeCompetitors:F().optional(),competitorTypes:x(Bu).min(1).optional()});b({sessionId:c(),projectId:c(),status:qu,queriesByBucket:b({cited:x(c()),aspirational:x(c()),"wasted-surface":x(c())}),suggestedCompetitors:x(s3)});b({sessionId:c(),projectId:c(),promoted:b({queries:x(c()),competitors:x(c())}),skipped:b({queries:x(c()),competitors:x(c())})});ct([ce("cli"),c().regex(/^discovery:.+$/)]);const ZT=b({query:c().min(1),probeHits:h().int().positive()}),FT=b({rawCandidates:h().int().nonnegative(),admitted:h().int().nonnegative(),rejected:b({belowFloor:h().int().nonnegative(),length:h().int().nonnegative(),navigational:h().int().nonnegative(),duplicate:h().int().nonnegative(),offAnchor:h().int().nonnegative(),semanticDuplicate:h().int().nonnegative()})});b({sessionId:c(),projectId:c(),provider:c(),status:qu,minProbeHits:h().int().positive(),anchorApplied:F(),semanticNoveltyApplied:F(),candidates:x(ZT),stats:FT});const d0=D(["own","direct-competitor","ota-aggregator","editorial-media","other"]);d0.enum;const o3=D(["7d","30d","90d","all"]),Wb=D(["improving","declining","stable"]),YT=D(["mentioned","cited"]);YT.enum;const hf=b({citationRate:h(),cited:h().int(),total:h().int(),mentionRate:h(),mentionedCount:h().int()}),m0=c().trim().min(1),XT=x(m0).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]})}),zo=xn("status",[b({status:ce("known"),model:m0}),b({status:ce("unknown")}),b({status:ce("mixed"),models:XT,includesUnknown:F()})]),JT=b({observedAt:c(),bucketStartDate:c(),from:zo,to:zo,fromPreWindowAnchor:F().optional(),anchorObservedAt:c().optional()}),r3=b({latestObservation:b({observedAt:c(),state:zo}),events:x(JT),eventTotal:h().int().nonnegative().optional(),anchorUnavailable:F().optional()}),WT=Le(c(),r3),eD=r3.extend({latestServedModelIds:x(m0).default([])}),tD=Le(c(),eD),nD=b({observedAt:c(),configured:zo,served:zo}),aD=b({rate:h().nullable(),projectMentionSnapshots:h().int().nonnegative(),competitorMentionSnapshots:h().int().nonnegative()}),iD=b({startDate:c(),endDate:c(),dataStartDate:c(),dataEndDate:c(),sweepCount:h().int().nonnegative(),citationRate:h(),cited:h().int(),total:h().int(),queryCount:h().int(),mentionRate:h(),mentionedCount:h().int(),mentionShare:aD,byProvider:Le(c(),hf),modelEvidenceByProvider:Le(c(),zo).default({}),basketRevision:h().int().nullable().default(null)}),sD=b({revision:h().int(),at:c(),added:x(c()),removed:x(c())}),oD=b({date:c(),delta:h().int(),label:c()}),rD=b({at:c(),identity:qk});b({window:o3,buckets:x(iD),overall:hf,byProvider:Le(c(),hf),trend:Wb,mentionTrend:Wb,queryChanges:x(oD),basketChanges:x(sD).default([]),executionIdentityChanges:x(rD).default([]),referenceBasketRevision:h().int().nullable().default(null),modelAttribution:WT.default({}),servedModelAttribution:tD.default({}),modelServiceMismatch:Le(c(),nD).default({}),modelPointerChanges:Le(c(),DE).default({})});const ev=b({category:c0,label:c(),count:h().int(),percentage:h(),topDomains:x(b({domain:c(),count:h().int()}))}),lD=b({domain:c(),count:h().int(),percentage:h(),category:c0,label:c(),surfaceClass:d0}),cD=b({surfaceClass:d0,label:c(),count:h().int(),percentage:h(),domainCount:h().int()}),tv=b({totalCitedSlots:h().int(),domainTotal:h().int(),entries:x(lD),truncatedDomainCount:h().int(),truncatedCitedSlots:h().int(),bySurfaceClass:x(cD)});b({overall:x(ev),byQuery:Le(c(),x(ev)),ranked:tv,byProvider:Le(c(),tv),runId:c(),window:o3,limit:h().int().nullable()});const p0=b({total:h().int(),checked:h().int(),mentioned:h().int(),cited:h().int(),mentionRate:h().nullable(),citedRate:h().nullable()}),l3=p0.extend({provider:c(),firstObserved:c(),lastObserved:c()}),uD=p0.extend({queryId:c().nullable(),query:c(),firstObserved:c(),lastObserved:c(),providers:x(l3).optional()}),dD=b({since:c().nullable(),until:c().nullable(),lastRuns:h().int().nullable(),runCount:h().int()}),mD=D(["provider"]),gf=b({domain:c(),mentions:h().int()}),pD=b({percent:h().nullable(),projectMentions:h().int(),competitorMentions:h().int(),snapshotsWithAnswerText:h().int(),perCompetitor:x(gf)});b({project:c(),groupBy:mD.optional(),window:dD,totals:p0,byProvider:x(l3).optional(),queries:x(uD),shareOfVoice:pD.optional()});const fD=D(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),hD=D(["up","down","flat"]),nv=b({point:h().nullable(),ciLow:h().nullable(),ciHigh:h().nullable(),numerator:h().int(),denominator:h().int()}),gD=D(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),yD=b({key:gD,label:c(),driftRobust:F(),from:nv,to:nv,rateRatio:h().nullable(),direction:ct([hD,xe()]),verdict:fD}),av=b({month:c(),since:c(),until:c(),runCount:h().int(),lowRunCount:F()}),bD=b({queryCount:h().int(),excludedFromOnly:h().int(),excludedToOnly:h().int(),providers:x(c()),excludedProviders:x(c())}),vD=b({provider:c(),fromModels:x(c()),toModels:x(c())}),kD=D(["included","model-discontinuous","model-unknown"]),xD=b({provider:c(),status:kD,fromModels:x(c()),toModels:x(c())}),wD=D(["comparable","model-discontinuous","model-unknown","insufficient-data"]),SD=b({status:wD,comparedProviders:x(c()),providers:x(xD)}),jD=b({provider:c(),from:b({checked:h().int(),mentioned:h().int(),cited:h().int()}),to:b({checked:h().int(),mentioned:h().int(),cited:h().int()})}),ND=b({from:b({count:h().int(),of:h().int()}),to:b({count:h().int(),of:h().int()})});b({project:c(),from:av,to:av,basket:bD,metrics:x(yD),queriesMentioned:ND,byProvider:x(jD),modelChanges:x(vD),continuity:SD,competitors:b({from:x(gf),to:x(gf)})});D(["json","csv"]);const AD=b({runId:c(),runKind:ce("answer-visibility"),runStatus:Oi,runTrigger:o0,runCreatedAt:c(),runStartedAt:c().nullable(),runFinishedAt:c().nullable(),snapshotId:c(),snapshotCreatedAt:c(),queryId:c().nullable(),query:c().nullable(),provider:c(),model:c().nullable(),location:c().nullable(),citationState:Pa,cited:F(),answerMentioned:F().nullable(),mentionState:ct([ml,xe()]),citedDomains:x(c()),citedUrls:x(c()).nullable(),captureStatus:ct([s0,xe()]),sourceCount:h().int().nonnegative().nullable(),resolvedCount:h().int().nonnegative().nullable(),captureVersion:h().int().positive().nullable(),competitorOverlap:x(c()),recommendedCompetitors:x(c()),answerText:c().nullable(),groundingSources:x(Mu),searchQueries:x(c())}),_D=b({since:c().nullable(),until:c().nullable(),includeProbes:F()});b({schemaVersion:ce("canonry.results-export/v1"),generatedAt:c(),project:b({id:c(),name:c(),displayName:c(),canonicalDomain:c(),country:c(),language:c()}),filters:_D,recordCount:h().int().nonnegative(),records:x(AD)});const Lu=D(["organic","paid"]);Lu.enum;b({id:c(),projectId:c(),propertyId:c(),clientEmail:c(),connected:F(),createdAt:c(),updatedAt:c()});b({date:c(),landingPage:c(),sessions:h(),organicSessions:h(),users:h()});const f0=D(["session","first_user","manual_utm"]),CD=b({source:c(),medium:c(),trafficClass:Lu,sessions:h(),users:h().optional(),sourceDimension:f0}),zD=b({source:c(),medium:c(),trafficClass:Lu,sourceDimension:f0,landingPage:c(),sessions:h(),users:h().optional()}),ED=b({source:c(),medium:c(),sessions:h(),users:h(),channelGroup:c()}),Zr=b({sessions:h(),sharePct:h(),sharePctDisplay:c()}),TD=b({organic:Zr,social:Zr,direct:Zr,ai:Zr,other:Zr});b({totalSessions:h(),totalOrganicSessions:h(),totalDirectSessions:h(),totalUsers:h().nullable(),topPages:x(b({landingPage:c(),sessions:h(),organicSessions:h(),directSessions:h(),users:h()})),aiReferrals:x(CD),aiReferralLandingPages:x(zD),aiSessionsDeduped:h(),aiUsersDeduped:h().optional(),paidAiSessionsDeduped:h(),paidAiUsersDeduped:h().optional(),organicAiSessionsDeduped:h(),organicAiUsersDeduped:h().optional(),aiSessionsBySession:h(),aiUsersBySession:h().optional(),paidAiSessionsBySession:h(),paidAiUsersBySession:h().optional(),organicAiSessionsBySession:h(),organicAiUsersBySession:h().optional(),socialReferrals:x(ED),socialSessions:h(),socialUsers:h(),channelBreakdown:TD,organicSharePct:h(),aiSharePct:h(),aiSharePctBySession:h(),paidAiSharePct:h(),paidAiSharePctBySession:h(),organicAiSharePct:h(),organicAiSharePctBySession:h(),directSharePct:h(),socialSharePct:h(),organicSharePctDisplay:c(),aiSharePctDisplay:c(),aiSharePctBySessionDisplay:c(),paidAiSharePctDisplay:c(),paidAiSharePctBySessionDisplay:c(),organicAiSharePctDisplay:c(),organicAiSharePctBySessionDisplay:c(),directSharePctDisplay:c(),socialSharePctDisplay:c(),otherSessions:h(),otherSharePct:h(),otherSharePctDisplay:c(),lastSyncedAt:c().nullable()});b({connected:F(),propertyId:c().nullable(),clientEmail:c().nullable(),authMethod:D(["service-account","oauth"]).nullable(),lastSyncedAt:c().nullable(),createdAt:c().nullable().optional(),updatedAt:c().nullable().optional()});b({synced:F(),rowCount:h().int().nonnegative(),aiReferralCount:h().int().nonnegative(),socialReferralCount:h().int().nonnegative(),days:h().int().nonnegative(),syncedAt:c(),measurement:b({acquisition:b({days:h().int().nonnegative(),status:D(["ready","error"]),rowCount:h().int().nonnegative(),error:c().optional()}),leads:b({days:h().int().nonnegative(),status:D(["ready","error","not-configured"]),rowCount:h().int().nonnegative(),attributionScope:D(["landing-page","channel"]).optional(),error:c().optional()})}),syncedComponents:x(c()).optional()});b({date:c(),source:c(),medium:c(),trafficClass:Lu,landingPage:c(),sessions:h(),users:h(),sourceDimension:f0});const DD=b({source:c(),sessions:h(),paidSessions:h(),organicSessions:h()}),OD=b({date:c(),sessions:h(),paidSessions:h(),organicSessions:h(),bySource:x(DD)});b({days:x(OD),sources:x(c()),totalSessions:h(),totalPaidSessions:h(),totalOrganicSessions:h()});b({date:c(),source:c(),medium:c(),sessions:h(),users:h(),channelGroup:c()});b({date:c(),sessions:h(),organicSessions:h(),users:h(),usersSource:D(["deduplicated","landing-page-sum"])});b({id:c(),projectId:c(),runId:c().nullable(),overallCitedRate:h(),overallMentionRate:h(),totalPairs:h().int().nonnegative(),citedPairs:h().int().nonnegative(),mentionedPairs:h().int().nonnegative(),providerBreakdown:Le(c(),b({citedRate:h(),mentionRate:h(),cited:h().int().nonnegative(),mentioned:h().int().nonnegative(),total:h().int().nonnegative()})),createdAt:c(),status:D(["ready","no-data"]),reason:ce("no-runs-yet").optional()});const c3=D(["claude","openai","gemini","zai","deepinfra"]),RD=b({id:c3,label:c(),defaultModel:c(),configured:F(),keySource:D(["config","env"]).nullable()});b({providers:x(RD).default([]),defaultProvider:c3.nullable()});const MD=D(["aero","user","compaction"]);MD.enum;const u3=128;b({key:c().min(1).max(u3),value:c().min(1)});b({key:c().min(1).max(u3)});const $o=D(["commoncrawl","bing-webmaster"]);$o.enum;const h0=D(["queued","downloading","querying","ready","failed"]);h0.enum;b({id:c(),release:c(),status:h0,phaseDetail:c().nullable().optional(),vertexPath:c().nullable().optional(),edgesPath:c().nullable().optional(),vertexSha256:c().nullable().optional(),edgesSha256:c().nullable().optional(),vertexBytes:h().int().nullable().optional(),edgesBytes:h().int().nullable().optional(),projectsProcessed:h().int().nullable().optional(),domainsDiscovered:h().int().nullable().optional(),downloadStartedAt:c().nullable().optional(),downloadFinishedAt:c().nullable().optional(),queryStartedAt:c().nullable().optional(),queryFinishedAt:c().nullable().optional(),error:c().nullable().optional(),createdAt:c(),updatedAt:c()});const BD=b({linkingDomain:c(),numHosts:h().int(),source:$o}),qD=b({projectId:c(),release:c(),targetDomain:c(),totalLinkingDomains:h().int(),totalHosts:h().int(),top10HostsShare:c(),queriedAt:c(),source:$o,excludedLinkingDomains:h().int().optional(),excludedHosts:h().int().optional()});b({source:$o,summary:qD.nullable(),total:h().int(),rows:x(BD)});b({release:c(),totalLinkingDomains:h().int(),totalHosts:h().int(),top10HostsShare:c(),queriedAt:c(),source:$o});const LD=b({source:$o,connected:F(),hasData:F(),latestRelease:c().nullable(),totalLinkingDomains:h().int(),lastSyncedAt:c().nullable()});b({projectId:c(),targetDomain:c(),sources:x(LD),anyConnected:F(),anyData:F()});b({duckdbInstalled:F(),duckdbVersion:c().nullable().optional(),duckdbSpec:c(),pluginDir:c()});b({installed:F(),version:c(),path:c(),alreadyPresent:F()});b({release:c(),vertexUrl:c(),edgesUrl:c(),vertexBytes:h().int().nullable(),edgesBytes:h().int().nullable(),lastModified:c().nullable()});b({release:c(),syncStatus:h0.nullable(),bytes:h().int(),lastUsedAt:c().nullable()});const g0=D(["positive","caution","negative","neutral"]),Si=b({label:c(),value:c(),delta:c(),tone:g0,description:c(),tooltip:c().optional(),trend:x(h()),progress:h().optional(),providerCoverage:c().optional()}),$D=Si.extend({breakdown:b({projectMentionSnapshots:h().int().nonnegative(),competitorMentionSnapshots:h().int().nonnegative(),perCompetitor:x(b({domain:c(),mentionSnapshots:h().int().nonnegative(),shareOfCompetitiveTotal:h()})),snapshotsWithAnswerText:h().int().nonnegative(),snapshotsTotal:h().int().nonnegative()})}),Rp=b({gained:h().int().nonnegative(),lost:h().int().nonnegative(),tone:g0,hasPreviousRun:F(),gainedQueries:x(c()).optional(),lostQueries:x(c()).optional()}),ID=b({hasPreviousRun:F(),comparable:F(),querySetChanged:F(),previousRunAt:c().nullable(),currentQueryCount:h().int().nonnegative(),previousQueryCount:h().int().nonnegative(),comparableQueryCount:h().int().nonnegative(),addedQueryCount:h().int().nonnegative(),removedQueryCount:h().int().nonnegative(),addedQueries:x(c()),removedQueries:x(c())}),UD=b({id:c(),projectId:c(),runId:c().nullable(),type:D(["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:D(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),recommendation:b({action:c(),target:c().optional(),reason:c()}).optional(),cause:b({cause:c(),competitorDomain:c().optional(),details:c().optional()}).optional(),dismissed:F(),createdAt:c()}),PD=b({id:c(),projectId:c(),runId:c().nullable(),overallCitedRate:h(),overallMentionRate:h(),totalPairs:h().int().nonnegative(),citedPairs:h().int().nonnegative(),mentionedPairs:h().int().nonnegative(),providerBreakdown:Le(c(),b({citedRate:h(),mentionRate:h(),cited:h().int().nonnegative(),mentioned:h().int().nonnegative(),total:h().int().nonnegative()})),createdAt:c(),status:D(["ready","no-data"]),reason:ce("no-runs-yet").optional()});b({project:W9,latestRun:_T,health:PD.nullable(),topInsights:x(UD),queryCounts:b({totalQueries:h().int().nonnegative(),citedQueries:h().int().nonnegative(),notCitedQueries:h().int().nonnegative(),citedRate:h(),mentionedQueries:h().int().nonnegative(),notMentionedQueries:h().int().nonnegative(),mentionRate:h()}),providers:x(b({provider:c(),citedRate:h(),cited:h().int().nonnegative(),total:h().int().nonnegative()})),transitions:b({since:c().nullable(),gained:h().int().nonnegative(),lost:h().int().nonnegative(),emerging:h().int().nonnegative()}),scores:b({mention:Si,visibility:Si,mentionShare:$D,gapQueries:Si,mentionGaps:Si,indexCoverage:Si,competitorPressure:Si,runStatus:Si}),movementSummary:Rp,citationMovement:Rp,mentionMovement:Rp,movementComparison:ID,competitors:x(b({id:c(),domain:c(),citationCount:h().int().nonnegative(),totalQueries:h().int().nonnegative(),pressureLabel:D(["None","Low","Moderate","High"]),citedQueries:x(c())})),providerScores:x(b({provider:c(),model:c().nullable(),score:h(),cited:h().int().nonnegative(),total:h().int().nonnegative(),trend:x(h()).optional()})),attentionItems:x(b({id:c(),tone:g0,title:c(),detail:c(),actionLabel:c(),href:c()})),runHistory:x(b({runId:c(),createdAt:c(),citedCount:h().int().nonnegative(),totalCount:h().int().nonnegative(),citationRate:h(),mentionedCount:h().int().nonnegative(),mentionRate:h(),status:c()})),suggestedQueries:b({rows:x(b({query:c(),impressions:h(),clicks:h(),avgPosition:h(),reason:c()})),totalCandidates:h().int().nonnegative(),skippedAlreadyTracked:h().int().nonnegative()}),dateRangeLabel:c(),contextLabel:c()});D(["snapshot","insight"]);const VD=b({kind:ce("snapshot"),id:c(),runId:c(),query:c(),provider:c(),model:c().nullable(),citationState:Pa,matchedField:D(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:c(),createdAt:c()}),GD=b({kind:ce("insight"),id:c(),runId:c().nullable(),type:D(["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:D(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),matchedField:D(["title","query","recommendation","cause"]),snippet:c(),dismissed:F(),createdAt:c()}),KD=xn("kind",[VD,GD]);b({query:c(),totalHits:h().int().nonnegative(),truncated:F(),hits:x(KD)});const d3=D(["create","expand","refresh","add-schema"]);d3.enum;function EP(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const m3=D(["gsc","competitor-evidence","both"]);m3.enum;const p3=D(["high","medium","low"]);p3.enum;const HD=D(["blog-post","comparison","listicle","how-to","guide","glossary"]);HD.enum;const f3=D(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);f3.enum;const y0=D(["ownable","ceded"]);y0.enum;const QD=b({url:c(),gscImpressions:h().nonnegative(),gscClicks:h().nonnegative(),gscAvgPosition:h().nonnegative().nullable(),organicSessions:h().nonnegative()}),ZD=b({domain:c(),url:c(),title:c(),citationCount:h().int().nonnegative()}),FD=b({demand:h(),competitor:h(),absence:h(),gapSeverity:h()}),YD=b({actionId:c(),state:f3,lastUpdated:c()}),h3=b({targetRef:c(),query:c(),action:d3,ourBestPage:QD.nullable(),winningCompetitor:ZD.nullable(),score:h(),scoreBreakdown:FD,drivers:x(c()),demandSource:m3,actionConfidence:p3,existingAction:YD.nullable(),winnabilityClass:y0,winnability:h().min(0).max(1).nullable()});b({targets:x(h3),contextMetrics:b({totalAiReferralSessions:h().int().nonnegative(),latestRunId:c(),runTimestamp:c()})});const XD=b({targetRef:c(),addressedUrl:c().nullable(),note:c().nullable(),dismissedAt:c()});b({dismissals:x(XD)});b({targetRef:c().min(1),addressedUrl:c().url().optional(),note:c().max(500).optional()});b({targetRef:c(),promptVersion:c(),provider:c(),model:c(),responseText:c(),costMillicents:h().int().nonnegative(),generatedAt:c()});b({provider:c().optional(),model:c().optional(),forceRefresh:F().optional()});const JD=b({targetQuery:c().trim().min(1),winnabilityClass:y0,angle:c().trim().min(1),whyWinnable:c().trim().min(1),schemaHookup:c().trim().min(1),controllableSurfaceRationale:c().trim().min(1)});b({targetRef:c(),promptVersion:c(),provider:c(),model:c(),brief:JD,costMillicents:h().int().nonnegative(),generatedAt:c()});const WD=b({domain:c(),competitorType:Bu,hits:h().int().nonnegative(),updatedAt:c()});b({classifications:x(WD)});const eO=b({uri:c(),title:c(),domain:c(),isOurDomain:F(),isCompetitor:F(),citationCount:h().int().nonnegative(),providers:x(Mt)}),g3=b({query:c(),groundingSources:x(eO)});b({sources:x(g3),latestRunId:c()});const y3=b({query:c(),competitorDomains:x(c()),competitorCount:h().int().nonnegative(),missRate:h().min(0).max(1),lastSeenInRunId:c()});b({gaps:x(y3),latestRunId:c()});const b3=D(["ok","warn","fail","skipped"]);b3.enum;const b0=D(["global","project"]);b0.enum;const v3=D(["auth","config","providers","integrations","database","schedules","agent"]);v3.enum;const tO=b({id:c(),category:v3,scope:b0,title:c(),status:b3,code:c().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:c(),remediation:c().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Le(c(),Gn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:h().int().nonnegative().describe("How long the check took to execute.")});b({scope:b0,project:c().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:c().describe("ISO-8601 timestamp when this doctor run started."),durationMs:h().int().nonnegative(),summary:b({total:h().int().nonnegative(),ok:h().int().nonnegative(),warn:h().int().nonnegative(),fail:h().int().nonnegative(),skipped:h().int().nonnegative()}),checks:x(tO)});const nO=b({provider:c(),citationState:Pa,cited:F(),mentioned:F(),runId:c(),runCreatedAt:c()}),aO=b({queryId:c(),query:c(),providers:x(nO),citedCount:h().int().nonnegative(),mentionedCount:h().int().nonnegative(),totalProviders:h().int().nonnegative()}),iO=b({queryId:c(),query:c(),provider:c(),citingCompetitors:x(c()),runId:c(),runCreatedAt:c()}),sO=b({providersConfigured:h().int().nonnegative(),providersCiting:h().int().nonnegative(),providersMentioning:h().int().nonnegative(),totalQueries:h().int().nonnegative(),queriesCitedAndMentioned:h().int().nonnegative(),queriesCitedOnly:h().int().nonnegative(),queriesMentionedOnly:h().int().nonnegative(),queriesInvisible:h().int().nonnegative(),latestRunId:c().nullable(),latestRunAt:c().nullable()});b({summary:sO,byQuery:x(aO),competitorGaps:x(iO),status:D(["ready","no-data"]),reason:D(["no-runs-yet","no-queries"]).optional()});const TP=[7,14,30,90],DP=30;ct([ce(7),ce(14),ce(30),ce(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const oO=D(["prompt","request-param","browser-geo","ignored"]),rO=b({label:c(),city:c(),region:c(),country:c(),otherConfiguredLabels:x(c())}),lO=b({provider:c(),treatment:oO,description:c()}),cO=b({generatedAt:c(),project:b({id:c(),name:c(),displayName:c(),canonicalDomain:c(),country:c(),language:c()}),location:rO.nullable(),providerLocationHandling:x(lO),periodStart:c().nullable(),periodEnd:c().nullable(),periodDays:h().int().positive()}),uO=b({citationRate:h(),citedQueryCount:h(),totalQueryCount:h(),mentionRate:h(),mentionedQueryCount:h(),trend:D(["up","down","flat","unknown"]),queryCount:h(),competitorCount:h(),providerCount:h(),gsc:b({clicks:h(),impressions:h(),ctr:h(),avgPosition:h(),periodStart:c(),periodEnd:c()}).nullable(),ga:b({sessions:h(),users:h(),periodStart:c(),periodEnd:c()}).nullable(),findings:x(b({title:c(),detail:c(),tone:D(["positive","caution","negative","neutral"])}))}),dO=b({citationState:D(["cited","not-cited","pending"]),answerMentioned:F().nullable(),model:c().nullable()}),mO=b({queries:x(c()),providers:x(c()),matrix:x(x(dO.nullable())),providerRates:x(b({provider:c(),citedCount:h(),mentionedCount:h(),totalCount:h(),citationRate:h(),mentionRate:h()}))}),pO=b({domain:c(),citationCount:h(),totalCount:h(),pressureLabel:D(["High","Moderate","Low","None"]),citedQueries:x(c()),sharePct:h(),theirCitedPages:x(b({url:c(),citedFor:x(c())}))}),fO=b({projectCitationCount:h(),competitors:x(pO)}),hO=b({domain:c(),mentionCount:h(),totalCount:h(),pressureLabel:D(["High","Moderate","Low","None"]),mentionedQueries:x(c()),sharePct:h()}),gO=b({projectMentionCount:h(),totalAnswerSnapshots:h(),competitors:x(hO)}),yO=b({category:c(),label:c(),count:h(),sharePct:h()}),bO=b({categories:x(yO),topDomains:x(b({domain:c(),count:h(),isCompetitor:F()}))}),vO=b({query:c(),clicks:h(),impressions:h(),ctr:h(),avgPosition:h(),category:D(["brand","lead-gen","industry","other"])}),kO=b({periodStart:c(),periodEnd:c(),totalClicks:h(),totalImpressions:h(),ctr:h(),avgPosition:h(),topQueries:x(vO),categoryBreakdown:x(b({category:D(["brand","lead-gen","industry","other"]),clicks:h(),impressions:h(),sharePct:h()})),trend:x(b({date:c(),clicks:h(),impressions:h()})),trackedButNoGsc:x(c()),gscButNotTracked:x(c())}),xO=b({totalSessions:h(),totalUsers:h(),totalOrganicSessions:h(),periodStart:c(),periodEnd:c(),topLandingPages:x(b({page:c(),sessions:h(),users:h(),organicSessions:h()})),channelBreakdown:x(b({channel:c(),sessions:h(),sharePct:h()}))}),wO=b({totalSessions:h(),organicSessions:h(),paidSessions:h(),channels:x(b({channelGroup:c(),sessions:h(),sharePct:h()})),topCampaigns:x(b({source:c(),medium:c(),sessions:h()}))}),SO=b({totalSessions:h(),paidSessions:h(),organicSessions:h(),totalUsers:h().optional(),paidUsers:h().optional(),organicUsers:h().optional(),bySource:x(b({source:c(),sessions:h(),users:h().optional(),paidSessions:h(),organicSessions:h(),sharePct:h()})),trend:x(b({date:c(),sessions:h()})),topLandingPages:x(b({page:c(),sessions:h(),users:h().optional()}))}),jO=b({windowStart:c(),windowEnd:c(),hasData:F(),verifiedCrawlerHits:b({current:h(),prior:h(),deltaPct:h().nullable()}),unverifiedCrawlerHits:b({current:h(),prior:h(),deltaPct:h().nullable()}),aiUserFetchHits:b({current:h(),prior:h(),deltaPct:h().nullable()}),referralArrivals:b({current:h(),prior:h(),deltaPct:h().nullable()}),referralArrivalsByClass:b({paid:b({current:h(),prior:h(),deltaPct:h().nullable()}),organic:b({current:h(),prior:h(),deltaPct:h().nullable()}),unclassified:b({current:h(),prior:h(),deltaPct:h().nullable()})}),referralArrivalsClassSummary:c(),byOperator:x(b({operator:c(),verifiedHits:h(),unverifiedHits:h(),userFetchHits:h(),referralArrivals:h(),deltaPct:h().nullable()})),topCrawledPaths:x(b({path:c(),verifiedHits:h(),distinctOperators:h()})),referralProducts:x(b({product:c(),arrivals:h(),distinctLandingPaths:h()})),dailyTrend:x(b({date:c(),verifiedCrawlerHits:h(),userFetchHits:h(),referralArrivals:h()})),topReferralLandingPaths:x(b({path:c(),arrivals:h(),distinctProducts:h()}))}),NO=b({provider:D(["google","bing"]).nullable(),total:h(),indexed:h(),notIndexed:h(),deindexed:h(),unknown:h(),indexedPct:h()}),AO=b({runId:c(),date:c(),citationRate:h(),citedQueryCount:h(),totalQueryCount:h(),mentionRate:h(),mentionedQueryCount:h(),providerRates:x(b({provider:c(),citationRate:h(),mentionRate:h()}))}),yf=b({id:c(),type:D(["regression","gain","opportunity"]),severity:D(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),recommendation:c().nullable(),createdAt:c(),instanceCount:h()}),_O=b({horizon:D(["immediate","short-term","medium-term"]),title:c(),rationale:c()}),lo=b({current:h(),prior:h(),deltaAbs:h(),deltaPct:h().nullable(),direction:D(["up","down","flat"]),window:h().optional()}),CO=b({provider:c(),current:h(),prior:h(),deltaAbs:h(),direction:D(["up","down","flat"])}),zO=b({enoughHistory:F(),headline:c(),citationRate:lo.nullable(),mentionRate:lo.nullable(),citedQueryCount:lo.nullable(),mentionedQueryCount:lo.nullable(),gscClicksDelta:lo.nullable(),aiReferralsDelta:lo.nullable(),comparisonWindowDays:h().int().positive(),providerMovements:x(CO),wins:x(yf),regressions:x(yf)});D(["agency","client"]);const EO=D(["agency","client","both"]),TO=D(["immediate","short-term","medium-term"]),DO=D(["high","medium","low"]);D(["positive","caution","negative","neutral"]);const OO=D(["content","competitors","provider","search-demand","indexing","location","monitoring"]),v0=b({audience:EO,priority:h(),horizon:TO,category:OO,title:c(),action:c(),why:x(c()),evidence:x(c()),successMetric:c(),confidence:DO,targetRef:c().optional()}),RO=b({headline:c(),overview:c(),actionItems:x(v0),confidenceNotes:x(c())}),MO=b({title:c(),detail:c(),severity:D(["positive","caution","negative","neutral"]),evidence:x(c())}),BO=b({priorities:x(v0),diagnostics:x(MO)});function OP(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function RP(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function MP(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function BP(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function qP(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}b({meta:cO,executiveSummary:uO,citationScorecard:mO,competitorLandscape:fO,mentionLandscape:gO,aiSourceOrigin:bO,gsc:kO.nullable(),ga:xO.nullable(),socialReferrals:wO.nullable(),aiReferrals:SO.nullable(),serverActivity:jO.nullable(),indexingHealth:NO.nullable(),citationsTrend:x(AO),whatsChanged:zO,insights:x(yf),recommendedNextSteps:x(_O),actionPlan:x(v0),clientSummary:RO,agencyDiagnostics:BO,contentOpportunities:x(h3),contentGaps:x(y3),groundingSources:x(g3)});const qO=ct([ce(60),ce(90)]),LO=D(["earliest","middle","prior","latest"]),po=b({clicks:h().int().nonnegative(),impressions:h().int().nonnegative()}),k3=b({name:LO,startDate:c(),endDate:c()}),$O=k3.extend({totals:po}),IO=k3.extend({organicSessions:h().int().nonnegative()}),Mp=b({startDate:c(),endDate:c(),observedDays:h().int().nonnegative()}),Qc=b({verified:h().int().nonnegative(),claimedUnverified:h().int().nonnegative(),unknownAiLike:h().int().nonnegative()}),iv=b({total:h().int().nonnegative(),paid:h().int().nonnegative(),organic:h().int().nonnegative(),unknown:h().int().nonnegative()});b({contractVersion:ce("organic-evidence/v1"),periodDays:qO,asOfDate:c().nullable(),coverage:b({gsc:F(),ga4:F(),server:F(),visibility:F()}),sourceCoverage:b({gsc:Mp.nullable(),ga4:Mp.nullable(),server:Mp.nullable(),visibility:b({completedAt:c(),ageDays:h().nonnegative()}).nullable()}),gsc:b({propertyTotals:po,namedBrand:po,namedNonBrand:po,suppressedOrUnreportedResidual:po,cohorts:x($O)}).nullable(),ga4:b({organicSessions:h().int().nonnegative(),cohorts:x(IO)}).nullable(),gaAiReferrals:b({paidSessions:h().int().nonnegative(),organicSessions:h().int().nonnegative()}).nullable(),server:b({crawlerHits:Qc,userFetchHits:Qc,referralSessions:iv}).nullable(),visibility:b({runId:c(),completedAt:c(),ageDays:h().nonnegative(),answerPairs:h().int().nonnegative(),mentionedPairs:h().int().nonnegative(),citedPairs:h().int().nonnegative()}).nullable(),measurement:p9,pages:x(b({path:c(),gsc:po,ga4OrganicSessions:h().int().nonnegative(),server:b({crawlerHits:Qc,userFetchHits:Qc,referralSessions:iv})})),findings:x(b({tone:D(["positive","caution","neutral"]),title:c(),detail:c()})),limitations:x(b({code:c(),detail:c()}))});const UO=D(["claude","codex"]);UO.enum;const PO=D(["claude","codex","all"]);PO.enum;const x3=b({content:h().int().nonnegative(),sitemap:h().int().nonnegative(),robots:h().int().nonnegative(),asset:h().int().nonnegative(),other:h().int().nonnegative()}),VO=D(["content","sitemap","robots","asset","other"]),k0=D(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);k0.enum;const GO=D(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);GO.enum;const KO=D(["raw-request","aggregate-bucket"]),HO=KO.enum,QO=D(["observed","provider-aggregated","inferred"]),ZO=QO.enum,FO=b({type:c().nullable(),labels:Le(c(),c())}),YO=b({sourceType:k0,evidenceKind:ce(HO["raw-request"]),confidence:ce(ZO.observed),eventId:c().min(1),observedAt:c().min(1),method:c().nullable(),requestUrl:c().nullable(),host:c().nullable(),path:c().min(1),queryString:c().nullable(),status:h().int().nullable(),userAgent:c().nullable(),remoteIp:c().nullable(),referer:c().nullable(),latencyMs:h().nullable(),requestSizeBytes:h().int().nullable(),responseSizeBytes:h().int().nullable(),providerResource:FO,providerLabels:Le(c(),c())});b({events:x(YO),rawEntryCount:h().int().nonnegative(),skippedEntryCount:h().int().nonnegative(),nextPageToken:c().optional(),filter:c()});const w3=D(["connected","paused","error","archived"]),LP=w3.enum,S3=D(["oauth","service-account"]);S3.enum;const XO=D(["verified","claimed_unverified","unknown_ai_like"]),$P=XO.enum;b({gcpProjectId:c().min(1),serviceName:c().nullable().optional(),location:c().nullable().optional(),authMode:S3});b({baseUrl:c().url(),username:c().min(1)});const x0=D(["production","preview"]);x0.enum;b({projectId:c().min(1),teamId:c().min(1),environment:x0});const j3=b({id:c(),projectId:c(),sourceType:k0,displayName:c(),status:w3,lastSyncedAt:c().nullable(),lastCursor:c().nullable(),lastError:c().nullable(),skippedThroughAt:c().nullable(),archivedAt:c().nullable(),config:Le(c(),Gn()),createdAt:c(),updatedAt:c()});b({gcpProjectId:c().min(1),serviceName:c().min(1).optional(),location:c().min(1).optional(),displayName:c().min(1).optional(),keyJson:c().optional()});b({baseUrl:c().url(),username:c().min(1),applicationPassword:c().min(1),displayName:c().min(1).optional()});b({projectId:c().min(1),teamId:c().min(1),token:c().min(1),environment:x0.optional(),displayName:c().min(1).optional()});b({sourceId:c(),runId:c(),syncedAt:c(),pulledEvents:h().int().nonnegative(),selfTrafficExcluded:h().int().nonnegative(),crawlerHits:h().int().nonnegative(),aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),unknownHits:h().int().nonnegative(),crawlerBucketRows:h().int().nonnegative(),aiUserFetchBucketRows:h().int().nonnegative(),aiReferralBucketRows:h().int().nonnegative(),sampleRows:h().int().nonnegative(),windowStart:c(),windowEnd:c()});b({days:h().int().positive().optional()});b({advanceToNow:ce(!0)});b({sourceId:c(),runId:c(),status:Oi,windowStart:c(),windowEnd:c(),daysRequested:h().int().positive(),daysApplied:h().int().positive()});const JO=b({crawlerHits:h().int().nonnegative(),crawlerContentHits:h().int().nonnegative(),crawlerInfraHits:h().int().nonnegative(),crawlerSegments:x3,aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),sampleCount:h().int().nonnegative()});b({sources:x(j3)});const WO=j3.extend({totals24h:JO,latestRun:b({runId:c(),status:Oi,startedAt:c().nullable(),finishedAt:c().nullable(),error:c().nullable()}).nullable()});b({sources:x(WO)});const eR=D(["crawler","ai-user-fetch","ai-referral"]),w0=eR.enum,N3=D(["hour","day"]);N3.enum;const tR=b({bucket:c(),crawlerHits:h().int().nonnegative(),aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative()}),nR=b({kind:ce(w0.crawler),sourceId:c(),tsHour:c(),botId:c(),operator:c(),verificationStatus:c(),pathNormalized:c(),pathClass:VO,status:h().int(),hits:h().int().nonnegative()}),aR=b({kind:ce(w0["ai-user-fetch"]),sourceId:c(),tsHour:c(),botId:c(),operator:c(),verificationStatus:c(),pathNormalized:c(),status:h().int(),hits:h().int().nonnegative()}),iR=b({kind:ce(w0["ai-referral"]),sourceId:c(),tsHour:c(),product:c(),operator:c(),sourceDomain:c(),evidenceType:c(),landingPathNormalized:c(),status:h().int(),hits:h().int().nonnegative(),paidHits:h().int().nonnegative(),organicHits:h().int().nonnegative(),unknownHits:h().int().nonnegative()}),sR=xn("kind",[nR,aR,iR]);b({windowStart:c(),windowEnd:c(),series:b({granularity:N3,points:x(tR)}),totals:b({crawlerHits:h().int().nonnegative(),crawlerContentHits:h().int().nonnegative(),crawlerInfraHits:h().int().nonnegative(),crawlerSegments:x3,aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),aiReferralPaidHits:h().int().nonnegative(),aiReferralOrganicHits:h().int().nonnegative(),aiReferralUnknownHits:h().int().nonnegative()}),eventRows:b({total:h().int().nonnegative(),returned:h().int().nonnegative(),truncated:F()}),events:x(sR)});const A3=D(["queued","running","completed","partial","failed"]),IP=A3.enum,_3=D(["queued","running","completed","failed"]),UP=_3.enum;b({queries:x(c().trim().min(1).max(4e3)).min(1).max(50),provider:c().trim().min(1).optional(),model:c().trim().min(1).max(200).optional(),location:un.nullable().optional(),idempotencyKey:c().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:mo.custom,path:["provider"],message:"provider is required when model is supplied"})});const C3=b({id:c(),projectId:c(),status:A3,provider:c(),requestedModel:c().nullable(),resolvedModel:c(),location:un.nullable(),totalQueries:h().int(),completedQueries:h().int(),failedQueries:h().int(),error:c().nullable(),startedAt:c().nullable(),finishedAt:c().nullable(),createdAt:c()}),oR=b({id:c(),position:h().int(),query:c(),status:_3,requestedModel:c().nullable(),resolvedModel:c(),servedModel:c().nullable(),answerText:c().nullable(),groundingSources:x(Mu),citedDomains:x(c()),searchQueries:x(c()),namedCompetitors:x(c()).default([]),citedCompetitorDomains:x(c()).default([]),answerMentioned:F().nullable(),citationState:Pa.nullable(),error:c().nullable(),startedAt:c().nullable(),finishedAt:c().nullable(),createdAt:c()});C3.extend({queries:x(oR)});b({runs:x(C3)});b({apiKey:c().min(1)});b({id:c(),name:c(),status:c(),currencyCode:c().nullable(),timezone:c().nullable(),url:c().nullable(),reviewStatus:c().nullable(),integrityReviewStatus:c().nullable(),integrityDecision:c().nullable()});b({q:c().trim().min(1).max(200),limit:h().int().min(1).max(100).default(20)});const rR=b({id:c(),type:c(),canonicalName:c(),countryCode:c(),name:c(),regionCode:c().nullable()});b({count:h().int().nonnegative(),query:c(),results:x(rR)});const lR=b({id:c(),clientType:c().optional(),name:c().optional(),pixelId:c().optional()});b({pixels:x(lR)});const cR=b({id:c(),name:c().optional()}),uR=b({id:c(),name:c().optional(),eventType:c().optional(),customEventName:c().nullable().optional(),attributionWindowDays:h().int().positive().optional(),adAccountId:c().optional(),sourceIds:x(c()).optional(),sources:x(cR).optional(),archived:F().optional(),version:h().int().nonnegative().optional()});b({eventSettings:x(uR)});b({connected:F(),adAccountId:c().nullable().optional(),displayName:c().nullable().optional(),currencyCode:c().nullable().optional(),timezone:c().nullable().optional(),status:c().nullable().optional(),reviewStatus:c().nullable().optional(),integrityReviewStatus:c().nullable().optional(),integrityDecision:c().nullable().optional(),lastSyncedAt:c().nullable().optional(),conversionTrackingConfigured:F().optional()});b({disconnected:F()});b({runId:c(),status:c()});const dR=b({type:c().nullable().optional(),title:c().nullable().optional(),body:c().nullable().optional(),targetUrl:c().nullable().optional(),fileId:c().nullable().optional()}),vl=D(["impressions","clicks"]),mR=vl.enum,kl=D(["impression","click"]);kl.enum;const pR=b({id:c(),adGroupId:c(),name:c(),status:c(),reviewStatus:c().nullable().optional(),creative:dR.nullable().optional(),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()}),fR=b({id:c(),campaignId:c(),name:c(),description:c().nullable().optional(),status:c(),billingEventType:ct([kl,xe()]).optional(),maxBidMicros:h().int().nullable().optional(),contextHints:x(c()).default([]),ads:x(pR).default([]),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()}),hR=b({id:c(),name:c(),description:c().nullable().optional(),status:c(),startTime:h().int().nullable().optional(),endTime:h().int().nullable().optional(),biddingType:ct([vl,xe()]).optional(),dailySpendLimitMicros:h().int().nullable().optional(),lifetimeSpendLimitMicros:h().int().nullable().optional(),conversionEventSettingIds:x(c()).default([]),locationIds:x(c()).optional(),adGroups:x(fR).default([]),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()});b({campaigns:x(hR)});const z3=D(["campaign","ad_group"]);z3.enum;const gR=b({level:z3,entityId:c(),date:c(),impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int(),ctr:h().nullable(),cpcMicros:h().int().nullable(),inProgress:F()});b({rows:x(gR),currencyCode:c().nullable().optional()});const E3=b({from:c().nullable(),to:c().nullable(),inProgressDate:c().nullable()}),T3=b({impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int(),ctr:h().nullable(),cpcMicros:h().int().nullable()});b({connected:F(),displayName:c().nullable().optional(),currencyCode:c().nullable().optional(),lastSyncedAt:c().nullable().optional(),campaignCount:h().int(),adGroupCount:h().int(),adCount:h().int(),window:E3,totals:T3});const D3=D(["unavailable","partial","complete"]);D3.enum;const O3=D(["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"]);O3.enum;const R3=D(["unavailable","reported"]);R3.enum;const yR={storedSnapshot:"stored_ads_snapshot"},M3=D(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);M3.enum;const bR=b({id:c(),name:c(),status:c(),reviewStatus:c().nullable()}),vR=b({id:c(),name:c(),status:c(),billingEventType:ct([kl,xe()]),maxBidMicros:h().int().nullable(),contextHints:x(c()),ads:x(bR)}),kR=b({id:c(),name:c(),status:c(),biddingType:ct([vl,xe()]),dailySpendLimitMicros:h().int().nullable(),lifetimeSpendLimitMicros:h().int().nullable(),conversionEventSettingIds:x(c()),adGroups:x(vR)});b({snapshot:b({status:D3,issue:ct([O3,xe()]),lastSyncedAt:c().nullable(),campaignCount:h().int().nonnegative(),adGroupCount:h().int().nonnegative(),adCount:h().int().nonnegative(),sourceSync:b({runId:c(),status:Oi}).nullable()}),historicalCampaignRollups:b({status:R3,window:E3,totals:T3.nullable()}),storedConfiguration:b({basis:ce(yR.storedSnapshot),connection:b({status:c().nullable(),reviewStatus:c().nullable(),integrityReviewStatus:c().nullable(),integrityDecision:c().nullable(),conversionTrackingConfigured:F()}).nullable(),campaigns:x(kR)}),assessment:b({state:M3})});const Ga=c().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),ht=c().min(1).max(200),vs=c().min(3).max(1e3).refine(e=>e.trim().length>0),Eo=h().int().min(946684800).max(4102444800),To=h().int().positive().max(Number.MAX_SAFE_INTEGER),S0=c().regex(/^[a-f0-9]{64}$/),B3=x(ht).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),q3=c().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),L3=D(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_create","ad_update","ad_pause"]);L3.enum;const $3=D(["pending","reconciling","succeeded","failed","unknown"]),wo=$3.enum,I3=D(["known_entity","create_fingerprint","manual_only"]);I3.enum;const U3=D([wo.pending,wo.unknown,wo.reconciling]);U3.enum;const P3=D(["active","paused","archived"]);P3.enum;const V3=D(["file","campaign","ad_group","ad"]);V3.enum;const G3=D(["campaign","ad_group","ad"]);G3.enum;const j0=b({id:ht,expectedUpdatedAt:h().int().nonnegative()}).strict(),xR=j0,xu=100,wR=j0.extend({ads:x(xR).min(1).max(xu-1)}).strict(),SR=j0.extend({adGroups:x(wR).min(1).max(xu-1)}).strict();function jR(e,n){return e<n?-1:e>n?1:0}function sv(e,n,i){for(let s=1;s<e.length;s+=1)if(jR(e[s-1].id,e[s].id)>=0){i.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const K3=b({campaign:SR}).strict().superRefine((e,n)=>{1+e.campaign.adGroups.reduce((r,u)=>r+1+u.ads.length,0)>xu&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${xu} entities`}),sv(e.campaign.adGroups,["campaign","adGroups"],n);const s=new Set;for(let r=0;r<e.campaign.adGroups.length;r+=1){const u=e.campaign.adGroups[r];sv(u.ads,["campaign","adGroups",r,"ads"],n);for(let d=0;d<u.ads.length;d+=1){const g=u.ads[d];s.has(g.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",r,"ads",d,"id"],message:"An ad may appear only once in an activation manifest"}),s.add(g.id)}}}),H3=S0,NR=D(["approved","executing","consumed","revoked","expired","unknown"]),Ia=NR.enum,AR=D(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Ri=AR.enum,_R=b({name:vs.optional(),description:c().max(4e3).nullable().optional(),status:P3.optional(),startTime:Eo.nullable().optional(),endTime:Eo.nullable().optional(),lifetimeSpendLimitMicros:To.min(1e6).optional(),locationIds:x(ht).max(100).optional(),biddingType:vl.optional(),conversionEventSettingIds:B3.optional(),campaignId:ht.optional(),contextHints:x(c().min(1).max(1e3)).max(100).optional(),maxBidMicros:To.max(1e8).optional(),billingEventType:kl.optional(),adGroupId:ht.optional(),creativeFingerprint:S0.optional()}).strict();b({operationKey:Ga,imageUrl:q3});b({operationKey:Ga,name:vs,description:c().max(4e3).optional(),startTime:Eo.optional(),endTime:Eo.optional(),lifetimeSpendLimitMicros:To.min(1e6),locationIds:x(ht).min(1).max(100),biddingType:vl.optional(),conversionEventSettingIds:B3.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"}),e.biddingType===mR.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&n.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});b({operationKey:Ga,campaignId:ht,name:vs,description:c().max(4e3).optional(),contextHints:x(c().min(1).max(1e3)).min(1).max(100),maxBidMicros:To.max(1e8),billingEventType:kl.optional()});const Q3=b({title:c().min(3).max(50),body:c().min(1).max(100),targetUrl:q3,fileId:ht});b({operationKey:Ga,adGroupId:ht,name:vs,creative:Q3});function N0(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}b({operationKey:Ga,expectedUpdatedAt:h().int().nonnegative(),name:vs.optional(),description:c().max(4e3).nullable().optional(),startTime:Eo.nullable().optional(),endTime:Eo.nullable().optional(),lifetimeSpendLimitMicros:To.min(1e6).optional(),locationIds:x(ht).min(1).max(100).optional()}).refine(N0,{message:"At least one campaign field must be updated"});b({operationKey:Ga,expectedUpdatedAt:h().int().nonnegative(),name:vs.optional(),description:c().max(4e3).nullable().optional(),contextHints:x(c().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:To.max(1e8).optional()}).refine(N0,{message:"At least one ad group field must be updated"});b({operationKey:Ga,expectedUpdatedAt:h().int().nonnegative(),name:vs.optional(),creative:Q3.optional()}).refine(N0,{message:"At least one ad field must be updated"});b({operationKey:Ga});const $u=b({id:c(),adAccountId:c().nullable(),operationKey:c(),kind:L3,state:$3,entityType:ct([V3,xe()]),entityId:c().nullable(),upstreamUpdatedAt:h().int().nullable(),errorCode:c().nullable(),errorMessage:c().nullable(),reconcileStrategy:ct([I3,xe()]),reconcileParentId:ht.nullable(),reconcileFingerprint:S0.nullable(),reconcileFields:_R.nullable(),reconcileAttempts:h().int().nonnegative(),lastReconciledAt:c().nullable(),createdAt:c(),updatedAt:c()});b({operation:$u,replayed:F()});const lt=ok({offset:!0}),Io={id:ht,projectId:ht,adAccountId:ht,manifestHash:H3,manifest:K3,executorApiKeyId:ht,approverApiKeyId:ht,expiresAt:lt,approvedAt:lt,createdAt:lt,updatedAt:lt,revocationRequestedAt:lt.nullable()},CR=b({...Io,state:ce(Ia.approved),operationId:xe(),executionStartedAt:xe(),consumedAt:xe(),revokedAt:xe(),expiredAt:xe()}).strict(),zR=b({...Io,state:ce(Ia.executing),operationId:ht,executionStartedAt:lt,consumedAt:xe(),revokedAt:xe(),expiredAt:xe()}).strict(),ER=b({...Io,state:ce(Ia.consumed),operationId:ht,executionStartedAt:lt,consumedAt:lt,revokedAt:xe(),expiredAt:xe()}).strict(),TR=b({...Io,state:ce(Ia.revoked),operationId:xe(),executionStartedAt:xe(),consumedAt:xe(),revokedAt:lt,expiredAt:xe()}).strict(),DR=b({...Io,state:ce(Ia.expired),operationId:xe(),executionStartedAt:xe(),consumedAt:xe(),revokedAt:xe(),expiredAt:lt}).strict(),OR=b({...Io,state:ce(Ia.unknown),operationId:ht,executionStartedAt:lt,consumedAt:xe(),revokedAt:xe(),expiredAt:xe()}).strict(),Z3=xn("state",[CR,zR,ER,TR,DR,OR]).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!==Ia.executing&&e.state!==Ia.unknown&&e.state!==Ia.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Mi={id:ht,operationId:ht,ordinal:h().int().nonnegative(),entityType:G3,entityId:ht,expectedUpdatedAt:h().int().nonnegative(),createdAt:lt,updatedAt:lt},xl={errorCode:xe(),errorMessage:xe()},A0={errorCode:c().min(1).max(100),errorMessage:c().min(1).max(500),remediation:c().min(1).max(500)},RR=b({...Mi,...xl,state:ce(Ri.pending),providerUpdatedAt:xe(),remediation:xe(),startedAt:xe(),finishedAt:xe()}).strict(),MR=b({...Mi,...xl,state:ce(Ri.executing),providerUpdatedAt:xe(),remediation:xe(),startedAt:lt,finishedAt:xe()}).strict(),BR=b({...Mi,...xl,state:ce(Ri.active),providerUpdatedAt:h().int().nonnegative(),remediation:xe(),startedAt:lt,finishedAt:lt}).strict(),qR=b({...Mi,...A0,state:ce(Ri.failed),providerUpdatedAt:ct([h().int().nonnegative(),xe()]),startedAt:lt,finishedAt:lt}).strict(),LR=b({...Mi,...xl,state:ce(Ri.rollback_executing),providerUpdatedAt:h().int().nonnegative(),remediation:c().min(1).max(500),startedAt:lt,finishedAt:xe()}).strict(),$R=b({...Mi,...xl,state:ce(Ri.rolled_back),providerUpdatedAt:h().int().nonnegative(),remediation:c().min(1).max(500),startedAt:lt,finishedAt:lt}).strict(),IR=b({...Mi,...A0,state:ce(Ri.rollback_failed),providerUpdatedAt:h().int().nonnegative(),startedAt:lt,finishedAt:lt}).strict(),UR=b({...Mi,...A0,state:ce(Ri.unknown),providerUpdatedAt:ct([h().int().nonnegative(),xe()]),startedAt:lt,finishedAt:lt}).strict(),PR=xn("state",[RR,MR,BR,qR,LR,$R,IR,UR]),bf={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},VR=D([bf.exact,bf.refreshSemanticallyUnchanged]);b({manifest:K3,executorApiKeyId:ht,expiresAt:lt,versionPolicy:VR.default(bf.exact)}).strict();b({grant:Z3}).strict();b({}).strict();b({operationKey:Ga,grantId:ht,manifestHash:H3}).strict();b({grant:Z3,operation:$u,steps:x(PR)}).strict();const GR=[wo.pending,wo.unknown,wo.reconciling];function KR(e){if(e===void 0||e==="")return GR;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}b({state:n9(KR,x(U3).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:pk().int().min(1).max(200).default(100),cursor:c().min(1).max(1e3).optional()});b({operations:x($u),count:h().int().nonnegative(),nextCursor:c().nullable()});b({}).strict();b({operation:$u,resolved:F()});b({campaignId:c().min(1).max(200).optional(),lookbackDays:pk().int().min(1).max(30).default(7)});const F3=D(["campaign","ad_group","ad"]);F3.enum;const Y3=D(["both","live-only","stored-only"]);Y3.enum;const HR=ce("live-provider-read"),QR=b({date:c().nullable(),startTime:h().nullable(),endTime:h().nullable(),impressions:h().nullable(),clicks:h().nullable(),spend:h().nullable(),conversions:h().nullable(),ctr:h().nullable(),cpc:h().nullable(),cpm:h().nullable()}),ov=b({impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int()}),ZR=b({date:c(),live:ov.nullable(),stored:ov.nullable(),drifted:F()}),FR=b({field:c(),live:c().nullable(),stored:c().nullable()}),YR=b({name:c().nullable(),status:c(),reviewStatus:c().nullable(),mode:c().nullable(),updatedAt:h().nullable()}),XR=b({name:c(),status:c(),reviewStatus:c().nullable(),upstreamUpdatedAt:h().nullable(),syncedAt:c()}),JR=b({entityType:F3,id:c(),parentId:c().nullable(),presence:Y3,live:YR.nullable(),stored:XR.nullable(),fieldDeltas:x(FR),liveMetrics:x(QR).nullable(),metricDeltas:x(ZR).nullable(),drifted:F()}),WR=b({surface:c(),entityId:c().nullable(),upstreamStatus:h().int().nullable()});b({basis:HR,fetchedAt:c(),adAccountId:c(),storedSnapshotSyncedAt:c().nullable(),metricsWindow:b({lookbackDays:h().int().positive()}),bounds:b({maxCampaigns:h().int().positive(),maxAdGroupsPerCampaign:h().int().positive(),maxAdsPerAdGroup:h().int().positive(),maxReaderCalls:h().int().positive(),readerCalls:h().int().nonnegative(),maxPagesPerReaderCall:h().int().positive(),maxUpstreamHttpRequests:h().int().positive(),truncated:F()}),entities:x(JR),drift:b({entitiesCompared:h().int().nonnegative(),driftedEntities:h().int().nonnegative(),statusDrifted:h().int().nonnegative(),metricsDrifted:h().int().nonnegative()}),errors:x(WR)});const X3=D(["admin","viewer"]),eM=/^[a-z\d][\w.-]{0,63}$/i,tM=c().regex(eM,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),rv=12,nM=c().min(rv,`A password must be at least ${rv} characters.`),J3=b({id:c(),name:c(),role:X3,createdAt:c(),lastLoginAt:c().nullable()});b({users:x(J3)});b({name:tM,password:nM,role:X3});b({name:c().min(1),password:c().min(1)});b({authRequired:F(),user:J3.pick({name:!0,role:!0}).nullable()});const At=1,Bp=D(["system","project","queries","competitors","run"]),qp=D(["0","1","2-3","4-5","6-10","11+"]);function fa(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 lv=D(["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","unknown"]),Zc=b({eventId:c().uuid(),flowVersion:ce(At),onboardingSessionId:c().uuid()});xn("event",[Zc.extend({event:ce("onboarding.started"),step:Bp,resumed:F()}).strict(),Zc.extend({event:ce("onboarding.step_completed"),step:Bp,method:D(["existing","inline","manual","generated","skipped","automatic"]),countBucket:qp.optional()}).strict(),Zc.extend({event:ce("onboarding.blocked"),step:Bp,action:D(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:lv}).strict(),Zc.extend({event:ce("run.requested"),origin:ce("dashboard_setup"),result:D(["queued","rejected"]),providerCountBucket:qp,queryCountBucket:qp,reasonCode:lv.optional()}).strict()]);b({accepted:F()});var aM=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(aM||{});const PP={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},VP={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},iM=r0;function sM(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,s]of Object.entries(e.providers)){const r=`[${i}] ${s.message}`;s.raw!==void 0?n.push(`${r}
|
|
52
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const d of e.seen.entries()){const g=d[1];if(n===d[0]){u(d);continue}if(e.external){const v=e.external.registry.get(d[0])?.id;if(n!==d[0]&&v){u(d);continue}}if(e.metadataRegistry.get(d[0])?.id){u(d);continue}if(g.cycle){u(d);continue}if(g.count>1&&e.reused==="ref"){u(d);continue}}}function ik(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const s=d=>{const g=e.seen.get(d);if(g.ref===null)return;const y=g.def??g.schema,v={...y},w=g.ref;if(g.ref=null,w){s(w);const j=e.seen.get(w),_=j.schema;if(_.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(y.allOf=y.allOf??[],y.allOf.push(_)):Object.assign(y,_),Object.assign(y,v),d._zod.parent===w)for(const A in y)A==="$ref"||A==="allOf"||A in v||delete y[A];if(_.$ref&&j.def)for(const A in y)A==="$ref"||A==="allOf"||A in j.def&&JSON.stringify(y[A])===JSON.stringify(j.def[A])&&delete y[A]}const S=d._zod.parent;if(S&&S!==w){s(S);const j=e.seen.get(S);if(j?.schema.$ref&&(y.$ref=j.schema.$ref,j.def))for(const _ in y)_==="$ref"||_==="allOf"||_ in j.def&&JSON.stringify(y[_])===JSON.stringify(j.def[_])&&delete y[_]}e.override({zodSchema:d,jsonSchema:y,path:g.path??[]})};for(const d of[...e.seen.entries()].reverse())s(d[0]);const r={};if(e.target==="draft-2020-12"?r.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?r.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?r.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const d=e.external.registry.get(n)?.id;if(!d)throw new Error("Schema is missing an `id` property");r.$id=e.external.uri(d)}Object.assign(r,i.def??i.schema);const u=e.external?.defs??{};for(const d of e.seen.entries()){const g=d[1];g.def&&g.defId&&(u[g.defId]=g.def)}e.external||Object.keys(u).length>0&&(e.target==="draft-2020-12"?r.$defs=u:r.definitions=u);try{const d=JSON.parse(JSON.stringify(r));return Object.defineProperty(d,"~standard",{value:{...n["~standard"],jsonSchema:{input:pu(n,"input",e.processors),output:pu(n,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function nn(e,n){const i=n??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const s=e._zod.def;if(s.type==="transform")return!0;if(s.type==="array")return nn(s.element,i);if(s.type==="set")return nn(s.valueType,i);if(s.type==="lazy")return nn(s.getter(),i);if(s.type==="promise"||s.type==="optional"||s.type==="nonoptional"||s.type==="nullable"||s.type==="readonly"||s.type==="default"||s.type==="prefault")return nn(s.innerType,i);if(s.type==="intersection")return nn(s.left,i)||nn(s.right,i);if(s.type==="record"||s.type==="map")return nn(s.keyType,i)||nn(s.valueType,i);if(s.type==="pipe")return nn(s.in,i)||nn(s.out,i);if(s.type==="object"){for(const r in s.shape)if(nn(s.shape[r],i))return!0;return!1}if(s.type==="union"){for(const r of s.options)if(nn(r,i))return!0;return!1}if(s.type==="tuple"){for(const r of s.items)if(nn(r,i))return!0;return!!(s.rest&&nn(s.rest,i))}return!1}const v_=(e,n={})=>i=>{const s=nk({...i,processors:n});return Rt(e,s),ak(s,e),ik(s,e)},pu=(e,n,i={})=>s=>{const{libraryOptions:r,target:u}=s??{},d=nk({...r??{},target:u,io:n,processors:i});return Rt(e,d),ak(d,e),ik(d,e)},k_={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},x_=(e,n,i,s)=>{const r=i;r.type="string";const{minimum:u,maximum:d,format:g,patterns:y,contentEncoding:v}=e._zod.bag;if(typeof u=="number"&&(r.minLength=u),typeof d=="number"&&(r.maxLength=d),g&&(r.format=k_[g]??g,r.format===""&&delete r.format,g==="time"&&delete r.format),v&&(r.contentEncoding=v),y&&y.size>0){const w=[...y];w.length===1?r.pattern=w[0].source:w.length>1&&(r.allOf=[...w.map(S=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:S.source}))])}},w_=(e,n,i,s)=>{const r=i,{minimum:u,maximum:d,format:g,multipleOf:y,exclusiveMaximum:v,exclusiveMinimum:w}=e._zod.bag;typeof g=="string"&&g.includes("int")?r.type="integer":r.type="number",typeof w=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(r.minimum=w,r.exclusiveMinimum=!0):r.exclusiveMinimum=w),typeof u=="number"&&(r.minimum=u,typeof w=="number"&&n.target!=="draft-04"&&(w>=u?delete r.minimum:delete r.exclusiveMinimum)),typeof v=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(r.maximum=v,r.exclusiveMaximum=!0):r.exclusiveMaximum=v),typeof d=="number"&&(r.maximum=d,typeof v=="number"&&n.target!=="draft-04"&&(v<=d?delete r.maximum:delete r.exclusiveMaximum)),typeof y=="number"&&(r.multipleOf=y)},S_=(e,n,i,s)=>{i.type="boolean"},j_=(e,n,i,s)=>{n.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},N_=(e,n,i,s)=>{i.not={}},A_=(e,n,i,s)=>{},__=(e,n,i,s)=>{const r=e._zod.def,u=M2(r.entries);u.every(d=>typeof d=="number")&&(i.type="number"),u.every(d=>typeof d=="string")&&(i.type="string"),i.enum=u},C_=(e,n,i,s)=>{const r=e._zod.def,u=[];for(const d of r.values)if(d===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof d=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");u.push(Number(d))}else u.push(d);if(u.length!==0)if(u.length===1){const d=u[0];i.type=d===null?"null":typeof d,n.target==="draft-04"||n.target==="openapi-3.0"?i.enum=[d]:i.const=d}else u.every(d=>typeof d=="number")&&(i.type="number"),u.every(d=>typeof d=="string")&&(i.type="string"),u.every(d=>typeof d=="boolean")&&(i.type="boolean"),u.every(d=>d===null)&&(i.type="null"),i.enum=u},z_=(e,n,i,s)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},E_=(e,n,i,s)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},T_=(e,n,i,s)=>{const r=i,u=e._zod.def,{minimum:d,maximum:g}=e._zod.bag;typeof d=="number"&&(r.minItems=d),typeof g=="number"&&(r.maxItems=g),r.type="array",r.items=Rt(u.element,n,{...s,path:[...s.path,"items"]})},D_=(e,n,i,s)=>{const r=i,u=e._zod.def;r.type="object",r.properties={};const d=u.shape;for(const v in d)r.properties[v]=Rt(d[v],n,{...s,path:[...s.path,"properties",v]});const g=new Set(Object.keys(d)),y=new Set([...g].filter(v=>{const w=u.shape[v]._zod;return n.io==="input"?w.optin===void 0:w.optout===void 0}));y.size>0&&(r.required=Array.from(y)),u.catchall?._zod.def.type==="never"?r.additionalProperties=!1:u.catchall?u.catchall&&(r.additionalProperties=Rt(u.catchall,n,{...s,path:[...s.path,"additionalProperties"]})):n.io==="output"&&(r.additionalProperties=!1)},O_=(e,n,i,s)=>{const r=e._zod.def,u=r.inclusive===!1,d=r.options.map((g,y)=>Rt(g,n,{...s,path:[...s.path,u?"oneOf":"anyOf",y]}));u?i.oneOf=d:i.anyOf=d},R_=(e,n,i,s)=>{const r=e._zod.def,u=Rt(r.left,n,{...s,path:[...s.path,"allOf",0]}),d=Rt(r.right,n,{...s,path:[...s.path,"allOf",1]}),g=v=>"allOf"in v&&Object.keys(v).length===1,y=[...g(u)?u.allOf:[u],...g(d)?d.allOf:[d]];i.allOf=y},M_=(e,n,i,s)=>{const r=i,u=e._zod.def;r.type="object";const d=u.keyType,y=d._zod.bag?.patterns;if(u.mode==="loose"&&y&&y.size>0){const w=Rt(u.valueType,n,{...s,path:[...s.path,"patternProperties","*"]});r.patternProperties={};for(const S of y)r.patternProperties[S.source]=w}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(r.propertyNames=Rt(u.keyType,n,{...s,path:[...s.path,"propertyNames"]})),r.additionalProperties=Rt(u.valueType,n,{...s,path:[...s.path,"additionalProperties"]});const v=d._zod.values;if(v){const w=[...v].filter(S=>typeof S=="string"||typeof S=="number");w.length>0&&(r.required=w)}},B_=(e,n,i,s)=>{const r=e._zod.def,u=Rt(r.innerType,n,s),d=n.seen.get(e);n.target==="openapi-3.0"?(d.ref=r.innerType,i.nullable=!0):i.anyOf=[u,{type:"null"}]},q_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType},L_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType,i.default=JSON.parse(JSON.stringify(r.defaultValue))},$_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType,n.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(r.defaultValue)))},I_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType;let d;try{d=r.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=d},U_=(e,n,i,s)=>{const r=e._zod.def,u=n.io==="input"?r.in._zod.def.type==="transform"?r.out:r.in:r.out;Rt(u,n,s);const d=n.seen.get(e);d.ref=u},P_=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType,i.readOnly=!0},sk=(e,n,i,s)=>{const r=e._zod.def;Rt(r.innerType,n,s);const u=n.seen.get(e);u.ref=r.innerType},V_=J("ZodISODateTime",(e,n)=>{I8.init(e,n),vt.init(e,n)});function ok(e){return Q7(V_,e)}const G_=J("ZodISODate",(e,n)=>{U8.init(e,n),vt.init(e,n)});function rk(e){return Z7(G_,e)}const K_=J("ZodISOTime",(e,n)=>{P8.init(e,n),vt.init(e,n)});function H_(e){return F7(K_,e)}const Q_=J("ZodISODuration",(e,n)=>{V8.init(e,n),vt.init(e,n)});function Z_(e){return Y7(Q_,e)}const F_=(e,n)=>{$2.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>DA(e,i)},flatten:{value:i=>TA(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,tf,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,tf,2)}},isEmpty:{get(){return e.issues.length===0}}})},Hn=J("ZodError",F_,{Parent:Error}),Y_=Pf(Hn),X_=Vf(Hn),J_=zu(Hn),W_=Eu(Hn),eC=MA(Hn),tC=BA(Hn),nC=qA(Hn),aC=LA(Hn),iC=$A(Hn),sC=IA(Hn),oC=UA(Hn),rC=PA(Hn),bt=J("ZodType",(e,n)=>(gt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:pu(e,"input"),output:pu(e,"output")}}),e.toJSONSchema=v_(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(Ei(n,{checks:[...n.checks??[],...i.map(s=>typeof s=="function"?{_zod:{check:s,def:{check:"custom"},onattach:[]}}:s)]}),{parent:!0}),e.with=e.check,e.clone=(i,s)=>Ti(e,i,s),e.brand=()=>e,e.register=((i,s)=>(i.add(e,s),e)),e.parse=(i,s)=>Y_(e,i,s,{callee:e.parse}),e.safeParse=(i,s)=>J_(e,i,s),e.parseAsync=async(i,s)=>X_(e,i,s,{callee:e.parseAsync}),e.safeParseAsync=async(i,s)=>W_(e,i,s),e.spa=e.safeParseAsync,e.encode=(i,s)=>eC(e,i,s),e.decode=(i,s)=>tC(e,i,s),e.encodeAsync=async(i,s)=>nC(e,i,s),e.decodeAsync=async(i,s)=>aC(e,i,s),e.safeEncode=(i,s)=>iC(e,i,s),e.safeDecode=(i,s)=>sC(e,i,s),e.safeEncodeAsync=async(i,s)=>oC(e,i,s),e.safeDecodeAsync=async(i,s)=>rC(e,i,s),e.refine=(i,s)=>e.check(e9(i,s)),e.superRefine=i=>e.check(t9(i)),e.overwrite=i=>e.check(qo(i)),e.optional=()=>kb(e),e.exactOptional=()=>UC(e),e.nullable=()=>xb(e),e.nullish=()=>kb(xb(e)),e.nonoptional=i=>QC(e,i),e.array=()=>x(e),e.or=i=>ct([e,i]),e.and=i=>BC(e,i),e.transform=i=>sf(e,uk(i)),e.default=i=>GC(e,i),e.prefault=i=>HC(e,i),e.catch=i=>FC(e,i),e.pipe=i=>sf(e,i),e.readonly=()=>JC(e),e.describe=i=>{const s=e.clone();return Wr.add(s,{description:i}),s},Object.defineProperty(e,"description",{get(){return Wr.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return Wr.get(e);const s=e.clone();return Wr.add(s,i[0]),s},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),lk=J("_ZodString",(e,n)=>{Gf.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(s,r,u)=>x_(e,s,r);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...s)=>e.check(i_(...s)),e.includes=(...s)=>e.check(r_(...s)),e.startsWith=(...s)=>e.check(l_(...s)),e.endsWith=(...s)=>e.check(c_(...s)),e.min=(...s)=>e.check(mu(...s)),e.max=(...s)=>e.check(ek(...s)),e.length=(...s)=>e.check(tk(...s)),e.nonempty=(...s)=>e.check(mu(1,...s)),e.lowercase=s=>e.check(s_(s)),e.uppercase=s=>e.check(o_(s)),e.trim=()=>e.check(d_()),e.normalize=(...s)=>e.check(u_(...s)),e.toLowerCase=()=>e.check(m_()),e.toUpperCase=()=>e.check(p_()),e.slugify=()=>e.check(f_())}),lC=J("ZodString",(e,n)=>{Gf.init(e,n),lk.init(e,n),e.email=i=>e.check(A7(cC,i)),e.url=i=>e.check(T7(uC,i)),e.jwt=i=>e.check(H7(NC,i)),e.emoji=i=>e.check(D7(dC,i)),e.guid=i=>e.check(fb(bb,i)),e.uuid=i=>e.check(_7(Kc,i)),e.uuidv4=i=>e.check(C7(Kc,i)),e.uuidv6=i=>e.check(z7(Kc,i)),e.uuidv7=i=>e.check(E7(Kc,i)),e.nanoid=i=>e.check(O7(mC,i)),e.guid=i=>e.check(fb(bb,i)),e.cuid=i=>e.check(R7(pC,i)),e.cuid2=i=>e.check(M7(fC,i)),e.ulid=i=>e.check(B7(hC,i)),e.base64=i=>e.check(V7(wC,i)),e.base64url=i=>e.check(G7(SC,i)),e.xid=i=>e.check(q7(gC,i)),e.ksuid=i=>e.check(L7(yC,i)),e.ipv4=i=>e.check($7(bC,i)),e.ipv6=i=>e.check(I7(vC,i)),e.cidrv4=i=>e.check(U7(kC,i)),e.cidrv6=i=>e.check(P7(xC,i)),e.e164=i=>e.check(K7(jC,i)),e.datetime=i=>e.check(ok(i)),e.date=i=>e.check(rk(i)),e.time=i=>e.check(H_(i)),e.duration=i=>e.check(Z_(i))});function c(e){return N7(lC,e)}const vt=J("ZodStringFormat",(e,n)=>{yt.init(e,n),lk.init(e,n)}),cC=J("ZodEmail",(e,n)=>{T8.init(e,n),vt.init(e,n)}),bb=J("ZodGUID",(e,n)=>{z8.init(e,n),vt.init(e,n)}),Kc=J("ZodUUID",(e,n)=>{E8.init(e,n),vt.init(e,n)}),uC=J("ZodURL",(e,n)=>{D8.init(e,n),vt.init(e,n)}),dC=J("ZodEmoji",(e,n)=>{O8.init(e,n),vt.init(e,n)}),mC=J("ZodNanoID",(e,n)=>{R8.init(e,n),vt.init(e,n)}),pC=J("ZodCUID",(e,n)=>{M8.init(e,n),vt.init(e,n)}),fC=J("ZodCUID2",(e,n)=>{B8.init(e,n),vt.init(e,n)}),hC=J("ZodULID",(e,n)=>{q8.init(e,n),vt.init(e,n)}),gC=J("ZodXID",(e,n)=>{L8.init(e,n),vt.init(e,n)}),yC=J("ZodKSUID",(e,n)=>{$8.init(e,n),vt.init(e,n)}),bC=J("ZodIPv4",(e,n)=>{G8.init(e,n),vt.init(e,n)}),vC=J("ZodIPv6",(e,n)=>{K8.init(e,n),vt.init(e,n)}),kC=J("ZodCIDRv4",(e,n)=>{H8.init(e,n),vt.init(e,n)}),xC=J("ZodCIDRv6",(e,n)=>{Q8.init(e,n),vt.init(e,n)}),wC=J("ZodBase64",(e,n)=>{Z8.init(e,n),vt.init(e,n)}),SC=J("ZodBase64URL",(e,n)=>{Y8.init(e,n),vt.init(e,n)}),jC=J("ZodE164",(e,n)=>{X8.init(e,n),vt.init(e,n)}),NC=J("ZodJWT",(e,n)=>{W8.init(e,n),vt.init(e,n)}),Kf=J("ZodNumber",(e,n)=>{F2.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(s,r,u)=>w_(e,s,r),e.gt=(s,r)=>e.check(gb(s,r)),e.gte=(s,r)=>e.check(Sp(s,r)),e.min=(s,r)=>e.check(Sp(s,r)),e.lt=(s,r)=>e.check(hb(s,r)),e.lte=(s,r)=>e.check(wp(s,r)),e.max=(s,r)=>e.check(wp(s,r)),e.int=s=>e.check(vb(s)),e.safe=s=>e.check(vb(s)),e.positive=s=>e.check(gb(0,s)),e.nonnegative=s=>e.check(Sp(0,s)),e.negative=s=>e.check(hb(0,s)),e.nonpositive=s=>e.check(wp(0,s)),e.multipleOf=(s,r)=>e.check(yb(s,r)),e.step=(s,r)=>e.check(yb(s,r)),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 h(e){return X7(Kf,e)}const AC=J("ZodNumberFormat",(e,n)=>{e7.init(e,n),Kf.init(e,n)});function vb(e){return W7(AC,e)}const _C=J("ZodBoolean",(e,n)=>{t7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>S_(e,i,s)});function F(e){return e_(_C,e)}const CC=J("ZodNull",(e,n)=>{n7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>j_(e,i,s)});function xe(e){return t_(CC,e)}const zC=J("ZodUnknown",(e,n)=>{a7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>A_()});function Gn(){return n_(zC)}const EC=J("ZodNever",(e,n)=>{i7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>N_(e,i,s)});function TC(e){return a_(EC,e)}const DC=J("ZodArray",(e,n)=>{s7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>T_(e,i,s,r),e.element=n.element,e.min=(i,s)=>e.check(mu(i,s)),e.nonempty=i=>e.check(mu(1,i)),e.max=(i,s)=>e.check(ek(i,s)),e.length=(i,s)=>e.check(tk(i,s)),e.unwrap=()=>e.element});function x(e,n){return h_(DC,e,n)}const OC=J("ZodObject",(e,n)=>{r7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>D_(e,i,s,r),Je(e,"shape",()=>n.shape),e.keyof=()=>D(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Gn()}),e.loose=()=>e.clone({...e._zod.def,catchall:Gn()}),e.strict=()=>e.clone({...e._zod.def,catchall:TC()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>AA(e,i),e.safeExtend=i=>_A(e,i),e.merge=i=>CA(e,i),e.pick=i=>jA(e,i),e.omit=i=>NA(e,i),e.partial=(...i)=>zA(dk,e,i[0]),e.required=(...i)=>EA(mk,e,i[0])});function b(e,n){const i={type:"object",shape:e??{},...ke(n)};return new OC(i)}const ck=J("ZodUnion",(e,n)=>{J2.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>O_(e,i,s,r),e.options=n.options});function ct(e,n){return new ck({type:"union",options:e,...ke(n)})}const RC=J("ZodDiscriminatedUnion",(e,n)=>{ck.init(e,n),l7.init(e,n)});function xn(e,n,i){return new RC({type:"union",options:n,discriminator:e,...ke(i)})}const MC=J("ZodIntersection",(e,n)=>{c7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>R_(e,i,s,r)});function BC(e,n){return new MC({type:"intersection",left:e,right:n})}const qC=J("ZodRecord",(e,n)=>{u7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>M_(e,i,s,r),e.keyType=n.keyType,e.valueType=n.valueType});function Le(e,n,i){return new qC({type:"record",keyType:e,valueType:n,...ke(i)})}const af=J("ZodEnum",(e,n)=>{d7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(s,r,u)=>__(e,s,r),e.enum=n.entries,e.options=Object.values(n.entries);const i=new Set(Object.keys(n.entries));e.extract=(s,r)=>{const u={};for(const d of s)if(i.has(d))u[d]=n.entries[d];else throw new Error(`Key ${d} not found in enum`);return new af({...n,checks:[],...ke(r),entries:u})},e.exclude=(s,r)=>{const u={...n.entries};for(const d of s)if(i.has(d))delete u[d];else throw new Error(`Key ${d} not found in enum`);return new af({...n,checks:[],...ke(r),entries:u})}});function D(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(s=>[s,s])):e;return new af({type:"enum",entries:i,...ke(n)})}const LC=J("ZodLiteral",(e,n)=>{m7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>C_(e,i,s),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 ce(e,n){return new LC({type:"literal",values:Array.isArray(e)?e:[e],...ke(n)})}const $C=J("ZodTransform",(e,n)=>{p7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>E_(e,i),e._zod.parse=(i,s)=>{if(s.direction==="backward")throw new O2(e.constructor.name);i.addIssue=u=>{if(typeof u=="string")i.issues.push(ul(u,i.value,n));else{const d=u;d.fatal&&(d.continue=!1),d.code??(d.code="custom"),d.input??(d.input=i.value),d.inst??(d.inst=e),i.issues.push(ul(d))}};const r=n.transform(i.value,i);return r instanceof Promise?r.then(u=>(i.value=u,i)):(i.value=r,i)}});function uk(e){return new $C({type:"transform",transform:e})}const dk=J("ZodOptional",(e,n)=>{W2.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>sk(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function kb(e){return new dk({type:"optional",innerType:e})}const IC=J("ZodExactOptional",(e,n)=>{f7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>sk(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function UC(e){return new IC({type:"optional",innerType:e})}const PC=J("ZodNullable",(e,n)=>{h7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>B_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function xb(e){return new PC({type:"nullable",innerType:e})}const VC=J("ZodDefault",(e,n)=>{g7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>L_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function GC(e,n){return new VC({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():q2(n)}})}const KC=J("ZodPrefault",(e,n)=>{y7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>$_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function HC(e,n){return new KC({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():q2(n)}})}const mk=J("ZodNonOptional",(e,n)=>{b7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>q_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function QC(e,n){return new mk({type:"nonoptional",innerType:e,...ke(n)})}const ZC=J("ZodCatch",(e,n)=>{v7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>I_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function FC(e,n){return new ZC({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const YC=J("ZodPipe",(e,n)=>{k7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>U_(e,i,s,r),e.in=n.in,e.out=n.out});function sf(e,n){return new YC({type:"pipe",in:e,out:n})}const XC=J("ZodReadonly",(e,n)=>{x7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>P_(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function JC(e){return new XC({type:"readonly",innerType:e})}const WC=J("ZodCustom",(e,n)=>{w7.init(e,n),bt.init(e,n),e._zod.processJSONSchema=(i,s,r)=>z_(e,i)});function e9(e,n={}){return g_(WC,e,n)}function t9(e){return y_(e)}function n9(e,n){return sf(uk(e),n)}const mo={custom:"custom"};function pk(e){return J7(Kf,e)}const fk=b({id:c(),name:c(),keyPrefix:c(),scopes:x(c()),projectId:c().nullable(),readOnly:F(),createdAt:c(),lastUsedAt:c().nullable(),revokedAt:c().nullable()});b({keys:x(fk)});b({name:c().min(1).max(100),scopes:x(c()).min(1).optional(),projectId:c().optional()});fk.extend({key:c()});const a9=b({maxConcurrency:h().int().positive(),maxRequestsPerMinute:h().int().positive(),maxRequestsPerDay:h().int().positive()}),Mt=c().min(1),Hf=Le(c(),c().trim().min(1));c().min(1);const un=b({label:c().min(1),city:c().min(1),region:c().min(1),country:c().length(2),timezone:c().optional()}),Qf=D(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);b({id:c(),projectId:c(),channel:ce("webhook"),url:c().url(),urlDisplay:c(),urlHost:c(),events:x(Qf),enabled:F().default(!0),source:c().optional(),webhookSecret:c().optional(),createdAt:c(),updatedAt:c()});b({channel:ce("webhook"),url:c().url(),events:x(Qf).min(1),source:c().optional()});function jp(e,n=!1){const i=new Set,s=[];for(const r of e){const u=n?r.toLowerCase():r;i.has(u)||(i.add(u),s.push(r))}return s}function wb(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 s=i.hostname.trim().toLowerCase().replace(/^www\./,"");return!s||s.includes("/")||s.includes("?")||s.includes("#")?null:s}catch{return null}}const i9=c().trim().min(1).refine(e=>wb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>wb(e)??e),s9=c().trim().min(1),o9=c().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),Zf=b({marketingHosts:x(i9).overwrite(e=>jp(e,!0)),brandTerms:x(s9).overwrite(e=>jp(e,!0)),leadEventNames:x(o9).overwrite(e=>jp(e))});function r9(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const Np=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),hk=()=>r9(),Sb=D(["never-synced","ready","error"]),l9=D(["landing-page","channel"]),c9=D(["30d","60d","90d"]),u9=D(["marketing","all"]),tl=rk(),gl=b({label:D(["earliest","middle","previous","latest"]),startDate:tl,endDate:tl}),Ap=gl.extend({sessions:h().int().nonnegative()}),jb=gl.extend({eventCount:h().int().nonnegative()}),Nb=gl.extend({clicks:h().int().nonnegative(),impressions:h().int().nonnegative()}),d9=gl.extend({propertyClicks:h().int().nonnegative(),propertyImpressions:h().int().nonnegative(),reportedQueryClicks:h().int().nonnegative(),reportedQueryImpressions:h().int().nonnegative(),brandedClicks:h().int().nonnegative(),brandedImpressions:h().int().nonnegative(),nonBrandedClicks:h().int().nonnegative(),nonBrandedImpressions:h().int().nonnegative(),unreportedClicks:h().int().nonnegative(),unreportedImpressions:h().int().nonnegative()}),m9=gl.extend({sessions:h().int().nonnegative(),engagementRate:h().min(0).max(1).nullable(),dailyTotalUsers:h().int().nonnegative().nullable(),dailyNewUsers:h().int().nonnegative().nullable(),metricsAvailable:F(),daysInPeriod:h().int().nonnegative(),daysWithEngagementRate:h().int().nonnegative(),daysWithUserSplit:h().int().nonnegative()}),p9=b({window:c9,bucketDays:ce(30),filters:b({hostScope:u9,marketingHosts:x(c()),pathPrefix:c().nullable(),brandTerms:x(c()),queryMixScope:ce("property")}),acquisition:b({status:Sb,error:c().nullable(),syncedAt:c().datetime().nullable(),periods:x(Ap),channels:x(b({channelGroup:c(),periods:x(Ap)})),pages:x(b({hostName:c(),landingPage:c(),periods:x(Ap)}))}),leads:b({status:Sb,error:c().nullable(),syncedAt:c().datetime().nullable(),attributionScope:l9.nullable(),hostAndPathFiltersApplied:F(),periods:x(jb),channels:x(b({channelGroup:c(),periods:x(jb)}))}),engagement:b({status:D(["ready","unavailable"]),availableFromDate:tl.nullable(),latestDate:tl.nullable(),periods:x(m9)}),searchDemand:b({status:D(["ready","unavailable"]),periods:x(d9),queries:x(b({query:c(),classification:D(["branded","non-branded"]),periods:x(Nb)})),pages:x(b({hostName:c(),landingPage:c(),periods:x(Nb)})),latestDate:tl.nullable()})}),f9=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,h9=/[\0-\x1F\x7F-\x9F]/,g9=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,y9=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var b9=class{src_Any=f9.source;src_Cc=h9.source;src_Z=y9.source;src_P=g9.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 s=this.escapeRE(e),r=this.escapeRE(n),u=`(?:(?!${this.src_ZCc}|${s}|${r}).)`;let d=`${s}${u}{0,1000}${r}`;for(let g=2;g<=i;g++)d=`${s}(?:${u}|${d}){0,1000}${r}`;return d}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")}},_p={validate:(e,n,i)=>{const s=i.re.get_http_validator();s.lastIndex=n;const r=s.exec(e);return r?r[0].length:0},normalize:(e,n)=>n.normalize(e)},v9={"http:":_p,"https:":_p,"ftp:":_p,"//":{validate:function(e,n,i){const s=i.re.get_relative_proto_validator();s.lastIndex=n;const r=s.exec(e);return r?n>=3&&e[n-3]===":"||n>=3&&e[n-3]==="/"?0:r[0].length:0},normalize:(e,n)=>n.normalize(e)},"mailto:":{validate:function(e,n,i){const s=i.re.get_mailto_validator();s.lastIndex=n;const r=s.exec(e);return r?r[0].length:0},normalize:(e,n)=>n.normalize(e)}},k9="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",x9="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function w9(){const e=x9.split("|");return k9.split("|").forEach(n=>{const i=n.indexOf(":"),s=n.slice(0,i);for(const r of n.slice(i+1))e.push(s+r)}),e}var S9={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:w9(),urlAuth:!1,maxLength:1e4},Ab=class{schema;index;lastIndex;raw;text;url;constructor(e,n,i,s){const r=e.slice(i,s);this.schema=n.toLowerCase(),this.index=i,this.lastIndex=s,this.raw=r,this.text=r,this.url=r}},j9=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...i}=e;this.__opts__={...S9,...i},this.__schemas__={...v9},this.re=n||new b9,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:(s,r)=>r.normalize(s),...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 s=this.re.get_fuzzy_mail_host_search(),r=this.re.get_mail_name_validator();for(s.lastIndex=0;(n=s.exec(e))!==null;){const u=e.slice(Math.max(0,n.index-65),n.index);if(r.test(u))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 s,r,u,d,g,y,v=!1,w=!1,S=!1,j=0;if(!e.length)return null;for(i.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(s=this.re.get_fuzzy_link_search(),s.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(r=this.re.get_fuzzy_mail_host_search(),r.lastIndex=0,u=this.re.get_mail_name_validator());;){const _=Math.max(j-1,0);if(r&&u&&!S&&(!g||g.index<j))for(r.lastIndex<_&&(r.lastIndex=_);;){const L=r.exec(e);if(!L){S=!0,g=void 0;break}const G=u.exec(e.slice(Math.max(0,L.index-65),L.index));if(G){if(g={schema:"mailto:",index:L.index-G[1].length,lastIndex:L.index+L[0].length},g.index>=j)break;r.lastIndex<_&&(r.lastIndex=_)}}if(s&&!w&&(!d||d.index<j))for(s.lastIndex<_&&(s.lastIndex=_);;){const L=s.exec(e);if(!L){w=!0,d=void 0;break}if(d={schema:"",index:L.index+L[1].length,lastIndex:L.index+L[0].length},d.index>=j)break;s.lastIndex<_&&(s.lastIndex=_)}let E=g;(!E||d&&(d.index<E.index||d.index===E.index&&d.lastIndex>E.lastIndex))&&(E=d);let A;if(!v)for(;;){if(!y){i.lastIndex<_&&(i.lastIndex=_);const P=i.exec(e);if(!P){v=!0;break}y={schema:P[2],index:P.index+P[1].length,lastIndex:P.index+P[0].length}}if(y.index<j){y=void 0;continue}if(E&&y.index>E.index)break;const L=y;y=void 0;const G=this.testSchemaAt(e,L.schema,L.lastIndex);if(G){A={schema:L.schema,index:L.index,lastIndex:L.lastIndex+G};break}}let C=A;if((!C||g&&(g.index<C.index||g.index===C.index&&g.lastIndex>C.lastIndex))&&(C=g),(!C||d&&(d.index<C.index||d.index===C.index&&d.lastIndex>C.lastIndex))&&(C=d),!C)break;C===g?g=void 0:C===d&&(d=void 0);const O=new Ab(e,C.schema,C.index,C.lastIndex);O.schema?this.__schemas__[O.schema].normalize(O,this):this.normalize(O),n.push(O),j=C.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 s=new Ab(e,n[2],n.index+n[1].length,n.index+n[0].length+i);return this.__schemas__[s.schema].normalize(s,this),s}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 N9=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 A9(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function _9(e,n){const i=e.length-n.length-2,s=e.lastIndexOf(".",i);return s===-1?e:e.slice(s+1)}function C9(e,n,i){if(i.validHosts!==null){const r=i.validHosts;for(const u of r)if(A9(n,u))return u}let s=0;if(n.startsWith("."))for(;s<n.length&&n[s]===".";)s+=1;return e.length===n.length-s?null:_9(n,e)}function z9(e,n){return e.slice(0,-n.length-1)}const Cp=/[\t\n\r]/g;let of=!1;function _b(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Cb(e,n,i){const s=i-n,r=e.charCodeAt(n)|32;if(s===2)return r===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(s===3){const u=e.charCodeAt(n+1)|32,d=e.charCodeAt(n+2)|32;return r===119&&u===115&&d===115||r===102&&u===116&&d===112?1:0}else if(s===4){const u=e.charCodeAt(n+1)|32,d=e.charCodeAt(n+2)|32,g=e.charCodeAt(n+3)|32;return r===104&&u===116&&d===116&&g===112?1:r===102&&u===105&&d===108&&g===101?2:0}else if(s===5)return r===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 nl(e,n,i=!1){let s=0,r=e.length,u=!1,d=!1;if(of=!1,!n){if(e.startsWith("data:"))return null;for(;s<e.length&&e.charCodeAt(s)<=32;)s+=1;for(;r>s+1&&e.charCodeAt(r-1)<=32;)r-=1;if(e.charCodeAt(s)===47&&e.charCodeAt(s+1)===47)s+=2;else{const C=e.indexOf(":/",s);if(C!==-1){const O=Cb(e,s,C);if(O===1)for(d=!0,s=C+2;e.charCodeAt(s)===47||e.charCodeAt(s)===92;)s+=1;else if(O===2){d=!0,s=C+1;let L=0;for(;(e.charCodeAt(s)===47||e.charCodeAt(s)===92)&&L<2;)s+=1,L+=1;if(L<2)return null}else{for(let L=s;L<C;L+=1){const G=e.charCodeAt(L)|32;if(!(G>=97&&G<=122||G>=48&&G<=57||G===46||G===45||G===43)){const P=e.charCodeAt(L);return P===9||P===10||P===13?nl(e.replace(Cp,""),n,i):null}}if(e.charCodeAt(C+2)===47)s=C+3;else return null}}else if(e.charCodeAt(s)!==91){let O=-1;for(let L=s;L<r;L+=1){const G=e.charCodeAt(L);if(G===9||G===10||G===13)return nl(e.replace(Cp,""),n,i);if(G===58){O=L;break}if(G===47||G===92||G===63||G===35)break}if(O!==-1){let L=!1;for(let G=O+1;G<r;G+=1){const P=e.charCodeAt(G);if(P===47||P===92||P===63||P===35)break;if(P===64){L=!0;break}}if(!L){let G=!0,P=O+1;for(;P<r;P+=1){const H=e.charCodeAt(P);if(H===47||H===92||H===63||H===35)break;if(H<48||H>57){G=!1;break}}if(P===O+1&&(G=!1),!G){const H=Cb(e,s,O);if(H===0){let ae=!1;for(let R=O+1;R<r;R+=1){const $=e.charCodeAt(R);if($===47||$===92||$===63||$===35)break;if($===58){ae=!0;break}}if(!ae)return null}else if(d=!0,s=O+1,H===2){let ae=0;for(;(e.charCodeAt(s)===47||e.charCodeAt(s)===92)&&ae<2;)s+=1,ae+=1;if(ae<2)return null}else for(;e.charCodeAt(s)===47||e.charCodeAt(s)===92;)s+=1}}}}}let y=-1,v=-1,w=-1,S=-1,j=!1,_=i,E=s-1,A=-1;if(i&&s<r){const C=e.charCodeAt(s);(!(_b(C)||C===46||C===95)||C===45)&&(_=!1)}for(let C=s;C<r;C+=1){const O=e.charCodeAt(C);if(O<64)if(O===47||O===35||O===63){r=C;break}else O===58?(S===-1&&(S=C),w=C):O===9||O===10||O===13?j=!0:i&&(O===46?((C-E>64||A===46||A===45)&&(_=!1),E=C):(O<48||O>57)&&(O!==45||A===46)&&(_=!1));else if(d&&O===92){r=C;break}else O===64?(y=C,S=-1):O===93?v=C:O>=65&&O<=90?u=!0:i&&!_b(O)&&(_=!1);i&&(A=O)}if(j)return nl(e.replace(Cp,""),n,i);if(y!==-1&&y>=s&&y<r&&(s=y+1),e.charCodeAt(s)===91)return v!==-1?e.slice(s+1,v).toLowerCase():null;if(w!==-1&&w>s&&w<r&&S===w&&(r=w),s>=r)return null;i&&_&&y===-1&&w===-1&&v===-1&&e.charCodeAt(r-1)!==46&&r-s<=255&&r-E-1<=63&&A!==45&&(of=!0)}for(;r>s+1&&e.charCodeAt(r-1)===46;)r-=1;const g=s!==0||r!==e.length?e.slice(s,r):e;return u?g.toLowerCase():g}function E9(e){if(e.length<7||e.length>15)return!1;let n=0;for(let i=0;i<e.length;i+=1){const s=e.charCodeAt(i);if(s===46)n+=1;else if(s<48||s>57)return!1}return n===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function T9(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 s=!1;for(;n<i;n+=1){const r=e.charCodeAt(n);if(r===58)s=!0;else if(!(r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70))return!1}return s}function D9(e){return T9(e)||E9(e)}const O9=["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 R9(e){for(const n of O9)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function zb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Eb(e){if(e.length>255||e.length===0||!zb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,i=-1;const s=e.length;for(let r=0;r<s;r+=1){const u=e.charCodeAt(r);if(u===46){if(r-n>64||i===46||i===45)return!1;n=r}else if(!(zb(u)||u===45||u===95)||u===45&&i===46)return!1;i=u}return s-n-1<=63&&i!==45}function gk({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:i=!0,detectSpecialUse:s=!1,extractHostname:r=!0,mixedInputs:u=!0,validHosts:d=null,validateHostname:g=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:i,detectSpecialUse:s,extractHostname:r,mixedInputs:u,validHosts:d,validateHostname:g}}const M9=gk({});function B9(e){return e===void 0?M9:gk(e)}function q9(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function L9(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function yk(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 bk(e,n,i,s,r){const u=B9(s);if(typeof e!="string")return r;let d=!1;return u.extractHostname?u.mixedInputs?(d=Eb(e),r.hostname=nl(e,d,u.validateHostname)):r.hostname=nl(e,!1,u.validateHostname):r.hostname=e,u.detectIp&&r.hostname!==null&&(r.isIp=D9(r.hostname),r.isIp)?r:u.validateHostname&&u.extractHostname&&r.hostname!==null&&!(d&&r.hostname===e)&&!of&&!Eb(r.hostname)?(r.hostname=null,r):(n===0||r.hostname===null||(n===5&&u.detectSpecialUse&&(r.isSpecialUse=R9(r.hostname)),i(r.hostname,u,r),n===2||r.publicSuffix===null)||(r.domain=C9(r.publicSuffix,r.hostname,u),n===3||r.domain===null)||(r.subdomain=q9(r.hostname,r.domain),n===4)||(r.domainWithoutSuffix=z9(r.domain,r.publicSuffix)),r)}function $9(e,n,i){if(!n.allowPrivateDomains&&e.length>3){const s=e.length-1,r=e.charCodeAt(s),u=e.charCodeAt(s-1),d=e.charCodeAt(s-2),g=e.charCodeAt(s-3);if(r===109&&u===111&&d===99&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(r===103&&u===114&&d===111&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(r===117&&u===100&&d===101&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(r===118&&u===111&&d===103&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(r===116&&u===101&&d===110&&g===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(r===101&&u===100&&d===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}const cs=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]),fu=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]),hu=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]),Tb=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]),rf="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",I9=621,U9=625,vk=cs.length,kk=hu.length,xk=new Uint32Array(kk),iu=new Uint32Array(kk),lf=new Int32Array(vk).fill(-1);for(let e=0,n=0;e<vk;e+=1)for(let i=fu[e];i<fu[e+1];i+=1){xk[i]=n;const s=n+hu[i];let r=5381;for(let u=s-1;u>=n;u-=1)r=r*33^rf.charCodeAt(u);iu[i]=r>>>0,hu[i]===1&&rf.charCodeAt(n)===42&&(lf[e]=i),n=s}let La=-1,cf=0,uf=0;function Db(e,n,i,s){if(hu[e]!==s)return!1;const r=xk[e];for(let u=0;u<s;u+=1)if(rf.charCodeAt(r+u)!==n.charCodeAt(i+u))return!1;return!0}function Ob(e,n,i,s,r){let u=fu[e],d=fu[e+1];for(;u<d;){const g=u+d>>>1,y=iu[g];if(y<n)u=g+1;else if(y>n)d=g;else{for(let v=g;v>=u&&iu[v]===n;v-=1)if(Db(v,i,s,r))return v;for(let v=g+1;v<d&&iu[v]===n;v+=1)if(Db(v,i,s,r))return v;return-1}}return-1}function Rb(e,n,i){let s=n,r=e.length,u=5381;La=-1;for(let g=e.length-1;g>=0;g-=1){const y=e.charCodeAt(g);if(y===46){const v=g+1;let w=Ob(s,u>>>0,e,v,r-v);if(w===-1&&(w=lf[s]),w===-1)return La!==-1;s=Tb[w],(cs[s]&i)!==0&&(La=s,cf=v,uf=r),r=g,u=5381}else u=u*33^y}let d=Ob(s,u>>>0,e,0,r);return d===-1&&(d=lf[s]),d!==-1&&(s=Tb[d],(cs[s]&i)!==0&&(La=s,cf=0,uf=r)),La!==-1}function wk(e,n,i){if($9(e,n,i))return;const s=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(Rb(e,U9,s)){i.isIcann=(cs[La]&1)!==0,i.isPrivate=(cs[La]&2)!==0,i.publicSuffix=e.slice(uf+1);return}if(Rb(e,I9,s)){i.isIcann=(cs[La]&1)!==0,i.isPrivate=(cs[La]&2)!==0,i.publicSuffix=e.slice(cf);return}i.isIcann=!1,i.isPrivate=!1;const r=e.lastIndexOf(".");i.publicSuffix=r===-1?e:e.slice(r+1)}const gu=L9();function P9(e,n){return yk(gu),bk(e,0,wk,n,gu).hostname}function V9(e,n){return yk(gu),bk(e,5,wk,n,gu).domainWithoutSuffix}const G9={allowPrivateDomains:!0};new j9({fuzzyLink:!0,fuzzyEmail:!1}).tlds(N9);function Ff(e){if(e==null)return null;const n=e.trim();if(!n)return null;const i=P9(n);return i?i.replace(/^www\./i,"").toLowerCase():null}function K9(e){return e==null||e.trim()===""?"":V9(e,G9)?.toLowerCase()??""}const H9=new Intl.Segmenter("en",{granularity:"word"}),Q9=/[\p{L}\p{N}]+/gu;function Z9(e){return e.normalize("NFKC").toLocaleLowerCase("en")}function F9(e){const n=[];for(const i of H9.segment(e))if(i.isWordLike)for(const s of i.segment.match(Q9)??[])n.push(s);return n}function Y9(e){return F9(Z9(e))}function ms(e){return Y9(e).join("")}const Sk=D(["cli","api","config-file"]);function X9(e){const n=new Set,i=new Set;for(const s of e){if(n.has(s.label)){i.add(s.label);continue}n.add(s.label)}return[...i]}function J9(e,n){return n?e.some(i=>i.label===n):!0}b({displayName:c().min(1),canonicalDomain:c().min(1),ownedDomains:x(c().min(1)).optional(),aliases:x(c()).optional(),country:c().length(2),language:c().min(2),tags:x(c()).optional(),labels:Le(c(),c()).optional(),providers:x(Mt).optional(),providerModels:Hf.optional(),locations:x(un).optional(),defaultLocation:c().nullable().optional(),measurement:Zf.optional(),autoExtractBacklinks:F().optional(),configSource:Sk.optional()});const W9=b({id:c(),name:c(),displayName:c().optional(),canonicalDomain:c(),ownedDomains:x(c()).default([]),aliases:x(c()).default([]),country:c().length(2),language:c().min(2),tags:x(c()).default([]),labels:Le(c(),c()).default({}),providers:x(c()).default([]),providerModels:Hf.default({}),locations:x(un).default([]),defaultLocation:c().nullable().optional(),measurement:Zf.default(hk),autoExtractBacklinks:F().default(!1),configSource:Sk.default("cli"),configRevision:h().int().positive().default(1),createdAt:c().optional(),updatedAt:c().optional()});b({id:c(),query:c(),createdAt:c()});b({id:c(),keyword:c(),createdAt:c()});b({queries:x(c().trim().min(1)).min(1)});b({keywords:x(c().trim().min(1)).min(1)});b({provider:Mt,count:h().int().min(1).max(20).optional()});b({id:c(),domain:c(),createdAt:c()});b({competitors:x(c().trim().min(1)).min(1)});function df(e){return Ff(e)??e.trim().toLowerCase().replace(/^www\./,"")}function ez(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,s=[];for(const r of n){const u=r.trim();if(!u)continue;const d=df(u);i.has(d)||(i.add(d),s.push(u))}return s}const tz=b({name:c().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:Le(c(),c()).optional().default({})}),nz=b({preset:c().optional(),cron:c().optional(),timezone:c().optional().default("UTC"),providers:x(Mt).optional().default([]),enabled:F().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),az=b({channel:ce("webhook"),url:c().url(),events:x(Qf).min(1)}),iz=b({gsc:b({propertyUrl:c()}).optional(),syncSchedule:b({preset:c().optional(),cron:c().optional()}).optional()}).optional(),Mb=x(c().min(1)),sz=b({displayName:c().min(1),canonicalDomain:c().min(1),ownedDomains:x(c().min(1)).optional().default([]),aliases:x(c().min(1)).optional().default([]),country:c().length(2),language:c().min(2),queries:Mb.optional(),keywords:Mb.optional(),competitors:x(c().min(1)).optional().default([]),providers:x(Mt).optional().default([]),providerModels:Hf.optional().default({}),locations:x(un).optional().default([]),defaultLocation:c().optional(),measurement:Zf.optional().default(hk),schedule:nz,notifications:x(az).optional().default([]),google:iz,autoExtractBacklinks:F().optional().default(!1)}).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=X9(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),J9(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});b({apiVersion:ce("canonry/v1"),kind:ce("Project"),metadata:tz,spec:sz});const oz=2,rz=c().regex(/^[a-f0-9]{64}$/),Du=c().trim().min(1).max(256),Bb=D(["sensitive","insensitive"]),We=c().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),lz=c().trim().min(1).refine(e=>Ff(e)!==null,"A competitor domain must be a valid hostname"),cz=xn("kind",[b({kind:ce("exact"),url:c().min(1),pathCase:Bb}).strict(),b({kind:ce("prefix"),host:c().min(1),pathPrefix:c().min(1),pathCase:Bb}).strict(),b({kind:ce("host"),host:c().min(1)}).strict()]),uz=b({canonicalHost:c().min(1),ownedHosts:x(c().min(1)),names:x(c().min(1))}).strict(),dz=b({projectBrand:uz}).strict(),mz=b({stableKey:We,label:c().trim().min(1),aliases:x(c().min(1)),urlMatchers:x(cz),mentionNotApplicable:F(),discoveryIdentity:c().min(1).nullable()}).strict(),jk=b({stableKey:We,label:c().trim().min(1),domain:lz,aliases:x(c().min(1))}).strict(),pz=b({stableKey:We,label:c().trim().min(1),targetKeys:x(We),competitors:x(jk)}).strict(),fz=D(["manual","query-set","template","discovery"]),hz=b({source:fz,sourceId:c().min(1).nullable(),capturedAt:c().datetime()}).strict(),gz=b({queryId:Du,queryText:c().min(1),provenance:hz}).strict(),yz=b({providers:x(Mt).min(1),models:Le(Mt,c().min(1)),location:un.nullable()}).strict(),bz=b({stableKey:c().min(1),queryId:Du,queryText:c().min(1),context:yz,expectedSnapshots:h().int().nonnegative()}).strict(),Nk=D(["branded","non-brand"]),vz=b({targetKey:We,queryId:Du,queryClass:Nk,executionNodeKey:c().min(1)}).strict(),kz=b({executionNodeKey:c().min(1),targetKey:We,queryId:Du}).strict(),Yf=b({schemaVersion:ce(oz),identities:dz,targets:x(mz),groups:x(pz),querySnapshots:x(gz),assignments:x(vz),executionNodes:x(bz),usageEdges:x(kz),compiledChecksum:rz}).strict().superRefine((e,n)=>{const i=new Set;for(const r of e.executionNodes)i.has(r.stableKey)&&n.addIssue({code:mo.custom,path:["executionNodes"],message:`Duplicate execution node key "${r.stableKey}"`}),i.add(r.stableKey);const s=new Set(e.targets.map(r=>r.stableKey));e.usageEdges.forEach((r,u)=>{i.has(r.executionNodeKey)||n.addIssue({code:mo.custom,path:["usageEdges",u,"executionNodeKey"],message:`Usage edge references unknown execution node "${r.executionNodeKey}"`}),s.has(r.targetKey)||n.addIssue({code:mo.custom,path:["usageEdges",u,"targetKey"],message:`Usage edge references unknown Target "${r.targetKey}"`})}),e.assignments.forEach((r,u)=>{s.has(r.targetKey)||n.addIssue({code:mo.custom,path:["assignments",u,"targetKey"],message:`Assignment references unknown Target "${r.targetKey}"`})});for(const r of e.groups)for(const u of r.targetKeys)s.has(u)||n.addIssue({code:mo.custom,path:["groups"],message:`Group "${r.stableKey}" references unknown Target "${u}"`})}),Ak=100;function Ou(e){return b({items:x(e),nextCursor:c().min(1).nullable(),totalEstimate:h().int().nonnegative().optional()}).strict()}const xz=D(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),ls=xn("state",[b({state:ce("available"),value:h(),numerator:h().int().nonnegative().optional(),denominator:h().int().positive().optional()}).strict(),b({state:ce("unavailable"),reason:xz}).strict()]),_k=D(["all","group","property"]),Ck=D(["all","branded","non-brand"]),wz=D(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),Sz=D(["not_measured","queued","running","complete","partial","failed"]),jz=D(["run_measurement","review_flags","complete_setup","republish_setup","none"]);b({scope:_k,groupKey:We.optional(),targetKey:We.optional(),queryClass:Ck.optional(),provider:Mt.optional(),location:c().trim().min(1).optional(),from:c().trim().min(1).optional(),to:c().trim().min(1).optional(),runId:c().trim().min(1).optional(),search:c().optional(),sort:wz.optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(Ak).optional()}).strict();const Nz=b({targetKey:We,label:c().min(1),mentionCoverage:ls,citationCoverage:ls,flags:h().int().nonnegative()}).strict(),Az=b({kind:D(["project","competitor"]),stableKey:c().min(1),label:c().min(1),domain:c().min(1),credits:h().int().nonnegative(),share:h().min(0).max(1)}).strict(),_z=b({groupKey:We,queryClass:ce("non-brand"),denominator:h().int().positive(),entries:x(Az)}).strict();b({mode:D(["active-v1","active-v2"]),scope:b({kind:_k,key:c().min(1).optional(),label:c().min(1)}).strict(),queryClass:Ck,measurement:b({state:Sz,currentRunId:c().min(1).optional(),displayedRunId:c().min(1).optional(),completed:h().int().nonnegative(),expected:h().int().nonnegative(),completedAt:c().datetime().optional()}).strict(),nextAction:b({kind:jz,count:h().int().nonnegative().optional()}).strict(),metrics:b({propertiesMentioned:ls,mentionCoverage:ls,citationCoverage:ls,brandPresence:ls,sov:ls.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:Ou(Nz),flags:b({total:h().int().nonnegative()}).strict(),namedShareOfVoice:_z.optional()}).strict();const zk=1,yl=h().int().positive(),Lt=c().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),bl=c().trim().min(1).max(256),qb=D(["sensitive","insensitive"]);function yu(e){const n=Ff(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function Cz(e){const n=[];let i=!1;for(let s=0;s<e.length;s++){const r=e[s];r==="/"?(i||n.push(r),i=!0):(n.push(r),i=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function Lb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function Ek(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return Cz(n.replace(/%[0-9a-f]{2}/gi,i=>i.toUpperCase()))}function mf(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 s of i.split("/")){let r;try{r=decodeURIComponent(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(r==="."||r==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return Ek(i)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function zz(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 $b(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 s=yu(i.hostname),r=mf(zz(n));return`https://${s}${r}`}const dl=c().trim().min(1).refine(e=>{try{return yu(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>yu(e)),Ez=c().trim().min(1).refine(e=>{try{return mf(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>mf(e)),Tz=c().trim().min(1).refine(e=>{try{return $b(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>$b(e)),Dz=xn("kind",[b({kind:ce("exact"),url:Tz,pathCase:qb}).strict(),b({kind:ce("prefix"),host:dl,pathPrefix:Ez,pathCase:qb}).strict(),b({kind:ce("host"),host:dl}).strict()]),Tk=c().trim().min(1).max(256).refine(e=>ms(e).length>0,"A target alias must contain mention text"),Oz=Le(c().trim().min(1),c()),Rz=dl,Dk=b({stableKey:Lt,label:c().trim().min(1),urls:x(Dz).min(1),aliases:x(Tk),metadata:Oz.optional()}).strict(),Xf=b({stableKey:Lt,label:c().trim().min(1),targetKeys:x(Lt).min(1),competitors:x(Rz).optional()}).strict(),Ok=b({targetKey:Lt,queryIds:x(bl).min(1),context:un.nullable().optional()}).strict();function Mz(e,n){return e<n?-1:e>n?1:0}function Bz(e,n=i=>i){const i=new Set,s=new Set;for(const r of e){const u=n(r);i.has(u)&&s.add(u),i.add(u)}return s}function zp(e,n,i,s,r){for(const u of Bz(n,r))e.addIssue({code:"custom",path:[...i],message:`Duplicate ${s}: ${u}`})}function Ib(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:yu(n.hostname),pathname:Ek(n.pathname||"/")}}function qz(e,n,i,s){return e===i||(n==="insensitive"||s==="insensitive")&&Lb(e)===Lb(i)}function Lz(e,n){if(e.kind!==n.kind)return!1;const i=Ib(e),s=Ib(n);return i.host!==s.host?!1:e.kind==="host"||n.kind==="host"?!0:qz(i.pathname,e.pathCase,s.pathname,n.pathCase)}function $z(e){const n=new Set;return[...e].sort(Mz).filter(i=>{const s=ms(i);return n.has(s)?!1:(n.add(s),!0)})}const Rk=b({schemaVersion:ce(zk),targets:x(Dk).min(1),groups:x(Xf).optional(),targetQuerySelections:x(Ok).optional()}).strict().superRefine((e,n)=>{const i=e.groups??[],s=e.targetQuerySelections??[];zp(n,e.targets.map(y=>y.stableKey),["targets"],"target stable key"),zp(n,i.map(y=>y.stableKey),["groups"],"group stable key");const r=new Set(e.targets.map(y=>y.stableKey)),u=new Set(i.map(y=>y.stableKey));for(const y of r)u.has(y)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${y}`});const d=new Map,g=[];e.targets.forEach((y,v)=>{for(const w of $z(y.aliases)){const S=ms(w),j=d.get(S);j&&j!==y.stableKey&&n.addIssue({code:"custom",path:["targets",v,"aliases"],message:`Target alias is already assigned to target ${j}: ${w}`}),d.set(S,y.stableKey)}y.urls.forEach((w,S)=>{g.find(_=>_.targetKey!==y.stableKey&&Lz(_.matcher,w))&&n.addIssue({code:"custom",path:["targets",v,"urls",S],message:"Target URL matcher has an equal-specificity cross-target tie"}),g.push({targetKey:y.stableKey,matcher:w})})}),i.forEach((y,v)=>{zp(n,y.targetKeys,["groups",v,"targetKeys"],"group target key");for(let w=0;w<y.targetKeys.length;w++){const S=y.targetKeys[w];r.has(S)||n.addIssue({code:"custom",path:["groups",v,"targetKeys",w],message:`Unknown target: ${S}`})}}),s.forEach((y,v)=>{r.has(y.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",v,"targetKey"],message:`Unknown target: ${y.targetKey}`})})});Rk.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));b({expectedActiveRevision:yl.nullable(),plan:Rk}).strict();const Iz=b({queryId:bl,queryText:c().min(1)}).strict(),Jf=b({stableKey:c().min(1),queryText:c().min(1),context:un.nullable(),expectedSnapshots:h().int().nonnegative()}).strict(),Uz=b({kind:ce("baseline"),executionNodeKey:c().min(1),queryId:bl}).strict(),Pz=b({kind:ce("target"),executionNodeKey:c().min(1),queryId:bl,targetKey:Lt}).strict(),pf=xn("kind",[Uz,Pz]),Mk=b({code:ce("target-alias-prefix-overlap"),message:c().min(1),targetKeys:x(Lt).min(1),aliases:x(c().min(1)).min(1)}).strict(),Bk=Dk.extend({mentionNotApplicable:F()}),Vz=b({schemaVersion:ce(zk),defaultContext:un.nullable(),effectiveOwnedHosts:x(dl),projectCanonicalHost:dl,projectBrandNames:x(Tk),targets:x(Bk),groups:x(Xf),targetQuerySelections:x(Ok),querySnapshots:x(Iz),executionNodes:x(Jf),usageEdges:x(pf),warnings:x(Mk)}).strict(),Wf=Vz,e0=c().regex(/^[a-f0-9]{64}$/),t0=c().datetime(),qk=b({schemaVersion:ce(1),providers:x(c().min(1)).min(1),models:Le(c().min(1),c().min(1)),checksum:c().regex(/^[a-f0-9]{64}$/)}).strict(),Gz=b({groups:x(Lt).optional(),targets:x(Lt).optional()}).strict(),Kz=b({groups:x(Lt),targets:x(Lt),queries:x(c().min(1)),resolvedTargets:x(Lt)}).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"})});b({stableKey:Lt,retiredAt:c().datetime()});b({active:b({revision:yl,checksum:e0,createdAt:t0,plan:Wf}).nullable()});b({versions:x(b({revision:yl,checksum:e0,createdAt:t0,active:F()}))});b({version:b({revision:yl,checksum:e0,createdAt:t0,active:F(),plan:Wf})});const su=b({targets:h().int(),groups:h().int(),queries:h().int(),executionNodes:h().int(),usageEdges:h().int(),baselineEdges:h().int(),targetEdges:h().int(),dedupSavings:h().int()}).strict(),Hz=D(["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"]),Lk=b({id:Hz,severity:D(["fail","warn"]),message:c().min(1),path:x(ct([c(),h().int()]))}).strict(),Qz=b({baseline:h().int().nonnegative(),target:h().int().nonnegative()}).strict(),$k=b({ok:ce(!0),checks:x(Lk),executionNodes:x(Jf),dedupSaved:h().int().nonnegative(),usageEdges:Qz,estCostUsd:xe(),plan:Wf,warnings:x(Mk),counts:su}).strict(),Ik=b({ok:ce(!1),checks:x(Lk).min(1),executionNodes:x(Jf).length(0),dedupSaved:ce(0),usageEdges:b({baseline:ce(0),target:ce(0)}).strict(),estCostUsd:xe()}).strict();xn("ok",[$k,Ik]);const Hc=b({targetKey:Lt,context:un.nullable(),queryIds:x(bl)}).strict();function Ub(e){return b({added:x(e),removed:x(e),changed:x(b({stableKey:Lt,before:e,after:e}).strict()),unchanged:x(Lt)}).strict()}const Zz=$k.extend({diff:b({activeRevision:yl.nullable(),targets:Ub(Bk),groups:Ub(Xf),querySelections:b({added:x(Hc),removed:x(Hc),changed:x(b({targetKey:Lt,before:Hc,after:Hc}).strict()),unchanged:x(b({targetKey:Lt,context:un.nullable()}).strict())}).strict(),execution:b({addedNodeKeys:x(c().min(1)),removedNodeKeys:x(c().min(1)),addedUsageEdges:x(pf),removedUsageEdges:x(pf),counts:b({before:su.nullable(),after:su,delta:su.nullable()}).strict()}).strict()}).strict()}).strict(),Fz=Ik.extend({diff:xe()}).strict();xn("ok",[Zz,Fz]);D(["proposed","alias","shared","unmatched","excluded"]);D(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const Yz=D(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),Xz=b({kind:D(["exact","prefix","suffix","contains"]),value:c().trim().min(1)}).strict(),Pb=b({host:c().trim().min(1),pathTemplate:c().trim().min(1)}).strict(),n0=b({primary:Pb,aliases:x(Pb).optional(),excludedSlugSuffixes:x(c().trim().min(1)).optional(),excludedSlugPatterns:x(Xz).optional()}).strict();b({sitemapUrl:c().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:n0,maxUrls:h().int().positive().max(1e4).optional()}).strict();const Ep=b({url:c(),canonicalUrl:c().nullable(),classification:D(["shared","unmatched","excluded"]),reason:D(["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"})}),Jz=b({classification:ce("proposed"),reason:ce("primary-match"),stableKey:Lt,slug:c().trim().min(1),label:c().trim().min(1),primaryUrl:c().url(),aliasCoverageUrls:x(c().url())}).strict(),Wz=b({classification:ce("alias"),reason:ce("exact-slug-match"),slug:c().trim().min(1),url:c().url(),targetStableKey:Lt}).strict(),eE=b({kind:Yz,url:c(),canonicalUrl:c().nullable(),duplicateOf:c().optional()}).strict();b({proposed:x(Jz),aliases:x(Wz),shared:x(Ep),unmatched:x(Ep),excluded:x(Ep),diagnostics:x(eE)}).strict().superRefine((e,n)=>{const i=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[s,r]of i)for(const u of e[s])r.includes(u.classification)||n.addIssue({code:"custom",path:[s],message:"Discovery item is in the wrong result bucket"})});const tE=D(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),nE=D(["baseline","target"]),Uk=D(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),ps=ct([b({numerator:h().int().nonnegative(),denominator:h().int().positive(),rate:h().min(0).max(1)}).strict(),b({numerator:xe(),denominator:xe(),rate:xe(),reason:Uk}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),aE=c().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),iE=b({executionId:c().trim().min(1),queryText:c().trim().min(1),provider:aE,context:un.nullable(),requestedModel:c().trim().min(1).optional()}).strict();b({schemaVersion:ce(1),expectedSlots:x(iE)}).strict().superRefine((e,n)=>{const i=new Set;for(const[s,r]of e.expectedSlots.entries()){const u=[r.executionId,r.provider].join("\0");i.has(u)&&n.addIssue({code:"custom",path:["expectedSlots",s],message:"Duplicate expected provider slot"}),i.add(u)}});const Ru=b({executed:h().int().nonnegative(),expected:h().int().nonnegative(),complete:F(),sourceComplete:F(),sourceCompleteObservations:h().int().nonnegative(),answerComplete:F()}).strict(),Vb=ct([b({domain:c().trim().min(1),own:F(),presentIn:h().int().nonnegative(),of:h().int().positive()}).strict(),b({domain:c().trim().min(1),own:F(),presentIn:xe(),of:xe(),reason:Uk}).strict()]),sE=b({domains:x(Vb),providers:x(b({provider:Mt,domains:x(Vb)}).strict())}).strict(),oE=b({provider:Mt,completeness:Ru,answerCoverage:ps}).strict(),rE=b({id:c().trim().min(1),label:c().trim().min(1),targetIds:x(c().trim().min(1)),completeness:Ru,answerCoverage:ps,targetCoverage:ps,sov:sE,providers:x(oE)}).strict(),lE=b({provider:Mt,completeness:Ru,citationCoverage:ps,mentionCoverage:ps}).strict(),cE=b({id:c().trim().min(1),label:c().trim().min(1),completeness:Ru,citationCoverage:ps,mentionCoverage:ps,providers:x(lE)}).strict(),uE=b({observationId:c().trim().min(1),expectedSlotId:c().trim().min(1),executionId:c().trim().min(1),usageEdgeId:c().trim().min(1),usageEdgeType:nE,provider:Mt,queryText:c().trim().min(1),location:c().nullable(),sourceUrl:c(),bridged:F(),historical:F(),evidenceComplete:F(),classification:tE,normalizedUrl:c().nullable(),matchedTargetIds:x(c().trim().min(1)),matchedUrlIds:x(c().trim().min(1))}).strict(),dE=b({bridgedObservationIds:x(c()),historicalObservationIds:x(c()),evidenceIncompleteObservationIds:x(c()),ambiguousObservationIds:x(c()),unmatchedObservationIds:x(c())}).strict(),mE=b({id:c().trim().min(1),status:D(["completed","partial"]),createdAt:c().datetime(),startedAt:c().datetime().nullable(),finishedAt:c().datetime().nullable()}).strict();b({revision:h().int().positive(),run:mE.nullable(),groups:x(rE),targets:x(cE),evidence:x(uE),diagnostics:dE}).strict();const Co=c().regex(/^[a-f0-9]{64}$/),Ci=c().trim().min(1).max(256),Di=h().int().positive(),Gb=b({kind:D(["user","api-key","system"]),id:c().trim().min(1),label:c().trim().min(1)}).strict(),pE=D(["proposed","included","excluded"]),fE=D(["manual","sitemap"]),a0=b({stableKey:We,label:c().trim().min(1),status:pE,aliases:x(c().trim().min(1)),urlMatchers:x(c().trim().min(1)),source:fE,discoveredUrl:c().trim().min(1).optional(),discoveryIdentity:c().trim().min(1).optional()}).strict(),Pk=b({providers:x(Mt).optional(),models:Le(Mt,c().trim().min(1)).optional(),locations:x(c().trim().min(1)).optional()}).strict(),hE=D(["branded","non-brand","unclassified"]),gE=D(["rule","operator"]),Vk=b({targetKey:We,queryId:Ci,contextOverride:Pk.optional(),queryClass:hE,classificationSource:gE}).strict(),Gk=jk,Kk=b({stableKey:We,label:c().trim().min(1),targetKeys:x(We),competitors:x(Gk)}).strict(),yE=b({sitemapUrl:c().url(),rule:n0,exclusions:x(c().trim().min(1)),inputChecksum:Co,reviewedAt:c().datetime().optional()}).strict(),bE=b({providers:x(Mt),models:Le(Mt,c().trim().min(1)).optional(),locations:x(c().trim().min(1))}).strict(),vE=b({defaultContext:bE,targets:x(a0),assignments:x(Vk),groups:x(Kk),discovery:yE.optional()}).strict(),kE=b({id:c().trim().min(1),projectId:c().trim().min(1),schemaVersion:ce(2),baseActiveVersionId:c().trim().min(1).nullable(),baseActiveRevision:Di.nullable(),authoring:vE,createdBy:Gb,updatedBy:Gb,createdAt:c().datetime(),updatedAt:c().datetime()}).strict(),i0=b({targets:h().int().nonnegative(),includedTargets:h().int().nonnegative(),assignments:h().int().nonnegative(),unclassifiedAssignments:h().int().nonnegative(),groups:h().int().nonnegative(),competitors:h().int().nonnegative()}).strict(),xE=b({code:c().trim().min(1),message:c().trim().min(1),path:x(ct([c(),h().int()]))}).strict();b({etag:c().trim().min(1),changed:F(),warnings:x(xE),counts:i0}).strict();b({draft:kE.nullable(),etag:c().trim().min(1).nullable()}).strict();Ou(a0);Ou(Vk);Ou(Kk);b({search:c().optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(Ak).optional()}).strict();b({expectedActiveRevision:Di.nullable()}).strict();b({sitemapUrl:c().url(),rule:n0,exclusions:x(c().trim().min(1)).optional()}).strict();const wE=b({discoveryIdentity:c().trim().min(1),action:D(["create","rebind","ignore"]),targetKey:We.optional(),label:c().trim().min(1).optional()}).strict();b({selections:x(wE).min(1)}).strict();b({target:a0}).strict();b({targetKey:We,label:c().trim().min(1)}).strict();b({targetKey:We,mergedKeys:x(We).min(1)}).strict();b({targetKey:We}).strict();b({targetKey:We,discoveryIdentity:c().trim().min(1),discoveredUrl:c().url()}).strict();b({targetKey:We,queryIds:x(Ci).min(1),contextOverride:Pk.optional()}).strict();b({targetKey:We,queryId:Ci}).strict();b({targetKey:We}).strict();b({queryClass:Nk,assignments:x(b({targetKey:We,queryId:Ci}).strict()).min(1)}).strict();b({group:b({stableKey:We,label:c().trim().min(1),targetKeys:x(We)}).strict()}).strict();b({groupKey:We}).strict();b({groupKey:We,competitor:Gk}).strict();b({groupKey:We,competitorKey:We}).strict();const bu=b({ruleId:c().trim().min(1),severity:D(["fail","warn"]),message:c().trim().min(1),path:x(ct([c(),h().int()]))}).strict();xn("ok",[b({ok:ce(!0),compiledChecksum:Co,checks:x(bu),counts:i0,plan:Yf}).strict(),b({ok:ce(!1),compiledChecksum:xe(),checks:x(bu).min(1)}).strict()]);const Kb=b({added:x(c().trim().min(1)),removed:x(c().trim().min(1)),changed:x(c().trim().min(1)),unchanged:x(c().trim().min(1))}).strict(),SE=b({activeRevision:Di.nullable(),targets:Kb,groups:Kb,assignments:b({added:h().int().nonnegative(),removed:h().int().nonnegative(),reclassified:h().int().nonnegative()}).strict(),execution:b({addedNodeKeys:x(c().trim().min(1)),removedNodeKeys:x(c().trim().min(1))}).strict()}).strict();xn("ok",[b({ok:ce(!0),compiledChecksum:Co,checks:x(bu),counts:i0,plan:Yf,diff:SE}).strict(),b({ok:ce(!1),compiledChecksum:xe(),checks:x(bu).min(1),diff:xe()}).strict()]);b({expectedActiveRevision:Di.nullable(),expectedCompiledChecksum:Co}).strict();b({published:F(),active:b({revision:Di,checksum:Co,compiledChecksum:Co,createdAt:c().datetime(),plan:Yf}).strict()}).strict();b({discarded:F()}).strict();b({expectedActiveRevision:Di}).strict();b({deactivated:F(),previousRevision:Di.nullable()}).strict();const jE=D(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),NE=D(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),AE=D(["simple","draft-only","active-v1","active-v2"]);b({state:jE,nextAction:NE,mode:AE,activeRevision:Di.nullable(),activeSchemaVersion:ct([ce(1),ce(2)]).nullable(),draft:b({etag:c().trim().min(1),updatedAt:c().datetime()}).strict().nullable()}).strict();const Hk=b({id:c().trim().min(1),projectId:c().trim().min(1),name:c().trim().min(1),description:c().nullable(),itemCount:h().int().nonnegative(),createdAt:c().datetime(),updatedAt:c().datetime()}).strict(),_E=b({queryId:Ci,queryText:c().min(1),position:h().int().nonnegative()}).strict();Hk.extend({items:x(_E)}).strict();b({querySets:x(Hk)}).strict();b({name:c().trim().min(1),description:c().nullable().optional(),queryIds:x(Ci)}).strict();const CE=b({id:c().trim().min(1),projectId:c().trim().min(1),name:c().trim().min(1),description:c().nullable(),pattern:c().trim().min(1),variables:x(c().trim().min(1)),createdAt:c().datetime(),updatedAt:c().datetime()}).strict();b({templates:x(CE)}).strict();b({name:c().trim().min(1),description:c().nullable().optional(),pattern:c().trim().min(1),variables:x(c().trim().min(1))}).strict();b({bindings:x(Le(c().trim().min(1),c().trim().min(1))).min(1),querySetId:c().trim().min(1).optional()}).strict();b({created:x(b({queryId:Ci,queryText:c().min(1)}).strict()),existing:x(b({queryId:Ci,queryText:c().min(1)}).strict())}).strict();const Qk=D(["introduced","repointed","retired"]),zE=Qk.enum;b({modelId:c().trim().min(1),date:c().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:Qk,confirmed:F(),sourceUrl:c().url(),note:c().min(1)});const EE=[{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.'}];zE.repointed;new Set(EE.map(e=>e.modelId.toLowerCase()));const TE=D(["not-exposed","no-known-change","known-change"]);TE.enum;const DE=b({modelId:c().trim().min(1),date:c().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:F(),sourceUrl:c().url()}),OE=b({status:D(["no-known-change","known-change"]),modelIds:x(c().trim().min(1)).min(1),changes:x(DE),changeCount:h().int().nonnegative(),unverifiedChangeCount:h().int().nonnegative(),firstChangeDate:c().optional(),lastChangeDate:c().optional(),knownGoodAsOf:c(),checkedThroughPeriodEnd:F()}),RE={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function ME(e){const n=e.trim().toLowerCase();return RE[n]??e.charAt(0).toUpperCase()+e.slice(1)}function Tp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Qr(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function Dp(e){return[...new Set(e.filter(n=>n!==null))].sort()}function BE(e,n){const i=ME(e),s=Array.isArray(n.changes)?n.changes:[],r=Tp(n.changeCount)||s.length,u=Math.min(r,Tp(n.unverifiedChangeCount)||Tp(n.unconfirmedChangeCount)||s.filter(w=>w.confirmed===!1).length),d=Qr(n.knownGoodAsOf),g=n.checkedThroughPeriodEnd!==!1,y={engine:i,confirmedCount:r-u,unconfirmedCount:u,knownGoodAsOf:d,checkedThroughPeriodEnd:g};if(s.length>0)return{...y,confirmedDates:Dp(s.filter(w=>w.confirmed!==!1).map(w=>Qr(w.date))),unconfirmedDates:Dp(s.filter(w=>w.confirmed===!1).map(w=>Qr(w.date)))};const v=Dp([Qr(n.firstChangeDate),Qr(n.lastChangeDate)]);return r===0?{...y,confirmedDates:[],unconfirmedDates:[]}:u===0?{...y,confirmedDates:v,unconfirmedDates:[]}:y.confirmedCount===0?{...y,confirmedDates:[],unconfirmedDates:v}:{...y,confirmedDates:[],unconfirmedDates:[]}}function qE(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 Hb(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function LE(e){const n=Hb(e.confirmedDates,e.confirmedCount),i=Hb(e.unconfirmedDates,e.unconfirmedCount),s=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${s} was updated ${n}, inside this period.`:`${s} was updated inside this period.`;if(e.confirmedCount===0)return i?`${s} may have been updated ${i}, inside this period, though that is not confirmed.`:`${s} may have been updated inside this period, though that is not confirmed.`;if(n&&i)return`${s} was updated ${n}, inside this period, and may also have been updated ${i}.`;const r=e.unconfirmedCount>1?"more times":"once more";return`${s} was updated inside this period, and may have been updated ${r}, though that is not confirmed.`}function Qb(e){const n=e.filter(s=>!s.checkedThroughPeriodEnd&&s.knownGoodAsOf!==null);return n.length===0?null:`We last checked for model updates on ${n.map(s=>s.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function CP(e){const n=Object.entries(e??{}).map(([y,v])=>BE(y,v??{})).sort((y,v)=>y.engine.localeCompare(v.engine));if(n.length===0)return null;const i=n.filter(y=>y.confirmedCount+y.unconfirmedCount>0);if(i.length===0){const y=[...new Set(n.map(_=>_.engine))],v=y.length>1,w=Qb(n),S=[...new Set(n.map(_=>_.knownGoodAsOf).filter(_=>_!==null))].sort(),j=w??(S.length>0?`We last checked for model updates on ${S[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${qE(y)} in this period.`,detail:`${v?"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.${j?` ${j}`:""}`}}const s=i.reduce((y,v)=>y+v.confirmedCount+v.unconfirmedCount,0),r=i.some(y=>y.confirmedCount>0),u=s===1?"this update":"these updates",d=r?`Some of the movement in these numbers may come from ${u} 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 ${u} rather than from a real change in how AI answers about you, so compare periods carefully.`,g=Qb(n);return{kind:"change",text:`${i.map(LE).join(" ")} ${d}${g?` ${g}`:""}`}}const $E=D(["gsc","ga4","gbp"]);b({id:c(),domain:c(),connectionType:$E,propertyId:c().nullable().optional(),sitemapUrl:c().nullable().optional(),scopes:x(c()).default([]),createdAt:c(),updatedAt:c()});const IE=b({date:c(),query:c(),page:c(),country:c().nullable().optional(),device:c().nullable().optional(),clicks:h(),impressions:h(),ctr:h(),position:h()});D(["clicks","impressions","date"]);b({rows:x(IE),totalMatching:h(),truncated:F(),latestAvailableDate:c().nullable()});const UE=b({date:c(),clicks:h(),impressions:h(),ctr:h()});b({totals:b({clicks:h(),impressions:h(),ctr:h(),days:h()}),daily:x(UE)});const PE=b({page:c(),clicks:h(),impressions:h(),ctr:h()});b({rows:x(PE),totals:b({clicks:h(),impressions:h(),ctr:h(),days:h(),coveredFrom:c().nullable(),coveredThrough:c().nullable(),complete:F()}).nullable(),totalsSource:ce("property-daily"),rankedFrom:c().nullable(),rankedThrough:c().nullable()});const ff=b({id:c(),url:c(),indexingState:c().nullable().optional(),verdict:c().nullable().optional(),coverageState:c().nullable().optional(),pageFetchState:c().nullable().optional(),robotsTxtState:c().nullable().optional(),crawlTime:c().nullable().optional(),lastCrawlResult:c().nullable().optional(),isMobileFriendly:F().nullable().optional(),richResults:x(c()).default([]),referringUrls:x(c()).default([]),inspectedAt:c()});D(["stable","reindexed","deindexed","still-missing","new"]);const VE=b({url:c(),previousState:c().nullable(),currentState:c().nullable(),transitionDate:c()}),GE=b({reason:c(),count:h(),urls:x(ff).default([])});b({summary:b({total:h(),indexed:h(),notIndexed:h(),deindexed:h(),percentage:h()}),lastInspectedAt:c().nullable(),lastSyncedAt:c().nullable(),indexed:x(ff).default([]),notIndexed:x(ff).default([]),deindexed:x(VE).default([]),reasonGroups:x(GE).default([])});b({url:c(),type:D(["URL_UPDATED","URL_DELETED"]),notifiedAt:c()});const KE=b({url:c(),type:D(["URL_UPDATED","URL_DELETED"]),notifiedAt:c(),status:D(["success","error"]),error:c().optional()});b({summary:b({total:h().int().nonnegative(),succeeded:h().int().nonnegative(),failed:h().int().nonnegative()}),results:x(KE).default([])});b({date:c(),indexed:h(),notIndexed:h(),reasonBreakdown:Le(c(),h()).default({})});const HE=b({siteUrl:c(),permissionLevel:c()});b({sites:x(HE).default([])});const QE=b({type:c(),submitted:c(),indexed:c().optional().describe("Deprecated compatibility field.")}),Zk=b({path:c(),parentSitemapUrl:c().optional(),lastSubmitted:c().optional(),isPending:F().optional(),isSitemapsIndex:F().optional(),type:c().optional(),lastDownloaded:c().optional(),warnings:c().optional(),errors:c().optional(),contents:x(QE).optional()});b({sitemaps:x(Zk).default([]),summary:b({total:h().int().nonnegative(),indexes:h().int().nonnegative(),files:h().int().nonnegative()}),preferredSubmissionUrls:x(c()).default([])});b({sitemapUrls:x(c().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 ZE=b({sitemapUrl:c(),status:D(["accepted","error"]),submittedAt:c().optional(),error:c().optional()});b({summary:b({total:h().int().nonnegative(),accepted:h().int().nonnegative(),failed:h().int().nonnegative()}),results:x(ZE)});b({sitemaps:x(Zk),primarySitemapUrl:c(),run:b({id:c(),projectId:c(),kind:c(),status:c(),trigger:c(),createdAt:c()}).nullable()});const FE=b({name:c(),accountName:c().nullable(),type:c().nullable(),role:c().nullable()});b({accounts:x(FE),total:h().int().nonnegative()});const YE=b({id:c(),projectId:c(),accountName:c(),locationName:c(),displayName:c(),primaryCategoryDisplayName:c().nullable(),storefrontAddress:c().nullable(),websiteUri:c().nullable(),placeId:c().nullable(),mapsUri:c().nullable(),additionalCategories:x(c()),description:c().nullable(),serviceArea:Le(c(),Gn()).nullable(),regularHours:Le(c(),Gn()).nullable(),primaryPhone:c().nullable(),openStatus:c().nullable(),openingDate:c().nullable(),selected:F(),syncedAt:c().nullable(),createdAt:c(),updatedAt:c()});b({locations:x(YE),totalDiscovered:h().int().nonnegative(),totalSelected:h().int().nonnegative()});b({selectAllNew:F().default(!0),accountName:c().optional(),switchAccount:F().default(!1)});b({selected:F()});b({locationNames:x(c()).optional(),daysOfMetrics:h().int().positive().max(540).optional(),monthsOfKeywords:h().int().positive().max(18).optional()});b({runId:c(),status:c()});const XE=b({locationName:c(),date:c(),metric:c(),value:h().int()});b({metrics:x(XE),total:h().int().nonnegative()});const JE=b({locationName:c(),periodStart:c(),periodEnd:c(),keyword:c(),valueCount:h().int().nullable(),valueThreshold:h().int().nullable()});b({keywords:x(JE),total:h().int().nonnegative(),thresholdedPct:h().int().min(0).max(100)});const WE=b({locationName:c(),placeActionLinkName:c(),placeActionType:c(),uri:c().nullable(),isPreferred:F(),providerType:c().nullable()});b({placeActions:x(WE),total:h().int().nonnegative()});const eT=b({locationName:c(),populatedGroupCount:h().int().nonnegative(),syncedAt:c(),attributes:Le(c(),Gn())});b({lodging:x(eT),total:h().int().nonnegative()});const tT=b({name:c(),valueType:c(),values:x(ct([F(),c()])),unsetValues:x(c()),uris:x(c())}),nT=b({locationName:c(),attributeCount:h().int().nonnegative(),syncedAt:c(),attributes:x(tT)});b({attributes:x(nT),total:h().int().nonnegative()});const aT=b({locationName:c(),placeId:c(),tier:c(),amenities:x(c()),syncedAt:c(),place:Le(c(),Gn())});b({places:x(aT),total:h().int().nonnegative()});b({scope:b({locationName:c().nullable(),locationCount:h().int().nonnegative()}),performance:b({totals:Le(c(),h()),recent7d:Le(c(),h()),prior7d:Le(c(),h()),deltaPct:Le(c(),h().nullable())}),freshness:b({dataThroughDate:c().nullable(),latestStoredDate:c().nullable(),pendingDays:h().int().nonnegative()}),timeseries:x(b({date:c(),pending:F(),metrics:Le(c(),h())})),keywords:b({total:h().int().nonnegative(),thresholdedCount:h().int().nonnegative(),thresholdedPct:h().int().min(0).max(100)}),placeActions:b({total:h().int().nonnegative(),hasReservationCta:F(),hasBookingCta:F(),hasDirectMerchantCta:F()}),lodging:b({lodgingLocationCount:h().int().nonnegative(),populatedLodgingCount:h().int().nonnegative(),emptyLodgingCount:h().int().nonnegative()}),profileCompleteness:b({locationCount:h().int().nonnegative(),withSecondaryCategories:h().int().nonnegative(),secondaryCategoryTotal:h().int().nonnegative(),withDescription:h().int().nonnegative(),withServiceArea:h().int().nonnegative(),withHours:h().int().nonnegative(),withPrimaryPhone:h().int().nonnegative(),permanentlyClosed:h().int().nonnegative(),temporarilyClosed:h().int().nonnegative()})});const iT={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 sT(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(s=>s.toLowerCase());if(n.length===0)return e;const i=n.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function zP(e){return iT[e]??sT(e)}const oT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],rT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function EP(e){return oT.includes(e)?"conversion":rT.includes(e)?"reach":"other"}b({id:c(),domain:c(),siteUrl:c().nullable().optional(),createdAt:c(),updatedAt:c()});const Op=b({id:c(),url:c(),httpCode:h().nullable().optional(),inIndex:F().nullable().optional(),lastCrawledDate:c().nullable().optional(),inIndexDate:c().nullable().optional(),inspectedAt:c(),documentSize:h().nullable().optional(),anchorCount:h().nullable().optional(),discoveryDate:c().nullable().optional()});b({summary:b({total:h(),indexed:h(),notIndexed:h(),unknown:h().optional(),percentage:h()}),lastInspectedAt:c().nullable(),indexed:x(Op).default([]),notIndexed:x(Op).default([]),unknown:x(Op).default([]).optional()});b({query:c(),impressions:h(),clicks:h(),ctr:h(),averagePosition:h()});b({date:c(),indexed:h(),notIndexed:h(),unknown:h()});const lT=b({url:c(),status:D(["success","error"]),submittedAt:c(),error:c().optional()});b({summary:b({total:h().int().nonnegative(),succeeded:h().int().nonnegative(),failed:h().int().nonnegative()}),results:x(lT).default([])});const Fk=b({url:c(),verified:F()});b({sites:x(Fk).default([])});b({connected:F(),domain:c(),siteUrl:c().nullable(),createdAt:c().nullable(),updatedAt:c().nullable()});b({connected:F(),domain:c(),siteUrl:c().nullable(),availableSites:x(Fk).default([])});b({siteUrl:c()});const cT=b({name:c(),alive:F(),lastUsed:c().nullable()});b({connected:F(),endpoint:c(),version:c().optional(),browserVersion:c().optional(),targets:x(cT).default([])});const s0=D(["complete","partial","failed","unsupported"]);s0.enum;const Yk=D(["used","not-used","unknown","not-applicable"]);Yk.enum;const Xk=D(["native-auto-v1","search-required-v1"]);Xk.enum;const Lo=D(["live","staging"]);b({projectName:c(),url:c(),stagingUrl:c().optional(),username:c(),defaultEnv:Lo,createdAt:c(),updatedAt:c()});const Zb=b({url:c(),reachable:F(),pageCount:h().nullable().optional(),version:c().nullable().optional(),error:c().nullable().optional(),plugins:x(c()).optional(),authenticatedUser:b({id:h(),slug:c()}).nullable().optional()});b({connected:F(),projectName:c(),defaultEnv:Lo,live:Zb.nullable(),staging:Zb.nullable(),adminUrl:c().nullable().optional()});const uT=b({id:h(),slug:c(),title:c(),status:c(),modifiedAt:c().nullable().optional(),link:c().nullable().optional()}),Jk=b({title:c().nullable(),description:c().nullable(),noindex:F().nullable(),writable:F().default(!1),writeTargets:x(c()).default([])}),dT=b({type:c(),json:Le(c(),Gn())}),mT=uT.extend({env:Lo,content:c(),seo:Jk,schemaBlocks:x(dT).default([])}),Fb=mT.extend({contentHash:c(),contentSnippet:c()}),Wk=b({manualRequired:ce(!0),targetUrl:c(),adminUrl:c().nullable().optional(),content:c(),nextSteps:x(c()).default([])}),pT=b({slug:c(),severity:D(["high","medium","low"]),code:D(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:c()});b({slug:c(),title:c(),status:c(),wordCount:h(),seo:Jk,schemaPresent:F(),issues:x(pT).default([])});const fT=b({slug:c(),status:D(["applied","skipped","manual"]),error:c().optional(),manualAssist:Wk.optional()});b({env:Lo,strategy:D(["plugin","manual"]),results:x(fT)});const hT=b({slug:c(),status:D(["deployed","stripped","skipped","failed"]),schemasInjected:x(c()).optional(),manualAssist:Wk.optional(),error:c().optional()});b({env:Lo,results:x(hT)});const gT=b({slug:c(),title:c(),canonrySchemas:x(c()),thirdPartySchemas:x(c()),hasCanonrySchema:F()});b({env:Lo,pages:x(gT)});const yT=b({name:c(),status:D(["completed","skipped","failed"]),summary:c().optional(),error:c().optional()});b({projectName:c(),steps:x(yT)});b({slug:c(),live:Fb,staging:Fb,hasDifferences:F(),differences:b({title:F(),slug:F(),content:F(),seoTitle:F(),seoDescription:F(),noindex:F(),schema:F()})});const bT=b({name:c(),displayName:c().optional(),keyUrl:c().optional(),modelHint:c().optional(),model:c().optional(),defaultModel:c().optional(),configured:F(),quota:a9.optional(),vertexConfigured:F().optional()}),vT=b({name:c(),displayName:c(),mode:D(["api","browser"]),modelConfigurable:F(),defaultModel:c(),knownModels:x(b({id:c(),displayName:c(),tier:D(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:b({source:c(),flags:c()}),modelValidationHint:c()}),Yb=b({configured:F()});b({providers:x(bT).default([]),providerCatalog:x(vT).default([]),google:Yb,bing:Yb});const Oi=D(["queued","running","completed","partial","failed","cancelled"]),sn=Oi.enum,e3=D(["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"]),Te=e3.enum,o0=D(["manual","scheduled","config-apply","backfill","probe"]),xo=o0.enum,Pa=D(["cited","not-cited"]),vu=Pa.enum,ku=D(["visible","not-visible"]);ku.enum;const ml=D(["mentioned","not-mentioned"]);ml.enum;const t3=D(["new","cited","lost","emerging","not-cited"]);t3.enum;const kT=D(["new","mentioned","lost","emerging","not-mentioned"]);kT.enum;const xT=D([xo.manual,xo.probe]);b({kind:ce(Te["answer-visibility"]).optional(),trigger:xT.optional(),providers:x(Mt).optional(),queries:x(c().min(1)).min(1).optional(),measurementScope:Gz.optional(),location:c().min(1).optional(),allLocations:F().optional(),noLocation:F().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const wT=b({message:c(),raw:Gn().optional()}),ST=b({message:c().optional(),providers:Le(c(),wT).optional()}),jT=b({id:c(),projectId:c(),kind:e3,status:Oi,trigger:o0.default("manual"),measurementPlanVersionId:c().nullable().optional(),measurementManifest:Le(c(),Gn()).nullable().optional(),measurementScope:Kz.nullable().optional(),measurementExecutionIdentity:qk.nullable().optional(),location:c().nullable().optional(),queries:x(c()).nullable().optional(),startedAt:c().nullable().optional(),finishedAt:c().nullable().optional(),error:ST.nullable().optional(),queryBasketRevision:h().int().nullable().optional(),createdAt:c()});function r0(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[i,s]=n[0];return`${i}: ${s.message}`}if(n.length>1)return n.map(([i,s])=>`${i}: ${s.message}`).join(" • ")}return e.message??"Run failed."}const Mu=b({uri:c(),title:c()}),NT=b({status:D(["applied","ignored","browser-implicit","unknown"]),resolved:un.nullable().optional()}),n3=b({id:c(),runId:c(),queryId:c(),query:c().optional(),provider:Mt,citationState:Pa,answerMentioned:F().optional(),visibilityState:ku.optional(),mentionState:ml.optional(),transition:t3.optional(),answerText:c().nullable().optional(),citedDomains:x(c()).default([]),citedUrls:x(c()).nullable().default(null),captureStatus:ct([s0,xe()]).default(null),sourceCount:h().int().nonnegative().nullable().default(null),resolvedCount:h().int().nonnegative().nullable().default(null),captureVersion:h().int().positive().nullable().default(null),retrievalStatus:ct([Yk,xe()]).default(null),retrievalContract:ct([Xk,xe()]).default(null),competitorOverlap:x(c()).default([]),recommendedCompetitors:x(c()).default([]),matchedTerms:x(c()).default([]),groundingSources:x(Mu).default([]),searchQueries:x(c()).default([]),model:c().nullable().optional(),servedModel:c().nullable().optional(),location:c().nullable().optional(),requestedContext:un.nullable().optional(),supportedContext:NT.nullable().optional(),createdAt:c()});b({snapshots:x(n3),total:h().int().nonnegative()});const AT=b({queryId:c().nullable(),query:c().nullable(),run1State:Pa.nullable(),run2State:Pa.nullable(),run1AnswerMentioned:F().nullable(),run2AnswerMentioned:F().nullable(),run1VisibilityState:ku.nullable(),run2VisibilityState:ku.nullable(),run1MentionState:ml.nullable().optional(),run2MentionState:ml.nullable().optional(),changed:F(),visibilityChanged:F()});b({run1:c(),run2:c(),diff:x(AT)});const _T=jT.extend({snapshots:x(n3).optional()}),CT=b({totalRuns:h().int().nonnegative(),run:_T.nullable()});b({id:c(),projectId:c().nullable().optional(),actor:c(),action:c(),entityType:c(),entityId:c().nullable().optional(),diff:Gn().optional(),userAgent:c().nullable().optional(),actorSession:c().nullable().optional(),createdAt:c()});const zT=D(["yes","no","unknown","not-mentioned"]),Xb=x(c().min(1));b({companyName:c().min(1),domain:c().min(1),queries:Xb.optional(),phrases:Xb.optional(),competitors:x(c().min(1)).optional().default([])}).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"]})});const ET=b({name:c(),count:h().int().nonnegative()}),TT=b({id:c(),name:c(),weight:h(),score:h(),findings:x(b({type:c(),message:c()})).default([]),recommendations:x(c()).default([])}),DT=b({url:c(),finalUrl:c(),auditedAt:c(),overallScore:h(),summary:c(),factors:x(TT).default([])}),OT=b({industry:c(),summary:c(),services:x(c()).default([]),categoryTerms:x(c()).default([])}),RT=b({provider:c(),displayName:c(),model:c().nullable().optional(),mentioned:F(),cited:F(),describedAccurately:zT,accuracyNotes:c().nullable().optional(),incorrectClaims:x(c()).default([]),recommendedCompetitors:x(c()).default([]),citedDomains:x(c()).default([]),groundingSources:x(Mu).default([]),searchQueries:x(c()).default([]),answerText:c(),error:c().nullable().optional()}),MT=b({query:c(),providerResults:x(RT).default([])}),BT=b({totalQueries:h().int().nonnegative(),totalProviders:h().int().nonnegative(),totalComparisons:h().int().nonnegative(),mentionCount:h().int().nonnegative(),citationCount:h().int().nonnegative(),topCompetitors:x(ET).default([]),visibilityGap:c(),whatThisMeans:x(c()).default([]),recommendedActions:x(c()).default([])});b({companyName:c(),domain:c(),homepageUrl:c(),generatedAt:c(),queries:x(c()).default([]),competitors:x(c()).default([]),profile:OT,audit:DT,queryResults:x(MT).default([]),summary:BT});const a3=D(["pass","partial","fail"]);a3.enum;const i3=D(["up","down","flat"]);i3.enum;const qT=b({id:c(),name:c(),weight:h(),avgScore:h(),status:a3,pagesPassing:h().int().nonnegative(),pagesPartial:h().int().nonnegative(),pagesFailing:h().int().nonnegative()}),LT=b({factorId:c(),factorName:c(),avgScore:h(),affectedPages:h().int().nonnegative(),totalPages:h().int().nonnegative(),affectedPct:h().int().nonnegative(),topRecommendations:x(c()).default([])});b({project:c(),hasData:F(),runId:c().nullable(),runStatus:Oi.nullable(),sitemapUrl:c().nullable(),auditedAt:c().nullable(),aggregateScore:h(),pagesDiscovered:h().int().nonnegative(),pagesAudited:h().int().nonnegative(),pagesSkipped:h().int().nonnegative(),pagesErrored:h().int().nonnegative(),deltaScore:h().nullable(),trend:i3.nullable(),previousScore:h().nullable(),previousAuditedAt:c().nullable(),factors:x(qT).default([]),crossCuttingIssues:x(LT).default([]),prioritizedFixes:x(c()).default([])});const $T=b({id:c(),name:c(),weight:h(),score:h()}),IT=b({url:c(),overallScore:h(),status:D(["success","error"]),error:c().nullable().optional(),factors:x($T).default([])});b({project:c(),runId:c().nullable(),auditedAt:c().nullable(),total:h().int().nonnegative(),pages:x(IT).default([])});const UT=b({runId:c(),auditedAt:c(),aggregateScore:h(),pagesAudited:h().int().nonnegative()});b({project:c(),points:x(UT).default([])});b({sitemapUrl:c().url().optional(),limit:h().int().positive().max(2e3).optional()});b({runId:c(),status:Oi});const l0=D(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);l0.enum;b({id:c(),projectId:c(),kind:l0,cronExpr:c(),preset:c().nullable().optional(),timezone:c().default("UTC"),enabled:F().default(!0),providers:x(Mt).default([]),sourceId:c().nullable().optional(),lastRunAt:c().nullable().optional(),nextRunAt:c().nullable().optional(),createdAt:c(),updatedAt:c()});b({kind:l0.optional(),preset:c().optional(),cron:c().optional(),timezone:c().optional().default("UTC"),enabled:F().optional().default(!0),providers:x(Mt).optional().default([]),sourceId:c().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const c0=D(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);c0.enum;const u0=D(["cited","aspirational","wasted-surface"]),Jb=u0.enum;Jb.cited,Jb.aspirational;const Bu=D(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),PT=Bu.enum;PT["direct-competitor"];const qu=D(["queued","seeding","probing","completed","failed"]);qu.enum;const s3=b({domain:c().min(1),hits:h().int().positive(),competitorType:Bu.default("unknown")}),VT=b({id:c(),sessionId:c(),projectId:c(),query:c(),bucket:u0.nullable().default(null),citationState:Pa,citedDomains:x(c()).default([]),answerMentioned:F().nullable().default(null),createdAt:c()}),GT=b({id:c(),projectId:c(),status:qu,icpDescription:c().nullable().optional(),seedProvider:c().nullable().optional(),seedCountRaw:h().int().nullable().optional(),seedCount:h().int().nullable().optional(),seedFromAnswerCount:h().int().nullable().optional(),seedFromGroundingCount:h().int().nullable().optional(),seedBrandFilteredCount:h().int().nullable().optional(),buyerDescription:c().nullable().optional(),locations:x(un).nullable().optional(),seedRawCandidates:x(c()).nullable().optional(),dedupClusterMinSims:x(h()).nullable().optional(),dedupBandPairFraction:h().nullable().optional(),dedupPairsTotal:h().int().nullable().optional(),seedProviders:x(c()).nullable().optional(),seedProviderCounts:Le(c(),h().int()).nullable().optional(),canonicalCount:h().int().nullable().optional(),dedupThreshold:h().nullable().optional(),probeCount:h().int().nullable().optional(),citedCount:h().int().nullable().default(null),aspirationalCount:h().int().nullable().default(null),wastedCount:h().int().nullable().default(null),competitorMap:x(s3).default([]),warning:c().nullable().optional(),error:c().nullable().optional(),startedAt:c().nullable().optional(),finishedAt:c().nullable().optional(),createdAt:c()});GT.extend({probes:x(VT).default([])});const KT=500,HT=8,QT=["gemini","openai"],ZT=D(QT);b({icpDescription:c().min(1).optional(),buyerDescription:c().min(1).optional(),seedProviders:x(ZT).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:h().min(0).max(1).optional(),maxProbes:h().int().positive().max(KT).optional(),probeConcurrency:h().int().min(1).max(HT).optional(),locations:x(c().min(1)).optional()});b({buckets:x(u0).min(1).optional(),includeCompetitors:F().optional(),competitorTypes:x(Bu).min(1).optional()});b({sessionId:c(),projectId:c(),status:qu,queriesByBucket:b({cited:x(c()),aspirational:x(c()),"wasted-surface":x(c())}),suggestedCompetitors:x(s3)});b({sessionId:c(),projectId:c(),promoted:b({queries:x(c()),competitors:x(c())}),skipped:b({queries:x(c()),competitors:x(c())})});ct([ce("cli"),c().regex(/^discovery:.+$/)]);const FT=b({query:c().min(1),probeHits:h().int().positive()}),YT=b({rawCandidates:h().int().nonnegative(),admitted:h().int().nonnegative(),rejected:b({belowFloor:h().int().nonnegative(),length:h().int().nonnegative(),navigational:h().int().nonnegative(),duplicate:h().int().nonnegative(),offAnchor:h().int().nonnegative(),semanticDuplicate:h().int().nonnegative()})});b({sessionId:c(),projectId:c(),provider:c(),status:qu,minProbeHits:h().int().positive(),anchorApplied:F(),semanticNoveltyApplied:F(),candidates:x(FT),stats:YT});const d0=D(["own","direct-competitor","ota-aggregator","editorial-media","other"]);d0.enum;const o3=D(["7d","30d","90d","all"]),Wb=D(["improving","declining","stable"]),XT=D(["mentioned","cited"]);XT.enum;const hf=b({citationRate:h(),cited:h().int(),total:h().int(),mentionRate:h(),mentionedCount:h().int()}),m0=c().trim().min(1),JT=x(m0).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]})}),zo=xn("status",[b({status:ce("known"),model:m0}),b({status:ce("unknown")}),b({status:ce("mixed"),models:JT,includesUnknown:F()})]),WT=b({observedAt:c(),bucketStartDate:c(),from:zo,to:zo,fromPreWindowAnchor:F().optional(),anchorObservedAt:c().optional()}),r3=b({latestObservation:b({observedAt:c(),state:zo}),events:x(WT),eventTotal:h().int().nonnegative().optional(),anchorUnavailable:F().optional()}),eD=Le(c(),r3),tD=r3.extend({latestServedModelIds:x(m0).default([])}),nD=Le(c(),tD),aD=b({observedAt:c(),configured:zo,served:zo}),iD=b({rate:h().nullable(),projectMentionSnapshots:h().int().nonnegative(),competitorMentionSnapshots:h().int().nonnegative()}),sD=b({startDate:c(),endDate:c(),dataStartDate:c(),dataEndDate:c(),sweepCount:h().int().nonnegative(),citationRate:h(),cited:h().int(),total:h().int(),queryCount:h().int(),mentionRate:h(),mentionedCount:h().int(),mentionShare:iD,byProvider:Le(c(),hf),modelEvidenceByProvider:Le(c(),zo).default({}),basketRevision:h().int().nullable().default(null)}),oD=b({revision:h().int(),at:c(),added:x(c()),removed:x(c())}),rD=b({date:c(),delta:h().int(),label:c()}),lD=b({at:c(),identity:qk});b({window:o3,buckets:x(sD),overall:hf,byProvider:Le(c(),hf),trend:Wb,mentionTrend:Wb,queryChanges:x(rD),basketChanges:x(oD).default([]),executionIdentityChanges:x(lD).default([]),referenceBasketRevision:h().int().nullable().default(null),modelAttribution:eD.default({}),servedModelAttribution:nD.default({}),modelServiceMismatch:Le(c(),aD).default({}),modelPointerChanges:Le(c(),OE).default({})});const ev=b({category:c0,label:c(),count:h().int(),percentage:h(),topDomains:x(b({domain:c(),count:h().int()}))}),cD=b({domain:c(),count:h().int(),percentage:h(),category:c0,label:c(),surfaceClass:d0}),uD=b({surfaceClass:d0,label:c(),count:h().int(),percentage:h(),domainCount:h().int()}),tv=b({totalCitedSlots:h().int(),domainTotal:h().int(),entries:x(cD),truncatedDomainCount:h().int(),truncatedCitedSlots:h().int(),bySurfaceClass:x(uD)});b({overall:x(ev),byQuery:Le(c(),x(ev)),ranked:tv,byProvider:Le(c(),tv),runId:c(),window:o3,limit:h().int().nullable()});const p0=b({total:h().int(),checked:h().int(),mentioned:h().int(),cited:h().int(),mentionRate:h().nullable(),citedRate:h().nullable()}),l3=p0.extend({provider:c(),firstObserved:c(),lastObserved:c()}),dD=p0.extend({queryId:c().nullable(),query:c(),firstObserved:c(),lastObserved:c(),providers:x(l3).optional()}),mD=b({since:c().nullable(),until:c().nullable(),lastRuns:h().int().nullable(),runCount:h().int()}),pD=D(["provider"]),gf=b({domain:c(),mentions:h().int()}),fD=b({percent:h().nullable(),projectMentions:h().int(),competitorMentions:h().int(),snapshotsWithAnswerText:h().int(),perCompetitor:x(gf)});b({project:c(),groupBy:pD.optional(),window:mD,totals:p0,byProvider:x(l3).optional(),queries:x(dD),shareOfVoice:fD.optional()});const hD=D(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),gD=D(["up","down","flat"]),nv=b({point:h().nullable(),ciLow:h().nullable(),ciHigh:h().nullable(),numerator:h().int(),denominator:h().int()}),yD=D(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),bD=b({key:yD,label:c(),driftRobust:F(),from:nv,to:nv,rateRatio:h().nullable(),direction:ct([gD,xe()]),verdict:hD}),av=b({month:c(),since:c(),until:c(),runCount:h().int(),lowRunCount:F()}),vD=b({queryCount:h().int(),excludedFromOnly:h().int(),excludedToOnly:h().int(),providers:x(c()),excludedProviders:x(c())}),kD=b({provider:c(),fromModels:x(c()),toModels:x(c())}),xD=D(["included","model-discontinuous","model-unknown"]),wD=b({provider:c(),status:xD,fromModels:x(c()),toModels:x(c())}),SD=D(["comparable","model-discontinuous","model-unknown","insufficient-data"]),jD=b({status:SD,comparedProviders:x(c()),providers:x(wD)}),ND=b({provider:c(),from:b({checked:h().int(),mentioned:h().int(),cited:h().int()}),to:b({checked:h().int(),mentioned:h().int(),cited:h().int()})}),AD=b({from:b({count:h().int(),of:h().int()}),to:b({count:h().int(),of:h().int()})});b({project:c(),from:av,to:av,basket:vD,metrics:x(bD),queriesMentioned:AD,byProvider:x(ND),modelChanges:x(kD),continuity:jD,competitors:b({from:x(gf),to:x(gf)})});D(["json","csv"]);const _D=b({runId:c(),runKind:ce("answer-visibility"),runStatus:Oi,runTrigger:o0,runCreatedAt:c(),runStartedAt:c().nullable(),runFinishedAt:c().nullable(),snapshotId:c(),snapshotCreatedAt:c(),queryId:c().nullable(),query:c().nullable(),provider:c(),model:c().nullable(),location:c().nullable(),citationState:Pa,cited:F(),answerMentioned:F().nullable(),mentionState:ct([ml,xe()]),citedDomains:x(c()),citedUrls:x(c()).nullable(),captureStatus:ct([s0,xe()]),sourceCount:h().int().nonnegative().nullable(),resolvedCount:h().int().nonnegative().nullable(),captureVersion:h().int().positive().nullable(),competitorOverlap:x(c()),recommendedCompetitors:x(c()),answerText:c().nullable(),groundingSources:x(Mu),searchQueries:x(c())}),CD=b({since:c().nullable(),until:c().nullable(),includeProbes:F()});b({schemaVersion:ce("canonry.results-export/v1"),generatedAt:c(),project:b({id:c(),name:c(),displayName:c(),canonicalDomain:c(),country:c(),language:c()}),filters:CD,recordCount:h().int().nonnegative(),records:x(_D)});const Lu=D(["organic","paid"]);Lu.enum;b({id:c(),projectId:c(),propertyId:c(),clientEmail:c(),connected:F(),createdAt:c(),updatedAt:c()});b({date:c(),landingPage:c(),sessions:h(),organicSessions:h(),users:h()});const f0=D(["session","first_user","manual_utm"]),zD=b({source:c(),medium:c(),trafficClass:Lu,sessions:h(),users:h().optional(),sourceDimension:f0}),ED=b({source:c(),medium:c(),trafficClass:Lu,sourceDimension:f0,landingPage:c(),sessions:h(),users:h().optional()}),TD=b({source:c(),medium:c(),sessions:h(),users:h(),channelGroup:c()}),Zr=b({sessions:h(),sharePct:h(),sharePctDisplay:c()}),DD=b({organic:Zr,social:Zr,direct:Zr,ai:Zr,other:Zr});b({totalSessions:h(),totalOrganicSessions:h(),totalDirectSessions:h(),totalUsers:h().nullable(),topPages:x(b({landingPage:c(),sessions:h(),organicSessions:h(),directSessions:h(),users:h()})),aiReferrals:x(zD),aiReferralLandingPages:x(ED),aiSessionsDeduped:h(),aiUsersDeduped:h().optional(),paidAiSessionsDeduped:h(),paidAiUsersDeduped:h().optional(),organicAiSessionsDeduped:h(),organicAiUsersDeduped:h().optional(),aiSessionsBySession:h(),aiUsersBySession:h().optional(),paidAiSessionsBySession:h(),paidAiUsersBySession:h().optional(),organicAiSessionsBySession:h(),organicAiUsersBySession:h().optional(),socialReferrals:x(TD),socialSessions:h(),socialUsers:h(),channelBreakdown:DD,organicSharePct:h(),aiSharePct:h(),aiSharePctBySession:h(),paidAiSharePct:h(),paidAiSharePctBySession:h(),organicAiSharePct:h(),organicAiSharePctBySession:h(),directSharePct:h(),socialSharePct:h(),organicSharePctDisplay:c(),aiSharePctDisplay:c(),aiSharePctBySessionDisplay:c(),paidAiSharePctDisplay:c(),paidAiSharePctBySessionDisplay:c(),organicAiSharePctDisplay:c(),organicAiSharePctBySessionDisplay:c(),directSharePctDisplay:c(),socialSharePctDisplay:c(),otherSessions:h(),otherSharePct:h(),otherSharePctDisplay:c(),lastSyncedAt:c().nullable()});b({connected:F(),propertyId:c().nullable(),clientEmail:c().nullable(),authMethod:D(["service-account","oauth"]).nullable(),lastSyncedAt:c().nullable(),createdAt:c().nullable().optional(),updatedAt:c().nullable().optional()});b({synced:F(),rowCount:h().int().nonnegative(),aiReferralCount:h().int().nonnegative(),socialReferralCount:h().int().nonnegative(),days:h().int().nonnegative(),syncedAt:c(),measurement:b({acquisition:b({days:h().int().nonnegative(),status:D(["ready","error"]),rowCount:h().int().nonnegative(),error:c().optional()}),leads:b({days:h().int().nonnegative(),status:D(["ready","error","not-configured"]),rowCount:h().int().nonnegative(),attributionScope:D(["landing-page","channel"]).optional(),error:c().optional()})}),syncedComponents:x(c()).optional()});b({date:c(),source:c(),medium:c(),trafficClass:Lu,landingPage:c(),sessions:h(),users:h(),sourceDimension:f0});const OD=b({source:c(),sessions:h(),paidSessions:h(),organicSessions:h()}),RD=b({date:c(),sessions:h(),paidSessions:h(),organicSessions:h(),bySource:x(OD)});b({days:x(RD),sources:x(c()),totalSessions:h(),totalPaidSessions:h(),totalOrganicSessions:h()});b({date:c(),source:c(),medium:c(),sessions:h(),users:h(),channelGroup:c()});b({date:c(),sessions:h(),organicSessions:h(),users:h(),usersSource:D(["deduplicated","landing-page-sum"])});b({id:c(),projectId:c(),runId:c().nullable(),overallCitedRate:h(),overallMentionRate:h(),totalPairs:h().int().nonnegative(),citedPairs:h().int().nonnegative(),mentionedPairs:h().int().nonnegative(),providerBreakdown:Le(c(),b({citedRate:h(),mentionRate:h(),cited:h().int().nonnegative(),mentioned:h().int().nonnegative(),total:h().int().nonnegative()})),createdAt:c(),status:D(["ready","no-data"]),reason:ce("no-runs-yet").optional()});const c3=D(["claude","openai","gemini","zai","deepinfra"]),MD=b({id:c3,label:c(),defaultModel:c(),configured:F(),keySource:D(["config","env"]).nullable()});b({providers:x(MD).default([]),defaultProvider:c3.nullable()});const BD=D(["aero","user","compaction"]);BD.enum;const u3=128;b({key:c().min(1).max(u3),value:c().min(1)});b({key:c().min(1).max(u3)});const $o=D(["commoncrawl","bing-webmaster"]);$o.enum;const h0=D(["queued","downloading","querying","ready","failed"]);h0.enum;b({id:c(),release:c(),status:h0,phaseDetail:c().nullable().optional(),vertexPath:c().nullable().optional(),edgesPath:c().nullable().optional(),vertexSha256:c().nullable().optional(),edgesSha256:c().nullable().optional(),vertexBytes:h().int().nullable().optional(),edgesBytes:h().int().nullable().optional(),projectsProcessed:h().int().nullable().optional(),domainsDiscovered:h().int().nullable().optional(),downloadStartedAt:c().nullable().optional(),downloadFinishedAt:c().nullable().optional(),queryStartedAt:c().nullable().optional(),queryFinishedAt:c().nullable().optional(),error:c().nullable().optional(),createdAt:c(),updatedAt:c()});const qD=b({linkingDomain:c(),numHosts:h().int(),source:$o}),LD=b({projectId:c(),release:c(),targetDomain:c(),totalLinkingDomains:h().int(),totalHosts:h().int(),top10HostsShare:c(),queriedAt:c(),source:$o,excludedLinkingDomains:h().int().optional(),excludedHosts:h().int().optional()});b({source:$o,summary:LD.nullable(),total:h().int(),rows:x(qD)});b({release:c(),totalLinkingDomains:h().int(),totalHosts:h().int(),top10HostsShare:c(),queriedAt:c(),source:$o});const $D=b({source:$o,connected:F(),hasData:F(),latestRelease:c().nullable(),totalLinkingDomains:h().int(),lastSyncedAt:c().nullable()});b({projectId:c(),targetDomain:c(),sources:x($D),anyConnected:F(),anyData:F()});b({duckdbInstalled:F(),duckdbVersion:c().nullable().optional(),duckdbSpec:c(),pluginDir:c()});b({installed:F(),version:c(),path:c(),alreadyPresent:F()});b({release:c(),vertexUrl:c(),edgesUrl:c(),vertexBytes:h().int().nullable(),edgesBytes:h().int().nullable(),lastModified:c().nullable()});b({release:c(),syncStatus:h0.nullable(),bytes:h().int(),lastUsedAt:c().nullable()});const g0=D(["positive","caution","negative","neutral"]),Si=b({label:c(),value:c(),delta:c(),tone:g0,description:c(),tooltip:c().optional(),trend:x(h()),progress:h().optional(),providerCoverage:c().optional()}),ID=Si.extend({breakdown:b({projectMentionSnapshots:h().int().nonnegative(),competitorMentionSnapshots:h().int().nonnegative(),perCompetitor:x(b({domain:c(),mentionSnapshots:h().int().nonnegative(),shareOfCompetitiveTotal:h()})),snapshotsWithAnswerText:h().int().nonnegative(),snapshotsTotal:h().int().nonnegative()})}),Rp=b({gained:h().int().nonnegative(),lost:h().int().nonnegative(),tone:g0,hasPreviousRun:F(),gainedQueries:x(c()).optional(),lostQueries:x(c()).optional()}),UD=b({hasPreviousRun:F(),comparable:F(),querySetChanged:F(),previousRunAt:c().nullable(),currentQueryCount:h().int().nonnegative(),previousQueryCount:h().int().nonnegative(),comparableQueryCount:h().int().nonnegative(),addedQueryCount:h().int().nonnegative(),removedQueryCount:h().int().nonnegative(),addedQueries:x(c()),removedQueries:x(c())}),PD=b({id:c(),projectId:c(),runId:c().nullable(),type:D(["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:D(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),recommendation:b({action:c(),target:c().optional(),reason:c()}).optional(),cause:b({cause:c(),competitorDomain:c().optional(),details:c().optional()}).optional(),dismissed:F(),createdAt:c()}),VD=b({id:c(),projectId:c(),runId:c().nullable(),overallCitedRate:h(),overallMentionRate:h(),totalPairs:h().int().nonnegative(),citedPairs:h().int().nonnegative(),mentionedPairs:h().int().nonnegative(),providerBreakdown:Le(c(),b({citedRate:h(),mentionRate:h(),cited:h().int().nonnegative(),mentioned:h().int().nonnegative(),total:h().int().nonnegative()})),createdAt:c(),status:D(["ready","no-data"]),reason:ce("no-runs-yet").optional()});b({project:W9,latestRun:CT,health:VD.nullable(),topInsights:x(PD),queryCounts:b({totalQueries:h().int().nonnegative(),citedQueries:h().int().nonnegative(),notCitedQueries:h().int().nonnegative(),citedRate:h(),mentionedQueries:h().int().nonnegative(),notMentionedQueries:h().int().nonnegative(),mentionRate:h()}),providers:x(b({provider:c(),citedRate:h(),cited:h().int().nonnegative(),total:h().int().nonnegative()})),transitions:b({since:c().nullable(),gained:h().int().nonnegative(),lost:h().int().nonnegative(),emerging:h().int().nonnegative()}),scores:b({mention:Si,visibility:Si,mentionShare:ID,gapQueries:Si,mentionGaps:Si,indexCoverage:Si,competitorPressure:Si,runStatus:Si}),movementSummary:Rp,citationMovement:Rp,mentionMovement:Rp,movementComparison:UD,competitors:x(b({id:c(),domain:c(),citationCount:h().int().nonnegative(),totalQueries:h().int().nonnegative(),pressureLabel:D(["None","Low","Moderate","High"]),citedQueries:x(c())})),providerScores:x(b({provider:c(),model:c().nullable(),score:h(),cited:h().int().nonnegative(),total:h().int().nonnegative(),trend:x(h()).optional()})),attentionItems:x(b({id:c(),tone:g0,title:c(),detail:c(),actionLabel:c(),href:c()})),runHistory:x(b({runId:c(),createdAt:c(),citedCount:h().int().nonnegative(),totalCount:h().int().nonnegative(),citationRate:h(),mentionedCount:h().int().nonnegative(),mentionRate:h(),status:c()})),suggestedQueries:b({rows:x(b({query:c(),impressions:h(),clicks:h(),avgPosition:h(),reason:c()})),totalCandidates:h().int().nonnegative(),skippedAlreadyTracked:h().int().nonnegative()}),dateRangeLabel:c(),contextLabel:c()});D(["snapshot","insight"]);const GD=b({kind:ce("snapshot"),id:c(),runId:c(),query:c(),provider:c(),model:c().nullable(),citationState:Pa,matchedField:D(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:c(),createdAt:c()}),KD=b({kind:ce("insight"),id:c(),runId:c().nullable(),type:D(["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:D(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),matchedField:D(["title","query","recommendation","cause"]),snippet:c(),dismissed:F(),createdAt:c()}),HD=xn("kind",[GD,KD]);b({query:c(),totalHits:h().int().nonnegative(),truncated:F(),hits:x(HD)});const d3=D(["create","expand","refresh","add-schema"]);d3.enum;function TP(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const m3=D(["gsc","competitor-evidence","both"]);m3.enum;const p3=D(["high","medium","low"]);p3.enum;const QD=D(["blog-post","comparison","listicle","how-to","guide","glossary"]);QD.enum;const f3=D(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);f3.enum;const y0=D(["ownable","ceded"]);y0.enum;const ZD=b({url:c(),gscImpressions:h().nonnegative(),gscClicks:h().nonnegative(),gscAvgPosition:h().nonnegative().nullable(),organicSessions:h().nonnegative()}),FD=b({domain:c(),url:c(),title:c(),citationCount:h().int().nonnegative()}),YD=b({demand:h(),competitor:h(),absence:h(),gapSeverity:h()}),XD=b({actionId:c(),state:f3,lastUpdated:c()}),h3=b({targetRef:c(),query:c(),action:d3,ourBestPage:ZD.nullable(),winningCompetitor:FD.nullable(),score:h(),scoreBreakdown:YD,drivers:x(c()),demandSource:m3,actionConfidence:p3,existingAction:XD.nullable(),winnabilityClass:y0,winnability:h().min(0).max(1).nullable()});b({targets:x(h3),contextMetrics:b({totalAiReferralSessions:h().int().nonnegative(),latestRunId:c(),runTimestamp:c()})});const JD=b({targetRef:c(),addressedUrl:c().nullable(),note:c().nullable(),dismissedAt:c()});b({dismissals:x(JD)});b({targetRef:c().min(1),addressedUrl:c().url().optional(),note:c().max(500).optional()});b({targetRef:c(),promptVersion:c(),provider:c(),model:c(),responseText:c(),costMillicents:h().int().nonnegative(),generatedAt:c()});b({provider:c().optional(),model:c().optional(),forceRefresh:F().optional()});const WD=b({targetQuery:c().trim().min(1),winnabilityClass:y0,angle:c().trim().min(1),whyWinnable:c().trim().min(1),schemaHookup:c().trim().min(1),controllableSurfaceRationale:c().trim().min(1)});b({targetRef:c(),promptVersion:c(),provider:c(),model:c(),brief:WD,costMillicents:h().int().nonnegative(),generatedAt:c()});const eO=b({domain:c(),competitorType:Bu,hits:h().int().nonnegative(),updatedAt:c()});b({classifications:x(eO)});const tO=b({uri:c(),title:c(),domain:c(),isOurDomain:F(),isCompetitor:F(),citationCount:h().int().nonnegative(),providers:x(Mt)}),g3=b({query:c(),groundingSources:x(tO)});b({sources:x(g3),latestRunId:c()});const y3=b({query:c(),competitorDomains:x(c()),competitorCount:h().int().nonnegative(),missRate:h().min(0).max(1),lastSeenInRunId:c()});b({gaps:x(y3),latestRunId:c()});const b3=D(["ok","warn","fail","skipped"]);b3.enum;const b0=D(["global","project"]);b0.enum;const v3=D(["auth","config","providers","integrations","database","schedules","agent"]);v3.enum;const nO=b({id:c(),category:v3,scope:b0,title:c(),status:b3,code:c().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:c(),remediation:c().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Le(c(),Gn()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:h().int().nonnegative().describe("How long the check took to execute.")});b({scope:b0,project:c().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:c().describe("ISO-8601 timestamp when this doctor run started."),durationMs:h().int().nonnegative(),summary:b({total:h().int().nonnegative(),ok:h().int().nonnegative(),warn:h().int().nonnegative(),fail:h().int().nonnegative(),skipped:h().int().nonnegative()}),checks:x(nO)});const aO=b({provider:c(),citationState:Pa,cited:F(),mentioned:F(),runId:c(),runCreatedAt:c()}),iO=b({queryId:c(),query:c(),providers:x(aO),citedCount:h().int().nonnegative(),mentionedCount:h().int().nonnegative(),totalProviders:h().int().nonnegative()}),sO=b({queryId:c(),query:c(),provider:c(),citingCompetitors:x(c()),runId:c(),runCreatedAt:c()}),oO=b({providersConfigured:h().int().nonnegative(),providersCiting:h().int().nonnegative(),providersMentioning:h().int().nonnegative(),totalQueries:h().int().nonnegative(),queriesCitedAndMentioned:h().int().nonnegative(),queriesCitedOnly:h().int().nonnegative(),queriesMentionedOnly:h().int().nonnegative(),queriesInvisible:h().int().nonnegative(),latestRunId:c().nullable(),latestRunAt:c().nullable()});b({summary:oO,byQuery:x(iO),competitorGaps:x(sO),status:D(["ready","no-data"]),reason:D(["no-runs-yet","no-queries"]).optional()});const DP=[7,14,30,90],OP=30;ct([ce(7),ce(14),ce(30),ce(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const rO=D(["prompt","request-param","browser-geo","ignored"]),lO=b({label:c(),city:c(),region:c(),country:c(),otherConfiguredLabels:x(c())}),cO=b({provider:c(),treatment:rO,description:c()}),uO=b({generatedAt:c(),project:b({id:c(),name:c(),displayName:c(),canonicalDomain:c(),country:c(),language:c()}),location:lO.nullable(),providerLocationHandling:x(cO),periodStart:c().nullable(),periodEnd:c().nullable(),periodDays:h().int().positive()}),dO=b({citationRate:h(),citedQueryCount:h(),totalQueryCount:h(),mentionRate:h(),mentionedQueryCount:h(),trend:D(["up","down","flat","unknown"]),queryCount:h(),competitorCount:h(),providerCount:h(),gsc:b({clicks:h(),impressions:h(),ctr:h(),avgPosition:h(),periodStart:c(),periodEnd:c()}).nullable(),ga:b({sessions:h(),users:h(),periodStart:c(),periodEnd:c()}).nullable(),findings:x(b({title:c(),detail:c(),tone:D(["positive","caution","negative","neutral"])}))}),mO=b({citationState:D(["cited","not-cited","pending"]),answerMentioned:F().nullable(),model:c().nullable()}),pO=b({queries:x(c()),providers:x(c()),matrix:x(x(mO.nullable())),providerRates:x(b({provider:c(),citedCount:h(),mentionedCount:h(),totalCount:h(),citationRate:h(),mentionRate:h()}))}),fO=b({domain:c(),citationCount:h(),totalCount:h(),pressureLabel:D(["High","Moderate","Low","None"]),citedQueries:x(c()),sharePct:h(),theirCitedPages:x(b({url:c(),citedFor:x(c())}))}),hO=b({projectCitationCount:h(),competitors:x(fO)}),gO=b({domain:c(),mentionCount:h(),totalCount:h(),pressureLabel:D(["High","Moderate","Low","None"]),mentionedQueries:x(c()),sharePct:h()}),yO=b({projectMentionCount:h(),totalAnswerSnapshots:h(),competitors:x(gO)}),bO=b({category:c(),label:c(),count:h(),sharePct:h()}),vO=b({categories:x(bO),topDomains:x(b({domain:c(),count:h(),isCompetitor:F()}))}),kO=b({query:c(),clicks:h(),impressions:h(),ctr:h(),avgPosition:h(),category:D(["brand","lead-gen","industry","other"])}),xO=b({periodStart:c(),periodEnd:c(),totalClicks:h(),totalImpressions:h(),ctr:h(),avgPosition:h(),topQueries:x(kO),categoryBreakdown:x(b({category:D(["brand","lead-gen","industry","other"]),clicks:h(),impressions:h(),sharePct:h()})),trend:x(b({date:c(),clicks:h(),impressions:h()})),trackedButNoGsc:x(c()),gscButNotTracked:x(c())}),wO=b({totalSessions:h(),totalUsers:h(),totalOrganicSessions:h(),periodStart:c(),periodEnd:c(),topLandingPages:x(b({page:c(),sessions:h(),users:h(),organicSessions:h()})),channelBreakdown:x(b({channel:c(),sessions:h(),sharePct:h()}))}),SO=b({totalSessions:h(),organicSessions:h(),paidSessions:h(),channels:x(b({channelGroup:c(),sessions:h(),sharePct:h()})),topCampaigns:x(b({source:c(),medium:c(),sessions:h()}))}),jO=b({totalSessions:h(),paidSessions:h(),organicSessions:h(),totalUsers:h().optional(),paidUsers:h().optional(),organicUsers:h().optional(),bySource:x(b({source:c(),sessions:h(),users:h().optional(),paidSessions:h(),organicSessions:h(),sharePct:h()})),trend:x(b({date:c(),sessions:h()})),topLandingPages:x(b({page:c(),sessions:h(),users:h().optional()}))}),NO=b({windowStart:c(),windowEnd:c(),hasData:F(),verifiedCrawlerHits:b({current:h(),prior:h(),deltaPct:h().nullable()}),unverifiedCrawlerHits:b({current:h(),prior:h(),deltaPct:h().nullable()}),aiUserFetchHits:b({current:h(),prior:h(),deltaPct:h().nullable()}),referralArrivals:b({current:h(),prior:h(),deltaPct:h().nullable()}),referralArrivalsByClass:b({paid:b({current:h(),prior:h(),deltaPct:h().nullable()}),organic:b({current:h(),prior:h(),deltaPct:h().nullable()}),unclassified:b({current:h(),prior:h(),deltaPct:h().nullable()})}),referralArrivalsClassSummary:c(),byOperator:x(b({operator:c(),verifiedHits:h(),unverifiedHits:h(),userFetchHits:h(),referralArrivals:h(),deltaPct:h().nullable()})),topCrawledPaths:x(b({path:c(),verifiedHits:h(),distinctOperators:h()})),referralProducts:x(b({product:c(),arrivals:h(),distinctLandingPaths:h()})),dailyTrend:x(b({date:c(),verifiedCrawlerHits:h(),userFetchHits:h(),referralArrivals:h()})),topReferralLandingPaths:x(b({path:c(),arrivals:h(),distinctProducts:h()}))}),AO=b({provider:D(["google","bing"]).nullable(),total:h(),indexed:h(),notIndexed:h(),deindexed:h(),unknown:h(),indexedPct:h()}),_O=b({runId:c(),date:c(),citationRate:h(),citedQueryCount:h(),totalQueryCount:h(),mentionRate:h(),mentionedQueryCount:h(),providerRates:x(b({provider:c(),citationRate:h(),mentionRate:h()}))}),yf=b({id:c(),type:D(["regression","gain","opportunity"]),severity:D(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),recommendation:c().nullable(),createdAt:c(),instanceCount:h()}),CO=b({horizon:D(["immediate","short-term","medium-term"]),title:c(),rationale:c()}),lo=b({current:h(),prior:h(),deltaAbs:h(),deltaPct:h().nullable(),direction:D(["up","down","flat"]),window:h().optional()}),zO=b({provider:c(),current:h(),prior:h(),deltaAbs:h(),direction:D(["up","down","flat"])}),EO=b({enoughHistory:F(),headline:c(),citationRate:lo.nullable(),mentionRate:lo.nullable(),citedQueryCount:lo.nullable(),mentionedQueryCount:lo.nullable(),gscClicksDelta:lo.nullable(),aiReferralsDelta:lo.nullable(),comparisonWindowDays:h().int().positive(),providerMovements:x(zO),wins:x(yf),regressions:x(yf)});D(["agency","client"]);const TO=D(["agency","client","both"]),DO=D(["immediate","short-term","medium-term"]),OO=D(["high","medium","low"]);D(["positive","caution","negative","neutral"]);const RO=D(["content","competitors","provider","search-demand","indexing","location","monitoring"]),v0=b({audience:TO,priority:h(),horizon:DO,category:RO,title:c(),action:c(),why:x(c()),evidence:x(c()),successMetric:c(),confidence:OO,targetRef:c().optional()}),MO=b({headline:c(),overview:c(),actionItems:x(v0),confidenceNotes:x(c())}),BO=b({title:c(),detail:c(),severity:D(["positive","caution","negative","neutral"]),evidence:x(c())}),qO=b({priorities:x(v0),diagnostics:x(BO)});function RP(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function MP(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function BP(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function qP(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function LP(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}b({meta:uO,executiveSummary:dO,citationScorecard:pO,competitorLandscape:hO,mentionLandscape:yO,aiSourceOrigin:vO,gsc:xO.nullable(),ga:wO.nullable(),socialReferrals:SO.nullable(),aiReferrals:jO.nullable(),serverActivity:NO.nullable(),indexingHealth:AO.nullable(),citationsTrend:x(_O),whatsChanged:EO,insights:x(yf),recommendedNextSteps:x(CO),actionPlan:x(v0),clientSummary:MO,agencyDiagnostics:qO,contentOpportunities:x(h3),contentGaps:x(y3),groundingSources:x(g3)});const LO=ct([ce(60),ce(90)]),$O=D(["earliest","middle","prior","latest"]),po=b({clicks:h().int().nonnegative(),impressions:h().int().nonnegative()}),k3=b({name:$O,startDate:c(),endDate:c()}),IO=k3.extend({totals:po}),UO=k3.extend({organicSessions:h().int().nonnegative()}),Mp=b({startDate:c(),endDate:c(),observedDays:h().int().nonnegative()}),Qc=b({verified:h().int().nonnegative(),claimedUnverified:h().int().nonnegative(),unknownAiLike:h().int().nonnegative()}),iv=b({total:h().int().nonnegative(),paid:h().int().nonnegative(),organic:h().int().nonnegative(),unknown:h().int().nonnegative()});b({contractVersion:ce("organic-evidence/v1"),periodDays:LO,asOfDate:c().nullable(),coverage:b({gsc:F(),ga4:F(),server:F(),visibility:F()}),sourceCoverage:b({gsc:Mp.nullable(),ga4:Mp.nullable(),server:Mp.nullable(),visibility:b({completedAt:c(),ageDays:h().nonnegative()}).nullable()}),gsc:b({propertyTotals:po,namedBrand:po,namedNonBrand:po,suppressedOrUnreportedResidual:po,cohorts:x(IO)}).nullable(),ga4:b({organicSessions:h().int().nonnegative(),cohorts:x(UO)}).nullable(),gaAiReferrals:b({paidSessions:h().int().nonnegative(),organicSessions:h().int().nonnegative()}).nullable(),server:b({crawlerHits:Qc,userFetchHits:Qc,referralSessions:iv}).nullable(),visibility:b({runId:c(),completedAt:c(),ageDays:h().nonnegative(),answerPairs:h().int().nonnegative(),mentionedPairs:h().int().nonnegative(),citedPairs:h().int().nonnegative()}).nullable(),measurement:p9,pages:x(b({path:c(),gsc:po,ga4OrganicSessions:h().int().nonnegative(),server:b({crawlerHits:Qc,userFetchHits:Qc,referralSessions:iv})})),findings:x(b({tone:D(["positive","caution","neutral"]),title:c(),detail:c()})),limitations:x(b({code:c(),detail:c()}))});const PO=D(["claude","codex"]);PO.enum;const VO=D(["claude","codex","all"]);VO.enum;const x3=b({content:h().int().nonnegative(),sitemap:h().int().nonnegative(),robots:h().int().nonnegative(),asset:h().int().nonnegative(),other:h().int().nonnegative()}),GO=D(["content","sitemap","robots","asset","other"]),k0=D(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);k0.enum;const KO=D(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);KO.enum;const HO=D(["raw-request","aggregate-bucket"]),QO=HO.enum,ZO=D(["observed","provider-aggregated","inferred"]),FO=ZO.enum,YO=b({type:c().nullable(),labels:Le(c(),c())}),XO=b({sourceType:k0,evidenceKind:ce(QO["raw-request"]),confidence:ce(FO.observed),eventId:c().min(1),observedAt:c().min(1),method:c().nullable(),requestUrl:c().nullable(),host:c().nullable(),path:c().min(1),queryString:c().nullable(),status:h().int().nullable(),userAgent:c().nullable(),remoteIp:c().nullable(),referer:c().nullable(),latencyMs:h().nullable(),requestSizeBytes:h().int().nullable(),responseSizeBytes:h().int().nullable(),providerResource:YO,providerLabels:Le(c(),c())});b({events:x(XO),rawEntryCount:h().int().nonnegative(),skippedEntryCount:h().int().nonnegative(),nextPageToken:c().optional(),filter:c()});const w3=D(["connected","paused","error","archived"]),$P=w3.enum,S3=D(["oauth","service-account"]);S3.enum;const JO=D(["verified","claimed_unverified","unknown_ai_like"]),IP=JO.enum;b({gcpProjectId:c().min(1),serviceName:c().nullable().optional(),location:c().nullable().optional(),authMode:S3});b({baseUrl:c().url(),username:c().min(1)});const x0=D(["production","preview"]);x0.enum;b({projectId:c().min(1),teamId:c().min(1),environment:x0});const j3=b({id:c(),projectId:c(),sourceType:k0,displayName:c(),status:w3,lastSyncedAt:c().nullable(),lastCursor:c().nullable(),lastError:c().nullable(),skippedThroughAt:c().nullable(),archivedAt:c().nullable(),config:Le(c(),Gn()),createdAt:c(),updatedAt:c()});b({gcpProjectId:c().min(1),serviceName:c().min(1).optional(),location:c().min(1).optional(),displayName:c().min(1).optional(),keyJson:c().optional()});b({baseUrl:c().url(),username:c().min(1),applicationPassword:c().min(1),displayName:c().min(1).optional()});b({projectId:c().min(1),teamId:c().min(1),token:c().min(1),environment:x0.optional(),displayName:c().min(1).optional()});b({sourceId:c(),runId:c(),syncedAt:c(),pulledEvents:h().int().nonnegative(),selfTrafficExcluded:h().int().nonnegative(),crawlerHits:h().int().nonnegative(),aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),unknownHits:h().int().nonnegative(),crawlerBucketRows:h().int().nonnegative(),aiUserFetchBucketRows:h().int().nonnegative(),aiReferralBucketRows:h().int().nonnegative(),sampleRows:h().int().nonnegative(),windowStart:c(),windowEnd:c()});b({days:h().int().positive().optional()});b({advanceToNow:ce(!0)});b({sourceId:c(),runId:c(),status:Oi,windowStart:c(),windowEnd:c(),daysRequested:h().int().positive(),daysApplied:h().int().positive()});const WO=b({crawlerHits:h().int().nonnegative(),crawlerContentHits:h().int().nonnegative(),crawlerInfraHits:h().int().nonnegative(),crawlerSegments:x3,aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),sampleCount:h().int().nonnegative()});b({sources:x(j3)});const eR=j3.extend({totals24h:WO,latestRun:b({runId:c(),status:Oi,startedAt:c().nullable(),finishedAt:c().nullable(),error:c().nullable()}).nullable()});b({sources:x(eR)});const tR=D(["crawler","ai-user-fetch","ai-referral"]),w0=tR.enum,N3=D(["hour","day"]);N3.enum;const nR=b({bucket:c(),crawlerHits:h().int().nonnegative(),aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative()}),aR=b({kind:ce(w0.crawler),sourceId:c(),tsHour:c(),botId:c(),operator:c(),verificationStatus:c(),pathNormalized:c(),pathClass:GO,status:h().int(),hits:h().int().nonnegative()}),iR=b({kind:ce(w0["ai-user-fetch"]),sourceId:c(),tsHour:c(),botId:c(),operator:c(),verificationStatus:c(),pathNormalized:c(),status:h().int(),hits:h().int().nonnegative()}),sR=b({kind:ce(w0["ai-referral"]),sourceId:c(),tsHour:c(),product:c(),operator:c(),sourceDomain:c(),evidenceType:c(),landingPathNormalized:c(),status:h().int(),hits:h().int().nonnegative(),paidHits:h().int().nonnegative(),organicHits:h().int().nonnegative(),unknownHits:h().int().nonnegative()}),oR=xn("kind",[aR,iR,sR]);b({windowStart:c(),windowEnd:c(),series:b({granularity:N3,points:x(nR)}),totals:b({crawlerHits:h().int().nonnegative(),crawlerContentHits:h().int().nonnegative(),crawlerInfraHits:h().int().nonnegative(),crawlerSegments:x3,aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),aiReferralPaidHits:h().int().nonnegative(),aiReferralOrganicHits:h().int().nonnegative(),aiReferralUnknownHits:h().int().nonnegative()}),eventRows:b({total:h().int().nonnegative(),returned:h().int().nonnegative(),truncated:F()}),events:x(oR)});const A3=D(["queued","running","completed","partial","failed"]),UP=A3.enum,_3=D(["queued","running","completed","failed"]),PP=_3.enum;b({queries:x(c().trim().min(1).max(4e3)).min(1).max(50),provider:c().trim().min(1).optional(),model:c().trim().min(1).max(200).optional(),location:un.nullable().optional(),idempotencyKey:c().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:mo.custom,path:["provider"],message:"provider is required when model is supplied"})});const C3=b({id:c(),projectId:c(),status:A3,provider:c(),requestedModel:c().nullable(),resolvedModel:c(),location:un.nullable(),totalQueries:h().int(),completedQueries:h().int(),failedQueries:h().int(),error:c().nullable(),startedAt:c().nullable(),finishedAt:c().nullable(),createdAt:c()}),rR=b({id:c(),position:h().int(),query:c(),status:_3,requestedModel:c().nullable(),resolvedModel:c(),servedModel:c().nullable(),answerText:c().nullable(),groundingSources:x(Mu),citedDomains:x(c()),searchQueries:x(c()),namedCompetitors:x(c()).default([]),citedCompetitorDomains:x(c()).default([]),answerMentioned:F().nullable(),citationState:Pa.nullable(),error:c().nullable(),startedAt:c().nullable(),finishedAt:c().nullable(),createdAt:c()});C3.extend({queries:x(rR)});b({runs:x(C3)});b({apiKey:c().min(1)});b({id:c(),name:c(),status:c(),currencyCode:c().nullable(),timezone:c().nullable(),url:c().nullable(),reviewStatus:c().nullable(),integrityReviewStatus:c().nullable(),integrityDecision:c().nullable()});b({q:c().trim().min(1).max(200),limit:h().int().min(1).max(100).default(20)});const lR=b({id:c(),type:c(),canonicalName:c(),countryCode:c(),name:c(),regionCode:c().nullable()});b({count:h().int().nonnegative(),query:c(),results:x(lR)});const cR=b({id:c(),clientType:c().optional(),name:c().optional(),pixelId:c().optional()});b({pixels:x(cR)});const uR=b({id:c(),name:c().optional()}),dR=b({id:c(),name:c().optional(),eventType:c().optional(),customEventName:c().nullable().optional(),attributionWindowDays:h().int().positive().optional(),adAccountId:c().optional(),sourceIds:x(c()).optional(),sources:x(uR).optional(),archived:F().optional(),version:h().int().nonnegative().optional()});b({eventSettings:x(dR)});b({connected:F(),adAccountId:c().nullable().optional(),displayName:c().nullable().optional(),currencyCode:c().nullable().optional(),timezone:c().nullable().optional(),status:c().nullable().optional(),reviewStatus:c().nullable().optional(),integrityReviewStatus:c().nullable().optional(),integrityDecision:c().nullable().optional(),lastSyncedAt:c().nullable().optional(),conversionTrackingConfigured:F().optional()});b({disconnected:F()});b({runId:c(),status:c()});const mR=b({type:c().nullable().optional(),title:c().nullable().optional(),body:c().nullable().optional(),targetUrl:c().nullable().optional(),fileId:c().nullable().optional()}),vl=D(["impressions","clicks"]),pR=vl.enum,kl=D(["impression","click"]);kl.enum;const fR=b({id:c(),adGroupId:c(),name:c(),status:c(),reviewStatus:c().nullable().optional(),creative:mR.nullable().optional(),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()}),hR=b({id:c(),campaignId:c(),name:c(),description:c().nullable().optional(),status:c(),billingEventType:ct([kl,xe()]).optional(),maxBidMicros:h().int().nullable().optional(),contextHints:x(c()).default([]),ads:x(fR).default([]),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()}),gR=b({id:c(),name:c(),description:c().nullable().optional(),status:c(),startTime:h().int().nullable().optional(),endTime:h().int().nullable().optional(),biddingType:ct([vl,xe()]).optional(),dailySpendLimitMicros:h().int().nullable().optional(),lifetimeSpendLimitMicros:h().int().nullable().optional(),conversionEventSettingIds:x(c()).default([]),locationIds:x(c()).optional(),adGroups:x(hR).default([]),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()});b({campaigns:x(gR)});const z3=D(["campaign","ad_group"]);z3.enum;const yR=b({level:z3,entityId:c(),date:c(),impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int(),ctr:h().nullable(),cpcMicros:h().int().nullable(),inProgress:F()});b({rows:x(yR),currencyCode:c().nullable().optional()});const E3=b({from:c().nullable(),to:c().nullable(),inProgressDate:c().nullable()}),T3=b({impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int(),ctr:h().nullable(),cpcMicros:h().int().nullable()});b({connected:F(),displayName:c().nullable().optional(),currencyCode:c().nullable().optional(),lastSyncedAt:c().nullable().optional(),campaignCount:h().int(),adGroupCount:h().int(),adCount:h().int(),window:E3,totals:T3});const D3=D(["unavailable","partial","complete"]);D3.enum;const O3=D(["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"]);O3.enum;const R3=D(["unavailable","reported"]);R3.enum;const bR={storedSnapshot:"stored_ads_snapshot"},M3=D(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);M3.enum;const vR=b({id:c(),name:c(),status:c(),reviewStatus:c().nullable()}),kR=b({id:c(),name:c(),status:c(),billingEventType:ct([kl,xe()]),maxBidMicros:h().int().nullable(),contextHints:x(c()),ads:x(vR)}),xR=b({id:c(),name:c(),status:c(),biddingType:ct([vl,xe()]),dailySpendLimitMicros:h().int().nullable(),lifetimeSpendLimitMicros:h().int().nullable(),conversionEventSettingIds:x(c()),adGroups:x(kR)});b({snapshot:b({status:D3,issue:ct([O3,xe()]),lastSyncedAt:c().nullable(),campaignCount:h().int().nonnegative(),adGroupCount:h().int().nonnegative(),adCount:h().int().nonnegative(),sourceSync:b({runId:c(),status:Oi}).nullable()}),historicalCampaignRollups:b({status:R3,window:E3,totals:T3.nullable()}),storedConfiguration:b({basis:ce(bR.storedSnapshot),connection:b({status:c().nullable(),reviewStatus:c().nullable(),integrityReviewStatus:c().nullable(),integrityDecision:c().nullable(),conversionTrackingConfigured:F()}).nullable(),campaigns:x(xR)}),assessment:b({state:M3})});const Ga=c().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),ht=c().min(1).max(200),vs=c().min(3).max(1e3).refine(e=>e.trim().length>0),Eo=h().int().min(946684800).max(4102444800),To=h().int().positive().max(Number.MAX_SAFE_INTEGER),S0=c().regex(/^[a-f0-9]{64}$/),B3=x(ht).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),q3=c().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),L3=D(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_create","ad_update","ad_pause"]);L3.enum;const $3=D(["pending","reconciling","succeeded","failed","unknown"]),wo=$3.enum,I3=D(["known_entity","create_fingerprint","manual_only"]);I3.enum;const U3=D([wo.pending,wo.unknown,wo.reconciling]);U3.enum;const P3=D(["active","paused","archived"]);P3.enum;const V3=D(["file","campaign","ad_group","ad"]);V3.enum;const G3=D(["campaign","ad_group","ad"]);G3.enum;const j0=b({id:ht,expectedUpdatedAt:h().int().nonnegative()}).strict(),wR=j0,xu=100,SR=j0.extend({ads:x(wR).min(1).max(xu-1)}).strict(),jR=j0.extend({adGroups:x(SR).min(1).max(xu-1)}).strict();function NR(e,n){return e<n?-1:e>n?1:0}function sv(e,n,i){for(let s=1;s<e.length;s+=1)if(NR(e[s-1].id,e[s].id)>=0){i.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const K3=b({campaign:jR}).strict().superRefine((e,n)=>{1+e.campaign.adGroups.reduce((r,u)=>r+1+u.ads.length,0)>xu&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${xu} entities`}),sv(e.campaign.adGroups,["campaign","adGroups"],n);const s=new Set;for(let r=0;r<e.campaign.adGroups.length;r+=1){const u=e.campaign.adGroups[r];sv(u.ads,["campaign","adGroups",r,"ads"],n);for(let d=0;d<u.ads.length;d+=1){const g=u.ads[d];s.has(g.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",r,"ads",d,"id"],message:"An ad may appear only once in an activation manifest"}),s.add(g.id)}}}),H3=S0,AR=D(["approved","executing","consumed","revoked","expired","unknown"]),Ia=AR.enum,_R=D(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Ri=_R.enum,CR=b({name:vs.optional(),description:c().max(4e3).nullable().optional(),status:P3.optional(),startTime:Eo.nullable().optional(),endTime:Eo.nullable().optional(),lifetimeSpendLimitMicros:To.min(1e6).optional(),locationIds:x(ht).max(100).optional(),biddingType:vl.optional(),conversionEventSettingIds:B3.optional(),campaignId:ht.optional(),contextHints:x(c().min(1).max(1e3)).max(100).optional(),maxBidMicros:To.max(1e8).optional(),billingEventType:kl.optional(),adGroupId:ht.optional(),creativeFingerprint:S0.optional()}).strict();b({operationKey:Ga,imageUrl:q3});b({operationKey:Ga,name:vs,description:c().max(4e3).optional(),startTime:Eo.optional(),endTime:Eo.optional(),lifetimeSpendLimitMicros:To.min(1e6),locationIds:x(ht).min(1).max(100),biddingType:vl.optional(),conversionEventSettingIds:B3.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"}),e.biddingType===pR.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&n.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});b({operationKey:Ga,campaignId:ht,name:vs,description:c().max(4e3).optional(),contextHints:x(c().min(1).max(1e3)).min(1).max(100),maxBidMicros:To.max(1e8),billingEventType:kl.optional()});const Q3=b({title:c().min(3).max(50),body:c().min(1).max(100),targetUrl:q3,fileId:ht});b({operationKey:Ga,adGroupId:ht,name:vs,creative:Q3});function N0(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}b({operationKey:Ga,expectedUpdatedAt:h().int().nonnegative(),name:vs.optional(),description:c().max(4e3).nullable().optional(),startTime:Eo.nullable().optional(),endTime:Eo.nullable().optional(),lifetimeSpendLimitMicros:To.min(1e6).optional(),locationIds:x(ht).min(1).max(100).optional()}).refine(N0,{message:"At least one campaign field must be updated"});b({operationKey:Ga,expectedUpdatedAt:h().int().nonnegative(),name:vs.optional(),description:c().max(4e3).nullable().optional(),contextHints:x(c().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:To.max(1e8).optional()}).refine(N0,{message:"At least one ad group field must be updated"});b({operationKey:Ga,expectedUpdatedAt:h().int().nonnegative(),name:vs.optional(),creative:Q3.optional()}).refine(N0,{message:"At least one ad field must be updated"});b({operationKey:Ga});const $u=b({id:c(),adAccountId:c().nullable(),operationKey:c(),kind:L3,state:$3,entityType:ct([V3,xe()]),entityId:c().nullable(),upstreamUpdatedAt:h().int().nullable(),errorCode:c().nullable(),errorMessage:c().nullable(),reconcileStrategy:ct([I3,xe()]),reconcileParentId:ht.nullable(),reconcileFingerprint:S0.nullable(),reconcileFields:CR.nullable(),reconcileAttempts:h().int().nonnegative(),lastReconciledAt:c().nullable(),createdAt:c(),updatedAt:c()});b({operation:$u,replayed:F()});const lt=ok({offset:!0}),Io={id:ht,projectId:ht,adAccountId:ht,manifestHash:H3,manifest:K3,executorApiKeyId:ht,approverApiKeyId:ht,expiresAt:lt,approvedAt:lt,createdAt:lt,updatedAt:lt,revocationRequestedAt:lt.nullable()},zR=b({...Io,state:ce(Ia.approved),operationId:xe(),executionStartedAt:xe(),consumedAt:xe(),revokedAt:xe(),expiredAt:xe()}).strict(),ER=b({...Io,state:ce(Ia.executing),operationId:ht,executionStartedAt:lt,consumedAt:xe(),revokedAt:xe(),expiredAt:xe()}).strict(),TR=b({...Io,state:ce(Ia.consumed),operationId:ht,executionStartedAt:lt,consumedAt:lt,revokedAt:xe(),expiredAt:xe()}).strict(),DR=b({...Io,state:ce(Ia.revoked),operationId:xe(),executionStartedAt:xe(),consumedAt:xe(),revokedAt:lt,expiredAt:xe()}).strict(),OR=b({...Io,state:ce(Ia.expired),operationId:xe(),executionStartedAt:xe(),consumedAt:xe(),revokedAt:xe(),expiredAt:lt}).strict(),RR=b({...Io,state:ce(Ia.unknown),operationId:ht,executionStartedAt:lt,consumedAt:xe(),revokedAt:xe(),expiredAt:xe()}).strict(),Z3=xn("state",[zR,ER,TR,DR,OR,RR]).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!==Ia.executing&&e.state!==Ia.unknown&&e.state!==Ia.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Mi={id:ht,operationId:ht,ordinal:h().int().nonnegative(),entityType:G3,entityId:ht,expectedUpdatedAt:h().int().nonnegative(),createdAt:lt,updatedAt:lt},xl={errorCode:xe(),errorMessage:xe()},A0={errorCode:c().min(1).max(100),errorMessage:c().min(1).max(500),remediation:c().min(1).max(500)},MR=b({...Mi,...xl,state:ce(Ri.pending),providerUpdatedAt:xe(),remediation:xe(),startedAt:xe(),finishedAt:xe()}).strict(),BR=b({...Mi,...xl,state:ce(Ri.executing),providerUpdatedAt:xe(),remediation:xe(),startedAt:lt,finishedAt:xe()}).strict(),qR=b({...Mi,...xl,state:ce(Ri.active),providerUpdatedAt:h().int().nonnegative(),remediation:xe(),startedAt:lt,finishedAt:lt}).strict(),LR=b({...Mi,...A0,state:ce(Ri.failed),providerUpdatedAt:ct([h().int().nonnegative(),xe()]),startedAt:lt,finishedAt:lt}).strict(),$R=b({...Mi,...xl,state:ce(Ri.rollback_executing),providerUpdatedAt:h().int().nonnegative(),remediation:c().min(1).max(500),startedAt:lt,finishedAt:xe()}).strict(),IR=b({...Mi,...xl,state:ce(Ri.rolled_back),providerUpdatedAt:h().int().nonnegative(),remediation:c().min(1).max(500),startedAt:lt,finishedAt:lt}).strict(),UR=b({...Mi,...A0,state:ce(Ri.rollback_failed),providerUpdatedAt:h().int().nonnegative(),startedAt:lt,finishedAt:lt}).strict(),PR=b({...Mi,...A0,state:ce(Ri.unknown),providerUpdatedAt:ct([h().int().nonnegative(),xe()]),startedAt:lt,finishedAt:lt}).strict(),VR=xn("state",[MR,BR,qR,LR,$R,IR,UR,PR]),bf={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},GR=D([bf.exact,bf.refreshSemanticallyUnchanged]);b({manifest:K3,executorApiKeyId:ht,expiresAt:lt,versionPolicy:GR.default(bf.exact)}).strict();b({grant:Z3}).strict();b({}).strict();b({operationKey:Ga,grantId:ht,manifestHash:H3}).strict();b({grant:Z3,operation:$u,steps:x(VR)}).strict();const KR=[wo.pending,wo.unknown,wo.reconciling];function HR(e){if(e===void 0||e==="")return KR;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}b({state:n9(HR,x(U3).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:pk().int().min(1).max(200).default(100),cursor:c().min(1).max(1e3).optional()});b({operations:x($u),count:h().int().nonnegative(),nextCursor:c().nullable()});b({}).strict();b({operation:$u,resolved:F()});b({campaignId:c().min(1).max(200).optional(),lookbackDays:pk().int().min(1).max(30).default(7)});const F3=D(["campaign","ad_group","ad"]);F3.enum;const Y3=D(["both","live-only","stored-only"]);Y3.enum;const QR=ce("live-provider-read"),ZR=b({date:c().nullable(),startTime:h().nullable(),endTime:h().nullable(),impressions:h().nullable(),clicks:h().nullable(),spend:h().nullable(),conversions:h().nullable(),ctr:h().nullable(),cpc:h().nullable(),cpm:h().nullable()}),ov=b({impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int()}),FR=b({date:c(),live:ov.nullable(),stored:ov.nullable(),drifted:F()}),YR=b({field:c(),live:c().nullable(),stored:c().nullable()}),XR=b({name:c().nullable(),status:c(),reviewStatus:c().nullable(),mode:c().nullable(),updatedAt:h().nullable()}),JR=b({name:c(),status:c(),reviewStatus:c().nullable(),upstreamUpdatedAt:h().nullable(),syncedAt:c()}),WR=b({entityType:F3,id:c(),parentId:c().nullable(),presence:Y3,live:XR.nullable(),stored:JR.nullable(),fieldDeltas:x(YR),liveMetrics:x(ZR).nullable(),metricDeltas:x(FR).nullable(),drifted:F()}),eM=b({surface:c(),entityId:c().nullable(),upstreamStatus:h().int().nullable()});b({basis:QR,fetchedAt:c(),adAccountId:c(),storedSnapshotSyncedAt:c().nullable(),metricsWindow:b({lookbackDays:h().int().positive()}),bounds:b({maxCampaigns:h().int().positive(),maxAdGroupsPerCampaign:h().int().positive(),maxAdsPerAdGroup:h().int().positive(),maxReaderCalls:h().int().positive(),readerCalls:h().int().nonnegative(),maxPagesPerReaderCall:h().int().positive(),maxUpstreamHttpRequests:h().int().positive(),truncated:F()}),entities:x(WR),drift:b({entitiesCompared:h().int().nonnegative(),driftedEntities:h().int().nonnegative(),statusDrifted:h().int().nonnegative(),metricsDrifted:h().int().nonnegative()}),errors:x(eM)});const X3=D(["admin","viewer"]),tM=/^[a-z\d][\w.-]{0,63}$/i,nM=c().regex(tM,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),rv=12,aM=c().min(rv,`A password must be at least ${rv} characters.`),J3=b({id:c(),name:c(),role:X3,createdAt:c(),lastLoginAt:c().nullable()});b({users:x(J3)});b({name:nM,password:aM,role:X3});b({name:c().min(1),password:c().min(1)});b({authRequired:F(),user:J3.pick({name:!0,role:!0}).nullable()});const At=1,Bp=D(["system","project","queries","competitors","run"]),qp=D(["0","1","2-3","4-5","6-10","11+"]);function fa(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 lv=D(["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","unknown"]),Zc=b({eventId:c().uuid(),flowVersion:ce(At),onboardingSessionId:c().uuid()});xn("event",[Zc.extend({event:ce("onboarding.started"),step:Bp,resumed:F()}).strict(),Zc.extend({event:ce("onboarding.step_completed"),step:Bp,method:D(["existing","inline","manual","generated","skipped","automatic"]),countBucket:qp.optional()}).strict(),Zc.extend({event:ce("onboarding.blocked"),step:Bp,action:D(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:lv}).strict(),Zc.extend({event:ce("run.requested"),origin:ce("dashboard_setup"),result:D(["queued","rejected"]),providerCountBucket:qp,queryCountBucket:qp,reasonCode:lv.optional()}).strict()]);b({accepted:F()});var iM=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(iM||{});const VP={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},GP={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},sM=r0;function oM(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,s]of Object.entries(e.providers)){const r=`[${i}] ${s.message}`;s.raw!==void 0?n.push(`${r}
|
|
53
53
|
|
|
54
54
|
${JSON.stringify(s.raw,null,2)}`):n.push(r)}return n.length>0?n.join(`
|
|
55
55
|
|
|
56
|
-
`):"Run failed."}function oM(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function GP(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function KP(e){return e===null?"Unknown":e?"Pass":"Fail"}function cv(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function HP(e,n){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${n}`:`daily@${n}`}function QP(e,n){if(!e)return{freq:"custom",hour:6,customCron:n};if(e==="twice-daily")return{freq:"twice-daily",hour:6,customCron:""};const i=e.match(/^daily(?:@(\d+))?$/);if(i)return{freq:"daily",hour:i[1]?parseInt(i[1]):6,customCron:""};const s=e.match(/^(weekly@(?:mon|tue|wed|thu|fri|sat|sun))(?:@(\d+))?$/);return s?{freq:s[1],hour:s[2]?parseInt(s[2]):6,customCron:""}:{freq:"custom",hour:6,customCron:n}}function ZP(e,n,i){const s=i==="UTC"?"UTC":i.split("/").pop()?.replace(/_/g," ")??i;if(!e)return`Custom: ${n} · ${s}`;if(e==="twice-daily")return`Twice a day (6am & 6pm) · ${s}`;const r=e.match(/^daily(?:@(\d+))?$/);if(r){const d=r[1]?parseInt(r[1]):6;return`Every day at ${cv(d)} · ${s}`}const u=e.match(/^weekly@(mon|tue|wed|thu|fri|sat|sun)(?:@(\d+))?$/);if(u){const d={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},g=u[2]?parseInt(u[2]):6;return`Every ${d[u[1]]} at ${cv(g)} · ${s}`}return`${e} · ${s}`}function rM(e,n){return n&&n!==e?`${e} · ${n}`:e}function FP(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,n=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(i=>i.type==="timeZoneName")?.value;return rM(e,n)}function lM(e){const n=e.replace(/\/+$/,"")||"/";return n==="/"?"overview":n==="/projects"?"projects":n.startsWith("/projects/")?"project":n==="/runs"?"runs":n==="/traffic"||n.startsWith("/traffic/")?"traffic":n==="/backlinks"?"backlinks":n==="/settings"?"settings":n==="/setup"?"setup":"other"}function cM(e,n){return!n||n.includes(e)}const W3=["overview","search-console","local","discovery","report","activity","backlinks","technical-aeo","history","settings"],uM=new Set(W3);function YP(e){const n=e??W3,i=[...new Set(n.filter(s=>uM.has(s)))];return i.length>0?i:["overview"]}function XP(e,n){return cM(e,n)||!n?e:n.includes("overview")?"overview":n[0]??"overview"}const uv={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg",accent:"--color-link"},dM=/^(?:#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgba?\([0-9.,%\s/]+\)|hsla?\([0-9.,%\s/a-z]+\))$/i,mM=/^[a-z0-9][a-z0-9 -]{0,48}$/i;function ex(e){const n=e?.font?.trim();return n&&mM.test(n)?n:void 0}function pM(e){const n=e?.mode?.trim();return n==="light"||n==="dark"?n:void 0}function fM(e){if(!e)return{};const n={};for(const[s,r]of Object.entries(e)){const u=Object.hasOwn(uv,s)?uv[s]:void 0;if(!u||typeof r!="string")continue;const d=r.trim();dM.test(d)&&(n[u]=d)}const i=ex(e);return i&&(n["--font-sans"]=`"${i}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`),n}function hM(e){const n=ex(e);if(n)return`https://fonts.googleapis.com/css2?family=${n.replace(/ /g,"+")}:wght@400;500;600;700&display=swap`}const je=(e,n,i,s)=>{const r={_id:e,baseUrl:n?.baseUrl||(n?.client??Y).getConfig().baseUrl};return n?.body&&(r.body=n.body),n?.headers&&(r.headers=n.headers),n?.path&&(r.path=n.path),n?.query&&(r.query=n.query),[r]},gM=e=>je("getApiV1ProjectsByName",e),yM=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await d2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:gM(e)}),bM=e=>je("getApiV1ProjectsByNameMeasurementPlan",e),JP=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await uj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:bM(e)}),vM=e=>je("getApiV1ProjectsByNameMeasurementReport",e),WP=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await dj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:vM(e)}),Uo=e=>je("getApiV1Projects",e),Iu=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await mj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:Uo(e)}),kM=e=>je("getApiV1ProjectsByNameResearchRuns",e),eV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await pj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:kM(e)}),tV=e=>({mutationFn:async i=>{const{data:s}=await fj({...e,...i,throwOnError:!0});return s}}),xM=e=>je("getApiV1ProjectsByNameResearchRunsByRunId",e),nV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await hj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:xM(e)}),wM=e=>je("getApiV1ProjectsByNameQueries",e),aV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await m2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:wM(e)}),SM=e=>je("getApiV1ProjectsByNameRuns",e),jM=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await p2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:SM(e)}),_0=e=>je("getApiV1Runs",e),C0=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Cj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:_0(e)}),NM=e=>je("getApiV1RunsById",e),tx=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await f2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:NM(e)}),AM=e=>je("getApiV1ProjectsByNameHistory",e),iV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Tj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:AM(e)}),_M=e=>je("getApiV1History",e),sV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Dj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:_M(e)}),CM=e=>je("getApiV1ProjectsByNameSnapshotsDiff",e),oV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Mj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:CM(e)}),zM=e=>je("getApiV1Settings",e),EM=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await h2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:zM(e)}),TM=e=>je("getApiV1ProjectsByNameGoogleConnections",e),rV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Fj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:TM(e)}),DM=e=>je("getApiV1ProjectsByNameGoogleProperties",e),lV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Jj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:DM(e)}),OM=e=>je("getApiV1ProjectsByNameGoogleGscPerformance",e),cV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await n5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:OM(e)}),RM=e=>je("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),uV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await a5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:RM(e)}),MM=e=>je("getApiV1ProjectsByNameGoogleGscInspections",e),dV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await s5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:MM(e)}),BM=e=>je("getApiV1ProjectsByNameGoogleGscDeindexed",e),mV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await o5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:BM(e)}),qM=e=>je("getApiV1ProjectsByNameGoogleGscCoverage",e),pV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await g2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:qM(e)}),LM=e=>je("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),fV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await r5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:LM(e)}),hV=e=>je("getApiV1ProjectsByNameGoogleGscSitemaps",e),$M=e=>je("getApiV1ProjectsByNameGbpLocations",e),gV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await d5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:$M(e)}),yV=e=>({mutationFn:async i=>{const{data:s}=await m5({...e,...i,throwOnError:!0});return s}}),bV=e=>({mutationFn:async i=>{const{data:s}=await p5({...e,...i,throwOnError:!0});return s}}),IM=e=>je("getApiV1ProjectsByNameGbpKeywords",e),vV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await f5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:IM(e)}),UM=e=>je("getApiV1ProjectsByNameGbpPlaceActions",e),kV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await h5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:UM(e)}),PM=e=>je("getApiV1ProjectsByNameGbpLodging",e),xV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await g5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:PM(e)}),VM=e=>je("getApiV1ProjectsByNameGbpPlaces",e),wV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await y5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:VM(e)}),GM=e=>je("getApiV1ProjectsByNameGbpSummary",e),SV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await b5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:GM(e)}),KM=e=>je("getApiV1ProjectsByNameBingStatus",e),jV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await x5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:KM(e)}),HM=e=>je("getApiV1ProjectsByNameBingSites",e),NV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await w5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:HM(e)}),QM=e=>je("getApiV1ProjectsByNameBingCoverage",e),AV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await y2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:QM(e)}),ZM=e=>je("getApiV1ProjectsByNameBingInspections",e),_V=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await j5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:ZM(e)}),FM=e=>je("getApiV1ProjectsByNameBingPerformance",e),CV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await C5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:FM(e)}),YM=e=>je("getApiV1ProjectsByNameGaStatus",e),zV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await T5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:YM(e)}),XM=e=>je("getApiV1ProjectsByNameGaTraffic",e),EV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await O5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:XM(e)}),JM=e=>je("getApiV1ProjectsByNameGaAiReferralDaily",e),TV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await R5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:JM(e)}),WM=e=>je("getApiV1ProjectsByNameGaSocialReferralHistory",e),DV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await M5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:WM(e)}),eB=e=>je("getApiV1ProjectsByNameGaSessionHistory",e),OV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await B5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:eB(e)}),tB=e=>je("getApiV1ProjectsByNameReport",e),RV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await L5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:tB(e)}),nB=e=>je("getApiV1ProjectsByNameHealthHistory",e),MV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await $5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:nB(e)}),aB=e=>je("getApiV1ProjectsByNameCitationsVisibility",e),BV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await I5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:aB(e)}),iB=e=>je("getApiV1ProjectsByNameTrafficSources",e),qV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await o6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:iB(e)}),sB=e=>je("getApiV1ProjectsByNameTrafficStatus",e),LV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await r6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:sB(e)}),oB=e=>je("getApiV1ProjectsByNameTrafficSourcesById",e),$V=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await l6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:oB(e)}),rB=e=>je("getApiV1ProjectsByNameTrafficEvents",e),IV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await c6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:rB(e)}),lB=e=>je("getApiV1ProjectsByNameDiscoverSessions",e),UV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await d6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:lB(e)}),cB=e=>je("getApiV1ProjectsByNameDiscoverSessionsById",e),PV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await m6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:cB(e)}),uB=e=>je("getApiV1ProjectsByNameDiscoverSessionsByIdPromote",e),VV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await p6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:uB(e)}),dB=e=>je("getApiV1ProjectsByNameTechnicalAeo",e),GV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await h6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:dB(e)}),mB=e=>je("getApiV1ProjectsByNameTechnicalAeoPages",e),KV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await g6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:mB(e)}),pB=e=>je("getApiV1ProjectsByNameTechnicalAeoTrend",e),HV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await y6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:pB(e)}),fB=e=>je("getApiV1ProjectsByNameAgentProviders",e),hB=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await v6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:fB(e)});function dv(e){return e.state==="ok"?"positive":e.state==="checking"?"neutral":"negative"}function nx(e){switch(e){case"completed":return"positive";case"partial":return"caution";case"failed":return"negative";case"cancelled":return"caution";case"queued":case"running":return"neutral";default:return"neutral"}}function QV(e){switch(e){case"cited":return"positive";case"emerging":return"caution";case"not-cited":return"caution";case"lost":return"negative";case"pending":return"neutral";default:return"neutral"}}function ZV(e){return e==="High"?"negative":e==="Moderate"?"caution":"neutral"}const FV={positive:"text-positive-400",caution:"text-caution-400",negative:"text-negative-400",neutral:"text-secondary"};function gB(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function Do(e){const n=[e.detail,e.hint].filter(Boolean);return n.length>0?n.join(`
|
|
57
|
-
`):void 0}function yB(e,n,i){return e.map(s=>{if(s.id==="api")return{...s,tone:dv(n.apiStatus),detail:n.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:n.apiStatus.detail};if(s.id==="worker")return{...s,tone:dv(n.workerStatus),detail:n.workerStatus.state==="ok"?"Healthy":"Needs attention",meta:n.workerStatus.detail};const r=i.providerStatuses.filter(y=>y.state==="ready").length,u=i.providerStatuses.length,d=r>0,g=i.providerStatuses.filter(y=>y.state==="ready").map(y=>gB(y)).join(" · ");return{...s,label:"Providers",tone:d?"positive":"caution",detail:`${r} of ${u} configured`,meta:g||"None configured"}})}function bB(e,n){if(e.apiStatus.state!=="ok")return"Launch is blocked until the API responds cleanly.";if(e.apiStatus.databaseConfigured===!1)return"Launch is blocked until the API has a database connection configured.";if(e.workerStatus.state!=="ok")return"Launch is blocked until the worker is healthy and heartbeats are current.";if(!n.providerStatuses.some(i=>i.state==="ready"))return"Launch is blocked until at least one provider is configured."}function vB(e,n,i){const s=bB(n,i),r=structuredClone(e);return r.healthChecks=r.healthChecks.map(u=>{if(u.id==="api")return{...u,detail:n.apiStatus.detail,state:n.apiStatus.state==="ok"?"ready":"attention"};if(u.id==="worker")return{...u,detail:n.workerStatus.detail,state:n.workerStatus.state==="ok"?"ready":"attention"};const d=i.providerStatuses.some(g=>g.state==="ready");return{...u,detail:d?"At least one provider configured.":"No providers configured.",state:d?"ready":"attention"}}),r.launchState.enabled=s===void 0,r.launchState.blockedReason=s,r.launchState.summary=s??"Queue a visibility sweep first, then follow with a site audit to explain movement.",r}const ax="canonry.run-tracker",vf=new Set;let mv=!1,kB=0,Uu={runs:{},batches:{}};function xB(){const e=Va();for(const n of vf)n(e)}function wB(e){if(!e)return{runs:{},batches:{}};try{const n=JSON.parse(e);return{runs:n.runs??{},batches:n.batches??{}}}catch{return{runs:{},batches:{}}}}function SB(){typeof window>"u"||window.sessionStorage.setItem(ax,JSON.stringify(Uu))}function ix(){mv||(mv=!0,!(typeof window>"u")&&(Uu=wB(window.sessionStorage.getItem(ax))))}function Pu(e){Uu=e,SB(),xB()}function Va(){return ix(),Uu}function sx(e){return ix(),vf.add(e),()=>{vf.delete(e)}}function z0(e){const n=Va();Pu({...n,runs:{...n.runs,[e.id]:{runId:e.id,projectId:e.projectId,projectLabel:e.projectLabel,kind:e.kind,sourceAction:e.sourceAction,lastAnnouncedStatus:e.lastAnnouncedStatus??"queued",trackedAt:e.trackedAt??Date.now()}}})}function Lp(e){const n=Va();if(!n.runs[e])return;const{[e]:i,...s}=n.runs;Pu({...n,runs:s})}function jB(e){const n=Va(),i=`batch_${Date.now()}_${++kB}`;return Pu({...n,batches:{...n.batches,[i]:{batchId:i,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),i}function NB(e){const n=Va();if(!n.batches[e])return;const{[e]:i,...s}=n.batches;Pu({...n,batches:s})}function AB(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const _B=10*6e4;function CB(e,n,i,s){return e.filter(r=>!n.has(r.runId)&&i-(r.trackedAt??0)>=s)}function zB(e,n){let i=0,s=0,r=0,u=0,d=0;for(const g of e){const y=n[g]?.status;y==="completed"?i+=1:y==="partial"?s+=1:y==="failed"?r+=1:y==="cancelled"?u+=1:d+=1}return{completed:i,partial:s,failed:r,cancelled:u,pending:d,finished:d===0}}const pv=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,fv=i2,ox=(e,n)=>i=>{var s;if(n?.variants==null)return fv(e,i?.class,i?.className);const{variants:r,defaultVariants:u}=n,d=Object.keys(r).map(v=>{const w=i?.[v],S=u?.[v];if(w===null)return null;const j=pv(w)||pv(S);return r[v][j]}),g=i&&Object.entries(i).reduce((v,w)=>{let[S,j]=w;return j===void 0||(v[S]=j),v},{}),y=n==null||(s=n.compoundVariants)===null||s===void 0?void 0:s.reduce((v,w)=>{let{class:S,className:j,..._}=w;return Object.entries(_).every(E=>{let[A,C]=E;return Array.isArray(C)?C.includes({...u,...g}[A]):{...u,...g}[A]===C})?[...v,S,j]:v},[]);return fv(e,d,y,i?.class,i?.className)},EB=(e,n)=>{const i=new Array(e.length+n.length);for(let s=0;s<e.length;s++)i[s]=e[s];for(let s=0;s<n.length;s++)i[e.length+s]=n[s];return i},TB=(e,n)=>({classGroupId:e,validator:n}),rx=(e=new Map,n=null,i)=>({nextPart:e,validators:n,classGroupId:i}),wu="-",hv=[],DB="arbitrary..",OB=e=>{const n=MB(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:d=>{if(d.startsWith("[")&&d.endsWith("]"))return RB(d);const g=d.split(wu),y=g[0]===""&&g.length>1?1:0;return lx(g,y,n)},getConflictingClassGroupIds:(d,g)=>{if(g){const y=s[d],v=i[d];return y?v?EB(v,y):y:v||hv}return i[d]||hv}}},lx=(e,n,i)=>{if(e.length-n===0)return i.classGroupId;const r=e[n],u=i.nextPart.get(r);if(u){const v=lx(e,n+1,u);if(v)return v}const d=i.validators;if(d===null)return;const g=n===0?e.join(wu):e.slice(n).join(wu),y=d.length;for(let v=0;v<y;v++){const w=d[v];if(w.validator(g))return w.classGroupId}},RB=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const n=e.slice(1,-1),i=n.indexOf(":"),s=n.slice(0,i);return s?DB+s:void 0})(),MB=e=>{const{theme:n,classGroups:i}=e;return BB(i,n)},BB=(e,n)=>{const i=rx();for(const s in e){const r=e[s];E0(r,i,s,n)}return i},E0=(e,n,i,s)=>{const r=e.length;for(let u=0;u<r;u++){const d=e[u];qB(d,n,i,s)}},qB=(e,n,i,s)=>{if(typeof e=="string"){LB(e,n,i);return}if(typeof e=="function"){$B(e,n,i,s);return}IB(e,n,i,s)},LB=(e,n,i)=>{const s=e===""?n:cx(n,e);s.classGroupId=i},$B=(e,n,i,s)=>{if(UB(e)){E0(e(s),n,i,s);return}n.validators===null&&(n.validators=[]),n.validators.push(TB(i,e))},IB=(e,n,i,s)=>{const r=Object.entries(e),u=r.length;for(let d=0;d<u;d++){const[g,y]=r[d];E0(y,cx(n,g),i,s)}},cx=(e,n)=>{let i=e;const s=n.split(wu),r=s.length;for(let u=0;u<r;u++){const d=s[u];let g=i.nextPart.get(d);g||(g=rx(),i.nextPart.set(d,g)),i=g}return i},UB=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,PB=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,i=Object.create(null),s=Object.create(null);const r=(u,d)=>{i[u]=d,n++,n>e&&(n=0,s=i,i=Object.create(null))};return{get(u){let d=i[u];if(d!==void 0)return d;if((d=s[u])!==void 0)return r(u,d),d},set(u,d){u in i?i[u]=d:r(u,d)}}},kf="!",gv=":",VB=[],yv=(e,n,i,s,r)=>({modifiers:e,hasImportantModifier:n,baseClassName:i,maybePostfixModifierPosition:s,isExternal:r}),GB=e=>{const{prefix:n,experimentalParseClassName:i}=e;let s=r=>{const u=[];let d=0,g=0,y=0,v;const w=r.length;for(let A=0;A<w;A++){const C=r[A];if(d===0&&g===0){if(C===gv){u.push(r.slice(y,A)),y=A+1;continue}if(C==="/"){v=A;continue}}C==="["?d++:C==="]"?d--:C==="("?g++:C===")"&&g--}const S=u.length===0?r:r.slice(y);let j=S,_=!1;S.endsWith(kf)?(j=S.slice(0,-1),_=!0):S.startsWith(kf)&&(j=S.slice(1),_=!0);const E=v&&v>y?v-y:void 0;return yv(u,_,j,E)};if(n){const r=n+gv,u=s;s=d=>d.startsWith(r)?u(d.slice(r.length)):yv(VB,!1,d,void 0,!0)}if(i){const r=s;s=u=>i({className:u,parseClassName:r})}return s},KB=e=>{const n=new Map;return e.orderSensitiveModifiers.forEach((i,s)=>{n.set(i,1e6+s)}),i=>{const s=[];let r=[];for(let u=0;u<i.length;u++){const d=i[u],g=d[0]==="[",y=n.has(d);g||y?(r.length>0&&(r.sort(),s.push(...r),r=[]),s.push(d)):r.push(d)}return r.length>0&&(r.sort(),s.push(...r)),s}},HB=e=>({cache:PB(e.cacheSize),parseClassName:GB(e),sortModifiers:KB(e),...OB(e)}),QB=/\s+/,ZB=(e,n)=>{const{parseClassName:i,getClassGroupId:s,getConflictingClassGroupIds:r,sortModifiers:u}=n,d=[],g=e.trim().split(QB);let y="";for(let v=g.length-1;v>=0;v-=1){const w=g[v],{isExternal:S,modifiers:j,hasImportantModifier:_,baseClassName:E,maybePostfixModifierPosition:A}=i(w);if(S){y=w+(y.length>0?" "+y:y);continue}let C=!!A,O=s(C?E.substring(0,A):E);if(!O){if(!C){y=w+(y.length>0?" "+y:y);continue}if(O=s(E),!O){y=w+(y.length>0?" "+y:y);continue}C=!1}const L=j.length===0?"":j.length===1?j[0]:u(j).join(":"),G=_?L+kf:L,P=G+O;if(d.indexOf(P)>-1)continue;d.push(P);const H=r(O,C);for(let ae=0;ae<H.length;++ae){const R=H[ae];d.push(G+R)}y=w+(y.length>0?" "+y:y)}return y},FB=(...e)=>{let n=0,i,s,r="";for(;n<e.length;)(i=e[n++])&&(s=ux(i))&&(r&&(r+=" "),r+=s);return r},ux=e=>{if(typeof e=="string")return e;let n,i="";for(let s=0;s<e.length;s++)e[s]&&(n=ux(e[s]))&&(i&&(i+=" "),i+=n);return i},YB=(e,...n)=>{let i,s,r,u;const d=y=>{const v=n.reduce((w,S)=>S(w),e());return i=HB(v),s=i.cache.get,r=i.cache.set,u=g,g(y)},g=y=>{const v=s(y);if(v)return v;const w=ZB(y,i);return r(y,w),w};return u=d,(...y)=>u(FB(...y))},XB=[],qt=e=>{const n=i=>i[e]||XB;return n.isThemeGetter=!0,n},dx=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,mx=/^\((?:(\w[\w-]*):)?(.+)\)$/i,JB=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,WB=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,eq=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,tq=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,nq=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,aq=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xi=e=>JB.test(e),qe=e=>!!e&&!Number.isNaN(Number(e)),wi=e=>!!e&&Number.isInteger(Number(e)),$p=e=>e.endsWith("%")&&qe(e.slice(0,-1)),qa=e=>WB.test(e),px=()=>!0,iq=e=>eq.test(e)&&!tq.test(e),T0=()=>!1,sq=e=>nq.test(e),oq=e=>aq.test(e),rq=e=>!ye(e)&&!be(e),lq=e=>Bi(e,gx,T0),ye=e=>dx.test(e),os=e=>Bi(e,yx,iq),bv=e=>Bi(e,gq,qe),cq=e=>Bi(e,vx,px),uq=e=>Bi(e,bx,T0),vv=e=>Bi(e,fx,T0),dq=e=>Bi(e,hx,oq),Fc=e=>Bi(e,kx,sq),be=e=>mx.test(e),Fr=e=>ks(e,yx),mq=e=>ks(e,bx),kv=e=>ks(e,fx),pq=e=>ks(e,gx),fq=e=>ks(e,hx),Yc=e=>ks(e,kx,!0),hq=e=>ks(e,vx,!0),Bi=(e,n,i)=>{const s=dx.exec(e);return s?s[1]?n(s[1]):i(s[2]):!1},ks=(e,n,i=!1)=>{const s=mx.exec(e);return s?s[1]?n(s[1]):i:!1},fx=e=>e==="position"||e==="percentage",hx=e=>e==="image"||e==="url",gx=e=>e==="length"||e==="size"||e==="bg-size",yx=e=>e==="length",gq=e=>e==="number",bx=e=>e==="family-name",vx=e=>e==="number"||e==="weight",kx=e=>e==="shadow",yq=()=>{const e=qt("color"),n=qt("font"),i=qt("text"),s=qt("font-weight"),r=qt("tracking"),u=qt("leading"),d=qt("breakpoint"),g=qt("container"),y=qt("spacing"),v=qt("radius"),w=qt("shadow"),S=qt("inset-shadow"),j=qt("text-shadow"),_=qt("drop-shadow"),E=qt("blur"),A=qt("perspective"),C=qt("aspect"),O=qt("ease"),L=qt("animate"),G=()=>["auto","avoid","all","avoid-page","page","left","right","column"],P=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],H=()=>[...P(),be,ye],ae=()=>["auto","hidden","clip","visible","scroll"],R=()=>["auto","contain","none"],$=()=>[be,ye,y],fe=()=>[xi,"full","auto",...$()],ue=()=>[wi,"none","subgrid",be,ye],me=()=>["auto",{span:["full",wi,be,ye]},wi,be,ye],pe=()=>[wi,"auto",be,ye],Ge=()=>["auto","min","max","fr",be,ye],De=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Ne=()=>["start","end","center","stretch","center-safe","end-safe"],K=()=>["auto",...$()],ee=()=>[xi,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...$()],he=()=>[xi,"screen","full","dvw","lvw","svw","min","max","fit",...$()],Ae=()=>[xi,"screen","full","lh","dvh","lvh","svh","min","max","fit",...$()],le=()=>[e,be,ye],Ye=()=>[...P(),kv,vv,{position:[be,ye]}],M=()=>["no-repeat",{repeat:["","x","y","space","round"]}],re=()=>["auto","cover","contain",pq,lq,{size:[be,ye]}],ne=()=>[$p,Fr,os],ie=()=>["","none","full",v,be,ye],se=()=>["",qe,Fr,os],ze=()=>["solid","dashed","dotted","double"],rt=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Se=()=>[qe,$p,kv,vv],Ke=()=>["","none",E,be,ye],Ze=()=>["none",qe,be,ye],$t=()=>["none",qe,be,ye],En=()=>[qe,be,ye],Ut=()=>[xi,"full",...$()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[qa],breakpoint:[qa],color:[px],container:[qa],"drop-shadow":[qa],ease:["in","out","in-out"],font:[rq],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[qa],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[qa],shadow:[qa],spacing:["px",qe],text:[qa],"text-shadow":[qa],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xi,ye,be,C]}],container:["container"],columns:[{columns:[qe,ye,be,g]}],"break-after":[{"break-after":G()}],"break-before":[{"break-before":G()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:H()}],overflow:[{overflow:ae()}],"overflow-x":[{"overflow-x":ae()}],"overflow-y":[{"overflow-y":ae()}],overscroll:[{overscroll:R()}],"overscroll-x":[{"overscroll-x":R()}],"overscroll-y":[{"overscroll-y":R()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:fe()}],"inset-x":[{"inset-x":fe()}],"inset-y":[{"inset-y":fe()}],start:[{"inset-s":fe(),start:fe()}],end:[{"inset-e":fe(),end:fe()}],"inset-bs":[{"inset-bs":fe()}],"inset-be":[{"inset-be":fe()}],top:[{top:fe()}],right:[{right:fe()}],bottom:[{bottom:fe()}],left:[{left:fe()}],visibility:["visible","invisible","collapse"],z:[{z:[wi,"auto",be,ye]}],basis:[{basis:[xi,"full","auto",g,...$()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,xi,"auto","initial","none",ye]}],grow:[{grow:["",qe,be,ye]}],shrink:[{shrink:["",qe,be,ye]}],order:[{order:[wi,"first","last","none",be,ye]}],"grid-cols":[{"grid-cols":ue()}],"col-start-end":[{col:me()}],"col-start":[{"col-start":pe()}],"col-end":[{"col-end":pe()}],"grid-rows":[{"grid-rows":ue()}],"row-start-end":[{row:me()}],"row-start":[{"row-start":pe()}],"row-end":[{"row-end":pe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Ge()}],"auto-rows":[{"auto-rows":Ge()}],gap:[{gap:$()}],"gap-x":[{"gap-x":$()}],"gap-y":[{"gap-y":$()}],"justify-content":[{justify:[...De(),"normal"]}],"justify-items":[{"justify-items":[...Ne(),"normal"]}],"justify-self":[{"justify-self":["auto",...Ne()]}],"align-content":[{content:["normal",...De()]}],"align-items":[{items:[...Ne(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Ne(),{baseline:["","last"]}]}],"place-content":[{"place-content":De()}],"place-items":[{"place-items":[...Ne(),"baseline"]}],"place-self":[{"place-self":["auto",...Ne()]}],p:[{p:$()}],px:[{px:$()}],py:[{py:$()}],ps:[{ps:$()}],pe:[{pe:$()}],pbs:[{pbs:$()}],pbe:[{pbe:$()}],pt:[{pt:$()}],pr:[{pr:$()}],pb:[{pb:$()}],pl:[{pl:$()}],m:[{m:K()}],mx:[{mx:K()}],my:[{my:K()}],ms:[{ms:K()}],me:[{me:K()}],mbs:[{mbs:K()}],mbe:[{mbe:K()}],mt:[{mt:K()}],mr:[{mr:K()}],mb:[{mb:K()}],ml:[{ml:K()}],"space-x":[{"space-x":$()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":$()}],"space-y-reverse":["space-y-reverse"],size:[{size:ee()}],"inline-size":[{inline:["auto",...he()]}],"min-inline-size":[{"min-inline":["auto",...he()]}],"max-inline-size":[{"max-inline":["none",...he()]}],"block-size":[{block:["auto",...Ae()]}],"min-block-size":[{"min-block":["auto",...Ae()]}],"max-block-size":[{"max-block":["none",...Ae()]}],w:[{w:[g,"screen",...ee()]}],"min-w":[{"min-w":[g,"screen","none",...ee()]}],"max-w":[{"max-w":[g,"screen","none","prose",{screen:[d]},...ee()]}],h:[{h:["screen","lh",...ee()]}],"min-h":[{"min-h":["screen","lh","none",...ee()]}],"max-h":[{"max-h":["screen","lh",...ee()]}],"font-size":[{text:["base",i,Fr,os]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,hq,cq]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",$p,ye]}],"font-family":[{font:[mq,uq,n]}],"font-features":[{"font-features":[ye]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,be,ye]}],"line-clamp":[{"line-clamp":[qe,"none",be,bv]}],leading:[{leading:[u,...$()]}],"list-image":[{"list-image":["none",be,ye]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",be,ye]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:le()}],"text-color":[{text:le()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ze(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",be,os]}],"text-decoration-color":[{decoration:le()}],"underline-offset":[{"underline-offset":[qe,"auto",be,ye]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:$()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",be,ye]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",be,ye]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Ye()}],"bg-repeat":[{bg:M()}],"bg-size":[{bg:re()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},wi,be,ye],radial:["",be,ye],conic:[wi,be,ye]},fq,dq]}],"bg-color":[{bg:le()}],"gradient-from-pos":[{from:ne()}],"gradient-via-pos":[{via:ne()}],"gradient-to-pos":[{to:ne()}],"gradient-from":[{from:le()}],"gradient-via":[{via:le()}],"gradient-to":[{to:le()}],rounded:[{rounded:ie()}],"rounded-s":[{"rounded-s":ie()}],"rounded-e":[{"rounded-e":ie()}],"rounded-t":[{"rounded-t":ie()}],"rounded-r":[{"rounded-r":ie()}],"rounded-b":[{"rounded-b":ie()}],"rounded-l":[{"rounded-l":ie()}],"rounded-ss":[{"rounded-ss":ie()}],"rounded-se":[{"rounded-se":ie()}],"rounded-ee":[{"rounded-ee":ie()}],"rounded-es":[{"rounded-es":ie()}],"rounded-tl":[{"rounded-tl":ie()}],"rounded-tr":[{"rounded-tr":ie()}],"rounded-br":[{"rounded-br":ie()}],"rounded-bl":[{"rounded-bl":ie()}],"border-w":[{border:se()}],"border-w-x":[{"border-x":se()}],"border-w-y":[{"border-y":se()}],"border-w-s":[{"border-s":se()}],"border-w-e":[{"border-e":se()}],"border-w-bs":[{"border-bs":se()}],"border-w-be":[{"border-be":se()}],"border-w-t":[{"border-t":se()}],"border-w-r":[{"border-r":se()}],"border-w-b":[{"border-b":se()}],"border-w-l":[{"border-l":se()}],"divide-x":[{"divide-x":se()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":se()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ze(),"hidden","none"]}],"divide-style":[{divide:[...ze(),"hidden","none"]}],"border-color":[{border:le()}],"border-color-x":[{"border-x":le()}],"border-color-y":[{"border-y":le()}],"border-color-s":[{"border-s":le()}],"border-color-e":[{"border-e":le()}],"border-color-bs":[{"border-bs":le()}],"border-color-be":[{"border-be":le()}],"border-color-t":[{"border-t":le()}],"border-color-r":[{"border-r":le()}],"border-color-b":[{"border-b":le()}],"border-color-l":[{"border-l":le()}],"divide-color":[{divide:le()}],"outline-style":[{outline:[...ze(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,be,ye]}],"outline-w":[{outline:["",qe,Fr,os]}],"outline-color":[{outline:le()}],shadow:[{shadow:["","none",w,Yc,Fc]}],"shadow-color":[{shadow:le()}],"inset-shadow":[{"inset-shadow":["none",S,Yc,Fc]}],"inset-shadow-color":[{"inset-shadow":le()}],"ring-w":[{ring:se()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:le()}],"ring-offset-w":[{"ring-offset":[qe,os]}],"ring-offset-color":[{"ring-offset":le()}],"inset-ring-w":[{"inset-ring":se()}],"inset-ring-color":[{"inset-ring":le()}],"text-shadow":[{"text-shadow":["none",j,Yc,Fc]}],"text-shadow-color":[{"text-shadow":le()}],opacity:[{opacity:[qe,be,ye]}],"mix-blend":[{"mix-blend":[...rt(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":rt()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Se()}],"mask-image-linear-to-pos":[{"mask-linear-to":Se()}],"mask-image-linear-from-color":[{"mask-linear-from":le()}],"mask-image-linear-to-color":[{"mask-linear-to":le()}],"mask-image-t-from-pos":[{"mask-t-from":Se()}],"mask-image-t-to-pos":[{"mask-t-to":Se()}],"mask-image-t-from-color":[{"mask-t-from":le()}],"mask-image-t-to-color":[{"mask-t-to":le()}],"mask-image-r-from-pos":[{"mask-r-from":Se()}],"mask-image-r-to-pos":[{"mask-r-to":Se()}],"mask-image-r-from-color":[{"mask-r-from":le()}],"mask-image-r-to-color":[{"mask-r-to":le()}],"mask-image-b-from-pos":[{"mask-b-from":Se()}],"mask-image-b-to-pos":[{"mask-b-to":Se()}],"mask-image-b-from-color":[{"mask-b-from":le()}],"mask-image-b-to-color":[{"mask-b-to":le()}],"mask-image-l-from-pos":[{"mask-l-from":Se()}],"mask-image-l-to-pos":[{"mask-l-to":Se()}],"mask-image-l-from-color":[{"mask-l-from":le()}],"mask-image-l-to-color":[{"mask-l-to":le()}],"mask-image-x-from-pos":[{"mask-x-from":Se()}],"mask-image-x-to-pos":[{"mask-x-to":Se()}],"mask-image-x-from-color":[{"mask-x-from":le()}],"mask-image-x-to-color":[{"mask-x-to":le()}],"mask-image-y-from-pos":[{"mask-y-from":Se()}],"mask-image-y-to-pos":[{"mask-y-to":Se()}],"mask-image-y-from-color":[{"mask-y-from":le()}],"mask-image-y-to-color":[{"mask-y-to":le()}],"mask-image-radial":[{"mask-radial":[be,ye]}],"mask-image-radial-from-pos":[{"mask-radial-from":Se()}],"mask-image-radial-to-pos":[{"mask-radial-to":Se()}],"mask-image-radial-from-color":[{"mask-radial-from":le()}],"mask-image-radial-to-color":[{"mask-radial-to":le()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":P()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Se()}],"mask-image-conic-to-pos":[{"mask-conic-to":Se()}],"mask-image-conic-from-color":[{"mask-conic-from":le()}],"mask-image-conic-to-color":[{"mask-conic-to":le()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Ye()}],"mask-repeat":[{mask:M()}],"mask-size":[{mask:re()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",be,ye]}],filter:[{filter:["","none",be,ye]}],blur:[{blur:Ke()}],brightness:[{brightness:[qe,be,ye]}],contrast:[{contrast:[qe,be,ye]}],"drop-shadow":[{"drop-shadow":["","none",_,Yc,Fc]}],"drop-shadow-color":[{"drop-shadow":le()}],grayscale:[{grayscale:["",qe,be,ye]}],"hue-rotate":[{"hue-rotate":[qe,be,ye]}],invert:[{invert:["",qe,be,ye]}],saturate:[{saturate:[qe,be,ye]}],sepia:[{sepia:["",qe,be,ye]}],"backdrop-filter":[{"backdrop-filter":["","none",be,ye]}],"backdrop-blur":[{"backdrop-blur":Ke()}],"backdrop-brightness":[{"backdrop-brightness":[qe,be,ye]}],"backdrop-contrast":[{"backdrop-contrast":[qe,be,ye]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,be,ye]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,be,ye]}],"backdrop-invert":[{"backdrop-invert":["",qe,be,ye]}],"backdrop-opacity":[{"backdrop-opacity":[qe,be,ye]}],"backdrop-saturate":[{"backdrop-saturate":[qe,be,ye]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,be,ye]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":$()}],"border-spacing-x":[{"border-spacing-x":$()}],"border-spacing-y":[{"border-spacing-y":$()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",be,ye]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",be,ye]}],ease:[{ease:["linear","initial",O,be,ye]}],delay:[{delay:[qe,be,ye]}],animate:[{animate:["none",L,be,ye]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[A,be,ye]}],"perspective-origin":[{"perspective-origin":H()}],rotate:[{rotate:Ze()}],"rotate-x":[{"rotate-x":Ze()}],"rotate-y":[{"rotate-y":Ze()}],"rotate-z":[{"rotate-z":Ze()}],scale:[{scale:$t()}],"scale-x":[{"scale-x":$t()}],"scale-y":[{"scale-y":$t()}],"scale-z":[{"scale-z":$t()}],"scale-3d":["scale-3d"],skew:[{skew:En()}],"skew-x":[{"skew-x":En()}],"skew-y":[{"skew-y":En()}],transform:[{transform:[be,ye,"","none","gpu","cpu"]}],"transform-origin":[{origin:H()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ut()}],"translate-x":[{"translate-x":Ut()}],"translate-y":[{"translate-y":Ut()}],"translate-z":[{"translate-z":Ut()}],"translate-none":["translate-none"],accent:[{accent:le()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:le()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",be,ye]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":$()}],"scroll-mx":[{"scroll-mx":$()}],"scroll-my":[{"scroll-my":$()}],"scroll-ms":[{"scroll-ms":$()}],"scroll-me":[{"scroll-me":$()}],"scroll-mbs":[{"scroll-mbs":$()}],"scroll-mbe":[{"scroll-mbe":$()}],"scroll-mt":[{"scroll-mt":$()}],"scroll-mr":[{"scroll-mr":$()}],"scroll-mb":[{"scroll-mb":$()}],"scroll-ml":[{"scroll-ml":$()}],"scroll-p":[{"scroll-p":$()}],"scroll-px":[{"scroll-px":$()}],"scroll-py":[{"scroll-py":$()}],"scroll-ps":[{"scroll-ps":$()}],"scroll-pe":[{"scroll-pe":$()}],"scroll-pbs":[{"scroll-pbs":$()}],"scroll-pbe":[{"scroll-pbe":$()}],"scroll-pt":[{"scroll-pt":$()}],"scroll-pr":[{"scroll-pr":$()}],"scroll-pb":[{"scroll-pb":$()}],"scroll-pl":[{"scroll-pl":$()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",be,ye]}],fill:[{fill:["none",...le()]}],"stroke-w":[{stroke:[qe,Fr,os,bv]}],stroke:[{stroke:["none",...le()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},bq=YB(yq);function Qn(...e){return bq(i2(e))}const vq=ox("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 focus-visible:ring-offset-2 focus-visible:ring-offset-overlay-scrim disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-accent text-on-inverse hover:bg-mono-200",secondary:"border border-base bg-bg text-heading hover:bg-bg-elevated",ghost:"text-secondary hover:bg-bg-elevated hover:text-primary",outline:"border border-base bg-transparent text-heading hover:bg-bg-elevated",destructive:"bg-negative-600 text-on-emphasis hover:bg-negative-700"},size:{default:"h-10 px-4 md:h-9",sm:"h-9 px-3 text-xs md:h-8",icon:"size-10 md:size-9"}},defaultVariants:{variant:"default",size:"default"}}),Ee=q.forwardRef(({className:e,variant:n,size:i,asChild:s=!1,...r},u)=>{const d=s?q4:"button";return m.jsx(d,{ref:u,className:Qn(vq({variant:n,size:i,className:e})),...r})});Ee.displayName="Button";const kq=ox("inline-flex items-center rounded-md border px-2 py-0.5 text-[11px] font-medium tracking-wide",{variants:{variant:{neutral:"border-base bg-bg text-neutral",success:"border-positive bg-positive-soft text-positive",warning:"border-caution-500/25 bg-caution-soft text-caution",destructive:"border-negative bg-negative-soft text-negative"}},defaultVariants:{variant:"neutral"}});function xx({className:e,variant:n,...i}){return m.jsx("div",{className:Qn(kq({variant:n}),e),...i})}const xq=220;function xv({compact:e=!1,version:n,updateAvailable:i,onDismissUpdate:s}){const r=!e&&n&&n!=="unknown",[u,d]=q.useState(!1),g=!e&&i&&s,y=()=>{d(!0),window.setTimeout(()=>{s?.(),d(!1)},xq)};return e?m.jsxs(Xe,{to:"/",className:"brand-lockup brand-lockup-compact","aria-label":"Canonry home",children:[m.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"}),m.jsx("span",{className:"brand-copy",children:m.jsx("span",{className:"brand-mark",children:"Canonry"})})]}):m.jsxs("div",{className:"brand-lockup brand-lockup-wrapper",children:[m.jsx(Xe,{to:"/",className:"brand-icon-link","aria-label":"Canonry home",tabIndex:-1,children:m.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"})}),m.jsxs("div",{className:"brand-copy",children:[m.jsx(Xe,{to:"/",className:"brand-mark",children:"Canonry"}),!g&&r?m.jsxs("span",{className:"brand-version",children:["v",n]}):null]}),g?m.jsxs("span",{className:`brand-update-bubble ${u?"brand-update-bubble-closing":""}`,role:"status","aria-live":"polite",children:[m.jsxs("a",{className:"brand-update-bubble-link",href:i.url,target:"_blank",rel:"noopener noreferrer",title:`Open release: ${i.upgradeCommand}`,"aria-label":`New version v${i.latest} available — open release page`,children:[m.jsxs("span",{className:"brand-update-bubble-from",children:["v",i.current]}),m.jsx(wN,{className:"brand-update-bubble-arrow size-3","aria-hidden":"true"}),m.jsxs("span",{className:"brand-update-bubble-to",children:["v",i.latest]})]}),m.jsx("button",{type:"button",className:"brand-update-bubble-dismiss",onClick:y,"aria-label":`Dismiss update notification for v${i.latest}`,children:m.jsx(Bo,{className:"size-3","aria-hidden":"true"})})]}):null]})}function wq({provider:e}){const n={gemini:"border-blue-800/50 bg-blue-950/40 text-blue-300",openai:"border-green-800/50 bg-green-950/40 text-green-300",claude:"border-amber-800/50 bg-amber-950/40 text-amber-300",perplexity:"border-teal-800/50 bg-teal-950/40 text-teal-300",local:"border-purple-800/50 bg-purple-950/40 text-purple-300"},s=Object.hasOwn(n,e)?`provider-badge--${e} ${n[e]}`:"border-zinc-700 bg-zinc-800 text-zinc-300";return m.jsx("span",{className:`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide ${s}`,children:e})}function vn({tone:e,children:n,...i}){const s=e==="positive"?"success":e==="caution"?"warning":e==="negative"?"destructive":"neutral";return m.jsx(xx,{variant:s,...i,children:n})}function D0({status:e}){return m.jsx(vn,{tone:nx(e),children:oM(e)})}const Sq=a2,jq=e2,wx=q.forwardRef(({className:e,...n},i)=>m.jsx(zf,{ref:i,className:Qn("fixed inset-0 z-50 bg-overlay-scrim/70 backdrop-blur-sm",e),...n}));wx.displayName=zf.displayName;const Nq=400,Aq=1200,_q=720,Sx=q.forwardRef(({className:e,children:n,...i},s)=>{const[r,u]=q.useState(_q),d=q.useRef(!1),g=q.useRef(0),y=q.useRef(0),v=q.useCallback(j=>{d.current=!0,g.current=j.clientX,y.current=r,j.target.setPointerCapture(j.pointerId),j.preventDefault()},[r]),w=q.useCallback(j=>{if(!d.current)return;const _=g.current-j.clientX,E=Math.min(Aq,Math.max(Nq,y.current+_));u(E)},[]),S=q.useCallback(()=>{d.current=!1},[]);return m.jsxs(jq,{children:[m.jsx(wx,{}),m.jsxs(Ef,{ref:s,className:Qn("fixed z-50 flex flex-col bg-bg px-5 py-4 shadow-2xl overflow-hidden","max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:max-h-[88vh] max-md:rounded-t-2xl max-md:border-t","md:inset-y-0 md:right-0 md:h-full md:border-l","border-base",e),style:{width:`min(${r}px, 100vw)`},...i,children:[m.jsx("div",{className:"absolute inset-y-0 left-0 w-1.5 cursor-col-resize hover:bg-mono-700/50 active:bg-mono-600/50 transition-colors max-md:hidden",onPointerDown:v,onPointerMove:w,onPointerUp:S}),n,m.jsxs(t2,{className:"absolute right-4 top-4 inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-bg-elevated hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",children:[m.jsx(Bo,{className:"size-4"}),m.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});Sx.displayName=Ef.displayName;const Cq=({className:e,...n})=>m.jsx("div",{className:Qn("flex flex-col gap-1.5 pr-10",e),...n}),jx=q.forwardRef(({className:e,...n},i)=>m.jsx(Tf,{ref:i,className:Qn("text-lg font-medium text-primary",e),...n}));jx.displayName=Tf.displayName;const Nx=q.forwardRef(({className:e,...n},i)=>m.jsx(n2,{ref:i,className:Qn("text-sm text-muted",e),...n}));Nx.displayName=n2.displayName;function Ip({title:e,subtitle:n,children:i,open:s,onClose:r}){return m.jsx(Sq,{open:s,onOpenChange:u=>u?void 0:r(),children:m.jsxs(Sx,{children:[m.jsxs(Cq,{className:"drawer-head",children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:n}),m.jsx(jx,{id:"drawer-title",children:e}),m.jsx(Nx,{className:"sr-only",children:n})]}),m.jsx("div",{className:"drawer-body",children:i})]})})}function Yr({text:e}){const[n,i]=q.useState(null),s=q.useRef(null),r=q.useCallback(()=>{if(!s.current)return;const g=s.current.getBoundingClientRect();i({top:g.top,left:g.left+g.width/2})},[]),u=q.useCallback(()=>i(null),[]),d=q.useCallback(()=>{n===null?r():u()},[n,r,u]);return m.jsxs("span",{className:"info-tooltip-wrapper",onMouseEnter:r,onMouseLeave:u,children:[m.jsx("button",{ref:s,type:"button",className:"info-tooltip-trigger","aria-label":e,"aria-expanded":n!==null,onFocus:r,onBlur:u,onClick:d,onKeyDown:g=>{g.key==="Escape"&&u()},children:m.jsxs("svg",{className:"info-tooltip-icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[m.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),m.jsx("path",{d:"M8 7v4M8 5.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),n!==null&&z4.createPortal(m.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:n.top,left:n.left,transform:"translateX(-50%) translateY(calc(-100% - 8px))",zIndex:9999,pointerEvents:"none",width:"14rem",padding:"0.5rem 0.75rem",fontSize:"11px",fontWeight:400,textTransform:"none",letterSpacing:"normal",lineHeight:"1rem",color:"var(--color-neutral-text)",backgroundColor:"var(--color-bg-elevated)",border:"1px solid color-mix(in oklab, var(--color-border-strong) 60%, transparent)",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px var(--color-shadow-tooltip), 0 4px 6px -4px var(--color-shadow-tooltip)"},children:e}),document.body)]})}const zq=/[\s\-_]+/;function Eq(e){const n=e.split(zq).filter(Boolean);return n.length===0?null:n.map(i=>i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function wv(e,n){const i=Tq(n),s=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(v=>v.startsWith("**")&&v.endsWith("**")?{type:"bold",value:v.slice(2,-2)}:{type:"text",value:v}),r=i.flatMap(v=>v.terms).filter(v=>v.trim().length>1);if(r.length===0)return s.map((v,w)=>v.type==="bold"?ro.createElement("strong",{key:`b-${w}`,className:"text-strong font-semibold"},v.value):v.value).filter(Boolean);const d=[...r].sort((v,w)=>w.length-v.length).map(Eq).filter(v=>!!v);if(d.length===0)return s.map((v,w)=>v.type==="bold"?ro.createElement("strong",{key:`b-${w}`,className:"text-strong font-semibold"},v.value):v.value).filter(Boolean);const g=new RegExp(`(${d.join("|")})`,"gi"),y=new Map;for(const v of i)for(const w of v.terms){const S=ms(w);S&&!y.has(S)&&y.set(S,v.className)}return s.flatMap((v,w)=>v.value.split(g).map((j,_)=>{if(!j)return null;if(_%2===1){const A=y.get(ms(j))??"answer-highlight";return v.type==="bold"?ro.createElement("mark",{key:`hl-${w}-${_}`,className:A},ro.createElement("strong",{className:"text-strong font-semibold"},j)):ro.createElement("mark",{key:`hl-${w}-${_}`,className:A},j)}return v.type==="bold"?ro.createElement("strong",{key:`b-${w}-${_}`,className:"text-strong font-semibold"},j):j})).filter(Boolean)}function Tq(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function xf(e){const n=(e??"").trim();return n&&(n.startsWith("/")||/^https?:\/\//i.test(n)||/^mailto:/i.test(n))?n:null}function Up(e,n){switch(e){case"new":return"First observation";case"emerging":return"First mention";case"lost":return"Lost since last run";default:return n==="mentioned"||n==="visible"?"Mentioned in latest run":n==="pending"?"Awaiting first run":"Not mentioned in latest run"}}function Dq({evidence:e,project:n,onClose:i}){const[s,r]=q.useState(!1),[u,d]=q.useState("mentions"),[g,y]=q.useState(-1),[v,w]=q.useState(null),[S,j]=q.useState(!1),[_,E]=q.useState({}),A=ez(n.project),C=new Set(A.map(df)),O=e.runHistory,L=O.length>1,[G,P]=q.useState(null),H=q.useRef(!1);q.useEffect(()=>{if(H.current||e.answerSnippet&&(e.visibilityState!=null||e.answerMentioned!=null))return;const ne=O.at(-1);ne&&(H.current=!0,cu(ne.runId).then(ie=>{const se=ie.snapshots?.find(ze=>ze.query===e.query&&ze.provider===e.provider);se&&P({citationState:se.citationState,answerMentioned:se.answerMentioned,visibilityState:se.visibilityState,visibilityTransition:ne.visibilityTransition,provider:se.provider,model:se.model??e.model,answerSnippet:se.answerText??e.answerSnippet,citedDomains:se.citedDomains??e.citedDomains,competitorDomains:se.competitorOverlap??e.competitorDomains,recommendedCompetitors:se.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:se.matchedTerms??e.matchedTerms??[],groundingSources:se.groundingSources??e.groundingSources,searchQueries:se.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,O]);const ae=g>=0&&v!==null,R=ae?v:G||{citationState:e.citationState,answerMentioned:e.answerMentioned,visibilityState:e.visibilityState,visibilityTransition:O.at(-1)?.visibilityTransition,provider:e.provider,model:e.model,answerSnippet:e.answerSnippet,citedDomains:e.citedDomains,competitorDomains:e.competitorDomains,recommendedCompetitors:e.recommendedCompetitors??[],matchedTerms:e.matchedTerms??[],groundingSources:e.groundingSources,searchQueries:e.searchQueries??[],evidenceUrls:e.evidenceUrls,changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary},$=R.visibilityState==="pending"||R.citationState==="pending",fe=$?!1:R.visibilityState!=null?R.visibilityState==="visible":R.answerMentioned!=null?R.answerMentioned:R.citationState===vu.cited||R.citationState==="emerging",ue=R.answerMentioned!=null||R.visibilityState!=null||R.recommendedCompetitors.length>0,me=R.citedDomains.length>0||R.groundingSources.length>0||R.evidenceUrls.length>0,pe=n.project.displayName||n.project.name,Ge=[...A.map(df),pe,pe.split(" ").slice(0,2).join(" "),...R.matchedTerms].filter(ne=>ne.trim().length>2),De=[...R.competitorDomains.flatMap(ne=>{const ie=K9(ne);return ie.length>=4?[ie]:[]}),...R.recommendedCompetitors].filter(ne=>ne.trim().length>2),Ne=[{terms:Ge,className:"answer-highlight-brand"},...De.length>0?[{terms:De,className:"answer-highlight-competitor"}]:[]],K=$?"pending":R.visibilityTransition==="lost"?"lost":fe?"mentioned":"not-mentioned",ee=q.useRef(0),he=q.useCallback(async ne=>{const ie=++ee.current;if(ne===-1||ne===O.length-1){y(-1),w(null),r(!1);return}y(ne),r(!1);const se=O[ne],ze=`${se.runId}::${e.query}::${e.provider}`;if(_[ze]){w(_[ze]);return}j(!0);try{const rt=await cu(se.runId);if(ie!==ee.current)return;const Se=rt.snapshots?.find(Ze=>Ze.query===e.query&&Ze.provider===e.provider)??rt.snapshots?.find(Ze=>Ze.query===e.query),Ke=Se?{citationState:Se.citationState,answerMentioned:Se.answerMentioned,visibilityState:Se.visibilityState,visibilityTransition:se.visibilityTransition,provider:Se.provider,model:Se.model??null,answerSnippet:Se.answerText??"",citedDomains:Se.citedDomains,competitorDomains:Se.competitorOverlap,recommendedCompetitors:Se.recommendedCompetitors??[],matchedTerms:Se.matchedTerms??[],groundingSources:Se.groundingSources,searchQueries:Se.searchQueries,evidenceUrls:[],changeLabel:Up(se.mentionTransition??se.visibilityTransition,se.mentionState??se.visibilityState),summary:""}:{citationState:se.citationState,answerMentioned:se.answerMentioned,visibilityState:se.visibilityState,visibilityTransition:se.visibilityTransition,provider:e.provider,model:se.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:Up(se.mentionTransition??se.visibilityTransition,se.mentionState??se.visibilityState),summary:"Snapshot data not available for this run."};E(Ze=>({...Ze,[ze]:Ke})),w(Ke)}catch{if(ie!==ee.current)return;w({citationState:se.citationState,answerMentioned:se.answerMentioned,visibilityState:se.visibilityState,visibilityTransition:se.visibilityTransition,provider:e.provider,model:se.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:Up(se.mentionTransition??se.visibilityTransition,se.mentionState??se.visibilityState),summary:"Failed to load historical run data."})}finally{ie===ee.current&&j(!1)}},[O,e.query,e.provider,_]),le=(ae||e.historyScope!=="provider")&&R.model?`${R.provider} (${R.model}) · ${R.changeLabel.toLowerCase()}`:`${R.provider} · ${R.changeLabel.toLowerCase()}`,Ye=!ae&&e.historyScope==="provider"?[e.model?`Current model: ${e.model}`:null,e.modelsSeen&&e.modelsSeen.length>1?`History spans ${e.modelsSeen.length} models`:null].filter(Boolean).join(" · "):"",M=fe?{label:"Mentioned in answer",title:"Your brand or domain is mentioned in this answer",meta:le}:R.visibilityTransition==="lost"?{label:"Mention lost",title:"Your brand no longer appears in this answer",meta:le}:$?{label:"Pending",title:"Awaiting first run",meta:"No provider data yet"}:{label:"Not mentioned in answer",title:"Your brand or domain was not mentioned in this answer",meta:le},re=()=>{if(!R.answerSnippet)return null;const ne=R.answerSnippet.split(`
|
|
58
|
-
`),ie=[];let se=[],ze=0;const rt=()=>{if(se.length===0)return;const Se=se.join(" ").trim();Se&&ie.push(m.jsx("p",{className:ie.length>0?"mt-2.5":"",children:wv(Se,Ne)},ze++)),se=[]};for(const Se of ne){const Ke=Se.trim();if(/^[-\u2013\u2014]{3,}$/.test(Ke)){rt(),ie.push(m.jsx("hr",{className:"border-default my-3"},ze++));continue}const Ze=Ke.match(/^(#{1,3})\s+(\S.*)$/);if(Ze){rt();const $t=Ze[1].length,En=Ze[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Ze[2],Ut=$t===1?"text-[13px] font-semibold text-heading mt-4 mb-1":$t===2?"text-xs font-semibold text-strong mt-3 mb-0.5":"text-xs font-medium text-neutral mt-2";ie.push(m.jsx("p",{className:Ut,children:wv(En,Ne)},ze++));continue}if(Ke===""){rt();continue}se.push(Ke)}return rt(),ie};return m.jsx(a2,{open:!0,onOpenChange:ne=>{ne||i()},children:m.jsxs(e2,{children:[m.jsx(zf,{className:"fixed inset-0 z-50 bg-overlay-scrim/80 backdrop-blur-sm"}),m.jsxs(Ef,{className:"evidence-modal","aria-describedby":void 0,children:[m.jsxs("div",{className:"evidence-modal-header",children:[m.jsxs("div",{className:"min-w-0 flex-1",children:[m.jsxs("p",{className:"eyebrow eyebrow-soft",children:[n.project.name," ","·"," ",R.provider||"All providers"]}),m.jsx(Tf,{className:"text-lg font-semibold text-primary truncate",children:e.query})]}),m.jsxs(t2,{className:"inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-mono-800 hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 shrink-0",children:[m.jsx(Bo,{className:"size-4"}),m.jsx("span",{className:"sr-only",children:"Close"})]})]}),L&&m.jsxs("div",{className:"evidence-modal-timeline",children:[m.jsx("p",{className:"drawer-section-label mb-1.5",children:"Run history"}),m.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1",children:O.map((ne,ie)=>{const se=g===-1&&ie===O.length-1||g===ie,ze=ne.visibilityState??(ne.answerMentioned?"visible":"not-visible"),rt=ne.visibilityTransition??ze,Se=ze==="visible"?"bg-positive-400":rt==="emerging"?"bg-caution-400":rt==="lost"?"bg-negative-400":"bg-mono-600",Ze=new Date(ne.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),$t=!!(ne.model&&ie>0&&O[ie-1]?.model&&O[ie-1].model!==ne.model);return m.jsxs("button",{type:"button",className:`evidence-run-dot ${se?"evidence-run-dot--selected":""}`,onClick:()=>{he(ie===O.length-1?-1:ie)},"aria-label":[`Run ${Ze}: ${ze}`,ne.model?`model ${ne.model}`:null,$t?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":se,children:[m.jsx("span",{className:`size-2 rounded-full ${Se} ${$t?"ring-1 ring-caution-300/80 ring-offset-2 ring-offset-bg":""}`,"aria-hidden":"true"}),m.jsx("span",{className:"text-[10px] text-muted",children:Ze})]},ie)})}),g>=0&&g<O.length&&m.jsxs("p",{className:"text-[11px] text-muted mt-1",children:["Viewing run from ",new Date(O[g].createdAt).toLocaleString()," ","—"," ",m.jsx("span",{className:"capitalize",children:O[g].visibilityState??(O[g].answerMentioned?"visible":"not-visible")}),m.jsxs("button",{type:"button",className:"text-secondary hover:text-strong ml-2",onClick:()=>{he(-1)},children:["←"," Back to latest"]})]}),!ae&&(e.modelTransitions?.length??0)>0&&m.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:e.modelTransitions.map(ne=>m.jsx("span",{className:"inline-flex items-center rounded-full border border-caution-400/30 bg-caution-400/10 px-2 py-1 text-[10px] text-caution-100",children:`${ne.fromModel??"unknown"} -> ${ne.toModel??"unknown"} on ${new Date(ne.createdAt).toLocaleDateString()}`},`${ne.runId}:${ne.toModel??"unknown"}`))})]}),m.jsxs("div",{className:"evidence-modal-body",children:[S&&m.jsxs("div",{className:"md:col-span-2 flex items-center justify-center py-12 text-muted text-sm",children:["Loading historical run data","…"]}),!S&&m.jsxs(m.Fragment,{children:[m.jsxs("div",{className:"evidence-modal-main",children:[m.jsxs("div",{className:`evidence-position-hero evidence-position-hero--${K}`,children:[m.jsx("p",{className:`evidence-position-label evidence-position-label--${K}`,children:M.label}),m.jsx("p",{className:`evidence-position-title evidence-position-title--${K}`,children:M.title}),m.jsx("p",{className:"evidence-position-meta",children:M.meta}),Ye&&m.jsx("p",{className:"mt-1 text-[11px] text-muted",children:Ye})]}),R.answerSnippet&&m.jsxs("div",{children:[m.jsx("p",{className:"drawer-section-label",children:"What the AI said"}),m.jsx("div",{className:`answer-snippet-block ${s?"evidence-answer-expanded":"evidence-answer-collapsed"}`,children:re()}),R.answerSnippet.length>280&&m.jsx("button",{type:"button",className:"mt-1.5 text-xs text-muted hover:text-neutral transition-colors",onClick:()=>r(!s),children:s?"↑ Collapse":"↓ Show full answer"})]}),!R.answerSnippet&&!S&&m.jsx("div",{className:"rounded-lg border border-subtle bg-surface-subtle px-4 py-8 text-center text-faint text-sm",children:"No answer text recorded for this run"}),R.searchQueries.length>0&&m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsx("span",{children:"Web searches the model ran"}),m.jsx(Yr,{text:"The search queries this AI model issued while researching your prompt. They reveal how the model reformulated the question — the phrasings worth optimizing your content for. Distinct from grounding sources (what it found) and citations (what it linked)."})]}),m.jsx("ul",{className:"grid gap-1",children:R.searchQueries.map((ne,ie)=>m.jsxs("li",{className:"flex items-start gap-2 text-sm text-neutral",children:[m.jsx(dA,{className:"size-3.5 mt-0.5 shrink-0 text-faint","aria-hidden":"true"}),m.jsx("span",{className:"break-words",children:ne})]},`${ie}-${ne}`))})]}),!ae&&e.relatedTechnicalSignals.length>0&&m.jsxs("div",{children:[m.jsx("p",{className:"drawer-section-label",children:fe?"Why you're visible":"What to fix"}),m.jsx("div",{className:"action-items-list",children:e.relatedTechnicalSignals.map((ne,ie)=>m.jsxs("div",{className:"action-item",children:[m.jsx("svg",{className:`action-item-icon ${fe?"text-positive-400":"text-caution-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:fe?m.jsx("path",{d:"M3 8l3.5 3.5L13 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):m.jsxs(m.Fragment,{children:[m.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),m.jsx("path",{d:"M8 5v3.5M8 10.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),m.jsx("span",{className:"action-item-text",children:ne})]},ie))})]}),R.summary&&m.jsx("p",{className:"text-xs text-faint border-t border-subtle pt-3 mt-1",children:R.summary})]}),m.jsxs("div",{className:"evidence-modal-sidebar",children:[(ue||me)&&m.jsxs("div",{className:"sidebar-tabs",children:[m.jsx("button",{className:`sidebar-tab ${u==="mentions"?"sidebar-tab--active":""}`,onClick:()=>d("mentions"),type:"button",title:"Canonry's answer-level visibility assessment and any company names extracted from the answer text.",children:"Mentions"}),m.jsx("button",{className:`sidebar-tab ${u==="sources"?"sidebar-tab--active":""}`,onClick:()=>d("sources"),type:"button",title:"Grounding links the model used to build the answer. These are supporting sources, not the primary visibility signal.",children:"Sources"})]}),u==="mentions"&&m.jsxs(m.Fragment,{children:[m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsx("span",{children:"Mention in answer"}),m.jsx(Yr,{text:"Canonry scans the AI answer for your owned domains and project name. This is independent from grounding or citation sources."})]}),m.jsxs("div",{className:`mention-status mention-status--${fe?"mentioned":"not-mentioned"}`,children:[m.jsx("span",{className:"mention-status-icon",children:$?"…":fe?"✓":"—"}),m.jsx("span",{className:"mention-status-label",children:$?"Pending":fe?"Mentioned":"Not mentioned"})]}),R.matchedTerms.length>0&&m.jsxs("div",{className:"mt-2",children:[m.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Matched in answer"}),m.jsx("div",{className:"flex flex-wrap gap-1.5",children:R.matchedTerms.map(ne=>m.jsx("span",{className:"mention-chip mention-chip--brand",children:ne},ne))})]}),!$&&!fe&&R.matchedTerms.length===0&&m.jsxs("div",{className:"mt-2",children:[m.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Searched for"}),m.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ge.map(ne=>m.jsx("span",{className:"mention-chip mention-chip--muted",children:ne},ne))}),m.jsx("p",{className:"text-[11px] text-faint mt-1.5",children:"None of these appear in the answer text."})]})]}),(R.recommendedCompetitors.length>0||R.competitorDomains.length>0)&&m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsx("span",{children:"Competitors in answer"}),m.jsx(Yr,{text:"Competitors detected in the answer text or cited source links. Includes both tracked competitors and names extracted by Canonry."})]}),m.jsx("div",{className:"flex flex-wrap gap-1.5",children:(()=>{const ne=R.competitorDomains.map(ze=>ze.replace(/^www\./,"")),ie=new Set(ne.map(ze=>ms(ze.replace(/\.[^.]+$/,""))));return[...R.recommendedCompetitors.filter(ze=>!ie.has(ms(ze))),...ne].map(ze=>m.jsx("span",{className:"mention-chip mention-chip--competitor",children:ze},ze))})()})]})]}),u==="sources"&&m.jsxs(m.Fragment,{children:[R.citedDomains.length>0&&m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsx("span",{children:"Domains from source links"}),m.jsx(Yr,{text:"These domains were extracted from grounding or citation URLs. They are supporting-source metadata, not proof that the answer text mentioned them."})]}),m.jsx("div",{className:"citation-leaderboard",children:R.citedDomains.map((ne,ie)=>{const se=ne.toLowerCase().replace(/^www\./,""),ze=C.has(se),rt=!ze&&R.competitorDomains.some(Ke=>Ke.toLowerCase().replace(/^www\./,"")===se),Se=ze?"you":rt?"competitor":"other";return m.jsxs("div",{className:`citation-leaderboard-item citation-leaderboard-item--${Se}`,children:[m.jsxs("span",{className:"citation-leaderboard-rank",children:["#",ie+1]}),m.jsx("span",{className:"citation-leaderboard-domain",children:ne}),ze&&m.jsx("span",{className:"citation-leaderboard-tag",children:"You"}),rt&&m.jsx("span",{className:"citation-leaderboard-tag",children:"Competitor"})]},ne)})})]}),R.groundingSources.length>0&&m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsxs("span",{children:["Grounding source links (",R.groundingSources.length,")"]}),m.jsx(Yr,{text:"Links the model used as grounding or supporting context while producing the answer. These are not the same thing as answer visibility."})]}),m.jsx("ul",{className:"grid gap-0.5",children:R.groundingSources.map((ne,ie)=>{const se=xf(ne.uri),ze=ne.title||ne.uri;return m.jsx("li",{className:"truncate text-sm",children:se?m.jsx("a",{href:se,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:ze}):m.jsx("span",{className:"text-secondary",children:ze})},ie)})})]}),R.evidenceUrls.length>0&&m.jsxs("div",{children:[m.jsx("p",{className:"drawer-section-label",children:"Evidence URLs"}),m.jsx("ul",{className:"grid gap-1",children:R.evidenceUrls.map(ne=>{const ie=xf(ne);return m.jsx("li",{className:"truncate text-sm",children:ie?m.jsx("a",{href:ie,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:ne}):m.jsx("span",{className:"text-secondary",children:ne})},ne)})})]}),R.citedDomains.length===0&&R.groundingSources.length===0&&R.evidenceUrls.length===0&&m.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No source data ",ae?"for this run":"yet"]})]}),!ue&&!me&&m.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No answer visibility data ",ae?"for this run":"yet"]})]})]})]})]})]})})}function Oq(e){const n=e.match(/^\/projects\/([^/]+)/);if(!n)return null;try{return decodeURIComponent(n[1])}catch{return n[1]}}function Rq(e,n){return e?n?.projects.find(s=>s.project.name===e||s.project.id===e)?.project.name??e:null}function Mq(e,n){return Rq(Oq(e),n)}function aa(e){const n=new Date("2026-02-20");return e.map((i,s)=>({runId:`run_mock_${s+1}`,citationState:i,createdAt:new Date(n.getTime()+s*2*24*60*60*1e3).toISOString()}))}const Pp=[{id:"project_citypoint",name:"Citypoint Dental NYC",canonicalDomain:"citypointdental.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["local intent","priority"],labels:{},providers:[],providerModels:{},measurement:Np,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_harbor",name:"Harbor Legal Group",canonicalDomain:"harborlegal.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["lead gen"],labels:{},providers:[],providerModels:{},measurement:Np,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_northstar",name:"Northstar Orthopedics",canonicalDomain:"northstarortho.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["multi-location"],labels:{},providers:[],providerModels:{},measurement:Np,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1}];function Vu(e){return{id:e.id,projectId:e.projectId,projectName:e.projectName,kind:e.kind,kindLabel:e.kindLabel,status:e.status,trigger:e.trigger??"manual",createdAt:e.createdAt,startedAt:e.startedAt,duration:e.duration,statusDetail:e.statusDetail,summary:e.summary,triggerLabel:e.triggerLabel}}const Bq=Vu({id:"run_citypoint_visibility_20260308",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T12:15:00.000Z",startedAt:"Mar 8, 12:15 PM",duration:"6m 12s",statusDetail:"18 tracked queries checked; 3 citation losses detected on emergency-intent prompts.",summary:"Citation losses on emergency-intent prompts",triggerLabel:"Scheduled"}),qq=Vu({id:"run_citypoint_queued_20260309",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"queued",createdAt:"2026-03-09T08:05:00.000Z",startedAt:"Mar 9, 8:05 AM",duration:"Waiting for slot",statusDetail:"Ready to enqueue after the next provider rate window clears.",summary:"Queued follow-up after local ranking movement",triggerLabel:"Manual"}),Lq=Vu({id:"run_harbor_visibility_20260308",projectId:"project_harbor",projectName:"Harbor Legal Group",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T11:05:00.000Z",startedAt:"Mar 8, 11:05 AM",duration:"5m 07s",statusDetail:"12 tracked queries checked; local-intent visibility held steady across branded prompts.",summary:"Branded prompts remain stable",triggerLabel:"Scheduled"}),$q=Vu({id:"run_northstar_visibility_20260308",projectId:"project_northstar",projectName:"Northstar Orthopedics",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"running",createdAt:"2026-03-08T13:40:00.000Z",startedAt:"Mar 8, 1:40 PM",duration:"3m 10s",statusDetail:"Provider responses still in flight for 9 multi-location prompts.",summary:"Mid-run on treatment-location prompts",triggerLabel:"Manual"}),Iq=[{id:"evidence_citypoint_emergency_gemini",query:"emergency dentist brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"lost",changeLabel:"Lost since Mar 5",answerSnippet:"For urgent dental care in Brooklyn, Downtown Smiles and Harbor Dental are now cited first for emergency availability and same-day booking.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:["https://downtownsmiles.com/emergency-dentist-brooklyn","https://harbordental.com/same-day-emergency-care"],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing on the emergency service page","llms.txt not found during latest site audit","Location pages link weakly into the emergency care hub"],summary:"AI answers now cite two competitors while your emergency page is no longer grounded.",runHistory:aa(["cited","cited","cited","cited","cited","cited","cited","not-cited","not-cited"])},{id:"evidence_citypoint_emergency_openai",query:"emergency dentist brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"Cited for 6 runs",answerSnippet:"Citypoint Dental is listed as a top emergency dentist in Brooklyn for same-day appointments and walk-in availability.",citedDomains:["citypointdental.com","downtownsmiles.com"],evidenceUrls:["https://citypointdental.com/emergency-dentist-brooklyn"],competitorDomains:["downtownsmiles.com"],groundingSources:[],relatedTechnicalSignals:["Emergency page indexed with structured data"],summary:"OpenAI cites your emergency page consistently alongside one competitor.",runHistory:aa(["not-cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_emergency_claude",query:"emergency dentist brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"Based on the search results, top-rated emergency dental practices in Brooklyn include Downtown Smiles and Harbor Dental.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:[],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing","llms.txt not found"],summary:"Claude does not cite your domain for this emergency query.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_invisalign_openai",query:"best invisalign dentist downtown brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"emerging",changeLabel:"First citation in 7 days",answerSnippet:"Citypoint Dental appears as an emerging recommendation for Invisalign in Downtown Brooklyn, supported by recent before-and-after case pages.",citedDomains:["citypointdental.com","clearlineortho.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn","https://citypointdental.com/case-studies/invisalign-open-bite"],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["Structured data now present on two case-study pages","Internal links from service pages to case studies improved crawl depth"],summary:"Fresh case-study content is starting to earn citations on Invisalign prompts.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","cited"])},{id:"evidence_citypoint_invisalign_gemini",query:"best invisalign dentist downtown brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"cited",changeLabel:"Cited for 8 runs",answerSnippet:"Citypoint Dental in Downtown Brooklyn is highlighted for its Invisalign expertise and patient outcomes.",citedDomains:["citypointdental.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn"],competitorDomains:[],groundingSources:[],relatedTechnicalSignals:["Case study pages well-indexed"],summary:"Gemini consistently cites your Invisalign page with no competitor overlap.",runHistory:aa(["cited","cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_invisalign_claude",query:"best invisalign dentist downtown brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For Invisalign in Downtown Brooklyn, Clear Line Ortho and Brooklyn Smiles are frequently recommended for their experienced orthodontists.",citedDomains:["clearlineortho.com","brooklynsmiles.com"],evidenceUrls:[],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["No before/after schema on case study pages"],summary:"Claude does not surface your Invisalign content despite strong page quality.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_claude",query:"pediatric dentist brooklyn heights",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 4 runs",answerSnippet:"Answers cite neighborhood-specific pediatric practices with stronger family-focused FAQ content and clearer insurance details.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:["https://brightkidsdental.com/pediatric-dentist-brooklyn-heights","https://parkpediatricdental.com/insurance"],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric service page exists for Brooklyn Heights","Insurance content is buried three clicks deep"],summary:"Coverage gap is content-driven, not purely technical.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_gemini",query:"pediatric dentist brooklyn heights",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For pediatric dentistry in Brooklyn Heights, Bright Kids Dental and Park Pediatric Dental are cited for family-friendly care.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:[],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric page for Brooklyn Heights"],summary:"Gemini does not surface your domain for pediatric queries in this area.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_openai",query:"pediatric dentist brooklyn heights",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"First citation this month",answerSnippet:"Citypoint Dental is mentioned as offering pediatric services in Brooklyn, though specialized pediatric-only practices are also highlighted.",citedDomains:["citypointdental.com","brightkidsdental.com"],evidenceUrls:["https://citypointdental.com/family-dentistry"],competitorDomains:["brightkidsdental.com"],groundingSources:[],relatedTechnicalSignals:["Family dentistry page recently updated"],summary:"OpenAI recently started citing your family dentistry page for this query.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];Pp[0],Math.round(1/9*100),Math.round(2/9*100),Pp[1],aa(["cited","cited","cited","cited","cited"]),Pp[2],Math.round(2/7*100),Math.round(3/7*100),aa(["not-cited","not-cited","not-cited","cited"]);function Uq(e,n){return e.runs.find(i=>i.id===n)}function Pq(e,n){for(const i of e.projects){const s=i.visibilityEvidence.find(r=>r.id===n);if(s)return{project:i,evidence:s}}}function Vq(e,n,i){if(e){const s=e.visibilityEvidence.find(r=>r.id===i);if(s)return{project:e,evidence:s}}if(n)return Pq(n,i)}const Gq={regression:"negative",gain:"positive",opportunity:"caution","first-citation":"positive","provider-pickup":"positive","persistent-gap":"caution","competitor-gained":"negative","competitor-lost":"neutral","gbp-lodging-gap":"negative","gbp-listing-discrepancy":"negative","gbp-cta-gap":"caution","gbp-description-missing":"caution","gbp-metric-drop":"negative","gbp-keyword-drop":"negative"},Kq={opportunity:"write","persistent-gap":"write","competitor-gained":"write","competitor-lost":"write",regression:"investigate",gain:"monitor","first-citation":"monitor","provider-pickup":"monitor","gbp-lodging-gap":"write","gbp-listing-discrepancy":"write","gbp-cta-gap":"write","gbp-description-missing":"write","gbp-metric-drop":"investigate","gbp-keyword-drop":"investigate"},Hq={regression:"lost",gain:"emerging",opportunity:"not-cited","first-citation":"emerging","provider-pickup":"emerging","persistent-gap":"not-cited","competitor-gained":"cited","competitor-lost":"not-cited","gbp-lodging-gap":"not-cited","gbp-listing-discrepancy":"not-cited","gbp-cta-gap":"not-cited","gbp-description-missing":"not-cited","gbp-metric-drop":"lost","gbp-keyword-drop":"lost"},Qq={regression:"Regression",gain:"Gain",opportunity:"Opportunity","first-citation":"First citation","provider-pickup":"Pickup","persistent-gap":"Gap","competitor-gained":"Competitor","competitor-lost":"Competitor","gbp-lodging-gap":"Lodging gap","gbp-listing-discrepancy":"Listing gap","gbp-cta-gap":"Booking CTA","gbp-description-missing":"Description gap","gbp-metric-drop":"Metric drop","gbp-keyword-drop":"Keyword drop"};function Zq(e){return{id:e.id,tone:Gq[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??Qq[e.type],actionGroup:Kq[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:Hq[e.type]}]}}function Fq(e){return e.filter(n=>!n.dismissed).map(Zq)}function Ax(e){return{id:e.id,name:e.name,displayName:e.displayName,canonicalDomain:e.canonicalDomain,ownedDomains:e.ownedDomains??[],aliases:e.aliases??[],country:e.country,language:e.language,tags:e.tags,labels:e.labels,providers:e.providers??[],providerModels:e.providerModels??{},measurement:e.measurement,locations:e.locations??[],defaultLocation:e.defaultLocation??null,autoExtractBacklinks:e.autoExtractBacklinks??!1,configSource:e.configSource,configRevision:e.configRevision,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Sv(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function Yq(e,n){if(!e)return"Waiting";if(!n)return"Running";const i=new Date(n).getTime()-new Date(e).getTime();if(i<1e3)return"<1s";const s=Math.floor(i/1e3);if(s<60)return`${s}s`;const r=Math.floor(s/60),u=s%60;return`${r}m ${u}s`}function _x(e){switch(e){case Te["answer-visibility"]:return"Answer visibility sweep";case Te["gsc-sync"]:return"GSC sync";case Te["inspect-sitemap"]:return"Sitemap inspection";case Te["ga-sync"]:return"GA sync";case Te["traffic-sync"]:return"Traffic sync";case Te["bing-inspect"]:return"Bing URL inspection";case Te["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Te["site-audit"]:return"Site audit";case Te["backlink-extract"]:return"Backlink extract";case Te["aeo-discover-seed"]:return"Discovery (seed phase)";case Te["aeo-discover-probe"]:return"Discovery (probe phase)";case Te["gbp-sync"]:return"Business Profile sync";case Te["ads-sync"]:return"ChatGPT ads sync"}}function Xq(e){return e===xo.manual?"Manual":e===xo.scheduled?"Scheduled":e===xo["config-apply"]?"Config apply":e}function Gu(e,n){return{id:e.id,projectId:e.projectId,projectName:n,kind:e.kind,kindLabel:_x(e.kind),status:e.status,trigger:e.trigger??"manual",location:e.location??null,createdAt:e.createdAt,startedAt:e.startedAt?Sv(e.startedAt):Sv(e.createdAt),duration:Yq(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?Cx(e.error):Jq(e),summary:Wq(e),triggerLabel:Xq(e.trigger)}}function Cx(e){const n=r0(e);return n.length>200?n.slice(0,200)+"…":n}function Jq(e){switch(e.status){case sn.queued:return"Waiting for execution slot.";case sn.running:return"Provider queries in progress.";case sn.completed:return"All queries checked.";case sn.partial:return"Run completed with some queries skipped.";case sn.failed:return e.error?Cx(e.error):"Run failed.";case sn.cancelled:return"Run was cancelled.";default:return""}}function Wq(e){const n=_x(e.kind);switch(e.status){case sn.queued:return`${n} queued`;case sn.running:return`${n} in progress`;case sn.completed:return`${n} completed`;case sn.partial:return`${n} partially completed`;case sn.failed:return`${n} failed`;case sn.cancelled:return`${n} cancelled`;default:return e.status}}function eL(e,n,i,s){const r=[];let u=0;const d=new Set;if(i.length>0){const g=i.flatMap(E=>E.snapshots??[]),y=new Map;for(const E of g)if(E.query){const A=`${E.query}::${E.provider}::${E.location??""}`;y.set(A,E)}const v=new Set(g.map(E=>E.location??null));v.size===0&&v.add(null);const w=new Set(g.map(E=>E.provider)),S=new Set(n.flatMap(E=>Object.keys(E.providerRuns??{}))),j=[...new Set([...w,...S])].sort(),_=j.length>0?j:["gemini"];for(const E of n){if(E.runs.length===0)continue;d.add(E.query);const A=E.runs.at(-1),C=A?.transition??"not-cited";for(const O of _){const L=[...v].filter(H=>y.has(`${E.query}::${O}::${H??""}`)),G=(E.providerRuns?.[O]?.length??0)>0,P=L.length>0?L:G?[null]:[];for(const H of P){const ae=H??"",R=y.get(`${E.query}::${O}::${ae}`),$=R?.model??null,fe=$?`${O}:${$}`:null,ue=E.providerRuns?.[O],me=fe?E.modelRuns?.[fe]:void 0,pe=Ke=>Ke?.filter(Ze=>(Ze.location??null)===H),Ge=L.length>0?pe(ue):ue,De=L.length>0?pe(me):me,Ne=(Ge?.length?Ge:null)??(De?.length?De:null),K=Ge?.length?"provider":De?.length?"model":"query",ee=Ne?Ne.at(-1).transition:C,he=Ne?Ne.at(-1).visibilityTransition??(Ne.at(-1).visibilityState==="visible"?"visible":"not-visible"):A?.visibilityTransition??(A?.visibilityState==="visible"?"visible":"not-visible"),Ae=Ne?.at(-1)?.citationState,le=Ne?.at(-1)?.visibilityState,Ye=R?ee==="lost"?"lost":ee==="emerging"?"emerging":R.citationState===vu.cited?"cited":"not-cited":Ae===vu.cited?"cited":"not-cited",M=R?.visibilityState??(le==="visible"?"visible":le==="pending"?"pending":"not-visible"),re=jv(Ne||E.runs),ne=Nv(Ne||E.runs),ie=tL(E,O),se=(Ne??E.runs).map(Ke=>({runId:Ke.runId,citationState:Ke.citationState,createdAt:Ke.createdAt,model:ie.get(Ke.runId)??null,answerMentioned:Ke.answerMentioned,visibilityState:Ke.visibilityState,visibilityTransition:Ke.visibilityTransition,mentionState:Ke.mentionState,mentionTransition:Ke.mentionTransition})),ze=nL(se),rt=K==="provider"&&ze.length<=1?"model":K,Se=aL(se);r.push({id:`evidence_${e}_${u++}`,query:E.query,provider:R?.provider??O,model:R?.model??null,location:R?.location??H,citationState:Ye,answerMentioned:R?.answerMentioned,visibilityState:M,visibilityChangeLabel:Av(he,ne,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:Av(ee,re),answerSnippet:R?.answerText??"",citedDomains:R?.citedDomains??[],evidenceUrls:[],competitorDomains:R?.competitorOverlap??[],recommendedCompetitors:R?.recommendedCompetitors??[],matchedTerms:R?.matchedTerms??[],relatedTechnicalSignals:[],groundingSources:R?.groundingSources??[],searchQueries:R?.searchQueries??[],summary:iL(M,he,E.query),runHistory:se,historyScope:rt,modelsSeen:ze,modelTransitions:Se})}}}}for(const g of s)d.has(g.query)||r.push({id:`evidence_${e}_${u++}`,query:g.query,provider:"",model:null,location:null,citationState:"pending",visibilityState:"pending",visibilityChangeLabel:"Awaiting first run",changeLabel:"Awaiting first run",answerSnippet:"",citedDomains:[],evidenceUrls:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],relatedTechnicalSignals:[],groundingSources:[],searchQueries:[],summary:`"${g.query}" has been added but no visibility run has been triggered yet.`,runHistory:[],historyScope:"query",modelsSeen:[],modelTransitions:[]});return r}function tL(e,n){const i=new Map,s=`${n}:`;for(const[r,u]of Object.entries(e.modelRuns??{})){if(!r.startsWith(s))continue;const d=r.slice(s.length),g=d==="unknown"?null:d;for(const y of u)i.set(y.runId,g)}return i}function nL(e){const n=new Set;for(const i of e)i.model&&n.add(i.model);return[...n]}function aL(e){const n=[];let i=null;for(const s of e){const r=s.model??null;r!==i&&i!==null&&n.push({runId:s.runId,createdAt:s.createdAt,fromModel:i,toModel:r}),i=r}return n}function jv(e){if(e.length===0)return 0;const n=e[e.length-1].citationState;let i=0;for(let s=e.length-1;s>=0&&e[s].citationState===n;s--)i++;return i}function Nv(e){if(e.length===0)return 0;const n=e[e.length-1].visibilityState??"not-visible";let i=0;for(let s=e.length-1;s>=0&&(e[s].visibilityState??"not-visible")===n;s--)i++;return i}function Av(e,n,i){const s={positive:i?.positive??"cited",negative:i?.negative??"not cited",first:i?.first??"first citation"};switch(e){case"new":return"First observation";case"cited":case"visible":return n<=1?`${Xr(s.positive)} in latest run`:`${Xr(s.positive)} for ${n} runs`;case"lost":return"Lost since last run";case"emerging":return Xr(s.first);case"not-cited":case"not-visible":return n<=1?`${Xr(s.negative)} in latest run`:`${Xr(s.negative)} across ${n} runs`;default:return e}}function Xr(e){return e.charAt(0).toUpperCase()+e.slice(1)}function iL(e,n,i){switch(n){case"lost":return`Mention was lost for "${i}". Your brand no longer appeared in the latest answer.`;case"emerging":return`Your brand started appearing in AI answers for "${i}".`}switch(e){case"visible":return`Your brand or domain is mentioned in AI answers for "${i}".`;case"pending":return`"${i}" has been added but no run has been triggered yet.`;default:return`Your brand or domain was not mentioned in AI answers for "${i}".`}}function zx(e){const n=Ax(e.project),i=eL(n.name,e.timeline,e.latestRunDetails,e.queries),r=[...e.runs].sort((u,d)=>d.createdAt.localeCompare(u.createdAt)).map(u=>Gu(u,e.project.displayName||e.project.name));return e.overview?sL(n,e.overview,i,r):oL(n,i,r)}function sL(e,n,i,s){const r=Fq(n.topInsights);for(const u of n.attentionItems)u.id.startsWith("insight_")||r.push({id:u.id,tone:u.tone,title:u.title,detail:u.detail,actionLabel:u.actionLabel,actionGroup:"investigate",affectedPhrases:[]});return{project:e,dateRangeLabel:n.dateRangeLabel,contextLabel:n.contextLabel,mentionSummary:n.scores.mention,visibilitySummary:n.scores.visibility,mentionShareSummary:n.scores.mentionShare,queryCounts:{cited:n.queryCounts.citedQueries,total:n.queryCounts.totalQueries},gapQueries:n.scores.gapQueries,mentionGaps:n.scores.mentionGaps,indexCoverage:n.scores.indexCoverage,providerScores:n.providerScores,competitorPressure:n.scores.competitorPressure,runStatus:n.scores.runStatus,citationMovement:n.citationMovement,mentionMovement:n.mentionMovement,movementComparison:n.movementComparison,insights:r,visibilityEvidence:i,competitors:n.competitors.map(u=>({id:u.id,domain:u.domain,citationCount:u.citationCount,totalQueries:u.totalQueries,pressureLabel:u.pressureLabel,citedQueries:u.citedQueries,movement:"",notes:""})),recentRuns:s.slice(0,5),suggestedQueries:n.suggestedQueries}}function oL(e,n,i){const s={label:"",value:"No data",delta:"Loading…",tone:"neutral",description:"",tooltip:"",trend:[]};return{project:e,dateRangeLabel:"All time",contextLabel:`${e.country} / ${e.language.toUpperCase()}`,mentionSummary:{...s,label:"Mention Coverage"},visibilitySummary:{...s,label:"Citation Coverage"},mentionShareSummary:{...s,label:"Mention Share",breakdown:{projectMentionSnapshots:0,competitorMentionSnapshots:0,perCompetitor:[],snapshotsWithAnswerText:0,snapshotsTotal:0}},queryCounts:{cited:0,total:0},gapQueries:{...s,label:"Citation Gaps"},mentionGaps:{...s,label:"Mention Gaps"},indexCoverage:{...s,label:"Index Coverage"},providerScores:[],competitorPressure:{...s,label:"Competitor Pressure"},runStatus:{...s,label:"Run Status"},citationMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},mentionMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},movementComparison:{hasPreviousRun:!1,comparable:!1,querySetChanged:!1,previousRunAt:null,currentQueryCount:0,previousQueryCount:0,comparableQueryCount:0,addedQueryCount:0,removedQueryCount:0,addedQueries:[],removedQueries:[]},insights:[],visibilityEvidence:n,competitors:[],recentRuns:i.slice(0,5),suggestedQueries:{rows:[],totalCandidates:0,skippedAlreadyTracked:0}}}function rL(e){const n=Ax(e.project),i=[...e.runs].sort((j,_)=>_.createdAt.localeCompare(j.createdAt)),s=i.find(j=>j.kind===Te["answer-visibility"])??i[0]??e.overview?.latestRun?.run??void 0,r=e.project.displayName||e.project.name,u=s?Gu(s,r):lL(e.project.id,r),d=e.overview;if(!d)return{project:n,mentionScore:0,mentionDelta:"No data",mentionTone:"neutral",lastRun:u,insight:"No runs completed yet.",trend:[],competitorPressureLabel:"None"};const g=d.scores.mention,y=g.progress??0,v=d.queryCounts.mentionedQueries,w=d.queryCounts.totalQueries,S=d.providers.length;return{project:n,mentionScore:y,mentionDelta:w>0?`${v} of ${w} queries`:"No data",mentionTone:g.tone,providerCoverage:g.providerCoverage,lastRun:u,insight:w>0?`${v} of ${w} queries mentioned across ${S} provider${S===1?"":"s"}.`:"No runs completed yet.",trend:g.trend??[],competitorPressureLabel:d.scores.competitorPressure.value}}function lL(e,n){return{id:"none",projectId:e,projectName:n,kind:Te["answer-visibility"],kindLabel:"No runs yet",status:sn.queued,trigger:xo.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function cL(e,n){const i=[],s=[],r=[];for(const d of e){s.push(zx(d)),r.push(rL(d));const g=[...d.runs].sort((y,v)=>v.createdAt.localeCompare(y.createdAt));for(const y of g)i.push(Gu(y,d.project.displayName||d.project.name))}i.sort((d,g)=>g.createdAt.localeCompare(d.createdAt));const u=e.length>0;return{portfolioOverview:{projects:r,attentionItems:u?uL(s):[{id:"attention_setup",tone:"neutral",title:"No projects yet",detail:"Create your first project using the setup wizard, CLI, or API.",actionLabel:"Open setup",href:"/setup"}],recentRuns:i.slice(0,5),systemHealth:[{id:"api",label:"API",tone:"positive",detail:"Connected",meta:"Real-time data"},{id:"provider",label:"Gemini",tone:"positive",detail:"Configured",meta:"Provider active"}],lastUpdatedAt:new Date().toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"}),...u?{}:{emptyState:{title:"No projects yet",detail:"Canonry becomes useful after one project, a small query set, and one competitor list are in place.",ctaLabel:"Launch setup",ctaHref:"/setup"}}},projects:s,runs:i,setup:{healthChecks:[{id:"api",label:"API reachable",detail:"API is responding.",state:"ready",guidance:"Required for project creation and run history."},{id:"provider",label:"Provider configured",detail:"Gemini key is configured.",state:"ready",guidance:"Required for answer-visibility sweeps."}],projectDraft:{name:"",canonicalDomain:"",country:"US",language:"en"},queryImportState:{mode:"paste",queryCount:0,preview:[]},competitorDraft:{domains:[],notes:"Use the CLI to add competitors."},launchState:{enabled:u,ctaLabel:u?"Trigger run":"Create a project first",summary:u?"Ready to run.":"Create a project first to launch a run."}},settings:{providerStatuses:(n?.providers??[]).map(d=>({name:d.name,displayName:d.displayName,keyUrl:d.keyUrl,modelHint:d.modelHint,model:d.model,defaultModel:d.defaultModel,state:d.configured?"ready":"needs-config",detail:d.configured?"Provider is configured.":"API key is missing.",quota:d.quota})),google:{state:n?.google?.configured?"ready":"needs-config",detail:n?.google?.configured?"Google OAuth app credentials are configured. Project-level GSC connections can be created from the dashboard.":"Google OAuth client ID and client secret are not configured yet."},bing:{state:n?.bing?.configured?"ready":"needs-config",detail:n?.bing?.configured?"Bing Webmaster Tools API key is configured. Project-level Bing connections can be created from the dashboard.":"Bing Webmaster Tools API key is not configured yet."},selfHostNotes:["Configuration is stored in ~/.canonry/config.yaml.","The local config file is the source of truth for authentication credentials.","Google OAuth app credentials and per-domain Google tokens are stored in local config, not the database.","Database is SQLite at ~/.canonry/data.db.","API key was auto-generated during canonry init."],bootstrapNote:"Use the UI, CLI, or ~/.canonry/config.yaml to manage settings. Authentication credentials persist to local config."}}}function uL(e){const n=[];for(const i of e){const s=i.visibilityEvidence.filter(u=>u.citationState==="lost");s.length>0&&n.push({id:`attention_${i.project.id}_lost`,tone:"negative",title:`${i.project.displayName||i.project.name} lost citations`,detail:`${s.length} quer${s.length>1?"ies":"y"} lost citation.`,actionLabel:"Open project",href:`/projects/${encodeURIComponent(i.project.name)}`});const r=i.recentRuns.filter(u=>u.status===sn.running||u.status===sn.queued);r.length>0&&n.push({id:`attention_${i.project.id}_active`,tone:"neutral",title:`${i.project.displayName||i.project.name} has active runs`,detail:`${r.length} run${r.length>1?"s":""} in progress.`,actionLabel:"View runs",href:"/runs"})}return n.length===0&&n.push({id:"attention_stable",tone:"positive",title:"All projects stable",detail:"No citation losses or active runs to flag."}),n}const Ex=q.createContext(null);Ex.Provider;function wl(){return q.useContext(Ex)}function Ku(e,n={}){const s=wl()?.dashboard??null,r=n.includeSettings??!0,{isAdmin:u}=hl(),d=on({...Iu({client:oe}),enabled:!s,refetchInterval:mN}),g=on({...C0({client:oe,query:{kind:"answer-visibility"}}),enabled:!s,staleTime:No,refetchInterval:O=>O.state.data?.some(P=>P.status==="running"||P.status==="queued")?3e3:No}),y=on({...EM({client:oe}),enabled:!s&&r&&u}),v=d.data??[],w=g.data??[],S=E4({queries:v.map(O=>{const L=w.filter(H=>H.projectId===O.id),G=L.filter(H=>(H.status==="completed"||H.status==="partial")&&H.kind==="answer-visibility"&&H.trigger!=="probe").sort((H,ae)=>ae.createdAt.localeCompare(H.createdAt)),P=G.length>0?G[0].id:"no-run";return{queryKey:["project-overview-slim",O.id,P],queryFn:async()=>{const H=await x2(O.name).catch(()=>null);return{project:O,runs:L,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:H}},enabled:!s&&d.isSuccess&&g.isSuccess,staleTime:ef}})}),j=S.every(O=>O.isSuccess),_=q.useMemo(()=>{if(s)return s;if(!d.data||!g.data||v.length>0&&!j)return null;const O=S.map(L=>L.data?{...L.data,runs:w.filter(G=>G.projectId===L.data.project.id)}:null).filter(L=>L!=null);return cL(O,y.data??null)},[s,d.data,g.data,y.data,j,S,v.length,w]),E=!s&&(d.isError||g.isError),A=!s&&!_&&!E,C=q.useCallback(async()=>{const O=[d.refetch(),g.refetch(),...S.map(L=>L.refetch())];r&&O.push(y.refetch()),await Promise.all(O)},[r,S,d.refetch,g.refetch,y.refetch]);return{dashboard:_,isLoading:A,isError:E,refetch:C}}const dL=20;function mL(e){const n=wl(),i=q.useMemo(()=>!n||!e?null:n.dashboard.projects.find(A=>A.project.name===e)??null,[n,e]),s=on({...yM({client:oe,path:{name:e??""}}),enabled:!!e&&!i,staleTime:ef,refetchOnWindowFocus:"always"}),r=on({...jM({client:oe,path:{name:e??""},query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:No,refetchOnWindowFocus:"always",refetchInterval:A=>A.state.data?.some(L=>L.projectId===s.data?.id&&(L.status==="running"||L.status==="queued"))?3e3:No}),u=s.data??null,d=q.useMemo(()=>u?(r.data??[]).filter(A=>A.projectId===u.id):[],[u,r.data]),{latestRunIds:g,previousRunIds:y,latestRunIdsKey:v,latestVisibilityRevision:w}=q.useMemo(()=>{const A=d.filter(P=>(P.status==="completed"||P.status==="partial")&&P.kind==="answer-visibility"&&P.trigger!=="probe").sort((P,H)=>H.createdAt.localeCompare(P.createdAt)),C=A[0]?.createdAt??null,O=C?A.filter(P=>P.createdAt===C).map(P=>P.id):[],L=A.find(P=>P.createdAt!==C)?.createdAt??null,G=L?A.filter(P=>P.createdAt===L).map(P=>P.id):[];return{latestRunIds:O,previousRunIds:G,latestRunIdsKey:[...O].sort().join(","),latestVisibilityRevision:C?`${C}:${[...O].sort().join(",")}`:"none"}},[d]),S=on({queryKey:["project-dashboard-full",u?.id??null,v||"none"],queryFn:async()=>{if(!u||!e)return null;const[A,C,O,L,G,P,H,ae,R]=await Promise.all([k2(e).catch(()=>[]),M6(e).catch(()=>[]),B6(e,void 0,dL).catch(()=>[]),g.length?Promise.all(g.map($=>cu($).catch(()=>null))).then($=>$.filter(fe=>fe!=null)):Promise.resolve([]),y.length?Promise.all(y.map($=>cu($).catch(()=>null))).then($=>$.filter(fe=>fe!=null)):Promise.resolve([]),X6(e).catch(()=>null),eN(e).catch(()=>null),tN(e).catch(()=>null),x2(e).catch(()=>null)]);return{project:u,runs:d,queries:A,competitors:C,timeline:O,latestRunDetails:L,previousRunDetails:G,gscCoverage:P,bingCoverage:H,dbInsights:ae,overview:R}},enabled:!!u&&!!e&&r.isSuccess,staleTime:ef,refetchOnWindowFocus:"always"}),j=q.useMemo(()=>S.data?zx({...S.data,runs:d}):i||null,[S.data,d,i]),_=q.useCallback(async()=>{await Promise.all([s.refetch(),r.refetch(),S.refetch()])},[s.refetch,r.refetch,S.refetch]),E=!j&&(s.isLoading||r.isLoading||S.isLoading);return{commandCenter:j,project:u,isLoading:E,isError:s.isError||r.isError||S.isError,latestVisibilityRevision:w,refetch:_}}const pL=["health"];async function fL(){const e=await aN("/health","API"),n=e.state==="ok"?{label:"Worker",state:"ok",detail:"In-process job runner"}:{label:"Worker",state:e.state,detail:`Depends on API health check · ${e.detail}`,statusCode:e.statusCode,hint:e.hint?`Worker status is inferred from API health in this deployment mode. ${e.hint}`:"Worker status is inferred from API health in this deployment mode."};return{apiStatus:e,workerStatus:n}}function O0(e,n){return on({queryKey:pL,queryFn:fL,enabled:e,refetchInterval:15e3,initialData:n})}function hL(e){return on({...tx({client:oe,path:{id:e??""}}),enabled:!!e,refetchInterval:n=>{const i=n.state.data?.status;return i==="running"||i==="queued"?3e3:!1}})}function R0(){const e=Au(),n=T4({strict:!1}),i=D4({select:y=>y.location.pathname}),s=n.runId??null,r=n.evidenceId??null;return{runId:s,evidenceId:r,openRun:y=>{e({to:i,from:cn.to,search:v=>({...v,runId:y,evidenceId:void 0})})},openEvidence:y=>{e({to:i,from:cn.to,search:v=>({...v,evidenceId:y,runId:void 0})})},closeDrawer:()=>{e({to:i,from:cn.to,search:y=>({...y,runId:void 0,evidenceId:void 0})})}}}const gL={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function yL(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function bL(){const e=q.useSyncExternalStore(uN,Xy,Xy),n=Au(),{openRun:i}=R0(),s=q.useCallback(u=>{Wp(u)},[]),r=q.useCallback(u=>{u.cta&&(u.cta.intent==="open-run-drawer"?i(u.cta.runId):n({to:"/runs"}),Wp(u.id))},[n,i]);return e.length===0?null:m.jsx("div",{className:"toast-viewport","aria-label":"Notifications",children:e.map(u=>m.jsxs("section",{role:u.tone==="negative"?"alert":"status","aria-live":u.tone==="negative"?"assertive":"polite","data-state":u.state,className:`toast-card ${gL[u.tone]}`,children:[m.jsxs("div",{className:"toast-copy",children:[m.jsx("p",{className:"toast-title",children:u.title}),u.detail?m.jsx("p",{className:"toast-detail",children:u.detail}):null,u.cta?m.jsx("button",{type:"button",className:"toast-action",onClick:()=>r(u),"aria-label":yL(u),children:u.cta.label}):null]}),m.jsx("button",{type:"button",onClick:()=>s(u.id),className:"toast-dismiss","aria-label":"Dismiss",children:m.jsx(Bo,{className:"size-3.5"})})]},u.id))})}function al(e){switch(e){case Te["answer-visibility"]:return"Visibility sweep";case Te["gsc-sync"]:return"GSC sync";case Te["inspect-sitemap"]:return"Sitemap inspection";case Te["ga-sync"]:return"GA sync";case Te["traffic-sync"]:return"Traffic sync";case Te["bing-inspect"]:return"Bing URL inspection";case Te["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Te["site-audit"]:return"Technical audit";case Te["backlink-extract"]:return"Backlink extract";case Te["aeo-discover-seed"]:return"Discovery (seed phase)";case Te["aeo-discover-probe"]:return"Discovery (probe phase)";case Te["gbp-sync"]:return"Business Profile sync";case Te["ads-sync"]:return"ChatGPT ads sync"}}function _v(e){return e==="running"?"Running":e==="queued"?"Queued":e==="partial"?"Partial":e==="completed"?"Completed":e==="failed"?"Failed":e==="cancelled"?"Cancelled":"Starting"}function vL(){const e=q.useSyncExternalStore(sx,Va,Va),n=q.useMemo(()=>Object.values(e.runs),[e.runs]),i=n.length>0,s=on({...C0({client:oe}),enabled:i,staleTime:No}),r=q.useMemo(()=>new Map((s.data??[]).map(g=>[g.id,g.status])),[s.data]);if(!i)return null;const u=n.map(g=>({...g,status:r.get(g.runId)??g.lastAnnouncedStatus})),d=u.length===1?al(u[0].kind):`${u.length} active tasks`;return m.jsxs("div",{className:"task-center",children:[m.jsxs("p",{className:"sr-only",role:"status","aria-live":"polite",children:[u.length," active ",u.length===1?"task":"tasks","."," ",u.map(g=>`${al(g.kind)} ${_v(g.status)}`).join(". "),"."]}),m.jsxs("details",{className:"task-center-details",children:[m.jsxs("summary",{className:"task-center-trigger",children:[m.jsx(E2,{className:"size-3.5 shrink-0 motion-safe:animate-spin","aria-hidden":"true"}),m.jsx("span",{className:"task-center-summary",children:d}),m.jsx("span",{className:"task-center-count","aria-hidden":"true",children:u.length}),m.jsx(z2,{className:"task-center-chevron size-3.5 shrink-0","aria-hidden":"true"})]}),m.jsxs("div",{className:"task-center-panel",children:[m.jsxs("div",{className:"task-center-heading",children:[m.jsx("span",{children:"Active tasks"}),m.jsx("span",{className:"tabular-nums text-faint",children:u.length})]}),m.jsx("ul",{className:"task-center-list",children:u.map(g=>m.jsxs("li",{className:"task-center-item",children:[m.jsxs("div",{className:"min-w-0",children:[m.jsx("p",{className:"truncate text-[13px] font-medium text-strong",children:al(g.kind)}),m.jsx("p",{className:"mt-0.5 truncate text-xs text-muted",children:g.projectLabel??g.projectId})]}),m.jsx(vn,{tone:g.status==="failed"?"negative":g.status==="partial"?"caution":"neutral",children:_v(g.status)})]},g.runId))}),m.jsx(Xe,{to:"/runs",className:"task-center-footer-link",children:"View all runs"})]})]})]})}function kL(e,n={}){const{threshold:i=80}=n,s=q.useRef(null),r=q.useRef({scrollHeight:0,wasAtEnd:!0});function u(y){return y.scrollHeight-y.scrollTop-y.clientHeight}function d(){const y=s.current;return y?u(y)<=i:!0}function g(){const y=s.current;y&&(y.scrollTop=y.scrollHeight,r.current.wasAtEnd=!0,r.current.scrollHeight=y.scrollHeight)}return q.useEffect(()=>{const y=s.current;if(!y)return;const v=()=>{r.current.wasAtEnd=u(y)<=i};return y.addEventListener("scroll",v,{passive:!0}),()=>y.removeEventListener("scroll",v)},[i]),q.useLayoutEffect(()=>{const y=s.current;if(!y)return;const v=y.scrollHeight;v>r.current.scrollHeight&&r.current.wasAtEnd&&(y.scrollTop=v),r.current.scrollHeight=v},e),q.useEffect(()=>{const y=s.current;if(!y||typeof ResizeObserver>"u")return;const v=new ResizeObserver(()=>{const w=y.scrollHeight;w>r.current.scrollHeight&&r.current.wasAtEnd&&(y.scrollTop=w),r.current.scrollHeight=w});return v.observe(y),y.firstElementChild&&v.observe(y.firstElementChild),()=>v.disconnect()},[]),{ref:s,scrollToEnd:g,isAtEnd:d}}async function M0(e){try{return await e.json()}catch{return{}}}function xL(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const B0=xL();function q0(e){e===401&&Mf()}async function Cv(e){const n=await fetch(`${B0}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!n.ok){q0(n.status);const i=await M0(n);throw new zn(i.error?.message??`transcript fetch failed: ${n.status}`,n.status,i.error?.code)}return await n.json()}async function wL(e){const n=await fetch(`${B0}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!n.ok){q0(n.status);const i=await M0(n);throw new zn(i.error?.message??`reset failed: ${n.status}`,n.status,i.error?.code)}}async function SL({project:e,prompt:n,provider:i,modelId:s,scope:r,profile:u,signal:d,onEvent:g}){const y={prompt:n};i&&(y.provider=i),s&&(y.modelId=s),r&&(y.scope=r),u&&(y.profile=u);const v=await fetch(`${B0}/projects/${encodeURIComponent(e)}/agent/prompt`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(y),signal:d});if(!v.ok||!v.body){q0(v.status);const E=await M0(v);throw new zn(E.error?.message??`prompt failed: ${v.status}`,v.status,E.error?.code)}const w=v.body.getReader(),S=new TextDecoder;let j="";const _=()=>{w.cancel().catch(()=>{})};d?.addEventListener("abort",_,{once:!0});try{for(;;){const{value:E,done:A}=await w.read();if(A)break;j+=S.decode(E,{stream:!0});let C=j.indexOf(`
|
|
56
|
+
`):"Run failed."}function rM(e){return e.split("-").map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join(" ")}function KP(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function HP(e){return e===null?"Unknown":e?"Pass":"Fail"}function cv(e){return e===0?"12:00 AM":e<12?`${e}:00 AM`:e===12?"12:00 PM":`${e-12}:00 PM`}function QP(e,n){return e==="twice-daily"?"twice-daily":e.startsWith("weekly@")?`${e}@${n}`:`daily@${n}`}function ZP(e,n){if(!e)return{freq:"custom",hour:6,customCron:n};if(e==="twice-daily")return{freq:"twice-daily",hour:6,customCron:""};const i=e.match(/^daily(?:@(\d+))?$/);if(i)return{freq:"daily",hour:i[1]?parseInt(i[1]):6,customCron:""};const s=e.match(/^(weekly@(?:mon|tue|wed|thu|fri|sat|sun))(?:@(\d+))?$/);return s?{freq:s[1],hour:s[2]?parseInt(s[2]):6,customCron:""}:{freq:"custom",hour:6,customCron:n}}function FP(e,n,i){const s=i==="UTC"?"UTC":i.split("/").pop()?.replace(/_/g," ")??i;if(!e)return`Custom: ${n} · ${s}`;if(e==="twice-daily")return`Twice a day (6am & 6pm) · ${s}`;const r=e.match(/^daily(?:@(\d+))?$/);if(r){const d=r[1]?parseInt(r[1]):6;return`Every day at ${cv(d)} · ${s}`}const u=e.match(/^weekly@(mon|tue|wed|thu|fri|sat|sun)(?:@(\d+))?$/);if(u){const d={mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday",sun:"Sunday"},g=u[2]?parseInt(u[2]):6;return`Every ${d[u[1]]} at ${cv(g)} · ${s}`}return`${e} · ${s}`}function lM(e,n){return n&&n!==e?`${e} · ${n}`:e}function YP(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,n=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts().find(i=>i.type==="timeZoneName")?.value;return lM(e,n)}function cM(e){const n=e.replace(/\/+$/,"")||"/";return n==="/"?"overview":n==="/projects"?"projects":n.startsWith("/projects/")?"project":n==="/runs"?"runs":n==="/traffic"||n.startsWith("/traffic/")?"traffic":n==="/backlinks"?"backlinks":n==="/settings"?"settings":n==="/setup"?"setup":"other"}function uM(e,n){return!n||n.includes(e)}const W3=["overview","search-console","local","discovery","report","activity","backlinks","technical-aeo","history","settings"],dM=new Set(W3);function XP(e){const n=e??W3,i=[...new Set(n.filter(s=>dM.has(s)))];return i.length>0?i:["overview"]}function JP(e,n){return uM(e,n)||!n?e:n.includes("overview")?"overview":n[0]??"overview"}const uv={bg:"--canonry-embed-bg",fg:"--canonry-embed-fg",accent:"--color-link"},mM=/^(?:#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgba?\([0-9.,%\s/]+\)|hsla?\([0-9.,%\s/a-z]+\))$/i,pM=/^[a-z0-9][a-z0-9 -]{0,48}$/i;function ex(e){const n=e?.font?.trim();return n&&pM.test(n)?n:void 0}function fM(e){const n=e?.mode?.trim();return n==="light"||n==="dark"?n:void 0}function hM(e){if(!e)return{};const n={};for(const[s,r]of Object.entries(e)){const u=Object.hasOwn(uv,s)?uv[s]:void 0;if(!u||typeof r!="string")continue;const d=r.trim();mM.test(d)&&(n[u]=d)}const i=ex(e);return i&&(n["--font-sans"]=`"${i}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`),n}function gM(e){const n=ex(e);if(n)return`https://fonts.googleapis.com/css2?family=${n.replace(/ /g,"+")}:wght@400;500;600;700&display=swap`}const je=(e,n,i,s)=>{const r={_id:e,baseUrl:n?.baseUrl||(n?.client??Y).getConfig().baseUrl};return n?.body&&(r.body=n.body),n?.headers&&(r.headers=n.headers),n?.path&&(r.path=n.path),n?.query&&(r.query=n.query),[r]},yM=e=>je("getApiV1ProjectsByName",e),bM=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await d2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:yM(e)}),vM=e=>je("getApiV1ProjectsByNameMeasurementPlan",e),WP=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await uj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:vM(e)}),kM=e=>je("getApiV1ProjectsByNameMeasurementReport",e),eV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await dj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:kM(e)}),Uo=e=>je("getApiV1Projects",e),Iu=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await mj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:Uo(e)}),xM=e=>je("getApiV1ProjectsByNameResearchRuns",e),tV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await pj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:xM(e)}),nV=e=>({mutationFn:async i=>{const{data:s}=await fj({...e,...i,throwOnError:!0});return s}}),wM=e=>je("getApiV1ProjectsByNameResearchRunsByRunId",e),aV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await hj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:wM(e)}),SM=e=>je("getApiV1ProjectsByNameQueries",e),iV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await m2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:SM(e)}),jM=e=>je("getApiV1ProjectsByNameRuns",e),NM=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await p2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:jM(e)}),_0=e=>je("getApiV1Runs",e),C0=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Cj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:_0(e)}),AM=e=>je("getApiV1RunsById",e),tx=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await f2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:AM(e)}),_M=e=>je("getApiV1ProjectsByNameHistory",e),sV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Tj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:_M(e)}),CM=e=>je("getApiV1History",e),oV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Dj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:CM(e)}),zM=e=>je("getApiV1ProjectsByNameSnapshotsDiff",e),rV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Mj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:zM(e)}),EM=e=>je("getApiV1Settings",e),TM=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await h2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:EM(e)}),DM=e=>je("getApiV1ProjectsByNameGoogleConnections",e),lV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Fj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:DM(e)}),OM=e=>je("getApiV1ProjectsByNameGoogleProperties",e),cV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await Jj({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:OM(e)}),RM=e=>je("getApiV1ProjectsByNameGoogleGscPerformance",e),uV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await n5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:RM(e)}),MM=e=>je("getApiV1ProjectsByNameGoogleGscPerformanceDaily",e),dV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await a5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:MM(e)}),BM=e=>je("getApiV1ProjectsByNameGoogleGscInspections",e),mV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await s5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:BM(e)}),qM=e=>je("getApiV1ProjectsByNameGoogleGscDeindexed",e),pV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await o5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:qM(e)}),LM=e=>je("getApiV1ProjectsByNameGoogleGscCoverage",e),fV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await g2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:LM(e)}),$M=e=>je("getApiV1ProjectsByNameGoogleGscCoverageHistory",e),hV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await r5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:$M(e)}),gV=e=>je("getApiV1ProjectsByNameGoogleGscSitemaps",e),IM=e=>je("getApiV1ProjectsByNameGbpLocations",e),yV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await d5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:IM(e)}),bV=e=>({mutationFn:async i=>{const{data:s}=await m5({...e,...i,throwOnError:!0});return s}}),vV=e=>({mutationFn:async i=>{const{data:s}=await p5({...e,...i,throwOnError:!0});return s}}),UM=e=>je("getApiV1ProjectsByNameGbpKeywords",e),kV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await f5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:UM(e)}),PM=e=>je("getApiV1ProjectsByNameGbpPlaceActions",e),xV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await h5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:PM(e)}),VM=e=>je("getApiV1ProjectsByNameGbpLodging",e),wV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await g5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:VM(e)}),GM=e=>je("getApiV1ProjectsByNameGbpPlaces",e),SV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await y5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:GM(e)}),KM=e=>je("getApiV1ProjectsByNameGbpSummary",e),jV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await b5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:KM(e)}),HM=e=>je("getApiV1ProjectsByNameBingStatus",e),NV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await x5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:HM(e)}),QM=e=>je("getApiV1ProjectsByNameBingSites",e),AV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await w5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:QM(e)}),ZM=e=>je("getApiV1ProjectsByNameBingCoverage",e),_V=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await y2({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:ZM(e)}),FM=e=>je("getApiV1ProjectsByNameBingInspections",e),CV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await j5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:FM(e)}),YM=e=>je("getApiV1ProjectsByNameBingPerformance",e),zV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await C5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:YM(e)}),XM=e=>je("getApiV1ProjectsByNameGaStatus",e),EV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await T5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:XM(e)}),JM=e=>je("getApiV1ProjectsByNameGaTraffic",e),TV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await O5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:JM(e)}),WM=e=>je("getApiV1ProjectsByNameGaAiReferralDaily",e),DV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await R5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:WM(e)}),eB=e=>je("getApiV1ProjectsByNameGaSocialReferralHistory",e),OV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await M5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:eB(e)}),tB=e=>je("getApiV1ProjectsByNameGaSessionHistory",e),RV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await B5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:tB(e)}),nB=e=>je("getApiV1ProjectsByNameReport",e),MV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await L5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:nB(e)}),aB=e=>je("getApiV1ProjectsByNameHealthHistory",e),BV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await $5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:aB(e)}),iB=e=>je("getApiV1ProjectsByNameCitationsVisibility",e),qV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await I5({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:iB(e)}),sB=e=>je("getApiV1ProjectsByNameTrafficSources",e),LV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await o6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:sB(e)}),oB=e=>je("getApiV1ProjectsByNameTrafficStatus",e),$V=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await r6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:oB(e)}),rB=e=>je("getApiV1ProjectsByNameTrafficSourcesById",e),IV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await l6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:rB(e)}),lB=e=>je("getApiV1ProjectsByNameTrafficEvents",e),UV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await c6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:lB(e)}),cB=e=>je("getApiV1ProjectsByNameDiscoverSessions",e),PV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await d6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:cB(e)}),uB=e=>je("getApiV1ProjectsByNameDiscoverSessionsById",e),VV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await m6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:uB(e)}),dB=e=>je("getApiV1ProjectsByNameDiscoverSessionsByIdPromote",e),GV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await p6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:dB(e)}),mB=e=>je("getApiV1ProjectsByNameTechnicalAeo",e),KV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await h6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:mB(e)}),pB=e=>je("getApiV1ProjectsByNameTechnicalAeoPages",e),HV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await g6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:pB(e)}),fB=e=>je("getApiV1ProjectsByNameTechnicalAeoTrend",e),QV=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await y6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:fB(e)}),hB=e=>je("getApiV1ProjectsByNameAgentProviders",e),gB=e=>_e({queryFn:async({queryKey:n,signal:i})=>{const{data:s}=await v6({...e,...n[0],signal:i,throwOnError:!0});return s},queryKey:hB(e)});function dv(e){return e.state==="ok"?"positive":e.state==="checking"?"neutral":"negative"}function nx(e){switch(e){case"completed":return"positive";case"partial":return"caution";case"failed":return"negative";case"cancelled":return"caution";case"queued":case"running":return"neutral";default:return"neutral"}}function ZV(e){switch(e){case"cited":return"positive";case"emerging":return"caution";case"not-cited":return"caution";case"lost":return"negative";case"pending":return"neutral";default:return"neutral"}}function FV(e){return e==="High"?"negative":e==="Moderate"?"caution":"neutral"}const YV={positive:"text-positive-400",caution:"text-caution-400",negative:"text-negative-400",neutral:"text-secondary"};function yB(e){return e.displayName??e.name.charAt(0).toUpperCase()+e.name.slice(1)}function Do(e){const n=[e.detail,e.hint].filter(Boolean);return n.length>0?n.join(`
|
|
57
|
+
`):void 0}function bB(e,n,i){return e.map(s=>{if(s.id==="api")return{...s,tone:dv(n.apiStatus),detail:n.apiStatus.state==="ok"?"Healthy":"Needs attention",meta:n.apiStatus.detail};if(s.id==="worker")return{...s,tone:dv(n.workerStatus),detail:n.workerStatus.state==="ok"?"Healthy":"Needs attention",meta:n.workerStatus.detail};const r=i.providerStatuses.filter(y=>y.state==="ready").length,u=i.providerStatuses.length,d=r>0,g=i.providerStatuses.filter(y=>y.state==="ready").map(y=>yB(y)).join(" · ");return{...s,label:"Providers",tone:d?"positive":"caution",detail:`${r} of ${u} configured`,meta:g||"None configured"}})}function vB(e,n){if(e.apiStatus.state!=="ok")return"Launch is blocked until the API responds cleanly.";if(e.apiStatus.databaseConfigured===!1)return"Launch is blocked until the API has a database connection configured.";if(e.workerStatus.state!=="ok")return"Launch is blocked until the worker is healthy and heartbeats are current.";if(!n.providerStatuses.some(i=>i.state==="ready"))return"Launch is blocked until at least one provider is configured."}function kB(e,n,i){const s=vB(n,i),r=structuredClone(e);return r.healthChecks=r.healthChecks.map(u=>{if(u.id==="api")return{...u,detail:n.apiStatus.detail,state:n.apiStatus.state==="ok"?"ready":"attention"};if(u.id==="worker")return{...u,detail:n.workerStatus.detail,state:n.workerStatus.state==="ok"?"ready":"attention"};const d=i.providerStatuses.some(g=>g.state==="ready");return{...u,detail:d?"At least one provider configured.":"No providers configured.",state:d?"ready":"attention"}}),r.launchState.enabled=s===void 0,r.launchState.blockedReason=s,r.launchState.summary=s??"Queue a visibility sweep first, then follow with a site audit to explain movement.",r}const ax="canonry.run-tracker",vf=new Set;let mv=!1,xB=0,Uu={runs:{},batches:{}};function wB(){const e=Va();for(const n of vf)n(e)}function SB(e){if(!e)return{runs:{},batches:{}};try{const n=JSON.parse(e);return{runs:n.runs??{},batches:n.batches??{}}}catch{return{runs:{},batches:{}}}}function jB(){typeof window>"u"||window.sessionStorage.setItem(ax,JSON.stringify(Uu))}function ix(){mv||(mv=!0,!(typeof window>"u")&&(Uu=SB(window.sessionStorage.getItem(ax))))}function Pu(e){Uu=e,jB(),wB()}function Va(){return ix(),Uu}function sx(e){return ix(),vf.add(e),()=>{vf.delete(e)}}function z0(e){const n=Va();Pu({...n,runs:{...n.runs,[e.id]:{runId:e.id,projectId:e.projectId,projectLabel:e.projectLabel,kind:e.kind,sourceAction:e.sourceAction,lastAnnouncedStatus:e.lastAnnouncedStatus??"queued",trackedAt:e.trackedAt??Date.now()}}})}function Lp(e){const n=Va();if(!n.runs[e])return;const{[e]:i,...s}=n.runs;Pu({...n,runs:s})}function NB(e){const n=Va(),i=`batch_${Date.now()}_${++xB}`;return Pu({...n,batches:{...n.batches,[i]:{batchId:i,runIds:e.runIds,queuedCount:e.queuedCount,skippedCount:e.skippedCount}}}),i}function AB(e){const n=Va();if(!n.batches[e])return;const{[e]:i,...s}=n.batches;Pu({...n,batches:s})}function _B(e){return e==="completed"||e==="partial"||e==="failed"||e==="cancelled"}const CB=10*6e4;function zB(e,n,i,s){return e.filter(r=>!n.has(r.runId)&&i-(r.trackedAt??0)>=s)}function EB(e,n){let i=0,s=0,r=0,u=0,d=0;for(const g of e){const y=n[g]?.status;y==="completed"?i+=1:y==="partial"?s+=1:y==="failed"?r+=1:y==="cancelled"?u+=1:d+=1}return{completed:i,partial:s,failed:r,cancelled:u,pending:d,finished:d===0}}const pv=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,fv=i2,ox=(e,n)=>i=>{var s;if(n?.variants==null)return fv(e,i?.class,i?.className);const{variants:r,defaultVariants:u}=n,d=Object.keys(r).map(v=>{const w=i?.[v],S=u?.[v];if(w===null)return null;const j=pv(w)||pv(S);return r[v][j]}),g=i&&Object.entries(i).reduce((v,w)=>{let[S,j]=w;return j===void 0||(v[S]=j),v},{}),y=n==null||(s=n.compoundVariants)===null||s===void 0?void 0:s.reduce((v,w)=>{let{class:S,className:j,..._}=w;return Object.entries(_).every(E=>{let[A,C]=E;return Array.isArray(C)?C.includes({...u,...g}[A]):{...u,...g}[A]===C})?[...v,S,j]:v},[]);return fv(e,d,y,i?.class,i?.className)},TB=(e,n)=>{const i=new Array(e.length+n.length);for(let s=0;s<e.length;s++)i[s]=e[s];for(let s=0;s<n.length;s++)i[e.length+s]=n[s];return i},DB=(e,n)=>({classGroupId:e,validator:n}),rx=(e=new Map,n=null,i)=>({nextPart:e,validators:n,classGroupId:i}),wu="-",hv=[],OB="arbitrary..",RB=e=>{const n=BB(e),{conflictingClassGroups:i,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:d=>{if(d.startsWith("[")&&d.endsWith("]"))return MB(d);const g=d.split(wu),y=g[0]===""&&g.length>1?1:0;return lx(g,y,n)},getConflictingClassGroupIds:(d,g)=>{if(g){const y=s[d],v=i[d];return y?v?TB(v,y):y:v||hv}return i[d]||hv}}},lx=(e,n,i)=>{if(e.length-n===0)return i.classGroupId;const r=e[n],u=i.nextPart.get(r);if(u){const v=lx(e,n+1,u);if(v)return v}const d=i.validators;if(d===null)return;const g=n===0?e.join(wu):e.slice(n).join(wu),y=d.length;for(let v=0;v<y;v++){const w=d[v];if(w.validator(g))return w.classGroupId}},MB=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const n=e.slice(1,-1),i=n.indexOf(":"),s=n.slice(0,i);return s?OB+s:void 0})(),BB=e=>{const{theme:n,classGroups:i}=e;return qB(i,n)},qB=(e,n)=>{const i=rx();for(const s in e){const r=e[s];E0(r,i,s,n)}return i},E0=(e,n,i,s)=>{const r=e.length;for(let u=0;u<r;u++){const d=e[u];LB(d,n,i,s)}},LB=(e,n,i,s)=>{if(typeof e=="string"){$B(e,n,i);return}if(typeof e=="function"){IB(e,n,i,s);return}UB(e,n,i,s)},$B=(e,n,i)=>{const s=e===""?n:cx(n,e);s.classGroupId=i},IB=(e,n,i,s)=>{if(PB(e)){E0(e(s),n,i,s);return}n.validators===null&&(n.validators=[]),n.validators.push(DB(i,e))},UB=(e,n,i,s)=>{const r=Object.entries(e),u=r.length;for(let d=0;d<u;d++){const[g,y]=r[d];E0(y,cx(n,g),i,s)}},cx=(e,n)=>{let i=e;const s=n.split(wu),r=s.length;for(let u=0;u<r;u++){const d=s[u];let g=i.nextPart.get(d);g||(g=rx(),i.nextPart.set(d,g)),i=g}return i},PB=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,VB=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,i=Object.create(null),s=Object.create(null);const r=(u,d)=>{i[u]=d,n++,n>e&&(n=0,s=i,i=Object.create(null))};return{get(u){let d=i[u];if(d!==void 0)return d;if((d=s[u])!==void 0)return r(u,d),d},set(u,d){u in i?i[u]=d:r(u,d)}}},kf="!",gv=":",GB=[],yv=(e,n,i,s,r)=>({modifiers:e,hasImportantModifier:n,baseClassName:i,maybePostfixModifierPosition:s,isExternal:r}),KB=e=>{const{prefix:n,experimentalParseClassName:i}=e;let s=r=>{const u=[];let d=0,g=0,y=0,v;const w=r.length;for(let A=0;A<w;A++){const C=r[A];if(d===0&&g===0){if(C===gv){u.push(r.slice(y,A)),y=A+1;continue}if(C==="/"){v=A;continue}}C==="["?d++:C==="]"?d--:C==="("?g++:C===")"&&g--}const S=u.length===0?r:r.slice(y);let j=S,_=!1;S.endsWith(kf)?(j=S.slice(0,-1),_=!0):S.startsWith(kf)&&(j=S.slice(1),_=!0);const E=v&&v>y?v-y:void 0;return yv(u,_,j,E)};if(n){const r=n+gv,u=s;s=d=>d.startsWith(r)?u(d.slice(r.length)):yv(GB,!1,d,void 0,!0)}if(i){const r=s;s=u=>i({className:u,parseClassName:r})}return s},HB=e=>{const n=new Map;return e.orderSensitiveModifiers.forEach((i,s)=>{n.set(i,1e6+s)}),i=>{const s=[];let r=[];for(let u=0;u<i.length;u++){const d=i[u],g=d[0]==="[",y=n.has(d);g||y?(r.length>0&&(r.sort(),s.push(...r),r=[]),s.push(d)):r.push(d)}return r.length>0&&(r.sort(),s.push(...r)),s}},QB=e=>({cache:VB(e.cacheSize),parseClassName:KB(e),sortModifiers:HB(e),...RB(e)}),ZB=/\s+/,FB=(e,n)=>{const{parseClassName:i,getClassGroupId:s,getConflictingClassGroupIds:r,sortModifiers:u}=n,d=[],g=e.trim().split(ZB);let y="";for(let v=g.length-1;v>=0;v-=1){const w=g[v],{isExternal:S,modifiers:j,hasImportantModifier:_,baseClassName:E,maybePostfixModifierPosition:A}=i(w);if(S){y=w+(y.length>0?" "+y:y);continue}let C=!!A,O=s(C?E.substring(0,A):E);if(!O){if(!C){y=w+(y.length>0?" "+y:y);continue}if(O=s(E),!O){y=w+(y.length>0?" "+y:y);continue}C=!1}const L=j.length===0?"":j.length===1?j[0]:u(j).join(":"),G=_?L+kf:L,P=G+O;if(d.indexOf(P)>-1)continue;d.push(P);const H=r(O,C);for(let ae=0;ae<H.length;++ae){const R=H[ae];d.push(G+R)}y=w+(y.length>0?" "+y:y)}return y},YB=(...e)=>{let n=0,i,s,r="";for(;n<e.length;)(i=e[n++])&&(s=ux(i))&&(r&&(r+=" "),r+=s);return r},ux=e=>{if(typeof e=="string")return e;let n,i="";for(let s=0;s<e.length;s++)e[s]&&(n=ux(e[s]))&&(i&&(i+=" "),i+=n);return i},XB=(e,...n)=>{let i,s,r,u;const d=y=>{const v=n.reduce((w,S)=>S(w),e());return i=QB(v),s=i.cache.get,r=i.cache.set,u=g,g(y)},g=y=>{const v=s(y);if(v)return v;const w=FB(y,i);return r(y,w),w};return u=d,(...y)=>u(YB(...y))},JB=[],qt=e=>{const n=i=>i[e]||JB;return n.isThemeGetter=!0,n},dx=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,mx=/^\((?:(\w[\w-]*):)?(.+)\)$/i,WB=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,eq=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,tq=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,nq=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,aq=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,iq=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,xi=e=>WB.test(e),qe=e=>!!e&&!Number.isNaN(Number(e)),wi=e=>!!e&&Number.isInteger(Number(e)),$p=e=>e.endsWith("%")&&qe(e.slice(0,-1)),qa=e=>eq.test(e),px=()=>!0,sq=e=>tq.test(e)&&!nq.test(e),T0=()=>!1,oq=e=>aq.test(e),rq=e=>iq.test(e),lq=e=>!ye(e)&&!be(e),cq=e=>Bi(e,gx,T0),ye=e=>dx.test(e),os=e=>Bi(e,yx,sq),bv=e=>Bi(e,yq,qe),uq=e=>Bi(e,vx,px),dq=e=>Bi(e,bx,T0),vv=e=>Bi(e,fx,T0),mq=e=>Bi(e,hx,rq),Fc=e=>Bi(e,kx,oq),be=e=>mx.test(e),Fr=e=>ks(e,yx),pq=e=>ks(e,bx),kv=e=>ks(e,fx),fq=e=>ks(e,gx),hq=e=>ks(e,hx),Yc=e=>ks(e,kx,!0),gq=e=>ks(e,vx,!0),Bi=(e,n,i)=>{const s=dx.exec(e);return s?s[1]?n(s[1]):i(s[2]):!1},ks=(e,n,i=!1)=>{const s=mx.exec(e);return s?s[1]?n(s[1]):i:!1},fx=e=>e==="position"||e==="percentage",hx=e=>e==="image"||e==="url",gx=e=>e==="length"||e==="size"||e==="bg-size",yx=e=>e==="length",yq=e=>e==="number",bx=e=>e==="family-name",vx=e=>e==="number"||e==="weight",kx=e=>e==="shadow",bq=()=>{const e=qt("color"),n=qt("font"),i=qt("text"),s=qt("font-weight"),r=qt("tracking"),u=qt("leading"),d=qt("breakpoint"),g=qt("container"),y=qt("spacing"),v=qt("radius"),w=qt("shadow"),S=qt("inset-shadow"),j=qt("text-shadow"),_=qt("drop-shadow"),E=qt("blur"),A=qt("perspective"),C=qt("aspect"),O=qt("ease"),L=qt("animate"),G=()=>["auto","avoid","all","avoid-page","page","left","right","column"],P=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],H=()=>[...P(),be,ye],ae=()=>["auto","hidden","clip","visible","scroll"],R=()=>["auto","contain","none"],$=()=>[be,ye,y],fe=()=>[xi,"full","auto",...$()],ue=()=>[wi,"none","subgrid",be,ye],me=()=>["auto",{span:["full",wi,be,ye]},wi,be,ye],pe=()=>[wi,"auto",be,ye],Ge=()=>["auto","min","max","fr",be,ye],De=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Ne=()=>["start","end","center","stretch","center-safe","end-safe"],K=()=>["auto",...$()],ee=()=>[xi,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...$()],he=()=>[xi,"screen","full","dvw","lvw","svw","min","max","fit",...$()],Ae=()=>[xi,"screen","full","lh","dvh","lvh","svh","min","max","fit",...$()],le=()=>[e,be,ye],Ye=()=>[...P(),kv,vv,{position:[be,ye]}],M=()=>["no-repeat",{repeat:["","x","y","space","round"]}],re=()=>["auto","cover","contain",fq,cq,{size:[be,ye]}],ne=()=>[$p,Fr,os],ie=()=>["","none","full",v,be,ye],se=()=>["",qe,Fr,os],ze=()=>["solid","dashed","dotted","double"],rt=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Se=()=>[qe,$p,kv,vv],Ke=()=>["","none",E,be,ye],Ze=()=>["none",qe,be,ye],$t=()=>["none",qe,be,ye],En=()=>[qe,be,ye],Ut=()=>[xi,"full",...$()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[qa],breakpoint:[qa],color:[px],container:[qa],"drop-shadow":[qa],ease:["in","out","in-out"],font:[lq],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[qa],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[qa],shadow:[qa],spacing:["px",qe],text:[qa],"text-shadow":[qa],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",xi,ye,be,C]}],container:["container"],columns:[{columns:[qe,ye,be,g]}],"break-after":[{"break-after":G()}],"break-before":[{"break-before":G()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:H()}],overflow:[{overflow:ae()}],"overflow-x":[{"overflow-x":ae()}],"overflow-y":[{"overflow-y":ae()}],overscroll:[{overscroll:R()}],"overscroll-x":[{"overscroll-x":R()}],"overscroll-y":[{"overscroll-y":R()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:fe()}],"inset-x":[{"inset-x":fe()}],"inset-y":[{"inset-y":fe()}],start:[{"inset-s":fe(),start:fe()}],end:[{"inset-e":fe(),end:fe()}],"inset-bs":[{"inset-bs":fe()}],"inset-be":[{"inset-be":fe()}],top:[{top:fe()}],right:[{right:fe()}],bottom:[{bottom:fe()}],left:[{left:fe()}],visibility:["visible","invisible","collapse"],z:[{z:[wi,"auto",be,ye]}],basis:[{basis:[xi,"full","auto",g,...$()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,xi,"auto","initial","none",ye]}],grow:[{grow:["",qe,be,ye]}],shrink:[{shrink:["",qe,be,ye]}],order:[{order:[wi,"first","last","none",be,ye]}],"grid-cols":[{"grid-cols":ue()}],"col-start-end":[{col:me()}],"col-start":[{"col-start":pe()}],"col-end":[{"col-end":pe()}],"grid-rows":[{"grid-rows":ue()}],"row-start-end":[{row:me()}],"row-start":[{"row-start":pe()}],"row-end":[{"row-end":pe()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":Ge()}],"auto-rows":[{"auto-rows":Ge()}],gap:[{gap:$()}],"gap-x":[{"gap-x":$()}],"gap-y":[{"gap-y":$()}],"justify-content":[{justify:[...De(),"normal"]}],"justify-items":[{"justify-items":[...Ne(),"normal"]}],"justify-self":[{"justify-self":["auto",...Ne()]}],"align-content":[{content:["normal",...De()]}],"align-items":[{items:[...Ne(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Ne(),{baseline:["","last"]}]}],"place-content":[{"place-content":De()}],"place-items":[{"place-items":[...Ne(),"baseline"]}],"place-self":[{"place-self":["auto",...Ne()]}],p:[{p:$()}],px:[{px:$()}],py:[{py:$()}],ps:[{ps:$()}],pe:[{pe:$()}],pbs:[{pbs:$()}],pbe:[{pbe:$()}],pt:[{pt:$()}],pr:[{pr:$()}],pb:[{pb:$()}],pl:[{pl:$()}],m:[{m:K()}],mx:[{mx:K()}],my:[{my:K()}],ms:[{ms:K()}],me:[{me:K()}],mbs:[{mbs:K()}],mbe:[{mbe:K()}],mt:[{mt:K()}],mr:[{mr:K()}],mb:[{mb:K()}],ml:[{ml:K()}],"space-x":[{"space-x":$()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":$()}],"space-y-reverse":["space-y-reverse"],size:[{size:ee()}],"inline-size":[{inline:["auto",...he()]}],"min-inline-size":[{"min-inline":["auto",...he()]}],"max-inline-size":[{"max-inline":["none",...he()]}],"block-size":[{block:["auto",...Ae()]}],"min-block-size":[{"min-block":["auto",...Ae()]}],"max-block-size":[{"max-block":["none",...Ae()]}],w:[{w:[g,"screen",...ee()]}],"min-w":[{"min-w":[g,"screen","none",...ee()]}],"max-w":[{"max-w":[g,"screen","none","prose",{screen:[d]},...ee()]}],h:[{h:["screen","lh",...ee()]}],"min-h":[{"min-h":["screen","lh","none",...ee()]}],"max-h":[{"max-h":["screen","lh",...ee()]}],"font-size":[{text:["base",i,Fr,os]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,gq,uq]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",$p,ye]}],"font-family":[{font:[pq,dq,n]}],"font-features":[{"font-features":[ye]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,be,ye]}],"line-clamp":[{"line-clamp":[qe,"none",be,bv]}],leading:[{leading:[u,...$()]}],"list-image":[{"list-image":["none",be,ye]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",be,ye]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:le()}],"text-color":[{text:le()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ze(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",be,os]}],"text-decoration-color":[{decoration:le()}],"underline-offset":[{"underline-offset":[qe,"auto",be,ye]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:$()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",be,ye]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",be,ye]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Ye()}],"bg-repeat":[{bg:M()}],"bg-size":[{bg:re()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},wi,be,ye],radial:["",be,ye],conic:[wi,be,ye]},hq,mq]}],"bg-color":[{bg:le()}],"gradient-from-pos":[{from:ne()}],"gradient-via-pos":[{via:ne()}],"gradient-to-pos":[{to:ne()}],"gradient-from":[{from:le()}],"gradient-via":[{via:le()}],"gradient-to":[{to:le()}],rounded:[{rounded:ie()}],"rounded-s":[{"rounded-s":ie()}],"rounded-e":[{"rounded-e":ie()}],"rounded-t":[{"rounded-t":ie()}],"rounded-r":[{"rounded-r":ie()}],"rounded-b":[{"rounded-b":ie()}],"rounded-l":[{"rounded-l":ie()}],"rounded-ss":[{"rounded-ss":ie()}],"rounded-se":[{"rounded-se":ie()}],"rounded-ee":[{"rounded-ee":ie()}],"rounded-es":[{"rounded-es":ie()}],"rounded-tl":[{"rounded-tl":ie()}],"rounded-tr":[{"rounded-tr":ie()}],"rounded-br":[{"rounded-br":ie()}],"rounded-bl":[{"rounded-bl":ie()}],"border-w":[{border:se()}],"border-w-x":[{"border-x":se()}],"border-w-y":[{"border-y":se()}],"border-w-s":[{"border-s":se()}],"border-w-e":[{"border-e":se()}],"border-w-bs":[{"border-bs":se()}],"border-w-be":[{"border-be":se()}],"border-w-t":[{"border-t":se()}],"border-w-r":[{"border-r":se()}],"border-w-b":[{"border-b":se()}],"border-w-l":[{"border-l":se()}],"divide-x":[{"divide-x":se()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":se()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ze(),"hidden","none"]}],"divide-style":[{divide:[...ze(),"hidden","none"]}],"border-color":[{border:le()}],"border-color-x":[{"border-x":le()}],"border-color-y":[{"border-y":le()}],"border-color-s":[{"border-s":le()}],"border-color-e":[{"border-e":le()}],"border-color-bs":[{"border-bs":le()}],"border-color-be":[{"border-be":le()}],"border-color-t":[{"border-t":le()}],"border-color-r":[{"border-r":le()}],"border-color-b":[{"border-b":le()}],"border-color-l":[{"border-l":le()}],"divide-color":[{divide:le()}],"outline-style":[{outline:[...ze(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,be,ye]}],"outline-w":[{outline:["",qe,Fr,os]}],"outline-color":[{outline:le()}],shadow:[{shadow:["","none",w,Yc,Fc]}],"shadow-color":[{shadow:le()}],"inset-shadow":[{"inset-shadow":["none",S,Yc,Fc]}],"inset-shadow-color":[{"inset-shadow":le()}],"ring-w":[{ring:se()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:le()}],"ring-offset-w":[{"ring-offset":[qe,os]}],"ring-offset-color":[{"ring-offset":le()}],"inset-ring-w":[{"inset-ring":se()}],"inset-ring-color":[{"inset-ring":le()}],"text-shadow":[{"text-shadow":["none",j,Yc,Fc]}],"text-shadow-color":[{"text-shadow":le()}],opacity:[{opacity:[qe,be,ye]}],"mix-blend":[{"mix-blend":[...rt(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":rt()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Se()}],"mask-image-linear-to-pos":[{"mask-linear-to":Se()}],"mask-image-linear-from-color":[{"mask-linear-from":le()}],"mask-image-linear-to-color":[{"mask-linear-to":le()}],"mask-image-t-from-pos":[{"mask-t-from":Se()}],"mask-image-t-to-pos":[{"mask-t-to":Se()}],"mask-image-t-from-color":[{"mask-t-from":le()}],"mask-image-t-to-color":[{"mask-t-to":le()}],"mask-image-r-from-pos":[{"mask-r-from":Se()}],"mask-image-r-to-pos":[{"mask-r-to":Se()}],"mask-image-r-from-color":[{"mask-r-from":le()}],"mask-image-r-to-color":[{"mask-r-to":le()}],"mask-image-b-from-pos":[{"mask-b-from":Se()}],"mask-image-b-to-pos":[{"mask-b-to":Se()}],"mask-image-b-from-color":[{"mask-b-from":le()}],"mask-image-b-to-color":[{"mask-b-to":le()}],"mask-image-l-from-pos":[{"mask-l-from":Se()}],"mask-image-l-to-pos":[{"mask-l-to":Se()}],"mask-image-l-from-color":[{"mask-l-from":le()}],"mask-image-l-to-color":[{"mask-l-to":le()}],"mask-image-x-from-pos":[{"mask-x-from":Se()}],"mask-image-x-to-pos":[{"mask-x-to":Se()}],"mask-image-x-from-color":[{"mask-x-from":le()}],"mask-image-x-to-color":[{"mask-x-to":le()}],"mask-image-y-from-pos":[{"mask-y-from":Se()}],"mask-image-y-to-pos":[{"mask-y-to":Se()}],"mask-image-y-from-color":[{"mask-y-from":le()}],"mask-image-y-to-color":[{"mask-y-to":le()}],"mask-image-radial":[{"mask-radial":[be,ye]}],"mask-image-radial-from-pos":[{"mask-radial-from":Se()}],"mask-image-radial-to-pos":[{"mask-radial-to":Se()}],"mask-image-radial-from-color":[{"mask-radial-from":le()}],"mask-image-radial-to-color":[{"mask-radial-to":le()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":P()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Se()}],"mask-image-conic-to-pos":[{"mask-conic-to":Se()}],"mask-image-conic-from-color":[{"mask-conic-from":le()}],"mask-image-conic-to-color":[{"mask-conic-to":le()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Ye()}],"mask-repeat":[{mask:M()}],"mask-size":[{mask:re()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",be,ye]}],filter:[{filter:["","none",be,ye]}],blur:[{blur:Ke()}],brightness:[{brightness:[qe,be,ye]}],contrast:[{contrast:[qe,be,ye]}],"drop-shadow":[{"drop-shadow":["","none",_,Yc,Fc]}],"drop-shadow-color":[{"drop-shadow":le()}],grayscale:[{grayscale:["",qe,be,ye]}],"hue-rotate":[{"hue-rotate":[qe,be,ye]}],invert:[{invert:["",qe,be,ye]}],saturate:[{saturate:[qe,be,ye]}],sepia:[{sepia:["",qe,be,ye]}],"backdrop-filter":[{"backdrop-filter":["","none",be,ye]}],"backdrop-blur":[{"backdrop-blur":Ke()}],"backdrop-brightness":[{"backdrop-brightness":[qe,be,ye]}],"backdrop-contrast":[{"backdrop-contrast":[qe,be,ye]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,be,ye]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,be,ye]}],"backdrop-invert":[{"backdrop-invert":["",qe,be,ye]}],"backdrop-opacity":[{"backdrop-opacity":[qe,be,ye]}],"backdrop-saturate":[{"backdrop-saturate":[qe,be,ye]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,be,ye]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":$()}],"border-spacing-x":[{"border-spacing-x":$()}],"border-spacing-y":[{"border-spacing-y":$()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",be,ye]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",be,ye]}],ease:[{ease:["linear","initial",O,be,ye]}],delay:[{delay:[qe,be,ye]}],animate:[{animate:["none",L,be,ye]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[A,be,ye]}],"perspective-origin":[{"perspective-origin":H()}],rotate:[{rotate:Ze()}],"rotate-x":[{"rotate-x":Ze()}],"rotate-y":[{"rotate-y":Ze()}],"rotate-z":[{"rotate-z":Ze()}],scale:[{scale:$t()}],"scale-x":[{"scale-x":$t()}],"scale-y":[{"scale-y":$t()}],"scale-z":[{"scale-z":$t()}],"scale-3d":["scale-3d"],skew:[{skew:En()}],"skew-x":[{"skew-x":En()}],"skew-y":[{"skew-y":En()}],transform:[{transform:[be,ye,"","none","gpu","cpu"]}],"transform-origin":[{origin:H()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ut()}],"translate-x":[{"translate-x":Ut()}],"translate-y":[{"translate-y":Ut()}],"translate-z":[{"translate-z":Ut()}],"translate-none":["translate-none"],accent:[{accent:le()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:le()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",be,ye]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":$()}],"scroll-mx":[{"scroll-mx":$()}],"scroll-my":[{"scroll-my":$()}],"scroll-ms":[{"scroll-ms":$()}],"scroll-me":[{"scroll-me":$()}],"scroll-mbs":[{"scroll-mbs":$()}],"scroll-mbe":[{"scroll-mbe":$()}],"scroll-mt":[{"scroll-mt":$()}],"scroll-mr":[{"scroll-mr":$()}],"scroll-mb":[{"scroll-mb":$()}],"scroll-ml":[{"scroll-ml":$()}],"scroll-p":[{"scroll-p":$()}],"scroll-px":[{"scroll-px":$()}],"scroll-py":[{"scroll-py":$()}],"scroll-ps":[{"scroll-ps":$()}],"scroll-pe":[{"scroll-pe":$()}],"scroll-pbs":[{"scroll-pbs":$()}],"scroll-pbe":[{"scroll-pbe":$()}],"scroll-pt":[{"scroll-pt":$()}],"scroll-pr":[{"scroll-pr":$()}],"scroll-pb":[{"scroll-pb":$()}],"scroll-pl":[{"scroll-pl":$()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",be,ye]}],fill:[{fill:["none",...le()]}],"stroke-w":[{stroke:[qe,Fr,os,bv]}],stroke:[{stroke:["none",...le()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},vq=XB(bq);function Qn(...e){return vq(i2(e))}const kq=ox("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 focus-visible:ring-offset-2 focus-visible:ring-offset-overlay-scrim disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-accent text-on-inverse hover:bg-mono-200",secondary:"border border-base bg-bg text-heading hover:bg-bg-elevated",ghost:"text-secondary hover:bg-bg-elevated hover:text-primary",outline:"border border-base bg-transparent text-heading hover:bg-bg-elevated",destructive:"bg-negative-600 text-on-emphasis hover:bg-negative-700"},size:{default:"h-10 px-4 md:h-9",sm:"h-9 px-3 text-xs md:h-8",icon:"size-10 md:size-9"}},defaultVariants:{variant:"default",size:"default"}}),Ee=q.forwardRef(({className:e,variant:n,size:i,asChild:s=!1,...r},u)=>{const d=s?q4:"button";return m.jsx(d,{ref:u,className:Qn(kq({variant:n,size:i,className:e})),...r})});Ee.displayName="Button";const xq=ox("inline-flex items-center rounded-md border px-2 py-0.5 text-[11px] font-medium tracking-wide",{variants:{variant:{neutral:"border-base bg-bg text-neutral",success:"border-positive bg-positive-soft text-positive",warning:"border-caution-500/25 bg-caution-soft text-caution",destructive:"border-negative bg-negative-soft text-negative"}},defaultVariants:{variant:"neutral"}});function xx({className:e,variant:n,...i}){return m.jsx("div",{className:Qn(xq({variant:n}),e),...i})}const wq=220;function xv({compact:e=!1,version:n,updateAvailable:i,onDismissUpdate:s}){const r=!e&&n&&n!=="unknown",[u,d]=q.useState(!1),g=!e&&i&&s,y=()=>{d(!0),window.setTimeout(()=>{s?.(),d(!1)},wq)};return e?m.jsxs(Xe,{to:"/",className:"brand-lockup brand-lockup-compact","aria-label":"Canonry home",children:[m.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"}),m.jsx("span",{className:"brand-copy",children:m.jsx("span",{className:"brand-mark",children:"Canonry"})})]}):m.jsxs("div",{className:"brand-lockup brand-lockup-wrapper",children:[m.jsx(Xe,{to:"/",className:"brand-icon-link","aria-label":"Canonry home",tabIndex:-1,children:m.jsx("img",{className:"brand-icon",src:"./favicon.svg",alt:"","aria-hidden":"true"})}),m.jsxs("div",{className:"brand-copy",children:[m.jsx(Xe,{to:"/",className:"brand-mark",children:"Canonry"}),!g&&r?m.jsxs("span",{className:"brand-version",children:["v",n]}):null]}),g?m.jsxs("span",{className:`brand-update-bubble ${u?"brand-update-bubble-closing":""}`,role:"status","aria-live":"polite",children:[m.jsxs("a",{className:"brand-update-bubble-link",href:i.url,target:"_blank",rel:"noopener noreferrer",title:`Open release: ${i.upgradeCommand}`,"aria-label":`New version v${i.latest} available — open release page`,children:[m.jsxs("span",{className:"brand-update-bubble-from",children:["v",i.current]}),m.jsx(wN,{className:"brand-update-bubble-arrow size-3","aria-hidden":"true"}),m.jsxs("span",{className:"brand-update-bubble-to",children:["v",i.latest]})]}),m.jsx("button",{type:"button",className:"brand-update-bubble-dismiss",onClick:y,"aria-label":`Dismiss update notification for v${i.latest}`,children:m.jsx(Bo,{className:"size-3","aria-hidden":"true"})})]}):null]})}function Sq({provider:e}){const n={gemini:"border-blue-800/50 bg-blue-950/40 text-blue-300",openai:"border-green-800/50 bg-green-950/40 text-green-300",claude:"border-amber-800/50 bg-amber-950/40 text-amber-300",perplexity:"border-teal-800/50 bg-teal-950/40 text-teal-300",local:"border-purple-800/50 bg-purple-950/40 text-purple-300"},s=Object.hasOwn(n,e)?`provider-badge--${e} ${n[e]}`:"border-zinc-700 bg-zinc-800 text-zinc-300";return m.jsx("span",{className:`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-wide ${s}`,children:e})}function vn({tone:e,children:n,...i}){const s=e==="positive"?"success":e==="caution"?"warning":e==="negative"?"destructive":"neutral";return m.jsx(xx,{variant:s,...i,children:n})}function D0({status:e}){return m.jsx(vn,{tone:nx(e),children:rM(e)})}const jq=a2,Nq=e2,wx=q.forwardRef(({className:e,...n},i)=>m.jsx(zf,{ref:i,className:Qn("fixed inset-0 z-50 bg-overlay-scrim/70 backdrop-blur-sm",e),...n}));wx.displayName=zf.displayName;const Aq=400,_q=1200,Cq=720,Sx=q.forwardRef(({className:e,children:n,...i},s)=>{const[r,u]=q.useState(Cq),d=q.useRef(!1),g=q.useRef(0),y=q.useRef(0),v=q.useCallback(j=>{d.current=!0,g.current=j.clientX,y.current=r,j.target.setPointerCapture(j.pointerId),j.preventDefault()},[r]),w=q.useCallback(j=>{if(!d.current)return;const _=g.current-j.clientX,E=Math.min(_q,Math.max(Aq,y.current+_));u(E)},[]),S=q.useCallback(()=>{d.current=!1},[]);return m.jsxs(Nq,{children:[m.jsx(wx,{}),m.jsxs(Ef,{ref:s,className:Qn("fixed z-50 flex flex-col bg-bg px-5 py-4 shadow-2xl overflow-hidden","max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:max-h-[88vh] max-md:rounded-t-2xl max-md:border-t","md:inset-y-0 md:right-0 md:h-full md:border-l","border-base",e),style:{width:`min(${r}px, 100vw)`},...i,children:[m.jsx("div",{className:"absolute inset-y-0 left-0 w-1.5 cursor-col-resize hover:bg-mono-700/50 active:bg-mono-600/50 transition-colors max-md:hidden",onPointerDown:v,onPointerMove:w,onPointerUp:S}),n,m.jsxs(t2,{className:"absolute right-4 top-4 inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-bg-elevated hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400",children:[m.jsx(Bo,{className:"size-4"}),m.jsx("span",{className:"sr-only",children:"Close"})]})]})]})});Sx.displayName=Ef.displayName;const zq=({className:e,...n})=>m.jsx("div",{className:Qn("flex flex-col gap-1.5 pr-10",e),...n}),jx=q.forwardRef(({className:e,...n},i)=>m.jsx(Tf,{ref:i,className:Qn("text-lg font-medium text-primary",e),...n}));jx.displayName=Tf.displayName;const Nx=q.forwardRef(({className:e,...n},i)=>m.jsx(n2,{ref:i,className:Qn("text-sm text-muted",e),...n}));Nx.displayName=n2.displayName;function Ip({title:e,subtitle:n,children:i,open:s,onClose:r}){return m.jsx(jq,{open:s,onOpenChange:u=>u?void 0:r(),children:m.jsxs(Sx,{children:[m.jsxs(zq,{className:"drawer-head",children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:n}),m.jsx(jx,{id:"drawer-title",children:e}),m.jsx(Nx,{className:"sr-only",children:n})]}),m.jsx("div",{className:"drawer-body",children:i})]})})}function Yr({text:e}){const[n,i]=q.useState(null),s=q.useRef(null),r=q.useCallback(()=>{if(!s.current)return;const g=s.current.getBoundingClientRect();i({top:g.top,left:g.left+g.width/2})},[]),u=q.useCallback(()=>i(null),[]),d=q.useCallback(()=>{n===null?r():u()},[n,r,u]);return m.jsxs("span",{className:"info-tooltip-wrapper",onMouseEnter:r,onMouseLeave:u,children:[m.jsx("button",{ref:s,type:"button",className:"info-tooltip-trigger","aria-label":e,"aria-expanded":n!==null,onFocus:r,onBlur:u,onClick:d,onKeyDown:g=>{g.key==="Escape"&&u()},children:m.jsxs("svg",{className:"info-tooltip-icon",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[m.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),m.jsx("path",{d:"M8 7v4M8 5.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),n!==null&&z4.createPortal(m.jsx("span",{"aria-hidden":"true",style:{position:"fixed",top:n.top,left:n.left,transform:"translateX(-50%) translateY(calc(-100% - 8px))",zIndex:9999,pointerEvents:"none",width:"14rem",padding:"0.5rem 0.75rem",fontSize:"11px",fontWeight:400,textTransform:"none",letterSpacing:"normal",lineHeight:"1rem",color:"var(--color-neutral-text)",backgroundColor:"var(--color-bg-elevated)",border:"1px solid color-mix(in oklab, var(--color-border-strong) 60%, transparent)",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px var(--color-shadow-tooltip), 0 4px 6px -4px var(--color-shadow-tooltip)"},children:e}),document.body)]})}const Eq=/[\s\-_]+/;function Tq(e){const n=e.split(Eq).filter(Boolean);return n.length===0?null:n.map(i=>i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[\\s\\-_]*")}function wv(e,n){const i=Dq(n),s=e.split(/(\*\*[^*]+\*\*)/).filter(Boolean).map(v=>v.startsWith("**")&&v.endsWith("**")?{type:"bold",value:v.slice(2,-2)}:{type:"text",value:v}),r=i.flatMap(v=>v.terms).filter(v=>v.trim().length>1);if(r.length===0)return s.map((v,w)=>v.type==="bold"?ro.createElement("strong",{key:`b-${w}`,className:"text-strong font-semibold"},v.value):v.value).filter(Boolean);const d=[...r].sort((v,w)=>w.length-v.length).map(Tq).filter(v=>!!v);if(d.length===0)return s.map((v,w)=>v.type==="bold"?ro.createElement("strong",{key:`b-${w}`,className:"text-strong font-semibold"},v.value):v.value).filter(Boolean);const g=new RegExp(`(${d.join("|")})`,"gi"),y=new Map;for(const v of i)for(const w of v.terms){const S=ms(w);S&&!y.has(S)&&y.set(S,v.className)}return s.flatMap((v,w)=>v.value.split(g).map((j,_)=>{if(!j)return null;if(_%2===1){const A=y.get(ms(j))??"answer-highlight";return v.type==="bold"?ro.createElement("mark",{key:`hl-${w}-${_}`,className:A},ro.createElement("strong",{className:"text-strong font-semibold"},j)):ro.createElement("mark",{key:`hl-${w}-${_}`,className:A},j)}return v.type==="bold"?ro.createElement("strong",{key:`b-${w}-${_}`,className:"text-strong font-semibold"},j):j})).filter(Boolean)}function Dq(e){return e.length===0?[]:typeof e[0]=="string"?[{terms:e,className:"answer-highlight"}]:e}function xf(e){const n=(e??"").trim();return n&&(n.startsWith("/")||/^https?:\/\//i.test(n)||/^mailto:/i.test(n))?n:null}function Up(e,n){switch(e){case"new":return"First observation";case"emerging":return"First mention";case"lost":return"Lost since last run";default:return n==="mentioned"||n==="visible"?"Mentioned in latest run":n==="pending"?"Awaiting first run":"Not mentioned in latest run"}}function Oq({evidence:e,project:n,onClose:i}){const[s,r]=q.useState(!1),[u,d]=q.useState("mentions"),[g,y]=q.useState(-1),[v,w]=q.useState(null),[S,j]=q.useState(!1),[_,E]=q.useState({}),A=ez(n.project),C=new Set(A.map(df)),O=e.runHistory,L=O.length>1,[G,P]=q.useState(null),H=q.useRef(!1);q.useEffect(()=>{if(H.current||e.answerSnippet&&(e.visibilityState!=null||e.answerMentioned!=null))return;const ne=O.at(-1);ne&&(H.current=!0,cu(ne.runId).then(ie=>{const se=ie.snapshots?.find(ze=>ze.query===e.query&&ze.provider===e.provider);se&&P({citationState:se.citationState,answerMentioned:se.answerMentioned,visibilityState:se.visibilityState,visibilityTransition:ne.visibilityTransition,provider:se.provider,model:se.model??e.model,answerSnippet:se.answerText??e.answerSnippet,citedDomains:se.citedDomains??e.citedDomains,competitorDomains:se.competitorOverlap??e.competitorDomains,recommendedCompetitors:se.recommendedCompetitors??e.recommendedCompetitors??[],matchedTerms:se.matchedTerms??e.matchedTerms??[],groundingSources:se.groundingSources??e.groundingSources,searchQueries:se.searchQueries,evidenceUrls:[],changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary})}).catch(()=>{}))},[e,O]);const ae=g>=0&&v!==null,R=ae?v:G||{citationState:e.citationState,answerMentioned:e.answerMentioned,visibilityState:e.visibilityState,visibilityTransition:O.at(-1)?.visibilityTransition,provider:e.provider,model:e.model,answerSnippet:e.answerSnippet,citedDomains:e.citedDomains,competitorDomains:e.competitorDomains,recommendedCompetitors:e.recommendedCompetitors??[],matchedTerms:e.matchedTerms??[],groundingSources:e.groundingSources,searchQueries:e.searchQueries??[],evidenceUrls:e.evidenceUrls,changeLabel:e.visibilityChangeLabel??e.changeLabel,summary:e.summary},$=R.visibilityState==="pending"||R.citationState==="pending",fe=$?!1:R.visibilityState!=null?R.visibilityState==="visible":R.answerMentioned!=null?R.answerMentioned:R.citationState===vu.cited||R.citationState==="emerging",ue=R.answerMentioned!=null||R.visibilityState!=null||R.recommendedCompetitors.length>0,me=R.citedDomains.length>0||R.groundingSources.length>0||R.evidenceUrls.length>0,pe=n.project.displayName||n.project.name,Ge=[...A.map(df),pe,pe.split(" ").slice(0,2).join(" "),...R.matchedTerms].filter(ne=>ne.trim().length>2),De=[...R.competitorDomains.flatMap(ne=>{const ie=K9(ne);return ie.length>=4?[ie]:[]}),...R.recommendedCompetitors].filter(ne=>ne.trim().length>2),Ne=[{terms:Ge,className:"answer-highlight-brand"},...De.length>0?[{terms:De,className:"answer-highlight-competitor"}]:[]],K=$?"pending":R.visibilityTransition==="lost"?"lost":fe?"mentioned":"not-mentioned",ee=q.useRef(0),he=q.useCallback(async ne=>{const ie=++ee.current;if(ne===-1||ne===O.length-1){y(-1),w(null),r(!1);return}y(ne),r(!1);const se=O[ne],ze=`${se.runId}::${e.query}::${e.provider}`;if(_[ze]){w(_[ze]);return}j(!0);try{const rt=await cu(se.runId);if(ie!==ee.current)return;const Se=rt.snapshots?.find(Ze=>Ze.query===e.query&&Ze.provider===e.provider)??rt.snapshots?.find(Ze=>Ze.query===e.query),Ke=Se?{citationState:Se.citationState,answerMentioned:Se.answerMentioned,visibilityState:Se.visibilityState,visibilityTransition:se.visibilityTransition,provider:Se.provider,model:Se.model??null,answerSnippet:Se.answerText??"",citedDomains:Se.citedDomains,competitorDomains:Se.competitorOverlap,recommendedCompetitors:Se.recommendedCompetitors??[],matchedTerms:Se.matchedTerms??[],groundingSources:Se.groundingSources,searchQueries:Se.searchQueries,evidenceUrls:[],changeLabel:Up(se.mentionTransition??se.visibilityTransition,se.mentionState??se.visibilityState),summary:""}:{citationState:se.citationState,answerMentioned:se.answerMentioned,visibilityState:se.visibilityState,visibilityTransition:se.visibilityTransition,provider:e.provider,model:se.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:Up(se.mentionTransition??se.visibilityTransition,se.mentionState??se.visibilityState),summary:"Snapshot data not available for this run."};E(Ze=>({...Ze,[ze]:Ke})),w(Ke)}catch{if(ie!==ee.current)return;w({citationState:se.citationState,answerMentioned:se.answerMentioned,visibilityState:se.visibilityState,visibilityTransition:se.visibilityTransition,provider:e.provider,model:se.model??null,answerSnippet:"",citedDomains:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],groundingSources:[],searchQueries:[],evidenceUrls:[],changeLabel:Up(se.mentionTransition??se.visibilityTransition,se.mentionState??se.visibilityState),summary:"Failed to load historical run data."})}finally{ie===ee.current&&j(!1)}},[O,e.query,e.provider,_]),le=(ae||e.historyScope!=="provider")&&R.model?`${R.provider} (${R.model}) · ${R.changeLabel.toLowerCase()}`:`${R.provider} · ${R.changeLabel.toLowerCase()}`,Ye=!ae&&e.historyScope==="provider"?[e.model?`Current model: ${e.model}`:null,e.modelsSeen&&e.modelsSeen.length>1?`History spans ${e.modelsSeen.length} models`:null].filter(Boolean).join(" · "):"",M=fe?{label:"Mentioned in answer",title:"Your brand or domain is mentioned in this answer",meta:le}:R.visibilityTransition==="lost"?{label:"Mention lost",title:"Your brand no longer appears in this answer",meta:le}:$?{label:"Pending",title:"Awaiting first run",meta:"No provider data yet"}:{label:"Not mentioned in answer",title:"Your brand or domain was not mentioned in this answer",meta:le},re=()=>{if(!R.answerSnippet)return null;const ne=R.answerSnippet.split(`
|
|
58
|
+
`),ie=[];let se=[],ze=0;const rt=()=>{if(se.length===0)return;const Se=se.join(" ").trim();Se&&ie.push(m.jsx("p",{className:ie.length>0?"mt-2.5":"",children:wv(Se,Ne)},ze++)),se=[]};for(const Se of ne){const Ke=Se.trim();if(/^[-\u2013\u2014]{3,}$/.test(Ke)){rt(),ie.push(m.jsx("hr",{className:"border-default my-3"},ze++));continue}const Ze=Ke.match(/^(#{1,3})\s+(\S.*)$/);if(Ze){rt();const $t=Ze[1].length,En=Ze[2].replace(/^[\p{Emoji}\p{Emoji_Component}\s]+/u,"").trim()||Ze[2],Ut=$t===1?"text-[13px] font-semibold text-heading mt-4 mb-1":$t===2?"text-xs font-semibold text-strong mt-3 mb-0.5":"text-xs font-medium text-neutral mt-2";ie.push(m.jsx("p",{className:Ut,children:wv(En,Ne)},ze++));continue}if(Ke===""){rt();continue}se.push(Ke)}return rt(),ie};return m.jsx(a2,{open:!0,onOpenChange:ne=>{ne||i()},children:m.jsxs(e2,{children:[m.jsx(zf,{className:"fixed inset-0 z-50 bg-overlay-scrim/80 backdrop-blur-sm"}),m.jsxs(Ef,{className:"evidence-modal","aria-describedby":void 0,children:[m.jsxs("div",{className:"evidence-modal-header",children:[m.jsxs("div",{className:"min-w-0 flex-1",children:[m.jsxs("p",{className:"eyebrow eyebrow-soft",children:[n.project.name," ","·"," ",R.provider||"All providers"]}),m.jsx(Tf,{className:"text-lg font-semibold text-primary truncate",children:e.query})]}),m.jsxs(t2,{className:"inline-flex size-8 items-center justify-center rounded-md text-muted transition hover:bg-mono-800 hover:text-heading focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-mono-400 shrink-0",children:[m.jsx(Bo,{className:"size-4"}),m.jsx("span",{className:"sr-only",children:"Close"})]})]}),L&&m.jsxs("div",{className:"evidence-modal-timeline",children:[m.jsx("p",{className:"drawer-section-label mb-1.5",children:"Run history"}),m.jsx("div",{className:"flex items-center gap-1 overflow-x-auto pb-1",children:O.map((ne,ie)=>{const se=g===-1&&ie===O.length-1||g===ie,ze=ne.visibilityState??(ne.answerMentioned?"visible":"not-visible"),rt=ne.visibilityTransition??ze,Se=ze==="visible"?"bg-positive-400":rt==="emerging"?"bg-caution-400":rt==="lost"?"bg-negative-400":"bg-mono-600",Ze=new Date(ne.createdAt).toLocaleDateString(void 0,{month:"short",day:"numeric"}),$t=!!(ne.model&&ie>0&&O[ie-1]?.model&&O[ie-1].model!==ne.model);return m.jsxs("button",{type:"button",className:`evidence-run-dot ${se?"evidence-run-dot--selected":""}`,onClick:()=>{he(ie===O.length-1?-1:ie)},"aria-label":[`Run ${Ze}: ${ze}`,ne.model?`model ${ne.model}`:null,$t?"model changed":null].filter(Boolean).join(" — "),"aria-pressed":se,children:[m.jsx("span",{className:`size-2 rounded-full ${Se} ${$t?"ring-1 ring-caution-300/80 ring-offset-2 ring-offset-bg":""}`,"aria-hidden":"true"}),m.jsx("span",{className:"text-[10px] text-muted",children:Ze})]},ie)})}),g>=0&&g<O.length&&m.jsxs("p",{className:"text-[11px] text-muted mt-1",children:["Viewing run from ",new Date(O[g].createdAt).toLocaleString()," ","—"," ",m.jsx("span",{className:"capitalize",children:O[g].visibilityState??(O[g].answerMentioned?"visible":"not-visible")}),m.jsxs("button",{type:"button",className:"text-secondary hover:text-strong ml-2",onClick:()=>{he(-1)},children:["←"," Back to latest"]})]}),!ae&&(e.modelTransitions?.length??0)>0&&m.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:e.modelTransitions.map(ne=>m.jsx("span",{className:"inline-flex items-center rounded-full border border-caution-400/30 bg-caution-400/10 px-2 py-1 text-[10px] text-caution-100",children:`${ne.fromModel??"unknown"} -> ${ne.toModel??"unknown"} on ${new Date(ne.createdAt).toLocaleDateString()}`},`${ne.runId}:${ne.toModel??"unknown"}`))})]}),m.jsxs("div",{className:"evidence-modal-body",children:[S&&m.jsxs("div",{className:"md:col-span-2 flex items-center justify-center py-12 text-muted text-sm",children:["Loading historical run data","…"]}),!S&&m.jsxs(m.Fragment,{children:[m.jsxs("div",{className:"evidence-modal-main",children:[m.jsxs("div",{className:`evidence-position-hero evidence-position-hero--${K}`,children:[m.jsx("p",{className:`evidence-position-label evidence-position-label--${K}`,children:M.label}),m.jsx("p",{className:`evidence-position-title evidence-position-title--${K}`,children:M.title}),m.jsx("p",{className:"evidence-position-meta",children:M.meta}),Ye&&m.jsx("p",{className:"mt-1 text-[11px] text-muted",children:Ye})]}),R.answerSnippet&&m.jsxs("div",{children:[m.jsx("p",{className:"drawer-section-label",children:"What the AI said"}),m.jsx("div",{className:`answer-snippet-block ${s?"evidence-answer-expanded":"evidence-answer-collapsed"}`,children:re()}),R.answerSnippet.length>280&&m.jsx("button",{type:"button",className:"mt-1.5 text-xs text-muted hover:text-neutral transition-colors",onClick:()=>r(!s),children:s?"↑ Collapse":"↓ Show full answer"})]}),!R.answerSnippet&&!S&&m.jsx("div",{className:"rounded-lg border border-subtle bg-surface-subtle px-4 py-8 text-center text-faint text-sm",children:"No answer text recorded for this run"}),R.searchQueries.length>0&&m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsx("span",{children:"Web searches the model ran"}),m.jsx(Yr,{text:"The search queries this AI model issued while researching your prompt. They reveal how the model reformulated the question — the phrasings worth optimizing your content for. Distinct from grounding sources (what it found) and citations (what it linked)."})]}),m.jsx("ul",{className:"grid gap-1",children:R.searchQueries.map((ne,ie)=>m.jsxs("li",{className:"flex items-start gap-2 text-sm text-neutral",children:[m.jsx(dA,{className:"size-3.5 mt-0.5 shrink-0 text-faint","aria-hidden":"true"}),m.jsx("span",{className:"break-words",children:ne})]},`${ie}-${ne}`))})]}),!ae&&e.relatedTechnicalSignals.length>0&&m.jsxs("div",{children:[m.jsx("p",{className:"drawer-section-label",children:fe?"Why you're visible":"What to fix"}),m.jsx("div",{className:"action-items-list",children:e.relatedTechnicalSignals.map((ne,ie)=>m.jsxs("div",{className:"action-item",children:[m.jsx("svg",{className:`action-item-icon ${fe?"text-positive-400":"text-caution-400"}`,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:fe?m.jsx("path",{d:"M3 8l3.5 3.5L13 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}):m.jsxs(m.Fragment,{children:[m.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.5"}),m.jsx("path",{d:"M8 5v3.5M8 10.5v0",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),m.jsx("span",{className:"action-item-text",children:ne})]},ie))})]}),R.summary&&m.jsx("p",{className:"text-xs text-faint border-t border-subtle pt-3 mt-1",children:R.summary})]}),m.jsxs("div",{className:"evidence-modal-sidebar",children:[(ue||me)&&m.jsxs("div",{className:"sidebar-tabs",children:[m.jsx("button",{className:`sidebar-tab ${u==="mentions"?"sidebar-tab--active":""}`,onClick:()=>d("mentions"),type:"button",title:"Canonry's answer-level visibility assessment and any company names extracted from the answer text.",children:"Mentions"}),m.jsx("button",{className:`sidebar-tab ${u==="sources"?"sidebar-tab--active":""}`,onClick:()=>d("sources"),type:"button",title:"Grounding links the model used to build the answer. These are supporting sources, not the primary visibility signal.",children:"Sources"})]}),u==="mentions"&&m.jsxs(m.Fragment,{children:[m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsx("span",{children:"Mention in answer"}),m.jsx(Yr,{text:"Canonry scans the AI answer for your owned domains and project name. This is independent from grounding or citation sources."})]}),m.jsxs("div",{className:`mention-status mention-status--${fe?"mentioned":"not-mentioned"}`,children:[m.jsx("span",{className:"mention-status-icon",children:$?"…":fe?"✓":"—"}),m.jsx("span",{className:"mention-status-label",children:$?"Pending":fe?"Mentioned":"Not mentioned"})]}),R.matchedTerms.length>0&&m.jsxs("div",{className:"mt-2",children:[m.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Matched in answer"}),m.jsx("div",{className:"flex flex-wrap gap-1.5",children:R.matchedTerms.map(ne=>m.jsx("span",{className:"mention-chip mention-chip--brand",children:ne},ne))})]}),!$&&!fe&&R.matchedTerms.length===0&&m.jsxs("div",{className:"mt-2",children:[m.jsx("p",{className:"text-[10px] uppercase tracking-wide text-muted mb-1.5",children:"Searched for"}),m.jsx("div",{className:"flex flex-wrap gap-1.5",children:Ge.map(ne=>m.jsx("span",{className:"mention-chip mention-chip--muted",children:ne},ne))}),m.jsx("p",{className:"text-[11px] text-faint mt-1.5",children:"None of these appear in the answer text."})]})]}),(R.recommendedCompetitors.length>0||R.competitorDomains.length>0)&&m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsx("span",{children:"Competitors in answer"}),m.jsx(Yr,{text:"Competitors detected in the answer text or cited source links. Includes both tracked competitors and names extracted by Canonry."})]}),m.jsx("div",{className:"flex flex-wrap gap-1.5",children:(()=>{const ne=R.competitorDomains.map(ze=>ze.replace(/^www\./,"")),ie=new Set(ne.map(ze=>ms(ze.replace(/\.[^.]+$/,""))));return[...R.recommendedCompetitors.filter(ze=>!ie.has(ms(ze))),...ne].map(ze=>m.jsx("span",{className:"mention-chip mention-chip--competitor",children:ze},ze))})()})]})]}),u==="sources"&&m.jsxs(m.Fragment,{children:[R.citedDomains.length>0&&m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsx("span",{children:"Domains from source links"}),m.jsx(Yr,{text:"These domains were extracted from grounding or citation URLs. They are supporting-source metadata, not proof that the answer text mentioned them."})]}),m.jsx("div",{className:"citation-leaderboard",children:R.citedDomains.map((ne,ie)=>{const se=ne.toLowerCase().replace(/^www\./,""),ze=C.has(se),rt=!ze&&R.competitorDomains.some(Ke=>Ke.toLowerCase().replace(/^www\./,"")===se),Se=ze?"you":rt?"competitor":"other";return m.jsxs("div",{className:`citation-leaderboard-item citation-leaderboard-item--${Se}`,children:[m.jsxs("span",{className:"citation-leaderboard-rank",children:["#",ie+1]}),m.jsx("span",{className:"citation-leaderboard-domain",children:ne}),ze&&m.jsx("span",{className:"citation-leaderboard-tag",children:"You"}),rt&&m.jsx("span",{className:"citation-leaderboard-tag",children:"Competitor"})]},ne)})})]}),R.groundingSources.length>0&&m.jsxs("div",{children:[m.jsxs("div",{className:"drawer-section-label flex items-center",children:[m.jsxs("span",{children:["Grounding source links (",R.groundingSources.length,")"]}),m.jsx(Yr,{text:"Links the model used as grounding or supporting context while producing the answer. These are not the same thing as answer visibility."})]}),m.jsx("ul",{className:"grid gap-0.5",children:R.groundingSources.map((ne,ie)=>{const se=xf(ne.uri),ze=ne.title||ne.uri;return m.jsx("li",{className:"truncate text-sm",children:se?m.jsx("a",{href:se,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:ze}):m.jsx("span",{className:"text-secondary",children:ze})},ie)})})]}),R.evidenceUrls.length>0&&m.jsxs("div",{children:[m.jsx("p",{className:"drawer-section-label",children:"Evidence URLs"}),m.jsx("ul",{className:"grid gap-1",children:R.evidenceUrls.map(ne=>{const ie=xf(ne);return m.jsx("li",{className:"truncate text-sm",children:ie?m.jsx("a",{href:ie,target:"_blank",rel:"noopener noreferrer",className:"text-secondary hover:text-strong transition-colors",children:ne}):m.jsx("span",{className:"text-secondary",children:ne})},ne)})})]}),R.citedDomains.length===0&&R.groundingSources.length===0&&R.evidenceUrls.length===0&&m.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No source data ",ae?"for this run":"yet"]})]}),!ue&&!me&&m.jsxs("div",{className:"flex items-center justify-center h-24 text-faint text-sm",children:["No answer visibility data ",ae?"for this run":"yet"]})]})]})]})]})]})})}function Rq(e){const n=e.match(/^\/projects\/([^/]+)/);if(!n)return null;try{return decodeURIComponent(n[1])}catch{return n[1]}}function Mq(e,n){return e?n?.projects.find(s=>s.project.name===e||s.project.id===e)?.project.name??e:null}function Bq(e,n){return Mq(Rq(e),n)}function aa(e){const n=new Date("2026-02-20");return e.map((i,s)=>({runId:`run_mock_${s+1}`,citationState:i,createdAt:new Date(n.getTime()+s*2*24*60*60*1e3).toISOString()}))}const Pp=[{id:"project_citypoint",name:"Citypoint Dental NYC",canonicalDomain:"citypointdental.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["local intent","priority"],labels:{},providers:[],providerModels:{},measurement:Np,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_harbor",name:"Harbor Legal Group",canonicalDomain:"harborlegal.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["lead gen"],labels:{},providers:[],providerModels:{},measurement:Np,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1},{id:"project_northstar",name:"Northstar Orthopedics",canonicalDomain:"northstarortho.com",ownedDomains:[],aliases:[],country:"US",language:"en",tags:["multi-location"],labels:{},providers:[],providerModels:{},measurement:Np,locations:[],defaultLocation:null,autoExtractBacklinks:!1,configSource:"cli",configRevision:1}];function Vu(e){return{id:e.id,projectId:e.projectId,projectName:e.projectName,kind:e.kind,kindLabel:e.kindLabel,status:e.status,trigger:e.trigger??"manual",createdAt:e.createdAt,startedAt:e.startedAt,duration:e.duration,statusDetail:e.statusDetail,summary:e.summary,triggerLabel:e.triggerLabel}}const qq=Vu({id:"run_citypoint_visibility_20260308",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T12:15:00.000Z",startedAt:"Mar 8, 12:15 PM",duration:"6m 12s",statusDetail:"18 tracked queries checked; 3 citation losses detected on emergency-intent prompts.",summary:"Citation losses on emergency-intent prompts",triggerLabel:"Scheduled"}),Lq=Vu({id:"run_citypoint_queued_20260309",projectId:"project_citypoint",projectName:"Citypoint Dental NYC",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"queued",createdAt:"2026-03-09T08:05:00.000Z",startedAt:"Mar 9, 8:05 AM",duration:"Waiting for slot",statusDetail:"Ready to enqueue after the next provider rate window clears.",summary:"Queued follow-up after local ranking movement",triggerLabel:"Manual"}),$q=Vu({id:"run_harbor_visibility_20260308",projectId:"project_harbor",projectName:"Harbor Legal Group",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"completed",createdAt:"2026-03-08T11:05:00.000Z",startedAt:"Mar 8, 11:05 AM",duration:"5m 07s",statusDetail:"12 tracked queries checked; local-intent visibility held steady across branded prompts.",summary:"Branded prompts remain stable",triggerLabel:"Scheduled"}),Iq=Vu({id:"run_northstar_visibility_20260308",projectId:"project_northstar",projectName:"Northstar Orthopedics",kind:"answer-visibility",kindLabel:"Answer visibility sweep",status:"running",createdAt:"2026-03-08T13:40:00.000Z",startedAt:"Mar 8, 1:40 PM",duration:"3m 10s",statusDetail:"Provider responses still in flight for 9 multi-location prompts.",summary:"Mid-run on treatment-location prompts",triggerLabel:"Manual"}),Uq=[{id:"evidence_citypoint_emergency_gemini",query:"emergency dentist brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"lost",changeLabel:"Lost since Mar 5",answerSnippet:"For urgent dental care in Brooklyn, Downtown Smiles and Harbor Dental are now cited first for emergency availability and same-day booking.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:["https://downtownsmiles.com/emergency-dentist-brooklyn","https://harbordental.com/same-day-emergency-care"],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing on the emergency service page","llms.txt not found during latest site audit","Location pages link weakly into the emergency care hub"],summary:"AI answers now cite two competitors while your emergency page is no longer grounded.",runHistory:aa(["cited","cited","cited","cited","cited","cited","cited","not-cited","not-cited"])},{id:"evidence_citypoint_emergency_openai",query:"emergency dentist brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"Cited for 6 runs",answerSnippet:"Citypoint Dental is listed as a top emergency dentist in Brooklyn for same-day appointments and walk-in availability.",citedDomains:["citypointdental.com","downtownsmiles.com"],evidenceUrls:["https://citypointdental.com/emergency-dentist-brooklyn"],competitorDomains:["downtownsmiles.com"],groundingSources:[],relatedTechnicalSignals:["Emergency page indexed with structured data"],summary:"OpenAI cites your emergency page consistently alongside one competitor.",runHistory:aa(["not-cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_emergency_claude",query:"emergency dentist brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"Based on the search results, top-rated emergency dental practices in Brooklyn include Downtown Smiles and Harbor Dental.",citedDomains:["downtownsmiles.com","harbordental.com"],evidenceUrls:[],competitorDomains:["downtownsmiles.com","harbordental.com"],groundingSources:[],relatedTechnicalSignals:["FAQ schema missing","llms.txt not found"],summary:"Claude does not cite your domain for this emergency query.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_invisalign_openai",query:"best invisalign dentist downtown brooklyn",provider:"openai",model:"gpt-5.4",location:null,citationState:"emerging",changeLabel:"First citation in 7 days",answerSnippet:"Citypoint Dental appears as an emerging recommendation for Invisalign in Downtown Brooklyn, supported by recent before-and-after case pages.",citedDomains:["citypointdental.com","clearlineortho.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn","https://citypointdental.com/case-studies/invisalign-open-bite"],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["Structured data now present on two case-study pages","Internal links from service pages to case studies improved crawl depth"],summary:"Fresh case-study content is starting to earn citations on Invisalign prompts.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","cited"])},{id:"evidence_citypoint_invisalign_gemini",query:"best invisalign dentist downtown brooklyn",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"cited",changeLabel:"Cited for 8 runs",answerSnippet:"Citypoint Dental in Downtown Brooklyn is highlighted for its Invisalign expertise and patient outcomes.",citedDomains:["citypointdental.com"],evidenceUrls:["https://citypointdental.com/invisalign-downtown-brooklyn"],competitorDomains:[],groundingSources:[],relatedTechnicalSignals:["Case study pages well-indexed"],summary:"Gemini consistently cites your Invisalign page with no competitor overlap.",runHistory:aa(["cited","cited","cited","cited","cited","cited","cited","cited"])},{id:"evidence_citypoint_invisalign_claude",query:"best invisalign dentist downtown brooklyn",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For Invisalign in Downtown Brooklyn, Clear Line Ortho and Brooklyn Smiles are frequently recommended for their experienced orthodontists.",citedDomains:["clearlineortho.com","brooklynsmiles.com"],evidenceUrls:[],competitorDomains:["clearlineortho.com"],groundingSources:[],relatedTechnicalSignals:["No before/after schema on case study pages"],summary:"Claude does not surface your Invisalign content despite strong page quality.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_claude",query:"pediatric dentist brooklyn heights",provider:"claude",model:"claude-sonnet-4-6",location:null,citationState:"not-cited",changeLabel:"No citation across 4 runs",answerSnippet:"Answers cite neighborhood-specific pediatric practices with stronger family-focused FAQ content and clearer insurance details.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:["https://brightkidsdental.com/pediatric-dentist-brooklyn-heights","https://parkpediatricdental.com/insurance"],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric service page exists for Brooklyn Heights","Insurance content is buried three clicks deep"],summary:"Coverage gap is content-driven, not purely technical.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_gemini",query:"pediatric dentist brooklyn heights",provider:"gemini",model:"gemini-2.5-flash",location:null,citationState:"not-cited",changeLabel:"No citation across 12 runs",answerSnippet:"For pediatric dentistry in Brooklyn Heights, Bright Kids Dental and Park Pediatric Dental are cited for family-friendly care.",citedDomains:["brightkidsdental.com","parkpediatricdental.com"],evidenceUrls:[],competitorDomains:["brightkidsdental.com","parkpediatricdental.com"],groundingSources:[],relatedTechnicalSignals:["No dedicated pediatric page for Brooklyn Heights"],summary:"Gemini does not surface your domain for pediatric queries in this area.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited","not-cited"])},{id:"evidence_citypoint_children_openai",query:"pediatric dentist brooklyn heights",provider:"openai",model:"gpt-5.4",location:null,citationState:"cited",changeLabel:"First citation this month",answerSnippet:"Citypoint Dental is mentioned as offering pediatric services in Brooklyn, though specialized pediatric-only practices are also highlighted.",citedDomains:["citypointdental.com","brightkidsdental.com"],evidenceUrls:["https://citypointdental.com/family-dentistry"],competitorDomains:["brightkidsdental.com"],groundingSources:[],relatedTechnicalSignals:["Family dentistry page recently updated"],summary:"OpenAI recently started citing your family dentistry page for this query.",runHistory:aa(["not-cited","not-cited","not-cited","not-cited","not-cited","cited"])}];Pp[0],Math.round(1/9*100),Math.round(2/9*100),Pp[1],aa(["cited","cited","cited","cited","cited"]),Pp[2],Math.round(2/7*100),Math.round(3/7*100),aa(["not-cited","not-cited","not-cited","cited"]);function Pq(e,n){return e.runs.find(i=>i.id===n)}function Vq(e,n){for(const i of e.projects){const s=i.visibilityEvidence.find(r=>r.id===n);if(s)return{project:i,evidence:s}}}function Gq(e,n,i){if(e){const s=e.visibilityEvidence.find(r=>r.id===i);if(s)return{project:e,evidence:s}}if(n)return Vq(n,i)}const Kq={regression:"negative",gain:"positive",opportunity:"caution","first-citation":"positive","provider-pickup":"positive","persistent-gap":"caution","competitor-gained":"negative","competitor-lost":"neutral","gbp-lodging-gap":"negative","gbp-listing-discrepancy":"negative","gbp-cta-gap":"caution","gbp-description-missing":"caution","gbp-metric-drop":"negative","gbp-keyword-drop":"negative"},Hq={opportunity:"write","persistent-gap":"write","competitor-gained":"write","competitor-lost":"write",regression:"investigate",gain:"monitor","first-citation":"monitor","provider-pickup":"monitor","gbp-lodging-gap":"write","gbp-listing-discrepancy":"write","gbp-cta-gap":"write","gbp-description-missing":"write","gbp-metric-drop":"investigate","gbp-keyword-drop":"investigate"},Qq={regression:"lost",gain:"emerging",opportunity:"not-cited","first-citation":"emerging","provider-pickup":"emerging","persistent-gap":"not-cited","competitor-gained":"cited","competitor-lost":"not-cited","gbp-lodging-gap":"not-cited","gbp-listing-discrepancy":"not-cited","gbp-cta-gap":"not-cited","gbp-description-missing":"not-cited","gbp-metric-drop":"lost","gbp-keyword-drop":"lost"},Zq={regression:"Regression",gain:"Gain",opportunity:"Opportunity","first-citation":"First citation","provider-pickup":"Pickup","persistent-gap":"Gap","competitor-gained":"Competitor","competitor-lost":"Competitor","gbp-lodging-gap":"Lodging gap","gbp-listing-discrepancy":"Listing gap","gbp-cta-gap":"Booking CTA","gbp-description-missing":"Description gap","gbp-metric-drop":"Metric drop","gbp-keyword-drop":"Keyword drop"};function Fq(e){return{id:e.id,tone:Kq[e.type],title:e.title,detail:e.cause?.details??e.cause?.cause??"",actionLabel:e.recommendation?.action??Zq[e.type],actionGroup:Hq[e.type],affectedPhrases:[{query:e.query,evidenceId:"",provider:e.provider,citationState:Qq[e.type]}]}}function Yq(e){return e.filter(n=>!n.dismissed).map(Fq)}function Ax(e){return{id:e.id,name:e.name,displayName:e.displayName,canonicalDomain:e.canonicalDomain,ownedDomains:e.ownedDomains??[],aliases:e.aliases??[],country:e.country,language:e.language,tags:e.tags,labels:e.labels,providers:e.providers??[],providerModels:e.providerModels??{},measurement:e.measurement,locations:e.locations??[],defaultLocation:e.defaultLocation??null,autoExtractBacklinks:e.autoExtractBacklinks??!1,configSource:e.configSource,configRevision:e.configRevision,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Sv(e){try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}catch{return e}}function Xq(e,n){if(!e)return"Waiting";if(!n)return"Running";const i=new Date(n).getTime()-new Date(e).getTime();if(i<1e3)return"<1s";const s=Math.floor(i/1e3);if(s<60)return`${s}s`;const r=Math.floor(s/60),u=s%60;return`${r}m ${u}s`}function _x(e){switch(e){case Te["answer-visibility"]:return"Answer visibility sweep";case Te["gsc-sync"]:return"GSC sync";case Te["inspect-sitemap"]:return"Sitemap inspection";case Te["ga-sync"]:return"GA sync";case Te["traffic-sync"]:return"Traffic sync";case Te["bing-inspect"]:return"Bing URL inspection";case Te["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Te["site-audit"]:return"Site audit";case Te["backlink-extract"]:return"Backlink extract";case Te["aeo-discover-seed"]:return"Discovery (seed phase)";case Te["aeo-discover-probe"]:return"Discovery (probe phase)";case Te["gbp-sync"]:return"Business Profile sync";case Te["ads-sync"]:return"ChatGPT ads sync"}}function Jq(e){return e===xo.manual?"Manual":e===xo.scheduled?"Scheduled":e===xo["config-apply"]?"Config apply":e}function Gu(e,n){return{id:e.id,projectId:e.projectId,projectName:n,kind:e.kind,kindLabel:_x(e.kind),status:e.status,trigger:e.trigger??"manual",location:e.location??null,createdAt:e.createdAt,startedAt:e.startedAt?Sv(e.startedAt):Sv(e.createdAt),duration:Xq(e.startedAt??null,e.finishedAt??null),statusDetail:e.error?Cx(e.error):Wq(e),summary:eL(e),triggerLabel:Jq(e.trigger)}}function Cx(e){const n=r0(e);return n.length>200?n.slice(0,200)+"…":n}function Wq(e){switch(e.status){case sn.queued:return"Waiting for execution slot.";case sn.running:return"Provider queries in progress.";case sn.completed:return"All queries checked.";case sn.partial:return"Run completed with some queries skipped.";case sn.failed:return e.error?Cx(e.error):"Run failed.";case sn.cancelled:return"Run was cancelled.";default:return""}}function eL(e){const n=_x(e.kind);switch(e.status){case sn.queued:return`${n} queued`;case sn.running:return`${n} in progress`;case sn.completed:return`${n} completed`;case sn.partial:return`${n} partially completed`;case sn.failed:return`${n} failed`;case sn.cancelled:return`${n} cancelled`;default:return e.status}}function tL(e,n,i,s){const r=[];let u=0;const d=new Set;if(i.length>0){const g=i.flatMap(E=>E.snapshots??[]),y=new Map;for(const E of g)if(E.query){const A=`${E.query}::${E.provider}::${E.location??""}`;y.set(A,E)}const v=new Set(g.map(E=>E.location??null));v.size===0&&v.add(null);const w=new Set(g.map(E=>E.provider)),S=new Set(n.flatMap(E=>Object.keys(E.providerRuns??{}))),j=[...new Set([...w,...S])].sort(),_=j.length>0?j:["gemini"];for(const E of n){if(E.runs.length===0)continue;d.add(E.query);const A=E.runs.at(-1),C=A?.transition??"not-cited";for(const O of _){const L=[...v].filter(H=>y.has(`${E.query}::${O}::${H??""}`)),G=(E.providerRuns?.[O]?.length??0)>0,P=L.length>0?L:G?[null]:[];for(const H of P){const ae=H??"",R=y.get(`${E.query}::${O}::${ae}`),$=R?.model??null,fe=$?`${O}:${$}`:null,ue=E.providerRuns?.[O],me=fe?E.modelRuns?.[fe]:void 0,pe=Ke=>Ke?.filter(Ze=>(Ze.location??null)===H),Ge=L.length>0?pe(ue):ue,De=L.length>0?pe(me):me,Ne=(Ge?.length?Ge:null)??(De?.length?De:null),K=Ge?.length?"provider":De?.length?"model":"query",ee=Ne?Ne.at(-1).transition:C,he=Ne?Ne.at(-1).visibilityTransition??(Ne.at(-1).visibilityState==="visible"?"visible":"not-visible"):A?.visibilityTransition??(A?.visibilityState==="visible"?"visible":"not-visible"),Ae=Ne?.at(-1)?.citationState,le=Ne?.at(-1)?.visibilityState,Ye=R?ee==="lost"?"lost":ee==="emerging"?"emerging":R.citationState===vu.cited?"cited":"not-cited":Ae===vu.cited?"cited":"not-cited",M=R?.visibilityState??(le==="visible"?"visible":le==="pending"?"pending":"not-visible"),re=jv(Ne||E.runs),ne=Nv(Ne||E.runs),ie=nL(E,O),se=(Ne??E.runs).map(Ke=>({runId:Ke.runId,citationState:Ke.citationState,createdAt:Ke.createdAt,model:ie.get(Ke.runId)??null,answerMentioned:Ke.answerMentioned,visibilityState:Ke.visibilityState,visibilityTransition:Ke.visibilityTransition,mentionState:Ke.mentionState,mentionTransition:Ke.mentionTransition})),ze=aL(se),rt=K==="provider"&&ze.length<=1?"model":K,Se=iL(se);r.push({id:`evidence_${e}_${u++}`,query:E.query,provider:R?.provider??O,model:R?.model??null,location:R?.location??H,citationState:Ye,answerMentioned:R?.answerMentioned,visibilityState:M,visibilityChangeLabel:Av(he,ne,{positive:"visible",negative:"not visible",first:"first visibility"}),changeLabel:Av(ee,re),answerSnippet:R?.answerText??"",citedDomains:R?.citedDomains??[],evidenceUrls:[],competitorDomains:R?.competitorOverlap??[],recommendedCompetitors:R?.recommendedCompetitors??[],matchedTerms:R?.matchedTerms??[],relatedTechnicalSignals:[],groundingSources:R?.groundingSources??[],searchQueries:R?.searchQueries??[],summary:sL(M,he,E.query),runHistory:se,historyScope:rt,modelsSeen:ze,modelTransitions:Se})}}}}for(const g of s)d.has(g.query)||r.push({id:`evidence_${e}_${u++}`,query:g.query,provider:"",model:null,location:null,citationState:"pending",visibilityState:"pending",visibilityChangeLabel:"Awaiting first run",changeLabel:"Awaiting first run",answerSnippet:"",citedDomains:[],evidenceUrls:[],competitorDomains:[],recommendedCompetitors:[],matchedTerms:[],relatedTechnicalSignals:[],groundingSources:[],searchQueries:[],summary:`"${g.query}" has been added but no visibility run has been triggered yet.`,runHistory:[],historyScope:"query",modelsSeen:[],modelTransitions:[]});return r}function nL(e,n){const i=new Map,s=`${n}:`;for(const[r,u]of Object.entries(e.modelRuns??{})){if(!r.startsWith(s))continue;const d=r.slice(s.length),g=d==="unknown"?null:d;for(const y of u)i.set(y.runId,g)}return i}function aL(e){const n=new Set;for(const i of e)i.model&&n.add(i.model);return[...n]}function iL(e){const n=[];let i=null;for(const s of e){const r=s.model??null;r!==i&&i!==null&&n.push({runId:s.runId,createdAt:s.createdAt,fromModel:i,toModel:r}),i=r}return n}function jv(e){if(e.length===0)return 0;const n=e[e.length-1].citationState;let i=0;for(let s=e.length-1;s>=0&&e[s].citationState===n;s--)i++;return i}function Nv(e){if(e.length===0)return 0;const n=e[e.length-1].visibilityState??"not-visible";let i=0;for(let s=e.length-1;s>=0&&(e[s].visibilityState??"not-visible")===n;s--)i++;return i}function Av(e,n,i){const s={positive:i?.positive??"cited",negative:i?.negative??"not cited",first:i?.first??"first citation"};switch(e){case"new":return"First observation";case"cited":case"visible":return n<=1?`${Xr(s.positive)} in latest run`:`${Xr(s.positive)} for ${n} runs`;case"lost":return"Lost since last run";case"emerging":return Xr(s.first);case"not-cited":case"not-visible":return n<=1?`${Xr(s.negative)} in latest run`:`${Xr(s.negative)} across ${n} runs`;default:return e}}function Xr(e){return e.charAt(0).toUpperCase()+e.slice(1)}function sL(e,n,i){switch(n){case"lost":return`Mention was lost for "${i}". Your brand no longer appeared in the latest answer.`;case"emerging":return`Your brand started appearing in AI answers for "${i}".`}switch(e){case"visible":return`Your brand or domain is mentioned in AI answers for "${i}".`;case"pending":return`"${i}" has been added but no run has been triggered yet.`;default:return`Your brand or domain was not mentioned in AI answers for "${i}".`}}function zx(e){const n=Ax(e.project),i=tL(n.name,e.timeline,e.latestRunDetails,e.queries),r=[...e.runs].sort((u,d)=>d.createdAt.localeCompare(u.createdAt)).map(u=>Gu(u,e.project.displayName||e.project.name));return e.overview?oL(n,e.overview,i,r):rL(n,i,r)}function oL(e,n,i,s){const r=Yq(n.topInsights);for(const u of n.attentionItems)u.id.startsWith("insight_")||r.push({id:u.id,tone:u.tone,title:u.title,detail:u.detail,actionLabel:u.actionLabel,actionGroup:"investigate",affectedPhrases:[]});return{project:e,dateRangeLabel:n.dateRangeLabel,contextLabel:n.contextLabel,mentionSummary:n.scores.mention,visibilitySummary:n.scores.visibility,mentionShareSummary:n.scores.mentionShare,queryCounts:{cited:n.queryCounts.citedQueries,total:n.queryCounts.totalQueries},gapQueries:n.scores.gapQueries,mentionGaps:n.scores.mentionGaps,indexCoverage:n.scores.indexCoverage,providerScores:n.providerScores,competitorPressure:n.scores.competitorPressure,runStatus:n.scores.runStatus,citationMovement:n.citationMovement,mentionMovement:n.mentionMovement,movementComparison:n.movementComparison,insights:r,visibilityEvidence:i,competitors:n.competitors.map(u=>({id:u.id,domain:u.domain,citationCount:u.citationCount,totalQueries:u.totalQueries,pressureLabel:u.pressureLabel,citedQueries:u.citedQueries,movement:"",notes:""})),recentRuns:s.slice(0,5),suggestedQueries:n.suggestedQueries}}function rL(e,n,i){const s={label:"",value:"No data",delta:"Loading…",tone:"neutral",description:"",tooltip:"",trend:[]};return{project:e,dateRangeLabel:"All time",contextLabel:`${e.country} / ${e.language.toUpperCase()}`,mentionSummary:{...s,label:"Mention Coverage"},visibilitySummary:{...s,label:"Citation Coverage"},mentionShareSummary:{...s,label:"Mention Share",breakdown:{projectMentionSnapshots:0,competitorMentionSnapshots:0,perCompetitor:[],snapshotsWithAnswerText:0,snapshotsTotal:0}},queryCounts:{cited:0,total:0},gapQueries:{...s,label:"Citation Gaps"},mentionGaps:{...s,label:"Mention Gaps"},indexCoverage:{...s,label:"Index Coverage"},providerScores:[],competitorPressure:{...s,label:"Competitor Pressure"},runStatus:{...s,label:"Run Status"},citationMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},mentionMovement:{gained:0,lost:0,tone:"neutral",hasPreviousRun:!1},movementComparison:{hasPreviousRun:!1,comparable:!1,querySetChanged:!1,previousRunAt:null,currentQueryCount:0,previousQueryCount:0,comparableQueryCount:0,addedQueryCount:0,removedQueryCount:0,addedQueries:[],removedQueries:[]},insights:[],visibilityEvidence:n,competitors:[],recentRuns:i.slice(0,5),suggestedQueries:{rows:[],totalCandidates:0,skippedAlreadyTracked:0}}}function lL(e){const n=Ax(e.project),i=[...e.runs].sort((j,_)=>_.createdAt.localeCompare(j.createdAt)),s=i.find(j=>j.kind===Te["answer-visibility"])??i[0]??e.overview?.latestRun?.run??void 0,r=e.project.displayName||e.project.name,u=s?Gu(s,r):cL(e.project.id,r),d=e.overview;if(!d)return{project:n,mentionScore:0,mentionDelta:"No data",mentionTone:"neutral",lastRun:u,insight:"No runs completed yet.",trend:[],competitorPressureLabel:"None"};const g=d.scores.mention,y=g.progress??0,v=d.queryCounts.mentionedQueries,w=d.queryCounts.totalQueries,S=d.providers.length;return{project:n,mentionScore:y,mentionDelta:w>0?`${v} of ${w} queries`:"No data",mentionTone:g.tone,providerCoverage:g.providerCoverage,lastRun:u,insight:w>0?`${v} of ${w} queries mentioned across ${S} provider${S===1?"":"s"}.`:"No runs completed yet.",trend:g.trend??[],competitorPressureLabel:d.scores.competitorPressure.value}}function cL(e,n){return{id:"none",projectId:e,projectName:n,kind:Te["answer-visibility"],kindLabel:"No runs yet",status:sn.queued,trigger:xo.manual,createdAt:"",startedAt:"",duration:"",statusDetail:"",summary:"No runs yet",triggerLabel:""}}function uL(e,n){const i=[],s=[],r=[];for(const d of e){s.push(zx(d)),r.push(lL(d));const g=[...d.runs].sort((y,v)=>v.createdAt.localeCompare(y.createdAt));for(const y of g)i.push(Gu(y,d.project.displayName||d.project.name))}i.sort((d,g)=>g.createdAt.localeCompare(d.createdAt));const u=e.length>0;return{portfolioOverview:{projects:r,attentionItems:u?dL(s):[{id:"attention_setup",tone:"neutral",title:"No projects yet",detail:"Create your first project using the setup wizard, CLI, or API.",actionLabel:"Open setup",href:"/setup"}],recentRuns:i.slice(0,5),systemHealth:[{id:"api",label:"API",tone:"positive",detail:"Connected",meta:"Real-time data"},{id:"provider",label:"Gemini",tone:"positive",detail:"Configured",meta:"Provider active"}],lastUpdatedAt:new Date().toLocaleString("en-US",{month:"short",day:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"}),...u?{}:{emptyState:{title:"No projects yet",detail:"Canonry becomes useful after one project, a small query set, and one competitor list are in place.",ctaLabel:"Launch setup",ctaHref:"/setup"}}},projects:s,runs:i,setup:{healthChecks:[{id:"api",label:"API reachable",detail:"API is responding.",state:"ready",guidance:"Required for project creation and run history."},{id:"provider",label:"Provider configured",detail:"Gemini key is configured.",state:"ready",guidance:"Required for answer-visibility sweeps."}],projectDraft:{name:"",canonicalDomain:"",country:"US",language:"en"},queryImportState:{mode:"paste",queryCount:0,preview:[]},competitorDraft:{domains:[],notes:"Use the CLI to add competitors."},launchState:{enabled:u,ctaLabel:u?"Trigger run":"Create a project first",summary:u?"Ready to run.":"Create a project first to launch a run."}},settings:{providerStatuses:(n?.providers??[]).map(d=>({name:d.name,displayName:d.displayName,keyUrl:d.keyUrl,modelHint:d.modelHint,model:d.model,defaultModel:d.defaultModel,state:d.configured?"ready":"needs-config",detail:d.configured?"Provider is configured.":"API key is missing.",quota:d.quota})),google:{state:n?.google?.configured?"ready":"needs-config",detail:n?.google?.configured?"Google OAuth app credentials are configured. Project-level GSC connections can be created from the dashboard.":"Google OAuth client ID and client secret are not configured yet."},bing:{state:n?.bing?.configured?"ready":"needs-config",detail:n?.bing?.configured?"Bing Webmaster Tools API key is configured. Project-level Bing connections can be created from the dashboard.":"Bing Webmaster Tools API key is not configured yet."},selfHostNotes:["Configuration is stored in ~/.canonry/config.yaml.","The local config file is the source of truth for authentication credentials.","Google OAuth app credentials and per-domain Google tokens are stored in local config, not the database.","Database is SQLite at ~/.canonry/data.db.","API key was auto-generated during canonry init."],bootstrapNote:"Use the UI, CLI, or ~/.canonry/config.yaml to manage settings. Authentication credentials persist to local config."}}}function dL(e){const n=[];for(const i of e){const s=i.visibilityEvidence.filter(u=>u.citationState==="lost");s.length>0&&n.push({id:`attention_${i.project.id}_lost`,tone:"negative",title:`${i.project.displayName||i.project.name} lost citations`,detail:`${s.length} quer${s.length>1?"ies":"y"} lost citation.`,actionLabel:"Open project",href:`/projects/${encodeURIComponent(i.project.name)}`});const r=i.recentRuns.filter(u=>u.status===sn.running||u.status===sn.queued);r.length>0&&n.push({id:`attention_${i.project.id}_active`,tone:"neutral",title:`${i.project.displayName||i.project.name} has active runs`,detail:`${r.length} run${r.length>1?"s":""} in progress.`,actionLabel:"View runs",href:"/runs"})}return n.length===0&&n.push({id:"attention_stable",tone:"positive",title:"All projects stable",detail:"No citation losses or active runs to flag."}),n}const Ex=q.createContext(null);Ex.Provider;function wl(){return q.useContext(Ex)}function Ku(e,n={}){const s=wl()?.dashboard??null,r=n.includeSettings??!0,{isAdmin:u}=hl(),d=on({...Iu({client:oe}),enabled:!s,refetchInterval:mN}),g=on({...C0({client:oe,query:{kind:"answer-visibility"}}),enabled:!s,staleTime:No,refetchInterval:O=>O.state.data?.some(P=>P.status==="running"||P.status==="queued")?3e3:No}),y=on({...TM({client:oe}),enabled:!s&&r&&u}),v=d.data??[],w=g.data??[],S=E4({queries:v.map(O=>{const L=w.filter(H=>H.projectId===O.id),G=L.filter(H=>(H.status==="completed"||H.status==="partial")&&H.kind==="answer-visibility"&&H.trigger!=="probe").sort((H,ae)=>ae.createdAt.localeCompare(H.createdAt)),P=G.length>0?G[0].id:"no-run";return{queryKey:["project-overview-slim",O.id,P],queryFn:async()=>{const H=await x2(O.name).catch(()=>null);return{project:O,runs:L,queries:[],competitors:[],timeline:[],latestRunDetails:[],previousRunDetails:[],gscCoverage:null,bingCoverage:null,dbInsights:null,overview:H}},enabled:!s&&d.isSuccess&&g.isSuccess,staleTime:ef}})}),j=S.every(O=>O.isSuccess),_=q.useMemo(()=>{if(s)return s;if(!d.data||!g.data||v.length>0&&!j)return null;const O=S.map(L=>L.data?{...L.data,runs:w.filter(G=>G.projectId===L.data.project.id)}:null).filter(L=>L!=null);return uL(O,y.data??null)},[s,d.data,g.data,y.data,j,S,v.length,w]),E=!s&&(d.isError||g.isError),A=!s&&!_&&!E,C=q.useCallback(async()=>{const O=[d.refetch(),g.refetch(),...S.map(L=>L.refetch())];r&&O.push(y.refetch()),await Promise.all(O)},[r,S,d.refetch,g.refetch,y.refetch]);return{dashboard:_,isLoading:A,isError:E,refetch:C}}const mL=20;function pL(e){const n=wl(),i=q.useMemo(()=>!n||!e?null:n.dashboard.projects.find(A=>A.project.name===e)??null,[n,e]),s=on({...bM({client:oe,path:{name:e??""}}),enabled:!!e&&!i,staleTime:ef,refetchOnWindowFocus:"always"}),r=on({...NM({client:oe,path:{name:e??""},query:{kind:"answer-visibility"}}),enabled:!!e,staleTime:No,refetchOnWindowFocus:"always",refetchInterval:A=>A.state.data?.some(L=>L.projectId===s.data?.id&&(L.status==="running"||L.status==="queued"))?3e3:No}),u=s.data??null,d=q.useMemo(()=>u?(r.data??[]).filter(A=>A.projectId===u.id):[],[u,r.data]),{latestRunIds:g,previousRunIds:y,latestRunIdsKey:v,latestVisibilityRevision:w}=q.useMemo(()=>{const A=d.filter(P=>(P.status==="completed"||P.status==="partial")&&P.kind==="answer-visibility"&&P.trigger!=="probe").sort((P,H)=>H.createdAt.localeCompare(P.createdAt)),C=A[0]?.createdAt??null,O=C?A.filter(P=>P.createdAt===C).map(P=>P.id):[],L=A.find(P=>P.createdAt!==C)?.createdAt??null,G=L?A.filter(P=>P.createdAt===L).map(P=>P.id):[];return{latestRunIds:O,previousRunIds:G,latestRunIdsKey:[...O].sort().join(","),latestVisibilityRevision:C?`${C}:${[...O].sort().join(",")}`:"none"}},[d]),S=on({queryKey:["project-dashboard-full",u?.id??null,v||"none"],queryFn:async()=>{if(!u||!e)return null;const[A,C,O,L,G,P,H,ae,R]=await Promise.all([k2(e).catch(()=>[]),M6(e).catch(()=>[]),B6(e,void 0,mL).catch(()=>[]),g.length?Promise.all(g.map($=>cu($).catch(()=>null))).then($=>$.filter(fe=>fe!=null)):Promise.resolve([]),y.length?Promise.all(y.map($=>cu($).catch(()=>null))).then($=>$.filter(fe=>fe!=null)):Promise.resolve([]),X6(e).catch(()=>null),eN(e).catch(()=>null),tN(e).catch(()=>null),x2(e).catch(()=>null)]);return{project:u,runs:d,queries:A,competitors:C,timeline:O,latestRunDetails:L,previousRunDetails:G,gscCoverage:P,bingCoverage:H,dbInsights:ae,overview:R}},enabled:!!u&&!!e&&r.isSuccess,staleTime:ef,refetchOnWindowFocus:"always"}),j=q.useMemo(()=>S.data?zx({...S.data,runs:d}):i||null,[S.data,d,i]),_=q.useCallback(async()=>{await Promise.all([s.refetch(),r.refetch(),S.refetch()])},[s.refetch,r.refetch,S.refetch]),E=!j&&(s.isLoading||r.isLoading||S.isLoading);return{commandCenter:j,project:u,isLoading:E,isError:s.isError||r.isError||S.isError,latestVisibilityRevision:w,refetch:_}}const fL=["health"];async function hL(){const e=await aN("/health","API"),n=e.state==="ok"?{label:"Worker",state:"ok",detail:"In-process job runner"}:{label:"Worker",state:e.state,detail:`Depends on API health check · ${e.detail}`,statusCode:e.statusCode,hint:e.hint?`Worker status is inferred from API health in this deployment mode. ${e.hint}`:"Worker status is inferred from API health in this deployment mode."};return{apiStatus:e,workerStatus:n}}function O0(e,n){return on({queryKey:fL,queryFn:hL,enabled:e,refetchInterval:15e3,initialData:n})}function gL(e){return on({...tx({client:oe,path:{id:e??""}}),enabled:!!e,refetchInterval:n=>{const i=n.state.data?.status;return i==="running"||i==="queued"?3e3:!1}})}function R0(){const e=Au(),n=T4({strict:!1}),i=D4({select:y=>y.location.pathname}),s=n.runId??null,r=n.evidenceId??null;return{runId:s,evidenceId:r,openRun:y=>{e({to:i,from:cn.to,search:v=>({...v,runId:y,evidenceId:void 0})})},openEvidence:y=>{e({to:i,from:cn.to,search:v=>({...v,evidenceId:y,runId:void 0})})},closeDrawer:()=>{e({to:i,from:cn.to,search:y=>({...y,runId:void 0,evidenceId:void 0})})}}}const yL={negative:"toast-card-negative",caution:"toast-card-caution",positive:"toast-card-positive",neutral:"toast-card-neutral"};function bL(e){if(e.cta)return`${e.cta.label}: ${e.title}`}function vL(){const e=q.useSyncExternalStore(uN,Xy,Xy),n=Au(),{openRun:i}=R0(),s=q.useCallback(u=>{Wp(u)},[]),r=q.useCallback(u=>{u.cta&&(u.cta.intent==="open-run-drawer"?i(u.cta.runId):n({to:"/runs"}),Wp(u.id))},[n,i]);return e.length===0?null:m.jsx("div",{className:"toast-viewport","aria-label":"Notifications",children:e.map(u=>m.jsxs("section",{role:u.tone==="negative"?"alert":"status","aria-live":u.tone==="negative"?"assertive":"polite","data-state":u.state,className:`toast-card ${yL[u.tone]}`,children:[m.jsxs("div",{className:"toast-copy",children:[m.jsx("p",{className:"toast-title",children:u.title}),u.detail?m.jsx("p",{className:"toast-detail",children:u.detail}):null,u.cta?m.jsx("button",{type:"button",className:"toast-action",onClick:()=>r(u),"aria-label":bL(u),children:u.cta.label}):null]}),m.jsx("button",{type:"button",onClick:()=>s(u.id),className:"toast-dismiss","aria-label":"Dismiss",children:m.jsx(Bo,{className:"size-3.5"})})]},u.id))})}function al(e){switch(e){case Te["answer-visibility"]:return"Visibility sweep";case Te["gsc-sync"]:return"GSC sync";case Te["inspect-sitemap"]:return"Sitemap inspection";case Te["ga-sync"]:return"GA sync";case Te["traffic-sync"]:return"Traffic sync";case Te["bing-inspect"]:return"Bing URL inspection";case Te["bing-inspect-sitemap"]:return"Bing sitemap inspection";case Te["site-audit"]:return"Technical audit";case Te["backlink-extract"]:return"Backlink extract";case Te["aeo-discover-seed"]:return"Discovery (seed phase)";case Te["aeo-discover-probe"]:return"Discovery (probe phase)";case Te["gbp-sync"]:return"Business Profile sync";case Te["ads-sync"]:return"ChatGPT ads sync"}}function _v(e){return e==="running"?"Running":e==="queued"?"Queued":e==="partial"?"Partial":e==="completed"?"Completed":e==="failed"?"Failed":e==="cancelled"?"Cancelled":"Starting"}function kL(){const e=q.useSyncExternalStore(sx,Va,Va),n=q.useMemo(()=>Object.values(e.runs),[e.runs]),i=n.length>0,s=on({...C0({client:oe}),enabled:i,staleTime:No}),r=q.useMemo(()=>new Map((s.data??[]).map(g=>[g.id,g.status])),[s.data]);if(!i)return null;const u=n.map(g=>({...g,status:r.get(g.runId)??g.lastAnnouncedStatus})),d=u.length===1?al(u[0].kind):`${u.length} active tasks`;return m.jsxs("div",{className:"task-center",children:[m.jsxs("p",{className:"sr-only",role:"status","aria-live":"polite",children:[u.length," active ",u.length===1?"task":"tasks","."," ",u.map(g=>`${al(g.kind)} ${_v(g.status)}`).join(". "),"."]}),m.jsxs("details",{className:"task-center-details",children:[m.jsxs("summary",{className:"task-center-trigger",children:[m.jsx(E2,{className:"size-3.5 shrink-0 motion-safe:animate-spin","aria-hidden":"true"}),m.jsx("span",{className:"task-center-summary",children:d}),m.jsx("span",{className:"task-center-count","aria-hidden":"true",children:u.length}),m.jsx(z2,{className:"task-center-chevron size-3.5 shrink-0","aria-hidden":"true"})]}),m.jsxs("div",{className:"task-center-panel",children:[m.jsxs("div",{className:"task-center-heading",children:[m.jsx("span",{children:"Active tasks"}),m.jsx("span",{className:"tabular-nums text-faint",children:u.length})]}),m.jsx("ul",{className:"task-center-list",children:u.map(g=>m.jsxs("li",{className:"task-center-item",children:[m.jsxs("div",{className:"min-w-0",children:[m.jsx("p",{className:"truncate text-[13px] font-medium text-strong",children:al(g.kind)}),m.jsx("p",{className:"mt-0.5 truncate text-xs text-muted",children:g.projectLabel??g.projectId})]}),m.jsx(vn,{tone:g.status==="failed"?"negative":g.status==="partial"?"caution":"neutral",children:_v(g.status)})]},g.runId))}),m.jsx(Xe,{to:"/runs",className:"task-center-footer-link",children:"View all runs"})]})]})]})}function xL(e,n={}){const{threshold:i=80}=n,s=q.useRef(null),r=q.useRef({scrollHeight:0,wasAtEnd:!0});function u(y){return y.scrollHeight-y.scrollTop-y.clientHeight}function d(){const y=s.current;return y?u(y)<=i:!0}function g(){const y=s.current;y&&(y.scrollTop=y.scrollHeight,r.current.wasAtEnd=!0,r.current.scrollHeight=y.scrollHeight)}return q.useEffect(()=>{const y=s.current;if(!y)return;const v=()=>{r.current.wasAtEnd=u(y)<=i};return y.addEventListener("scroll",v,{passive:!0}),()=>y.removeEventListener("scroll",v)},[i]),q.useLayoutEffect(()=>{const y=s.current;if(!y)return;const v=y.scrollHeight;v>r.current.scrollHeight&&r.current.wasAtEnd&&(y.scrollTop=v),r.current.scrollHeight=v},e),q.useEffect(()=>{const y=s.current;if(!y||typeof ResizeObserver>"u")return;const v=new ResizeObserver(()=>{const w=y.scrollHeight;w>r.current.scrollHeight&&r.current.wasAtEnd&&(y.scrollTop=w),r.current.scrollHeight=w});return v.observe(y),y.firstElementChild&&v.observe(y.firstElementChild),()=>v.disconnect()},[]),{ref:s,scrollToEnd:g,isAtEnd:d}}async function M0(e){try{return await e.json()}catch{return{}}}function wL(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const B0=wL();function q0(e){e===401&&Mf()}async function Cv(e){const n=await fetch(`${B0}/projects/${encodeURIComponent(e)}/agent/transcript`,{credentials:"include"});if(!n.ok){q0(n.status);const i=await M0(n);throw new zn(i.error?.message??`transcript fetch failed: ${n.status}`,n.status,i.error?.code)}return await n.json()}async function SL(e){const n=await fetch(`${B0}/projects/${encodeURIComponent(e)}/agent/transcript`,{method:"DELETE",credentials:"include"});if(!n.ok){q0(n.status);const i=await M0(n);throw new zn(i.error?.message??`reset failed: ${n.status}`,n.status,i.error?.code)}}async function jL({project:e,prompt:n,provider:i,modelId:s,scope:r,profile:u,signal:d,onEvent:g}){const y={prompt:n};i&&(y.provider=i),s&&(y.modelId=s),r&&(y.scope=r),u&&(y.profile=u);const v=await fetch(`${B0}/projects/${encodeURIComponent(e)}/agent/prompt`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(y),signal:d});if(!v.ok||!v.body){q0(v.status);const E=await M0(v);throw new zn(E.error?.message??`prompt failed: ${v.status}`,v.status,E.error?.code)}const w=v.body.getReader(),S=new TextDecoder;let j="";const _=()=>{w.cancel().catch(()=>{})};d?.addEventListener("abort",_,{once:!0});try{for(;;){const{value:E,done:A}=await w.read();if(A)break;j+=S.decode(E,{stream:!0});let C=j.indexOf(`
|
|
59
59
|
|
|
60
60
|
`);for(;C!==-1;){const O=j.slice(0,C);j=j.slice(C+2);for(const L of O.split(`
|
|
61
61
|
`)){if(!L.startsWith("data:"))continue;const G=L.slice(5).trim();if(G)try{g(JSON.parse(G))}catch{}}C=j.indexOf(`
|
|
62
62
|
|
|
63
|
-
`)}}}finally{d?.removeEventListener("abort",_);try{w.releaseLock()}catch{}}}function Tx(e){return!e||e.role!=="assistant"?"":e.content.filter(n=>n.type==="text").map(n=>n.text).join("")}const jL=[{label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"}],NL=[{command:"/status",label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{command:"/insights",label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{command:"/last-run",label:"Last run",prompt:"Summarize the latest run for this project — provider mix, visibility changes, and anything that moved."},{command:"/last-failed",label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{command:"/run-sweep",label:"Run sweep now",prompt:"Run a new answer-visibility sweep for this project now and tell me when it lands."},{command:"/schedule",label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"},{command:"/queries",label:"Queries",prompt:"List the tracked queries for this project and flag any that are obvious duplicates or underperformers."},{command:"/competitors",label:"Competitors",prompt:"List this project's tracked competitors and call out which ones are showing up in answer citations."},{command:"/clear",label:"Clear conversation",action:"clear"}],Xc=e=>`canonry:aero:provider:${e}`,zv=e=>`canonry:aero:scope:${e}`;function AL({projectName:e}){const[n,i]=q.useState(!1),[s,r]=q.useState(!1),[u,d]=q.useState([]),[g,y]=q.useState(""),[v,w]=q.useState(!1),[S,j]=q.useState([]),[_,E]=q.useState(""),[A,C]=q.useState(null),[O,L]=q.useState(()=>typeof window>"u"?null:window.localStorage.getItem(Xc(e))??null),[G,P]=q.useState(()=>typeof window>"u"?"read-only":window.localStorage.getItem(zv(e))==="all"?"all":"read-only"),H=q.useRef(null),{ref:ae}=kL([u,_,S]),R=q.useRef(null),[$,fe]=q.useState(0),ue=q.useMemo(()=>{const M=g.trimStart();if(!M.startsWith("/"))return[];if(/\s/.test(M))return[];const re=M.toLowerCase();return NL.filter(ne=>ne.command.startsWith(re)||ne.label.toLowerCase().includes(re.slice(1)))},[g]);q.useEffect(()=>{fe(M=>ue.length===0?0:Math.min(M,ue.length-1))},[ue.length]);const me=on({...hB({client:oe,path:{name:e}}),enabled:n,staleTime:6e4}),pe=q.useMemo(()=>{const M=me.data?.providers??[];if(O){const ne=M.find(ie=>ie.id===O&&ie.configured);if(ne)return ne}const re=me.data?.defaultProvider;return re?M.find(ne=>ne.id===re)??null:null},[O,me.data]);q.useEffect(()=>{if(!me.data||!O)return;me.data.providers.find(re=>re.id===O&&re.configured)||(L(null),window.localStorage.removeItem(Xc(e)))},[me.data,O,e]);const Ge=q.useCallback(M=>{L(M),!(typeof window>"u")&&(M?window.localStorage.setItem(Xc(e),M):window.localStorage.removeItem(Xc(e)))},[e]),De=q.useCallback(()=>{P(M=>{const re=M==="all"?"read-only":"all";return typeof window<"u"&&window.localStorage.setItem(zv(e),re),re})},[e]);q.useEffect(()=>{if(!n)return;const M=re=>{re.key==="Escape"&&(s?r(!1):i(!1))};return window.addEventListener("keydown",M),()=>window.removeEventListener("keydown",M)},[n,s]),q.useEffect(()=>{if(!n)return;let M=!1;C(null);const re=()=>{M||v||Cv(e).then(se=>{M||d(se.messages)}).catch(se=>{M||C(se instanceof Error?se.message:"Failed to load transcript")})};re();const ie=window.setInterval(re,15e3);return()=>{M=!0,window.clearInterval(ie)}},[n,e,v]),q.useEffect(()=>()=>{H.current?.abort()},[e]);async function Ne(M){const re=M.trim();if(!re||v)return;C(null),y(""),w(!0),E(""),j([]);const ne={role:"user",content:re,timestamp:Date.now()};d(se=>[...se,ne]);const ie=new AbortController;H.current=ie;try{await SL({project:e,prompt:re,provider:O??void 0,scope:G,signal:ie.signal,onEvent:K});const se=await Cv(e);d(se.messages)}catch(se){se.name!=="AbortError"&&C(se instanceof Error?se.message:"Prompt failed")}finally{w(!1),E(""),H.current=null}}function K(M){switch(M.type){case"message_update":E(Tx(M.message));break;case"message_end":M.message.role==="assistant"&&E("");break;case"tool_execution_start":j(re=>[...re,{id:M.toolCallId,name:M.toolName,args:M.args,startedAt:Date.now()}]);break;case"tool_execution_end":j(re=>re.map(ne=>ne.id===M.toolCallId?{...ne,endedAt:Date.now(),isError:M.isError,result:M.result}:ne));break;case"error":C(M.message);break}}async function ee(){H.current?.abort();try{await wL(e),d([]),C(null)}catch(M){C(M instanceof Error?M.message:"Reset failed")}}const he=u.length===0,Ae=n&&s?"pointer-events-auto fixed inset-0 z-40 flex items-stretch justify-center bg-bg/70 p-4 sm:p-8 backdrop-blur-sm":"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",le=s?"pointer-events-auto flex h-full w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-2xl":"pointer-events-auto w-full max-w-3xl",Ye=s?"flex-1 overflow-y-auto px-6 py-5 text-sm text-strong":"max-h-[40vh] min-h-[120px] overflow-y-auto px-4 py-3 text-sm text-strong";return m.jsx("div",{className:Ae,onClick:M=>{s&&M.target===M.currentTarget&&r(!1)},children:m.jsx("div",{className:le,children:n?m.jsxs("div",{className:s?"flex h-full flex-col":"flex flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-xl backdrop-blur",children:[m.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-mono-800/70 px-4 py-2.5",children:[m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx(tb,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),m.jsx("span",{className:"text-sm font-medium text-heading",children:"Aero"}),m.jsx("span",{className:"text-[10px] uppercase tracking-wider text-muted",children:v?"working…":e})]}),m.jsxs("div",{className:"flex items-center gap-1",children:[m.jsx(_L,{providers:me.data?.providers??[],active:pe,override:O,onPick:Ge,disabled:v}),m.jsx("button",{type:"button",onClick:Xt(ee),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Reset conversation",title:"Reset conversation",children:m.jsx(T2,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),m.jsx("button",{type:"button",onClick:()=>r(M=>!M),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":s?"Collapse":"Expand",title:s?"Collapse":"Expand",children:s?m.jsx(YN,{className:"h-3.5 w-3.5","aria-hidden":"true"}):m.jsx(HN,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),m.jsx("button",{type:"button",onClick:()=>{r(!1),i(!1)},className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Close Aero",children:m.jsx(Bo,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),m.jsxs("div",{ref:ae,className:Ye,children:[A&&m.jsx("div",{className:"mb-2 rounded-md border border-negative-700/40 bg-negative-950/40 px-3 py-2 text-xs text-negative-200",children:A}),he&&!v&&m.jsxs("div",{className:"flex flex-col gap-3 py-2",children:[m.jsxs("p",{className:"text-sm text-secondary",children:["Ask about ",m.jsx("span",{className:"text-strong",children:e})," or choose a starting point."]}),m.jsx("div",{className:"flex flex-wrap gap-1.5",children:jL.map(M=>m.jsx("button",{type:"button",onClick:()=>{Ne(M.prompt)},className:"rounded-md border border-base bg-bg-elevated/70 px-3 py-1.5 text-sm text-neutral transition hover:border-strong hover:bg-mono-800/70 hover:text-heading",children:M.label},M.label))})]}),DL(u,e,O,G),S.length>0&&m.jsx("div",{className:"mt-3 space-y-1.5",children:S.map(M=>m.jsx(Dx,{trail:M},M.id))}),v&&_&&m.jsxs("div",{className:"mt-3",children:[m.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),m.jsx(Ox,{content:_})]}),v&&!_&&S.every(M=>M.endedAt!==void 0)&&m.jsx(BL,{})]}),m.jsx(CL,{projectName:e,activeProvider:pe,scope:G,onToggleScope:De,disabled:v}),m.jsxs("div",{className:"relative",children:[ue.length>0&&m.jsx(zL,{matches:ue,selectedIndex:$,onHover:fe,onPick:M=>{y(""),R.current?.focus(),M.action==="clear"?ee():Ne(M.prompt)}}),m.jsxs("form",{className:"flex items-end gap-2 border-t border-mono-800/70 bg-bg/80 px-3 py-2.5",onSubmit:M=>{if(M.preventDefault(),ue.length>0){const re=ue[$];y(""),re.action==="clear"?ee():Ne(re.prompt);return}Ne(g)},children:[m.jsx("textarea",{ref:R,value:g,onChange:M=>y(M.target.value),onKeyDown:M=>{if(ue.length>0){if(M.key==="ArrowDown"){M.preventDefault(),fe(re=>(re+1)%ue.length);return}if(M.key==="ArrowUp"){M.preventDefault(),fe(re=>(re-1+ue.length)%ue.length);return}if(M.key==="Tab"){M.preventDefault();const re=ue[$];y(`${re.command} `);return}if(M.key==="Escape"){M.preventDefault(),y("");return}}if(M.key==="Enter"&&!M.shiftKey)if(M.preventDefault(),ue.length>0){const re=ue[$];y(""),re.action==="clear"?ee():Ne(re.prompt)}else Ne(g)},placeholder:"Ask Aero, or / for commands…",disabled:v,rows:s?3:1,className:"flex-1 resize-none bg-transparent text-sm text-heading placeholder:text-mono-600 focus:outline-none disabled:opacity-60"}),m.jsx("button",{type:"submit",disabled:v||!g.trim(),className:"inline-flex h-7 w-7 items-center justify-center rounded-md bg-positive-500 text-accent-fg transition hover:bg-positive-400 disabled:opacity-40","aria-label":"Send",children:m.jsx(jN,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]})]}):m.jsx("button",{type:"button",onClick:()=>i(!0),className:"flex w-full items-center justify-between rounded-lg border border-mono-800/80 bg-bg/95 px-4 py-2 text-left text-sm text-secondary shadow-lg transition hover:border-strong hover:bg-bg-elevated/90 hover:text-strong",children:m.jsxs("span",{className:"flex items-center gap-2",children:[m.jsx(tb,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),"Ask Aero about ",e,"…"]})})})})}function _L({providers:e,active:n,override:i,onPick:s,disabled:r}){const[u,d]=q.useState(!1),g=q.useRef(null);if(q.useEffect(()=>{if(!u)return;const v=S=>{g.current?.contains(S.target)||d(!1)},w=S=>{S.key==="Escape"&&d(!1)};return window.addEventListener("mousedown",v),window.addEventListener("keydown",w),()=>{window.removeEventListener("mousedown",v),window.removeEventListener("keydown",w)}},[u]),e.length===0)return null;const y=n?.label.replace(/\s+\(.+\)$/,"")??"No provider";return m.jsxs("div",{ref:g,className:"relative",children:[m.jsxs("button",{type:"button",onClick:()=>d(v=>!v),disabled:r,className:"flex items-center gap-1 rounded-md px-2 py-1 text-sm text-secondary transition hover:bg-surface-inset hover:text-strong disabled:opacity-50","aria-label":"Switch agent model","aria-haspopup":"listbox","aria-expanded":u,title:n?`${n.label} · ${n.defaultModel}`:"Pick a provider",children:[m.jsx("span",{className:"font-medium text-strong",children:y}),m.jsx(z2,{className:"h-3 w-3","aria-hidden":"true"})]}),u&&m.jsxs("div",{role:"listbox",className:"absolute right-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-base bg-bg shadow-xl",children:[m.jsx("div",{className:"border-b border-default px-3 py-2 text-sm font-medium text-secondary",children:"Answer engine"}),m.jsx("ul",{className:"max-h-72 overflow-y-auto py-1",children:e.map(v=>{const w=n?.id===v.id,S=i===v.id;return m.jsx("li",{children:m.jsxs("button",{type:"button",role:"option","aria-selected":w,disabled:!v.configured,onClick:()=>{v.configured&&(s(S?null:v.id),d(!1))},className:"flex w-full items-center gap-2 px-3 py-2.5 text-left text-sm transition enabled:hover:bg-bg-elevated disabled:cursor-not-allowed disabled:opacity-60",title:v.configured?v.defaultModel:`Add ${EL(v.id)} in Settings or your environment`,children:[m.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center",children:w?m.jsx(C2,{className:"h-3 w-3 text-positive-400","aria-hidden":"true"}):null}),m.jsx("span",{className:"min-w-0 flex-1 truncate font-medium text-heading",children:v.label.replace(/\s+\(.+\)$/,"")}),S&&m.jsx("span",{className:"rounded-md border border-positive-800/60 bg-positive-950/60 px-2 py-0.5 text-[11px] text-positive",children:"Pinned"}),!v.configured&&m.jsx("span",{className:"rounded-md border border-base px-2 py-0.5 text-[11px] text-secondary",children:"Needs setup"})]})},v.id)})}),i&&m.jsx("button",{type:"button",onClick:()=>{s(null),d(!1)},className:"w-full border-t border-default px-3 py-2 text-left text-[11px] text-secondary transition hover:bg-bg-elevated hover:text-heading",children:"Reset to auto-detected default"})]})]})}function CL({projectName:e,activeProvider:n,scope:i,onToggleScope:s,disabled:r}){const u=n?.label.replace(/\s+\(.+\)$/,"")??null,d=i==="all";return m.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-mono-800/70 bg-bg/80 px-3 pt-2 text-sm text-secondary",children:[m.jsx("span",{className:"font-medium text-strong",children:e}),u&&m.jsxs(m.Fragment,{children:[m.jsx("span",{"aria-hidden":"true",children:"·"}),m.jsx("span",{children:u})]}),m.jsx("button",{type:"button",onClick:s,disabled:r,className:`ml-auto inline-flex items-center rounded-md border px-2 py-1 text-sm font-medium transition disabled:opacity-50 ${d?"border-caution-800/60 bg-caution-950/40 text-caution hover:border-caution-700 hover:text-caution-200":"border-base bg-bg-elevated/70 text-secondary hover:border-strong hover:text-strong"}`,title:d?"Aero can invoke write tools (run sweep, dismiss insight, etc). Click to restrict.":"Aero is restricted to read-only tools. Click to allow writes.",children:d?"Can make changes":"Read only"})]})}function zL({matches:e,selectedIndex:n,onHover:i,onPick:s}){return m.jsxs("div",{className:"absolute inset-x-3 bottom-full mb-2 overflow-hidden rounded-lg border border-base bg-bg/98 shadow-2xl",children:[m.jsx("div",{className:"border-b border-default px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted",children:"Commands"}),m.jsx("ul",{role:"listbox",className:"max-h-72 overflow-y-auto py-1",children:e.map((r,u)=>{const d=u===n;return m.jsx("li",{children:m.jsxs("button",{type:"button",role:"option","aria-selected":d,onMouseEnter:()=>i(u),onClick:()=>s(r),className:`flex w-full items-center gap-3 px-3 py-2 text-left text-sm transition ${d?"bg-bg-elevated text-heading":"text-neutral hover:bg-bg-elevated/60"}`,children:[m.jsx("span",{className:"font-medium",children:r.label}),m.jsx("span",{className:"ml-auto font-mono text-[11px] text-secondary",children:r.command})]})},r.command)})})]})}function EL(e){switch(e){case"claude":return"ANTHROPIC_API_KEY";case"openai":return"OPENAI_API_KEY";case"gemini":return"GOOGLE_API_KEY";case"zai":return"ZAI_API_KEY";case"deepinfra":return"DEEPINFRA_TOKEN"}}function TL(e,n){const i=e.timestamp??0;return`${e.role}:${i}:${n}`}function DL(e,n,i,s){const r=[];for(let u=0;u<e.length;u++){const d=e[u],g=TL(d,u);if(d.role==="user"){const y=typeof d.content=="string"?d.content:JSON.stringify(d.content);if(y.startsWith("[system]"))continue;r.push(m.jsx(OL,{text:y,projectName:n,providerOverride:i,scope:s},g));continue}if(d.role==="assistant"){const y=new Map;let v=u+1;for(;v<e.length&&e[v].role==="toolResult";){const j=e[v];y.set(j.toolCallId,j),v++}const w=ML(d,y,d.timestamp??0),S=Tx(d);r.push(m.jsxs(q.Fragment,{children:[w.length>0&&m.jsx("div",{className:"mt-3 space-y-1.5",children:w.map(j=>m.jsx(Dx,{trail:j},j.id))}),S.trim()&&m.jsxs("div",{className:"mt-3",children:[m.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),m.jsx(Ox,{content:S})]})]},g)),u=v-1;continue}}return r}function OL({text:e,projectName:n,providerOverride:i,scope:s}){const[r,u]=q.useState(!1),d=q.useMemo(()=>RL(n,e,i,s),[n,e,i,s]);async function g(){try{await navigator.clipboard.writeText(d),u(!0),window.setTimeout(()=>u(!1),1500)}catch{}}return m.jsxs("div",{className:"group relative mt-3 rounded-md bg-bg-elevated/60 px-3 py-2 text-strong",children:[m.jsxs("div",{className:"flex items-center justify-between gap-2",children:[m.jsx("div",{className:"text-[10px] uppercase tracking-wider text-muted",children:"You"}),m.jsx("button",{type:"button",onClick:Xt(g),className:"inline-flex items-center gap-1 rounded border border-mono-800/70 bg-bg/60 px-1.5 py-0.5 text-[10px] text-secondary opacity-0 transition hover:border-strong hover:text-heading group-hover:opacity-100 focus:opacity-100","aria-label":"Copy as CLI command",title:d,children:r?m.jsxs(m.Fragment,{children:[m.jsx(C2,{className:"h-2.5 w-2.5 text-positive-400","aria-hidden":"true"}),"Copied"]}):m.jsxs(m.Fragment,{children:[m.jsx(TN,{className:"h-2.5 w-2.5","aria-hidden":"true"}),"Copy as CLI"]})})]}),m.jsx("div",{className:"whitespace-pre-wrap",children:e})]})}function RL(e,n,i,s){const r=["canonry","agent","ask",Ev(e),Ev(n)];return i&&r.push("--provider",i),s==="read-only"&&r.push("--scope","read-only"),r.join(" ")}function Ev(e){return`'${e.replace(/'/g,"'\\''")}'`}function ML(e,n,i){const s=[];for(const r of e.content){if(r.type!=="toolCall")continue;const u=r,d=n.get(u.id);s.push({id:u.id,name:u.name,args:u.arguments,startedAt:i,endedAt:d?.timestamp,isError:d?.isError,result:d?.content})}return s}function Dx({trail:e}){const[n,i]=q.useState(!1),s=e.endedAt===void 0,r=!s&&e.isError===!0,u=e.endedAt!=null?e.endedAt-e.startedAt:null,d=u==null||u<0?null:u<1e3?`${u}ms`:`${(u/1e3).toFixed(1)}s`,g=r?"border-negative-800/50":s?"border-positive-800/50":"border-mono-800/70",y=r?"bg-negative-950/20":s?"bg-positive-950/20":"bg-surface-hover";return m.jsxs("div",{className:`rounded-md border ${g} ${y} font-mono`,children:[m.jsxs("button",{type:"button",onClick:()=>i(v=>!v),className:"flex w-full items-center gap-2 px-2.5 py-1.5 text-left","aria-expanded":n,children:[m.jsx("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:s?m.jsx(E2,{className:"h-3 w-3 animate-spin text-positive-400","aria-hidden":"true"}):r?m.jsx(D2,{className:"h-3 w-3 text-negative-400","aria-hidden":"true"}):m.jsx(gA,{className:"h-3 w-3 text-muted","aria-hidden":"true"})}),m.jsx("span",{className:"text-[11px] font-semibold text-heading",children:e.name}),m.jsxs("span",{className:"ml-auto flex items-center gap-2 text-[10px] text-muted",children:[s?m.jsx("span",{className:"text-positive-400",children:"running…"}):m.jsxs(m.Fragment,{children:[m.jsx("span",{children:r?"failed":"ok"}),d&&m.jsx("span",{children:d})]}),m.jsx(Lf,{className:`h-3 w-3 transition-transform ${n?"rotate-90":""}`,"aria-hidden":"true"})]})]}),n&&m.jsxs("div",{className:"border-t border-default px-2.5 py-2 text-[11px] text-secondary",children:[m.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:"Args"}),m.jsx("pre",{className:"mb-2 overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:Tv(e.args)}),!s&&e.result!==void 0&&m.jsxs(m.Fragment,{children:[m.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:r?"Error":"Result"}),m.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:Tv(e.result)})]})]})]})}function Tv(e){try{const n=typeof e=="string"?e:JSON.stringify(e,null,2);return n.length>2e3?`${n.slice(0,2e3)}
|
|
64
|
-
… (${n.length-2e3} more chars)`:n}catch{return String(e)}}function Ox({content:e}){return m.jsx("div",{className:"text-heading",children:m.jsx(L4,{components:{h1:n=>m.jsx("h1",{...n,className:"mt-3 mb-2 text-base font-semibold text-primary"}),h2:n=>m.jsx("h2",{...n,className:"mt-3 mb-2 text-sm font-semibold text-primary"}),h3:n=>m.jsx("h3",{...n,className:"mt-3 mb-1.5 text-sm font-semibold text-heading"}),h4:n=>m.jsx("h4",{...n,className:"mt-2 mb-1 text-xs font-semibold uppercase tracking-wide text-neutral"}),p:n=>m.jsx("p",{...n,className:"mb-2 leading-relaxed"}),ul:n=>m.jsx("ul",{...n,className:"mb-2 ml-4 list-disc space-y-1"}),ol:n=>m.jsx("ol",{...n,className:"mb-2 ml-4 list-decimal space-y-1"}),li:n=>m.jsx("li",{...n,className:"marker:text-mono-600"}),strong:n=>m.jsx("strong",{...n,className:"font-semibold text-primary"}),em:n=>m.jsx("em",{...n,className:"text-strong"}),code:({children:n,...i})=>m.jsx("code",{...i,className:"rounded bg-mono-800/70 px-1 py-0.5 font-mono text-[12px] text-positive-200",children:n}),pre:n=>m.jsx("pre",{...n,className:"mb-2 overflow-x-auto rounded-md border border-base bg-bg-elevated/70 p-3 font-mono text-xs text-strong"}),a:n=>m.jsx("a",{...n,className:"text-positive-400 underline decoration-positive-700 hover:decoration-positive-400",target:"_blank",rel:"noopener noreferrer"}),table:n=>m.jsx("div",{className:"mb-2 overflow-x-auto",children:m.jsx("table",{...n,className:"w-full border-collapse text-xs"})}),thead:n=>m.jsx("thead",{...n,className:"border-b border-base"}),th:n=>m.jsx("th",{...n,className:"px-2 py-1 text-left font-semibold text-neutral"}),tr:n=>m.jsx("tr",{...n,className:"border-b border-mono-900"}),td:n=>m.jsx("td",{...n,className:"px-2 py-1 text-strong"}),blockquote:n=>m.jsx("blockquote",{...n,className:"mb-2 border-l-2 border-strong pl-3 italic text-secondary"}),hr:()=>m.jsx("hr",{className:"my-3 border-base"})},children:e})})}function BL(){return m.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[m.jsx("div",{className:"text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),m.jsxs("div",{className:"flex items-center gap-1","aria-label":"Aero is thinking",children:[m.jsx("span",{className:"aero-dot h-1.5 w-1.5 rounded-full bg-positive-400/80"}),m.jsx("span",{className:"aero-dot aero-dot-2 h-1.5 w-1.5 rounded-full bg-positive-400/60"}),m.jsx("span",{className:"aero-dot aero-dot-3 h-1.5 w-1.5 rounded-full bg-positive-400/40"})]})]})}function qL(){const e=Jv(),n=/^\/projects\/([^/]+)/.exec(e.pathname),i=n?decodeURIComponent(n[1]):null,s=on({...Iu({client:oe}),enabled:i!==null,staleTime:6e4});if(!i)return null;const r=s.data??[],u=r.find(d=>d.id===i)??r.find(d=>d.name===i);return u?m.jsx(AL,{projectName:u.name},u.name):null}const LL={project:"getApiV1ProjectsByName",google:"getApiV1ProjectsByNameGoogle",gsc:"getApiV1ProjectsByNameGoogleGsc",bing:"getApiV1ProjectsByNameBing",ga:"getApiV1ProjectsByNameGa",gbp:"getApiV1ProjectsByNameGbp",ads:"getApiV1ProjectsByNameAds",traffic:"getApiV1ProjectsByNameTraffic",discovery:"getApiV1ProjectsByNameDiscover",researchRuns:"getApiV1ProjectsByNameResearchRuns",technicalAeo:"getApiV1ProjectsByNameTechnicalAeo",runs:"getApiV1ProjectsByNameRuns"};function ha(e,n){const i=LL[n];return e.invalidateQueries({predicate:s=>{const r=s.queryKey[0];return typeof r?._id=="string"&&r._id.startsWith(i)}})}function Su(e,n,i){switch(e.invalidateQueries({queryKey:_0({client:oe})}),e.invalidateQueries({queryKey:Uo({client:oe})}),ha(e,"runs"),n){case Te["answer-visibility"]:return;case Te["backlink-extract"]:return;case Te["site-audit"]:ha(e,"technicalAeo");return;case Te["gsc-sync"]:case Te["inspect-sitemap"]:ha(e,"gsc");return;case Te["ga-sync"]:ha(e,"ga");return;case Te["traffic-sync"]:ha(e,"ga"),ha(e,"traffic");return;case Te["bing-inspect"]:case Te["bing-inspect-sitemap"]:ha(e,"bing");return;case Te["aeo-discover-seed"]:case Te["aeo-discover-probe"]:return;case Te["gbp-sync"]:ha(e,"gbp");return;case Te["ads-sync"]:ha(e,"ads");return;default:return n}}const Dv=[{label:"GitHub",href:"https://github.com/Canonry/canonry",Icon:MN},{label:"Docs",href:"https://github.com/Canonry/canonry/tree/main/docs",Icon:AN},{label:"Changelog",href:"https://github.com/Canonry/canonry/releases",Icon:ON}],Ov=e=>({label:e,state:"checking",detail:"Checking service health"}),$L={apiStatus:Ov("API"),workerStatus:Ov("Worker")};function IL(e){return e==="completed"?"positive":e==="partial"?"caution":"negative"}function UL(e){const n=al(e.kind);return e.status==="completed"?`${n} completed`:e.status==="partial"?`${n} completed with partial results`:e.status==="cancelled"?`${n} cancelled`:`${n} failed`}function PL(e,n){return e.error?`${n}: ${r0(e.error)}`:e.location?`${n} · ${e.location}`:n}function Rv(e,n,i){if(n)return n;const s=i.find(r=>r.id===e);return s?.displayName||s?.name||e}function VL(e,n){return[e.completed>0?`${e.completed} completed`:null,e.partial>0?`${e.partial} partial`:null,e.failed>0?`${e.failed} failed`:null,e.cancelled>0?`${e.cancelled} cancelled`:null,n>0?`${n} skipped at queue time`:null].filter(Boolean).join(", ")}function GL(e){return e.failed>0||e.cancelled>0?"negative":e.partial>0?"caution":"positive"}function KL(){const e=zi(),n=q.useSyncExternalStore(sx,Va,Va),i=Object.keys(n.runs).length>0||Object.keys(n.batches).length>0,s=on({...C0({client:oe}),enabled:i,staleTime:No,refetchInterval:3e3}),r=on({...Iu({client:oe}),enabled:i}),u=q.useRef({}),d=q.useCallback(()=>{s.refetch()},[s.refetch]);return q.useEffect(()=>{i&&d()},[i,d]),q.useEffect(()=>{if(!i||typeof window>"u")return;const g=()=>{document.visibilityState==="visible"&&d()};return window.addEventListener("focus",d),document.addEventListener("visibilitychange",g),()=>{window.removeEventListener("focus",d),document.removeEventListener("visibilitychange",g)}},[i,d]),q.useEffect(()=>{const g=s.data??[],y=r.data??[],v=Object.fromEntries(g.map(S=>[S.id,S])),w=Object.fromEntries(g.map(S=>[S.id,S.status]));for(const S of Object.values(n.runs)){const j=v[S.runId];if(!j||!AB(j.status)||(u.current[j.id]??S.lastAnnouncedStatus)===j.status)continue;const E=y.find(C=>C.id===j.projectId);if(E&&Su(e,j.kind,E.name),S.sourceAction==="run-all"){Lp(j.id);continue}const A=Rv(j.projectId,S.projectLabel,y);rn({title:UL(j),detail:PL(j,A),tone:IL(j.status),dedupeKey:`run:${j.id}`,dedupeMode:"replace",cta:{label:"View run",intent:"open-run-drawer",runId:j.id}}),Lp(j.id)}if(s.data!==void 0){const S=new Set(g.map(_=>_.id)),j=CB(Object.values(n.runs),S,Date.now(),_B);for(const _ of j){const E=y.find(A=>A.id===_.projectId);E&&Su(e,_.kind,E.name),_.sourceAction!=="run-all"&&rn({title:`${al(_.kind)} status unavailable`,detail:Rv(_.projectId,_.projectLabel,y),tone:"neutral",dedupeKey:`run-stale:${_.runId}`,dedupeMode:"replace"}),Lp(_.runId)}}for(const S of Object.values(n.batches)){const j=zB(S.runIds,v);j.finished&&(rn({title:"Run-all batch finished",detail:VL(j,S.skippedCount),tone:GL(j),dedupeKey:`batch:${S.batchId}`,dedupeMode:"replace",cta:{label:"View runs",intent:"go-to-runs"}}),NB(S.batchId))}u.current=w},[r.data,s.data,n,e]),null}function HL(){const{account:e,isAdmin:n}=hl(),i=wl(),s=q.useMemo(()=>b2(),[]),r=q.useMemo(S6,[]),u=q.useMemo(j6,[]),{dashboard:d,isLoading:g,refetch:y}=Ku(void 0,{includeSettings:!s}),S=O0(!i,i?.health).data??i?.health??$L,j=Jv(),{runId:_,evidenceId:E,closeDrawer:A}=R0(),[C,O]=q.useState(!1),[L,G]=q.useState(()=>{if(typeof window>"u")return!1;try{return window.localStorage.getItem("canonry:sidebarHidden")==="true"}catch{return!1}}),[P,H]=q.useState(()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem("canonry:dismissedUpdateVersion")}catch{return null}}),[ae]=q.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("force-update")),R=ae?{current:S.apiStatus.version??"0.0.0",latest:ae,url:"https://www.npmjs.com/package/@canonry/canonry",upgradeCommand:"npm install -g @canonry/canonry"}:S.apiStatus.updateAvailable,$=u&&R&&R.latest!==P,fe=()=>{if(R){try{window.localStorage.setItem("canonry:dismissedUpdateVersion",R.latest)}catch{}H(R.latest)}},ue=()=>{const M=!L;try{M?window.localStorage.setItem("canonry:sidebarHidden","true"):window.localStorage.removeItem("canonry:sidebarHidden")}catch{}G(M)},me=hL(_),pe=me.data??null,Ge=me.isLoading;q.useEffect(()=>{pe&&pe.status!=="running"&&pe.status!=="queued"&&y()},[pe?.status,y]),q.useEffect(()=>{O(!1)},[j.pathname]),q.useEffect(()=>{if(typeof window>"u"||!_&&!E)return;const M=re=>{re.key==="Escape"&&A()};return window.addEventListener("keydown",M),()=>{window.removeEventListener("keydown",M)}},[_,E,A]);const De=d??i?.dashboard??null,Ne=j.pathname==="/setup"&&De!==null&&De.portfolioOverview.projects.length===0,K=Ne?"app-shell-focus":L?"app-shell-sidebar-hidden":"",ee=_?(De?Uq(De,_):void 0)??(pe?Gu(pe,De?.projects.find(M=>M.project.id===pe.projectId)?.project.displayName??De?.projects.find(M=>M.project.id===pe.projectId)?.project.name??"Unknown project"):void 0):void 0,he=q.useMemo(()=>Mq(j.pathname,De),[j.pathname,De]),{commandCenter:Ae}=mL(he),le=q.useMemo(()=>{if(E)return Vq(Ae,De,E)},[E,Ae,De]),Ye=(()=>{const M=j.pathname;if(M==="/")return"Portfolio";if(M==="/projects")return"Projects";if(M==="/runs")return"Runs";if(M==="/history")return"History";if(M==="/settings")return"Settings";if(M==="/setup")return"Setup";if(M==="/backlinks")return"Backlink data";if(M==="/traffic"||M.startsWith("/traffic/"))return"Traffic sources";if(M.startsWith("/projects/")){const ne=M.split("/").filter(Boolean)[1];if(ne&&De){const ie=De.projects.find(se=>se.project.id===ne);if(ie)return ie.project.name}return"Project"}return"Not found"})();if(q.useEffect(()=>{const M=hM(s?.theme);if(!M)return;const re=document.createElement("link");return re.rel="stylesheet",re.href=M,document.head.appendChild(re),()=>{document.head.removeChild(re)}},[s]),s){const M=!s.views||s.views.includes(lM(j.pathname));return m.jsxs("div",{className:"app-shell app-shell-embed","data-theme":pM(s.theme),style:fM(s.theme),children:[m.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),m.jsx("main",{id:"content",className:"page-shell",children:M?m.jsx(Fp,{}):m.jsx("div",{className:"embed-view-unavailable",role:"status",children:"This view is not available in embed mode."})})]})}return m.jsxs("div",{className:`app-shell ${K}`,children:[m.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),!Ne&&!L&&m.jsxs("aside",{id:"desktop-sidebar",className:"sidebar","aria-label":"Primary navigation",children:[m.jsx("div",{className:"sidebar-brand",children:m.jsx(xv,{version:S.apiStatus.version,updateAvailable:$?R:null,onDismissUpdate:fe})}),m.jsxs("nav",{className:"sidebar-nav",children:[m.jsxs(Xe,{to:"/",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(UN,{className:"sidebar-icon"}),m.jsx("span",{children:"Portfolio"})]}),m.jsxs(Xe,{to:"/projects",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[m.jsx(qN,{className:"sidebar-icon"}),m.jsx("span",{children:"Projects"})]}),m.jsxs(Xe,{to:"/runs",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(nA,{className:"sidebar-icon"}),m.jsx("span",{children:"Runs"})]}),m.jsxs(Xe,{to:"/history",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx($N,{className:"sidebar-icon"}),m.jsx("span",{children:"History"})]}),m.jsxs(Xe,{to:"/traffic",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[m.jsx(sA,{className:"sidebar-icon"}),m.jsx("span",{children:"Traffic sources"})]}),m.jsxs(Xe,{to:"/backlinks",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(VN,{className:"sidebar-icon"}),m.jsx("span",{children:"Backlink data"})]}),n&&m.jsxs(Xe,{to:"/settings",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(pA,{className:"sidebar-icon"}),m.jsx("span",{children:"Settings"})]}),g?m.jsxs(m.Fragment,{children:[m.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),[1,2,3].map(M=>m.jsxs("div",{className:"sidebar-skeleton-item",children:[m.jsx("span",{className:"skeleton-circle size-2"}),m.jsx("span",{className:"skeleton-text flex-1",style:{width:`${50+M*15}%`}})]},M))]}):De&&De.projects.length>0?m.jsxs(m.Fragment,{children:[m.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),De.projects.map(M=>{const re=M.visibilitySummary.tone;return m.jsxs(Xe,{to:"/projects/$projectName",params:{projectName:M.project.name},className:"sidebar-project",activeProps:{className:"sidebar-project sidebar-project-active"},children:[m.jsx("span",{className:`sidebar-dot sidebar-dot-${re}`}),m.jsx("span",{children:M.project.displayName||M.project.name})]},M.project.id)})]}):g?null:m.jsxs(m.Fragment,{children:[m.jsx("p",{className:"sidebar-section-title",children:"Resources"}),n&&m.jsxs(Xe,{to:"/setup",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(lA,{className:"sidebar-icon"}),m.jsx("span",{children:"Setup"})]})]})]}),e&&m.jsxs("div",{className:"sidebar-account",children:[m.jsxs("div",{className:"sidebar-account-identity",children:[m.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?m.jsx("span",{className:"sidebar-account-role",children:"View only"}):null]}),m.jsx(Ee,{type:"button",variant:"ghost",size:"sm",onClick:Xt(async()=>{await Fy(),window.location.reload()}),children:"Sign out"})]}),r?m.jsx("div",{className:"sidebar-footer",children:Dv.map(({label:M,href:re,Icon:ne})=>m.jsx("a",{className:"sidebar-footer-icon",href:re,target:"_blank",rel:"noopener noreferrer",title:M,"aria-label":M,children:m.jsx(ne,{className:"size-4"})},re))}):null]}),m.jsxs("div",{className:"main-area",children:[m.jsxs("header",{className:"topbar",children:[m.jsxs("div",{className:"topbar-left",children:[!Ne&&m.jsx(Ee,{className:"sidebar-privacy-toggle",variant:"ghost",size:"icon",type:"button","aria-label":L?"Show sidebar":"Hide sidebar","aria-controls":L?void 0:"desktop-sidebar","aria-expanded":!L,title:L?"Show sidebar":"Hide sidebar",onClick:ue,children:L?m.jsx(eA,{className:"size-4"}):m.jsx(JN,{className:"size-4"})}),m.jsx("div",{className:"topbar-brand-mobile",children:m.jsx(xv,{compact:!0})}),m.jsxs("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:[m.jsx(Xe,{to:"/",children:"Home"}),m.jsx(Lf,{className:"breadcrumb-sep size-3"}),m.jsx("span",{className:"breadcrumb-current",children:Ye})]})]}),m.jsxs("div",{className:"topbar-actions",children:[m.jsx(vL,{}),m.jsxs("div",{className:"health-pill-row",children:[m.jsxs("span",{className:`health-pill health-pill-${S.apiStatus.state}`,title:Do(S.apiStatus),children:["API ",S.apiStatus.state==="ok"?"ok":S.apiStatus.state]}),m.jsxs("span",{className:`health-pill health-pill-${S.workerStatus.state}`,title:Do(S.workerStatus),children:["Worker ",S.workerStatus.state==="ok"?"ok":S.workerStatus.state]})]}),m.jsxs(Ee,{className:"nav-toggle",variant:"secondary",size:"icon",type:"button","aria-expanded":C,"aria-controls":"mobile-nav",onClick:()=>O(M=>!M),children:[m.jsx(ZN,{className:"size-4"}),m.jsx("span",{className:"sr-only",children:"Open navigation"})]})]})]}),m.jsxs("div",{id:"mobile-nav",className:`mobile-nav ${C?"mobile-nav-open":""}`,children:[m.jsxs(Ee,{className:"mobile-nav-close",variant:"ghost",size:"icon",type:"button",onClick:()=>O(!1),children:[m.jsx(Bo,{className:"size-5"}),m.jsx("span",{className:"sr-only",children:"Close navigation"})]}),m.jsx(Xe,{to:"/",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Portfolio"}),m.jsx(Xe,{to:"/projects",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Projects"}),m.jsx(Xe,{to:"/runs",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Runs"}),m.jsx(Xe,{to:"/history",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"History"}),m.jsx(Xe,{to:"/traffic",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Traffic sources"}),m.jsx(Xe,{to:"/backlinks",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Backlink data"}),n&&m.jsx(Xe,{to:"/settings",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Settings"}),De&&De.projects.length>0?m.jsxs("div",{className:"mobile-nav-section",children:[m.jsx("p",{className:"mobile-nav-section-title",children:"Tracked projects"}),De.projects.map(M=>m.jsx(Xe,{to:"/projects/$projectName",params:{projectName:M.project.name},className:"mobile-nav-link",children:M.project.name},M.project.id))]}):null,e&&m.jsxs("div",{className:"mobile-nav-section",children:[m.jsx("p",{className:"mobile-nav-section-title",children:"Signed in"}),m.jsxs("div",{className:"sidebar-account",children:[m.jsxs("div",{className:"sidebar-account-identity",children:[m.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?m.jsx("span",{className:"sidebar-account-role",children:"View only"}):null]}),m.jsx(Ee,{type:"button",variant:"ghost",size:"sm","data-testid":"mobile-sign-out",onClick:Xt(async()=>{await Fy(),window.location.reload()}),children:"Sign out"})]})]})]}),m.jsx("main",{id:"content",className:"page-shell",children:g&&!i?m.jsxs("div",{className:"page-skeleton",children:[m.jsxs("div",{className:"page-skeleton-header",children:[m.jsx("div",{className:"skeleton-text h-6 w-40"}),m.jsx("div",{className:"skeleton-text-sm w-72"})]}),m.jsx("div",{className:"page-skeleton-grid",children:[1,2,3].map(M=>m.jsxs("div",{className:"page-skeleton-card",children:[m.jsx("div",{className:"skeleton-text w-24"}),m.jsx("div",{className:"skeleton-text w-full"}),m.jsx("div",{className:"skeleton-text-sm w-3/4"})]},M))}),m.jsx("div",{className:"page-skeleton-grid",style:{gridTemplateColumns:"1fr 1fr"},children:[1,2].map(M=>m.jsxs("div",{className:"page-skeleton-card",children:[m.jsx("div",{className:"skeleton-text w-20"}),m.jsx("div",{className:"space-y-2",children:[1,2,3].map(re=>m.jsx("div",{className:"skeleton-text-sm w-full"},re))})]},M))})]}):m.jsx(Fp,{})}),m.jsxs("footer",{className:"footer",children:[m.jsxs("span",{className:"footer-brand",children:[m.jsx("span",{children:m.jsx("a",{href:"https://canonry.ai",children:"Canonry"})}),S.apiStatus.version&&S.apiStatus.version!=="unknown"?m.jsxs("span",{className:"footer-version",children:["v",S.apiStatus.version]}):null]}),r?m.jsx("div",{className:"footer-links",children:Dv.map(({label:M,href:re,Icon:ne})=>m.jsx("a",{href:re,target:"_blank",rel:"noopener noreferrer",title:M,"aria-label":M,className:"footer-icon",children:m.jsx(ne,{className:"size-3.5"})},re))}):null]})]}),_&&!ee&&Ge?m.jsx(Ip,{open:!0,title:"Loading run details",subtitle:"Fetching the durable run record",onClose:A,children:m.jsx("p",{className:"text-sm text-muted",role:"status",children:"Loading run details…"})}):null,_&&!ee&&me.isError?m.jsx(Ip,{open:!0,title:"Run unavailable",subtitle:"The run could not be loaded",onClose:A,children:m.jsx("p",{className:"text-sm text-negative",children:me.error instanceof Error?me.error.message:"Run details are unavailable."})}):null,ee?m.jsxs(Ip,{open:!0,title:ee.summary,subtitle:`${ee.projectName} · ${ee.kindLabel}`,onClose:A,children:[m.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1 text-sm",children:[m.jsx(D0,{status:ee.status}),m.jsx("span",{className:"text-secondary",children:ee.startedAt}),m.jsx("span",{className:"text-muted",children:ee.duration}),m.jsx("span",{className:"text-faint",children:ee.triggerLabel})]}),ee.status==="failed"&&ee.statusDetail&&m.jsx("p",{className:"mt-2 text-sm text-negative",children:ee.statusDetail}),m.jsxs("div",{className:"mt-4",children:[m.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted mb-2",children:"Activity Log"}),Ge?m.jsx("p",{className:"text-sm text-muted",children:"Loading run details..."}):pe?.snapshots&&pe.snapshots.length>0?m.jsxs("div",{className:"space-y-2",children:[pe.snapshots.map(M=>m.jsxs("div",{className:"rounded-lg border border-default bg-surface p-3",children:[m.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[m.jsx("p",{className:"text-sm font-medium text-strong truncate",children:M.query??"Unknown query"}),m.jsxs("div",{className:"flex items-center gap-1.5",children:[m.jsx(wq,{provider:M.provider}),m.jsx(xx,{variant:M.citationState===vu.cited?"success":"neutral",children:M.citationState})]})]}),M.model&&m.jsx("p",{className:"text-[11px] text-muted font-mono",children:M.model}),M.citedDomains.length>0&&m.jsxs("p",{className:"text-xs text-muted mt-1",children:[m.jsx("span",{className:"text-secondary",children:"Sources:"})," ",M.citedDomains.join(", ")]}),M.competitorOverlap.length>0&&m.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor cited: ",M.competitorOverlap.join(", ")]}),M.groundingSources&&M.groundingSources.length>0&&m.jsxs("details",{className:"mt-2",children:[m.jsxs("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:[M.groundingSources.length," grounding source",M.groundingSources.length!==1?"s":""]}),m.jsx("ul",{className:"mt-1 space-y-0.5",children:M.groundingSources.map((re,ne)=>{const ie=xf(re.uri),se=re.title||re.uri;return m.jsx("li",{className:"text-xs text-muted truncate",children:ie?m.jsx("a",{href:ie,target:"_blank",rel:"noopener noreferrer",className:"hover:text-neutral",children:se}):m.jsx("span",{children:se})},ne)})})]}),M.answerText&&m.jsxs("details",{className:"mt-1",children:[m.jsx("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:"Answer preview"}),m.jsx("p",{className:"mt-1 text-xs text-secondary leading-relaxed whitespace-pre-wrap",children:M.answerText})]})]},M.id)),pe.status==="running"&&m.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[m.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Running remaining queries..."]})]}):pe&&pe.status==="running"?m.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[m.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Waiting for first query result..."]}):pe&&pe.status==="queued"?m.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[m.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-mono-500 animate-pulse"}),"Run queued, waiting for execution slot..."]}):pe&&pe.error?m.jsxs("div",{className:"rounded-lg border border-negative-800/40 bg-negative-950/20 p-3",children:[m.jsx("p",{className:"text-sm font-medium text-negative mb-2",children:"Run failed"}),m.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words font-mono text-xs leading-5 text-negative",children:sM(pe.error)})]}):m.jsx("p",{className:"text-sm text-muted",children:"No snapshot data available."})]})]}):null,le?m.jsx(Dq,{evidence:le.evidence,project:le.project,onClose:A}):null,m.jsx(KL,{}),m.jsx(bL,{}),m.jsx(qL,{})]})}class QL extends q.Component{state={error:null};static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n,i){console.error("[ErrorBoundary]",n,i.componentStack)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?m.jsx("div",{className:"page-container",children:m.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-20 text-center",children:[m.jsx("div",{className:"rounded-full bg-negative-950/40 p-3",children:m.jsx(D2,{className:"size-6 text-negative-400"})}),m.jsx("h2",{className:"text-lg font-semibold text-heading",children:"Something went wrong"}),m.jsx("p",{className:"text-sm text-secondary max-w-md",children:this.state.error.message||"An unexpected error occurred while rendering this page."}),m.jsxs("div",{className:"flex gap-3 mt-2",children:[m.jsxs(Ee,{variant:"secondary",size:"sm",onClick:this.handleReset,children:[m.jsx(T2,{className:"size-3.5 mr-1.5"}),"Try again"]}),m.jsx(Ee,{variant:"secondary",size:"sm",onClick:()=>{const n=window.__CANONRY_CONFIG__?.basePath?.replace(/\/$/,"")??"";window.location.href=n||"/"},children:"Go home"})]})]})}):this.props.children}}const Un=q.forwardRef(({className:e,...n},i)=>m.jsx("div",{ref:i,className:Qn("rounded-xl border border-base bg-bg/75 shadow-[0_0_0_1px_var(--color-shadow-hairline)]",e),...n}));Un.displayName="Card";const il=q.forwardRef(({className:e,...n},i)=>m.jsx("div",{ref:i,className:Qn("flex flex-col gap-1.5 p-5",e),...n}));il.displayName="CardHeader";const sl=q.forwardRef(({className:e,...n},i)=>m.jsx("h3",{ref:i,className:Qn("font-medium tracking-tight text-primary",e),...n}));sl.displayName="CardTitle";const ol=q.forwardRef(({className:e,...n},i)=>m.jsx("p",{ref:i,className:Qn("text-sm text-muted",e),...n}));ol.displayName="CardDescription";const go=q.forwardRef(({className:e,...n},i)=>m.jsx("div",{ref:i,className:Qn("p-5 pt-0",e),...n}));go.displayName="CardContent";function ZL({points:e,tone:n}){const i=q.useId();if(e.length===0)return null;const s=42,r=132,u=5,d=Math.min(...e),y=Math.max(...e)-d||1,v=r-u*2,w=s-u*2,S=e.map((j,_)=>{const E=u+_/Math.max(e.length-1,1)*v,A=u+(1-(j-d)/y)*w;return`${E},${A}`}).join(" ");return m.jsxs("svg",{className:`sparkline sparkline-${n}`,viewBox:`0 0 ${r} ${s}`,"aria-hidden":"true",children:[m.jsx("defs",{children:m.jsx("clipPath",{id:i,children:m.jsx("rect",{x:u,y:u,width:v,height:w,rx:"8"})})}),m.jsx("line",{className:"sparkline-guide",x1:u,x2:r-u,y1:s-u,y2:s-u}),m.jsx("polyline",{clipPath:`url(#${i})`,points:S,vectorEffect:"non-scaling-stroke"})]})}function FL({project:e}){return m.jsxs(Xe,{to:"/projects/$projectName",params:{projectName:e.project.name},className:"project-row cursor-pointer",children:[m.jsx("div",{className:"project-row-chart",children:m.jsx(ZL,{points:e.trend,tone:nx(e.lastRun.status)})}),m.jsxs("div",{className:"project-row-primary",children:[m.jsxs("div",{children:[m.jsx("p",{className:"project-name",children:e.project.name}),m.jsx("p",{className:"project-domain",children:e.project.canonicalDomain})]}),m.jsx("p",{className:"project-insight",children:e.insight})]}),m.jsx("div",{className:"project-row-stat",children:m.jsxs("div",{className:"metric-inline-block",children:[m.jsx("p",{className:"metric-inline-label",children:"Mentioned"}),m.jsx("p",{className:`metric-inline-value ${e.mentionTone==="caution"?"text-caution-400":""}`,children:e.mentionScore}),m.jsx("p",{className:"metric-inline-delta",children:e.mentionDelta}),e.providerCoverage&&m.jsx("p",{className:"text-[13px] font-medium text-caution",children:e.providerCoverage})]})}),m.jsx("div",{className:"project-row-stat",children:m.jsxs("div",{className:"metric-inline-block",children:[m.jsx("p",{className:"metric-inline-label",children:"Competitor Pressure"}),m.jsx("p",{className:"metric-inline-value",children:e.competitorPressureLabel})]})}),m.jsx("span",{className:"project-row-link",children:m.jsx(Lf,{className:"h-4 w-4 text-muted"})})]})}function YL(){const e=wl(),{dashboard:n,isLoading:i}=Ku(),s=n??e?.dashboard;if(!s||i)return m.jsxs("div",{className:"page-skeleton",children:[m.jsxs("div",{className:"page-skeleton-header",children:[m.jsx("div",{className:"skeleton-text h-6 w-32"}),m.jsx("div",{className:"skeleton-text-sm w-64"})]}),m.jsx("div",{className:"space-y-3",children:[1,2,3].map(w=>m.jsxs("div",{className:"rounded-xl border border-default bg-surface p-4 flex items-center gap-4",children:[m.jsxs("div",{className:"flex-1 space-y-2",children:[m.jsx("div",{className:"skeleton-text w-36"}),m.jsx("div",{className:"skeleton-text-sm w-48"})]}),m.jsx("div",{className:"skeleton-text w-16"}),m.jsx("div",{className:"skeleton-text w-16"}),m.jsx("div",{className:"skeleton h-8 w-20 rounded"})]},w))})]});const r=s.portfolioOverview,g=O0(!e,e?.health).data??e?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},y=yB(r.systemHealth,g,s.settings),{openRun:v}=R0();return m.jsxs("div",{className:"page-container",children:[m.jsxs("div",{className:"page-header",children:[m.jsxs("div",{className:"page-header-left",children:[m.jsx("h1",{className:"page-title",children:"Portfolio"}),m.jsx("p",{className:"page-subtitle",children:"Visibility across all projects."})]}),m.jsx("div",{className:"page-header-right",children:m.jsx("p",{className:"text-[11px] text-faint",children:r.lastUpdatedAt})})]}),r.projects.length>0?m.jsx("div",{className:"project-list project-list-scrollable",children:r.projects.map(w=>m.jsx(FL,{project:w},w.project.id))}):m.jsxs(Un,{className:"surface-card empty-card",children:[m.jsx("h3",{children:r.emptyState?.title??"No projects yet"}),m.jsx("p",{className:"supporting-copy",children:r.emptyState?.detail}),m.jsx(Ee,{size:"sm",asChild:!0,children:m.jsx(Xe,{to:r.emptyState?.ctaHref==="/setup"||!r.emptyState?.ctaHref?"/setup":"/",children:r.emptyState?.ctaLabel??"Launch setup"})})]}),m.jsxs("div",{className:"overview-secondary-grid",children:[r.attentionItems.length>0&&m.jsxs("section",{className:"overview-secondary-section",children:[m.jsx("div",{className:"section-head section-head-inline",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Needs attention"}),m.jsx("h2",{className:"section-title-sm",children:"What changed"})]})}),m.jsx("div",{className:"attention-list attention-list-scrollable",children:r.attentionItems.map(w=>w.href?m.jsxs(Xe,{to:w.href,className:`attention-item attention-item-${w.tone}`,children:[m.jsxs("div",{children:[m.jsx("p",{className:"attention-title",children:w.title}),m.jsx("p",{className:"attention-detail",children:w.detail})]}),w.actionLabel&&m.jsx("span",{className:"attention-action",children:w.actionLabel})]},w.id):m.jsxs("div",{className:`attention-item attention-item-static attention-item-${w.tone}`,children:[m.jsxs("div",{children:[m.jsx("p",{className:"attention-title",children:w.title}),m.jsx("p",{className:"attention-detail",children:w.detail})]}),w.actionLabel&&m.jsx("span",{className:"attention-action",children:w.actionLabel})]},w.id))})]}),m.jsxs("section",{className:"overview-secondary-section",children:[m.jsx("div",{className:"section-head section-head-inline",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Recent runs"}),m.jsx("h2",{className:"section-title-sm",children:"Activity"})]})}),m.jsx("div",{className:"compact-stack compact-stack-scrollable",children:r.recentRuns.length>0?r.recentRuns.map(w=>m.jsxs("button",{className:"compact-run",type:"button",onClick:()=>v(w.id),children:[m.jsxs("div",{children:[m.jsx("p",{className:"compact-run-title",children:w.projectName}),m.jsx("p",{className:"compact-run-detail",children:w.summary})]}),m.jsx(D0,{status:w.status})]},w.id)):m.jsx("p",{className:"supporting-copy",children:"Run history appears here after the first launch."})})]})]}),m.jsxs("section",{className:"page-section",children:[m.jsx("div",{className:"section-head section-head-inline",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"System health"}),m.jsx("h2",{className:"section-title-sm",children:"Infrastructure"})]})}),m.jsx("div",{className:"divide-y divide-default border-y border-default",children:y.map(w=>{const S=w.id==="api"?g.apiStatus:w.id==="worker"?g.workerStatus:void 0,j=S?S.state==="ok"?void 0:Do(S):w.tone==="positive"?void 0:w.meta;return m.jsxs("div",{className:"flex items-start justify-between gap-4 py-3",children:[m.jsxs("div",{children:[m.jsx("p",{className:"text-sm font-medium text-heading",children:w.label}),j&&m.jsx("p",{className:"mt-1 text-sm text-secondary",children:j})]}),m.jsx(vn,{tone:w.tone,title:S?Do(S):w.meta,children:w.detail})]},w.id)})})]})]})}const L0=Symbol.for("yaml.alias"),wf=Symbol.for("yaml.document"),Ni=Symbol.for("yaml.map"),Rx=Symbol.for("yaml.pair"),ga=Symbol.for("yaml.scalar"),Po=Symbol.for("yaml.seq"),Kn=Symbol.for("yaml.node.type"),xs=e=>!!e&&typeof e=="object"&&e[Kn]===L0,Hu=e=>!!e&&typeof e=="object"&&e[Kn]===wf,Sl=e=>!!e&&typeof e=="object"&&e[Kn]===Ni,zt=e=>!!e&&typeof e=="object"&&e[Kn]===Rx,ut=e=>!!e&&typeof e=="object"&&e[Kn]===ga,jl=e=>!!e&&typeof e=="object"&&e[Kn]===Po;function _t(e){if(e&&typeof e=="object")switch(e[Kn]){case Ni:case Po:return!0}return!1}function Ct(e){if(e&&typeof e=="object")switch(e[Kn]){case L0:case Ni:case ga:case Po:return!0}return!1}const Mx=e=>(ut(e)||_t(e))&&!!e.anchor,rs=Symbol("break visit"),XL=Symbol("skip children"),rl=Symbol("remove node");function Vo(e,n){const i=JL(n);Hu(e)?yo(null,e.contents,i,Object.freeze([e]))===rl&&(e.contents=null):yo(null,e,i,Object.freeze([]))}Vo.BREAK=rs;Vo.SKIP=XL;Vo.REMOVE=rl;function yo(e,n,i,s){const r=WL(e,n,i,s);if(Ct(r)||zt(r))return e$(e,s,r),yo(e,r,i,s);if(typeof r!="symbol"){if(_t(n)){s=Object.freeze(s.concat(n));for(let u=0;u<n.items.length;++u){const d=yo(u,n.items[u],i,s);if(typeof d=="number")u=d-1;else{if(d===rs)return rs;d===rl&&(n.items.splice(u,1),u-=1)}}}else if(zt(n)){s=Object.freeze(s.concat(n));const u=yo("key",n.key,i,s);if(u===rs)return rs;u===rl&&(n.key=null);const d=yo("value",n.value,i,s);if(d===rs)return rs;d===rl&&(n.value=null)}}return r}function JL(e){return typeof e=="object"&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function WL(e,n,i,s){if(typeof i=="function")return i(e,n,s);if(Sl(n))return i.Map?.(e,n,s);if(jl(n))return i.Seq?.(e,n,s);if(zt(n))return i.Pair?.(e,n,s);if(ut(n))return i.Scalar?.(e,n,s);if(xs(n))return i.Alias?.(e,n,s)}function e$(e,n,i){const s=n[n.length-1];if(_t(s))s.items[e]=i;else if(zt(s))e==="key"?s.key=i:s.value=i;else if(Hu(s))s.contents=i;else{const r=xs(s)?"alias":"scalar";throw new Error(`Cannot replace node with ${r} parent`)}}const t$={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},n$=e=>e.replace(/[!,[\]{}]/g,n=>t$[n]);class an{constructor(n,i){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},an.defaultYaml,n),this.tags=Object.assign({},an.defaultTags,i)}clone(){const n=new an(this.yaml,this.tags);return n.docStart=this.docStart,n}atDocument(){const n=new an(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:an.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},an.defaultTags);break}return n}add(n,i){this.atNextDocument&&(this.yaml={explicit:an.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},an.defaultTags),this.atNextDocument=!1);const s=n.trim().split(/[ \t]+/),r=s.shift();switch(r){case"%TAG":{if(s.length!==2&&(i(0,"%TAG directive should contain exactly two parts"),s.length<2))return!1;const[u,d]=s;return this.tags[u]=d,!0}case"%YAML":{if(this.yaml.explicit=!0,s.length!==1)return i(0,"%YAML directive should contain exactly one part"),!1;const[u]=s;if(u==="1.1"||u==="1.2")return this.yaml.version=u,!0;{const d=/^\d+\.\d+$/.test(u);return i(6,`Unsupported YAML version ${u}`,d),!1}}default:return i(0,`Unknown directive ${r}`,!0),!1}}tagName(n,i){if(n==="!")return"!";if(n[0]!=="!")return i(`Not a valid tag: ${n}`),null;if(n[1]==="<"){const d=n.slice(2,-1);return d==="!"||d==="!!"?(i(`Verbatim tags aren't resolved, so ${n} is invalid.`),null):(n[n.length-1]!==">"&&i("Verbatim tags must end with a >"),d)}const[,s,r]=n.match(/^(.*!)([^!]*)$/s);r||i(`The ${n} tag has no suffix`);const u=this.tags[s];if(u)try{return u+decodeURIComponent(r)}catch(d){return i(String(d)),null}return s==="!"?n:(i(`Could not resolve tag: ${n}`),null)}tagString(n){for(const[i,s]of Object.entries(this.tags))if(n.startsWith(s))return i+n$(n.substring(s.length));return n[0]==="!"?n:`!<${n}>`}toString(n){const i=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],s=Object.entries(this.tags);let r;if(n&&s.length>0&&Ct(n.contents)){const u={};Vo(n.contents,(d,g)=>{Ct(g)&&g.tag&&(u[g.tag]=!0)}),r=Object.keys(u)}else r=[];for(const[u,d]of s)u==="!!"&&d==="tag:yaml.org,2002:"||(!n||r.some(g=>g.startsWith(d)))&&i.push(`%TAG ${u} ${d}`);return i.join(`
|
|
65
|
-
`)}}an.defaultYaml={explicit:!1,version:"1.2"};an.defaultTags={"!!":"tag:yaml.org,2002:"};function Bx(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){const i=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw new Error(i)}return!0}function qx(e){const n=new Set;return Vo(e,{Value(i,s){s.anchor&&n.add(s.anchor)}}),n}function Lx(e,n){for(let i=1;;++i){const s=`${e}${i}`;if(!n.has(s))return s}}function
|
|
63
|
+
`)}}}finally{d?.removeEventListener("abort",_);try{w.releaseLock()}catch{}}}function Tx(e){return!e||e.role!=="assistant"?"":e.content.filter(n=>n.type==="text").map(n=>n.text).join("")}const NL=[{label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"}],AL=[{command:"/status",label:"Status",prompt:"Quick status overview for this project — latest runs, current health, anything unusual."},{command:"/insights",label:"Top insights",prompt:"Walk me through the 3 most severe active insights and what to do about each."},{command:"/last-run",label:"Last run",prompt:"Summarize the latest run for this project — provider mix, visibility changes, and anything that moved."},{command:"/last-failed",label:"Last failed run",prompt:"If the latest run failed, dig into it and tell me what went wrong plus how to fix it."},{command:"/run-sweep",label:"Run sweep now",prompt:"Run a new answer-visibility sweep for this project now and tell me when it lands."},{command:"/schedule",label:"Schedule",prompt:"What is the current sweep schedule, and is it appropriate given recent volatility?"},{command:"/queries",label:"Queries",prompt:"List the tracked queries for this project and flag any that are obvious duplicates or underperformers."},{command:"/competitors",label:"Competitors",prompt:"List this project's tracked competitors and call out which ones are showing up in answer citations."},{command:"/clear",label:"Clear conversation",action:"clear"}],Xc=e=>`canonry:aero:provider:${e}`,zv=e=>`canonry:aero:scope:${e}`;function _L({projectName:e}){const[n,i]=q.useState(!1),[s,r]=q.useState(!1),[u,d]=q.useState([]),[g,y]=q.useState(""),[v,w]=q.useState(!1),[S,j]=q.useState([]),[_,E]=q.useState(""),[A,C]=q.useState(null),[O,L]=q.useState(()=>typeof window>"u"?null:window.localStorage.getItem(Xc(e))??null),[G,P]=q.useState(()=>typeof window>"u"?"read-only":window.localStorage.getItem(zv(e))==="all"?"all":"read-only"),H=q.useRef(null),{ref:ae}=xL([u,_,S]),R=q.useRef(null),[$,fe]=q.useState(0),ue=q.useMemo(()=>{const M=g.trimStart();if(!M.startsWith("/"))return[];if(/\s/.test(M))return[];const re=M.toLowerCase();return AL.filter(ne=>ne.command.startsWith(re)||ne.label.toLowerCase().includes(re.slice(1)))},[g]);q.useEffect(()=>{fe(M=>ue.length===0?0:Math.min(M,ue.length-1))},[ue.length]);const me=on({...gB({client:oe,path:{name:e}}),enabled:n,staleTime:6e4}),pe=q.useMemo(()=>{const M=me.data?.providers??[];if(O){const ne=M.find(ie=>ie.id===O&&ie.configured);if(ne)return ne}const re=me.data?.defaultProvider;return re?M.find(ne=>ne.id===re)??null:null},[O,me.data]);q.useEffect(()=>{if(!me.data||!O)return;me.data.providers.find(re=>re.id===O&&re.configured)||(L(null),window.localStorage.removeItem(Xc(e)))},[me.data,O,e]);const Ge=q.useCallback(M=>{L(M),!(typeof window>"u")&&(M?window.localStorage.setItem(Xc(e),M):window.localStorage.removeItem(Xc(e)))},[e]),De=q.useCallback(()=>{P(M=>{const re=M==="all"?"read-only":"all";return typeof window<"u"&&window.localStorage.setItem(zv(e),re),re})},[e]);q.useEffect(()=>{if(!n)return;const M=re=>{re.key==="Escape"&&(s?r(!1):i(!1))};return window.addEventListener("keydown",M),()=>window.removeEventListener("keydown",M)},[n,s]),q.useEffect(()=>{if(!n)return;let M=!1;C(null);const re=()=>{M||v||Cv(e).then(se=>{M||d(se.messages)}).catch(se=>{M||C(se instanceof Error?se.message:"Failed to load transcript")})};re();const ie=window.setInterval(re,15e3);return()=>{M=!0,window.clearInterval(ie)}},[n,e,v]),q.useEffect(()=>()=>{H.current?.abort()},[e]);async function Ne(M){const re=M.trim();if(!re||v)return;C(null),y(""),w(!0),E(""),j([]);const ne={role:"user",content:re,timestamp:Date.now()};d(se=>[...se,ne]);const ie=new AbortController;H.current=ie;try{await jL({project:e,prompt:re,provider:O??void 0,scope:G,signal:ie.signal,onEvent:K});const se=await Cv(e);d(se.messages)}catch(se){se.name!=="AbortError"&&C(se instanceof Error?se.message:"Prompt failed")}finally{w(!1),E(""),H.current=null}}function K(M){switch(M.type){case"message_update":E(Tx(M.message));break;case"message_end":M.message.role==="assistant"&&E("");break;case"tool_execution_start":j(re=>[...re,{id:M.toolCallId,name:M.toolName,args:M.args,startedAt:Date.now()}]);break;case"tool_execution_end":j(re=>re.map(ne=>ne.id===M.toolCallId?{...ne,endedAt:Date.now(),isError:M.isError,result:M.result}:ne));break;case"error":C(M.message);break}}async function ee(){H.current?.abort();try{await SL(e),d([]),C(null)}catch(M){C(M instanceof Error?M.message:"Reset failed")}}const he=u.length===0,Ae=n&&s?"pointer-events-auto fixed inset-0 z-40 flex items-stretch justify-center bg-bg/70 p-4 sm:p-8 backdrop-blur-sm":"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center p-3",le=s?"pointer-events-auto flex h-full w-full max-w-5xl flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-2xl":"pointer-events-auto w-full max-w-3xl",Ye=s?"flex-1 overflow-y-auto px-6 py-5 text-sm text-strong":"max-h-[40vh] min-h-[120px] overflow-y-auto px-4 py-3 text-sm text-strong";return m.jsx("div",{className:Ae,onClick:M=>{s&&M.target===M.currentTarget&&r(!1)},children:m.jsx("div",{className:le,children:n?m.jsxs("div",{className:s?"flex h-full flex-col":"flex flex-col overflow-hidden rounded-2xl border border-mono-800/80 bg-bg/95 shadow-xl backdrop-blur",children:[m.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-mono-800/70 px-4 py-2.5",children:[m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx(tb,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),m.jsx("span",{className:"text-sm font-medium text-heading",children:"Aero"}),m.jsx("span",{className:"text-[10px] uppercase tracking-wider text-muted",children:v?"working…":e})]}),m.jsxs("div",{className:"flex items-center gap-1",children:[m.jsx(CL,{providers:me.data?.providers??[],active:pe,override:O,onPick:Ge,disabled:v}),m.jsx("button",{type:"button",onClick:Xt(ee),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Reset conversation",title:"Reset conversation",children:m.jsx(T2,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),m.jsx("button",{type:"button",onClick:()=>r(M=>!M),className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":s?"Collapse":"Expand",title:s?"Collapse":"Expand",children:s?m.jsx(YN,{className:"h-3.5 w-3.5","aria-hidden":"true"}):m.jsx(HN,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),m.jsx("button",{type:"button",onClick:()=>{r(!1),i(!1)},className:"rounded-md p-1.5 text-muted transition hover:bg-surface-inset hover:text-strong","aria-label":"Close Aero",children:m.jsx(Bo,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),m.jsxs("div",{ref:ae,className:Ye,children:[A&&m.jsx("div",{className:"mb-2 rounded-md border border-negative-700/40 bg-negative-950/40 px-3 py-2 text-xs text-negative-200",children:A}),he&&!v&&m.jsxs("div",{className:"flex flex-col gap-3 py-2",children:[m.jsxs("p",{className:"text-sm text-secondary",children:["Ask about ",m.jsx("span",{className:"text-strong",children:e})," or choose a starting point."]}),m.jsx("div",{className:"flex flex-wrap gap-1.5",children:NL.map(M=>m.jsx("button",{type:"button",onClick:()=>{Ne(M.prompt)},className:"rounded-md border border-base bg-bg-elevated/70 px-3 py-1.5 text-sm text-neutral transition hover:border-strong hover:bg-mono-800/70 hover:text-heading",children:M.label},M.label))})]}),OL(u,e,O,G),S.length>0&&m.jsx("div",{className:"mt-3 space-y-1.5",children:S.map(M=>m.jsx(Dx,{trail:M},M.id))}),v&&_&&m.jsxs("div",{className:"mt-3",children:[m.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),m.jsx(Ox,{content:_})]}),v&&!_&&S.every(M=>M.endedAt!==void 0)&&m.jsx(qL,{})]}),m.jsx(zL,{projectName:e,activeProvider:pe,scope:G,onToggleScope:De,disabled:v}),m.jsxs("div",{className:"relative",children:[ue.length>0&&m.jsx(EL,{matches:ue,selectedIndex:$,onHover:fe,onPick:M=>{y(""),R.current?.focus(),M.action==="clear"?ee():Ne(M.prompt)}}),m.jsxs("form",{className:"flex items-end gap-2 border-t border-mono-800/70 bg-bg/80 px-3 py-2.5",onSubmit:M=>{if(M.preventDefault(),ue.length>0){const re=ue[$];y(""),re.action==="clear"?ee():Ne(re.prompt);return}Ne(g)},children:[m.jsx("textarea",{ref:R,value:g,onChange:M=>y(M.target.value),onKeyDown:M=>{if(ue.length>0){if(M.key==="ArrowDown"){M.preventDefault(),fe(re=>(re+1)%ue.length);return}if(M.key==="ArrowUp"){M.preventDefault(),fe(re=>(re-1+ue.length)%ue.length);return}if(M.key==="Tab"){M.preventDefault();const re=ue[$];y(`${re.command} `);return}if(M.key==="Escape"){M.preventDefault(),y("");return}}if(M.key==="Enter"&&!M.shiftKey)if(M.preventDefault(),ue.length>0){const re=ue[$];y(""),re.action==="clear"?ee():Ne(re.prompt)}else Ne(g)},placeholder:"Ask Aero, or / for commands…",disabled:v,rows:s?3:1,className:"flex-1 resize-none bg-transparent text-sm text-heading placeholder:text-mono-600 focus:outline-none disabled:opacity-60"}),m.jsx("button",{type:"submit",disabled:v||!g.trim(),className:"inline-flex h-7 w-7 items-center justify-center rounded-md bg-positive-500 text-accent-fg transition hover:bg-positive-400 disabled:opacity-40","aria-label":"Send",children:m.jsx(jN,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]})]})]}):m.jsx("button",{type:"button",onClick:()=>i(!0),className:"flex w-full items-center justify-between rounded-lg border border-mono-800/80 bg-bg/95 px-4 py-2 text-left text-sm text-secondary shadow-lg transition hover:border-strong hover:bg-bg-elevated/90 hover:text-strong",children:m.jsxs("span",{className:"flex items-center gap-2",children:[m.jsx(tb,{className:"h-4 w-4 text-positive-400","aria-hidden":"true"}),"Ask Aero about ",e,"…"]})})})})}function CL({providers:e,active:n,override:i,onPick:s,disabled:r}){const[u,d]=q.useState(!1),g=q.useRef(null);if(q.useEffect(()=>{if(!u)return;const v=S=>{g.current?.contains(S.target)||d(!1)},w=S=>{S.key==="Escape"&&d(!1)};return window.addEventListener("mousedown",v),window.addEventListener("keydown",w),()=>{window.removeEventListener("mousedown",v),window.removeEventListener("keydown",w)}},[u]),e.length===0)return null;const y=n?.label.replace(/\s+\(.+\)$/,"")??"No provider";return m.jsxs("div",{ref:g,className:"relative",children:[m.jsxs("button",{type:"button",onClick:()=>d(v=>!v),disabled:r,className:"flex items-center gap-1 rounded-md px-2 py-1 text-sm text-secondary transition hover:bg-surface-inset hover:text-strong disabled:opacity-50","aria-label":"Switch agent model","aria-haspopup":"listbox","aria-expanded":u,title:n?`${n.label} · ${n.defaultModel}`:"Pick a provider",children:[m.jsx("span",{className:"font-medium text-strong",children:y}),m.jsx(z2,{className:"h-3 w-3","aria-hidden":"true"})]}),u&&m.jsxs("div",{role:"listbox",className:"absolute right-0 top-full z-50 mt-1 w-64 overflow-hidden rounded-lg border border-base bg-bg shadow-xl",children:[m.jsx("div",{className:"border-b border-default px-3 py-2 text-sm font-medium text-secondary",children:"Answer engine"}),m.jsx("ul",{className:"max-h-72 overflow-y-auto py-1",children:e.map(v=>{const w=n?.id===v.id,S=i===v.id;return m.jsx("li",{children:m.jsxs("button",{type:"button",role:"option","aria-selected":w,disabled:!v.configured,onClick:()=>{v.configured&&(s(S?null:v.id),d(!1))},className:"flex w-full items-center gap-2 px-3 py-2.5 text-left text-sm transition enabled:hover:bg-bg-elevated disabled:cursor-not-allowed disabled:opacity-60",title:v.configured?v.defaultModel:`Add ${TL(v.id)} in Settings or your environment`,children:[m.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center",children:w?m.jsx(C2,{className:"h-3 w-3 text-positive-400","aria-hidden":"true"}):null}),m.jsx("span",{className:"min-w-0 flex-1 truncate font-medium text-heading",children:v.label.replace(/\s+\(.+\)$/,"")}),S&&m.jsx("span",{className:"rounded-md border border-positive-800/60 bg-positive-950/60 px-2 py-0.5 text-[11px] text-positive",children:"Pinned"}),!v.configured&&m.jsx("span",{className:"rounded-md border border-base px-2 py-0.5 text-[11px] text-secondary",children:"Needs setup"})]})},v.id)})}),i&&m.jsx("button",{type:"button",onClick:()=>{s(null),d(!1)},className:"w-full border-t border-default px-3 py-2 text-left text-[11px] text-secondary transition hover:bg-bg-elevated hover:text-heading",children:"Reset to auto-detected default"})]})]})}function zL({projectName:e,activeProvider:n,scope:i,onToggleScope:s,disabled:r}){const u=n?.label.replace(/\s+\(.+\)$/,"")??null,d=i==="all";return m.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-t border-mono-800/70 bg-bg/80 px-3 pt-2 text-sm text-secondary",children:[m.jsx("span",{className:"font-medium text-strong",children:e}),u&&m.jsxs(m.Fragment,{children:[m.jsx("span",{"aria-hidden":"true",children:"·"}),m.jsx("span",{children:u})]}),m.jsx("button",{type:"button",onClick:s,disabled:r,className:`ml-auto inline-flex items-center rounded-md border px-2 py-1 text-sm font-medium transition disabled:opacity-50 ${d?"border-caution-800/60 bg-caution-950/40 text-caution hover:border-caution-700 hover:text-caution-200":"border-base bg-bg-elevated/70 text-secondary hover:border-strong hover:text-strong"}`,title:d?"Aero can invoke write tools (run sweep, dismiss insight, etc). Click to restrict.":"Aero is restricted to read-only tools. Click to allow writes.",children:d?"Can make changes":"Read only"})]})}function EL({matches:e,selectedIndex:n,onHover:i,onPick:s}){return m.jsxs("div",{className:"absolute inset-x-3 bottom-full mb-2 overflow-hidden rounded-lg border border-base bg-bg/98 shadow-2xl",children:[m.jsx("div",{className:"border-b border-default px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted",children:"Commands"}),m.jsx("ul",{role:"listbox",className:"max-h-72 overflow-y-auto py-1",children:e.map((r,u)=>{const d=u===n;return m.jsx("li",{children:m.jsxs("button",{type:"button",role:"option","aria-selected":d,onMouseEnter:()=>i(u),onClick:()=>s(r),className:`flex w-full items-center gap-3 px-3 py-2 text-left text-sm transition ${d?"bg-bg-elevated text-heading":"text-neutral hover:bg-bg-elevated/60"}`,children:[m.jsx("span",{className:"font-medium",children:r.label}),m.jsx("span",{className:"ml-auto font-mono text-[11px] text-secondary",children:r.command})]})},r.command)})})]})}function TL(e){switch(e){case"claude":return"ANTHROPIC_API_KEY";case"openai":return"OPENAI_API_KEY";case"gemini":return"GOOGLE_API_KEY";case"zai":return"ZAI_API_KEY";case"deepinfra":return"DEEPINFRA_TOKEN"}}function DL(e,n){const i=e.timestamp??0;return`${e.role}:${i}:${n}`}function OL(e,n,i,s){const r=[];for(let u=0;u<e.length;u++){const d=e[u],g=DL(d,u);if(d.role==="user"){const y=typeof d.content=="string"?d.content:JSON.stringify(d.content);if(y.startsWith("[system]"))continue;r.push(m.jsx(RL,{text:y,projectName:n,providerOverride:i,scope:s},g));continue}if(d.role==="assistant"){const y=new Map;let v=u+1;for(;v<e.length&&e[v].role==="toolResult";){const j=e[v];y.set(j.toolCallId,j),v++}const w=BL(d,y,d.timestamp??0),S=Tx(d);r.push(m.jsxs(q.Fragment,{children:[w.length>0&&m.jsx("div",{className:"mt-3 space-y-1.5",children:w.map(j=>m.jsx(Dx,{trail:j},j.id))}),S.trim()&&m.jsxs("div",{className:"mt-3",children:[m.jsx("div",{className:"mb-0.5 text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),m.jsx(Ox,{content:S})]})]},g)),u=v-1;continue}}return r}function RL({text:e,projectName:n,providerOverride:i,scope:s}){const[r,u]=q.useState(!1),d=q.useMemo(()=>ML(n,e,i,s),[n,e,i,s]);async function g(){try{await navigator.clipboard.writeText(d),u(!0),window.setTimeout(()=>u(!1),1500)}catch{}}return m.jsxs("div",{className:"group relative mt-3 rounded-md bg-bg-elevated/60 px-3 py-2 text-strong",children:[m.jsxs("div",{className:"flex items-center justify-between gap-2",children:[m.jsx("div",{className:"text-[10px] uppercase tracking-wider text-muted",children:"You"}),m.jsx("button",{type:"button",onClick:Xt(g),className:"inline-flex items-center gap-1 rounded border border-mono-800/70 bg-bg/60 px-1.5 py-0.5 text-[10px] text-secondary opacity-0 transition hover:border-strong hover:text-heading group-hover:opacity-100 focus:opacity-100","aria-label":"Copy as CLI command",title:d,children:r?m.jsxs(m.Fragment,{children:[m.jsx(C2,{className:"h-2.5 w-2.5 text-positive-400","aria-hidden":"true"}),"Copied"]}):m.jsxs(m.Fragment,{children:[m.jsx(TN,{className:"h-2.5 w-2.5","aria-hidden":"true"}),"Copy as CLI"]})})]}),m.jsx("div",{className:"whitespace-pre-wrap",children:e})]})}function ML(e,n,i,s){const r=["canonry","agent","ask",Ev(e),Ev(n)];return i&&r.push("--provider",i),s==="read-only"&&r.push("--scope","read-only"),r.join(" ")}function Ev(e){return`'${e.replace(/'/g,"'\\''")}'`}function BL(e,n,i){const s=[];for(const r of e.content){if(r.type!=="toolCall")continue;const u=r,d=n.get(u.id);s.push({id:u.id,name:u.name,args:u.arguments,startedAt:i,endedAt:d?.timestamp,isError:d?.isError,result:d?.content})}return s}function Dx({trail:e}){const[n,i]=q.useState(!1),s=e.endedAt===void 0,r=!s&&e.isError===!0,u=e.endedAt!=null?e.endedAt-e.startedAt:null,d=u==null||u<0?null:u<1e3?`${u}ms`:`${(u/1e3).toFixed(1)}s`,g=r?"border-negative-800/50":s?"border-positive-800/50":"border-mono-800/70",y=r?"bg-negative-950/20":s?"bg-positive-950/20":"bg-surface-hover";return m.jsxs("div",{className:`rounded-md border ${g} ${y} font-mono`,children:[m.jsxs("button",{type:"button",onClick:()=>i(v=>!v),className:"flex w-full items-center gap-2 px-2.5 py-1.5 text-left","aria-expanded":n,children:[m.jsx("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:s?m.jsx(E2,{className:"h-3 w-3 animate-spin text-positive-400","aria-hidden":"true"}):r?m.jsx(D2,{className:"h-3 w-3 text-negative-400","aria-hidden":"true"}):m.jsx(gA,{className:"h-3 w-3 text-muted","aria-hidden":"true"})}),m.jsx("span",{className:"text-[11px] font-semibold text-heading",children:e.name}),m.jsxs("span",{className:"ml-auto flex items-center gap-2 text-[10px] text-muted",children:[s?m.jsx("span",{className:"text-positive-400",children:"running…"}):m.jsxs(m.Fragment,{children:[m.jsx("span",{children:r?"failed":"ok"}),d&&m.jsx("span",{children:d})]}),m.jsx(Lf,{className:`h-3 w-3 transition-transform ${n?"rotate-90":""}`,"aria-hidden":"true"})]})]}),n&&m.jsxs("div",{className:"border-t border-default px-2.5 py-2 text-[11px] text-secondary",children:[m.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:"Args"}),m.jsx("pre",{className:"mb-2 overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:Tv(e.args)}),!s&&e.result!==void 0&&m.jsxs(m.Fragment,{children:[m.jsx("div",{className:"mb-1 text-[9px] uppercase tracking-wider text-faint",children:r?"Error":"Result"}),m.jsx("pre",{className:"overflow-x-auto whitespace-pre-wrap break-all text-[10px] text-neutral",children:Tv(e.result)})]})]})]})}function Tv(e){try{const n=typeof e=="string"?e:JSON.stringify(e,null,2);return n.length>2e3?`${n.slice(0,2e3)}
|
|
64
|
+
… (${n.length-2e3} more chars)`:n}catch{return String(e)}}function Ox({content:e}){return m.jsx("div",{className:"text-heading",children:m.jsx(L4,{components:{h1:n=>m.jsx("h1",{...n,className:"mt-3 mb-2 text-base font-semibold text-primary"}),h2:n=>m.jsx("h2",{...n,className:"mt-3 mb-2 text-sm font-semibold text-primary"}),h3:n=>m.jsx("h3",{...n,className:"mt-3 mb-1.5 text-sm font-semibold text-heading"}),h4:n=>m.jsx("h4",{...n,className:"mt-2 mb-1 text-xs font-semibold uppercase tracking-wide text-neutral"}),p:n=>m.jsx("p",{...n,className:"mb-2 leading-relaxed"}),ul:n=>m.jsx("ul",{...n,className:"mb-2 ml-4 list-disc space-y-1"}),ol:n=>m.jsx("ol",{...n,className:"mb-2 ml-4 list-decimal space-y-1"}),li:n=>m.jsx("li",{...n,className:"marker:text-mono-600"}),strong:n=>m.jsx("strong",{...n,className:"font-semibold text-primary"}),em:n=>m.jsx("em",{...n,className:"text-strong"}),code:({children:n,...i})=>m.jsx("code",{...i,className:"rounded bg-mono-800/70 px-1 py-0.5 font-mono text-[12px] text-positive-200",children:n}),pre:n=>m.jsx("pre",{...n,className:"mb-2 overflow-x-auto rounded-md border border-base bg-bg-elevated/70 p-3 font-mono text-xs text-strong"}),a:n=>m.jsx("a",{...n,className:"text-positive-400 underline decoration-positive-700 hover:decoration-positive-400",target:"_blank",rel:"noopener noreferrer"}),table:n=>m.jsx("div",{className:"mb-2 overflow-x-auto",children:m.jsx("table",{...n,className:"w-full border-collapse text-xs"})}),thead:n=>m.jsx("thead",{...n,className:"border-b border-base"}),th:n=>m.jsx("th",{...n,className:"px-2 py-1 text-left font-semibold text-neutral"}),tr:n=>m.jsx("tr",{...n,className:"border-b border-mono-900"}),td:n=>m.jsx("td",{...n,className:"px-2 py-1 text-strong"}),blockquote:n=>m.jsx("blockquote",{...n,className:"mb-2 border-l-2 border-strong pl-3 italic text-secondary"}),hr:()=>m.jsx("hr",{className:"my-3 border-base"})},children:e})})}function qL(){return m.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[m.jsx("div",{className:"text-[10px] uppercase tracking-wider text-positive-400",children:"Aero"}),m.jsxs("div",{className:"flex items-center gap-1","aria-label":"Aero is thinking",children:[m.jsx("span",{className:"aero-dot h-1.5 w-1.5 rounded-full bg-positive-400/80"}),m.jsx("span",{className:"aero-dot aero-dot-2 h-1.5 w-1.5 rounded-full bg-positive-400/60"}),m.jsx("span",{className:"aero-dot aero-dot-3 h-1.5 w-1.5 rounded-full bg-positive-400/40"})]})]})}function LL(){const e=Jv(),n=/^\/projects\/([^/]+)/.exec(e.pathname),i=n?decodeURIComponent(n[1]):null,s=on({...Iu({client:oe}),enabled:i!==null,staleTime:6e4});if(!i)return null;const r=s.data??[],u=r.find(d=>d.id===i)??r.find(d=>d.name===i);return u?m.jsx(_L,{projectName:u.name},u.name):null}const $L={project:"getApiV1ProjectsByName",google:"getApiV1ProjectsByNameGoogle",gsc:"getApiV1ProjectsByNameGoogleGsc",bing:"getApiV1ProjectsByNameBing",ga:"getApiV1ProjectsByNameGa",gbp:"getApiV1ProjectsByNameGbp",ads:"getApiV1ProjectsByNameAds",traffic:"getApiV1ProjectsByNameTraffic",discovery:"getApiV1ProjectsByNameDiscover",researchRuns:"getApiV1ProjectsByNameResearchRuns",technicalAeo:"getApiV1ProjectsByNameTechnicalAeo",runs:"getApiV1ProjectsByNameRuns"};function ha(e,n){const i=$L[n];return e.invalidateQueries({predicate:s=>{const r=s.queryKey[0];return typeof r?._id=="string"&&r._id.startsWith(i)}})}function Su(e,n,i){switch(e.invalidateQueries({queryKey:_0({client:oe})}),e.invalidateQueries({queryKey:Uo({client:oe})}),ha(e,"runs"),n){case Te["answer-visibility"]:return;case Te["backlink-extract"]:return;case Te["site-audit"]:ha(e,"technicalAeo");return;case Te["gsc-sync"]:case Te["inspect-sitemap"]:ha(e,"gsc");return;case Te["ga-sync"]:ha(e,"ga");return;case Te["traffic-sync"]:ha(e,"ga"),ha(e,"traffic");return;case Te["bing-inspect"]:case Te["bing-inspect-sitemap"]:ha(e,"bing");return;case Te["aeo-discover-seed"]:case Te["aeo-discover-probe"]:return;case Te["gbp-sync"]:ha(e,"gbp");return;case Te["ads-sync"]:ha(e,"ads");return;default:return n}}const Dv=[{label:"GitHub",href:"https://github.com/Canonry/canonry",Icon:MN},{label:"Docs",href:"https://github.com/Canonry/canonry/tree/main/docs",Icon:AN},{label:"Changelog",href:"https://github.com/Canonry/canonry/releases",Icon:ON}],Ov=e=>({label:e,state:"checking",detail:"Checking service health"}),IL={apiStatus:Ov("API"),workerStatus:Ov("Worker")};function UL(e){return e==="completed"?"positive":e==="partial"?"caution":"negative"}function PL(e){const n=al(e.kind);return e.status==="completed"?`${n} completed`:e.status==="partial"?`${n} completed with partial results`:e.status==="cancelled"?`${n} cancelled`:`${n} failed`}function VL(e,n){return e.error?`${n}: ${r0(e.error)}`:e.location?`${n} · ${e.location}`:n}function Rv(e,n,i){if(n)return n;const s=i.find(r=>r.id===e);return s?.displayName||s?.name||e}function GL(e,n){return[e.completed>0?`${e.completed} completed`:null,e.partial>0?`${e.partial} partial`:null,e.failed>0?`${e.failed} failed`:null,e.cancelled>0?`${e.cancelled} cancelled`:null,n>0?`${n} skipped at queue time`:null].filter(Boolean).join(", ")}function KL(e){return e.failed>0||e.cancelled>0?"negative":e.partial>0?"caution":"positive"}function HL(){const e=zi(),n=q.useSyncExternalStore(sx,Va,Va),i=Object.keys(n.runs).length>0||Object.keys(n.batches).length>0,s=on({...C0({client:oe}),enabled:i,staleTime:No,refetchInterval:3e3}),r=on({...Iu({client:oe}),enabled:i}),u=q.useRef({}),d=q.useCallback(()=>{s.refetch()},[s.refetch]);return q.useEffect(()=>{i&&d()},[i,d]),q.useEffect(()=>{if(!i||typeof window>"u")return;const g=()=>{document.visibilityState==="visible"&&d()};return window.addEventListener("focus",d),document.addEventListener("visibilitychange",g),()=>{window.removeEventListener("focus",d),document.removeEventListener("visibilitychange",g)}},[i,d]),q.useEffect(()=>{const g=s.data??[],y=r.data??[],v=Object.fromEntries(g.map(S=>[S.id,S])),w=Object.fromEntries(g.map(S=>[S.id,S.status]));for(const S of Object.values(n.runs)){const j=v[S.runId];if(!j||!_B(j.status)||(u.current[j.id]??S.lastAnnouncedStatus)===j.status)continue;const E=y.find(C=>C.id===j.projectId);if(E&&Su(e,j.kind,E.name),S.sourceAction==="run-all"){Lp(j.id);continue}const A=Rv(j.projectId,S.projectLabel,y);rn({title:PL(j),detail:VL(j,A),tone:UL(j.status),dedupeKey:`run:${j.id}`,dedupeMode:"replace",cta:{label:"View run",intent:"open-run-drawer",runId:j.id}}),Lp(j.id)}if(s.data!==void 0){const S=new Set(g.map(_=>_.id)),j=zB(Object.values(n.runs),S,Date.now(),CB);for(const _ of j){const E=y.find(A=>A.id===_.projectId);E&&Su(e,_.kind,E.name),_.sourceAction!=="run-all"&&rn({title:`${al(_.kind)} status unavailable`,detail:Rv(_.projectId,_.projectLabel,y),tone:"neutral",dedupeKey:`run-stale:${_.runId}`,dedupeMode:"replace"}),Lp(_.runId)}}for(const S of Object.values(n.batches)){const j=EB(S.runIds,v);j.finished&&(rn({title:"Run-all batch finished",detail:GL(j,S.skippedCount),tone:KL(j),dedupeKey:`batch:${S.batchId}`,dedupeMode:"replace",cta:{label:"View runs",intent:"go-to-runs"}}),AB(S.batchId))}u.current=w},[r.data,s.data,n,e]),null}function QL(){const{account:e,isAdmin:n}=hl(),i=wl(),s=q.useMemo(()=>b2(),[]),r=q.useMemo(S6,[]),u=q.useMemo(j6,[]),{dashboard:d,isLoading:g,refetch:y}=Ku(void 0,{includeSettings:!s}),S=O0(!i,i?.health).data??i?.health??IL,j=Jv(),{runId:_,evidenceId:E,closeDrawer:A}=R0(),[C,O]=q.useState(!1),[L,G]=q.useState(()=>{if(typeof window>"u")return!1;try{return window.localStorage.getItem("canonry:sidebarHidden")==="true"}catch{return!1}}),[P,H]=q.useState(()=>{if(typeof window>"u")return null;try{return window.localStorage.getItem("canonry:dismissedUpdateVersion")}catch{return null}}),[ae]=q.useState(()=>typeof window>"u"?null:new URLSearchParams(window.location.search).get("force-update")),R=ae?{current:S.apiStatus.version??"0.0.0",latest:ae,url:"https://www.npmjs.com/package/@canonry/canonry",upgradeCommand:"npm install -g @canonry/canonry"}:S.apiStatus.updateAvailable,$=u&&R&&R.latest!==P,fe=()=>{if(R){try{window.localStorage.setItem("canonry:dismissedUpdateVersion",R.latest)}catch{}H(R.latest)}},ue=()=>{const M=!L;try{M?window.localStorage.setItem("canonry:sidebarHidden","true"):window.localStorage.removeItem("canonry:sidebarHidden")}catch{}G(M)},me=gL(_),pe=me.data??null,Ge=me.isLoading;q.useEffect(()=>{pe&&pe.status!=="running"&&pe.status!=="queued"&&y()},[pe?.status,y]),q.useEffect(()=>{O(!1)},[j.pathname]),q.useEffect(()=>{if(typeof window>"u"||!_&&!E)return;const M=re=>{re.key==="Escape"&&A()};return window.addEventListener("keydown",M),()=>{window.removeEventListener("keydown",M)}},[_,E,A]);const De=d??i?.dashboard??null,Ne=j.pathname==="/setup"&&De!==null&&De.portfolioOverview.projects.length===0,K=Ne?"app-shell-focus":L?"app-shell-sidebar-hidden":"",ee=_?(De?Pq(De,_):void 0)??(pe?Gu(pe,De?.projects.find(M=>M.project.id===pe.projectId)?.project.displayName??De?.projects.find(M=>M.project.id===pe.projectId)?.project.name??"Unknown project"):void 0):void 0,he=q.useMemo(()=>Bq(j.pathname,De),[j.pathname,De]),{commandCenter:Ae}=pL(he),le=q.useMemo(()=>{if(E)return Gq(Ae,De,E)},[E,Ae,De]),Ye=(()=>{const M=j.pathname;if(M==="/")return"Portfolio";if(M==="/projects")return"Projects";if(M==="/runs")return"Runs";if(M==="/history")return"History";if(M==="/settings")return"Settings";if(M==="/setup")return"Setup";if(M==="/backlinks")return"Backlink data";if(M==="/traffic"||M.startsWith("/traffic/"))return"Traffic sources";if(M.startsWith("/projects/")){const ne=M.split("/").filter(Boolean)[1];if(ne&&De){const ie=De.projects.find(se=>se.project.id===ne);if(ie)return ie.project.name}return"Project"}return"Not found"})();if(q.useEffect(()=>{const M=gM(s?.theme);if(!M)return;const re=document.createElement("link");return re.rel="stylesheet",re.href=M,document.head.appendChild(re),()=>{document.head.removeChild(re)}},[s]),s){const M=!s.views||s.views.includes(cM(j.pathname));return m.jsxs("div",{className:"app-shell app-shell-embed","data-theme":fM(s.theme),style:hM(s.theme),children:[m.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),m.jsx("main",{id:"content",className:"page-shell",children:M?m.jsx(Fp,{}):m.jsx("div",{className:"embed-view-unavailable",role:"status",children:"This view is not available in embed mode."})})]})}return m.jsxs("div",{className:`app-shell ${K}`,children:[m.jsx("a",{className:"skip-link",href:"#content",children:"Skip to content"}),!Ne&&!L&&m.jsxs("aside",{id:"desktop-sidebar",className:"sidebar","aria-label":"Primary navigation",children:[m.jsx("div",{className:"sidebar-brand",children:m.jsx(xv,{version:S.apiStatus.version,updateAvailable:$?R:null,onDismissUpdate:fe})}),m.jsxs("nav",{className:"sidebar-nav",children:[m.jsxs(Xe,{to:"/",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(UN,{className:"sidebar-icon"}),m.jsx("span",{children:"Portfolio"})]}),m.jsxs(Xe,{to:"/projects",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[m.jsx(qN,{className:"sidebar-icon"}),m.jsx("span",{children:"Projects"})]}),m.jsxs(Xe,{to:"/runs",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(nA,{className:"sidebar-icon"}),m.jsx("span",{children:"Runs"})]}),m.jsxs(Xe,{to:"/history",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx($N,{className:"sidebar-icon"}),m.jsx("span",{children:"History"})]}),m.jsxs(Xe,{to:"/traffic",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!1},children:[m.jsx(sA,{className:"sidebar-icon"}),m.jsx("span",{children:"Traffic sources"})]}),m.jsxs(Xe,{to:"/backlinks",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(VN,{className:"sidebar-icon"}),m.jsx("span",{children:"Backlink data"})]}),n&&m.jsxs(Xe,{to:"/settings",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(pA,{className:"sidebar-icon"}),m.jsx("span",{children:"Settings"})]}),g?m.jsxs(m.Fragment,{children:[m.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),[1,2,3].map(M=>m.jsxs("div",{className:"sidebar-skeleton-item",children:[m.jsx("span",{className:"skeleton-circle size-2"}),m.jsx("span",{className:"skeleton-text flex-1",style:{width:`${50+M*15}%`}})]},M))]}):De&&De.projects.length>0?m.jsxs(m.Fragment,{children:[m.jsx("p",{className:"sidebar-section-title",children:"Tracked projects"}),De.projects.map(M=>{const re=M.visibilitySummary.tone;return m.jsxs(Xe,{to:"/projects/$projectName",params:{projectName:M.project.name},className:"sidebar-project",activeProps:{className:"sidebar-project sidebar-project-active"},children:[m.jsx("span",{className:`sidebar-dot sidebar-dot-${re}`}),m.jsx("span",{children:M.project.displayName||M.project.name})]},M.project.id)})]}):g?null:m.jsxs(m.Fragment,{children:[m.jsx("p",{className:"sidebar-section-title",children:"Resources"}),n&&m.jsxs(Xe,{to:"/setup",className:"sidebar-link",activeProps:{className:"sidebar-link sidebar-link-active"},activeOptions:{exact:!0},children:[m.jsx(lA,{className:"sidebar-icon"}),m.jsx("span",{children:"Setup"})]})]})]}),e&&m.jsxs("div",{className:"sidebar-account",children:[m.jsxs("div",{className:"sidebar-account-identity",children:[m.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?m.jsx("span",{className:"sidebar-account-role",children:"View only"}):null]}),m.jsx(Ee,{type:"button",variant:"ghost",size:"sm",onClick:Xt(async()=>{await Fy(),window.location.reload()}),children:"Sign out"})]}),r?m.jsx("div",{className:"sidebar-footer",children:Dv.map(({label:M,href:re,Icon:ne})=>m.jsx("a",{className:"sidebar-footer-icon",href:re,target:"_blank",rel:"noopener noreferrer",title:M,"aria-label":M,children:m.jsx(ne,{className:"size-4"})},re))}):null]}),m.jsxs("div",{className:"main-area",children:[m.jsxs("header",{className:"topbar",children:[m.jsxs("div",{className:"topbar-left",children:[!Ne&&m.jsx(Ee,{className:"sidebar-privacy-toggle",variant:"ghost",size:"icon",type:"button","aria-label":L?"Show sidebar":"Hide sidebar","aria-controls":L?void 0:"desktop-sidebar","aria-expanded":!L,title:L?"Show sidebar":"Hide sidebar",onClick:ue,children:L?m.jsx(eA,{className:"size-4"}):m.jsx(JN,{className:"size-4"})}),m.jsx("div",{className:"topbar-brand-mobile",children:m.jsx(xv,{compact:!0})}),m.jsxs("nav",{className:"breadcrumb","aria-label":"Breadcrumb",children:[m.jsx(Xe,{to:"/",children:"Home"}),m.jsx(Lf,{className:"breadcrumb-sep size-3"}),m.jsx("span",{className:"breadcrumb-current",children:Ye})]})]}),m.jsxs("div",{className:"topbar-actions",children:[m.jsx(kL,{}),m.jsxs("div",{className:"health-pill-row",children:[m.jsxs("span",{className:`health-pill health-pill-${S.apiStatus.state}`,title:Do(S.apiStatus),children:["API ",S.apiStatus.state==="ok"?"ok":S.apiStatus.state]}),m.jsxs("span",{className:`health-pill health-pill-${S.workerStatus.state}`,title:Do(S.workerStatus),children:["Worker ",S.workerStatus.state==="ok"?"ok":S.workerStatus.state]})]}),m.jsxs(Ee,{className:"nav-toggle",variant:"secondary",size:"icon",type:"button","aria-expanded":C,"aria-controls":"mobile-nav",onClick:()=>O(M=>!M),children:[m.jsx(ZN,{className:"size-4"}),m.jsx("span",{className:"sr-only",children:"Open navigation"})]})]})]}),m.jsxs("div",{id:"mobile-nav",className:`mobile-nav ${C?"mobile-nav-open":""}`,children:[m.jsxs(Ee,{className:"mobile-nav-close",variant:"ghost",size:"icon",type:"button",onClick:()=>O(!1),children:[m.jsx(Bo,{className:"size-5"}),m.jsx("span",{className:"sr-only",children:"Close navigation"})]}),m.jsx(Xe,{to:"/",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Portfolio"}),m.jsx(Xe,{to:"/projects",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Projects"}),m.jsx(Xe,{to:"/runs",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Runs"}),m.jsx(Xe,{to:"/history",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"History"}),m.jsx(Xe,{to:"/traffic",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!1},children:"Traffic sources"}),m.jsx(Xe,{to:"/backlinks",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Backlink data"}),n&&m.jsx(Xe,{to:"/settings",className:"mobile-nav-link",activeProps:{className:"mobile-nav-link mobile-nav-link-active"},activeOptions:{exact:!0},children:"Settings"}),De&&De.projects.length>0?m.jsxs("div",{className:"mobile-nav-section",children:[m.jsx("p",{className:"mobile-nav-section-title",children:"Tracked projects"}),De.projects.map(M=>m.jsx(Xe,{to:"/projects/$projectName",params:{projectName:M.project.name},className:"mobile-nav-link",children:M.project.name},M.project.id))]}):null,e&&m.jsxs("div",{className:"mobile-nav-section",children:[m.jsx("p",{className:"mobile-nav-section-title",children:"Signed in"}),m.jsxs("div",{className:"sidebar-account",children:[m.jsxs("div",{className:"sidebar-account-identity",children:[m.jsx("span",{className:"sidebar-account-name",children:e.name}),e.role==="viewer"?m.jsx("span",{className:"sidebar-account-role",children:"View only"}):null]}),m.jsx(Ee,{type:"button",variant:"ghost",size:"sm","data-testid":"mobile-sign-out",onClick:Xt(async()=>{await Fy(),window.location.reload()}),children:"Sign out"})]})]})]}),m.jsx("main",{id:"content",className:"page-shell",children:g&&!i?m.jsxs("div",{className:"page-skeleton",children:[m.jsxs("div",{className:"page-skeleton-header",children:[m.jsx("div",{className:"skeleton-text h-6 w-40"}),m.jsx("div",{className:"skeleton-text-sm w-72"})]}),m.jsx("div",{className:"page-skeleton-grid",children:[1,2,3].map(M=>m.jsxs("div",{className:"page-skeleton-card",children:[m.jsx("div",{className:"skeleton-text w-24"}),m.jsx("div",{className:"skeleton-text w-full"}),m.jsx("div",{className:"skeleton-text-sm w-3/4"})]},M))}),m.jsx("div",{className:"page-skeleton-grid",style:{gridTemplateColumns:"1fr 1fr"},children:[1,2].map(M=>m.jsxs("div",{className:"page-skeleton-card",children:[m.jsx("div",{className:"skeleton-text w-20"}),m.jsx("div",{className:"space-y-2",children:[1,2,3].map(re=>m.jsx("div",{className:"skeleton-text-sm w-full"},re))})]},M))})]}):m.jsx(Fp,{})}),m.jsxs("footer",{className:"footer",children:[m.jsxs("span",{className:"footer-brand",children:[m.jsx("span",{children:m.jsx("a",{href:"https://canonry.ai",children:"Canonry"})}),S.apiStatus.version&&S.apiStatus.version!=="unknown"?m.jsxs("span",{className:"footer-version",children:["v",S.apiStatus.version]}):null]}),r?m.jsx("div",{className:"footer-links",children:Dv.map(({label:M,href:re,Icon:ne})=>m.jsx("a",{href:re,target:"_blank",rel:"noopener noreferrer",title:M,"aria-label":M,className:"footer-icon",children:m.jsx(ne,{className:"size-3.5"})},re))}):null]})]}),_&&!ee&&Ge?m.jsx(Ip,{open:!0,title:"Loading run details",subtitle:"Fetching the durable run record",onClose:A,children:m.jsx("p",{className:"text-sm text-muted",role:"status",children:"Loading run details…"})}):null,_&&!ee&&me.isError?m.jsx(Ip,{open:!0,title:"Run unavailable",subtitle:"The run could not be loaded",onClose:A,children:m.jsx("p",{className:"text-sm text-negative",children:me.error instanceof Error?me.error.message:"Run details are unavailable."})}):null,ee?m.jsxs(Ip,{open:!0,title:ee.summary,subtitle:`${ee.projectName} · ${ee.kindLabel}`,onClose:A,children:[m.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-1 text-sm",children:[m.jsx(D0,{status:ee.status}),m.jsx("span",{className:"text-secondary",children:ee.startedAt}),m.jsx("span",{className:"text-muted",children:ee.duration}),m.jsx("span",{className:"text-faint",children:ee.triggerLabel})]}),ee.status==="failed"&&ee.statusDetail&&m.jsx("p",{className:"mt-2 text-sm text-negative",children:ee.statusDetail}),m.jsxs("div",{className:"mt-4",children:[m.jsx("p",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted mb-2",children:"Activity Log"}),Ge?m.jsx("p",{className:"text-sm text-muted",children:"Loading run details..."}):pe?.snapshots&&pe.snapshots.length>0?m.jsxs("div",{className:"space-y-2",children:[pe.snapshots.map(M=>m.jsxs("div",{className:"rounded-lg border border-default bg-surface p-3",children:[m.jsxs("div",{className:"flex items-center justify-between gap-2 mb-1",children:[m.jsx("p",{className:"text-sm font-medium text-strong truncate",children:M.query??"Unknown query"}),m.jsxs("div",{className:"flex items-center gap-1.5",children:[m.jsx(Sq,{provider:M.provider}),m.jsx(xx,{variant:M.citationState===vu.cited?"success":"neutral",children:M.citationState})]})]}),M.model&&m.jsx("p",{className:"text-[11px] text-muted font-mono",children:M.model}),M.citedDomains.length>0&&m.jsxs("p",{className:"text-xs text-muted mt-1",children:[m.jsx("span",{className:"text-secondary",children:"Sources:"})," ",M.citedDomains.join(", ")]}),M.competitorOverlap.length>0&&m.jsxs("p",{className:"text-xs text-negative-400/80 mt-0.5",children:["Competitor cited: ",M.competitorOverlap.join(", ")]}),M.groundingSources&&M.groundingSources.length>0&&m.jsxs("details",{className:"mt-2",children:[m.jsxs("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:[M.groundingSources.length," grounding source",M.groundingSources.length!==1?"s":""]}),m.jsx("ul",{className:"mt-1 space-y-0.5",children:M.groundingSources.map((re,ne)=>{const ie=xf(re.uri),se=re.title||re.uri;return m.jsx("li",{className:"text-xs text-muted truncate",children:ie?m.jsx("a",{href:ie,target:"_blank",rel:"noopener noreferrer",className:"hover:text-neutral",children:se}):m.jsx("span",{children:se})},ne)})})]}),M.answerText&&m.jsxs("details",{className:"mt-1",children:[m.jsx("summary",{className:"text-xs text-muted cursor-pointer hover:text-secondary",children:"Answer preview"}),m.jsx("p",{className:"mt-1 text-xs text-secondary leading-relaxed whitespace-pre-wrap",children:M.answerText})]})]},M.id)),pe.status==="running"&&m.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[m.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Running remaining queries..."]})]}):pe&&pe.status==="running"?m.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[m.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-caution-500 animate-pulse"}),"Waiting for first query result..."]}):pe&&pe.status==="queued"?m.jsxs("div",{className:"flex items-center gap-2 p-3 text-sm text-muted",children:[m.jsx("span",{className:"inline-block h-2 w-2 rounded-full bg-mono-500 animate-pulse"}),"Run queued, waiting for execution slot..."]}):pe&&pe.error?m.jsxs("div",{className:"rounded-lg border border-negative-800/40 bg-negative-950/20 p-3",children:[m.jsx("p",{className:"text-sm font-medium text-negative mb-2",children:"Run failed"}),m.jsx("pre",{className:"max-h-48 overflow-y-auto whitespace-pre-wrap break-words font-mono text-xs leading-5 text-negative",children:oM(pe.error)})]}):m.jsx("p",{className:"text-sm text-muted",children:"No snapshot data available."})]})]}):null,le?m.jsx(Oq,{evidence:le.evidence,project:le.project,onClose:A}):null,m.jsx(HL,{}),m.jsx(vL,{}),m.jsx(LL,{})]})}class ZL extends q.Component{state={error:null};static getDerivedStateFromError(n){return{error:n}}componentDidCatch(n,i){console.error("[ErrorBoundary]",n,i.componentStack)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?m.jsx("div",{className:"page-container",children:m.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 py-20 text-center",children:[m.jsx("div",{className:"rounded-full bg-negative-950/40 p-3",children:m.jsx(D2,{className:"size-6 text-negative-400"})}),m.jsx("h2",{className:"text-lg font-semibold text-heading",children:"Something went wrong"}),m.jsx("p",{className:"text-sm text-secondary max-w-md",children:this.state.error.message||"An unexpected error occurred while rendering this page."}),m.jsxs("div",{className:"flex gap-3 mt-2",children:[m.jsxs(Ee,{variant:"secondary",size:"sm",onClick:this.handleReset,children:[m.jsx(T2,{className:"size-3.5 mr-1.5"}),"Try again"]}),m.jsx(Ee,{variant:"secondary",size:"sm",onClick:()=>{const n=window.__CANONRY_CONFIG__?.basePath?.replace(/\/$/,"")??"";window.location.href=n||"/"},children:"Go home"})]})]})}):this.props.children}}const Un=q.forwardRef(({className:e,...n},i)=>m.jsx("div",{ref:i,className:Qn("rounded-xl border border-base bg-bg/75 shadow-[0_0_0_1px_var(--color-shadow-hairline)]",e),...n}));Un.displayName="Card";const il=q.forwardRef(({className:e,...n},i)=>m.jsx("div",{ref:i,className:Qn("flex flex-col gap-1.5 p-5",e),...n}));il.displayName="CardHeader";const sl=q.forwardRef(({className:e,...n},i)=>m.jsx("h3",{ref:i,className:Qn("font-medium tracking-tight text-primary",e),...n}));sl.displayName="CardTitle";const ol=q.forwardRef(({className:e,...n},i)=>m.jsx("p",{ref:i,className:Qn("text-sm text-muted",e),...n}));ol.displayName="CardDescription";const go=q.forwardRef(({className:e,...n},i)=>m.jsx("div",{ref:i,className:Qn("p-5 pt-0",e),...n}));go.displayName="CardContent";function FL({points:e,tone:n}){const i=q.useId();if(e.length===0)return null;const s=42,r=132,u=5,d=Math.min(...e),y=Math.max(...e)-d||1,v=r-u*2,w=s-u*2,S=e.map((j,_)=>{const E=u+_/Math.max(e.length-1,1)*v,A=u+(1-(j-d)/y)*w;return`${E},${A}`}).join(" ");return m.jsxs("svg",{className:`sparkline sparkline-${n}`,viewBox:`0 0 ${r} ${s}`,"aria-hidden":"true",children:[m.jsx("defs",{children:m.jsx("clipPath",{id:i,children:m.jsx("rect",{x:u,y:u,width:v,height:w,rx:"8"})})}),m.jsx("line",{className:"sparkline-guide",x1:u,x2:r-u,y1:s-u,y2:s-u}),m.jsx("polyline",{clipPath:`url(#${i})`,points:S,vectorEffect:"non-scaling-stroke"})]})}function YL({project:e}){return m.jsxs(Xe,{to:"/projects/$projectName",params:{projectName:e.project.name},className:"project-row cursor-pointer",children:[m.jsx("div",{className:"project-row-chart",children:m.jsx(FL,{points:e.trend,tone:nx(e.lastRun.status)})}),m.jsxs("div",{className:"project-row-primary",children:[m.jsxs("div",{children:[m.jsx("p",{className:"project-name",children:e.project.name}),m.jsx("p",{className:"project-domain",children:e.project.canonicalDomain})]}),m.jsx("p",{className:"project-insight",children:e.insight})]}),m.jsx("div",{className:"project-row-stat",children:m.jsxs("div",{className:"metric-inline-block",children:[m.jsx("p",{className:"metric-inline-label",children:"Mentioned"}),m.jsx("p",{className:`metric-inline-value ${e.mentionTone==="caution"?"text-caution-400":""}`,children:e.mentionScore}),m.jsx("p",{className:"metric-inline-delta",children:e.mentionDelta}),e.providerCoverage&&m.jsx("p",{className:"text-[13px] font-medium text-caution",children:e.providerCoverage})]})}),m.jsx("div",{className:"project-row-stat",children:m.jsxs("div",{className:"metric-inline-block",children:[m.jsx("p",{className:"metric-inline-label",children:"Competitor Pressure"}),m.jsx("p",{className:"metric-inline-value",children:e.competitorPressureLabel})]})}),m.jsx("span",{className:"project-row-link",children:m.jsx(Lf,{className:"h-4 w-4 text-muted"})})]})}function XL(){const e=wl(),{dashboard:n,isLoading:i}=Ku(),s=n??e?.dashboard;if(!s||i)return m.jsxs("div",{className:"page-skeleton",children:[m.jsxs("div",{className:"page-skeleton-header",children:[m.jsx("div",{className:"skeleton-text h-6 w-32"}),m.jsx("div",{className:"skeleton-text-sm w-64"})]}),m.jsx("div",{className:"space-y-3",children:[1,2,3].map(w=>m.jsxs("div",{className:"rounded-xl border border-default bg-surface p-4 flex items-center gap-4",children:[m.jsxs("div",{className:"flex-1 space-y-2",children:[m.jsx("div",{className:"skeleton-text w-36"}),m.jsx("div",{className:"skeleton-text-sm w-48"})]}),m.jsx("div",{className:"skeleton-text w-16"}),m.jsx("div",{className:"skeleton-text w-16"}),m.jsx("div",{className:"skeleton h-8 w-20 rounded"})]},w))})]});const r=s.portfolioOverview,g=O0(!e,e?.health).data??e?.health??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},y=bB(r.systemHealth,g,s.settings),{openRun:v}=R0();return m.jsxs("div",{className:"page-container",children:[m.jsxs("div",{className:"page-header",children:[m.jsxs("div",{className:"page-header-left",children:[m.jsx("h1",{className:"page-title",children:"Portfolio"}),m.jsx("p",{className:"page-subtitle",children:"Visibility across all projects."})]}),m.jsx("div",{className:"page-header-right",children:m.jsx("p",{className:"text-[11px] text-faint",children:r.lastUpdatedAt})})]}),r.projects.length>0?m.jsx("div",{className:"project-list project-list-scrollable",children:r.projects.map(w=>m.jsx(YL,{project:w},w.project.id))}):m.jsxs(Un,{className:"surface-card empty-card",children:[m.jsx("h3",{children:r.emptyState?.title??"No projects yet"}),m.jsx("p",{className:"supporting-copy",children:r.emptyState?.detail}),m.jsx(Ee,{size:"sm",asChild:!0,children:m.jsx(Xe,{to:r.emptyState?.ctaHref==="/setup"||!r.emptyState?.ctaHref?"/setup":"/",children:r.emptyState?.ctaLabel??"Launch setup"})})]}),m.jsxs("div",{className:"overview-secondary-grid",children:[r.attentionItems.length>0&&m.jsxs("section",{className:"overview-secondary-section",children:[m.jsx("div",{className:"section-head section-head-inline",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Needs attention"}),m.jsx("h2",{className:"section-title-sm",children:"What changed"})]})}),m.jsx("div",{className:"attention-list attention-list-scrollable",children:r.attentionItems.map(w=>w.href?m.jsxs(Xe,{to:w.href,className:`attention-item attention-item-${w.tone}`,children:[m.jsxs("div",{children:[m.jsx("p",{className:"attention-title",children:w.title}),m.jsx("p",{className:"attention-detail",children:w.detail})]}),w.actionLabel&&m.jsx("span",{className:"attention-action",children:w.actionLabel})]},w.id):m.jsxs("div",{className:`attention-item attention-item-static attention-item-${w.tone}`,children:[m.jsxs("div",{children:[m.jsx("p",{className:"attention-title",children:w.title}),m.jsx("p",{className:"attention-detail",children:w.detail})]}),w.actionLabel&&m.jsx("span",{className:"attention-action",children:w.actionLabel})]},w.id))})]}),m.jsxs("section",{className:"overview-secondary-section",children:[m.jsx("div",{className:"section-head section-head-inline",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Recent runs"}),m.jsx("h2",{className:"section-title-sm",children:"Activity"})]})}),m.jsx("div",{className:"compact-stack compact-stack-scrollable",children:r.recentRuns.length>0?r.recentRuns.map(w=>m.jsxs("button",{className:"compact-run",type:"button",onClick:()=>v(w.id),children:[m.jsxs("div",{children:[m.jsx("p",{className:"compact-run-title",children:w.projectName}),m.jsx("p",{className:"compact-run-detail",children:w.summary})]}),m.jsx(D0,{status:w.status})]},w.id)):m.jsx("p",{className:"supporting-copy",children:"Run history appears here after the first launch."})})]})]}),m.jsxs("section",{className:"page-section",children:[m.jsx("div",{className:"section-head section-head-inline",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"System health"}),m.jsx("h2",{className:"section-title-sm",children:"Infrastructure"})]})}),m.jsx("div",{className:"divide-y divide-default border-y border-default",children:y.map(w=>{const S=w.id==="api"?g.apiStatus:w.id==="worker"?g.workerStatus:void 0,j=S?S.state==="ok"?void 0:Do(S):w.tone==="positive"?void 0:w.meta;return m.jsxs("div",{className:"flex items-start justify-between gap-4 py-3",children:[m.jsxs("div",{children:[m.jsx("p",{className:"text-sm font-medium text-heading",children:w.label}),j&&m.jsx("p",{className:"mt-1 text-sm text-secondary",children:j})]}),m.jsx(vn,{tone:w.tone,title:S?Do(S):w.meta,children:w.detail})]},w.id)})})]})]})}const L0=Symbol.for("yaml.alias"),wf=Symbol.for("yaml.document"),Ni=Symbol.for("yaml.map"),Rx=Symbol.for("yaml.pair"),ga=Symbol.for("yaml.scalar"),Po=Symbol.for("yaml.seq"),Kn=Symbol.for("yaml.node.type"),xs=e=>!!e&&typeof e=="object"&&e[Kn]===L0,Hu=e=>!!e&&typeof e=="object"&&e[Kn]===wf,Sl=e=>!!e&&typeof e=="object"&&e[Kn]===Ni,zt=e=>!!e&&typeof e=="object"&&e[Kn]===Rx,ut=e=>!!e&&typeof e=="object"&&e[Kn]===ga,jl=e=>!!e&&typeof e=="object"&&e[Kn]===Po;function _t(e){if(e&&typeof e=="object")switch(e[Kn]){case Ni:case Po:return!0}return!1}function Ct(e){if(e&&typeof e=="object")switch(e[Kn]){case L0:case Ni:case ga:case Po:return!0}return!1}const Mx=e=>(ut(e)||_t(e))&&!!e.anchor,rs=Symbol("break visit"),JL=Symbol("skip children"),rl=Symbol("remove node");function Vo(e,n){const i=WL(n);Hu(e)?yo(null,e.contents,i,Object.freeze([e]))===rl&&(e.contents=null):yo(null,e,i,Object.freeze([]))}Vo.BREAK=rs;Vo.SKIP=JL;Vo.REMOVE=rl;function yo(e,n,i,s){const r=e$(e,n,i,s);if(Ct(r)||zt(r))return t$(e,s,r),yo(e,r,i,s);if(typeof r!="symbol"){if(_t(n)){s=Object.freeze(s.concat(n));for(let u=0;u<n.items.length;++u){const d=yo(u,n.items[u],i,s);if(typeof d=="number")u=d-1;else{if(d===rs)return rs;d===rl&&(n.items.splice(u,1),u-=1)}}}else if(zt(n)){s=Object.freeze(s.concat(n));const u=yo("key",n.key,i,s);if(u===rs)return rs;u===rl&&(n.key=null);const d=yo("value",n.value,i,s);if(d===rs)return rs;d===rl&&(n.value=null)}}return r}function WL(e){return typeof e=="object"&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function e$(e,n,i,s){if(typeof i=="function")return i(e,n,s);if(Sl(n))return i.Map?.(e,n,s);if(jl(n))return i.Seq?.(e,n,s);if(zt(n))return i.Pair?.(e,n,s);if(ut(n))return i.Scalar?.(e,n,s);if(xs(n))return i.Alias?.(e,n,s)}function t$(e,n,i){const s=n[n.length-1];if(_t(s))s.items[e]=i;else if(zt(s))e==="key"?s.key=i:s.value=i;else if(Hu(s))s.contents=i;else{const r=xs(s)?"alias":"scalar";throw new Error(`Cannot replace node with ${r} parent`)}}const n$={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},a$=e=>e.replace(/[!,[\]{}]/g,n=>n$[n]);class an{constructor(n,i){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},an.defaultYaml,n),this.tags=Object.assign({},an.defaultTags,i)}clone(){const n=new an(this.yaml,this.tags);return n.docStart=this.docStart,n}atDocument(){const n=new an(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:an.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},an.defaultTags);break}return n}add(n,i){this.atNextDocument&&(this.yaml={explicit:an.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},an.defaultTags),this.atNextDocument=!1);const s=n.trim().split(/[ \t]+/),r=s.shift();switch(r){case"%TAG":{if(s.length!==2&&(i(0,"%TAG directive should contain exactly two parts"),s.length<2))return!1;const[u,d]=s;return this.tags[u]=d,!0}case"%YAML":{if(this.yaml.explicit=!0,s.length!==1)return i(0,"%YAML directive should contain exactly one part"),!1;const[u]=s;if(u==="1.1"||u==="1.2")return this.yaml.version=u,!0;{const d=/^\d+\.\d+$/.test(u);return i(6,`Unsupported YAML version ${u}`,d),!1}}default:return i(0,`Unknown directive ${r}`,!0),!1}}tagName(n,i){if(n==="!")return"!";if(n[0]!=="!")return i(`Not a valid tag: ${n}`),null;if(n[1]==="<"){const d=n.slice(2,-1);return d==="!"||d==="!!"?(i(`Verbatim tags aren't resolved, so ${n} is invalid.`),null):(n[n.length-1]!==">"&&i("Verbatim tags must end with a >"),d)}const[,s,r]=n.match(/^(.*!)([^!]*)$/s);r||i(`The ${n} tag has no suffix`);const u=this.tags[s];if(u)try{return u+decodeURIComponent(r)}catch(d){return i(String(d)),null}return s==="!"?n:(i(`Could not resolve tag: ${n}`),null)}tagString(n){for(const[i,s]of Object.entries(this.tags))if(n.startsWith(s))return i+a$(n.substring(s.length));return n[0]==="!"?n:`!<${n}>`}toString(n){const i=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],s=Object.entries(this.tags);let r;if(n&&s.length>0&&Ct(n.contents)){const u={};Vo(n.contents,(d,g)=>{Ct(g)&&g.tag&&(u[g.tag]=!0)}),r=Object.keys(u)}else r=[];for(const[u,d]of s)u==="!!"&&d==="tag:yaml.org,2002:"||(!n||r.some(g=>g.startsWith(d)))&&i.push(`%TAG ${u} ${d}`);return i.join(`
|
|
65
|
+
`)}}an.defaultYaml={explicit:!1,version:"1.2"};an.defaultTags={"!!":"tag:yaml.org,2002:"};function Bx(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){const i=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw new Error(i)}return!0}function qx(e){const n=new Set;return Vo(e,{Value(i,s){s.anchor&&n.add(s.anchor)}}),n}function Lx(e,n){for(let i=1;;++i){const s=`${e}${i}`;if(!n.has(s))return s}}function i$(e,n){const i=[],s=new Map;let r=null;return{onAnchor:u=>{i.push(u),r??(r=qx(e));const d=Lx(n,r);return r.add(d),d},setAnchors:()=>{for(const u of i){const d=s.get(u);if(typeof d=="object"&&d.anchor&&(ut(d.node)||_t(d.node)))d.node.anchor=d.anchor;else{const g=new Error("Failed to resolve repeated object (this should not happen)");throw g.source=u,g}}},sourceObjects:s}}function bo(e,n,i,s){if(s&&typeof s=="object")if(Array.isArray(s))for(let r=0,u=s.length;r<u;++r){const d=s[r],g=bo(e,s,String(r),d);g===void 0?delete s[r]:g!==d&&(s[r]=g)}else if(s instanceof Map)for(const r of Array.from(s.keys())){const u=s.get(r),d=bo(e,s,r,u);d===void 0?s.delete(r):d!==u&&s.set(r,d)}else if(s instanceof Set)for(const r of Array.from(s)){const u=bo(e,s,r,r);u===void 0?s.delete(r):u!==r&&(s.delete(r),s.add(u))}else for(const[r,u]of Object.entries(s)){const d=bo(e,s,r,u);d===void 0?delete s[r]:d!==u&&(s[r]=d)}return e.call(n,i,s)}function Vn(e,n,i){if(Array.isArray(e))return e.map((s,r)=>Vn(s,String(r),i));if(e&&typeof e.toJSON=="function"){if(!i||!Mx(e))return e.toJSON(n,i);const s={aliasCount:0,count:1,res:void 0};i.anchors.set(e,s),i.onCreate=u=>{s.res=u,delete i.onCreate};const r=e.toJSON(n,i);return i.onCreate&&i.onCreate(r),r}return typeof e=="bigint"&&!i?.keep?Number(e):e}class $0{constructor(n){Object.defineProperty(this,Kn,{value:n})}clone(){const n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(n.range=this.range.slice()),n}toJS(n,{mapAsMap:i,maxAliasCount:s,onAnchor:r,reviver:u}={}){if(!Hu(n))throw new TypeError("A document argument is required");const d={anchors:new Map,doc:n,keep:!0,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof s=="number"?s:100},g=Vn(this,"",d);if(typeof r=="function")for(const{count:y,res:v}of d.anchors.values())r(v,y);return typeof u=="function"?bo(u,{"":g},"",g):g}}class I0 extends $0{constructor(n){super(L0),this.source=n,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(n,i){let s;i?.aliasResolveCache?s=i.aliasResolveCache:(s=[],Vo(n,{Node:(u,d)=>{(xs(d)||Mx(d))&&s.push(d)}}),i&&(i.aliasResolveCache=s));let r;for(const u of s){if(u===this)break;u.anchor===this.source&&(r=u)}return r}toJSON(n,i){if(!i)return{source:this.source};const{anchors:s,doc:r,maxAliasCount:u}=i,d=this.resolve(r,i);if(!d){const y=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(y)}let g=s.get(d);if(g||(Vn(d,null,i),g=s.get(d)),g?.res===void 0){const y="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(y)}if(u>=0&&(g.count+=1,g.aliasCount===0&&(g.aliasCount=ou(r,d,s)),g.count*g.aliasCount>u)){const y="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(y)}return g.res}toString(n,i,s){const r=`*${this.source}`;if(n){if(Bx(this.source),n.options.verifyAliasOrder&&!n.anchors.has(this.source)){const u=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(u)}if(n.implicitKey)return`${r} `}return r}}function ou(e,n,i){if(xs(n)){const s=n.resolve(e),r=i&&s&&i.get(s);return r?r.count*r.aliasCount:0}else if(_t(n)){let s=0;for(const r of n.items){const u=ou(e,r,i);u>s&&(s=u)}return s}else if(zt(n)){const s=ou(e,n.key,i),r=ou(e,n.value,i);return Math.max(s,r)}return 1}const $x=e=>!e||typeof e!="function"&&typeof e!="object";class Oe extends $0{constructor(n){super(ga),this.value=n}toJSON(n,i){return i?.keep?this.value:Vn(this.value,n,i)}toString(){return String(this.value)}}Oe.BLOCK_FOLDED="BLOCK_FOLDED";Oe.BLOCK_LITERAL="BLOCK_LITERAL";Oe.PLAIN="PLAIN";Oe.QUOTE_DOUBLE="QUOTE_DOUBLE";Oe.QUOTE_SINGLE="QUOTE_SINGLE";const s$="tag:yaml.org,2002:";function o$(e,n,i){if(n){const s=i.filter(u=>u.tag===n),r=s.find(u=>!u.format)??s[0];if(!r)throw new Error(`Tag ${n} not found`);return r}return i.find(s=>s.identify?.(e)&&!s.format)}function pl(e,n,i){if(Hu(e)&&(e=e.contents),Ct(e))return e;if(zt(e)){const S=i.schema[Ni].createNode?.(i.schema,null,i);return S.items.push(e),S}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<"u"&&e instanceof BigInt)&&(e=e.valueOf());const{aliasDuplicateObjects:s,onAnchor:r,onTagObj:u,schema:d,sourceObjects:g}=i;let y;if(s&&e&&typeof e=="object"){if(y=g.get(e),y)return y.anchor??(y.anchor=r(e)),new I0(y.anchor);y={anchor:null,node:null},g.set(e,y)}n?.startsWith("!!")&&(n=s$+n.slice(2));let v=o$(e,n,d.tags);if(!v){if(e&&typeof e.toJSON=="function"&&(e=e.toJSON()),!e||typeof e!="object"){const S=new Oe(e);return y&&(y.node=S),S}v=e instanceof Map?d[Ni]:Symbol.iterator in Object(e)?d[Po]:d[Ni]}u&&(u(v),delete i.onTagObj);const w=v?.createNode?v.createNode(i.schema,e,i):typeof v?.nodeClass?.from=="function"?v.nodeClass.from(i.schema,e,i):new Oe(e);return n?w.tag=n:v.default||(w.tag=v.tag),y&&(y.node=w),w}function ju(e,n,i){let s=i;for(let r=n.length-1;r>=0;--r){const u=n[r];if(typeof u=="number"&&Number.isInteger(u)&&u>=0){const d=[];d[u]=s,s=d}else s=new Map([[u,s]])}return pl(s,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:e,sourceObjects:new Map})}const el=e=>e==null||typeof e=="object"&&!!e[Symbol.iterator]().next().done;class Ix extends $0{constructor(n,i){super(n),Object.defineProperty(this,"schema",{value:i,configurable:!0,enumerable:!1,writable:!0})}clone(n){const i=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return n&&(i.schema=n),i.items=i.items.map(s=>Ct(s)||zt(s)?s.clone(n):s),this.range&&(i.range=this.range.slice()),i}addIn(n,i){if(el(n))this.add(i);else{const[s,...r]=n,u=this.get(s,!0);if(_t(u))u.addIn(r,i);else if(u===void 0&&this.schema)this.set(s,ju(this.schema,r,i));else throw new Error(`Expected YAML collection at ${s}. Remaining path: ${r}`)}}deleteIn(n){const[i,...s]=n;if(s.length===0)return this.delete(i);const r=this.get(i,!0);if(_t(r))return r.deleteIn(s);throw new Error(`Expected YAML collection at ${i}. Remaining path: ${s}`)}getIn(n,i){const[s,...r]=n,u=this.get(s,!0);return r.length===0?!i&&ut(u)?u.value:u:_t(u)?u.getIn(r,i):void 0}hasAllNullValues(n){return this.items.every(i=>{if(!zt(i))return!1;const s=i.value;return s==null||n&&ut(s)&&s.value==null&&!s.commentBefore&&!s.comment&&!s.tag})}hasIn(n){const[i,...s]=n;if(s.length===0)return this.has(i);const r=this.get(i,!0);return _t(r)?r.hasIn(s):!1}setIn(n,i){const[s,...r]=n;if(r.length===0)this.set(s,i);else{const u=this.get(s,!0);if(_t(u))u.setIn(r,i);else if(u===void 0&&this.schema)this.set(s,ju(this.schema,r,i));else throw new Error(`Expected YAML collection at ${s}. Remaining path: ${r}`)}}}const r$=e=>e.replace(/^(?!$)(?: $)?/gm,"#");function $a(e,n){return/^\n+$/.test(e)?e.substring(1):n?e.replace(/^(?! *$)/gm,n):e}const us=(e,n,i)=>e.endsWith(`
|
|
66
66
|
`)?$a(i,n):i.includes(`
|
|
67
67
|
`)?`
|
|
68
68
|
`+$a(i,n):(e.endsWith(" ")?"":" ")+i,Ux="flow",Sf="block",ru="quoted";function Qu(e,n,i="flow",{indentAtStart:s,lineWidth:r=80,minContentWidth:u=20,onFold:d,onOverflow:g}={}){if(!r||r<0)return e;r<u&&(u=0);const y=Math.max(1+u,1+r-n.length);if(e.length<=y)return e;const v=[],w={};let S=r-n.length;typeof s=="number"&&(s>r-Math.max(2,u)?v.push(0):S=r-s);let j,_,E=!1,A=-1,C=-1,O=-1;i===Sf&&(A=Mv(e,A,n.length),A!==-1&&(S=A+y));for(let G;G=e[A+=1];){if(i===ru&&G==="\\"){switch(C=A,e[A+1]){case"x":A+=3;break;case"u":A+=5;break;case"U":A+=9;break;default:A+=1}O=A}if(G===`
|
|
@@ -71,7 +71,7 @@ ${JSON.stringify(s.raw,null,2)}`):n.push(r)}return n.length>0?n.join(`
|
|
|
71
71
|
`&&P!==" "&&(j=A)}if(A>=S)if(j)v.push(j),S=j+y,j=void 0;else if(i===ru){for(;_===" "||_===" ";)_=G,G=e[A+=1],E=!0;const P=A>O+1?A-2:C-1;if(w[P])return e;v.push(P),w[P]=!0,S=P+y,j=void 0}else E=!0}_=G}if(E&&g&&g(),v.length===0)return e;d&&d();let L=e.slice(0,v[0]);for(let G=0;G<v.length;++G){const P=v[G],H=v[G+1]||e.length;P===0?L=`
|
|
72
72
|
${n}${e.slice(0,H)}`:(i===ru&&w[P]&&(L+=`${e[P]}\\`),L+=`
|
|
73
73
|
${n}${e.slice(P+1,H)}`)}return L}function Mv(e,n,i){let s=n,r=n+1,u=e[r];for(;u===" "||u===" ";)if(n<r+i)u=e[++n];else{do u=e[++n];while(u&&u!==`
|
|
74
|
-
`);s=n,r=n+1,u=e[r]}return s}const Zu=(e,n)=>({indentAtStart:n?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),Fu=e=>/^(%|---|\.\.\.)/m.test(e);function
|
|
74
|
+
`);s=n,r=n+1,u=e[r]}return s}const Zu=(e,n)=>({indentAtStart:n?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),Fu=e=>/^(%|---|\.\.\.)/m.test(e);function l$(e,n,i){if(!n||n<0)return!1;const s=n-i,r=e.length;if(r<=s)return!1;for(let u=0,d=0;u<r;++u)if(e[u]===`
|
|
75
75
|
`){if(u-d>s)return!0;if(d=u+1,r-d<=s)return!1}return!0}function ll(e,n){const i=JSON.stringify(e);if(n.options.doubleQuotedAsJSON)return i;const{implicitKey:s}=n,r=n.options.doubleQuotedMinMultiLineLength,u=n.indent||(Fu(e)?" ":"");let d="",g=0;for(let y=0,v=i[y];v;v=i[++y])if(v===" "&&i[y+1]==="\\"&&i[y+2]==="n"&&(d+=i.slice(g,y)+"\\ ",y+=1,g=y,v="\\"),v==="\\")switch(i[y+1]){case"u":{d+=i.slice(g,y);const w=i.substr(y+2,4);switch(w){case"0000":d+="\\0";break;case"0007":d+="\\a";break;case"000b":d+="\\v";break;case"001b":d+="\\e";break;case"0085":d+="\\N";break;case"00a0":d+="\\_";break;case"2028":d+="\\L";break;case"2029":d+="\\P";break;default:w.substr(0,2)==="00"?d+="\\x"+w.substr(2):d+=i.substr(y,6)}y+=5,g=y+1}break;case"n":if(s||i[y+2]==='"'||i.length<r)y+=1;else{for(d+=i.slice(g,y)+`
|
|
76
76
|
|
|
77
77
|
`;i[y+2]==="\\"&&i[y+3]==="n"&&i[y+4]!=='"';)d+=`
|
|
@@ -80,7 +80,7 @@ ${n}${e.slice(P+1,H)}`)}return L}function Mv(e,n,i){let s=n,r=n+1,u=e[r];for(;u=
|
|
|
80
80
|
${i}`)+"'";return n.implicitKey?s:Qu(s,i,Ux,Zu(n,!1))}function vo(e,n){const{singleQuote:i}=n.options;let s;if(i===!1)s=ll;else{const r=e.includes('"'),u=e.includes("'");r&&!u?s=jf:u&&!r?s=ll:s=i?jf:ll}return s(e,n)}let Nf;try{Nf=new RegExp(`(^|(?<!
|
|
81
81
|
))
|
|
82
82
|
+(?!
|
|
83
|
-
|$)`,"g")}catch{Nf=/\n+(?!\n|$)/g}function lu({comment:e,type:n,value:i},s,r,u){const{blockQuote:d,commentString:g,lineWidth:y}=s.options;if(!d||/\n[\t ]+$/.test(i))return vo(i,s);const v=s.indent||(s.forceBlockIndent||Fu(i)?" ":""),w=d==="literal"?!0:d==="folded"||n===Oe.BLOCK_FOLDED?!1:n===Oe.BLOCK_LITERAL?!0:!
|
|
83
|
+
|$)`,"g")}catch{Nf=/\n+(?!\n|$)/g}function lu({comment:e,type:n,value:i},s,r,u){const{blockQuote:d,commentString:g,lineWidth:y}=s.options;if(!d||/\n[\t ]+$/.test(i))return vo(i,s);const v=s.indent||(s.forceBlockIndent||Fu(i)?" ":""),w=d==="literal"?!0:d==="folded"||n===Oe.BLOCK_FOLDED?!1:n===Oe.BLOCK_LITERAL?!0:!l$(i,y,v.length);if(!i)return w?`|
|
|
84
84
|
`:`>
|
|
85
85
|
`;let S,j;for(j=i.length;j>0;--j){const H=i[j-1];if(H!==`
|
|
86
86
|
`&&H!==" "&&H!==" ")break}let _=i.substring(j);const E=_.indexOf(`
|
|
@@ -89,12 +89,12 @@ ${i}`)+"'";return n.implicitKey?s:Qu(s,i,Ux,Zu(n,!1))}function vo(e,n){const{sin
|
|
|
89
89
|
`)O=C;else break}let L=i.substring(0,O<C?O+1:C);L&&(i=i.substring(L.length),L=L.replace(/\n+/g,`$&${v}`));let P=(A?v?"2":"1":"")+S;if(e&&(P+=" "+g(e.replace(/ ?[\r\n]+/g," ")),r&&r()),!w){const H=i.replace(/\n+/g,`
|
|
90
90
|
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${v}`);let ae=!1;const R=Zu(s,!0);d!=="folded"&&n!==Oe.BLOCK_FOLDED&&(R.onOverflow=()=>{ae=!0});const $=Qu(`${L}${H}${_}`,v,Sf,R);if(!ae)return`>${P}
|
|
91
91
|
${v}${$}`}return i=i.replace(/\n+/g,`$&${v}`),`|${P}
|
|
92
|
-
${v}${L}${i}${_}`}function
|
|
92
|
+
${v}${L}${i}${_}`}function c$(e,n,i,s){const{type:r,value:u}=e,{actualString:d,implicitKey:g,indent:y,indentStep:v,inFlow:w}=n;if(g&&u.includes(`
|
|
93
93
|
`)||w&&/[[\]{},]/.test(u))return vo(u,n);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(u))return g||w||!u.includes(`
|
|
94
94
|
`)?vo(u,n):lu(e,n,i,s);if(!g&&!w&&r!==Oe.PLAIN&&u.includes(`
|
|
95
95
|
`))return lu(e,n,i,s);if(Fu(u)){if(y==="")return n.forceBlockIndent=!0,lu(e,n,i,s);if(g&&y===v)return vo(u,n)}const S=u.replace(/\n+/g,`$&
|
|
96
|
-
${y}`);if(d){const j=A=>A.default&&A.tag!=="tag:yaml.org,2002:str"&&A.test?.test(S),{compat:_,tags:E}=n.doc.schema;if(E.some(j)||_?.some(j))return vo(u,n)}return g?S:Qu(S,y,Ux,Zu(n,!1))}function U0(e,n,i,s){const{implicitKey:r,inFlow:u}=n,d=typeof e.value=="string"?e:Object.assign({},e,{value:String(e.value)});let{type:g}=e;g!==Oe.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(d.value)&&(g=Oe.QUOTE_DOUBLE);const y=w=>{switch(w){case Oe.BLOCK_FOLDED:case Oe.BLOCK_LITERAL:return r||u?vo(d.value,n):lu(d,n,i,s);case Oe.QUOTE_DOUBLE:return ll(d.value,n);case Oe.QUOTE_SINGLE:return jf(d.value,n);case Oe.PLAIN:return
|
|
97
|
-
${n.indent}${g}`:g}function
|
|
96
|
+
${y}`);if(d){const j=A=>A.default&&A.tag!=="tag:yaml.org,2002:str"&&A.test?.test(S),{compat:_,tags:E}=n.doc.schema;if(E.some(j)||_?.some(j))return vo(u,n)}return g?S:Qu(S,y,Ux,Zu(n,!1))}function U0(e,n,i,s){const{implicitKey:r,inFlow:u}=n,d=typeof e.value=="string"?e:Object.assign({},e,{value:String(e.value)});let{type:g}=e;g!==Oe.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(d.value)&&(g=Oe.QUOTE_DOUBLE);const y=w=>{switch(w){case Oe.BLOCK_FOLDED:case Oe.BLOCK_LITERAL:return r||u?vo(d.value,n):lu(d,n,i,s);case Oe.QUOTE_DOUBLE:return ll(d.value,n);case Oe.QUOTE_SINGLE:return jf(d.value,n);case Oe.PLAIN:return c$(d,n,i,s);default:return null}};let v=y(g);if(v===null){const{defaultKeyType:w,defaultStringType:S}=n.options,j=r&&w||S;if(v=y(j),v===null)throw new Error(`Unsupported default string type ${j}`)}return v}function Px(e,n){const i=Object.assign({blockQuote:!0,commentString:r$,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},e.schema.toStringOptions,n);let s;switch(i.collectionStyle){case"block":s=!1;break;case"flow":s=!0;break;default:s=null}return{anchors:new Set,doc:e,flowCollectionPadding:i.flowCollectionPadding?" ":"",indent:"",indentStep:typeof i.indent=="number"?" ".repeat(i.indent):" ",inFlow:s,options:i}}function u$(e,n){if(n.tag){const r=e.filter(u=>u.tag===n.tag);if(r.length>0)return r.find(u=>u.format===n.format)??r[0]}let i,s;if(ut(n)){s=n.value;let r=e.filter(u=>u.identify?.(s));if(r.length>1){const u=r.filter(d=>d.test);u.length>0&&(r=u)}i=r.find(u=>u.format===n.format)??r.find(u=>!u.format)}else s=n,i=e.find(r=>r.nodeClass&&s instanceof r.nodeClass);if(!i){const r=s?.constructor?.name??(s===null?"null":typeof s);throw new Error(`Tag not resolved for ${r} value`)}return i}function d$(e,n,{anchors:i,doc:s}){if(!s.directives)return"";const r=[],u=(ut(e)||_t(e))&&e.anchor;u&&Bx(u)&&(i.add(u),r.push(`&${u}`));const d=e.tag??(n.default?null:n.tag);return d&&r.push(s.directives.tagString(d)),r.join(" ")}function Oo(e,n,i,s){if(zt(e))return e.toString(n,i,s);if(xs(e)){if(n.doc.directives)return e.toString(n);if(n.resolvedAliases?.has(e))throw new TypeError("Cannot stringify circular structure without alias nodes");n.resolvedAliases?n.resolvedAliases.add(e):n.resolvedAliases=new Set([e]),e=e.resolve(n.doc)}let r;const u=Ct(e)?e:n.doc.createNode(e,{onTagObj:y=>r=y});r??(r=u$(n.doc.schema.tags,u));const d=d$(u,r,n);d.length>0&&(n.indentAtStart=(n.indentAtStart??0)+d.length+1);const g=typeof r.stringify=="function"?r.stringify(u,n,i,s):ut(u)?U0(u,n,i,s):u.toString(n,i,s);return d?ut(u)||g[0]==="{"||g[0]==="["?`${d} ${g}`:`${d}
|
|
97
|
+
${n.indent}${g}`:g}function m$({key:e,value:n},i,s,r){const{allNullValues:u,doc:d,indent:g,indentStep:y,options:{commentString:v,indentSeq:w,simpleKeys:S}}=i;let j=Ct(e)&&e.comment||null;if(S){if(j)throw new Error("With simple keys, key nodes cannot have comments");if(_t(e)||!Ct(e)&&typeof e=="object"){const R="With simple keys, collection cannot be used as a key value";throw new Error(R)}}let _=!S&&(!e||j&&n==null&&!i.inFlow||_t(e)||(ut(e)?e.type===Oe.BLOCK_FOLDED||e.type===Oe.BLOCK_LITERAL:typeof e=="object"));i=Object.assign({},i,{allNullValues:!1,implicitKey:!_&&(S||!u),indent:g+y});let E=!1,A=!1,C=Oo(e,i,()=>E=!0,()=>A=!0);if(!_&&!i.inFlow&&C.length>1024){if(S)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");_=!0}if(i.inFlow){if(u||n==null)return E&&s&&s(),C===""?"?":_?`? ${C}`:C}else if(u&&!S||n==null&&_)return C=`? ${C}`,j&&!E?C+=us(C,i.indent,v(j)):A&&r&&r(),C;E&&(j=null),_?(j&&(C+=us(C,i.indent,v(j))),C=`? ${C}
|
|
98
98
|
${g}:`):(C=`${C}:`,j&&(C+=us(C,i.indent,v(j))));let O,L,G;Ct(n)?(O=!!n.spaceBefore,L=n.commentBefore,G=n.comment):(O=!1,L=null,G=null,n&&typeof n=="object"&&(n=d.createNode(n))),i.implicitKey=!1,!_&&!j&&ut(n)&&(i.indentAtStart=C.length+1),A=!1,!w&&y.length>=2&&!i.inFlow&&!_&&jl(n)&&!n.flow&&!n.tag&&!n.anchor&&(i.indent=i.indent.substring(2));let P=!1;const H=Oo(n,i,()=>P=!0,()=>A=!0);let ae=" ";if(j||O||L){if(ae=O?`
|
|
99
99
|
`:"",L){const R=v(L);ae+=`
|
|
100
100
|
${$a(R,i.indent)}`}H===""&&!i.inFlow?ae===`
|
|
@@ -104,32 +104,32 @@ ${$a(R,i.indent)}`}H===""&&!i.inFlow?ae===`
|
|
|
104
104
|
${i.indent}`}else if(!_&&_t(n)){const R=H[0],$=H.indexOf(`
|
|
105
105
|
`),fe=$!==-1,ue=i.inFlow??n.flow??n.items.length===0;if(fe||!ue){let me=!1;if(fe&&(R==="&"||R==="!")){let pe=H.indexOf(" ");R==="&"&&pe!==-1&&pe<$&&H[pe+1]==="!"&&(pe=H.indexOf(" ",pe+1)),(pe===-1||$<pe)&&(me=!0)}me||(ae=`
|
|
106
106
|
${i.indent}`)}}else(H===""||H[0]===`
|
|
107
|
-
`)&&(ae="");return C+=ae+H,i.inFlow?P&&s&&s():G&&!P?C+=us(C,i.indent,v(G)):A&&r&&r(),C}function
|
|
107
|
+
`)&&(ae="");return C+=ae+H,i.inFlow?P&&s&&s():G&&!P?C+=us(C,i.indent,v(G)):A&&r&&r(),C}function p$(e,n){(e==="debug"||e==="warn")&&console.warn(n)}const Jc="<<",Ua={identify:e=>e===Jc||typeof e=="symbol"&&e.description===Jc,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Oe(Symbol(Jc)),{addToJSMap:Vx}),stringify:()=>Jc},f$=(e,n)=>(Ua.identify(n)||ut(n)&&(!n.type||n.type===Oe.PLAIN)&&Ua.identify(n.value))&&e?.doc.schema.tags.some(i=>i.tag===Ua.tag&&i.default);function Vx(e,n,i){if(i=e&&xs(i)?i.resolve(e.doc):i,jl(i))for(const s of i.items)Vp(e,n,s);else if(Array.isArray(i))for(const s of i)Vp(e,n,s);else Vp(e,n,i)}function Vp(e,n,i){const s=e&&xs(i)?i.resolve(e.doc):i;if(!Sl(s))throw new Error("Merge sources must be maps or map aliases");const r=s.toJSON(null,e,Map);for(const[u,d]of r)n instanceof Map?n.has(u)||n.set(u,d):n instanceof Set?n.add(u):Object.prototype.hasOwnProperty.call(n,u)||Object.defineProperty(n,u,{value:d,writable:!0,enumerable:!0,configurable:!0});return n}function Gx(e,n,{key:i,value:s}){if(Ct(i)&&i.addToJSMap)i.addToJSMap(e,n,s);else if(f$(e,i))Vx(e,n,s);else{const r=Vn(i,"",e);if(n instanceof Map)n.set(r,Vn(s,r,e));else if(n instanceof Set)n.add(r);else{const u=h$(i,r,e),d=Vn(s,u,e);u in n?Object.defineProperty(n,u,{value:d,writable:!0,enumerable:!0,configurable:!0}):n[u]=d}}return n}function h$(e,n,i){if(n===null)return"";if(typeof n!="object")return String(n);if(Ct(e)&&i?.doc){const s=Px(i.doc,{});s.anchors=new Set;for(const u of i.anchors.keys())s.anchors.add(u.anchor);s.inFlow=!0,s.inStringifyKey=!0;const r=e.toString(s);if(!i.mapKeyWarned){let u=JSON.stringify(r);u.length>40&&(u=u.substring(0,36)+'..."'),p$(i.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${u}. Set mapAsMap: true to use object keys.`),i.mapKeyWarned=!0}return r}return JSON.stringify(n)}function P0(e,n,i){const s=pl(e,void 0,i),r=pl(n,void 0,i);return new ln(s,r)}class ln{constructor(n,i=null){Object.defineProperty(this,Kn,{value:Rx}),this.key=n,this.value=i}clone(n){let{key:i,value:s}=this;return Ct(i)&&(i=i.clone(n)),Ct(s)&&(s=s.clone(n)),new ln(i,s)}toJSON(n,i){const s=i?.mapAsMap?new Map:{};return Gx(i,s,this)}toString(n,i,s){return n?.doc?m$(this,n,i,s):JSON.stringify(this)}}function Kx(e,n,i){return(n.inFlow??e.flow?y$:g$)(e,n,i)}function g$({comment:e,items:n},i,{blockItemPrefix:s,flowChars:r,itemIndent:u,onChompKeep:d,onComment:g}){const{indent:y,options:{commentString:v}}=i,w=Object.assign({},i,{indent:u,type:null});let S=!1;const j=[];for(let E=0;E<n.length;++E){const A=n[E];let C=null;if(Ct(A))!S&&A.spaceBefore&&j.push(""),Nu(i,j,A.commentBefore,S),A.comment&&(C=A.comment);else if(zt(A)){const L=Ct(A.key)?A.key:null;L&&(!S&&L.spaceBefore&&j.push(""),Nu(i,j,L.commentBefore,S))}S=!1;let O=Oo(A,w,()=>C=null,()=>S=!0);C&&(O+=us(O,u,v(C))),S&&C&&(S=!1),j.push(s+O)}let _;if(j.length===0)_=r.start+r.end;else{_=j[0];for(let E=1;E<j.length;++E){const A=j[E];_+=A?`
|
|
108
108
|
${y}${A}`:`
|
|
109
109
|
`}}return e?(_+=`
|
|
110
|
-
`+$a(v(e),y),g&&g()):S&&d&&d(),_}function
|
|
110
|
+
`+$a(v(e),y),g&&g()):S&&d&&d(),_}function y$({items:e},n,{flowChars:i,itemIndent:s}){const{indent:r,indentStep:u,flowCollectionPadding:d,options:{commentString:g}}=n;s+=u;const y=Object.assign({},n,{indent:s,inFlow:!0,type:null});let v=!1,w=0;const S=[];for(let E=0;E<e.length;++E){const A=e[E];let C=null;if(Ct(A))A.spaceBefore&&S.push(""),Nu(n,S,A.commentBefore,!1),A.comment&&(C=A.comment);else if(zt(A)){const L=Ct(A.key)?A.key:null;L&&(L.spaceBefore&&S.push(""),Nu(n,S,L.commentBefore,!1),L.comment&&(v=!0));const G=Ct(A.value)?A.value:null;G?(G.comment&&(C=G.comment),G.commentBefore&&(v=!0)):A.value==null&&L?.comment&&(C=L.comment)}C&&(v=!0);let O=Oo(A,y,()=>C=null);E<e.length-1&&(O+=","),C&&(O+=us(O,s,g(C))),!v&&(S.length>w||O.includes(`
|
|
111
111
|
`))&&(v=!0),S.push(O),w=S.length}const{start:j,end:_}=i;if(S.length===0)return j+_;if(!v){const E=S.reduce((A,C)=>A+C.length+2,2);v=n.options.lineWidth>0&&E>n.options.lineWidth}if(v){let E=j;for(const A of S)E+=A?`
|
|
112
112
|
${u}${r}${A}`:`
|
|
113
113
|
`;return`${E}
|
|
114
|
-
${r}${_}`}else return`${j}${d}${S.join(" ")}${d}${_}`}function Nu({indent:e,options:{commentString:n}},i,s,r){if(s&&r&&(s=s.replace(/^\n+/,"")),s){const u=$a(n(s),e);i.push(u.trimStart())}}function ds(e,n){const i=ut(n)?n.value:n;for(const s of e)if(zt(s)&&(s.key===n||s.key===i||ut(s.key)&&s.key.value===i))return s}class Pn extends Ix{static get tagName(){return"tag:yaml.org,2002:map"}constructor(n){super(Ni,n),this.items=[]}static from(n,i,s){const{keepUndefined:r,replacer:u}=s,d=new this(n),g=(y,v)=>{if(typeof u=="function")v=u.call(i,y,v);else if(Array.isArray(u)&&!u.includes(y))return;(v!==void 0||r)&&d.items.push(P0(y,v,s))};if(i instanceof Map)for(const[y,v]of i)g(y,v);else if(i&&typeof i=="object")for(const y of Object.keys(i))g(y,i[y]);return typeof n.sortMapEntries=="function"&&d.items.sort(n.sortMapEntries),d}add(n,i){let s;zt(n)?s=n:!n||typeof n!="object"||!("key"in n)?s=new ln(n,n?.value):s=new ln(n.key,n.value);const r=ds(this.items,s.key),u=this.schema?.sortMapEntries;if(r){if(!i)throw new Error(`Key ${s.key} already set`);ut(r.value)&&$x(s.value)?r.value.value=s.value:r.value=s.value}else if(u){const d=this.items.findIndex(g=>u(s,g)<0);d===-1?this.items.push(s):this.items.splice(d,0,s)}else this.items.push(s)}delete(n){const i=ds(this.items,n);return i?this.items.splice(this.items.indexOf(i),1).length>0:!1}get(n,i){const r=ds(this.items,n)?.value;return(!i&&ut(r)?r.value:r)??void 0}has(n){return!!ds(this.items,n)}set(n,i){this.add(new ln(n,i),!0)}toJSON(n,i,s){const r=s?new s:i?.mapAsMap?new Map:{};i?.onCreate&&i.onCreate(r);for(const u of this.items)Gx(i,r,u);return r}toString(n,i,s){if(!n)return JSON.stringify(this);for(const r of this.items)if(!zt(r))throw new Error(`Map items must all be pairs; found ${JSON.stringify(r)} instead`);return!n.allNullValues&&this.hasAllNullValues(!1)&&(n=Object.assign({},n,{allNullValues:!0})),Kx(this,n,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:n.indent||"",onChompKeep:s,onComment:i})}}const Go={collection:"map",default:!0,nodeClass:Pn,tag:"tag:yaml.org,2002:map",resolve(e,n){return Sl(e)||n("Expected a mapping for this tag"),e},createNode:(e,n,i)=>Pn.from(e,n,i)};class fs extends Ix{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(n){super(Po,n),this.items=[]}add(n){this.items.push(n)}delete(n){const i=Wc(n);return typeof i!="number"?!1:this.items.splice(i,1).length>0}get(n,i){const s=Wc(n);if(typeof s!="number")return;const r=this.items[s];return!i&&ut(r)?r.value:r}has(n){const i=Wc(n);return typeof i=="number"&&i<this.items.length}set(n,i){const s=Wc(n);if(typeof s!="number")throw new Error(`Expected a valid index, not ${n}.`);const r=this.items[s];ut(r)&&$x(i)?r.value=i:this.items[s]=i}toJSON(n,i){const s=[];i?.onCreate&&i.onCreate(s);let r=0;for(const u of this.items)s.push(Vn(u,String(r++),i));return s}toString(n,i,s){return n?Kx(this,n,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(n.indent||"")+" ",onChompKeep:s,onComment:i}):JSON.stringify(this)}static from(n,i,s){const{replacer:r}=s,u=new this(n);if(i&&Symbol.iterator in Object(i)){let d=0;for(let g of i){if(typeof r=="function"){const y=i instanceof Set?g:String(d++);g=r.call(i,y,g)}u.items.push(pl(g,void 0,s))}}return u}}function Wc(e){let n=ut(e)?e.value:e;return n&&typeof n=="string"&&(n=Number(n)),typeof n=="number"&&Number.isInteger(n)&&n>=0?n:null}const Ko={collection:"seq",default:!0,nodeClass:fs,tag:"tag:yaml.org,2002:seq",resolve(e,n){return jl(e)||n("Expected a sequence for this tag"),e},createNode:(e,n,i)=>fs.from(e,n,i)},Yu={identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify(e,n,i,s){return n=Object.assign({actualString:!0},n),U0(e,n,i,s)}},Xu={identify:e=>e==null,createNode:()=>new Oe(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Oe(null),stringify:({source:e},n)=>typeof e=="string"&&Xu.test.test(e)?e:n.options.nullStr},V0={identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:e=>new Oe(e[0]==="t"||e[0]==="T"),stringify({source:e,value:n},i){if(e&&V0.test.test(e)){const s=e[0]==="t"||e[0]==="T";if(n===s)return e}return n?i.options.trueStr:i.options.falseStr}};function ia({format:e,minFractionDigits:n,tag:i,value:s}){if(typeof s=="bigint")return String(s);const r=typeof s=="number"?s:Number(s);if(!isFinite(r))return isNaN(r)?".nan":r<0?"-.inf":".inf";let u=Object.is(s,-0)?"-0":JSON.stringify(s);if(!e&&n&&(!i||i==="tag:yaml.org,2002:float")&&/^\d/.test(u)){let d=u.indexOf(".");d<0&&(d=u.length,u+=".");let g=n-(u.length-d-1);for(;g-- >0;)u+="0"}return u}const Hx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ia},Qx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e),stringify(e){const n=Number(e.value);return isFinite(n)?n.toExponential():ia(e)}},Zx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(e){const n=new Oe(parseFloat(e)),i=e.indexOf(".");return i!==-1&&e[e.length-1]==="0"&&(n.minFractionDigits=e.length-i-1),n},stringify:ia},Ju=e=>typeof e=="bigint"||Number.isInteger(e),G0=(e,n,i,{intAsBigInt:s})=>s?BigInt(e):parseInt(e.substring(n),i);function Fx(e,n,i){const{value:s}=e;return Ju(s)&&s>=0?i+s.toString(n):ia(e)}const Yx={identify:e=>Ju(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(e,n,i)=>G0(e,2,8,i),stringify:e=>Fx(e,8,"0o")},Xx={identify:Ju,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(e,n,i)=>G0(e,0,10,i),stringify:ia},Jx={identify:e=>Ju(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(e,n,i)=>G0(e,2,16,i),stringify:e=>Fx(e,16,"0x")},
|
|
114
|
+
${r}${_}`}else return`${j}${d}${S.join(" ")}${d}${_}`}function Nu({indent:e,options:{commentString:n}},i,s,r){if(s&&r&&(s=s.replace(/^\n+/,"")),s){const u=$a(n(s),e);i.push(u.trimStart())}}function ds(e,n){const i=ut(n)?n.value:n;for(const s of e)if(zt(s)&&(s.key===n||s.key===i||ut(s.key)&&s.key.value===i))return s}class Pn extends Ix{static get tagName(){return"tag:yaml.org,2002:map"}constructor(n){super(Ni,n),this.items=[]}static from(n,i,s){const{keepUndefined:r,replacer:u}=s,d=new this(n),g=(y,v)=>{if(typeof u=="function")v=u.call(i,y,v);else if(Array.isArray(u)&&!u.includes(y))return;(v!==void 0||r)&&d.items.push(P0(y,v,s))};if(i instanceof Map)for(const[y,v]of i)g(y,v);else if(i&&typeof i=="object")for(const y of Object.keys(i))g(y,i[y]);return typeof n.sortMapEntries=="function"&&d.items.sort(n.sortMapEntries),d}add(n,i){let s;zt(n)?s=n:!n||typeof n!="object"||!("key"in n)?s=new ln(n,n?.value):s=new ln(n.key,n.value);const r=ds(this.items,s.key),u=this.schema?.sortMapEntries;if(r){if(!i)throw new Error(`Key ${s.key} already set`);ut(r.value)&&$x(s.value)?r.value.value=s.value:r.value=s.value}else if(u){const d=this.items.findIndex(g=>u(s,g)<0);d===-1?this.items.push(s):this.items.splice(d,0,s)}else this.items.push(s)}delete(n){const i=ds(this.items,n);return i?this.items.splice(this.items.indexOf(i),1).length>0:!1}get(n,i){const r=ds(this.items,n)?.value;return(!i&&ut(r)?r.value:r)??void 0}has(n){return!!ds(this.items,n)}set(n,i){this.add(new ln(n,i),!0)}toJSON(n,i,s){const r=s?new s:i?.mapAsMap?new Map:{};i?.onCreate&&i.onCreate(r);for(const u of this.items)Gx(i,r,u);return r}toString(n,i,s){if(!n)return JSON.stringify(this);for(const r of this.items)if(!zt(r))throw new Error(`Map items must all be pairs; found ${JSON.stringify(r)} instead`);return!n.allNullValues&&this.hasAllNullValues(!1)&&(n=Object.assign({},n,{allNullValues:!0})),Kx(this,n,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:n.indent||"",onChompKeep:s,onComment:i})}}const Go={collection:"map",default:!0,nodeClass:Pn,tag:"tag:yaml.org,2002:map",resolve(e,n){return Sl(e)||n("Expected a mapping for this tag"),e},createNode:(e,n,i)=>Pn.from(e,n,i)};class fs extends Ix{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(n){super(Po,n),this.items=[]}add(n){this.items.push(n)}delete(n){const i=Wc(n);return typeof i!="number"?!1:this.items.splice(i,1).length>0}get(n,i){const s=Wc(n);if(typeof s!="number")return;const r=this.items[s];return!i&&ut(r)?r.value:r}has(n){const i=Wc(n);return typeof i=="number"&&i<this.items.length}set(n,i){const s=Wc(n);if(typeof s!="number")throw new Error(`Expected a valid index, not ${n}.`);const r=this.items[s];ut(r)&&$x(i)?r.value=i:this.items[s]=i}toJSON(n,i){const s=[];i?.onCreate&&i.onCreate(s);let r=0;for(const u of this.items)s.push(Vn(u,String(r++),i));return s}toString(n,i,s){return n?Kx(this,n,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(n.indent||"")+" ",onChompKeep:s,onComment:i}):JSON.stringify(this)}static from(n,i,s){const{replacer:r}=s,u=new this(n);if(i&&Symbol.iterator in Object(i)){let d=0;for(let g of i){if(typeof r=="function"){const y=i instanceof Set?g:String(d++);g=r.call(i,y,g)}u.items.push(pl(g,void 0,s))}}return u}}function Wc(e){let n=ut(e)?e.value:e;return n&&typeof n=="string"&&(n=Number(n)),typeof n=="number"&&Number.isInteger(n)&&n>=0?n:null}const Ko={collection:"seq",default:!0,nodeClass:fs,tag:"tag:yaml.org,2002:seq",resolve(e,n){return jl(e)||n("Expected a sequence for this tag"),e},createNode:(e,n,i)=>fs.from(e,n,i)},Yu={identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify(e,n,i,s){return n=Object.assign({actualString:!0},n),U0(e,n,i,s)}},Xu={identify:e=>e==null,createNode:()=>new Oe(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Oe(null),stringify:({source:e},n)=>typeof e=="string"&&Xu.test.test(e)?e:n.options.nullStr},V0={identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:e=>new Oe(e[0]==="t"||e[0]==="T"),stringify({source:e,value:n},i){if(e&&V0.test.test(e)){const s=e[0]==="t"||e[0]==="T";if(n===s)return e}return n?i.options.trueStr:i.options.falseStr}};function ia({format:e,minFractionDigits:n,tag:i,value:s}){if(typeof s=="bigint")return String(s);const r=typeof s=="number"?s:Number(s);if(!isFinite(r))return isNaN(r)?".nan":r<0?"-.inf":".inf";let u=Object.is(s,-0)?"-0":JSON.stringify(s);if(!e&&n&&(!i||i==="tag:yaml.org,2002:float")&&/^\d/.test(u)){let d=u.indexOf(".");d<0&&(d=u.length,u+=".");let g=n-(u.length-d-1);for(;g-- >0;)u+="0"}return u}const Hx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ia},Qx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e),stringify(e){const n=Number(e.value);return isFinite(n)?n.toExponential():ia(e)}},Zx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(e){const n=new Oe(parseFloat(e)),i=e.indexOf(".");return i!==-1&&e[e.length-1]==="0"&&(n.minFractionDigits=e.length-i-1),n},stringify:ia},Ju=e=>typeof e=="bigint"||Number.isInteger(e),G0=(e,n,i,{intAsBigInt:s})=>s?BigInt(e):parseInt(e.substring(n),i);function Fx(e,n,i){const{value:s}=e;return Ju(s)&&s>=0?i+s.toString(n):ia(e)}const Yx={identify:e=>Ju(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(e,n,i)=>G0(e,2,8,i),stringify:e=>Fx(e,8,"0o")},Xx={identify:Ju,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(e,n,i)=>G0(e,0,10,i),stringify:ia},Jx={identify:e=>Ju(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(e,n,i)=>G0(e,2,16,i),stringify:e=>Fx(e,16,"0x")},b$=[Go,Ko,Yu,Xu,V0,Yx,Xx,Jx,Hx,Qx,Zx];function Bv(e){return typeof e=="bigint"||Number.isInteger(e)}const eu=({value:e})=>JSON.stringify(e),v$=[{identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify:eu},{identify:e=>e==null,createNode:()=>new Oe(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:eu},{identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:e=>e==="true",stringify:eu},{identify:Bv,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,n,{intAsBigInt:i})=>i?BigInt(e):parseInt(e,10),stringify:({value:e})=>Bv(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:eu}],k$={default:!0,tag:"",test:/^/,resolve(e,n){return n(`Unresolved plain scalar ${JSON.stringify(e)}`),e}},x$=[Go,Ko].concat(v$,k$),K0={identify:e=>e instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(e,n){if(typeof atob=="function"){const i=atob(e.replace(/[\n\r]/g,"")),s=new Uint8Array(i.length);for(let r=0;r<i.length;++r)s[r]=i.charCodeAt(r);return s}else return n("This environment does not support reading binary tags; either Buffer or atob is required"),e},stringify({comment:e,type:n,value:i},s,r,u){if(!i)return"";const d=i;let g;if(typeof btoa=="function"){let y="";for(let v=0;v<d.length;++v)y+=String.fromCharCode(d[v]);g=btoa(y)}else throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(n??(n=Oe.BLOCK_LITERAL),n!==Oe.QUOTE_DOUBLE){const y=Math.max(s.options.lineWidth-s.indent.length,s.options.minContentWidth),v=Math.ceil(g.length/y),w=new Array(v);for(let S=0,j=0;S<v;++S,j+=y)w[S]=g.substr(j,y);g=w.join(n===Oe.BLOCK_LITERAL?`
|
|
115
115
|
`:" ")}return U0({comment:e,type:n,value:g},s,r,u)}};function Wx(e,n){if(jl(e))for(let i=0;i<e.items.length;++i){let s=e.items[i];if(!zt(s)){if(Sl(s)){s.items.length>1&&n("Each pair must have its own sequence indicator");const r=s.items[0]||new ln(new Oe(null));if(s.commentBefore&&(r.key.commentBefore=r.key.commentBefore?`${s.commentBefore}
|
|
116
116
|
${r.key.commentBefore}`:s.commentBefore),s.comment){const u=r.value??r.key;u.comment=u.comment?`${s.comment}
|
|
117
|
-
${u.comment}`:s.comment}s=r}e.items[i]=zt(s)?s:new ln(s)}}else n("Expected a sequence for this tag");return e}function ew(e,n,i){const{replacer:s}=i,r=new fs(e);r.tag="tag:yaml.org,2002:pairs";let u=0;if(n&&Symbol.iterator in Object(n))for(let d of n){typeof s=="function"&&(d=s.call(n,String(u++),d));let g,y;if(Array.isArray(d))if(d.length===2)g=d[0],y=d[1];else throw new TypeError(`Expected [key, value] tuple: ${d}`);else if(d&&d instanceof Object){const v=Object.keys(d);if(v.length===1)g=v[0],y=d[g];else throw new TypeError(`Expected tuple with one key, not ${v.length} keys`)}else g=d;r.items.push(P0(g,y,i))}return r}const H0={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Wx,createNode:ew};class So extends fs{constructor(){super(),this.add=Pn.prototype.add.bind(this),this.delete=Pn.prototype.delete.bind(this),this.get=Pn.prototype.get.bind(this),this.has=Pn.prototype.has.bind(this),this.set=Pn.prototype.set.bind(this),this.tag=So.tag}toJSON(n,i){if(!i)return super.toJSON(n);const s=new Map;i?.onCreate&&i.onCreate(s);for(const r of this.items){let u,d;if(zt(r)?(u=Vn(r.key,"",i),d=Vn(r.value,u,i)):u=Vn(r,"",i),s.has(u))throw new Error("Ordered maps must not include duplicate keys");s.set(u,d)}return s}static from(n,i,s){const r=ew(n,i,s),u=new this;return u.items=r.items,u}}So.tag="tag:yaml.org,2002:omap";const Q0={collection:"seq",identify:e=>e instanceof Map,nodeClass:So,default:!1,tag:"tag:yaml.org,2002:omap",resolve(e,n){const i=Wx(e,n),s=[];for(const{key:r}of i.items)ut(r)&&(s.includes(r.value)?n(`Ordered maps must not include duplicate keys: ${r.value}`):s.push(r.value));return Object.assign(new So,i)},createNode:(e,n,i)=>So.from(e,n,i)};function tw({value:e,source:n},i){return n&&(e?nw:aw).test.test(n)?n:e?i.options.trueStr:i.options.falseStr}const nw={identify:e=>e===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new Oe(!0),stringify:tw},aw={identify:e=>e===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new Oe(!1),stringify:tw},
|
|
117
|
+
${u.comment}`:s.comment}s=r}e.items[i]=zt(s)?s:new ln(s)}}else n("Expected a sequence for this tag");return e}function ew(e,n,i){const{replacer:s}=i,r=new fs(e);r.tag="tag:yaml.org,2002:pairs";let u=0;if(n&&Symbol.iterator in Object(n))for(let d of n){typeof s=="function"&&(d=s.call(n,String(u++),d));let g,y;if(Array.isArray(d))if(d.length===2)g=d[0],y=d[1];else throw new TypeError(`Expected [key, value] tuple: ${d}`);else if(d&&d instanceof Object){const v=Object.keys(d);if(v.length===1)g=v[0],y=d[g];else throw new TypeError(`Expected tuple with one key, not ${v.length} keys`)}else g=d;r.items.push(P0(g,y,i))}return r}const H0={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Wx,createNode:ew};class So extends fs{constructor(){super(),this.add=Pn.prototype.add.bind(this),this.delete=Pn.prototype.delete.bind(this),this.get=Pn.prototype.get.bind(this),this.has=Pn.prototype.has.bind(this),this.set=Pn.prototype.set.bind(this),this.tag=So.tag}toJSON(n,i){if(!i)return super.toJSON(n);const s=new Map;i?.onCreate&&i.onCreate(s);for(const r of this.items){let u,d;if(zt(r)?(u=Vn(r.key,"",i),d=Vn(r.value,u,i)):u=Vn(r,"",i),s.has(u))throw new Error("Ordered maps must not include duplicate keys");s.set(u,d)}return s}static from(n,i,s){const r=ew(n,i,s),u=new this;return u.items=r.items,u}}So.tag="tag:yaml.org,2002:omap";const Q0={collection:"seq",identify:e=>e instanceof Map,nodeClass:So,default:!1,tag:"tag:yaml.org,2002:omap",resolve(e,n){const i=Wx(e,n),s=[];for(const{key:r}of i.items)ut(r)&&(s.includes(r.value)?n(`Ordered maps must not include duplicate keys: ${r.value}`):s.push(r.value));return Object.assign(new So,i)},createNode:(e,n,i)=>So.from(e,n,i)};function tw({value:e,source:n},i){return n&&(e?nw:aw).test.test(n)?n:e?i.options.trueStr:i.options.falseStr}const nw={identify:e=>e===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new Oe(!0),stringify:tw},aw={identify:e=>e===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new Oe(!1),stringify:tw},w$={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:ia},S$={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e.replace(/_/g,"")),stringify(e){const n=Number(e.value);return isFinite(n)?n.toExponential():ia(e)}},j$={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(e){const n=new Oe(parseFloat(e.replace(/_/g,""))),i=e.indexOf(".");if(i!==-1){const s=e.substring(i+1).replace(/_/g,"");s[s.length-1]==="0"&&(n.minFractionDigits=s.length)}return n},stringify:ia},Nl=e=>typeof e=="bigint"||Number.isInteger(e);function Wu(e,n,i,{intAsBigInt:s}){const r=e[0];if((r==="-"||r==="+")&&(n+=1),e=e.substring(n).replace(/_/g,""),s){switch(i){case 2:e=`0b${e}`;break;case 8:e=`0o${e}`;break;case 16:e=`0x${e}`;break}const d=BigInt(e);return r==="-"?BigInt(-1)*d:d}const u=parseInt(e,i);return r==="-"?-1*u:u}function Z0(e,n,i){const{value:s}=e;if(Nl(s)){const r=s.toString(n);return s<0?"-"+i+r.substr(1):i+r}return ia(e)}const N$={identify:Nl,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(e,n,i)=>Wu(e,2,2,i),stringify:e=>Z0(e,2,"0b")},A$={identify:Nl,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(e,n,i)=>Wu(e,1,8,i),stringify:e=>Z0(e,8,"0")},_$={identify:Nl,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(e,n,i)=>Wu(e,0,10,i),stringify:ia},C$={identify:Nl,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(e,n,i)=>Wu(e,2,16,i),stringify:e=>Z0(e,16,"0x")};class jo extends Pn{constructor(n){super(n),this.tag=jo.tag}add(n){let i;zt(n)?i=n:n&&typeof n=="object"&&"key"in n&&"value"in n&&n.value===null?i=new ln(n.key,null):i=new ln(n,null),ds(this.items,i.key)||this.items.push(i)}get(n,i){const s=ds(this.items,n);return!i&&zt(s)?ut(s.key)?s.key.value:s.key:s}set(n,i){if(typeof i!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof i}`);const s=ds(this.items,n);s&&!i?this.items.splice(this.items.indexOf(s),1):!s&&i&&this.items.push(new ln(n))}toJSON(n,i){return super.toJSON(n,i,Set)}toString(n,i,s){if(!n)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},n,{allNullValues:!0}),i,s);throw new Error("Set items must all have null values")}static from(n,i,s){const{replacer:r}=s,u=new this(n);if(i&&Symbol.iterator in Object(i))for(let d of i)typeof r=="function"&&(d=r.call(i,d,d)),u.items.push(P0(d,null,s));return u}}jo.tag="tag:yaml.org,2002:set";const F0={collection:"map",identify:e=>e instanceof Set,nodeClass:jo,default:!1,tag:"tag:yaml.org,2002:set",createNode:(e,n,i)=>jo.from(e,n,i),resolve(e,n){if(Sl(e)){if(e.hasAllNullValues(!0))return Object.assign(new jo,e);n("Set items must all have null values")}else n("Expected a mapping for this tag");return e}};function Y0(e,n){const i=e[0],s=i==="-"||i==="+"?e.substring(1):e,r=d=>n?BigInt(d):Number(d),u=s.replace(/_/g,"").split(":").reduce((d,g)=>d*r(60)+r(g),r(0));return i==="-"?r(-1)*u:u}function iw(e){let{value:n}=e,i=d=>d;if(typeof n=="bigint")i=d=>BigInt(d);else if(isNaN(n)||!isFinite(n))return ia(e);let s="";n<0&&(s="-",n*=i(-1));const r=i(60),u=[n%r];return n<60?u.unshift(0):(n=(n-u[0])/r,u.unshift(n%r),n>=60&&(n=(n-u[0])/r,u.unshift(n))),s+u.map(d=>String(d).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}const sw={identify:e=>typeof e=="bigint"||Number.isInteger(e),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(e,n,{intAsBigInt:i})=>Y0(e,i),stringify:iw},ow={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:e=>Y0(e,!1),stringify:iw},ed={identify:e=>e instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(e){const n=e.match(ed.test);if(!n)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");const[,i,s,r,u,d,g]=n.map(Number),y=n[7]?Number((n[7]+"00").substr(1,3)):0;let v=Date.UTC(i,s-1,r,u||0,d||0,g||0,y);const w=n[8];if(w&&w!=="Z"){let S=Y0(w,!1);Math.abs(S)<30&&(S*=60),v-=6e4*S}return new Date(v)},stringify:({value:e})=>e?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""},qv=[Go,Ko,Yu,Xu,nw,aw,N$,A$,_$,C$,w$,S$,j$,K0,Ua,Q0,H0,F0,sw,ow,ed],Lv=new Map([["core",b$],["failsafe",[Go,Ko,Yu]],["json",x$],["yaml11",qv],["yaml-1.1",qv]]),$v={binary:K0,bool:V0,float:Zx,floatExp:Qx,floatNaN:Hx,floatTime:ow,int:Xx,intHex:Jx,intOct:Yx,intTime:sw,map:Go,merge:Ua,null:Xu,omap:Q0,pairs:H0,seq:Ko,set:F0,timestamp:ed},z$={"tag:yaml.org,2002:binary":K0,"tag:yaml.org,2002:merge":Ua,"tag:yaml.org,2002:omap":Q0,"tag:yaml.org,2002:pairs":H0,"tag:yaml.org,2002:set":F0,"tag:yaml.org,2002:timestamp":ed};function Gp(e,n,i){const s=Lv.get(n);if(s&&!e)return i&&!s.includes(Ua)?s.concat(Ua):s.slice();let r=s;if(!r)if(Array.isArray(e))r=[];else{const u=Array.from(Lv.keys()).filter(d=>d!=="yaml11").map(d=>JSON.stringify(d)).join(", ");throw new Error(`Unknown schema "${n}"; use one of ${u} or define customTags array`)}if(Array.isArray(e))for(const u of e)r=r.concat(u);else typeof e=="function"&&(r=e(r.slice()));return i&&(r=r.concat(Ua)),r.reduce((u,d)=>{const g=typeof d=="string"?$v[d]:d;if(!g){const y=JSON.stringify(d),v=Object.keys($v).map(w=>JSON.stringify(w)).join(", ");throw new Error(`Unknown custom tag ${y}; use one of ${v}`)}return u.includes(g)||u.push(g),u},[])}const E$=(e,n)=>e.key<n.key?-1:e.key>n.key?1:0;class X0{constructor({compat:n,customTags:i,merge:s,resolveKnownTags:r,schema:u,sortMapEntries:d,toStringDefaults:g}){this.compat=Array.isArray(n)?Gp(n,"compat"):n?Gp(null,n):null,this.name=typeof u=="string"&&u||"core",this.knownTags=r?z$:{},this.tags=Gp(i,this.name,s),this.toStringOptions=g??null,Object.defineProperty(this,Ni,{value:Go}),Object.defineProperty(this,ga,{value:Yu}),Object.defineProperty(this,Po,{value:Ko}),this.sortMapEntries=typeof d=="function"?d:d===!0?E$:null}clone(){const n=Object.create(X0.prototype,Object.getOwnPropertyDescriptors(this));return n.tags=this.tags.slice(),n}}function T$(e,n){const i=[];let s=n.directives===!0;if(n.directives!==!1&&e.directives){const y=e.directives.toString(e);y?(i.push(y),s=!0):e.directives.docStart&&(s=!0)}s&&i.push("---");const r=Px(e,n),{commentString:u}=r.options;if(e.commentBefore){i.length!==1&&i.unshift("");const y=u(e.commentBefore);i.unshift($a(y,""))}let d=!1,g=null;if(e.contents){if(Ct(e.contents)){if(e.contents.spaceBefore&&s&&i.push(""),e.contents.commentBefore){const w=u(e.contents.commentBefore);i.push($a(w,""))}r.forceBlockIndent=!!e.comment,g=e.contents.comment}const y=g?void 0:()=>d=!0;let v=Oo(e.contents,r,()=>g=null,y);g&&(v+=us(v,"",u(g))),(v[0]==="|"||v[0]===">")&&i[i.length-1]==="---"?i[i.length-1]=`--- ${v}`:i.push(v)}else i.push(Oo(e.contents,r));if(e.directives?.docEnd)if(e.comment){const y=u(e.comment);y.includes(`
|
|
118
118
|
`)?(i.push("..."),i.push($a(y,""))):i.push(`... ${y}`)}else i.push("...");else{let y=e.comment;y&&d&&(y=y.replace(/^\n+/,"")),y&&((!d||g)&&i[i.length-1]!==""&&i.push(""),i.push($a(u(y),"")))}return i.join(`
|
|
119
119
|
`)+`
|
|
120
|
-
`}class td{constructor(n,i,s){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Kn,{value:wf});let r=null;typeof i=="function"||Array.isArray(i)?r=i:s===void 0&&i&&(s=i,i=void 0);const u=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},s);this.options=u;let{version:d}=u;s?._directives?(this.directives=s._directives.atDocument(),this.directives.yaml.explicit&&(d=this.directives.yaml.version)):this.directives=new an({version:d}),this.setSchema(d,s),this.contents=n===void 0?null:this.createNode(n,r,s)}clone(){const n=Object.create(td.prototype,{[Kn]:{value:wf}});return n.commentBefore=this.commentBefore,n.comment=this.comment,n.errors=this.errors.slice(),n.warnings=this.warnings.slice(),n.options=Object.assign({},this.options),this.directives&&(n.directives=this.directives.clone()),n.schema=this.schema.clone(),n.contents=Ct(this.contents)?this.contents.clone(n.schema):this.contents,this.range&&(n.range=this.range.slice()),n}add(n){co(this.contents)&&this.contents.add(n)}addIn(n,i){co(this.contents)&&this.contents.addIn(n,i)}createAlias(n,i){if(!n.anchor){const s=qx(this);n.anchor=!i||s.has(i)?Lx(i||"a",s):i}return new I0(n.anchor)}createNode(n,i,s){let r;if(typeof i=="function")n=i.call({"":n},"",n),r=i;else if(Array.isArray(i)){const C=L=>typeof L=="number"||L instanceof String||L instanceof Number,O=i.filter(C).map(String);O.length>0&&(i=i.concat(O)),r=i}else s===void 0&&i&&(s=i,i=void 0);const{aliasDuplicateObjects:u,anchorPrefix:d,flow:g,keepUndefined:y,onTagObj:v,tag:w}=s??{},{onAnchor:S,setAnchors:j,sourceObjects:_}=
|
|
120
|
+
`}class td{constructor(n,i,s){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Kn,{value:wf});let r=null;typeof i=="function"||Array.isArray(i)?r=i:s===void 0&&i&&(s=i,i=void 0);const u=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},s);this.options=u;let{version:d}=u;s?._directives?(this.directives=s._directives.atDocument(),this.directives.yaml.explicit&&(d=this.directives.yaml.version)):this.directives=new an({version:d}),this.setSchema(d,s),this.contents=n===void 0?null:this.createNode(n,r,s)}clone(){const n=Object.create(td.prototype,{[Kn]:{value:wf}});return n.commentBefore=this.commentBefore,n.comment=this.comment,n.errors=this.errors.slice(),n.warnings=this.warnings.slice(),n.options=Object.assign({},this.options),this.directives&&(n.directives=this.directives.clone()),n.schema=this.schema.clone(),n.contents=Ct(this.contents)?this.contents.clone(n.schema):this.contents,this.range&&(n.range=this.range.slice()),n}add(n){co(this.contents)&&this.contents.add(n)}addIn(n,i){co(this.contents)&&this.contents.addIn(n,i)}createAlias(n,i){if(!n.anchor){const s=qx(this);n.anchor=!i||s.has(i)?Lx(i||"a",s):i}return new I0(n.anchor)}createNode(n,i,s){let r;if(typeof i=="function")n=i.call({"":n},"",n),r=i;else if(Array.isArray(i)){const C=L=>typeof L=="number"||L instanceof String||L instanceof Number,O=i.filter(C).map(String);O.length>0&&(i=i.concat(O)),r=i}else s===void 0&&i&&(s=i,i=void 0);const{aliasDuplicateObjects:u,anchorPrefix:d,flow:g,keepUndefined:y,onTagObj:v,tag:w}=s??{},{onAnchor:S,setAnchors:j,sourceObjects:_}=i$(this,d||"a"),E={aliasDuplicateObjects:u??!0,keepUndefined:y??!1,onAnchor:S,onTagObj:v,replacer:r,schema:this.schema,sourceObjects:_},A=pl(n,w,E);return g&&_t(A)&&(A.flow=!0),j(),A}createPair(n,i,s={}){const r=this.createNode(n,null,s),u=this.createNode(i,null,s);return new ln(r,u)}delete(n){return co(this.contents)?this.contents.delete(n):!1}deleteIn(n){return el(n)?this.contents==null?!1:(this.contents=null,!0):co(this.contents)?this.contents.deleteIn(n):!1}get(n,i){return _t(this.contents)?this.contents.get(n,i):void 0}getIn(n,i){return el(n)?!i&&ut(this.contents)?this.contents.value:this.contents:_t(this.contents)?this.contents.getIn(n,i):void 0}has(n){return _t(this.contents)?this.contents.has(n):!1}hasIn(n){return el(n)?this.contents!==void 0:_t(this.contents)?this.contents.hasIn(n):!1}set(n,i){this.contents==null?this.contents=ju(this.schema,[n],i):co(this.contents)&&this.contents.set(n,i)}setIn(n,i){el(n)?this.contents=i:this.contents==null?this.contents=ju(this.schema,Array.from(n),i):co(this.contents)&&this.contents.setIn(n,i)}setSchema(n,i={}){typeof n=="number"&&(n=String(n));let s;switch(n){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new an({version:"1.1"}),s={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=n:this.directives=new an({version:n}),s={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,s=null;break;default:{const r=JSON.stringify(n);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${r}`)}}if(i.schema instanceof Object)this.schema=i.schema;else if(s)this.schema=new X0(Object.assign(s,i));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:n,jsonArg:i,mapAsMap:s,maxAliasCount:r,onAnchor:u,reviver:d}={}){const g={anchors:new Map,doc:this,keep:!n,mapAsMap:s===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},y=Vn(this.contents,i??"",g);if(typeof u=="function")for(const{count:v,res:w}of g.anchors.values())u(w,v);return typeof d=="function"?bo(d,{"":y},"",y):y}toJSON(n,i){return this.toJS({json:!0,jsonArg:n,mapAsMap:!1,onAnchor:i})}toString(n={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in n&&(!Number.isInteger(n.indent)||Number(n.indent)<=0)){const i=JSON.stringify(n.indent);throw new Error(`"indent" option must be a positive integer, not ${i}`)}return T$(this,n)}}function co(e){if(_t(e))return!0;throw new Error("Expected a YAML collection as document contents")}class rw extends Error{constructor(n,i,s,r){super(),this.name=n,this.code=s,this.message=r,this.pos=i}}class tu extends rw{constructor(n,i,s){super("YAMLParseError",n,i,s)}}class D$ extends rw{constructor(n,i,s){super("YAMLWarning",n,i,s)}}const Iv=(e,n)=>i=>{if(i.pos[0]===-1)return;i.linePos=i.pos.map(g=>n.linePos(g));const{line:s,col:r}=i.linePos[0];i.message+=` at line ${s}, column ${r}`;let u=r-1,d=e.substring(n.lineStarts[s-1],n.lineStarts[s]).replace(/[\n\r]+$/,"");if(u>=60&&d.length>80){const g=Math.min(u-39,d.length-79);d="…"+d.substring(g),u-=g-1}if(d.length>80&&(d=d.substring(0,79)+"…"),s>1&&/^ *$/.test(d.substring(0,u))){let g=e.substring(n.lineStarts[s-2],n.lineStarts[s-1]);g.length>80&&(g=g.substring(0,79)+`…
|
|
121
121
|
`),d=g+d}if(/[^ ]/.test(d)){let g=1;const y=i.linePos[1];y?.line===s&&y.col>r&&(g=Math.max(1,Math.min(y.col-r,80-u)));const v=" ".repeat(u)+"^".repeat(g);i.message+=`:
|
|
122
122
|
|
|
123
123
|
${d}
|
|
124
124
|
${v}
|
|
125
125
|
`}};function Ro(e,{flow:n,indicator:i,next:s,offset:r,onError:u,parentIndent:d,startOnNewline:g}){let y=!1,v=g,w=g,S="",j="",_=!1,E=!1,A=null,C=null,O=null,L=null,G=null,P=null,H=null;for(const $ of e)switch(E&&($.type!=="space"&&$.type!=="newline"&&$.type!=="comma"&&u($.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),E=!1),A&&(v&&$.type!=="comment"&&$.type!=="newline"&&u(A,"TAB_AS_INDENT","Tabs are not allowed as indentation"),A=null),$.type){case"space":!n&&(i!=="doc-start"||s?.type!=="flow-collection")&&$.source.includes(" ")&&(A=$),w=!0;break;case"comment":{w||u($,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");const fe=$.source.substring(1)||" ";S?S+=j+fe:S=fe,j="",v=!1;break}case"newline":v?S?S+=$.source:(!P||i!=="seq-item-ind")&&(y=!0):j+=$.source,v=!0,_=!0,(C||O)&&(L=$),w=!0;break;case"anchor":C&&u($,"MULTIPLE_ANCHORS","A node can have at most one anchor"),$.source.endsWith(":")&&u($.offset+$.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),C=$,H??(H=$.offset),v=!1,w=!1,E=!0;break;case"tag":{O&&u($,"MULTIPLE_TAGS","A node can have at most one tag"),O=$,H??(H=$.offset),v=!1,w=!1,E=!0;break}case i:(C||O)&&u($,"BAD_PROP_ORDER",`Anchors and tags must be after the ${$.source} indicator`),P&&u($,"UNEXPECTED_TOKEN",`Unexpected ${$.source} in ${n??"collection"}`),P=$,v=i==="seq-item-ind"||i==="explicit-key-ind",w=!1;break;case"comma":if(n){G&&u($,"UNEXPECTED_TOKEN",`Unexpected , in ${n}`),G=$,v=!1,w=!1;break}default:u($,"UNEXPECTED_TOKEN",`Unexpected ${$.type} token`),v=!1,w=!1}const ae=e[e.length-1],R=ae?ae.offset+ae.source.length:r;return E&&s&&s.type!=="space"&&s.type!=="newline"&&s.type!=="comma"&&(s.type!=="scalar"||s.source!=="")&&u(s.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),A&&(v&&A.indent<=d||s?.type==="block-map"||s?.type==="block-seq")&&u(A,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:G,found:P,spaceBefore:y,comment:S,hasNewline:_,anchor:C,tag:O,newlineAfterProp:L,end:R,start:H??R}}function fl(e){if(!e)return null;switch(e.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(e.source.includes(`
|
|
126
|
-
`))return!0;if(e.end){for(const n of e.end)if(n.type==="newline")return!0}return!1;case"flow-collection":for(const n of e.items){for(const i of n.start)if(i.type==="newline")return!0;if(n.sep){for(const i of n.sep)if(i.type==="newline")return!0}if(fl(n.key)||fl(n.value))return!0}return!1;default:return!0}}function Af(e,n,i){if(n?.type==="flow-collection"){const s=n.end[0];s.indent===e&&(s.source==="]"||s.source==="}")&&fl(n)&&i(s,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function lw(e,n,i){const{uniqueKeys:s}=e.options;if(s===!1)return!1;const r=typeof s=="function"?s:(u,d)=>u===d||ut(u)&&ut(d)&&u.value===d.value;return n.some(u=>r(u.key,i))}const Uv="All mapping items must start at the same column";function
|
|
126
|
+
`))return!0;if(e.end){for(const n of e.end)if(n.type==="newline")return!0}return!1;case"flow-collection":for(const n of e.items){for(const i of n.start)if(i.type==="newline")return!0;if(n.sep){for(const i of n.sep)if(i.type==="newline")return!0}if(fl(n.key)||fl(n.value))return!0}return!1;default:return!0}}function Af(e,n,i){if(n?.type==="flow-collection"){const s=n.end[0];s.indent===e&&(s.source==="]"||s.source==="}")&&fl(n)&&i(s,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function lw(e,n,i){const{uniqueKeys:s}=e.options;if(s===!1)return!1;const r=typeof s=="function"?s:(u,d)=>u===d||ut(u)&&ut(d)&&u.value===d.value;return n.some(u=>r(u.key,i))}const Uv="All mapping items must start at the same column";function O$({composeNode:e,composeEmptyNode:n},i,s,r,u){const d=u?.nodeClass??Pn,g=new d(i.schema);i.atRoot&&(i.atRoot=!1);let y=s.offset,v=null;for(const w of s.items){const{start:S,key:j,sep:_,value:E}=w,A=Ro(S,{indicator:"explicit-key-ind",next:j??_?.[0],offset:y,onError:r,parentIndent:s.indent,startOnNewline:!0}),C=!A.found;if(C){if(j&&(j.type==="block-seq"?r(y,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in j&&j.indent!==s.indent&&r(y,"BAD_INDENT",Uv)),!A.anchor&&!A.tag&&!_){v=A.end,A.comment&&(g.comment?g.comment+=`
|
|
127
127
|
`+A.comment:g.comment=A.comment);continue}(A.newlineAfterProp||fl(j))&&r(j??S[S.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else A.found?.indent!==s.indent&&r(y,"BAD_INDENT",Uv);i.atKey=!0;const O=A.end,L=j?e(i,j,A,r):n(i,O,S,null,A,r);i.schema.compat&&Af(s.indent,j,r),i.atKey=!1,lw(i,g.items,L)&&r(O,"DUPLICATE_KEY","Map keys must be unique");const G=Ro(_??[],{indicator:"map-value-ind",next:E,offset:L.range[2],onError:r,parentIndent:s.indent,startOnNewline:!j||j.type==="block-scalar"});if(y=G.end,G.found){C&&(E?.type==="block-map"&&!G.hasNewline&&r(y,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),i.options.strict&&A.start<G.found.offset-1024&&r(L.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));const P=E?e(i,E,G,r):n(i,y,_,null,G,r);i.schema.compat&&Af(s.indent,E,r),y=P.range[2];const H=new ln(L,P);i.options.keepSourceTokens&&(H.srcToken=w),g.items.push(H)}else{C&&r(L.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),G.comment&&(L.comment?L.comment+=`
|
|
128
|
-
`+G.comment:L.comment=G.comment);const P=new ln(L);i.options.keepSourceTokens&&(P.srcToken=w),g.items.push(P)}}return v&&v<y&&r(v,"IMPOSSIBLE","Map comment with trailing content"),g.range=[s.offset,y,v??y],g}function
|
|
128
|
+
`+G.comment:L.comment=G.comment);const P=new ln(L);i.options.keepSourceTokens&&(P.srcToken=w),g.items.push(P)}}return v&&v<y&&r(v,"IMPOSSIBLE","Map comment with trailing content"),g.range=[s.offset,y,v??y],g}function R$({composeNode:e,composeEmptyNode:n},i,s,r,u){const d=u?.nodeClass??fs,g=new d(i.schema);i.atRoot&&(i.atRoot=!1),i.atKey&&(i.atKey=!1);let y=s.offset,v=null;for(const{start:w,value:S}of s.items){const j=Ro(w,{indicator:"seq-item-ind",next:S,offset:y,onError:r,parentIndent:s.indent,startOnNewline:!0});if(!j.found)if(j.anchor||j.tag||S)S?.type==="block-seq"?r(j.end,"BAD_INDENT","All sequence items must start at the same column"):r(y,"MISSING_CHAR","Sequence item without - indicator");else{v=j.end,j.comment&&(g.comment=j.comment);continue}const _=S?e(i,S,j,r):n(i,j.end,w,null,j,r);i.schema.compat&&Af(s.indent,S,r),y=_.range[2],g.items.push(_)}return g.range=[s.offset,y,v??y],g}function Al(e,n,i,s){let r="";if(e){let u=!1,d="";for(const g of e){const{source:y,type:v}=g;switch(v){case"space":u=!0;break;case"comment":{i&&!u&&s(g,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");const w=y.substring(1)||" ";r?r+=d+w:r=w,d="";break}case"newline":r&&(d+=y),u=!0;break;default:s(g,"UNEXPECTED_TOKEN",`Unexpected ${v} at node end`)}n+=y.length}}return{comment:r,offset:n}}const Kp="Block collections are not allowed within flow collections",Hp=e=>e&&(e.type==="block-map"||e.type==="block-seq");function M$({composeNode:e,composeEmptyNode:n},i,s,r,u){const d=s.start.source==="{",g=d?"flow map":"flow sequence",y=u?.nodeClass??(d?Pn:fs),v=new y(i.schema);v.flow=!0;const w=i.atRoot;w&&(i.atRoot=!1),i.atKey&&(i.atKey=!1);let S=s.offset+s.start.source.length;for(let C=0;C<s.items.length;++C){const O=s.items[C],{start:L,key:G,sep:P,value:H}=O,ae=Ro(L,{flow:g,indicator:"explicit-key-ind",next:G??P?.[0],offset:S,onError:r,parentIndent:s.indent,startOnNewline:!1});if(!ae.found){if(!ae.anchor&&!ae.tag&&!P&&!H){C===0&&ae.comma?r(ae.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${g}`):C<s.items.length-1&&r(ae.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${g}`),ae.comment&&(v.comment?v.comment+=`
|
|
129
129
|
`+ae.comment:v.comment=ae.comment),S=ae.end;continue}!d&&i.options.strict&&fl(G)&&r(G,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(C===0)ae.comma&&r(ae.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${g}`);else if(ae.comma||r(ae.start,"MISSING_CHAR",`Missing , between ${g} items`),ae.comment){let R="";e:for(const $ of L)switch($.type){case"comma":case"space":break;case"comment":R=$.source.substring(1);break e;default:break e}if(R){let $=v.items[v.items.length-1];zt($)&&($=$.value??$.key),$.comment?$.comment+=`
|
|
130
130
|
`+R:$.comment=R,ae.comment=ae.comment.substring(R.length+1)}}if(!d&&!P&&!ae.found){const R=H?e(i,H,ae,r):n(i,ae.end,P,null,ae,r);v.items.push(R),S=R.range[2],Hp(H)&&r(R.range,"BLOCK_IN_FLOW",Kp)}else{i.atKey=!0;const R=ae.end,$=G?e(i,G,ae,r):n(i,R,L,null,ae,r);Hp(G)&&r($.range,"BLOCK_IN_FLOW",Kp),i.atKey=!1;const fe=Ro(P??[],{flow:g,indicator:"map-value-ind",next:H,offset:$.range[2],onError:r,parentIndent:s.indent,startOnNewline:!1});if(fe.found){if(!d&&!ae.found&&i.options.strict){if(P)for(const pe of P){if(pe===fe.found)break;if(pe.type==="newline"){r(pe,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}ae.start<fe.found.offset-1024&&r(fe.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else H&&("source"in H&&H.source?.[0]===":"?r(H,"MISSING_CHAR",`Missing space after : in ${g}`):r(fe.start,"MISSING_CHAR",`Missing , or : between ${g} items`));const ue=H?e(i,H,fe,r):fe.found?n(i,fe.end,P,null,fe,r):null;ue?Hp(H)&&r(ue.range,"BLOCK_IN_FLOW",Kp):fe.comment&&($.comment?$.comment+=`
|
|
131
131
|
`+fe.comment:$.comment=fe.comment);const me=new ln($,ue);if(i.options.keepSourceTokens&&(me.srcToken=O),d){const pe=v;lw(i,pe.items,$)&&r(R,"DUPLICATE_KEY","Map keys must be unique"),pe.items.push(me)}else{const pe=new Pn(i.schema);pe.flow=!0,pe.items.push(me);const Ge=(ue??$).range;pe.range=[$.range[0],Ge[1],Ge[2]],v.items.push(pe)}S=ue?ue.range[2]:fe.end}}const j=d?"}":"]",[_,...E]=s.end;let A=S;if(_?.source===j)A=_.offset+_.source.length;else{const C=g[0].toUpperCase()+g.substring(1),O=w?`${C} must end with a ${j}`:`${C} in block collection must be sufficiently indented and end with a ${j}`;r(S,w?"MISSING_CHAR":"BAD_INDENT",O),_&&_.source.length!==1&&E.unshift(_)}if(E.length>0){const C=Al(E,A,i.options.strict,r);C.comment&&(v.comment?v.comment+=`
|
|
132
|
-
`+C.comment:v.comment=C.comment),v.range=[s.offset,A,C.offset]}else v.range=[s.offset,A,A];return v}function Qp(e,n,i,s,r,u){const d=i.type==="block-map"?
|
|
132
|
+
`+C.comment:v.comment=C.comment),v.range=[s.offset,A,C.offset]}else v.range=[s.offset,A,A];return v}function Qp(e,n,i,s,r,u){const d=i.type==="block-map"?O$(e,n,i,s,u):i.type==="block-seq"?R$(e,n,i,s,u):M$(e,n,i,s,u),g=d.constructor;return r==="!"||r===g.tagName?(d.tag=g.tagName,d):(r&&(d.tag=r),d)}function B$(e,n,i,s,r){const u=s.tag,d=u?n.directives.tagName(u.source,j=>r(u,"TAG_RESOLVE_FAILED",j)):null;if(i.type==="block-seq"){const{anchor:j,newlineAfterProp:_}=s,E=j&&u?j.offset>u.offset?j:u:j??u;E&&(!_||_.offset<E.offset)&&r(E,"MISSING_CHAR","Missing newline after block sequence props")}const g=i.type==="block-map"?"map":i.type==="block-seq"?"seq":i.start.source==="{"?"map":"seq";if(!u||!d||d==="!"||d===Pn.tagName&&g==="map"||d===fs.tagName&&g==="seq")return Qp(e,n,i,r,d);let y=n.schema.tags.find(j=>j.tag===d&&j.collection===g);if(!y){const j=n.schema.knownTags[d];if(j?.collection===g)n.schema.tags.push(Object.assign({},j,{default:!1})),y=j;else return j?r(u,"BAD_COLLECTION_TYPE",`${j.tag} used for ${g} collection, but expects ${j.collection??"scalar"}`,!0):r(u,"TAG_RESOLVE_FAILED",`Unresolved tag: ${d}`,!0),Qp(e,n,i,r,d)}const v=Qp(e,n,i,r,d,y),w=y.resolve?.(v,j=>r(u,"TAG_RESOLVE_FAILED",j),n.options)??v,S=Ct(w)?w:new Oe(w);return S.range=v.range,S.tag=d,y?.format&&(S.format=y.format),S}function q$(e,n,i){const s=n.offset,r=L$(n,e.options.strict,i);if(!r)return{value:"",type:null,comment:"",range:[s,s,s]};const u=r.mode===">"?Oe.BLOCK_FOLDED:Oe.BLOCK_LITERAL,d=n.source?$$(n.source):[];let g=d.length;for(let A=d.length-1;A>=0;--A){const C=d[A][1];if(C===""||C==="\r")g=A;else break}if(g===0){const A=r.chomp==="+"&&d.length>0?`
|
|
133
133
|
`.repeat(Math.max(1,d.length-1)):"";let C=s+r.length;return n.source&&(C+=n.source.length),{value:A,type:u,comment:r.comment,range:[s,C,C]}}let y=n.indent+r.indent,v=n.offset+r.length,w=0;for(let A=0;A<g;++A){const[C,O]=d[A];if(O===""||O==="\r")r.indent===0&&C.length>y&&(y=C.length);else{C.length<y&&i(v+C.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),r.indent===0&&(y=C.length),w=A,y===0&&!e.atRoot&&i(v,"BAD_INDENT","Block scalar values in collections must be indented");break}v+=C.length+O.length+1}for(let A=d.length-1;A>=g;--A)d[A][0].length>y&&(g=A+1);let S="",j="",_=!1;for(let A=0;A<w;++A)S+=d[A][0].slice(y)+`
|
|
134
134
|
`;for(let A=w;A<g;++A){let[C,O]=d[A];v+=C.length+O.length+1;const L=O[O.length-1]==="\r";if(L&&(O=O.slice(0,-1)),O&&C.length<y){const P=`Block scalar lines must not be less indented than their ${r.indent?"explicit indentation indicator":"first line"}`;i(v-O.length-(L?2:1),"BAD_INDENT",P),C=""}u===Oe.BLOCK_LITERAL?(S+=j+C.slice(y)+O,j=`
|
|
135
135
|
`):C.length>y||O[0]===" "?(j===" "?j=`
|
|
@@ -144,33 +144,33 @@ ${v}
|
|
|
144
144
|
`+d[A][0].slice(y);S[S.length-1]!==`
|
|
145
145
|
`&&(S+=`
|
|
146
146
|
`);break;default:S+=`
|
|
147
|
-
`}const E=s+r.length+n.source.length;return{value:S,type:u,comment:r.comment,range:[s,E,E]}}function
|
|
147
|
+
`}const E=s+r.length+n.source.length;return{value:S,type:u,comment:r.comment,range:[s,E,E]}}function L$({offset:e,props:n},i,s){if(n[0].type!=="block-scalar-header")return s(n[0],"IMPOSSIBLE","Block scalar header not found"),null;const{source:r}=n[0],u=r[0];let d=0,g="",y=-1;for(let j=1;j<r.length;++j){const _=r[j];if(!g&&(_==="-"||_==="+"))g=_;else{const E=Number(_);!d&&E?d=E:y===-1&&(y=e+j)}}y!==-1&&s(y,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${r}`);let v=!1,w="",S=r.length;for(let j=1;j<n.length;++j){const _=n[j];switch(_.type){case"space":v=!0;case"newline":S+=_.source.length;break;case"comment":i&&!v&&s(_,"MISSING_CHAR","Comments must be separated from other tokens by white space characters"),S+=_.source.length,w=_.source.substring(1);break;case"error":s(_,"UNEXPECTED_TOKEN",_.message),S+=_.source.length;break;default:{const E=`Unexpected token in block scalar header: ${_.type}`;s(_,"UNEXPECTED_TOKEN",E);const A=_.source;A&&typeof A=="string"&&(S+=A.length)}}}return{mode:u,indent:d,chomp:g,comment:w,length:S}}function $$(e){const n=e.split(/\n( *)/),i=n[0],s=i.match(/^( *)/),u=[s?.[1]?[s[1],i.slice(s[1].length)]:["",i]];for(let d=1;d<n.length;d+=2)u.push([n[d],n[d+1]]);return u}function I$(e,n,i){const{offset:s,type:r,source:u,end:d}=e;let g,y;const v=(j,_,E)=>i(s+j,_,E);switch(r){case"scalar":g=Oe.PLAIN,y=U$(u,v);break;case"single-quoted-scalar":g=Oe.QUOTE_SINGLE,y=P$(u,v);break;case"double-quoted-scalar":g=Oe.QUOTE_DOUBLE,y=V$(u,v);break;default:return i(e,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${r}`),{value:"",type:null,comment:"",range:[s,s+u.length,s+u.length]}}const w=s+u.length,S=Al(d,w,n,i);return{value:y,type:g,comment:S.comment,range:[s,w,S.offset]}}function U$(e,n){let i="";switch(e[0]){case" ":i="a tab character";break;case",":i="flow indicator character ,";break;case"%":i="directive indicator character %";break;case"|":case">":{i=`block scalar indicator ${e[0]}`;break}case"@":case"`":{i=`reserved character ${e[0]}`;break}}return i&&n(0,"BAD_SCALAR_START",`Plain value cannot start with ${i}`),cw(e)}function P$(e,n){return(e[e.length-1]!=="'"||e.length===1)&&n(e.length,"MISSING_CHAR","Missing closing 'quote"),cw(e.slice(1,-1)).replace(/''/g,"'")}function cw(e){let n,i;try{n=new RegExp(`(.*?)(?<![ ])[ ]*\r?
|
|
148
148
|
`,"sy"),i=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
|
|
149
149
|
`,"sy")}catch{n=/(.*?)[ \t]*\r?\n/sy,i=/[ \t]*(.*?)[ \t]*\r?\n/sy}let s=n.exec(e);if(!s)return e;let r=s[1],u=" ",d=n.lastIndex;for(i.lastIndex=d;s=i.exec(e);)s[1]===""?u===`
|
|
150
150
|
`?r+=u:u=`
|
|
151
|
-
`:(r+=u+s[1],u=" "),d=i.lastIndex;const g=/[ \t]*(.*)/sy;return g.lastIndex=d,s=g.exec(e),r+u+(s?.[1]??"")}function
|
|
151
|
+
`:(r+=u+s[1],u=" "),d=i.lastIndex;const g=/[ \t]*(.*)/sy;return g.lastIndex=d,s=g.exec(e),r+u+(s?.[1]??"")}function V$(e,n){let i="";for(let s=1;s<e.length-1;++s){const r=e[s];if(!(r==="\r"&&e[s+1]===`
|
|
152
152
|
`))if(r===`
|
|
153
|
-
`){const{fold:u,offset:d}=
|
|
153
|
+
`){const{fold:u,offset:d}=G$(e,s);i+=u,s=d}else if(r==="\\"){let u=e[++s];const d=K$[u];if(d)i+=d;else if(u===`
|
|
154
154
|
`)for(u=e[s+1];u===" "||u===" ";)u=e[++s+1];else if(u==="\r"&&e[s+1]===`
|
|
155
|
-
`)for(u=e[++s+1];u===" "||u===" ";)u=e[++s+1];else if(u==="x"||u==="u"||u==="U"){const g={x:2,u:4,U:8}[u];i+=
|
|
155
|
+
`)for(u=e[++s+1];u===" "||u===" ";)u=e[++s+1];else if(u==="x"||u==="u"||u==="U"){const g={x:2,u:4,U:8}[u];i+=H$(e,s+1,g,n),s+=g}else{const g=e.substr(s-1,2);n(s-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${g}`),i+=g}}else if(r===" "||r===" "){const u=s;let d=e[s+1];for(;d===" "||d===" ";)d=e[++s+1];d!==`
|
|
156
156
|
`&&!(d==="\r"&&e[s+2]===`
|
|
157
|
-
`)&&(i+=s>u?e.slice(u,s+1):r)}else i+=r}return(e[e.length-1]!=='"'||e.length===1)&&n(e.length,"MISSING_CHAR",'Missing closing "quote'),i}function
|
|
157
|
+
`)&&(i+=s>u?e.slice(u,s+1):r)}else i+=r}return(e[e.length-1]!=='"'||e.length===1)&&n(e.length,"MISSING_CHAR",'Missing closing "quote'),i}function G$(e,n){let i="",s=e[n+1];for(;(s===" "||s===" "||s===`
|
|
158
158
|
`||s==="\r")&&!(s==="\r"&&e[n+2]!==`
|
|
159
159
|
`);)s===`
|
|
160
160
|
`&&(i+=`
|
|
161
|
-
`),n+=1,s=e[n+1];return i||(i=" "),{fold:i,offset:n}}const
|
|
162
|
-
`,r:"\r",t:" ",v:"\v",N:"
",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function
|
|
161
|
+
`),n+=1,s=e[n+1];return i||(i=" "),{fold:i,offset:n}}const K$={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
|
|
162
|
+
`,r:"\r",t:" ",v:"\v",N:"
",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function H$(e,n,i,s){const r=e.substr(n,i),d=r.length===i&&/^[0-9a-fA-F]+$/.test(r)?parseInt(r,16):NaN;if(isNaN(d)){const g=e.substr(n-2,i+2);return s(n-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${g}`),g}return String.fromCodePoint(d)}function uw(e,n,i,s){const{value:r,type:u,comment:d,range:g}=n.type==="block-scalar"?q$(e,n,s):I$(n,e.options.strict,s),y=i?e.directives.tagName(i.source,S=>s(i,"TAG_RESOLVE_FAILED",S)):null;let v;e.options.stringKeys&&e.atKey?v=e.schema[ga]:y?v=Q$(e.schema,r,y,i,s):n.type==="scalar"?v=Z$(e,r,n,s):v=e.schema[ga];let w;try{const S=v.resolve(r,j=>s(i??n,"TAG_RESOLVE_FAILED",j),e.options);w=ut(S)?S:new Oe(S)}catch(S){const j=S instanceof Error?S.message:String(S);s(i??n,"TAG_RESOLVE_FAILED",j),w=new Oe(r)}return w.range=g,w.source=r,u&&(w.type=u),y&&(w.tag=y),v.format&&(w.format=v.format),d&&(w.comment=d),w}function Q$(e,n,i,s,r){if(i==="!")return e[ga];const u=[];for(const g of e.tags)if(!g.collection&&g.tag===i)if(g.default&&g.test)u.push(g);else return g;for(const g of u)if(g.test?.test(n))return g;const d=e.knownTags[i];return d&&!d.collection?(e.tags.push(Object.assign({},d,{default:!1,test:void 0})),d):(r(s,"TAG_RESOLVE_FAILED",`Unresolved tag: ${i}`,i!=="tag:yaml.org,2002:str"),e[ga])}function Z$({atKey:e,directives:n,schema:i},s,r,u){const d=i.tags.find(g=>(g.default===!0||e&&g.default==="key")&&g.test?.test(s))||i[ga];if(i.compat){const g=i.compat.find(y=>y.default&&y.test?.test(s))??i[ga];if(d.tag!==g.tag){const y=n.tagString(d.tag),v=n.tagString(g.tag),w=`Value may be parsed as either ${y} or ${v}`;u(r,"TAG_RESOLVE_FAILED",w,!0)}}return d}function F$(e,n,i){if(n){i??(i=n.length);for(let s=i-1;s>=0;--s){let r=n[s];switch(r.type){case"space":case"comment":case"newline":e-=r.source.length;continue}for(r=n[++s];r?.type==="space";)e+=r.source.length,r=n[++s];break}}return e}const Y$={composeNode:dw,composeEmptyNode:J0};function dw(e,n,i,s){const r=e.atKey,{spaceBefore:u,comment:d,anchor:g,tag:y}=i;let v,w=!0;switch(n.type){case"alias":v=X$(e,n,s),(g||y)&&s(n,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":v=uw(e,n,y,s),g&&(v.anchor=g.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":v=B$(Y$,e,n,i,s),g&&(v.anchor=g.source.substring(1));break;default:{const S=n.type==="error"?n.message:`Unsupported token (type: ${n.type})`;s(n,"UNEXPECTED_TOKEN",S),v=J0(e,n.offset,void 0,null,i,s),w=!1}}return g&&v.anchor===""&&s(g,"BAD_ALIAS","Anchor cannot be an empty string"),r&&e.options.stringKeys&&(!ut(v)||typeof v.value!="string"||v.tag&&v.tag!=="tag:yaml.org,2002:str")&&s(y??n,"NON_STRING_KEY","With stringKeys, all keys must be strings"),u&&(v.spaceBefore=!0),d&&(n.type==="scalar"&&n.source===""?v.comment=d:v.commentBefore=d),e.options.keepSourceTokens&&w&&(v.srcToken=n),v}function J0(e,n,i,s,{spaceBefore:r,comment:u,anchor:d,tag:g,end:y},v){const w={type:"scalar",offset:F$(n,i,s),indent:-1,source:""},S=uw(e,w,g,v);return d&&(S.anchor=d.source.substring(1),S.anchor===""&&v(d,"BAD_ALIAS","Anchor cannot be an empty string")),r&&(S.spaceBefore=!0),u&&(S.comment=u,S.range[2]=y),S}function X$({options:e},{offset:n,source:i,end:s},r){const u=new I0(i.substring(1));u.source===""&&r(n,"BAD_ALIAS","Alias cannot be an empty string"),u.source.endsWith(":")&&r(n+i.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);const d=n+i.length,g=Al(s,d,e.strict,r);return u.range=[n,d,g.offset],g.comment&&(u.comment=g.comment),u}function J$(e,n,{offset:i,start:s,value:r,end:u},d){const g=Object.assign({_directives:n},e),y=new td(void 0,g),v={atKey:!1,atRoot:!0,directives:y.directives,options:y.options,schema:y.schema},w=Ro(s,{indicator:"doc-start",next:r??u?.[0],offset:i,onError:d,parentIndent:0,startOnNewline:!0});w.found&&(y.directives.docStart=!0,r&&(r.type==="block-map"||r.type==="block-seq")&&!w.hasNewline&&d(w.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),y.contents=r?dw(v,r,w,d):J0(v,w.end,s,null,w,d);const S=y.contents.range[2],j=Al(u,S,!1,d);return j.comment&&(y.comment=j.comment),y.range=[i,S,j.offset],y}function Jr(e){if(typeof e=="number")return[e,e+1];if(Array.isArray(e))return e.length===2?e:[e[0],e[1]];const{offset:n,source:i}=e;return[n,n+(typeof i=="string"?i.length:1)]}function Pv(e){let n="",i=!1,s=!1;for(let r=0;r<e.length;++r){const u=e[r];switch(u[0]){case"#":n+=(n===""?"":s?`
|
|
163
163
|
|
|
164
164
|
`:`
|
|
165
|
-
`)+(u.substring(1)||" "),i=!0,s=!1;break;case"%":e[r+1]?.[0]!=="#"&&(r+=1),i=!1;break;default:i||(s=!0),i=!1}}return{comment:n,afterEmptyLine:s}}class
|
|
165
|
+
`)+(u.substring(1)||" "),i=!0,s=!1;break;case"%":e[r+1]?.[0]!=="#"&&(r+=1),i=!1;break;default:i||(s=!0),i=!1}}return{comment:n,afterEmptyLine:s}}class W${constructor(n={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(i,s,r,u)=>{const d=Jr(i);u?this.warnings.push(new D$(d,s,r)):this.errors.push(new tu(d,s,r))},this.directives=new an({version:n.version||"1.2"}),this.options=n}decorate(n,i){const{comment:s,afterEmptyLine:r}=Pv(this.prelude);if(s){const u=n.contents;if(i)n.comment=n.comment?`${n.comment}
|
|
166
166
|
${s}`:s;else if(r||n.directives.docStart||!u)n.commentBefore=s;else if(_t(u)&&!u.flow&&u.items.length>0){let d=u.items[0];zt(d)&&(d=d.key);const g=d.commentBefore;d.commentBefore=g?`${s}
|
|
167
167
|
${g}`:s}else{const d=u.commentBefore;u.commentBefore=d?`${s}
|
|
168
|
-
${d}`:s}}i?(Array.prototype.push.apply(n.errors,this.errors),Array.prototype.push.apply(n.warnings,this.warnings)):(n.errors=this.errors,n.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:Pv(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(n,i=!1,s=-1){for(const r of n)yield*this.next(r);yield*this.end(i,s)}*next(n){switch(n.type){case"directive":this.directives.add(n.source,(i,s,r)=>{const u=Jr(n);u[0]+=i,this.onError(u,"BAD_DIRECTIVE",s,r)}),this.prelude.push(n.source),this.atDirectives=!0;break;case"document":{const i=
|
|
169
|
-
${i.comment}`:i.comment}this.doc.range[2]=i.offset;break}default:this.errors.push(new tu(Jr(n),"UNEXPECTED_TOKEN",`Unsupported token ${n.type}`))}}*end(n=!1,i=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(n){const s=Object.assign({_directives:this.directives},this.options),r=new td(void 0,s);this.atDirectives&&this.onError(i,"MISSING_CHAR","Missing directives-end indicator line"),r.range=[0,i,i],this.decorate(r,!1),yield r}}}const mw="\uFEFF",pw="",fw="",_f="";function
|
|
168
|
+
${d}`:s}}i?(Array.prototype.push.apply(n.errors,this.errors),Array.prototype.push.apply(n.warnings,this.warnings)):(n.errors=this.errors,n.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:Pv(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(n,i=!1,s=-1){for(const r of n)yield*this.next(r);yield*this.end(i,s)}*next(n){switch(n.type){case"directive":this.directives.add(n.source,(i,s,r)=>{const u=Jr(n);u[0]+=i,this.onError(u,"BAD_DIRECTIVE",s,r)}),this.prelude.push(n.source),this.atDirectives=!0;break;case"document":{const i=J$(this.options,this.directives,n,this.onError);this.atDirectives&&!i.directives.docStart&&this.onError(n,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(i,!1),this.doc&&(yield this.doc),this.doc=i,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(n.source);break;case"error":{const i=n.source?`${n.message}: ${JSON.stringify(n.source)}`:n.message,s=new tu(Jr(n),"UNEXPECTED_TOKEN",i);this.atDirectives||!this.doc?this.errors.push(s):this.doc.errors.push(s);break}case"doc-end":{if(!this.doc){const s="Unexpected doc-end without preceding document";this.errors.push(new tu(Jr(n),"UNEXPECTED_TOKEN",s));break}this.doc.directives.docEnd=!0;const i=Al(n.end,n.offset+n.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),i.comment){const s=this.doc.comment;this.doc.comment=s?`${s}
|
|
169
|
+
${i.comment}`:i.comment}this.doc.range[2]=i.offset;break}default:this.errors.push(new tu(Jr(n),"UNEXPECTED_TOKEN",`Unsupported token ${n.type}`))}}*end(n=!1,i=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(n){const s=Object.assign({_directives:this.directives},this.options),r=new td(void 0,s);this.atDirectives&&this.onError(i,"MISSING_CHAR","Missing directives-end indicator line"),r.range=[0,i,i],this.decorate(r,!1),yield r}}}const mw="\uFEFF",pw="",fw="",_f="";function eI(e){switch(e){case mw:return"byte-order-mark";case pw:return"doc-mode";case fw:return"flow-error-end";case _f:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
170
170
|
`:case`\r
|
|
171
171
|
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(e[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}function na(e){switch(e){case void 0:case" ":case`
|
|
172
|
-
`:case"\r":case" ":return!0;default:return!1}}const Vv=new Set("0123456789ABCDEFabcdef"),
|
|
173
|
-
\r `),Zp=e=>!e||
|
|
172
|
+
`:case"\r":case" ":return!0;default:return!1}}const Vv=new Set("0123456789ABCDEFabcdef"),tI=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),nu=new Set(",[]{}"),nI=new Set(` ,[]{}
|
|
173
|
+
\r `),Zp=e=>!e||nI.has(e);class aI{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(n,i=!1){if(n){if(typeof n!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+n:n,this.lineEndPos=null}this.atEnd=!i;let s=this.next??"stream";for(;s&&(i||this.hasChars(1));)s=yield*this.parseNext(s)}atLineEnd(){let n=this.pos,i=this.buffer[n];for(;i===" "||i===" ";)i=this.buffer[++n];return!i||i==="#"||i===`
|
|
174
174
|
`?!0:i==="\r"?this.buffer[n+1]===`
|
|
175
175
|
`:!1}charAt(n){return this.buffer[this.pos+n]}continueScalar(n){let i=this.buffer[n];if(this.indentNext>0){let s=0;for(;i===" ";)i=this.buffer[++s+n];if(i==="\r"){const r=this.buffer[s+n+1];if(r===`
|
|
176
176
|
`||!r&&!this.atEnd)return n+s+1}return i===`
|
|
@@ -185,13 +185,13 @@ ${i.comment}`:i.comment}this.doc.range[2]=i.offset;break}default:this.errors.pus
|
|
|
185
185
|
`&&u>=this.pos&&u+1+i>g)n=u;else break}while(!0);return yield _f,yield*this.pushToIndex(n+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){const n=this.flowLevel>0;let i=this.pos-1,s=this.pos-1,r;for(;r=this.buffer[++s];)if(r===":"){const u=this.buffer[s+1];if(na(u)||n&&nu.has(u))break;i=s}else if(na(r)){let u=this.buffer[s+1];if(r==="\r"&&(u===`
|
|
186
186
|
`?(s+=1,r=`
|
|
187
187
|
`,u=this.buffer[s+1]):i=s),u==="#"||n&&nu.has(u))break;if(r===`
|
|
188
|
-
`){const d=this.continueScalar(s+1);if(d===-1)break;s=Math.max(s,d-2)}}else{if(n&&nu.has(r))break;i=s}return!r&&!this.atEnd?this.setNext("plain-scalar"):(yield _f,yield*this.pushToIndex(i+1,!0),n?"flow":"doc")}*pushCount(n){return n>0?(yield this.buffer.substr(this.pos,n),this.pos+=n,n):0}*pushToIndex(n,i){const s=this.buffer.slice(this.pos,n);return s?(yield s,this.pos+=s.length,s.length):(i&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(Zp))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{const n=this.flowLevel>0,i=this.charAt(1);if(na(i)||n&&nu.has(i))return n?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let n=this.pos+2,i=this.buffer[n];for(;!na(i)&&i!==">";)i=this.buffer[++n];return yield*this.pushToIndex(i===">"?n+1:n,!1)}else{let n=this.pos+1,i=this.buffer[n];for(;i;)if(
|
|
188
|
+
`){const d=this.continueScalar(s+1);if(d===-1)break;s=Math.max(s,d-2)}}else{if(n&&nu.has(r))break;i=s}return!r&&!this.atEnd?this.setNext("plain-scalar"):(yield _f,yield*this.pushToIndex(i+1,!0),n?"flow":"doc")}*pushCount(n){return n>0?(yield this.buffer.substr(this.pos,n),this.pos+=n,n):0}*pushToIndex(n,i){const s=this.buffer.slice(this.pos,n);return s?(yield s,this.pos+=s.length,s.length):(i&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(Zp))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{const n=this.flowLevel>0,i=this.charAt(1);if(na(i)||n&&nu.has(i))return n?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let n=this.pos+2,i=this.buffer[n];for(;!na(i)&&i!==">";)i=this.buffer[++n];return yield*this.pushToIndex(i===">"?n+1:n,!1)}else{let n=this.pos+1,i=this.buffer[n];for(;i;)if(tI.has(i))i=this.buffer[++n];else if(i==="%"&&Vv.has(this.buffer[n+1])&&Vv.has(this.buffer[n+2]))i=this.buffer[n+=3];else break;return yield*this.pushToIndex(n,!1)}}*pushNewline(){const n=this.buffer[this.pos];return n===`
|
|
189
189
|
`?yield*this.pushCount(1):n==="\r"&&this.charAt(1)===`
|
|
190
|
-
`?yield*this.pushCount(2):0}*pushSpaces(n){let i=this.pos-1,s;do s=this.buffer[++i];while(s===" "||n&&s===" ");const r=i-this.pos;return r>0&&(yield this.buffer.substr(this.pos,r),this.pos=i),r}*pushUntil(n){let i=this.pos,s=this.buffer[i];for(;!n(s);)s=this.buffer[++i];return yield*this.pushToIndex(i,!1)}}class
|
|
190
|
+
`?yield*this.pushCount(2):0}*pushSpaces(n){let i=this.pos-1,s;do s=this.buffer[++i];while(s===" "||n&&s===" ");const r=i-this.pos;return r>0&&(yield this.buffer.substr(this.pos,r),this.pos=i),r}*pushUntil(n){let i=this.pos,s=this.buffer[i];for(;!n(s);)s=this.buffer[++i];return yield*this.pushToIndex(i,!1)}}class iI{constructor(){this.lineStarts=[],this.addNewLine=n=>this.lineStarts.push(n),this.linePos=n=>{let i=0,s=this.lineStarts.length;for(;i<s;){const u=i+s>>1;this.lineStarts[u]<n?i=u+1:s=u}if(this.lineStarts[i]===n)return{line:i+1,col:1};if(i===0)return{line:0,col:n};const r=this.lineStarts[i-1];return{line:i,col:n-r+1}}}}function ji(e,n){for(let i=0;i<e.length;++i)if(e[i].type===n)return!0;return!1}function Gv(e){for(let n=0;n<e.length;++n)switch(e[n].type){case"space":case"comment":case"newline":break;default:return n}return-1}function hw(e){switch(e?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function au(e){switch(e.type){case"document":return e.start;case"block-map":{const n=e.items[e.items.length-1];return n.sep??n.start}case"block-seq":return e.items[e.items.length-1].start;default:return[]}}function uo(e){if(e.length===0)return[];let n=e.length;e:for(;--n>=0;)switch(e[n].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;e[++n]?.type==="space";);return e.splice(n,e.length)}function Kv(e){if(e.start.type==="flow-seq-start")for(const n of e.items)n.sep&&!n.value&&!ji(n.start,"explicit-key-ind")&&!ji(n.sep,"map-value-ind")&&(n.key&&(n.value=n.key),delete n.key,hw(n.value)?n.value.end?Array.prototype.push.apply(n.value.end,n.sep):n.value.end=n.sep:Array.prototype.push.apply(n.start,n.sep),delete n.sep)}class sI{constructor(n){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new aI,this.onNewLine=n}*parse(n,i=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(const s of this.lexer.lex(n,i))yield*this.next(s);i||(yield*this.end())}*next(n){if(this.source=n,this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=n.length;return}const i=eI(n);if(i)if(i==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=i,yield*this.step(),i){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+n.length);break;case"space":this.atNewLine&&n[0]===" "&&(this.indent+=n.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=n.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=n.length}else{const s=`Not a YAML token: ${n}`;yield*this.pop({type:"error",offset:this.offset,message:s,source:n}),this.offset+=n.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){const n=this.peek(1);if(this.type==="doc-end"&&n?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!n)return yield*this.stream();switch(n.type){case"document":return yield*this.document(n);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(n);case"block-scalar":return yield*this.blockScalar(n);case"block-map":return yield*this.blockMap(n);case"block-seq":return yield*this.blockSequence(n);case"flow-collection":return yield*this.flowCollection(n);case"doc-end":return yield*this.documentEnd(n)}yield*this.pop()}peek(n){return this.stack[this.stack.length-n]}*pop(n){const i=n??this.stack.pop();if(!i)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield i;else{const s=this.peek(1);switch(i.type==="block-scalar"?i.indent="indent"in s?s.indent:0:i.type==="flow-collection"&&s.type==="document"&&(i.indent=0),i.type==="flow-collection"&&Kv(i),s.type){case"document":s.value=i;break;case"block-scalar":s.props.push(i);break;case"block-map":{const r=s.items[s.items.length-1];if(r.value){s.items.push({start:[],key:i,sep:[]}),this.onKeyLine=!0;return}else if(r.sep)r.value=i;else{Object.assign(r,{key:i,sep:[]}),this.onKeyLine=!r.explicitKey;return}break}case"block-seq":{const r=s.items[s.items.length-1];r.value?s.items.push({start:[],value:i}):r.value=i;break}case"flow-collection":{const r=s.items[s.items.length-1];!r||r.value?s.items.push({start:[],key:i,sep:[]}):r.sep?r.value=i:Object.assign(r,{key:i,sep:[]});return}default:yield*this.pop(),yield*this.pop(i)}if((s.type==="document"||s.type==="block-map"||s.type==="block-seq")&&(i.type==="block-map"||i.type==="block-seq")){const r=i.items[i.items.length-1];r&&!r.sep&&!r.value&&r.start.length>0&&Gv(r.start)===-1&&(i.indent===0||r.start.every(u=>u.type!=="comment"||u.indent<i.indent))&&(s.type==="document"?s.end=r.start:s.items.push({start:r.start}),i.items.splice(-1,1))}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{const n={type:"document",offset:this.offset,start:[]};this.type==="doc-start"&&n.start.push(this.sourceToken),this.stack.push(n);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(n){if(n.value)return yield*this.lineEnd(n);switch(this.type){case"doc-start":{Gv(n.start)!==-1?(yield*this.pop(),yield*this.step()):n.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":n.start.push(this.sourceToken);return}const i=this.startBlockValue(n);i?this.stack.push(i):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(n){if(this.type==="map-value-ind"){const i=au(this.peek(2)),s=uo(i);let r;n.end?(r=n.end,r.push(this.sourceToken),delete n.end):r=[this.sourceToken];const u={type:"block-map",offset:n.offset,indent:n.indent,items:[{start:s,key:n,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=u}else yield*this.lineEnd(n)}*blockScalar(n){switch(this.type){case"space":case"comment":case"newline":n.props.push(this.sourceToken);return;case"scalar":if(n.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let i=this.source.indexOf(`
|
|
191
191
|
`)+1;for(;i!==0;)this.onNewLine(this.offset+i),i=this.source.indexOf(`
|
|
192
192
|
`,i)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(n){const i=n.items[n.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,i.value){const s="end"in i.value?i.value.end:void 0;(Array.isArray(s)?s[s.length-1]:void 0)?.type==="comment"?s?.push(this.sourceToken):n.items.push({start:[this.sourceToken]})}else i.sep?i.sep.push(this.sourceToken):i.start.push(this.sourceToken);return;case"space":case"comment":if(i.value)n.items.push({start:[this.sourceToken]});else if(i.sep)i.sep.push(this.sourceToken);else{if(this.atIndentedComment(i.start,n.indent)){const r=n.items[n.items.length-2]?.value?.end;if(Array.isArray(r)){Array.prototype.push.apply(r,i.start),r.push(this.sourceToken),n.items.pop();return}}i.start.push(this.sourceToken)}return}if(this.indent>=n.indent){const s=!this.onKeyLine&&this.indent===n.indent,r=s&&(i.sep||i.explicitKey)&&this.type!=="seq-item-ind";let u=[];if(r&&i.sep&&!i.value){const d=[];for(let g=0;g<i.sep.length;++g){const y=i.sep[g];switch(y.type){case"newline":d.push(g);break;case"space":break;case"comment":y.indent>n.indent&&(d.length=0);break;default:d.length=0}}d.length>=2&&(u=i.sep.splice(d[1]))}switch(this.type){case"anchor":case"tag":r||i.value?(u.push(this.sourceToken),n.items.push({start:u}),this.onKeyLine=!0):i.sep?i.sep.push(this.sourceToken):i.start.push(this.sourceToken);return;case"explicit-key-ind":!i.sep&&!i.explicitKey?(i.start.push(this.sourceToken),i.explicitKey=!0):r||i.value?(u.push(this.sourceToken),n.items.push({start:u,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(i.explicitKey)if(i.sep)if(i.value)n.items.push({start:[],key:null,sep:[this.sourceToken]});else if(ji(i.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:u,key:null,sep:[this.sourceToken]}]});else if(hw(i.key)&&!ji(i.sep,"newline")){const d=uo(i.start),g=i.key,y=i.sep;y.push(this.sourceToken),delete i.key,delete i.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:d,key:g,sep:y}]})}else u.length>0?i.sep=i.sep.concat(u,this.sourceToken):i.sep.push(this.sourceToken);else if(ji(i.start,"newline"))Object.assign(i,{key:null,sep:[this.sourceToken]});else{const d=uo(i.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:d,key:null,sep:[this.sourceToken]}]})}else i.sep?i.value||r?n.items.push({start:u,key:null,sep:[this.sourceToken]}):ji(i.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):i.sep.push(this.sourceToken):Object.assign(i,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{const d=this.flowScalar(this.type);r||i.value?(n.items.push({start:u,key:d,sep:[]}),this.onKeyLine=!0):i.sep?this.stack.push(d):(Object.assign(i,{key:d,sep:[]}),this.onKeyLine=!0);return}default:{const d=this.startBlockValue(n);if(d){if(d.type==="block-seq"){if(!i.explicitKey&&i.sep&&!ji(i.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else s&&n.items.push({start:u});this.stack.push(d);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(n){const i=n.items[n.items.length-1];switch(this.type){case"newline":if(i.value){const s="end"in i.value?i.value.end:void 0;(Array.isArray(s)?s[s.length-1]:void 0)?.type==="comment"?s?.push(this.sourceToken):n.items.push({start:[this.sourceToken]})}else i.start.push(this.sourceToken);return;case"space":case"comment":if(i.value)n.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(i.start,n.indent)){const r=n.items[n.items.length-2]?.value?.end;if(Array.isArray(r)){Array.prototype.push.apply(r,i.start),r.push(this.sourceToken),n.items.pop();return}}i.start.push(this.sourceToken)}return;case"anchor":case"tag":if(i.value||this.indent<=n.indent)break;i.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==n.indent)break;i.value||ji(i.start,"seq-item-ind")?n.items.push({start:[this.sourceToken]}):i.start.push(this.sourceToken);return}if(this.indent>n.indent){const s=this.startBlockValue(n);if(s){this.stack.push(s);return}}yield*this.pop(),yield*this.step()}*flowCollection(n){const i=n.items[n.items.length-1];if(this.type==="flow-error-end"){let s;do yield*this.pop(),s=this.peek(1);while(s?.type==="flow-collection")}else if(n.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!i||i.sep?n.items.push({start:[this.sourceToken]}):i.start.push(this.sourceToken);return;case"map-value-ind":!i||i.value?n.items.push({start:[],key:null,sep:[this.sourceToken]}):i.sep?i.sep.push(this.sourceToken):Object.assign(i,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!i||i.value?n.items.push({start:[this.sourceToken]}):i.sep?i.sep.push(this.sourceToken):i.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{const r=this.flowScalar(this.type);!i||i.value?n.items.push({start:[],key:r,sep:[]}):i.sep?this.stack.push(r):Object.assign(i,{key:r,sep:[]});return}case"flow-map-end":case"flow-seq-end":n.end.push(this.sourceToken);return}const s=this.startBlockValue(n);s?this.stack.push(s):(yield*this.pop(),yield*this.step())}else{const s=this.peek(2);if(s.type==="block-map"&&(this.type==="map-value-ind"&&s.indent===n.indent||this.type==="newline"&&!s.items[s.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&s.type!=="flow-collection"){const r=au(s),u=uo(r);Kv(n);const d=n.end.splice(1,n.end.length);d.push(this.sourceToken);const g={type:"block-map",offset:n.offset,indent:n.indent,items:[{start:u,key:n,sep:d}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=g}else yield*this.lineEnd(n)}}flowScalar(n){if(this.onNewLine){let i=this.source.indexOf(`
|
|
193
193
|
`)+1;for(;i!==0;)this.onNewLine(this.offset+i),i=this.source.indexOf(`
|
|
194
|
-
`,i)+1}return{type:n,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(n){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;const i=au(n),s=uo(i);return s.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;const i=au(n),s=uo(i);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(n,i){return this.type!=="comment"||this.indent<=i?!1:n.every(s=>s.type==="newline"||s.type==="space")}*documentEnd(n){this.type!=="doc-mode"&&(n.end?n.end.push(this.sourceToken):n.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(n){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:n.end?n.end.push(this.sourceToken):n.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}}function
|
|
194
|
+
`,i)+1}return{type:n,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(n){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;const i=au(n),s=uo(i);return s.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;const i=au(n),s=uo(i);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(n,i){return this.type!=="comment"||this.indent<=i?!1:n.every(s=>s.type==="newline"||s.type==="space")}*documentEnd(n){this.type!=="doc-mode"&&(n.end?n.end.push(this.sourceToken):n.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(n){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:n.end?n.end.push(this.sourceToken):n.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}}function oI(e){const n=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||n&&new iI||null,prettyErrors:n}}function rI(e,n={}){const{lineCounter:i,prettyErrors:s}=oI(n),r=new sI(i?.addNewLine),u=new W$(n),d=Array.from(u.compose(r.parse(e)));if(s&&i)for(const g of d)g.errors.forEach(Iv(e,i)),g.warnings.forEach(Iv(e,i));return d.length>0?d:Object.assign([],{empty:!0},u.streamInfo())}function lI({onApplied:e}){const[n,i]=q.useState(""),[s,r]=q.useState(!1),[u,d]=q.useState([]),[g,y]=q.useState([]);if(N6())return null;const v=async()=>{if(!n.trim())return;r(!0),d([]),y([]);const w=rI(n),S=[],j=[];for(let _=0;_<w.length;_++){const E=w[_];if(E.errors.length>0){S.push(`Document ${_+1}: ${E.errors[0]?.message}`);continue}const A=E.toJSON();if(!(!A||typeof A!="object"))try{const C=await Z6(A);j.push(`Applied "${C.displayName||C.name}" (revision ${C.configRevision})`)}catch(C){S.push(`Document ${_+1}: ${C instanceof Error?C.message:String(C)}`)}}d(j),y(S),r(!1),j.length>0&&(rn({title:"YAML applied",detail:`Applied ${j.length} document${j.length===1?"":"s"} successfully.`,tone:S.length>0?"caution":"positive",dedupeKey:"yaml:apply",dedupeMode:"replace"}),e())};return m.jsxs("section",{className:"mt-8",children:[m.jsx("div",{className:"page-section-divider"}),m.jsx("div",{className:"section-head mt-6",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Config as code"}),m.jsx("h2",{className:"text-sm font-medium text-strong",children:"Apply YAML"})]})}),m.jsxs("p",{className:"text-muted text-sm mb-3",children:["Paste a ",m.jsx("code",{className:"text-secondary",children:"canonry.yaml"})," config (multi-document YAML with ",m.jsx("code",{className:"text-secondary",children:"---"})," separators supported)."]}),m.jsx("textarea",{className:"setup-input w-full font-mono text-xs",rows:10,placeholder:`apiVersion: canonry/v1
|
|
195
195
|
kind: Project
|
|
196
196
|
metadata:
|
|
197
197
|
name: my-project
|
|
@@ -199,15 +199,15 @@ spec:
|
|
|
199
199
|
canonicalDomain: example.com
|
|
200
200
|
country: US
|
|
201
201
|
language: en
|
|
202
|
-
queries: []`,value:n,onChange:w=>i(w.target.value)}),u.length>0&&m.jsx("ul",{className:"mt-2 space-y-1",children:u.map((w,S)=>m.jsx("li",{className:"text-positive-400 text-sm",children:w},S))}),g.length>0&&m.jsx("ul",{className:"mt-2 space-y-1",children:g.map((w,S)=>m.jsx("li",{className:"text-negative-400 text-sm",children:w},S))}),m.jsx("div",{className:"mt-3",children:m.jsx(Ee,{type:"button",disabled:!n.trim()||s,onClick:Xt(v),children:s?"Applying...":"Apply"})})]})}function lI(){const{dashboard:e,isLoading:n,refetch:i}=Ku();if(!e||n)return m.jsxs("div",{className:"page-skeleton",children:[m.jsxs("div",{className:"page-skeleton-header",children:[m.jsx("div",{className:"skeleton-text h-6 w-28"}),m.jsx("div",{className:"skeleton-text-sm w-40"})]}),m.jsxs("div",{className:"rounded-xl border border-default bg-surface overflow-hidden",children:[m.jsx("div",{className:"p-3 border-b border-default flex gap-8",children:["Name","Domain","Mentions","Last run","Country"].map(R=>m.jsx("div",{className:"skeleton-text-sm w-16"},R))}),[1,2,3].map(R=>m.jsxs("div",{className:"p-3 border-b border-subtle flex gap-8 items-center",children:[m.jsxs("div",{className:"flex-1 space-y-1",children:[m.jsx("div",{className:"skeleton-text w-28"}),m.jsx("div",{className:"skeleton-text-sm w-16"})]}),m.jsx("div",{className:"skeleton-text w-24"}),m.jsx("div",{className:"skeleton h-5 w-14 rounded-full"}),m.jsx("div",{className:"skeleton h-5 w-16 rounded-full"}),m.jsx("div",{className:"skeleton-text-sm w-8"})]},R))]})]});const s=e.projects,r=Au(),[u,d]=q.useState(!1),[g,y]=q.useState(""),[v,w]=q.useState(""),[S,j]=q.useState(""),[_,E]=q.useState("US"),[A,C]=q.useState("en"),[O,L]=q.useState(!1),[G,P]=q.useState(null),H=g.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),ae=async()=>{if(!(!H||!S)){L(!0),P(null);try{const R=await Bf(H,{displayName:v||g,canonicalDomain:S,country:_,language:A});rn({title:"Project created",detail:`${R.displayName||R.name} is ready to configure.`,tone:"positive",dedupeKey:`project:create:${R.name}`,dedupeMode:"drop"}),i(),y(""),w(""),j(""),E("US"),C("en"),d(!1),r({to:"/projects/$projectName",params:{projectName:R.name}})}catch(R){P(R instanceof Error?R.message:"Failed to create project")}finally{L(!1)}}};return m.jsxs("div",{className:"page-container",children:[m.jsxs("div",{className:"page-header",children:[m.jsxs("div",{className:"page-header-left",children:[m.jsx("h1",{className:"page-title",children:"Projects"}),m.jsxs("p",{className:"page-subtitle",children:[s.length," project",s.length!==1?"s":""," tracked"]})]}),m.jsx("div",{className:"page-header-right",children:m.jsxs(Ee,{type:"button",onClick:()=>d(R=>!R),children:[m.jsx(eb,{className:"size-4 mr-1.5"}),"Add project"]})})]}),u?m.jsxs(Un,{className:"surface-card mb-6",children:[m.jsx("div",{className:"section-head",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"New project"}),m.jsx("h2",{className:"text-sm font-medium text-strong",children:"Create a new monitoring project"})]})}),m.jsxs("div",{className:"compact-stack mt-4",children:[m.jsxs("div",{className:"setup-field-row",children:[m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-project-name",children:"Project name"}),m.jsx("input",{id:"new-project-name",className:"setup-input",type:"text",placeholder:"my-project",value:g,onChange:R=>y(R.target.value)}),H&&H!==g?m.jsxs("p",{className:"supporting-copy",children:["Slug: ",H]}):null]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-display-name",children:"Display name"}),m.jsx("input",{id:"new-display-name",className:"setup-input",type:"text",placeholder:"My Project",value:v,onChange:R=>w(R.target.value)})]})]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-domain",children:"Canonical domain"}),m.jsx("input",{id:"new-domain",className:"setup-input",type:"text",placeholder:"example.com",value:S,onChange:R=>j(R.target.value)})]}),m.jsxs("div",{className:"setup-field-row",children:[m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-country",children:"Country"}),m.jsx("input",{id:"new-country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:_,onChange:R=>E(R.target.value.toUpperCase())})]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-language",children:"Language"}),m.jsx("input",{id:"new-language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:A,onChange:R=>C(R.target.value.toLowerCase())})]})]})]}),G?m.jsx("p",{className:"text-negative-400 text-sm mt-3",children:G}):null,m.jsxs("div",{className:"flex items-center gap-3 mt-4",children:[m.jsx(Ee,{type:"button",disabled:!H||!S||O,onClick:Xt(ae),children:O?"Creating...":"Create project"}),m.jsx(Ee,{type:"button",variant:"ghost",onClick:()=>d(!1),children:"Cancel"})]})]}):null,s.length>0?m.jsx("div",{className:"data-table-wrapper",children:m.jsxs("table",{className:"data-table",children:[m.jsx("thead",{children:m.jsxs("tr",{children:[m.jsx("th",{children:"Name"}),m.jsx("th",{children:"Domain"}),m.jsx("th",{children:"Mentions"}),m.jsx("th",{children:"Last run"}),m.jsx("th",{className:"text-right",children:"Country"})]})}),m.jsx("tbody",{children:s.map(R=>{const $=R.recentRuns[0];return m.jsxs("tr",{className:"cursor-pointer",onClick:()=>{r({to:"/projects/$projectName",params:{projectName:R.project.name}})},children:[m.jsxs("td",{children:[m.jsx(Xe,{to:"/projects/$projectName",params:{projectName:R.project.name},className:"text-heading font-medium hover:underline",onClick:fe=>fe.stopPropagation(),children:R.project.displayName||R.project.name}),m.jsx("p",{className:"text-[11px] text-muted",children:R.project.name})]}),m.jsx("td",{className:"text-secondary",children:R.project.canonicalDomain}),m.jsx("td",{children:m.jsx(vn,{tone:R.mentionSummary.tone,children:R.mentionSummary.value})}),m.jsx("td",{className:"text-muted text-sm",children:$?m.jsx(D0,{status:$.status}):m.jsx("span",{className:"text-faint",children:"No runs"})}),m.jsx("td",{className:"text-right text-muted",children:R.project.country})]},R.project.id)})})]})}):u?null:m.jsxs(Un,{className:"surface-card empty-card",children:[m.jsx("h3",{children:"No projects yet"}),m.jsx("p",{className:"supporting-copy",children:"Create your first monitoring project to start tracking AI visibility."}),m.jsxs(Ee,{type:"button",onClick:()=>d(!0),children:[m.jsx(eb,{className:"size-4 mr-1.5"}),"Add project"]})]}),m.jsx(rI,{onApplied:()=>{i()}})]})}function YV({disabled:e,title:n,...i}){const{canWrite:s}=hl();return s?m.jsx(Ee,{disabled:e,title:n,...i}):m.jsx(Ee,{...i,disabled:!0,title:N2})}function cI({title:e,children:n}){const{isAdmin:i}=hl();return i?m.jsx(m.Fragment,{children:n}):m.jsxs(Un,{className:"surface-card mx-auto mt-8 max-w-lg",children:[m.jsxs(il,{children:[m.jsxs(sl,{children:[e," is for administrators"]}),m.jsx(ol,{children:"Your account has view-only access. You can read everything this install has measured; changing how it is set up needs an administrator account."})]}),m.jsx(go,{children:m.jsx("p",{className:"supporting-copy",children:"If you need to make a change here, ask an administrator on this install."})})]})}class uI extends Error{constructor(){super(N2),this.name="ViewOnlyError"}}function dI(e){if(!e.canWrite)throw new uI}function W0(e){e.invalidateQueries({queryKey:_0({client:oe})}),e.invalidateQueries({queryKey:Uo({client:oe})})}function ws(){const e=hl();return()=>{dI(e)}}function mI(e){return e==="gsc-sync"?"GSC sync queued":e==="inspect-sitemap"?"Sitemap inspection queued":"Visibility sweep queued"}function pI(e,n){const i=e??"Project";return n==="gsc-sync"?`${i} will refresh after the sync completes.`:n==="inspect-sitemap"?`${i} will notify you when sitemap inspection finishes.`:`${i} will notify you when the run finishes.`}function eh(e,n){z0({id:e.id,projectId:e.projectId,kind:e.kind,projectLabel:n.projectLabel,sourceAction:n.sourceAction,lastAnnouncedStatus:"queued"}),rn({title:mI(e.kind),detail:pI(n.projectLabel,e.kind),tone:"neutral",dedupeKey:`run:${e.id}`,dedupeMode:"replace"})}function fI(e){const n=e.filter(d=>d.status!=="conflict"&&d.status!=="error"),i=e.filter(d=>d.status==="conflict"),s=e.filter(d=>d.status==="error"),r=i.length+s.length;if(n.length===0){const d=[s.length>0?`${s.length} need provider or query setup`:null,i.length>0?`${i.length} already have an active run`:null].filter(g=>g!==null);rn({title:"No runs queued",detail:d.length>0?`${d.join("; ")}.`:"No projects were available to queue.",tone:"caution",durationMs:8e3,dedupeKey:"run-all:conflict",dedupeMode:"replace"});return}for(const d of n)z0({id:d.id,projectId:d.projectId,kind:d.kind,projectLabel:d.projectName,sourceAction:"run-all",lastAnnouncedStatus:"queued"});const u=jB({runIds:n.map(d=>d.id),queuedCount:n.length,skippedCount:r});rn({title:"Run-all batch queued",detail:r>0?`${n.length} project${n.length===1?"":"s"} queued; ${r} need attention or already have an active run.`:`${n.length} project${n.length===1?"":"s"} queued.`,tone:r>0?"caution":"neutral",dedupeKey:`batch:${u}`,dedupeMode:"replace"})}function nd(e,n){if(e instanceof zn&&e.code==="RUN_IN_PROGRESS"){rn({title:"Run already in progress",detail:n?.projectLabel?`${n.projectLabel} already has an active run. Wait for it to finish, then retry.`:"This project already has an active run. Wait for it to finish, then retry.",tone:"caution",durationMs:8e3,dedupeKey:`run-in-progress:${n?.projectKey??"project"}:${n?.sourceAction??"run"}`,dedupeMode:"replace"});return}rn({title:e instanceof Error?e.message:"Failed to queue run",tone:"negative"})}function hI(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:i,opts:s})=>U6(i,s),onSuccess:(i,s)=>{W0(n),eh(i,{projectLabel:s.projectLabel??s.projectName,sourceAction:s.sourceAction})},onError:(i,s)=>{s.sourceAction!=="setup-launch"&&nd(i,{projectKey:s.projectName,projectLabel:s.projectLabel??s.projectName,sourceAction:s.sourceAction})}})}function XV(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:i=>F6(i),onSuccess:i=>{W0(n),fI(i)},onError:i=>{rn({title:i instanceof Error?i.message:"Failed to queue runs",tone:"negative"})}})}function JV(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:i,body:s})=>W6(i,s),onSuccess:(i,s)=>{W0(n),z0({id:i.runId,projectId:s.projectId,kind:Te["site-audit"],projectLabel:s.projectLabel??s.projectName,sourceAction:"site-audit",lastAnnouncedStatus:i.status}),rn({title:i.status==="running"?"Technical audit already running":"Technical audit queued",detail:`${s.projectLabel??s.projectName} will refresh automatically when the audit finishes.`,tone:"neutral",dedupeKey:`run:${i.runId}`,dedupeMode:"replace"})},onError:(i,s)=>{nd(i,{projectKey:s.projectName,projectLabel:s.projectLabel??s.projectName,sourceAction:"site-audit"})}})}function WV(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:i,opts:s})=>Y6(i,s),onSuccess:(i,s)=>{Su(n,Te["gsc-sync"],s.projectName),eh(i,{projectLabel:s.projectLabel??s.projectName,sourceAction:"gsc-sync"})},onError:(i,s)=>{nd(i,{projectKey:s.projectName,projectLabel:s.projectLabel??s.projectName,sourceAction:"gsc-sync"})}})}function eG(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:i,opts:s})=>J6(i,s),onSuccess:(i,s)=>{Su(n,Te["inspect-sitemap"],s.projectName),eh(i,{projectLabel:s.projectLabel??s.projectName,sourceAction:"inspect-sitemap"})},onError:(i,s)=>{nd(i,{projectKey:s.projectName,projectLabel:s.projectLabel??s.projectName,sourceAction:"inspect-sitemap"})}})}function gw(e){if(!Array.isArray(e.queryKey)||e.queryKey.length<=1)return!1;const n=e.queryKey[0];return n==="projects"||n==="project-dashboard-full"}function tG(){const e=ws(),n=zi();return hs({onMutate:e,mutationFn:({projectName:i,queries:s})=>L6(i,s),onSuccess:()=>{n.invalidateQueries({queryKey:Uo({client:oe})}),n.invalidateQueries({predicate:gw})}})}function nG(){const e=ws(),n=zi();return hs({onMutate:e,mutationFn:({projectName:i,body:s})=>$6(i,s),onSuccess:()=>{ha(n,"project"),n.invalidateQueries({predicate:gw})}})}const Hv="canonry.onboarding-session.v1",gI=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,yI=["system","project","queries","competitors","run"];function bI(e){return yI[e]??"system"}function vI(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 kI(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}function Qv(e,n){const i=e&&typeof e=="object"&&"code"in e?String(e.code):"";return i==="NO_PROVIDER"?"no_provider":i==="NO_QUERIES"?"no_queries":n}function xI(){try{const e=typeof window<"u"?window.sessionStorage.getItem(Hv):null;if(e&&gI.test(e))return e;const n=Cf();return typeof window<"u"&&window.sessionStorage.setItem(Hv,n),n}catch{return Cf()}}function wI(){return Cf()}function Cf(){const e=globalThis.crypto;if(e.randomUUID)return e.randomUUID();const n=new Uint8Array(16);if(e.getRandomValues)e.getRandomValues(n);else for(let s=0;s<n.length;s+=1)n[s]=Math.floor(Math.random()*256);n[6]=n[6]&15|64,n[8]=n[8]&63|128;const i=[...n].map(s=>s.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 SI=[{label:"System check",description:"Verify your instance is ready"},{label:"Create project",description:"Name, domain, and locale"},{label:"Queries",description:"Add queries to track"},{label:"Competitors",description:"Add competitor domains"},{label:"Launch",description:"Start your first visibility sweep"}];function Zv(e,n){return(e==="completed"||e==="partial")&&n>0}function Fv(e){return e.launchReady?e.hasProject?e.queryCount===0?2:e.competitorCount===0&&!e.hasRunAttempt?3:4:1:0}function Yv(e){return e.queryCounts.total>0}function jI({current:e,labels:n}){return m.jsx("div",{className:"setup-steps",role:"list","aria-label":"Setup progress",children:n.map((i,s)=>{const r=s<e,u=s===e;return m.jsxs("div",{className:`setup-step ${r?"setup-step-done":""} ${u?"setup-step-active":""}`,role:"listitem","aria-current":u?"step":void 0,children:[m.jsx("span",{className:"setup-step-number",children:r?"✓":s+1}),m.jsx("span",{children:i.label})]},i.label)})})}function NI(){return m.jsx(cI,{title:"Setup",children:m.jsx(AI,{})})}function AI(){const e=wl(),{dashboard:n,isLoading:i,refetch:s}=Ku(),r=n??e?.dashboard;return!r||i?m.jsxs("div",{className:"page-skeleton",children:[m.jsxs("div",{className:"page-skeleton-header",children:[m.jsx("div",{className:"skeleton-text h-6 w-24"}),m.jsx("div",{className:"skeleton-text-sm w-80"})]}),m.jsxs("div",{className:"page-skeleton-card",children:[m.jsx("div",{className:"skeleton-text w-32"}),m.jsx("div",{className:"space-y-3 mt-3",children:[1,2,3].map(u=>m.jsxs("div",{className:"flex items-center justify-between",children:[m.jsxs("div",{className:"space-y-1 flex-1",children:[m.jsx("div",{className:"skeleton-text w-24"}),m.jsx("div",{className:"skeleton-text-sm w-48"})]}),m.jsx("div",{className:"skeleton h-6 w-16 rounded-full"})]},u))})]})]}):m.jsx(_I,{dashboard:r,initialHealth:e?.health,enableLiveStatus:!e,refetch:s})}function _I({dashboard:e,initialHealth:n,enableLiveStatus:i,refetch:s}){const r=e.settings,d=O0(i,n).data??n??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},g=vB(e.setup,d,r),y=Au(),v=q.useRef(xI()).current,w=q.useRef(new Set),S=q.useCallback((Z,Re)=>{if(Re){if(w.current.has(Re))return;w.current.add(Re)}H6({...Z,eventId:wI()})},[]),j=e.projects.find(Z=>!Yv(Z))??e.projects.at(0)??null,_=j?e.runs.filter(Z=>Z.projectId===j.project.id).sort((Z,Re)=>Re.createdAt.localeCompare(Z.createdAt)):[],E=j?.queryCounts.total??0,A=j?.project.name,C=on({queryKey:["setup","resume-queries",A],queryFn:()=>A?k2(A):Promise.resolve([]),enabled:!!A}),O=C.data??[],L=C.data?.length??E,G=j?.competitors.map(Z=>Z.domain)??[],P=_.at(0)??null,H=!!j&&Yv(j),ae=!!j&&C.isPending,R=Fv({launchReady:g.launchState.enabled,hasProject:!!j,queryCount:L,competitorCount:G.length,hasRunAttempt:_.length>0||H}),$=Fv({launchReady:!0,hasProject:!!j,queryCount:L,competitorCount:G.length,hasRunAttempt:_.length>0||H}),[fe,ue]=q.useState(R),[me,pe]=q.useState(!ae),[Ge,De]=q.useState(j?.project.name??""),[Ne,K]=q.useState(j?.project.displayName??""),[ee,he]=q.useState(j?.project.canonicalDomain??""),[Ae,le]=q.useState(j?.project.country??"US"),[Ye,M]=q.useState(j?.project.language??"en"),[re,ne]=q.useState(j?.project.autoExtractBacklinks??!1),[ie,se]=q.useState(j?.project.name??null),[ze,rt]=q.useState(null),[Se,Ke]=q.useState(!1),[Ze,$t]=q.useState(O.map(Z=>Z.query).join(`
|
|
202
|
+
queries: []`,value:n,onChange:w=>i(w.target.value)}),u.length>0&&m.jsx("ul",{className:"mt-2 space-y-1",children:u.map((w,S)=>m.jsx("li",{className:"text-positive-400 text-sm",children:w},S))}),g.length>0&&m.jsx("ul",{className:"mt-2 space-y-1",children:g.map((w,S)=>m.jsx("li",{className:"text-negative-400 text-sm",children:w},S))}),m.jsx("div",{className:"mt-3",children:m.jsx(Ee,{type:"button",disabled:!n.trim()||s,onClick:Xt(v),children:s?"Applying...":"Apply"})})]})}function cI(){const{dashboard:e,isLoading:n,refetch:i}=Ku();if(!e||n)return m.jsxs("div",{className:"page-skeleton",children:[m.jsxs("div",{className:"page-skeleton-header",children:[m.jsx("div",{className:"skeleton-text h-6 w-28"}),m.jsx("div",{className:"skeleton-text-sm w-40"})]}),m.jsxs("div",{className:"rounded-xl border border-default bg-surface overflow-hidden",children:[m.jsx("div",{className:"p-3 border-b border-default flex gap-8",children:["Name","Domain","Mentions","Last run","Country"].map(R=>m.jsx("div",{className:"skeleton-text-sm w-16"},R))}),[1,2,3].map(R=>m.jsxs("div",{className:"p-3 border-b border-subtle flex gap-8 items-center",children:[m.jsxs("div",{className:"flex-1 space-y-1",children:[m.jsx("div",{className:"skeleton-text w-28"}),m.jsx("div",{className:"skeleton-text-sm w-16"})]}),m.jsx("div",{className:"skeleton-text w-24"}),m.jsx("div",{className:"skeleton h-5 w-14 rounded-full"}),m.jsx("div",{className:"skeleton h-5 w-16 rounded-full"}),m.jsx("div",{className:"skeleton-text-sm w-8"})]},R))]})]});const s=e.projects,r=Au(),[u,d]=q.useState(!1),[g,y]=q.useState(""),[v,w]=q.useState(""),[S,j]=q.useState(""),[_,E]=q.useState("US"),[A,C]=q.useState("en"),[O,L]=q.useState(!1),[G,P]=q.useState(null),H=g.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),ae=async()=>{if(!(!H||!S)){L(!0),P(null);try{const R=await Bf(H,{displayName:v||g,canonicalDomain:S,country:_,language:A});rn({title:"Project created",detail:`${R.displayName||R.name} is ready to configure.`,tone:"positive",dedupeKey:`project:create:${R.name}`,dedupeMode:"drop"}),i(),y(""),w(""),j(""),E("US"),C("en"),d(!1),r({to:"/projects/$projectName",params:{projectName:R.name}})}catch(R){P(R instanceof Error?R.message:"Failed to create project")}finally{L(!1)}}};return m.jsxs("div",{className:"page-container",children:[m.jsxs("div",{className:"page-header",children:[m.jsxs("div",{className:"page-header-left",children:[m.jsx("h1",{className:"page-title",children:"Projects"}),m.jsxs("p",{className:"page-subtitle",children:[s.length," project",s.length!==1?"s":""," tracked"]})]}),m.jsx("div",{className:"page-header-right",children:m.jsxs(Ee,{type:"button",onClick:()=>d(R=>!R),children:[m.jsx(eb,{className:"size-4 mr-1.5"}),"Add project"]})})]}),u?m.jsxs(Un,{className:"surface-card mb-6",children:[m.jsx("div",{className:"section-head",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"New project"}),m.jsx("h2",{className:"text-sm font-medium text-strong",children:"Create a new monitoring project"})]})}),m.jsxs("div",{className:"compact-stack mt-4",children:[m.jsxs("div",{className:"setup-field-row",children:[m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-project-name",children:"Project name"}),m.jsx("input",{id:"new-project-name",className:"setup-input",type:"text",placeholder:"my-project",value:g,onChange:R=>y(R.target.value)}),H&&H!==g?m.jsxs("p",{className:"supporting-copy",children:["Slug: ",H]}):null]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-display-name",children:"Display name"}),m.jsx("input",{id:"new-display-name",className:"setup-input",type:"text",placeholder:"My Project",value:v,onChange:R=>w(R.target.value)})]})]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-domain",children:"Canonical domain"}),m.jsx("input",{id:"new-domain",className:"setup-input",type:"text",placeholder:"example.com",value:S,onChange:R=>j(R.target.value)})]}),m.jsxs("div",{className:"setup-field-row",children:[m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-country",children:"Country"}),m.jsx("input",{id:"new-country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:_,onChange:R=>E(R.target.value.toUpperCase())})]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"new-language",children:"Language"}),m.jsx("input",{id:"new-language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:A,onChange:R=>C(R.target.value.toLowerCase())})]})]})]}),G?m.jsx("p",{className:"text-negative-400 text-sm mt-3",children:G}):null,m.jsxs("div",{className:"flex items-center gap-3 mt-4",children:[m.jsx(Ee,{type:"button",disabled:!H||!S||O,onClick:Xt(ae),children:O?"Creating...":"Create project"}),m.jsx(Ee,{type:"button",variant:"ghost",onClick:()=>d(!1),children:"Cancel"})]})]}):null,s.length>0?m.jsx("div",{className:"data-table-wrapper",children:m.jsxs("table",{className:"data-table",children:[m.jsx("thead",{children:m.jsxs("tr",{children:[m.jsx("th",{children:"Name"}),m.jsx("th",{children:"Domain"}),m.jsx("th",{children:"Mentions"}),m.jsx("th",{children:"Last run"}),m.jsx("th",{className:"text-right",children:"Country"})]})}),m.jsx("tbody",{children:s.map(R=>{const $=R.recentRuns[0];return m.jsxs("tr",{className:"cursor-pointer",onClick:()=>{r({to:"/projects/$projectName",params:{projectName:R.project.name}})},children:[m.jsxs("td",{children:[m.jsx(Xe,{to:"/projects/$projectName",params:{projectName:R.project.name},className:"text-heading font-medium hover:underline",onClick:fe=>fe.stopPropagation(),children:R.project.displayName||R.project.name}),m.jsx("p",{className:"text-[11px] text-muted",children:R.project.name})]}),m.jsx("td",{className:"text-secondary",children:R.project.canonicalDomain}),m.jsx("td",{children:m.jsx(vn,{tone:R.mentionSummary.tone,children:R.mentionSummary.value})}),m.jsx("td",{className:"text-muted text-sm",children:$?m.jsx(D0,{status:$.status}):m.jsx("span",{className:"text-faint",children:"No runs"})}),m.jsx("td",{className:"text-right text-muted",children:R.project.country})]},R.project.id)})})]})}):u?null:m.jsxs(Un,{className:"surface-card empty-card",children:[m.jsx("h3",{children:"No projects yet"}),m.jsx("p",{className:"supporting-copy",children:"Create your first monitoring project to start tracking AI visibility."}),m.jsxs(Ee,{type:"button",onClick:()=>d(!0),children:[m.jsx(eb,{className:"size-4 mr-1.5"}),"Add project"]})]}),m.jsx(lI,{onApplied:()=>{i()}})]})}function XV({disabled:e,title:n,...i}){const{canWrite:s}=hl();return s?m.jsx(Ee,{disabled:e,title:n,...i}):m.jsx(Ee,{...i,disabled:!0,title:N2})}function uI({title:e,children:n}){const{isAdmin:i}=hl();return i?m.jsx(m.Fragment,{children:n}):m.jsxs(Un,{className:"surface-card mx-auto mt-8 max-w-lg",children:[m.jsxs(il,{children:[m.jsxs(sl,{children:[e," is for administrators"]}),m.jsx(ol,{children:"Your account has view-only access. You can read everything this install has measured; changing how it is set up needs an administrator account."})]}),m.jsx(go,{children:m.jsx("p",{className:"supporting-copy",children:"If you need to make a change here, ask an administrator on this install."})})]})}class dI extends Error{constructor(){super(N2),this.name="ViewOnlyError"}}function mI(e){if(!e.canWrite)throw new dI}function W0(e){e.invalidateQueries({queryKey:_0({client:oe})}),e.invalidateQueries({queryKey:Uo({client:oe})})}function ws(){const e=hl();return()=>{mI(e)}}function pI(e){return e==="gsc-sync"?"GSC sync queued":e==="inspect-sitemap"?"Sitemap inspection queued":"Visibility sweep queued"}function fI(e,n){const i=e??"Project";return n==="gsc-sync"?`${i} will refresh after the sync completes.`:n==="inspect-sitemap"?`${i} will notify you when sitemap inspection finishes.`:`${i} will notify you when the run finishes.`}function eh(e,n){z0({id:e.id,projectId:e.projectId,kind:e.kind,projectLabel:n.projectLabel,sourceAction:n.sourceAction,lastAnnouncedStatus:"queued"}),rn({title:pI(e.kind),detail:fI(n.projectLabel,e.kind),tone:"neutral",dedupeKey:`run:${e.id}`,dedupeMode:"replace"})}function hI(e){const n=e.filter(d=>d.status!=="conflict"&&d.status!=="error"),i=e.filter(d=>d.status==="conflict"),s=e.filter(d=>d.status==="error"),r=i.length+s.length;if(n.length===0){const d=[s.length>0?`${s.length} need provider or query setup`:null,i.length>0?`${i.length} already have an active run`:null].filter(g=>g!==null);rn({title:"No runs queued",detail:d.length>0?`${d.join("; ")}.`:"No projects were available to queue.",tone:"caution",durationMs:8e3,dedupeKey:"run-all:conflict",dedupeMode:"replace"});return}for(const d of n)z0({id:d.id,projectId:d.projectId,kind:d.kind,projectLabel:d.projectName,sourceAction:"run-all",lastAnnouncedStatus:"queued"});const u=NB({runIds:n.map(d=>d.id),queuedCount:n.length,skippedCount:r});rn({title:"Run-all batch queued",detail:r>0?`${n.length} project${n.length===1?"":"s"} queued; ${r} need attention or already have an active run.`:`${n.length} project${n.length===1?"":"s"} queued.`,tone:r>0?"caution":"neutral",dedupeKey:`batch:${u}`,dedupeMode:"replace"})}function nd(e,n){if(e instanceof zn&&e.code==="RUN_IN_PROGRESS"){rn({title:"Run already in progress",detail:n?.projectLabel?`${n.projectLabel} already has an active run. Wait for it to finish, then retry.`:"This project already has an active run. Wait for it to finish, then retry.",tone:"caution",durationMs:8e3,dedupeKey:`run-in-progress:${n?.projectKey??"project"}:${n?.sourceAction??"run"}`,dedupeMode:"replace"});return}rn({title:e instanceof Error?e.message:"Failed to queue run",tone:"negative"})}function gI(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:i,opts:s})=>U6(i,s),onSuccess:(i,s)=>{W0(n),eh(i,{projectLabel:s.projectLabel??s.projectName,sourceAction:s.sourceAction})},onError:(i,s)=>{s.sourceAction!=="setup-launch"&&nd(i,{projectKey:s.projectName,projectLabel:s.projectLabel??s.projectName,sourceAction:s.sourceAction})}})}function JV(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:i=>F6(i),onSuccess:i=>{W0(n),hI(i)},onError:i=>{rn({title:i instanceof Error?i.message:"Failed to queue runs",tone:"negative"})}})}function WV(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:i,body:s})=>W6(i,s),onSuccess:(i,s)=>{W0(n),z0({id:i.runId,projectId:s.projectId,kind:Te["site-audit"],projectLabel:s.projectLabel??s.projectName,sourceAction:"site-audit",lastAnnouncedStatus:i.status}),rn({title:i.status==="running"?"Technical audit already running":"Technical audit queued",detail:`${s.projectLabel??s.projectName} will refresh automatically when the audit finishes.`,tone:"neutral",dedupeKey:`run:${i.runId}`,dedupeMode:"replace"})},onError:(i,s)=>{nd(i,{projectKey:s.projectName,projectLabel:s.projectLabel??s.projectName,sourceAction:"site-audit"})}})}function eG(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:i,opts:s})=>Y6(i,s),onSuccess:(i,s)=>{Su(n,Te["gsc-sync"],s.projectName),eh(i,{projectLabel:s.projectLabel??s.projectName,sourceAction:"gsc-sync"})},onError:(i,s)=>{nd(i,{projectKey:s.projectName,projectLabel:s.projectLabel??s.projectName,sourceAction:"gsc-sync"})}})}function tG(){const e=ws(),n=zi();return hs({onMutate:e,meta:{skipGlobalErrorToast:!0},mutationFn:({projectName:i,opts:s})=>J6(i,s),onSuccess:(i,s)=>{Su(n,Te["inspect-sitemap"],s.projectName),eh(i,{projectLabel:s.projectLabel??s.projectName,sourceAction:"inspect-sitemap"})},onError:(i,s)=>{nd(i,{projectKey:s.projectName,projectLabel:s.projectLabel??s.projectName,sourceAction:"inspect-sitemap"})}})}function gw(e){if(!Array.isArray(e.queryKey)||e.queryKey.length<=1)return!1;const n=e.queryKey[0];return n==="projects"||n==="project-dashboard-full"}function nG(){const e=ws(),n=zi();return hs({onMutate:e,mutationFn:({projectName:i,queries:s})=>L6(i,s),onSuccess:()=>{n.invalidateQueries({queryKey:Uo({client:oe})}),n.invalidateQueries({predicate:gw})}})}function aG(){const e=ws(),n=zi();return hs({onMutate:e,mutationFn:({projectName:i,body:s})=>$6(i,s),onSuccess:()=>{ha(n,"project"),n.invalidateQueries({predicate:gw})}})}const Hv="canonry.onboarding-session.v1",yI=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,bI=["system","project","queries","competitors","run"];function vI(e){return bI[e]??"system"}function kI(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 xI(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}function Qv(e,n){const i=e&&typeof e=="object"&&"code"in e?String(e.code):"";return i==="NO_PROVIDER"?"no_provider":i==="NO_QUERIES"?"no_queries":n}function wI(){try{const e=typeof window<"u"?window.sessionStorage.getItem(Hv):null;if(e&&yI.test(e))return e;const n=Cf();return typeof window<"u"&&window.sessionStorage.setItem(Hv,n),n}catch{return Cf()}}function SI(){return Cf()}function Cf(){const e=globalThis.crypto;if(e.randomUUID)return e.randomUUID();const n=new Uint8Array(16);if(e.getRandomValues)e.getRandomValues(n);else for(let s=0;s<n.length;s+=1)n[s]=Math.floor(Math.random()*256);n[6]=n[6]&15|64,n[8]=n[8]&63|128;const i=[...n].map(s=>s.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 jI=[{label:"System check",description:"Verify your instance is ready"},{label:"Create project",description:"Name, domain, and locale"},{label:"Queries",description:"Add queries to track"},{label:"Competitors",description:"Add competitor domains"},{label:"Launch",description:"Start your first visibility sweep"}];function Zv(e,n){return(e==="completed"||e==="partial")&&n>0}function Fv(e){return e.launchReady?e.hasProject?e.queryCount===0?2:e.competitorCount===0&&!e.hasRunAttempt?3:4:1:0}function Yv(e){return e.queryCounts.total>0}function NI({current:e,labels:n}){return m.jsx("div",{className:"setup-steps",role:"list","aria-label":"Setup progress",children:n.map((i,s)=>{const r=s<e,u=s===e;return m.jsxs("div",{className:`setup-step ${r?"setup-step-done":""} ${u?"setup-step-active":""}`,role:"listitem","aria-current":u?"step":void 0,children:[m.jsx("span",{className:"setup-step-number",children:r?"✓":s+1}),m.jsx("span",{children:i.label})]},i.label)})})}function AI(){return m.jsx(uI,{title:"Setup",children:m.jsx(_I,{})})}function _I(){const e=wl(),{dashboard:n,isLoading:i,refetch:s}=Ku(),r=n??e?.dashboard;return!r||i?m.jsxs("div",{className:"page-skeleton",children:[m.jsxs("div",{className:"page-skeleton-header",children:[m.jsx("div",{className:"skeleton-text h-6 w-24"}),m.jsx("div",{className:"skeleton-text-sm w-80"})]}),m.jsxs("div",{className:"page-skeleton-card",children:[m.jsx("div",{className:"skeleton-text w-32"}),m.jsx("div",{className:"space-y-3 mt-3",children:[1,2,3].map(u=>m.jsxs("div",{className:"flex items-center justify-between",children:[m.jsxs("div",{className:"space-y-1 flex-1",children:[m.jsx("div",{className:"skeleton-text w-24"}),m.jsx("div",{className:"skeleton-text-sm w-48"})]}),m.jsx("div",{className:"skeleton h-6 w-16 rounded-full"})]},u))})]})]}):m.jsx(CI,{dashboard:r,initialHealth:e?.health,enableLiveStatus:!e,refetch:s})}function CI({dashboard:e,initialHealth:n,enableLiveStatus:i,refetch:s}){const r=e.settings,d=O0(i,n).data??n??{apiStatus:{label:"API",state:"checking",detail:"Checking service health"},workerStatus:{label:"Worker",state:"checking",detail:"Checking service health"}},g=kB(e.setup,d,r),y=Au(),v=q.useRef(wI()).current,w=q.useRef(new Set),S=q.useCallback((Z,Re)=>{if(Re){if(w.current.has(Re))return;w.current.add(Re)}H6({...Z,eventId:SI()})},[]),j=e.projects.find(Z=>!Yv(Z))??e.projects.at(0)??null,_=j?e.runs.filter(Z=>Z.projectId===j.project.id).sort((Z,Re)=>Re.createdAt.localeCompare(Z.createdAt)):[],E=j?.queryCounts.total??0,A=j?.project.name,C=on({queryKey:["setup","resume-queries",A],queryFn:()=>A?k2(A):Promise.resolve([]),enabled:!!A}),O=C.data??[],L=C.data?.length??E,G=j?.competitors.map(Z=>Z.domain)??[],P=_.at(0)??null,H=!!j&&Yv(j),ae=!!j&&C.isPending,R=Fv({launchReady:g.launchState.enabled,hasProject:!!j,queryCount:L,competitorCount:G.length,hasRunAttempt:_.length>0||H}),$=Fv({launchReady:!0,hasProject:!!j,queryCount:L,competitorCount:G.length,hasRunAttempt:_.length>0||H}),[fe,ue]=q.useState(R),[me,pe]=q.useState(!ae),[Ge,De]=q.useState(j?.project.name??""),[Ne,K]=q.useState(j?.project.displayName??""),[ee,he]=q.useState(j?.project.canonicalDomain??""),[Ae,le]=q.useState(j?.project.country??"US"),[Ye,M]=q.useState(j?.project.language??"en"),[re,ne]=q.useState(j?.project.autoExtractBacklinks??!1),[ie,se]=q.useState(j?.project.name??null),[ze,rt]=q.useState(null),[Se,Ke]=q.useState(!1),[Ze,$t]=q.useState(O.map(Z=>Z.query).join(`
|
|
203
203
|
`)),[En,Ut]=q.useState(L>0),[Ss,js]=q.useState(null),[_l,Ho]=q.useState(!1),[Qo,Zo]=q.useState(!1),Wt=r.providerStatuses.filter(Z=>Z.state==="ready"),[Ka,Ns]=q.useState(Wt[0]?.name??""),[Qt,ad]=q.useState(5),[Fo,Yo]=q.useState(!1),[qi,Cl]=q.useState(null),[Xo,id]=q.useState(G.join(`
|
|
204
|
-
`)),[zl,Li]=q.useState(G.length>0),[Zt,Fn]=q.useState(null),[Ft,El]=q.useState(!1),[Ha,sd]=q.useState(!!P&&!H),[ya,$i]=q.useState(!1),[oa,Yn]=q.useState(null),[Qa,Ii]=q.useState(H?null:P?.id??null),od=
|
|
204
|
+
`)),[zl,Li]=q.useState(G.length>0),[Zt,Fn]=q.useState(null),[Ft,El]=q.useState(!1),[Ha,sd]=q.useState(!!P&&!H),[ya,$i]=q.useState(!1),[oa,Yn]=q.useState(null),[Qa,Ii]=q.useState(H?null:P?.id??null),od=gI(),ra=on({...tx({client:oe,path:{id:Qa??""}}),enabled:!!Qa,refetchInterval:({state:Z})=>{const Re=Z.data?.status;return Re==="completed"||Re==="partial"||Re==="failed"||Re==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}),[Ui,Za]=q.useState(""),[Jo,Wo]=q.useState(!1),[er,tr]=q.useState(null),Xn=Ge.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),dn=Ze.split(`
|
|
205
205
|
`).map(Z=>Z.trim()).filter(Boolean),ba=Xo.split(`
|
|
206
|
-
`).map(Z=>Z.trim()).filter(Boolean),Fa=Math.max(L,En?dn.length:0),Yt=g.launchState.blockedReason??(ie?Fa===0?"Add at least one query before launching the first sweep.":void 0:"Create a project before launching the first sweep."),pt=
|
|
207
|
-
`)),Ut(!0)),pe(!0))},[O,R,me,ae]),q.useEffect(()=>{if(Wt.length===0){Ns("");return}Wt.some(Z=>Z.name===Ka)||Ns(Wt[0].name)},[Wt,Ka]),q.useEffect(()=>{me&&(S({flowVersion:At,onboardingSessionId:v,event:"onboarding.started",step:
|
|
206
|
+
`).map(Z=>Z.trim()).filter(Boolean),Fa=Math.max(L,En?dn.length:0),Yt=g.launchState.blockedReason??(ie?Fa===0?"Add at least one query before launching the first sweep.":void 0:"Create a project before launching the first sweep."),pt=kI({apiReady:d.apiStatus.state==="ok",databaseConfigured:d.apiStatus.databaseConfigured,workerReady:d.workerStatus.state==="ok",providerReady:Wt.length>0});q.useEffect(()=>{me||ae||(ue(R),O.length>0&&($t(O.map(Z=>Z.query).join(`
|
|
207
|
+
`)),Ut(!0)),pe(!0))},[O,R,me,ae]),q.useEffect(()=>{if(Wt.length===0){Ns("");return}Wt.some(Z=>Z.name===Ka)||Ns(Wt[0].name)},[Wt,Ka]),q.useEffect(()=>{me&&(S({flowVersion:At,onboardingSessionId:v,event:"onboarding.started",step:vI(R),resumed:!!j},"onboarding.started"),!j&&R>0&&S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"))},[S,R,v,me,j]),q.useEffect(()=>{!xI(d)||!pt||S({flowVersion:At,onboardingSessionId:v,event:"onboarding.blocked",step:"system",action:pt==="no_provider"?"configure_provider":"continue",reasonCode:pt},`onboarding.blocked:system:${pt}`)},[S,d,v,pt]);const kt=ra.data?.status,Jn=ra.data?.snapshots?.length??0;q.useEffect(()=>{if(!Ha||!kt)return;if(Zv(kt,Jn)){S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:"run",method:"automatic",countBucket:fa(Jn)},"onboarding.step_completed:run");return}const Z=kt==="cancelled"?"run_cancelled":kt==="failed"||(kt==="completed"||kt==="partial")&&Jn===0?"run_failed":void 0;Z&&S({flowVersion:At,onboardingSessionId:v,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:Z},`onboarding.blocked:run:${Z}`)},[S,v,kt,Jn,Ha]);const nr=async()=>{if(!(!Xn||!ee)){Ke(!0),rt(null);try{const Z=await Bf(Xn,{displayName:Ne||Ge,canonicalDomain:ee,country:Ae,language:Ye,autoExtractBacklinks:re});se(Xn),rn({title:"Project created",detail:`${Z.displayName||Z.name} is ready for setup.`,tone:"positive",dedupeKey:`project:create:${Z.name}`,dedupeMode:"drop"}),await s(),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),ue(2)}catch(Z){rt(Z instanceof Error?Z.message:"Failed to create project"),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.blocked",step:"project",action:"save",reasonCode:"project_create_failed"},"onboarding.blocked:project:project_create_failed")}finally{Ke(!1)}}},rd=async()=>{if(!ie)return;const Z=dn;if(Z.length!==0){Ho(!0),js(null);try{await q6(ie,Z),Ut(!0),await s(),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:"queries",method:Qo?"generated":"manual",countBucket:fa(Z.length)},"onboarding.step_completed:queries"),ue(3)}catch(Re){js(Re instanceof Error?Re.message:"Failed to save queries"),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.blocked",step:"queries",action:"save",reasonCode:"query_save_failed"},"onboarding.blocked:queries:query_save_failed")}finally{Ho(!1)}}},ld=async()=>{if(!(!ie||!Ka)){Yo(!0),Cl(null);try{const Z=await Q6(ie,Ka,Qt);if(Z.queries.length>0){const Re=Ze?Ze.trimEnd()+`
|
|
208
208
|
`+Z.queries.join(`
|
|
209
209
|
`):Z.queries.join(`
|
|
210
210
|
`);$t(Re),Zo(!0)}}catch(Z){Cl(Z instanceof Error?Z.message:"Failed to generate queries"),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:Qv(Z,"unknown")},"onboarding.blocked:queries:generate")}finally{Yo(!1)}}},Tl=async()=>{if(!ie)return;const Z=ba;if(Z.length!==0){El(!0),Fn(null);try{await I6(ie,Z),Li(!0),await s(),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:fa(Z.length)},"onboarding.step_completed:competitors"),ue(4)}catch(Re){Fn(Re instanceof Error?Re.message:"Failed to save competitors"),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{El(!1)}}},Pi=async()=>{const Z=Ui.trim();if(Z){Wo(!0),tr(null);try{await K6("gemini",{apiKey:Z}),rn({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),Za(""),await s(),Ns(r.providerStatuses.find(Re=>Re.name.toLowerCase()==="gemini")?.name??"gemini"),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(Re){tr(Re instanceof Error?Re.message:"Failed to save Gemini key"),S({flowVersion:At,onboardingSessionId:v,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{Wo(!1)}}},As=async()=>{if(!ie||Yt){Yn(Yt??"Complete setup before launching the first sweep.");const Z=pt??(ie?Fa===0?"no_queries":"run_rejected":"unknown");S({flowVersion:At,onboardingSessionId:v,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:fa(Wt.length),queryCountBucket:fa(Fa),reasonCode:Z});return}$i(!0),Yn(null);try{const Z=await od.mutateAsync({projectName:ie,projectLabel:Ne||Ge||ie,sourceAction:"setup-launch"});Ii(Z.id),sd(!0),S({flowVersion:At,onboardingSessionId:v,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:fa(Wt.length),queryCountBucket:fa(Fa)}),await s()}catch(Z){Yn(Z instanceof Error?Z.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),S({flowVersion:At,onboardingSessionId:v,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:fa(Wt.length),queryCountBucket:fa(Fa),reasonCode:Qv(Z,"run_rejected")})}finally{$i(!1)}},en=()=>ue(Z=>Math.max(0,Z-1)),la=(Z,Re,va)=>{S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:Z,method:"existing",...va===void 0?{}:{countBucket:fa(va)}},`onboarding.step_completed:${Z}`),ue(Re)},Vi=()=>{S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),ue(4)},Ya=(()=>{switch(fe){case 0:return m.jsxs(Un,{className:"surface-card step-card",children:[m.jsx("div",{className:"section-head",children:m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),m.jsx("h2",{children:"System check"})]})}),m.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),m.jsx("div",{className:"compact-stack",children:g.healthChecks.map(Z=>m.jsxs("div",{className:"health-check-row",children:[m.jsxs("div",{children:[m.jsx("p",{className:"run-row-title",children:Z.label}),m.jsx("p",{className:"supporting-copy",children:Z.detail}),Z.id==="provider"&&Z.state!=="ready"&&m.jsxs("div",{className:"mt-3 rounded-md border border-default bg-bg-elevated/40 p-3 space-y-2",children:[m.jsxs("p",{className:"text-xs text-secondary",children:["Paste a Gemini key to enable visibility checks (free at"," ",m.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"}),")."]}),m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx("input",{type:"password",value:Ui,onChange:Re=>Za(Re.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:Jo}),m.jsx(Ee,{type:"button",size:"sm",disabled:Jo||!Ui.trim(),onClick:Xt(Pi),children:Jo?"Saving...":"Save"})]}),er&&m.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[m.jsx("p",{children:er}),m.jsx("p",{children:"Check that the key is complete, then retry Save."})]}),m.jsxs("p",{className:"text-sm text-secondary",children:["Connect more answer engines later in"," ",m.jsx(Xe,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),m.jsx(vn,{tone:Z.state==="ready"?"positive":"caution",title:Z.id==="api"?Do(d.apiStatus):Z.id==="worker"?Do(d.workerStatus):Z.detail,children:Z.state==="ready"?"Ready":"Attention"})]},Z.id))}),m.jsxs("div",{className:"setup-nav",children:[g.launchState.blockedReason?m.jsx("p",{role:"status",className:"supporting-copy text-negative",children:g.launchState.blockedReason}):m.jsx("span",{}),m.jsx(Ee,{type:"button",disabled:!g.launchState.enabled,title:g.launchState.blockedReason,onClick:()=>{S({flowVersion:At,onboardingSessionId:v,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),ue($)},children:"Continue"})]})]});case 1:return m.jsxs(Un,{className:"surface-card step-card",children:[m.jsxs("div",{className:"section-head",children:[m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),m.jsx("h2",{children:"Create project"})]}),ie?m.jsx(vn,{tone:"positive",children:"Created"}):null]}),ie?m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"text-neutral",children:["Project ",m.jsx("span",{className:"text-heading font-medium",children:ie})," created successfully."]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsx(Ee,{type:"button",onClick:()=>la("project",2),children:"Continue"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),m.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:Ge,onChange:Z=>De(Z.target.value)}),Xn&&Xn!==Ge?m.jsxs("p",{className:"supporting-copy",children:["Slug: ",Xn]}):null]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),m.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:Ne,onChange:Z=>K(Z.target.value)})]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),m.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:ee,onChange:Z=>he(Z.target.value)})]}),m.jsxs("div",{className:"setup-field-row",children:[m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),m.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:Ae,onChange:Z=>le(Z.target.value.toUpperCase())})]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),m.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:Ye,onChange:Z=>M(Z.target.value.toLowerCase())})]})]}),m.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-default bg-surface p-3 cursor-pointer hover:border-strong",children:[m.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-strong bg-bg",checked:re,onChange:Z=>ne(Z.target.checked)}),m.jsxs("span",{className:"flex-1",children:[m.jsx("span",{className:"block text-sm text-heading",children:"Auto-extract backlinks"}),m.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."," ",m.jsx(Xe,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),ze?m.jsx("p",{className:"text-negative-400 text-sm",children:ze}):null,m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsx(Ee,{type:"button",disabled:!Xn||!ee||Se,onClick:Xt(nr),children:Se?"Creating...":"Create project"})]})]})]});case 2:return m.jsxs(Un,{className:"surface-card step-card",children:[m.jsxs("div",{className:"section-head",children:[m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 3 of 5"}),m.jsx("h2",{children:"Add queries"})]}),C.isError?m.jsx(vn,{tone:"negative",children:"Load failed"}):En?m.jsxs(vn,{tone:"positive",children:[dn.length," saved"]}):m.jsxs(vn,{tone:"neutral",children:[dn.length," quer",dn.length!==1?"ies":"y"]})]}),m.jsx("p",{className:"supporting-copy",children:"Enter the search queries you want to track. One per line."}),C.isError?m.jsxs("div",{className:"compact-stack",children:[m.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."}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsx(Ee,{type:"button",onClick:()=>{C.refetch()},children:"Retry loading queries"})]})]}):En?m.jsxs("div",{className:"compact-stack",children:[m.jsx("ul",{className:"detail-list",children:dn.map(Z=>m.jsx("li",{children:Z},Z))}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsx(Ee,{type:"button",onClick:()=>la("queries",3,dn.length),children:"Continue"})]})]}):m.jsxs("div",{className:"compact-stack",children:[Wt.length>0?m.jsxs("div",{className:"compact-stack",children:[m.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[m.jsx("span",{className:"flex-1 border-t border-base"}),"auto-generate",m.jsx("span",{className:"flex-1 border-t border-base"})]}),m.jsxs("div",{className:"flex items-end gap-2",children:[m.jsxs("div",{className:"setup-field flex-1",children:[m.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),m.jsx("select",{id:"gen-provider",className:"setup-input",value:Ka,onChange:Z=>Ns(Z.target.value),children:Wt.map(Z=>m.jsxs("option",{value:Z.name,children:[Z.displayName??Z.name,Z.model?` (${Z.model})`:""]},Z.name))})]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),m.jsx("select",{id:"gen-count",className:"setup-input",value:Qt,onChange:Z=>ad(Number(Z.target.value)),children:[3,5,10,15,20].map(Z=>m.jsx("option",{value:Z,children:Z},Z))})]}),m.jsx(Ee,{type:"button",variant:"outline",disabled:Fo||!Ka,onClick:Xt(ld),children:Fo?"Analyzing site...":"Generate"})]}),qi?m.jsx("p",{className:"text-negative-400 text-sm",children:qi}):null]}):null,m.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[m.jsx("span",{className:"flex-1 border-t border-base"}),"or type manually",m.jsx("span",{className:"flex-1 border-t border-base"})]}),m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),m.jsx("textarea",{id:"queries",className:"setup-textarea",rows:6,placeholder:`emergency dentist brooklyn
|
|
211
211
|
best invisalign downtown brooklyn
|
|
212
212
|
pediatric dentist brooklyn heights`,value:Ze,onChange:Z=>$t(Z.target.value)})]}),Ss?m.jsx("p",{className:"text-negative-400 text-sm",children:Ss}):null,m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsx(Ee,{type:"button",disabled:dn.length===0||_l,onClick:Xt(rd),children:_l?"Saving...":`Save ${dn.length} quer${dn.length!==1?"ies":"y"}`})]})]})]});case 3:return m.jsxs(Un,{className:"surface-card step-card",children:[m.jsxs("div",{className:"section-head",children:[m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 4 of 5"}),m.jsx("h2",{children:"Add competitors"})]}),zl?m.jsx(vn,{tone:"positive",children:"Saved"}):null]}),m.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),zl?m.jsxs("div",{className:"compact-stack",children:[m.jsx("ul",{className:"detail-list",children:ba.map(Z=>m.jsx("li",{children:Z},Z))}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsx(Ee,{type:"button",onClick:()=>la("competitors",4,ba.length),children:"Continue"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsxs("div",{className:"setup-field",children:[m.jsx("label",{className:"setup-label",htmlFor:"competitors",children:"Competitor domains (one per line)"}),m.jsx("textarea",{id:"competitors",className:"setup-textarea",rows:4,placeholder:`competitor1.com
|
|
213
|
-
competitor2.com`,value:Xo,onChange:Z=>id(Z.target.value)})]}),Zt?m.jsx("p",{className:"text-negative-400 text-sm",children:Zt}):null,m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsxs("div",{className:"flex gap-2",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:Vi,children:"Skip"}),m.jsx(Ee,{type:"button",disabled:ba.length===0||Ft,onClick:Xt(Tl),children:Ft?"Saving...":`Save ${ba.length} competitor${ba.length!==1?"s":""}`})]})]})]})]});case 4:{const Z=ra.data,Re=Z?.status??(Qa===P?.id?P.status:void 0),va=Re==="completed"||Re==="partial"||Re==="failed"||Re==="cancelled",mn=Z?.snapshots??[],Xa=mn.filter(Pt=>Pt.citationState==="cited").length,cd=mn.filter(Pt=>Pt.answerMentioned===!0).length,ar=new Set(mn.map(Pt=>Pt.query).filter(Pt=>!!Pt)).size,ir=Re?Zv(Re,mn.length):!1,Dl=H&&!Ha,_s=oa??(Z?.error?iM(Z.error):Re==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Re==="completed"||Re==="partial")&&mn.length===0?"The sweep finished without producing any snapshots. Confirm the query set and provider configuration, then retry.":P?.statusDetail||"The sweep did not produce a baseline. Review provider configuration, then retry.");let ca=null;return Dl||ir?ca=m.jsx(vn,{tone:"positive",children:"Complete"}):oa&&!Ha?ca=m.jsx(vn,{tone:"negative",children:"Failed"}):va?ca=m.jsx(vn,{tone:"negative",children:Re==="cancelled"?"Cancelled":"Failed"}):Ha&&(ca=m.jsx(vn,{tone:"caution",children:"Running"})),m.jsxs(Un,{className:"surface-card step-card",children:[m.jsxs("div",{className:"section-head",children:[m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),m.jsx("h2",{children:"Launch first run"})]}),ca]}),Dl?m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",m.jsx("span",{className:"text-strong font-medium",children:ie})," already has a successful answer-visibility baseline."]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx("span",{}),m.jsx(Ee,{type:"button",onClick:()=>{y({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Open project dashboard →"})]})]}):Ha?va?ir?m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",m.jsx("span",{className:"text-heading font-medium",children:ie}),":"]}),m.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[m.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[m.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),m.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[cd,m.jsxs("span",{className:"text-faint text-lg",children:[" / ",ar]})]}),m.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),m.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[m.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),m.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Xa,m.jsxs("span",{className:"text-faint text-lg",children:[" / ",ar]})]}),m.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),m.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[m.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),m.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:mn.length}),m.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),m.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Open the project to review the evidence."}),m.jsxs("div",{className:"setup-nav",children:[m.jsx("span",{}),m.jsx(Ee,{type:"button",onClick:()=>{y({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Open project dashboard →"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[m.jsx("p",{children:_s}),m.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Fix provider or query configuration if needed, then retry without leaving setup."})]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",asChild:!0,children:m.jsx(Xe,{to:"/settings",children:"Configure providers"})}),m.jsx(Ee,{type:"button",disabled:ya||!!Yt,onClick:Xt(As),children:ya?"Retrying...":"Retry visibility sweep"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsx("p",{className:"text-neutral",children:"Sweep running — typically 30-60s. Polling every 2s…"}),m.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:m.jsxs("p",{children:["Status: ",m.jsx("span",{className:"text-neutral",children:Re??"queued"})]})}),ra.isError&&m.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[m.jsx("p",{children:ra.error instanceof Error?ra.error.message:"Could not refresh the sweep status."}),m.jsx(Ee,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{ra.refetch()},children:"Retry status check"})]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx("span",{}),m.jsx(Ee,{type:"button",variant:"outline",onClick:()=>{y({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Watch on project page"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"supporting-copy",children:["Everything is configured. Launch an answer-visibility sweep to start tracking citations for ",m.jsx("span",{className:"text-heading font-medium",children:ie}),"."]}),(Yt||oa)&&m.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[m.jsx("p",{children:oa??Yt}),m.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsx(Ee,{type:"button",disabled:ya||!!Yt,title:Yt,onClick:Xt(As),children:ya?"Launching...":oa?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return m.jsxs("div",{className:"page-container",children:[m.jsx("div",{className:"page-header",children:m.jsxs("div",{className:"page-header-left",children:[m.jsx("h1",{className:"page-title",children:"Setup"}),m.jsx("p",{className:"page-subtitle",children:"Create a project and run its first visibility check."})]})}),m.jsx(jI,{current:fe,labels:SI}),m.jsx("section",{className:"setup-wizard",children:Ya})]})}function CI(){return m.jsx("div",{className:"page-container",children:m.jsx("section",{className:"page-section",children:m.jsxs(Un,{className:"surface-card empty-card",children:[m.jsx("h1",{children:"Route not found"}),m.jsx("p",{children:"The current path does not map to a dashboard view."}),m.jsx(Ee,{asChild:!0,children:m.jsx(Xe,{to:"/",children:"Return to overview"})})]})})})}const sa=gs(()=>ys(()=>import("./ProjectPage-Bnr7I5qu.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),"ProjectPage"),zI=gs(()=>ys(()=>import("./RunsPage-CtF3P7CA.js"),__vite__mapDeps([10,1,2,8,5,9]),import.meta.url),"RunsPage"),EI=gs(()=>ys(()=>import("./HistoryPage-CW6MJ-dR.js"),__vite__mapDeps([11,1,7,8,5,9]),import.meta.url),"HistoryPage"),TI=gs(()=>ys(()=>import("./SettingsPage-3-uzs2lp.js"),__vite__mapDeps([12,1,8,5,9]),import.meta.url),"SettingsPage"),DI=gs(()=>ys(()=>import("./BacklinksPage-yiEbyV67.js"),__vite__mapDeps([13,1,6,8,5,9]),import.meta.url),"BacklinksPage"),OI=gs(()=>ys(()=>import("./TrafficPage-Bww4KUn8.js"),__vite__mapDeps([14,1,4,15,8,5,9]),import.meta.url),"TrafficPage"),RI=gs(()=>ys(()=>import("./TrafficSourceDetailPage-DiHxUH2H.js"),__vite__mapDeps([16,1,4,3,5,15,8,9]),import.meta.url),"TrafficSourceDetailPage");function MI(){return m.jsx(QL,{children:m.jsx(HL,{})})}const cn=O4()({component:MI,validateSearch:e=>({runId:typeof e.runId=="string"?e.runId: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})}),BI=St({getParentRoute:()=>cn,path:"/",component:YL,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Uo({client:oe}));if(n&&n.length===0)throw Wv({to:"/setup"})}}),qI=St({getParentRoute:()=>cn,path:"/projects",component:lI}),LI=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Zn=St({getParentRoute:()=>cn,path:"/projects/$projectName",component:()=>m.jsx(Fp,{}),beforeLoad:async({context:e,params:n,location:i})=>{const s=n.projectName;if(!LI.test(s))return;let r=e.queryClient.getQueryData(Uo({client:oe}));if(!r)try{r=await e.queryClient.ensureQueryData(Iu({client:oe}))}catch{return}const u=r.find(d=>d.id===s);if(u)throw Wv({to:i.pathname.replace(`/projects/${s}`,`/projects/${encodeURIComponent(u.name)}`),replace:!0})}}),$I=St({getParentRoute:()=>Zn,path:"/",component:()=>m.jsx(sa,{tab:"overview"})}),II=St({getParentRoute:()=>Zn,path:"/portfolio",component:()=>m.jsx(sa,{tab:"portfolio"})}),UI=St({getParentRoute:()=>Zn,path:"/search-console",component:()=>m.jsx(sa,{tab:"search-console"})}),PI=St({getParentRoute:()=>Zn,path:"/local",component:()=>m.jsx(sa,{tab:"local"})}),VI=St({getParentRoute:()=>Zn,path:"/discovery",component:()=>m.jsx(sa,{tab:"discovery"})}),GI=St({getParentRoute:()=>Zn,path:"/report",component:()=>m.jsx(sa,{tab:"report"})}),KI=St({getParentRoute:()=>Zn,path:"/activity",component:()=>m.jsx(sa,{tab:"activity"})}),HI=St({getParentRoute:()=>Zn,path:"/backlinks",component:()=>m.jsx(sa,{tab:"backlinks"})}),QI=St({getParentRoute:()=>Zn,path:"/technical-aeo",component:()=>m.jsx(sa,{tab:"technical-aeo"})}),ZI=St({getParentRoute:()=>Zn,path:"/history",component:()=>m.jsx(sa,{tab:"history"})}),FI=St({getParentRoute:()=>Zn,path:"/settings",component:()=>m.jsx(sa,{tab:"settings"})}),YI=St({getParentRoute:()=>cn,path:"/runs",component:zI}),XI=St({getParentRoute:()=>cn,path:"/history",component:EI}),JI=St({getParentRoute:()=>cn,path:"/settings",component:TI,beforeLoad:({context:e})=>{}}),WI=St({getParentRoute:()=>cn,path:"/setup",component:NI}),eU=St({getParentRoute:()=>cn,path:"/backlinks",component:DI}),tU=St({getParentRoute:()=>cn,path:"/traffic",component:OI}),nU=St({getParentRoute:()=>cn,path:"/traffic/$projectName/$sourceId",component:RI}),aU=St({getParentRoute:()=>cn,path:"*",component:CI}),iU=cn.addChildren([BI,qI,Zn.addChildren([$I,II,UI,PI,VI,GI,KI,HI,QI,ZI,FI]),YI,XI,JI,WI,eU,tU,nU,aU]);function sU(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Xv=sU(),oU=Xv==="/"?"":Xv.replace(/\/$/,"");function rU(e,n){return R4({routeTree:iU,basepath:oU||"/",context:{queryClient:e},...n?.initialEntries})}const lU=6e4;function cU(){const[e,n]=q.useState(xp()?"ready":"checking"),[i,s]=q.useState(null),[r,u]=q.useState(!1),[d,g]=q.useState(""),[y,v]=q.useState(""),[w,S]=q.useState(""),[j,_]=q.useState(null),[E,A]=q.useState(!1),[C,O]=q.useState(!1),L=q.useRef(null),G=q.useRef(null),P=q.useRef(null),H=()=>{const ue=i?`${i.name}:${i.role}`:"no-accounts";if(!L.current||P.current!==ue){G.current?.clear();const me=pN();G.current=me,L.current=rU(me),P.current=ue}return{queryClient:G.current,router:L.current}},ae=ue=>ue.authRequired?(u(!0),s(ue.user),n(ue.user?"ready":"account-login"),!0):!1;q.useEffect(()=>{if(xp())return;let ue=!1;return Promise.allSettled([Zy(),Qy()]).then(([me,pe])=>{if(ue||me.status==="fulfilled"&&ae(me.value))return;if(pe.status==="rejected"){const De=pe.reason;_(De instanceof Error?De.message:"Failed to reach the Canonry API"),n("login");return}const Ge=pe.value;Ge.authenticated?n("ready"):n(Ge.setupRequired?"setup":"login")}),()=>{ue=!0}},[]),q.useEffect(()=>{if(e!=="ready"||xp())return;const ue=setInterval(()=>{if(r){Zy().then(me=>{me.authRequired&&!me.user&&(O(!0),s(null),n("account-login"))}).catch(()=>{});return}Qy().then(me=>{me.authenticated||(O(!0),n(me.setupRequired?"setup":"login"))}).catch(()=>{})},lU);return Hy(()=>{O(!0),s(null),n(r?"account-login":"login")}),()=>{clearInterval(ue),Hy(null)}},[e,r]);const R=async ue=>{if(ue.preventDefault(),!y.trim()||y.trim().length<8){_("Password must be at least 8 characters");return}if(y!==w){_("Passwords do not match");return}A(!0),_(null);try{if(!(await P6(y.trim())).authenticated){_("Setup failed");return}v(""),S(""),O(!1),n("ready")}catch(me){_(me instanceof zn||me instanceof Error?me.message:"Setup failed")}finally{A(!1)}},$=async ue=>{if(ue.preventDefault(),!!y.trim()){A(!0),_(null);try{if(!(await V6(y.trim())).authenticated){_("Incorrect password");return}v(""),O(!1),n("ready")}catch(me){_(me instanceof zn||me instanceof Error?me.message:"Authentication failed")}finally{A(!1)}}},fe=async ue=>{if(ue.preventDefault(),!(!d.trim()||!y)){A(!0),_(null);try{const me=await G6(d.trim(),y);if(!me.user){_("Incorrect name or password.");return}v(""),O(!1),s(me.user),n("ready")}catch(me){_(me instanceof zn?me.message:"Incorrect name or password.")}finally{A(!1)}}};if(e==="ready"){const{queryClient:ue,router:me}=H();return m.jsx(iN,{account:i,children:m.jsx(M4,{client:ue,children:m.jsx(B4,{router:me})})})}return m.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:m.jsx("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md items-center justify-center",children:m.jsx(Un,{className:"surface-card w-full",children:e==="checking"?m.jsx(go,{className:"py-8",children:m.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="account-login"?m.jsxs(m.Fragment,{children:[m.jsxs(il,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),m.jsx(sl,{children:"Sign in to Canonry"}),m.jsx(ol,{children:"Enter the name and password for your account."})]}),m.jsxs(go,{children:[C?m.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,m.jsxs("form",{className:"space-y-4",onSubmit:Xt(fe),children:[m.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),m.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",autoComplete:"username",value:d,onChange:ue=>g(ue.target.value)})]}),m.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),m.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",autoComplete:"current-password",value:y,onChange:ue=>v(ue.target.value)})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(Ee,{type:"submit",disabled:E||!d.trim()||!y,children:E?"Signing in…":"Sign in"})]})]})]}):e==="setup"?m.jsxs(m.Fragment,{children:[m.jsxs(il,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),m.jsx(sl,{children:"Create a dashboard password"}),m.jsx(ol,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),m.jsx(go,{children:m.jsxs("form",{className:"space-y-4",onSubmit:Xt(R),children:[m.jsxs("label",{className:"block space-y-1.5",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),m.jsx("input",{autoFocus:!0,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",value:y,onChange:ue=>v(ue.target.value),placeholder:"At least 8 characters"})]}),m.jsxs("label",{className:"block space-y-1.5",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Confirm password"}),m.jsx("input",{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",value:w,onChange:ue=>S(ue.target.value),placeholder:"Re-enter password"})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(Ee,{type:"submit",disabled:E||!y.trim()||!w.trim(),children:E?"Setting up…":"Create password & open dashboard"})]})})]}):m.jsxs(m.Fragment,{children:[m.jsxs(il,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),m.jsx(sl,{children:"Sign in to Canonry"}),m.jsx(ol,{children:"Enter your dashboard password to continue."})]}),m.jsxs(go,{children:[C?m.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,m.jsxs("form",{className:"space-y-4",onSubmit:Xt($),children:[m.jsxs("label",{className:"block space-y-1.5",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),m.jsx("input",{autoFocus:!0,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",value:y,onChange:ue=>v(ue.target.value),placeholder:"Dashboard password"})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(Ee,{type:"submit",disabled:E||!y.trim(),children:E?"Signing in…":"Open dashboard"})]})]})]})})})})}const yw=document.getElementById("root");if(!yw)throw new Error("Expected #root element for web app bootstrap.");V4.createRoot(yw).render(m.jsx(q.StrictMode,{children:m.jsx(cU,{})}));export{mV as $,GP as A,Ee as B,Lf as C,PP as D,KP as E,CU as F,AP as G,rV as H,Yr as I,cV as J,uV as K,LU as L,qU as M,FU as N,rn as O,wq as P,pV as Q,fV as R,dA as S,vn as T,VU as U,hV as V,GU as W,Bo as X,IU as Y,PU as Z,dV as _,QV as a,DP as a$,lV as a0,$U as a1,gV as a2,SV as a3,vV as a4,xV as a5,kV as a6,wV as a7,tN as a8,z0 as a9,yM as aA,EM as aB,eV as aC,nV as aD,tV as aE,IP as aF,UP as aG,UV as aH,PV as aI,VV as aJ,KU as aK,Uo as aL,HU as aM,_0 as aN,GV as aO,HV as aP,KV as aQ,jM as aR,JV as aS,z2 as aT,D2 as aU,MV as aV,oV as aW,yu as aX,mf as aY,$b as aZ,YV as a_,Te as aa,bV as ab,sx as ac,Va as ad,yV as ae,sT as af,oT as ag,zP as ah,CP as ai,hP as aj,xP as ak,wP as al,zn as am,SP as an,vU as ao,E2 as ap,iM as aq,VN as ar,nA as as,AB as at,cu as au,jP as av,ef as aw,BV as ax,UU as ay,_P as az,vu as b,XU as b$,RV as b0,TP as b1,aP as b2,nG as b3,MP as b4,OP as b5,BP as b6,qP as b7,EP as b8,RP as b9,B6 as bA,cM as bB,_U as bC,hU as bD,bM as bE,yU as bF,gU as bG,L6 as bH,wM as bI,fU as bJ,tG as bK,FV as bL,xU as bM,wU as bN,kU as bO,SU as bP,gM as bQ,jV as bR,AV as bS,Y6 as bT,_V as bU,eP as bV,WU as bW,CV as bX,NV as bY,VP as bZ,YU as b_,AU as ba,NU as bb,jU as bc,iP as bd,EU as be,ZP as bf,cv as bg,QP as bh,TU as bi,DU as bj,HP as bk,OU as bl,RU as bm,BU as bn,MU as bo,wl as bp,Iu as bq,mL as br,b2 as bs,YP as bt,XP as bu,hI as bv,aV as bw,JP as bx,WP as by,sn as bz,et as c,JU as c0,tP as c1,No as c2,C0 as c3,XV as c4,Gu as c5,D0 as c6,iV as c7,sV as c8,K6 as c9,$V as cA,wN as cB,$P as cC,w0 as cD,FP as cE,qV as cF,IV as cG,dP as cH,LP as cI,cP as cJ,uP as cK,lP as cL,LV as cM,z6 as ca,bU as cb,zU as cc,QU as cd,ZU as ce,cI as cf,Ku as cg,O0 as ch,nP as ci,Do as cj,dv as ck,pP as cl,gP as cm,bP as cn,vP as co,fP as cp,yP as cq,kP as cr,Sq as cs,Sx as ct,Cq as cu,jx as cv,Nx as cw,qN as cx,mP as cy,eb as cz,K9 as d,ZV as e,Un as f,ha as g,wv as h,N6 as i,Xt as j,NP as k,zV as l,oe as m,EV as n,TV as o,OV as p,DV as q,sP as r,rP as s,oM as t,R0 as u,oP as v,aM as w,WV as x,eG as y,xf as z};
|
|
213
|
+
competitor2.com`,value:Xo,onChange:Z=>id(Z.target.value)})]}),Zt?m.jsx("p",{className:"text-negative-400 text-sm",children:Zt}):null,m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsxs("div",{className:"flex gap-2",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:Vi,children:"Skip"}),m.jsx(Ee,{type:"button",disabled:ba.length===0||Ft,onClick:Xt(Tl),children:Ft?"Saving...":`Save ${ba.length} competitor${ba.length!==1?"s":""}`})]})]})]})]});case 4:{const Z=ra.data,Re=Z?.status??(Qa===P?.id?P.status:void 0),va=Re==="completed"||Re==="partial"||Re==="failed"||Re==="cancelled",mn=Z?.snapshots??[],Xa=mn.filter(Pt=>Pt.citationState==="cited").length,cd=mn.filter(Pt=>Pt.answerMentioned===!0).length,ar=new Set(mn.map(Pt=>Pt.query).filter(Pt=>!!Pt)).size,ir=Re?Zv(Re,mn.length):!1,Dl=H&&!Ha,_s=oa??(Z?.error?sM(Z.error):Re==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Re==="completed"||Re==="partial")&&mn.length===0?"The sweep finished without producing any snapshots. Confirm the query set and provider configuration, then retry.":P?.statusDetail||"The sweep did not produce a baseline. Review provider configuration, then retry.");let ca=null;return Dl||ir?ca=m.jsx(vn,{tone:"positive",children:"Complete"}):oa&&!Ha?ca=m.jsx(vn,{tone:"negative",children:"Failed"}):va?ca=m.jsx(vn,{tone:"negative",children:Re==="cancelled"?"Cancelled":"Failed"}):Ha&&(ca=m.jsx(vn,{tone:"caution",children:"Running"})),m.jsxs(Un,{className:"surface-card step-card",children:[m.jsxs("div",{className:"section-head",children:[m.jsxs("div",{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),m.jsx("h2",{children:"Launch first run"})]}),ca]}),Dl?m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",m.jsx("span",{className:"text-strong font-medium",children:ie})," already has a successful answer-visibility baseline."]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx("span",{}),m.jsx(Ee,{type:"button",onClick:()=>{y({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Open project dashboard →"})]})]}):Ha?va?ir?m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",m.jsx("span",{className:"text-heading font-medium",children:ie}),":"]}),m.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[m.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[m.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),m.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[cd,m.jsxs("span",{className:"text-faint text-lg",children:[" / ",ar]})]}),m.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),m.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[m.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),m.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Xa,m.jsxs("span",{className:"text-faint text-lg",children:[" / ",ar]})]}),m.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),m.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[m.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),m.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:mn.length}),m.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),m.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Open the project to review the evidence."}),m.jsxs("div",{className:"setup-nav",children:[m.jsx("span",{}),m.jsx(Ee,{type:"button",onClick:()=>{y({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Open project dashboard →"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[m.jsx("p",{children:_s}),m.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Fix provider or query configuration if needed, then retry without leaving setup."})]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",asChild:!0,children:m.jsx(Xe,{to:"/settings",children:"Configure providers"})}),m.jsx(Ee,{type:"button",disabled:ya||!!Yt,onClick:Xt(As),children:ya?"Retrying...":"Retry visibility sweep"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsx("p",{className:"text-neutral",children:"Sweep running — typically 30-60s. Polling every 2s…"}),m.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:m.jsxs("p",{children:["Status: ",m.jsx("span",{className:"text-neutral",children:Re??"queued"})]})}),ra.isError&&m.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[m.jsx("p",{children:ra.error instanceof Error?ra.error.message:"Could not refresh the sweep status."}),m.jsx(Ee,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{ra.refetch()},children:"Retry status check"})]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx("span",{}),m.jsx(Ee,{type:"button",variant:"outline",onClick:()=>{y({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Watch on project page"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"supporting-copy",children:["Everything is configured. Launch an answer-visibility sweep to start tracking citations for ",m.jsx("span",{className:"text-heading font-medium",children:ie}),"."]}),(Yt||oa)&&m.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[m.jsx("p",{children:oa??Yt}),m.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(Ee,{type:"button",variant:"outline",onClick:en,children:"Back"}),m.jsx(Ee,{type:"button",disabled:ya||!!Yt,title:Yt,onClick:Xt(As),children:ya?"Launching...":oa?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return m.jsxs("div",{className:"page-container",children:[m.jsx("div",{className:"page-header",children:m.jsxs("div",{className:"page-header-left",children:[m.jsx("h1",{className:"page-title",children:"Setup"}),m.jsx("p",{className:"page-subtitle",children:"Create a project and run its first visibility check."})]})}),m.jsx(NI,{current:fe,labels:jI}),m.jsx("section",{className:"setup-wizard",children:Ya})]})}function zI(){return m.jsx("div",{className:"page-container",children:m.jsx("section",{className:"page-section",children:m.jsxs(Un,{className:"surface-card empty-card",children:[m.jsx("h1",{children:"Route not found"}),m.jsx("p",{children:"The current path does not map to a dashboard view."}),m.jsx(Ee,{asChild:!0,children:m.jsx(Xe,{to:"/",children:"Return to overview"})})]})})})}const sa=gs(()=>ys(()=>import("./ProjectPage-aFV2nddp.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url),"ProjectPage"),EI=gs(()=>ys(()=>import("./RunsPage-D3Zxd6oc.js"),__vite__mapDeps([10,1,2,8,5,9]),import.meta.url),"RunsPage"),TI=gs(()=>ys(()=>import("./HistoryPage-DAN9QO6x.js"),__vite__mapDeps([11,1,7,8,5,9]),import.meta.url),"HistoryPage"),DI=gs(()=>ys(()=>import("./SettingsPage-DcCFVeA7.js"),__vite__mapDeps([12,1,8,5,9]),import.meta.url),"SettingsPage"),OI=gs(()=>ys(()=>import("./BacklinksPage-RTcYKA5I.js"),__vite__mapDeps([13,1,6,8,5,9]),import.meta.url),"BacklinksPage"),RI=gs(()=>ys(()=>import("./TrafficPage-D0tPBu5O.js"),__vite__mapDeps([14,1,4,15,8,5,9]),import.meta.url),"TrafficPage"),MI=gs(()=>ys(()=>import("./TrafficSourceDetailPage-CtyEE9eJ.js"),__vite__mapDeps([16,1,4,3,5,15,8,9]),import.meta.url),"TrafficSourceDetailPage");function BI(){return m.jsx(ZL,{children:m.jsx(QL,{})})}const cn=O4()({component:BI,validateSearch:e=>({runId:typeof e.runId=="string"?e.runId: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})}),qI=St({getParentRoute:()=>cn,path:"/",component:XL,beforeLoad:({context:e})=>{const n=e.queryClient.getQueryData(Uo({client:oe}));if(n&&n.length===0)throw Wv({to:"/setup"})}}),LI=St({getParentRoute:()=>cn,path:"/projects",component:cI}),$I=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Zn=St({getParentRoute:()=>cn,path:"/projects/$projectName",component:()=>m.jsx(Fp,{}),beforeLoad:async({context:e,params:n,location:i})=>{const s=n.projectName;if(!$I.test(s))return;let r=e.queryClient.getQueryData(Uo({client:oe}));if(!r)try{r=await e.queryClient.ensureQueryData(Iu({client:oe}))}catch{return}const u=r.find(d=>d.id===s);if(u)throw Wv({to:i.pathname.replace(`/projects/${s}`,`/projects/${encodeURIComponent(u.name)}`),replace:!0})}}),II=St({getParentRoute:()=>Zn,path:"/",component:()=>m.jsx(sa,{tab:"overview"})}),UI=St({getParentRoute:()=>Zn,path:"/portfolio",component:()=>m.jsx(sa,{tab:"portfolio"})}),PI=St({getParentRoute:()=>Zn,path:"/search-console",component:()=>m.jsx(sa,{tab:"search-console"})}),VI=St({getParentRoute:()=>Zn,path:"/local",component:()=>m.jsx(sa,{tab:"local"})}),GI=St({getParentRoute:()=>Zn,path:"/discovery",component:()=>m.jsx(sa,{tab:"discovery"})}),KI=St({getParentRoute:()=>Zn,path:"/report",component:()=>m.jsx(sa,{tab:"report"})}),HI=St({getParentRoute:()=>Zn,path:"/activity",component:()=>m.jsx(sa,{tab:"activity"})}),QI=St({getParentRoute:()=>Zn,path:"/backlinks",component:()=>m.jsx(sa,{tab:"backlinks"})}),ZI=St({getParentRoute:()=>Zn,path:"/technical-aeo",component:()=>m.jsx(sa,{tab:"technical-aeo"})}),FI=St({getParentRoute:()=>Zn,path:"/history",component:()=>m.jsx(sa,{tab:"history"})}),YI=St({getParentRoute:()=>Zn,path:"/settings",component:()=>m.jsx(sa,{tab:"settings"})}),XI=St({getParentRoute:()=>cn,path:"/runs",component:EI}),JI=St({getParentRoute:()=>cn,path:"/history",component:TI}),WI=St({getParentRoute:()=>cn,path:"/settings",component:DI,beforeLoad:({context:e})=>{}}),eU=St({getParentRoute:()=>cn,path:"/setup",component:AI}),tU=St({getParentRoute:()=>cn,path:"/backlinks",component:OI}),nU=St({getParentRoute:()=>cn,path:"/traffic",component:RI}),aU=St({getParentRoute:()=>cn,path:"/traffic/$projectName/$sourceId",component:MI}),iU=St({getParentRoute:()=>cn,path:"*",component:zI}),sU=cn.addChildren([qI,LI,Zn.addChildren([II,UI,PI,VI,GI,KI,HI,QI,ZI,FI,YI]),XI,JI,WI,eU,tU,nU,aU,iU]);function oU(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Xv=oU(),rU=Xv==="/"?"":Xv.replace(/\/$/,"");function lU(e,n){return R4({routeTree:sU,basepath:rU||"/",context:{queryClient:e},...n?.initialEntries})}const cU=6e4;function uU(){const[e,n]=q.useState(xp()?"ready":"checking"),[i,s]=q.useState(null),[r,u]=q.useState(!1),[d,g]=q.useState(""),[y,v]=q.useState(""),[w,S]=q.useState(""),[j,_]=q.useState(null),[E,A]=q.useState(!1),[C,O]=q.useState(!1),L=q.useRef(null),G=q.useRef(null),P=q.useRef(null),H=()=>{const ue=i?`${i.name}:${i.role}`:"no-accounts";if(!L.current||P.current!==ue){G.current?.clear();const me=pN();G.current=me,L.current=lU(me),P.current=ue}return{queryClient:G.current,router:L.current}},ae=ue=>ue.authRequired?(u(!0),s(ue.user),n(ue.user?"ready":"account-login"),!0):!1;q.useEffect(()=>{if(xp())return;let ue=!1;return Promise.allSettled([Zy(),Qy()]).then(([me,pe])=>{if(ue||me.status==="fulfilled"&&ae(me.value))return;if(pe.status==="rejected"){const De=pe.reason;_(De instanceof Error?De.message:"Failed to reach the Canonry API"),n("login");return}const Ge=pe.value;Ge.authenticated?n("ready"):n(Ge.setupRequired?"setup":"login")}),()=>{ue=!0}},[]),q.useEffect(()=>{if(e!=="ready"||xp())return;const ue=setInterval(()=>{if(r){Zy().then(me=>{me.authRequired&&!me.user&&(O(!0),s(null),n("account-login"))}).catch(()=>{});return}Qy().then(me=>{me.authenticated||(O(!0),n(me.setupRequired?"setup":"login"))}).catch(()=>{})},cU);return Hy(()=>{O(!0),s(null),n(r?"account-login":"login")}),()=>{clearInterval(ue),Hy(null)}},[e,r]);const R=async ue=>{if(ue.preventDefault(),!y.trim()||y.trim().length<8){_("Password must be at least 8 characters");return}if(y!==w){_("Passwords do not match");return}A(!0),_(null);try{if(!(await P6(y.trim())).authenticated){_("Setup failed");return}v(""),S(""),O(!1),n("ready")}catch(me){_(me instanceof zn||me instanceof Error?me.message:"Setup failed")}finally{A(!1)}},$=async ue=>{if(ue.preventDefault(),!!y.trim()){A(!0),_(null);try{if(!(await V6(y.trim())).authenticated){_("Incorrect password");return}v(""),O(!1),n("ready")}catch(me){_(me instanceof zn||me instanceof Error?me.message:"Authentication failed")}finally{A(!1)}}},fe=async ue=>{if(ue.preventDefault(),!(!d.trim()||!y)){A(!0),_(null);try{const me=await G6(d.trim(),y);if(!me.user){_("Incorrect name or password.");return}v(""),O(!1),s(me.user),n("ready")}catch(me){_(me instanceof zn?me.message:"Incorrect name or password.")}finally{A(!1)}}};if(e==="ready"){const{queryClient:ue,router:me}=H();return m.jsx(iN,{account:i,children:m.jsx(M4,{client:ue,children:m.jsx(B4,{router:me})})})}return m.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:m.jsx("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md items-center justify-center",children:m.jsx(Un,{className:"surface-card w-full",children:e==="checking"?m.jsx(go,{className:"py-8",children:m.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="account-login"?m.jsxs(m.Fragment,{children:[m.jsxs(il,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),m.jsx(sl,{children:"Sign in to Canonry"}),m.jsx(ol,{children:"Enter the name and password for your account."})]}),m.jsxs(go,{children:[C?m.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,m.jsxs("form",{className:"space-y-4",onSubmit:Xt(fe),children:[m.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),m.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",autoComplete:"username",value:d,onChange:ue=>g(ue.target.value)})]}),m.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),m.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",autoComplete:"current-password",value:y,onChange:ue=>v(ue.target.value)})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(Ee,{type:"submit",disabled:E||!d.trim()||!y,children:E?"Signing in…":"Sign in"})]})]})]}):e==="setup"?m.jsxs(m.Fragment,{children:[m.jsxs(il,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),m.jsx(sl,{children:"Create a dashboard password"}),m.jsx(ol,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),m.jsx(go,{children:m.jsxs("form",{className:"space-y-4",onSubmit:Xt(R),children:[m.jsxs("label",{className:"block space-y-1.5",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),m.jsx("input",{autoFocus:!0,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",value:y,onChange:ue=>v(ue.target.value),placeholder:"At least 8 characters"})]}),m.jsxs("label",{className:"block space-y-1.5",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Confirm password"}),m.jsx("input",{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",value:w,onChange:ue=>S(ue.target.value),placeholder:"Re-enter password"})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(Ee,{type:"submit",disabled:E||!y.trim()||!w.trim(),children:E?"Setting up…":"Create password & open dashboard"})]})})]}):m.jsxs(m.Fragment,{children:[m.jsxs(il,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),m.jsx(sl,{children:"Sign in to Canonry"}),m.jsx(ol,{children:"Enter your dashboard password to continue."})]}),m.jsxs(go,{children:[C?m.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,m.jsxs("form",{className:"space-y-4",onSubmit:Xt($),children:[m.jsxs("label",{className:"block space-y-1.5",children:[m.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),m.jsx("input",{autoFocus:!0,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",value:y,onChange:ue=>v(ue.target.value),placeholder:"Dashboard password"})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(Ee,{type:"submit",disabled:E||!y.trim(),children:E?"Signing in…":"Open dashboard"})]})]})]})})})})}const yw=document.getElementById("root");if(!yw)throw new Error("Expected #root element for web app bootstrap.");V4.createRoot(yw).render(m.jsx(q.StrictMode,{children:m.jsx(uU,{})}));export{pV as $,KP as A,Ee as B,Lf as C,VP as D,HP as E,zU as F,_P as G,lV as H,Yr as I,uV as J,dV as K,$U as L,LU as M,YU as N,rn as O,Sq as P,fV as Q,hV as R,dA as S,vn as T,GU as U,gV as V,KU as W,Bo as X,UU as Y,VU as Z,mV as _,ZV as a,OP as a$,cV as a0,IU as a1,yV as a2,jV as a3,kV as a4,wV as a5,xV as a6,SV as a7,tN as a8,z0 as a9,bM as aA,TM as aB,tV as aC,aV as aD,nV as aE,UP as aF,PP as aG,PV as aH,VV as aI,GV as aJ,HU as aK,Uo as aL,QU as aM,_0 as aN,KV as aO,QV as aP,HV as aQ,NM as aR,WV as aS,z2 as aT,D2 as aU,BV as aV,rV as aW,yu as aX,mf as aY,$b as aZ,XV as a_,Te as aa,vV as ab,sx as ac,Va as ad,bV as ae,oT as af,rT as ag,EP as ah,zP as ai,gP as aj,wP as ak,SP as al,zn as am,jP as an,kU as ao,E2 as ap,sM as aq,VN as ar,nA as as,_B as at,cu as au,NP as av,ef as aw,qV as ax,PU as ay,CP as az,vu as b,JU as b$,MV as b0,DP as b1,iP as b2,aG as b3,BP as b4,RP as b5,qP as b6,LP as b7,TP as b8,MP as b9,B6 as bA,uM as bB,CU as bC,gU as bD,vM as bE,bU as bF,yU as bG,L6 as bH,SM as bI,hU as bJ,nG as bK,YV as bL,wU as bM,SU as bN,xU as bO,jU as bP,yM as bQ,NV as bR,_V as bS,Y6 as bT,CV as bU,tP as bV,eP as bW,zV as bX,AV as bY,GP as bZ,XU as b_,_U as ba,AU as bb,NU as bc,sP as bd,TU as be,FP as bf,cv as bg,ZP as bh,DU as bi,OU as bj,QP as bk,RU as bl,MU as bm,qU as bn,BU as bo,wl as bp,Iu as bq,pL as br,b2 as bs,XP as bt,JP as bu,gI as bv,iV as bw,WP as bx,eV as by,sn as bz,et as c,WU as c0,nP as c1,No as c2,C0 as c3,JV as c4,Gu as c5,D0 as c6,sV as c7,oV as c8,K6 as c9,IV as cA,wN as cB,IP as cC,w0 as cD,YP as cE,LV as cF,UV as cG,mP as cH,$P as cI,uP as cJ,dP as cK,cP as cL,$V as cM,z6 as ca,vU as cb,EU as cc,ZU as cd,FU as ce,uI as cf,Ku as cg,O0 as ch,aP as ci,Do as cj,dv as ck,fP as cl,yP as cm,vP as cn,kP as co,hP as cp,bP as cq,xP as cr,jq as cs,Sx as ct,zq as cu,jx as cv,Nx as cw,qN as cx,pP as cy,eb as cz,K9 as d,FV as e,Un as f,ha as g,wv as h,N6 as i,Xt as j,AP as k,EV as l,oe as m,TV as n,DV as o,RV as p,OV as q,oP as r,lP as s,rM as t,R0 as u,rP as v,iM as w,eG as x,tG as y,xf as z};
|