@perpetio/redline 2.1.1
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/LICENSE +56 -0
- package/README.md +763 -0
- package/bin/redline-mcp.cjs +30 -0
- package/docs/images/npm-banner.jpg +0 -0
- package/docs/images/npm-review.png +0 -0
- package/examples/plain-html.html +30 -0
- package/examples/playground.html +101 -0
- package/examples/react.jsx +23 -0
- package/examples/vue.vue +25 -0
- package/package.json +71 -0
- package/redline.d.cts +2 -0
- package/redline.d.mts +280 -0
- package/redline.d.ts +279 -0
- package/redline.js +2 -0
- package/redline.mjs +753 -0
package/redline.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! Redline 2.1.1 (c) 2026 Perpetio OÜ. See LICENSE. Includes annotate.js, MIT License, Copyright (c) 2026 annotate.js contributors. */
|
|
2
|
+
(function($,_e){typeof module=="object"&&module.exports?module.exports=_e($):$&&!$.Redline&&!$.Annotate&&($.Redline=$.Annotate=_e($),$.Redline.init(void 0,$.document.currentScript))})(typeof window!="undefined"?window:null,function($){"use strict";var _e=null,qr,Xr,ci=Object.create(null),fi=Object.create(null),Kn="",Vr=Object.create(null),Et=typeof Symbol=="function"?Symbol.for("reviewjs.annotate.controller"):"__ANNOTATE_CONTROLLER__",Me={version:"2.1.1",init:function(m,Wn){if(!$||!$.document)throw new Error("Redline.init requires a browser document");return _e&&m===void 0||($[Et]&&$[Et]!==Me&&$[Et].destroy(),Me.destroy(),(m!==void 0||Wn!==void 0)&&(qr=m,Xr=Wn),_e=tl($,qr,Xr),$[Et]=Me),Me},destroy:function(){_e&&_e.destroy(),_e=null,$&&$[Et]===Me&&delete $[Et]}};return Object.defineProperty(Me,"config",{enumerable:!0,get:function(){return _e?_e.config:null}}),["open","close","toggle","enable","disable","setTool","refresh","comments","focus","toast","export","import","clear","submit","setStatus","assign","syncState","markdown","copy","setFrozen","isFrozen"].forEach(function(m){Me[m]=function(){if(!_e)throw new Error("Call Redline.init() first");return _e[m].apply(_e,arguments)}}),Me;function tl(m,Wn,Re){var h=m.document,z=m.location,O=!1,We=!1,ce=null,Ae=null,$e=null,rt=[],cn=new Set,fn=new Set,$n=new Set;function v(e,t,n,r){e.addEventListener(t,n,r),(e===h||e===m)&&rt.push(function(){e.removeEventListener(t,n,r)})}function R(e,t){if(O)return 0;var n=m.setTimeout(function(){cn.delete(n),O||e()},t);return cn.add(n),n}function P(e){m.clearTimeout(e),cn.delete(e)}function St(e){if(O)return 0;var t=m.requestAnimationFrame(function(){fn.delete(t),O||e()});return fn.add(t),t}function pc(e){m.cancelAnimationFrame(e),fn.delete(e)}function X(){return ce||(ce=h.createElement("div"),ce.id="__an_host",ce.style.display="contents"),!ce.isConnected&&h.body&&h.body.appendChild(ce),ge&&h.body&&$e!==h.body&&($e&&ge.unobserve($e),$e=h.body,ge.observe($e)),ce}var pi="2.1.1",hi="https://api.redlinejs.com",gi="http://127.0.0.1:7335",Gr="https://app.redlinejs.com";function Jn(e){if(!fi[e]){fi[e]=!0;try{m.console.warn("Redline: "+e)}catch(t){}}}function nl(e){return e=String(e||"").trim().toLowerCase(),e==="same-origin"||e==="include"?e:"omit"}function rl(e){return e=String(e==null?"":e).trim(),!e||/^ws_[A-Za-z0-9_-]{1,64}$/.test(e)?e:(Jn('data-workspace "'+e+'" is not a workspace id (ws_\u2026); it is ignored.'),"")}function al(e){if(e==null||String(e).trim()==="")return 3;var t=Number(e);return isFinite(t)?Math.max(0,Math.min(5,Math.floor(t))):3}var Y=Re&&Re.dataset||{},K=Wn||m.RedlineConfig||m.AnnotateConfig||{},mi=Y.page||K.page||"",k={project:Y.project||K.project||"",page:mi||z.pathname,accent:Y.accent||K.accent||"",theme:Y.theme||K.theme||"auto",position:Y.position||K.position||"bottom-right",blocks:Y.blocks||K.blocks||"",startOpen:_i(Y.startOpen||K.startOpen),note:Y.note||K.note||"",share:String(Y.shareEmail||K.shareEmail||"").trim(),spa:_i(Y.spa!==void 0?Y.spa:K.spa),postUrl:String(Y.postUrl||K.postUrl||"").trim(),postRetries:al(Y.postRetries!==void 0?Y.postRetries:K.postRetries),reviewId:String(Y.reviewId||K.reviewId||"").trim(),workspace:rl(Y.workspace!==void 0?Y.workspace:K.workspace),inviteParam:String(Y.inviteParam||K.inviteParam||"an_invite").trim(),pollInterval:Math.max(500,Number(Y.pollInterval||K.pollInterval)||2e4),credentials:nl(Y.credentials||K.credentials),capture:yu(To(Y.capture!==void 0?Y.capture:K.capture)),editorUrl:String(Y.editorUrl||K.editorUrl||"").trim()},vi=To(k.capture);(Y.api!==void 0||K.api!==void 0)&&Jn("data-api was removed in 2.0. Comments sync to Redline Cloud by data-review-id."),K.auth!==void 0&&Jn("the auth option was removed in 2.0.");var il=!!mi;function xi(){return il||(k.page=z.pathname),(k.project?k.project+":":"")+k.page}var N=xi(),D={get:function(e){try{return localStorage.getItem(e)}catch(t){return null}},set:function(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return n&&(n.name==="QuotaExceededError"||n.name==="NS_ERROR_DOM_QUOTA_REACHED")&&R(function(){L("Storage full \u2014 export your comments before adding more.",{kind:"error",duration:8e3})},0),!1}}},ol="Changes may not be saved \u2014 this browser is refusing storage. Your comments are kept on screen and can still be downloaded as JSON.",bi=!1;function sl(e){e?h.getElementById("__an_unsaved")&&h.getElementById("__an_unsaved").remove():(bi||(bi=!0,L("Storage is unavailable \u2014 your comments are kept on screen only.",{kind:"error",duration:8e3})),h.getElementById("__an_unsaved")||X().appendChild(s("div",{id:"__an_unsaved",role:"alert",text:ol})))}var Kr=[{name:"Amber",hex:"#f59e0b"},{name:"Rose",hex:"#f43f5e"},{name:"Violet",hex:"#8b5cf6"},{name:"Sky",hex:"#0ea5e9"},{name:"Emerald",hex:"#10b981"}],c={tool:"cursor",color:D.get("an-color")||Kr[0].hex,author:D.get("an-author")||"",authorId:null,note:k.note||"",share:k.share||"",comments:[],panelOpen:!1,activeId:null,filter:"open",query:"",enabled:D.get("an-off")!=="1"};function s(e,t,n){var r=h.createElement(e);return t&&Object.keys(t).forEach(function(a){a==="class"?r.className=t[a]:a==="html"?r.innerHTML=t[a]:a==="text"?r.textContent=t[a]:a.slice(0,2)==="on"?v(r,a.slice(2).toLowerCase(),t[a]):r.setAttribute(a,t[a])}),(n||[]).forEach(function(a){a&&r.appendChild(typeof a=="string"?h.createTextNode(a):a)}),r}function oe(e,t){var n=h.createElementNS("http://www.w3.org/2000/svg",e);return t&&Object.keys(t).forEach(function(r){n.setAttribute(r,t[r])}),n}function yi(e){return String(e).replace(/[&<>"]/g,function(t){return{"&":"&","<":"<",">":">",'"':"""}[t]})}function At(e){var t=new Date(e),n=Date.now(),r=(n-t)/1e3;return r<60?"just now":r<3600?Math.floor(r/60)+"m ago":r<86400?Math.floor(r/3600)+"h ago":t.toLocaleDateString()}function ll(e){var t=String(e||"?").trim().split(/\s+/);return((t[0]||"?")[0]+(t.length>1?t[t.length-1][0]:"")).toUpperCase()}function _i(e){return e===!0||/^(1|true|yes|open)$/i.test(String(e||""))}function ul(e){for(var t=0,n=String(e||""),r=0;r<n.length;r++)t=(t*31+n.charCodeAt(r))%360;return t}function wi(e){return d.agentId&&e&&e===d.agentId?s("span",{class:"an-agent",text:"Agent",title:"Written by the review's AI agent"}):null}function pn(e,t){var n=s("span",{class:"an-avatar",text:ll(e),title:e||""});return n.style.background="hsl("+ul(e)+" 55% 45%)",t&&(n.style.width=n.style.height=t+"px",n.style.fontSize=t*.4+"px"),n}var ki="annotate:"+(k.project||z.host||"default"),hn=z.hostname==="localhost"||z.hostname==="127.0.0.1";k.reviewId==="local"&&!hn&&(Jn('data-review-id="local" works only on localhost and 127.0.0.1 pages.'),k.reviewId="");var Ci=k.reviewId==="local",gn=!!k.workspace&&!k.reviewId,Ei="annotate:site-review:"+k.workspace,dl=600*1e3,Si=/^rvw_[A-Za-z0-9_-]{1,64}$/,Wr=gn&&!Vr[k.workspace]&&fl(),Tt=gn?cl():null,$r=gn&&!Wr&&!!(Tt&&Tt.reviewId);$r&&(k.reviewId=Tt.reviewId);var Ai="annotate:agent";!k.reviewId&&hn&&D.get(Ai)==="on"&&(k.reviewId="local");var mn=k.reviewId==="local",at=!!k.reviewId&&!mn,vn=k.reviewId?(mn?gi:hi)+"/v1/annotate/reviews/"+encodeURIComponent(k.reviewId):"",E=!!vn,Qn=E?"annotate:remote:"+k.reviewId:ki;function cl(){var e;try{e=JSON.parse(D.get(Ei)||"null")}catch(t){e=null}return!e||typeof e.at!="number"?null:e.reviewId===null||typeof e.reviewId=="string"&&Si.test(e.reviewId)?e:null}function fl(){try{var e=new URL(z.href).searchParams;return!!(e.get("an_signin")||k.inviteParam&&e.get(k.inviteParam))}catch(t){return!1}}function te(){var e;try{e=JSON.parse(D.get(Qn)||"null")}catch(t){e=null}return(!e||typeof e!="object")&&(e={}),Array.isArray(e.comments)||(e.comments=[]),e}function Fe(e){var t=D.set(Qn,JSON.stringify(e));return sl(t),t}function it(){if(m.crypto&&crypto.getRandomValues){var e=new Uint32Array(3);return crypto.getRandomValues(e),"c"+e[0].toString(36)+e[1].toString(36)+e[2].toString(36)}return"c"+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)}var Zn=5e3,Jr=5e3,Ti=500,q={},Qr=2,Ve={open:"Open",in_progress:"In progress",resolved:"Resolved",wont_fix:"Won\u2019t fix"};function Zr(e){return e==="resolved"||e==="wont_fix"}function er(e){return typeof e=="string"&&/^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e)?e:Kr[0].hex}function fe(e){return typeof e=="string"&&e?e:null}var pl=["kind","selector","x","y","w","h","vw","vh","points","selectors"];function hl(e){if(!e||typeof e!="object")return null;var t={};return pl.forEach(function(n){e[n]!==void 0&&(n==="points"?Array.isArray(e.points)&&e.points.every(Array.isArray)&&(t.points=e.points.map(function(r){return[r[0],r[1]]})):n==="selectors"?Array.isArray(e.selectors)&&(t.selectors=e.selectors.slice()):t[n]=e[n])}),t}function Ii(e){return!e||typeof e!="object"||typeof e.name!="string"||!e.name.trim()?null:{id:fe(e.id),name:e.name.trim().slice(0,80)}}function Li(e){var t={id:e.id,author:e.author,authorId:fe(e.authorId),text:e.text,createdAt:e.createdAt,editedAt:fe(e.editedAt)},n=Oi(e.mentions);return n.length&&(t.mentions=n),t}function Oi(e){if(!Array.isArray(e))return[];var t=[];return e.forEach(function(n){typeof n=="string"&&n&&n.length<=128&&t.indexOf(n)<0&&t.length<20&&t.push(n)}),t}function Mi(e,t){return!Array.isArray(e)||!t||!t.selectors||e.length!==t.selectors.length?null:e.map(function(n){return n&&Eo(n)?_r(n):null})}function Je(e){var t=Ve[e.status]?e.status:e.resolved===!0?"resolved":"open",n=Zr(t),r={schema:Qr,id:e.id,page:e.page,url:typeof e.url=="string"?e.url:"",type:e.type,author:e.author,authorId:fe(e.authorId),text:e.text,color:er(e.color),anchor:e.anchor?{exact:e.anchor.exact,prefix:e.anchor.prefix,suffix:e.anchor.suffix}:null,geom:hl(e.geom),visibility:e.visibility==="private"?"private":"shared",status:t,resolved:n,resolvedBy:n?fe(e.resolvedBy):null,resolvedAt:n?fe(e.resolvedAt):null,assignee:Ii(e.assignee),assignedAt:e.assignee?fe(e.assignedAt):null,replies:e.replies.map(Li),createdAt:typeof e.createdAt=="string"?e.createdAt:"",updatedAt:typeof e.updatedAt=="string"?e.updatedAt:typeof e.createdAt=="string"?e.createdAt:"",editedAt:fe(e.editedAt)},a=Oi(e.mentions);a.length&&(r.mentions=a);var i=_r(e.target);i&&e.type!=="group"&&(r.target=i);var o=e.type==="group"?Mi(e.targets,r.geom):null;return o&&(r.targets=o),r}function It(e){return JSON.parse(JSON.stringify(e,function(t,n){return t.slice(0,2)==="__"?void 0:n}))}function Lt(e){return c.authorId&&e.authorId?e.authorId===c.authorId:e.author===(c.author||"Anonymous")}function Ri(e){return!E||Lt(e)||Ot()}function Ot(){return E&&!!d.reviewer&&d.reviewer.role==="author"}function ea(){return E&&d.visibility==="team"}function ta(e){return!E||!d.token?Promise.resolve(d.members||[]):d.membersUnsupported?Promise.resolve([]):!e&&d.members&&Date.now()-d.membersAt<3e5?Promise.resolve(d.members):(d.membersLoading||(d.membersLoading=pe("GET","/members").then(function(t){return t.res.status===404?(d.membersUnsupported=!0,[]):(t.res.status===200&&t.data&&Array.isArray(t.data.members)&&(d.members=t.data.members.filter(function(n){return n&&typeof n.id=="string"&&typeof n.name=="string"&&n.name}),d.membersAt=Date.now(),We&&ei()),d.members||[])},function(){return d.members||[]}).finally(function(){d.membersLoading=null})),d.membersLoading)}function gl(){var e={};return(d.members||[]).forEach(function(t){e[t.id]=t.name}),e}function Pi(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function na(e,t){var n=String(e||""),r=[];return(t||[]).slice().sort(function(a,i){return i.name.length-a.name.length}).forEach(function(a){var i=new RegExp("(^|[^\\w@])@"+Pi(a.name)+"(?![\\w])","i"),o=i.exec(n);!o||r.length>=20||(r.indexOf(a.id)<0&&r.push(a.id),n=n.slice(0,o.index)+new Array(o[0].length+1).join(" ")+n.slice(o.index+o[0].length))}),r}function ra(e,t,n,r){var a=h.createDocumentFragment(),i=String(e||""),o=(n||[]).filter(function(g){return(t||[]).indexOf(g.id)>=0}).sort(function(g,y){return y.name.length-g.name.length});if(!o.length)return a.appendChild(h.createTextNode(i)),a;for(var l=new RegExp("(^|[^\\w@])@("+o.map(function(g){return Pi(g.name)}).join("|")+")(?![\\w])","gi"),u=0,p;p=l.exec(i);){var f=o.filter(function(g){return g.name.toLowerCase()===p[2].toLowerCase()})[0];a.appendChild(h.createTextNode(i.slice(u,p.index)+p[1])),a.appendChild(s("span",{class:"an-mention"+(f&&f.id===r?" an-me":""),text:"@"+p[2]})),u=p.index+p[0].length}return a.appendChild(h.createTextNode(i.slice(u))),a}function Ni(e){if(!E||!e.parentNode)return;ta();var t=s("div",{class:"an-mlist",role:"listbox",id:"__an_ml_"+it()});t.hidden=!0,e.setAttribute("role","combobox"),e.setAttribute("aria-autocomplete","list"),e.setAttribute("aria-expanded","false"),e.setAttribute("aria-controls",t.id),e.parentNode.insertBefore(t,e.nextSibling);var n=[],r=0,a=-1;function i(){var f=e.value,g=e.selectionStart,y=f.lastIndexOf("@",g-1);if(y<0||y>0&&/[\w@]/.test(f.charAt(y-1)))return null;var w=f.slice(y+1,g);return/\n/.test(w)||w.length>40?null:{at:y,q:w.toLowerCase()}}function o(){t.hidden=!0,n=[],e.setAttribute("aria-expanded","false"),e.removeAttribute("aria-activedescendant")}function l(){if(t.innerHTML="",!n.length){o();return}n.forEach(function(f,g){var y=s("div",{class:"an-mopt"+(g===r?" an-on":""),role:"option",id:t.id+"_"+g,"aria-selected":g===r?"true":"false"},[s("span",{text:f.name}),f.agent?s("span",{class:"an-mtag",text:"Agent"}):null]);v(y,"mousedown",function(w){w.preventDefault(),p(f)}),t.appendChild(y)}),t.hidden=!1,e.setAttribute("aria-expanded","true"),e.setAttribute("aria-activedescendant",t.id+"_"+r)}function u(){var f=i();if(!f){o();return}ta().then(function(g){var y=i();if(!(!y||y.at!==f.at)){a=f.at,r=0;var w=g.filter(function(b){if(b.id===c.authorId||!b.agent&&c.author&&b.name===c.author)return!1;var T=b.name.toLowerCase();return!f.q||T.indexOf(f.q)===0||T.split(/\s+/).some(function(C){return C.indexOf(f.q)===0})});n=w.slice(0,8),w.forEach(function(b){b.agent&&n.indexOf(b)<0&&(n[Math.min(n.length,7)]=b)}),l()}})}function p(f){var g=e.value,y=e.selectionStart,w="@"+f.name+" ";e.value=g.slice(0,a)+w+g.slice(y);var b=a+w.length;e.setSelectionRange(b,b),o(),e.focus()}v(e,"input",u),v(e,"keydown",function(f){f.isComposing||f.keyCode===229||t.hidden||!n.length||(f.key==="ArrowDown"||f.key==="ArrowUp"?(f.preventDefault(),r=(r+(f.key==="ArrowDown"?1:n.length-1))%n.length,l()):(f.key==="Enter"||f.key==="Tab")&&!f.metaKey&&!f.ctrlKey?(f.preventDefault(),f.stopImmediatePropagation(),p(n[r])):f.key==="Escape"&&(f.preventDefault(),f.stopImmediatePropagation(),o()))}),v(e,"blur",function(){R(o,150)})}var we={items:[],supported:!0},Di="annotate:mentions-read:"+k.reviewId,ot=null,aa=null,ia=null;function ml(){if(!(!E||!d.token||!we.supported)&&!we.loading){we.loading=!0;var e=new Date(Date.now()-30*864e5).toISOString();pe("GET","/mentions?since="+encodeURIComponent(e)).then(function(t){if(!O){if(t.res.status===404){we.supported=!1;return}if(!(t.res.status!==200||!t.data||!Array.isArray(t.data.mentions))){var n=JSON.stringify(we.items);we.items=t.data.mentions.filter(function(r){return r&&typeof r.commentId=="string"&&typeof r.createdAt=="string"}).sort(function(r,a){return Date.parse(a.createdAt)-Date.parse(r.createdAt)}),JSON.stringify(we.items)!==n&&(oa(),c.filter==="mentions"&&U())}}},function(){}).finally(function(){we.loading=!1})}}function ji(){var e=Date.parse(D.get(Di)||"");return isFinite(e)?Math.min(e,Date.now()):0}function vl(){var e=ji();return we.items.filter(function(t){return Date.parse(t.createdAt)>e}).length}function zi(){if(we.items.length){var e=we.items.reduce(function(t,n){var r=Date.parse(n.createdAt);return isFinite(r)&&r>t?r:t},ji());D.set(Di,new Date(Math.min(e,Date.now())).toISOString()),oa()}}function oa(){var e=vl();De&&De.setAttribute("aria-label",e?"Review, "+e+" unread mention"+(e===1?"":"s"):"Review"),ot&&(ot.textContent=String(e),ot.setAttribute("aria-label",e+" unread mention"+(e===1?"":"s")),ot.style.display=e?"flex":"none"),aa&&(aa.textContent=e?"Mentions "+e:"Mentions")}function xl(e){try{var t=new URL(String(e.url||""),z.href);return t.protocol!=="http:"&&t.protocol!=="https:"?null:(t.hash="an="+encodeURIComponent(e.commentId),t.href)}catch(n){return null}}function bl(){var e=d.mentionEmails,t=s("button",{class:"an-switch",role:"switch","data-action":"mention-emails","aria-label":"Email me when I'm mentioned","aria-checked":e===!1?"false":"true"});return(e===void 0||d.mentionPrefsSaving)&&(t.disabled=!0),d.mentionPrefsTried||yl(),v(t,"click",function(n){if(n.stopPropagation(),!(t.disabled||d.mentionPrefsSaving)){var r=t.getAttribute("aria-checked")!=="true";t.setAttribute("aria-checked",r?"true":"false"),d.mentionEmails=r,d.mentionPrefsSaving=!0,t.disabled=!0,pe("PUT","/me/notifications",{mentionEmails:r},{"Idempotency-Key":it()}).then(function(a){if(a.res.status!==200)throw new Error("HTTP "+a.res.status)}).then(null,function(){d.mentionEmails=!r,t.setAttribute("aria-checked",r?"false":"true"),L("Couldn't change your email setting. Try again.",{kind:"error"})}).then(function(){d.mentionPrefsSaving=!1,t.disabled=!1,c.filter==="mentions"&&!x.open&&U()})}}),s("div",{class:"an-mswitch"},[s("span",{text:"Email me when I'm mentioned"}),t])}function yl(){d.mentionPrefsTried||(d.mentionPrefsTried=!0,d.mentionPrefsLoading=!0,pe("GET","/me/notifications").then(function(e){d.mentionPrefsLoading=!1,e.res.status===200&&e.data&&typeof e.data.mentionEmails=="boolean"&&(d.mentionEmails=e.data.mentionEmails,c.filter==="mentions"&&!x.open&&U())},function(){d.mentionPrefsLoading=!1}))}function _l(){ta();var e=ga(N);if(E&&d.emailOn&&d.hasEmail&&j.appendChild(bl()),!we.items.length){j.appendChild(s("div",{class:"an-empty"},[s("div",{text:"No mentions yet."})]));return}we.items.forEach(function(t){var n=t.page===e,r=xl(t),a=String(t.page).replace(/^[^:]*:/,"")||"page",i=s("div",{class:"an-mention-item"},[s("div",{class:"an-cmeta"},[pn(t.author),s("span",{class:"an-author",text:t.author}),s("span",{class:"an-when",text:At(t.createdAt)})]),s("div",{class:"an-body"},[ra(t.text,[c.authorId],d.members,c.authorId)]),s("div",{class:"an-mwhere",text:"on "+a}),n?s("button",{class:"an-mini",text:"Open",onclick:function(o){o.stopPropagation(),c.filter="all",ia&&ia.querySelectorAll(".an-chip").forEach(function(l){l.classList.toggle("an-on",l.getAttribute("data-f")==="all")}),re(),U(),ye(t.commentId,!0)}}):r?s("a",{class:"an-mini",href:r,text:"Go to "+a}):null]);j.appendChild(i)}),c.panelOpen&&!h.hidden&&zi()}var x={open:!1,items:null,loading:!1,loadSeq:0,error:"",form:null,ready:null,emailSend:null,menu:null,confirm:null,busy:!1,focus:null},xn,bn,tr,nr,sa,la,ua,da,wl=[["7","In 7 days"],["30","In 30 days"],["90","In 90 days"],["never","Never"]],yn={name:"Enter a name.",email:"Enter a valid email address.",role:"Choose a role.",expiresAt:"Choose when the link expires."};function ca(){return E&&d.canInvite===!0}function kl(){return(x.items||[]).filter(function(e){return e.status==="active"})}function Cl(e){return e==="never"?null:new Date(Date.now()+Number(e)*864e5).toISOString()}function Bi(e){try{return new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric"})}catch(t){return String(e).slice(0,10)}}function _n(e){var t=new URL(z.href);return t.hash="",t.searchParams.delete(k.inviteParam),t.searchParams.set(k.inviteParam,e),t.href}function Fi(e,t){!navigator.clipboard||!navigator.clipboard.writeText||navigator.clipboard.writeText(e).then(function(){L(t,{kind:"success"})},function(){})}function wn(e,t,n){function r(){return pe(e,t,n,e==="GET"?void 0:{"Idempotency-Key":it()})}return Qe().then(r).then(function(a){return a.res.status!==401?a:Qe(!0).then(function(i){return i?r():a})})}function Mt(){if(!(!me||!nr)){var e=x.open;nr.textContent=e?"People":"Comments",bn.style.display=e?"":"none",xn.style.display=!e&&ca()?"":"none",la.style.display=e?"none":"",ua.style.display=e?"none":"",sa.style.display=e?"none":"",tr.style.display=e?"":"none",tr.textContent=String(kl().length),da&&(da.style.display=e?"none":""),Ue&&(Ue.style.display=e?"none":""),ve&&(ve.style.display=e?"none":"")}}function El(){ca()&&(x.open=!0,x.form=null,x.ready=null,x.menu=null,x.confirm=null,x.error="",Mt(),c.panelOpen||rn(),J(),rr(),bn&&bn.focus())}function Sl(){x.open=!1,x.menu=null,x.confirm=null,U(),xn&&ca()&&xn.focus()}function rr(){var e=++x.loadSeq;return x.loading=!0,wn("GET","/invites").then(function(t){if(e===x.loadSeq){if(x.loading=!1,t.res.status===200&&t.data&&Array.isArray(t.data.invites))x.items=t.data.invites,x.error="";else if(t.res.status===403){d.canInvite=!1,x.open=!1,U();return}else x.error="Couldn't load people. Try again.";J()}},function(){e===x.loadSeq&&(x.loading=!1,x.error="Couldn't reach the review server. Try again.",J())})}function J(){if(!(!x.open||!j)){for(var e=j.getRootNode?j.getRootNode():h,t=e.activeElement||h.activeElement,n=null;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;if(t&&j.contains(t)){if(t.id)n={id:t.id},t.tagName==="INPUT"&&(n.start=t.selectionStart,n.end=t.selectionEnd);else if(t.getAttribute("data-action")){var r=t.closest(".an-person"),a=t.closest(".an-prow");!r&&a&&(r=a.querySelector(".an-person")),n={action:t.getAttribute("data-action"),userId:r?r.getAttribute("data-user"):null}}}Mt(),j.innerHTML="";var i=Al(),o=null;if(j.appendChild(i),x.focus){o=i.querySelector('[data-action="'+x.focus+'"]'),x.focus=null,o&&o.focus();return}if(n){if(n.id){for(var l=i.querySelectorAll("[id]"),u=0;u<l.length;u++)if(l[u].getAttribute("id")===n.id){o=l[u];break}}else{var p=n.userId!==null?ar(n.userId):null,f=n.userId!==null?p&&p.closest(".an-prow"):i;f&&(o=f.querySelector('[data-action="'+n.action+'"]'))}if(o&&(o.focus({preventScroll:!0}),typeof n.start=="number"))try{o.setSelectionRange(n.start,n.end)}catch(g){}}}}function ar(e,t){for(var n=j?j.querySelectorAll(".an-person"):[],r=0;r<n.length;r++)if(n[r].getAttribute("data-user")===e)return t?n[r].querySelector('[data-action="'+t+'"]'):n[r];return null}function Al(){var e=s("div",{class:"an-people",id:"__an_people"});if(x.ready&&e.appendChild(Nl()),x.form?e.appendChild(Rl()):e.appendChild(s("button",{class:"an-primary an-pinvite","data-action":"invite",html:'<span aria-hidden="true">+</span><span>Invite someone</span>',onclick:function(i){i.stopPropagation(),Ml()}})),x.error&&e.appendChild(s("div",{class:"an-perror",role:"alert",text:x.error})),!x.items)return e.appendChild(s("div",{class:"an-empty",text:x.loading?"Loading people\u2026":""})),e;var t=[],n=[];x.items.forEach(function(i){(i.status==="active"?t:n).push(i)}),e.appendChild(s("div",{class:"an-psect",text:"Active"}));var r=s("div",{class:"an-plist"});if(t.forEach(function(i){r.appendChild(Hi(i))}),e.appendChild(r),n.length){e.appendChild(s("div",{class:"an-psect",text:"Inactive \xB7 "+n.length}));var a=s("div",{class:"an-plist"});n.forEach(function(i){a.appendChild(Hi(i))}),e.appendChild(a)}return e}function Tl(e){var t=s("div",{class:"an-pmeta"});if(e.status==="revoked")return t.textContent=e.revokedBy?"Revoked by "+e.revokedBy.name+" \xB7 "+Bi(e.revokedAt):"Revoked in server config",t;if(e.status==="expired"){var n=Math.max(0,Math.floor((Date.now()-Date.parse(e.expiresAt))/864e5));return t.textContent=n===0?"Expired today":"Expired "+n+(n===1?" day ago":" days ago"),t}if(t.appendChild(h.createTextNode((e.source==="config"?"Server config":e.user.email||"No email")+" \xB7 ")),!e.expiresAt)return t.appendChild(h.createTextNode("never expires")),t;var r=Math.ceil((Date.parse(e.expiresAt)-Date.now())/864e5),a=r<=0?"expires today":"expires in "+r+(r===1?" day":" days");return t.appendChild(r<=3?s("span",{class:"an-psoon",text:a}):h.createTextNode(a)),t}function Hi(e){var t=!!d.reviewer&&e.user.id===d.reviewer.id,n=e.status==="active",r=s("div",{class:"an-person"+(n?"":" an-inactive"),"data-user":e.user.id},[pn(e.user.name,30),s("div",{class:"an-pwho"},[s("div",{class:"an-pname"},[s("span",{text:e.user.name}),t?s("span",{class:"an-pyou",text:"You"}):null,s("span",{class:"an-prole"+(e.role==="author"?" an-prole-author":""),text:e.role==="author"?"Author":"Reviewer"})]),Tl(e)])]);if(n)if(r.appendChild(s("button",{class:"an-ibtn","data-action":"copy-link",title:"Copy link","aria-label":"Copy "+e.user.name+"'s link",html:S.copy,onclick:function(o){o.stopPropagation(),ze(_n(e.token),"Link copied")}})),t)r.appendChild(s("span",{class:"an-ibtn-gap"}));else{var a=s("button",{class:"an-ibtn","data-action":"person-menu",title:"More","aria-label":"More for "+e.user.name,"aria-haspopup":"menu","aria-expanded":x.menu===e.user.id?"true":"false",html:S.more,onclick:function(o){o.stopPropagation(),Ui(e.user.id)}});v(a,"keydown",function(o){o.key==="ArrowDown"&&x.menu!==e.user.id&&(o.preventDefault(),Ui(e.user.id))}),r.appendChild(a)}else t||r.appendChild(s("button",{class:"an-ghost an-psmall","data-action":"renew",text:"New link",onclick:function(o){o.stopPropagation(),Yi(e)}}));var i=s("div",{class:"an-prow"},[r]);return x.menu===e.user.id&&i.appendChild(Il(e)),x.confirm&&x.confirm.userId===e.user.id&&i.appendChild(Ll(e)),i}function Ui(e){if(x.menu=x.menu===e?null:e,x.confirm=null,J(),x.menu){var t=j.querySelector('.an-pmenu [role="menuitem"]');t&&t.focus()}else{var n=ar(e,"person-menu");n&&n.focus()}}function ir(e){var t=x.menu;if(!t)return!1;if(x.menu=null,J(),e){var n=ar(t,"person-menu");n&&n.focus()}return!0}function Il(e){function t(a,i,o,l){return s("button",{class:"an-mitem"+(o?" an-pdanger":""),role:"menuitem",tabindex:"-1","data-action":a,text:i,onclick:function(u){u.stopPropagation(),l()}})}function n(a){x.menu=null,x.confirm={kind:a,userId:e.user.id},J();var i=j.querySelector('[data-action="confirm-'+a+'"]');i&&i.focus()}var r=s("div",{class:"an-pmenu",role:"menu","aria-label":e.user.name},[t("menu-copy","Copy link",!1,function(){ir(!0),ze(_n(e.token),"Link copied")}),t("menu-renew","New link\u2026",!1,function(){n("renew")}),t("menu-revoke","Revoke\u2026",!0,function(){n("revoke")})]);return v(r,"keydown",function(a){var i=Array.prototype.slice.call(r.querySelectorAll('[role="menuitem"]')),o=i.indexOf(a.target);a.key==="ArrowDown"||a.key==="ArrowUp"?(a.preventDefault(),i[(o+(a.key==="ArrowDown"?1:-1)+i.length)%i.length].focus()):a.key==="Home"||a.key==="End"?(a.preventDefault(),i[a.key==="Home"?0:i.length-1].focus()):a.key==="Escape"?(a.preventDefault(),a.stopPropagation(),ir(!0)):a.key==="Tab"&&ir(!1)}),v(r,"click",function(a){a.stopPropagation()}),r}v(h,"click",function(){x.menu&&ir(!1)});function Ll(e){var t=x.confirm.kind==="renew";return s("div",{class:"an-pconfirm"+(t?"":" an-pconfirm-danger"),role:"group","aria-label":t?"Confirm new link":"Confirm revoke"},[s("div",{},[s("b",{text:(t?"Replace ":"Revoke ")+e.user.name+"'s link?"}),h.createTextNode(t?" The current link stops working and they're signed out.":" They're signed out now and can't sign in again with it. Their comments stay.")]),s("div",{class:"an-pbtns"},[s("button",{class:"an-ghost","data-action":"confirm-cancel",text:"Cancel",onclick:function(n){n.stopPropagation(),x.confirm=null,J();var r=ar(e.user.id,"person-menu");r&&r.focus()}}),s("button",{class:"an-primary"+(t?"":" an-pdanger-btn"),"data-action":t?"confirm-renew":"confirm-revoke",text:t?"New link":"Revoke",onclick:function(n){n.stopPropagation(),t?Yi(e):Ol(e)}})])])}function or(e,t){var n=e.data&&e.data.error;return n==="name_taken"?"Someone in this review is already called "+t+".":n==="too_many_invites"?"This review has the maximum of 200 people.":n==="cannot_change_self"?"You can't change your own link.":n==="invite_not_found"?"That person is no longer in this review.":"Something went wrong ("+(n||"HTTP "+e.res.status)+"). Try again."}function fa(){d.membersAt=0}function Yi(e){if(!x.busy){x.busy=!0,x.error="";var t=e.status==="active"&&!e.expiresAt?{expiresAt:null}:{};wn("POST","/invites/"+encodeURIComponent(e.user.id)+"/renew",t).then(function(n){x.busy=!1,x.confirm=null,n.res.status===200&&n.data&&n.data.invite?(x.ready=n.data.invite,x.emailSend=null,x.readyEmailed=!1,x.form=null,x.focus="copy-ready",fa(),Fi(_n(n.data.invite.token),"Link copied")):x.error=or(n,e.user.name),rr()},function(){x.busy=!1,x.error="Couldn't reach the review server. Try again.",J()})}}function Ol(e){x.busy||(x.busy=!0,x.error="",wn("DELETE","/invites/"+encodeURIComponent(e.user.id)).then(function(t){x.busy=!1,x.confirm=null,t.res.status===200?(x.ready&&x.ready.user.id===e.user.id&&(x.ready=null),x.focus="invite",fa(),L("Revoked "+e.user.name+"'s link",{kind:"success"})):x.error=or(t,e.user.name),rr()},function(){x.busy=!1,x.error="Couldn't reach the review server. Try again.",J()}))}function Ml(){x.form={name:"",email:"",role:"reviewer",expiry:"30",errors:{},formError:""},x.ready=null,J();var e=j.querySelector("#__an_pname");e&&e.focus()}function Rl(){var e=x.form,t=s("form",{class:"an-pform",novalidate:"novalidate","aria-label":"Invite someone"});function n(p,f,g,y,w){t.appendChild(s("label",{for:f},[g,y?s("span",{class:"an-popt",text:" (optional)"}):null]));var b=s("input",{class:"an-input",id:f,type:w,autocomplete:"off",maxlength:p==="name"?"80":"254"});b.value=e[p],e.errors[p]&&(b.setAttribute("aria-invalid","true"),b.setAttribute("aria-describedby",f+"-err")),v(b,"input",function(){e[p]=b.value}),t.appendChild(b),e.errors[p]&&t.appendChild(s("div",{class:"an-pferr",id:f+"-err",role:"alert",text:e.errors[p]}))}if(n("name","__an_pname","Name",!1,"text"),n("email","__an_pemail","Email",!0,"email"),d.emailOn){var r=s("input",{type:"checkbox",id:"__an_psend"});r.checked=e.send!==!1,v(r,"change",function(){e.send=r.checked});var a=s("label",{class:"an-pcheck",for:"__an_psend"},[r,"Email them the link"]);a.style.display=e.email.trim()?"":"none",t.appendChild(a);var i=t.querySelector("#__an_pemail");i&&v(i,"input",function(){a.style.display=i.value.trim()?"":"none"})}t.appendChild(s("div",{class:"an-plabel",id:"__an_prole-l",text:"Role"}));var o=s("div",{class:"an-pseg",role:"radiogroup","aria-labelledby":"__an_prole-l"});[["reviewer","Reviewer"],["author","Author"]].forEach(function(p){o.appendChild(s("button",{type:"button",class:"an-segbtn"+(e.role===p[0]?" an-on":""),role:"radio","aria-checked":e.role===p[0]?"true":"false","data-role":p[0],text:p[1],onclick:function(f){f.stopPropagation(),e.role=p[0],Array.prototype.forEach.call(o.children,function(g){var y=g.getAttribute("data-role")===e.role;g.classList.toggle("an-on",y),g.setAttribute("aria-checked",y?"true":"false")})}}))}),t.appendChild(o),t.appendChild(s("p",{class:"an-phelp",text:"Reviewers comment and reply. Authors can also triage and close any comment, and invite people."})),t.appendChild(s("label",{for:"__an_pexpiry",text:"Link expires"}));var l=s("select",{class:"an-input",id:"__an_pexpiry"});wl.forEach(function(p){l.appendChild(s("option",{value:p[0],text:p[1]}))}),l.value=e.expiry,v(l,"change",function(){e.expiry=l.value}),t.appendChild(l),e.formError&&t.appendChild(s("div",{class:"an-pferr",role:"alert",text:e.formError}));var u=s("button",{type:"submit",class:"an-primary","data-action":"create-link",text:x.busy?"Creating\u2026":"Create link"});return x.busy&&(u.disabled=!0),t.appendChild(s("div",{class:"an-pfbtns"},[s("button",{type:"button",class:"an-ghost","data-action":"invite-cancel",text:"Cancel",onclick:function(p){p.stopPropagation(),x.form=null,J()}}),u])),v(t,"submit",function(p){p.preventDefault(),Pl()}),v(t,"click",function(p){p.stopPropagation()}),t}function qi(){var e=j.querySelector('.an-pform [aria-invalid="true"]');e&&e.focus()}function Pl(){var e=x.form;if(!(!e||x.busy)){e.errors={},e.formError="";var t=e.name.trim(),n=e.email.trim();if(t||(e.errors.name=yn.name),n&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)&&(e.errors.email=yn.email),e.errors.name||e.errors.email){J(),qi();return}x.busy=!0,J();var r={name:t,email:n||null,role:e.role,expiresAt:Cl(e.expiry)};d.emailOn&&n&&e.send!==!1&&(r.send=!0,r.url=pr(),r.inviteParam=k.inviteParam),wn("POST","/invites",r).then(function(a){if(x.busy=!1,a.res.status===201&&a.data&&a.data.invite){x.form=null,x.ready=a.data.invite,x.emailSend=null,x.readyEmailed=a.data.emailed===!0,x.focus="copy-ready",fa(),Fi(_n(a.data.invite.token),"Link copied"),rr();return}var i=a.data&&a.data.error,o=a.data&&a.data.message;i==="name_taken"?e.errors.name="Someone in this review is already called "+t+".":i==="already_member"?e.errors.email=n+" is already in this review. Use New link in the list.":i==="invalid_invite"&&(o==="name"||o==="email")?e.errors[o]=yn[o]:i==="invalid_invite"&&yn[o]?e.formError=yn[o]:e.formError=or(a,t),J(),qi()},function(){x.busy=!1,e.formError="Couldn't reach the review server. Try again.",J()})}}function Nl(){var e=x.ready,t=_n(e.token),n=String(e.user.name).split(/\s+/)[0],r=e.expiresAt?"until "+Bi(e.expiresAt):"until you revoke it",a=s("input",{class:"an-input",readonly:"readonly","aria-label":"Invite link for "+e.user.name});a.value=t,v(a,"focus",function(){a.select()});var i=s("div",{class:"an-pready-t",html:S.check});i.appendChild(s("span",{text:"Link for "+e.user.name+" is ready"}));var o=s("div",{class:"an-pready",role:"status"},[i,s("div",{class:"an-plinkrow"},[a,s("button",{class:"an-primary","data-action":"copy-ready",text:"Copy",onclick:function(f){f.stopPropagation(),ze(t,"Link copied")}})]),s("p",{class:"an-phelp",text:"Send it to "+n+" yourself. Anyone with this link can sign in as "+n+" "+r+". You can copy it again from the list."})]);if(x.readyEmailed&&o.appendChild(s("p",{class:"an-pemailed",text:"We emailed it to "+e.user.email+"."})),d.emailOn&&e.user.email){var l=x.emailSend&&x.emailSend.userId===e.user.id?x.emailSend:null,u=s("div",{class:"an-pferr",role:"alert",text:l&&l.state==="error"?l.message:""}),p=s("button",{class:"an-ghost an-psend","data-action":"email-ready",text:l&&l.state==="sending"?"Sending\u2026":l&&l.state==="sent"?"Sent \u2713":"Email to "+e.user.email,onclick:function(f){if(f.stopPropagation(),!p.disabled){var g={userId:e.user.id,state:"sending",message:""};x.emailSend=g,J(),wn("POST","/invites/"+encodeURIComponent(e.user.id)+"/send",{url:pr(),inviteParam:k.inviteParam}).then(function(y){x.emailSend===g&&(y.res.status===202?(g.state="sent",R(function(){x.emailSend!==g||!x.ready||x.ready.user.id!==g.userId||(x.emailSend=null,J())},3e3)):(g.state="error",g.message=y.res.status===429?"Too many emails to this person. Try again later.":or(y,e.user.name)),J())},function(){x.emailSend===g&&(g.state="error",g.message="Couldn't reach the review server. Try again.",J())})}}});p.disabled=!!(l&&(l.state==="sending"||l.state==="sent")),o.appendChild(p),o.appendChild(u)}return o}function sr(){var e=te().comments.filter(function(n){return qe(n)&&!nt[n.id]}).map(Je),t={};return e.forEach(function(n,r){t[n.id]=r}),Object.keys(q).forEach(function(n){var r=q[n];!r||nt[n]||(t[n]!==void 0?e[t[n]]=r:e.push(r))}),e}function lr(e){var t={};return e.forEach(function(n){t[n.page]=!0}),Object.keys(t).length}function pa(){var e=te().comments.filter(function(t){return qe(t)&&t.page===N}).map(Je);return Object.keys(q).forEach(function(t){var n=q[t];if(!(!n||n.page!==N)){for(var r=-1,a=0;a<e.length;a++)if(e[a].id===t){r=a;break}r>=0?e[r]=n:e.push(n)}}),e}function Dl(e){var t=te(),n=new Date().toISOString(),r={schema:Qr,id:it(),page:N,url:z.href,type:e.type||"note",author:c.author||"Anonymous",authorId:c.authorId,text:String(e.text||"").slice(0,Zn),color:er(e.color||c.color),anchor:e.anchor||null,geom:e.geom||null,visibility:"shared",status:"open",resolved:!1,resolvedBy:null,resolvedAt:null,assignee:null,assignedAt:null,replies:[],createdAt:n,updatedAt:n,editedAt:null},a=_r(e.target);a&&r.type!=="group"&&(r.target=a);var i=r.type==="group"?Mi(e.targets,r.geom):null;if(i&&(r.targets=i),E){var o=na(r.text,d.members);o.length&&(r.mentions=o)}if(!qe(r))return L("Cannot save this comment: invalid anchor or content",{kind:"error"}),null;t.comments.push(r);var l=Fe(t);return l||(q[r.id]=r),Ea(r.id),ur(r,["*"]),r}function Rt(e,t){var n=te(),r=n.comments.filter(function(C){return C&&C.id===e&&C.page===N})[0],a=!r;if(q[e]&&q[e].page===N&&(r=q[e]),!r||!qe(r))return null;r=Je(It(r));var i=new Date().toISOString(),o=[];if(typeof t.text=="string"&&t.text.slice(0,Zn)!==r.text&&(r.text=t.text.slice(0,Zn),r.editedAt=i,o.push("text"),E&&d.members)){var l=na(r.text,d.members);JSON.stringify(l)!==JSON.stringify(r.mentions||[])&&(l.length?r.mentions=l:delete r.mentions,o.push("mentions"))}var u=Ve[t.status]?t.status:typeof t.resolved=="boolean"?t.resolved?"resolved":"open":null;if(u&&u!==r.status&&(r.status=u,r.resolved=Zr(u),r.resolvedBy=r.resolved?c.authorId:null,r.resolvedAt=r.resolved?i:null,o.push("status")),t.assignee!==void 0){var p=Ii(t.assignee);JSON.stringify(p)!==JSON.stringify(r.assignee)&&(r.assignee=p,r.assignedAt=p?i:null,o.push("assignee"))}typeof t.color=="string"&&er(t.color)!==r.color&&(r.color=er(t.color),o.push("color"));var f=!1;if(t.reply){var g=Li(Object.assign({authorId:c.authorId,editedAt:null},t.reply,{text:String(t.reply.text||"").slice(0,Jr),mentions:E&&d.members?na(t.reply.text,d.members):[]}));r.replies.length<Ti&&(r.replies.push(g),f=!0)}if(t.editReply){var y=r.replies.findIndex(function(C){return C.id===t.editReply.id});y>=0&&(r.replies[y]=Object.assign({},r.replies[y],{text:String(t.editReply.text||"").slice(0,Jr),editedAt:i}))}var w=!1;if(t.deleteReply){var b=r.replies.length;r.replies=r.replies.filter(function(C){return C.id!==t.deleteReply}),w=r.replies.length<b}if(r.updatedAt=i,!qe(r))return L("Cannot save this edit: invalid content",{kind:"error"}),null;if(a?n.comments.push(r):n.comments=n.comments.map(function(C){return C&&C.id===e?r:C}),Fe(n))delete q[e];else{q[e]=r;var T=c.comments.filter(function(C){return C.id===e})[0];T&&Ct(r),re(),U()}return o.length&&ur(r,o),f&&va({t:"reply",id:e,r:{id:t.reply.id,text:r.replies[r.replies.length-1].text,mentions:r.replies[r.replies.length-1].mentions||[]}}),w&&va({t:"unreply",id:e,rid:t.deleteReply}),r}function jl(e,t){delete q[e],Ea(e);var n=te();n.comments=n.comments.filter(function(r){return r.id!==e}),Fe(n),Gi(e,t)}var ha="annotate:queue:"+k.reviewId,st="annotate:invite:"+k.reviewId,zl=["text","color","anchor","geom","status","assignee","mentions"],Bl=5500,d={token:null,expiresAt:0,reviewer:null,sessionPromise:null,refused:!1,inflight:null,timer:0,pollTimer:0,polling:!1,etag:"",etagPage:"",failures:0,offline:!1,held:!1,state:"",acks:0,waiters:[],controllers:new Set,baselined:{},agentId:null};d.members=null,d.membersAt=0,d.membersLoading=null;var Xi=!0,Vi=[];function ga(e){var t=k.project?k.project+":":"";return t&&e.indexOf(t)===0?e.slice(t.length):e}function Fl(e){return(k.project?k.project+":":"")+e}function ma(){return m.crypto&&crypto.randomUUID?crypto.randomUUID():it()+"-"+it().slice(1)}var Hl={put:1,del:1,reply:1,unreply:1};function Pe(){if(!Xi)return Vi.slice();var e;try{e=JSON.parse(D.get(ha)||"[]")}catch(t){e=[]}return(Array.isArray(e)?e:[]).filter(function(t){return t&&Hl[t.t]===1&&typeof t.id=="string"&&typeof t.key=="string"})}function lt(e){Vi=e.slice(),Xi=D.set(ha,JSON.stringify(e))}function va(e){if(E){e.key=ma();var t=Pe();if(e.t==="put"){for(var n=t.length-1;n>=0;n--)if(t[n].id===e.id){if(t[n].t==="put"&&!(d.inflight&&d.inflight.key===t[n].key)){t[n].f=t[n].f.indexOf("*")>=0||e.f.indexOf("*")>=0?["*"]:t[n].f.concat(e.f.filter(function(r){return t[n].f.indexOf(r)<0})),lt(t),ue(),ne(0);return}break}}t.push(e),lt(t),ue(),ne(0)}}function ur(e,t){E&&e.visibility!=="private"&&va({t:"put",id:e.id,f:t})}function ut(e){return(!e.stamps||typeof e.stamps!="object")&&(e.stamps={}),e.stamps}function Gi(e,t){if(E){var n=Pe();n.push({t:"del",id:e,key:ma(),nb:Date.now()+(t||0)}),lt(n),ue(),ne(0)}}function Ul(e){if(E){var t=Pe(),n=!1;t=t.filter(function(r){var a=r.t==="del"&&r.id===e.id&&!(d.inflight&&d.inflight.key===r.key);return a&&(n=!0),!a}),lt(t),n||ur(e,["*"]),ue(),ne(0)}}function dr(e,t){try{m.dispatchEvent(new m.CustomEvent(e,{detail:t}))}catch(n){}}function xa(){if(!E)return{state:"local",pending:0};var e=Pe().length,t=d.held?"error":d.offline?"offline":e?"pending":"idle";return{state:t,pending:e}}var Yl={idle:"Sent to the review. The author sees your comments as you post them; there is nothing to submit.",pending:"Sending to the review\u2026",offline:"Offline \u2014 changes are kept here and sent when the connection returns.",error:"Not signed in to the review \u2014 changes are kept on this device."},ql="Sent to the review. Everyone in the review sees your comments as you post them; there is nothing to submit.";function Ki(e){return e==="idle"&&ea()?ql:Yl[e]}function ue(){if(E){var e=xa(),t=e.state+":"+e.pending;if(t!==d.state){d.state=t;var n=h.getElementById("__an_syncnote");if(n){n.textContent=Ki(e.state),n.setAttribute("data-state",e.state);var r=n.parentNode;if(r&&r.classList){r.classList.toggle("an-synced",e.state==="idle");var a=r.firstChild;a&&a.innerHTML!==void 0&&(a.innerHTML=e.state==="idle"?S.check:S.info)}}dr("annotate:sync",e)}}}function Pt(e){var t=d.waiters;d.waiters=[],t.forEach(function(n){e?n.reject(e):n.resolve()})}function pe(e,t,n,r){var a=m.AbortController?new m.AbortController:null;a&&d.controllers.add(a);var i=R(function(){a&&a.abort()},3e4),o=Object.assign({},r||{});return d.token&&(o.Authorization="Bearer "+d.token),n!==void 0&&(o["Content-Type"]="application/json"),m.fetch(vn+t,{method:e,headers:o,credentials:"omit",cache:"no-store",body:n===void 0?void 0:JSON.stringify(n),signal:a?a.signal:void 0}).then(function(l){return l.status===204||l.status===304?{res:l,data:null}:l.json().then(function(u){return{res:l,data:u}},function(){return{res:l,data:null}})}).finally(function(){P(i),a&&d.controllers.delete(a)})}function Wi(e){var t;try{t=new URL(e)}catch(r){return null}var n=t.searchParams.get(k.inviteParam);if(!n&&t.hash&&t.hash.indexOf(k.inviteParam+"=")!==-1)try{n=new URLSearchParams(t.hash.slice(1)).get(k.inviteParam)}catch(r){}return n||null}function Xl(){if(!(!E||!k.inviteParam)){var e;try{e=new URL(z.href)}catch(a){return}var t=Wi(z.href);if(t){D.set(st,t),e.searchParams.delete(k.inviteParam);var n=e.hash&&e.hash.indexOf(k.inviteParam+"=")!==-1?"":e.hash;try{m.history.replaceState(m.history.state,"",e.pathname+e.search+n)}catch(a){}return}if(!D.get(st)){var r=h.referrer;!r||r.indexOf(z.origin+"/")!==0||(t=Wi(r),t&&D.set(st,t))}}}function cr(){return E&&!!D.get(st)}var Nt=null,fr=!1;function Vl(){if(E){var e;try{e=new URL(z.href)}catch(n){return}var t=e.searchParams.get("an_signin");if(t){Nt=t,e.searchParams.delete("an_signin");try{m.history.replaceState(m.history.state,"",e.pathname+e.search+e.hash)}catch(n){}}}}function ba(){return d.emailOn===!0||d.emailOn===!1?Promise.resolve(d.emailOn):d.emailCheck?d.emailCheck:vn?(d.emailCheck=m.fetch(vn+"/signin",{credentials:"omit",cache:"no-store"}).then(function(e){return e.ok?e.json():null}).then(function(e){return d.emailOn=!!(e&&e.email===!0),We&&kt(),d.emailOn},function(){return d.emailOn=!1,!1}),d.emailCheck):Promise.resolve(!1)}function pr(){var e=new URL(z.href);return e.hash="",e.searchParams.delete(k.inviteParam),e.searchParams.delete("an_signin"),e.href}function Gl(e){return m.fetch(vn+"/signin",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"omit",cache:"no-store",body:JSON.stringify({email:e,url:pr()})}).then(function(t){return t.status},function(){return 0})}function $i(){if(!at)return null;function e(t,n){return s("a",{href:t,target:"_blank",rel:"noopener noreferrer",text:n})}return s("p",{class:"an-nlegal"},["By continuing, you agree to Redline's ",e("https://redlinejs.com/terms","Terms of Service")," and ",e("https://redlinejs.com/privacy","Privacy Policy"),"."])}function hr(e,t){if(h.getElementById("__an_namewrap"))return;var n=s("div",{id:"__an_namewrap","data-box":"signin"}),r=s("div",{id:"__an_namebox",role:"dialog","aria-modal":"true","aria-labelledby":"__an_signin_t"});n.appendChild(r),X().appendChild(n);var a=Ta(n);function i(){a(),n.remove()}function o(){if(r.innerHTML="",r.appendChild(s("h3",{class:"an-nt",id:"__an_signin_t",text:"Sign in to review"})),e&&r.appendChild(s("div",{class:"an-nnote an-nwarn",role:"status",text:e})),at){var u=s("button",{"data-action":"signin-redline",text:"Continue with Redline"});v(u,"click",function(){Hs()}),r.appendChild(u)}r.appendChild(s("p",{class:"an-nd",text:"Enter the email address your invite went to. We'll send you a sign-in link."}));var p=s("input",{type:"email",id:"__an_signin_email",autocomplete:"email",placeholder:"you@example.com","aria-label":"Email address"}),f=s("div",{class:"an-nerr",role:"alert"}),g=s("button",{"data-action":"signin-send",text:"Send link"}),y=s("button",{class:"an-nskip","data-action":"signin-skip",text:t?"Continue without signing in":"Keep working locally"});function w(){var T=p.value.trim();if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(T)){f.textContent="Enter a valid email address.",p.focus();return}g.disabled=!0,g.textContent="Sending\u2026",f.textContent="",Gl(T).then(function(C){if(C===202){l(T);return}g.disabled=!1,g.textContent="Send link",f.textContent=C===429?"Too many sign-in emails. Try again in a few minutes.":C===422?"Enter a valid email address.":"Couldn't send the link. Try again."})}v(g,"click",w),v(p,"keydown",function(T){T.key==="Enter"&&w()}),v(y,"click",function(){i(),t&&t()}),r.appendChild(p),r.appendChild(f),r.appendChild(g),r.appendChild(y);var b=$i();b&&r.appendChild(b),R(function(){p.focus()},40)}function l(u){r.innerHTML="",r.appendChild(s("h3",{class:"an-nt",id:"__an_signin_t",text:"Check your inbox"})),r.appendChild(s("p",{class:"an-nd",role:"status",text:"If "+u+" is in this review, a sign-in link is on its way. It works once, for 15 minutes."}));var p=s("button",{"data-action":"signin-again",text:"Use another email"}),f=s("button",{class:"an-nskip","data-action":"signin-close",text:"Close"});v(p,"click",function(){e=null,o()}),v(f,"click",i),r.appendChild(p),r.appendChild(f),R(function(){p.focus()},40)}o()}function Ji(e){if(!E){Mr(e);return}fr=!0,ba().then(function(t){t?hr(null,function(){Mr(e)}):Mr(e)})}function Kl(e){d.refusalCode=e,d.refusal="This sign-in link has expired or was already used.",eo(),d.emailOn=!0,kt(),hr("This sign-in link has expired or was already used. Send yourself a new one.")}function Qe(e){if(!E||O)return Promise.resolve(null);if(!e&&d.token&&d.expiresAt>Date.now()+6e4)return Promise.resolve(d.token);if(d.sessionPromise)return d.sessionPromise;var t=D.get(st),n=Nt;Nt=null;var r=t?{invite:t}:c.author?{name:c.author}:null;if(!n&&!r)return Promise.resolve(null);d.token=null;var a=n?pe("POST","/session",{signin:n}):Promise.resolve(null),i=a.then(null,function(o){throw Nt=n,o}).then(function(o){if(o&&o.res.status===200&&o.data&&typeof o.data.token=="string")return typeof o.data.inviteToken=="string"&&o.data.inviteToken&&D.set(st,o.data.inviteToken),Qi(o.data),d.token;if(o){var l=o.data&&o.data.error;if(o.res.status===403&&typeof l=="string"&&l.indexOf("signin_")===0){if(!r)return Kl(l),null}else{if(l==="invite_revoked"||l==="invite_expired")return Zi(l,!1),null;throw Nt=n,new Error("HTTP "+o.res.status)}}return pe("POST","/session",r).then(function(u){if(u.res.status===200&&u.data&&typeof u.data.token=="string")return Qi(u.data),d.token;if(u.res.status===403||u.res.status===404)return Zi(u.data&&u.data.error,!!t,u.data&&u.data.message),null;throw new Error("HTTP "+u.res.status)})});return d.sessionPromise=i.finally(function(){d.sessionPromise=null}),d.sessionPromise}function Wl(e){d.reviewer={id:e.id,name:String(e.name||""),role:e.role==="author"?"author":"reviewer"},c.authorId=d.reviewer.id,d.reviewer.name&&(c.author=d.reviewer.name)}function $l(){if(!(O||!Ot())){var e="annotate:site:"+k.reviewId,t=Date.now(),n=null,r=ci[k.reviewId],a=!1;if(!(r&&(r.storageFailed||t-r.at<864e5))){try{n=localStorage.getItem(e)}catch(f){a=!0}if(a&&r){r.storageFailed=!0;return}if(!(n!==null&&t-Number(n)<864e5)){var i={at:t,storageFailed:a};ci[k.reviewId]=i;try{localStorage.setItem(e,String(t))}catch(f){i.storageFailed=!0}var o=null,l=h.querySelector('link[rel~="icon"]'),u=l&&l.getAttribute("href");try{typeof u=="string"&&(o=new URL(u,z.href).href)}catch(f){}var p=h.querySelector('meta[name="theme-color"]');pe("POST","/site",{icon:o,color:p?p.getAttribute("content"):null,title:h.title}).then(function(){},function(){})}}}}function Qi(e){d.token=e.token,d.expiresAt=Date.parse(e.expiresAt)||Date.now()+36e5,d.held=!1,d.agentId=e.review&&typeof e.review.agentId=="string"&&e.review.agentId?e.review.agentId:null,d.agentSeenAt=e.review&&typeof e.review.agentSeenAt=="string"?e.review.agentSeenAt:null,d.reviewName=e.review&&typeof e.review.name=="string"?e.review.name:"",d.visibility=e.review&&(e.review.visibility==="team"||e.review.visibility==="private")?e.review.visibility:null,e.reviewer&&typeof e.reviewer.id=="string"&&Wl(e.reviewer),e.review&&typeof e.review.note=="string"&&e.review.note&&(c.note=e.review.note,ii()),dr("annotate:auth",{reviewer:d.reviewer}),ue(),d.canInvite=!!(e.review&&e.review.canInvite===!0),d.emailOn=!!(e.review&&e.review.email===!0),d.hasEmail=!!(e.reviewer&&e.reviewer.hasEmail===!0),d.mentionEmails=void 0,d.mentionPrefsTried=!1,d.canInvite||(x.open=!1,x.items=null),We&&U(),Ur()&&$s(),$l()}var Jl={invite_invalid:"This review needs a personal invite link, and this page was opened without one (or with an incomplete one). Ask the review's author for your link and open the site through it.",invite_revoked:"The review's author revoked your link. Ask them for a new one.",invite_expired:"Your review link has expired. Ask the review's author for a new one.",review_closed:"The author has closed this review; it no longer accepts feedback.",review_not_found:"This review no longer exists on the server.",origin_not_allowed:"This page's address isn't registered for the review. Open the exact link you were sent, or ask the author to add this address."},ya="Your comments stay in this browser. Use Download or Copy below and email them to the author.";function Zi(e,t,n){t&&e!=="review_closed"&&D.set(st,"");var r=Jl[e]||typeof n=="string"&&n.trim()||"The review did not accept this browser ("+(e||"refused")+").";if(d.refusal=r,d.refusalCode=e,eo(),e==="invite_invalid"){ba().then(function(a){a&&fr?(fr=!1,hr("This review needs an invite. Sign in with the email address your invite went to.")):L(r+" "+ya,{kind:"error",duration:12e3})});return}L(r+" "+ya,{kind:"error",duration:12e3})}function eo(){E=!1,d.agentId=null,d.canInvite=!1,x.open=!1,Mt(),to(),Qn=ki,c.authorId=null,dr("annotate:sync",{state:"local",pending:0}),We&&(on(),kt())}function to(){P(d.timer),P(d.pollTimer),d.controllers.forEach(function(e){e.abort()}),d.controllers.clear(),Pt(new Error("Sync stopped"))}function no(){!E||O||Qe().then(function(e){e&&(ne(0),dt())},function(){mr()})}function ne(e){!E||O||(P(d.timer),d.timer=R(Zl,e||0))}function Ql(e){var t=Date.now(),n={},r=1/0;e.forEach(function(o){o.t==="del"&&o.nb&&o.nb>t&&(n[o.id]=!0,r=Math.min(r,o.nb-t))});for(var a=0;a<e.length;a++){var i=e[a];if(!n[i.id]){if(i.nb&&i.nb>t){n[i.id]=!0,r=Math.min(r,i.nb-t);continue}return{op:i}}}return{wait:r}}function Zl(){if(!(!E||O||d.inflight||d.held)){var e=Pe();if(ue(),!e.length){Pt();return}var t=Ql(e);if(!t.op){t.wait<1/0&&ne(t.wait);return}if(!d.token){Qe().then(function(r){r?ne(0):Pt(new Error("Not signed in to the review"))},function(){mr()});return}var n=d.inflight=t.op;eu(n).then(function(r){d.inflight=null,tu(n,r)},function(){d.inflight=null,!O&&mr()})}}function eu(e){var t="/comments/"+encodeURIComponent(e.id),n={"Idempotency-Key":e.key},r=te(),a=r.comments.filter(function(o){return o&&o.id===e.id})[0]||q[e.id];if(e.t!=="del"&&(!a||!qe(a)||a.visibility==="private"))return Promise.resolve({skip:!0});if(e.t==="put"){var i=It(Je(a));return i.page=ga(i.page),i.replies=[],e.f.indexOf("*")>=0||e.f.indexOf("mentions")>=0?i.mentions||(i.mentions=[]):delete i.mentions,i.updatedAt=ut(r)[e.id]||i.updatedAt,pe("PUT",t,i,n)}return e.t==="del"?pe("DELETE",t,void 0,n):e.t==="reply"?pe("POST",t+"/replies",{id:e.r.id,text:e.r.text,mentions:e.r.mentions||[]},n):pe("DELETE",t+"/replies/"+encodeURIComponent(e.rid),void 0,n)}function gr(e){lt(Pe().filter(function(t){return!e(t)}))}function _a(){var e=Math.min(6e4,1e3*Math.pow(2,Math.min(d.failures,6)));return Math.round(e/2+Math.random()*e/2)}function mr(){d.failures++,d.offline=!0,ue(),Pt(new Error("Offline \u2014 changes are queued and will sync later")),ne(_a())}function tu(e,t){if(!O){if(t.skip){gr(function(l){return l.key===e.key}),ne(0);return}var n=t.res,r=t.data||{},a=n.status;if(a===429||a===503||a>=500){d.failures++,a>=500&&a!==503&&(d.offline=!0),ue(),ne(a===429||a===503?ni(n):_a());return}if(d.failures=0,d.offline=!1,a===401){if(e.reauth){d.held=!0,ue(),Pt(new Error("Not signed in to the review"));return}ro(e,{reauth:!0}),d.token=null,Qe(!0).then(function(l){l?ne(0):(d.held=!0,ue(),Pt(new Error("Not signed in to the review")))},function(){mr()});return}if(a===409&&r.comment){var i=(e.n||0)+1;so(r.comment,e),i>5?gr(function(l){return l.key===e.key}):ro(e,{key:ma(),n:i}),ne(0);return}if(a===410){gr(function(l){return l.id===e.id}),ao(e.id),e.t!=="del"&&L("A comment you changed was already deleted.",{kind:"info",duration:6e3}),vr(),ne(0);return}if(gr(function(l){return l.key===e.key}),n.ok)d.acks++,r.comment?so(r.comment,null):e.t==="del"&&ao(e.id);else{var o=e.t==="put"?te().comments.filter(function(l){return l&&l.id===e.id})[0]||q[e.id]:null;a===422&&o&&o.type==="group"&&(r.message==="type"||r.message==="geom")?L("This review server doesn't support comments on several elements yet; it stays in this browser. Ask the review's owner to update the server.",{kind:"error",duration:8e3}):L("The review server rejected a change ("+(r.error||"HTTP "+a)+").",{kind:"error",duration:6e3}),d.etag="",R(dt,0)}ue(),ne(0)}}function ro(e,t){var n=Pe();n.forEach(function(r){r.key===e.key&&Object.assign(r,t)}),lt(n)}function ao(e){var t=te();t.comments=t.comments.filter(function(n){return!n||n.id!==e}),delete ut(t)[e],delete q[e],Fe(t),vr()}function io(e){if(!qe(e)||typeof e.page!="string"||e.visibility==="private")return null;var t=Je(e);return t.page=Fl(e.page),t}function oo(e,t,n){var r=e;return n.forEach(function(a){if(a.t==="put"&&t)(a.f.indexOf("*")>=0?zl:a.f).forEach(function(o){r[o]=t[o]===void 0?r[o]:JSON.parse(JSON.stringify(t[o])),o==="mentions"&&t.mentions===void 0&&delete r.mentions,o==="status"&&(r.resolved=Zr(r.status),r.resolvedBy=t.resolvedBy||null,r.resolvedAt=t.resolvedAt||null),o==="assignee"&&(r.assignedAt=t.assignedAt||null),o==="text"&&(r.editedAt=t.editedAt||r.editedAt)});else if(a.t==="reply"&&t&&!r.replies.some(function(o){return o.id===a.r.id})){var i=(t.replies||[]).filter(function(o){return o.id===a.r.id})[0];i&&r.replies.push(i)}else a.t==="unreply"&&(r.replies=r.replies.filter(function(o){return o.id!==a.rid}))}),r}function so(e,t){var n=io(e);if(n){var r=te(),a=Pe().filter(function(p){return p.id===n.id&&(!t||p.key!==t.key)});t&&a.unshift(t),ut(r)[n.id]=e.updatedAt,t||co(n.id,e.updatedAt);for(var i=-1,o=0;o<r.comments.length;o++)if(r.comments[o]&&r.comments[o].id===n.id){i=o;break}var l=i>=0?r.comments[i]:q[n.id];if(a.some(function(p){return p.t==="del"})){Fe(r);return}var u=oo(n,l&&qe(l)?Je(l):null,a);i>=0?r.comments[i]=u:r.comments.push(u),Fe(r)?delete q[n.id]:q[n.id]=u,vr()}}function nu(e){var t=te(),n=ut(t),r=Pe(),a={},i={};t.comments.forEach(function(w){w&&typeof w.id=="string"&&(i[w.id]=w)});var o={};r.forEach(function(w){(o[w.id]=o[w.id]||[]).push(w)});var l=t.comments.filter(function(w){return w&&w.page!==N}),u=wa(),p=!d.baselined[N],f=0,g=0;d.baselined[N]=!0,e.forEach(function(w){var b=io(w);if(!(!b||b.page!==N||a[b.id])){a[b.id]=!0;var T=n[b.id];n[b.id]=w.updatedAt,o[b.id]||(u[b.id]===void 0&&(p||b.authorId&&b.authorId===c.authorId)?u[b.id]=w.updatedAt:T!==w.updatedAt&&(u[b.id]===void 0||w.updatedAt>u[b.id])&&f++);var C=o[b.id];if(!(C&&C.some(function(M){return M.t==="del"}))){var A=i[b.id]&&qe(i[b.id])?Je(i[b.id]):null;l.push(C?oo(b,A,C):b)}}}),t.comments.forEach(function(w){if(!(!w||w.page!==N||a[w.id])){if(o[w.id]){l.push(w);return}if(n[w.id]){delete n[w.id],delete u[w.id],g++;return}l.push(w)}});var y=l.filter(function(w){return w&&w.page===N}).sort(function(w,b){return w.createdAt<b.createdAt?-1:w.createdAt>b.createdAt?1:0});t.comments=l.filter(function(w){return w.page!==N}).concat(y),Fe(t),uo(u),f&&L(Ot()||ea()?f+" comment"+(f===1?"":"s")+" changed on this page":"The review owner updated "+f+" of your comments",{kind:"info",duration:6e3}),g&&!Ot()&&L(ea()?g+" comment"+(g===1?" was":"s were")+" removed from this page":"The review owner removed "+g+" of your comments",{kind:"info",duration:6e3}),vr()}var lo="annotate:read:"+k.reviewId;function wa(){var e;try{e=JSON.parse(D.get(lo)||"{}")}catch(t){e=null}return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function uo(e){D.set(lo,JSON.stringify(e))}function co(e,t){if(!(!E||!t)){var n=wa();n[e]=t,uo(n)}}function ru(){var e={};if(!E)return e;var t=ut(te()),n=wa(),r={};return Pe().forEach(function(a){r[a.id]=!0}),c.comments.forEach(function(a){var i=t[a.id];i&&!r[a.id]&&(n[a.id]===void 0||i>n[a.id])&&(e[a.id]=!0)}),e}function au(e){E&&co(e,ut(te())[e])}function dt(){if(!(!E||O)&&(P(d.pollTimer),!h.hidden&&(d.pollTimer=R(dt,k.pollInterval),!(!d.token||d.polling)))){var e=ga(N),t=N,n=d.acks;d.etagPage!==e&&(d.etag="",d.etagPage=e),d.polling=!0,ml(),pe("GET","/comments?page="+encodeURIComponent(e),void 0,d.etag?{"If-None-Match":d.etag}:{}).then(function(r){if(!(O||!E)){var a=r.res.status;if(a===401){d.token=null,Qe(!0);return}if(a===304){d.offline=!1,ue();return}if(!(a!==200||!r.data||!Array.isArray(r.data.comments))){if(d.offline=!1,ue(),d.acks!==n||N!==t){d.etag="",R(dt,0);return}d.etag=r.res.headers.get("ETag")||"",nu(r.data.comments)}}},function(){!O&&E&&(d.offline=!0,ue())}).finally(function(){d.polling=!1})}}var fo="";function vr(){if(!(!We||O)){var e=JSON.stringify(pa().map(function(t){return[t.id,t.updatedAt,t.status,t.text,t.replies.length,t.assignee&&t.assignee.name]}));e!==fo&&(fo=e,ei())}}function iu(){if(!E)return Promise.resolve();var e=Pe();return e.forEach(function(t){t.nb=0}),lt(e),d.held=!1,new Promise(function(t,n){d.waiters.push({resolve:t,reject:n}),ne(0)})}function ou(e,t){var n=e.ownerDocument&&e.ownerDocument.body;if(e===n)return"body";if(e.id&&!Sn(e.id))return"#"+CSS.escape(e.id);for(var r=[];e&&e.nodeType===1&&e!==n;){var a=e.nodeName.toLowerCase();if(e.id&&!Sn(e.id)){r.unshift("#"+CSS.escape(e.id));break}for(var i=1,o=e;o=o.previousElementSibling;)o.nodeName===e.nodeName&&i++;a+=":nth-of-type("+i+")",r.unshift(a),e=e.parentElement}var l=r[0]&&r[0][0]==="#"||t&&t.nodeType===11?"":"body > ";return l+r.join(" > ")}var kn=" >>> ";function Cn(e){for(var t=String(e),n=[],r=0,a="",i=0;i<t.length;i++){var o=t.charAt(i);if(o==="\\"){i++;continue}if(a){o===a&&(a="");continue}if(o==='"'||o==="'"){a=o;continue}o===" "&&t.substr(i,kn.length)===kn&&(n.push(t.slice(r,i)),i+=kn.length-1,r=i+1)}return n.push(t.slice(r)),n}function En(e){var t=Cn(e);return t[t.length-1]}function po(e){var t=Cn(e);if(t.length<2)return h;var n=Dt(t.slice(0,-1).join(kn));return n&&n.shadowRoot?n.shadowRoot:n&&n.nodeName==="IFRAME"?Pn(n):null}function Dt(e,t){for(var n=Cn(e),r=h,a=null,i=0;i<n.length;i++){try{a=r.querySelector(n[i])}catch(o){return null}if(!a)return null;if(i<n.length-1){if(a.shadowRoot)r=a.shadowRoot;else if(a.nodeName==="IFRAME"){if(r=Pn(a),!r)return null}else return null;t&&r.nodeType===11&&t.indexOf(r)<0&&t.push(r)}}return a}var ho=[/^:r[0-9a-z]+:$/i,/^«r[0-9a-z]+»$/i,/^_r_[0-9a-z]+_$/i,/^(radix-|headlessui-|react-aria|mui-)/i,/^ember\d+$/,/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,/\d{6,}/];function Sn(e){if(!e)return!0;for(var t=0;t<ho.length;t++)if(ho[t].test(e))return!0;return e.length>=10&&/^[a-z0-9]+$/i.test(e)&&/[a-z]/i.test(e)&&/\d/.test(e)}var go=[/^css-[a-z0-9]+$/i,/^sc-/,/^jsx-\d+$/,/^e(?=[a-z0-9]*\d[a-z0-9]*\d)[a-z0-9]{6,9}$/,/^_(?=[a-zA-Z0-9]*\d)[a-zA-Z0-9]{5,}$/];function mo(e){for(var t=0;t<go.length;t++)if(go[t].test(e))return!0;return!1}function vo(e){return!mo(e)&&!/^[A-Za-z][\w-]*_[\w-]+__(?=[\w-]*\d)[\w-]{4,}$/.test(e)&&!/[:\[\/!]/.test(e)}function ka(e){var t=e.classList?Array.prototype.slice.call(e.classList):[];return t.filter(function(n){return n&&n.length<=300&&!mo(n)&&n.indexOf("an-")!==0}).slice(0,8)}var xo=["data-testid","data-test","data-cy","data-qa"],ct=500;function su(e){return String(e).replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\a ")}function xr(e,t){return"["+e+'="'+su(t)+'"]'}function br(e,t,n){try{for(var r=(n||h).querySelectorAll(e),a=null,i=0;i<r.length;i++)if(!Q(r[i])){if(a)return!1;a=r[i]}return a===t}catch(o){return!1}}function bo(e){var t=[];return e.id&&!Sn(e.id)&&t.push("#"+CSS.escape(e.id)),xo.forEach(function(n){var r=e.getAttribute(n);r&&t.push(xr(n,r))}),t}function lu(e){var t=[],n=e.nodeName.toLowerCase(),r=e.getAttribute("aria-label");r&&t.push(n+xr("aria-label",r));var a=e.getAttribute("name");a&&/^(INPUT|SELECT|TEXTAREA|BUTTON)$/.test(e.nodeName)&&t.push(n+xr("name",a));var i=e.nodeName==="A"?e.getAttribute("href"):null;return i&&i.length<=120&&t.push("a"+xr("href",i)),t}function yo(e){var t=e.nodeName.toLowerCase()+ka(e).filter(vo).slice(0,2).map(function(o){return"."+CSS.escape(o)}).join(""),n=e.parentElement||(e.parentNode&&e.parentNode.nodeType===11?e.parentNode:null);if(!n)return t;var r=Array.prototype.some.call(n.children,function(o){if(o===e)return!1;try{return o.matches(t)}catch(l){return!1}});if(!r)return t;for(var a=1,i=e;i=i.previousElementSibling;)i.nodeName===e.nodeName&&a++;return t+":nth-of-type("+a+")"}function uu(e,t){var n=e.ownerDocument||h;if(e===n.body||e===n.documentElement)return"body";for(var r=t.nodeType===11,a=bo(e).concat(lu(e)),i=0;i<a.length;i++)if(a[i].length<=ct&&br(a[i],e,t))return a[i];for(var o=[yo(e)],l=e.parentElement,u=!1;l&&l!==n.body&&l!==n.documentElement;){for(var p=bo(l),f=null,g=0;g<p.length&&!f;g++)br(p[g],l,t)&&(f=p[g]);if(f){o.unshift(f),u=!0;break}o.unshift(yo(l)),l=l.parentElement}!u&&!r&&o.unshift("body");var y=o.join(" > ");if(y.length<=ct&&br(y,e,t))return y;for(var w=1;w<o.length;w++){var b=o.slice(-w).join(" > ");if(b.length>ct)break;if(br(b,e,t))return b}return ou(e,t)}function jt(e){if(!e||e.nodeType!==1)return"body";for(var t=[],n=e;n;){var r=n.getRootNode?n.getRootNode():h;if((!r||r.nodeType!==9&&!(r.nodeType===11&&r.host))&&(r=n.ownerDocument||h),t.unshift(uu(n,r)),r.nodeType===11&&r.host)n=r.host;else if(r.nodeType===9&&r!==h)try{n=r.defaultView&&r.defaultView.frameElement}catch(a){n=null}else n=null}return t.join(kn)}var _o=[/^#(?:[\w\u0080-\uffff-]|\\[0-9a-f]{1,6} |\\[^0-9a-f])+$/i,/^\[(?:data-testid|data-test|data-cy|data-qa)="(?:[^"\\]|\\[\s\S])*"\]$/,/^[a-z][\w-]*\[aria-label="(?:[^"\\]|\\[\s\S])*"\]$/i,/^(?:input|select|textarea|button)\[name="(?:[^"\\]|\\[\s\S])*"\]$/,/^a\[href="(?:[^"\\]|\\[\s\S])*"\]$/];function wo(e){if(typeof e!="string")return!1;for(var t=0;t<_o.length;t++)if(_o[t].test(e))return!0;return!1}function yr(e){var t=e.getAttribute("aria-label");if(t&&t.trim())return ee(t);var n=e.getAttribute("aria-labelledby");if(n){var r=e.getRootNode?e.getRootNode():h;r.getElementById||(r=e.ownerDocument||h);var a=n.split(/\s+/).map(function(p){var f=p&&r.getElementById(p);return f?f.textContent:""}).join(" ");if(a.trim())return ee(a)}for(var i=["alt","title","placeholder"],o=0;o<i.length;o++)if(t=e.getAttribute(i[o]),t&&t.trim())return ee(t);if(e.nodeName==="INPUT"&&/^(button|submit|reset)$/i.test(e.type)&&e.value)return ee(e.value);var l=typeof e.innerText=="string"?e.innerText:e.textContent;if(l&&l.trim())return ee(l);var u=e.querySelector&&e.querySelector("svg title");return u&&u.textContent.trim()?ee(u.textContent):null}var du={BUTTON:"button",SELECT:"combobox",TEXTAREA:"textbox",IMG:"img",NAV:"navigation",UL:"list",OL:"list",LI:"listitem",TABLE:"table",H1:"heading",H2:"heading",H3:"heading",H4:"heading",H5:"heading",H6:"heading"};function ko(e){var t=e.getAttribute("role");if(t&&t.trim())return t.trim().split(/\s+/)[0].slice(0,40);if(e.nodeName==="A")return e.hasAttribute("href")?"link":null;if(e.nodeName==="INPUT"){var n=(e.getAttribute("type")||"text").toLowerCase();return n==="hidden"?null:n==="checkbox"||n==="radio"?n:/^(button|submit|reset|image)$/.test(n)?"button":"textbox"}return du[e.nodeName]||null}var cu={button:"Button",link:"Link",tab:"Tab",menuitem:"Menu item",checkbox:"Checkbox",radio:"Radio",switch:"Switch",heading:"Heading",img:"Image",textbox:"Input",combobox:"Select",listitem:"List item",navigation:"Navigation",dialog:"Dialog"},fu={P:"Paragraph",LABEL:"Label",SECTION:"Section",HEADER:"Header",FOOTER:"Footer",FORM:"Form",TABLE:"Table",VIDEO:"Video",BLOCKQUOTE:"Quote",svg:"Icon"};function Co(e,t,n){var r=cu[t]||fu[e.nodeName];if(!r){var a=e.nodeName.toLowerCase(),i=ka(e).filter(vo)[0];r=e.id&&!Sn(e.id)?a+"#"+e.id.slice(0,60):i?a+"."+i.slice(0,60):a}return n?r+' "'+n.replace(/"/g,"'")+'"':r}function pu(e){return/^H[1-6]$/.test(e.nodeName)||e.getAttribute("role")==="heading"}function hu(e){for(var t=0;e&&t<32;t++){var n=e.getRootNode?e.getRootNode():h,r=n.nodeType===11&&!!n.host,a=e.ownerDocument||h,i=r?n:a.body;if(!i)return null;var o=a.createTreeWalker(i,NodeFilter.SHOW_ELEMENT);o.currentNode=e;for(var l=0;l<2e3;l++){var u=o.previousNode();if(!u)break;if(pu(u))return ee(u.textContent)||null}if(l>=2e3||!r)return null;e=n.host}return null}var An=300,gu=8192,Ca=["display","position","width","height","margin","padding","gap","font-family","font-size","font-weight","line-height","color","background-color","border","border-radius","box-shadow","opacity","object-fit"],mu={react:1,vue:1,svelte:1};function ft(e,t){return typeof e=="string"&&e.length<=t}function zt(e,t){return e==null||ft(e,t)}function Eo(e){if(!e||typeof e!="object"||Array.isArray(e)||!ft(e.label,An)||!e.label||!ft(e.tag,40)||!e.tag||!ft(e.selector,ct)||!e.selector.trim()||!zt(e.role,40)||!zt(e.name,80)||!zt(e.heading,80)||!zt(e.id,An)||!zt(e.testId,An)||e.classes!==void 0&&!(Array.isArray(e.classes)&&e.classes.length<=8&&e.classes.every(function(r){return ft(r,An)&&r.length>0})))return!1;var t=e.box;if(!t||typeof t!="object"||!le(t.x)||!le(t.y)||!le(t.w)||!le(t.h)||e.styles!==null&&e.styles!==void 0&&(typeof e.styles!="object"||Array.isArray(e.styles)||!Object.keys(e.styles).every(function(r){return Ca.indexOf(r)>=0&&ft(e.styles[r],200)})))return!1;if(e.component!==null&&e.component!==void 0){var n=e.component;if(typeof n!="object"||Array.isArray(n)||mu[n.framework]!==1||!Array.isArray(n.chain)||n.chain.length>6||!n.chain.every(function(r){return ft(r,80)&&r.length>0})||!zt(n.source,An))return!1}return!0}function _r(e){if(!Eo(e))return null;var t={label:e.label,tag:e.tag,role:fe(e.role),name:fe(e.name),id:fe(e.id),testId:fe(e.testId),classes:(e.classes||[]).slice(),selector:e.selector,heading:fe(e.heading),box:{x:e.box.x,y:e.box.y,w:e.box.w,h:e.box.h},styles:null,component:null};return e.styles&&(t.styles={},Ca.forEach(function(n){typeof e.styles[n]=="string"&&(t.styles[n]=e.styles[n])})),e.component&&(t.component={framework:e.component.framework,chain:e.component.chain.slice(),source:fe(e.component.source)}),JSON.stringify(t).length<=gu?t:null}function Bt(e){if(!e||e.nodeType!==1||Q(e))return null;var t=e.ownerDocument||h;if(e===t.body||e===t.documentElement)return null;try{var n=ko(e),r=yr(e),a=he(e),i=xo.filter(function(u){return e.getAttribute(u)})[0],o=jt(e);if(o.length>ct){var l=En(o);l.length<=ct&&(o=l)}return _r({label:Co(e,n,r),tag:e.nodeName.toLowerCase(),role:n,name:r,id:e.id&&!Sn(e.id)?e.id:null,testId:i?e.getAttribute(i):null,classes:ka(e),selector:o,heading:hu(e),box:{x:Math.round(a.x),y:Math.round(a.y),w:Math.round(a.w),h:Math.round(a.h)},styles:vi.styles?_u(e):null,component:vi.components?Ou(e):null})}catch(u){return null}}var vu="a, button, input, select, textarea, label, summary, [role], [tabindex], [contenteditable]";function wr(e){var t=e&&e.nodeType===1?e:e&&e.parentElement;if(!t||Q(t))return null;for(;t.ownerSVGElement;)t=t.ownerSVGElement;for(var n=t.ownerDocument||h,r=t,a=0;r&&r!==n.body&&a<=4;r=Ln(r),a++)try{if(r.matches(vu))return r}catch(i){break}return t===n.body||t===n.documentElement?null:t}function xu(e,t,n,r,a){if(a=a||h,a!==h){var i=Xa(a);e-=i.x,t-=i.y}if(!a.elementsFromPoint)return null;for(var o=null,l=1/0,u=[],p=e+n/2,f=t+r/2,g=Array.prototype.slice.call(a.elementsFromPoint(p,f)),y=[],w=0;w<g.length;w++)if(!Q(g[w])){for(var b=g[w];b.shadowRoot&&b.shadowRoot.elementFromPoint&&y.length<32;){var T=b.shadowRoot.elementFromPoint(p,f);if(!T||T===b)break;y.unshift(T),b=T}break}return y.concat(g).forEach(function(C){for(var A=C;A&&A!==a.body&&A!==a.documentElement&&!(u.indexOf(A)>=0||Q(A));A=Ln(A)){u.push(A);var M=A.getBoundingClientRect();if(M.left<=e+1&&M.top<=t+1&&M.right>=e+n-1&&M.bottom>=t+r-1){M.width*M.height<l&&(o=A,l=M.width*M.height);break}}}),o}function So(e,t){return!e||e.nodeName.toLowerCase()!==t.tag?!1:!t.name||yr(e)===t.name}function Ao(e,t){if(!e.name||!t)return null;var n;try{n=t.querySelectorAll(e.tag)}catch(i){return null}if(n.length>500)return null;for(var r=null,a=0;a<n.length;a++)if(!(Q(n[a])||yr(n[a])!==e.name)){if(r)return null;r=n[a]}return r}var Tn=0,pt=Object.create(null);function Ft(){Tn++}function Ea(e){delete pt[e];for(var t=0;t<Fr;t++)delete pt[e+":"+t]}function ht(e,t){var n=e.geom&&e.geom.selectors?e.geom.selectors[t]:null,r=e.targets?e.targets[t]:null;if(!n)return null;if(!r||r.selector!==n&&En(n)!==r.selector)return Dt(n);var a=e.id+":"+t,i=c.enabled?pt[a]:null;if(i&&i.gen===Tn&&i.selector===n&&(i.node===null||i.node.isConnected))return i.node;var o=Dt(n);return wo(En(n))?o=o&&o.nodeName.toLowerCase()===r.tag?o:null:So(o,r)||(o=Ao(r,po(n))),c.enabled&&(pt[a]={gen:Tn,selector:n,node:o}),o}function bu(e,t){return typeof t=="string"&&e.length>ct&&Cn(e).length>1&&En(e)===t}function Ht(e){var t=e.geom,n=e.target;if(!t||!t.selector)return null;if(!n||t.selector!==n.selector&&!bu(t.selector,n.selector))return Dt(t.selector);var r=c.enabled?pt[e.id]:null;if(r&&r.gen===Tn&&r.selector===t.selector&&(r.node===null||r.node.isConnected))return r.node;var a=Dt(t.selector);return wo(En(t.selector))?a=a&&a.nodeName.toLowerCase()===n.tag?a:null:So(a,n)||(a=Ao(n,po(t.selector))),c.enabled&&(pt[e.id]={gen:Tn,selector:t.selector,node:a}),a}function To(e){if(Array.isArray(e)&&(e=e.join(",")),e==null||String(e).trim()==="")return{styles:!0,components:!0};var t=String(e).trim().toLowerCase();if(t==="off"||t==="none")return{styles:!1,components:!1};var n=t.split(/[\s,]+/);return{styles:n.indexOf("styles")>=0,components:n.indexOf("components")>=0}}function yu(e){return e.styles&&e.components?"styles,components":e.styles?"styles":e.components?"components":"off"}function _u(e){var t=e.ownerDocument&&e.ownerDocument.defaultView||m,n=t.getComputedStyle(e),r={};return Ca.forEach(function(a){if(!(a==="object-fit"&&!/^(IMG|VIDEO)$/.test(e.nodeName))){var i=n.getPropertyValue(a);i&&(r[a]=String(i).slice(0,200))}}),r}var Io=["/src/","/app/","/pages/","/components/","/lib/"];function Lo(e){return e.replace(/\\/g,"/").replace(/^[a-z][a-z0-9+.-]*:\/\/[^/]*/i,"").replace(/[?#].*$/,"")}function wu(e){if(typeof e!="string"||!e)return null;var t=Lo(e);if(t.indexOf("/node_modules/")>=0)return null;t.charAt(0)!=="/"&&(t="/"+t);for(var n=0;n<Io.length;n++){var r=t.indexOf(Io[n]);if(r>=0)return t.slice(r+1)}var a=t.split("/").filter(Boolean);return a.length?a.slice(-3).join("/"):null}function In(e,t,n){var r=wu(e);if(!r)return null;var a=r+(t?":"+t+(n?":"+n:""):"");return a.length>300?null:a}function Sa(e){return String(e).replace(/\\/g,"/").split("/").pop().replace(/\.[^.]+$/,"")}function kr(e,t){t&&typeof t=="string"&&/^[A-Z]/.test(t)&&e[e.length-1]!==t&&e.push(t.slice(0,80))}function Cr(e,t,n){return!t.length&&!n?null:{framework:e,chain:t.slice(0,6).reverse(),source:n||null}}var ku=/^(Fragment|StrictMode|Suspense|Profiler|.*Provider|.*Consumer|.*Context|.*Boundary|.*Router|Routes?|Outlet|RenderedRoute|Navigate|Link|HotReload|AppRouter|ServerRoot|Root|InnerLayoutRouter|OuterLayoutRouter|RenderFromTemplateContext|ScrollAndFocusHandler|LoadingBoundary|RedirectBoundary|NotFoundBoundary|DevRootHTTPAccessFallbackBoundary)$/;function Cu(e){for(var t=e,n=0;t&&n<=10;t=t.parentElement,n++)for(var r=Object.keys(t),a=0;a<r.length;a++)if(r[a].indexOf("__reactFiber$")===0||r[a].indexOf("__reactInternalInstance$")===0)return t[r[a]];return null}function Eu(e){for(var t=null,n=0;n<4&&e&&typeof e=="object";n++){if(typeof e.displayName=="string"){t=e.displayName;break}e=e.render||e.type}return!t&&typeof e=="function"&&(t=e.displayName||e.name),t&&/^[A-Z]/.test(t)&&!ku.test(t)?t:null}var Su=/\/node_modules\/|\/@vite\/|\/@react-refresh|\/\.vite\/deps\/|\/react(?:-dom)?(?:[.@][^\/]*)?\.js$/;function Au(e){var t=e._debugSource;if(t&&t.fileName)return In(t.fileName,t.lineNumber,t.columnNumber);var n=e._debugStack&&e._debugStack.stack;if(typeof n!="string")return null;for(var r=n.split("\n"),a=0;a<r.length;a++){var i=/((?:https?|file):\/\/[^\s()]+?):(\d+):(\d+)\)?\s*$/.exec(r[a]);if(!(!i||Su.test(Lo(i[1]))))return In(i[1],i[2],i[3])}return null}function Tu(e){var t=Cu(e);if(!t||typeof t!="object"||!("_debugOwner"in t))return null;for(var n=[],r=t,a=0;r&&a<200;r=r.return,a++)kr(n,Eu(r.type));return Cr("react",n,Au(t))}var Oo=/^(RouterView|RouterLink|Transition|TransitionGroup|KeepAlive|Teleport|Suspense|BaseTransition)$/;function Iu(e){var t=[],n=null,r,a;for(r=e,a=0;r&&a<=10;r=r.parentElement,a++){var i=r.__vueParentComponent;if(i){for(var o=0;i&&o<200;i=i.parent,o++){var l=i.type||{};!n&&l.__file&&(n=In(l.__file));var u=l.name||l.__name||(l.__file?Sa(l.__file):null);Oo.test(u||"")||kr(t,u)}return Cr("vue",t,n)}var p=r.__vue__;if(p){for(var f=0;p&&f<200;p=p.$parent,f++){var g=p.$options||{};!n&&g.__file&&(n=In(g.__file));var y=g.name||(g.__file?Sa(g.__file):null);Oo.test(y||"")||kr(t,y)}return Cr("vue",t,n)}}return null}function Lu(e){for(var t=e,n=0;t&&n<=10;t=t.parentElement,n++){var r=t.__svelte_meta;if(!(!r||!r.loc||!r.loc.file)){for(var a=[],i=r,o=0;i&&o<200;i=i.parent,o++){var l=i.loc&&i.loc.file||i.file;kr(a,i.componentTag||(l?Sa(l):null))}return Cr("svelte",a,In(r.loc.file,r.loc.line,r.loc.column))}}return null}function Ou(e){for(var t=[Tu,Iu,Lu],n=0;n<t.length;n++)try{var r=t[n](e);if(r)return r}catch(a){}return null}var Mu=/^(https?|vscode|vscode-insiders|cursor|idea|webstorm|zed|subl|txmt):/i;function Ru(e){if(!k.editorUrl||!e)return null;var t=/^(.*?)(?::(\d+))?(?::(\d+))?$/.exec(e),n=t[1].split("/").map(encodeURIComponent).join("/"),r=k.editorUrl.replace(/\{(path|line|column)\}/g,function(a,i){return i==="path"?n:i==="line"?t[2]||"1":t[3]||"1"});return Mu.test(r)?r:null}function Mo(e){var t=Ru(e),n=t?s("a",{class:"an-editor",href:t,text:"Open in editor"}):null;return n&&/^https?:/i.test(t)&&(n.target="_blank",n.rel="noopener noreferrer"),n}var Aa={};function Ro(e,t){var n=s("details",{class:"an-elem"});return Aa[e.id]&&(n.open=!0),v(n,"click",function(r){r.stopPropagation()}),v(n,"toggle",function(){n.open?Aa[e.id]=!0:delete Aa[e.id]}),n.appendChild(s("summary",{text:t})),n}function Pu(e){var t=e.target,n=Ro(e,"Element");function r(i,o){n.appendChild(s("div",{class:"an-erow"},[s("b",{text:i})].concat(o)))}if(r("Selector",[s("code",{text:t.selector}),s("button",{class:"an-mini","data-action":"copy-selector",title:"Copy selector","aria-label":"Copy selector",html:S.copy,onclick:function(){ze(t.selector,"Selector copied")}})]),t.classes.length&&r("Classes",[s("code",{text:t.classes.join(" ")})]),t.component&&t.component.chain.length&&r("Component",[s("code",{text:t.component.chain.map(function(i){return"<"+i+">"}).join(" ")})]),t.component&&t.component.source&&r("Source",[s("code",{text:t.component.source}),Mo(t.component.source)]),t.styles&&Object.keys(t.styles).length){var a=s("div",{class:"an-styles"});Object.keys(t.styles).forEach(function(i){a.appendChild(s("span",{text:i})),a.appendChild(s("code",{text:t.styles[i]}))}),r("Styles",[a])}return n}function Nu(e){var t=Ro(e,"Elements");return e.geom.selectors.forEach(function(n,r){var a=e.targets?e.targets[r]:null,i=!!ht(e,r),o=a?a.label:n,l=s("span",{class:"an-mnum",text:String(r+1)});l.style.background=e.color;var u=s("button",{type:"button",class:"an-mrow","data-member":String(r+1),title:n,"aria-label":"Show element "+(r+1)+": "+o+(i?"":" (missing)")},[l,s("span",{class:"an-mlabel",text:o}),i?null:s("span",{class:"an-mmiss",text:"(missing)"})]);i?v(u,"click",function(){$u(e,r)}):u.setAttribute("aria-disabled","true"),t.appendChild(s("div",{class:"an-erow an-mitem"},[u,a&&a.component&&a.component.source?Mo(a.component.source):null]))}),t}function Ta(e){function t(){return Array.prototype.slice.call(e.querySelectorAll("button:not([disabled]),input:not([disabled]),textarea:not([disabled]),[tabindex]")).filter(function(r){return r.offsetParent!==null})}function n(r){if(r.key==="Tab"){var a=t();if(a.length){var i=a[0],o=a[a.length-1];r.shiftKey?h.activeElement===i&&(r.preventDefault(),o.focus()):h.activeElement===o&&(r.preventDefault(),i.focus())}}}return v(e,"keydown",n),function(){e.removeEventListener("keydown",n)}}function Q(e){for(;e;){if(e.id&&String(e.id).indexOf("__an")===0)return!0;e=e.nodeType===11&&e.host?e.host:e.parentNode}return!1}function Ut(e){var t=e.composedPath?e.composedPath():null,n=t&&t.length?t[0]:e.target;return n&&n.nodeType===3&&(n=n.parentNode),n&&n.nodeType===1?n:e.target}function Ln(e){if(!e)return null;if(e.parentElement)return e.parentElement;var t=e.parentNode;return t&&t.nodeType===11&&t.host?t.host:null}var Du='\n #__an_host {\n --an-font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;\n --an-surface: #ffffff;\n --an-surface-2: #f6f6f8;\n --an-glass: rgba(255,255,255,.85);\n --an-fg: #17171f;\n --an-muted: #84848f;\n --an-border: rgba(22,22,34,.09);\n --an-border-strong: rgba(22,22,34,.16);\n --an-btn-bg: #17171f;\n --an-btn-fg: #ffffff;\n --an-danger: #e11d48;\n --an-ok: #10b981;\n --an-shadow-sm: 0 2px 10px rgba(18,18,32,.10);\n --an-shadow-md: 0 8px 30px rgba(18,18,32,.14);\n --an-shadow-lg: 0 18px 60px rgba(18,18,32,.20);\n --an-ring: 0 0 0 3px rgba(99,102,241,.25);\n }\n #__an_host.an-dark {\n --an-surface: #1e1e26;\n --an-surface-2: #28282f;\n --an-glass: rgba(30,30,38,.86);\n --an-fg: #ededf2;\n --an-muted: #9d9da8;\n --an-border: rgba(255,255,255,.10);\n --an-border-strong: rgba(255,255,255,.20);\n --an-btn-bg: #ededf2;\n --an-btn-fg: #17171f;\n --an-shadow-sm: 0 2px 10px rgba(0,0,0,.35);\n --an-shadow-md: 0 8px 30px rgba(0,0,0,.45);\n --an-shadow-lg: 0 18px 60px rgba(0,0,0,.55);\n }\n\n #__an_root, #__an_root *, #__an_compose, #__an_compose *,\n #__an_toasts, #__an_toasts *, #__an_namewrap, #__an_namewrap *,\n #__an_sharewrap, #__an_sharewrap *, #__an_launch, #__an_launch *,\n #__an_plus, #__an_plus *, #__an_groupbar, #__an_groupbar * { box-sizing: border-box; }\n\n .an-highlight.an-active { stroke: var(--an-fg); stroke-width: 1; }\n\n #__an_overlay { position: absolute; top:0; left:0; pointer-events:none;\n z-index: 2147483000; overflow: visible; }\n #__an_overlay .an-hit { pointer-events: stroke; cursor: pointer; }\n\n .an-pin { position:absolute; width:26px; height:26px; margin:-13px 0 0 -13px;\n border-radius: 50% 50% 50% 2px; transform: rotate(45deg);\n display:flex; align-items:center; justify-content:center; cursor:pointer;\n color:#fff; font:600 12px/1 var(--an-font);\n box-shadow: 0 4px 14px rgba(0,0,0,.28); z-index: 2147483100;\n border: 2px solid rgba(255,255,255,.85);\n transition: transform .15s cubic-bezier(.34,1.56,.64,1);\n animation: an-drop .25s cubic-bezier(.34,1.56,.64,1); }\n @keyframes an-drop { from { transform: rotate(45deg) scale(.4); opacity:0 }\n to { transform: rotate(45deg) scale(1); opacity:1 } }\n .an-pin span { transform: rotate(-45deg); }\n .an-pin:hover { transform: rotate(45deg) scale(1.14); }\n .an-pin.an-active { outline: 3px solid rgba(0,0,0,.18); }\n /* Centred on its member\'s corner: 26px plus a 2px border each side. */\n .an-pin.an-group { margin:-15px 0 0 -15px; }\n .an-pin:focus-visible { outline: 3px solid #4f46e5; outline-offset: 2px; }\n #__an_overlay [tabindex]:focus-visible, .an-block-tab:focus-visible {\n outline: 3px solid #4f46e5; outline-offset: 2px; }\n\n .an-avatar { width:22px; height:22px; border-radius:50%; flex:none;\n display:inline-flex; align-items:center; justify-content:center;\n color:#fff; font:600 9px/1 var(--an-font); letter-spacing:.02em; }\n\n /* ---- toolbar ----------------------------------------------------------- */\n #__an_bar { position: fixed; bottom: 18px; z-index: 2147483200;\n display:flex; flex-direction:column; gap:6px; align-items:center;\n background: var(--an-glass); backdrop-filter: blur(16px) saturate(1.5);\n -webkit-backdrop-filter: blur(16px) saturate(1.5);\n padding: 8px; border-radius: 18px;\n box-shadow: var(--an-shadow-md), 0 1px 0 rgba(255,255,255,.55) inset;\n border: 1px solid var(--an-border);\n font-family: var(--an-font);\n animation: an-rise .3s cubic-bezier(.34,1.4,.64,1); }\n @keyframes an-rise { from { transform: translateY(14px); opacity:0 }\n to { transform: translateY(0); opacity:1 } }\n #__an_bar.an-right { right: 18px; transition: right .3s cubic-bezier(.32,.72,.28,1); }\n #__an_bar.an-left { left: 18px; }\n .an-grip { width:40px; height:14px; padding:0; margin-bottom:-2px; border:none; border-radius:7px;\n background:transparent; color: var(--an-muted); cursor:grab; touch-action:none;\n display:flex; align-items:center; justify-content:center; }\n .an-grip:hover, .an-grip:focus-visible { background: var(--an-surface-2); color: var(--an-fg); }\n .an-grip svg { width:18px; height:8px; }\n #__an_bar.an-dragging, #__an_bar.an-dragging * { cursor:grabbing !important; transition:none !important; }\n /* A moved bar never slides: the corner bar\'s right-edge transition is for the panel. */\n #__an_bar.an-moved, #__an_bar.an-snap { transition:none !important; }\n .an-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0);\n clip-path:inset(50%); white-space:nowrap; margin:-1px; padding:0; border:0; }\n @media (min-width: 641px) {\n #__an_root.an-popen #__an_bar.an-right { right: 398px; }\n }\n .an-btn { width:40px; height:40px; border:none; border-radius:12px;\n background: transparent; cursor:pointer; display:flex; align-items:center;\n justify-content:center; color: var(--an-fg); position:relative;\n transition: background .15s, transform .1s, color .15s; }\n .an-btn:hover { background: rgba(127,127,140,.14); }\n .an-btn:active { transform: scale(.92); }\n .an-btn.an-on { background: var(--an-btn-bg); color: var(--an-btn-fg);\n box-shadow: 0 4px 12px rgba(0,0,0,.22); }\n .an-btn svg { width:20px; height:20px; }\n .an-btn[data-tip]:hover::after { content: attr(data-tip);\n position:absolute; top:50%; transform:translateY(-50%);\n background:#17171f; color:#fff; font:500 12px var(--an-font); padding:6px 10px;\n border-radius:8px; white-space:pre; pointer-events:none;\n box-shadow: var(--an-shadow-sm); z-index: 5; }\n #__an_bar.an-right .an-btn[data-tip]:hover::after { right:50px; }\n #__an_bar.an-left .an-btn[data-tip]:hover::after { left:50px; }\n .an-sep { width:24px; height:1px; background: var(--an-border-strong); margin:1px 0; }\n .an-count { position:absolute; top:-3px; right:-3px; min-width:17px; height:17px;\n padding:0 4px; background:#f43f5e; color:#fff; border-radius:9px;\n font-size:10px; font-weight:700; display:flex; align-items:center;\n justify-content:center; border:2px solid var(--an-surface); }\n\n /* ---- color picker ------------------------------------------------------ */\n #__an_colorbtn { width:40px; height:40px; border:none; border-radius:12px;\n background:transparent; cursor:pointer; display:flex; align-items:center;\n justify-content:center; position:relative; transition:background .15s; }\n #__an_colorbtn:hover { background:rgba(127,127,140,.14); }\n #__an_colorbtn .an-swdot { width:21px; height:21px; border-radius:50%;\n border:2px solid var(--an-surface);\n box-shadow:0 1px 4px rgba(0,0,0,.28), 0 0 0 1px var(--an-border); }\n #__an_colorpop { position:absolute; z-index:2147483210;\n background: var(--an-glass); backdrop-filter:blur(16px) saturate(1.5);\n -webkit-backdrop-filter:blur(16px) saturate(1.5);\n border:1px solid var(--an-border); border-radius:16px; padding:9px;\n box-shadow: var(--an-shadow-md); display:none; gap:8px; }\n #__an_bar.an-right #__an_colorpop { right:52px; }\n #__an_bar.an-left #__an_colorpop { left:52px; }\n #__an_colorpop.an-show { display:flex; }\n\n /* ---- settings ---------------------------------------------------------- */\n .an-setwrap { position:relative; display:flex; }\n #__an_settings { position:absolute; bottom:0; z-index:2147483210; width:300px; box-sizing:border-box;\n background: var(--an-glass); backdrop-filter:blur(16px) saturate(1.5);\n -webkit-backdrop-filter:blur(16px) saturate(1.5); color: var(--an-fg);\n border:1px solid var(--an-border); border-radius:16px; padding:14px 16px;\n box-shadow: var(--an-shadow-md); display:none; font:400 13px/1.45 var(--an-font); text-align:left; }\n #__an_bar.an-right #__an_settings { right:52px; }\n #__an_bar.an-left #__an_settings { left:52px; }\n #__an_settings.an-show { display:block; }\n .an-set-h { margin:0 0 10px; font:600 14px/1.3 var(--an-font); }\n .an-set-sec { border-top:1px solid var(--an-border); padding-top:10px; }\n .an-set-title { display:flex; align-items:center; justify-content:space-between; gap:8px; font-weight:600; }\n .an-set-status { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:500; color: var(--an-muted); }\n .an-set-dot { width:8px; height:8px; border-radius:50%; background: var(--an-muted); }\n .an-set-status[data-state="connected"] .an-set-dot { background: var(--an-ok); }\n .an-set-status[data-state="connecting"] .an-set-dot { background:#f59e0b; }\n .an-set-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:10px; }\n .an-set-note { margin:8px 0 0; color: var(--an-muted); font-size:12px; }\n .an-set-note code, .an-set-cmd code { font:12px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }\n .an-set-cmd { display:flex; gap:8px; align-items:flex-start; margin-top:6px; padding:8px;\n border-radius:10px; background: var(--an-surface-2); }\n .an-set-cmd code { flex:1; min-width:0; overflow-wrap:anywhere; }\n .an-set-copy { border:none; border-radius:8px; padding:4px 8px; background: var(--an-btn-bg);\n color: var(--an-btn-fg); font:600 12px var(--an-font); cursor:pointer; }\n .an-set-link { display:inline-block; margin-top:8px; color:inherit; font-weight:600; font-size:12px; }\n .an-set-help[hidden] { display:none; }\n .an-set-connect { margin-top:8px; padding:6px 10px; }\n #__an_root.an-checking #__an_bar .an-btn[data-tool] { opacity:.45; pointer-events:none; }\n .an-sw { width:24px; height:24px; border-radius:50%; cursor:pointer;\n border:2px solid var(--an-surface);\n box-shadow:0 1px 4px rgba(0,0,0,.25), 0 0 0 1px var(--an-border);\n transition: transform .12s; }\n .an-sw:hover { transform: scale(1.18); }\n .an-sw.an-on { transform: scale(1.18); box-shadow:0 0 0 2px var(--an-btn-bg), 0 1px 4px rgba(0,0,0,.3); }\n\n /* ---- side panel (floating, Figma-style) -------------------------------- */\n #__an_panel { position: fixed; top:12px; right:12px; bottom:12px; width:374px;\n max-width: calc(100vw - 24px); background: var(--an-surface); z-index:2147483150;\n border:1px solid var(--an-border); border-radius:18px;\n box-shadow: var(--an-shadow-lg); transform: translateX(calc(100% + 26px));\n transition: transform .3s cubic-bezier(.32,.72,.28,1); display:flex;\n flex-direction:column; font-family: var(--an-font); color: var(--an-fg);\n overflow:hidden; }\n #__an_panel.an-open { transform: translateX(0); }\n .an-ph { padding:16px 18px 12px; display:flex; align-items:center; gap:10px; }\n .an-ph h2 { margin:0; font:700 15px/1.2 var(--an-font); letter-spacing:-.01em; }\n .an-ph .an-pcount { font-size:11px; font-weight:600; color: var(--an-muted);\n background: var(--an-surface-2); border-radius:10px; padding:2px 8px; }\n .an-x { border:none; background: var(--an-surface-2); width:28px; height:28px;\n border-radius:8px; cursor:pointer; font-size:16px; color: var(--an-muted);\n display:flex; align-items:center; justify-content:center; margin-left:auto;\n transition: background .15s, color .15s; }\n .an-x:hover { background: var(--an-border); color: var(--an-fg); }\n .an-ph .an-x { margin-left:0; }\n .an-hbtn { border:none; background:transparent; width:28px; height:28px; padding:5px;\n border-radius:8px; cursor:pointer; color: var(--an-muted); display:flex;\n align-items:center; justify-content:center; transition: background .15s, color .15s; }\n .an-hgap { flex:1; }\n .an-hbtn:hover { background: var(--an-surface-2); color: var(--an-fg); }\n .an-hbtn svg { width:16px; height:16px; }\n .an-toolsrow { padding:0 18px 12px; display:flex; flex-direction:column; gap:9px;\n border-bottom:1px solid var(--an-border); }\n .an-search { position:relative; }\n .an-search svg { position:absolute; left:10px; top:50%; transform:translateY(-50%);\n width:14px; height:14px; color: var(--an-muted); pointer-events:none; }\n .an-search input { width:100%; border:1px solid var(--an-border);\n background: var(--an-surface-2); border-radius:10px; padding:8px 10px 8px 31px;\n font:13px var(--an-font); outline:none; color: var(--an-fg); transition:border-color .15s; }\n .an-search input:focus { border-color: var(--an-border-strong); }\n .an-filters { display:flex; gap:6px; }\n .an-chip { padding:4px 11px; border-radius:20px; border:1px solid var(--an-border);\n background: var(--an-surface); cursor:pointer; color: var(--an-muted);\n font:500 12px var(--an-font); transition: all .15s; }\n .an-chip:hover { border-color: var(--an-border-strong); color: var(--an-fg); }\n .an-chip.an-on { background: var(--an-btn-bg); color: var(--an-btn-fg);\n border-color: var(--an-btn-bg); }\n .an-mlist { margin-top:4px; max-height:180px; overflow:auto; border:1px solid var(--an-border-strong); border-radius:8px; background:var(--an-surface); box-shadow:var(--an-shadow-sm); }\n .an-mopt { display:flex; align-items:center; gap:8px; padding:6px 10px; font-size:13px; cursor:pointer; color:var(--an-fg); }\n .an-mopt.an-on, .an-mopt:hover { background:var(--an-border); }\n .an-mtag { margin-left:auto; font-size:11px; color:var(--an-muted); }\n .an-mention { font-weight:600; border-radius:4px; padding:0 3px; background:rgba(229,72,77,.10); }\n .an-mention.an-me { background:rgba(229,72,77,.22); color:#c9363b; }\n .an-mcount { background:#e5484d; color:#fff; }\n .an-mention-item { padding:10px 12px; border:1px solid var(--an-border); border-radius:10px; margin-bottom:8px; display:flex; flex-direction:column; gap:6px; }\n .an-mention-item .an-mini { align-self:flex-start; text-decoration:none; }\n .an-mwhere { font-size:12px; color:var(--an-muted); }\n .an-pback { border:none; background: var(--an-surface-2); height:28px; border-radius:8px; color: var(--an-fg);\n font:600 12px var(--an-font); display:flex; align-items:center; gap:4px; padding:0 10px 0 6px; cursor:pointer; }\n .an-pback svg { width:16px; height:16px; }\n .an-people { display:flex; flex-direction:column; gap:10px; padding:2px 2px 8px; }\n .an-pinvite { width:100%; display:flex; align-items:center; justify-content:center; gap:6px; padding:9px 14px; font-size:13px; }\n .an-psect { display:flex; align-items:center; gap:8px; font:600 11px var(--an-font); color: var(--an-muted);\n text-transform:uppercase; letter-spacing:.06em; padding:6px 2px 0; }\n .an-psect::after { content:""; flex:1; height:1px; background: var(--an-border); }\n .an-prow { position:relative; border-bottom:1px solid var(--an-border); }\n .an-person { display:flex; align-items:center; gap:10px; padding:9px 4px; }\n .an-person.an-inactive { opacity:.62; }\n .an-pwho { flex:1; min-width:0; }\n .an-pname { font:600 13px/1.3 var(--an-font); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }\n .an-pmeta { font-size:12px; color: var(--an-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n .an-pmeta .an-psoon { color:#d97706; }\n .an-prole { font:600 10.5px var(--an-font); border-radius:6px; padding:1px 6px; background: var(--an-surface-2); color: var(--an-muted); }\n .an-prole.an-prole-author { background:rgba(99,102,241,.14); color:#6366f1; }\n .an-pyou { font:600 10.5px var(--an-font); color: var(--an-muted); }\n .an-ibtn { border:none; background:transparent; width:28px; height:28px; padding:6px; border-radius:8px; color: var(--an-muted);\n display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; }\n .an-ibtn:hover, .an-ibtn[aria-expanded="true"] { background: var(--an-surface-2); color: var(--an-fg); }\n .an-ibtn svg { width:16px; height:16px; }\n .an-ibtn-gap { width:28px; flex:none; }\n .an-pmenu { position:absolute; right:4px; top:42px; z-index:5; width:170px; background: var(--an-surface);\n border:1px solid var(--an-border-strong); border-radius:12px; box-shadow: var(--an-shadow-lg); padding:5px;\n display:flex; flex-direction:column; }\n .an-pmenu .an-mitem { display:block; width:100%; text-align:left; border:0; background:transparent; color: var(--an-fg);\n font:500 12.5px var(--an-font); padding:8px 10px; border-radius:8px; cursor:pointer; }\n .an-pmenu .an-mitem:hover, .an-pmenu .an-mitem:focus-visible { background: var(--an-surface-2); outline:none; }\n .an-pmenu .an-mitem.an-pdanger { color: var(--an-danger); }\n .an-pconfirm { background:rgba(99,102,241,.06); border:1px solid var(--an-border-strong); border-radius:12px;\n padding:10px 11px; margin:2px 0 8px; font-size:12.5px; line-height:1.45; }\n .an-pconfirm.an-pconfirm-danger { background:rgba(225,29,72,.06); border-color:rgba(225,29,72,.25); }\n .an-pbtns { display:flex; gap:8px; justify-content:flex-end; margin-top:8px; }\n .an-primary.an-pdanger-btn { background: var(--an-danger); color:#fff; }\n .an-psmall { padding:5px 10px; font-size:12px; flex:none; }\n .an-pform { border:1px solid var(--an-border); border-radius:14px; padding:12px 13px; display:flex; flex-direction:column; margin:0; }\n .an-pform label, .an-pform .an-plabel { display:block; font:600 12px var(--an-font); margin:0 0 5px; color: var(--an-fg); }\n .an-pform .an-popt { font-weight:500; color: var(--an-muted); }\n .an-pform .an-input { margin-bottom:11px; }\n .an-pform .an-input[aria-invalid="true"] { border-color: var(--an-danger); margin-bottom:4px; }\n .an-pferr { color: var(--an-danger); font-size:12px; margin:0 0 10px; }\n .an-pseg { display:flex; gap:2px; padding:3px; border-radius:10px; background: var(--an-surface-2); margin-bottom:5px; }\n .an-pseg .an-segbtn { flex:1; border:0; background:transparent; color: var(--an-muted); font:600 12.5px var(--an-font);\n padding:6px 0; border-radius:8px; cursor:pointer; }\n .an-pseg .an-segbtn.an-on { background: var(--an-surface); color: var(--an-fg); box-shadow: var(--an-shadow-sm); }\n .an-phelp { font-size:11.5px; color: var(--an-muted); margin:0 0 11px; line-height:1.4; }\n .an-pfbtns { display:flex; gap:8px; justify-content:flex-end; }\n .an-pready { border:1px solid rgba(16,185,129,.35); background:rgba(16,185,129,.07); border-radius:14px; padding:12px 13px; }\n .an-pready-t { font:600 13px var(--an-font); display:flex; align-items:center; gap:6px; margin-bottom:8px; }\n .an-pready-t svg { width:15px; height:15px; color: var(--an-ok); flex:none; }\n .an-plinkrow { display:flex; gap:6px; }\n .an-plinkrow .an-input { flex:1; width:auto; min-width:0; font:12px ui-monospace, SFMono-Regular, Menlo, monospace; }\n .an-pready .an-phelp { margin:8px 0 0; }\n .an-perror { color: var(--an-danger); font-size:12.5px; }\n .an-pcheck { display:flex; align-items:center; gap:7px; font-size:12.5px; margin:-4px 0 11px; color: var(--an-fg); }\n .an-pemailed { font-size:12px; color: var(--an-ok); margin:8px 0 0; }\n .an-pready .an-psend { margin-top:8px; }\n .an-mswitch { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px; margin-bottom:8px;\n border:1px solid var(--an-border); border-radius:10px; font-size:12.5px; }\n .an-switch { width:34px; height:20px; border-radius:10px; border:none; background: var(--an-border-strong); position:relative;\n cursor:pointer; flex:none; padding:0; }\n .an-switch::after { content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%; background:#fff;\n transition:left .15s; }\n .an-switch[aria-checked="true"] { background: var(--an-ok); }\n .an-switch[aria-checked="true"]::after { left:16px; }\n .an-switch:disabled { opacity:.5; cursor:default; }\n .an-list { flex:1; overflow-y:auto; padding:8px 12px 16px; }\n .an-list::-webkit-scrollbar { width:8px; }\n .an-list::-webkit-scrollbar-thumb { background: var(--an-border-strong); border-radius:4px; }\n\n .an-empty { text-align:center; color: var(--an-muted); padding:42px 24px;\n font-size:13px; line-height:1.65; }\n .an-empty .an-eicon { width:42px; height:42px; margin:0 auto 12px; border-radius:14px;\n background: var(--an-surface-2); display:flex; align-items:center; justify-content:center; }\n .an-empty .an-eicon svg { width:20px; height:20px; color: var(--an-muted); }\n .an-empty kbd { font:600 11px var(--an-font); background: var(--an-surface-2);\n border:1px solid var(--an-border-strong); border-bottom-width:2px;\n border-radius:5px; padding:1px 5px; }\n\n /* ---- comment card ------------------------------------------------------ */\n .an-card { border:1px solid var(--an-border); border-radius:14px; padding:12px 13px;\n margin:8px 2px; background: var(--an-surface);\n transition: box-shadow .15s, border-color .15s; cursor:pointer; position:relative; }\n .an-card:hover { box-shadow: var(--an-shadow-sm); border-color: var(--an-border-strong); }\n .an-card.an-active { border-color: var(--an-btn-bg); box-shadow: var(--an-shadow-sm); }\n .an-card.an-resolved { opacity:.6; }\n .an-cmeta { display:flex; align-items:center; gap:8px; margin-bottom:7px; }\n .an-author { font-weight:600; font-size:13px; }\n .an-tag { font-size:10px; font-weight:600; color: var(--an-muted);\n display:inline-flex; align-items:center; gap:4px; }\n .an-tag .an-dot { width:8px; height:8px; border-radius:50%; }\n .an-when { font-size:11px; color: var(--an-muted); margin-left:auto; flex:none; }\n .an-rbadge { display:inline-flex; align-items:center; gap:3px; font:600 10px var(--an-font);\n color: var(--an-ok); }\n .an-rbadge svg { width:11px; height:11px; }\n .an-sbadge { font:600 10px var(--an-font); color: var(--an-muted); }\n .an-sbadge.an-s-in_progress { color: #0ea5e9; }\n .an-assignee, .an-disposal { font-size:11px; color: var(--an-muted); margin:-3px 0 6px; }\n .an-disposal { color: var(--an-ok); }\n .an-card.an-unread { border-color: var(--an-btn-bg); }\n .an-newpill { display:inline-block; border:0; border-radius:999px; margin:-2px 0 7px;\n padding:2px 9px; font:600 10.5px var(--an-font); cursor:pointer;\n background: var(--an-btn-bg); color: var(--an-btn-fg); }\n .an-history { display:none; margin-top:8px; border-top:1px dashed var(--an-border); padding-top:7px; }\n .an-history.an-show { display:block; }\n .an-hlist { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }\n .an-hlist li { display:flex; gap:8px; font-size:11.5px; line-height:1.4; color: var(--an-fg); }\n .an-hwhen { color: var(--an-muted); margin-left:auto; flex:none; font-size:10.5px; }\n .an-hnote { font-size:10.5px; color: var(--an-muted); margin-top:5px; }\n select.an-status { border:1px solid var(--an-border); background: var(--an-surface);\n border-radius:8px; padding:3px 6px; font:500 11.5px var(--an-font); cursor:pointer;\n color: var(--an-muted); max-width:120px; }\n .an-quote { font-size:12px; color: var(--an-muted); background: var(--an-surface-2);\n border-left:3px solid var(--an-border-strong);\n padding:5px 9px; border-radius:0 6px 6px 0; margin:6px 0; line-height:1.45;\n max-height:54px; overflow:hidden; }\n .an-body { font-size:13.5px; line-height:1.5; color: var(--an-fg);\n white-space:pre-wrap; word-break:break-word; }\n .an-replies { margin-top:9px; border-top:1px dashed var(--an-border); padding-top:8px;\n display:flex; flex-direction:column; gap:7px; }\n .an-reply { display:flex; gap:8px; font-size:12.5px; line-height:1.45; }\n .an-reply .an-rwho { font-weight:600; margin-right:5px; }\n .an-agent { display:inline-block; font-size:10px; font-weight:600; line-height:15px; padding:0 6px; margin-right:5px;\n border-radius:8px; background: var(--an-btn-bg); color: var(--an-btn-fg); vertical-align:1px; }\n .an-reply .an-rwhen { color: var(--an-muted); font-size:10.5px; margin-left:5px; }\n .an-cact { display:flex; gap:5px; margin-top:10px; flex-wrap:wrap;\n opacity:.45; transition: opacity .15s; }\n .an-card:hover .an-cact, .an-card.an-active .an-cact { opacity:1; }\n .an-mini { border:1px solid var(--an-border); background: var(--an-surface);\n border-radius:8px; padding:4px 9px; font:500 11.5px var(--an-font); cursor:pointer;\n color: var(--an-muted); display:inline-flex; align-items:center; gap:4px;\n transition: all .15s; }\n .an-mini svg { width:12px; height:12px; }\n .an-mini:hover { background: var(--an-surface-2); color: var(--an-fg); }\n .an-mini.an-danger:hover { background:rgba(225,29,72,.08); color: var(--an-danger);\n border-color: rgba(225,29,72,.3); }\n .an-replybox, .an-editbox { display:none; margin-top:8px; gap:6px; flex-direction:column; }\n .an-replybox.an-show, .an-editbox.an-show { display:flex; }\n .an-input, .an-ta { width:100%; border:1px solid var(--an-border-strong);\n background: var(--an-surface); border-radius:9px;\n padding:8px 10px; font:13px var(--an-font); resize:vertical; outline:none;\n color: var(--an-fg); transition: border-color .15s, box-shadow .15s; }\n .an-input:focus, .an-ta:focus { border-color: var(--an-btn-bg); }\n\n /* ---- panel footer ------------------------------------------------------ */\n #__an_foot { border-top:1px solid var(--an-border); padding:12px 16px;\n background: var(--an-surface-2); display:flex; flex-direction:column; gap:9px; }\n #__an_foot .an-localnote { display:flex; align-items:center; gap:7px;\n font-size:11.5px; color: var(--an-muted); }\n #__an_foot .an-localnote svg { width:14px; height:14px; flex:none; }\n #__an_foot .an-localnote.an-synced { color: var(--an-ok); }\n #__an_foot .an-localnote.an-refused { align-items:flex-start; color: var(--an-danger); }\n #__an_foot .an-localnote.an-refused svg { margin-top:2px; }\n #__an_foot .an-exportlbl { font:600 10.5px var(--an-font); letter-spacing:.06em; text-transform:uppercase; color: var(--an-muted); margin:8px 0 -2px; }\n #__an_foot .an-footrow { display:flex; gap:8px; }\n #__an_foot .an-footrow.an-four { flex-wrap:wrap; }\n #__an_foot .an-fbtn { flex:1; border:1px solid var(--an-border-strong);\n background: var(--an-surface); color: var(--an-fg); border-radius:10px; padding:9px;\n font:600 12.5px var(--an-font); cursor:pointer; display:flex; align-items:center;\n justify-content:center; gap:7px; transition: background .15s, border-color .15s; }\n #__an_foot .an-footrow.an-four .an-fbtn { flex-basis:calc(50% - 4px); }\n #__an_foot .an-fbtn:hover { background: var(--an-surface-2); border-color: var(--an-btn-bg); }\n #__an_foot .an-fbtn svg { width:15px; height:15px; }\n #__an_foot .an-sitebtn { width:100%; border:0; background:none; color: var(--an-muted);\n font:600 11.5px var(--an-font); cursor:pointer; display:flex; align-items:center;\n justify-content:center; gap:6px; padding:2px; border-radius:6px; }\n #__an_foot .an-sitebtn:hover { color: var(--an-fg); text-decoration:underline; }\n #__an_foot .an-sitebtn svg { width:13px; height:13px; }\n\n /* ---- composer popover -------------------------------------------------- */\n #__an_compose { position:absolute; z-index:2147483300; width:304px;\n background: var(--an-surface); border-radius:14px; box-shadow: var(--an-shadow-lg);\n border:1px solid var(--an-border); padding:13px; font-family: var(--an-font);\n color: var(--an-fg); display:none;\n animation: an-pop .18s cubic-bezier(.34,1.4,.64,1); }\n #__an_compose.an-show { display:block; }\n #__an_compose .an-ctitle { font-size:11px; font-weight:700; text-transform:uppercase;\n letter-spacing:.05em; color: var(--an-muted); margin-bottom:9px;\n display:flex; align-items:center; gap:6px; }\n #__an_compose .an-cquote { font-size:12.5px; line-height:1.45; color: var(--an-muted);\n background: var(--an-surface-2); border-left:3px solid var(--an-border-strong);\n padding:6px 10px; border-radius:0 6px 6px 0; margin-bottom:9px; max-height:84px;\n overflow-y:auto; font-style:italic; white-space:pre-wrap; word-break:break-word; }\n #__an_compose .an-cfoot { display:flex; align-items:center; margin-top:10px; gap:7px; }\n #__an_compose .an-ckbd { font-size:10.5px; color: var(--an-muted); margin-right:auto; }\n .an-primary { background: var(--an-btn-bg); color: var(--an-btn-fg); border:none;\n border-radius:9px; padding:7px 15px; font:600 12.5px var(--an-font); cursor:pointer;\n transition: filter .15s, opacity .15s; }\n .an-primary:hover { filter: brightness(1.15); }\n .an-primary:disabled { opacity:.55; cursor:default; }\n .an-ghost { background:transparent; border:1px solid var(--an-border-strong);\n border-radius:9px; padding:7px 13px; font:500 12.5px var(--an-font); cursor:pointer;\n color: var(--an-muted); }\n .an-ghost:hover { color: var(--an-fg); }\n\n /* ---- name modal -------------------------------------------------------- */\n #__an_namewrap { position:fixed; inset:0; z-index:2147483400;\n background:rgba(14,14,22,.45); backdrop-filter:blur(4px);\n display:flex; align-items:center; justify-content:center;\n font-family: var(--an-font); }\n #__an_namebox { background: var(--an-surface); color: var(--an-fg);\n width:380px; max-width:92vw; border-radius:18px;\n padding:26px 26px 22px; box-shadow: var(--an-shadow-lg);\n animation: an-pop .22s cubic-bezier(.34,1.56,.64,1);\n max-height:calc(100vh - 32px); overflow-y:auto; }\n @keyframes an-pop { from{transform:scale(.92);opacity:0} to{transform:scale(1);opacity:1} }\n #__an_namebox .an-nt { font:700 19px/1.2 var(--an-font); letter-spacing:-.01em; margin:0 0 6px; }\n #__an_namebox .an-nd { font-size:13.5px; color: var(--an-muted); line-height:1.5; margin:0 0 18px; }\n #__an_namebox input { width:100%; border:1.5px solid var(--an-border-strong);\n background: var(--an-surface); color: var(--an-fg); border-radius:11px;\n padding:12px 14px; font:15px var(--an-font); outline:none; margin-bottom:14px; }\n #__an_namebox input:focus { border-color: var(--an-btn-bg); }\n #__an_namebox button { width:100%; background: var(--an-btn-bg); color: var(--an-btn-fg);\n border:none; border-radius:11px; padding:12px; font:600 14px var(--an-font);\n cursor:pointer; transition: filter .15s; }\n #__an_namebox button:hover { filter: brightness(1.15); }\n #__an_namebox button.an-nskip { background: transparent; color: var(--an-muted); margin-top:6px; }\n #__an_namebox button.an-nskip:hover { color: var(--an-fg); filter:none; }\n #__an_namebox .an-nerr { color: var(--an-danger); font-size:12.5px; min-height:16px; margin:6px 0 4px; }\n #__an_namebox .an-nlegal { font-size:11.5px; line-height:1.5; color: var(--an-muted); text-align:center; margin:12px 0 0; }\n #__an_namebox .an-nlegal a { color: inherit; text-decoration: underline; text-underline-offset:2px; }\n #__an_namebox .an-nlegal a:hover { color: var(--an-fg); }\n #__an_namebox .an-nnote.an-nwarn { border-left:3px solid var(--an-danger); }\n #__an_namebox .an-nnote { background: var(--an-surface-2);\n border:1px solid var(--an-border); border-radius:11px;\n padding:11px 13px; margin:0 0 16px; font:13.5px/1.5 var(--an-font);\n color: var(--an-fg); overflow-wrap:anywhere; }\n #__an_namebox .an-nnote .an-nlbl { display:block; font-weight:700;\n font-size:11px; letter-spacing:.04em; text-transform:uppercase;\n color: var(--an-muted); margin-bottom:3px; }\n\n /* ---- share dialog ------------------------------------------------------ */\n #__an_sharewrap { position:fixed; inset:0; z-index:2147483400;\n background:rgba(14,14,22,.45); backdrop-filter:blur(4px);\n display:flex; align-items:center; justify-content:center;\n font-family: var(--an-font); }\n #__an_sharebox { background: var(--an-surface); color: var(--an-fg);\n width:440px; max-width:92vw; border-radius:18px; padding:24px 24px 18px;\n box-shadow: var(--an-shadow-lg); animation: an-pop .22s cubic-bezier(.34,1.56,.64,1);\n max-height:calc(100vh - 32px); overflow-y:auto; }\n #__an_sharebox .an-st { font:700 19px/1.2 var(--an-font); letter-spacing:-.01em; margin:0 0 5px; }\n #__an_sharebox .an-sd { font-size:13.5px; color: var(--an-muted); line-height:1.5; margin:0 0 16px; }\n #__an_sharebox .an-sdest { display:flex; align-items:center; gap:8px;\n background: var(--an-surface-2); border:1px solid var(--an-border);\n border-radius:10px; padding:9px 12px; margin-bottom:18px; font-size:13px;\n word-break:break-all; }\n #__an_sharebox .an-sdest svg { width:15px; height:15px; flex:none; color: var(--an-muted); }\n #__an_sharebox .an-sstep { display:flex; gap:11px; margin-bottom:16px; }\n #__an_sharebox .an-snum { flex:none; width:22px; height:22px; border-radius:50%;\n background: var(--an-btn-bg); color: var(--an-btn-fg); font:700 12px var(--an-font);\n display:flex; align-items:center; justify-content:center; margin-top:1px; }\n #__an_sharebox .an-stext { font-size:13.5px; line-height:1.5; overflow-wrap:anywhere; }\n #__an_sharebox .an-stext b { font-weight:700; }\n #__an_sharebox .an-srow { display:flex; gap:8px; flex-wrap:wrap; margin-top:9px; }\n #__an_sharebox .an-sbtn { display:inline-flex; align-items:center; gap:6px;\n background: var(--an-btn-bg); color: var(--an-btn-fg); border:none;\n border-radius:9px; padding:8px 13px; font:600 13px var(--an-font);\n cursor:pointer; transition: filter .15s; }\n #__an_sharebox .an-sbtn.an-ghost2 { background: var(--an-surface-2);\n color: var(--an-fg); border:1px solid var(--an-border-strong); }\n #__an_sharebox .an-sbtn:hover { filter: brightness(1.12); }\n #__an_sharebox .an-sbtn svg { width:14px; height:14px; }\n #__an_sharebox .an-sclose { width:100%; margin-top:8px; background:none;\n border:none; color: var(--an-muted); font:600 13px var(--an-font);\n cursor:pointer; padding:9px; border-radius:9px; }\n #__an_sharebox .an-sclose:hover { background: var(--an-surface-2); color: var(--an-fg); }\n\n /* ---- author note banner inside panel ----------------------------------- */\n #__an_note { display:none; gap:9px; align-items:flex-start;\n margin:0 16px 10px; padding:10px 12px; border-radius:11px;\n background: var(--an-surface-2); border:1px solid var(--an-border);\n font:13px/1.45 var(--an-font); color: var(--an-fg);\n overflow-wrap:anywhere; }\n #__an_note.an-show { display:flex; }\n #__an_note svg { width:15px; height:15px; flex:none; color: var(--an-muted); margin-top:1px; }\n #__an_note .an-nlbl { font-weight:700; }\n\n /* ---- pulsating download cue -------------------------------------------- */\n @keyframes an-pulse {\n 0% { box-shadow:0 0 0 0 rgba(245,158,11,.55); }\n 70% { box-shadow:0 0 0 8px rgba(245,158,11,0); }\n 100% { box-shadow:0 0 0 0 rgba(245,158,11,0); }\n }\n .an-pulse { animation: an-pulse 1.8s ease-out infinite;\n border-color:#f59e0b !important; color:#f59e0b !important; }\n\n /* ---- toasts ------------------------------------------------------------ */\n #__an_toasts { position:fixed; bottom:20px; left:50%; transform:translateX(-50%);\n z-index:2147483500; display:flex; flex-direction:column; align-items:center;\n gap:8px; pointer-events:none; font-family: var(--an-font); }\n .an-toast { pointer-events:auto; display:flex; align-items:center; gap:9px;\n background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font);\n padding:10px 14px; border-radius:12px; box-shadow: var(--an-shadow-md);\n border:1px solid rgba(255,255,255,.08); max-width:min(440px, 90vw);\n animation: an-toast-in .25s cubic-bezier(.34,1.3,.64,1); }\n .an-toast.an-out { animation: an-toast-out .2s ease forwards; }\n @keyframes an-toast-in { from { transform: translateY(12px) scale(.96); opacity:0 }\n to { transform: translateY(0) scale(1); opacity:1 } }\n @keyframes an-toast-out { to { transform: translateY(8px); opacity:0 } }\n .an-toast .an-ticon { width:17px; height:17px; flex:none; display:flex; }\n .an-toast .an-ticon svg { width:17px; height:17px; }\n .an-toast.an-success .an-ticon { color:#34d399; }\n .an-toast.an-error .an-ticon { color:#fb7185; }\n .an-toast.an-info .an-ticon { color:#a5b4fc; }\n .an-toast .an-taction { background:none; border:none; color:#a5b4fc;\n font:600 12.5px var(--an-font); cursor:pointer; padding:2px 4px; margin-left:2px;\n border-radius:6px; flex:none; }\n .an-toast .an-taction:hover { background:rgba(165,180,252,.14); }\n\n /* ---- unanchored highlight pill ------------------------------------------ */\n .an-unanchored-pill { position:absolute; left:16px; z-index:2147483110;\n display:flex; align-items:center; gap:7px; max-width:280px;\n background:#78350f; color:#fde68a; font:500 11.5px/1.35 var(--an-font);\n padding:7px 11px; border-radius:10px; box-shadow: var(--an-shadow-md);\n border:1px solid rgba(255,255,255,.14); cursor:pointer; }\n .an-unanchored-pill svg { width:14px; height:14px; flex:none; }\n\n /* ---- persistent "storage unavailable" banner --------------------------- */\n #__an_unsaved { position:fixed; top:14px; left:50%; transform:translateX(-50%);\n z-index:2147483510; display:flex; align-items:center; gap:9px;\n background:#7f1d1d; color:#ffe4e6; font:500 12.5px var(--an-font);\n padding:10px 14px; border-radius:12px; box-shadow: var(--an-shadow-md);\n border:1px solid rgba(255,255,255,.14); max-width:min(460px, 92vw);\n animation: an-toast-in .25s cubic-bezier(.34,1.3,.64,1); }\n\n /* ---- section (+) and margin bubbles ------------------------------------ */\n #__an_plus { position:fixed; z-index:2147483120; width:30px; height:30px;\n border-radius:50%; background: var(--an-surface);\n border:1.5px solid var(--an-border-strong); color: var(--an-muted);\n display:none; align-items:center; justify-content:center; cursor:pointer;\n box-shadow: var(--an-shadow-sm); transition:transform .12s, border-color .12s, color .12s; }\n #__an_plus svg { width:16px; height:16px; display:block; }\n #__an_plus.an-show { display:flex; }\n #__an_plus:hover { transform:scale(1.12); border-color: var(--an-btn-bg); color: var(--an-fg); }\n .an-block-tab { position:absolute; z-index:2147483100; min-width:24px; height:24px;\n padding:0 7px; border-radius:13px; display:flex; align-items:center; gap:5px;\n color:#fff; font:600 12px/1 var(--an-font); cursor:pointer;\n box-shadow: var(--an-shadow-sm); pointer-events:auto;\n transition:transform .12s; }\n .an-block-tab:hover { transform:scale(1.06); }\n .an-block-tab.an-active { outline:3px solid rgba(0,0,0,.14); }\n .an-block-tab svg { width:13px; height:13px; }\n\n /* ---- off-mode launcher -------------------------------------------------- */\n #__an_launch { position:fixed; bottom:24px; z-index:2147483200;\n display:none; align-items:center; gap:8px; background: var(--an-btn-bg);\n color: var(--an-btn-fg); border:none; border-radius:24px;\n padding:10px 16px 10px 13px; cursor:pointer;\n font:600 13px var(--an-font); box-shadow: var(--an-shadow-md);\n transition:transform .12s, filter .15s; }\n #__an_launch.an-right { right:18px; }\n #__an_launch.an-left { left:18px; }\n #__an_launch.an-show { display:flex; }\n #__an_launch:hover { transform:translateY(-1px); filter: brightness(1.12); }\n #__an_launch svg { width:16px; height:16px; }\n #__an_launch .an-lc { background:#f43f5e; color:#fff; border-radius:9px; min-width:17px;\n height:17px; padding:0 4px; font-size:10px; font-weight:700;\n display:flex; align-items:center; justify-content:center; }\n\n /* ---- element identification (1.6) --------------------------------------- */\n #__an_compose .an-con { font-size:11.5px; color: var(--an-muted); margin:-3px 0 8px;\n overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .an-frameshield { position:fixed; z-index:2147481000; background:transparent; pointer-events:auto; cursor:crosshair; touch-action:none; }\n #__an_hover { position:fixed; z-index:2147482000; pointer-events:none; display:none; box-sizing:border-box;\n border:2px solid var(--an-btn-bg); border-radius:4px; }\n #__an_hover.an-show { display:block; }\n #__an_hover .an-hlabel { position:absolute; left:-2px; bottom:100%; margin-bottom:4px; max-width:320px;\n overflow:hidden; text-overflow:ellipsis; white-space:nowrap; background: var(--an-btn-bg);\n color: var(--an-btn-fg); font:600 11px var(--an-font); padding:3px 7px; border-radius:5px; }\n #__an_hover.an-below .an-hlabel { bottom:auto; top:100%; margin:4px 0 0; }\n .an-target { font-size:11.5px; color: var(--an-muted); margin:2px 0 6px;\n overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n details.an-elem { margin:7px 0 2px; font-size:11.5px; color: var(--an-muted); }\n details.an-elem > summary { cursor:pointer; font-weight:600; list-style:none; display:inline-flex; align-items:center; gap:4px; }\n details.an-elem > summary::-webkit-details-marker { display:none; }\n details.an-elem > summary::before { content:"\\25B8"; font-size:10px; }\n details.an-elem[open] > summary::before { content:"\\25BE"; }\n .an-erow { display:flex; gap:6px; margin-top:5px; align-items:flex-start; flex-wrap:wrap; }\n .an-erow > b { flex:none; width:70px; font-weight:500; }\n .an-erow code { font:11px ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--an-fg);\n background: var(--an-surface-2); padding:1px 5px; border-radius:4px; word-break:break-all; }\n .an-erow .an-mini { padding:2px 5px; }\n .an-erow .an-mini svg { width:12px; height:12px; }\n .an-editor { color: var(--an-fg); text-decoration:underline; }\n .an-styles { display:grid; grid-template-columns:auto 1fr; gap:2px 8px; flex:1; min-width:0; }\n #__an_foot { position:relative; }\n #__an_copymenu { position:absolute; left:12px; right:12px; bottom:calc(100% - 4px); z-index:5;\n background: var(--an-surface); border:1px solid var(--an-border-strong); border-radius:12px;\n box-shadow: var(--an-shadow-lg); padding:6px; display:flex; flex-direction:column; gap:4px; }\n #__an_copymenu .an-mitem { display:flex; align-items:center; gap:8px; width:100%; text-align:left;\n border:0; background:transparent; color: var(--an-fg); font:500 12.5px var(--an-font);\n padding:8px 10px; border-radius:8px; cursor:pointer; }\n #__an_copymenu .an-mitem:hover, #__an_copymenu .an-mitem:focus-visible { background: var(--an-surface-2); }\n #__an_copymenu .an-mitem svg { width:14px; height:14px; flex:none; }\n #__an_copymenu .an-seg { display:flex; gap:2px; margin:0 10px 4px; padding:2px; border-radius:8px;\n background: var(--an-surface-2); }\n #__an_copymenu .an-segbtn { flex:1; border:0; background:transparent; color: var(--an-muted);\n font:500 11px var(--an-font); padding:4px 6px; border-radius:6px; cursor:pointer; }\n #__an_copymenu .an-segbtn.an-on { background: var(--an-surface); color: var(--an-fg); box-shadow: var(--an-shadow-sm); }\n\n /* ---- hint pill + shortcuts card ----------------------------------------- */\n body.an-drawing { cursor: crosshair !important; touch-action: none; user-select: none; -webkit-user-select: none; }\n body.an-drawing ::selection { background: transparent; }\n #__an_hint { position:fixed; top:14px; left:50%; transform:translateX(-50%);\n background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:8px 16px;\n border-radius:24px; z-index:2147483300; box-shadow: var(--an-shadow-md);\n display:none; align-items:center; gap:8px; pointer-events:none;\n width:max-content; max-width:calc(100vw - 24px); flex-wrap:wrap; justify-content:center; row-gap:4px; }\n #__an_hint.an-show { display:flex; }\n #__an_hint kbd { font:600 11px var(--an-font); background:rgba(255,255,255,.14);\n border-radius:5px; padding:1px 6px; }\n #__an_frozen { position:fixed; top:14px; left:50%; transform:translateX(-50%);\n background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:8px 16px;\n border-radius:24px; z-index:2147483300; box-shadow: var(--an-shadow-md);\n display:none; align-items:center; gap:6px; pointer-events:none; }\n #__an_frozen.an-show { display:flex; }\n #__an_hint.an-show ~ #__an_frozen { top:56px; }\n #__an_frozen kbd { font:600 11px var(--an-font); background:rgba(255,255,255,.14);\n border-radius:5px; padding:1px 6px; }\n /* ---- comments on several elements (C2) ---------------------------------- */\n #__an_bar .an-btn[data-action="group-toggle"] { display:none; }\n #__an_bar.an-pinning .an-btn[data-action="group-toggle"] { display:flex; }\n #__an_groupbar button:focus-visible { outline:2px solid #a5b4fc; outline-offset:2px; }\n #__an_gsel { position:fixed; top:0; left:0; width:0; height:0; z-index:2147482000; pointer-events:none; }\n .an-gsel { position:fixed; pointer-events:none; box-sizing:border-box;\n border:2px solid var(--an-btn-bg); border-radius:4px; }\n .an-gchip { position:absolute; top:-10px; left:-10px; min-width:18px; height:18px; padding:0 5px;\n box-sizing:border-box; border-radius:9px; background: var(--an-btn-bg); color: var(--an-btn-fg);\n font:700 10.5px/18px var(--an-font); text-align:center; box-shadow:0 1px 4px rgba(0,0,0,.25); }\n .an-gout { position:absolute; box-sizing:border-box; border:2px dashed; border-radius:4px; pointer-events:none; }\n /* Top-right: the group\'s marker sits on the first member\'s top-left corner. */\n .an-gout .an-gchip { left:auto; right:-10px; color:#fff; border:1.5px solid rgba(255,255,255,.9); line-height:15px; }\n .an-gout.an-flash { animation: an-gflash 1.2s ease-out; }\n @keyframes an-gflash { 0%, 35% { background: var(--an-gfill); box-shadow:0 0 0 5px var(--an-gfill); }\n 100% { background:transparent; box-shadow:0 0 0 0 transparent; } }\n #__an_groupbar { position:fixed; bottom:72px; left:50%; transform:translateX(-50%); z-index:2147483300;\n display:none; align-items:center; gap:8px; max-width:calc(100vw - 24px); white-space:nowrap;\n background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:6px 6px 6px 16px;\n border-radius:24px; box-shadow: var(--an-shadow-md); pointer-events:auto; }\n #__an_groupbar.an-show { display:flex; }\n #__an_groupbar .an-gcount { margin-right:4px; }\n #__an_groupbar .an-primary { background:#f2f2f6; color:#17171f; border-radius:18px; padding:6px 13px; }\n #__an_groupbar .an-ghost { border-color:rgba(255,255,255,.24); color:#c9c9d3; border-radius:18px; padding:6px 12px; }\n #__an_groupbar .an-ghost:hover { color:#fff; background:rgba(255,255,255,.08); }\n .an-erow.an-mitem { align-items:center; flex-wrap:nowrap; }\n .an-mrow { flex:1; min-width:0; display:flex; align-items:center; gap:6px; margin:-2px -4px; padding:2px 4px;\n border:0; border-radius:6px; background:transparent; color: var(--an-fg); font:inherit; text-align:left; cursor:pointer; }\n .an-mrow:hover { background: var(--an-surface-2); }\n .an-mrow[aria-disabled="true"] { cursor:default; color: var(--an-muted); background:transparent; }\n .an-mnum { flex:none; width:16px; height:16px; border-radius:50%; color:#fff; font:700 9.5px/16px var(--an-font); text-align:center; }\n .an-mlabel { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .an-mmiss { flex:none; font-style:italic; }\n .an-mitem .an-editor { flex:none; margin-left:4px; }\n\n #__an_help { position:fixed; bottom:80px; z-index:2147483300;\n background: var(--an-surface); color: var(--an-fg); border:1px solid var(--an-border);\n border-radius:16px; padding:16px 18px; box-shadow: var(--an-shadow-lg);\n font-family: var(--an-font); display:none; min-width:230px;\n animation: an-pop .18s cubic-bezier(.34,1.4,.64,1); }\n #__an_help.an-right { right:80px; }\n #__an_help.an-left { left:80px; }\n #__an_help.an-show { display:block; }\n #__an_help h3 { margin:0 0 10px; font:700 13px var(--an-font); }\n #__an_help .an-krow { display:flex; align-items:center; justify-content:space-between;\n gap:18px; font-size:12.5px; color: var(--an-muted); padding:3.5px 0; }\n #__an_help kbd { font:600 11px var(--an-font); background: var(--an-surface-2);\n border:1px solid var(--an-border-strong); border-bottom-width:2px;\n border-radius:5px; padding:1px 6px; color: var(--an-fg); min-width:20px;\n text-align:center; display:inline-block; }\n\n @media (max-width: 640px) {\n .an-grip { width:36px; }\n #__an_settings { position:fixed; left:8px; right:8px; bottom:72px; width:auto; }\n #__an_panel { top:auto; height:72vh; border-radius:18px 18px 0 0;\n right:0; left:0; bottom:0; width:auto; max-width:none;\n transform: translateY(110%); }\n #__an_panel.an-open { transform: translateY(0); }\n #__an_root.an-popen #__an_bar { display:none; }\n #__an_compose { width: min(304px, calc(100vw - 16px)); }\n .an-btn[data-tip]:hover::after { display:none; }\n #__an_hint { font-size:11px; padding:7px 12px; }\n #__an_frozen { font-size:11px; padding:7px 12px; }\n #__an_groupbar { left:12px; right:12px; transform:none; flex-wrap:wrap; justify-content:center;\n white-space:normal; font-size:12px; padding:6px 10px; border-radius:18px; }\n #__an_groupbar.an-right { right:76px; }\n #__an_groupbar.an-left { left:76px; }\n #__an_bar { padding:6px; gap:4px; }\n .an-btn { width:36px; height:36px; }\n #__an_colorbtn { width:36px; height:36px; }\n #__an_panel .an-list { -webkit-overflow-scrolling: touch; }\n .an-ph { padding:14px 14px 10px; }\n #__an_foot .an-footrow { flex-wrap:wrap; }\n #__an_foot .an-fbtn { flex-basis:calc(50% - 4px); }\n }\n\n @media (hover: none) and (pointer: coarse) {\n .an-btn[data-tip]:hover::after { display:none; }\n .an-cact { opacity:1; }\n }\n @media (prefers-reduced-motion: reduce) {\n #__an_bar, #__an_panel, #__an_compose, #__an_namebox, #__an_sharebox,\n .an-toast, .an-pin { animation:none !important; transition:none !important; }\n .an-pulse { animation:none !important; }\n .an-gout.an-flash { animation:none; background: var(--an-gfill); }\n }\n /* Short windows: tighten the bar so it still fits on screen (it holds 13 controls with Pin active). */\n @media (max-height: 560px) {\n #__an_bar { padding:4px; gap:2px; }\n .an-btn, #__an_colorbtn { height:28px; }\n }\n /* A corner bar too tall for the window is anchored at its top by placeBar(). */\n ',S={grip:'<svg viewBox="0 0 18 8" fill="currentColor"><circle cx="3" cy="2" r="1.4"/><circle cx="9" cy="2" r="1.4"/><circle cx="15" cy="2" r="1.4"/><circle cx="3" cy="6" r="1.4"/><circle cx="9" cy="6" r="1.4"/><circle cx="15" cy="6" r="1.4"/></svg>',group:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="11" height="11" rx="2"/><rect x="10" y="10" width="11" height="11" rx="2"/></svg>',freeze:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="12" cy="12" r="9"/><path d="M10 9v6M14 9v6"/></svg>',cursor:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.5 18 2.2-7.3L20 11.5z"/></svg>',highlight:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 11l-6 6v3h3l6-6"/><path d="M22 3l-7 7-4-4 7-7z" transform="translate(-2 2)"/><path d="M12.5 6.5l5 5"/></svg>',rect:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3.5" y="5.5" width="17" height="13" rx="2"/></svg>',circle:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><ellipse cx="12" cy="12" rx="9" ry="7.5"/></svg>',pin:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21s7-6.3 7-11a7 7 0 1 0-14 0c0 4.7 7 11 7 11z"/><circle cx="12" cy="10" r="2.4"/></svg>',pen:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c2-1 3.5-2.5 5-5 1.5 2 3 2 4 1s1.5-3 3-3 2 1 3 1"/><path d="M15.5 4.5l4 4L9 19l-5 1 1-5z"/></svg>',list:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M8 6h12M8 12h12M8 18h12M3.5 6h.01M3.5 12h.01M3.5 18h.01"/></svg>',bubble:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M4 4h16a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H9l-5 4v-4H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z"/></svg>',hide:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20C5 20 1 12 1 12a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/><path d="M1 1l22 22"/></svg>',settings:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"><path d="M9.09 4.98L9.20 4.94L9.71 2.27L14.29 2.27L14.80 4.94L14.91 4.98L15.01 5.02L17.26 3.50L20.50 6.74L18.98 8.99L19.02 9.09L19.06 9.20L21.73 9.71L21.73 14.29L19.06 14.80L19.02 14.91L18.98 15.01L20.50 17.26L17.26 20.50L15.01 18.98L14.91 19.02L14.80 19.06L14.29 21.73L9.71 21.73L9.20 19.06L9.09 19.02L8.99 18.98L6.74 20.50L3.50 17.26L5.02 15.01L4.98 14.91L4.94 14.80L2.27 14.29L2.27 9.71L4.94 9.20L4.98 9.09L5.02 8.99L3.50 6.74L6.74 3.50L8.99 5.02Z"/><circle cx="12" cy="12" r="3"/></svg>',check:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 13l4 4L19 7"/></svg>',link:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>',trash:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2m3 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/></svg>',reply:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 17l-5-5 5-5"/><path d="M20 18v-2a4 4 0 0 0-4-4H4"/></svg>',edit:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5z"/></svg>',search:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.35-4.35"/></svg>',alert:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 8v4M12 16h.01"/></svg>',info:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 16v-4M12 8h.01"/></svg>',download:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12M7 11l5 5 5-5"/><path d="M5 21h14"/></svg>',upload:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21V9M7 13l5-5 5 5"/><path d="M5 3h14"/></svg>',share:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="M8.6 13.5l6.8 4M15.4 6.5l-6.8 4"/></svg>',copy:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',mail:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="4.5" width="19" height="15" rx="2"/><path d="M3 6l9 6 9-6"/></svg>',people:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>',more:'<svg viewBox="0 0 24 24" fill="currentColor"><circle cx="5" cy="12" r="1.8"/><circle cx="12" cy="12" r="1.8"/><circle cx="19" cy="12" r="1.8"/></svg>',back:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 18l-6-6 6-6"/></svg>'},Yt;function L(e,t){t=t||{},Yt||(Yt=s("div",{id:"__an_toasts"}),X().appendChild(Yt));var n=t.kind||"info",r={success:S.check,error:S.alert,info:S.info}[n],a=s("div",{class:"an-toast an-"+n},[s("span",{class:"an-ticon",html:r}),s("span",{text:e})]),i=!1,o=!1,l;function u(g){o||i||(g&&(i=!0,t.onExpire&&t.onExpire()),P(l),a.classList.add("an-out"),R(function(){a.remove()},220))}if(t.action){var p=s("button",{class:"an-taction",text:t.action});v(p,"click",function(){o||i||(o=!0,P(l),a.classList.add("an-out"),R(function(){a.remove()},220),t.onAction&&t.onAction())}),a.appendChild(p)}var f=t.duration||3800;for(l=R(function(){u(!0)},f),v(a,"mouseenter",function(){P(l)}),v(a,"mouseleave",function(){P(l),l=R(function(){u(!0)},1500)}),Yt.appendChild(a);Yt.children.length>3;)Yt.firstChild.remove();return{dismiss:function(){u(!1)}}}function Er(){for(var e=h.createTreeWalker(h.body,NodeFilter.SHOW_TEXT,{acceptNode:function(r){if(!r.nodeValue||Q(r.parentNode))return NodeFilter.FILTER_REJECT;var a=r.parentNode.nodeName;return a==="SCRIPT"||a==="STYLE"||a==="NOSCRIPT"?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),t=[],n;n=e.nextNode();)t.push(n);return t}function ju(e){var t=e.toString();if(!t.trim())return null;for(var n=48,r=Er(),a="",i=-1,o=0,l=0;l<r.length;l++){var u=r[l];u===e.startContainer&&(i=o+e.startOffset),a+=u.nodeValue,o+=u.nodeValue.length}if(i<0&&(i=a.indexOf(t),i<0))return{exact:t,prefix:"",suffix:""};var p=i+t.length;return{exact:t,prefix:a.slice(Math.max(0,i-n),i),suffix:a.slice(p,p+n)}}function zu(e,t){for(var n=Er().filter(function(w){return!t||!!w.nodeValue.trim()}),r="",a=[],i=0;i<n.length;i++)a.push({node:n[i],start:r.length}),r+=n[i].nodeValue;var o=(e.prefix||"")+e.exact+(e.suffix||""),l=r.indexOf(o),u;if(l>=0)u=l+(e.prefix||"").length;else if(l=r.indexOf((e.prefix||"")+e.exact),l>=0)u=l+(e.prefix||"").length;else{if(l=r.indexOf(e.exact),l<0)return null;u=l}var p=u+e.exact.length,f=Po(a,u),g=Po(a,p);if(!f||!g)return null;var y=h.createRange();return y.setStart(f.node,f.offset),y.setEnd(g.node,g.offset),y}function Po(e,t){for(var n=e.length-1;n>=0;n--)if(t>=e[n].start)return{node:e[n].node,offset:t-e[n].start};return null}var qt={};function Bu(e){var t=e.parentElement;if(!t||!t.isConnected||getComputedStyle(t).visibility!=="visible")return!1;for(var n=t;n;n=n.parentElement){var r=getComputedStyle(n);if(r.display==="none"||r.opacity==="0"||r.contentVisibility==="hidden")return!1}return!0}function No(e,t,n){Sr();var r=[];return Er().forEach(function(a){if(!(!e.intersectsNode(a)||!Bu(a))){var i=a===e.startContainer?e.startOffset:0,o=a===e.endContainer?e.endOffset:a.nodeValue.length;if(!(o<=i)){var l=h.createRange();l.setStart(a,i),l.setEnd(a,o),Array.prototype.forEach.call(l.getClientRects(),function(u){if(!(!u.width||!u.height)){var p=oe("rect",{class:"an-highlight","data-an":n,x:u.left+m.scrollX,y:u.top+m.scrollY,width:u.width,height:u.height,rx:2,fill:Xt(/^#[0-9a-f]{6}$/i.test(t)?t:"#f59e0b",.32)});p.style.pointerEvents="none",B.appendChild(p),r.push(p)}})}}}),r.length&&(qt[n]=r),r}v(h,"click",function(e){if(!(!c.enabled||c.tool!=="cursor"||Q(e.target))&&!(e.target.closest&&e.target.closest("a,button,input,textarea,select,[role=button],[contenteditable=true]"))){var t=m.getSelection();t&&!t.isCollapsed||Object.keys(qt).some(function(n){if(n==="__temp")return!1;var r=qt[n].some(function(a){var i=a.getBoundingClientRect();return e.clientX>=i.left&&e.clientX<=i.right&&e.clientY>=i.top&&e.clientY<=i.bottom});return r&&ye(n,!0),r})}});function Xt(e,t){var n=e.replace("#",""),r=parseInt(n.slice(0,2),16),a=parseInt(n.slice(2,4),16),i=parseInt(n.slice(4,6),16);return"rgba("+r+","+a+","+i+","+t+")"}var B,W;function Sr(){if(X(),B){B.isConnected||ce.appendChild(B),W.isConnected||ce.appendChild(W);return}B=oe("svg",{id:"__an_overlay"}),X().appendChild(B),W=s("div",{id:"__an_pins"}),W.style.cssText="position:absolute;top:0;left:0;z-index:2147483100;pointer-events:none;",X().appendChild(W),Ia()}function Ia(){var e=Math.max(h.documentElement.scrollWidth,m.innerWidth),t=Math.max(h.documentElement.scrollHeight,m.innerHeight);B.setAttribute("width",e),B.setAttribute("height",t),B.style.width=e+"px",B.style.height=t+"px"}function he(e){var t=gt(e);return{x:t.left+m.scrollX,y:t.top+m.scrollY,w:t.width,h:t.height}}function gt(e){var t=e.getBoundingClientRect(),n=e.ownerDocument,r=n&&n!==h?Xa(n):{x:0,y:0};return{left:t.left+r.x,top:t.top+r.y,width:t.width,height:t.height,right:t.right+r.x,bottom:t.bottom+r.y}}function La(){if(qt={},B)for(;B.firstChild;)B.removeChild(B.firstChild);W&&(W.innerHTML="")}var Vt={};function Gt(e,t,n){Vt[e.id]={x:t.x,y:t.y,w:t.w,h:t.h,hidden:!!n}}function Do(e,t){return!e||Math.abs(e.x-t.x)>.5||Math.abs(e.y-t.y)>.5||Math.abs(e.w-t.w)>.5||Math.abs(e.h-t.h)>.5}function Fu(){for(var e=0;e<c.comments.length;e++){var t=c.comments[e];if(!(t.resolved&&!Tr())){if(t.type==="group"&&t.geom&&t.geom.selectors){for(var n=0;n<t.geom.selectors.length;n++){var r=ht(t,n),a=Vt[t.id+":"+n];if(!r){if(a)return!0;continue}if(a&&a.hidden){if(xt(r))return!0;continue}if(Do(a,he(r)))return!0}continue}if(!(t.type==="highlight"||!t.geom||!t.geom.selector)){var i=Ht(t),o=!!Vt[t.id];if(!i){if(o)return!0;continue}var l=Vt[t.id];if(l&&l.hidden){if(xt(i))return!0;continue}if(Do(l,he(i)))return!0}}}return!1}var On=[],Ar=[],mt=null,Oa={capture:!0,passive:!0};rt.push(function(){jo(function(){return!1})});function jo(e){Ar=Ar.filter(function(t){return e(t)?!0:(t.removeEventListener("scroll",mt,Oa),!1)})}function Hu(){if(!(!Ae||!c.enabled)){On=On.filter(function(t){return et(t.host)}),jo(function(t){return et(t.host)});var e=[];c.comments.forEach(function(t){if(!(t.resolved&&!Tr())){var n=t.type==="group"&&t.geom&&t.geom.selectors?t.geom.selectors:t.type!=="highlight"&&t.geom&&t.geom.selector?[t.geom.selector]:[];n.forEach(function(r){Cn(r).length>1&&Dt(r,e)})}}),e.forEach(function(t){mt&&Ar.indexOf(t)<0&&(t.addEventListener("scroll",mt,Oa),Ar.push(t)),!(On.indexOf(t)>=0)&&(Ae.observe(t,si()),On.push(t))})}}var ge=null,Ma={};function Uu(){if(ge){for(var e={},t=0;t<c.comments.length;t++){var n=c.comments[t];if(n.type==="group"&&n.geom&&n.geom.selectors){for(var r=0;r<n.geom.selectors.length;r++){var a=ht(n,r);a&&(e[n.id+":"+r]=a)}continue}if(!(!n.geom||!n.geom.selector||n.type==="highlight")){var i=Ht(n);i&&(e[n.id]=i)}}var o=new Set(Object.keys(Ma).map(function(u){return Ma[u]})),l=new Set(Object.keys(e).map(function(u){return e[u]}));o.forEach(function(u){!l.has(u)&&u!==$e&&!hd(u)&&ge.unobserve(u)}),l.forEach(function(u){o.has(u)||ge.observe(u)}),Ma=e}}function Tr(){return c.filter!=="open"}function vt(e,t,n,r){e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("aria-label",(r||"Annotation")+" comment #"+n+": "+(t.text||"no text").slice(0,120)),v(e,"keydown",function(a){(a.key==="Enter"||a.key===" "||a.key==="Spacebar")&&(a.preventDefault(),a.stopPropagation(),ye(t.id,!0))})}function Yu(e,t){if(!t)return 0;for(var n=0,r=0;(r=e.indexOf(t,r))>=0;){if(n++,n>1)return n;r+=1}return n}function Ir(e,t){var n=Er(),r="";t&&(n=n.filter(function(i){return!!i.nodeValue.trim()}));for(var a=0;a<n.length;a++)r+=n[a].nodeValue;return Yu(r,e)}function qu(e){var t=(e.prefix||"")+e.exact+(e.suffix||""),n=Ir(t);if(n===1)return{status:"ok"};if(n===0&&Ir(t,!0)===1)return{status:"ok",legacy:!0};var r=Ir(e.exact);return r===1?{status:"ok"}:r===0&&Ir(e.exact,!0)===1?{status:"ok",legacy:!0}:{status:r===0?"lost":"ambiguous"}}function Xu(e,t){var n=c.comments.indexOf(e)+1,r=s("div",{class:"an-unanchored-pill",title:"The quoted text for comment #"+n+" can\u2019t be found (or appears multiple times), so it isn\u2019t highlighted. Open the comment for details."},[s("span",{html:S.alert}),s("span",{text:"Moved or duplicated \u2014 #"+n})]);r.style.top=16+t*34+m.scrollY+"px",r.style.left="16px",r.style.pointerEvents="auto",v(r,"click",function(a){a.stopPropagation(),ye(e.id,!0)}),vt(r,e,n,"Unanchored note"),W.appendChild(r)}function re(){if(!(O||!We||ae||Z)){if(Sr(),!c.enabled){La(),Fn();return}Nn(),La(),Vt={},Ia();var e=0,t=0;c.comments.forEach(function(n){if(!(n.resolved&&!Tr()))if(n.type==="highlight"&&n.anchor){var r=qu(n.anchor),a=r.status;if(a!=="ok"){n.__unanchored=a,Xu(n,e++);return}n.__unanchored=!1;var i=zu(n.anchor,r.legacy);if(i){var o=No(i,n.color,n.id);o.forEach(function(l){v(l,"click",function(u){u.stopPropagation(),ye(n.id,!0)}),vt(l,n,c.comments.indexOf(n)+1,"Highlight"),n.id===c.activeId&&l.classList.add("an-active")})}}else n.geom&&(n.type==="shape"||n.type==="pen")?(Gu(n,t),n.__anchorMissing&&t++):n.type==="pin"&&n.geom?(Ku(n,t),n.__anchorMissing&&t++):n.type==="block"&&n.geom?Vu(n):n.type==="group"&&n.geom&&(Wu(n,t),n.__anchorMissing&&t++)}),Uu(),Hu(),Fn(),V.length&&Qt()}}function xt(e){if(!e||!et(e)||e.checkVisibility&&!e.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}))return!1;var t=e.getBoundingClientRect(),n=e.ownerDocument.defaultView||m;return t.width>0&&t.height>0&&n.getComputedStyle(e).visibility!=="hidden"&&Zo(e)}function Vu(e){var t=e.geom.selector?Ht(e):null;if(t){var n=he(t);if(!xt(t)){Gt(e,n,!0);return}Gt(e,n);var r=c.comments.indexOf(e)+1,a=s("div",{class:"an-block-tab"+(e.id===c.activeId?" an-active":"")},[s("span",{html:S.bubble}),s("span",{text:String(r)})]);a.style.background=e.color;var i=Math.max(h.documentElement.scrollWidth,m.innerWidth),o=n.x+n.w+14;o>i-40&&(o=n.x+n.w-30),a.style.left=o+"px",a.style.top=n.y+2+"px",a.title=e.text||"",v(a,"click",function(l){l.stopPropagation(),ye(e.id,!0)}),vt(a,e,r,"Section"),W.appendChild(a)}}function Lr(e){return e&&e.vw&&Math.abs(e.vw-m.innerWidth)>200}function Gu(e,t){var n=e.geom.selector?Ht(e):null;if(!n){e.__anchorMissing=!0,Ra(e,t);return}e.__anchorMissing=!1;var r=he(n);if(!xt(n)){Gt(e,r,!0);return}Gt(e,r);var a=e.geom,i;if(a.kind==="rect")i=oe("rect",{x:r.x+a.x*r.w,y:r.y+a.y*r.h,width:a.w*r.w,height:a.h*r.h,rx:6,fill:Xt(e.color,.08),stroke:e.color,"stroke-width":2.5,class:"an-hit"});else if(a.kind==="circle")i=oe("ellipse",{cx:r.x+(a.x+a.w/2)*r.w,cy:r.y+(a.y+a.h/2)*r.h,rx:Math.abs(a.w/2)*r.w,ry:Math.abs(a.h/2)*r.h,fill:Xt(e.color,.07),stroke:e.color,"stroke-width":2.5,class:"an-hit"});else if(a.kind==="pen"){var o=a.points.map(function(M,Le){return(Le?"L":"M")+(r.x+M[0]*r.w).toFixed(1)+" "+(r.y+M[1]*r.h).toFixed(1)}).join(" ");i=oe("path",{d:o,fill:"none",stroke:e.color,"stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round",class:"an-hit"})}if(i){e.id===c.activeId&&i.setAttribute("stroke-width",4),i.style.cursor="pointer",v(i,"click",function(M){M.stopPropagation(),ye(e.id,!0)}),B.appendChild(i);var l=a.kind==="pen"?a.points[0][0]:a.x,u=a.kind==="pen"?a.points[0][1]:a.y,p=r.x+l*r.w,f=r.y+u*r.h,g=c.comments.indexOf(e)+1,y=oe("g",{}),w=Lr(a)?13:11,b=Lr(a)?"#f59e0b":e.color,T=oe("circle",{cx:p,cy:f,r:w,fill:b,stroke:"#fff","stroke-width":2}),C=oe("text",{x:p,y:f+4,"text-anchor":"middle",fill:"#fff","font-size":"11","font-weight":"700","font-family":"Inter, sans-serif"});if(C.textContent=Lr(a)?"\u26A0":g,Lr(a)){var A=oe("title");A.textContent="Drawn at "+a.vw+"px wide \u2014 positions may differ on this viewport",y.appendChild(A)}y.appendChild(T),y.appendChild(C),y.style.cursor="pointer",y.style.pointerEvents="all",v(y,"click",function(M){M.stopPropagation(),ye(e.id,!0)}),vt(y,e,g,"Shape"),B.appendChild(y)}}function Ra(e,t){var n=c.comments.indexOf(e)+1,r=13,a=40+t*36,i=40+m.scrollY,o=oe("g",{}),l=oe("circle",{cx:a,cy:i,r:r,fill:"#f59e0b",stroke:"#fff","stroke-width":2,class:"an-badge-circle"}),u=oe("title");u.textContent="The element this comment points to no longer exists \u2014 it is not drawn in place.",l.setAttribute("title","Anchor element missing");var p=oe("text",{x:a,y:i+4,"text-anchor":"middle",fill:"#fff","font-size":"11","font-weight":"700","font-family":"Inter, sans-serif"});p.textContent=n,o.appendChild(u),o.appendChild(l),o.appendChild(p),o.style.cursor="pointer",o.style.pointerEvents="all",v(o,"click",function(f){f.stopPropagation(),ye(e.id,!0)}),vt(o,e,n,"Annotation (anchor missing)"),B.appendChild(o)}function Ku(e,t){var n=e.geom.selector?Ht(e):null;if(!n&&e.geom.selector!=="body"){e.__anchorMissing=!0,Ra(e,t);return}n||(n=h.body),e.__anchorMissing=!1;var r=he(n);if(!xt(n)){Gt(e,r,!0);return}Gt(e,r);var a=c.comments.indexOf(e)+1,i=s("div",{class:"an-pin"+(e.id===c.activeId?" an-active":""),title:e.text||""},[s("span",{text:String(a)})]);i.style.background=e.color,i.style.left=r.x+e.geom.x*r.w+"px",i.style.top=r.y+e.geom.y*r.h+"px",i.style.pointerEvents="auto",v(i,"click",function(o){o.stopPropagation(),ye(e.id,!0)}),vt(i,e,a,"Pin"),W.appendChild(i)}var Kt=null;function Wu(e,t){var n=e.geom.selectors.map(function(o,l){return ht(e,l)}),r=null;if(n.forEach(function(o,l){if(o){var u=he(o),p=xt(o);Vt[e.id+":"+l]={x:u.x,y:u.y,w:u.w,h:u.h,hidden:!p},!r&&p&&(r=u)}}),!n.some(Boolean)){e.__anchorMissing=!0,Ra(e,t);return}if(e.__anchorMissing=!1,!!r){e.id===c.activeId&&zo(e,!1);var a=c.comments.indexOf(e)+1,i=s("div",{class:"an-pin an-group"+(e.id===c.activeId?" an-active":""),title:e.text||""},[s("span",{text:String(a)})]);i.style.background=e.color,i.style.left=r.x+"px",i.style.top=r.y+"px",i.style.pointerEvents="auto",v(i,"click",function(o){o.stopPropagation(),ye(e.id,!0)}),v(i,"mouseenter",function(){Or(e,!0)}),v(i,"mouseleave",function(){Or(e,!1)}),vt(i,e,a,"Group"),W.appendChild(i)}}function zo(e,t){!e.geom||!e.geom.selectors||e.geom.selectors.forEach(function(n,r){var a=ht(e,r);if(xt(a)){var i=he(a),o=s("span",{class:"an-gchip",text:String(r+1)});o.style.background=e.color;var l=s("div",{class:"an-gout"+(t?" an-gprev":""),"data-gid":e.id,"data-member":String(r+1),"aria-hidden":"true"},[o]);l.style.cssText="left:"+i.x+"px;top:"+i.y+"px;width:"+i.w+"px;height:"+i.h+"px;border-color:"+e.color+";--an-gfill:"+Xt(e.color,.22),Kt&&Kt.id===e.id&&Kt.member===r&&l.classList.add("an-flash"),W.insertBefore(l,W.firstChild)}})}function Or(e,t){!W||!c.enabled||(Array.prototype.forEach.call(W.querySelectorAll(".an-gprev"),function(n){n.remove()}),t&&e.id!==c.activeId&&e.type==="group"&&!(e.resolved&&!Tr())&&zo(e,!0))}function $u(e,t){var n=ht(e,t);if(n){n.scrollIntoView({block:"center"});var r=Kt={id:e.id,member:t};R(function(){Kt===r&&(Kt=null,W&&Array.prototype.forEach.call(W.querySelectorAll(".an-gout.an-flash"),function(a){a.classList.remove("an-flash")}))},1200),c.activeId=e.id,re(),U()}}var H,Z=null,Bo=0;function Fo(){H||(H=s("div",{id:"__an_compose"}),X().appendChild(H),v(h,"pointerdown",Ho))}function Ho(e){if(!(!H||performance.now()-Bo<120)){var t=h.getElementById("__an_namewrap");if(!(t&&t.contains(e.target))){for(var n=e.target;n&&n.nodeType===1;n=n.parentNode){var r=n.getAttribute("data-action");if(n.classList.contains("an-grip")||r==="freeze"||r==="group-toggle"||n.id==="__an_groupbar")return}H.classList.contains("an-show")&&!H.contains(e.target)&&Wt()}}}function Mn(e,t,n){yt(),Fo(),Bo=performance.now(),Z=n;var r={highlight:"Highlight",shape:n.geom&&n.geom.kind==="circle"?"Circle":"Rectangle",pin:"Pin",pen:"Sketch",block:"Section",group:"Group"}[n.type]||"Note";if(H.innerHTML="",H.appendChild(s("div",{class:"an-ctitle"},[Ju(n.color),h.createTextNode(r+" comment"),c.author?(function(){var A=s("span",{style:"margin-left:auto"});return A.appendChild(pn(c.author,20)),A})():null])),n.anchor&&n.anchor.exact&&H.appendChild(s("div",{class:"an-cquote",text:n.anchor.exact})),n.target&&n.target.label&&H.appendChild(s("div",{class:"an-con",title:n.target.label,text:"On: "+n.target.label})),n.targets){var a=n.targets.map(function(A,M){return A?A.label:n.geom.selectors[M]}).join(", ");H.appendChild(s("div",{class:"an-con",title:a,text:"On "+n.targets.length+" elements: "+a}))}var i=s("textarea",{class:"an-ta",rows:"3",placeholder:"Write your review\u2026"});H.appendChild(i),Ni(i);var o=s("button",{class:"an-primary",text:"Comment"}),l=s("button",{class:"an-ghost",text:"Cancel"}),u=navigator.userAgentData&&navigator.userAgentData.platform||navigator.platform||navigator.userAgent||"",p=/Mac|iPhone|iPad/i.test(u);H.appendChild(s("div",{class:"an-cfoot"},[s("span",{class:"an-ckbd",text:(p?"\u2318":"Ctrl")+"\u21B5 to post"}),l,o])),v(o,"click",function(){if(!c.author&&cr()){o.disabled=!0,Qe().then(null,function(){}).then(function(){o.disabled=!1,c.author||!cr()?o.click():Mr(function(){o.click()})});return}if(!c.author){Ji(function(){o.click()});return}n.author=c.author,n.text=i.value.trim(),Zu(n)}),v(l,"click",Wt),v(i,"keydown",function(A){(A.metaKey||A.ctrlKey)&&A.key==="Enter"&&o.click(),A.key==="Escape"&&Wt(),A.stopPropagation()});var f=m.innerWidth,g=m.innerHeight,y=Math.min(304,f-16),w=210,b=f<=640,T,C;b?(T=8,C=Math.max(8,Math.min(t,g*.45))):(T=Math.min(Math.max(8,e),f-y-8),C=Math.min(Math.max(8,t),g-w-8)),H.style.left=T+m.scrollX+"px",H.style.top=C+m.scrollY+"px",H.classList.add("an-show"),R(function(){i.focus()},30)}function Mr(e){if(h.getElementById("__an_namewrap"))return;var t=s("div",{id:"__an_namewrap"}),n=s("input",{placeholder:"e.g. Jane Doe",value:c.author||""}),r=s("button",{text:"Start reviewing"}),a=[s("h3",{class:"an-nt",text:"Please provide your name"}),s("p",{class:"an-nd",text:"Your name appears on every comment so collaborators know who said what. Saved on this device \u2014 you won't be asked again."})];c.note&&a.push(s("div",{class:"an-nnote"},[s("span",{class:"an-nlbl",text:"What to review"}),s("span",{text:c.note})])),a.push(n,r),E&&a.push($i());var i=s("div",{id:"__an_namebox"},a);t.appendChild(i),X().appendChild(t);var o=Ta(t);function l(){fr=!0,c.author=n.value.trim()||"Anonymous",D.set("an-author",c.author),o(),t.remove(),ii(),E&&!d.token&&no(),e&&e()}v(r,"click",l),v(n,"keydown",function(u){u.key==="Enter"&&l()}),R(function(){n.focus()},40)}function Ju(e){var t=s("span");return t.style.cssText="width:11px;height:11px;border-radius:50%;display:inline-block;background:"+e,t}var Pa=[];function Qu(e,t){Pa=No(e,t,"__temp")}function Na(){Pa.forEach(function(e){e.remove()}),delete qt.__temp,Pa=[]}function Wt(){Z=null,Na(),H&&H.classList.remove("an-show"),Ge(),Ye("cursor")}function Uo(){Z=null,Na(),H&&H.classList.remove("an-show")}function Zu(e){if(!(O||Z!==e)){var t=Dl(e);t&&(H.classList.remove("an-show"),Na(),c.comments.push(t),Z=null,c.activeId=t.id,Ge(),re(),U(),rn(),Ye("cursor"),Z=null)}}var Rn=!1;v(h,"pointerup",function(e){if(c.enabled&&!ae){if(Rn){Rn=!1;return}c.tool!=="pin"&&(H&&H.classList.contains("an-show")||H&&H.contains(e.target)||e.target.closest&&(e.target.closest("#__an_bar")||e.target.closest("#__an_panel")||e.target.closest("#__an_toasts"))||R(function(){var t=m.getSelection();if(!(!t||t.isCollapsed)){var n=t.getRangeAt(0);if(!Q(n.commonAncestorContainer)){var r=ju(n);if(r){var a=n.getBoundingClientRect();Qu(n.cloneRange(),c.color),t.removeAllRanges();var i=n.commonAncestorContainer;i&&i.nodeType!==1&&(i=i.parentElement),Mn(a.left,a.bottom+6,{type:"highlight",color:c.color,anchor:r,target:Bt(i)})}}}},0))}});var ae=null;function Da(e){if(c.enabled&&!(e.button!==0&&e.pointerType==="mouse")&&!(e.target.closest&&(e.target.closest("#__an_bar")||e.target.closest("#__an_panel")||e.target.closest("#__an_compose")||e.target.closest("#__an_toasts")||e.target.closest("#__an_namewrap")||e.target.closest("#__an_hint")||e.target.closest("#__an_groupbar")))){var t=Nr(e.target);if(t)return Da(sd(e,ts(e.target,e.clientX,e.clientY)||t));var n=c.tool,r=Ut(e);if(n==="pin"&&(e.shiftKey||Rr)){var a=wr(r),i=a&&he(a);i&&(i.w<1||i.h<1)&&(a=null),a=a||ja(r),e.preventDefault();var o=h.activeElement;o&&o!==h.body&&Q(o)&&o.blur&&o.blur(),Z&&Uo(),a&&a!==(a.ownerDocument||h).body?nd(a):Qt();return}if(n==="pin"){if(Z&&Z.type==="group"){Uo(),Ge();return}var l=wr(r),u=l&&he(l);u&&(u.w<1||u.h<1)&&(l=null);var p=l||ja(r),f=he(p),g=(e.pageX-f.x)/f.w,y=(e.pageY-f.y)/f.h;Mn(e.clientX+6,e.clientY+6,{type:"pin",color:c.color,geom:{kind:"pin",selector:jt(p),x:Vo(g),y:Vo(y),vw:m.innerWidth,vh:m.innerHeight},target:l?Bt(l):null});return}if(n==="rect"||n==="circle"||n==="pen"){e.preventDefault(),Sr();var w=ja(r);ae={tool:n,anchorEl:w,box:he(w),startTarget:r,startX:e.pageX,startY:e.pageY,points:[[e.pageX,e.pageY]],node:null};var b=r.ownerDocument&&r.ownerDocument!==h?r:B;if(e.pointerId!=null&&b&&b.setPointerCapture)try{b.setPointerCapture(e.pointerId)}catch(T){}}}}function Yo(e){if(ae){e.preventDefault();var t=ae;if(t.node&&B.removeChild(t.node),t.tool==="rect"){var n=Math.min(t.startX,e.pageX),r=Math.min(t.startY,e.pageY);t.node=oe("rect",{x:n,y:r,width:Math.abs(e.pageX-t.startX),height:Math.abs(e.pageY-t.startY),rx:6,fill:Xt(c.color,.08),stroke:c.color,"stroke-width":2.5})}else if(t.tool==="circle"){var a=(t.startX+e.pageX)/2,i=(t.startY+e.pageY)/2;t.node=oe("ellipse",{cx:a,cy:i,rx:Math.abs(e.pageX-t.startX)/2,ry:Math.abs(e.pageY-t.startY)/2,fill:Xt(c.color,.07),stroke:c.color,"stroke-width":2.5})}else if(t.tool==="pen"){qo(t,e.pageX,e.pageY);var o=t.points.map(function(l,u){return(u?"L":"M")+l[0]+" "+l[1]}).join(" ");t.node=oe("path",{d:o,fill:"none",stroke:c.color,"stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round"})}B.appendChild(t.node)}}function qo(e,t,n){var r=e.points[e.points.length-1];(!r||Math.abs(r[0]-t)>.5||Math.abs(r[1]-n)>.5)&&e.points.push([t,n])}function Xo(e){if(!ae)return;var t=ae;ae=null,t.node&&B.removeChild(t.node);var n=t.box,r,a=null;function i(){try{m.getSelection&&m.getSelection().removeAllRanges()}catch(y){}}if(t.tool==="pen"){qo(t,e.pageX,e.pageY);var o=e.pageX-t.startX,l=e.pageY-t.startY;if(t.points.length<2||Math.sqrt(o*o+l*l)<6)return i(),Rn=!0,Ye("cursor");r={kind:"pen",selector:jt(t.anchorEl),points:t.points.map(function(y){return[(y[0]-n.x)/n.w,(y[1]-n.y)/n.h]}),vw:m.innerWidth,vh:m.innerHeight},a=Bt(wr(t.startTarget))}else{var u=Math.min(t.startX,e.pageX),p=Math.min(t.startY,e.pageY),f=Math.abs(e.pageX-t.startX),g=Math.abs(e.pageY-t.startY);if(f<6&&g<6)return i(),Rn=!0,Ye("cursor");r={kind:t.tool==="circle"?"circle":"rect",selector:jt(t.anchorEl),x:(u-n.x)/n.w,y:(p-n.y)/n.h,w:f/n.w,h:g/n.h,vw:m.innerWidth,vh:m.innerHeight},a=Bt(xu(u-m.scrollX,p-m.scrollY,f,g,t.anchorEl.ownerDocument)||t.anchorEl)}Mn(e.clientX+6,e.clientY+6,{type:t.tool==="pen"?"pen":"shape",color:c.color,geom:r,target:a})}var ed=/^(MAIN|ARTICLE|SECTION|ASIDE|HEADER|FOOTER|NAV)$/,td=/\b(container|wrap(?:per)?|content|layout|inner|page)\b/;function ja(e){for(var t=e&&e.ownerDocument&&e.ownerDocument.body||h.body,n=e;n&&n!==t;){if(Q(n)){n=Ln(n);continue}var r=!!n.id,a=ed.test(n.nodeName),i=n.classList&&td.test(n.className);if(r||a||i){var o=n.getBoundingClientRect();if(o.width>80&&o.height>40)return n}n=Ln(n)}return t}function Vo(e){return Math.max(0,Math.min(1,e))}v(h,"pointerdown",Da,!0),v(h,"pointermove",Yo,!0),v(h,"pointerup",Xo,!0);var ke=null,He=null,za=0,bt=null;function yt(){He=null,bt=null,ke&&ke.classList.remove("an-show")}function Go(e){(!ke||!ke.isConnected)&&(ke=s("div",{id:"__an_hover","aria-hidden":"true"},[s("span",{class:"an-hlabel"})]),X().appendChild(ke)),e!==He&&(He=e,ke.firstChild.textContent=Co(e,ko(e),yr(e)));var t=gt(e);ke.style.left=t.left+"px",ke.style.top=t.top+"px",ke.style.width=t.width+"px",ke.style.height=t.height+"px",ke.classList.toggle("an-below",t.top<28),ke.classList.add("an-show")}function Ko(e){if(!c.enabled||c.tool!=="pin"||e.pointerType==="touch"||Z||ae){He&&yt();return}var t=Nr(e.target);bt=t?ts(e.target,e.clientX,e.clientY)||t:Ut(e),!za&&(za=St(function(){za=0;var n=bt&&(bt.nodeName==="IFRAME"&&es(bt)?bt:wr(bt));n?Go(n):yt()}))}function Wo(e){e.relatedTarget||yt()}function $o(e){!c.enabled||c.tool!=="pin"||Q(Ut(e))||(e.preventDefault(),e.stopPropagation())}v(h,"pointermove",Ko,!0),v(h,"mouseout",Wo),v(h,"click",$o,!0);var V=[],Rr=!1,Ce=null,$t=null,Ba=null,Jt=null,Fa=0,Ha=-1;function Jo(e){Rr=e;var t=I&&I.querySelector('[data-action="group-toggle"]');t&&(t.setAttribute("aria-pressed",e?"true":"false"),t.classList.toggle("an-on",e))}function nd(e){var t=V.indexOf(e);t>=0?V.splice(t,1):V.length>=Fr?L("A comment can cover up to "+Fr+" elements.",{kind:"info"}):V.push(e),Qt()}function rd(){if(!Ce){Ce=s("div",{id:"__an_gsel","aria-hidden":"true"}),Ba=s("span",{class:"an-gcount","aria-live":"polite"}),Jt=s("button",{type:"button",class:"an-primary","data-action":"group-comment"});var e=s("button",{type:"button",class:"an-ghost","data-action":"group-clear",text:"Clear"});v(Jt,"click",function(t){t.stopPropagation(),Qo()}),v(e,"click",function(t){t.stopPropagation(),Ge()}),$t=s("div",{id:"__an_groupbar",class:Dn,role:"group","aria-label":"Selected elements"},[Ba,Jt,e])}Ce.isConnected||X().appendChild(Ce),$t.isConnected||X().appendChild($t)}function Qt(){if(V=V.filter(et),!(!Ce&&!V.length)){for(rd();Ce.children.length>V.length;)Ce.removeChild(Ce.lastChild);for(;Ce.children.length<V.length;)Ce.appendChild(s("div",{class:"an-gsel"},[s("span",{class:"an-gchip"})]));var e=V.map(gt);e.forEach(function(n,r){var a=Ce.children[r];a.style.left=n.left+"px",a.style.top=n.top+"px",a.style.width=n.width+"px",a.style.height=n.height+"px",a.firstChild.textContent=String(r+1)});var t=V.length;t!==Ha&&(Ha=t,Ba.textContent=t+(t===1?" element selected":" elements selected"),Jt.textContent="Comment on "+t+(t===1?" element":" elements"),Jt.disabled=t<2,Jt.title=t<2?"Pick at least 2 elements":""),$t.classList.toggle("an-show",t>0&&!(Z&&Z.type==="group"))}}function Ge(){V=[],Ha=-1,Jo(!1),Ce&&(Ce.innerHTML=""),$t&&$t.classList.remove("an-show")}function Qo(){if(V=V.filter(et),!c.enabled||V.length<2){Qt();return}var e=gt(V[V.length-1]);Mn(e.right+6,e.top+6,{type:"group",color:c.color,geom:{kind:"group",selectors:V.map(jt),vw:m.innerWidth,vh:m.innerHeight},targets:V.map(function(t){return Bt(t)||null})}),Qt()}function Pr(){!V.length||Fa||(Fa=St(function(){Fa=0,Qt()}))}v(h,"scroll",Pr,{passive:!0,capture:!0}),v(m,"resize",Pr);var ad=3,Te=[],Zt=[],Ze=[],Ua=0,Ya="__an_framestyle",id="body.an-drawing{cursor:crosshair!important;touch-action:none;user-select:none;-webkit-user-select:none}body.an-drawing ::selection{background:transparent}";rt.push(function(){gd()});function Pn(e){if(Ze.indexOf(e)>=0)return null;var t=null;try{t=e.contentDocument}catch(n){t=null}return t&&t.documentElement?t:(!O&&e.ownerDocument&&(Ne(e.ownerDocument,e,"load",rs),Ze.push(e)),null)}function qa(e){try{return e.defaultView&&e.defaultView.frameElement||null}catch(t){return null}}function Xa(e){for(var t=0,n=0,r=0;e&&e!==h&&r<8;r++){var a=qa(e);if(!a)break;var i=a.getBoundingClientRect();t+=i.left+a.clientLeft,n+=i.top+a.clientTop,e=a.ownerDocument}return{x:t,y:n}}function od(e){for(var t=0;e&&e!==h&&t<8;t++){var n=qa(e);if(!n||!n.isConnected||Pn(n)!==e)return!1;e=n.ownerDocument}return e===h}function et(e){return!!e&&e.isConnected&&od(e.ownerDocument)}function Zo(e){var t=e.ownerDocument;if(!t||t===h)return!0;for(var n=gt(e),r=0;t&&t!==h&&r<8;r++){var a=qa(t);if(!a)return!1;var i=gt(a),o=i.left+a.clientLeft,l=i.top+a.clientTop;if(n.right<=o||n.left>=o+a.clientWidth||n.bottom<=l||n.top>=l+a.clientHeight)return!1;t=a.ownerDocument}return!0}function Va(e){var t=e.currentTarget&&e.currentTarget.nodeType===9?e.currentTarget:e.target.ownerDocument,n=Xa(t),r=e.clientX+n.x,a=e.clientY+n.y;return{clientX:r,clientY:a,pageX:r+m.scrollX,pageY:a+m.scrollY,button:e.button,pointerType:e.pointerType,pointerId:e.pointerId,shiftKey:e.shiftKey,target:e.target,composedPath:function(){return e.composedPath?e.composedPath():[]},preventDefault:function(){e.preventDefault()},stopPropagation:function(){e.stopPropagation()}}}var Ie=[];function es(e){for(var t=0;t<Ie.length;t++)if(Ie[t].iframe===e)return Ie[t];return null}function Nr(e){for(var t=0;e&&t<Ie.length;t++)if(Ie[t].el===e)return Ie[t].iframe;return null}function sd(e,t){return{clientX:e.clientX,clientY:e.clientY,pageX:e.pageX,pageY:e.pageY,button:e.button,pointerType:e.pointerType,pointerId:e.pointerId,shiftKey:e.shiftKey,target:t,composedPath:function(){return[t]},preventDefault:function(){e.preventDefault()},stopPropagation:function(){e.stopPropagation()}}}function ts(e,t,n){for(var r=[],a=e,i=0;i<=Ie.length&&Nr(a);i++)a.style.pointerEvents="none",r.push(a),a=h.elementFromPoint(t,n);r.forEach(function(u){u.style.pointerEvents=""});for(var o=0;a&&a.shadowRoot&&a.shadowRoot.elementFromPoint&&o<32;o++){var l=a.shadowRoot.elementFromPoint(t,n);if(!l||l===a)break;a=l}return a&&!Nr(a)?a:null}function Nn(){var e=[];!O&&c.enabled&&Ga(c.tool)&&Ze.forEach(function(t){if(!(!t.isConnected||!et(t)||Q(t))){var n=gt(t);n.width>=1&&n.height>=1&&e.push({iframe:t,r:n})}}),Ie=Ie.filter(function(t){var n=e.some(function(r){return r.iframe===t.iframe});return!n&&t.el.parentNode&&t.el.parentNode.removeChild(t.el),n}),e.forEach(function(t){var n=es(t.iframe);n||(ns++,n={iframe:t.iframe,el:s("div",{id:"__an_frameshield-"+ns,class:"an-frameshield","aria-hidden":"true"})},Ie.push(n)),n.el.isConnected||X().appendChild(n.el);var r=n.el.style;r.left=t.r.left+"px",r.top=t.r.top+"px",r.width=t.r.width+"px",r.height=t.r.height+"px"})}var ns=0;rt.push(function(){Ie.forEach(function(e){e.el.remove()}),Ie=[]});function ld(e){Da(Va(e))}function ud(e){ae&&Yo(Va(e))}function dd(e){ae&&(Xo(Va(e)),Rn=!1)}function cd(){mt&&mt(),Pr(),He&&!Ua&&(Ua=St(function(){Ua=0,He&&(et(He)?Go(He):yt())}))}function rs(e){if(!O){var t=Ze.indexOf(e.currentTarget);t>=0&&Ze.splice(t,1),He&&!et(He)&&yt(),Dr(),Ft(),oi(),Pr()}}function Ne(e,t,n,r,a){for(var i=0;i<Zt.length;i++){var o=Zt[i];if(o.target===t&&o.name===n&&o.fn===r)return}t.addEventListener(n,r,a),Zt.push({owner:e,target:t,name:n,fn:r,options:a})}function as(e){Zt=Zt.filter(function(t){if(e(t))return!0;try{t.target.removeEventListener(t.name,t.fn,t.options)}catch(n){}return!1})}function Dr(){O||(pd(),is(h,1),Nn())}function is(e,t){var n;try{n=e.getElementsByTagName("iframe")}catch(o){return}for(var r=0;r<n.length;r++){var a=n[r];if(!Q(a)){Ne(e,a,"load",rs);var i=Pn(a);i&&(fd(a,i,t),t<ad&&is(i,t+1))}}}function fd(e,t,n){var r=t.defaultView;if(r){for(var a=null,i=0;i<Te.length&&!a;i++)Te[i].doc===t&&(a=Te[i]);a||(a={iframe:e,doc:t,win:r,depth:n,body:null},Te.push(a)),Ne(t,t,"pointerdown",ld,!0),Ne(t,t,"pointermove",ud,!0),Ne(t,t,"pointerup",dd,!0),Ne(t,t,"pointermove",Ko,!0),Ne(t,t,"mouseout",Wo),Ne(t,t,"click",$o,!0),Ne(t,t,"pointerdown",Ho),Ne(t,t,"keydown",us),Ne(t,r,"scroll",cd,Oa),os(a),ss(a)}}function pd(){var e=[h];Te=Te.slice().sort(function(t,n){return t.depth-n.depth}).filter(function(t){var n=t.iframe.isConnected&&e.indexOf(t.iframe.ownerDocument)>=0&&Pn(t.iframe)===t.doc;return n?e.push(t.doc):t.body&&ge&&ge.unobserve(t.body),n}),as(function(t){return e.indexOf(t.owner)>=0&&(t.target.nodeType!==1||t.target.isConnected)}),Ze=Ze.filter(function(t){return t.isConnected&&Zt.some(function(n){return n.target===t})})}function Ga(e){return e==="rect"||e==="circle"||e==="pen"||e==="pin"}function os(e){var t=e.doc,n=t.head||t.documentElement;if(n&&!t.getElementById(Ya)){var r=t.createElement("style");r.id=Ya,r.textContent=id;var a=Re&&(Re.nonce||Re.getAttribute("nonce"));a&&r.setAttribute("nonce",a),n.appendChild(r)}t.body&&t.body.classList.toggle("an-drawing",Ga(c.tool))}function ss(e){Ae&&c.enabled&&Ae.observe(e.doc.documentElement,si()),ge&&e.doc.body&&e.body!==e.doc.body&&(e.body&&ge.unobserve(e.body),e.body=e.doc.body,ge.observe(e.body))}function ls(e){e.ownerDocument!==h&&!Zo(e)&&e.scrollIntoView&&e.scrollIntoView({block:"center"})}function hd(e){for(var t=0;t<Te.length;t++)if(Te[t].body===e)return!0;return!1}function gd(){Te.forEach(function(e){try{e.doc.body&&e.doc.body.classList.remove("an-drawing");var t=e.doc.getElementById(Ya);t&&t.remove()}catch(n){}}),Te=[],Ze=[],as(function(){return!1})}var I,me,j,ve,en,xe,jr,tn,De,Ee,Ue,Dn=k.position==="bottom-left"?"an-left":"an-right";function md(){var e=s("style",{id:"__an_style",html:Du}),t=Re&&(Re.nonce||Re.getAttribute("nonce"));t&&e.setAttribute("nonce",t),h.head.appendChild(e),vd(),k.accent&&(X().style.setProperty("--an-btn-bg",k.accent),X().style.setProperty("--an-btn-fg","#fff"));var n=s("div",{id:"__an_root"});X().appendChild(n),I=s("div",{id:"__an_bar",class:Dn});var r=s("button",{class:"an-grip",type:"button","aria-label":"Move toolbar",title:"Drag to move \xB7 double-click to reset","aria-describedby":"__an_griphelp",html:S.grip});Ad(r),I.appendChild(r);var a=[["cursor","Browse","V"],["highlight","Highlight text","H"],["rect","Rectangle","R"],["circle","Circle","C"],["pen","Freehand","D"],["pin","Pin","P"]];a.forEach(function(_){var F=_[1]+" \xB7 "+_[2],Oe=s("button",{class:"an-btn","data-tool":_[0],"data-tip":F,title:F,"aria-label":_[1],html:S[_[0]]});if(v(Oe,"click",function(){Ye(_[0])}),I.appendChild(Oe),_[0]==="pin"){var Xe=s("button",{type:"button",class:"an-btn","data-action":"group-toggle","data-tip":"Select several \xB7 Shift+click",title:"Select several \xB7 Shift+click","aria-label":"Select several","aria-pressed":"false",html:S.group});v(Xe,"click",function(di){di.stopPropagation(),c.enabled&&c.tool==="pin"&&Jo(!Rr)}),I.appendChild(Xe)}}),I.appendChild(s("div",{class:"an-sep"}));var i=s("button",{id:"__an_colorbtn","data-tip":"Color",title:"Color","aria-label":"Color"}),o=s("span",{class:"an-swdot"});o.style.background=c.color,i.appendChild(o);var l=s("div",{id:"__an_colorpop"});Kr.forEach(function(_){var F=s("div",{class:"an-sw"+(_.hex===c.color?" an-on":""),"data-c":_.hex,title:_.name});F.style.background=_.hex,v(F,"click",function(Oe){Oe.stopPropagation(),c.color=_.hex,D.set("an-color",_.hex),o.style.background=_.hex,l.querySelectorAll(".an-sw").forEach(function(Xe){Xe.classList.toggle("an-on",Xe.getAttribute("data-c")===_.hex)}),l.classList.remove("an-show")}),l.appendChild(F)}),i.appendChild(l),v(i,"click",function(_){_.stopPropagation(),l.classList.toggle("an-show")}),v(h,"click",function(){l.classList.remove("an-show")}),I.appendChild(i);var u=s("button",{class:"an-btn","data-action":"freeze","data-tip":"Freeze motion \xB7 F",title:"Freeze motion \xB7 F","aria-label":"Freeze motion","aria-pressed":"false",html:S.freeze});v(u,"click",function(){zn(!G)}),I.appendChild(u),I.appendChild(s("div",{class:"an-sep"}));var p=s("button",{class:"an-btn","data-tip":"Comments \xB7 A",title:"Comments \xB7 A","aria-label":"Comments",html:S.list});en=s("span",{class:"an-count"}),en.style.display="none",p.appendChild(en),v(p,"click",Qa),I.appendChild(p);{var f=s("div",{class:"an-setwrap"});un=s("button",{class:"an-btn",type:"button","data-action":"settings","data-tip":"Settings",title:"Settings","aria-label":"Settings","aria-haspopup":"dialog","aria-expanded":"false",html:S.settings}),ie=s("div",{id:"__an_settings",role:"dialog","aria-labelledby":"__an_set_t"}),v(un,"click",function(_){_.stopPropagation(),Ur()?ui(!1):Xs()}),v(ie,"click",function(_){_.stopPropagation()}),v(ie,"keydown",function(_){_.key==="Escape"&&(_.stopPropagation(),ui(!0))}),v(h,"click",function(){ui(!1)}),f.appendChild(un),f.appendChild(ie),I.appendChild(f)}var g=s("button",{class:"an-btn","data-tip":"Hide review tools \xB7 O",title:"Hide review tools \xB7 O","aria-label":"Hide review tools",html:S.hide});v(g,"click",function(){je(!1)}),I.appendChild(g),n.appendChild(I),n.appendChild(s("span",{id:"__an_griphelp",class:"an-sr",text:"Arrow keys move the toolbar; Shift moves it further; Home puts it back."})),tn=s("div",{id:"__an_live",class:"an-sr",role:"status","aria-live":"polite"}),n.appendChild(tn),de=Sd(),tt(!0),De=s("button",{id:"__an_launch",class:Dn,html:S.bubble+"<span>Review</span>"}),ot=s("span",{class:"an-count an-mcount"}),ot.style.display="none",De.appendChild(ot),v(De,"click",function(){!c.author&&!cr()?Ji(function(){je(!0)}):je(!0)}),X().appendChild(De),xe=s("div",{id:"__an_hint"}),n.appendChild(xe),jr=s("div",{id:"__an_frozen"},[h.createTextNode("Motion paused \xB7 press "),s("kbd",{text:"F"}),h.createTextNode(" to resume")]),n.appendChild(jr),Ee=s("div",{id:"__an_help",class:Dn},[s("h3",{text:"Keyboard shortcuts"})]),[["V","Browse"],["H","Highlight"],["R","Rectangle"],["C","Circle"],["D","Freehand"],["P","Pin"],["A","Comments panel"],["M","Copy for AI agent"],["F","Freeze motion"],["O","Show / hide tools"],["Esc","Cancel"],["?","This card"]].forEach(function(_){Ee.appendChild(s("div",{class:"an-krow"},[s("span",{text:_[1]}),s("kbd",{text:_[0]})]))}),n.appendChild(Ee),me=s("div",{id:"__an_panel"}),nr=s("h2",{text:"Comments"}),sa=s("span",{class:"an-pcount",id:"__an_sub",text:"0"}),tr=s("span",{class:"an-pcount",id:"__an_peoplecount",text:"0"}),bn=s("button",{class:"an-pback","data-action":"people-back","aria-label":"Back to comments",html:S.back+"<span>Comments</span>",onclick:function(_){_.stopPropagation(),Sl()}}),xn=s("button",{class:"an-hbtn","data-action":"people",html:S.people,title:"People","aria-label":"People",onclick:function(_){_.stopPropagation(),El()}}),la=s("button",{class:"an-hbtn",html:S.upload,title:"Import comments from a JSON file","aria-label":"Import comments from a JSON file",onclick:function(_){_.stopPropagation(),ai()}}),ua=s("button",{class:"an-hbtn",html:S.download,title:"Download comments as JSON","aria-label":"Download comments as JSON",onclick:function(_){_.stopPropagation(),Un()}});var y=s("div",{class:"an-ph"},[bn,nr,sa,tr,s("span",{class:"an-hgap"}),xn,la,ua,s("button",{class:"an-x",html:"×","aria-label":"Close comments panel",onclick:Bn})]),w=s("div",{class:"an-search"},[(function(){var _=s("span",{html:S.search});return _.firstChild})()]),b=s("input",{placeholder:"Search comments\u2026"});v(b,"input",function(){c.query=b.value.toLowerCase(),U()}),w.appendChild(b);var T=s("div",{class:"an-filters"});[["open","Open"],["resolved","Resolved"],["all","All"]].concat(E?[["mentions","Mentions"]]:[]).forEach(function(_){var F=s("span",{class:"an-chip"+(c.filter===_[0]?" an-on":""),"data-f":_[0],text:_[1]});_[0]==="mentions"&&(aa=F),v(F,"click",function(){c.filter=_[0],T.querySelectorAll(".an-chip").forEach(function(Oe){Oe.classList.toggle("an-on",Oe.getAttribute("data-f")===_[0])}),re(),U()}),T.appendChild(F)}),ia=T,oa();var C=s("div",{class:"an-toolsrow"},[w,T]);da=C,Ue=s("div",{id:"__an_note"}),j=s("div",{class:"an-list",id:"__an_list"}),ve=s("div",{id:"__an_foot"}),me.appendChild(y),me.appendChild(C),me.appendChild(Ue),me.appendChild(j),me.appendChild(ve),n.appendChild(me),Mt(),v(h,"keydown",us);var A;if(v(m,"resize",function(){tt(),Ft(),P(A),A=R(re,150)}),v(m,"storage",function(_){_.key===Qn?ei():E&&_.key===ha&&ue()}),E&&(v(h,"visibilitychange",function(){h.hidden||dt()}),v(m,"online",function(){d.failures=0,ne(0),dt()})),h.fonts&&h.fonts.ready&&h.fonts.ready.then(function(){R(re,60)}),v(m,"load",function(){R(re,120)}),typeof ResizeObserver!="undefined"){var _=function(){Nn(),!(!B||ae||Z)&&(Ia(),(Fu()||Object.keys(qt).length)&&re())},M=0,Le=0,Yr=new ResizeObserver(function(){M||(M=St(function(){M=0,_()}))});ge=Yr,$e=h.body,Yr.observe($e),mt=function(){Le||(Le=St(function(){Le=0,_()}))},v(h,"scroll",mt,{passive:!0,capture:!0})}fs()}function us(e){var t=Ut(e);if(!(t&&/INPUT|TEXTAREA|SELECT/.test(t.nodeName))&&!(t&&t.isContentEditable)&&!(e.metaKey||e.ctrlKey||e.altKey)){if(e.key==="o"){je(!c.enabled);return}if(c.enabled){var n={v:"cursor",h:"highlight",r:"rect",c:"circle",d:"pen",p:"pin"};if(n[e.key])Ye(n[e.key]);else if(e.key==="a")Qa();else if(e.key==="m")Xn({detail:qn()});else if(e.key==="f")zn(!G);else if(e.key==="?")Ee.classList.toggle("an-show"),ms();else if(e.key==="Enter")V.length>=2&&!Z&&!Q(t)&&(e.preventDefault(),Qo());else if(e.key==="Escape"){if(an())return;if(Ee.classList.contains("an-show")){Ee.classList.remove("an-show");return}if((V.length||Rr)&&!Z){Ge();return}Ye("cursor"),Wt()}}}}function vd(){var e;if(k.theme==="dark")e=!0;else if(k.theme==="light")e=!1;else{var t=xd();t!=null?e=t<.45:e=m.matchMedia&&m.matchMedia("(prefers-color-scheme: dark)").matches}X().classList.toggle("an-dark",!!e)}function xd(){for(var e=h.body;e;){var t=getComputedStyle(e).backgroundColor,n=t&&t.match(/rgba?\(([\d.]+),\s*([\d.]+),\s*([\d.]+)(?:,\s*([\d.]+))?\)/);if(n&&(n[4]===void 0||parseFloat(n[4])>.5))return(.2126*n[1]+.7152*n[2]+.0722*n[3])/255;e=e===h.body?h.documentElement:null}return null}var Se,be=null,jn=null,bd=k.blocks||"h1,h2,h3,h4,p,li,blockquote,pre,figure,.section-title,.section-deck,.hero-title,.pullquote,.fact-text";function ds(e){for(;e&&e.nodeType===1;){if(e.id&&String(e.id).indexOf("__an")===0||e.closest&&(e.closest("#__an_bar")||e.closest("#__an_panel")||e.closest("#__an_compose")))return null;if(e.matches&&e.matches(bd)){var t=e.getBoundingClientRect();if(t.width>60&&t.height>14)return e}e=Ln(e)}return null}function yd(){Se=s("div",{id:"__an_plus",title:"Comment on this section",html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M12 6v12M6 12h12"/></svg>'}),X().appendChild(Se),v(Se,"click",function(r){if(r.stopPropagation(),!!be){var a=be.getBoundingClientRect();Mn(a.left,a.bottom+6,{type:"block",color:c.color,geom:{kind:"block",selector:jt(be)},target:Bt(be)}),nn(!0)}}),v(Se,"mouseenter",function(){P(jn)}),v(Se,"mouseleave",function(){nn()});var e=null;v(h,"mousemove",function(r){if(!e){var a=Ut(r);e=St(function(){if(e=null,!!c.enabled){if(c.tool!=="cursor"&&c.tool!=="highlight"){nn(!0);return}if(!ae){var i=ds(a||h.elementFromPoint(r.clientX,r.clientY));i&&i!==be&&(be=i,Ka(i)),be&&(_d(r.clientX,r.clientY)?(P(jn),Se.classList.add("an-show")):nn())}}})}});var t=null,n=null;v(h,"touchstart",function(r){c.enabled&&(c.tool!=="cursor"&&c.tool!=="highlight"||(n=ds(Ut(r)),n&&(t=R(function(){n&&(be=n,Ka(n),Se.classList.add("an-show"))},500))))},{passive:!0}),v(h,"touchend",function(){P(t),n=null},{passive:!0}),v(h,"touchmove",function(){P(t),n=null},{passive:!0}),v(m,"scroll",function(){be&&Ka(be)},{passive:!0})}function _d(e,t){if(!be)return!1;var n=Se.getBoundingClientRect(),r=be.getBoundingClientRect(),a=18;return e>=r.left-a&&e<=r.right+a&&t>=r.top-a&&t<=r.bottom+a||e>=n.left-a&&e<=n.right+a&&t>=n.top-a&&t<=n.bottom+a||e>=n.left-a&&e<=r.left+a&&t>=n.top-a&&t<=n.bottom+a}function Ka(e){var t=e.getBoundingClientRect();if(t.bottom<0||t.top>m.innerHeight){nn(!0);return}var n=getComputedStyle(e),r=parseFloat(n.lineHeight);(!r||isNaN(r))&&(r=parseFloat(n.fontSize)*1.3);var a=parseFloat(n.paddingTop)||0,i=t.top+a+r/2,o=i-15,l=t.left-40;l<6&&(l=t.left+6),Se.style.left=l+"px",Se.style.top=o+"px",P(jn),Se.classList.add("an-show")}function nn(e){if(P(jn),e){Se.classList.remove("an-show"),be=null;return}jn=R(function(){Se.classList.remove("an-show"),be=null},600)}function je(e){e&&Ft(),e&&Fs(),c.enabled=e,nc(),D.set("an-off",e?"0":"1");var t=h.getElementById("__an_root");if(e)t&&(t.style.display=""),B&&(B.style.display=""),W&&(W.style.display=""),tt(),De&&De.classList.remove("an-show"),Dr(),re(),U();else if(zn(!1),Ye("cursor"),Nn(),Wt(),Ge(),Bn(),nn(!0),Ee&&Ee.classList.remove("an-show"),La(),B&&(B.style.display="none"),W&&(W.style.display="none"),t&&(t.style.display="none"),De){var n=c.comments.filter(function(r){return!r.resolved}).length;De.querySelector("span").textContent=n?"Review ("+n+")":"Review",De.classList.add("an-show")}}function Ye(e){if(!(zs&&e!=="cursor")){yt(),e!==c.tool&&Ge(),c.tool=e,I.classList.toggle("an-pinning",e==="pin"),tt(),I.querySelectorAll(".an-btn[data-tool]").forEach(function(r){r.classList.toggle("an-on",r.getAttribute("data-tool")===e)});var t=Ga(e);h.body.classList.toggle("an-drawing",t),Te.forEach(os),Nn();var n={highlight:"Select any text to highlight & comment",rect:"Drag to draw a rectangle",circle:"Drag to draw a circle",pen:"Draw freehand \u2014 release to comment",pin:'Click to drop a pin \xB7 Shift+click or "Select several" to pick several'};n[e]?wd(n[e]):kd()}}function wd(e){xe.innerHTML="",xe.appendChild(h.createTextNode(e+" ")),xe.appendChild(s("kbd",{text:"Esc"})),xe.appendChild(h.createTextNode(" to cancel")),xe.classList.add("an-show")}function kd(){xe.classList.remove("an-show")}var Cd=(function(){var e=':not([id^="__an"]):not([id^="__an"] *)';return e+", "+e+"::before, "+e+"::after { animation-play-state: paused !important; transition-duration: 0s !important; transition-delay: 0s !important; caret-color: transparent !important; }"})(),G=null;function cs(){if(G){typeof h.getAnimations=="function"&&h.getAnimations().forEach(function(r){var a=r.effect&&r.effect.target;if(!(typeof CSSAnimation!="undefined"?r instanceof CSSAnimation:r.animationName!==void 0)&&!(r.playState!=="running"||a&&Q(a))){try{r.pause()}catch(i){return}G.anims.indexOf(r)<0&&G.anims.push(r)}});for(var e=h.querySelectorAll("video, audio"),t=0;t<e.length;t++){var n=e[t];if(!(n.paused||n.ended||Q(n))){try{n.pause()}catch(r){continue}G.media.indexOf(n)<0&&G.media.push(n)}}}}function zn(e){if(e=!!e&&c.enabled&&!O,e===!!G)return e;if(e){G={anims:[],media:[],style:s("style",{id:"__an_freeze",text:Cd}),timer:null};var t=Re&&(Re.nonce||Re.getAttribute("nonce"));t&&G.style.setAttribute("nonce",t),cs(),h.head.appendChild(G.style),G.timer=setInterval(cs,250)}else clearInterval(G.timer),G.style.parentNode&&G.style.parentNode.removeChild(G.style),G.anims.forEach(function(n){try{n.playState==="paused"&&n.play()}catch(r){}}),G.media.forEach(function(n){try{if(n.paused&&!n.ended){var r=n.play();r&&r.catch&&r.catch(function(){})}}catch(a){}}),G=null;return fs(),tn&&(tn.textContent=e?"Motion paused.":"Motion resumed."),dr("annotate:freeze",{frozen:e}),e}function fs(){var e=I&&I.querySelector('[data-action="freeze"]');e&&(e.classList.toggle("an-on",!!G),e.setAttribute("aria-pressed",G?"true":"false")),jr&&jr.classList.toggle("an-show",!!G)}var Wa="an-bar-pos:"+(k.project||""),se=8,Ed=398,de=null;function Sd(){try{var e=JSON.parse(D.get(Wa)||"null");if(e&&(e.h==="left"||e.h==="right")&&(e.v==="top"||e.v==="bottom")&&le(e.x)&&le(e.y))return{h:e.h,x:e.x,v:e.v,y:e.y}}catch(t){}return null}function $a(e){var t=Math.max(se,m.innerWidth-I.offsetWidth-se),n=Math.max(se,m.innerHeight-I.offsetHeight-se),r=Math.round(Math.min(n,Math.max(se,e.y)));return I.offsetHeight+2*se>m.innerHeight&&(r=e.v==="top"?se:m.innerHeight-I.offsetHeight-se),{h:e.h,v:e.v,x:Math.round(Math.min(t,Math.max(se,e.x))),y:r}}function ps(e){var t=e.left+e.width/2<m.innerWidth/2?"left":"right",n=e.top+e.height/2<m.innerHeight/2?"top":"bottom";return{h:t,x:t==="left"?e.left:m.innerWidth-e.right,v:n,y:n==="top"?e.top:m.innerHeight-e.bottom}}function tt(e){if(I){e&&I.classList.add("an-snap");var t=I.style;if(t.left=t.right=t.top=t.bottom="",I.classList.toggle("an-moved",!!de),I.classList.remove("an-left"),I.classList.remove("an-right"),de){var n=$a(de),r=n.h==="left"?n.x+I.offsetWidth/2:m.innerWidth-n.x-I.offsetWidth/2;if(I.classList.add(r<m.innerWidth/2?"an-left":"an-right"),t[n.h]=n.x+"px",t[n.h==="left"?"right":"left"]="auto",t[n.v]=n.y+"px",t[n.v==="top"?"bottom":"top"]="auto",c.panelOpen&&m.innerWidth>640){var a=I.getBoundingClientRect(),i=m.innerWidth-Ed;a.right>i&&(t.left=Math.max(se,Math.round(i-a.width))+"px",t.right="auto")}}else{I.classList.add(Dn);var o=parseFloat(getComputedStyle(I).bottom)||0;I.offsetHeight+o+se>m.innerHeight&&(t.top=se+"px",t.bottom="auto")}e&&(I.offsetWidth,I.classList.remove("an-snap")),ms()}}function hs(e){de=$a(e);try{localStorage.setItem(Wa,JSON.stringify(de))}catch(t){}tt(!0)}function gs(){de=null;try{localStorage.setItem(Wa,"")}catch(e){}tt(!0)}function Ja(){tn&&(tn.textContent=de?"Toolbar moved: "+de.x+" px from the "+de.h+", "+de.y+" px from the "+de.v+".":"Toolbar moved back to its corner.")}function ms(){if(Ee){var e=Ee.style;if(e.left=e.right=e.top=e.bottom="",!(!de||!Ee.classList.contains("an-show"))){var t=I.getBoundingClientRect(),n=Ee.offsetWidth,r=Ee.offsetHeight,a=t.left+t.width/2<m.innerWidth/2?t.right+8:t.left-8-n;e.left=Math.round(Math.min(m.innerWidth-n-se,Math.max(se,a)))+"px",e.top=Math.round(Math.min(m.innerHeight-r-se,Math.max(se,t.bottom-r)))+"px",e.right=e.bottom="auto"}}}function Ad(e){var t=null;v(e,"pointerdown",function(r){if(r.button===0){var a=I.getBoundingClientRect();t={id:r.pointerId,sx:r.clientX,sy:r.clientY,dx:r.clientX-a.left,dy:r.clientY-a.top,moving:!1};try{e.setPointerCapture(r.pointerId)}catch(i){}r.preventDefault()}}),v(e,"pointermove",function(r){if(!(!t||r.pointerId!==t.id)&&!(!t.moving&&Math.abs(r.clientX-t.sx)+Math.abs(r.clientY-t.sy)<3)){t.moving=!0,I.classList.add("an-dragging");var a=I.style;a.right=a.bottom="auto",a.left=r.clientX-t.dx+"px",a.top=r.clientY-t.dy+"px"}});function n(r){if(!(!t||r.pointerId!==t.id)){var a=t.moving;t=null,I.classList.remove("an-dragging"),a&&hs(ps(I.getBoundingClientRect()))}}v(e,"pointerup",n),v(e,"pointercancel",n),v(e,"dblclick",function(){gs(),Ja()}),v(e,"keydown",function(r){if(!(r.altKey||r.ctrlKey||r.metaKey)){var a=r.shiftKey?64:16,i=0,o=0;if(r.key==="ArrowLeft")i=-a;else if(r.key==="ArrowRight")i=a;else if(r.key==="ArrowUp")o=-a;else if(r.key==="ArrowDown")o=a;else if(r.key!=="Home")return;if(r.preventDefault(),r.stopPropagation(),r.key==="Home"){gs(),Ja();return}var l=I.getBoundingClientRect();if(de){var u=$a(de),p=I.offsetWidth,f=I.offsetHeight,g=u.h==="left"?u.x:m.innerWidth-u.x-p,y=u.v==="top"?u.y:m.innerHeight-u.y-f;l={left:g,right:g+p,top:y,bottom:y+f,width:p,height:f}}hs(ps({left:l.left+i,right:l.right+i,top:l.top+o,bottom:l.bottom+o,width:l.width,height:l.height})),Ja()}})}function Qa(){c.panelOpen?Bn():rn()}function rn(){c.panelOpen=!0,c.filter==="mentions"&&zi(),me.classList.add("an-open");var e=h.getElementById("__an_root");e&&e.classList.add("an-popen"),tt(),ii(),U(),Td()}function Bn(){c.panelOpen=!1,x.open&&(x.open=!1,x.menu=null,x.confirm=null,Mt()),me.classList.remove("an-open");var e=h.getElementById("__an_root");e&&e.classList.remove("an-popen"),tt()}var vs=!1;function Td(){if(!(vs||!me)){vs=!0;var e=0,t=0,n=!1;v(me,"touchstart",function(r){m.innerWidth>640||(e=r.touches[0].clientY,t=j?j.scrollTop:0,n=!1)},{passive:!0}),v(me,"touchmove",function(r){if(!(m.innerWidth>640)){var a=r.touches[0].clientY-e;a>0&&t<=0&&(n=!0)}},{passive:!0}),v(me,"touchend",function(r){if(!(!n||m.innerWidth>640)){var a=r.changedTouches[0].clientY-e;a>80&&Bn(),n=!1}},{passive:!0})}}function Fn(){var e=c.comments.filter(function(n){return!n.resolved}).length;en&&(en.textContent=e,en.style.display=e?"flex":"none");var t=h.getElementById("__an_sub");t&&(t.textContent=String(c.comments.length))}var xs={highlight:"Highlight",shape:"Shape",pin:"Pin",pen:"Sketch",note:"Note",block:"Section",group:"Group"};function Id(e){return e=e||{},c.comments.filter(function(t){if(c.filter==="open"&&t.resolved&&!e[t.id]||c.filter==="resolved"&&!t.resolved)return!1;if(c.query){var n=((t.text||"")+" "+(t.author||"")+" "+(t.anchor&&t.anchor.exact?t.anchor.exact:"")+" "+(t.target?t.target.label+" "+t.target.selector:"")+" "+(t.type==="group"&&t.geom&&t.geom.selectors?t.geom.selectors.join(" ")+" "+(t.targets||[]).map(function(r){return r?r.label:""}).join(" "):"")+" "+(t.replies||[]).map(function(r){return r.text+" "+r.author}).join(" ")).toLowerCase();if(n.indexOf(c.query)<0)return!1}return!0})}var Za=!1;function Ld(){var e={};return!Za||!j||Array.prototype.forEach.call(j.querySelectorAll(".an-card"),function(t){var n={},r=!1;[["reply",".an-replybox"],["edit",".an-editbox"]].forEach(function(a){var i=t.querySelector(a[1]),o=i&&i.querySelector("textarea");!i||!o||!i.classList.contains("an-show")||(n[a[0]]={value:o.value,focus:h.activeElement===o,start:o.selectionStart,end:o.selectionEnd},r=!0)}),r&&(e[t.getAttribute("data-id")]=n)}),e}function bs(e,t,n){if(e&&(t.classList.add("an-show"),n.value=e.value,e.focus)){n.focus({preventScroll:!0});try{n.setSelectionRange(e.start,e.end)}catch(r){}}}function ei(){Za=!0;try{on()}finally{Za=!1}}function U(){if(j){if(Mt(),x.open){j.querySelector("#__an_people")||J();return}var e=Ld();if(j.innerHTML="",c.filter==="mentions"){_l(),Fn(),kt();return}var t=ru(),n=Id(t);if(!n.length){var r=c.query?"No comments match \u201C"+yi(c.query)+"\u201D.":c.filter==="resolved"?"Nothing resolved yet.":"No comments yet.<br>Select any text, or pick a tool from the toolbar \u2014 try <kbd>H</kbd> highlight or <kbd>P</kbd> pin.";j.appendChild(s("div",{class:"an-empty"},[s("div",{class:"an-eicon",html:S.bubble}),s("div",{html:r})])),Fn(),kt();return}n.forEach(function(a){var i=c.comments.indexOf(a)+1,o=a.type==="group"&&a.geom&&a.geom.selectors?a.geom.selectors:null,l=s("div",{class:"an-card"+(a.id===c.activeId?" an-active":"")+(a.resolved?" an-resolved":""),"data-id":a.id}),u=s("div",{class:"an-cmeta"},[pn(a.author),s("span",{class:"an-author",text:a.author||"Anonymous"}),wi(a.authorId),s("span",{class:"an-tag"},[(function(){var _=s("span",{class:"an-dot"});return _.style.background=a.color,_})(),h.createTextNode("#"+i+" "+(xs[a.type]||a.type)+(o?" \xB7 "+o.length+" elements":""))]),a.status==="resolved"?s("span",{class:"an-rbadge",html:S.check+"<span>Resolved</span>"}):a.status!=="open"&&Ve[a.status]?s("span",{class:"an-sbadge an-s-"+a.status,text:Ve[a.status]}):null,s("span",{class:"an-when",text:At(a.createdAt)})]);if(l.appendChild(u),a.target&&l.appendChild(s("div",{class:"an-target",title:a.target.label,text:"on "+a.target.label})),o){var p=o.map(function(_,F){return a.targets&&a.targets[F]?a.targets[F].label:_}).join(", ");l.appendChild(s("div",{class:"an-target",title:p,text:"on "+p}))}t[a.id]&&(l.classList.add("an-unread"),l.appendChild(s("button",{class:"an-newpill",title:"Mark as seen",text:"Updated \xB7 mark as seen",onclick:function(_){_.stopPropagation(),au(a.id),U()}}))),a.assignee&&l.appendChild(s("div",{class:"an-assignee",text:"Assigned to "+a.assignee.name})),a.resolved&&l.appendChild(s("div",{class:"an-disposal",text:Ve[a.status]+(a.resolvedBy?" by "+ys(a,a.resolvedBy):"")+(a.resolvedAt?" \xB7 "+At(a.resolvedAt):"")})),a.type==="highlight"&&a.anchor&&a.anchor.exact&&l.appendChild(s("div",{class:"an-quote",text:"\u201C"+a.anchor.exact+"\u201D"}));var f=s("div",{class:"an-body"});if(f.appendChild(ra(a.text||"",a.mentions,d.members,c.authorId)),a.text&&l.appendChild(f),a.target&&l.appendChild(Pu(a)),o&&l.appendChild(Nu(a)),a.replies&&a.replies.length){var g=s("div",{class:"an-replies"});a.replies.forEach(function(_){var F=s("div",{class:"an-reply"},[pn(_.author,18),s("span",{style:"flex:1;min-width:0"},[s("span",{class:"an-rwho",text:_.author}),wi(_.authorId),ra(_.text,_.mentions,d.members,c.authorId),s("span",{class:"an-rwhen",text:At(_.createdAt)})])]);if(Lt(_)){var Oe=s("span",{style:"display:flex;gap:4px;flex:none;margin-left:6px"}),Xe=s("button",{class:"an-mini an-danger",html:S.trash,title:"Delete reply"});v(Xe,"click",function(di){di.stopPropagation();var el=Rt(a.id,{deleteReply:_.id});el&&(Ct(el),U())}),Oe.appendChild(Xe),F.appendChild(Oe)}g.appendChild(F)}),l.appendChild(g)}var y=s("div",{class:"an-replybox"}),w=s("textarea",{class:"an-ta",rows:"2",placeholder:"Reply\u2026 (Ctrl+\u21B5 to post)"});y.appendChild(w),Ni(w);var b=s("button",{class:"an-primary",style:"margin-top:6px;align-self:flex-end",text:"Reply"});y.appendChild(b);function T(){if(w.value.trim()){var _={id:it(),author:c.author||"Anonymous",text:w.value.trim(),createdAt:new Date().toISOString()},F=Rt(a.id,{reply:_});if(F){var Oe=F.replies.some(function(Xe){return Xe.id===_.id});if(!Oe){L("This thread has reached its reply limit.",{kind:"error"});return}w.value="",Ct(F),U()}}}v(b,"click",function(_){_.stopPropagation(),T()}),v(w,"keydown",function(_){_.stopPropagation(),(_.metaKey||_.ctrlKey)&&_.key==="Enter"&&T()}),l.appendChild(y);var C=s("div",{class:"an-editbox"}),A=s("textarea",{class:"an-ta",rows:"2"}),M=s("button",{class:"an-primary",text:"Save"});C.appendChild(A),C.appendChild(s("div",{style:"display:flex;justify-content:flex-end"},[M])),v(A,"keydown",function(_){_.stopPropagation(),(_.metaKey||_.ctrlKey)&&_.key==="Enter"&&M.click()}),v(M,"click",function(_){_.stopPropagation();var F=Rt(a.id,{text:A.value.trim()});F&&(Ct(F),U())}),l.appendChild(C);var Le=s("div",{class:"an-history"});_t[a.id]&&(Le.classList.add("an-show"),ws(a,Le));var Yr=s("div",{class:"an-cact"},[s("button",{class:"an-mini",html:S.reply+"<span>Reply</span>",onclick:function(_){_.stopPropagation(),y.classList.toggle("an-show"),w.focus()}}),Ri(a)?s("button",{class:"an-mini",html:(a.resolved?"":S.check)+"<span>"+(a.resolved?"Reopen":"Resolve")+"</span>",onclick:function(_){_.stopPropagation();var F=Rt(a.id,{resolved:!a.resolved});F&&(Ct(F),re(),U())}}):null,!E||Ot()?Md(a):null,Rd(a),Lt(a)?s("button",{class:"an-mini",html:S.edit+"<span>Edit</span>",onclick:function(_){_.stopPropagation(),A.value=a.text||"",C.classList.toggle("an-show"),A.focus()}}):null,s("button",{class:"an-mini an-histbtn",text:"History","aria-expanded":_t[a.id]?"true":"false",onclick:function(_){_.stopPropagation(),_t[a.id]=!_t[a.id],_t[a.id]?(Le.classList.add("an-show"),ws(a,Le)):(delete _t[a.id],Le.classList.remove("an-show")),this.setAttribute("aria-expanded",_t[a.id]?"true":"false")}}),s("button",{class:"an-mini","data-action":"copy-ai",title:"Copy this comment for an AI agent","aria-label":"Copy this comment for an AI agent",html:S.copy,onclick:function(_){_.stopPropagation(),Xn({detail:qn(),ids:[a.id],includeClosed:!0})}}),s("button",{class:"an-mini",html:S.link,title:"Copy link to this comment",onclick:function(_){_.stopPropagation(),Vd(a.id)}}),Ri(a)?s("button",{class:"an-mini an-danger",html:S.trash,title:"Delete",onclick:function(_){_.stopPropagation(),Gd(a)}}):null]);l.appendChild(Yr),l.appendChild(Le),v(l,"click",function(){ye(a.id,!1)}),o&&(v(l,"mouseenter",function(){Or(a,!0)}),v(l,"mouseleave",function(){Or(a,!1)})),j.appendChild(l),e[a.id]&&(bs(e[a.id].reply,y,w),Lt(a)&&bs(e[a.id].edit,C,A))}),Fn(),kt()}}function ys(e,t){if(t&&t===c.authorId)return"you";if(e.authorId===t)return e.author;if(e.assignee&&e.assignee.id===t)return e.assignee.name;for(var n=e.replies.length-1;n>=0;n--)if(e.replies[n].authorId===t)return e.replies[n].author;return"the review owner"}var _t={},_s={};function ti(e){var t=[{at:e.createdAt,by:{id:e.authorId,name:e.author},kind:"created"}];return e.editedAt&&t.push({at:e.editedAt,by:{id:e.authorId,name:e.author},kind:"edited"}),e.assignedAt&&e.assignee&&t.push({at:e.assignedAt,by:null,kind:"assigned",to:e.assignee}),e.replies.forEach(function(n){t.push({at:n.createdAt,by:{id:n.authorId,name:n.author},kind:"replied"})}),e.resolved&&e.resolvedAt&&t.push({at:e.resolvedAt,by:e.resolvedBy?{id:e.resolvedBy,name:ys(e,e.resolvedBy)}:null,kind:"status",to:e.status}),t.sort(function(n,r){return n.at<r.at?-1:n.at>r.at?1:0})}function Od(e){var t=e.by&&(e.by.id?e.by.id===c.authorId:!c.authorId&&e.by.name===c.author),n=e.by?t?"You":e.by.name||"Someone":"",r=function(i){return Ve[i]||i},a={created:"raised this comment",edited:"edited the comment",status:e.from?"changed status: "+r(e.from)+" \u2192 "+r(e.to):"marked it "+r(e.to),assigned:e.to?"assigned it to "+e.to.name:"removed the assignee",replied:"replied",reply_deleted:"deleted a reply",deleted:"deleted the comment"}[e.kind]||e.kind;return(n?n+" ":"")+(n?a:a.charAt(0).toUpperCase()+a.slice(1))}function Hn(e,t,n){e.innerHTML="";var r=s("ol",{class:"an-hlist"});t.forEach(function(a){r.appendChild(s("li",{},[s("span",{text:Od(a)}),s("span",{class:"an-hwhen",text:a.at?At(a.at):""})]))}),e.appendChild(r),n&&e.appendChild(s("div",{class:"an-hnote",text:n}))}function ws(e,t){var n=E?ut(te())[e.id]:null;if(!E||!n||!d.token){Hn(t,ti(e),E?"Full history appears once this comment is saved to the review.":"");return}var r=_s[e.id];if(r&&r.stamp===n){Hn(t,r.events);return}Hn(t,ti(e),"Loading full history\u2026"),pe("GET","/comments/"+encodeURIComponent(e.id)+"/activity").then(function(a){if(O||!a.data||!Array.isArray(a.data.events))throw new Error("unavailable");var i=a.data.events.filter(function(o){return o&&typeof o.kind=="string"&&typeof o.at=="string"});_s[e.id]={stamp:n,events:i},t.isConnected&&Hn(t,i)}).catch(function(){!O&&t.isConnected&&Hn(t,ti(e),"Showing a summary \u2014 the full history could not be loaded.")})}function ks(e,t){if(!Ve[t])throw new Error("Unknown status: "+t);var n=Rt(e,{status:t});return n&&(Ct(n),re(),U()),n}function Cs(e,t){var n=Rt(e,{assignee:t||null});return n&&(Ct(n),U()),n}function Md(e){var t=s("select",{class:"an-status","aria-label":"Status",title:"Status"});return Object.keys(Ve).forEach(function(n){var r=s("option",{value:n,text:Ve[n]});n===e.status&&(r.selected=!0),t.appendChild(r)}),v(t,"click",function(n){n.stopPropagation()}),v(t,"change",function(n){n.stopPropagation(),ks(e.id,t.value)}),t}function Rd(e){if(!Ot())return null;var t={id:c.authorId,name:c.author||"Anonymous"},n=e.assignee&&(e.assignee.id&&t.id?e.assignee.id===t.id:e.assignee.name===t.name);return s("button",{class:"an-mini",text:n?"Unassign":"Assign to me",title:n?"Stop working on this":"Take this on",onclick:function(r){r.stopPropagation(),Cs(e.id,n?null:t)}})}function Pd(e,t){var n=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),r=URL.createObjectURL(n);$n.add(r);var a=s("a",{href:r,download:t});X().appendChild(a),a.click(),a.remove(),R(function(){URL.revokeObjectURL(r),$n.delete(r)},1e3)}function zr(e,t){var n=t==="site",r=(n?sr():c.comments).map(It);if(!r.length&&!e)return null;var a={annotate:pi,schema:Qr,kind:"annotate-export",exportedAt:new Date().toISOString(),page:N,url:z.href,project:k.project||"",exportedViewport:{vw:m.innerWidth,vh:m.innerHeight,dpr:m.devicePixelRatio||1},comments:r};return n&&(a.scope="site"),a}function Un(e){var t=!!(e&&e.scope==="site");if(t&&E){L("This review keeps every page on the server \u2014 download one page at a time",{kind:"info"});return}var n=zr(!1,t?"site":"page");if(!n){L(t?"No comments in this project to export":"No comments on this page to export",{kind:"info"});return}var r=n.comments,a=t?(k.project||z.host||"site")+"-all-pages":N||"page",i=a.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,60)||"page",o=new Date().toISOString().slice(0,10);Pd(n,"redline-"+i+"-"+o+".json");var l=t?lr(r):1;L("Exported "+r.length+" comment"+(r.length===1?"":"s")+(l>1?" across "+l+" pages":""),{kind:"success"})}function Es(){return E?iu().then(function(){return k.postUrl?Ss():(O||L("All changes saved to the review",{kind:"success"}),zr(!0))},function(e){throw O||L("Could not save to the review: "+e.message,{kind:"error",duration:8e3}),e}):Ss()}function Nd(){var e=m.crypto,t=[],n;if(e&&typeof e.randomUUID=="function")try{return e.randomUUID()}catch(i){}if(e&&typeof e.getRandomValues=="function"){var r=new Uint8Array(16);for(e.getRandomValues(r),n=0;n<16;n++)t.push(r[n])}else for(n=0;n<16;n++)t.push(Math.floor(Math.random()*256));t[6]=t[6]&15|64,t[8]=t[8]&63|128;var a=t.map(function(i){return(i+256).toString(16).slice(1)}).join("");return a.slice(0,8)+"-"+a.slice(8,12)+"-"+a.slice(12,16)+"-"+a.slice(16,20)+"-"+a.slice(20)}function ni(e){var t=e&&e.headers&&e.headers.get("Retry-After");if(!t)return null;var n=Number(t),r=isFinite(n)?n*1e3:Date.parse(t)-Date.now();return isFinite(r)?Math.max(0,Math.min(3e4,r)):null}var Yn=null,Br=null,wt=null;function Ss(){if(Yn)return Yn;var e=zr(),t;try{t=new URL(k.postUrl,z.href)}catch(u){}if(!k.postUrl||!t||!/^https?:$/.test(t.protocol))return Promise.reject(new Error("Configure an HTTP(S) postUrl first"));if(!e)return L("No comments to send yet",{kind:"info"}),Promise.reject(new Error("No comments to send"));var n=Object.assign({},e,{deliveryId:Nd()}),r=JSON.stringify(n),a=k.postRetries,i=0;L("Sending feedback\u2026",{kind:"info"});function o(){var u=m.AbortController?new m.AbortController:null,p=!1;Br=u;var f=R(function(){p=!0,u&&u.abort()},3e4);return m.fetch(t.href,{method:"POST",headers:{"Content-Type":"application/json"},body:r,credentials:k.credentials,signal:u?u.signal:void 0}).then(function(g){if(P(f),g.ok)return n;var y=new Error("HTTP "+g.status);throw y.retry=g.status===408||g.status===429||g.status>=500,y.wait=ni(g),y},function(g){P(f);var y=new Error(p?"Timed out":g&&g.message||"Network error");throw y.retry=!O,y})}function l(){return o().catch(function(u){if(O||!u.retry||i>=a)throw u;i++;var p=typeof u.wait=="number"?u.wait:1e3*Math.pow(2,i-1);return L("Sending feedback\u2026 (retry "+i+" of "+a+")",{kind:"info"}),new Promise(function(f,g){wt={timer:R(function(){wt=null,f()},p),reject:g}}).then(l)})}return Yn=l().then(function(u){return O||L("Feedback sent",{kind:"success"}),u},function(u){throw O||L("Could not send feedback: "+u.message+". Your comments are still saved locally.",{kind:"error",duration:8e3}),u}).finally(function(){Yn=null,Br=null,wt=null}),Yn}function hc(){return ri()}function ri(e){var t=zr(!1,e==="site"?"site":void 0);return t?ze(JSON.stringify(t,null,2),"Comments copied as JSON"):(L("No comments on this page to copy",{kind:"info"}),Promise.resolve())}function qn(){var e=D.get("an-md-detail");return Hr[e]?e:"standard"}function Xn(e){var t=Ms(e);return t?ze(t,"Copied as Markdown for your AI agent"):(L("No open comments to copy",{kind:"info"}),Promise.resolve())}function an(e){var t=h.getElementById("__an_copymenu");if(!t)return!1;e=e===!0||t.contains(h.activeElement),t.remove();var n=ve&&ve.querySelector('[data-action="copy-menu"]');return n&&(n.setAttribute("aria-expanded","false"),e&&n.focus()),!0}function Dd(e){if(!an()){var t=qn(),n=s("div",{class:"an-seg",role:"radiogroup","aria-label":"Markdown detail"});Object.keys(Hr).forEach(function(l){n.appendChild(s("button",{class:"an-segbtn"+(l===t?" an-on":""),role:"radio","aria-checked":l===t?"true":"false","data-detail":l,text:Hr[l],onclick:function(u){u.stopPropagation(),D.set("an-md-detail",l),Array.prototype.forEach.call(n.children,function(p){var f=p.getAttribute("data-detail")===l;p.classList.toggle("an-on",f),p.setAttribute("aria-checked",f?"true":"false")})}}))});var r=E?[]:sr(),a=lr(r),i=s("div",{id:"__an_copymenu",role:"group","aria-label":"Copy options"},[s("button",{class:"an-mitem","data-action":"copy-markdown",html:S.copy+"<span>Copy for AI agent (Markdown)</span>",onclick:function(l){l.stopPropagation(),an(!0),Xn({detail:qn()})}}),n,s("button",{class:"an-mitem","data-action":"copy-json",html:S.copy+"<span>Copy JSON (re-importable)</span>",onclick:function(l){l.stopPropagation(),an(!0),ri()}}),r.length>c.comments.length&&a>1?s("button",{class:"an-mitem","data-action":"copy-markdown-site",html:S.copy+"<span>All pages as Markdown ("+a+" pages)</span>",onclick:function(l){l.stopPropagation(),an(!0),Xn({detail:qn(),scope:"site"})}}):null]);v(i,"click",function(l){l.stopPropagation()}),ve.appendChild(i),e.setAttribute("aria-expanded","true");var o=i.querySelector(".an-mitem");o&&o.focus()}}v(h,"click",function(e){(!e.target.closest||!e.target.closest("#__an_copymenu"))&&an()});function ai(){var e=s("input",{type:"file",accept:"application/json,.json"});e.style.display="none",X().appendChild(e),v(e,"change",function(){var t=e.files&&e.files[0];if(e.remove(),!!t){var n=new FileReader;n.onload=function(){if(!O){var r;try{r=JSON.parse(n.result)}catch(a){L("That file isn\u2019t valid JSON",{kind:"error"});return}qd(r)}},n.onerror=function(){O||L("Couldn\u2019t read that file",{kind:"error"})},n.readAsText(t)}}),e.click()}var jd=5e3;function le(e){return typeof e=="number"&&isFinite(e)}var Fr=20;function zd(e){return!e||typeof e!="object"||typeof e.kind!="string"?!1:e.kind==="pin"?le(e.x)&&le(e.y):e.kind==="rect"||e.kind==="circle"?le(e.x)&&le(e.y)&&le(e.w)&&le(e.h):e.kind==="pen"?Array.isArray(e.points)&&e.points.length>=2&&e.points.length<=1e4&&e.points.every(function(t){return Array.isArray(t)&&t.length===2&&le(t[0])&&le(t[1])}):e.kind==="group"?Array.isArray(e.selectors)&&e.selectors.length>=2&&e.selectors.length<=Fr&&e.selectors.every(function(t){return typeof t=="string"&&t.trim().length>0&&t.length<4096})&&(e.vw===void 0||le(e.vw))&&(e.vh===void 0||le(e.vh)):e.kind==="block"?typeof e.selector=="string"&&e.selector.trim().length>0&&e.selector.length<4096:!1}var Bd={highlight:1,shape:1,pin:1,pen:1,note:1,block:1,group:1},Fd={shape:{rect:1,circle:1},pin:{pin:1},pen:{pen:1},block:{block:1},group:{group:1}};function Hd(e,t){if(e==="highlight"||e==="note")return t==null;var n=Fd[e];return!!(t&&n&&t.kind&&n[t.kind]===1)}function As(e){return!e||typeof e!="object"||typeof e.exact!="string"||!e.exact.trim()||e.exact.length>1e6?!1:typeof e.prefix=="string"&&typeof e.suffix=="string"}function Ud(e){return e&&typeof e.id=="string"&&e.id.length<128&&typeof e.author=="string"&&typeof e.text=="string"&&e.text.length<=Jr&&typeof e.createdAt=="string"}function Yd(e){return typeof e=="string"&&Bd[e]===1}function qe(e){return!(!e||typeof e!="object"||typeof e.id!="string"||!e.id||e.id.length>128||!Yd(e.type)||typeof e.author!="string"||typeof e.text!="string"||e.text.length>Zn||typeof e.color!="string"||e.anchor!==null&&e.anchor!==void 0&&!As(e.anchor)||e.type==="highlight"&&!As(e.anchor)||!Hd(e.type,e.geom)||e.geom!==null&&e.geom!==void 0&&!zd(e.geom)||!Array.isArray(e.replies)||e.replies.length>Ti||!e.replies.every(Ud))}function qd(e){var t=e&&Array.isArray(e.comments)?e.comments:null;if(!t){L("No comments found in that file",{kind:"error"});return}if(t.length>jd){L("That file has too many comments to import",{kind:"error"});return}var n=e.scope==="site";!n&&e.page&&e.page!==N&&L("These comments were from a different page \u2014 positions may not match.",{kind:"info",duration:6e3});var r=Object.create(null);te().comments.forEach(function(f){f&&typeof f.id=="string"&&(r[f.id]=!0)}),Object.keys(q).forEach(function(f){r[f]=!0});var a=[],i=0,o={};if(t.forEach(function(f){if(!qe(f)){i++;return}if(o[f.id]){i++;return}if(r[f.id]){i++;return}o[f.id]=!0;var g=Je(It(f));g.page=n?Xd(f.page,e.project):N,a.push(g)}),!a.length){L(i?"Nothing new to import ("+i+" invalid or already present)":"Nothing new to import",{kind:i?"error":"info"});return}var l=te();l.comments=l.comments.concat(a),Fe(l)||a.forEach(function(f){q[f.id]=f}),a.forEach(function(f){Ea(f.id),ur(f,["*"])}),on();var u=a.length+(i?" ("+i+" skipped)":""),p=n?lr(a):1;L("Imported "+u+" comment"+(a.length===1?"":"s")+(p>1?" across "+p+" pages":""),{kind:"success"})}function Xd(e,t){var n=typeof e=="string"?e:"";return t&&typeof t=="string"&&n.indexOf(t+":")===0&&(n=n.slice(t.length+1)),n?(k.project?k.project+":":"")+n:N}function Vd(e){var t=z.origin+z.pathname+z.search+"#an="+e;function n(){L("Link copied to clipboard",{kind:"success"})}navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(t).then(n,function(){prompt("Copy link:",t)}):prompt("Copy link:",t)}var nt={};function Gd(e){c.comments=c.comments.filter(function(t){return t.id!==e.id}),c.activeId===e.id&&(c.activeId=null),nt[e.id]=e,jl(e.id,Bl),re(),U(),L("Comment deleted",{kind:"info",action:"Undo",duration:5e3,onAction:function(){if(nt[e.id]){delete nt[e.id];var t=It(e);if(t.page===N){for(var n=!1,r=0;r<c.comments.length;r++)if(c.comments[r].createdAt>e.createdAt){c.comments.splice(r,0,t),n=!0;break}n||c.comments.push(t)}var a=te();a.comments.some(function(i){return i.id===t.id})||(a.comments.push(t),Fe(a),Ul(t)),re(),U()}},onExpire:function(){delete nt[e.id]}})}function ii(){Ue&&(c.note?(Ue.innerHTML="",Ue.appendChild(s("span",{html:S.info}).firstChild),Ue.appendChild(s("span",{},[s("span",{class:"an-nlbl",text:"What to review: "}),h.createTextNode(c.note)])),Ue.classList.add("an-show")):Ue.classList.remove("an-show"))}function kt(){if(ve){var e=c.comments.length,t=!!(c.share&&c.share.trim());ve.innerHTML="";var n=xa();if(ve.appendChild(s("div",{class:"an-localnote"+(d.refusal?" an-refused":E&&n.state==="idle"?" an-synced":"")},[s("span",{html:d.refusal?S.alert:E&&n.state==="idle"?S.check:S.info}),E?s("span",{id:"__an_syncnote","data-state":n.state,role:"status",text:Ki(n.state)}):s("span",{id:"__an_localnote",role:"status",text:d.refusal?d.refusal+" "+ya:t?"Saved in this browser. Download or share to send your comments.":"Saved in this browser. Download to send your comments."})])),d.refusal&&d.emailOn===!0&&d.refusalCode!=="review_closed"&&ve.appendChild(s("button",{class:"an-fbtn","data-action":"signin-open",html:S.mail+"<span>Sign in with email</span>",onclick:function(i){i.stopPropagation(),hr()}})),E&&ve.appendChild(s("div",{class:"an-exportlbl",text:"Keep a copy"})),ve.appendChild(s("div",{class:"an-footrow"+(t?" an-four":"")},[s("button",{class:"an-fbtn"+(e&&!E?" an-pulse":""),title:"Download comments as JSON",html:S.download+"<span>Download</span>",onclick:Un}),s("button",{class:"an-fbtn","data-action":"copy-menu",title:"Copy comments","aria-label":"Copy comments","aria-expanded":"false",html:S.copy+"<span>Copy</span>",onclick:function(i){i.stopPropagation(),Dd(this)}}),k.postUrl?s("button",{class:"an-fbtn",text:"Send feedback",onclick:function(){Es().catch(function(){})}}):null,t?s("button",{class:"an-fbtn",title:"Send comments to "+c.share,html:S.share+"<span>Share</span>",onclick:ec}):null,s("button",{class:"an-fbtn",html:S.upload+"<span>Import</span>",onclick:ai})])),!E){var r=sr(),a=lr(r);r.length>e&&a>1&&ve.appendChild(s("button",{class:"an-sitebtn","data-action":"download-site",title:"Download the comments from every page of this site as one JSON file",html:S.download+"<span>All pages ("+r.length+" comment"+(r.length===1?"":"s")+", "+a+" pages)</span>",onclick:function(){Un({scope:"site"})}}))}}}function ze(e,t){function n(){L(t||"Copied to clipboard",{kind:"success"})}function r(){m.prompt("Copy this:",e)}return navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(e).then(n,r):(r(),Promise.resolve())}function Kd(e){try{var t=new URL(e);return/^https?:$/.test(t.protocol)?t.href:""}catch(n){return""}}function Wd(e){var t=e.slice(0,50),n=t.map(function(r,a){var i=r.author||"Anonymous",o=Ts(r.text,280)||"(no text)";return a+1+". ["+(xs[r.type]||r.type)+"] "+i+": "+o}).join("\n");return e.length>t.length&&(n+="\n\u2026 and "+(e.length-t.length)+" more comment"+(e.length-t.length===1?"":"s")+" in the JSON file."),{subject:"Review comments \u2014 "+(k.project||N),body:"Review of "+z.href+"\n\n"+n+"\n\n("+e.length+" comment"+(e.length===1?"":"s")+". The full JSON file keeps positions & replies \u2014 attach it.)"}}function Ts(e,t){var n=String(e||"").replace(/\s+/g," ").trim();return n.length>t?n.slice(0,t-1)+"\u2026":n}function ee(e,t){return Ts(String(e==null?"":e).replace(/[\u0000-\u001f\u007f]/g," "),t||80)}var Hr={compact:"Compact",standard:"Standard",detailed:"Detailed"},Is={highlight:"Highlight",shape:"Shape",pin:"Pin",pen:"Sketch",note:"Note",block:"Section note",group:"Group"},$d={open:"Open",in_progress:"In progress",resolved:"Resolved",wont_fix:"Won\u2019t fix"};function Ls(e){return typeof e=="number"&&isFinite(e)}function Be(e){var t=String(e).replace(/[\u0000-\u001f\u007f]/g," "),n=0;(t.match(/`+/g)||[]).forEach(function(a){n=Math.max(n,a.length)});var r=new Array(n+2).join("`");return n?r+" "+t+" "+r:r+t+r}function Vn(e,t){return ee(e,t||200).replace(/"/g,'\\"')}function Jd(e){return String(e).replace(/[\u0000-\u0009\u000b-\u001f\u007f]/g," ").split(/\r?\n/).map(function(t){return("> "+t).replace(/\s+$/,"")}).join("\n")}function Os(e,t){return t&&e===t?" (AI agent)":""}function Qd(e,t,n,r,a){var i=e.type==="group"&&e.geom&&Array.isArray(e.geom.selectors),o=i?null:e.target||null,l=[],u=[],p=[];i&&(p=e.geom.selectors.map(function(b,T){var C=Array.isArray(e.targets)?e.targets[T]:null;return{sel:b,t:C||null,label:C?C.label:b}}));var f=i?p.map(function(b){return ee(b.label,160)}).join(", "):o?o.label:e.type==="note"?"Page note":Is[e.type]||e.type;if(l.push("## "+t+". "+ee(f,160)),n!=="compact"){var g=[Is[e.type]||e.type,($d[e.status]||"Open").toLowerCase(),(ee(e.author,80)||"Anonymous")+Os(e.authorId,r)];e.assignee&&e.assignee.name&&g.push("assigned to "+ee(e.assignee.name,80)),l.push(g.join(" \xB7 "))}e.type==="highlight"&&e.anchor&&e.anchor.exact&&l.push('Quoted: "'+Vn(e.anchor.exact,300)+'"'),e.text&&l.push(Jd(e.text));var y=Array.isArray(e.mentions)?e.mentions:[];if(n!=="compact"&&y.length&&u.push("- Mentions: "+y.map(function(b){return"@"+ee(a&&a[b]||b,80)}).join(", ")),n!=="compact"&&o){if(u.push("- Selector: "+Be(o.selector)),o.component&&(o.component.chain.length||o.component.source)){var w=[];o.component.chain.length&&w.push(Be(o.component.chain.map(function(b){return"<"+b+">"}).join(" "))),o.component.source&&w.push(Be(o.component.source)),u.push("- Component: "+w.join(" \xB7 "))}o.heading&&u.push('- Under heading: "'+Vn(o.heading,80)+'"')}return n!=="compact"&&i&&(u.push("- Elements:"),p.forEach(function(b,T){var C=b.t,A=" "+(T+1)+". ";if(!C){u.push(A+Be(b.sel));return}A+=ee(C.label,160)+" \u2014 "+Be(b.sel),C.component&&C.component.chain.length&&(A+=" \xB7 "+Be(C.component.chain.map(function(M){return"<"+M+">"}).join(" "))),C.component&&C.component.source&&(A+=" \xB7 "+Be(C.component.source)),u.push(A),n==="detailed"&&(C.classes&&C.classes.length&&u.push(" - Classes: "+C.classes.map(Be).join(" ")),u.push(" - Position: "+C.box.x+", "+C.box.y+" \xB7 "+C.box.w+"\xD7"+C.box.h+" px"),C.styles&&Object.keys(C.styles).length&&u.push(" - Styles: "+Object.keys(C.styles).map(function(M){return M+" "+Be(C.styles[M])}).join(", ")))})),n==="detailed"&&(o&&o.classes.length&&u.push("- Classes: "+o.classes.map(Be).join(" ")),o&&u.push("- Position: "+o.box.x+", "+o.box.y+" \xB7 "+o.box.w+"\xD7"+o.box.h+" px"),e.geom&&Ls(e.geom.vw)&&Ls(e.geom.vh)&&u.push("- Viewport when made: "+e.geom.vw+"\xD7"+e.geom.vh),e.type==="highlight"&&e.anchor&&(e.anchor.prefix||e.anchor.suffix)&&u.push('- Text around: "\u2026'+Vn(e.anchor.prefix.slice(-60),80)+" ["+Vn(e.anchor.exact,300)+"] "+Vn(e.anchor.suffix.slice(0,60),80)+'\u2026"'),e.url&&u.push("- URL: "+ee(e.url,2048)),o&&o.styles&&Object.keys(o.styles).length&&(u.push("- Styles:"),Object.keys(o.styles).forEach(function(b){u.push(" - "+b+": "+Be(o.styles[b]))}))),n!=="compact"&&(e.replies||[]).forEach(function(b){u.push("- Reply, "+ee(b.author||"Anonymous",80)+Os(b.authorId,r)+": "+ee(b.text,2e3))}),u.length&&l.push("",u.join("\n")),l.join("\n")}function Zd(e,t){t=t||{};var n=Hr[t.detail]?t.detail:"standard",r=Array.isArray(t.ids)?t.ids:null,a=t.current||null,i=t.project||"",o=t.today||new Date().toISOString().slice(0,10),l=[],u=Object.create(null);(e||[]).forEach(function(y){u[y.page]||(u[y.page]=[],l.push(y.page)),u[y.page].push(y)});var p=[],f=0,g=0;return l.forEach(function(y){var w=u[y],b=w.filter(function(M){return r&&r.indexOf(M.id)<0?!1:!t.includeClosed&&M.resolved?(f++,!1):!0});if(b.length){g+=b.length;var T=!!a&&y===a.page,C=i&&y.indexOf(i+":")===0?y.slice(i.length+1):y,A=[ee(T?a.url:b[0].url,2048)];T&&a.viewport&&A.push("viewport "+a.viewport.w+"\xD7"+a.viewport.h),A.push(b.length+" "+(t.includeClosed?"comment":"open comment")+(b.length===1?"":"s")),A.push(o),p.push("# Review feedback: "+ee(T&&a.title||C,160),A.filter(Boolean).join(" \xB7 ")),b.forEach(function(M){p.push("",Qd(M,w.indexOf(M)+1,n,t.agentId||null,t.names||null))}),p.push("")}}),g?(f&&p.push("_"+f+" closed comment"+(f===1?"":"s")+" left out._"),p.join("\n").replace(/\n{3,}/g,"\n\n").replace(/\s+$/,"")+"\n"):""}function Ms(e){e=e||{};var t=e.scope==="site"&&!E?sr():c.comments.slice();return E||(t=t.map(function(n){var r=Object.assign({},n);return delete r.mentions,r})),Zd(t,{detail:e.detail,includeClosed:e.includeClosed,ids:e.ids,project:k.project,agentId:d.agentId,names:gl(),current:{page:N,url:z.href,title:h.title,viewport:{w:m.innerWidth,h:m.innerHeight}},today:new Date().toISOString().slice(0,10)})}function Gn(){var e=h.getElementById("__an_sharewrap");e&&e.remove()}function ec(){var e=c.comments.slice();if(!e.length){L("No comments to share yet",{kind:"info"});return}var t=(c.share||"").trim();if(!t){L("No share destination set by the author \u2014 use Download instead",{kind:"info"});return}if(h.getElementById("__an_sharewrap"))return;var n=/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(t),r=Wd(e),a=(N||"page").replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,60)||"page";function i(b,T,C){return s("div",{class:"an-sstep"},[s("div",{class:"an-snum",text:String(b)}),s("div",{class:"an-stext"},[T,s("div",{class:"an-srow"},C)])])}function o(b,T,C,A){return s("button",{class:"an-sbtn"+(C?" an-ghost2":""),html:T+"<span>"+yi(b)+"</span>",onclick:A})}var l=o("Download JSON",S.download,!1,function(){Un()}),u;if(n)u=i(2,s("span",{},[h.createTextNode("Email the comments to "),s("b",{text:t}),h.createTextNode(". Open your mail app below (or copy the details), then "),s("b",{text:"attach the file from step 1"}),h.createTextNode(".")]),[o("Open email",S.mail,!1,function(){m.location.href="mailto:"+encodeURIComponent(t)+"?subject="+encodeURIComponent(r.subject)+"&body="+encodeURIComponent(r.body)}),o("Copy address",S.copy,!0,function(){ze(t,"Email address copied")}),o("Copy summary",S.copy,!0,function(){ze(r.subject+"\n\n"+r.body,"Summary copied")})]);else{var p=Kd(t.replace(/\{(page|count|summary)\}/g,function(b,T){return encodeURIComponent(T==="page"?z.href:T==="count"?String(e.length):r.body)}));u=i(2,s("span",{},[h.createTextNode("Post the comments to your channel. Open it below, paste the copied summary, and "),s("b",{text:"attach the file from step 1"}),h.createTextNode(".")]),[p?o("Open channel",S.share,!1,function(){m.open(p,"_blank","noopener")}):null,p?null:o("Copy destination",S.copy,!0,function(){ze(t,"Destination copied")}),o("Copy summary",S.copy,!0,function(){ze(r.subject+"\n\n"+r.body,"Summary copied")})])}var f=s("div",{id:"__an_sharebox"},[s("h3",{class:"an-st",text:"Share your review"}),s("p",{class:"an-sd",text:"Comments live only in this browser. Send them in two steps \u2014 they\u2019re not uploaded anywhere automatically."}),s("div",{class:"an-sdest"},[s("span",{html:n?S.mail:S.share}).firstChild,s("span",{},[s("b",{text:n?"Email to: ":"Channel: "}),h.createTextNode(t)])]),i(1,s("span",{},[h.createTextNode("Download the comments file "),s("b",{text:"(redline-"+a+"-\u2026.json)"}),h.createTextNode(".")]),[l]),u,s("button",{class:"an-sclose",text:"Done",onclick:Gn})]),g=s("div",{id:"__an_sharewrap"},[f]);v(g,"click",function(b){b.target===g&&Gn()}),X().appendChild(g);var y=Ta(g),w=Gn;Gn=function(){y(),Gn=w,w()},R(function(){var b=g.querySelector("button");b&&b.focus()},40)}function Ct(e){var t=c.comments.findIndex(function(n){return n.id===e.id});t>=0?c.comments[t]=e:c.comments.push(e)}function ye(e,t){c.activeId=e,re(),U(),c.panelOpen||rn();var n=c.comments.find(function(y){return y.id===e});if(n){if(t){var r=j.querySelector('[data-id="'+e+'"]');r&&r.scrollIntoView({behavior:"smooth",block:"center"})}else{var a=null;if(n.type==="highlight"&&n.anchor){var i=h.querySelector('[data-an="'+e+'"]');i&&(a=i.getBoundingClientRect().top+m.scrollY-120)}else if(n.type==="group"&&n.geom&&n.geom.selectors)for(var o=0;o<n.geom.selectors.length&&a==null;o++){var l=ht(n,o);l&&(ls(l),a=he(l).y-160)}else if(n.geom){var u=n.geom.selector?Ht(n):h.body;if(u){ls(u);var p=he(u),f=n.geom.y!=null?n.geom.y:n.geom.points?n.geom.points[0][1]:.2;a=p.y+f*p.h-160}}a!=null&&m.scrollTo({top:Math.max(0,a),behavior:"smooth"})}if(t){var g=j.querySelector('[data-id="'+e+'"]');g&&(g.setAttribute("tabindex","-1"),g.focus({preventScroll:!0}))}}}var Rs=!0;function Ps(){var e=xi();e!==N&&((Z||ae)&&(ae=null,Wt()),Ft(),N=e,c.activeId=null,c.comments=pa().filter(function(t){return!nt[t.id]}))}function on(){if(Ft(),pt=Object.create(null),!(Z||ae)&&(c.comments=pa().filter(function(n){return!nt[n.id]}),re(),U(),Rs)){Rs=!1;var e=z.hash.match(/^#an=(.+)$/);if(e){var t=decodeURIComponent(e[1]);c.comments.some(function(n){return n.id===t})&&R(function(){ye(t,!1)},150)}}}function Ns(){Ps(),on()}var sn=0,ln=0;function Ds(){if(P(sn),P(ln),sn=ln=0,!(!c.enabled||O)){if(ae||Z){oi();return}X(),Dr(),re()}}function oi(){P(sn),sn=R(Ds,150),ln||(ln=R(Ds,1e3))}var tc=["class","style","hidden","open"],js=["aria-label","aria-labelledby","data-testid","data-test","data-cy","data-qa","id","href","name","title","alt","placeholder","value","type"];function si(){return{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:tc.concat(js)}}function nc(){!Ae&&m.MutationObserver&&(Ae=new m.MutationObserver(function(e){if(!c.enabled){ce&&!ce.isConnected&&X();return}for(var t=!1,n=!1,r=0;r<e.length&&!t;r++){var a=e[r];Q(a.target)||(a.type==="attributes"&&js.indexOf(a.attributeName)>=0?n=!0:(a.type!=="childList"||Array.prototype.some.call(a.addedNodes,function(i){return!Q(i)})||Array.prototype.some.call(a.removedNodes,function(i){return i===ce||!Q(i)}))&&(t=!0))}(t||n)&&Ft(),t&&oi()})),Ae&&(Ae.disconnect(),On=[],c.enabled?(Ae.observe(h.documentElement,si()),Te.forEach(ss)):(P(sn),P(ln),sn=ln=0,Ae.observe(h.documentElement,{subtree:!0,childList:!0})))}function rc(){if(!k.spa)return;var e=0;function t(){Ge(),Ps(),P(e),e=R(function(){on()},0)}v(m,"popstate",t),["pushState","replaceState"].forEach(function(n){var r=m.history[n],a=function(){var i=r.apply(this,arguments);return O||t(),i};m.history[n]=a,rt.push(function(){m.history[n]===a&&(m.history[n]=r)})})}var zs=!1;function ac(){var e=m.AbortController?new m.AbortController:null,t=R(function(){e&&e.abort()},5e3);return Vr[k.workspace]=!0,m.fetch(hi+"/v1/annotate/workspaces/"+encodeURIComponent(k.workspace)+"/site",{credentials:"omit",cache:"no-store",signal:e?e.signal:void 0}).then(function(n){if(n.status===404)return null;if(!n.ok)throw new Error("HTTP "+n.status);return n.json().then(function(r){if(!r||typeof r.reviewId!="string"||!Si.test(r.reviewId))throw new Error("bad answer");return r.reviewId})}).then(function(n){return P(t),D.set(Ei,JSON.stringify({reviewId:n,at:Date.now()})),{ok:!0,reviewId:n}},function(){return P(t),{ok:!1}})}function Bs(e){zs=e;var t=h.getElementById("__an_root");t&&t.classList.toggle("an-checking",e),xe&&(e?(xe.textContent="Checking Redline Cloud\u2026",xe.classList.add("an-show")):xe.textContent==="Checking Redline Cloud\u2026"&&(xe.classList.remove("an-show"),xe.textContent=""))}function Fs(){!gn||Vr[k.workspace]||((!Tt||Wr)&&Bs(!0),ac().then(function(e){O||(Bs(!1),e.ok&&e.reviewId!==($r?k.reviewId:null)&&Js(c.enabled?"tools":""))}))}function Hs(){var e=new URLSearchParams;if(e.set("url",pr()),at)e.set("review",k.reviewId);else if(k.workspace)e.set("workspace",k.workspace);else return;z.assign(Gr+"/connect?"+e.toString())}var Us="claude mcp add redline -- npx -y -p @perpetio/redline@latest redline-mcp",ic="https://www.npmjs.com/package/@perpetio/redline#ai-agents-mcp",oc={connecting:"Connecting\u2026",connected:"Connected",stopped:"Not running"},un=null,ie=null,Ys=0,li=0,dn="connecting";function sc(){return hn&&!at}function lc(){var e=m.AbortController?new m.AbortController:null,t=R(function(){e&&e.abort()},2e3);return m.fetch(gi+"/v1/annotate/health",{credentials:"omit",cache:"no-store",signal:e?e.signal:void 0}).then(function(n){return n.ok?n.json():null}).then(function(n){return!!(n&&n.service==="annotate")},function(){return!1}).then(function(n){return P(t),n})}function qs(e){lc().then(function(t){O||e!==li||(dn=t?"connected":"stopped",Vs(),Ys=R(function(){qs(e)},3e3))})}function Ur(){return!!ie&&ie.classList.contains("an-show")}function Xs(){if(!(!ie||Ur())){dn="connecting",$s(),ie.classList.add("an-show"),un.setAttribute("aria-expanded","true"),sc()&&qs(++li);var e=ie.querySelector("button:not([disabled]), a");e&&e.focus()}}function ui(e){Ur()&&(li++,P(Ys),ie.classList.remove("an-show"),un.setAttribute("aria-expanded","false"),e&&un.focus())}function Vs(){if(ie){var e=ie.querySelector(".an-set-status");e&&e.getAttribute("data-state")!==dn&&(e.setAttribute("data-state",dn),e.lastChild.textContent=oc[dn]);var t=ie.querySelector(".an-set-help");t&&(t.hidden=dn!=="stopped")}}function Gs(e,t){var n=s("section",{class:"an-set-sec","data-section":e,"aria-labelledby":"__an_set_"+e});return n.appendChild(s("div",{class:"an-set-title"},[s("span",{id:"__an_set_"+e,text:t})])),n}function Ks(){var e=s("button",{class:"an-set-copy an-set-connect",type:"button","data-action":"connect",text:"Connect to Redline"});return v(e,"click",function(t){t.stopPropagation(),Hs()}),e}function Ke(e){return s("p",{class:"an-set-note",text:e})}function uc(){var e=Gs("cloud","Redline Cloud");return at&&d.reviewer?e.appendChild(s("p",{class:"an-set-note"},["Signed in as "+(d.reviewer.name||"you")+(d.reviewName?" \xB7 "+d.reviewName:"")])):at?(e.appendChild(Ke("Sign in with your Redline account to review as yourself.")),e.appendChild(Ks())):k.workspace?(e.appendChild(Ke("This site isn't linked to a review yet. Members of the workspace can link it.")),e.appendChild(Ks())):(e.appendChild(Ke("Add your workspace snippet to share comments with your team.")),e.appendChild(s("a",{class:"an-set-link",href:Gr,target:"_blank",rel:"noopener noreferrer",text:"Get the snippet \u2192"}))),e}function Ws(e){var t=s("button",{class:"an-switch",type:"button",role:"switch","data-action":"agent-switch","aria-checked":mn?"true":"false","aria-labelledby":"__an_set_sw"});return e?t.disabled=!0:v(t,"click",function(n){n.stopPropagation(),D.set(Ai,mn?"off":"on"),Js("settings")}),s("div",{class:"an-set-row"},[s("span",{id:"__an_set_sw",text:"Send comments to my coding agent"}),t])}function dc(){return d.reviewer?d.agentSeenAt?"Agent last connected "+At(d.agentSeenAt):d.agentId?"Agent connected":"No agent yet":"Connect to Redline to see this review's agent."}function cc(){var e=Gs("mcp","MCP");if(at)return e.appendChild(Ke(dc())),d.reviewer&&d.reviewer.role==="author"&&e.appendChild(s("a",{class:"an-set-link",href:Gr+"/r/"+encodeURIComponent(k.reviewId)+"/agent",target:"_blank",rel:"noopener noreferrer",text:"Set up your coding agent \u2192"})),hn&&$r&&(e.appendChild(Ws(!0)),e.appendChild(Ke("This site is linked to a Redline Cloud review, so your coding agent reads it there."))),e;if(!hn)return e.appendChild(Ke("Your coding agent reads Redline Cloud reviews. Link this site to a review first.")),e;e.firstChild.appendChild(s("span",{class:"an-set-status",role:"status","data-state":""},[s("span",{class:"an-set-dot"}),h.createTextNode("")])),e.appendChild(Ws(Ci)),Ci?e.appendChild(Ke("Set by data-review-id on this page.")):mn&&e.appendChild(Ke("Comments on this site go to the redline-mcp running on this computer. Comments you left before stay in this browser; turn this off to see them."));var t=s("button",{class:"an-set-copy",type:"button","data-action":"copy-agent-command",text:"Copy"});return v(t,"click",function(n){n.stopPropagation(),ze(Us,"Command copied")}),e.appendChild(s("div",{class:"an-set-help"},[Ke("Your coding agent starts it. Add Redline to Claude Code from your project folder:"),s("div",{class:"an-set-cmd"},[s("code",{text:Us}),t]),s("a",{class:"an-set-link",href:ic,target:"_blank",rel:"noopener noreferrer",text:"Other MCP clients \u2192"})])),e}function $s(){ie.innerHTML="",ie.appendChild(s("h3",{class:"an-set-h",id:"__an_set_t",text:"Settings"})),ie.appendChild(uc()),ie.appendChild(cc()),Vs()}function Js(e){Kn=e===void 0?"settings":e,Me.destroy(),Me.init(qr,Xr)}function Qs(){if(!(O||We)){if(We=!0,Xl(),Vl(),E&&!cr()&&!Nt&&ba(),md(),gn&&(Wr||Tt&&Date.now()-Tt.at>dl)&&Fs(),Dr(),Sr(),Fo(),yd(),rc(),Ye("cursor"),kt(),Ns(),/^#an=./.test(z.hash)||k.startOpen?je(!0):je(!1),Kn){var e=Kn;Kn="",je(!0),e==="settings"&&Xs()}no()}}function Zs(){c.enabled||je(!0)}var fc={version:pi,config:k,open:function(){Zs(),rn()},close:function(){Bn()},toggle:function(){c.enabled?Qa():(je(!0),rn())},enable:function(){je(!0)},disable:function(){je(!1)},setTool:function(e){Zs(),Ye(e)},refresh:function(){Ns(),E&&(d.held=!1,d.etag="",Qe(!d.token).then(function(e){e&&(ne(0),dt())},function(){}))},comments:function(){return c.comments.map(It)},focus:function(e){ye(e,!1)},toast:L,export:function(e){Un(e)},import:function(){ai()},submit:Es,setStatus:function(e,t){return ks(e,t)},assign:function(e,t){return Cs(e,t)},syncState:function(){return xa()},markdown:function(e){return Ms(e)},setFrozen:function(e){return zn(e)},isFrozen:function(){return!!G},copy:function(e){return e=e||{},e.format==="json"?ri(e.scope):Xn(e)},destroy:function(){if(!O){zn(!1),Ge(),O=!0,Ae&&Ae.disconnect(),ge&&ge.disconnect(),rt.forEach(function(t){t()}),rt=[],cn.forEach(function(t){m.clearTimeout(t)}),cn.clear(),fn.forEach(function(t){m.cancelAnimationFrame(t)}),fn.clear(),Br&&Br.abort(),wt&&(P(wt.timer),wt.reject(new Error("Redline was destroyed")),wt=null),to(),$n.forEach(function(t){URL.revokeObjectURL(t)}),$n.clear(),h.body&&h.body.classList.remove("an-drawing","an-highlighting"),ce&&ce.remove();var e=h.getElementById("__an_style");e&&e.remove()}},clear:function(){var e=te(),t=[];e.comments=e.comments.filter(function(n){var r=n&&n.page===N&&(!E||Lt(n));return r&&t.push(n.id),!r}),Object.keys(q).forEach(function(n){q[n]&&q[n].page===N&&(!E||Lt(q[n]))&&(t.indexOf(n)<0&&t.push(n),delete q[n])}),Fe(e),t.forEach(function(n){Gi(n,0)}),on()}};return h.readyState==="loading"?v(h,"DOMContentLoaded",Qs):Qs(),fc}});
|