@canonry/canonry 4.148.6 → 4.148.7
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-Dj4ubBWw.js → AuditHistoryPanel-C86x9Iku.js} +1 -1
- package/assets/assets/{BacklinksPage-DO0Y4ipF.js → BacklinksPage-B3oUNNXC.js} +1 -1
- package/assets/assets/{ChartPrimitives-Pfl9_KTS.js → ChartPrimitives-C6_tMGV3.js} +1 -1
- package/assets/assets/{HistoryPage-CW8R9K8Q.js → HistoryPage-DYiMm7tS.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-DARd-lIM.js → MeasurementPropertyPage-Cej0CSpU.js} +1 -1
- package/assets/assets/{ProjectPage-WQcGpLkQ.js → ProjectPage-CYFnPBUA.js} +1 -1
- package/assets/assets/{RunRow-B38F7Fzx.js → RunRow-BoPi92Qj.js} +1 -1
- package/assets/assets/{RunsPage-CcpGqrXb.js → RunsPage-DUM6WBL1.js} +1 -1
- package/assets/assets/{SettingsPage-vFUv8cVP.js → SettingsPage-DFPenWph.js} +1 -1
- package/assets/assets/{TrafficPage-BEzPAd-o.js → TrafficPage-S8S9tB6N.js} +1 -1
- package/assets/assets/{TrafficSourceDetailPage-TOC6E5-9.js → TrafficSourceDetailPage-CfzhhNVa.js} +1 -1
- package/assets/assets/{arrow-left-Cc6kK8u6.js → arrow-left-Bhi4ZStt.js} +1 -1
- package/assets/assets/{extract-error-message-lonIEje0.js → extract-error-message-DJGuacu4.js} +1 -1
- package/assets/assets/{index-DftwFVMy.js → index-DOO7zB-y.js} +3 -3
- package/assets/assets/{trash-2-Bz6OQRvi.js → trash-2-B-gSnDV3.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-G6MROIF5.js → chunk-4VNOYFCG.js} +20 -20
- package/dist/{chunk-IGPUEHUD.js → chunk-B4JACCYB.js} +1 -1
- package/dist/{chunk-AJOOL3D3.js → chunk-HWK2JSV3.js} +45 -1
- package/dist/{chunk-UOYZDJOE.js → chunk-R6UQYXLG.js} +59 -0
- package/dist/cli.js +4 -4
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-S5PQT5GP.js → intelligence-service-M6QKJWT7.js} +2 -2
- package/dist/mcp.js +2 -2
- package/package.json +7 -7
|
@@ -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-CYFnPBUA.js","./vendor-tanstack-BjS7iY3g.js","./RunRow-BoPi92Qj.js","./ChartPrimitives-C6_tMGV3.js","./extract-error-message-DJGuacu4.js","./vendor-recharts-33ACLxsD.js","./trash-2-B-gSnDV3.js","./AuditHistoryPanel-C86x9Iku.js","./v2-overview-adapter-BHmxTmCf.js","./vendor-radix-DnzzbllM.js","./vendor-markdown-CpDJch4G.js","./RunsPage-DUM6WBL1.js","./HistoryPage-DYiMm7tS.js","./SettingsPage-DFPenWph.js","./BacklinksPage-B3oUNNXC.js","./TrafficPage-S8S9tB6N.js","./arrow-left-Bhi4ZStt.js","./TrafficSourceDetailPage-CfzhhNVa.js","./MeasurementPropertyPage-Cej0CSpU.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{c as Wj,d as e4,r as B,j as m,Q as t4,M as n4,q as Ne,e as x2,L as We,a as a4,f as po,u as mn,h as i4,k as qu,l as s4,m as o4,n as S2,O as mf,o as Mi,p as xs,s as r4,t as St,v as j2,x as Bi,y as l4,z as c4,A as u4}from"./vendor-tanstack-BjS7iY3g.js";import{S as d4,O as Qf,P as A2,C as Zf,a as N2,T as Ff,D as _2,R as C2}from"./vendor-radix-DnzzbllM.js";import{c as z2}from"./vendor-recharts-33ACLxsD.js";import{M as m4}from"./vendor-markdown-CpDJch4G.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.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 Op={exports:{}},Yr={},Rp={exports:{}},Mp={};var ub;function p4(){return ub||(ub=1,(function(e){function t(Q,oe){var me=Q.length;Q.push(oe);e:for(;0<me;){var Ce=me-1>>>1,ce=Q[Ce];if(0<r(ce,oe))Q[Ce]=oe,Q[me]=ce,me=Ce;else break e}}function i(Q){return Q.length===0?null:Q[0]}function s(Q){if(Q.length===0)return null;var oe=Q[0],me=Q.pop();if(me!==oe){Q[0]=me;e:for(var Ce=0,ce=Q.length,He=ce>>>1;Ce<He;){var ne=2*(Ce+1)-1,H=Q[ne],X=ne+1,ie=Q[X];if(0>r(H,me))X<ce&&0>r(ie,H)?(Q[Ce]=ie,Q[X]=me,Ce=X):(Q[Ce]=H,Q[ne]=me,Ce=ne);else if(X<ce&&0>r(ie,me))Q[Ce]=ie,Q[X]=me,Ce=X;else break e}}return oe}function r(Q,oe){var me=Q.sortIndex-oe.sortIndex;return me!==0?me:Q.id-oe.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 b=[],v=[],x=1,S=null,j=3,_=!1,T=!1,N=!1,C=!1,O=typeof setTimeout=="function"?setTimeout:null,I=typeof clearTimeout=="function"?clearTimeout:null,$=typeof setImmediate<"u"?setImmediate:null;function V(Q){for(var oe=i(v);oe!==null;){if(oe.callback===null)s(v);else if(oe.startTime<=Q)s(v),oe.sortIndex=oe.expirationTime,t(b,oe);else break;oe=i(v)}}function Z(Q){if(N=!1,V(Q),!T)if(i(b)!==null)T=!0,se||(se=!0,we());else{var oe=i(v);oe!==null&&ge(Z,oe.startTime-Q)}}var se=!1,R=-1,q=5,pe=-1;function ue(){return C?!0:!(e.unstable_now()-pe<q)}function fe(){if(C=!1,se){var Q=e.unstable_now();pe=Q;var oe=!0;try{e:{T=!1,N&&(N=!1,I(R),R=-1),_=!0;var me=j;try{t:{for(V(Q),S=i(b);S!==null&&!(S.expirationTime>Q&&ue());){var Ce=S.callback;if(typeof Ce=="function"){S.callback=null,j=S.priorityLevel;var ce=Ce(S.expirationTime<=Q);if(Q=e.unstable_now(),typeof ce=="function"){S.callback=ce,V(Q),oe=!0;break t}S===i(b)&&s(b),V(Q)}else s(b);S=i(b)}if(S!==null)oe=!0;else{var He=i(v);He!==null&&ge(Z,He.startTime-Q),oe=!1}}break e}finally{S=null,j=me,_=!1}oe=void 0}}finally{oe?we():se=!1}}}var we;if(typeof $=="function")we=function(){$(fe)};else if(typeof MessageChannel<"u"){var Te=new MessageChannel,it=Te.port2;Te.port1.onmessage=fe,we=function(){it.postMessage(null)}}else we=function(){O(fe,0)};function ge(Q,oe){R=O(function(){Q(e.unstable_now())},oe)}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(Q){Q.callback=null},e.unstable_forceFrameRate=function(Q){0>Q||125<Q?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):q=0<Q?Math.floor(1e3/Q):5},e.unstable_getCurrentPriorityLevel=function(){return j},e.unstable_next=function(Q){switch(j){case 1:case 2:case 3:var oe=3;break;default:oe=j}var me=j;j=oe;try{return Q()}finally{j=me}},e.unstable_requestPaint=function(){C=!0},e.unstable_runWithPriority=function(Q,oe){switch(Q){case 1:case 2:case 3:case 4:case 5:break;default:Q=3}var me=j;j=Q;try{return oe()}finally{j=me}},e.unstable_scheduleCallback=function(Q,oe,me){var Ce=e.unstable_now();switch(typeof me=="object"&&me!==null?(me=me.delay,me=typeof me=="number"&&0<me?Ce+me:Ce):me=Ce,Q){case 1:var ce=-1;break;case 2:ce=250;break;case 5:ce=1073741823;break;case 4:ce=1e4;break;default:ce=5e3}return ce=me+ce,Q={id:x++,callback:oe,priorityLevel:Q,startTime:me,expirationTime:ce,sortIndex:-1},me>Ce?(Q.sortIndex=me,t(v,Q),i(b)===null&&Q===i(v)&&(N?(I(R),R=-1):N=!0,ge(Z,me-Ce))):(Q.sortIndex=ce,t(b,Q),T||_||(T=!0,se||(se=!0,we()))),Q},e.unstable_shouldYield=ue,e.unstable_wrapCallback=function(Q){var oe=j;return function(){var me=j;j=oe;try{return Q.apply(this,arguments)}finally{j=me}}}})(Mp)),Mp}var db;function f4(){return db||(db=1,Rp.exports=p4()),Rp.exports}var mb;function h4(){if(mb)return Yr;mb=1;var e=f4(),t=Wj(),i=e4();function s(n){var a="https://react.dev/errors/"+n;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 #"+n+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function r(n){return!(!n||n.nodeType!==1&&n.nodeType!==9&&n.nodeType!==11)}function u(n){var a=n,o=n;if(n.alternate)for(;a.return;)a=a.return;else{n=a;do a=n,(a.flags&4098)!==0&&(o=a.return),n=a.return;while(n)}return a.tag===3?o:null}function d(n){if(n.tag===13){var a=n.memoizedState;if(a===null&&(n=n.alternate,n!==null&&(a=n.memoizedState)),a!==null)return a.dehydrated}return null}function g(n){if(n.tag===31){var a=n.memoizedState;if(a===null&&(n=n.alternate,n!==null&&(a=n.memoizedState)),a!==null)return a.dehydrated}return null}function b(n){if(u(n)!==n)throw Error(s(188))}function v(n){var a=n.alternate;if(!a){if(a=u(n),a===null)throw Error(s(188));return a!==n?null:n}for(var o=n,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 b(p),n;if(f===l)return b(p),a;f=f.sibling}throw Error(s(188))}if(o.return!==l.return)o=p,l=f;else{for(var w=!1,A=p.child;A;){if(A===o){w=!0,o=p,l=f;break}if(A===l){w=!0,l=p,o=f;break}A=A.sibling}if(!w){for(A=f.child;A;){if(A===o){w=!0,o=f,l=p;break}if(A===l){w=!0,l=f,o=p;break}A=A.sibling}if(!w)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?n:a}function x(n){var a=n.tag;if(a===5||a===26||a===27||a===6)return n;for(n=n.child;n!==null;){if(a=x(n),a!==null)return a;n=n.sibling}return null}var S=Object.assign,j=Symbol.for("react.element"),_=Symbol.for("react.transitional.element"),T=Symbol.for("react.portal"),N=Symbol.for("react.fragment"),C=Symbol.for("react.strict_mode"),O=Symbol.for("react.profiler"),I=Symbol.for("react.consumer"),$=Symbol.for("react.context"),V=Symbol.for("react.forward_ref"),Z=Symbol.for("react.suspense"),se=Symbol.for("react.suspense_list"),R=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),pe=Symbol.for("react.activity"),ue=Symbol.for("react.memo_cache_sentinel"),fe=Symbol.iterator;function we(n){return n===null||typeof n!="object"?null:(n=fe&&n[fe]||n["@@iterator"],typeof n=="function"?n:null)}var Te=Symbol.for("react.client.reference");function it(n){if(n==null)return null;if(typeof n=="function")return n.$$typeof===Te?null:n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case N:return"Fragment";case O:return"Profiler";case C:return"StrictMode";case Z:return"Suspense";case se:return"SuspenseList";case pe:return"Activity"}if(typeof n=="object")switch(n.$$typeof){case T:return"Portal";case $:return n.displayName||"Context";case I:return(n._context.displayName||"Context")+".Consumer";case V:var a=n.render;return n=n.displayName,n||(n=a.displayName||a.name||"",n=n!==""?"ForwardRef("+n+")":"ForwardRef"),n;case R:return a=n.displayName||null,a!==null?a:it(n.type)||"Memo";case q:a=n._payload,n=n._init;try{return it(n(a))}catch{}}return null}var ge=Array.isArray,Q=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,oe=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,me={pending:!1,data:null,method:null,action:null},Ce=[],ce=-1;function He(n){return{current:n}}function ne(n){0>ce||(n.current=Ce[ce],Ce[ce]=null,ce--)}function H(n,a){ce++,Ce[ce]=n.current,n.current=a}var X=He(null),ie=He(null),re=He(null),ze=He(null);function ct(n,a){switch(H(re,a),H(ie,n),H(X,null),a.nodeType){case 9:case 11:n=(n=a.documentElement)&&(n=n.namespaceURI)?Oy(n):0;break;default:if(n=a.tagName,a=a.namespaceURI)a=Oy(a),n=Ry(a,n);else switch(n){case"svg":n=1;break;case"math":n=2;break;default:n=0}}ne(X),H(X,n)}function _e(){ne(X),ne(ie),ne(re)}function Qe(n){n.memoizedState!==null&&H(ze,n);var a=X.current,o=Ry(a,n.type);a!==o&&(H(ie,n),H(X,o))}function Ye(n){ie.current===n&&(ne(X),ne(ie)),ze.current===n&&(ne(ze),Hr._currentValue=me)}var Kt,In;function Ht(n){if(Kt===void 0)try{throw Error()}catch(o){var a=o.stack.trim().match(/\n( *(at )?)/);Kt=a&&a[1]||"",In=-1<o.stack.indexOf(`
|
|
3
3
|
at`)?" (<anonymous>)":-1<o.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
4
4
|
`+Kt+n+In}var Cs=!1;function zs(n,a){if(!n||Cs)return"";Cs=!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(F){var G=F}Reflect.construct(n,[],te)}else{try{te.call()}catch(F){G=F}n.call(te.prototype)}}else{try{throw Error()}catch(F){G=F}(te=n())&&typeof te.catch=="function"&&te.catch(function(){})}}catch(F){if(F&&G&&typeof F.stack=="string")return[F.stack,G.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(),w=f[0],A=f[1];if(w&&A){var z=w.split(`
|
|
@@ -49,7 +49,7 @@ Error generating stack: `+l.message+`
|
|
|
49
49
|
|
|
50
50
|
`)}_.write("payload.value = newResult;"),_.write("return payload;");const I=_.compile();return($,V)=>I(j,$,V)};let u;const d=hl,g=!ok.jitless,v=g&&XN.value,x=t.catchall;let S;e._zod.parse=(j,_)=>{S??(S=s.value);const T=j.value;return d(T)?g&&v&&_?.async===!1&&_.jitless!==!0?(u||(u=r(t.shape)),j=u(j,_),x?Sk([],T,j,_,S,e):j):i(j,_):(j.issues.push({expected:"object",code:"invalid_type",input:T,inst:e}),j)}});function Eb(e,t,i,s){for(const u of e)if(u.issues.length===0)return t.value=u.value,t;const r=e.filter(u=>!bo(u));return r.length===1?(t.value=r[0].value,r[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:i,errors:e.map(u=>u.issues.map(d=>Ri(d,s,Oi())))}),t)}const jk=J("$ZodUnion",(e,t)=>{kt.init(e,t),et(e._zod,"optin",()=>t.options.some(r=>r._zod.optin==="optional")?"optional":void 0),et(e._zod,"optout",()=>t.options.some(r=>r._zod.optout==="optional")?"optional":void 0),et(e._zod,"values",()=>{if(t.options.every(r=>r._zod.values))return new Set(t.options.flatMap(r=>Array.from(r._zod.values)))}),et(e._zod,"pattern",()=>{if(t.options.every(r=>r._zod.pattern)){const r=t.options.map(u=>u._zod.pattern);return new RegExp(`^(${r.map(u=>i0(u.source)).join("|")})$`)}});const i=t.options.length===1,s=t.options[0]._zod.run;e._zod.parse=(r,u)=>{if(i)return s(r,u);let d=!1;const g=[];for(const b of t.options){const v=b._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(b=>Eb(b,r,e,u)):Eb(g,r,e,u)}}),L_=J("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,jk.init(e,t);const i=e._zod.parse;et(e._zod,"propValues",()=>{const r={};for(const u of t.options){const d=u._zod.propValues;if(!d||Object.keys(d).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(u)}"`);for(const[g,b]of Object.entries(d)){r[g]||(r[g]=new Set);for(const v of b)r[g].add(v)}}return r});const s=Lu(()=>{const r=t.options,u=new Map;for(const d of r){const g=d._zod.propValues?.[t.discriminator];if(!g||g.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(d)}"`);for(const b of g){if(u.has(b))throw new Error(`Duplicate discriminator value "${String(b)}"`);u.set(b,d)}}return u});e._zod.parse=(r,u)=>{const d=r.value;if(!hl(d))return r.issues.push({code:"invalid_type",expected:"object",input:d,inst:e}),r;const g=s.value.get(d?.[t.discriminator]);return g?g._zod.run(r,u):t.unionFallback?i(r,u):(r.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,input:d,path:[t.discriminator],inst:e}),r)}}),P_=J("$ZodIntersection",(e,t)=>{kt.init(e,t),e._zod.parse=(i,s)=>{const r=i.value,u=t.left._zod.run({value:r,issues:[]},s),d=t.right._zod.run({value:r,issues:[]},s);return u instanceof Promise||d instanceof Promise?Promise.all([u,d]).then(([b,v])=>Tb(i,b,v)):Tb(i,u,d)}});function vf(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Eo(e)&&Eo(t)){const i=Object.keys(t),s=Object.keys(e).filter(u=>i.indexOf(u)!==-1),r={...e,...t};for(const u of s){const d=vf(e[u],t[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(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const i=[];for(let s=0;s<e.length;s++){const r=e[s],u=t[s],d=vf(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 Tb(e,t,i){const s=new Map;let r;for(const g of t.issues)if(g.code==="unrecognized_keys"){r??(r=g);for(const b of g.keys)s.has(b)||s.set(b,{}),s.get(b).l=!0}else e.issues.push(g);for(const g of i.issues)if(g.code==="unrecognized_keys")for(const b of g.keys)s.has(b)||s.set(b,{}),s.get(b).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}),bo(e))return e;const d=vf(t.value,i.value);if(!d.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(d.mergeErrorPath)}`);return e.value=d.data,e}const $_=J("$ZodRecord",(e,t)=>{kt.init(e,t),e._zod.parse=(i,s)=>{const r=i.value;if(!Eo(r))return i.issues.push({expected:"record",code:"invalid_type",input:r,inst:e}),i;const u=[],d=t.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 x=t.valueType._zod.run({value:r[v],issues:[]},s);x instanceof Promise?u.push(x.then(S=>{S.issues.length&&i.issues.push(...vo(v,S.issues)),i.value[v]=S.value})):(x.issues.length&&i.issues.push(...vo(v,x.issues)),i.value[v]=x.value)}let b;for(const v in r)g.has(v)||(b=b??[],b.push(v));b&&b.length>0&&i.issues.push({code:"unrecognized_keys",input:r,inst:e,keys:b})}else{i.value={};for(const g of Reflect.ownKeys(r)){if(g==="__proto__")continue;let b=t.keyType._zod.run({value:g,issues:[]},s);if(b instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof g=="string"&&gk.test(g)&&b.issues.length){const S=t.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&&(b=S)}if(b.issues.length){t.mode==="loose"?i.value[g]=r[g]:i.issues.push({code:"invalid_key",origin:"record",issues:b.issues.map(S=>Ri(S,s,Oi())),input:g,path:[g],inst:e});continue}const x=t.valueType._zod.run({value:r[g],issues:[]},s);x instanceof Promise?u.push(x.then(S=>{S.issues.length&&i.issues.push(...vo(g,S.issues)),i.value[b.value]=S.value})):(x.issues.length&&i.issues.push(...vo(g,x.issues)),i.value[b.value]=x.value)}}return u.length?Promise.all(u).then(()=>i):i}}),U_=J("$ZodEnum",(e,t)=>{kt.init(e,t);const i=rk(t.entries),s=new Set(i);e._zod.values=s,e._zod.pattern=new RegExp(`^(${i.filter(r=>JN.has(typeof r)).map(r=>typeof r=="string"?To(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}}),V_=J("$ZodLiteral",(e,t)=>{if(kt.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");const i=new Set(t.values);e._zod.values=i,e._zod.pattern=new RegExp(`^(${t.values.map(s=>typeof s=="string"?To(s):s?To(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:t.values,input:u,inst:e}),s}}),K_=J("$ZodTransform",(e,t)=>{kt.init(e,t),e._zod.parse=(i,s)=>{if(s.direction==="backward")throw new sk(e.constructor.name);const r=t.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 jo;return i.value=r,i}});function Db(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const Ak=J("$ZodOptional",(e,t)=>{kt.init(e,t),e._zod.optin="optional",e._zod.optout="optional",et(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),et(e._zod,"pattern",()=>{const i=t.innerType._zod.pattern;return i?new RegExp(`^(${i0(i.source)})?$`):void 0}),e._zod.parse=(i,s)=>{if(t.innerType._zod.optin==="optional"){const r=t.innerType._zod.run(i,s);return r instanceof Promise?r.then(u=>Db(u,i.value)):Db(r,i.value)}return i.value===void 0?i:t.innerType._zod.run(i,s)}}),G_=J("$ZodExactOptional",(e,t)=>{Ak.init(e,t),et(e._zod,"values",()=>t.innerType._zod.values),et(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(i,s)=>t.innerType._zod.run(i,s)}),H_=J("$ZodNullable",(e,t)=>{kt.init(e,t),et(e._zod,"optin",()=>t.innerType._zod.optin),et(e._zod,"optout",()=>t.innerType._zod.optout),et(e._zod,"pattern",()=>{const i=t.innerType._zod.pattern;return i?new RegExp(`^(${i0(i.source)}|null)$`):void 0}),et(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(i,s)=>i.value===null?i:t.innerType._zod.run(i,s)}),Q_=J("$ZodDefault",(e,t)=>{kt.init(e,t),e._zod.optin="optional",et(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(i,s)=>{if(s.direction==="backward")return t.innerType._zod.run(i,s);if(i.value===void 0)return i.value=t.defaultValue,i;const r=t.innerType._zod.run(i,s);return r instanceof Promise?r.then(u=>Ob(u,t)):Ob(r,t)}});function Ob(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Z_=J("$ZodPrefault",(e,t)=>{kt.init(e,t),e._zod.optin="optional",et(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(i,s)=>(s.direction==="backward"||i.value===void 0&&(i.value=t.defaultValue),t.innerType._zod.run(i,s))}),F_=J("$ZodNonOptional",(e,t)=>{kt.init(e,t),et(e._zod,"values",()=>{const i=t.innerType._zod.values;return i?new Set([...i].filter(s=>s!==void 0)):void 0}),e._zod.parse=(i,s)=>{const r=t.innerType._zod.run(i,s);return r instanceof Promise?r.then(u=>Rb(u,e)):Rb(r,e)}});function Rb(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const Y_=J("$ZodCatch",(e,t)=>{kt.init(e,t),et(e._zod,"optin",()=>t.innerType._zod.optin),et(e._zod,"optout",()=>t.innerType._zod.optout),et(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(i,s)=>{if(s.direction==="backward")return t.innerType._zod.run(i,s);const r=t.innerType._zod.run(i,s);return r instanceof Promise?r.then(u=>(i.value=u.value,u.issues.length&&(i.value=t.catchValue({...i,error:{issues:u.issues.map(d=>Ri(d,s,Oi()))},input:i.value}),i.issues=[]),i)):(i.value=r.value,r.issues.length&&(i.value=t.catchValue({...i,error:{issues:r.issues.map(u=>Ri(u,s,Oi()))},input:i.value}),i.issues=[]),i)}}),X_=J("$ZodPipe",(e,t)=>{kt.init(e,t),et(e._zod,"values",()=>t.in._zod.values),et(e._zod,"optin",()=>t.in._zod.optin),et(e._zod,"optout",()=>t.out._zod.optout),et(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(i,s)=>{if(s.direction==="backward"){const u=t.out._zod.run(i,s);return u instanceof Promise?u.then(d=>eu(d,t.in,s)):eu(u,t.in,s)}const r=t.in._zod.run(i,s);return r instanceof Promise?r.then(u=>eu(u,t.out,s)):eu(r,t.out,s)}});function eu(e,t,i){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},i)}const J_=J("$ZodReadonly",(e,t)=>{kt.init(e,t),et(e._zod,"propValues",()=>t.innerType._zod.propValues),et(e._zod,"values",()=>t.innerType._zod.values),et(e._zod,"optin",()=>t.innerType?._zod?.optin),et(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(i,s)=>{if(s.direction==="backward")return t.innerType._zod.run(i,s);const r=t.innerType._zod.run(i,s);return r instanceof Promise?r.then(Mb):Mb(r)}});function Mb(e){return e.value=Object.freeze(e.value),e}const W_=J("$ZodCustom",(e,t)=>{Nn.init(e,t),kt.init(e,t),e._zod.parse=(i,s)=>i,e._zod.check=i=>{const s=i.value,r=t.fn(s);if(r instanceof Promise)return r.then(u=>Bb(u,i,s,e));Bb(r,i,s,e)}});function Bb(e,t,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),t.issues.push(gl(r))}}var qb;class e7{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...i){const s=i[0];return this._map.set(t,s),s&&typeof s=="object"&&"id"in s&&this._idmap.set(s.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const i=this._map.get(t);return i&&typeof i=="object"&&"id"in i&&this._idmap.delete(i.id),this._map.delete(t),this}get(t){const i=t._zod.parent;if(i){const s={...this.get(i)??{}};delete s.id;const r={...s,...this._map.get(t)};return Object.keys(r).length?r:void 0}return this._map.get(t)}has(t){return this._map.has(t)}}function t7(){return new e7}(qb=globalThis).__zod_globalRegistry??(qb.__zod_globalRegistry=t7());const sl=globalThis.__zod_globalRegistry;function n7(e,t){return new e({type:"string",...Se(t)})}function a7(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...Se(t)})}function Ib(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...Se(t)})}function i7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...Se(t)})}function s7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...Se(t)})}function o7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...Se(t)})}function r7(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...Se(t)})}function l7(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...Se(t)})}function c7(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...Se(t)})}function u7(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...Se(t)})}function d7(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...Se(t)})}function m7(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...Se(t)})}function p7(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...Se(t)})}function f7(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...Se(t)})}function h7(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...Se(t)})}function g7(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...Se(t)})}function y7(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...Se(t)})}function b7(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...Se(t)})}function v7(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...Se(t)})}function k7(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...Se(t)})}function w7(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...Se(t)})}function x7(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...Se(t)})}function S7(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...Se(t)})}function j7(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...Se(t)})}function A7(e,t){return new e({type:"string",format:"date",check:"string_format",...Se(t)})}function N7(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...Se(t)})}function _7(e,t){return new e({type:"string",format:"duration",check:"string_format",...Se(t)})}function C7(e,t){return new e({type:"number",checks:[],...Se(t)})}function z7(e,t){return new e({type:"number",coerce:!0,checks:[],...Se(t)})}function E7(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...Se(t)})}function T7(e,t){return new e({type:"boolean",...Se(t)})}function D7(e,t){return new e({type:"null",...Se(t)})}function O7(e){return new e({type:"unknown"})}function R7(e,t){return new e({type:"never",...Se(t)})}function Lb(e,t){return new bk({check:"less_than",...Se(t),value:e,inclusive:!1})}function Ip(e,t){return new bk({check:"less_than",...Se(t),value:e,inclusive:!0})}function Pb(e,t){return new vk({check:"greater_than",...Se(t),value:e,inclusive:!1})}function Lp(e,t){return new vk({check:"greater_than",...Se(t),value:e,inclusive:!0})}function $b(e,t){return new H8({check:"multiple_of",...Se(t),value:e})}function Nk(e,t){return new Z8({check:"max_length",...Se(t),maximum:e})}function xu(e,t){return new F8({check:"min_length",...Se(t),minimum:e})}function _k(e,t){return new Y8({check:"length_equals",...Se(t),length:e})}function M7(e,t){return new X8({check:"string_format",format:"regex",...Se(t),pattern:e})}function B7(e){return new J8({check:"string_format",format:"lowercase",...Se(e)})}function q7(e){return new W8({check:"string_format",format:"uppercase",...Se(e)})}function I7(e,t){return new e_({check:"string_format",format:"includes",...Se(t),includes:e})}function L7(e,t){return new t_({check:"string_format",format:"starts_with",...Se(t),prefix:e})}function P7(e,t){return new n_({check:"string_format",format:"ends_with",...Se(t),suffix:e})}function Uo(e){return new a_({check:"overwrite",tx:e})}function $7(e){return Uo(t=>t.normalize(e))}function U7(){return Uo(e=>e.trim())}function V7(){return Uo(e=>e.toLowerCase())}function K7(){return Uo(e=>e.toUpperCase())}function G7(){return Uo(e=>YN(e))}function H7(e,t,i){return new e({type:"array",element:t,...Se(i)})}function Q7(e,t,i){return new e({type:"custom",check:"custom",fn:t,...Se(i)})}function Z7(e){const t=F7(i=>(i.addIssue=s=>{if(typeof s=="string")i.issues.push(gl(s,i.value,t._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=t),r.continue??(r.continue=!t._zod.def.abort),i.issues.push(gl(r))}},e(i.value,i)));return t}function F7(e,t){const i=new Nn({check:"custom",...Se(t)});return i._zod.check=e,i}function Ck(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??sl,target:t,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 Pt(e,t,i={path:[],schemaPath:[]}){var s;const r=e._zod.def,u=t.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};t.seen.set(e,d);const g=e._zod.toJSONSchema?.();if(g)d.schema=g;else{const x={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,d.schema,x);else{const j=d.schema,_=t.processors[r.type];if(!_)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${r.type}`);_(e,t,j,x)}const S=e._zod.parent;S&&(d.ref||(d.ref=S),Pt(S,t,x),t.seen.get(S).isParent=!0)}const b=t.metadataRegistry.get(e);return b&&Object.assign(d.schema,b),t.io==="input"&&cn(e)&&(delete d.schema.examples,delete d.schema.default),t.io==="input"&&d.schema._prefault&&((s=d.schema).default??(s.default=d.schema._prefault)),delete d.schema._prefault,t.seen.get(e).schema}function zk(e,t){const i=e.seen.get(t);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 b=s.get(g);if(b&&b!==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??(T=>T);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}/`,x=d[1].schema.id??`__schema${e.counter++}`;return{defId:x,ref:v+x}},u=d=>{if(d[1].schema.$ref)return;const g=d[1],{ref:b,defId:v}=r(d);g.def={...g.schema},v&&(g.defId=v);const x=g.schema;for(const S in x)delete x[S];x.$ref=b};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(t===d[0]){u(d);continue}if(e.external){const v=e.external.registry.get(d[0])?.id;if(t!==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 Ek(e,t){const i=e.seen.get(t);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 b=g.def??g.schema,v={...b},x=g.ref;if(g.ref=null,x){s(x);const j=e.seen.get(x),_=j.schema;if(_.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(b.allOf=b.allOf??[],b.allOf.push(_)):Object.assign(b,_),Object.assign(b,v),d._zod.parent===x)for(const N in b)N==="$ref"||N==="allOf"||N in v||delete b[N];if(_.$ref&&j.def)for(const N in b)N==="$ref"||N==="allOf"||N in j.def&&JSON.stringify(b[N])===JSON.stringify(j.def[N])&&delete b[N]}const S=d._zod.parent;if(S&&S!==x){s(S);const j=e.seen.get(S);if(j?.schema.$ref&&(b.$ref=j.schema.$ref,j.def))for(const _ in b)_==="$ref"||_==="allOf"||_ in j.def&&JSON.stringify(b[_])===JSON.stringify(j.def[_])&&delete b[_]}e.override({zodSchema:d,jsonSchema:b,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(t)?.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:{...t["~standard"],jsonSchema:{input:Su(t,"input",e.processors),output:Su(t,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function cn(e,t){const i=t??{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 cn(s.element,i);if(s.type==="set")return cn(s.valueType,i);if(s.type==="lazy")return cn(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 cn(s.innerType,i);if(s.type==="intersection")return cn(s.left,i)||cn(s.right,i);if(s.type==="record"||s.type==="map")return cn(s.keyType,i)||cn(s.valueType,i);if(s.type==="pipe")return cn(s.in,i)||cn(s.out,i);if(s.type==="object"){for(const r in s.shape)if(cn(s.shape[r],i))return!0;return!1}if(s.type==="union"){for(const r of s.options)if(cn(r,i))return!0;return!1}if(s.type==="tuple"){for(const r of s.items)if(cn(r,i))return!0;return!!(s.rest&&cn(s.rest,i))}return!1}const Y7=(e,t={})=>i=>{const s=Ck({...i,processors:t});return Pt(e,s),zk(s,e),Ek(s,e)},Su=(e,t,i={})=>s=>{const{libraryOptions:r,target:u}=s??{},d=Ck({...r??{},target:u,io:t,processors:i});return Pt(e,d),zk(d,e),Ek(d,e)},X7={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},J7=(e,t,i,s)=>{const r=i;r.type="string";const{minimum:u,maximum:d,format:g,patterns:b,contentEncoding:v}=e._zod.bag;if(typeof u=="number"&&(r.minLength=u),typeof d=="number"&&(r.maxLength=d),g&&(r.format=X7[g]??g,r.format===""&&delete r.format,g==="time"&&delete r.format),v&&(r.contentEncoding=v),b&&b.size>0){const x=[...b];x.length===1?r.pattern=x[0].source:x.length>1&&(r.allOf=[...x.map(S=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:S.source}))])}},W7=(e,t,i,s)=>{const r=i,{minimum:u,maximum:d,format:g,multipleOf:b,exclusiveMaximum:v,exclusiveMinimum:x}=e._zod.bag;typeof g=="string"&&g.includes("int")?r.type="integer":r.type="number",typeof x=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(r.minimum=x,r.exclusiveMinimum=!0):r.exclusiveMinimum=x),typeof u=="number"&&(r.minimum=u,typeof x=="number"&&t.target!=="draft-04"&&(x>=u?delete r.minimum:delete r.exclusiveMinimum)),typeof v=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(r.maximum=v,r.exclusiveMaximum=!0):r.exclusiveMaximum=v),typeof d=="number"&&(r.maximum=d,typeof v=="number"&&t.target!=="draft-04"&&(v<=d?delete r.maximum:delete r.exclusiveMaximum)),typeof b=="number"&&(r.multipleOf=b)},eC=(e,t,i,s)=>{i.type="boolean"},tC=(e,t,i,s)=>{t.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},nC=(e,t,i,s)=>{i.not={}},aC=(e,t,i,s)=>{},iC=(e,t,i,s)=>{const r=e._zod.def,u=rk(r.entries);u.every(d=>typeof d=="number")&&(i.type="number"),u.every(d=>typeof d=="string")&&(i.type="string"),i.enum=u},sC=(e,t,i,s)=>{const r=e._zod.def,u=[];for(const d of r.values)if(d===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof d=="bigint"){if(t.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,t.target==="draft-04"||t.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},oC=(e,t,i,s)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},rC=(e,t,i,s)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},lC=(e,t,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=Pt(u.element,t,{...s,path:[...s.path,"items"]})},cC=(e,t,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]=Pt(d[v],t,{...s,path:[...s.path,"properties",v]});const g=new Set(Object.keys(d)),b=new Set([...g].filter(v=>{const x=u.shape[v]._zod;return t.io==="input"?x.optin===void 0:x.optout===void 0}));b.size>0&&(r.required=Array.from(b)),u.catchall?._zod.def.type==="never"?r.additionalProperties=!1:u.catchall?u.catchall&&(r.additionalProperties=Pt(u.catchall,t,{...s,path:[...s.path,"additionalProperties"]})):t.io==="output"&&(r.additionalProperties=!1)},uC=(e,t,i,s)=>{const r=e._zod.def,u=r.inclusive===!1,d=r.options.map((g,b)=>Pt(g,t,{...s,path:[...s.path,u?"oneOf":"anyOf",b]}));u?i.oneOf=d:i.anyOf=d},dC=(e,t,i,s)=>{const r=e._zod.def,u=Pt(r.left,t,{...s,path:[...s.path,"allOf",0]}),d=Pt(r.right,t,{...s,path:[...s.path,"allOf",1]}),g=v=>"allOf"in v&&Object.keys(v).length===1,b=[...g(u)?u.allOf:[u],...g(d)?d.allOf:[d]];i.allOf=b},mC=(e,t,i,s)=>{const r=i,u=e._zod.def;r.type="object";const d=u.keyType,b=d._zod.bag?.patterns;if(u.mode==="loose"&&b&&b.size>0){const x=Pt(u.valueType,t,{...s,path:[...s.path,"patternProperties","*"]});r.patternProperties={};for(const S of b)r.patternProperties[S.source]=x}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(r.propertyNames=Pt(u.keyType,t,{...s,path:[...s.path,"propertyNames"]})),r.additionalProperties=Pt(u.valueType,t,{...s,path:[...s.path,"additionalProperties"]});const v=d._zod.values;if(v){const x=[...v].filter(S=>typeof S=="string"||typeof S=="number");x.length>0&&(r.required=x)}},pC=(e,t,i,s)=>{const r=e._zod.def,u=Pt(r.innerType,t,s),d=t.seen.get(e);t.target==="openapi-3.0"?(d.ref=r.innerType,i.nullable=!0):i.anyOf=[u,{type:"null"}]},fC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType},hC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType,i.default=JSON.parse(JSON.stringify(r.defaultValue))},gC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType,t.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(r.defaultValue)))},yC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.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},bC=(e,t,i,s)=>{const r=e._zod.def,u=t.io==="input"?r.in._zod.def.type==="transform"?r.out:r.in:r.out;Pt(u,t,s);const d=t.seen.get(e);d.ref=u},vC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType,i.readOnly=!0},Tk=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType},kC=J("ZodISODateTime",(e,t)=>{y_.init(e,t),jt.init(e,t)});function Dk(e){return j7(kC,e)}const wC=J("ZodISODate",(e,t)=>{b_.init(e,t),jt.init(e,t)});function Ok(e){return A7(wC,e)}const xC=J("ZodISOTime",(e,t)=>{v_.init(e,t),jt.init(e,t)});function SC(e){return N7(xC,e)}const jC=J("ZodISODuration",(e,t)=>{k_.init(e,t),jt.init(e,t)});function AC(e){return _7(jC,e)}const NC=(e,t)=>{dk.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>c8(e,i)},flatten:{value:i=>l8(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,bf,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,bf,2)}},isEmpty:{get(){return e.issues.length===0}}})},Wn=J("ZodError",NC,{Parent:Error}),_C=o0(Wn),CC=r0(Wn),zC=Pu(Wn),EC=$u(Wn),TC=m8(Wn),DC=p8(Wn),OC=f8(Wn),RC=h8(Wn),MC=g8(Wn),BC=y8(Wn),qC=b8(Wn),IC=v8(Wn),xt=J("ZodType",(e,t)=>(kt.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:Su(e,"input"),output:Su(e,"output")}}),e.toJSONSchema=Y7(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...i)=>e.clone(Ii(t,{checks:[...t.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)=>Li(e,i,s),e.brand=()=>e,e.register=((i,s)=>(i.add(e,s),e)),e.parse=(i,s)=>_C(e,i,s,{callee:e.parse}),e.safeParse=(i,s)=>zC(e,i,s),e.parseAsync=async(i,s)=>CC(e,i,s,{callee:e.parseAsync}),e.safeParseAsync=async(i,s)=>EC(e,i,s),e.spa=e.safeParseAsync,e.encode=(i,s)=>TC(e,i,s),e.decode=(i,s)=>DC(e,i,s),e.encodeAsync=async(i,s)=>OC(e,i,s),e.decodeAsync=async(i,s)=>RC(e,i,s),e.safeEncode=(i,s)=>MC(e,i,s),e.safeDecode=(i,s)=>BC(e,i,s),e.safeEncodeAsync=async(i,s)=>qC(e,i,s),e.safeDecodeAsync=async(i,s)=>IC(e,i,s),e.refine=(i,s)=>e.check(T9(i,s)),e.superRefine=i=>e.check(D9(i)),e.overwrite=i=>e.check(Uo(i)),e.optional=()=>Kb(e),e.exactOptional=()=>b9(e),e.nullable=()=>Gb(e),e.nullish=()=>Kb(Gb(e)),e.nonoptional=i=>j9(e,i),e.array=()=>k(e),e.or=i=>Ge([e,i]),e.and=i=>p9(e,i),e.transform=i=>wf(e,Bk(i)),e.default=i=>w9(e,i),e.prefault=i=>S9(e,i),e.catch=i=>N9(e,i),e.pipe=i=>wf(e,i),e.readonly=()=>z9(e),e.describe=i=>{const s=e.clone();return sl.add(s,{description:i}),s},Object.defineProperty(e,"description",{get(){return sl.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return sl.get(e);const s=e.clone();return sl.add(s,i[0]),s},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),Rk=J("_ZodString",(e,t)=>{l0.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(s,r,u)=>J7(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(M7(...s)),e.includes=(...s)=>e.check(I7(...s)),e.startsWith=(...s)=>e.check(L7(...s)),e.endsWith=(...s)=>e.check(P7(...s)),e.min=(...s)=>e.check(xu(...s)),e.max=(...s)=>e.check(Nk(...s)),e.length=(...s)=>e.check(_k(...s)),e.nonempty=(...s)=>e.check(xu(1,...s)),e.lowercase=s=>e.check(B7(s)),e.uppercase=s=>e.check(q7(s)),e.trim=()=>e.check(U7()),e.normalize=(...s)=>e.check($7(...s)),e.toLowerCase=()=>e.check(V7()),e.toUpperCase=()=>e.check(K7()),e.slugify=()=>e.check(G7())}),LC=J("ZodString",(e,t)=>{l0.init(e,t),Rk.init(e,t),e.email=i=>e.check(a7(PC,i)),e.url=i=>e.check(l7($C,i)),e.jwt=i=>e.check(S7(n9,i)),e.emoji=i=>e.check(c7(UC,i)),e.guid=i=>e.check(Ib(Ub,i)),e.uuid=i=>e.check(i7(tu,i)),e.uuidv4=i=>e.check(s7(tu,i)),e.uuidv6=i=>e.check(o7(tu,i)),e.uuidv7=i=>e.check(r7(tu,i)),e.nanoid=i=>e.check(u7(VC,i)),e.guid=i=>e.check(Ib(Ub,i)),e.cuid=i=>e.check(d7(KC,i)),e.cuid2=i=>e.check(m7(GC,i)),e.ulid=i=>e.check(p7(HC,i)),e.base64=i=>e.check(k7(WC,i)),e.base64url=i=>e.check(w7(e9,i)),e.xid=i=>e.check(f7(QC,i)),e.ksuid=i=>e.check(h7(ZC,i)),e.ipv4=i=>e.check(g7(FC,i)),e.ipv6=i=>e.check(y7(YC,i)),e.cidrv4=i=>e.check(b7(XC,i)),e.cidrv6=i=>e.check(v7(JC,i)),e.e164=i=>e.check(x7(t9,i)),e.datetime=i=>e.check(Dk(i)),e.date=i=>e.check(Ok(i)),e.time=i=>e.check(SC(i)),e.duration=i=>e.check(AC(i))});function c(e){return n7(LC,e)}const jt=J("ZodStringFormat",(e,t)=>{wt.init(e,t),Rk.init(e,t)}),PC=J("ZodEmail",(e,t)=>{l_.init(e,t),jt.init(e,t)}),Ub=J("ZodGUID",(e,t)=>{o_.init(e,t),jt.init(e,t)}),tu=J("ZodUUID",(e,t)=>{r_.init(e,t),jt.init(e,t)}),$C=J("ZodURL",(e,t)=>{c_.init(e,t),jt.init(e,t)}),UC=J("ZodEmoji",(e,t)=>{u_.init(e,t),jt.init(e,t)}),VC=J("ZodNanoID",(e,t)=>{d_.init(e,t),jt.init(e,t)}),KC=J("ZodCUID",(e,t)=>{m_.init(e,t),jt.init(e,t)}),GC=J("ZodCUID2",(e,t)=>{p_.init(e,t),jt.init(e,t)}),HC=J("ZodULID",(e,t)=>{f_.init(e,t),jt.init(e,t)}),QC=J("ZodXID",(e,t)=>{h_.init(e,t),jt.init(e,t)}),ZC=J("ZodKSUID",(e,t)=>{g_.init(e,t),jt.init(e,t)}),FC=J("ZodIPv4",(e,t)=>{w_.init(e,t),jt.init(e,t)}),YC=J("ZodIPv6",(e,t)=>{x_.init(e,t),jt.init(e,t)}),XC=J("ZodCIDRv4",(e,t)=>{S_.init(e,t),jt.init(e,t)}),JC=J("ZodCIDRv6",(e,t)=>{j_.init(e,t),jt.init(e,t)}),WC=J("ZodBase64",(e,t)=>{A_.init(e,t),jt.init(e,t)}),e9=J("ZodBase64URL",(e,t)=>{__.init(e,t),jt.init(e,t)}),t9=J("ZodE164",(e,t)=>{C_.init(e,t),jt.init(e,t)}),n9=J("ZodJWT",(e,t)=>{E_.init(e,t),jt.init(e,t)}),c0=J("ZodNumber",(e,t)=>{wk.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(s,r,u)=>W7(e,s,r),e.gt=(s,r)=>e.check(Pb(s,r)),e.gte=(s,r)=>e.check(Lp(s,r)),e.min=(s,r)=>e.check(Lp(s,r)),e.lt=(s,r)=>e.check(Lb(s,r)),e.lte=(s,r)=>e.check(Ip(s,r)),e.max=(s,r)=>e.check(Ip(s,r)),e.int=s=>e.check(Vb(s)),e.safe=s=>e.check(Vb(s)),e.positive=s=>e.check(Pb(0,s)),e.nonnegative=s=>e.check(Lp(0,s)),e.negative=s=>e.check(Lb(0,s)),e.nonpositive=s=>e.check(Ip(0,s)),e.multipleOf=(s,r)=>e.check($b(s,r)),e.step=(s,r)=>e.check($b(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 C7(c0,e)}const a9=J("ZodNumberFormat",(e,t)=>{T_.init(e,t),c0.init(e,t)});function Vb(e){return E7(a9,e)}const i9=J("ZodBoolean",(e,t)=>{D_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>eC(e,i,s)});function P(e){return T7(i9,e)}const s9=J("ZodNull",(e,t)=>{O_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>tC(e,i,s)});function he(e){return D7(s9,e)}const o9=J("ZodUnknown",(e,t)=>{R_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>aC()});function Xn(){return O7(o9)}const r9=J("ZodNever",(e,t)=>{M_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>nC(e,i,s)});function l9(e){return R7(r9,e)}const c9=J("ZodArray",(e,t)=>{B_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>lC(e,i,s,r),e.element=t.element,e.min=(i,s)=>e.check(xu(i,s)),e.nonempty=i=>e.check(xu(1,i)),e.max=(i,s)=>e.check(Nk(i,s)),e.length=(i,s)=>e.check(_k(i,s)),e.unwrap=()=>e.element});function k(e,t){return H7(c9,e,t)}const u9=J("ZodObject",(e,t)=>{I_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>cC(e,i,s,r),et(e,"shape",()=>t.shape),e.keyof=()=>E(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Xn()}),e.loose=()=>e.clone({...e._zod.def,catchall:Xn()}),e.strict=()=>e.clone({...e._zod.def,catchall:l9()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>a8(e,i),e.safeExtend=i=>i8(e,i),e.merge=i=>s8(e,i),e.pick=i=>t8(e,i),e.omit=i=>n8(e,i),e.partial=(...i)=>o8(qk,e,i[0]),e.required=(...i)=>r8(Ik,e,i[0])});function y(e,t){const i={type:"object",shape:e??{},...Se(t)};return new u9(i)}const Mk=J("ZodUnion",(e,t)=>{jk.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>uC(e,i,s,r),e.options=t.options});function Ge(e,t){return new Mk({type:"union",options:e,...Se(t)})}const d9=J("ZodDiscriminatedUnion",(e,t)=>{Mk.init(e,t),L_.init(e,t)});function gt(e,t,i){return new d9({type:"union",options:t,discriminator:e,...Se(i)})}const m9=J("ZodIntersection",(e,t)=>{P_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>dC(e,i,s,r)});function p9(e,t){return new m9({type:"intersection",left:e,right:t})}const f9=J("ZodRecord",(e,t)=>{$_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>mC(e,i,s,r),e.keyType=t.keyType,e.valueType=t.valueType});function Le(e,t,i){return new f9({type:"record",keyType:e,valueType:t,...Se(i)})}const kf=J("ZodEnum",(e,t)=>{U_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(s,r,u)=>iC(e,s,r),e.enum=t.entries,e.options=Object.values(t.entries);const i=new Set(Object.keys(t.entries));e.extract=(s,r)=>{const u={};for(const d of s)if(i.has(d))u[d]=t.entries[d];else throw new Error(`Key ${d} not found in enum`);return new kf({...t,checks:[],...Se(r),entries:u})},e.exclude=(s,r)=>{const u={...t.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 kf({...t,checks:[],...Se(r),entries:u})}});function E(e,t){const i=Array.isArray(e)?Object.fromEntries(e.map(s=>[s,s])):e;return new kf({type:"enum",entries:i,...Se(t)})}const h9=J("ZodLiteral",(e,t)=>{V_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>sC(e,i,s),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function ae(e,t){return new h9({type:"literal",values:Array.isArray(e)?e:[e],...Se(t)})}const g9=J("ZodTransform",(e,t)=>{K_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>rC(e,i),e._zod.parse=(i,s)=>{if(s.direction==="backward")throw new sk(e.constructor.name);i.addIssue=u=>{if(typeof u=="string")i.issues.push(gl(u,i.value,t));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(gl(d))}};const r=t.transform(i.value,i);return r instanceof Promise?r.then(u=>(i.value=u,i)):(i.value=r,i)}});function Bk(e){return new g9({type:"transform",transform:e})}const qk=J("ZodOptional",(e,t)=>{Ak.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>Tk(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function Kb(e){return new qk({type:"optional",innerType:e})}const y9=J("ZodExactOptional",(e,t)=>{G_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>Tk(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function b9(e){return new y9({type:"optional",innerType:e})}const v9=J("ZodNullable",(e,t)=>{H_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>pC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function Gb(e){return new v9({type:"nullable",innerType:e})}const k9=J("ZodDefault",(e,t)=>{Q_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>hC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function w9(e,t){return new k9({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():ck(t)}})}const x9=J("ZodPrefault",(e,t)=>{Z_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>gC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function S9(e,t){return new x9({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():ck(t)}})}const Ik=J("ZodNonOptional",(e,t)=>{F_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>fC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function j9(e,t){return new Ik({type:"nonoptional",innerType:e,...Se(t)})}const A9=J("ZodCatch",(e,t)=>{Y_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>yC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function N9(e,t){return new A9({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const _9=J("ZodPipe",(e,t)=>{X_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>bC(e,i,s,r),e.in=t.in,e.out=t.out});function wf(e,t){return new _9({type:"pipe",in:e,out:t})}const C9=J("ZodReadonly",(e,t)=>{J_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>vC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function z9(e){return new C9({type:"readonly",innerType:e})}const E9=J("ZodCustom",(e,t)=>{W_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>oC(e,i)});function T9(e,t={}){return Q7(E9,e,t)}function D9(e){return Z7(e)}function O9(e,t){return wf(Bk(e),t)}const ht={custom:"custom"};function Lk(e){return z7(c0,e)}const Pk=y({id:c(),name:c(),keyPrefix:c(),scopes:k(c()),projectId:c().nullable(),projectName:c().nullable(),readOnly:P(),createdAt:c(),lastUsedAt:c().nullable(),revokedAt:c().nullable()});y({keys:k(Pk)});y({name:c().min(1).max(100),scopes:k(c()).min(1).optional(),projectId:c().optional()});Pk.extend({key:c()});const R9=y({maxConcurrency:h().int().positive(),maxRequestsPerMinute:h().int().positive(),maxRequestsPerDay:h().int().positive()}),dt=c().min(1),u0=Le(c(),c().trim().min(1));c().min(1);const gn=y({label:c().min(1),city:c().min(1),region:c().min(1),country:c().length(2),timezone:c().optional()}),d0=E(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);y({id:c(),projectId:c(),channel:ae("webhook"),url:c().url(),urlDisplay:c(),urlHost:c(),events:k(d0),enabled:P().default(!0),source:c().optional(),webhookSecret:c().optional(),createdAt:c(),updatedAt:c()});y({channel:ae("webhook"),url:c().url(),events:k(d0).min(1),source:c().optional()});function Pp(e,t=!1){const i=new Set,s=[];for(const r of e){const u=t?r.toLowerCase():r;i.has(u)||(i.add(u),s.push(r))}return s}function Hb(e){try{const t=e.includes("://"),i=new URL(t?e:`https://${e}`);if(!t&&(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 M9=c().trim().min(1).refine(e=>Hb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Hb(e)??e),B9=c().trim().min(1),q9=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"}),m0=y({marketingHosts:k(M9).overwrite(e=>Pp(e,!0)),brandTerms:k(B9).overwrite(e=>Pp(e,!0)),leadEventNames:k(q9).overwrite(e=>Pp(e))});function I9(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const $p=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),$k=()=>I9(),Qb=E(["never-synced","ready","error"]),L9=E(["landing-page","channel"]),P9=E(["30d","60d","90d"]),$9=E(["marketing","all"]),rl=Ok(),Sl=y({label:E(["earliest","middle","previous","latest"]),startDate:rl,endDate:rl}),Up=Sl.extend({sessions:h().int().nonnegative()}),Zb=Sl.extend({eventCount:h().int().nonnegative()}),Fb=Sl.extend({clicks:h().int().nonnegative(),impressions:h().int().nonnegative()}),U9=Sl.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()}),V9=Sl.extend({sessions:h().int().nonnegative(),engagementRate:h().min(0).max(1).nullable(),dailyTotalUsers:h().int().nonnegative().nullable(),dailyNewUsers:h().int().nonnegative().nullable(),metricsAvailable:P(),daysInPeriod:h().int().nonnegative(),daysWithEngagementRate:h().int().nonnegative(),daysWithUserSplit:h().int().nonnegative()}),K9=y({window:P9,bucketDays:ae(30),filters:y({hostScope:$9,marketingHosts:k(c()),pathPrefix:c().nullable(),brandTerms:k(c()),queryMixScope:ae("property")}),acquisition:y({status:Qb,error:c().nullable(),syncedAt:c().datetime().nullable(),periods:k(Up),channels:k(y({channelGroup:c(),periods:k(Up)})),pages:k(y({hostName:c(),landingPage:c(),periods:k(Up)}))}),leads:y({status:Qb,error:c().nullable(),syncedAt:c().datetime().nullable(),attributionScope:L9.nullable(),hostAndPathFiltersApplied:P(),periods:k(Zb),channels:k(y({channelGroup:c(),periods:k(Zb)}))}),engagement:y({status:E(["ready","unavailable"]),availableFromDate:rl.nullable(),latestDate:rl.nullable(),periods:k(V9)}),searchDemand:y({status:E(["ready","unavailable"]),periods:k(U9),queries:k(y({query:c(),classification:E(["branded","non-branded"]),periods:k(Fb)})),pages:k(y({hostName:c(),landingPage:c(),periods:k(Fb)})),latestDate:rl.nullable()})}),G9=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,H9=/[\0-\x1F\x7F-\x9F]/,Q9=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,Z9=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var F9=class{src_Any=G9.source;src_Cc=H9.source;src_Z=Z9.source;src_P=Q9.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,t,i=4){const s=this.escapeRE(e),r=this.escapeRE(t),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}",t=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${t}|::(?:${e}:){5}${t}|(?:${e})?::(?:${e}:){4}${t}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${t}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${t}|(?:(?:${e}:){0,3}${e})?::${e}:${t}|(?:(?:${e}:){0,4}${e})?::${t}|(?:(?:${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")}},Vp={validate:(e,t,i)=>{const s=i.re.get_http_validator();s.lastIndex=t;const r=s.exec(e);return r?r[0].length:0},normalize:(e,t)=>t.normalize(e)},Y9={"http:":Vp,"https:":Vp,"ftp:":Vp,"//":{validate:function(e,t,i){const s=i.re.get_relative_proto_validator();s.lastIndex=t;const r=s.exec(e);return r?t>=3&&e[t-3]===":"||t>=3&&e[t-3]==="/"?0:r[0].length:0},normalize:(e,t)=>t.normalize(e)},"mailto:":{validate:function(e,t,i){const s=i.re.get_mailto_validator();s.lastIndex=t;const r=s.exec(e);return r?r[0].length:0},normalize:(e,t)=>t.normalize(e)}},X9="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",J9="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function W9(){const e=J9.split("|");return X9.split("|").forEach(t=>{const i=t.indexOf(":"),s=t.slice(0,i);for(const r of t.slice(i+1))e.push(s+r)}),e}var ez={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:W9(),urlAuth:!1,maxLength:1e4},Yb=class{schema;index;lastIndex;raw;text;url;constructor(e,t,i,s){const r=e.slice(i,s);this.schema=t.toLowerCase(),this.index=i,this.lastIndex=s,this.raw=r,this.text=r,this.url=r}},tz=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:t,...i}=e;this.__opts__={...ez,...i},this.__schemas__={...Y9},this.re=t||new F9,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,t=null){if(!t)delete this.__schemas__[e];else{const i={normalize:(s,r)=>r.normalize(s),...t};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 t,i;for(i=this.re.get_schema_search(),i.lastIndex=0;(t=i.exec(e))!==null;)if(this.testSchemaAt(e,t[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;(t=s.exec(e))!==null;){const u=e.slice(Math.max(0,t.index-65),t.index);if(r.test(u))return!0}}return!1}testSchemaAt(e,t,i){return this.__schemas__[t.toLowerCase()]?this.__schemas__[t.toLowerCase()].validate(e.slice(0,i+this.__opts__.maxLength),i,this):0}match(e){const t=[],i=this.re.get_schema_search();let s,r,u,d,g,b,v=!1,x=!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 I=r.exec(e);if(!I){S=!0,g=void 0;break}const $=u.exec(e.slice(Math.max(0,I.index-65),I.index));if($){if(g={schema:"mailto:",index:I.index-$[1].length,lastIndex:I.index+I[0].length},g.index>=j)break;r.lastIndex<_&&(r.lastIndex=_)}}if(s&&!x&&(!d||d.index<j))for(s.lastIndex<_&&(s.lastIndex=_);;){const I=s.exec(e);if(!I){x=!0,d=void 0;break}if(d={schema:"",index:I.index+I[1].length,lastIndex:I.index+I[0].length},d.index>=j)break;s.lastIndex<_&&(s.lastIndex=_)}let T=g;(!T||d&&(d.index<T.index||d.index===T.index&&d.lastIndex>T.lastIndex))&&(T=d);let N;if(!v)for(;;){if(!b){i.lastIndex<_&&(i.lastIndex=_);const V=i.exec(e);if(!V){v=!0;break}b={schema:V[2],index:V.index+V[1].length,lastIndex:V.index+V[0].length}}if(b.index<j){b=void 0;continue}if(T&&b.index>T.index)break;const I=b;b=void 0;const $=this.testSchemaAt(e,I.schema,I.lastIndex);if($){N={schema:I.schema,index:I.index,lastIndex:I.lastIndex+$};break}}let C=N;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 Yb(e,C.schema,C.index,C.lastIndex);O.schema?this.__schemas__[O.schema].normalize(O,this):this.normalize(O),t.push(O),j=C.lastIndex}return t.length?t:null}matchAtStart(e){if(!e.length)return null;const t=this.re.get_schema_at_start().exec(e);if(!t)return null;const i=this.testSchemaAt(e,t[2],t[0].length);if(!i)return null;const s=new Yb(e,t[2],t.index+t[1].length,t.index+t[0].length+i);return this.__schemas__[s.schema].normalize(s,this),s}tlds(e,t=!1){return e=Array.isArray(e)?e:[e],t?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 nz=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 az(e,t){return e.endsWith(t)?e.length===t.length||e[e.length-t.length-1]===".":!1}function iz(e,t){const i=e.length-t.length-2,s=e.lastIndexOf(".",i);return s===-1?e:e.slice(s+1)}function sz(e,t,i){if(i.validHosts!==null){const r=i.validHosts;for(const u of r)if(az(t,u))return u}let s=0;if(t.startsWith("."))for(;s<t.length&&t[s]===".";)s+=1;return e.length===t.length-s?null:iz(t,e)}function oz(e,t){return e.slice(0,-t.length-1)}const Kp=/[\t\n\r]/g;let xf=!1;function Xb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Jb(e,t,i){const s=i-t,r=e.charCodeAt(t)|32;if(s===2)return r===119&&(e.charCodeAt(t+1)|32)===115?1:0;if(s===3){const u=e.charCodeAt(t+1)|32,d=e.charCodeAt(t+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(t+1)|32,d=e.charCodeAt(t+2)|32,g=e.charCodeAt(t+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(t+1)|32)===116&&(e.charCodeAt(t+2)|32)===116&&(e.charCodeAt(t+3)|32)===112&&(e.charCodeAt(t+4)|32)===115?1:0;return 0}function ll(e,t,i=!1){let s=0,r=e.length,u=!1,d=!1;if(xf=!1,!t){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=Jb(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 I=0;for(;(e.charCodeAt(s)===47||e.charCodeAt(s)===92)&&I<2;)s+=1,I+=1;if(I<2)return null}else{for(let I=s;I<C;I+=1){const $=e.charCodeAt(I)|32;if(!($>=97&&$<=122||$>=48&&$<=57||$===46||$===45||$===43)){const V=e.charCodeAt(I);return V===9||V===10||V===13?ll(e.replace(Kp,""),t,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 I=s;I<r;I+=1){const $=e.charCodeAt(I);if($===9||$===10||$===13)return ll(e.replace(Kp,""),t,i);if($===58){O=I;break}if($===47||$===92||$===63||$===35)break}if(O!==-1){let I=!1;for(let $=O+1;$<r;$+=1){const V=e.charCodeAt($);if(V===47||V===92||V===63||V===35)break;if(V===64){I=!0;break}}if(!I){let $=!0,V=O+1;for(;V<r;V+=1){const Z=e.charCodeAt(V);if(Z===47||Z===92||Z===63||Z===35)break;if(Z<48||Z>57){$=!1;break}}if(V===O+1&&($=!1),!$){const Z=Jb(e,s,O);if(Z===0){let se=!1;for(let R=O+1;R<r;R+=1){const q=e.charCodeAt(R);if(q===47||q===92||q===63||q===35)break;if(q===58){se=!0;break}}if(!se)return null}else if(d=!0,s=O+1,Z===2){let se=0;for(;(e.charCodeAt(s)===47||e.charCodeAt(s)===92)&&se<2;)s+=1,se+=1;if(se<2)return null}else for(;e.charCodeAt(s)===47||e.charCodeAt(s)===92;)s+=1}}}}}let b=-1,v=-1,x=-1,S=-1,j=!1,_=i,T=s-1,N=-1;if(i&&s<r){const C=e.charCodeAt(s);(!(Xb(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),x=C):O===9||O===10||O===13?j=!0:i&&(O===46?((C-T>64||N===46||N===45)&&(_=!1),T=C):(O<48||O>57)&&(O!==45||N===46)&&(_=!1));else if(d&&O===92){r=C;break}else O===64?(b=C,S=-1):O===93?v=C:O>=65&&O<=90?u=!0:i&&!Xb(O)&&(_=!1);i&&(N=O)}if(j)return ll(e.replace(Kp,""),t,i);if(b!==-1&&b>=s&&b<r&&(s=b+1),e.charCodeAt(s)===91)return v!==-1?e.slice(s+1,v).toLowerCase():null;if(x!==-1&&x>s&&x<r&&S===x&&(r=x),s>=r)return null;i&&_&&b===-1&&x===-1&&v===-1&&e.charCodeAt(r-1)!==46&&r-s<=255&&r-T-1<=63&&N!==45&&(xf=!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 rz(e){if(e.length<7||e.length>15)return!1;let t=0;for(let i=0;i<e.length;i+=1){const s=e.charCodeAt(i);if(s===46)t+=1;else if(s<48||s>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function lz(e){if(e.length<3)return!1;let t=e.startsWith("[")?1:0,i=e.length;if(e[i-1]==="]"&&(i-=1),i-t>39)return!1;let s=!1;for(;t<i;t+=1){const r=e.charCodeAt(t);if(r===58)s=!0;else if(!(r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70))return!1}return s}function cz(e){return lz(e)||rz(e)}const uz=["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 dz(e){for(const t of uz)if(e.endsWith(t)&&(e.length===t.length||e.charCodeAt(e.length-t.length-1)===46))return!0;return!1}function Wb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function ev(e){if(e.length>255||e.length===0||!Wb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-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-t>64||i===46||i===45)return!1;t=r}else if(!(Wb(u)||u===45||u===95)||u===45&&i===46)return!1;i=u}return s-t-1<=63&&i!==45}function Uk({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:i=!0,detectSpecialUse:s=!1,extractHostname:r=!0,mixedInputs:u=!0,validHosts:d=null,validateHostname:g=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:i,detectSpecialUse:s,extractHostname:r,mixedInputs:u,validHosts:d,validateHostname:g}}const mz=Uk({});function pz(e){return e===void 0?mz:Uk(e)}function fz(e,t){return t.length===e.length?"":e.slice(0,-t.length-1)}function hz(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function Vk(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 Kk(e,t,i,s,r){const u=pz(s);if(typeof e!="string")return r;let d=!1;return u.extractHostname?u.mixedInputs?(d=ev(e),r.hostname=ll(e,d,u.validateHostname)):r.hostname=ll(e,!1,u.validateHostname):r.hostname=e,u.detectIp&&r.hostname!==null&&(r.isIp=cz(r.hostname),r.isIp)?r:u.validateHostname&&u.extractHostname&&r.hostname!==null&&!(d&&r.hostname===e)&&!xf&&!ev(r.hostname)?(r.hostname=null,r):(t===0||r.hostname===null||(t===5&&u.detectSpecialUse&&(r.isSpecialUse=dz(r.hostname)),i(r.hostname,u,r),t===2||r.publicSuffix===null)||(r.domain=sz(r.publicSuffix,r.hostname,u),t===3||r.domain===null)||(r.subdomain=fz(r.hostname,r.domain),t===4)||(r.domainWithoutSuffix=oz(r.domain,r.publicSuffix)),r)}function gz(e,t,i){if(!t.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 gs=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]),ju=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]),Au=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]),tv=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]),Sf="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",yz=621,bz=625,Gk=gs.length,Hk=Au.length,Qk=new Uint32Array(Hk),fu=new Uint32Array(Hk),jf=new Int32Array(Gk).fill(-1);for(let e=0,t=0;e<Gk;e+=1)for(let i=ju[e];i<ju[e+1];i+=1){Qk[i]=t;const s=t+Au[i];let r=5381;for(let u=s-1;u>=t;u-=1)r=r*33^Sf.charCodeAt(u);fu[i]=r>>>0,Au[i]===1&&Sf.charCodeAt(t)===42&&(jf[e]=i),t=s}let Ga=-1,Af=0,Nf=0;function nv(e,t,i,s){if(Au[e]!==s)return!1;const r=Qk[e];for(let u=0;u<s;u+=1)if(Sf.charCodeAt(r+u)!==t.charCodeAt(i+u))return!1;return!0}function av(e,t,i,s,r){let u=ju[e],d=ju[e+1];for(;u<d;){const g=u+d>>>1,b=fu[g];if(b<t)u=g+1;else if(b>t)d=g;else{for(let v=g;v>=u&&fu[v]===t;v-=1)if(nv(v,i,s,r))return v;for(let v=g+1;v<d&&fu[v]===t;v+=1)if(nv(v,i,s,r))return v;return-1}}return-1}function iv(e,t,i){let s=t,r=e.length,u=5381;Ga=-1;for(let g=e.length-1;g>=0;g-=1){const b=e.charCodeAt(g);if(b===46){const v=g+1;let x=av(s,u>>>0,e,v,r-v);if(x===-1&&(x=jf[s]),x===-1)return Ga!==-1;s=tv[x],(gs[s]&i)!==0&&(Ga=s,Af=v,Nf=r),r=g,u=5381}else u=u*33^b}let d=av(s,u>>>0,e,0,r);return d===-1&&(d=jf[s]),d!==-1&&(s=tv[d],(gs[s]&i)!==0&&(Ga=s,Af=0,Nf=r)),Ga!==-1}function Zk(e,t,i){if(gz(e,t,i))return;const s=(t.allowPrivateDomains?2:0)|(t.allowIcannDomains?1:0);if(iv(e,bz,s)){i.isIcann=(gs[Ga]&1)!==0,i.isPrivate=(gs[Ga]&2)!==0,i.publicSuffix=e.slice(Nf+1);return}if(iv(e,yz,s)){i.isIcann=(gs[Ga]&1)!==0,i.isPrivate=(gs[Ga]&2)!==0,i.publicSuffix=e.slice(Af);return}i.isIcann=!1,i.isPrivate=!1;const r=e.lastIndexOf(".");i.publicSuffix=r===-1?e:e.slice(r+1)}const Nu=hz();function vz(e,t){return Vk(Nu),Kk(e,0,Zk,t,Nu).hostname}function kz(e,t){return Vk(Nu),Kk(e,5,Zk,t,Nu).domainWithoutSuffix}const wz={allowPrivateDomains:!0};new tz({fuzzyLink:!0,fuzzyEmail:!1}).tlds(nz);function p0(e){if(e==null)return null;const t=e.trim();if(!t)return null;const i=vz(t);return i?i.replace(/^www\./i,"").toLowerCase():null}function xz(e){return e==null||e.trim()===""?"":kz(e,wz)?.toLowerCase()??""}const Sz=new Intl.Segmenter("en",{granularity:"word"}),jz=/[\p{L}\p{N}]+/gu;function Az(e){return e.normalize("NFKC").toLocaleLowerCase("en")}function Nz(e){const t=[];for(const i of Sz.segment(e))if(i.isWordLike)for(const s of i.segment.match(jz)??[])t.push(s);return t}function _z(e){return Nz(Az(e))}function vs(e){return _z(e).join("")}const Fk=E(["cli","api","config-file"]);function Cz(e){const t=new Set,i=new Set;for(const s of e){if(t.has(s.label)){i.add(s.label);continue}t.add(s.label)}return[...i]}function zz(e,t){return t?e.some(i=>i.label===t):!0}y({displayName:c().min(1),canonicalDomain:c().min(1),ownedDomains:k(c().min(1)).optional(),aliases:k(c()).optional(),country:c().length(2),language:c().min(2),tags:k(c()).optional(),labels:Le(c(),c()).optional(),providers:k(dt).optional(),providerModels:u0.optional(),locations:k(gn).optional(),defaultLocation:c().nullable().optional(),measurement:m0.optional(),autoExtractBacklinks:P().optional(),configSource:Fk.optional()});const Ez=y({id:c(),name:c(),displayName:c().optional(),canonicalDomain:c(),ownedDomains:k(c()).default([]),aliases:k(c()).default([]),country:c().length(2),language:c().min(2),tags:k(c()).default([]),labels:Le(c(),c()).default({}),providers:k(c()).default([]),providerModels:u0.default({}),locations:k(gn).default([]),defaultLocation:c().nullable().optional(),measurement:m0.default($k),autoExtractBacklinks:P().default(!1),configSource:Fk.default("cli"),configRevision:h().int().positive().default(1),createdAt:c().optional(),updatedAt:c().optional()});y({id:c(),query:c(),createdAt:c()});y({id:c(),keyword:c(),createdAt:c()});y({queries:k(c().trim().min(1)).min(1)});y({keywords:k(c().trim().min(1)).min(1)});y({provider:dt,count:h().int().min(1).max(20).optional()});y({id:c(),domain:c(),createdAt:c()});y({competitors:k(c().trim().min(1)).min(1)});function _f(e){return p0(e)??e.trim().toLowerCase().replace(/^www\./,"")}function Tz(e){const t=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,s=[];for(const r of t){const u=r.trim();if(!u)continue;const d=_f(u);i.has(d)||(i.add(d),s.push(u))}return s}const Dz=y({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({})}),Oz=y({preset:c().optional(),cron:c().optional(),timezone:c().optional().default("UTC"),providers:k(dt).optional().default([]),enabled:P().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),Rz=y({channel:ae("webhook"),url:c().url(),events:k(d0).min(1)}),Mz=y({gsc:y({propertyUrl:c()}).optional(),syncSchedule:y({preset:c().optional(),cron:c().optional()}).optional()}).optional(),sv=k(c().min(1)),Bz=y({displayName:c().min(1),canonicalDomain:c().min(1),ownedDomains:k(c().min(1)).optional().default([]),aliases:k(c().min(1)).optional().default([]),country:c().length(2),language:c().min(2),queries:sv.optional(),keywords:sv.optional(),competitors:k(c().min(1)).optional().default([]),providers:k(dt).optional().default([]),providerModels:u0.optional().default({}),locations:k(gn).optional().default([]),defaultLocation:c().optional(),measurement:m0.optional().default($k),schedule:Oz,notifications:k(Rz).optional().default([]),google:Mz,autoExtractBacklinks:P().optional().default(!1)}).superRefine((e,t)=>{e.queries!==void 0&&e.keywords!==void 0&&t.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=Cz(e.locations);i.length>0&&t.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),zz(e.locations,e.defaultLocation)||t.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});y({apiVersion:ae("canonry/v1"),kind:ae("Project"),metadata:Dz,spec:Bz});const qz=2,Iz=c().regex(/^[a-f0-9]{64}$/),Vu=c().trim().min(1).max(256),ov=E(["sensitive","insensitive"]),ke=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=>p0(e)!==null,"A competitor domain must be a valid hostname"),Pz=gt("kind",[y({kind:ae("exact"),url:c().min(1),pathCase:ov}).strict(),y({kind:ae("prefix"),host:c().min(1),pathPrefix:c().min(1),pathCase:ov}).strict(),y({kind:ae("host"),host:c().min(1)}).strict()]),$z=y({canonicalHost:c().min(1),ownedHosts:k(c().min(1)),names:k(c().min(1))}).strict(),Uz=y({projectBrand:$z}).strict(),Vz=y({stableKey:ke,label:c().trim().min(1),aliases:k(c().min(1)),urlMatchers:k(Pz),mentionNotApplicable:P(),discoveryIdentity:c().min(1).nullable()}).strict(),Yk=y({stableKey:ke,label:c().trim().min(1),domain:Lz,aliases:k(c().min(1))}).strict(),Kz=y({stableKey:ke,label:c().trim().min(1),targetKeys:k(ke),competitors:k(Yk)}).strict(),Gz=E(["manual","query-set","template","discovery"]),Hz=y({source:Gz,sourceId:c().min(1).nullable(),capturedAt:c().datetime()}).strict(),Qz=y({queryId:Vu,queryText:c().min(1),provenance:Hz}).strict(),Zz=y({providers:k(dt).min(1),models:Le(dt,c().min(1)),location:gn.nullable()}).strict(),Fz=y({stableKey:c().min(1),queryId:Vu,queryText:c().min(1),context:Zz,expectedSnapshots:h().int().nonnegative()}).strict(),f0=E(["branded","non-brand"]),Yz=y({targetKey:ke,queryId:Vu,queryClass:f0,executionNodeKey:c().min(1)}).strict(),Xz=y({executionNodeKey:c().min(1),targetKey:ke,queryId:Vu}).strict(),Ku=y({schemaVersion:ae(qz),identities:Uz,targets:k(Vz),groups:k(Kz),querySnapshots:k(Qz),assignments:k(Yz),executionNodes:k(Fz),usageEdges:k(Xz),compiledChecksum:Iz}).strict().superRefine((e,t)=>{const i=new Set;for(const r of e.executionNodes)i.has(r.stableKey)&&t.addIssue({code:ht.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)||t.addIssue({code:ht.custom,path:["usageEdges",u,"executionNodeKey"],message:`Usage edge references unknown execution node "${r.executionNodeKey}"`}),s.has(r.targetKey)||t.addIssue({code:ht.custom,path:["usageEdges",u,"targetKey"],message:`Usage edge references unknown Target "${r.targetKey}"`})}),e.assignments.forEach((r,u)=>{s.has(r.targetKey)||t.addIssue({code:ht.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)||t.addIssue({code:ht.custom,path:["groups"],message:`Group "${r.stableKey}" references unknown Target "${u}"`})}),h0=100;function Do(e){return y({items:k(e),nextCursor:c().min(1).nullable(),totalEstimate:h().int().nonnegative().optional()}).strict()}const g0=E(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),an=gt("state",[y({state:ae("available"),value:h(),numerator:h().int().nonnegative().optional(),denominator:h().int().positive().optional()}).strict(),y({state:ae("unavailable"),reason:g0}).strict()]),y0=E(["all","group","property"]),ma=E(["all","branded","non-brand"]),Jz=E(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),b0=E(["not_measured","queued","running","complete","partial","failed"]),Wz=E(["run_measurement","review_flags","complete_setup","republish_setup","none"]);y({scope:y0,groupKey:ke.optional(),targetKey:ke.optional(),queryClass:ma.optional(),provider:dt.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:Jz.optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(h0).optional()}).strict();const eE=y({provider:dt,mentionCoverage:an,citationCoverage:an}).strict(),tE=y({targetKey:ke,label:c().min(1),mentionCoverage:an,citationCoverage:an,providers:k(eE),flags:h().int().nonnegative()}).strict(),nE=y({kind:E(["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(),aE=y({groupKey:ke,queryClass:ae("non-brand"),denominator:h().int().positive(),entries:k(nE)}).strict();y({mode:E(["active-v1","active-v2"]),scope:y({kind:y0,key:c().min(1).optional(),label:c().min(1)}).strict(),queryClass:ma,measurement:y({state:b0,currentRunId:c().min(1).optional(),displayedRunId:c().min(1).optional(),completed:h().int().nonnegative(),expected:h().int().nonnegative(),completedAt:c().datetime().optional(),includesHistoricalData:P().optional()}).strict(),nextAction:y({kind:Wz,count:h().int().nonnegative().optional()}).strict(),metrics:y({propertiesMentioned:an,mentionCoverage:an,citationCoverage:an,brandPresence:an,sov:an.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:Do(tE),flags:y({total:h().int().nonnegative()}).strict(),namedShareOfVoice:aE.optional()}).strict();const Xk=E(["sources","answers"]),iE=Xk.enum;iE.sources;y({targetKey:ke,queryClass:ma.optional(),provider:dt.optional(),location:c().trim().min(1).optional(),runId:c().trim().min(1).optional(),shape:Xk.optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(h0).optional()}).strict();const Jk=1,jl=h().int().positive(),Vt=c().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Al=c().trim().min(1).max(256),rv=E(["sensitive","insensitive"]);function _u(e){const t=p0(e);if(!t)throw new Error(`Invalid measurement host: ${e}`);return t}function sE(e){const t=[];let i=!1;for(let s=0;s<e.length;s++){const r=e[s];r==="/"?(i||t.push(r),i=!0):(t.push(r),i=!1)}for(;t.length>1&&t.at(-1)==="/";)t.pop();return t.length?t.join(""):"/"}function lv(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function Wk(e){const t=new URL(`https://measurement.invalid${e}`).pathname;return sE(t.replace(/%[0-9a-f]{2}/gi,i=>i.toUpperCase()))}function Cf(e){const t=e.trim();if(!t||t.includes("?")||t.includes("#")||t.includes("://")||t.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const i=t.startsWith("/")?t:`/${t}`;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 Wk(i)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function oE(e){const t=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!t)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(t[0].length).split(/[?#]/,1)[0]||"/"}function cv(e){const t=e.trim();if(!t||t.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let i;try{i=new URL(t)}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=_u(i.hostname),r=Cf(oE(t));return`https://${s}${r}`}const yl=c().trim().min(1).refine(e=>{try{return _u(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>_u(e)),rE=c().trim().min(1).refine(e=>{try{return Cf(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Cf(e)),lE=c().trim().min(1).refine(e=>{try{return cv(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>cv(e)),cE=gt("kind",[y({kind:ae("exact"),url:lE,pathCase:rv}).strict(),y({kind:ae("prefix"),host:yl,pathPrefix:rE,pathCase:rv}).strict(),y({kind:ae("host"),host:yl}).strict()]),ew=c().trim().min(1).max(256).refine(e=>vs(e).length>0,"A target alias must contain mention text"),uE=Le(c().trim().min(1),c()),dE=yl,tw=y({stableKey:Vt,label:c().trim().min(1),urls:k(cE).min(1),aliases:k(ew),metadata:uE.optional()}).strict(),v0=y({stableKey:Vt,label:c().trim().min(1),targetKeys:k(Vt).min(1),competitors:k(dE).optional()}).strict(),nw=y({targetKey:Vt,queryIds:k(Al).min(1),context:gn.nullable().optional()}).strict();function mE(e,t){return e<t?-1:e>t?1:0}function pE(e,t=i=>i){const i=new Set,s=new Set;for(const r of e){const u=t(r);i.has(u)&&s.add(u),i.add(u)}return s}function Gp(e,t,i,s,r){for(const u of pE(t,r))e.addIssue({code:"custom",path:[...i],message:`Duplicate ${s}: ${u}`})}function uv(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const t=new URL(e.url);return{host:_u(t.hostname),pathname:Wk(t.pathname||"/")}}function fE(e,t,i,s){return e===i||(t==="insensitive"||s==="insensitive")&&lv(e)===lv(i)}function hE(e,t){if(e.kind!==t.kind)return!1;const i=uv(e),s=uv(t);return i.host!==s.host?!1:e.kind==="host"||t.kind==="host"?!0:fE(i.pathname,e.pathCase,s.pathname,t.pathCase)}function gE(e){const t=new Set;return[...e].sort(mE).filter(i=>{const s=vs(i);return t.has(s)?!1:(t.add(s),!0)})}const aw=y({schemaVersion:ae(Jk),targets:k(tw).min(1),groups:k(v0).optional(),targetQuerySelections:k(nw).optional()}).strict().superRefine((e,t)=>{const i=e.groups??[],s=e.targetQuerySelections??[];Gp(t,e.targets.map(b=>b.stableKey),["targets"],"target stable key"),Gp(t,i.map(b=>b.stableKey),["groups"],"group stable key");const r=new Set(e.targets.map(b=>b.stableKey)),u=new Set(i.map(b=>b.stableKey));for(const b of r)u.has(b)&&t.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${b}`});const d=new Map,g=[];e.targets.forEach((b,v)=>{for(const x of gE(b.aliases)){const S=vs(x),j=d.get(S);j&&j!==b.stableKey&&t.addIssue({code:"custom",path:["targets",v,"aliases"],message:`Target alias is already assigned to target ${j}: ${x}`}),d.set(S,b.stableKey)}b.urls.forEach((x,S)=>{g.find(_=>_.targetKey!==b.stableKey&&hE(_.matcher,x))&&t.addIssue({code:"custom",path:["targets",v,"urls",S],message:"Target URL matcher has an equal-specificity cross-target tie"}),g.push({targetKey:b.stableKey,matcher:x})})}),i.forEach((b,v)=>{Gp(t,b.targetKeys,["groups",v,"targetKeys"],"group target key");for(let x=0;x<b.targetKeys.length;x++){const S=b.targetKeys[x];r.has(S)||t.addIssue({code:"custom",path:["groups",v,"targetKeys",x],message:`Unknown target: ${S}`})}}),s.forEach((b,v)=>{r.has(b.targetKey)||t.addIssue({code:"custom",path:["targetQuerySelections",v,"targetKey"],message:`Unknown target: ${b.targetKey}`})})});aw.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));y({expectedActiveRevision:jl.nullable(),plan:aw}).strict();const yE=y({queryId:Al,queryText:c().min(1)}).strict(),k0=y({stableKey:c().min(1),queryText:c().min(1),context:gn.nullable(),expectedSnapshots:h().int().nonnegative()}).strict(),bE=y({kind:ae("baseline"),executionNodeKey:c().min(1),queryId:Al}).strict(),vE=y({kind:ae("target"),executionNodeKey:c().min(1),queryId:Al,targetKey:Vt}).strict(),zf=gt("kind",[bE,vE]),iw=y({code:ae("target-alias-prefix-overlap"),message:c().min(1),targetKeys:k(Vt).min(1),aliases:k(c().min(1)).min(1)}).strict(),sw=tw.extend({mentionNotApplicable:P()}),ow=y({schemaVersion:ae(Jk),defaultContext:gn.nullable(),effectiveOwnedHosts:k(yl),projectCanonicalHost:yl,projectBrandNames:k(ew),targets:k(sw),groups:k(v0),targetQuerySelections:k(nw),querySnapshots:k(yE),executionNodes:k(k0),usageEdges:k(zf),warnings:k(iw)}).strict(),kE=ow,rw=gt("schemaVersion",[ow,Ku]),w0=c().regex(/^[a-f0-9]{64}$/),x0=c().datetime(),lw=y({schemaVersion:ae(1),providers:k(c().min(1)).min(1),models:Le(c().min(1),c().min(1)),checksum:c().regex(/^[a-f0-9]{64}$/)}).strict(),wE=y({groups:k(Vt).optional(),targets:k(Vt).optional()}).strict(),xE=y({groups:k(Vt),targets:k(Vt),queries:k(c().min(1)),resolvedTargets:k(Vt)}).strict().superRefine((e,t)=>{e.resolvedTargets.length===0&&e.queries.length===0&&t.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});y({stableKey:Vt,retiredAt:c().datetime()});y({active:y({revision:jl,checksum:w0,createdAt:x0,plan:rw}).nullable()});y({versions:k(y({revision:jl,checksum:w0,createdAt:x0,active:P()}))});y({version:y({revision:jl,checksum:w0,createdAt:x0,active:P(),plan:rw})});const hu=y({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(),SE=E(["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"]),cw=y({id:SE,severity:E(["fail","warn"]),message:c().min(1),path:k(Ge([c(),h().int()]))}).strict(),jE=y({baseline:h().int().nonnegative(),target:h().int().nonnegative()}).strict(),uw=y({ok:ae(!0),checks:k(cw),executionNodes:k(k0),dedupSaved:h().int().nonnegative(),usageEdges:jE,estCostUsd:he(),plan:kE,warnings:k(iw),counts:hu}).strict(),dw=y({ok:ae(!1),checks:k(cw).min(1),executionNodes:k(k0).length(0),dedupSaved:ae(0),usageEdges:y({baseline:ae(0),target:ae(0)}).strict(),estCostUsd:he()}).strict();gt("ok",[uw,dw]);const nu=y({targetKey:Vt,context:gn.nullable(),queryIds:k(Al)}).strict();function dv(e){return y({added:k(e),removed:k(e),changed:k(y({stableKey:Vt,before:e,after:e}).strict()),unchanged:k(Vt)}).strict()}const AE=uw.extend({diff:y({activeRevision:jl.nullable(),targets:dv(sw),groups:dv(v0),querySelections:y({added:k(nu),removed:k(nu),changed:k(y({targetKey:Vt,before:nu,after:nu}).strict()),unchanged:k(y({targetKey:Vt,context:gn.nullable()}).strict())}).strict(),execution:y({addedNodeKeys:k(c().min(1)),removedNodeKeys:k(c().min(1)),addedUsageEdges:k(zf),removedUsageEdges:k(zf),counts:y({before:hu.nullable(),after:hu,delta:hu.nullable()}).strict()}).strict()}).strict()}).strict(),NE=dw.extend({diff:he()}).strict();gt("ok",[AE,NE]);const Gu=E(["complete","partial","failed","unsupported"]);Gu.enum;E(["proposed","alias","shared","unmatched","excluded"]);E(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const _E=E(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),CE=y({kind:E(["exact","prefix","suffix","contains"]),value:c().trim().min(1)}).strict(),mv=y({host:c().trim().min(1),pathTemplate:c().trim().min(1)}).strict(),S0=y({primary:mv,aliases:k(mv).optional(),excludedSlugSuffixes:k(c().trim().min(1)).optional(),excludedSlugPatterns:k(CE).optional()}).strict();y({sitemapUrl:c().url().refine(e=>{try{const t=new URL(e).protocol;return t==="http:"||t==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:S0,maxUrls:h().int().positive().max(1e4).optional()}).strict();const Hp=y({url:c(),canonicalUrl:c().nullable(),classification:E(["shared","unmatched","excluded"]),reason:E(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,t)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||t.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),zE=y({classification:ae("proposed"),reason:ae("primary-match"),stableKey:Vt,slug:c().trim().min(1),label:c().trim().min(1),primaryUrl:c().url(),aliasCoverageUrls:k(c().url())}).strict(),EE=y({classification:ae("alias"),reason:ae("exact-slug-match"),slug:c().trim().min(1),url:c().url(),targetStableKey:Vt}).strict(),TE=y({kind:_E,url:c(),canonicalUrl:c().nullable(),duplicateOf:c().optional()}).strict();y({proposed:k(zE),aliases:k(EE),shared:k(Hp),unmatched:k(Hp),excluded:k(Hp),diagnostics:k(TE)}).strict().superRefine((e,t)=>{const i=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[s,r]of i)for(const u of e[s])r.includes(u.classification)||t.addIssue({code:"custom",path:[s],message:"Discovery item is in the wrong result bucket"})});const j0=E(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),mw=E(["baseline","target"]),pw=E(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),ks=Ge([y({numerator:h().int().nonnegative(),denominator:h().int().positive(),rate:h().min(0).max(1)}).strict(),y({numerator:he(),denominator:he(),rate:he(),reason:pw}).strict()]).superRefine((e,t)=>{e.numerator!==null&&e.numerator>e.denominator&&t.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),DE=c().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),OE=y({executionId:c().trim().min(1),queryText:c().trim().min(1),provider:DE,context:gn.nullable(),requestedModel:c().trim().min(1).optional()}).strict();y({schemaVersion:ae(1),expectedSlots:k(OE)}).strict().superRefine((e,t)=>{const i=new Set;for(const[s,r]of e.expectedSlots.entries()){const u=[r.executionId,r.provider].join("\0");i.has(u)&&t.addIssue({code:"custom",path:["expectedSlots",s],message:"Duplicate expected provider slot"}),i.add(u)}});const Hu=y({executed:h().int().nonnegative(),expected:h().int().nonnegative(),complete:P(),sourceComplete:P(),sourceCompleteObservations:h().int().nonnegative(),answerComplete:P()}).strict(),pv=Ge([y({domain:c().trim().min(1),own:P(),presentIn:h().int().nonnegative(),of:h().int().positive()}).strict(),y({domain:c().trim().min(1),own:P(),presentIn:he(),of:he(),reason:pw}).strict()]),RE=y({domains:k(pv),providers:k(y({provider:dt,domains:k(pv)}).strict())}).strict(),ME=y({provider:dt,completeness:Hu,answerCoverage:ks}).strict(),BE=y({id:c().trim().min(1),label:c().trim().min(1),targetIds:k(c().trim().min(1)),completeness:Hu,answerCoverage:ks,targetCoverage:ks,sov:RE,providers:k(ME)}).strict(),qE=y({provider:dt,completeness:Hu,citationCoverage:ks,mentionCoverage:ks}).strict(),IE=y({id:c().trim().min(1),label:c().trim().min(1),completeness:Hu,citationCoverage:ks,mentionCoverage:ks,providers:k(qE)}).strict(),fw=y({observationId:c().trim().min(1),expectedSlotId:c().trim().min(1),executionId:c().trim().min(1),usageEdgeId:c().trim().min(1),usageEdgeType:mw,provider:dt,queryText:c().trim().min(1),location:c().nullable(),sourceUrl:c(),bridged:P(),historical:P(),evidenceComplete:P(),classification:j0,normalizedUrl:c().nullable(),matchedTargetIds:k(c().trim().min(1)),matchedUrlIds:k(c().trim().min(1))}).strict(),LE=y({sourceUrl:c(),normalizedUrl:c().nullable(),classification:j0,matchedTargetIds:k(c().trim().min(1)),matchedUrlIds:k(c().trim().min(1))}).strict(),PE=y({observationId:c().trim().min(1),expectedSlotId:c().trim().min(1),executionId:c().trim().min(1),usageEdgeId:c().trim().min(1),usageEdgeType:mw,provider:dt,queryText:c().trim().min(1),location:c().nullable(),queryClass:Ge([E(["branded","non-brand"]),he()]),mentioned:P().nullable(),cited:P().nullable(),sources:k(LE),sourceCount:h().int().nonnegative(),sourcesTruncated:P(),bridged:P(),historical:P(),evidenceComplete:P()}).strict(),$E=y({bridgedObservationIds:k(c()),historicalObservationIds:k(c()),evidenceIncompleteObservationIds:k(c()),ambiguousObservationIds:k(c()),unmatchedObservationIds:k(c())}).strict(),UE=y({id:c().trim().min(1),status:E(["completed","partial"]),createdAt:c().datetime(),startedAt:c().datetime().nullable(),finishedAt:c().datetime().nullable()}).strict();y({revision:h().int().positive(),run:UE.nullable(),groups:k(BE),targets:k(IE),evidence:k(fw),diagnostics:$E}).strict();y({property:y({targetKey:ke,label:c().min(1)}).strict(),queryClass:ma,measurement:y({state:b0,displayedRunId:c().min(1).optional(),completedAt:c().datetime().optional()}).strict(),evidence:Do(fw).optional(),answers:Do(PE).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const A0=E(["used","not-used","unknown","not-applicable"]);A0.enum;const N0=E(["native-auto-v1","search-required-v1"]);N0.enum;const ua=c().trim().min(1),Qu=c().trim().min(1),VE=c().trim().min(1),Je=h().int().nonnegative(),Nl=y({state:b0,displayedRunId:ua.nullable(),planRevision:h().int().positive(),completedAt:c().datetime().nullable()}).strict(),_l=y({targetKey:ke,label:Qu}).strict(),Bn={runId:ua.optional(),provider:dt.optional(),location:VE.optional()},bl=c().trim().min(1);y({runId:Bn.runId,groupKey:ke.optional(),queryClass:ma.default("non-brand"),provider:Bn.provider,location:Bn.location,limit:h().int().positive().max(50).optional()}).strict();const KE=_l.extend({mentionCoverage:an,citationCoverage:an,flags:Je,recommendedInstead:k(y({name:bl,occurrences:Je}).strict()).max(5),recommendedInsteadTotal:Je,recommendedInsteadTruncated:P()}).strict().superRefine((e,t)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&t.addIssue({code:ht.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&t.addIssue({code:ht.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})});y({portfolio:y({groupKey:ke.nullable(),label:Qu.nullable(),measurementScope:Ge([E(["full","spot_check"]),he()])}).strict(),measurement:Nl,queryClass:ma,metrics:y({propertiesMentioned:an,mentionCoverage:an,citationCoverage:an}).strict(),weakestProperties:k(KE),totalProperties:Je,truncated:P()}).strict();y({targetKey:ke,runId:Bn.runId,provider:Bn.provider,location:Bn.location,queryClass:ma.optional(),offset:h().int().nonnegative().optional(),limit:h().int().positive().max(100).optional()}).strict();E(["answered","missing"]);const Ef={queryId:ua,text:Qu,class:f0,provider:dt,requestedModel:c().nullable(),servedModel:c().nullable(),location:c().nullable()},GE=gt("status",[y({resultId:ua,...Ef,status:ae("answered"),mentioned:P().nullable(),cited:P().nullable(),recommendedInstead:k(bl),answerExcerpt:c().nullable()}).strict(),y({resultId:he(),...Ef,status:ae("missing"),mentioned:he(),cited:he(),recommendedInstead:k(bl).length(0),answerExcerpt:he()}).strict()]);y({property:_l,measurement:Nl,queryClass:ma,questions:k(GE),total:Je,truncated:P()}).strict();y({targetKey:ke,resultId:ua}).strict();const HE=y({url:ua,classification:j0,matchedTargetKeys:k(ke),assigned:P(),historical:P(),evidenceComplete:P()}).strict().superRefine((e,t)=>{e.assigned!==(e.classification==="assigned")&&t.addIssue({code:ht.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});y({property:_l,measurement:Nl,question:y({resultId:ua,...Ef,status:ae("answered")}).strict(),mentioned:P().nullable(),cited:P().nullable(),recommendedInstead:k(bl),answer:c().nullable(),sources:k(HE),captureStatus:Ge([Gu,he()]),retrievalStatus:Ge([A0,he()]),retrievalContract:Ge([N0,he()])}).strict();y({targetKey:ke,runId:Bn.runId,provider:Bn.provider,location:Bn.location,queryClass:ma.optional(),limit:h().int().positive().max(50).optional()}).strict();const QE=gt("state",[y({state:ae("available"),answeredResults:Je,targetMissResults:Je,recommendationOccurrences:Je}).strict(),y({state:ae("unavailable"),reason:g0}).strict()]),ZE=y({name:bl,occurrences:Je,providers:k(dt).max(5),providerTotal:Je,providersTruncated:P(),questions:k(Qu).max(5),questionTotal:Je,questionsTruncated:P()}).strict().superRefine((e,t)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&t.addIssue({code:ht.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&t.addIssue({code:ht.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&t.addIssue({code:ht.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});y({property:_l,measurement:Nl,queryClass:ma,basis:QE,competitors:k(ZE),total:Je,truncated:P()}).strict();y({runId:Bn.runId,scope:y0.default("all"),groupKey:ke.optional(),targetKey:ke.optional(),queryClass:ma.default("all"),provider:Bn.provider,location:Bn.location,limit:h().int().positive().max(50).optional()}).strict().superRefine((e,t)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&t.addIssue({code:ht.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&t.addIssue({code:ht.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&t.addIssue({code:ht.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const hw=E(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),gw=Nl.extend({executionIdentity:ua.nullable(),measurementScope:Ge([E(["full","spot_check"]),he()])}).strict(),Xr=gt("state",[y({state:ae("available"),previous:an,current:an,delta:h()}).strict().superRefine((e,t)=>{if(e.previous.state!=="available"||e.current.state!=="available"){t.addIssue({code:ht.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&t.addIssue({code:ht.custom,path:["delta"],message:"Delta must equal current minus previous"})}),y({state:ae("unavailable"),reason:g0}).strict()]);y({current:gw,comparison:gt("state",[y({state:ae("available"),previous:y({displayedRunId:ua,planRevision:h().int().positive(),completedAt:c().datetime().nullable(),executionIdentity:ua,measurementScope:E(["full","spot_check"])}).strict(),metrics:y({propertiesMentioned:Xr,mentionCoverage:Xr,citationCoverage:Xr}).strict(),changedProperties:k(_l.extend({mentionCoverage:Xr,citationCoverage:Xr,flags:Je}).strict()),totalProperties:Je,truncated:P()}).strict(),y({state:ae("unavailable"),reason:hw}).strict()])}).strict().superRefine((e,t)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){t.addIssue({code:ht.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&t.addIssue({code:ht.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&t.addIssue({code:ht.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});y({runId:Bn.runId}).strict();const FE=E(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),Zu=y({state:ae("unavailable"),reason:FE}).strict(),YE=y({state:ae("available"),expected:Je,executed:Je,answered:Je,missing:Je}).strict(),XE=gt("state",[YE,Zu]).superRefine((e,t)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&t.addIssue({code:ht.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&t.addIssue({code:ht.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),JE=y({state:ae("available"),complete:Je,partial:Je,failed:Je,unsupported:Je,notRecorded:Je}).strict(),WE=gt("state",[JE,Zu]),eT=y({state:ae("available"),used:Je,notUsed:Je,unknown:Je,notApplicable:Je,notRecorded:Je}).strict(),tT=gt("state",[eT,Zu]),nT=y({state:ae("available"),expectedQuestions:Je,answeredQuestions:Je,missingQuestions:Je}).strict(),aT=gt("state",[nT,Zu]).superRefine((e,t)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&t.addIssue({code:ht.custom,message:"Expected questions must equal answered plus missing"})});y({run:gw,completeness:XE,capture:WE,retrieval:tT,population:aT,comparison:gt("state",[y({state:ae("available"),previousDisplayedRunId:ua}).strict(),y({state:ae("unavailable"),reason:hw}).strict()])}).strict().superRefine((e,t)=>{if(e.completeness.state!=="available")return;const i=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==i&&t.addIssue({code:ht.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==i&&t.addIssue({code:ht.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const Oo=c().regex(/^[a-f0-9]{64}$/),da=c().trim().min(1).max(256),Pi=h().int().positive(),fv=y({kind:E(["user","api-key","system"]),id:c().trim().min(1),label:c().trim().min(1)}).strict(),iT=E(["proposed","included","excluded"]),sT=E(["manual","sitemap"]),_0=y({stableKey:ke,label:c().trim().min(1),status:iT,aliases:k(c().trim().min(1)),urlMatchers:k(c().trim().min(1)),source:sT,discoveredUrl:c().trim().min(1).optional(),discoveryIdentity:c().trim().min(1).optional()}).strict(),Fu=y({providers:k(dt).optional(),models:Le(dt,c().trim().min(1)).optional(),locations:k(c().trim().min(1)).optional()}).strict(),oT=E(["branded","non-brand","unclassified"]),rT=E(["rule","operator"]),yw=y({targetKey:ke,queryId:da,contextOverride:Fu.optional(),queryClass:oT,classificationSource:rT}).strict(),C0=Yk,bw=y({stableKey:ke,label:c().trim().min(1),targetKeys:k(ke),competitors:k(C0)}).strict(),lT=y({sitemapUrl:c().url(),rule:S0,exclusions:k(c().trim().min(1)),inputChecksum:Oo,reviewedAt:c().datetime().optional()}).strict(),cT=y({providers:k(dt),models:Le(dt,c().trim().min(1)).optional(),locations:k(c().trim().min(1))}).strict(),uT=y({defaultContext:cT,targets:k(_0),assignments:k(yw),groups:k(bw),discovery:lT.optional()}).strict(),dT=y({id:c().trim().min(1),projectId:c().trim().min(1),schemaVersion:ae(2),baseActiveVersionId:c().trim().min(1).nullable(),baseActiveRevision:Pi.nullable(),authoring:uT,createdBy:fv,updatedBy:fv,createdAt:c().datetime(),updatedAt:c().datetime()}).strict(),z0=y({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(),mT=y({code:c().trim().min(1),message:c().trim().min(1),path:k(Ge([c(),h().int()]))}).strict(),pT=y({etag:c().trim().min(1),changed:P(),warnings:k(mT),counts:z0}).strict();y({draft:dT.nullable(),etag:c().trim().min(1).nullable()}).strict();Do(_0);Do(yw);Do(bw);y({search:c().optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(h0).optional()}).strict();y({expectedActiveRevision:Pi.nullable()}).strict();y({sitemapUrl:c().url(),rule:S0,exclusions:k(c().trim().min(1)).optional()}).strict();const fT=y({discoveryIdentity:c().trim().min(1),action:E(["create","rebind","ignore"]),targetKey:ke.optional(),label:c().trim().min(1).optional()}).strict();y({selections:k(fT),selectedTargetKeys:k(ke).optional()}).strict().superRefine((e,t)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&t.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&t.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});y({target:_0}).strict();y({targetKey:ke,label:c().trim().min(1)}).strict();y({targetKey:ke,mergedKeys:k(ke).min(1)}).strict();y({targetKey:ke,cleanup:ae("assignments-and-group-memberships").optional()}).strict();y({targetKey:ke,discoveryIdentity:c().trim().min(1),discoveredUrl:c().url()}).strict();const vw={targetKeys:k(ke).optional(),groupKeys:k(ke).optional()};function kw(e,t){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&t.addIssue({code:"custom",message:"At least one Target or group selector is required."})}y(vw).strict().superRefine(kw);const hT=y({...vw,queryIds:k(da).min(1),contextOverride:Fu.optional()}).strict().superRefine(kw);Ge([y({targetKey:ke,queryIds:k(da).min(1),contextOverride:Fu.optional()}).strict(),hT]);const gT=y({groupKey:ke,label:c().trim().min(1),memberCount:h().int().positive()}).strict();y({draftEtag:c().trim().min(1),groups:k(gT),resolvedTargetKeys:k(ke),overlapCount:h().int().nonnegative(),assignments:y({requested:h().int().nonnegative(),added:h().int().nonnegative(),alreadyPresent:h().int().nonnegative()}).strict(),execution:y({addedNodes:h().int().nonnegative(),addedProviderCalls:h().int().nonnegative(),fullRunNodes:h().int().nonnegative(),fullRunProviderCalls:h().int().nonnegative()}).strict()}).strict();y({pairs:k(y({targetKey:ke,queryId:da}).strict()).min(1),contextOverride:Fu.optional()}).strict();Ge([y({targetKey:ke,queryId:da}).strict(),y({targetKeys:k(ke).min(1),queryId:da}).strict()]);y({targetKey:ke}).strict();y({queryClass:f0,assignments:k(y({targetKey:ke,queryId:da}).strict()).min(1)}).strict();y({group:y({stableKey:ke,label:c().trim().min(1),targetKeys:k(ke),competitors:k(C0).optional()}).strict()}).strict();y({groupKey:ke}).strict();y({groupKey:ke,competitor:C0}).strict();y({groupKey:ke,competitorKey:ke}).strict();const Cu=y({ruleId:c().trim().min(1),severity:E(["fail","warn"]),message:c().trim().min(1),path:k(Ge([c(),h().int()]))}).strict();gt("ok",[y({ok:ae(!0),compiledChecksum:Oo,checks:k(Cu),counts:z0,plan:Ku}).strict(),y({ok:ae(!1),compiledChecksum:he(),checks:k(Cu).min(1)}).strict()]);const hv=y({added:k(c().trim().min(1)),removed:k(c().trim().min(1)),changed:k(c().trim().min(1)),unchanged:k(c().trim().min(1))}).strict(),yT=y({activeRevision:Pi.nullable(),targets:hv,groups:hv,assignments:y({added:h().int().nonnegative(),removed:h().int().nonnegative(),reclassified:h().int().nonnegative()}).strict(),execution:y({addedNodeKeys:k(c().trim().min(1)),removedNodeKeys:k(c().trim().min(1))}).strict()}).strict();gt("ok",[y({ok:ae(!0),compiledChecksum:Oo,checks:k(Cu),counts:z0,plan:Ku,diff:yT}).strict(),y({ok:ae(!1),compiledChecksum:he(),checks:k(Cu).min(1),diff:he()}).strict()]);y({expectedActiveRevision:Pi.nullable(),expectedCompiledChecksum:Oo}).strict();y({published:P(),active:y({revision:Pi,checksum:Oo,compiledChecksum:Oo,createdAt:c().datetime(),plan:Ku}).strict()}).strict();y({discarded:P()}).strict();y({expectedActiveRevision:Pi}).strict();y({deactivated:P(),previousRevision:Pi.nullable()}).strict();const bT=E(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),vT=E(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),kT=E(["simple","draft-only","active-v1","active-v2"]);y({state:bT,nextAction:vT,mode:kT,activeRevision:Pi.nullable(),activeSchemaVersion:Ge([ae(1),ae(2)]).nullable(),draft:y({etag:c().trim().min(1),updatedAt:c().datetime()}).strict().nullable()}).strict();const ww=y({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(),wT=y({queryId:da,queryText:c().min(1),position:h().int().nonnegative()}).strict();ww.extend({items:k(wT)}).strict();y({querySets:k(ww)}).strict();y({name:c().trim().min(1),description:c().nullable().optional(),queryIds:k(da)}).strict();const xT=y({id:c().trim().min(1),projectId:c().trim().min(1),name:c().trim().min(1),description:c().nullable(),pattern:c().trim().min(1),variables:k(c().trim().min(1)),createdAt:c().datetime(),updatedAt:c().datetime()}).strict();y({templates:k(xT)}).strict();y({name:c().trim().min(1),description:c().nullable().optional(),pattern:c().trim().min(1),variables:k(c().trim().min(1))}).strict();y({bindings:k(Le(c().trim().min(1),c().trim().min(1))).min(1),querySetId:c().trim().min(1).optional()}).strict();y({created:k(y({queryId:da,queryText:c().min(1)}).strict()),existing:k(y({queryId:da,queryText:c().min(1)}).strict())}).strict();const zu=c().regex(/^[a-f0-9]{64}$/),Yu=h().int().positive();y({stableKey:ke,kind:E(["target","group"]),retiredAt:c().datetime().nullable()}).strict();y({csv:c()}).strict();E(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const ST=E(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),Tf=y({dataRow:Yu,property:c(),group:c(),url:c().nullable(),normalizedProperty:c(),normalizedGroupLabel:c()}).strict(),Jr=Tf.extend({reason:ST}),jT=y({source:E(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:ke,kind:E(["target","group"]).optional(),retiredAt:c().datetime().nullable().optional(),normalizedGroupLabel:c().optional()}).strict(),AT=y({proposedGroupKey:ke,evidence:k(jT).min(1)}).strict(),NT=gt("status",[Tf.extend({status:ae("matched"),targetKey:ke,groupKey:ke}).strict(),Jr.extend({status:ae("ambiguous"),candidateTargetKeys:k(ke).min(1).optional(),candidateGroupKeys:k(ke).min(1).optional()}).strict(),Jr.extend({status:ae("unmatched")}).strict(),Jr.extend({status:ae("invalid"),groupKeyConflict:AT.optional()}).strict(),Tf.extend({status:ae("duplicate"),duplicateOfRow:Yu,targetKey:ke,groupKey:ke}).strict(),Jr.extend({status:ae("proposed"),targetKey:ke}).strict(),Jr.extend({status:ae("excluded"),targetKey:ke}).strict()]),_T=y({normalizedGroupLabel:c(),groupKey:ke,label:c().trim().min(1),action:E(["create","extend"]),matchedRows:k(Yu),targetKeys:k(ke),addedTargetKeys:k(ke),unchangedTargetKeys:k(ke)}).strict(),CT=y({dataRows:h().int().nonnegative(),matchedRows:h().int().nonnegative(),ambiguousRows:h().int().nonnegative(),unmatchedRows:h().int().nonnegative(),invalidRows:h().int().nonnegative(),duplicateRows:h().int().nonnegative(),proposedRows:h().int().nonnegative(),excludedRows:h().int().nonnegative(),needsAttention:h().int().nonnegative(),groupsReady:h().int().nonnegative(),groupsToCreate:h().int().nonnegative(),groupsToExtend:h().int().nonnegative(),membershipsReady:h().int().nonnegative(),addedMemberships:h().int().nonnegative(),unchangedMemberships:h().int().nonnegative()}).strict();y({draftEtag:c().trim().min(1),sourceChecksum:zu,previewChecksum:zu,rows:k(NT),groupChanges:k(_T),counts:CT}).strict();y({csv:c(),sourceChecksum:zu,previewChecksum:zu,acceptedRows:k(Yu).min(1)}).strict().superRefine((e,t)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&t.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});pT.extend({appliedRows:h().int().nonnegative(),addedMemberships:h().int().nonnegative(),unchangedMemberships:h().int().nonnegative()}).strict();const xw=E(["introduced","repointed","retired"]),zT=xw.enum;y({modelId:c().trim().min(1),date:c().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:xw,confirmed:P(),sourceUrl:c().url(),note:c().min(1)});const ET=[{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.'}];zT.repointed;new Set(ET.map(e=>e.modelId.toLowerCase()));const TT=E(["not-exposed","no-known-change","known-change"]);TT.enum;const DT=y({modelId:c().trim().min(1),date:c().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:P(),sourceUrl:c().url()}),OT=y({status:E(["no-known-change","known-change"]),modelIds:k(c().trim().min(1)).min(1),changes:k(DT),changeCount:h().int().nonnegative(),unverifiedChangeCount:h().int().nonnegative(),firstChangeDate:c().optional(),lastChangeDate:c().optional(),knownGoodAsOf:c(),checkedThroughPeriodEnd:P()}),RT={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function MT(e){const t=e.trim().toLowerCase();return RT[t]??e.charAt(0).toUpperCase()+e.slice(1)}function Qp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Wr(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function Zp(e){return[...new Set(e.filter(t=>t!==null))].sort()}function BT(e,t){const i=MT(e),s=Array.isArray(t.changes)?t.changes:[],r=Qp(t.changeCount)||s.length,u=Math.min(r,Qp(t.unverifiedChangeCount)||Qp(t.unconfirmedChangeCount)||s.filter(x=>x.confirmed===!1).length),d=Wr(t.knownGoodAsOf),g=t.checkedThroughPeriodEnd!==!1,b={engine:i,confirmedCount:r-u,unconfirmedCount:u,knownGoodAsOf:d,checkedThroughPeriodEnd:g};if(s.length>0)return{...b,confirmedDates:Zp(s.filter(x=>x.confirmed!==!1).map(x=>Wr(x.date))),unconfirmedDates:Zp(s.filter(x=>x.confirmed===!1).map(x=>Wr(x.date)))};const v=Zp([Wr(t.firstChangeDate),Wr(t.lastChangeDate)]);return r===0?{...b,confirmedDates:[],unconfirmedDates:[]}:u===0?{...b,confirmedDates:v,unconfirmedDates:[]}:b.confirmedCount===0?{...b,confirmedDates:[],unconfirmedDates:v}:{...b,confirmedDates:[],unconfirmedDates:[]}}function qT(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 gv(e,t){return e.length===0?null:e.length===1&&t<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function IT(e){const t=gv(e.confirmedDates,e.confirmedCount),i=gv(e.unconfirmedDates,e.unconfirmedCount),s=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return t?`${s} was updated ${t}, 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(t&&i)return`${s} was updated ${t}, 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 yv(e){const t=e.filter(s=>!s.checkedThroughPeriodEnd&&s.knownGoodAsOf!==null);return t.length===0?null:`We last checked for model updates on ${t.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 XV(e){const t=Object.entries(e??{}).map(([b,v])=>BT(b,v??{})).sort((b,v)=>b.engine.localeCompare(v.engine));if(t.length===0)return null;const i=t.filter(b=>b.confirmedCount+b.unconfirmedCount>0);if(i.length===0){const b=[...new Set(t.map(_=>_.engine))],v=b.length>1,x=yv(t),S=[...new Set(t.map(_=>_.knownGoodAsOf).filter(_=>_!==null))].sort(),j=x??(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 ${qT(b)} 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((b,v)=>b+v.confirmedCount+v.unconfirmedCount,0),r=i.some(b=>b.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=yv(t);return{kind:"change",text:`${i.map(IT).join(" ")} ${d}${g?` ${g}`:""}`}}const LT=E(["gsc","ga4","gbp"]);y({id:c(),domain:c(),connectionType:LT,propertyId:c().nullable().optional(),sitemapUrl:c().nullable().optional(),scopes:k(c()).default([]),createdAt:c(),updatedAt:c()});const PT=y({date:c(),query:c(),page:c(),country:c().nullable().optional(),device:c().nullable().optional(),clicks:h(),impressions:h(),ctr:h(),position:h()});E(["clicks","impressions","date"]);y({rows:k(PT),totalMatching:h(),truncated:P(),latestAvailableDate:c().nullable()});const $T=y({date:c(),clicks:h(),impressions:h(),ctr:h()});y({totals:y({clicks:h(),impressions:h(),ctr:h(),days:h()}),daily:k($T)});const UT=y({page:c(),clicks:h(),impressions:h(),ctr:h()});y({rows:k(UT),totals:y({clicks:h(),impressions:h(),ctr:h(),days:h(),coveredFrom:c().nullable(),coveredThrough:c().nullable(),complete:P()}).nullable(),totalsSource:ae("property-daily"),rankedFrom:c().nullable(),rankedThrough:c().nullable()});const Df=y({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:P().nullable().optional(),richResults:k(c()).default([]),referringUrls:k(c()).default([]),inspectedAt:c()});E(["stable","reindexed","deindexed","still-missing","new"]);const VT=y({url:c(),previousState:c().nullable(),currentState:c().nullable(),transitionDate:c()}),KT=y({reason:c(),count:h(),urls:k(Df).default([])});y({summary:y({total:h(),indexed:h(),notIndexed:h(),deindexed:h(),percentage:h()}),lastInspectedAt:c().nullable(),lastSyncedAt:c().nullable(),indexed:k(Df).default([]),notIndexed:k(Df).default([]),deindexed:k(VT).default([]),reasonGroups:k(KT).default([])});y({url:c(),type:E(["URL_UPDATED","URL_DELETED"]),notifiedAt:c()});const GT=y({url:c(),type:E(["URL_UPDATED","URL_DELETED"]),notifiedAt:c(),status:E(["success","error"]),error:c().optional()});y({summary:y({total:h().int().nonnegative(),succeeded:h().int().nonnegative(),failed:h().int().nonnegative()}),results:k(GT).default([])});y({date:c(),indexed:h(),notIndexed:h(),reasonBreakdown:Le(c(),h()).default({})});const HT=y({siteUrl:c(),permissionLevel:c()});y({sites:k(HT).default([])});const QT=y({type:c(),submitted:c(),indexed:c().optional().describe("Deprecated compatibility field.")}),Sw=y({path:c(),parentSitemapUrl:c().optional(),lastSubmitted:c().optional(),isPending:P().optional(),isSitemapsIndex:P().optional(),type:c().optional(),lastDownloaded:c().optional(),warnings:c().optional(),errors:c().optional(),contents:k(QT).optional()});y({sitemaps:k(Sw).default([]),summary:y({total:h().int().nonnegative(),indexes:h().int().nonnegative(),files:h().int().nonnegative()}),preferredSubmissionUrls:k(c()).default([])});y({sitemapUrls:k(c().url().refine(e=>{const t=new URL(e).protocol;return t==="http:"||t==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const ZT=y({sitemapUrl:c(),status:E(["accepted","error"]),submittedAt:c().optional(),error:c().optional()});y({summary:y({total:h().int().nonnegative(),accepted:h().int().nonnegative(),failed:h().int().nonnegative()}),results:k(ZT)});y({sitemaps:k(Sw),primarySitemapUrl:c(),run:y({id:c(),projectId:c(),kind:c(),status:c(),trigger:c(),createdAt:c()}).nullable()});const FT=y({name:c(),accountName:c().nullable(),type:c().nullable(),role:c().nullable()});y({accounts:k(FT),total:h().int().nonnegative()});const YT=y({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:k(c()),description:c().nullable(),serviceArea:Le(c(),Xn()).nullable(),regularHours:Le(c(),Xn()).nullable(),primaryPhone:c().nullable(),openStatus:c().nullable(),openingDate:c().nullable(),selected:P(),syncedAt:c().nullable(),createdAt:c(),updatedAt:c()});y({locations:k(YT),totalDiscovered:h().int().nonnegative(),totalSelected:h().int().nonnegative()});y({selectAllNew:P().default(!0),accountName:c().optional(),switchAccount:P().default(!1)});y({selected:P()});y({locationNames:k(c()).optional(),daysOfMetrics:h().int().positive().max(540).optional(),monthsOfKeywords:h().int().positive().max(18).optional()});y({runId:c(),status:c()});const XT=y({locationName:c(),date:c(),metric:c(),value:h().int()});y({metrics:k(XT),total:h().int().nonnegative()});const JT=y({locationName:c(),periodStart:c(),periodEnd:c(),keyword:c(),valueCount:h().int().nullable(),valueThreshold:h().int().nullable()});y({keywords:k(JT),total:h().int().nonnegative(),thresholdedPct:h().int().min(0).max(100)});const WT=y({locationName:c(),placeActionLinkName:c(),placeActionType:c(),uri:c().nullable(),isPreferred:P(),providerType:c().nullable()});y({placeActions:k(WT),total:h().int().nonnegative()});const eD=y({locationName:c(),populatedGroupCount:h().int().nonnegative(),syncedAt:c(),attributes:Le(c(),Xn())});y({lodging:k(eD),total:h().int().nonnegative()});const tD=y({name:c(),valueType:c(),values:k(Ge([P(),c()])),unsetValues:k(c()),uris:k(c())}),nD=y({locationName:c(),attributeCount:h().int().nonnegative(),syncedAt:c(),attributes:k(tD)});y({attributes:k(nD),total:h().int().nonnegative()});const aD=y({locationName:c(),placeId:c(),tier:c(),amenities:k(c()),syncedAt:c(),place:Le(c(),Xn())});y({places:k(aD),total:h().int().nonnegative()});y({scope:y({locationName:c().nullable(),locationCount:h().int().nonnegative()}),performance:y({totals:Le(c(),h()),recent7d:Le(c(),h()),prior7d:Le(c(),h()),deltaPct:Le(c(),h().nullable())}),freshness:y({dataThroughDate:c().nullable(),latestStoredDate:c().nullable(),pendingDays:h().int().nonnegative()}),timeseries:k(y({date:c(),pending:P(),metrics:Le(c(),h())})),keywords:y({total:h().int().nonnegative(),thresholdedCount:h().int().nonnegative(),thresholdedPct:h().int().min(0).max(100)}),placeActions:y({total:h().int().nonnegative(),hasReservationCta:P(),hasBookingCta:P(),hasDirectMerchantCta:P()}),lodging:y({lodgingLocationCount:h().int().nonnegative(),populatedLodgingCount:h().int().nonnegative(),emptyLodgingCount:h().int().nonnegative()}),profileCompleteness:y({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 iD={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 sD(e){const t=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(s=>s.toLowerCase());if(t.length===0)return e;const i=t.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function JV(e){return iD[e]??sD(e)}const oD=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],rD=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function WV(e){return oD.includes(e)?"conversion":rD.includes(e)?"reach":"other"}y({id:c(),domain:c(),siteUrl:c().nullable().optional(),createdAt:c(),updatedAt:c()});const Fp=y({id:c(),url:c(),httpCode:h().nullable().optional(),inIndex:P().nullable().optional(),lastCrawledDate:c().nullable().optional(),inIndexDate:c().nullable().optional(),inspectedAt:c(),documentSize:h().nullable().optional(),anchorCount:h().nullable().optional(),discoveryDate:c().nullable().optional()});y({summary:y({total:h(),indexed:h(),notIndexed:h(),unknown:h().optional(),percentage:h()}),lastInspectedAt:c().nullable(),indexed:k(Fp).default([]),notIndexed:k(Fp).default([]),unknown:k(Fp).default([]).optional()});y({query:c(),impressions:h(),clicks:h(),ctr:h(),averagePosition:h()});y({date:c(),indexed:h(),notIndexed:h(),unknown:h()});const lD=y({url:c(),status:E(["success","error"]),submittedAt:c(),error:c().optional()});y({summary:y({total:h().int().nonnegative(),succeeded:h().int().nonnegative(),failed:h().int().nonnegative()}),results:k(lD).default([])});const jw=y({url:c(),verified:P()});y({sites:k(jw).default([])});y({connected:P(),domain:c(),siteUrl:c().nullable(),createdAt:c().nullable(),updatedAt:c().nullable()});y({connected:P(),domain:c(),siteUrl:c().nullable(),availableSites:k(jw).default([])});y({siteUrl:c()});const cD=y({name:c(),alive:P(),lastUsed:c().nullable()});y({connected:P(),endpoint:c(),version:c().optional(),browserVersion:c().optional(),targets:k(cD).default([])});const Vo=E(["live","staging"]);y({projectName:c(),url:c(),stagingUrl:c().optional(),username:c(),defaultEnv:Vo,createdAt:c(),updatedAt:c()});const bv=y({url:c(),reachable:P(),pageCount:h().nullable().optional(),version:c().nullable().optional(),error:c().nullable().optional(),plugins:k(c()).optional(),authenticatedUser:y({id:h(),slug:c()}).nullable().optional()});y({connected:P(),projectName:c(),defaultEnv:Vo,live:bv.nullable(),staging:bv.nullable(),adminUrl:c().nullable().optional()});const uD=y({id:h(),slug:c(),title:c(),status:c(),modifiedAt:c().nullable().optional(),link:c().nullable().optional()}),Aw=y({title:c().nullable(),description:c().nullable(),noindex:P().nullable(),writable:P().default(!1),writeTargets:k(c()).default([])}),dD=y({type:c(),json:Le(c(),Xn())}),mD=uD.extend({env:Vo,content:c(),seo:Aw,schemaBlocks:k(dD).default([])}),vv=mD.extend({contentHash:c(),contentSnippet:c()}),Nw=y({manualRequired:ae(!0),targetUrl:c(),adminUrl:c().nullable().optional(),content:c(),nextSteps:k(c()).default([])}),pD=y({slug:c(),severity:E(["high","medium","low"]),code:E(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:c()});y({slug:c(),title:c(),status:c(),wordCount:h(),seo:Aw,schemaPresent:P(),issues:k(pD).default([])});const fD=y({slug:c(),status:E(["applied","skipped","manual"]),error:c().optional(),manualAssist:Nw.optional()});y({env:Vo,strategy:E(["plugin","manual"]),results:k(fD)});const hD=y({slug:c(),status:E(["deployed","stripped","skipped","failed"]),schemasInjected:k(c()).optional(),manualAssist:Nw.optional(),error:c().optional()});y({env:Vo,results:k(hD)});const gD=y({slug:c(),title:c(),canonrySchemas:k(c()),thirdPartySchemas:k(c()),hasCanonrySchema:P()});y({env:Vo,pages:k(gD)});const yD=y({name:c(),status:E(["completed","skipped","failed"]),summary:c().optional(),error:c().optional()});y({projectName:c(),steps:k(yD)});y({slug:c(),live:vv,staging:vv,hasDifferences:P(),differences:y({title:P(),slug:P(),content:P(),seoTitle:P(),seoDescription:P(),noindex:P(),schema:P()})});const bD=y({name:c(),displayName:c().optional(),keyUrl:c().optional(),modelHint:c().optional(),model:c().optional(),defaultModel:c().optional(),configured:P(),quota:R9.optional(),vertexConfigured:P().optional()}),vD=y({name:c(),displayName:c(),mode:E(["api","browser"]),modelConfigurable:P(),defaultModel:c(),knownModels:k(y({id:c(),displayName:c(),tier:E(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:y({source:c(),flags:c()}),modelValidationHint:c()}),kv=y({configured:P()});y({providers:k(bD).default([]),providerCatalog:k(vD).default([]),google:kv,bing:kv});const $i=E(["queued","running","completed","partial","failed","cancelled"]),dn=$i.enum,_w=E(["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"]),Oe=_w.enum,E0=E(["manual","scheduled","config-apply","backfill","probe"]),Ao=E0.enum,Fa=E(["cited","not-cited"]),Eu=Fa.enum,Tu=E(["visible","not-visible"]);Tu.enum;const vl=E(["mentioned","not-mentioned"]);vl.enum;const Cw=E(["new","cited","lost","emerging","not-cited"]);Cw.enum;const kD=E(["new","mentioned","lost","emerging","not-mentioned"]);kD.enum;const wD=E([Ao.manual,Ao.probe]);y({kind:ae(Oe["answer-visibility"]).optional(),trigger:wD.optional(),providers:k(dt).optional(),queries:k(c().min(1)).min(1).optional(),measurementScope:wE.optional(),location:c().min(1).optional(),allLocations:P().optional(),noLocation:P().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const xD=y({message:c(),raw:Xn().optional()}),SD=y({message:c().optional(),providers:Le(c(),xD).optional()}),jD=y({id:c(),projectId:c(),kind:_w,status:$i,trigger:E0.default("manual"),measurementPlanVersionId:c().nullable().optional(),measurementManifest:Le(c(),Xn()).nullable().optional(),measurementScope:xE.nullable().optional(),measurementExecutionIdentity:lw.nullable().optional(),location:c().nullable().optional(),queries:k(c()).nullable().optional(),startedAt:c().nullable().optional(),finishedAt:c().nullable().optional(),error:SD.nullable().optional(),queryBasketRevision:h().int().nullable().optional(),createdAt:c()});function T0(e){if(e.providers){const t=Object.entries(e.providers);if(t.length===1){const[i,s]=t[0];return`${i}: ${s.message}`}if(t.length>1)return t.map(([i,s])=>`${i}: ${s.message}`).join(" • ")}return e.message??"Run failed."}const Xu=y({uri:c(),title:c()}),AD=y({status:E(["applied","ignored","browser-implicit","unknown"]),resolved:gn.nullable().optional()}),zw=y({id:c(),runId:c(),queryId:c(),query:c().optional(),provider:dt,citationState:Fa,answerMentioned:P().optional(),visibilityState:Tu.optional(),mentionState:vl.optional(),transition:Cw.optional(),answerText:c().nullable().optional(),citedDomains:k(c()).default([]),citedUrls:k(c()).nullable().default(null),captureStatus:Ge([Gu,he()]).default(null),sourceCount:h().int().nonnegative().nullable().default(null),resolvedCount:h().int().nonnegative().nullable().default(null),captureVersion:h().int().positive().nullable().default(null),retrievalStatus:Ge([A0,he()]).default(null),retrievalContract:Ge([N0,he()]).default(null),competitorOverlap:k(c()).default([]),recommendedCompetitors:k(c()).default([]),matchedTerms:k(c()).default([]),groundingSources:k(Xu).default([]),searchQueries:k(c()).default([]),model:c().nullable().optional(),servedModel:c().nullable().optional(),location:c().nullable().optional(),requestedContext:gn.nullable().optional(),supportedContext:AD.nullable().optional(),createdAt:c()});y({snapshots:k(zw),total:h().int().nonnegative()});const ND=y({queryId:c().nullable(),query:c().nullable(),run1State:Fa.nullable(),run2State:Fa.nullable(),run1AnswerMentioned:P().nullable(),run2AnswerMentioned:P().nullable(),run1VisibilityState:Tu.nullable(),run2VisibilityState:Tu.nullable(),run1MentionState:vl.nullable().optional(),run2MentionState:vl.nullable().optional(),changed:P(),visibilityChanged:P()});y({run1:c(),run2:c(),diff:k(ND)});const _D=jD.extend({snapshots:k(zw).optional()}),CD=y({totalRuns:h().int().nonnegative(),run:_D.nullable()});y({id:c(),projectId:c().nullable().optional(),actor:c(),action:c(),entityType:c(),entityId:c().nullable().optional(),diff:Xn().optional(),userAgent:c().nullable().optional(),actorSession:c().nullable().optional(),createdAt:c()});const zD=E(["yes","no","unknown","not-mentioned"]),wv=k(c().min(1));y({companyName:c().min(1),domain:c().min(1),queries:wv.optional(),phrases:wv.optional(),competitors:k(c().min(1)).optional().default([])}).superRefine((e,t)=>{e.queries!==void 0&&e.phrases!==void 0&&t.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const ED=y({name:c(),count:h().int().nonnegative()}),TD=y({id:c(),name:c(),weight:h(),score:h(),findings:k(y({type:c(),message:c()})).default([]),recommendations:k(c()).default([])}),DD=y({url:c(),finalUrl:c(),auditedAt:c(),overallScore:h(),summary:c(),factors:k(TD).default([])}),OD=y({industry:c(),summary:c(),services:k(c()).default([]),categoryTerms:k(c()).default([])}),RD=y({provider:c(),displayName:c(),model:c().nullable().optional(),mentioned:P(),cited:P(),describedAccurately:zD,accuracyNotes:c().nullable().optional(),incorrectClaims:k(c()).default([]),recommendedCompetitors:k(c()).default([]),citedDomains:k(c()).default([]),groundingSources:k(Xu).default([]),searchQueries:k(c()).default([]),answerText:c(),error:c().nullable().optional()}),MD=y({query:c(),providerResults:k(RD).default([])}),BD=y({totalQueries:h().int().nonnegative(),totalProviders:h().int().nonnegative(),totalComparisons:h().int().nonnegative(),mentionCount:h().int().nonnegative(),citationCount:h().int().nonnegative(),topCompetitors:k(ED).default([]),visibilityGap:c(),whatThisMeans:k(c()).default([]),recommendedActions:k(c()).default([])});y({companyName:c(),domain:c(),homepageUrl:c(),generatedAt:c(),queries:k(c()).default([]),competitors:k(c()).default([]),profile:OD,audit:DD,queryResults:k(MD).default([]),summary:BD});const Ew=E(["pass","partial","fail"]);Ew.enum;const Tw=E(["up","down","flat"]);Tw.enum;const qD=y({id:c(),name:c(),weight:h(),avgScore:h(),status:Ew,pagesPassing:h().int().nonnegative(),pagesPartial:h().int().nonnegative(),pagesFailing:h().int().nonnegative()}),ID=y({factorId:c(),factorName:c(),avgScore:h(),affectedPages:h().int().nonnegative(),totalPages:h().int().nonnegative(),affectedPct:h().int().nonnegative(),topRecommendations:k(c()).default([])});y({project:c(),hasData:P(),runId:c().nullable(),runStatus:$i.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:Tw.nullable(),previousScore:h().nullable(),previousAuditedAt:c().nullable(),factors:k(qD).default([]),crossCuttingIssues:k(ID).default([]),prioritizedFixes:k(c()).default([])});const LD=y({id:c(),name:c(),weight:h(),score:h()}),PD=y({url:c(),overallScore:h(),status:E(["success","error"]),error:c().nullable().optional(),factors:k(LD).default([])});y({project:c(),runId:c().nullable(),auditedAt:c().nullable(),total:h().int().nonnegative(),pages:k(PD).default([])});const $D=y({runId:c(),auditedAt:c(),aggregateScore:h(),pagesAudited:h().int().nonnegative()});y({project:c(),points:k($D).default([])});y({sitemapUrl:c().url().optional(),limit:h().int().positive().max(2e3).optional()});y({runId:c(),status:$i});const D0=E(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);D0.enum;y({id:c(),projectId:c(),kind:D0,cronExpr:c(),preset:c().nullable().optional(),timezone:c().default("UTC"),enabled:P().default(!0),providers:k(dt).default([]),sourceId:c().nullable().optional(),lastRunAt:c().nullable().optional(),nextRunAt:c().nullable().optional(),createdAt:c(),updatedAt:c()});y({kind:D0.optional(),preset:c().optional(),cron:c().optional(),timezone:c().optional().default("UTC"),enabled:P().optional().default(!0),providers:k(dt).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 O0=E(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);O0.enum;const R0=E(["cited","aspirational","wasted-surface"]),xv=R0.enum;xv.cited,xv.aspirational;const Ju=E(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),UD=Ju.enum;UD["direct-competitor"];const Wu=E(["queued","seeding","probing","completed","failed"]);Wu.enum;const Dw=y({domain:c().min(1),hits:h().int().positive(),competitorType:Ju.default("unknown")}),VD=y({id:c(),sessionId:c(),projectId:c(),query:c(),bucket:R0.nullable().default(null),citationState:Fa,citedDomains:k(c()).default([]),answerMentioned:P().nullable().default(null),createdAt:c()}),KD=y({id:c(),projectId:c(),status:Wu,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:k(gn).nullable().optional(),seedRawCandidates:k(c()).nullable().optional(),dedupClusterMinSims:k(h()).nullable().optional(),dedupBandPairFraction:h().nullable().optional(),dedupPairsTotal:h().int().nullable().optional(),seedProviders:k(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:k(Dw).default([]),warning:c().nullable().optional(),error:c().nullable().optional(),startedAt:c().nullable().optional(),finishedAt:c().nullable().optional(),createdAt:c()});KD.extend({probes:k(VD).default([])});const GD=500,HD=8,QD=["gemini","openai"],ZD=E(QD);y({icpDescription:c().min(1).optional(),buyerDescription:c().min(1).optional(),seedProviders:k(ZD).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:h().min(0).max(1).optional(),maxProbes:h().int().positive().max(GD).optional(),probeConcurrency:h().int().min(1).max(HD).optional(),locations:k(c().min(1)).optional()});y({buckets:k(R0).min(1).optional(),includeCompetitors:P().optional(),competitorTypes:k(Ju).min(1).optional()});y({sessionId:c(),projectId:c(),status:Wu,queriesByBucket:y({cited:k(c()),aspirational:k(c()),"wasted-surface":k(c())}),suggestedCompetitors:k(Dw)});y({sessionId:c(),projectId:c(),promoted:y({queries:k(c()),competitors:k(c())}),skipped:y({queries:k(c()),competitors:k(c())})});Ge([ae("cli"),c().regex(/^discovery:.+$/)]);const FD=y({query:c().min(1),probeHits:h().int().positive()}),YD=y({rawCandidates:h().int().nonnegative(),admitted:h().int().nonnegative(),rejected:y({belowFloor:h().int().nonnegative(),length:h().int().nonnegative(),navigational:h().int().nonnegative(),duplicate:h().int().nonnegative(),offAnchor:h().int().nonnegative(),semanticDuplicate:h().int().nonnegative()})});y({sessionId:c(),projectId:c(),provider:c(),status:Wu,minProbeHits:h().int().positive(),anchorApplied:P(),semanticNoveltyApplied:P(),candidates:k(FD),stats:YD});const M0=E(["own","direct-competitor","ota-aggregator","editorial-media","other"]);M0.enum;const Ow=E(["7d","30d","90d","all"]),Sv=E(["improving","declining","stable"]),XD=E(["mentioned","cited"]);XD.enum;const Of=y({citationRate:h(),cited:h().int(),total:h().int(),mentionRate:h(),mentionedCount:h().int()}),B0=c().trim().min(1),JD=k(B0).min(1).superRefine((e,t)=>{for(let i=1;i<e.length;i+=1)e[i-1]>=e[i]&&t.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[i]})}),Ro=gt("status",[y({status:ae("known"),model:B0}),y({status:ae("unknown")}),y({status:ae("mixed"),models:JD,includesUnknown:P()})]),WD=y({observedAt:c(),bucketStartDate:c(),from:Ro,to:Ro,fromPreWindowAnchor:P().optional(),anchorObservedAt:c().optional()}),Rw=y({latestObservation:y({observedAt:c(),state:Ro}),events:k(WD),eventTotal:h().int().nonnegative().optional(),anchorUnavailable:P().optional()}),eO=Le(c(),Rw),tO=Rw.extend({latestServedModelIds:k(B0).default([])}),nO=Le(c(),tO),aO=y({observedAt:c(),configured:Ro,served:Ro}),iO=y({rate:h().nullable(),projectMentionSnapshots:h().int().nonnegative(),competitorMentionSnapshots:h().int().nonnegative()}),sO=y({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:iO,byProvider:Le(c(),Of),modelEvidenceByProvider:Le(c(),Ro).default({}),basketRevision:h().int().nullable().default(null)}),oO=y({revision:h().int(),at:c(),added:k(c()),removed:k(c())}),rO=y({date:c(),delta:h().int(),label:c()}),lO=y({at:c(),identity:lw});y({window:Ow,buckets:k(sO),overall:Of,byProvider:Le(c(),Of),trend:Sv,mentionTrend:Sv,queryChanges:k(rO),basketChanges:k(oO).default([]),executionIdentityChanges:k(lO).default([]),referenceBasketRevision:h().int().nullable().default(null),modelAttribution:eO.default({}),servedModelAttribution:nO.default({}),modelServiceMismatch:Le(c(),aO).default({}),modelPointerChanges:Le(c(),OT).default({})});const jv=y({category:O0,label:c(),count:h().int(),percentage:h(),topDomains:k(y({domain:c(),count:h().int()}))}),cO=y({domain:c(),count:h().int(),percentage:h(),category:O0,label:c(),surfaceClass:M0}),uO=y({surfaceClass:M0,label:c(),count:h().int(),percentage:h(),domainCount:h().int()}),Av=y({totalCitedSlots:h().int(),domainTotal:h().int(),entries:k(cO),truncatedDomainCount:h().int(),truncatedCitedSlots:h().int(),bySurfaceClass:k(uO)});y({overall:k(jv),byQuery:Le(c(),k(jv)),ranked:Av,byProvider:Le(c(),Av),runId:c(),window:Ow,limit:h().int().nullable()});const q0=y({total:h().int(),checked:h().int(),mentioned:h().int(),cited:h().int(),mentionRate:h().nullable(),citedRate:h().nullable()}),Mw=q0.extend({provider:c(),firstObserved:c(),lastObserved:c()}),dO=q0.extend({queryId:c().nullable(),query:c(),firstObserved:c(),lastObserved:c(),providers:k(Mw).optional()}),mO=y({since:c().nullable(),until:c().nullable(),lastRuns:h().int().nullable(),runCount:h().int()}),pO=E(["provider"]),Rf=y({domain:c(),mentions:h().int()}),fO=y({percent:h().nullable(),projectMentions:h().int(),competitorMentions:h().int(),snapshotsWithAnswerText:h().int(),perCompetitor:k(Rf)});y({project:c(),groupBy:pO.optional(),window:mO,totals:q0,byProvider:k(Mw).optional(),queries:k(dO),shareOfVoice:fO.optional()});const hO=E(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),gO=E(["up","down","flat"]),Nv=y({point:h().nullable(),ciLow:h().nullable(),ciHigh:h().nullable(),numerator:h().int(),denominator:h().int()}),yO=E(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),bO=y({key:yO,label:c(),driftRobust:P(),from:Nv,to:Nv,rateRatio:h().nullable(),direction:Ge([gO,he()]),verdict:hO}),_v=y({month:c(),since:c(),until:c(),runCount:h().int(),lowRunCount:P()}),vO=y({queryCount:h().int(),excludedFromOnly:h().int(),excludedToOnly:h().int(),providers:k(c()),excludedProviders:k(c())}),kO=y({provider:c(),fromModels:k(c()),toModels:k(c())}),wO=E(["included","model-discontinuous","model-unknown"]),xO=y({provider:c(),status:wO,fromModels:k(c()),toModels:k(c())}),SO=E(["comparable","model-discontinuous","model-unknown","insufficient-data"]),jO=y({status:SO,comparedProviders:k(c()),providers:k(xO)}),AO=y({provider:c(),from:y({checked:h().int(),mentioned:h().int(),cited:h().int()}),to:y({checked:h().int(),mentioned:h().int(),cited:h().int()})}),NO=y({from:y({count:h().int(),of:h().int()}),to:y({count:h().int(),of:h().int()})});y({project:c(),from:_v,to:_v,basket:vO,metrics:k(bO),queriesMentioned:NO,byProvider:k(AO),modelChanges:k(kO),continuity:jO,competitors:y({from:k(Rf),to:k(Rf)})});E(["json","csv"]);const _O=y({runId:c(),runKind:ae("answer-visibility"),runStatus:$i,runTrigger:E0,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:Fa,cited:P(),answerMentioned:P().nullable(),mentionState:Ge([vl,he()]),citedDomains:k(c()),citedUrls:k(c()).nullable(),captureStatus:Ge([Gu,he()]),sourceCount:h().int().nonnegative().nullable(),resolvedCount:h().int().nonnegative().nullable(),captureVersion:h().int().positive().nullable(),competitorOverlap:k(c()),recommendedCompetitors:k(c()),answerText:c().nullable(),groundingSources:k(Xu),searchQueries:k(c())}),CO=y({since:c().nullable(),until:c().nullable(),includeProbes:P()});y({schemaVersion:ae("canonry.results-export/v1"),generatedAt:c(),project:y({id:c(),name:c(),displayName:c(),canonicalDomain:c(),country:c(),language:c()}),filters:CO,recordCount:h().int().nonnegative(),records:k(_O)});const ed=E(["organic","paid"]);ed.enum;y({id:c(),projectId:c(),propertyId:c(),clientEmail:c(),connected:P(),createdAt:c(),updatedAt:c()});y({date:c(),landingPage:c(),sessions:h(),organicSessions:h(),users:h()});const I0=E(["session","first_user","manual_utm"]),zO=y({source:c(),medium:c(),trafficClass:ed,sessions:h(),users:h().optional(),sourceDimension:I0}),EO=y({source:c(),medium:c(),trafficClass:ed,sourceDimension:I0,landingPage:c(),sessions:h(),users:h().optional()}),TO=y({source:c(),medium:c(),sessions:h(),users:h(),channelGroup:c()}),el=y({sessions:h(),sharePct:h(),sharePctDisplay:c()}),DO=y({organic:el,social:el,direct:el,ai:el,other:el});y({totalSessions:h(),totalOrganicSessions:h(),totalDirectSessions:h(),totalUsers:h().nullable(),topPages:k(y({landingPage:c(),sessions:h(),organicSessions:h(),directSessions:h(),users:h()})),aiReferrals:k(zO),aiReferralLandingPages:k(EO),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:k(TO),socialSessions:h(),socialUsers:h(),channelBreakdown:DO,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()});y({connected:P(),propertyId:c().nullable(),clientEmail:c().nullable(),authMethod:E(["service-account","oauth"]).nullable(),lastSyncedAt:c().nullable(),createdAt:c().nullable().optional(),updatedAt:c().nullable().optional()});y({synced:P(),rowCount:h().int().nonnegative(),aiReferralCount:h().int().nonnegative(),socialReferralCount:h().int().nonnegative(),days:h().int().nonnegative(),syncedAt:c(),measurement:y({acquisition:y({days:h().int().nonnegative(),status:E(["ready","error"]),rowCount:h().int().nonnegative(),error:c().optional()}),leads:y({days:h().int().nonnegative(),status:E(["ready","error","not-configured"]),rowCount:h().int().nonnegative(),attributionScope:E(["landing-page","channel"]).optional(),error:c().optional()})}),syncedComponents:k(c()).optional()});y({date:c(),source:c(),medium:c(),trafficClass:ed,landingPage:c(),sessions:h(),users:h(),sourceDimension:I0});const OO=y({source:c(),sessions:h(),paidSessions:h(),organicSessions:h()}),RO=y({date:c(),sessions:h(),paidSessions:h(),organicSessions:h(),bySource:k(OO)});y({days:k(RO),sources:k(c()),totalSessions:h(),totalPaidSessions:h(),totalOrganicSessions:h()});y({date:c(),source:c(),medium:c(),sessions:h(),users:h(),channelGroup:c()});y({date:c(),sessions:h(),organicSessions:h(),users:h(),usersSource:E(["deduplicated","landing-page-sum"])});y({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(),y({citedRate:h(),mentionRate:h(),cited:h().int().nonnegative(),mentioned:h().int().nonnegative(),total:h().int().nonnegative()})),createdAt:c(),status:E(["ready","no-data"]),reason:ae("no-runs-yet").optional()});const Bw=E(["claude","openai","gemini","zai","deepinfra"]),MO=y({id:Bw,label:c(),defaultModel:c(),configured:P(),keySource:E(["config","env"]).nullable()});y({providers:k(MO).default([]),defaultProvider:Bw.nullable()});const BO=E(["aero","user","compaction"]);BO.enum;const qw=128;y({key:c().min(1).max(qw),value:c().min(1)});y({key:c().min(1).max(qw)});const Ko=E(["commoncrawl","bing-webmaster"]);Ko.enum;const L0=E(["queued","downloading","querying","ready","failed"]);L0.enum;y({id:c(),release:c(),status:L0,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 qO=y({linkingDomain:c(),numHosts:h().int(),source:Ko}),IO=y({projectId:c(),release:c(),targetDomain:c(),totalLinkingDomains:h().int(),totalHosts:h().int(),top10HostsShare:c(),queriedAt:c(),source:Ko,excludedLinkingDomains:h().int().optional(),excludedHosts:h().int().optional()});y({source:Ko,summary:IO.nullable(),total:h().int(),rows:k(qO)});y({release:c(),totalLinkingDomains:h().int(),totalHosts:h().int(),top10HostsShare:c(),queriedAt:c(),source:Ko});const LO=y({source:Ko,connected:P(),hasData:P(),latestRelease:c().nullable(),totalLinkingDomains:h().int(),lastSyncedAt:c().nullable()});y({projectId:c(),targetDomain:c(),sources:k(LO),anyConnected:P(),anyData:P()});y({duckdbInstalled:P(),duckdbVersion:c().nullable().optional(),duckdbSpec:c(),pluginDir:c()});y({installed:P(),version:c(),path:c(),alreadyPresent:P()});y({release:c(),vertexUrl:c(),edgesUrl:c(),vertexBytes:h().int().nullable(),edgesBytes:h().int().nullable(),lastModified:c().nullable()});y({release:c(),syncStatus:L0.nullable(),bytes:h().int(),lastUsedAt:c().nullable()});const P0=E(["positive","caution","negative","neutral"]),Ei=y({label:c(),value:c(),delta:c(),tone:P0,description:c(),tooltip:c().optional(),trend:k(h()),progress:h().optional(),providerCoverage:c().optional()}),PO=Ei.extend({breakdown:y({projectMentionSnapshots:h().int().nonnegative(),competitorMentionSnapshots:h().int().nonnegative(),perCompetitor:k(y({domain:c(),mentionSnapshots:h().int().nonnegative(),shareOfCompetitiveTotal:h()})),snapshotsWithAnswerText:h().int().nonnegative(),snapshotsTotal:h().int().nonnegative()})}),Yp=y({gained:h().int().nonnegative(),lost:h().int().nonnegative(),tone:P0,hasPreviousRun:P(),gainedQueries:k(c()).optional(),lostQueries:k(c()).optional()}),$O=y({hasPreviousRun:P(),comparable:P(),querySetChanged:P(),previousRunAt:c().nullable(),currentQueryCount:h().int().nonnegative(),previousQueryCount:h().int().nonnegative(),comparableQueryCount:h().int().nonnegative(),addedQueryCount:h().int().nonnegative(),removedQueryCount:h().int().nonnegative(),addedQueries:k(c()),removedQueries:k(c())}),UO=y({id:c(),projectId:c(),runId:c().nullable(),type:E(["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:E(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),recommendation:y({action:c(),target:c().optional(),reason:c()}).optional(),cause:y({cause:c(),competitorDomain:c().optional(),details:c().optional()}).optional(),dismissed:P(),createdAt:c()}),VO=y({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(),y({citedRate:h(),mentionRate:h(),cited:h().int().nonnegative(),mentioned:h().int().nonnegative(),total:h().int().nonnegative()})),createdAt:c(),status:E(["ready","no-data"]),reason:ae("no-runs-yet").optional()});y({project:Ez,latestRun:CD,health:VO.nullable(),topInsights:k(UO),queryCounts:y({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:k(y({provider:c(),citedRate:h(),cited:h().int().nonnegative(),total:h().int().nonnegative()})),transitions:y({since:c().nullable(),gained:h().int().nonnegative(),lost:h().int().nonnegative(),emerging:h().int().nonnegative()}),scores:y({mention:Ei,visibility:Ei,mentionShare:PO,gapQueries:Ei,mentionGaps:Ei,indexCoverage:Ei,competitorPressure:Ei,runStatus:Ei}),movementSummary:Yp,citationMovement:Yp,mentionMovement:Yp,movementComparison:$O,competitors:k(y({id:c(),domain:c(),citationCount:h().int().nonnegative(),totalQueries:h().int().nonnegative(),pressureLabel:E(["None","Low","Moderate","High"]),citedQueries:k(c())})),providerScores:k(y({provider:c(),model:c().nullable(),score:h(),cited:h().int().nonnegative(),total:h().int().nonnegative(),trend:k(h()).optional()})),attentionItems:k(y({id:c(),tone:P0,title:c(),detail:c(),actionLabel:c(),href:c()})),runHistory:k(y({runId:c(),createdAt:c(),citedCount:h().int().nonnegative(),totalCount:h().int().nonnegative(),citationRate:h(),mentionedCount:h().int().nonnegative(),mentionRate:h(),status:c()})),suggestedQueries:y({rows:k(y({query:c(),impressions:h(),clicks:h(),avgPosition:h(),reason:c()})),totalCandidates:h().int().nonnegative(),skippedAlreadyTracked:h().int().nonnegative()}),dateRangeLabel:c(),contextLabel:c()});E(["snapshot","insight"]);const KO=y({kind:ae("snapshot"),id:c(),runId:c(),query:c(),provider:c(),model:c().nullable(),citationState:Fa,matchedField:E(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:c(),createdAt:c()}),GO=y({kind:ae("insight"),id:c(),runId:c().nullable(),type:E(["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:E(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),matchedField:E(["title","query","recommendation","cause"]),snippet:c(),dismissed:P(),createdAt:c()}),HO=gt("kind",[KO,GO]);y({query:c(),totalHits:h().int().nonnegative(),truncated:P(),hits:k(HO)});const Iw=E(["create","expand","refresh","add-schema"]);Iw.enum;function eK(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const Lw=E(["gsc","competitor-evidence","both"]);Lw.enum;const Pw=E(["high","medium","low"]);Pw.enum;const QO=E(["blog-post","comparison","listicle","how-to","guide","glossary"]);QO.enum;const $w=E(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);$w.enum;const $0=E(["ownable","ceded"]);$0.enum;const ZO=y({url:c(),gscImpressions:h().nonnegative(),gscClicks:h().nonnegative(),gscAvgPosition:h().nonnegative().nullable(),organicSessions:h().nonnegative()}),FO=y({domain:c(),url:c(),title:c(),citationCount:h().int().nonnegative()}),YO=y({demand:h(),competitor:h(),absence:h(),gapSeverity:h()}),XO=y({actionId:c(),state:$w,lastUpdated:c()}),Uw=y({targetRef:c(),query:c(),action:Iw,ourBestPage:ZO.nullable(),winningCompetitor:FO.nullable(),score:h(),scoreBreakdown:YO,drivers:k(c()),demandSource:Lw,actionConfidence:Pw,existingAction:XO.nullable(),winnabilityClass:$0,winnability:h().min(0).max(1).nullable()});y({targets:k(Uw),contextMetrics:y({totalAiReferralSessions:h().int().nonnegative(),latestRunId:c(),runTimestamp:c()})});const JO=y({targetRef:c(),addressedUrl:c().nullable(),note:c().nullable(),dismissedAt:c()});y({dismissals:k(JO)});y({targetRef:c().min(1),addressedUrl:c().url().optional(),note:c().max(500).optional()});y({targetRef:c(),promptVersion:c(),provider:c(),model:c(),responseText:c(),costMillicents:h().int().nonnegative(),generatedAt:c()});y({provider:c().optional(),model:c().optional(),forceRefresh:P().optional()});const WO=y({targetQuery:c().trim().min(1),winnabilityClass:$0,angle:c().trim().min(1),whyWinnable:c().trim().min(1),schemaHookup:c().trim().min(1),controllableSurfaceRationale:c().trim().min(1)});y({targetRef:c(),promptVersion:c(),provider:c(),model:c(),brief:WO,costMillicents:h().int().nonnegative(),generatedAt:c()});const eR=y({domain:c(),competitorType:Ju,hits:h().int().nonnegative(),updatedAt:c()});y({classifications:k(eR)});const tR=y({uri:c(),title:c(),domain:c(),isOurDomain:P(),isCompetitor:P(),citationCount:h().int().nonnegative(),providers:k(dt)}),Vw=y({query:c(),groundingSources:k(tR)});y({sources:k(Vw),latestRunId:c()});const Kw=y({query:c(),competitorDomains:k(c()),competitorCount:h().int().nonnegative(),missRate:h().min(0).max(1),lastSeenInRunId:c()});y({gaps:k(Kw),latestRunId:c()});const Gw=E(["ok","warn","fail","skipped"]);Gw.enum;const U0=E(["global","project"]);U0.enum;const Hw=E(["auth","config","providers","integrations","database","schedules","agent"]);Hw.enum;const nR=y({id:c(),category:Hw,scope:U0,title:c(),status:Gw,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(),Xn()).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.")});y({scope:U0,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:y({total:h().int().nonnegative(),ok:h().int().nonnegative(),warn:h().int().nonnegative(),fail:h().int().nonnegative(),skipped:h().int().nonnegative()}),checks:k(nR)});const aR=y({provider:c(),citationState:Fa,cited:P(),mentioned:P(),runId:c(),runCreatedAt:c()}),iR=y({queryId:c(),query:c(),providers:k(aR),citedCount:h().int().nonnegative(),mentionedCount:h().int().nonnegative(),totalProviders:h().int().nonnegative()}),sR=y({queryId:c(),query:c(),provider:c(),citingCompetitors:k(c()),runId:c(),runCreatedAt:c()}),oR=y({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()});y({summary:oR,byQuery:k(iR),competitorGaps:k(sR),status:E(["ready","no-data"]),reason:E(["no-runs-yet","no-queries"]).optional()});const tK=[7,14,30,90],nK=30;Ge([ae(7),ae(14),ae(30),ae(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const rR=E(["prompt","request-param","browser-geo","ignored"]),lR=y({label:c(),city:c(),region:c(),country:c(),otherConfiguredLabels:k(c())}),cR=y({provider:c(),treatment:rR,description:c()}),uR=y({generatedAt:c(),project:y({id:c(),name:c(),displayName:c(),canonicalDomain:c(),country:c(),language:c()}),location:lR.nullable(),providerLocationHandling:k(cR),periodStart:c().nullable(),periodEnd:c().nullable(),periodDays:h().int().positive()}),dR=y({citationRate:h(),citedQueryCount:h(),totalQueryCount:h(),mentionRate:h(),mentionedQueryCount:h(),trend:E(["up","down","flat","unknown"]),queryCount:h(),competitorCount:h(),providerCount:h(),gsc:y({clicks:h(),impressions:h(),ctr:h(),avgPosition:h(),periodStart:c(),periodEnd:c()}).nullable(),ga:y({sessions:h(),users:h(),periodStart:c(),periodEnd:c()}).nullable(),findings:k(y({title:c(),detail:c(),tone:E(["positive","caution","negative","neutral"])}))}),mR=y({citationState:E(["cited","not-cited","pending"]),answerMentioned:P().nullable(),model:c().nullable()}),pR=y({queries:k(c()),providers:k(c()),matrix:k(k(mR.nullable())),providerRates:k(y({provider:c(),citedCount:h(),mentionedCount:h(),totalCount:h(),citationRate:h(),mentionRate:h()}))}),fR=y({domain:c(),citationCount:h(),totalCount:h(),pressureLabel:E(["High","Moderate","Low","None"]),citedQueries:k(c()),sharePct:h(),theirCitedPages:k(y({url:c(),citedFor:k(c())}))}),hR=y({projectCitationCount:h(),competitors:k(fR)}),gR=y({domain:c(),mentionCount:h(),totalCount:h(),pressureLabel:E(["High","Moderate","Low","None"]),mentionedQueries:k(c()),sharePct:h()}),yR=y({projectMentionCount:h(),totalAnswerSnapshots:h(),competitors:k(gR)}),bR=y({category:c(),label:c(),count:h(),sharePct:h()}),vR=y({categories:k(bR),topDomains:k(y({domain:c(),count:h(),isCompetitor:P()}))}),kR=y({query:c(),clicks:h(),impressions:h(),ctr:h(),avgPosition:h(),category:E(["brand","lead-gen","industry","other"])}),wR=y({periodStart:c(),periodEnd:c(),totalClicks:h(),totalImpressions:h(),ctr:h(),avgPosition:h(),topQueries:k(kR),categoryBreakdown:k(y({category:E(["brand","lead-gen","industry","other"]),clicks:h(),impressions:h(),sharePct:h()})),trend:k(y({date:c(),clicks:h(),impressions:h()})),trackedButNoGsc:k(c()),gscButNotTracked:k(c())}),xR=y({totalSessions:h(),totalUsers:h(),totalOrganicSessions:h(),periodStart:c(),periodEnd:c(),topLandingPages:k(y({page:c(),sessions:h(),users:h(),organicSessions:h()})),channelBreakdown:k(y({channel:c(),sessions:h(),sharePct:h()}))}),SR=y({totalSessions:h(),organicSessions:h(),paidSessions:h(),channels:k(y({channelGroup:c(),sessions:h(),sharePct:h()})),topCampaigns:k(y({source:c(),medium:c(),sessions:h()}))}),jR=y({totalSessions:h(),paidSessions:h(),organicSessions:h(),totalUsers:h().optional(),paidUsers:h().optional(),organicUsers:h().optional(),bySource:k(y({source:c(),sessions:h(),users:h().optional(),paidSessions:h(),organicSessions:h(),sharePct:h()})),trend:k(y({date:c(),sessions:h()})),topLandingPages:k(y({page:c(),sessions:h(),users:h().optional()}))}),AR=y({windowStart:c(),windowEnd:c(),hasData:P(),verifiedCrawlerHits:y({current:h(),prior:h(),deltaPct:h().nullable()}),unverifiedCrawlerHits:y({current:h(),prior:h(),deltaPct:h().nullable()}),aiUserFetchHits:y({current:h(),prior:h(),deltaPct:h().nullable()}),referralArrivals:y({current:h(),prior:h(),deltaPct:h().nullable()}),referralArrivalsByClass:y({paid:y({current:h(),prior:h(),deltaPct:h().nullable()}),organic:y({current:h(),prior:h(),deltaPct:h().nullable()}),unclassified:y({current:h(),prior:h(),deltaPct:h().nullable()})}),referralArrivalsClassSummary:c(),byOperator:k(y({operator:c(),verifiedHits:h(),unverifiedHits:h(),userFetchHits:h(),referralArrivals:h(),deltaPct:h().nullable()})),topCrawledPaths:k(y({path:c(),verifiedHits:h(),distinctOperators:h()})),referralProducts:k(y({product:c(),arrivals:h(),distinctLandingPaths:h()})),dailyTrend:k(y({date:c(),verifiedCrawlerHits:h(),userFetchHits:h(),referralArrivals:h()})),topReferralLandingPaths:k(y({path:c(),arrivals:h(),distinctProducts:h()}))}),NR=y({provider:E(["google","bing"]).nullable(),total:h(),indexed:h(),notIndexed:h(),deindexed:h(),unknown:h(),indexedPct:h()}),_R=y({runId:c(),date:c(),citationRate:h(),citedQueryCount:h(),totalQueryCount:h(),mentionRate:h(),mentionedQueryCount:h(),providerRates:k(y({provider:c(),citationRate:h(),mentionRate:h()}))}),Mf=y({id:c(),type:E(["regression","gain","opportunity"]),severity:E(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),recommendation:c().nullable(),createdAt:c(),instanceCount:h()}),CR=y({horizon:E(["immediate","short-term","medium-term"]),title:c(),rationale:c()}),fo=y({current:h(),prior:h(),deltaAbs:h(),deltaPct:h().nullable(),direction:E(["up","down","flat"]),window:h().optional()}),zR=y({provider:c(),current:h(),prior:h(),deltaAbs:h(),direction:E(["up","down","flat"])}),ER=y({enoughHistory:P(),headline:c(),citationRate:fo.nullable(),mentionRate:fo.nullable(),citedQueryCount:fo.nullable(),mentionedQueryCount:fo.nullable(),gscClicksDelta:fo.nullable(),aiReferralsDelta:fo.nullable(),comparisonWindowDays:h().int().positive(),providerMovements:k(zR),wins:k(Mf),regressions:k(Mf)});E(["agency","client"]);const TR=E(["agency","client","both"]),DR=E(["immediate","short-term","medium-term"]),OR=E(["high","medium","low"]);E(["positive","caution","negative","neutral"]);const RR=E(["content","competitors","provider","search-demand","indexing","location","monitoring"]),V0=y({audience:TR,priority:h(),horizon:DR,category:RR,title:c(),action:c(),why:k(c()),evidence:k(c()),successMetric:c(),confidence:OR,targetRef:c().optional()}),MR=y({headline:c(),overview:c(),actionItems:k(V0),confidenceNotes:k(c())}),BR=y({title:c(),detail:c(),severity:E(["positive","caution","negative","neutral"]),evidence:k(c())}),qR=y({priorities:k(V0),diagnostics:k(BR)});function aK(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function iK(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function sK(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function oK(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 rK(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}y({meta:uR,executiveSummary:dR,citationScorecard:pR,competitorLandscape:hR,mentionLandscape:yR,aiSourceOrigin:vR,gsc:wR.nullable(),ga:xR.nullable(),socialReferrals:SR.nullable(),aiReferrals:jR.nullable(),serverActivity:AR.nullable(),indexingHealth:NR.nullable(),citationsTrend:k(_R),whatsChanged:ER,insights:k(Mf),recommendedNextSteps:k(CR),actionPlan:k(V0),clientSummary:MR,agencyDiagnostics:qR,contentOpportunities:k(Uw),contentGaps:k(Kw),groundingSources:k(Vw)});const IR=Ge([ae(60),ae(90)]),LR=E(["earliest","middle","prior","latest"]),yo=y({clicks:h().int().nonnegative(),impressions:h().int().nonnegative()}),Qw=y({name:LR,startDate:c(),endDate:c()}),PR=Qw.extend({totals:yo}),$R=Qw.extend({organicSessions:h().int().nonnegative()}),Xp=y({startDate:c(),endDate:c(),observedDays:h().int().nonnegative()}),au=y({verified:h().int().nonnegative(),claimedUnverified:h().int().nonnegative(),unknownAiLike:h().int().nonnegative()}),Cv=y({total:h().int().nonnegative(),paid:h().int().nonnegative(),organic:h().int().nonnegative(),unknown:h().int().nonnegative()});y({contractVersion:ae("organic-evidence/v1"),periodDays:IR,asOfDate:c().nullable(),coverage:y({gsc:P(),ga4:P(),server:P(),visibility:P()}),sourceCoverage:y({gsc:Xp.nullable(),ga4:Xp.nullable(),server:Xp.nullable(),visibility:y({completedAt:c(),ageDays:h().nonnegative()}).nullable()}),gsc:y({propertyTotals:yo,namedBrand:yo,namedNonBrand:yo,suppressedOrUnreportedResidual:yo,cohorts:k(PR)}).nullable(),ga4:y({organicSessions:h().int().nonnegative(),cohorts:k($R)}).nullable(),gaAiReferrals:y({paidSessions:h().int().nonnegative(),organicSessions:h().int().nonnegative()}).nullable(),server:y({crawlerHits:au,userFetchHits:au,referralSessions:Cv}).nullable(),visibility:y({runId:c(),completedAt:c(),ageDays:h().nonnegative(),answerPairs:h().int().nonnegative(),mentionedPairs:h().int().nonnegative(),citedPairs:h().int().nonnegative()}).nullable(),measurement:K9,pages:k(y({path:c(),gsc:yo,ga4OrganicSessions:h().int().nonnegative(),server:y({crawlerHits:au,userFetchHits:au,referralSessions:Cv})})),findings:k(y({tone:E(["positive","caution","neutral"]),title:c(),detail:c()})),limitations:k(y({code:c(),detail:c()}))});const UR=E(["claude","codex"]);UR.enum;const VR=E(["claude","codex","all"]);VR.enum;const Zw=y({content:h().int().nonnegative(),sitemap:h().int().nonnegative(),robots:h().int().nonnegative(),asset:h().int().nonnegative(),other:h().int().nonnegative()}),KR=E(["content","sitemap","robots","asset","other"]),K0=E(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);K0.enum;const GR=E(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);GR.enum;const HR=E(["raw-request","aggregate-bucket"]),QR=HR.enum,ZR=E(["observed","provider-aggregated","inferred"]),FR=ZR.enum,YR=y({type:c().nullable(),labels:Le(c(),c())}),XR=y({sourceType:K0,evidenceKind:ae(QR["raw-request"]),confidence:ae(FR.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:YR,providerLabels:Le(c(),c())});y({events:k(XR),rawEntryCount:h().int().nonnegative(),skippedEntryCount:h().int().nonnegative(),nextPageToken:c().optional(),filter:c()});const Fw=E(["connected","paused","error","archived"]),lK=Fw.enum,Yw=E(["oauth","service-account"]);Yw.enum;const JR=E(["verified","claimed_unverified","unknown_ai_like"]),cK=JR.enum;y({gcpProjectId:c().min(1),serviceName:c().nullable().optional(),location:c().nullable().optional(),authMode:Yw});y({baseUrl:c().url(),username:c().min(1)});const G0=E(["production","preview"]);G0.enum;y({projectId:c().min(1),teamId:c().min(1),environment:G0});const Xw=y({id:c(),projectId:c(),sourceType:K0,displayName:c(),status:Fw,lastSyncedAt:c().nullable(),lastCursor:c().nullable(),lastError:c().nullable(),skippedThroughAt:c().nullable(),archivedAt:c().nullable(),config:Le(c(),Xn()),createdAt:c(),updatedAt:c()});y({gcpProjectId:c().min(1),serviceName:c().min(1).optional(),location:c().min(1).optional(),displayName:c().min(1).optional(),keyJson:c().optional()});y({baseUrl:c().url(),username:c().min(1),applicationPassword:c().min(1),displayName:c().min(1).optional()});y({projectId:c().min(1),teamId:c().min(1),token:c().min(1),environment:G0.optional(),displayName:c().min(1).optional()});y({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()});y({days:h().int().positive().optional()});y({advanceToNow:ae(!0)});y({sourceId:c(),runId:c(),status:$i,windowStart:c(),windowEnd:c(),daysRequested:h().int().positive(),daysApplied:h().int().positive()});const WR=y({crawlerHits:h().int().nonnegative(),crawlerContentHits:h().int().nonnegative(),crawlerInfraHits:h().int().nonnegative(),crawlerSegments:Zw,aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),sampleCount:h().int().nonnegative()});y({sources:k(Xw)});const eM=Xw.extend({totals24h:WR,latestRun:y({runId:c(),status:$i,startedAt:c().nullable(),finishedAt:c().nullable(),error:c().nullable()}).nullable()});y({sources:k(eM)});const tM=E(["crawler","ai-user-fetch","ai-referral"]),H0=tM.enum,Jw=E(["hour","day"]);Jw.enum;const nM=y({bucket:c(),crawlerHits:h().int().nonnegative(),aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative()}),aM=y({kind:ae(H0.crawler),sourceId:c(),tsHour:c(),botId:c(),operator:c(),verificationStatus:c(),pathNormalized:c(),pathClass:KR,status:h().int(),hits:h().int().nonnegative()}),iM=y({kind:ae(H0["ai-user-fetch"]),sourceId:c(),tsHour:c(),botId:c(),operator:c(),verificationStatus:c(),pathNormalized:c(),status:h().int(),hits:h().int().nonnegative()}),sM=y({kind:ae(H0["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()}),oM=gt("kind",[aM,iM,sM]);y({windowStart:c(),windowEnd:c(),series:y({granularity:Jw,points:k(nM)}),totals:y({crawlerHits:h().int().nonnegative(),crawlerContentHits:h().int().nonnegative(),crawlerInfraHits:h().int().nonnegative(),crawlerSegments:Zw,aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),aiReferralPaidHits:h().int().nonnegative(),aiReferralOrganicHits:h().int().nonnegative(),aiReferralUnknownHits:h().int().nonnegative()}),eventRows:y({total:h().int().nonnegative(),returned:h().int().nonnegative(),truncated:P()}),events:k(oM)});const Ww=E(["queued","running","completed","partial","failed"]),uK=Ww.enum,ex=E(["queued","running","completed","failed"]),dK=ex.enum;y({queries:k(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:gn.nullable().optional(),idempotencyKey:c().trim().min(1).max(128).optional()}).superRefine((e,t)=>{e.model&&!e.provider&&t.addIssue({code:ht.custom,path:["provider"],message:"provider is required when model is supplied"})});const tx=y({id:c(),projectId:c(),status:Ww,provider:c(),requestedModel:c().nullable(),resolvedModel:c(),location:gn.nullable(),totalQueries:h().int(),completedQueries:h().int(),failedQueries:h().int(),error:c().nullable(),startedAt:c().nullable(),finishedAt:c().nullable(),createdAt:c()}),rM=y({id:c(),position:h().int(),query:c(),status:ex,requestedModel:c().nullable(),resolvedModel:c(),servedModel:c().nullable(),answerText:c().nullable(),groundingSources:k(Xu),citedDomains:k(c()),searchQueries:k(c()),namedCompetitors:k(c()).default([]),citedCompetitorDomains:k(c()).default([]),answerMentioned:P().nullable(),citationState:Fa.nullable(),error:c().nullable(),startedAt:c().nullable(),finishedAt:c().nullable(),createdAt:c()});tx.extend({queries:k(rM)});y({runs:k(tx)});y({apiKey:c().min(1)});y({id:c(),name:c(),status:c(),currencyCode:c().nullable(),timezone:c().nullable(),url:c().nullable(),reviewStatus:c().nullable(),integrityReviewStatus:c().nullable(),integrityDecision:c().nullable()});y({q:c().trim().min(1).max(200),limit:h().int().min(1).max(100).default(20)});const lM=y({id:c(),type:c(),canonicalName:c(),countryCode:c(),name:c(),regionCode:c().nullable()});y({count:h().int().nonnegative(),query:c(),results:k(lM)});const cM=y({id:c(),clientType:c().optional(),name:c().optional(),pixelId:c().optional()});y({pixels:k(cM)});const uM=y({id:c(),name:c().optional()}),dM=y({id:c(),name:c().optional(),eventType:c().optional(),customEventName:c().nullable().optional(),attributionWindowDays:h().int().positive().optional(),adAccountId:c().optional(),sourceIds:k(c()).optional(),sources:k(uM).optional(),archived:P().optional(),version:h().int().nonnegative().optional()});y({eventSettings:k(dM)});y({connected:P(),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:P().optional()});y({disconnected:P()});y({runId:c(),status:c()});const mM=y({type:c().nullable().optional(),title:c().nullable().optional(),body:c().nullable().optional(),targetUrl:c().nullable().optional(),fileId:c().nullable().optional()}),Cl=E(["impressions","clicks"]),pM=Cl.enum,zl=E(["impression","click"]);zl.enum;const fM=y({id:c(),adGroupId:c(),name:c(),status:c(),reviewStatus:c().nullable().optional(),creative:mM.nullable().optional(),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()}),hM=y({id:c(),campaignId:c(),name:c(),description:c().nullable().optional(),status:c(),billingEventType:Ge([zl,he()]).optional(),maxBidMicros:h().int().nullable().optional(),contextHints:k(c()).default([]),ads:k(fM).default([]),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()}),gM=y({id:c(),name:c(),description:c().nullable().optional(),status:c(),startTime:h().int().nullable().optional(),endTime:h().int().nullable().optional(),biddingType:Ge([Cl,he()]).optional(),dailySpendLimitMicros:h().int().nullable().optional(),lifetimeSpendLimitMicros:h().int().nullable().optional(),conversionEventSettingIds:k(c()).default([]),locationIds:k(c()).optional(),adGroups:k(hM).default([]),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()});y({campaigns:k(gM)});const nx=E(["campaign","ad_group"]);nx.enum;const yM=y({level:nx,entityId:c(),date:c(),impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int(),ctr:h().nullable(),cpcMicros:h().int().nullable(),inProgress:P()});y({rows:k(yM),currencyCode:c().nullable().optional()});const ax=y({from:c().nullable(),to:c().nullable(),inProgressDate:c().nullable()}),ix=y({impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int(),ctr:h().nullable(),cpcMicros:h().int().nullable()});y({connected:P(),displayName:c().nullable().optional(),currencyCode:c().nullable().optional(),lastSyncedAt:c().nullable().optional(),campaignCount:h().int(),adGroupCount:h().int(),adCount:h().int(),window:ax,totals:ix});const sx=E(["unavailable","partial","complete"]);sx.enum;const ox=E(["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"]);ox.enum;const rx=E(["unavailable","reported"]);rx.enum;const bM={storedSnapshot:"stored_ads_snapshot"},lx=E(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);lx.enum;const vM=y({id:c(),name:c(),status:c(),reviewStatus:c().nullable()}),kM=y({id:c(),name:c(),status:c(),billingEventType:Ge([zl,he()]),maxBidMicros:h().int().nullable(),contextHints:k(c()),ads:k(vM)}),wM=y({id:c(),name:c(),status:c(),biddingType:Ge([Cl,he()]),dailySpendLimitMicros:h().int().nullable(),lifetimeSpendLimitMicros:h().int().nullable(),conversionEventSettingIds:k(c()),adGroups:k(kM)});y({snapshot:y({status:sx,issue:Ge([ox,he()]),lastSyncedAt:c().nullable(),campaignCount:h().int().nonnegative(),adGroupCount:h().int().nonnegative(),adCount:h().int().nonnegative(),sourceSync:y({runId:c(),status:$i}).nullable()}),historicalCampaignRollups:y({status:rx,window:ax,totals:ix.nullable()}),storedConfiguration:y({basis:ae(bM.storedSnapshot),connection:y({status:c().nullable(),reviewStatus:c().nullable(),integrityReviewStatus:c().nullable(),integrityDecision:c().nullable(),conversionTrackingConfigured:P()}).nullable(),campaigns:k(wM)}),assessment:y({state:lx})});const Xa=c().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),vt=c().min(1).max(200),js=c().min(3).max(1e3).refine(e=>e.trim().length>0),Mo=h().int().min(946684800).max(4102444800),Bo=h().int().positive().max(Number.MAX_SAFE_INTEGER),Q0=c().regex(/^[a-f0-9]{64}$/),cx=k(vt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),ux=c().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),dx=E(["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"]);dx.enum;const mx=E(["pending","reconciling","succeeded","failed","unknown"]),No=mx.enum,px=E(["known_entity","create_fingerprint","manual_only"]);px.enum;const fx=E([No.pending,No.unknown,No.reconciling]);fx.enum;const hx=E(["active","paused","archived"]);hx.enum;const gx=E(["file","campaign","ad_group","ad"]);gx.enum;const yx=E(["campaign","ad_group","ad"]);yx.enum;const Z0=y({id:vt,expectedUpdatedAt:h().int().nonnegative()}).strict(),xM=Z0,Du=100,SM=Z0.extend({ads:k(xM).min(1).max(Du-1)}).strict(),jM=Z0.extend({adGroups:k(SM).min(1).max(Du-1)}).strict();function AM(e,t){return e<t?-1:e>t?1:0}function zv(e,t,i){for(let s=1;s<e.length;s+=1)if(AM(e[s-1].id,e[s].id)>=0){i.addIssue({code:"custom",path:t,message:"Activation manifest entities must be uniquely sorted by id"});return}}const bx=y({campaign:jM}).strict().superRefine((e,t)=>{1+e.campaign.adGroups.reduce((r,u)=>r+1+u.ads.length,0)>Du&&t.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${Du} entities`}),zv(e.campaign.adGroups,["campaign","adGroups"],t);const s=new Set;for(let r=0;r<e.campaign.adGroups.length;r+=1){const u=e.campaign.adGroups[r];zv(u.ads,["campaign","adGroups",r,"ads"],t);for(let d=0;d<u.ads.length;d+=1){const g=u.ads[d];s.has(g.id)&&t.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)}}}),vx=Q0,NM=E(["approved","executing","consumed","revoked","expired","unknown"]),Qa=NM.enum,_M=E(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Ui=_M.enum,CM=y({name:js.optional(),description:c().max(4e3).nullable().optional(),status:hx.optional(),startTime:Mo.nullable().optional(),endTime:Mo.nullable().optional(),lifetimeSpendLimitMicros:Bo.min(1e6).optional(),locationIds:k(vt).max(100).optional(),biddingType:Cl.optional(),conversionEventSettingIds:cx.optional(),campaignId:vt.optional(),contextHints:k(c().min(1).max(1e3)).max(100).optional(),maxBidMicros:Bo.max(1e8).optional(),billingEventType:zl.optional(),adGroupId:vt.optional(),creativeFingerprint:Q0.optional()}).strict();y({operationKey:Xa,imageUrl:ux});y({operationKey:Xa,name:js,description:c().max(4e3).optional(),startTime:Mo.optional(),endTime:Mo.optional(),lifetimeSpendLimitMicros:Bo.min(1e6),locationIds:k(vt).min(1).max(100),biddingType:Cl.optional(),conversionEventSettingIds:cx.optional()}).superRefine((e,t)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&t.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===pM.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&t.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});y({operationKey:Xa,campaignId:vt,name:js,description:c().max(4e3).optional(),contextHints:k(c().min(1).max(1e3)).min(1).max(100),maxBidMicros:Bo.max(1e8),billingEventType:zl.optional()});const kx=y({title:c().min(3).max(50),body:c().min(1).max(100),targetUrl:ux,fileId:vt});y({operationKey:Xa,adGroupId:vt,name:js,creative:kx});function F0(e){return Object.keys(e).some(t=>t!=="operationKey"&&t!=="expectedUpdatedAt")}y({operationKey:Xa,expectedUpdatedAt:h().int().nonnegative(),name:js.optional(),description:c().max(4e3).nullable().optional(),startTime:Mo.nullable().optional(),endTime:Mo.nullable().optional(),lifetimeSpendLimitMicros:Bo.min(1e6).optional(),locationIds:k(vt).min(1).max(100).optional()}).refine(F0,{message:"At least one campaign field must be updated"});y({operationKey:Xa,expectedUpdatedAt:h().int().nonnegative(),name:js.optional(),description:c().max(4e3).nullable().optional(),contextHints:k(c().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:Bo.max(1e8).optional()}).refine(F0,{message:"At least one ad group field must be updated"});y({operationKey:Xa,expectedUpdatedAt:h().int().nonnegative(),name:js.optional(),creative:kx.optional()}).refine(F0,{message:"At least one ad field must be updated"});y({operationKey:Xa});const td=y({id:c(),adAccountId:c().nullable(),operationKey:c(),kind:dx,state:mx,entityType:Ge([gx,he()]),entityId:c().nullable(),upstreamUpdatedAt:h().int().nullable(),errorCode:c().nullable(),errorMessage:c().nullable(),reconcileStrategy:Ge([px,he()]),reconcileParentId:vt.nullable(),reconcileFingerprint:Q0.nullable(),reconcileFields:CM.nullable(),reconcileAttempts:h().int().nonnegative(),lastReconciledAt:c().nullable(),createdAt:c(),updatedAt:c()});y({operation:td,replayed:P()});const ut=Dk({offset:!0}),Go={id:vt,projectId:vt,adAccountId:vt,manifestHash:vx,manifest:bx,executorApiKeyId:vt,approverApiKeyId:vt,expiresAt:ut,approvedAt:ut,createdAt:ut,updatedAt:ut,revocationRequestedAt:ut.nullable()},zM=y({...Go,state:ae(Qa.approved),operationId:he(),executionStartedAt:he(),consumedAt:he(),revokedAt:he(),expiredAt:he()}).strict(),EM=y({...Go,state:ae(Qa.executing),operationId:vt,executionStartedAt:ut,consumedAt:he(),revokedAt:he(),expiredAt:he()}).strict(),TM=y({...Go,state:ae(Qa.consumed),operationId:vt,executionStartedAt:ut,consumedAt:ut,revokedAt:he(),expiredAt:he()}).strict(),DM=y({...Go,state:ae(Qa.revoked),operationId:he(),executionStartedAt:he(),consumedAt:he(),revokedAt:ut,expiredAt:he()}).strict(),OM=y({...Go,state:ae(Qa.expired),operationId:he(),executionStartedAt:he(),consumedAt:he(),revokedAt:he(),expiredAt:ut}).strict(),RM=y({...Go,state:ae(Qa.unknown),operationId:vt,executionStartedAt:ut,consumedAt:he(),revokedAt:he(),expiredAt:he()}).strict(),wx=gt("state",[zM,EM,TM,DM,OM,RM]).superRefine((e,t)=>{e.executorApiKeyId===e.approverApiKeyId&&t.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Qa.executing&&e.state!==Qa.unknown&&e.state!==Qa.consumed&&t.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Vi={id:vt,operationId:vt,ordinal:h().int().nonnegative(),entityType:yx,entityId:vt,expectedUpdatedAt:h().int().nonnegative(),createdAt:ut,updatedAt:ut},El={errorCode:he(),errorMessage:he()},Y0={errorCode:c().min(1).max(100),errorMessage:c().min(1).max(500),remediation:c().min(1).max(500)},MM=y({...Vi,...El,state:ae(Ui.pending),providerUpdatedAt:he(),remediation:he(),startedAt:he(),finishedAt:he()}).strict(),BM=y({...Vi,...El,state:ae(Ui.executing),providerUpdatedAt:he(),remediation:he(),startedAt:ut,finishedAt:he()}).strict(),qM=y({...Vi,...El,state:ae(Ui.active),providerUpdatedAt:h().int().nonnegative(),remediation:he(),startedAt:ut,finishedAt:ut}).strict(),IM=y({...Vi,...Y0,state:ae(Ui.failed),providerUpdatedAt:Ge([h().int().nonnegative(),he()]),startedAt:ut,finishedAt:ut}).strict(),LM=y({...Vi,...El,state:ae(Ui.rollback_executing),providerUpdatedAt:h().int().nonnegative(),remediation:c().min(1).max(500),startedAt:ut,finishedAt:he()}).strict(),PM=y({...Vi,...El,state:ae(Ui.rolled_back),providerUpdatedAt:h().int().nonnegative(),remediation:c().min(1).max(500),startedAt:ut,finishedAt:ut}).strict(),$M=y({...Vi,...Y0,state:ae(Ui.rollback_failed),providerUpdatedAt:h().int().nonnegative(),startedAt:ut,finishedAt:ut}).strict(),UM=y({...Vi,...Y0,state:ae(Ui.unknown),providerUpdatedAt:Ge([h().int().nonnegative(),he()]),startedAt:ut,finishedAt:ut}).strict(),VM=gt("state",[MM,BM,qM,IM,LM,PM,$M,UM]),Bf={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},KM=E([Bf.exact,Bf.refreshSemanticallyUnchanged]);y({manifest:bx,executorApiKeyId:vt,expiresAt:ut,versionPolicy:KM.default(Bf.exact)}).strict();y({grant:wx}).strict();y({}).strict();y({operationKey:Xa,grantId:vt,manifestHash:vx}).strict();y({grant:wx,operation:td,steps:k(VM)}).strict();const GM=[No.pending,No.unknown,No.reconciling];function HM(e){if(e===void 0||e==="")return GM;if(Array.isArray(e)){const t=[];for(const i of e)typeof i=="string"?t.push(...i.split(",")):t.push(i);return t}return typeof e=="string"?e.split(",").filter(Boolean):e}y({state:O9(HM,k(fx).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Lk().int().min(1).max(200).default(100),cursor:c().min(1).max(1e3).optional()});y({operations:k(td),count:h().int().nonnegative(),nextCursor:c().nullable()});y({}).strict();y({operation:td,resolved:P()});y({campaignId:c().min(1).max(200).optional(),lookbackDays:Lk().int().min(1).max(30).default(7)});const xx=E(["campaign","ad_group","ad"]);xx.enum;const Sx=E(["both","live-only","stored-only"]);Sx.enum;const QM=ae("live-provider-read"),ZM=y({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()}),Ev=y({impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int()}),FM=y({date:c(),live:Ev.nullable(),stored:Ev.nullable(),drifted:P()}),YM=y({field:c(),live:c().nullable(),stored:c().nullable()}),XM=y({name:c().nullable(),status:c(),reviewStatus:c().nullable(),mode:c().nullable(),updatedAt:h().nullable()}),JM=y({name:c(),status:c(),reviewStatus:c().nullable(),upstreamUpdatedAt:h().nullable(),syncedAt:c()}),WM=y({entityType:xx,id:c(),parentId:c().nullable(),presence:Sx,live:XM.nullable(),stored:JM.nullable(),fieldDeltas:k(YM),liveMetrics:k(ZM).nullable(),metricDeltas:k(FM).nullable(),drifted:P()}),eB=y({surface:c(),entityId:c().nullable(),upstreamStatus:h().int().nullable()});y({basis:QM,fetchedAt:c(),adAccountId:c(),storedSnapshotSyncedAt:c().nullable(),metricsWindow:y({lookbackDays:h().int().positive()}),bounds:y({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:P()}),entities:k(WM),drift:y({entitiesCompared:h().int().nonnegative(),driftedEntities:h().int().nonnegative(),statusDrifted:h().int().nonnegative(),metricsDrifted:h().int().nonnegative()}),errors:k(eB)});const jx=E(["admin","viewer"]),tB=/^[a-z\d][\w.-]{0,63}$/i,nB=c().regex(tB,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Tv=12,aB=c().min(Tv,`A password must be at least ${Tv} characters.`),Ax=y({id:c(),name:c(),role:jx,createdAt:c(),lastLoginAt:c().nullable()});y({users:k(Ax)});y({name:nB,password:aB,role:jx});y({name:c().min(1),password:c().min(1)});y({authRequired:P(),user:Ax.pick({name:!0,role:!0}).nullable()});const Ct=1,Jp=E(["system","project","queries","competitors","run"]),Wp=E(["0","1","2-3","4-5","6-10","11+"]);function xa(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 Dv=E(["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"]),iu=y({eventId:c().uuid(),flowVersion:ae(Ct),onboardingSessionId:c().uuid()});gt("event",[iu.extend({event:ae("onboarding.started"),step:Jp,resumed:P()}).strict(),iu.extend({event:ae("onboarding.step_completed"),step:Jp,method:E(["existing","inline","manual","generated","skipped","automatic"]),countBucket:Wp.optional()}).strict(),iu.extend({event:ae("onboarding.blocked"),step:Jp,action:E(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Dv}).strict(),iu.extend({event:ae("run.requested"),origin:ae("dashboard_setup"),result:E(["queued","rejected"]),providerCountBucket:Wp,queryCountBucket:Wp,reasonCode:Dv.optional()}).strict()]);y({accepted:P()});var iB=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(iB||{});const mK={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},pK={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},sB=T0;function oB(e){const t=[];if(e.message&&t.push(e.message),e.providers)for(const[i,s]of Object.entries(e.providers)){const r=`[${i}] ${s.message}`;s.raw!==void 0?t.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(t===d[0]){u(d);continue}if(e.external){const v=e.external.registry.get(d[0])?.id;if(t!==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 Ek(e,t){const i=e.seen.get(t);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 b=g.def??g.schema,v={...b},x=g.ref;if(g.ref=null,x){s(x);const j=e.seen.get(x),_=j.schema;if(_.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(b.allOf=b.allOf??[],b.allOf.push(_)):Object.assign(b,_),Object.assign(b,v),d._zod.parent===x)for(const N in b)N==="$ref"||N==="allOf"||N in v||delete b[N];if(_.$ref&&j.def)for(const N in b)N==="$ref"||N==="allOf"||N in j.def&&JSON.stringify(b[N])===JSON.stringify(j.def[N])&&delete b[N]}const S=d._zod.parent;if(S&&S!==x){s(S);const j=e.seen.get(S);if(j?.schema.$ref&&(b.$ref=j.schema.$ref,j.def))for(const _ in b)_==="$ref"||_==="allOf"||_ in j.def&&JSON.stringify(b[_])===JSON.stringify(j.def[_])&&delete b[_]}e.override({zodSchema:d,jsonSchema:b,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(t)?.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:{...t["~standard"],jsonSchema:{input:Su(t,"input",e.processors),output:Su(t,"output",e.processors)}},enumerable:!1,writable:!1}),d}catch{throw new Error("Error converting schema to JSON.")}}function cn(e,t){const i=t??{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 cn(s.element,i);if(s.type==="set")return cn(s.valueType,i);if(s.type==="lazy")return cn(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 cn(s.innerType,i);if(s.type==="intersection")return cn(s.left,i)||cn(s.right,i);if(s.type==="record"||s.type==="map")return cn(s.keyType,i)||cn(s.valueType,i);if(s.type==="pipe")return cn(s.in,i)||cn(s.out,i);if(s.type==="object"){for(const r in s.shape)if(cn(s.shape[r],i))return!0;return!1}if(s.type==="union"){for(const r of s.options)if(cn(r,i))return!0;return!1}if(s.type==="tuple"){for(const r of s.items)if(cn(r,i))return!0;return!!(s.rest&&cn(s.rest,i))}return!1}const Y7=(e,t={})=>i=>{const s=Ck({...i,processors:t});return Pt(e,s),zk(s,e),Ek(s,e)},Su=(e,t,i={})=>s=>{const{libraryOptions:r,target:u}=s??{},d=Ck({...r??{},target:u,io:t,processors:i});return Pt(e,d),zk(d,e),Ek(d,e)},X7={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},J7=(e,t,i,s)=>{const r=i;r.type="string";const{minimum:u,maximum:d,format:g,patterns:b,contentEncoding:v}=e._zod.bag;if(typeof u=="number"&&(r.minLength=u),typeof d=="number"&&(r.maxLength=d),g&&(r.format=X7[g]??g,r.format===""&&delete r.format,g==="time"&&delete r.format),v&&(r.contentEncoding=v),b&&b.size>0){const x=[...b];x.length===1?r.pattern=x[0].source:x.length>1&&(r.allOf=[...x.map(S=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:S.source}))])}},W7=(e,t,i,s)=>{const r=i,{minimum:u,maximum:d,format:g,multipleOf:b,exclusiveMaximum:v,exclusiveMinimum:x}=e._zod.bag;typeof g=="string"&&g.includes("int")?r.type="integer":r.type="number",typeof x=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(r.minimum=x,r.exclusiveMinimum=!0):r.exclusiveMinimum=x),typeof u=="number"&&(r.minimum=u,typeof x=="number"&&t.target!=="draft-04"&&(x>=u?delete r.minimum:delete r.exclusiveMinimum)),typeof v=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(r.maximum=v,r.exclusiveMaximum=!0):r.exclusiveMaximum=v),typeof d=="number"&&(r.maximum=d,typeof v=="number"&&t.target!=="draft-04"&&(v<=d?delete r.maximum:delete r.exclusiveMaximum)),typeof b=="number"&&(r.multipleOf=b)},eC=(e,t,i,s)=>{i.type="boolean"},tC=(e,t,i,s)=>{t.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},nC=(e,t,i,s)=>{i.not={}},aC=(e,t,i,s)=>{},iC=(e,t,i,s)=>{const r=e._zod.def,u=rk(r.entries);u.every(d=>typeof d=="number")&&(i.type="number"),u.every(d=>typeof d=="string")&&(i.type="string"),i.enum=u},sC=(e,t,i,s)=>{const r=e._zod.def,u=[];for(const d of r.values)if(d===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof d=="bigint"){if(t.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,t.target==="draft-04"||t.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},oC=(e,t,i,s)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},rC=(e,t,i,s)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},lC=(e,t,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=Pt(u.element,t,{...s,path:[...s.path,"items"]})},cC=(e,t,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]=Pt(d[v],t,{...s,path:[...s.path,"properties",v]});const g=new Set(Object.keys(d)),b=new Set([...g].filter(v=>{const x=u.shape[v]._zod;return t.io==="input"?x.optin===void 0:x.optout===void 0}));b.size>0&&(r.required=Array.from(b)),u.catchall?._zod.def.type==="never"?r.additionalProperties=!1:u.catchall?u.catchall&&(r.additionalProperties=Pt(u.catchall,t,{...s,path:[...s.path,"additionalProperties"]})):t.io==="output"&&(r.additionalProperties=!1)},uC=(e,t,i,s)=>{const r=e._zod.def,u=r.inclusive===!1,d=r.options.map((g,b)=>Pt(g,t,{...s,path:[...s.path,u?"oneOf":"anyOf",b]}));u?i.oneOf=d:i.anyOf=d},dC=(e,t,i,s)=>{const r=e._zod.def,u=Pt(r.left,t,{...s,path:[...s.path,"allOf",0]}),d=Pt(r.right,t,{...s,path:[...s.path,"allOf",1]}),g=v=>"allOf"in v&&Object.keys(v).length===1,b=[...g(u)?u.allOf:[u],...g(d)?d.allOf:[d]];i.allOf=b},mC=(e,t,i,s)=>{const r=i,u=e._zod.def;r.type="object";const d=u.keyType,b=d._zod.bag?.patterns;if(u.mode==="loose"&&b&&b.size>0){const x=Pt(u.valueType,t,{...s,path:[...s.path,"patternProperties","*"]});r.patternProperties={};for(const S of b)r.patternProperties[S.source]=x}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(r.propertyNames=Pt(u.keyType,t,{...s,path:[...s.path,"propertyNames"]})),r.additionalProperties=Pt(u.valueType,t,{...s,path:[...s.path,"additionalProperties"]});const v=d._zod.values;if(v){const x=[...v].filter(S=>typeof S=="string"||typeof S=="number");x.length>0&&(r.required=x)}},pC=(e,t,i,s)=>{const r=e._zod.def,u=Pt(r.innerType,t,s),d=t.seen.get(e);t.target==="openapi-3.0"?(d.ref=r.innerType,i.nullable=!0):i.anyOf=[u,{type:"null"}]},fC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType},hC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType,i.default=JSON.parse(JSON.stringify(r.defaultValue))},gC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType,t.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(r.defaultValue)))},yC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.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},bC=(e,t,i,s)=>{const r=e._zod.def,u=t.io==="input"?r.in._zod.def.type==="transform"?r.out:r.in:r.out;Pt(u,t,s);const d=t.seen.get(e);d.ref=u},vC=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType,i.readOnly=!0},Tk=(e,t,i,s)=>{const r=e._zod.def;Pt(r.innerType,t,s);const u=t.seen.get(e);u.ref=r.innerType},kC=J("ZodISODateTime",(e,t)=>{y_.init(e,t),jt.init(e,t)});function Dk(e){return j7(kC,e)}const wC=J("ZodISODate",(e,t)=>{b_.init(e,t),jt.init(e,t)});function Ok(e){return A7(wC,e)}const xC=J("ZodISOTime",(e,t)=>{v_.init(e,t),jt.init(e,t)});function SC(e){return N7(xC,e)}const jC=J("ZodISODuration",(e,t)=>{k_.init(e,t),jt.init(e,t)});function AC(e){return _7(jC,e)}const NC=(e,t)=>{dk.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>c8(e,i)},flatten:{value:i=>l8(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,bf,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,bf,2)}},isEmpty:{get(){return e.issues.length===0}}})},Wn=J("ZodError",NC,{Parent:Error}),_C=o0(Wn),CC=r0(Wn),zC=Pu(Wn),EC=$u(Wn),TC=m8(Wn),DC=p8(Wn),OC=f8(Wn),RC=h8(Wn),MC=g8(Wn),BC=y8(Wn),qC=b8(Wn),IC=v8(Wn),xt=J("ZodType",(e,t)=>(kt.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:Su(e,"input"),output:Su(e,"output")}}),e.toJSONSchema=Y7(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...i)=>e.clone(Ii(t,{checks:[...t.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)=>Li(e,i,s),e.brand=()=>e,e.register=((i,s)=>(i.add(e,s),e)),e.parse=(i,s)=>_C(e,i,s,{callee:e.parse}),e.safeParse=(i,s)=>zC(e,i,s),e.parseAsync=async(i,s)=>CC(e,i,s,{callee:e.parseAsync}),e.safeParseAsync=async(i,s)=>EC(e,i,s),e.spa=e.safeParseAsync,e.encode=(i,s)=>TC(e,i,s),e.decode=(i,s)=>DC(e,i,s),e.encodeAsync=async(i,s)=>OC(e,i,s),e.decodeAsync=async(i,s)=>RC(e,i,s),e.safeEncode=(i,s)=>MC(e,i,s),e.safeDecode=(i,s)=>BC(e,i,s),e.safeEncodeAsync=async(i,s)=>qC(e,i,s),e.safeDecodeAsync=async(i,s)=>IC(e,i,s),e.refine=(i,s)=>e.check(T9(i,s)),e.superRefine=i=>e.check(D9(i)),e.overwrite=i=>e.check(Uo(i)),e.optional=()=>Kb(e),e.exactOptional=()=>b9(e),e.nullable=()=>Gb(e),e.nullish=()=>Kb(Gb(e)),e.nonoptional=i=>j9(e,i),e.array=()=>k(e),e.or=i=>Ge([e,i]),e.and=i=>p9(e,i),e.transform=i=>wf(e,Bk(i)),e.default=i=>w9(e,i),e.prefault=i=>S9(e,i),e.catch=i=>N9(e,i),e.pipe=i=>wf(e,i),e.readonly=()=>z9(e),e.describe=i=>{const s=e.clone();return sl.add(s,{description:i}),s},Object.defineProperty(e,"description",{get(){return sl.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return sl.get(e);const s=e.clone();return sl.add(s,i[0]),s},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),Rk=J("_ZodString",(e,t)=>{l0.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(s,r,u)=>J7(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(M7(...s)),e.includes=(...s)=>e.check(I7(...s)),e.startsWith=(...s)=>e.check(L7(...s)),e.endsWith=(...s)=>e.check(P7(...s)),e.min=(...s)=>e.check(xu(...s)),e.max=(...s)=>e.check(Nk(...s)),e.length=(...s)=>e.check(_k(...s)),e.nonempty=(...s)=>e.check(xu(1,...s)),e.lowercase=s=>e.check(B7(s)),e.uppercase=s=>e.check(q7(s)),e.trim=()=>e.check(U7()),e.normalize=(...s)=>e.check($7(...s)),e.toLowerCase=()=>e.check(V7()),e.toUpperCase=()=>e.check(K7()),e.slugify=()=>e.check(G7())}),LC=J("ZodString",(e,t)=>{l0.init(e,t),Rk.init(e,t),e.email=i=>e.check(a7(PC,i)),e.url=i=>e.check(l7($C,i)),e.jwt=i=>e.check(S7(n9,i)),e.emoji=i=>e.check(c7(UC,i)),e.guid=i=>e.check(Ib(Ub,i)),e.uuid=i=>e.check(i7(tu,i)),e.uuidv4=i=>e.check(s7(tu,i)),e.uuidv6=i=>e.check(o7(tu,i)),e.uuidv7=i=>e.check(r7(tu,i)),e.nanoid=i=>e.check(u7(VC,i)),e.guid=i=>e.check(Ib(Ub,i)),e.cuid=i=>e.check(d7(KC,i)),e.cuid2=i=>e.check(m7(GC,i)),e.ulid=i=>e.check(p7(HC,i)),e.base64=i=>e.check(k7(WC,i)),e.base64url=i=>e.check(w7(e9,i)),e.xid=i=>e.check(f7(QC,i)),e.ksuid=i=>e.check(h7(ZC,i)),e.ipv4=i=>e.check(g7(FC,i)),e.ipv6=i=>e.check(y7(YC,i)),e.cidrv4=i=>e.check(b7(XC,i)),e.cidrv6=i=>e.check(v7(JC,i)),e.e164=i=>e.check(x7(t9,i)),e.datetime=i=>e.check(Dk(i)),e.date=i=>e.check(Ok(i)),e.time=i=>e.check(SC(i)),e.duration=i=>e.check(AC(i))});function c(e){return n7(LC,e)}const jt=J("ZodStringFormat",(e,t)=>{wt.init(e,t),Rk.init(e,t)}),PC=J("ZodEmail",(e,t)=>{l_.init(e,t),jt.init(e,t)}),Ub=J("ZodGUID",(e,t)=>{o_.init(e,t),jt.init(e,t)}),tu=J("ZodUUID",(e,t)=>{r_.init(e,t),jt.init(e,t)}),$C=J("ZodURL",(e,t)=>{c_.init(e,t),jt.init(e,t)}),UC=J("ZodEmoji",(e,t)=>{u_.init(e,t),jt.init(e,t)}),VC=J("ZodNanoID",(e,t)=>{d_.init(e,t),jt.init(e,t)}),KC=J("ZodCUID",(e,t)=>{m_.init(e,t),jt.init(e,t)}),GC=J("ZodCUID2",(e,t)=>{p_.init(e,t),jt.init(e,t)}),HC=J("ZodULID",(e,t)=>{f_.init(e,t),jt.init(e,t)}),QC=J("ZodXID",(e,t)=>{h_.init(e,t),jt.init(e,t)}),ZC=J("ZodKSUID",(e,t)=>{g_.init(e,t),jt.init(e,t)}),FC=J("ZodIPv4",(e,t)=>{w_.init(e,t),jt.init(e,t)}),YC=J("ZodIPv6",(e,t)=>{x_.init(e,t),jt.init(e,t)}),XC=J("ZodCIDRv4",(e,t)=>{S_.init(e,t),jt.init(e,t)}),JC=J("ZodCIDRv6",(e,t)=>{j_.init(e,t),jt.init(e,t)}),WC=J("ZodBase64",(e,t)=>{A_.init(e,t),jt.init(e,t)}),e9=J("ZodBase64URL",(e,t)=>{__.init(e,t),jt.init(e,t)}),t9=J("ZodE164",(e,t)=>{C_.init(e,t),jt.init(e,t)}),n9=J("ZodJWT",(e,t)=>{E_.init(e,t),jt.init(e,t)}),c0=J("ZodNumber",(e,t)=>{wk.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(s,r,u)=>W7(e,s,r),e.gt=(s,r)=>e.check(Pb(s,r)),e.gte=(s,r)=>e.check(Lp(s,r)),e.min=(s,r)=>e.check(Lp(s,r)),e.lt=(s,r)=>e.check(Lb(s,r)),e.lte=(s,r)=>e.check(Ip(s,r)),e.max=(s,r)=>e.check(Ip(s,r)),e.int=s=>e.check(Vb(s)),e.safe=s=>e.check(Vb(s)),e.positive=s=>e.check(Pb(0,s)),e.nonnegative=s=>e.check(Lp(0,s)),e.negative=s=>e.check(Lb(0,s)),e.nonpositive=s=>e.check(Ip(0,s)),e.multipleOf=(s,r)=>e.check($b(s,r)),e.step=(s,r)=>e.check($b(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 C7(c0,e)}const a9=J("ZodNumberFormat",(e,t)=>{T_.init(e,t),c0.init(e,t)});function Vb(e){return E7(a9,e)}const i9=J("ZodBoolean",(e,t)=>{D_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>eC(e,i,s)});function P(e){return T7(i9,e)}const s9=J("ZodNull",(e,t)=>{O_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>tC(e,i,s)});function he(e){return D7(s9,e)}const o9=J("ZodUnknown",(e,t)=>{R_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>aC()});function Xn(){return O7(o9)}const r9=J("ZodNever",(e,t)=>{M_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>nC(e,i,s)});function l9(e){return R7(r9,e)}const c9=J("ZodArray",(e,t)=>{B_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>lC(e,i,s,r),e.element=t.element,e.min=(i,s)=>e.check(xu(i,s)),e.nonempty=i=>e.check(xu(1,i)),e.max=(i,s)=>e.check(Nk(i,s)),e.length=(i,s)=>e.check(_k(i,s)),e.unwrap=()=>e.element});function k(e,t){return H7(c9,e,t)}const u9=J("ZodObject",(e,t)=>{I_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>cC(e,i,s,r),et(e,"shape",()=>t.shape),e.keyof=()=>E(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Xn()}),e.loose=()=>e.clone({...e._zod.def,catchall:Xn()}),e.strict=()=>e.clone({...e._zod.def,catchall:l9()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>a8(e,i),e.safeExtend=i=>i8(e,i),e.merge=i=>s8(e,i),e.pick=i=>t8(e,i),e.omit=i=>n8(e,i),e.partial=(...i)=>o8(qk,e,i[0]),e.required=(...i)=>r8(Ik,e,i[0])});function y(e,t){const i={type:"object",shape:e??{},...Se(t)};return new u9(i)}const Mk=J("ZodUnion",(e,t)=>{jk.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>uC(e,i,s,r),e.options=t.options});function Ge(e,t){return new Mk({type:"union",options:e,...Se(t)})}const d9=J("ZodDiscriminatedUnion",(e,t)=>{Mk.init(e,t),L_.init(e,t)});function gt(e,t,i){return new d9({type:"union",options:t,discriminator:e,...Se(i)})}const m9=J("ZodIntersection",(e,t)=>{P_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>dC(e,i,s,r)});function p9(e,t){return new m9({type:"intersection",left:e,right:t})}const f9=J("ZodRecord",(e,t)=>{$_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>mC(e,i,s,r),e.keyType=t.keyType,e.valueType=t.valueType});function Le(e,t,i){return new f9({type:"record",keyType:e,valueType:t,...Se(i)})}const kf=J("ZodEnum",(e,t)=>{U_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(s,r,u)=>iC(e,s,r),e.enum=t.entries,e.options=Object.values(t.entries);const i=new Set(Object.keys(t.entries));e.extract=(s,r)=>{const u={};for(const d of s)if(i.has(d))u[d]=t.entries[d];else throw new Error(`Key ${d} not found in enum`);return new kf({...t,checks:[],...Se(r),entries:u})},e.exclude=(s,r)=>{const u={...t.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 kf({...t,checks:[],...Se(r),entries:u})}});function E(e,t){const i=Array.isArray(e)?Object.fromEntries(e.map(s=>[s,s])):e;return new kf({type:"enum",entries:i,...Se(t)})}const h9=J("ZodLiteral",(e,t)=>{V_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>sC(e,i,s),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function ae(e,t){return new h9({type:"literal",values:Array.isArray(e)?e:[e],...Se(t)})}const g9=J("ZodTransform",(e,t)=>{K_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>rC(e,i),e._zod.parse=(i,s)=>{if(s.direction==="backward")throw new sk(e.constructor.name);i.addIssue=u=>{if(typeof u=="string")i.issues.push(gl(u,i.value,t));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(gl(d))}};const r=t.transform(i.value,i);return r instanceof Promise?r.then(u=>(i.value=u,i)):(i.value=r,i)}});function Bk(e){return new g9({type:"transform",transform:e})}const qk=J("ZodOptional",(e,t)=>{Ak.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>Tk(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function Kb(e){return new qk({type:"optional",innerType:e})}const y9=J("ZodExactOptional",(e,t)=>{G_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>Tk(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function b9(e){return new y9({type:"optional",innerType:e})}const v9=J("ZodNullable",(e,t)=>{H_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>pC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function Gb(e){return new v9({type:"nullable",innerType:e})}const k9=J("ZodDefault",(e,t)=>{Q_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>hC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function w9(e,t){return new k9({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():ck(t)}})}const x9=J("ZodPrefault",(e,t)=>{Z_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>gC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function S9(e,t){return new x9({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():ck(t)}})}const Ik=J("ZodNonOptional",(e,t)=>{F_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>fC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function j9(e,t){return new Ik({type:"nonoptional",innerType:e,...Se(t)})}const A9=J("ZodCatch",(e,t)=>{Y_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>yC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function N9(e,t){return new A9({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const _9=J("ZodPipe",(e,t)=>{X_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>bC(e,i,s,r),e.in=t.in,e.out=t.out});function wf(e,t){return new _9({type:"pipe",in:e,out:t})}const C9=J("ZodReadonly",(e,t)=>{J_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>vC(e,i,s,r),e.unwrap=()=>e._zod.def.innerType});function z9(e){return new C9({type:"readonly",innerType:e})}const E9=J("ZodCustom",(e,t)=>{W_.init(e,t),xt.init(e,t),e._zod.processJSONSchema=(i,s,r)=>oC(e,i)});function T9(e,t={}){return Q7(E9,e,t)}function D9(e){return Z7(e)}function O9(e,t){return wf(Bk(e),t)}const ht={custom:"custom"};function Lk(e){return z7(c0,e)}const Pk=y({id:c(),name:c(),keyPrefix:c(),scopes:k(c()),projectId:c().nullable(),projectName:c().nullable(),readOnly:P(),createdAt:c(),lastUsedAt:c().nullable(),revokedAt:c().nullable()});y({keys:k(Pk)});y({name:c().min(1).max(100),scopes:k(c()).min(1).optional(),projectId:c().optional()});Pk.extend({key:c()});const R9=y({maxConcurrency:h().int().positive(),maxRequestsPerMinute:h().int().positive(),maxRequestsPerDay:h().int().positive()}),dt=c().min(1),u0=Le(c(),c().trim().min(1));c().min(1);const gn=y({label:c().min(1),city:c().min(1),region:c().min(1),country:c().length(2),timezone:c().optional()}),d0=E(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);y({id:c(),projectId:c(),channel:ae("webhook"),url:c().url(),urlDisplay:c(),urlHost:c(),events:k(d0),enabled:P().default(!0),source:c().optional(),webhookSecret:c().optional(),createdAt:c(),updatedAt:c()});y({channel:ae("webhook"),url:c().url(),events:k(d0).min(1),source:c().optional()});function Pp(e,t=!1){const i=new Set,s=[];for(const r of e){const u=t?r.toLowerCase():r;i.has(u)||(i.add(u),s.push(r))}return s}function Hb(e){try{const t=e.includes("://"),i=new URL(t?e:`https://${e}`);if(!t&&(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 M9=c().trim().min(1).refine(e=>Hb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Hb(e)??e),B9=c().trim().min(1),q9=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"}),m0=y({marketingHosts:k(M9).overwrite(e=>Pp(e,!0)),brandTerms:k(B9).overwrite(e=>Pp(e,!0)),leadEventNames:k(q9).overwrite(e=>Pp(e))});function I9(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const $p=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),$k=()=>I9(),Qb=E(["never-synced","ready","error"]),L9=E(["landing-page","channel"]),P9=E(["30d","60d","90d"]),$9=E(["marketing","all"]),rl=Ok(),Sl=y({label:E(["earliest","middle","previous","latest"]),startDate:rl,endDate:rl}),Up=Sl.extend({sessions:h().int().nonnegative()}),Zb=Sl.extend({eventCount:h().int().nonnegative()}),Fb=Sl.extend({clicks:h().int().nonnegative(),impressions:h().int().nonnegative()}),U9=Sl.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()}),V9=Sl.extend({sessions:h().int().nonnegative(),engagementRate:h().min(0).max(1).nullable(),dailyTotalUsers:h().int().nonnegative().nullable(),dailyNewUsers:h().int().nonnegative().nullable(),metricsAvailable:P(),daysInPeriod:h().int().nonnegative(),daysWithEngagementRate:h().int().nonnegative(),daysWithUserSplit:h().int().nonnegative()}),K9=y({window:P9,bucketDays:ae(30),filters:y({hostScope:$9,marketingHosts:k(c()),pathPrefix:c().nullable(),brandTerms:k(c()),queryMixScope:ae("property")}),acquisition:y({status:Qb,error:c().nullable(),syncedAt:c().datetime().nullable(),periods:k(Up),channels:k(y({channelGroup:c(),periods:k(Up)})),pages:k(y({hostName:c(),landingPage:c(),periods:k(Up)}))}),leads:y({status:Qb,error:c().nullable(),syncedAt:c().datetime().nullable(),attributionScope:L9.nullable(),hostAndPathFiltersApplied:P(),periods:k(Zb),channels:k(y({channelGroup:c(),periods:k(Zb)}))}),engagement:y({status:E(["ready","unavailable"]),availableFromDate:rl.nullable(),latestDate:rl.nullable(),periods:k(V9)}),searchDemand:y({status:E(["ready","unavailable"]),periods:k(U9),queries:k(y({query:c(),classification:E(["branded","non-branded"]),periods:k(Fb)})),pages:k(y({hostName:c(),landingPage:c(),periods:k(Fb)})),latestDate:rl.nullable()})}),G9=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,H9=/[\0-\x1F\x7F-\x9F]/,Q9=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,Z9=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var F9=class{src_Any=G9.source;src_Cc=H9.source;src_Z=Z9.source;src_P=Q9.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,t,i=4){const s=this.escapeRE(e),r=this.escapeRE(t),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}",t=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${t}|::(?:${e}:){5}${t}|(?:${e})?::(?:${e}:){4}${t}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${t}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${t}|(?:(?:${e}:){0,3}${e})?::${e}:${t}|(?:(?:${e}:){0,4}${e})?::${t}|(?:(?:${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")}},Vp={validate:(e,t,i)=>{const s=i.re.get_http_validator();s.lastIndex=t;const r=s.exec(e);return r?r[0].length:0},normalize:(e,t)=>t.normalize(e)},Y9={"http:":Vp,"https:":Vp,"ftp:":Vp,"//":{validate:function(e,t,i){const s=i.re.get_relative_proto_validator();s.lastIndex=t;const r=s.exec(e);return r?t>=3&&e[t-3]===":"||t>=3&&e[t-3]==="/"?0:r[0].length:0},normalize:(e,t)=>t.normalize(e)},"mailto:":{validate:function(e,t,i){const s=i.re.get_mailto_validator();s.lastIndex=t;const r=s.exec(e);return r?r[0].length:0},normalize:(e,t)=>t.normalize(e)}},X9="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",J9="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function W9(){const e=J9.split("|");return X9.split("|").forEach(t=>{const i=t.indexOf(":"),s=t.slice(0,i);for(const r of t.slice(i+1))e.push(s+r)}),e}var ez={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:W9(),urlAuth:!1,maxLength:1e4},Yb=class{schema;index;lastIndex;raw;text;url;constructor(e,t,i,s){const r=e.slice(i,s);this.schema=t.toLowerCase(),this.index=i,this.lastIndex=s,this.raw=r,this.text=r,this.url=r}},tz=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:t,...i}=e;this.__opts__={...ez,...i},this.__schemas__={...Y9},this.re=t||new F9,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,t=null){if(!t)delete this.__schemas__[e];else{const i={normalize:(s,r)=>r.normalize(s),...t};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 t,i;for(i=this.re.get_schema_search(),i.lastIndex=0;(t=i.exec(e))!==null;)if(this.testSchemaAt(e,t[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;(t=s.exec(e))!==null;){const u=e.slice(Math.max(0,t.index-65),t.index);if(r.test(u))return!0}}return!1}testSchemaAt(e,t,i){return this.__schemas__[t.toLowerCase()]?this.__schemas__[t.toLowerCase()].validate(e.slice(0,i+this.__opts__.maxLength),i,this):0}match(e){const t=[],i=this.re.get_schema_search();let s,r,u,d,g,b,v=!1,x=!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 I=r.exec(e);if(!I){S=!0,g=void 0;break}const $=u.exec(e.slice(Math.max(0,I.index-65),I.index));if($){if(g={schema:"mailto:",index:I.index-$[1].length,lastIndex:I.index+I[0].length},g.index>=j)break;r.lastIndex<_&&(r.lastIndex=_)}}if(s&&!x&&(!d||d.index<j))for(s.lastIndex<_&&(s.lastIndex=_);;){const I=s.exec(e);if(!I){x=!0,d=void 0;break}if(d={schema:"",index:I.index+I[1].length,lastIndex:I.index+I[0].length},d.index>=j)break;s.lastIndex<_&&(s.lastIndex=_)}let T=g;(!T||d&&(d.index<T.index||d.index===T.index&&d.lastIndex>T.lastIndex))&&(T=d);let N;if(!v)for(;;){if(!b){i.lastIndex<_&&(i.lastIndex=_);const V=i.exec(e);if(!V){v=!0;break}b={schema:V[2],index:V.index+V[1].length,lastIndex:V.index+V[0].length}}if(b.index<j){b=void 0;continue}if(T&&b.index>T.index)break;const I=b;b=void 0;const $=this.testSchemaAt(e,I.schema,I.lastIndex);if($){N={schema:I.schema,index:I.index,lastIndex:I.lastIndex+$};break}}let C=N;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 Yb(e,C.schema,C.index,C.lastIndex);O.schema?this.__schemas__[O.schema].normalize(O,this):this.normalize(O),t.push(O),j=C.lastIndex}return t.length?t:null}matchAtStart(e){if(!e.length)return null;const t=this.re.get_schema_at_start().exec(e);if(!t)return null;const i=this.testSchemaAt(e,t[2],t[0].length);if(!i)return null;const s=new Yb(e,t[2],t.index+t[1].length,t.index+t[0].length+i);return this.__schemas__[s.schema].normalize(s,this),s}tlds(e,t=!1){return e=Array.isArray(e)?e:[e],t?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 nz=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 az(e,t){return e.endsWith(t)?e.length===t.length||e[e.length-t.length-1]===".":!1}function iz(e,t){const i=e.length-t.length-2,s=e.lastIndexOf(".",i);return s===-1?e:e.slice(s+1)}function sz(e,t,i){if(i.validHosts!==null){const r=i.validHosts;for(const u of r)if(az(t,u))return u}let s=0;if(t.startsWith("."))for(;s<t.length&&t[s]===".";)s+=1;return e.length===t.length-s?null:iz(t,e)}function oz(e,t){return e.slice(0,-t.length-1)}const Kp=/[\t\n\r]/g;let xf=!1;function Xb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Jb(e,t,i){const s=i-t,r=e.charCodeAt(t)|32;if(s===2)return r===119&&(e.charCodeAt(t+1)|32)===115?1:0;if(s===3){const u=e.charCodeAt(t+1)|32,d=e.charCodeAt(t+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(t+1)|32,d=e.charCodeAt(t+2)|32,g=e.charCodeAt(t+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(t+1)|32)===116&&(e.charCodeAt(t+2)|32)===116&&(e.charCodeAt(t+3)|32)===112&&(e.charCodeAt(t+4)|32)===115?1:0;return 0}function ll(e,t,i=!1){let s=0,r=e.length,u=!1,d=!1;if(xf=!1,!t){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=Jb(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 I=0;for(;(e.charCodeAt(s)===47||e.charCodeAt(s)===92)&&I<2;)s+=1,I+=1;if(I<2)return null}else{for(let I=s;I<C;I+=1){const $=e.charCodeAt(I)|32;if(!($>=97&&$<=122||$>=48&&$<=57||$===46||$===45||$===43)){const V=e.charCodeAt(I);return V===9||V===10||V===13?ll(e.replace(Kp,""),t,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 I=s;I<r;I+=1){const $=e.charCodeAt(I);if($===9||$===10||$===13)return ll(e.replace(Kp,""),t,i);if($===58){O=I;break}if($===47||$===92||$===63||$===35)break}if(O!==-1){let I=!1;for(let $=O+1;$<r;$+=1){const V=e.charCodeAt($);if(V===47||V===92||V===63||V===35)break;if(V===64){I=!0;break}}if(!I){let $=!0,V=O+1;for(;V<r;V+=1){const Z=e.charCodeAt(V);if(Z===47||Z===92||Z===63||Z===35)break;if(Z<48||Z>57){$=!1;break}}if(V===O+1&&($=!1),!$){const Z=Jb(e,s,O);if(Z===0){let se=!1;for(let R=O+1;R<r;R+=1){const q=e.charCodeAt(R);if(q===47||q===92||q===63||q===35)break;if(q===58){se=!0;break}}if(!se)return null}else if(d=!0,s=O+1,Z===2){let se=0;for(;(e.charCodeAt(s)===47||e.charCodeAt(s)===92)&&se<2;)s+=1,se+=1;if(se<2)return null}else for(;e.charCodeAt(s)===47||e.charCodeAt(s)===92;)s+=1}}}}}let b=-1,v=-1,x=-1,S=-1,j=!1,_=i,T=s-1,N=-1;if(i&&s<r){const C=e.charCodeAt(s);(!(Xb(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),x=C):O===9||O===10||O===13?j=!0:i&&(O===46?((C-T>64||N===46||N===45)&&(_=!1),T=C):(O<48||O>57)&&(O!==45||N===46)&&(_=!1));else if(d&&O===92){r=C;break}else O===64?(b=C,S=-1):O===93?v=C:O>=65&&O<=90?u=!0:i&&!Xb(O)&&(_=!1);i&&(N=O)}if(j)return ll(e.replace(Kp,""),t,i);if(b!==-1&&b>=s&&b<r&&(s=b+1),e.charCodeAt(s)===91)return v!==-1?e.slice(s+1,v).toLowerCase():null;if(x!==-1&&x>s&&x<r&&S===x&&(r=x),s>=r)return null;i&&_&&b===-1&&x===-1&&v===-1&&e.charCodeAt(r-1)!==46&&r-s<=255&&r-T-1<=63&&N!==45&&(xf=!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 rz(e){if(e.length<7||e.length>15)return!1;let t=0;for(let i=0;i<e.length;i+=1){const s=e.charCodeAt(i);if(s===46)t+=1;else if(s<48||s>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function lz(e){if(e.length<3)return!1;let t=e.startsWith("[")?1:0,i=e.length;if(e[i-1]==="]"&&(i-=1),i-t>39)return!1;let s=!1;for(;t<i;t+=1){const r=e.charCodeAt(t);if(r===58)s=!0;else if(!(r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70))return!1}return s}function cz(e){return lz(e)||rz(e)}const uz=["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 dz(e){for(const t of uz)if(e.endsWith(t)&&(e.length===t.length||e.charCodeAt(e.length-t.length-1)===46))return!0;return!1}function Wb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function ev(e){if(e.length>255||e.length===0||!Wb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-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-t>64||i===46||i===45)return!1;t=r}else if(!(Wb(u)||u===45||u===95)||u===45&&i===46)return!1;i=u}return s-t-1<=63&&i!==45}function Uk({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:i=!0,detectSpecialUse:s=!1,extractHostname:r=!0,mixedInputs:u=!0,validHosts:d=null,validateHostname:g=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:i,detectSpecialUse:s,extractHostname:r,mixedInputs:u,validHosts:d,validateHostname:g}}const mz=Uk({});function pz(e){return e===void 0?mz:Uk(e)}function fz(e,t){return t.length===e.length?"":e.slice(0,-t.length-1)}function hz(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function Vk(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 Kk(e,t,i,s,r){const u=pz(s);if(typeof e!="string")return r;let d=!1;return u.extractHostname?u.mixedInputs?(d=ev(e),r.hostname=ll(e,d,u.validateHostname)):r.hostname=ll(e,!1,u.validateHostname):r.hostname=e,u.detectIp&&r.hostname!==null&&(r.isIp=cz(r.hostname),r.isIp)?r:u.validateHostname&&u.extractHostname&&r.hostname!==null&&!(d&&r.hostname===e)&&!xf&&!ev(r.hostname)?(r.hostname=null,r):(t===0||r.hostname===null||(t===5&&u.detectSpecialUse&&(r.isSpecialUse=dz(r.hostname)),i(r.hostname,u,r),t===2||r.publicSuffix===null)||(r.domain=sz(r.publicSuffix,r.hostname,u),t===3||r.domain===null)||(r.subdomain=fz(r.hostname,r.domain),t===4)||(r.domainWithoutSuffix=oz(r.domain,r.publicSuffix)),r)}function gz(e,t,i){if(!t.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 gs=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]),ju=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]),Au=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]),tv=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]),Sf="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",yz=621,bz=625,Gk=gs.length,Hk=Au.length,Qk=new Uint32Array(Hk),fu=new Uint32Array(Hk),jf=new Int32Array(Gk).fill(-1);for(let e=0,t=0;e<Gk;e+=1)for(let i=ju[e];i<ju[e+1];i+=1){Qk[i]=t;const s=t+Au[i];let r=5381;for(let u=s-1;u>=t;u-=1)r=r*33^Sf.charCodeAt(u);fu[i]=r>>>0,Au[i]===1&&Sf.charCodeAt(t)===42&&(jf[e]=i),t=s}let Ga=-1,Af=0,Nf=0;function nv(e,t,i,s){if(Au[e]!==s)return!1;const r=Qk[e];for(let u=0;u<s;u+=1)if(Sf.charCodeAt(r+u)!==t.charCodeAt(i+u))return!1;return!0}function av(e,t,i,s,r){let u=ju[e],d=ju[e+1];for(;u<d;){const g=u+d>>>1,b=fu[g];if(b<t)u=g+1;else if(b>t)d=g;else{for(let v=g;v>=u&&fu[v]===t;v-=1)if(nv(v,i,s,r))return v;for(let v=g+1;v<d&&fu[v]===t;v+=1)if(nv(v,i,s,r))return v;return-1}}return-1}function iv(e,t,i){let s=t,r=e.length,u=5381;Ga=-1;for(let g=e.length-1;g>=0;g-=1){const b=e.charCodeAt(g);if(b===46){const v=g+1;let x=av(s,u>>>0,e,v,r-v);if(x===-1&&(x=jf[s]),x===-1)return Ga!==-1;s=tv[x],(gs[s]&i)!==0&&(Ga=s,Af=v,Nf=r),r=g,u=5381}else u=u*33^b}let d=av(s,u>>>0,e,0,r);return d===-1&&(d=jf[s]),d!==-1&&(s=tv[d],(gs[s]&i)!==0&&(Ga=s,Af=0,Nf=r)),Ga!==-1}function Zk(e,t,i){if(gz(e,t,i))return;const s=(t.allowPrivateDomains?2:0)|(t.allowIcannDomains?1:0);if(iv(e,bz,s)){i.isIcann=(gs[Ga]&1)!==0,i.isPrivate=(gs[Ga]&2)!==0,i.publicSuffix=e.slice(Nf+1);return}if(iv(e,yz,s)){i.isIcann=(gs[Ga]&1)!==0,i.isPrivate=(gs[Ga]&2)!==0,i.publicSuffix=e.slice(Af);return}i.isIcann=!1,i.isPrivate=!1;const r=e.lastIndexOf(".");i.publicSuffix=r===-1?e:e.slice(r+1)}const Nu=hz();function vz(e,t){return Vk(Nu),Kk(e,0,Zk,t,Nu).hostname}function kz(e,t){return Vk(Nu),Kk(e,5,Zk,t,Nu).domainWithoutSuffix}const wz={allowPrivateDomains:!0};new tz({fuzzyLink:!0,fuzzyEmail:!1}).tlds(nz);function p0(e){if(e==null)return null;const t=e.trim();if(!t)return null;const i=vz(t);return i?i.replace(/^www\./i,"").toLowerCase():null}function xz(e){return e==null||e.trim()===""?"":kz(e,wz)?.toLowerCase()??""}const Sz=new Intl.Segmenter("en",{granularity:"word"}),jz=/[\p{L}\p{N}]+/gu;function Az(e){return e.normalize("NFKC").toLocaleLowerCase("en")}function Nz(e){const t=[];for(const i of Sz.segment(e))if(i.isWordLike)for(const s of i.segment.match(jz)??[])t.push(s);return t}function _z(e){return Nz(Az(e))}function vs(e){return _z(e).join("")}const Fk=E(["cli","api","config-file"]);function Cz(e){const t=new Set,i=new Set;for(const s of e){if(t.has(s.label)){i.add(s.label);continue}t.add(s.label)}return[...i]}function zz(e,t){return t?e.some(i=>i.label===t):!0}y({displayName:c().min(1),canonicalDomain:c().min(1),ownedDomains:k(c().min(1)).optional(),aliases:k(c()).optional(),country:c().length(2),language:c().min(2),tags:k(c()).optional(),labels:Le(c(),c()).optional(),providers:k(dt).optional(),providerModels:u0.optional(),locations:k(gn).optional(),defaultLocation:c().nullable().optional(),measurement:m0.optional(),autoExtractBacklinks:P().optional(),configSource:Fk.optional()});const Ez=y({id:c(),name:c(),displayName:c().optional(),canonicalDomain:c(),ownedDomains:k(c()).default([]),aliases:k(c()).default([]),country:c().length(2),language:c().min(2),tags:k(c()).default([]),labels:Le(c(),c()).default({}),providers:k(c()).default([]),providerModels:u0.default({}),locations:k(gn).default([]),defaultLocation:c().nullable().optional(),measurement:m0.default($k),autoExtractBacklinks:P().default(!1),configSource:Fk.default("cli"),configRevision:h().int().positive().default(1),createdAt:c().optional(),updatedAt:c().optional()});y({id:c(),query:c(),createdAt:c()});y({id:c(),keyword:c(),createdAt:c()});y({queries:k(c().trim().min(1)).min(1)});y({keywords:k(c().trim().min(1)).min(1)});y({provider:dt,count:h().int().min(1).max(20).optional()});y({id:c(),domain:c(),createdAt:c()});y({competitors:k(c().trim().min(1)).min(1)});function _f(e){return p0(e)??e.trim().toLowerCase().replace(/^www\./,"")}function Tz(e){const t=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,s=[];for(const r of t){const u=r.trim();if(!u)continue;const d=_f(u);i.has(d)||(i.add(d),s.push(u))}return s}const Dz=y({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({})}),Oz=y({preset:c().optional(),cron:c().optional(),timezone:c().optional().default("UTC"),providers:k(dt).optional().default([]),enabled:P().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),Rz=y({channel:ae("webhook"),url:c().url(),events:k(d0).min(1)}),Mz=y({gsc:y({propertyUrl:c()}).optional(),syncSchedule:y({preset:c().optional(),cron:c().optional()}).optional()}).optional(),sv=k(c().min(1)),Bz=y({displayName:c().min(1),canonicalDomain:c().min(1),ownedDomains:k(c().min(1)).optional().default([]),aliases:k(c().min(1)).optional().default([]),country:c().length(2),language:c().min(2),queries:sv.optional(),keywords:sv.optional(),competitors:k(c().min(1)).optional().default([]),providers:k(dt).optional().default([]),providerModels:u0.optional().default({}),locations:k(gn).optional().default([]),defaultLocation:c().optional(),measurement:m0.optional().default($k),schedule:Oz,notifications:k(Rz).optional().default([]),google:Mz,autoExtractBacklinks:P().optional().default(!1)}).superRefine((e,t)=>{e.queries!==void 0&&e.keywords!==void 0&&t.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=Cz(e.locations);i.length>0&&t.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),zz(e.locations,e.defaultLocation)||t.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});y({apiVersion:ae("canonry/v1"),kind:ae("Project"),metadata:Dz,spec:Bz});const qz=2,Iz=c().regex(/^[a-f0-9]{64}$/),Vu=c().trim().min(1).max(256),ov=E(["sensitive","insensitive"]),ke=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=>p0(e)!==null,"A competitor domain must be a valid hostname"),Pz=gt("kind",[y({kind:ae("exact"),url:c().min(1),pathCase:ov}).strict(),y({kind:ae("prefix"),host:c().min(1),pathPrefix:c().min(1),pathCase:ov}).strict(),y({kind:ae("host"),host:c().min(1)}).strict()]),$z=y({canonicalHost:c().min(1),ownedHosts:k(c().min(1)),names:k(c().min(1))}).strict(),Uz=y({projectBrand:$z}).strict(),Vz=y({stableKey:ke,label:c().trim().min(1),aliases:k(c().min(1)),urlMatchers:k(Pz),mentionNotApplicable:P(),discoveryIdentity:c().min(1).nullable()}).strict(),Yk=y({stableKey:ke,label:c().trim().min(1),domain:Lz,aliases:k(c().min(1))}).strict(),Kz=y({stableKey:ke,label:c().trim().min(1),targetKeys:k(ke),competitors:k(Yk)}).strict(),Gz=E(["manual","query-set","template","discovery"]),Hz=y({source:Gz,sourceId:c().min(1).nullable(),capturedAt:c().datetime()}).strict(),Qz=y({queryId:Vu,queryText:c().min(1),provenance:Hz}).strict(),Zz=y({providers:k(dt).min(1),models:Le(dt,c().min(1)),location:gn.nullable()}).strict(),Fz=y({stableKey:c().min(1),queryId:Vu,queryText:c().min(1),context:Zz,expectedSnapshots:h().int().nonnegative()}).strict(),f0=E(["branded","non-brand"]),Yz=y({targetKey:ke,queryId:Vu,queryClass:f0,executionNodeKey:c().min(1)}).strict(),Xz=y({executionNodeKey:c().min(1),targetKey:ke,queryId:Vu}).strict(),Ku=y({schemaVersion:ae(qz),identities:Uz,targets:k(Vz),groups:k(Kz),querySnapshots:k(Qz),assignments:k(Yz),executionNodes:k(Fz),usageEdges:k(Xz),compiledChecksum:Iz}).strict().superRefine((e,t)=>{const i=new Set;for(const r of e.executionNodes)i.has(r.stableKey)&&t.addIssue({code:ht.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)||t.addIssue({code:ht.custom,path:["usageEdges",u,"executionNodeKey"],message:`Usage edge references unknown execution node "${r.executionNodeKey}"`}),s.has(r.targetKey)||t.addIssue({code:ht.custom,path:["usageEdges",u,"targetKey"],message:`Usage edge references unknown Target "${r.targetKey}"`})}),e.assignments.forEach((r,u)=>{s.has(r.targetKey)||t.addIssue({code:ht.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)||t.addIssue({code:ht.custom,path:["groups"],message:`Group "${r.stableKey}" references unknown Target "${u}"`})}),h0=100;function Do(e){return y({items:k(e),nextCursor:c().min(1).nullable(),totalEstimate:h().int().nonnegative().optional()}).strict()}const g0=E(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),an=gt("state",[y({state:ae("available"),value:h(),numerator:h().int().nonnegative().optional(),denominator:h().int().positive().optional()}).strict(),y({state:ae("unavailable"),reason:g0}).strict()]),y0=E(["all","group","property"]),ma=E(["all","branded","non-brand"]),Jz=E(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),b0=E(["not_measured","queued","running","complete","partial","failed"]),Wz=E(["run_measurement","review_flags","complete_setup","republish_setup","none"]);y({scope:y0,groupKey:ke.optional(),targetKey:ke.optional(),queryClass:ma.optional(),provider:dt.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:Jz.optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(h0).optional()}).strict();const eE=y({provider:dt,mentionCoverage:an,citationCoverage:an}).strict(),tE=y({targetKey:ke,label:c().min(1),mentionCoverage:an,citationCoverage:an,providers:k(eE),flags:h().int().nonnegative()}).strict(),nE=y({kind:E(["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(),aE=y({groupKey:ke,queryClass:ae("non-brand"),denominator:h().int().positive(),entries:k(nE)}).strict();y({mode:E(["active-v1","active-v2"]),scope:y({kind:y0,key:c().min(1).optional(),label:c().min(1)}).strict(),queryClass:ma,measurement:y({state:b0,currentRunId:c().min(1).optional(),displayedRunId:c().min(1).optional(),completed:h().int().nonnegative(),expected:h().int().nonnegative(),completedAt:c().datetime().optional(),includesHistoricalData:P().optional()}).strict(),nextAction:y({kind:Wz,count:h().int().nonnegative().optional()}).strict(),metrics:y({propertiesMentioned:an,mentionCoverage:an,citationCoverage:an,brandPresence:an,sov:an.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:Do(tE),flags:y({total:h().int().nonnegative()}).strict(),namedShareOfVoice:aE.optional()}).strict();const Xk=E(["sources","answers"]),iE=Xk.enum;iE.sources;y({targetKey:ke,queryClass:ma.optional(),provider:dt.optional(),location:c().trim().min(1).optional(),runId:c().trim().min(1).optional(),shape:Xk.optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(h0).optional()}).strict();const Jk=1,jl=h().int().positive(),Vt=c().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Al=c().trim().min(1).max(256),rv=E(["sensitive","insensitive"]);function _u(e){const t=p0(e);if(!t)throw new Error(`Invalid measurement host: ${e}`);return t}function sE(e){const t=[];let i=!1;for(let s=0;s<e.length;s++){const r=e[s];r==="/"?(i||t.push(r),i=!0):(t.push(r),i=!1)}for(;t.length>1&&t.at(-1)==="/";)t.pop();return t.length?t.join(""):"/"}function lv(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function Wk(e){const t=new URL(`https://measurement.invalid${e}`).pathname;return sE(t.replace(/%[0-9a-f]{2}/gi,i=>i.toUpperCase()))}function Cf(e){const t=e.trim();if(!t||t.includes("?")||t.includes("#")||t.includes("://")||t.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const i=t.startsWith("/")?t:`/${t}`;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 Wk(i)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function oE(e){const t=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!t)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(t[0].length).split(/[?#]/,1)[0]||"/"}function cv(e){const t=e.trim();if(!t||t.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let i;try{i=new URL(t)}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=_u(i.hostname),r=Cf(oE(t));return`https://${s}${r}`}const yl=c().trim().min(1).refine(e=>{try{return _u(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>_u(e)),rE=c().trim().min(1).refine(e=>{try{return Cf(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Cf(e)),lE=c().trim().min(1).refine(e=>{try{return cv(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>cv(e)),cE=gt("kind",[y({kind:ae("exact"),url:lE,pathCase:rv}).strict(),y({kind:ae("prefix"),host:yl,pathPrefix:rE,pathCase:rv}).strict(),y({kind:ae("host"),host:yl}).strict()]),ew=c().trim().min(1).max(256).refine(e=>vs(e).length>0,"A target alias must contain mention text"),uE=Le(c().trim().min(1),c()),dE=yl,tw=y({stableKey:Vt,label:c().trim().min(1),urls:k(cE).min(1),aliases:k(ew),metadata:uE.optional()}).strict(),v0=y({stableKey:Vt,label:c().trim().min(1),targetKeys:k(Vt).min(1),competitors:k(dE).optional()}).strict(),nw=y({targetKey:Vt,queryIds:k(Al).min(1),context:gn.nullable().optional()}).strict();function mE(e,t){return e<t?-1:e>t?1:0}function pE(e,t=i=>i){const i=new Set,s=new Set;for(const r of e){const u=t(r);i.has(u)&&s.add(u),i.add(u)}return s}function Gp(e,t,i,s,r){for(const u of pE(t,r))e.addIssue({code:"custom",path:[...i],message:`Duplicate ${s}: ${u}`})}function uv(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const t=new URL(e.url);return{host:_u(t.hostname),pathname:Wk(t.pathname||"/")}}function fE(e,t,i,s){return e===i||(t==="insensitive"||s==="insensitive")&&lv(e)===lv(i)}function hE(e,t){if(e.kind!==t.kind)return!1;const i=uv(e),s=uv(t);return i.host!==s.host?!1:e.kind==="host"||t.kind==="host"?!0:fE(i.pathname,e.pathCase,s.pathname,t.pathCase)}function gE(e){const t=new Set;return[...e].sort(mE).filter(i=>{const s=vs(i);return t.has(s)?!1:(t.add(s),!0)})}const aw=y({schemaVersion:ae(Jk),targets:k(tw).min(1),groups:k(v0).optional(),targetQuerySelections:k(nw).optional()}).strict().superRefine((e,t)=>{const i=e.groups??[],s=e.targetQuerySelections??[];Gp(t,e.targets.map(b=>b.stableKey),["targets"],"target stable key"),Gp(t,i.map(b=>b.stableKey),["groups"],"group stable key");const r=new Set(e.targets.map(b=>b.stableKey)),u=new Set(i.map(b=>b.stableKey));for(const b of r)u.has(b)&&t.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${b}`});const d=new Map,g=[];e.targets.forEach((b,v)=>{for(const x of gE(b.aliases)){const S=vs(x),j=d.get(S);j&&j!==b.stableKey&&t.addIssue({code:"custom",path:["targets",v,"aliases"],message:`Target alias is already assigned to target ${j}: ${x}`}),d.set(S,b.stableKey)}b.urls.forEach((x,S)=>{g.find(_=>_.targetKey!==b.stableKey&&hE(_.matcher,x))&&t.addIssue({code:"custom",path:["targets",v,"urls",S],message:"Target URL matcher has an equal-specificity cross-target tie"}),g.push({targetKey:b.stableKey,matcher:x})})}),i.forEach((b,v)=>{Gp(t,b.targetKeys,["groups",v,"targetKeys"],"group target key");for(let x=0;x<b.targetKeys.length;x++){const S=b.targetKeys[x];r.has(S)||t.addIssue({code:"custom",path:["groups",v,"targetKeys",x],message:`Unknown target: ${S}`})}}),s.forEach((b,v)=>{r.has(b.targetKey)||t.addIssue({code:"custom",path:["targetQuerySelections",v,"targetKey"],message:`Unknown target: ${b.targetKey}`})})});aw.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));y({expectedActiveRevision:jl.nullable(),plan:aw}).strict();const yE=y({queryId:Al,queryText:c().min(1)}).strict(),k0=y({stableKey:c().min(1),queryText:c().min(1),context:gn.nullable(),expectedSnapshots:h().int().nonnegative()}).strict(),bE=y({kind:ae("baseline"),executionNodeKey:c().min(1),queryId:Al}).strict(),vE=y({kind:ae("target"),executionNodeKey:c().min(1),queryId:Al,targetKey:Vt}).strict(),zf=gt("kind",[bE,vE]),iw=y({code:ae("target-alias-prefix-overlap"),message:c().min(1),targetKeys:k(Vt).min(1),aliases:k(c().min(1)).min(1)}).strict(),sw=tw.extend({mentionNotApplicable:P()}),ow=y({schemaVersion:ae(Jk),defaultContext:gn.nullable(),effectiveOwnedHosts:k(yl),projectCanonicalHost:yl,projectBrandNames:k(ew),targets:k(sw),groups:k(v0),targetQuerySelections:k(nw),querySnapshots:k(yE),executionNodes:k(k0),usageEdges:k(zf),warnings:k(iw)}).strict(),kE=ow,rw=gt("schemaVersion",[ow,Ku]),w0=c().regex(/^[a-f0-9]{64}$/),x0=c().datetime(),lw=y({schemaVersion:ae(1),providers:k(c().min(1)).min(1),models:Le(c().min(1),c().min(1)),checksum:c().regex(/^[a-f0-9]{64}$/)}).strict(),wE=y({groups:k(Vt).optional(),targets:k(Vt).optional()}).strict(),xE=y({groups:k(Vt),targets:k(Vt),queries:k(c().min(1)),resolvedTargets:k(Vt)}).strict().superRefine((e,t)=>{e.resolvedTargets.length===0&&e.queries.length===0&&t.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});y({stableKey:Vt,retiredAt:c().datetime()});y({active:y({revision:jl,checksum:w0,createdAt:x0,plan:rw}).nullable()});y({versions:k(y({revision:jl,checksum:w0,createdAt:x0,active:P()}))});y({version:y({revision:jl,checksum:w0,createdAt:x0,active:P(),plan:rw})});const hu=y({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(),SE=E(["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"]),cw=y({id:SE,severity:E(["fail","warn"]),message:c().min(1),path:k(Ge([c(),h().int()]))}).strict(),jE=y({baseline:h().int().nonnegative(),target:h().int().nonnegative()}).strict(),uw=y({ok:ae(!0),checks:k(cw),executionNodes:k(k0),dedupSaved:h().int().nonnegative(),usageEdges:jE,estCostUsd:he(),plan:kE,warnings:k(iw),counts:hu}).strict(),dw=y({ok:ae(!1),checks:k(cw).min(1),executionNodes:k(k0).length(0),dedupSaved:ae(0),usageEdges:y({baseline:ae(0),target:ae(0)}).strict(),estCostUsd:he()}).strict();gt("ok",[uw,dw]);const nu=y({targetKey:Vt,context:gn.nullable(),queryIds:k(Al)}).strict();function dv(e){return y({added:k(e),removed:k(e),changed:k(y({stableKey:Vt,before:e,after:e}).strict()),unchanged:k(Vt)}).strict()}const AE=uw.extend({diff:y({activeRevision:jl.nullable(),targets:dv(sw),groups:dv(v0),querySelections:y({added:k(nu),removed:k(nu),changed:k(y({targetKey:Vt,before:nu,after:nu}).strict()),unchanged:k(y({targetKey:Vt,context:gn.nullable()}).strict())}).strict(),execution:y({addedNodeKeys:k(c().min(1)),removedNodeKeys:k(c().min(1)),addedUsageEdges:k(zf),removedUsageEdges:k(zf),counts:y({before:hu.nullable(),after:hu,delta:hu.nullable()}).strict()}).strict()}).strict()}).strict(),NE=dw.extend({diff:he()}).strict();gt("ok",[AE,NE]);const Gu=E(["complete","partial","failed","unsupported"]);Gu.enum;E(["proposed","alias","shared","unmatched","excluded"]);E(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const _E=E(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),CE=y({kind:E(["exact","prefix","suffix","contains"]),value:c().trim().min(1)}).strict(),mv=y({host:c().trim().min(1),pathTemplate:c().trim().min(1)}).strict(),S0=y({primary:mv,aliases:k(mv).optional(),excludedSlugSuffixes:k(c().trim().min(1)).optional(),excludedSlugPatterns:k(CE).optional()}).strict();y({sitemapUrl:c().url().refine(e=>{try{const t=new URL(e).protocol;return t==="http:"||t==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:S0,maxUrls:h().int().positive().max(1e4).optional()}).strict();const Hp=y({url:c(),canonicalUrl:c().nullable(),classification:E(["shared","unmatched","excluded"]),reason:E(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,t)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||t.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),zE=y({classification:ae("proposed"),reason:ae("primary-match"),stableKey:Vt,slug:c().trim().min(1),label:c().trim().min(1),primaryUrl:c().url(),aliasCoverageUrls:k(c().url())}).strict(),EE=y({classification:ae("alias"),reason:ae("exact-slug-match"),slug:c().trim().min(1),url:c().url(),targetStableKey:Vt}).strict(),TE=y({kind:_E,url:c(),canonicalUrl:c().nullable(),duplicateOf:c().optional()}).strict();y({proposed:k(zE),aliases:k(EE),shared:k(Hp),unmatched:k(Hp),excluded:k(Hp),diagnostics:k(TE)}).strict().superRefine((e,t)=>{const i=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[s,r]of i)for(const u of e[s])r.includes(u.classification)||t.addIssue({code:"custom",path:[s],message:"Discovery item is in the wrong result bucket"})});const j0=E(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),mw=E(["baseline","target"]),pw=E(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),ks=Ge([y({numerator:h().int().nonnegative(),denominator:h().int().positive(),rate:h().min(0).max(1)}).strict(),y({numerator:he(),denominator:he(),rate:he(),reason:pw}).strict()]).superRefine((e,t)=>{e.numerator!==null&&e.numerator>e.denominator&&t.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),DE=c().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),OE=y({executionId:c().trim().min(1),queryText:c().trim().min(1),provider:DE,context:gn.nullable(),requestedModel:c().trim().min(1).optional()}).strict();y({schemaVersion:ae(1),expectedSlots:k(OE)}).strict().superRefine((e,t)=>{const i=new Set;for(const[s,r]of e.expectedSlots.entries()){const u=[r.executionId,r.provider].join("\0");i.has(u)&&t.addIssue({code:"custom",path:["expectedSlots",s],message:"Duplicate expected provider slot"}),i.add(u)}});const Hu=y({executed:h().int().nonnegative(),expected:h().int().nonnegative(),complete:P(),sourceComplete:P(),sourceCompleteObservations:h().int().nonnegative(),answerComplete:P()}).strict(),pv=Ge([y({domain:c().trim().min(1),own:P(),presentIn:h().int().nonnegative(),of:h().int().positive()}).strict(),y({domain:c().trim().min(1),own:P(),presentIn:he(),of:he(),reason:pw}).strict()]),RE=y({domains:k(pv),providers:k(y({provider:dt,domains:k(pv)}).strict())}).strict(),ME=y({provider:dt,completeness:Hu,answerCoverage:ks}).strict(),BE=y({id:c().trim().min(1),label:c().trim().min(1),targetIds:k(c().trim().min(1)),completeness:Hu,answerCoverage:ks,targetCoverage:ks,sov:RE,providers:k(ME)}).strict(),qE=y({provider:dt,completeness:Hu,citationCoverage:ks,mentionCoverage:ks}).strict(),IE=y({id:c().trim().min(1),label:c().trim().min(1),completeness:Hu,citationCoverage:ks,mentionCoverage:ks,providers:k(qE)}).strict(),fw=y({observationId:c().trim().min(1),expectedSlotId:c().trim().min(1),executionId:c().trim().min(1),usageEdgeId:c().trim().min(1),usageEdgeType:mw,provider:dt,queryText:c().trim().min(1),location:c().nullable(),sourceUrl:c(),bridged:P(),historical:P(),evidenceComplete:P(),classification:j0,normalizedUrl:c().nullable(),matchedTargetIds:k(c().trim().min(1)),matchedUrlIds:k(c().trim().min(1))}).strict(),LE=y({sourceUrl:c(),normalizedUrl:c().nullable(),classification:j0,matchedTargetIds:k(c().trim().min(1)),matchedUrlIds:k(c().trim().min(1))}).strict(),PE=y({observationId:c().trim().min(1),expectedSlotId:c().trim().min(1),executionId:c().trim().min(1),usageEdgeId:c().trim().min(1),usageEdgeType:mw,provider:dt,queryText:c().trim().min(1),location:c().nullable(),queryClass:Ge([E(["branded","non-brand"]),he()]),mentioned:P().nullable(),cited:P().nullable(),sources:k(LE),sourceCount:h().int().nonnegative(),sourcesTruncated:P(),bridged:P(),historical:P(),evidenceComplete:P()}).strict(),$E=y({bridgedObservationIds:k(c()),historicalObservationIds:k(c()),evidenceIncompleteObservationIds:k(c()),ambiguousObservationIds:k(c()),unmatchedObservationIds:k(c())}).strict(),UE=y({id:c().trim().min(1),status:E(["completed","partial"]),createdAt:c().datetime(),startedAt:c().datetime().nullable(),finishedAt:c().datetime().nullable()}).strict();y({revision:h().int().positive(),run:UE.nullable(),groups:k(BE),targets:k(IE),evidence:k(fw),diagnostics:$E}).strict();y({property:y({targetKey:ke,label:c().min(1)}).strict(),queryClass:ma,measurement:y({state:b0,displayedRunId:c().min(1).optional(),completedAt:c().datetime().optional()}).strict(),evidence:Do(fw).optional(),answers:Do(PE).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const A0=E(["used","not-used","unknown","not-applicable"]);A0.enum;const N0=E(["native-auto-v1","search-required-v1"]);N0.enum;const ua=c().trim().min(1),Qu=c().trim().min(1),VE=c().trim().min(1),Je=h().int().nonnegative(),Nl=y({state:b0,displayedRunId:ua.nullable(),planRevision:h().int().positive(),completedAt:c().datetime().nullable()}).strict(),_l=y({targetKey:ke,label:Qu}).strict(),Bn={runId:ua.optional(),provider:dt.optional(),location:VE.optional()},bl=c().trim().min(1);y({runId:Bn.runId,groupKey:ke.optional(),queryClass:ma.default("non-brand"),provider:Bn.provider,location:Bn.location,limit:h().int().positive().max(50).optional()}).strict();const KE=_l.extend({mentionCoverage:an,citationCoverage:an,flags:Je,recommendedInstead:k(y({name:bl,occurrences:Je}).strict()).max(5),recommendedInsteadTotal:Je,recommendedInsteadTruncated:P()}).strict().superRefine((e,t)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&t.addIssue({code:ht.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&t.addIssue({code:ht.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})});y({portfolio:y({groupKey:ke.nullable(),label:Qu.nullable(),measurementScope:Ge([E(["full","spot_check"]),he()])}).strict(),measurement:Nl,queryClass:ma,metrics:y({propertiesMentioned:an,mentionCoverage:an,citationCoverage:an}).strict(),weakestProperties:k(KE),totalProperties:Je,truncated:P()}).strict();y({targetKey:ke,runId:Bn.runId,provider:Bn.provider,location:Bn.location,queryClass:ma.optional(),offset:h().int().nonnegative().optional(),limit:h().int().positive().max(100).optional()}).strict();E(["answered","missing"]);const Ef={queryId:ua,text:Qu,class:f0,provider:dt,requestedModel:c().nullable(),servedModel:c().nullable(),location:c().nullable()},GE=gt("status",[y({resultId:ua,...Ef,status:ae("answered"),mentioned:P().nullable(),cited:P().nullable(),recommendedInstead:k(bl),answerExcerpt:c().nullable()}).strict(),y({resultId:he(),...Ef,status:ae("missing"),mentioned:he(),cited:he(),recommendedInstead:k(bl).length(0),answerExcerpt:he()}).strict()]);y({property:_l,measurement:Nl,queryClass:ma,questions:k(GE),total:Je,truncated:P()}).strict();y({targetKey:ke,resultId:ua}).strict();const HE=y({url:ua,classification:j0,matchedTargetKeys:k(ke),assigned:P(),historical:P(),evidenceComplete:P()}).strict().superRefine((e,t)=>{e.assigned!==(e.classification==="assigned")&&t.addIssue({code:ht.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});y({property:_l,measurement:Nl,question:y({resultId:ua,...Ef,status:ae("answered")}).strict(),mentioned:P().nullable(),cited:P().nullable(),recommendedInstead:k(bl),answer:c().nullable(),sources:k(HE),captureStatus:Ge([Gu,he()]),retrievalStatus:Ge([A0,he()]),retrievalContract:Ge([N0,he()])}).strict();y({targetKey:ke,runId:Bn.runId,provider:Bn.provider,location:Bn.location,queryClass:ma.optional(),limit:h().int().positive().max(50).optional()}).strict();const QE=gt("state",[y({state:ae("available"),answeredResults:Je,targetMissResults:Je,recommendationOccurrences:Je}).strict(),y({state:ae("unavailable"),reason:g0}).strict()]),ZE=y({name:bl,occurrences:Je,providers:k(dt).max(5),providerTotal:Je,providersTruncated:P(),questions:k(Qu).max(5),questionTotal:Je,questionsTruncated:P()}).strict().superRefine((e,t)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&t.addIssue({code:ht.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&t.addIssue({code:ht.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&t.addIssue({code:ht.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});y({property:_l,measurement:Nl,queryClass:ma,basis:QE,competitors:k(ZE),total:Je,truncated:P()}).strict();y({runId:Bn.runId,scope:y0.default("all"),groupKey:ke.optional(),targetKey:ke.optional(),queryClass:ma.default("all"),provider:Bn.provider,location:Bn.location,limit:h().int().positive().max(50).optional()}).strict().superRefine((e,t)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&t.addIssue({code:ht.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&t.addIssue({code:ht.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&t.addIssue({code:ht.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const hw=E(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),gw=Nl.extend({executionIdentity:ua.nullable(),measurementScope:Ge([E(["full","spot_check"]),he()])}).strict(),Xr=gt("state",[y({state:ae("available"),previous:an,current:an,delta:h()}).strict().superRefine((e,t)=>{if(e.previous.state!=="available"||e.current.state!=="available"){t.addIssue({code:ht.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&t.addIssue({code:ht.custom,path:["delta"],message:"Delta must equal current minus previous"})}),y({state:ae("unavailable"),reason:g0}).strict()]);y({current:gw,comparison:gt("state",[y({state:ae("available"),previous:y({displayedRunId:ua,planRevision:h().int().positive(),completedAt:c().datetime().nullable(),executionIdentity:ua,measurementScope:E(["full","spot_check"])}).strict(),metrics:y({propertiesMentioned:Xr,mentionCoverage:Xr,citationCoverage:Xr}).strict(),changedProperties:k(_l.extend({mentionCoverage:Xr,citationCoverage:Xr,flags:Je}).strict()),totalProperties:Je,truncated:P()}).strict(),y({state:ae("unavailable"),reason:hw}).strict()])}).strict().superRefine((e,t)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){t.addIssue({code:ht.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&t.addIssue({code:ht.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&t.addIssue({code:ht.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});y({runId:Bn.runId}).strict();const FE=E(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),Zu=y({state:ae("unavailable"),reason:FE}).strict(),YE=y({state:ae("available"),expected:Je,executed:Je,answered:Je,missing:Je}).strict(),XE=gt("state",[YE,Zu]).superRefine((e,t)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&t.addIssue({code:ht.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&t.addIssue({code:ht.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),JE=y({state:ae("available"),complete:Je,partial:Je,failed:Je,unsupported:Je,notRecorded:Je}).strict(),WE=gt("state",[JE,Zu]),eT=y({state:ae("available"),used:Je,notUsed:Je,unknown:Je,notApplicable:Je,notRecorded:Je}).strict(),tT=gt("state",[eT,Zu]),nT=y({state:ae("available"),expectedQuestions:Je,answeredQuestions:Je,missingQuestions:Je}).strict(),aT=gt("state",[nT,Zu]).superRefine((e,t)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&t.addIssue({code:ht.custom,message:"Expected questions must equal answered plus missing"})});y({run:gw,completeness:XE,capture:WE,retrieval:tT,population:aT,comparison:gt("state",[y({state:ae("available"),previousDisplayedRunId:ua}).strict(),y({state:ae("unavailable"),reason:hw}).strict()])}).strict().superRefine((e,t)=>{if(e.completeness.state!=="available")return;const i=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==i&&t.addIssue({code:ht.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==i&&t.addIssue({code:ht.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const Oo=c().regex(/^[a-f0-9]{64}$/),da=c().trim().min(1).max(256),Pi=h().int().positive(),fv=y({kind:E(["user","api-key","system"]),id:c().trim().min(1),label:c().trim().min(1)}).strict(),iT=E(["proposed","included","excluded"]),sT=E(["manual","sitemap"]),_0=y({stableKey:ke,label:c().trim().min(1),status:iT,aliases:k(c().trim().min(1)),urlMatchers:k(c().trim().min(1)),source:sT,discoveredUrl:c().trim().min(1).optional(),discoveryIdentity:c().trim().min(1).optional()}).strict(),Fu=y({providers:k(dt).optional(),models:Le(dt,c().trim().min(1)).optional(),locations:k(c().trim().min(1)).optional()}).strict(),oT=E(["branded","non-brand","unclassified"]),rT=E(["rule","operator"]),yw=y({targetKey:ke,queryId:da,contextOverride:Fu.optional(),queryClass:oT,classificationSource:rT}).strict(),C0=Yk,bw=y({stableKey:ke,label:c().trim().min(1),targetKeys:k(ke),competitors:k(C0)}).strict(),lT=y({sitemapUrl:c().url(),rule:S0,exclusions:k(c().trim().min(1)),inputChecksum:Oo,reviewedAt:c().datetime().optional()}).strict(),cT=y({providers:k(dt),models:Le(dt,c().trim().min(1)).optional(),locations:k(c().trim().min(1))}).strict(),uT=y({defaultContext:cT,targets:k(_0),assignments:k(yw),groups:k(bw),discovery:lT.optional()}).strict(),dT=y({id:c().trim().min(1),projectId:c().trim().min(1),schemaVersion:ae(2),baseActiveVersionId:c().trim().min(1).nullable(),baseActiveRevision:Pi.nullable(),authoring:uT,createdBy:fv,updatedBy:fv,createdAt:c().datetime(),updatedAt:c().datetime()}).strict(),z0=y({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(),mT=y({code:c().trim().min(1),message:c().trim().min(1),path:k(Ge([c(),h().int()]))}).strict(),pT=y({etag:c().trim().min(1),changed:P(),warnings:k(mT),counts:z0}).strict();y({draft:dT.nullable(),etag:c().trim().min(1).nullable()}).strict();Do(_0);Do(yw);Do(bw);y({search:c().optional(),cursor:c().trim().min(1).optional(),limit:h().int().positive().max(h0).optional()}).strict();y({expectedActiveRevision:Pi.nullable()}).strict();y({sitemapUrl:c().url(),rule:S0,exclusions:k(c().trim().min(1)).optional()}).strict();const fT=y({discoveryIdentity:c().trim().min(1),action:E(["create","rebind","ignore"]),targetKey:ke.optional(),label:c().trim().min(1).optional()}).strict();y({selections:k(fT),selectedTargetKeys:k(ke).optional()}).strict().superRefine((e,t)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&t.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&t.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});y({target:_0}).strict();y({targetKey:ke,label:c().trim().min(1)}).strict();y({targetKey:ke,mergedKeys:k(ke).min(1)}).strict();y({targetKey:ke,cleanup:ae("assignments-and-group-memberships").optional()}).strict();y({targetKey:ke,discoveryIdentity:c().trim().min(1),discoveredUrl:c().url()}).strict();const vw={targetKeys:k(ke).optional(),groupKeys:k(ke).optional()};function kw(e,t){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&t.addIssue({code:"custom",message:"At least one Target or group selector is required."})}y(vw).strict().superRefine(kw);const hT=y({...vw,queryIds:k(da).min(1),contextOverride:Fu.optional()}).strict().superRefine(kw);Ge([y({targetKey:ke,queryIds:k(da).min(1),contextOverride:Fu.optional()}).strict(),hT]);const gT=y({groupKey:ke,label:c().trim().min(1),memberCount:h().int().positive()}).strict();y({draftEtag:c().trim().min(1),groups:k(gT),resolvedTargetKeys:k(ke),overlapCount:h().int().nonnegative(),assignments:y({requested:h().int().nonnegative(),added:h().int().nonnegative(),alreadyPresent:h().int().nonnegative()}).strict(),execution:y({addedNodes:h().int().nonnegative(),addedProviderCalls:h().int().nonnegative(),fullRunNodes:h().int().nonnegative(),fullRunProviderCalls:h().int().nonnegative()}).strict()}).strict();y({pairs:k(y({targetKey:ke,queryId:da}).strict()).min(1),contextOverride:Fu.optional()}).strict();Ge([y({targetKey:ke,queryId:da}).strict(),y({targetKeys:k(ke).min(1),queryId:da}).strict()]);y({targetKey:ke}).strict();y({queryClass:f0,assignments:k(y({targetKey:ke,queryId:da}).strict()).min(1)}).strict();y({group:y({stableKey:ke,label:c().trim().min(1),targetKeys:k(ke),competitors:k(C0).optional()}).strict()}).strict();y({groupKey:ke}).strict();y({groupKey:ke,competitor:C0}).strict();y({groupKey:ke,competitorKey:ke}).strict();const Cu=y({ruleId:c().trim().min(1),severity:E(["fail","warn"]),message:c().trim().min(1),path:k(Ge([c(),h().int()]))}).strict();gt("ok",[y({ok:ae(!0),compiledChecksum:Oo,checks:k(Cu),counts:z0,plan:Ku}).strict(),y({ok:ae(!1),compiledChecksum:he(),checks:k(Cu).min(1)}).strict()]);const hv=y({added:k(c().trim().min(1)),removed:k(c().trim().min(1)),changed:k(c().trim().min(1)),unchanged:k(c().trim().min(1))}).strict(),yT=y({activeRevision:Pi.nullable(),targets:hv,groups:hv,assignments:y({added:h().int().nonnegative(),removed:h().int().nonnegative(),reclassified:h().int().nonnegative()}).strict(),execution:y({addedNodeKeys:k(c().trim().min(1)),removedNodeKeys:k(c().trim().min(1))}).strict()}).strict();gt("ok",[y({ok:ae(!0),compiledChecksum:Oo,checks:k(Cu),counts:z0,plan:Ku,diff:yT}).strict(),y({ok:ae(!1),compiledChecksum:he(),checks:k(Cu).min(1),diff:he()}).strict()]);y({expectedActiveRevision:Pi.nullable(),expectedCompiledChecksum:Oo}).strict();y({published:P(),active:y({revision:Pi,checksum:Oo,compiledChecksum:Oo,createdAt:c().datetime(),plan:Ku}).strict()}).strict();y({discarded:P()}).strict();y({expectedActiveRevision:Pi}).strict();y({deactivated:P(),previousRevision:Pi.nullable()}).strict();const bT=E(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),vT=E(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),kT=E(["simple","draft-only","active-v1","active-v2"]);y({state:bT,nextAction:vT,mode:kT,activeRevision:Pi.nullable(),activeSchemaVersion:Ge([ae(1),ae(2)]).nullable(),draft:y({etag:c().trim().min(1),updatedAt:c().datetime()}).strict().nullable()}).strict();const ww=y({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(),wT=y({queryId:da,queryText:c().min(1),position:h().int().nonnegative()}).strict();ww.extend({items:k(wT)}).strict();y({querySets:k(ww)}).strict();y({name:c().trim().min(1),description:c().nullable().optional(),queryIds:k(da)}).strict();const xT=y({id:c().trim().min(1),projectId:c().trim().min(1),name:c().trim().min(1),description:c().nullable(),pattern:c().trim().min(1),variables:k(c().trim().min(1)),createdAt:c().datetime(),updatedAt:c().datetime()}).strict();y({templates:k(xT)}).strict();y({name:c().trim().min(1),description:c().nullable().optional(),pattern:c().trim().min(1),variables:k(c().trim().min(1))}).strict();y({bindings:k(Le(c().trim().min(1),c().trim().min(1))).min(1),querySetId:c().trim().min(1).optional()}).strict();y({created:k(y({queryId:da,queryText:c().min(1)}).strict()),existing:k(y({queryId:da,queryText:c().min(1)}).strict())}).strict();const zu=c().regex(/^[a-f0-9]{64}$/),Yu=h().int().positive();y({stableKey:ke,kind:E(["target","group"]),retiredAt:c().datetime().nullable()}).strict();y({csv:c()}).strict();E(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const ST=E(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),Tf=y({dataRow:Yu,property:c(),group:c(),url:c().nullable(),normalizedProperty:c(),normalizedGroupLabel:c()}).strict(),Jr=Tf.extend({reason:ST}),jT=y({source:E(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:ke,kind:E(["target","group"]).optional(),retiredAt:c().datetime().nullable().optional(),normalizedGroupLabel:c().optional()}).strict(),AT=y({proposedGroupKey:ke,evidence:k(jT).min(1)}).strict(),NT=gt("status",[Tf.extend({status:ae("matched"),targetKey:ke,groupKey:ke}).strict(),Jr.extend({status:ae("ambiguous"),candidateTargetKeys:k(ke).min(1).optional(),candidateGroupKeys:k(ke).min(1).optional()}).strict(),Jr.extend({status:ae("unmatched")}).strict(),Jr.extend({status:ae("invalid"),groupKeyConflict:AT.optional()}).strict(),Tf.extend({status:ae("duplicate"),duplicateOfRow:Yu,targetKey:ke,groupKey:ke}).strict(),Jr.extend({status:ae("proposed"),targetKey:ke}).strict(),Jr.extend({status:ae("excluded"),targetKey:ke}).strict()]),_T=y({normalizedGroupLabel:c(),groupKey:ke,label:c().trim().min(1),action:E(["create","extend"]),matchedRows:k(Yu),targetKeys:k(ke),addedTargetKeys:k(ke),unchangedTargetKeys:k(ke)}).strict(),CT=y({dataRows:h().int().nonnegative(),matchedRows:h().int().nonnegative(),ambiguousRows:h().int().nonnegative(),unmatchedRows:h().int().nonnegative(),invalidRows:h().int().nonnegative(),duplicateRows:h().int().nonnegative(),proposedRows:h().int().nonnegative(),excludedRows:h().int().nonnegative(),needsAttention:h().int().nonnegative(),groupsReady:h().int().nonnegative(),groupsToCreate:h().int().nonnegative(),groupsToExtend:h().int().nonnegative(),membershipsReady:h().int().nonnegative(),addedMemberships:h().int().nonnegative(),unchangedMemberships:h().int().nonnegative()}).strict();y({draftEtag:c().trim().min(1),sourceChecksum:zu,previewChecksum:zu,rows:k(NT),groupChanges:k(_T),counts:CT}).strict();y({csv:c(),sourceChecksum:zu,previewChecksum:zu,acceptedRows:k(Yu).min(1)}).strict().superRefine((e,t)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&t.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});pT.extend({appliedRows:h().int().nonnegative(),addedMemberships:h().int().nonnegative(),unchangedMemberships:h().int().nonnegative()}).strict();const xw=E(["introduced","repointed","retired"]),zT=xw.enum;y({modelId:c().trim().min(1),date:c().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:xw,confirmed:P(),sourceUrl:c().url(),note:c().min(1)});const ET=[{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.'}];zT.repointed;new Set(ET.map(e=>e.modelId.toLowerCase()));const TT=E(["not-exposed","no-known-change","known-change"]);TT.enum;const DT=y({modelId:c().trim().min(1),date:c().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:P(),sourceUrl:c().url()}),OT=y({status:E(["no-known-change","known-change"]),modelIds:k(c().trim().min(1)).min(1),changes:k(DT),changeCount:h().int().nonnegative(),unverifiedChangeCount:h().int().nonnegative(),firstChangeDate:c().optional(),lastChangeDate:c().optional(),knownGoodAsOf:c(),checkedThroughPeriodEnd:P()}),RT={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function MT(e){const t=e.trim().toLowerCase();return RT[t]??e.charAt(0).toUpperCase()+e.slice(1)}function Qp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Wr(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function Zp(e){return[...new Set(e.filter(t=>t!==null))].sort()}function BT(e,t){const i=MT(e),s=Array.isArray(t.changes)?t.changes:[],r=Qp(t.changeCount)||s.length,u=Math.min(r,Qp(t.unverifiedChangeCount)||Qp(t.unconfirmedChangeCount)||s.filter(x=>x.confirmed===!1).length),d=Wr(t.knownGoodAsOf),g=t.checkedThroughPeriodEnd!==!1,b={engine:i,confirmedCount:r-u,unconfirmedCount:u,knownGoodAsOf:d,checkedThroughPeriodEnd:g};if(s.length>0)return{...b,confirmedDates:Zp(s.filter(x=>x.confirmed!==!1).map(x=>Wr(x.date))),unconfirmedDates:Zp(s.filter(x=>x.confirmed===!1).map(x=>Wr(x.date)))};const v=Zp([Wr(t.firstChangeDate),Wr(t.lastChangeDate)]);return r===0?{...b,confirmedDates:[],unconfirmedDates:[]}:u===0?{...b,confirmedDates:v,unconfirmedDates:[]}:b.confirmedCount===0?{...b,confirmedDates:[],unconfirmedDates:v}:{...b,confirmedDates:[],unconfirmedDates:[]}}function qT(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 gv(e,t){return e.length===0?null:e.length===1&&t<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function IT(e){const t=gv(e.confirmedDates,e.confirmedCount),i=gv(e.unconfirmedDates,e.unconfirmedCount),s=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return t?`${s} was updated ${t}, 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(t&&i)return`${s} was updated ${t}, 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 yv(e){const t=e.filter(s=>!s.checkedThroughPeriodEnd&&s.knownGoodAsOf!==null);return t.length===0?null:`We last checked for model updates on ${t.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 XV(e){const t=Object.entries(e??{}).map(([b,v])=>BT(b,v??{})).sort((b,v)=>b.engine.localeCompare(v.engine));if(t.length===0)return null;const i=t.filter(b=>b.confirmedCount+b.unconfirmedCount>0);if(i.length===0){const b=[...new Set(t.map(_=>_.engine))],v=b.length>1,x=yv(t),S=[...new Set(t.map(_=>_.knownGoodAsOf).filter(_=>_!==null))].sort(),j=x??(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 ${qT(b)} 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((b,v)=>b+v.confirmedCount+v.unconfirmedCount,0),r=i.some(b=>b.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=yv(t);return{kind:"change",text:`${i.map(IT).join(" ")} ${d}${g?` ${g}`:""}`}}const LT=E(["gsc","ga4","gbp"]);y({id:c(),domain:c(),connectionType:LT,propertyId:c().nullable().optional(),sitemapUrl:c().nullable().optional(),scopes:k(c()).default([]),createdAt:c(),updatedAt:c()});const PT=y({date:c(),query:c(),page:c(),country:c().nullable().optional(),device:c().nullable().optional(),clicks:h(),impressions:h(),ctr:h(),position:h()});E(["clicks","impressions","date"]);y({rows:k(PT),totalMatching:h(),truncated:P(),latestAvailableDate:c().nullable()});const $T=y({date:c(),clicks:h(),impressions:h(),ctr:h()});y({totals:y({clicks:h(),impressions:h(),ctr:h(),days:h()}),daily:k($T)});const UT=y({page:c(),clicks:h(),impressions:h(),ctr:h()});y({rows:k(UT),totals:y({clicks:h(),impressions:h(),ctr:h(),days:h(),coveredFrom:c().nullable(),coveredThrough:c().nullable(),complete:P()}).nullable(),totalsSource:ae("property-daily"),rankedFrom:c().nullable(),rankedThrough:c().nullable()});const Df=y({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:P().nullable().optional(),richResults:k(c()).default([]),referringUrls:k(c()).default([]),inspectedAt:c()});E(["stable","reindexed","deindexed","still-missing","new"]);const VT=y({url:c(),previousState:c().nullable(),currentState:c().nullable(),transitionDate:c()}),KT=y({reason:c(),count:h(),urls:k(Df).default([])});y({summary:y({total:h(),indexed:h(),notIndexed:h(),deindexed:h(),percentage:h()}),lastInspectedAt:c().nullable(),lastSyncedAt:c().nullable(),indexed:k(Df).default([]),notIndexed:k(Df).default([]),deindexed:k(VT).default([]),reasonGroups:k(KT).default([])});y({url:c(),type:E(["URL_UPDATED","URL_DELETED"]),notifiedAt:c()});const GT=y({url:c(),type:E(["URL_UPDATED","URL_DELETED"]),notifiedAt:c(),status:E(["success","error"]),error:c().optional()});y({summary:y({total:h().int().nonnegative(),succeeded:h().int().nonnegative(),failed:h().int().nonnegative()}),results:k(GT).default([])});y({date:c(),indexed:h(),notIndexed:h(),unknownPages:h().default(0),verifiedByInspection:h().default(0),derivedFromImpressions:h().default(0),reasonBreakdown:Le(c(),h()).default({})});const HT=y({siteUrl:c(),permissionLevel:c()});y({sites:k(HT).default([])});const QT=y({type:c(),submitted:c(),indexed:c().optional().describe("Deprecated compatibility field.")}),Sw=y({path:c(),parentSitemapUrl:c().optional(),lastSubmitted:c().optional(),isPending:P().optional(),isSitemapsIndex:P().optional(),type:c().optional(),lastDownloaded:c().optional(),warnings:c().optional(),errors:c().optional(),contents:k(QT).optional()});y({sitemaps:k(Sw).default([]),summary:y({total:h().int().nonnegative(),indexes:h().int().nonnegative(),files:h().int().nonnegative()}),preferredSubmissionUrls:k(c()).default([])});y({sitemapUrls:k(c().url().refine(e=>{const t=new URL(e).protocol;return t==="http:"||t==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const ZT=y({sitemapUrl:c(),status:E(["accepted","error"]),submittedAt:c().optional(),error:c().optional()});y({summary:y({total:h().int().nonnegative(),accepted:h().int().nonnegative(),failed:h().int().nonnegative()}),results:k(ZT)});y({sitemaps:k(Sw),primarySitemapUrl:c(),run:y({id:c(),projectId:c(),kind:c(),status:c(),trigger:c(),createdAt:c()}).nullable()});const FT=y({name:c(),accountName:c().nullable(),type:c().nullable(),role:c().nullable()});y({accounts:k(FT),total:h().int().nonnegative()});const YT=y({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:k(c()),description:c().nullable(),serviceArea:Le(c(),Xn()).nullable(),regularHours:Le(c(),Xn()).nullable(),primaryPhone:c().nullable(),openStatus:c().nullable(),openingDate:c().nullable(),selected:P(),syncedAt:c().nullable(),createdAt:c(),updatedAt:c()});y({locations:k(YT),totalDiscovered:h().int().nonnegative(),totalSelected:h().int().nonnegative()});y({selectAllNew:P().default(!0),accountName:c().optional(),switchAccount:P().default(!1)});y({selected:P()});y({locationNames:k(c()).optional(),daysOfMetrics:h().int().positive().max(540).optional(),monthsOfKeywords:h().int().positive().max(18).optional()});y({runId:c(),status:c()});const XT=y({locationName:c(),date:c(),metric:c(),value:h().int()});y({metrics:k(XT),total:h().int().nonnegative()});const JT=y({locationName:c(),periodStart:c(),periodEnd:c(),keyword:c(),valueCount:h().int().nullable(),valueThreshold:h().int().nullable()});y({keywords:k(JT),total:h().int().nonnegative(),thresholdedPct:h().int().min(0).max(100)});const WT=y({locationName:c(),placeActionLinkName:c(),placeActionType:c(),uri:c().nullable(),isPreferred:P(),providerType:c().nullable()});y({placeActions:k(WT),total:h().int().nonnegative()});const eD=y({locationName:c(),populatedGroupCount:h().int().nonnegative(),syncedAt:c(),attributes:Le(c(),Xn())});y({lodging:k(eD),total:h().int().nonnegative()});const tD=y({name:c(),valueType:c(),values:k(Ge([P(),c()])),unsetValues:k(c()),uris:k(c())}),nD=y({locationName:c(),attributeCount:h().int().nonnegative(),syncedAt:c(),attributes:k(tD)});y({attributes:k(nD),total:h().int().nonnegative()});const aD=y({locationName:c(),placeId:c(),tier:c(),amenities:k(c()),syncedAt:c(),place:Le(c(),Xn())});y({places:k(aD),total:h().int().nonnegative()});y({scope:y({locationName:c().nullable(),locationCount:h().int().nonnegative()}),performance:y({totals:Le(c(),h()),recent7d:Le(c(),h()),prior7d:Le(c(),h()),deltaPct:Le(c(),h().nullable())}),freshness:y({dataThroughDate:c().nullable(),latestStoredDate:c().nullable(),pendingDays:h().int().nonnegative()}),timeseries:k(y({date:c(),pending:P(),metrics:Le(c(),h())})),keywords:y({total:h().int().nonnegative(),thresholdedCount:h().int().nonnegative(),thresholdedPct:h().int().min(0).max(100)}),placeActions:y({total:h().int().nonnegative(),hasReservationCta:P(),hasBookingCta:P(),hasDirectMerchantCta:P()}),lodging:y({lodgingLocationCount:h().int().nonnegative(),populatedLodgingCount:h().int().nonnegative(),emptyLodgingCount:h().int().nonnegative()}),profileCompleteness:y({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 iD={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 sD(e){const t=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(s=>s.toLowerCase());if(t.length===0)return e;const i=t.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function JV(e){return iD[e]??sD(e)}const oD=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],rD=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function WV(e){return oD.includes(e)?"conversion":rD.includes(e)?"reach":"other"}y({id:c(),domain:c(),siteUrl:c().nullable().optional(),createdAt:c(),updatedAt:c()});const Fp=y({id:c(),url:c(),httpCode:h().nullable().optional(),inIndex:P().nullable().optional(),lastCrawledDate:c().nullable().optional(),inIndexDate:c().nullable().optional(),inspectedAt:c(),documentSize:h().nullable().optional(),anchorCount:h().nullable().optional(),discoveryDate:c().nullable().optional()});y({summary:y({total:h(),indexed:h(),notIndexed:h(),unknown:h().optional(),percentage:h()}),lastInspectedAt:c().nullable(),indexed:k(Fp).default([]),notIndexed:k(Fp).default([]),unknown:k(Fp).default([]).optional()});y({query:c(),impressions:h(),clicks:h(),ctr:h(),averagePosition:h()});y({date:c(),indexed:h(),notIndexed:h(),unknown:h()});const lD=y({url:c(),status:E(["success","error"]),submittedAt:c(),error:c().optional()});y({summary:y({total:h().int().nonnegative(),succeeded:h().int().nonnegative(),failed:h().int().nonnegative()}),results:k(lD).default([])});const jw=y({url:c(),verified:P()});y({sites:k(jw).default([])});y({connected:P(),domain:c(),siteUrl:c().nullable(),createdAt:c().nullable(),updatedAt:c().nullable()});y({connected:P(),domain:c(),siteUrl:c().nullable(),availableSites:k(jw).default([])});y({siteUrl:c()});const cD=y({name:c(),alive:P(),lastUsed:c().nullable()});y({connected:P(),endpoint:c(),version:c().optional(),browserVersion:c().optional(),targets:k(cD).default([])});const Vo=E(["live","staging"]);y({projectName:c(),url:c(),stagingUrl:c().optional(),username:c(),defaultEnv:Vo,createdAt:c(),updatedAt:c()});const bv=y({url:c(),reachable:P(),pageCount:h().nullable().optional(),version:c().nullable().optional(),error:c().nullable().optional(),plugins:k(c()).optional(),authenticatedUser:y({id:h(),slug:c()}).nullable().optional()});y({connected:P(),projectName:c(),defaultEnv:Vo,live:bv.nullable(),staging:bv.nullable(),adminUrl:c().nullable().optional()});const uD=y({id:h(),slug:c(),title:c(),status:c(),modifiedAt:c().nullable().optional(),link:c().nullable().optional()}),Aw=y({title:c().nullable(),description:c().nullable(),noindex:P().nullable(),writable:P().default(!1),writeTargets:k(c()).default([])}),dD=y({type:c(),json:Le(c(),Xn())}),mD=uD.extend({env:Vo,content:c(),seo:Aw,schemaBlocks:k(dD).default([])}),vv=mD.extend({contentHash:c(),contentSnippet:c()}),Nw=y({manualRequired:ae(!0),targetUrl:c(),adminUrl:c().nullable().optional(),content:c(),nextSteps:k(c()).default([])}),pD=y({slug:c(),severity:E(["high","medium","low"]),code:E(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:c()});y({slug:c(),title:c(),status:c(),wordCount:h(),seo:Aw,schemaPresent:P(),issues:k(pD).default([])});const fD=y({slug:c(),status:E(["applied","skipped","manual"]),error:c().optional(),manualAssist:Nw.optional()});y({env:Vo,strategy:E(["plugin","manual"]),results:k(fD)});const hD=y({slug:c(),status:E(["deployed","stripped","skipped","failed"]),schemasInjected:k(c()).optional(),manualAssist:Nw.optional(),error:c().optional()});y({env:Vo,results:k(hD)});const gD=y({slug:c(),title:c(),canonrySchemas:k(c()),thirdPartySchemas:k(c()),hasCanonrySchema:P()});y({env:Vo,pages:k(gD)});const yD=y({name:c(),status:E(["completed","skipped","failed"]),summary:c().optional(),error:c().optional()});y({projectName:c(),steps:k(yD)});y({slug:c(),live:vv,staging:vv,hasDifferences:P(),differences:y({title:P(),slug:P(),content:P(),seoTitle:P(),seoDescription:P(),noindex:P(),schema:P()})});const bD=y({name:c(),displayName:c().optional(),keyUrl:c().optional(),modelHint:c().optional(),model:c().optional(),defaultModel:c().optional(),configured:P(),quota:R9.optional(),vertexConfigured:P().optional()}),vD=y({name:c(),displayName:c(),mode:E(["api","browser"]),modelConfigurable:P(),defaultModel:c(),knownModels:k(y({id:c(),displayName:c(),tier:E(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:y({source:c(),flags:c()}),modelValidationHint:c()}),kv=y({configured:P()});y({providers:k(bD).default([]),providerCatalog:k(vD).default([]),google:kv,bing:kv});const $i=E(["queued","running","completed","partial","failed","cancelled"]),dn=$i.enum,_w=E(["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"]),Oe=_w.enum,E0=E(["manual","scheduled","config-apply","backfill","probe"]),Ao=E0.enum,Fa=E(["cited","not-cited"]),Eu=Fa.enum,Tu=E(["visible","not-visible"]);Tu.enum;const vl=E(["mentioned","not-mentioned"]);vl.enum;const Cw=E(["new","cited","lost","emerging","not-cited"]);Cw.enum;const kD=E(["new","mentioned","lost","emerging","not-mentioned"]);kD.enum;const wD=E([Ao.manual,Ao.probe]);y({kind:ae(Oe["answer-visibility"]).optional(),trigger:wD.optional(),providers:k(dt).optional(),queries:k(c().min(1)).min(1).optional(),measurementScope:wE.optional(),location:c().min(1).optional(),allLocations:P().optional(),noLocation:P().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const xD=y({message:c(),raw:Xn().optional()}),SD=y({message:c().optional(),providers:Le(c(),xD).optional()}),jD=y({id:c(),projectId:c(),kind:_w,status:$i,trigger:E0.default("manual"),measurementPlanVersionId:c().nullable().optional(),measurementManifest:Le(c(),Xn()).nullable().optional(),measurementScope:xE.nullable().optional(),measurementExecutionIdentity:lw.nullable().optional(),location:c().nullable().optional(),queries:k(c()).nullable().optional(),startedAt:c().nullable().optional(),finishedAt:c().nullable().optional(),error:SD.nullable().optional(),queryBasketRevision:h().int().nullable().optional(),createdAt:c()});function T0(e){if(e.providers){const t=Object.entries(e.providers);if(t.length===1){const[i,s]=t[0];return`${i}: ${s.message}`}if(t.length>1)return t.map(([i,s])=>`${i}: ${s.message}`).join(" • ")}return e.message??"Run failed."}const Xu=y({uri:c(),title:c()}),AD=y({status:E(["applied","ignored","browser-implicit","unknown"]),resolved:gn.nullable().optional()}),zw=y({id:c(),runId:c(),queryId:c(),query:c().optional(),provider:dt,citationState:Fa,answerMentioned:P().optional(),visibilityState:Tu.optional(),mentionState:vl.optional(),transition:Cw.optional(),answerText:c().nullable().optional(),citedDomains:k(c()).default([]),citedUrls:k(c()).nullable().default(null),captureStatus:Ge([Gu,he()]).default(null),sourceCount:h().int().nonnegative().nullable().default(null),resolvedCount:h().int().nonnegative().nullable().default(null),captureVersion:h().int().positive().nullable().default(null),retrievalStatus:Ge([A0,he()]).default(null),retrievalContract:Ge([N0,he()]).default(null),competitorOverlap:k(c()).default([]),recommendedCompetitors:k(c()).default([]),matchedTerms:k(c()).default([]),groundingSources:k(Xu).default([]),searchQueries:k(c()).default([]),model:c().nullable().optional(),servedModel:c().nullable().optional(),location:c().nullable().optional(),requestedContext:gn.nullable().optional(),supportedContext:AD.nullable().optional(),createdAt:c()});y({snapshots:k(zw),total:h().int().nonnegative()});const ND=y({queryId:c().nullable(),query:c().nullable(),run1State:Fa.nullable(),run2State:Fa.nullable(),run1AnswerMentioned:P().nullable(),run2AnswerMentioned:P().nullable(),run1VisibilityState:Tu.nullable(),run2VisibilityState:Tu.nullable(),run1MentionState:vl.nullable().optional(),run2MentionState:vl.nullable().optional(),changed:P(),visibilityChanged:P()});y({run1:c(),run2:c(),diff:k(ND)});const _D=jD.extend({snapshots:k(zw).optional()}),CD=y({totalRuns:h().int().nonnegative(),run:_D.nullable()});y({id:c(),projectId:c().nullable().optional(),actor:c(),action:c(),entityType:c(),entityId:c().nullable().optional(),diff:Xn().optional(),userAgent:c().nullable().optional(),actorSession:c().nullable().optional(),createdAt:c()});const zD=E(["yes","no","unknown","not-mentioned"]),wv=k(c().min(1));y({companyName:c().min(1),domain:c().min(1),queries:wv.optional(),phrases:wv.optional(),competitors:k(c().min(1)).optional().default([])}).superRefine((e,t)=>{e.queries!==void 0&&e.phrases!==void 0&&t.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const ED=y({name:c(),count:h().int().nonnegative()}),TD=y({id:c(),name:c(),weight:h(),score:h(),findings:k(y({type:c(),message:c()})).default([]),recommendations:k(c()).default([])}),DD=y({url:c(),finalUrl:c(),auditedAt:c(),overallScore:h(),summary:c(),factors:k(TD).default([])}),OD=y({industry:c(),summary:c(),services:k(c()).default([]),categoryTerms:k(c()).default([])}),RD=y({provider:c(),displayName:c(),model:c().nullable().optional(),mentioned:P(),cited:P(),describedAccurately:zD,accuracyNotes:c().nullable().optional(),incorrectClaims:k(c()).default([]),recommendedCompetitors:k(c()).default([]),citedDomains:k(c()).default([]),groundingSources:k(Xu).default([]),searchQueries:k(c()).default([]),answerText:c(),error:c().nullable().optional()}),MD=y({query:c(),providerResults:k(RD).default([])}),BD=y({totalQueries:h().int().nonnegative(),totalProviders:h().int().nonnegative(),totalComparisons:h().int().nonnegative(),mentionCount:h().int().nonnegative(),citationCount:h().int().nonnegative(),topCompetitors:k(ED).default([]),visibilityGap:c(),whatThisMeans:k(c()).default([]),recommendedActions:k(c()).default([])});y({companyName:c(),domain:c(),homepageUrl:c(),generatedAt:c(),queries:k(c()).default([]),competitors:k(c()).default([]),profile:OD,audit:DD,queryResults:k(MD).default([]),summary:BD});const Ew=E(["pass","partial","fail"]);Ew.enum;const Tw=E(["up","down","flat"]);Tw.enum;const qD=y({id:c(),name:c(),weight:h(),avgScore:h(),status:Ew,pagesPassing:h().int().nonnegative(),pagesPartial:h().int().nonnegative(),pagesFailing:h().int().nonnegative()}),ID=y({factorId:c(),factorName:c(),avgScore:h(),affectedPages:h().int().nonnegative(),totalPages:h().int().nonnegative(),affectedPct:h().int().nonnegative(),topRecommendations:k(c()).default([])});y({project:c(),hasData:P(),runId:c().nullable(),runStatus:$i.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:Tw.nullable(),previousScore:h().nullable(),previousAuditedAt:c().nullable(),factors:k(qD).default([]),crossCuttingIssues:k(ID).default([]),prioritizedFixes:k(c()).default([])});const LD=y({id:c(),name:c(),weight:h(),score:h()}),PD=y({url:c(),overallScore:h(),status:E(["success","error"]),error:c().nullable().optional(),factors:k(LD).default([])});y({project:c(),runId:c().nullable(),auditedAt:c().nullable(),total:h().int().nonnegative(),pages:k(PD).default([])});const $D=y({runId:c(),auditedAt:c(),aggregateScore:h(),pagesAudited:h().int().nonnegative()});y({project:c(),points:k($D).default([])});y({sitemapUrl:c().url().optional(),limit:h().int().positive().max(2e3).optional()});y({runId:c(),status:$i});const D0=E(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);D0.enum;y({id:c(),projectId:c(),kind:D0,cronExpr:c(),preset:c().nullable().optional(),timezone:c().default("UTC"),enabled:P().default(!0),providers:k(dt).default([]),sourceId:c().nullable().optional(),lastRunAt:c().nullable().optional(),nextRunAt:c().nullable().optional(),createdAt:c(),updatedAt:c()});y({kind:D0.optional(),preset:c().optional(),cron:c().optional(),timezone:c().optional().default("UTC"),enabled:P().optional().default(!0),providers:k(dt).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 O0=E(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);O0.enum;const R0=E(["cited","aspirational","wasted-surface"]),xv=R0.enum;xv.cited,xv.aspirational;const Ju=E(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),UD=Ju.enum;UD["direct-competitor"];const Wu=E(["queued","seeding","probing","completed","failed"]);Wu.enum;const Dw=y({domain:c().min(1),hits:h().int().positive(),competitorType:Ju.default("unknown")}),VD=y({id:c(),sessionId:c(),projectId:c(),query:c(),bucket:R0.nullable().default(null),citationState:Fa,citedDomains:k(c()).default([]),answerMentioned:P().nullable().default(null),createdAt:c()}),KD=y({id:c(),projectId:c(),status:Wu,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:k(gn).nullable().optional(),seedRawCandidates:k(c()).nullable().optional(),dedupClusterMinSims:k(h()).nullable().optional(),dedupBandPairFraction:h().nullable().optional(),dedupPairsTotal:h().int().nullable().optional(),seedProviders:k(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:k(Dw).default([]),warning:c().nullable().optional(),error:c().nullable().optional(),startedAt:c().nullable().optional(),finishedAt:c().nullable().optional(),createdAt:c()});KD.extend({probes:k(VD).default([])});const GD=500,HD=8,QD=["gemini","openai"],ZD=E(QD);y({icpDescription:c().min(1).optional(),buyerDescription:c().min(1).optional(),seedProviders:k(ZD).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:h().min(0).max(1).optional(),maxProbes:h().int().positive().max(GD).optional(),probeConcurrency:h().int().min(1).max(HD).optional(),locations:k(c().min(1)).optional()});y({buckets:k(R0).min(1).optional(),includeCompetitors:P().optional(),competitorTypes:k(Ju).min(1).optional()});y({sessionId:c(),projectId:c(),status:Wu,queriesByBucket:y({cited:k(c()),aspirational:k(c()),"wasted-surface":k(c())}),suggestedCompetitors:k(Dw)});y({sessionId:c(),projectId:c(),promoted:y({queries:k(c()),competitors:k(c())}),skipped:y({queries:k(c()),competitors:k(c())})});Ge([ae("cli"),c().regex(/^discovery:.+$/)]);const FD=y({query:c().min(1),probeHits:h().int().positive()}),YD=y({rawCandidates:h().int().nonnegative(),admitted:h().int().nonnegative(),rejected:y({belowFloor:h().int().nonnegative(),length:h().int().nonnegative(),navigational:h().int().nonnegative(),duplicate:h().int().nonnegative(),offAnchor:h().int().nonnegative(),semanticDuplicate:h().int().nonnegative()})});y({sessionId:c(),projectId:c(),provider:c(),status:Wu,minProbeHits:h().int().positive(),anchorApplied:P(),semanticNoveltyApplied:P(),candidates:k(FD),stats:YD});const M0=E(["own","direct-competitor","ota-aggregator","editorial-media","other"]);M0.enum;const Ow=E(["7d","30d","90d","all"]),Sv=E(["improving","declining","stable"]),XD=E(["mentioned","cited"]);XD.enum;const Of=y({citationRate:h(),cited:h().int(),total:h().int(),mentionRate:h(),mentionedCount:h().int()}),B0=c().trim().min(1),JD=k(B0).min(1).superRefine((e,t)=>{for(let i=1;i<e.length;i+=1)e[i-1]>=e[i]&&t.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[i]})}),Ro=gt("status",[y({status:ae("known"),model:B0}),y({status:ae("unknown")}),y({status:ae("mixed"),models:JD,includesUnknown:P()})]),WD=y({observedAt:c(),bucketStartDate:c(),from:Ro,to:Ro,fromPreWindowAnchor:P().optional(),anchorObservedAt:c().optional()}),Rw=y({latestObservation:y({observedAt:c(),state:Ro}),events:k(WD),eventTotal:h().int().nonnegative().optional(),anchorUnavailable:P().optional()}),eO=Le(c(),Rw),tO=Rw.extend({latestServedModelIds:k(B0).default([])}),nO=Le(c(),tO),aO=y({observedAt:c(),configured:Ro,served:Ro}),iO=y({rate:h().nullable(),projectMentionSnapshots:h().int().nonnegative(),competitorMentionSnapshots:h().int().nonnegative()}),sO=y({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:iO,byProvider:Le(c(),Of),modelEvidenceByProvider:Le(c(),Ro).default({}),basketRevision:h().int().nullable().default(null)}),oO=y({revision:h().int(),at:c(),added:k(c()),removed:k(c())}),rO=y({date:c(),delta:h().int(),label:c()}),lO=y({at:c(),identity:lw});y({window:Ow,buckets:k(sO),overall:Of,byProvider:Le(c(),Of),trend:Sv,mentionTrend:Sv,queryChanges:k(rO),basketChanges:k(oO).default([]),executionIdentityChanges:k(lO).default([]),referenceBasketRevision:h().int().nullable().default(null),modelAttribution:eO.default({}),servedModelAttribution:nO.default({}),modelServiceMismatch:Le(c(),aO).default({}),modelPointerChanges:Le(c(),OT).default({})});const jv=y({category:O0,label:c(),count:h().int(),percentage:h(),topDomains:k(y({domain:c(),count:h().int()}))}),cO=y({domain:c(),count:h().int(),percentage:h(),category:O0,label:c(),surfaceClass:M0}),uO=y({surfaceClass:M0,label:c(),count:h().int(),percentage:h(),domainCount:h().int()}),Av=y({totalCitedSlots:h().int(),domainTotal:h().int(),entries:k(cO),truncatedDomainCount:h().int(),truncatedCitedSlots:h().int(),bySurfaceClass:k(uO)});y({overall:k(jv),byQuery:Le(c(),k(jv)),ranked:Av,byProvider:Le(c(),Av),runId:c(),window:Ow,limit:h().int().nullable()});const q0=y({total:h().int(),checked:h().int(),mentioned:h().int(),cited:h().int(),mentionRate:h().nullable(),citedRate:h().nullable()}),Mw=q0.extend({provider:c(),firstObserved:c(),lastObserved:c()}),dO=q0.extend({queryId:c().nullable(),query:c(),firstObserved:c(),lastObserved:c(),providers:k(Mw).optional()}),mO=y({since:c().nullable(),until:c().nullable(),lastRuns:h().int().nullable(),runCount:h().int()}),pO=E(["provider"]),Rf=y({domain:c(),mentions:h().int()}),fO=y({percent:h().nullable(),projectMentions:h().int(),competitorMentions:h().int(),snapshotsWithAnswerText:h().int(),perCompetitor:k(Rf)});y({project:c(),groupBy:pO.optional(),window:mO,totals:q0,byProvider:k(Mw).optional(),queries:k(dO),shareOfVoice:fO.optional()});const hO=E(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),gO=E(["up","down","flat"]),Nv=y({point:h().nullable(),ciLow:h().nullable(),ciHigh:h().nullable(),numerator:h().int(),denominator:h().int()}),yO=E(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),bO=y({key:yO,label:c(),driftRobust:P(),from:Nv,to:Nv,rateRatio:h().nullable(),direction:Ge([gO,he()]),verdict:hO}),_v=y({month:c(),since:c(),until:c(),runCount:h().int(),lowRunCount:P()}),vO=y({queryCount:h().int(),excludedFromOnly:h().int(),excludedToOnly:h().int(),providers:k(c()),excludedProviders:k(c())}),kO=y({provider:c(),fromModels:k(c()),toModels:k(c())}),wO=E(["included","model-discontinuous","model-unknown"]),xO=y({provider:c(),status:wO,fromModels:k(c()),toModels:k(c())}),SO=E(["comparable","model-discontinuous","model-unknown","insufficient-data"]),jO=y({status:SO,comparedProviders:k(c()),providers:k(xO)}),AO=y({provider:c(),from:y({checked:h().int(),mentioned:h().int(),cited:h().int()}),to:y({checked:h().int(),mentioned:h().int(),cited:h().int()})}),NO=y({from:y({count:h().int(),of:h().int()}),to:y({count:h().int(),of:h().int()})});y({project:c(),from:_v,to:_v,basket:vO,metrics:k(bO),queriesMentioned:NO,byProvider:k(AO),modelChanges:k(kO),continuity:jO,competitors:y({from:k(Rf),to:k(Rf)})});E(["json","csv"]);const _O=y({runId:c(),runKind:ae("answer-visibility"),runStatus:$i,runTrigger:E0,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:Fa,cited:P(),answerMentioned:P().nullable(),mentionState:Ge([vl,he()]),citedDomains:k(c()),citedUrls:k(c()).nullable(),captureStatus:Ge([Gu,he()]),sourceCount:h().int().nonnegative().nullable(),resolvedCount:h().int().nonnegative().nullable(),captureVersion:h().int().positive().nullable(),competitorOverlap:k(c()),recommendedCompetitors:k(c()),answerText:c().nullable(),groundingSources:k(Xu),searchQueries:k(c())}),CO=y({since:c().nullable(),until:c().nullable(),includeProbes:P()});y({schemaVersion:ae("canonry.results-export/v1"),generatedAt:c(),project:y({id:c(),name:c(),displayName:c(),canonicalDomain:c(),country:c(),language:c()}),filters:CO,recordCount:h().int().nonnegative(),records:k(_O)});const ed=E(["organic","paid"]);ed.enum;y({id:c(),projectId:c(),propertyId:c(),clientEmail:c(),connected:P(),createdAt:c(),updatedAt:c()});y({date:c(),landingPage:c(),sessions:h(),organicSessions:h(),users:h()});const I0=E(["session","first_user","manual_utm"]),zO=y({source:c(),medium:c(),trafficClass:ed,sessions:h(),users:h().optional(),sourceDimension:I0}),EO=y({source:c(),medium:c(),trafficClass:ed,sourceDimension:I0,landingPage:c(),sessions:h(),users:h().optional()}),TO=y({source:c(),medium:c(),sessions:h(),users:h(),channelGroup:c()}),el=y({sessions:h(),sharePct:h(),sharePctDisplay:c()}),DO=y({organic:el,social:el,direct:el,ai:el,other:el});y({totalSessions:h(),totalOrganicSessions:h(),totalDirectSessions:h(),totalUsers:h().nullable(),topPages:k(y({landingPage:c(),sessions:h(),organicSessions:h(),directSessions:h(),users:h()})),aiReferrals:k(zO),aiReferralLandingPages:k(EO),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:k(TO),socialSessions:h(),socialUsers:h(),channelBreakdown:DO,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()});y({connected:P(),propertyId:c().nullable(),clientEmail:c().nullable(),authMethod:E(["service-account","oauth"]).nullable(),lastSyncedAt:c().nullable(),createdAt:c().nullable().optional(),updatedAt:c().nullable().optional()});y({synced:P(),rowCount:h().int().nonnegative(),aiReferralCount:h().int().nonnegative(),socialReferralCount:h().int().nonnegative(),days:h().int().nonnegative(),syncedAt:c(),measurement:y({acquisition:y({days:h().int().nonnegative(),status:E(["ready","error"]),rowCount:h().int().nonnegative(),error:c().optional()}),leads:y({days:h().int().nonnegative(),status:E(["ready","error","not-configured"]),rowCount:h().int().nonnegative(),attributionScope:E(["landing-page","channel"]).optional(),error:c().optional()})}),syncedComponents:k(c()).optional()});y({date:c(),source:c(),medium:c(),trafficClass:ed,landingPage:c(),sessions:h(),users:h(),sourceDimension:I0});const OO=y({source:c(),sessions:h(),paidSessions:h(),organicSessions:h()}),RO=y({date:c(),sessions:h(),paidSessions:h(),organicSessions:h(),bySource:k(OO)});y({days:k(RO),sources:k(c()),totalSessions:h(),totalPaidSessions:h(),totalOrganicSessions:h()});y({date:c(),source:c(),medium:c(),sessions:h(),users:h(),channelGroup:c()});y({date:c(),sessions:h(),organicSessions:h(),users:h(),usersSource:E(["deduplicated","landing-page-sum"])});y({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(),y({citedRate:h(),mentionRate:h(),cited:h().int().nonnegative(),mentioned:h().int().nonnegative(),total:h().int().nonnegative()})),createdAt:c(),status:E(["ready","no-data"]),reason:ae("no-runs-yet").optional()});const Bw=E(["claude","openai","gemini","zai","deepinfra"]),MO=y({id:Bw,label:c(),defaultModel:c(),configured:P(),keySource:E(["config","env"]).nullable()});y({providers:k(MO).default([]),defaultProvider:Bw.nullable()});const BO=E(["aero","user","compaction"]);BO.enum;const qw=128;y({key:c().min(1).max(qw),value:c().min(1)});y({key:c().min(1).max(qw)});const Ko=E(["commoncrawl","bing-webmaster"]);Ko.enum;const L0=E(["queued","downloading","querying","ready","failed"]);L0.enum;y({id:c(),release:c(),status:L0,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 qO=y({linkingDomain:c(),numHosts:h().int(),source:Ko}),IO=y({projectId:c(),release:c(),targetDomain:c(),totalLinkingDomains:h().int(),totalHosts:h().int(),top10HostsShare:c(),queriedAt:c(),source:Ko,excludedLinkingDomains:h().int().optional(),excludedHosts:h().int().optional()});y({source:Ko,summary:IO.nullable(),total:h().int(),rows:k(qO)});y({release:c(),totalLinkingDomains:h().int(),totalHosts:h().int(),top10HostsShare:c(),queriedAt:c(),source:Ko});const LO=y({source:Ko,connected:P(),hasData:P(),latestRelease:c().nullable(),totalLinkingDomains:h().int(),lastSyncedAt:c().nullable()});y({projectId:c(),targetDomain:c(),sources:k(LO),anyConnected:P(),anyData:P()});y({duckdbInstalled:P(),duckdbVersion:c().nullable().optional(),duckdbSpec:c(),pluginDir:c()});y({installed:P(),version:c(),path:c(),alreadyPresent:P()});y({release:c(),vertexUrl:c(),edgesUrl:c(),vertexBytes:h().int().nullable(),edgesBytes:h().int().nullable(),lastModified:c().nullable()});y({release:c(),syncStatus:L0.nullable(),bytes:h().int(),lastUsedAt:c().nullable()});const P0=E(["positive","caution","negative","neutral"]),Ei=y({label:c(),value:c(),delta:c(),tone:P0,description:c(),tooltip:c().optional(),trend:k(h()),progress:h().optional(),providerCoverage:c().optional()}),PO=Ei.extend({breakdown:y({projectMentionSnapshots:h().int().nonnegative(),competitorMentionSnapshots:h().int().nonnegative(),perCompetitor:k(y({domain:c(),mentionSnapshots:h().int().nonnegative(),shareOfCompetitiveTotal:h()})),snapshotsWithAnswerText:h().int().nonnegative(),snapshotsTotal:h().int().nonnegative()})}),Yp=y({gained:h().int().nonnegative(),lost:h().int().nonnegative(),tone:P0,hasPreviousRun:P(),gainedQueries:k(c()).optional(),lostQueries:k(c()).optional()}),$O=y({hasPreviousRun:P(),comparable:P(),querySetChanged:P(),previousRunAt:c().nullable(),currentQueryCount:h().int().nonnegative(),previousQueryCount:h().int().nonnegative(),comparableQueryCount:h().int().nonnegative(),addedQueryCount:h().int().nonnegative(),removedQueryCount:h().int().nonnegative(),addedQueries:k(c()),removedQueries:k(c())}),UO=y({id:c(),projectId:c(),runId:c().nullable(),type:E(["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:E(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),recommendation:y({action:c(),target:c().optional(),reason:c()}).optional(),cause:y({cause:c(),competitorDomain:c().optional(),details:c().optional()}).optional(),dismissed:P(),createdAt:c()}),VO=y({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(),y({citedRate:h(),mentionRate:h(),cited:h().int().nonnegative(),mentioned:h().int().nonnegative(),total:h().int().nonnegative()})),createdAt:c(),status:E(["ready","no-data"]),reason:ae("no-runs-yet").optional()});y({project:Ez,latestRun:CD,health:VO.nullable(),topInsights:k(UO),queryCounts:y({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:k(y({provider:c(),citedRate:h(),cited:h().int().nonnegative(),total:h().int().nonnegative()})),transitions:y({since:c().nullable(),gained:h().int().nonnegative(),lost:h().int().nonnegative(),emerging:h().int().nonnegative()}),scores:y({mention:Ei,visibility:Ei,mentionShare:PO,gapQueries:Ei,mentionGaps:Ei,indexCoverage:Ei,competitorPressure:Ei,runStatus:Ei}),movementSummary:Yp,citationMovement:Yp,mentionMovement:Yp,movementComparison:$O,competitors:k(y({id:c(),domain:c(),citationCount:h().int().nonnegative(),totalQueries:h().int().nonnegative(),pressureLabel:E(["None","Low","Moderate","High"]),citedQueries:k(c())})),providerScores:k(y({provider:c(),model:c().nullable(),score:h(),cited:h().int().nonnegative(),total:h().int().nonnegative(),trend:k(h()).optional()})),attentionItems:k(y({id:c(),tone:P0,title:c(),detail:c(),actionLabel:c(),href:c()})),runHistory:k(y({runId:c(),createdAt:c(),citedCount:h().int().nonnegative(),totalCount:h().int().nonnegative(),citationRate:h(),mentionedCount:h().int().nonnegative(),mentionRate:h(),status:c()})),suggestedQueries:y({rows:k(y({query:c(),impressions:h(),clicks:h(),avgPosition:h(),reason:c()})),totalCandidates:h().int().nonnegative(),skippedAlreadyTracked:h().int().nonnegative()}),dateRangeLabel:c(),contextLabel:c()});E(["snapshot","insight"]);const KO=y({kind:ae("snapshot"),id:c(),runId:c(),query:c(),provider:c(),model:c().nullable(),citationState:Fa,matchedField:E(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:c(),createdAt:c()}),GO=y({kind:ae("insight"),id:c(),runId:c().nullable(),type:E(["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:E(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),matchedField:E(["title","query","recommendation","cause"]),snippet:c(),dismissed:P(),createdAt:c()}),HO=gt("kind",[KO,GO]);y({query:c(),totalHits:h().int().nonnegative(),truncated:P(),hits:k(HO)});const Iw=E(["create","expand","refresh","add-schema"]);Iw.enum;function eK(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const Lw=E(["gsc","competitor-evidence","both"]);Lw.enum;const Pw=E(["high","medium","low"]);Pw.enum;const QO=E(["blog-post","comparison","listicle","how-to","guide","glossary"]);QO.enum;const $w=E(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);$w.enum;const $0=E(["ownable","ceded"]);$0.enum;const ZO=y({url:c(),gscImpressions:h().nonnegative(),gscClicks:h().nonnegative(),gscAvgPosition:h().nonnegative().nullable(),organicSessions:h().nonnegative()}),FO=y({domain:c(),url:c(),title:c(),citationCount:h().int().nonnegative()}),YO=y({demand:h(),competitor:h(),absence:h(),gapSeverity:h()}),XO=y({actionId:c(),state:$w,lastUpdated:c()}),Uw=y({targetRef:c(),query:c(),action:Iw,ourBestPage:ZO.nullable(),winningCompetitor:FO.nullable(),score:h(),scoreBreakdown:YO,drivers:k(c()),demandSource:Lw,actionConfidence:Pw,existingAction:XO.nullable(),winnabilityClass:$0,winnability:h().min(0).max(1).nullable()});y({targets:k(Uw),contextMetrics:y({totalAiReferralSessions:h().int().nonnegative(),latestRunId:c(),runTimestamp:c()})});const JO=y({targetRef:c(),addressedUrl:c().nullable(),note:c().nullable(),dismissedAt:c()});y({dismissals:k(JO)});y({targetRef:c().min(1),addressedUrl:c().url().optional(),note:c().max(500).optional()});y({targetRef:c(),promptVersion:c(),provider:c(),model:c(),responseText:c(),costMillicents:h().int().nonnegative(),generatedAt:c()});y({provider:c().optional(),model:c().optional(),forceRefresh:P().optional()});const WO=y({targetQuery:c().trim().min(1),winnabilityClass:$0,angle:c().trim().min(1),whyWinnable:c().trim().min(1),schemaHookup:c().trim().min(1),controllableSurfaceRationale:c().trim().min(1)});y({targetRef:c(),promptVersion:c(),provider:c(),model:c(),brief:WO,costMillicents:h().int().nonnegative(),generatedAt:c()});const eR=y({domain:c(),competitorType:Ju,hits:h().int().nonnegative(),updatedAt:c()});y({classifications:k(eR)});const tR=y({uri:c(),title:c(),domain:c(),isOurDomain:P(),isCompetitor:P(),citationCount:h().int().nonnegative(),providers:k(dt)}),Vw=y({query:c(),groundingSources:k(tR)});y({sources:k(Vw),latestRunId:c()});const Kw=y({query:c(),competitorDomains:k(c()),competitorCount:h().int().nonnegative(),missRate:h().min(0).max(1),lastSeenInRunId:c()});y({gaps:k(Kw),latestRunId:c()});const Gw=E(["ok","warn","fail","skipped"]);Gw.enum;const U0=E(["global","project"]);U0.enum;const Hw=E(["auth","config","providers","integrations","database","schedules","agent"]);Hw.enum;const nR=y({id:c(),category:Hw,scope:U0,title:c(),status:Gw,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(),Xn()).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.")});y({scope:U0,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:y({total:h().int().nonnegative(),ok:h().int().nonnegative(),warn:h().int().nonnegative(),fail:h().int().nonnegative(),skipped:h().int().nonnegative()}),checks:k(nR)});const aR=y({provider:c(),citationState:Fa,cited:P(),mentioned:P(),runId:c(),runCreatedAt:c()}),iR=y({queryId:c(),query:c(),providers:k(aR),citedCount:h().int().nonnegative(),mentionedCount:h().int().nonnegative(),totalProviders:h().int().nonnegative()}),sR=y({queryId:c(),query:c(),provider:c(),citingCompetitors:k(c()),runId:c(),runCreatedAt:c()}),oR=y({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()});y({summary:oR,byQuery:k(iR),competitorGaps:k(sR),status:E(["ready","no-data"]),reason:E(["no-runs-yet","no-queries"]).optional()});const tK=[7,14,30,90],nK=30;Ge([ae(7),ae(14),ae(30),ae(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const rR=E(["prompt","request-param","browser-geo","ignored"]),lR=y({label:c(),city:c(),region:c(),country:c(),otherConfiguredLabels:k(c())}),cR=y({provider:c(),treatment:rR,description:c()}),uR=y({generatedAt:c(),project:y({id:c(),name:c(),displayName:c(),canonicalDomain:c(),country:c(),language:c()}),location:lR.nullable(),providerLocationHandling:k(cR),periodStart:c().nullable(),periodEnd:c().nullable(),periodDays:h().int().positive()}),dR=y({citationRate:h(),citedQueryCount:h(),totalQueryCount:h(),mentionRate:h(),mentionedQueryCount:h(),trend:E(["up","down","flat","unknown"]),queryCount:h(),competitorCount:h(),providerCount:h(),gsc:y({clicks:h(),impressions:h(),ctr:h(),avgPosition:h(),periodStart:c(),periodEnd:c()}).nullable(),ga:y({sessions:h(),users:h(),periodStart:c(),periodEnd:c()}).nullable(),findings:k(y({title:c(),detail:c(),tone:E(["positive","caution","negative","neutral"])}))}),mR=y({citationState:E(["cited","not-cited","pending"]),answerMentioned:P().nullable(),model:c().nullable()}),pR=y({queries:k(c()),providers:k(c()),matrix:k(k(mR.nullable())),providerRates:k(y({provider:c(),citedCount:h(),mentionedCount:h(),totalCount:h(),citationRate:h(),mentionRate:h()}))}),fR=y({domain:c(),citationCount:h(),totalCount:h(),pressureLabel:E(["High","Moderate","Low","None"]),citedQueries:k(c()),sharePct:h(),theirCitedPages:k(y({url:c(),citedFor:k(c())}))}),hR=y({projectCitationCount:h(),competitors:k(fR)}),gR=y({domain:c(),mentionCount:h(),totalCount:h(),pressureLabel:E(["High","Moderate","Low","None"]),mentionedQueries:k(c()),sharePct:h()}),yR=y({projectMentionCount:h(),totalAnswerSnapshots:h(),competitors:k(gR)}),bR=y({category:c(),label:c(),count:h(),sharePct:h()}),vR=y({categories:k(bR),topDomains:k(y({domain:c(),count:h(),isCompetitor:P()}))}),kR=y({query:c(),clicks:h(),impressions:h(),ctr:h(),avgPosition:h(),category:E(["brand","lead-gen","industry","other"])}),wR=y({periodStart:c(),periodEnd:c(),totalClicks:h(),totalImpressions:h(),ctr:h(),avgPosition:h(),topQueries:k(kR),categoryBreakdown:k(y({category:E(["brand","lead-gen","industry","other"]),clicks:h(),impressions:h(),sharePct:h()})),trend:k(y({date:c(),clicks:h(),impressions:h()})),trackedButNoGsc:k(c()),gscButNotTracked:k(c())}),xR=y({totalSessions:h(),totalUsers:h(),totalOrganicSessions:h(),periodStart:c(),periodEnd:c(),topLandingPages:k(y({page:c(),sessions:h(),users:h(),organicSessions:h()})),channelBreakdown:k(y({channel:c(),sessions:h(),sharePct:h()}))}),SR=y({totalSessions:h(),organicSessions:h(),paidSessions:h(),channels:k(y({channelGroup:c(),sessions:h(),sharePct:h()})),topCampaigns:k(y({source:c(),medium:c(),sessions:h()}))}),jR=y({totalSessions:h(),paidSessions:h(),organicSessions:h(),totalUsers:h().optional(),paidUsers:h().optional(),organicUsers:h().optional(),bySource:k(y({source:c(),sessions:h(),users:h().optional(),paidSessions:h(),organicSessions:h(),sharePct:h()})),trend:k(y({date:c(),sessions:h()})),topLandingPages:k(y({page:c(),sessions:h(),users:h().optional()}))}),AR=y({windowStart:c(),windowEnd:c(),hasData:P(),verifiedCrawlerHits:y({current:h(),prior:h(),deltaPct:h().nullable()}),unverifiedCrawlerHits:y({current:h(),prior:h(),deltaPct:h().nullable()}),aiUserFetchHits:y({current:h(),prior:h(),deltaPct:h().nullable()}),referralArrivals:y({current:h(),prior:h(),deltaPct:h().nullable()}),referralArrivalsByClass:y({paid:y({current:h(),prior:h(),deltaPct:h().nullable()}),organic:y({current:h(),prior:h(),deltaPct:h().nullable()}),unclassified:y({current:h(),prior:h(),deltaPct:h().nullable()})}),referralArrivalsClassSummary:c(),byOperator:k(y({operator:c(),verifiedHits:h(),unverifiedHits:h(),userFetchHits:h(),referralArrivals:h(),deltaPct:h().nullable()})),topCrawledPaths:k(y({path:c(),verifiedHits:h(),distinctOperators:h()})),referralProducts:k(y({product:c(),arrivals:h(),distinctLandingPaths:h()})),dailyTrend:k(y({date:c(),verifiedCrawlerHits:h(),userFetchHits:h(),referralArrivals:h()})),topReferralLandingPaths:k(y({path:c(),arrivals:h(),distinctProducts:h()}))}),NR=y({provider:E(["google","bing"]).nullable(),total:h(),indexed:h(),notIndexed:h(),deindexed:h(),unknown:h(),indexedPct:h()}),_R=y({runId:c(),date:c(),citationRate:h(),citedQueryCount:h(),totalQueryCount:h(),mentionRate:h(),mentionedQueryCount:h(),providerRates:k(y({provider:c(),citationRate:h(),mentionRate:h()}))}),Mf=y({id:c(),type:E(["regression","gain","opportunity"]),severity:E(["critical","high","medium","low"]),title:c(),query:c(),provider:c(),recommendation:c().nullable(),createdAt:c(),instanceCount:h()}),CR=y({horizon:E(["immediate","short-term","medium-term"]),title:c(),rationale:c()}),fo=y({current:h(),prior:h(),deltaAbs:h(),deltaPct:h().nullable(),direction:E(["up","down","flat"]),window:h().optional()}),zR=y({provider:c(),current:h(),prior:h(),deltaAbs:h(),direction:E(["up","down","flat"])}),ER=y({enoughHistory:P(),headline:c(),citationRate:fo.nullable(),mentionRate:fo.nullable(),citedQueryCount:fo.nullable(),mentionedQueryCount:fo.nullable(),gscClicksDelta:fo.nullable(),aiReferralsDelta:fo.nullable(),comparisonWindowDays:h().int().positive(),providerMovements:k(zR),wins:k(Mf),regressions:k(Mf)});E(["agency","client"]);const TR=E(["agency","client","both"]),DR=E(["immediate","short-term","medium-term"]),OR=E(["high","medium","low"]);E(["positive","caution","negative","neutral"]);const RR=E(["content","competitors","provider","search-demand","indexing","location","monitoring"]),V0=y({audience:TR,priority:h(),horizon:DR,category:RR,title:c(),action:c(),why:k(c()),evidence:k(c()),successMetric:c(),confidence:OR,targetRef:c().optional()}),MR=y({headline:c(),overview:c(),actionItems:k(V0),confidenceNotes:k(c())}),BR=y({title:c(),detail:c(),severity:E(["positive","caution","negative","neutral"]),evidence:k(c())}),qR=y({priorities:k(V0),diagnostics:k(BR)});function aK(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function iK(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function sK(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function oK(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 rK(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}y({meta:uR,executiveSummary:dR,citationScorecard:pR,competitorLandscape:hR,mentionLandscape:yR,aiSourceOrigin:vR,gsc:wR.nullable(),ga:xR.nullable(),socialReferrals:SR.nullable(),aiReferrals:jR.nullable(),serverActivity:AR.nullable(),indexingHealth:NR.nullable(),citationsTrend:k(_R),whatsChanged:ER,insights:k(Mf),recommendedNextSteps:k(CR),actionPlan:k(V0),clientSummary:MR,agencyDiagnostics:qR,contentOpportunities:k(Uw),contentGaps:k(Kw),groundingSources:k(Vw)});const IR=Ge([ae(60),ae(90)]),LR=E(["earliest","middle","prior","latest"]),yo=y({clicks:h().int().nonnegative(),impressions:h().int().nonnegative()}),Qw=y({name:LR,startDate:c(),endDate:c()}),PR=Qw.extend({totals:yo}),$R=Qw.extend({organicSessions:h().int().nonnegative()}),Xp=y({startDate:c(),endDate:c(),observedDays:h().int().nonnegative()}),au=y({verified:h().int().nonnegative(),claimedUnverified:h().int().nonnegative(),unknownAiLike:h().int().nonnegative()}),Cv=y({total:h().int().nonnegative(),paid:h().int().nonnegative(),organic:h().int().nonnegative(),unknown:h().int().nonnegative()});y({contractVersion:ae("organic-evidence/v1"),periodDays:IR,asOfDate:c().nullable(),coverage:y({gsc:P(),ga4:P(),server:P(),visibility:P()}),sourceCoverage:y({gsc:Xp.nullable(),ga4:Xp.nullable(),server:Xp.nullable(),visibility:y({completedAt:c(),ageDays:h().nonnegative()}).nullable()}),gsc:y({propertyTotals:yo,namedBrand:yo,namedNonBrand:yo,suppressedOrUnreportedResidual:yo,cohorts:k(PR)}).nullable(),ga4:y({organicSessions:h().int().nonnegative(),cohorts:k($R)}).nullable(),gaAiReferrals:y({paidSessions:h().int().nonnegative(),organicSessions:h().int().nonnegative()}).nullable(),server:y({crawlerHits:au,userFetchHits:au,referralSessions:Cv}).nullable(),visibility:y({runId:c(),completedAt:c(),ageDays:h().nonnegative(),answerPairs:h().int().nonnegative(),mentionedPairs:h().int().nonnegative(),citedPairs:h().int().nonnegative()}).nullable(),measurement:K9,pages:k(y({path:c(),gsc:yo,ga4OrganicSessions:h().int().nonnegative(),server:y({crawlerHits:au,userFetchHits:au,referralSessions:Cv})})),findings:k(y({tone:E(["positive","caution","neutral"]),title:c(),detail:c()})),limitations:k(y({code:c(),detail:c()}))});const UR=E(["claude","codex"]);UR.enum;const VR=E(["claude","codex","all"]);VR.enum;const Zw=y({content:h().int().nonnegative(),sitemap:h().int().nonnegative(),robots:h().int().nonnegative(),asset:h().int().nonnegative(),other:h().int().nonnegative()}),KR=E(["content","sitemap","robots","asset","other"]),K0=E(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);K0.enum;const GR=E(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);GR.enum;const HR=E(["raw-request","aggregate-bucket"]),QR=HR.enum,ZR=E(["observed","provider-aggregated","inferred"]),FR=ZR.enum,YR=y({type:c().nullable(),labels:Le(c(),c())}),XR=y({sourceType:K0,evidenceKind:ae(QR["raw-request"]),confidence:ae(FR.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:YR,providerLabels:Le(c(),c())});y({events:k(XR),rawEntryCount:h().int().nonnegative(),skippedEntryCount:h().int().nonnegative(),nextPageToken:c().optional(),filter:c()});const Fw=E(["connected","paused","error","archived"]),lK=Fw.enum,Yw=E(["oauth","service-account"]);Yw.enum;const JR=E(["verified","claimed_unverified","unknown_ai_like"]),cK=JR.enum;y({gcpProjectId:c().min(1),serviceName:c().nullable().optional(),location:c().nullable().optional(),authMode:Yw});y({baseUrl:c().url(),username:c().min(1)});const G0=E(["production","preview"]);G0.enum;y({projectId:c().min(1),teamId:c().min(1),environment:G0});const Xw=y({id:c(),projectId:c(),sourceType:K0,displayName:c(),status:Fw,lastSyncedAt:c().nullable(),lastCursor:c().nullable(),lastError:c().nullable(),skippedThroughAt:c().nullable(),archivedAt:c().nullable(),config:Le(c(),Xn()),createdAt:c(),updatedAt:c()});y({gcpProjectId:c().min(1),serviceName:c().min(1).optional(),location:c().min(1).optional(),displayName:c().min(1).optional(),keyJson:c().optional()});y({baseUrl:c().url(),username:c().min(1),applicationPassword:c().min(1),displayName:c().min(1).optional()});y({projectId:c().min(1),teamId:c().min(1),token:c().min(1),environment:G0.optional(),displayName:c().min(1).optional()});y({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()});y({days:h().int().positive().optional()});y({advanceToNow:ae(!0)});y({sourceId:c(),runId:c(),status:$i,windowStart:c(),windowEnd:c(),daysRequested:h().int().positive(),daysApplied:h().int().positive()});const WR=y({crawlerHits:h().int().nonnegative(),crawlerContentHits:h().int().nonnegative(),crawlerInfraHits:h().int().nonnegative(),crawlerSegments:Zw,aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),sampleCount:h().int().nonnegative()});y({sources:k(Xw)});const eM=Xw.extend({totals24h:WR,latestRun:y({runId:c(),status:$i,startedAt:c().nullable(),finishedAt:c().nullable(),error:c().nullable()}).nullable()});y({sources:k(eM)});const tM=E(["crawler","ai-user-fetch","ai-referral"]),H0=tM.enum,Jw=E(["hour","day"]);Jw.enum;const nM=y({bucket:c(),crawlerHits:h().int().nonnegative(),aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative()}),aM=y({kind:ae(H0.crawler),sourceId:c(),tsHour:c(),botId:c(),operator:c(),verificationStatus:c(),pathNormalized:c(),pathClass:KR,status:h().int(),hits:h().int().nonnegative()}),iM=y({kind:ae(H0["ai-user-fetch"]),sourceId:c(),tsHour:c(),botId:c(),operator:c(),verificationStatus:c(),pathNormalized:c(),status:h().int(),hits:h().int().nonnegative()}),sM=y({kind:ae(H0["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()}),oM=gt("kind",[aM,iM,sM]);y({windowStart:c(),windowEnd:c(),series:y({granularity:Jw,points:k(nM)}),totals:y({crawlerHits:h().int().nonnegative(),crawlerContentHits:h().int().nonnegative(),crawlerInfraHits:h().int().nonnegative(),crawlerSegments:Zw,aiUserFetchHits:h().int().nonnegative(),aiReferralHits:h().int().nonnegative(),aiReferralPaidHits:h().int().nonnegative(),aiReferralOrganicHits:h().int().nonnegative(),aiReferralUnknownHits:h().int().nonnegative()}),eventRows:y({total:h().int().nonnegative(),returned:h().int().nonnegative(),truncated:P()}),events:k(oM)});const Ww=E(["queued","running","completed","partial","failed"]),uK=Ww.enum,ex=E(["queued","running","completed","failed"]),dK=ex.enum;y({queries:k(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:gn.nullable().optional(),idempotencyKey:c().trim().min(1).max(128).optional()}).superRefine((e,t)=>{e.model&&!e.provider&&t.addIssue({code:ht.custom,path:["provider"],message:"provider is required when model is supplied"})});const tx=y({id:c(),projectId:c(),status:Ww,provider:c(),requestedModel:c().nullable(),resolvedModel:c(),location:gn.nullable(),totalQueries:h().int(),completedQueries:h().int(),failedQueries:h().int(),error:c().nullable(),startedAt:c().nullable(),finishedAt:c().nullable(),createdAt:c()}),rM=y({id:c(),position:h().int(),query:c(),status:ex,requestedModel:c().nullable(),resolvedModel:c(),servedModel:c().nullable(),answerText:c().nullable(),groundingSources:k(Xu),citedDomains:k(c()),searchQueries:k(c()),namedCompetitors:k(c()).default([]),citedCompetitorDomains:k(c()).default([]),answerMentioned:P().nullable(),citationState:Fa.nullable(),error:c().nullable(),startedAt:c().nullable(),finishedAt:c().nullable(),createdAt:c()});tx.extend({queries:k(rM)});y({runs:k(tx)});y({apiKey:c().min(1)});y({id:c(),name:c(),status:c(),currencyCode:c().nullable(),timezone:c().nullable(),url:c().nullable(),reviewStatus:c().nullable(),integrityReviewStatus:c().nullable(),integrityDecision:c().nullable()});y({q:c().trim().min(1).max(200),limit:h().int().min(1).max(100).default(20)});const lM=y({id:c(),type:c(),canonicalName:c(),countryCode:c(),name:c(),regionCode:c().nullable()});y({count:h().int().nonnegative(),query:c(),results:k(lM)});const cM=y({id:c(),clientType:c().optional(),name:c().optional(),pixelId:c().optional()});y({pixels:k(cM)});const uM=y({id:c(),name:c().optional()}),dM=y({id:c(),name:c().optional(),eventType:c().optional(),customEventName:c().nullable().optional(),attributionWindowDays:h().int().positive().optional(),adAccountId:c().optional(),sourceIds:k(c()).optional(),sources:k(uM).optional(),archived:P().optional(),version:h().int().nonnegative().optional()});y({eventSettings:k(dM)});y({connected:P(),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:P().optional()});y({disconnected:P()});y({runId:c(),status:c()});const mM=y({type:c().nullable().optional(),title:c().nullable().optional(),body:c().nullable().optional(),targetUrl:c().nullable().optional(),fileId:c().nullable().optional()}),Cl=E(["impressions","clicks"]),pM=Cl.enum,zl=E(["impression","click"]);zl.enum;const fM=y({id:c(),adGroupId:c(),name:c(),status:c(),reviewStatus:c().nullable().optional(),creative:mM.nullable().optional(),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()}),hM=y({id:c(),campaignId:c(),name:c(),description:c().nullable().optional(),status:c(),billingEventType:Ge([zl,he()]).optional(),maxBidMicros:h().int().nullable().optional(),contextHints:k(c()).default([]),ads:k(fM).default([]),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()}),gM=y({id:c(),name:c(),description:c().nullable().optional(),status:c(),startTime:h().int().nullable().optional(),endTime:h().int().nullable().optional(),biddingType:Ge([Cl,he()]).optional(),dailySpendLimitMicros:h().int().nullable().optional(),lifetimeSpendLimitMicros:h().int().nullable().optional(),conversionEventSettingIds:k(c()).default([]),locationIds:k(c()).optional(),adGroups:k(hM).default([]),upstreamUpdatedAt:h().int().nullable().optional(),syncedAt:c().optional()});y({campaigns:k(gM)});const nx=E(["campaign","ad_group"]);nx.enum;const yM=y({level:nx,entityId:c(),date:c(),impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int(),ctr:h().nullable(),cpcMicros:h().int().nullable(),inProgress:P()});y({rows:k(yM),currencyCode:c().nullable().optional()});const ax=y({from:c().nullable(),to:c().nullable(),inProgressDate:c().nullable()}),ix=y({impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int(),ctr:h().nullable(),cpcMicros:h().int().nullable()});y({connected:P(),displayName:c().nullable().optional(),currencyCode:c().nullable().optional(),lastSyncedAt:c().nullable().optional(),campaignCount:h().int(),adGroupCount:h().int(),adCount:h().int(),window:ax,totals:ix});const sx=E(["unavailable","partial","complete"]);sx.enum;const ox=E(["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"]);ox.enum;const rx=E(["unavailable","reported"]);rx.enum;const bM={storedSnapshot:"stored_ads_snapshot"},lx=E(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);lx.enum;const vM=y({id:c(),name:c(),status:c(),reviewStatus:c().nullable()}),kM=y({id:c(),name:c(),status:c(),billingEventType:Ge([zl,he()]),maxBidMicros:h().int().nullable(),contextHints:k(c()),ads:k(vM)}),wM=y({id:c(),name:c(),status:c(),biddingType:Ge([Cl,he()]),dailySpendLimitMicros:h().int().nullable(),lifetimeSpendLimitMicros:h().int().nullable(),conversionEventSettingIds:k(c()),adGroups:k(kM)});y({snapshot:y({status:sx,issue:Ge([ox,he()]),lastSyncedAt:c().nullable(),campaignCount:h().int().nonnegative(),adGroupCount:h().int().nonnegative(),adCount:h().int().nonnegative(),sourceSync:y({runId:c(),status:$i}).nullable()}),historicalCampaignRollups:y({status:rx,window:ax,totals:ix.nullable()}),storedConfiguration:y({basis:ae(bM.storedSnapshot),connection:y({status:c().nullable(),reviewStatus:c().nullable(),integrityReviewStatus:c().nullable(),integrityDecision:c().nullable(),conversionTrackingConfigured:P()}).nullable(),campaigns:k(wM)}),assessment:y({state:lx})});const Xa=c().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),vt=c().min(1).max(200),js=c().min(3).max(1e3).refine(e=>e.trim().length>0),Mo=h().int().min(946684800).max(4102444800),Bo=h().int().positive().max(Number.MAX_SAFE_INTEGER),Q0=c().regex(/^[a-f0-9]{64}$/),cx=k(vt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),ux=c().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),dx=E(["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"]);dx.enum;const mx=E(["pending","reconciling","succeeded","failed","unknown"]),No=mx.enum,px=E(["known_entity","create_fingerprint","manual_only"]);px.enum;const fx=E([No.pending,No.unknown,No.reconciling]);fx.enum;const hx=E(["active","paused","archived"]);hx.enum;const gx=E(["file","campaign","ad_group","ad"]);gx.enum;const yx=E(["campaign","ad_group","ad"]);yx.enum;const Z0=y({id:vt,expectedUpdatedAt:h().int().nonnegative()}).strict(),xM=Z0,Du=100,SM=Z0.extend({ads:k(xM).min(1).max(Du-1)}).strict(),jM=Z0.extend({adGroups:k(SM).min(1).max(Du-1)}).strict();function AM(e,t){return e<t?-1:e>t?1:0}function zv(e,t,i){for(let s=1;s<e.length;s+=1)if(AM(e[s-1].id,e[s].id)>=0){i.addIssue({code:"custom",path:t,message:"Activation manifest entities must be uniquely sorted by id"});return}}const bx=y({campaign:jM}).strict().superRefine((e,t)=>{1+e.campaign.adGroups.reduce((r,u)=>r+1+u.ads.length,0)>Du&&t.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${Du} entities`}),zv(e.campaign.adGroups,["campaign","adGroups"],t);const s=new Set;for(let r=0;r<e.campaign.adGroups.length;r+=1){const u=e.campaign.adGroups[r];zv(u.ads,["campaign","adGroups",r,"ads"],t);for(let d=0;d<u.ads.length;d+=1){const g=u.ads[d];s.has(g.id)&&t.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)}}}),vx=Q0,NM=E(["approved","executing","consumed","revoked","expired","unknown"]),Qa=NM.enum,_M=E(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Ui=_M.enum,CM=y({name:js.optional(),description:c().max(4e3).nullable().optional(),status:hx.optional(),startTime:Mo.nullable().optional(),endTime:Mo.nullable().optional(),lifetimeSpendLimitMicros:Bo.min(1e6).optional(),locationIds:k(vt).max(100).optional(),biddingType:Cl.optional(),conversionEventSettingIds:cx.optional(),campaignId:vt.optional(),contextHints:k(c().min(1).max(1e3)).max(100).optional(),maxBidMicros:Bo.max(1e8).optional(),billingEventType:zl.optional(),adGroupId:vt.optional(),creativeFingerprint:Q0.optional()}).strict();y({operationKey:Xa,imageUrl:ux});y({operationKey:Xa,name:js,description:c().max(4e3).optional(),startTime:Mo.optional(),endTime:Mo.optional(),lifetimeSpendLimitMicros:Bo.min(1e6),locationIds:k(vt).min(1).max(100),biddingType:Cl.optional(),conversionEventSettingIds:cx.optional()}).superRefine((e,t)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&t.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===pM.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&t.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});y({operationKey:Xa,campaignId:vt,name:js,description:c().max(4e3).optional(),contextHints:k(c().min(1).max(1e3)).min(1).max(100),maxBidMicros:Bo.max(1e8),billingEventType:zl.optional()});const kx=y({title:c().min(3).max(50),body:c().min(1).max(100),targetUrl:ux,fileId:vt});y({operationKey:Xa,adGroupId:vt,name:js,creative:kx});function F0(e){return Object.keys(e).some(t=>t!=="operationKey"&&t!=="expectedUpdatedAt")}y({operationKey:Xa,expectedUpdatedAt:h().int().nonnegative(),name:js.optional(),description:c().max(4e3).nullable().optional(),startTime:Mo.nullable().optional(),endTime:Mo.nullable().optional(),lifetimeSpendLimitMicros:Bo.min(1e6).optional(),locationIds:k(vt).min(1).max(100).optional()}).refine(F0,{message:"At least one campaign field must be updated"});y({operationKey:Xa,expectedUpdatedAt:h().int().nonnegative(),name:js.optional(),description:c().max(4e3).nullable().optional(),contextHints:k(c().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:Bo.max(1e8).optional()}).refine(F0,{message:"At least one ad group field must be updated"});y({operationKey:Xa,expectedUpdatedAt:h().int().nonnegative(),name:js.optional(),creative:kx.optional()}).refine(F0,{message:"At least one ad field must be updated"});y({operationKey:Xa});const td=y({id:c(),adAccountId:c().nullable(),operationKey:c(),kind:dx,state:mx,entityType:Ge([gx,he()]),entityId:c().nullable(),upstreamUpdatedAt:h().int().nullable(),errorCode:c().nullable(),errorMessage:c().nullable(),reconcileStrategy:Ge([px,he()]),reconcileParentId:vt.nullable(),reconcileFingerprint:Q0.nullable(),reconcileFields:CM.nullable(),reconcileAttempts:h().int().nonnegative(),lastReconciledAt:c().nullable(),createdAt:c(),updatedAt:c()});y({operation:td,replayed:P()});const ut=Dk({offset:!0}),Go={id:vt,projectId:vt,adAccountId:vt,manifestHash:vx,manifest:bx,executorApiKeyId:vt,approverApiKeyId:vt,expiresAt:ut,approvedAt:ut,createdAt:ut,updatedAt:ut,revocationRequestedAt:ut.nullable()},zM=y({...Go,state:ae(Qa.approved),operationId:he(),executionStartedAt:he(),consumedAt:he(),revokedAt:he(),expiredAt:he()}).strict(),EM=y({...Go,state:ae(Qa.executing),operationId:vt,executionStartedAt:ut,consumedAt:he(),revokedAt:he(),expiredAt:he()}).strict(),TM=y({...Go,state:ae(Qa.consumed),operationId:vt,executionStartedAt:ut,consumedAt:ut,revokedAt:he(),expiredAt:he()}).strict(),DM=y({...Go,state:ae(Qa.revoked),operationId:he(),executionStartedAt:he(),consumedAt:he(),revokedAt:ut,expiredAt:he()}).strict(),OM=y({...Go,state:ae(Qa.expired),operationId:he(),executionStartedAt:he(),consumedAt:he(),revokedAt:he(),expiredAt:ut}).strict(),RM=y({...Go,state:ae(Qa.unknown),operationId:vt,executionStartedAt:ut,consumedAt:he(),revokedAt:he(),expiredAt:he()}).strict(),wx=gt("state",[zM,EM,TM,DM,OM,RM]).superRefine((e,t)=>{e.executorApiKeyId===e.approverApiKeyId&&t.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Qa.executing&&e.state!==Qa.unknown&&e.state!==Qa.consumed&&t.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Vi={id:vt,operationId:vt,ordinal:h().int().nonnegative(),entityType:yx,entityId:vt,expectedUpdatedAt:h().int().nonnegative(),createdAt:ut,updatedAt:ut},El={errorCode:he(),errorMessage:he()},Y0={errorCode:c().min(1).max(100),errorMessage:c().min(1).max(500),remediation:c().min(1).max(500)},MM=y({...Vi,...El,state:ae(Ui.pending),providerUpdatedAt:he(),remediation:he(),startedAt:he(),finishedAt:he()}).strict(),BM=y({...Vi,...El,state:ae(Ui.executing),providerUpdatedAt:he(),remediation:he(),startedAt:ut,finishedAt:he()}).strict(),qM=y({...Vi,...El,state:ae(Ui.active),providerUpdatedAt:h().int().nonnegative(),remediation:he(),startedAt:ut,finishedAt:ut}).strict(),IM=y({...Vi,...Y0,state:ae(Ui.failed),providerUpdatedAt:Ge([h().int().nonnegative(),he()]),startedAt:ut,finishedAt:ut}).strict(),LM=y({...Vi,...El,state:ae(Ui.rollback_executing),providerUpdatedAt:h().int().nonnegative(),remediation:c().min(1).max(500),startedAt:ut,finishedAt:he()}).strict(),PM=y({...Vi,...El,state:ae(Ui.rolled_back),providerUpdatedAt:h().int().nonnegative(),remediation:c().min(1).max(500),startedAt:ut,finishedAt:ut}).strict(),$M=y({...Vi,...Y0,state:ae(Ui.rollback_failed),providerUpdatedAt:h().int().nonnegative(),startedAt:ut,finishedAt:ut}).strict(),UM=y({...Vi,...Y0,state:ae(Ui.unknown),providerUpdatedAt:Ge([h().int().nonnegative(),he()]),startedAt:ut,finishedAt:ut}).strict(),VM=gt("state",[MM,BM,qM,IM,LM,PM,$M,UM]),Bf={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},KM=E([Bf.exact,Bf.refreshSemanticallyUnchanged]);y({manifest:bx,executorApiKeyId:vt,expiresAt:ut,versionPolicy:KM.default(Bf.exact)}).strict();y({grant:wx}).strict();y({}).strict();y({operationKey:Xa,grantId:vt,manifestHash:vx}).strict();y({grant:wx,operation:td,steps:k(VM)}).strict();const GM=[No.pending,No.unknown,No.reconciling];function HM(e){if(e===void 0||e==="")return GM;if(Array.isArray(e)){const t=[];for(const i of e)typeof i=="string"?t.push(...i.split(",")):t.push(i);return t}return typeof e=="string"?e.split(",").filter(Boolean):e}y({state:O9(HM,k(fx).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Lk().int().min(1).max(200).default(100),cursor:c().min(1).max(1e3).optional()});y({operations:k(td),count:h().int().nonnegative(),nextCursor:c().nullable()});y({}).strict();y({operation:td,resolved:P()});y({campaignId:c().min(1).max(200).optional(),lookbackDays:Lk().int().min(1).max(30).default(7)});const xx=E(["campaign","ad_group","ad"]);xx.enum;const Sx=E(["both","live-only","stored-only"]);Sx.enum;const QM=ae("live-provider-read"),ZM=y({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()}),Ev=y({impressions:h().int(),clicks:h().int(),spendMicros:h().int(),conversions:h().int()}),FM=y({date:c(),live:Ev.nullable(),stored:Ev.nullable(),drifted:P()}),YM=y({field:c(),live:c().nullable(),stored:c().nullable()}),XM=y({name:c().nullable(),status:c(),reviewStatus:c().nullable(),mode:c().nullable(),updatedAt:h().nullable()}),JM=y({name:c(),status:c(),reviewStatus:c().nullable(),upstreamUpdatedAt:h().nullable(),syncedAt:c()}),WM=y({entityType:xx,id:c(),parentId:c().nullable(),presence:Sx,live:XM.nullable(),stored:JM.nullable(),fieldDeltas:k(YM),liveMetrics:k(ZM).nullable(),metricDeltas:k(FM).nullable(),drifted:P()}),eB=y({surface:c(),entityId:c().nullable(),upstreamStatus:h().int().nullable()});y({basis:QM,fetchedAt:c(),adAccountId:c(),storedSnapshotSyncedAt:c().nullable(),metricsWindow:y({lookbackDays:h().int().positive()}),bounds:y({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:P()}),entities:k(WM),drift:y({entitiesCompared:h().int().nonnegative(),driftedEntities:h().int().nonnegative(),statusDrifted:h().int().nonnegative(),metricsDrifted:h().int().nonnegative()}),errors:k(eB)});const jx=E(["admin","viewer"]),tB=/^[a-z\d][\w.-]{0,63}$/i,nB=c().regex(tB,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Tv=12,aB=c().min(Tv,`A password must be at least ${Tv} characters.`),Ax=y({id:c(),name:c(),role:jx,createdAt:c(),lastLoginAt:c().nullable()});y({users:k(Ax)});y({name:nB,password:aB,role:jx});y({name:c().min(1),password:c().min(1)});y({authRequired:P(),user:Ax.pick({name:!0,role:!0}).nullable()});const Ct=1,Jp=E(["system","project","queries","competitors","run"]),Wp=E(["0","1","2-3","4-5","6-10","11+"]);function xa(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 Dv=E(["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"]),iu=y({eventId:c().uuid(),flowVersion:ae(Ct),onboardingSessionId:c().uuid()});gt("event",[iu.extend({event:ae("onboarding.started"),step:Jp,resumed:P()}).strict(),iu.extend({event:ae("onboarding.step_completed"),step:Jp,method:E(["existing","inline","manual","generated","skipped","automatic"]),countBucket:Wp.optional()}).strict(),iu.extend({event:ae("onboarding.blocked"),step:Jp,action:E(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Dv}).strict(),iu.extend({event:ae("run.requested"),origin:ae("dashboard_setup"),result:E(["queued","rejected"]),providerCountBucket:Wp,queryCountBucket:Wp,reasonCode:Dv.optional()}).strict()]);y({accepted:P()});var iB=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(iB||{});const mK={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},pK={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},sB=T0;function oB(e){const t=[];if(e.message&&t.push(e.message),e.providers)for(const[i,s]of Object.entries(e.providers)){const r=`[${i}] ${s.message}`;s.raw!==void 0?t.push(`${r}
|
|
53
53
|
|
|
54
54
|
${JSON.stringify(s.raw,null,2)}`):t.push(r)}return t.length>0?t.join(`
|
|
55
55
|
|
|
@@ -210,4 +210,4 @@ spec:
|
|
|
210
210
|
`);Kt(Me),Wo(!0)}}catch(W){ql(W instanceof Error?W.message:"Failed to generate queries"),S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:y2(W,"unknown")},"onboarding.blocked:queries:generate")}finally{tr(!1)}}},Pl=async()=>{if(!ie)return;const W=Na;if(W.length!==0){Ll(!0),ta(null);try{await yA(ie,W),Hi(!0),await s(),S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:xa(W.length)},"onboarding.step_completed:competitors"),ue(4)}catch(Me){ta(Me instanceof Error?Me.message:"Failed to save competitors"),S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{Ll(!1)}}},Yi=async()=>{const W=Fi.trim();if(W){ir(!0),or(null);try{await xA("gemini",{apiKey:W}),pn({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),ti(""),await s(),Es(r.providerStatuses.find(Me=>Me.name.toLowerCase()==="gemini")?.name??"gemini"),S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(Me){or(Me instanceof Error?Me.message:"Failed to save Gemini key"),S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{ir(!1)}}},Ts=async()=>{if(!ie||en){na(en??"Complete setup before launching the first sweep.");const W=yt??(ie?ni===0?"no_queries":"run_rejected":"unknown");S({flowVersion:Ct,onboardingSessionId:v,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:xa(sn.length),queryCountBucket:xa(ni),reasonCode:W});return}Qi(!0),na(null);try{const W=await xd.mutateAsync({projectName:ie,projectLabel:ge||Te||ie,sourceAction:"setup-launch"});Zi(W.id),wd(!0),S({flowVersion:Ct,onboardingSessionId:v,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:xa(sn.length),queryCountBucket:xa(ni)}),await s()}catch(W){na(W instanceof Error?W.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),S({flowVersion:Ct,onboardingSessionId:v,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:xa(sn.length),queryCountBucket:xa(ni),reasonCode:y2(W,"run_rejected")})}finally{Qi(!1)}},on=()=>ue(W=>Math.max(0,W-1)),ya=(W,Me,bn)=>{S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.step_completed",step:W,method:"existing",...bn===void 0?{}:{countBucket:xa(bn)}},`onboarding.step_completed:${W}`),ue(Me)},ai=()=>{S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.step_completed",step:"queries",method:"skipped",countBucket:"0"},"onboarding.step_completed:queries"),ue(3)},ii=()=>{S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),ue(4)},Rt=(()=>{switch(pe){case 0:return m.jsxs(Zn,{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(W=>m.jsxs("div",{className:"health-check-row",children:[m.jsxs("div",{children:[m.jsx("p",{className:"run-row-title",children:W.label}),m.jsx("p",{className:"supporting-copy",children:W.detail}),W.id==="provider"&&W.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:Fi,onChange:Me=>ti(Me.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:ar}),m.jsx(De,{type:"button",size:"sm",disabled:ar||!Fi.trim(),onClick:tn(Yi),children:ar?"Saving...":"Save"})]}),sr&&m.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[m.jsx("p",{children:sr}),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(We,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),m.jsx(An,{tone:W.state==="ready"?"positive":"caution",title:W.id==="api"?qo(d.apiStatus):W.id==="worker"?qo(d.workerStatus):W.detail,children:W.state==="ready"?"Ready":"Attention"})]},W.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(De,{type:"button",disabled:!g.launchState.enabled,title:g.launchState.blockedReason,onClick:()=>{S({flowVersion:Ct,onboardingSessionId:v,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),ue(q)},children:"Continue"})]})]});case 1:return m.jsxs(Zn,{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(An,{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(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsx(De,{type:"button",onClick:()=>ya("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:Te,onChange:W=>it(W.target.value)}),aa&&aa!==Te?m.jsxs("p",{className:"supporting-copy",children:["Slug: ",aa]}):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:ge,onChange:W=>Q(W.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:oe,onChange:W=>me(W.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:Ce,onChange:W=>ce(W.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:He,onChange:W=>ne(W.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:H,onChange:W=>X(W.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(We,{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(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsx(De,{type:"button",disabled:!aa||!oe||_e,onClick:tn(rr),children:_e?"Creating...":"Create project"})]})]})]});case 2:return m.jsxs(Zn,{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(An,{tone:"negative",children:"Load failed"}):In?m.jsxs(An,{tone:"positive",children:[yn.length," saved"]}):m.jsxs(An,{tone:"neutral",children:[yn.length," quer",yn.length!==1?"ies":"y"]})]}),m.jsx("p",{className:"supporting-copy",children:"Enter the questions you want to track, one per line. A rough first list is fine: you can edit them, research more, and add to them at any time from the project."}),m.jsxs("div",{className:"rounded-md border border-base bg-bg-elevated p-3 text-sm",children:[m.jsx("p",{className:"m-0 font-medium text-heading",children:"Tracking more than one location or property?"}),m.jsx("p",{className:"mt-1 mb-2 text-secondary",children:"Questions attach to each property separately in Advanced measurement, so there is nothing useful to add here. Skip this and set it up on the project."}),m.jsx(De,{type:"button",variant:"outline",size:"sm",onClick:()=>{ai(),b({to:ie?`/projects/${encodeURIComponent(ie)}/portfolio`:"/"})},children:"Set up Advanced measurement instead"})]}),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(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsx(De,{type:"button",onClick:()=>{C.refetch()},children:"Retry loading queries"})]})]}):In?m.jsxs("div",{className:"compact-stack",children:[m.jsx("ul",{className:"detail-list",children:yn.map(W=>m.jsx("li",{children:W},W))}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsx(De,{type:"button",onClick:()=>ya("queries",3,yn.length),children:"Continue"})]})]}):m.jsxs("div",{className:"compact-stack",children:[sn.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:Ja,onChange:W=>Es(W.target.value),children:sn.map(W=>m.jsxs("option",{value:W.name,children:[W.displayName??W.name,W.model?` (${W.model})`:""]},W.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:Xt,onChange:W=>vd(Number(W.target.value)),children:[3,5,10,15,20].map(W=>m.jsx("option",{value:W,children:W},W))})]}),m.jsx(De,{type:"button",variant:"outline",disabled:er||!Ja,onClick:tn(jd),children:er?"Analyzing site...":"Generate"})]}),Gi?m.jsx("p",{className:"text-negative-400 text-sm",children:Gi}):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:Ye,onChange:W=>Kt(W.target.value)})]}),Cs?m.jsx("p",{className:"text-negative-400 text-sm",children:Cs}):null,m.jsxs("div",{className:"setup-nav",children:[m.jsx(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsx(De,{type:"button",variant:"ghost",onClick:ai,children:"Skip for now"}),m.jsx(De,{type:"button",disabled:yn.length===0||Bl,onClick:tn(Sd),children:Bl?"Saving...":`Save ${yn.length} quer${yn.length!==1?"ies":"y"}`})]})]})]});case 3:return m.jsxs(Zn,{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"})]}),Il?m.jsx(An,{tone:"positive",children:"Saved"}):null]}),m.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),Il?m.jsxs("div",{className:"compact-stack",children:[m.jsx("ul",{className:"detail-list",children:Na.map(W=>m.jsx("li",{children:W},W))}),m.jsxs("div",{className:"setup-nav",children:[m.jsx(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsx(De,{type:"button",onClick:()=>ya("competitors",4,Na.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:nr,onChange:W=>kd(W.target.value)})]}),Jt?m.jsx("p",{className:"text-negative-400 text-sm",children:Jt}):null,m.jsxs("div",{className:"setup-nav",children:[m.jsx(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsxs("div",{className:"flex gap-2",children:[m.jsx(De,{type:"button",variant:"outline",onClick:ii,children:"Skip"}),m.jsx(De,{type:"button",disabled:Na.length===0||Wt,onClick:tn(Pl),children:Wt?"Saving...":`Save ${Na.length} competitor${Na.length!==1?"s":""}`})]})]})]})]});case 4:{const W=ga.data,Me=W?.status??(ei===V?.id?V.status:void 0),bn=Me==="completed"||Me==="partial"||Me==="failed"||Me==="cancelled",_n=W?.snapshots??[],Ad=_n.filter(Mt=>Mt.citationState==="cited").length,$l=_n.filter(Mt=>Mt.answerMentioned===!0).length,lr=new Set(_n.map(Mt=>Mt.query).filter(Mt=>!!Mt)).size,Ul=Me?b2(Me,_n.length):!1,Xi=Z&&!Wa,Ds=ha??(W?.error?sB(W.error):Me==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Me==="completed"||Me==="partial")&&_n.length===0?"The sweep finished without producing any snapshots. Confirm the query set and provider configuration, then retry.":V?.statusDetail||"The sweep did not produce a baseline. Review provider configuration, then retry.");let rn=null;return Xi||Ul?rn=m.jsx(An,{tone:"positive",children:"Complete"}):ha&&!Wa?rn=m.jsx(An,{tone:"negative",children:"Failed"}):bn?rn=m.jsx(An,{tone:"negative",children:Me==="cancelled"?"Cancelled":"Failed"}):Wa&&(rn=m.jsx(An,{tone:"caution",children:"Running"})),m.jsxs(Zn,{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"})]}),rn]}),Xi?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(De,{type:"button",onClick:()=>{b({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Open project dashboard →"})]})]}):Wa?bn?Ul?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:[$l,m.jsxs("span",{className:"text-faint text-lg",children:[" / ",lr]})]}),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:[Ad,m.jsxs("span",{className:"text-faint text-lg",children:[" / ",lr]})]}),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:_n.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(De,{type:"button",onClick:()=>{b({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:Ds}),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(De,{type:"button",variant:"outline",asChild:!0,children:m.jsx(We,{to:"/settings",children:"Configure providers"})}),m.jsx(De,{type:"button",disabled:Aa||!!en,onClick:tn(Ts),children:Aa?"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:Me??"queued"})]})}),ga.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:ga.error instanceof Error?ga.error.message:"Could not refresh the sweep status."}),m.jsx(De,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{ga.refetch()},children:"Retry status check"})]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx("span",{}),m.jsx(De,{type:"button",variant:"outline",onClick:()=>{b({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Watch on project page"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"supporting-copy",children:["Setup is done. You can run a first sweep now to get a baseline for"," ",m.jsx("span",{className:"text-heading font-medium",children:ie}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(en||ha)&&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:ha??en}),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(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsx(De,{type:"button",variant:"ghost",onClick:()=>{b({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Finish without running"}),m.jsx(De,{type:"button",disabled:Aa||!!en,title:en,onClick:tn(Ts),children:Aa?"Launching...":ha?"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(z$,{current:pe,labels:C$}),m.jsx("section",{className:"setup-wizard",children:Rt})]})}function O$(){return m.jsx("div",{className:"page-container",children:m.jsx("section",{className:"page-section",children:m.jsxs(Zn,{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(De,{asChild:!0,children:m.jsx(We,{to:"/",children:"Return to overview"})})]})})})}const fa=Bi(()=>qi(()=>import("./ProjectPage-WQcGpLkQ.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url),"ProjectPage"),R$=Bi(()=>qi(()=>import("./RunsPage-CcpGqrXb.js"),__vite__mapDeps([11,1,2,9,5,10]),import.meta.url),"RunsPage"),M$=Bi(()=>qi(()=>import("./HistoryPage-CW8R9K8Q.js"),__vite__mapDeps([12,1,7,9,5,10]),import.meta.url),"HistoryPage"),B$=Bi(()=>qi(()=>import("./SettingsPage-vFUv8cVP.js"),__vite__mapDeps([13,1,9,5,10]),import.meta.url),"SettingsPage"),q$=Bi(()=>qi(()=>import("./BacklinksPage-DO0Y4ipF.js"),__vite__mapDeps([14,1,6,9,5,10]),import.meta.url),"BacklinksPage"),I$=Bi(()=>qi(()=>import("./TrafficPage-BEzPAd-o.js"),__vite__mapDeps([15,1,4,16,9,5,10]),import.meta.url),"TrafficPage"),L$=Bi(()=>qi(()=>import("./TrafficSourceDetailPage-TOC6E5-9.js"),__vite__mapDeps([17,1,4,3,5,16,9,10]),import.meta.url),"TrafficSourceDetailPage"),P$=Bi(()=>qi(()=>import("./MeasurementPropertyPage-DARd-lIM.js"),__vite__mapDeps([18,1,8,16,9,5,10]),import.meta.url),"MeasurementPropertyPage");function $$(){return m.jsx(JL,{children:m.jsx(XL,{})})}const hn=r4()({component:$$,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,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})}),U$=St({getParentRoute:()=>hn,path:"/",component:tP,beforeLoad:({context:e})=>{const t=e.queryClient.getQueryData(Ho({client:le}));if(t&&t.length===0)throw j2({to:"/setup"})}}),V$=St({getParentRoute:()=>hn,path:"/projects",component:p$}),K$=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,qn=St({getParentRoute:()=>hn,path:"/projects/$projectName",component:()=>m.jsx(mf,{}),beforeLoad:async({context:e,params:t,location:i})=>{const s=t.projectName;if(!K$.test(s))return;let r=e.queryClient.getQueryData(Ho({client:le}));if(!r)try{r=await e.queryClient.ensureQueryData(nd({client:le}))}catch{return}const u=r.find(d=>d.id===s);if(u)throw j2({to:i.pathname.replace(`/projects/${s}`,`/projects/${encodeURIComponent(u.name)}`),replace:!0})}}),G$=St({getParentRoute:()=>qn,path:"/",component:()=>m.jsx(fa,{tab:"overview"})}),H$=St({getParentRoute:()=>qn,path:"/portfolio",component:()=>m.jsx(fa,{tab:"portfolio"})}),Q$=St({getParentRoute:()=>qn,path:"/search-console",component:()=>m.jsx(fa,{tab:"search-console"})}),Z$=St({getParentRoute:()=>qn,path:"/local",component:()=>m.jsx(fa,{tab:"local"})}),F$=St({getParentRoute:()=>qn,path:"/discovery",component:()=>m.jsx(fa,{tab:"discovery"})}),Y$=St({getParentRoute:()=>qn,path:"/properties/$targetKey",component:()=>m.jsx(P$,{})}),X$=St({getParentRoute:()=>qn,path:"/report",component:()=>m.jsx(fa,{tab:"report"})}),J$=St({getParentRoute:()=>qn,path:"/activity",component:()=>m.jsx(fa,{tab:"activity"})}),W$=St({getParentRoute:()=>qn,path:"/backlinks",component:()=>m.jsx(fa,{tab:"backlinks"})}),eU=St({getParentRoute:()=>qn,path:"/technical-aeo",component:()=>m.jsx(fa,{tab:"technical-aeo"})}),tU=St({getParentRoute:()=>qn,path:"/history",component:()=>m.jsx(fa,{tab:"history"})}),nU=St({getParentRoute:()=>qn,path:"/settings",component:()=>m.jsx(fa,{tab:"settings"})}),aU=St({getParentRoute:()=>hn,path:"/runs",component:R$}),iU=St({getParentRoute:()=>hn,path:"/history",component:M$}),sU=St({getParentRoute:()=>hn,path:"/settings",component:B$,beforeLoad:({context:e})=>{}}),oU=St({getParentRoute:()=>hn,path:"/setup",component:E$}),rU=St({getParentRoute:()=>hn,path:"/backlinks",component:q$}),lU=St({getParentRoute:()=>hn,path:"/traffic",component:I$}),cU=St({getParentRoute:()=>hn,path:"/traffic/$projectName/$sourceId",component:L$}),uU=St({getParentRoute:()=>hn,path:"*",component:O$}),dU=hn.addChildren([U$,V$,qn.addChildren([G$,H$,Q$,Z$,F$,Y$,X$,J$,W$,eU,tU,nU]),aU,iU,sU,oU,rU,lU,cU,uU]);function mU(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const w2=mU(),pU=w2==="/"?"":w2.replace(/\/$/,"");function fU(e,t){return l4({routeTree:dU,basepath:pU||"/",context:{queryClient:e},...t?.initialEntries})}const hU=6e4;function gU(){const[e,t]=B.useState(qp()?"ready":"checking"),[i,s]=B.useState(null),[r,u]=B.useState(!1),[d,g]=B.useState(""),[b,v]=B.useState(""),[x,S]=B.useState(""),[j,_]=B.useState(null),[T,N]=B.useState(!1),[C,O]=B.useState(!1),I=B.useRef(null),$=B.useRef(null),V=B.useRef(null),Z=()=>{const ue=i?`${i.name}:${i.role}`:"no-accounts";if(!I.current||V.current!==ue){$.current?.clear();const fe=KA();$.current=fe,I.current=fU(fe),V.current=ue}return{queryClient:$.current,router:I.current}},se=ue=>ue.authRequired?(u(!0),s(ue.user),t(ue.user?"ready":"account-login"),!0):!1;B.useEffect(()=>{if(qp())return;let ue=!1;return Promise.allSettled([bb(),yb()]).then(([fe,we])=>{if(ue||fe.status==="fulfilled"&&se(fe.value))return;if(we.status==="rejected"){const it=we.reason;_(it instanceof Error?it.message:"Failed to reach the Canonry API"),t("login");return}const Te=we.value;Te.authenticated?t("ready"):t(Te.setupRequired?"setup":"login")}),()=>{ue=!0}},[]),B.useEffect(()=>{if(e!=="ready"||qp())return;const ue=setInterval(()=>{if(r){bb().then(fe=>{fe.authRequired&&!fe.user&&(O(!0),s(null),t("account-login"))}).catch(()=>{});return}yb().then(fe=>{fe.authenticated||(O(!0),t(fe.setupRequired?"setup":"login"))}).catch(()=>{})},hU);return gb(()=>{O(!0),s(null),t(r?"account-login":"login")}),()=>{clearInterval(ue),gb(null)}},[e,r]);const R=async ue=>{if(ue.preventDefault(),!b.trim()||b.trim().length<8){_("Password must be at least 8 characters");return}if(b!==x){_("Passwords do not match");return}N(!0),_(null);try{if(!(await vA(b.trim())).authenticated){_("Setup failed");return}v(""),S(""),O(!1),t("ready")}catch(fe){_(fe instanceof Mn||fe instanceof Error?fe.message:"Setup failed")}finally{N(!1)}},q=async ue=>{if(ue.preventDefault(),!!b.trim()){N(!0),_(null);try{if(!(await kA(b.trim())).authenticated){_("Incorrect password");return}v(""),O(!1),t("ready")}catch(fe){_(fe instanceof Mn||fe instanceof Error?fe.message:"Authentication failed")}finally{N(!1)}}},pe=async ue=>{if(ue.preventDefault(),!(!d.trim()||!b)){N(!0),_(null);try{const fe=await wA(d.trim(),b);if(!fe.user){_("Incorrect name or password.");return}v(""),O(!1),s(fe.user),t("ready")}catch(fe){_(fe instanceof Mn?fe.message:"Incorrect name or password.")}finally{N(!1)}}};if(e==="ready"){const{queryClient:ue,router:fe}=Z();return m.jsx(MA,{account:i,children:m.jsx(c4,{client:ue,children:m.jsx(u4,{router:fe})})})}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(Zn,{className:"surface-card w-full",children:e==="checking"?m.jsx(ko,{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(ul,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),m.jsx(dl,{children:"Sign in to Canonry"}),m.jsx(ml,{children:"Enter the name and password for your account."})]}),m.jsxs(ko,{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:tn(pe),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:b,onChange:ue=>v(ue.target.value)})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(De,{type:"submit",disabled:T||!d.trim()||!b,children:T?"Signing in…":"Sign in"})]})]})]}):e==="setup"?m.jsxs(m.Fragment,{children:[m.jsxs(ul,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),m.jsx(dl,{children:"Create a dashboard password"}),m.jsx(ml,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),m.jsx(ko,{children:m.jsxs("form",{className:"space-y-4",onSubmit:tn(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:b,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:x,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(De,{type:"submit",disabled:T||!b.trim()||!x.trim(),children:T?"Setting up…":"Create password & open dashboard"})]})})]}):m.jsxs(m.Fragment,{children:[m.jsxs(ul,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),m.jsx(dl,{children:"Sign in to Canonry"}),m.jsx(ml,{children:"Enter your dashboard password to continue."})]}),m.jsxs(ko,{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:tn(q),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:b,onChange:ue=>v(ue.target.value),placeholder:"Dashboard password"})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(De,{type:"submit",disabled:T||!b.trim(),children:T?"Signing in…":"Open dashboard"})]})]})]})})})})}const G3=document.getElementById("root");if(!G3)throw new Error("Expected #root element for web app bootstrap.");y4.createRoot(G3).render(m.jsx(B.StrictMode,{children:m.jsx(gU,{})}));export{PK as $,fK as A,De as B,n0 as C,mK as D,hK as E,JU as F,YV as G,MK as H,nl as I,qK as J,IK as K,lV as L,rV as M,vV as N,pn as O,_I as P,$K as Q,UK as R,UN as S,An as T,pV as U,VK as V,fV as W,$o as X,uV as Y,mV as Z,LK as _,wG as a,IU as a$,BK as a0,cV as a1,KK as a2,XK as a3,QK as a4,FK as a5,ZK as a6,YK as a7,DA as a8,W0 as a9,bB as aA,MB as aB,CK as aC,EK as aD,zK as aE,uK as aF,dK as aG,hG as aH,gG as aI,yG as aJ,hV as aK,Ho as aL,gV as aM,X0 as aN,bG as aO,kG as aP,vG as aQ,zB as aR,NG as aS,tk as aT,ik as aU,cG as aV,RK as aW,de as aX,$U as aY,PU as aZ,LU as a_,Oe as aa,HK as ab,Ox as ac,Ya as ad,GK as ae,oD as af,rD as ag,WV as ah,JV as ai,LV as aj,GV as ak,HV as al,Mn as am,QV as an,VU as ao,nk as ap,sB as aq,kN as ar,ON as as,Tq as at,vu as au,ZV as av,yf as aw,uG as ax,dV as ay,XV as az,Eu as b,SG as b$,MU as b0,RU as b1,qU as b2,BU as b3,OU as b4,DU as b5,AU as b6,NU as b7,TU as b8,EU as b9,yK as bA,tV as bB,nV as bC,gK as bD,aV as bE,iV as bF,oV as bG,sV as bH,Tl as bI,nd as bJ,yL as bK,xl as bL,K2 as bM,kK as bN,wK as bO,zG as bP,k$ as bQ,TK as bR,xK as bS,jK as bT,NK as bU,SK as bV,dn as bW,pA as bX,uB as bY,jG as bZ,XU as b_,zU as ba,_U as bb,CU as bc,jU as bd,SU as be,xU as bf,wU as bg,P4 as bh,nK as bi,lG as bj,tK as bk,_V as bl,EG as bm,sK as bn,aK as bo,oK as bp,rK as bq,eK as br,iK as bs,YU as bt,FU as bu,ZU as bv,CV as bw,eV as bx,bK as by,Ov as bz,tt as c,RV as c$,GU as c0,HU as c1,KU as c2,hA as c3,QU as c4,yB as c5,JK as c6,eG as c7,_A as c8,tG as c9,qo as cA,Mv as cB,qV as cC,PV as cD,UV as cE,VV as cF,IV as cG,$V as cH,KV as cI,CI as cJ,Xx as cK,OI as cL,Jx as cM,Wx as cN,fN as cO,BV as cP,jb as cQ,pG as cR,WA as cS,cK as cT,H0 as cU,vK as cV,dG as cW,fG as cX,MV as cY,lK as cZ,OV as c_,jV as ca,SV as cb,nG as cc,WK as cd,pK as ce,kV as cf,wV as cg,xV as ch,AV as ci,zo as cj,J0 as ck,AG as cl,od as cm,nh as cn,DK as co,OK as cp,xA as cq,oA as cr,UU as cs,WU as ct,yV as cu,bV as cv,f$ as cw,rd as cx,ah as cy,NV as cz,xz as d,DV as d0,mG as d1,iE as d2,_K as d3,AK as d4,xG as e,Zn as f,Sa as g,Hv as h,nA as i,tn as j,FV as k,aG as l,le as m,iG as n,sG as o,rG as p,oG as q,zV as r,TV as s,rB as t,ih as u,EV as v,iB as w,_G as x,CG as y,Lf as z};
|
|
213
|
+
competitor2.com`,value:nr,onChange:W=>kd(W.target.value)})]}),Jt?m.jsx("p",{className:"text-negative-400 text-sm",children:Jt}):null,m.jsxs("div",{className:"setup-nav",children:[m.jsx(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsxs("div",{className:"flex gap-2",children:[m.jsx(De,{type:"button",variant:"outline",onClick:ii,children:"Skip"}),m.jsx(De,{type:"button",disabled:Na.length===0||Wt,onClick:tn(Pl),children:Wt?"Saving...":`Save ${Na.length} competitor${Na.length!==1?"s":""}`})]})]})]})]});case 4:{const W=ga.data,Me=W?.status??(ei===V?.id?V.status:void 0),bn=Me==="completed"||Me==="partial"||Me==="failed"||Me==="cancelled",_n=W?.snapshots??[],Ad=_n.filter(Mt=>Mt.citationState==="cited").length,$l=_n.filter(Mt=>Mt.answerMentioned===!0).length,lr=new Set(_n.map(Mt=>Mt.query).filter(Mt=>!!Mt)).size,Ul=Me?b2(Me,_n.length):!1,Xi=Z&&!Wa,Ds=ha??(W?.error?sB(W.error):Me==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Me==="completed"||Me==="partial")&&_n.length===0?"The sweep finished without producing any snapshots. Confirm the query set and provider configuration, then retry.":V?.statusDetail||"The sweep did not produce a baseline. Review provider configuration, then retry.");let rn=null;return Xi||Ul?rn=m.jsx(An,{tone:"positive",children:"Complete"}):ha&&!Wa?rn=m.jsx(An,{tone:"negative",children:"Failed"}):bn?rn=m.jsx(An,{tone:"negative",children:Me==="cancelled"?"Cancelled":"Failed"}):Wa&&(rn=m.jsx(An,{tone:"caution",children:"Running"})),m.jsxs(Zn,{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"})]}),rn]}),Xi?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(De,{type:"button",onClick:()=>{b({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Open project dashboard →"})]})]}):Wa?bn?Ul?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:[$l,m.jsxs("span",{className:"text-faint text-lg",children:[" / ",lr]})]}),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:[Ad,m.jsxs("span",{className:"text-faint text-lg",children:[" / ",lr]})]}),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:_n.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(De,{type:"button",onClick:()=>{b({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:Ds}),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(De,{type:"button",variant:"outline",asChild:!0,children:m.jsx(We,{to:"/settings",children:"Configure providers"})}),m.jsx(De,{type:"button",disabled:Aa||!!en,onClick:tn(Ts),children:Aa?"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:Me??"queued"})]})}),ga.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:ga.error instanceof Error?ga.error.message:"Could not refresh the sweep status."}),m.jsx(De,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{ga.refetch()},children:"Retry status check"})]}),m.jsxs("div",{className:"setup-nav",children:[m.jsx("span",{}),m.jsx(De,{type:"button",variant:"outline",onClick:()=>{b({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Watch on project page"})]})]}):m.jsxs("div",{className:"compact-stack",children:[m.jsxs("p",{className:"supporting-copy",children:["Setup is done. You can run a first sweep now to get a baseline for"," ",m.jsx("span",{className:"text-heading font-medium",children:ie}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(en||ha)&&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:ha??en}),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(De,{type:"button",variant:"outline",onClick:on,children:"Back"}),m.jsx(De,{type:"button",variant:"ghost",onClick:()=>{b({to:ie?`/projects/${encodeURIComponent(ie)}`:"/"})},children:"Finish without running"}),m.jsx(De,{type:"button",disabled:Aa||!!en,title:en,onClick:tn(Ts),children:Aa?"Launching...":ha?"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(z$,{current:pe,labels:C$}),m.jsx("section",{className:"setup-wizard",children:Rt})]})}function O$(){return m.jsx("div",{className:"page-container",children:m.jsx("section",{className:"page-section",children:m.jsxs(Zn,{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(De,{asChild:!0,children:m.jsx(We,{to:"/",children:"Return to overview"})})]})})})}const fa=Bi(()=>qi(()=>import("./ProjectPage-CYFnPBUA.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url),"ProjectPage"),R$=Bi(()=>qi(()=>import("./RunsPage-DUM6WBL1.js"),__vite__mapDeps([11,1,2,9,5,10]),import.meta.url),"RunsPage"),M$=Bi(()=>qi(()=>import("./HistoryPage-DYiMm7tS.js"),__vite__mapDeps([12,1,7,9,5,10]),import.meta.url),"HistoryPage"),B$=Bi(()=>qi(()=>import("./SettingsPage-DFPenWph.js"),__vite__mapDeps([13,1,9,5,10]),import.meta.url),"SettingsPage"),q$=Bi(()=>qi(()=>import("./BacklinksPage-B3oUNNXC.js"),__vite__mapDeps([14,1,6,9,5,10]),import.meta.url),"BacklinksPage"),I$=Bi(()=>qi(()=>import("./TrafficPage-S8S9tB6N.js"),__vite__mapDeps([15,1,4,16,9,5,10]),import.meta.url),"TrafficPage"),L$=Bi(()=>qi(()=>import("./TrafficSourceDetailPage-CfzhhNVa.js"),__vite__mapDeps([17,1,4,3,5,16,9,10]),import.meta.url),"TrafficSourceDetailPage"),P$=Bi(()=>qi(()=>import("./MeasurementPropertyPage-Cej0CSpU.js"),__vite__mapDeps([18,1,8,16,9,5,10]),import.meta.url),"MeasurementPropertyPage");function $$(){return m.jsx(JL,{children:m.jsx(XL,{})})}const hn=r4()({component:$$,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,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})}),U$=St({getParentRoute:()=>hn,path:"/",component:tP,beforeLoad:({context:e})=>{const t=e.queryClient.getQueryData(Ho({client:le}));if(t&&t.length===0)throw j2({to:"/setup"})}}),V$=St({getParentRoute:()=>hn,path:"/projects",component:p$}),K$=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,qn=St({getParentRoute:()=>hn,path:"/projects/$projectName",component:()=>m.jsx(mf,{}),beforeLoad:async({context:e,params:t,location:i})=>{const s=t.projectName;if(!K$.test(s))return;let r=e.queryClient.getQueryData(Ho({client:le}));if(!r)try{r=await e.queryClient.ensureQueryData(nd({client:le}))}catch{return}const u=r.find(d=>d.id===s);if(u)throw j2({to:i.pathname.replace(`/projects/${s}`,`/projects/${encodeURIComponent(u.name)}`),replace:!0})}}),G$=St({getParentRoute:()=>qn,path:"/",component:()=>m.jsx(fa,{tab:"overview"})}),H$=St({getParentRoute:()=>qn,path:"/portfolio",component:()=>m.jsx(fa,{tab:"portfolio"})}),Q$=St({getParentRoute:()=>qn,path:"/search-console",component:()=>m.jsx(fa,{tab:"search-console"})}),Z$=St({getParentRoute:()=>qn,path:"/local",component:()=>m.jsx(fa,{tab:"local"})}),F$=St({getParentRoute:()=>qn,path:"/discovery",component:()=>m.jsx(fa,{tab:"discovery"})}),Y$=St({getParentRoute:()=>qn,path:"/properties/$targetKey",component:()=>m.jsx(P$,{})}),X$=St({getParentRoute:()=>qn,path:"/report",component:()=>m.jsx(fa,{tab:"report"})}),J$=St({getParentRoute:()=>qn,path:"/activity",component:()=>m.jsx(fa,{tab:"activity"})}),W$=St({getParentRoute:()=>qn,path:"/backlinks",component:()=>m.jsx(fa,{tab:"backlinks"})}),eU=St({getParentRoute:()=>qn,path:"/technical-aeo",component:()=>m.jsx(fa,{tab:"technical-aeo"})}),tU=St({getParentRoute:()=>qn,path:"/history",component:()=>m.jsx(fa,{tab:"history"})}),nU=St({getParentRoute:()=>qn,path:"/settings",component:()=>m.jsx(fa,{tab:"settings"})}),aU=St({getParentRoute:()=>hn,path:"/runs",component:R$}),iU=St({getParentRoute:()=>hn,path:"/history",component:M$}),sU=St({getParentRoute:()=>hn,path:"/settings",component:B$,beforeLoad:({context:e})=>{}}),oU=St({getParentRoute:()=>hn,path:"/setup",component:E$}),rU=St({getParentRoute:()=>hn,path:"/backlinks",component:q$}),lU=St({getParentRoute:()=>hn,path:"/traffic",component:I$}),cU=St({getParentRoute:()=>hn,path:"/traffic/$projectName/$sourceId",component:L$}),uU=St({getParentRoute:()=>hn,path:"*",component:O$}),dU=hn.addChildren([U$,V$,qn.addChildren([G$,H$,Q$,Z$,F$,Y$,X$,J$,W$,eU,tU,nU]),aU,iU,sU,oU,rU,lU,cU,uU]);function mU(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const w2=mU(),pU=w2==="/"?"":w2.replace(/\/$/,"");function fU(e,t){return l4({routeTree:dU,basepath:pU||"/",context:{queryClient:e},...t?.initialEntries})}const hU=6e4;function gU(){const[e,t]=B.useState(qp()?"ready":"checking"),[i,s]=B.useState(null),[r,u]=B.useState(!1),[d,g]=B.useState(""),[b,v]=B.useState(""),[x,S]=B.useState(""),[j,_]=B.useState(null),[T,N]=B.useState(!1),[C,O]=B.useState(!1),I=B.useRef(null),$=B.useRef(null),V=B.useRef(null),Z=()=>{const ue=i?`${i.name}:${i.role}`:"no-accounts";if(!I.current||V.current!==ue){$.current?.clear();const fe=KA();$.current=fe,I.current=fU(fe),V.current=ue}return{queryClient:$.current,router:I.current}},se=ue=>ue.authRequired?(u(!0),s(ue.user),t(ue.user?"ready":"account-login"),!0):!1;B.useEffect(()=>{if(qp())return;let ue=!1;return Promise.allSettled([bb(),yb()]).then(([fe,we])=>{if(ue||fe.status==="fulfilled"&&se(fe.value))return;if(we.status==="rejected"){const it=we.reason;_(it instanceof Error?it.message:"Failed to reach the Canonry API"),t("login");return}const Te=we.value;Te.authenticated?t("ready"):t(Te.setupRequired?"setup":"login")}),()=>{ue=!0}},[]),B.useEffect(()=>{if(e!=="ready"||qp())return;const ue=setInterval(()=>{if(r){bb().then(fe=>{fe.authRequired&&!fe.user&&(O(!0),s(null),t("account-login"))}).catch(()=>{});return}yb().then(fe=>{fe.authenticated||(O(!0),t(fe.setupRequired?"setup":"login"))}).catch(()=>{})},hU);return gb(()=>{O(!0),s(null),t(r?"account-login":"login")}),()=>{clearInterval(ue),gb(null)}},[e,r]);const R=async ue=>{if(ue.preventDefault(),!b.trim()||b.trim().length<8){_("Password must be at least 8 characters");return}if(b!==x){_("Passwords do not match");return}N(!0),_(null);try{if(!(await vA(b.trim())).authenticated){_("Setup failed");return}v(""),S(""),O(!1),t("ready")}catch(fe){_(fe instanceof Mn||fe instanceof Error?fe.message:"Setup failed")}finally{N(!1)}},q=async ue=>{if(ue.preventDefault(),!!b.trim()){N(!0),_(null);try{if(!(await kA(b.trim())).authenticated){_("Incorrect password");return}v(""),O(!1),t("ready")}catch(fe){_(fe instanceof Mn||fe instanceof Error?fe.message:"Authentication failed")}finally{N(!1)}}},pe=async ue=>{if(ue.preventDefault(),!(!d.trim()||!b)){N(!0),_(null);try{const fe=await wA(d.trim(),b);if(!fe.user){_("Incorrect name or password.");return}v(""),O(!1),s(fe.user),t("ready")}catch(fe){_(fe instanceof Mn?fe.message:"Incorrect name or password.")}finally{N(!1)}}};if(e==="ready"){const{queryClient:ue,router:fe}=Z();return m.jsx(MA,{account:i,children:m.jsx(c4,{client:ue,children:m.jsx(u4,{router:fe})})})}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(Zn,{className:"surface-card w-full",children:e==="checking"?m.jsx(ko,{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(ul,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),m.jsx(dl,{children:"Sign in to Canonry"}),m.jsx(ml,{children:"Enter the name and password for your account."})]}),m.jsxs(ko,{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:tn(pe),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:b,onChange:ue=>v(ue.target.value)})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(De,{type:"submit",disabled:T||!d.trim()||!b,children:T?"Signing in…":"Sign in"})]})]})]}):e==="setup"?m.jsxs(m.Fragment,{children:[m.jsxs(ul,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),m.jsx(dl,{children:"Create a dashboard password"}),m.jsx(ml,{children:"Choose a password to protect the Canonry dashboard. You will use this to sign in on future visits."})]}),m.jsx(ko,{children:m.jsxs("form",{className:"space-y-4",onSubmit:tn(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:b,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:x,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(De,{type:"submit",disabled:T||!b.trim()||!x.trim(),children:T?"Setting up…":"Create password & open dashboard"})]})})]}):m.jsxs(m.Fragment,{children:[m.jsxs(ul,{children:[m.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),m.jsx(dl,{children:"Sign in to Canonry"}),m.jsx(ml,{children:"Enter your dashboard password to continue."})]}),m.jsxs(ko,{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:tn(q),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:b,onChange:ue=>v(ue.target.value),placeholder:"Dashboard password"})]}),j?m.jsx("p",{className:"text-sm text-negative-400",children:j}):null,m.jsx(De,{type:"submit",disabled:T||!b.trim(),children:T?"Signing in…":"Open dashboard"})]})]})]})})})})}const G3=document.getElementById("root");if(!G3)throw new Error("Expected #root element for web app bootstrap.");y4.createRoot(G3).render(m.jsx(B.StrictMode,{children:m.jsx(gU,{})}));export{PK as $,fK as A,De as B,n0 as C,mK as D,hK as E,JU as F,YV as G,MK as H,nl as I,qK as J,IK as K,lV as L,rV as M,vV as N,pn as O,_I as P,$K as Q,UK as R,UN as S,An as T,pV as U,VK as V,fV as W,$o as X,uV as Y,mV as Z,LK as _,wG as a,IU as a$,BK as a0,cV as a1,KK as a2,XK as a3,QK as a4,FK as a5,ZK as a6,YK as a7,DA as a8,W0 as a9,bB as aA,MB as aB,CK as aC,EK as aD,zK as aE,uK as aF,dK as aG,hG as aH,gG as aI,yG as aJ,hV as aK,Ho as aL,gV as aM,X0 as aN,bG as aO,kG as aP,vG as aQ,zB as aR,NG as aS,tk as aT,ik as aU,cG as aV,RK as aW,de as aX,$U as aY,PU as aZ,LU as a_,Oe as aa,HK as ab,Ox as ac,Ya as ad,GK as ae,oD as af,rD as ag,WV as ah,JV as ai,LV as aj,GV as ak,HV as al,Mn as am,QV as an,VU as ao,nk as ap,sB as aq,kN as ar,ON as as,Tq as at,vu as au,ZV as av,yf as aw,uG as ax,dV as ay,XV as az,Eu as b,SG as b$,MU as b0,RU as b1,qU as b2,BU as b3,OU as b4,DU as b5,AU as b6,NU as b7,TU as b8,EU as b9,yK as bA,tV as bB,nV as bC,gK as bD,aV as bE,iV as bF,oV as bG,sV as bH,Tl as bI,nd as bJ,yL as bK,xl as bL,K2 as bM,kK as bN,wK as bO,zG as bP,k$ as bQ,TK as bR,xK as bS,jK as bT,NK as bU,SK as bV,dn as bW,pA as bX,uB as bY,jG as bZ,XU as b_,zU as ba,_U as bb,CU as bc,jU as bd,SU as be,xU as bf,wU as bg,P4 as bh,nK as bi,lG as bj,tK as bk,_V as bl,EG as bm,sK as bn,aK as bo,oK as bp,rK as bq,eK as br,iK as bs,YU as bt,FU as bu,ZU as bv,CV as bw,eV as bx,bK as by,Ov as bz,tt as c,RV as c$,GU as c0,HU as c1,KU as c2,hA as c3,QU as c4,yB as c5,JK as c6,eG as c7,_A as c8,tG as c9,qo as cA,Mv as cB,qV as cC,PV as cD,UV as cE,VV as cF,IV as cG,$V as cH,KV as cI,CI as cJ,Xx as cK,OI as cL,Jx as cM,Wx as cN,fN as cO,BV as cP,jb as cQ,pG as cR,WA as cS,cK as cT,H0 as cU,vK as cV,dG as cW,fG as cX,MV as cY,lK as cZ,OV as c_,jV as ca,SV as cb,nG as cc,WK as cd,pK as ce,kV as cf,wV as cg,xV as ch,AV as ci,zo as cj,J0 as ck,AG as cl,od as cm,nh as cn,DK as co,OK as cp,xA as cq,oA as cr,UU as cs,WU as ct,yV as cu,bV as cv,f$ as cw,rd as cx,ah as cy,NV as cz,xz as d,DV as d0,mG as d1,iE as d2,_K as d3,AK as d4,xG as e,Zn as f,Sa as g,Hv as h,nA as i,tn as j,FV as k,aG as l,le as m,iG as n,sG as o,rG as p,oG as q,zV as r,TV as s,rB as t,ih as u,EV as v,iB as w,_G as x,CG as y,Lf as z};
|