graview 0.1.61 → 0.1.62
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/preview/{chunk.SAYAFOF6.js → chunk.22BZU7ME.js} +1 -1
- package/dist/preview/chunk.2AT3GRXM.js +1 -0
- package/dist/preview/chunk.2B6P4GPS.js +1 -0
- package/dist/preview/{chunk.XZUHFXME.js → chunk.2GEJNG2U.js} +1 -1
- package/dist/preview/{chunk.R3N73BJO.js → chunk.2N4Z5K5S.js} +1 -1
- package/dist/preview/{chunk.3HFUO3DC.js → chunk.3FON2Y72.js} +1 -1
- package/dist/preview/chunk.3L37FY3G.js +4 -0
- package/dist/preview/{chunk.CRCJ3TAG.js → chunk.4HEFUOLV.js} +1 -1
- package/dist/preview/chunk.4HRYB7HF.js +1 -0
- package/dist/preview/{chunk.GQNSNJTJ.js → chunk.4TX6VCBT.js} +1 -1
- package/dist/preview/{chunk.4LG34OC2.js → chunk.5HGD6OWL.js} +2 -2
- package/dist/preview/{chunk.6VLCMBRE.js → chunk.5J3O2FVG.js} +1 -1
- package/dist/preview/{chunk.DP5DUV6F.js → chunk.5MZYCELA.js} +1 -1
- package/dist/preview/{chunk.F4VHCQNP.js → chunk.5ODHHH35.js} +1 -1
- package/dist/preview/{chunk.D5Q64GA4.js → chunk.5STU3KYG.js} +1 -1
- package/dist/preview/{chunk.PYVWGTQS.js → chunk.5YAOKOGV.js} +1 -1
- package/dist/preview/{chunk.E6RNMWFN.js → chunk.66P5IDTH.js} +1 -1
- package/dist/preview/{chunk.EN2ABVIP.js → chunk.6AKW7TXM.js} +1 -1
- package/dist/preview/{chunk.GI6XQF5X.js → chunk.6JO5HQDR.js} +1 -1
- package/dist/preview/{chunk.SIYBHZDD.js → chunk.75GVFX7L.js} +1 -1
- package/dist/preview/{chunk.E7UDVC4V.js → chunk.7KVUUEZA.js} +1 -1
- package/dist/preview/{chunk.W5TVQYAI.js → chunk.7M4HNKDR.js} +1 -1
- package/dist/preview/chunk.7OBIBPYH.js +1 -0
- package/dist/preview/chunk.7V56P2A7.js +1 -0
- package/dist/preview/{chunk.A2ZQASQV.js → chunk.7XLS6XTY.js} +1 -1
- package/dist/preview/chunk.7YOAW7ED.js +1 -0
- package/dist/preview/{chunk.3SMNWZ3M.js → chunk.A3OL2BI2.js} +1 -1
- package/dist/preview/{chunk.WS7LAT4Z.js → chunk.A3ZC2JBO.js} +1 -1
- package/dist/preview/{chunk.HZHNM2KI.js → chunk.ACTXR2MI.js} +1 -1
- package/dist/preview/chunk.AFNSAQEQ.js +1 -0
- package/dist/preview/{chunk.AVFOTYZR.js → chunk.AI34V6WV.js} +4 -4
- package/dist/preview/{chunk.VN7I7XIO.js → chunk.AJSUHPBE.js} +1 -1
- package/dist/preview/chunk.AQRB7LDA.js +1 -0
- package/dist/preview/{chunk.3FUUYYR5.js → chunk.B23WZQXQ.js} +1 -1
- package/dist/preview/chunk.BIDL7GQD.js +0 -0
- package/dist/preview/chunk.BLUKSGI4.js +1 -0
- package/dist/preview/chunk.BZMQDEIY.js +1 -0
- package/dist/preview/chunk.CAKFNKN5.js +1 -0
- package/dist/preview/chunk.CGALLZ54.js +1 -0
- package/dist/preview/{chunk.65KFZV3A.js → chunk.CHHYIMB7.js} +1 -1
- package/dist/preview/chunk.CXDGE5ZS.js +1 -0
- package/dist/preview/{chunk.KRFRREEW.js → chunk.CY3ELWCM.js} +1 -1
- package/dist/preview/chunk.DC35FJAB.js +1 -0
- package/dist/preview/{chunk.ZJCM62GH.js → chunk.DD2NKFDX.js} +1 -1
- package/dist/preview/{chunk.DHY7KOBV.js → chunk.DDO3GLEJ.js} +1 -1
- package/dist/preview/{chunk.6HZY5NRX.js → chunk.DDUCIUVW.js} +1 -1
- package/dist/preview/chunk.DEAP3H2L.js +1 -0
- package/dist/preview/chunk.DHJ3FQTR.js +1 -0
- package/dist/preview/{chunk.R5547CJ7.js → chunk.DNVWSWL2.js} +1 -1
- package/dist/preview/chunk.DPEIT3TW.js +1 -0
- package/dist/preview/chunk.DVSTLVIH.js +15 -0
- package/dist/preview/chunk.DZZL5IDD.js +5 -0
- package/dist/preview/{chunk.U2ISOUM2.js → chunk.ELOFPE25.js} +1 -1
- package/dist/preview/{chunk.7LZ6JDJA.js → chunk.ELTV44HU.js} +2 -2
- package/dist/preview/chunk.EVBCEEQ4.js +1 -0
- package/dist/preview/{chunk.HQNE4I4M.js → chunk.F7YXLYLX.js} +1 -1
- package/dist/preview/{chunk.MK72IRIY.js → chunk.FULEUL34.js} +1 -1
- package/dist/preview/{chunk.HOQMD6WQ.js → chunk.G4ULQK64.js} +14 -14
- package/dist/preview/{chunk.UXOBUK3C.js → chunk.GX4G4BX3.js} +1 -1
- package/dist/preview/chunk.H24OC6OE.js +1 -0
- package/dist/preview/chunk.H5S7OL2U.js +1 -0
- package/dist/preview/chunk.H73ZPYUX.js +1 -0
- package/dist/preview/{chunk.FJIXSGYU.js → chunk.H7N7WN4U.js} +1 -1
- package/dist/preview/chunk.HANJZ6FA.js +1 -0
- package/dist/preview/chunk.HIMQ65QT.js +1 -0
- package/dist/preview/chunk.I77ZGIFE.js +1 -0
- package/dist/preview/{chunk.ZC3FRCJQ.js → chunk.ILIIBSGA.js} +1 -1
- package/dist/preview/{chunk.66IKLMYX.js → chunk.IQ3PRWGO.js} +1 -1
- package/dist/preview/{chunk.DLDP6OWD.js → chunk.IQMD7DG3.js} +1 -1
- package/dist/preview/chunk.IQPILSV3.js +18 -0
- package/dist/preview/chunk.IYBEXENQ.js +1 -0
- package/dist/preview/{chunk.5S7IGASX.js → chunk.J7Q2WAF4.js} +1 -1
- package/dist/preview/{chunk.PJ5AO7CK.js → chunk.JT3MFPRD.js} +1 -1
- package/dist/preview/chunk.JYFZCJ4N.js +2 -0
- package/dist/preview/chunk.K2HDEL7I.js +1 -0
- package/dist/preview/chunk.KDXU5DT3.js +1 -0
- package/dist/preview/chunk.KL7E4YHJ.js +1 -0
- package/dist/preview/{chunk.SBLYBRDU.js → chunk.KMV6PJFL.js} +1 -1
- package/dist/preview/{chunk.DHJI7LIW.js → chunk.L3WTKQQL.js} +1 -1
- package/dist/preview/{chunk.REH6RXNH.js → chunk.LAYQ5PFS.js} +1 -1
- package/dist/preview/{chunk.UACSX64H.js → chunk.LGRLVJGS.js} +3 -3
- package/dist/preview/chunk.LTZUF5VG.js +1 -0
- package/dist/preview/{chunk.WD4VPMEE.js → chunk.M4AYA2PL.js} +1 -1
- package/dist/preview/chunk.M7RESZB6.js +25 -0
- package/dist/preview/{chunk.CUTLO6DA.js → chunk.MAKODQO3.js} +1 -1
- package/dist/preview/{chunk.SKQO467Y.js → chunk.MDEX6ZVE.js} +1 -1
- package/dist/preview/chunk.MGALQLRW.js +1 -0
- package/dist/preview/{chunk.PZXTSWDH.js → chunk.MYNMBOLD.js} +1 -1
- package/dist/preview/{chunk.YGIJDHAV.js → chunk.N6EJXXQK.js} +2 -2
- package/dist/preview/chunk.NAD7ZXYP.js +1 -0
- package/dist/preview/chunk.NHTGAP3G.js +3 -0
- package/dist/preview/{chunk.5IEFTFKQ.js → chunk.NJSK3UO2.js} +1 -1
- package/dist/preview/{chunk.ISRQQVS4.js → chunk.NOGGSLVG.js} +1 -1
- package/dist/preview/chunk.NUWDMH47.js +1 -0
- package/dist/preview/chunk.NUYA4BWI.js +1 -0
- package/dist/preview/{chunk.BDTT4ENI.js → chunk.O2BHPYA4.js} +2 -2
- package/dist/preview/chunk.O75HWF3F.js +1 -0
- package/dist/preview/chunk.OFWNMTGB.js +21 -0
- package/dist/preview/chunk.OKZT2QBM.js +2 -0
- package/dist/preview/{chunk.MBPOYZ3J.js → chunk.OUDATENL.js} +1 -1
- package/dist/preview/chunk.OUPURRDE.js +1 -0
- package/dist/preview/{chunk.GIW657OR.js → chunk.OWOOKLIU.js} +2 -1
- package/dist/preview/{chunk.7R727IKU.js → chunk.OWT3VVOT.js} +1 -1
- package/dist/preview/{chunk.VYFMUCBT.js → chunk.PCDUV3WP.js} +1 -1
- package/dist/preview/chunk.PD2DECOP.js +1 -0
- package/dist/preview/{chunk.2WZAFKJ2.js → chunk.PKWQKFPE.js} +1 -1
- package/dist/preview/{chunk.747OH3EE.js → chunk.PLTH2LW5.js} +1 -1
- package/dist/preview/{chunk.5POG3G2C.js → chunk.PZQNR4KZ.js} +1 -1
- package/dist/preview/chunk.Q5WEOX3Q.js +1 -0
- package/dist/preview/chunk.QDWSU47A.js +1 -0
- package/dist/preview/{chunk.U3JK2DNC.js → chunk.QGU5QTR6.js} +1 -1
- package/dist/preview/{chunk.6DOOLVT4.js → chunk.QHY5NVYH.js} +1 -1
- package/dist/preview/{chunk.BI6DS3PZ.js → chunk.QIPASE42.js} +1 -1
- package/dist/preview/{chunk.EVEHSENK.js → chunk.RD2X25XB.js} +1 -1
- package/dist/preview/{chunk.D4TA5XDC.js → chunk.RMR24LFJ.js} +3 -3
- package/dist/preview/chunk.ROZTJ6IY.js +6 -0
- package/dist/preview/{chunk.6SO64TUI.js → chunk.RPDH32XV.js} +1 -1
- package/dist/preview/chunk.RRKI24WY.js +1 -0
- package/dist/preview/{chunk.FWUG7Y6C.js → chunk.RYRQ66JN.js} +1 -1
- package/dist/preview/chunk.SEHRPTNA.js +7 -0
- package/dist/preview/{chunk.MBU7UH6J.js → chunk.SGCW2XRC.js} +1 -1
- package/dist/preview/{chunk.4G32374Q.js → chunk.SS7234R6.js} +1 -1
- package/dist/preview/{chunk.WICFQROI.js → chunk.SVPKUWZU.js} +1 -1
- package/dist/preview/{chunk.2LNSENPV.js → chunk.SWMDFXUX.js} +1 -1
- package/dist/preview/{chunk.XFSGB6EU.js → chunk.T3UQ7ZQK.js} +1 -1
- package/dist/preview/chunk.T6PU3NKP.js +1 -0
- package/dist/preview/{chunk.ZVG3DR5G.js → chunk.T6WHGKWR.js} +1 -1
- package/dist/preview/{chunk.JEQO24GS.js → chunk.THVC2BEC.js} +1 -1
- package/dist/preview/{chunk.SJALH7IX.js → chunk.TIALD6SC.js} +1 -1
- package/dist/preview/{chunk.ULHB3RYK.js → chunk.TM4EPUNO.js} +1 -1
- package/dist/preview/chunk.U6ZRJKVM.js +1 -0
- package/dist/preview/chunk.UFDJXQQQ.js +32 -0
- package/dist/preview/{chunk.Y7H5O2SL.js → chunk.UKQUUPKE.js} +1 -1
- package/dist/preview/{chunk.IA5ZBMRD.js → chunk.UQQKDBIH.js} +1 -1
- package/dist/preview/{chunk.NUEPFPRA.js → chunk.UVA7AALY.js} +1 -1
- package/dist/preview/chunk.UXMPFPFH.js +20 -0
- package/dist/preview/chunk.VACKSKGJ.js +1 -0
- package/dist/preview/{chunk.ZQHCNFJK.js → chunk.VC3V7HLL.js} +1 -1
- package/dist/preview/{chunk.N5WDQAIM.js → chunk.VIH5AX7S.js} +2 -2
- package/dist/preview/{chunk.ZKAZA6UJ.js → chunk.VJBBVLGZ.js} +1 -1
- package/dist/preview/chunk.VN23AGIY.js +1 -0
- package/dist/preview/{chunk.2XSIJH5J.js → chunk.W4BKYSZX.js} +1 -1
- package/dist/preview/{chunk.XZWXDQ3N.js → chunk.WEOVK2T4.js} +1 -1
- package/dist/preview/chunk.WKI5INH7.js +1 -0
- package/dist/preview/chunk.WPXPVD33.js +88 -0
- package/dist/preview/chunk.X6KYRBL6.js +1 -0
- package/dist/preview/{chunk.LA2DMHZC.js → chunk.Y2YYH3JN.js} +1 -1
- package/dist/preview/{chunk.MU3XII7I.js → chunk.Y4FZKUOK.js} +1 -1
- package/dist/preview/chunk.Y4S7CDRB.js +1 -0
- package/dist/preview/{chunk.C634A6ZC.js → chunk.YP2QSPXU.js} +1 -1
- package/dist/preview/{chunk.JHAFQNGC.js → chunk.Z2TDZSMN.js} +1 -1
- package/dist/preview/{chunk.2QFKNTAZ.js → chunk.ZN3PUM2I.js} +1 -1
- package/dist/preview/index.html +53 -51
- package/dist/preview/page.js +2 -2
- package/dist/preview/splash.js +57 -0
- package/package.json +6 -6
- package/dist/preview/chunk.2AWVQ5SW.js +0 -1
- package/dist/preview/chunk.3ICWPRRJ.js +0 -1
- package/dist/preview/chunk.3RW677X6.js +0 -1
- package/dist/preview/chunk.4OEWFPH3.js +0 -1
- package/dist/preview/chunk.4STDIZVI.js +0 -2
- package/dist/preview/chunk.5T53SF2K.js +0 -1
- package/dist/preview/chunk.5X22RKB3.js +0 -1
- package/dist/preview/chunk.644FUGSX.js +0 -1
- package/dist/preview/chunk.7CETF4A6.js +0 -1
- package/dist/preview/chunk.BFDJTWGX.js +0 -88
- package/dist/preview/chunk.BJI2C3IZ.js +0 -1
- package/dist/preview/chunk.DKXVEVDG.js +0 -1
- package/dist/preview/chunk.DXWTM4SH.js +0 -1
- package/dist/preview/chunk.F7IQ4B6A.js +0 -1
- package/dist/preview/chunk.F7PIW2EM.js +0 -5
- package/dist/preview/chunk.G4VMRYS4.js +0 -1
- package/dist/preview/chunk.GPWYWALF.js +0 -1
- package/dist/preview/chunk.HGVBGSRS.js +0 -6
- package/dist/preview/chunk.ISXNAFRC.js +0 -20
- package/dist/preview/chunk.JU3BCCQM.js +0 -1
- package/dist/preview/chunk.K2AC536Q.js +0 -21
- package/dist/preview/chunk.K3UOXAZS.js +0 -1
- package/dist/preview/chunk.KNYLY7MH.js +0 -1
- package/dist/preview/chunk.LQAT7FA6.js +0 -3
- package/dist/preview/chunk.LTI5PKTS.js +0 -1
- package/dist/preview/chunk.MBP7VDYM.js +0 -1
- package/dist/preview/chunk.MH6CCHEX.js +0 -1
- package/dist/preview/chunk.MNRTA2CB.js +0 -1
- package/dist/preview/chunk.MYVED5LU.js +0 -1
- package/dist/preview/chunk.N7T7VB77.js +0 -25
- package/dist/preview/chunk.ODVRO2BJ.js +0 -1
- package/dist/preview/chunk.OVPFROL3.js +0 -1
- package/dist/preview/chunk.PGA5TUSN.js +0 -1
- package/dist/preview/chunk.PHC2MI4C.js +0 -1
- package/dist/preview/chunk.PXQVXBNG.js +0 -1
- package/dist/preview/chunk.Q5I5M3FR.js +0 -1
- package/dist/preview/chunk.QATUGE34.js +0 -1
- package/dist/preview/chunk.QL77K3D4.js +0 -1
- package/dist/preview/chunk.QUJS63OJ.js +0 -13
- package/dist/preview/chunk.RZ5PPQBV.js +0 -1
- package/dist/preview/chunk.SCGF4ZPP.js +0 -1
- package/dist/preview/chunk.SLAZFFCQ.js +0 -1
- package/dist/preview/chunk.SLPJWOKC.js +0 -1
- package/dist/preview/chunk.TKLYUVMR.js +0 -32
- package/dist/preview/chunk.TMAZNDA6.js +0 -1
- package/dist/preview/chunk.UDCDK7XJ.js +0 -4
- package/dist/preview/chunk.UO544PZH.js +0 -1
- package/dist/preview/chunk.VKHAAH32.js +0 -1
- package/dist/preview/chunk.VOOOIECX.js +0 -1
- package/dist/preview/chunk.VS6NT5C4.js +0 -1
- package/dist/preview/chunk.VUAOCYG2.js +0 -1
- package/dist/preview/chunk.VX65S2FA.js +0 -1
- package/dist/preview/chunk.X2I3XH2E.js +0 -2
- package/dist/preview/chunk.XWWSW3ZV.js +0 -7
- package/dist/preview/chunk.YOT7ESDG.js +0 -18
- package/dist/preview/chunk.ZYNUMVEC.js +0 -1
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{a as gr,b as fe,c as Ge,d as Nn,f as _e,g as mr,h as Ke,i as In,j as ki}from"./chunk.FQLNBIQ5.js";var br="en-US",mt=/^\d{4}-\d{2}-\d{2}$/,Si=/^\d{4}(?:-(?:0[1-9]|1[0-2]))?$/,vr=/^\d{4}(?:-(?:0[1-9]|1[0-2])(?:-\d{2})?)?$/,yt=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,Rh=n=>!Number.isNaN(Date.parse(n)),ne=(n,e=Date.now())=>{let t=bt(n);return t?wr(e,t).day:new Date(e).toISOString().slice(0,10)},bt=n=>un(n)??ln,Tn,jn,Dn,ln;function Lc(n){Tn=Fn(n.reader),jn=Fn(n.app),Dn=un(n.readerTimeZone),ln=un(n.appTimeZone)}function Zc(n,e){let t=[Tn,jn,Dn,ln];n.reader!==void 0&&(Tn=Fn(n.reader)),n.app!==void 0&&(jn=Fn(n.app)),n.readerTimeZone!==void 0&&(Dn=un(n.readerTimeZone)),n.appTimeZone!==void 0&&(ln=un(n.appTimeZone));try{return e()}finally{[Tn,jn,Dn,ln]=t}}var Ri=n=>Tn??Fn(n)??jn??br,vt=n=>Dn??un(n)??ln,Cc=n=>vt(n)??Intl.DateTimeFormat().resolvedOptions().timeZone??"UTC",Gc=/^\s*([+\-−]|\d)/;var yr=new Map;function un(n){if(n&&!yr.has(n)){let e=!1;try{new Intl.DateTimeFormat(br,{timeZone:n}),e=!Gc.test(n)}catch{}yr.set(n,e)}return n&&yr.get(n)?n:void 0}var Be=new Map;function Fn(n){if(n&&!Be.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}Be.set(n,e)}return n&&Be.get(n)?n:void 0}function Oe(n,e,t,r){let o=`${t=Ri(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=Be.get(o);return i||Be.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var Ve="UTC",wt=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function Pe(n,e){return Si.test(n)?n.length===4?n:Oi(n,{},e):mt.test(n)?Oe(wt(n),{year:"numeric",month:"short",day:"numeric",timeZone:Ve},e):n}function wr(n,e){let t=`wall@${e??""}`,r=Be.get(t);r||Be.set(t,r=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23",...e?{timeZone:e}:{}}));let o=Object.fromEntries(r.formatToParts(n).map(i=>[i.type,i.value]));return{day:`${o.year}-${o.month}-${o.day}`,minutes:Number(o.hour)%24*60+Number(o.minute)}}function $i(n,e,t){let r=Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),o=i=>{let s=wr(i,t);return Kc(s.day,s.minutes)-Math.floor(i/6e4)*6e4};return r-o(r-o(r))}var Kc=(n,e)=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),Ai=n=>/[Z+-][\d:]*$/.test(n.slice(16));function _i(n,e,t,r,o=!1){if(!yt.test(n))return n;let i=Ai(n),s=Date.parse(n.replace(" ","T")+(i?"":"Z"));if(Number.isNaN(s))return n;let a=i?vt(r):Ve;return Oe(s,{...e,hour:"numeric",minute:"2-digit",...i&&o?{timeZoneName:"short"}:{},...a?{timeZone:a}:{}},t)}var xr=(n,e,t)=>_i(n,{year:"numeric",month:"short",day:"numeric"},e,t,!0),Bc=(n,e,t)=>_i(n,{},e,t);function Vc(n,e){if(mt.test(n))return n;if(!yt.test(n))return;if(!Ai(n))return n.slice(0,10);let t=Date.parse(n.replace(" ","T"));return Number.isNaN(t)?void 0:wr(t,vt(e)).day}function ye(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?Oe(n,t,e,!0):String(n)}function Uc(n,e={},t){return mt.test(n)?Oe(wt(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:Ve},t):n}function Wc(n,e){return mt.test(n)?Oe(wt(n),{month:"short",day:"numeric",timeZone:Ve},e):n}function Oi(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return Oe(wt(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:Ve},t)}var qc=(n,e="short",t)=>Oe(Date.UTC(1970,0,4+n),{weekday:e,timeZone:Ve},t),Hc=(n,e)=>Oe(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:Ve},e),Yc=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function kr(n,e){return n.includes("-")?n.replace(Yc,t=>Pe(t,e)):n}var fn=n=>n.charAt(0).toUpperCase()+n.slice(1),Pi=n=>/^.\p{Lu}/u.test(n)?n:n.charAt(0).toLowerCase()+n.slice(1),Ei=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"";function K(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return fn(e.replace(/\b[a-z]+\b/g,t=>Mi.has(t)?t.toUpperCase():t.endsWith("s")&&Mi.has(t.slice(0,-1))?`${t.slice(0,-1).toUpperCase()}s`:t))}var Mi=new Set("id url uri api ip ioc cve cvss cwe cpe sku vat iban isbn pdf csv json html css sla kpi roi faq ssn ein vin gps sms crm erp seo utm ui ux ai dns ssl tls http https sql uuid mfa sso cto ceo cfo coo rsvp eta".split(" "));function Jc(n,e){return{...e,kind:n,edges:e.edges??{}}}function Sr(n,e,t){let r=n?.lifecycle;if(!r)return!0;let o=e[r.field];return r.retired==="date"?typeof o!="string"||o.length===0?!0:o>=(t??ne()):!r.retired.includes(o)}function B(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function Xc(n){return n.title??K(n.name)}function Qc(n,e,t){let r=n.tryDefinition(e);return`${ye(t)} ${t===1?Y(r,e):ae(n,e).toLowerCase()}`}function ae(n,e){return n.tryDefinition(e)?.plural??`${K(e).toLowerCase()}s`}function el(n,e){return fn(ae(n,e))}function nl(n,e){let t=ae(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function xt(n,e){let t=n?.computed&&Object.hasOwn(n.computed,e)?n.computed[e]:void 0;return n?.display?.labels?.[e]??(typeof t=="object"?t.label:void 0)??(e==="label"?"Name":K(e))}var tl=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,rl=/^(hour|honest|hono[ur]r?|heir)/;function zi(n){let e=K(n).toLowerCase();return rl.test(e)?"an":tl.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function pn(n){return`${zi(n)} ${K(n).toLowerCase()}`}function Y(n,e){return n?.noun??K(e).toLowerCase()}function Ar(n){let e=Object.values(n).filter(r=>typeof r=="number");return Object.entries(n).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function _r(n,e="|"){return n.map(t=>zr(t)).join(e)}function Ii(n,e){return typeof e=="bigint"?e.toString():e}var $r=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function Ti(n){return new $r(n)}function ji(n){return n==null}function Or(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function Di(n,e){let t=n/e,r=Math.round(t),o=4*Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-r)<o?0:t-r}var Ni=Symbol("evaluating");function Fi(n,e,t){let r;Object.defineProperty(n,e,{get(){if(r!==Ni)return r===void 0&&(r=Ni,r=t()),r},set(o){Object.defineProperty(n,e,{value:o})},configurable:!0})}function St(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function Li(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function Pr(n){return Li(n._zod.def)??n._zod.def.shape}function Zi(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return St(this,e,r),r},enumerable:!0,configurable:!0})}function Ci(n,e,t){e in n?St(n,e,t):n[e]=t}function ol(n,e,t,r){let o=Pr(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?Zi(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):Ci(n,i,r?r(s.value,i):s.value))}}function il(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?Zi(n,t,()=>e[t]):Ci(n,t,r.value))}}function Gi(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Er="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function kt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Mr(n){if(kt(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(kt(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var Ki=new Set(["string","number","symbol"]);function Zn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function hn(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function I(n){let e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function zr(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function Bi(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Vi={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Ui(n,e){if(!Mr(e))throw new Error("Invalid input to extend: expected a plain object");let t=n._zod.def.checks;if(t&&t.length>0){let o=Pr(n);for(let i of Reflect.ownKeys(e))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return hn(n,Gi(n._zod.def,{shape:sl(n,e)}))}function sl(n,e){let t={};return ol(t,n,Reflect.ownKeys(Pr(n))),il(t,e),t}function be(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue!==!0)return!0;return!1}function Wi(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue===!1)return!0;return!1}function Me(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function Ln(n){return typeof n=="string"?n:n?.message}function Nr(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function ve(n,e,t){var r;let o=n.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=n).schema??(r.schema=n.inst):n.schema=n.inst);let i=n.schema!==n.inst?n.schema?._zod.def?.error:void 0,s=n.message?n.message:Ln(n.inst?._zod.def?.error?.(n))??Ln(i?.(n))??Ln(e?.error?.(n))??Ln(t.customError?.(n))??Ln(t.localeError?.(n))??"Invalid input",a={};for(let d of Object.keys(n))d==="inst"||d==="schema"||d==="continue"||d==="input"||d==="__proto__"||(a[d]=n[d]);return a.path??(a.path=[]),a.message=s,e?.reportInput&&(a.input=n.input),a}var al=/[\uD800-\uDBFF]/;function Ir(n){let e=n.length;if(!al.test(n))return e;let t=e;for(let r=0;r<e-1;r++)(n.charCodeAt(r)&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320&&(t--,r++);return t}function Tr(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function qi(n){let e=typeof n;switch(e){case"number":return Number.isNaN(n)?"nan":"number";case"object":{if(n===null)return"null";if(Array.isArray(n))return"array";let t=n;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&"constructor"in t&&t.constructor)return t.constructor.name}}return e}function Cn(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function Hi(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):dl(n,t,r.value)}}function Ue(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function jr(n,e,t){return Ue(n,e,t,!1)}function dl(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:Ue(this,e,t.bind(this))},set(r){Ue(this,e,r)}})}function cl(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var Rr,Ee=!1,ll={configurable:!0,get(){Ee=!0}};function J(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&Rr!==n._zod){Rr=void 0;return}Rr=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,ll);let o=Ee;Ee=!1;try{let i=t(this);return Ee?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),Ee=Ee||o,i}catch(i){throw delete this[e],Ee=Ee||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function Yi(n,e,t,r){let o=cl(n,e);o&&Object.defineProperty(o,e,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,e,i),i.value=t(this),Object.defineProperty(this,e,i),i.value},set(i){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var Ji;var Dr={value:void 0,enumerable:!1},Xi="captureStackTrace"in Error?Error:null;function ul(n){let e=Xi;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return Xi=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function O(n,e,t,r){let o={};function i(c){this.def=c,this.constr=f,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(c,p){if(c._zod){if(c._zod.traits.has(n))return}else{Dr.value=new i(p);try{Object.defineProperty(c,"_zod",Dr)}finally{Dr.value=void 0}}if(c._zod.traits.add(n),e(c,p),a){let h=Object.getPrototypeOf(c),v=c._zod.constr.prototype,b=h;for(;b&&b!==v;)b=Object.getPrototypeOf(b);let k=b??h;a.has(k)||(a.add(k),Hi(k,s))}let g=f.prototype;for(let h in g)Object.prototype.hasOwnProperty.call(g,h)&&(h in c||(c[h]=g[h].bind(c)))}let u=r?.Parent??Object;class l extends u{}Object.defineProperty(l,"name",{value:n});function f(c){let p=r?.Parent?ul(l):this;d(p,c);let g=p._zod.deferred;if(g){for(let v of g)v();p._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(p),p}return Object.defineProperty(f,"init",{value:d}),Object.defineProperty(f,Symbol.hasInstance,{value:c=>r?.Parent&&c instanceof r.Parent?!0:c?._zod?.traits?.has(n)}),Object.defineProperty(f,"name",{value:n}),f}var xe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(Ji=globalThis).__zod_globalConfig??(Ji.__zod_globalConfig={});var gn=globalThis.__zod_globalConfig;function re(n){return n&&Object.assign(gn,n),gn}function fl(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,Ii,2)),n.message}function pl(n){this._zod.message=n}var hl={get:fl,set:pl,enumerable:!0,configurable:!0},Lr={value:void 0,enumerable:!1},Qi=new WeakSet([Object.prototype,Error.prototype]),es=(n,e)=>{n.name="$ZodError",Lr.value=e,Object.defineProperty(n,"issues",Lr),Lr.value=void 0,Object.defineProperty(n,"message",hl);let t=Object.getPrototypeOf(n);Qi.has(t)||(Qi.add(t),Object.defineProperty(t,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},Th=O("$ZodError",es),Gn=O("$ZodError",es,void 0,{Parent:Error});var ml=n=>{let e=(t,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new xe;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>ve(u,s,re())));throw Er(d,i?.callee??e),d}return a.value};return e},Zr=ml(Gn),yl=n=>{let e=async(t,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>ve(u,s,re())));throw Er(d,i?.callee??e),d}return a.value};return e},Cr=yl(Gn),bl=n=>(e,t,r)=>{let o=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new xe;return i.issues.length?ns(n,i.issues,o):{success:!0,data:i.value}},Gr=bl(Gn);function ns(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>ve(o,t,re()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var vl=n=>async(e,t,r)=>{let o=r?{...r,async:!0}:{async:!0},i=e._zod.run({value:t,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?ns(n,i.issues,o):{success:!0,data:i.value}},Kr=vl(Gn);var ts=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var rs=/^https?$/;var os=/^[\s\S]{0,}$/;var Br=/^-?\d+(?:\.\d+)?$/,is=/^(?:true|false)$/i,ss=/^null$/i;var oe=O("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var as=n=>{let e=n.value;return!ji(e)&&e.length!==void 0},Rt={number:"number",bigint:"bigint",object:"date"},ds=O("$ZodCheckLessThan",(n,e)=>{oe.init(n,e);let t=Rt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:Rt[typeof r.value]??t,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),cs=O("$ZodCheckGreaterThan",(n,e)=>{oe.init(n,e);let t=Rt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:Rt[typeof r.value]??t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),ls=O("$ZodCheckMultipleOf",(n,e)=>{oe.init(n,e),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?e.value!==BigInt(0)&&t.value%e.value===BigInt(0):Di(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),us=O("$ZodCheckNumberFormat",(n,e)=>{oe.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Vi[e.format];n._zod.check=s=>{let a=s.value;if(t){if(!Number.isInteger(a)){s.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:n});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:n,continue:!e.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:n,continue:!e.abort})}});var fs=O("$ZodCheckMaxLength",(n,e)=>{var t;oe.init(n,e),(t=n._zod.def).when??(t.when=as),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?Ir(o):i)<=e.maximum)return;let a=Tr(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),ps=O("$ZodCheckMinLength",(n,e)=>{var t;oe.init(n,e),(t=n._zod.def).when??(t.when=as),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?Ir(o):i)>=e.minimum)return;let a=Tr(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var Ur=O("$ZodCheckStringFormat",(n,e)=>{var t,r;oe.init(n,e),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(r=n._zod).check??(r.check=()=>{})}),hs=O("$ZodCheckRegex",(n,e)=>{Ur.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}});var ms={major:4,minor:6,patch:5};var U=O("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=ms;let r=n._zod.def.checks,o=n._zod.traits.has("$ZodCheck")?[n,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(n);if(o.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{let i=(a,d,u)=>{if(a.memo)return a;let l=be(a),f;for(let c of d){if(c._zod.def.when){if(Wi(a)||!c._zod.def.when(a))continue}else if(l)continue;let p=a.issues.length,g=c._zod.check(a);if(g instanceof Promise&&u?.async===!1)throw new xe;if(f||g instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await g,a.issues.length!==p&&(Nr(a.issues,p,n),l||(l=be(a,p)))});else{if(a.issues.length===p)continue;Nr(a.issues,p,n),l||(l=be(a,p))}}return f?f.then(()=>a):a},s=(a,d,u)=>{if(be(a))return a.aborted=!0,a;let l=i(d,o,u);if(l instanceof Promise){if(u.async===!1)throw new xe;return l.then(f=>n._zod.parse(f,u))}return n._zod.parse(l,u)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let l=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return l instanceof Promise?l.then(f=>s(f,a,d)):s(l,a,d)}let u=n._zod.parse(a,d);if(u instanceof Promise){if(d.async===!1)throw new xe;return u.then(l=>i(l,o,d))}return i(u,o,d)}}},{get"~standard"(){return jr(this,"~standard",xl(this))},set"~standard"(n){Ue(this,"~standard",n)}}),ks=(n,e)=>n.issues.length?{issues:n.issues.map(t=>ve(t,e,re()))}:{value:n.value};async function wl(n,e){let t={async:!0};return ks(await n._zod.run({value:e,issues:[]},t),t)}function xl(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return ks(r,t)}catch{}return wl(n,e)},vendor:"zod",version:1}}var Wr=O("$ZodString",(n,e)=>{U.init(n,e),n._zod.pattern=e.pattern??os,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),_t=O("$ZodStringFormat",(n,e)=>{Ur.init(n,e),Wr.init(n,e)});var Ss=O("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=ts),_t.init(n,e)}),Rs=1,$t=2;function kl(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function Sl(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?kl(n)||$t:Rl(n,e)}function Rl(n,e){if(!e.normalize&&e.protocol?.source===rs.source&&!/^https?:\/\//i.test(n))return Rs;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??$t}return new URL(n)}catch{return $t}}var $l=/[\t\n\r]/g;function ys(n){return n.replace($l,"")}function Al(n,e){return e.lastIndex=0,e.test(n.hostname)}function _l(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var $s=O("$ZodURL",(n,e)=>{_t.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=Sl(r,e);if(o===Rs){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===$t){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=ys(r);return}e.hostname&&!Al(o,e.hostname)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort}),e.protocol&&!_l(o,e.protocol)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort}),t.value=e.normalize?o.href:ys(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var qr=O("$ZodNumber",(n,e)=>{U.init(n,e),n._zod.pattern=Br,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}let o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...i?{received:i}:{}}),t}}),As=O("$ZodNumberFormat",(n,e)=>{us.init(n,e),qr.init(n,e)}),_s=O("$ZodBoolean",(n,e)=>{U.init(n,e),n._zod.pattern=is,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=!!t.value}catch{}let o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}});var Os=O("$ZodNull",(n,e)=>{U.init(n,e),n._zod.pattern=ss,n._zod.values=new Set([null]),n._zod.parse=(t,r)=>{let o=t.value;return o===null||t.issues.push({expected:"null",code:"invalid_type",input:o,inst:n}),t}});var Ps=O("$ZodUnknown",(n,e)=>{U.init(n,e),n._zod.parse=t=>t}),Es=O("$ZodNever",(n,e)=>{U.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function bs(n,e,t){n.issues.length&&e.issues.push(...Me(t,n.issues)),e.value[t]=n.value}var Ms=O("$ZodArray",(n,e)=>{U.init(n,e);let t=gn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:n}),r;r.value=t?t.alloc(n,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let d=0;d<i.length;d++){let u=i[d],l=e.element._zod.run({value:u,issues:[]},o);if(l instanceof Promise)s.push(l.then(f=>bs(f,r,d)));else if(bs(l,r,d),a&&l.issues.length!==0&&be(l))break}return s.length?Promise.all(s).then(()=>r):r}});function At(n,e,t,r,o,i){let s=t in r,a=i==="optional";if(!(!s&&a&&o==="optional")){if(n.issues.length){if(o!==void 0&&a&&!s)return;e.issues.push(...Me(t,n.issues))}if(!s&&o===void 0){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?(s||o==="defaulted"&&!a)&&(e.value[t]=void 0):e.value[t]=n.value}}var Ol=[];function Pl(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:Ol,o=r.length?[...e,...r]:e;for(let s of o)if(!n.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=Bi(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function El(n,e,t,r,o,i,s){let a=[],d=o.keySet,u=o.catchall._zod,l=u.def.type,f=u.optin,c=u.optout,p=0;for(let g in e){if(s&&t.issues.length!==p){if(be(t,p))break;p=t.issues.length}if(d.has(g))continue;if(g==="__proto__"){l==="never"&&a.push(g);continue}if(l==="never"){a.push(g);continue}let h=u.run({value:e[g],issues:[]},r);h instanceof Promise?n.push(h.then(v=>At(v,t,g,e,f,c))):At(h,t,g,e,f,c)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:e,inst:i,continue:!0}),n.length?Promise.all(n).then(()=>t):t}var zs=O("$ZodObject",(n,e)=>{U.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let u=()=>{let l={...r};return Object.defineProperty(e,"shape",{value:l}),u.raw=l,l};u.raw=r,Object.defineProperty(e,"shape",{get:u})}let o=Ti(()=>Pl(e));J(n,"propValues",u=>{let l=u.def.shape,f={};for(let c in l){let p=l[c]._zod;if(p.values){Object.prototype.hasOwnProperty.call(f,c)||St(f,c,new Set);for(let g of p.values)f[c].add(g);p.optin!==void 0&&f[c].add(void 0)}}return f});let i=kt,s=e.catchall,a,d=gn.memoizer;d?.attach(n),n._zod.parse=(u,l)=>{a??(a=o.value);let f=u.value;if(!i(f))return u.issues.push({expected:"object",code:"invalid_type",input:f,inst:n}),u;u.value=d?d.alloc(n,u,{},l):{};let c=[],p=a.shape,g=l?.abortEarly,h=u.issues.length;for(let v of a.allKeys){if(g&&u.issues.length!==h){if(be(u,h))break;h=u.issues.length}if(v==="__proto__")continue;let b=p[v],k=b._zod.optin,$=b._zod.optout,x=b._zod.run({value:f[v],issues:[]},l);x instanceof Promise?c.push(x.then(_=>At(_,u,v,f,k,$))):At(x,u,v,f,k,$)}return s?El(c,f,u,l,o.value,n,g===!0):c.length?Promise.all(c).then(()=>u):u}});function vs(n,e,t,r){for(let i of n)if(i.issues.length===0)return e.value=i.value,e;let o=n.filter(i=>!be(i));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(i=>i.issues.map(s=>ve(s,r,re())))}),e)}var Ns=O("$ZodUnion",(n,e)=>{U.init(n,e),J(n,"optin",r=>r.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),J(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),J(n,"values",r=>{if(r.def.options.every(o=>o._zod.values))return new Set(r.def.options.flatMap(o=>Array.from(o._zod.values)))}),J(n,"pattern",r=>{if(r.def.options.every(o=>o._zod.pattern)){let o=r.def.options.map(i=>i._zod.pattern);return new RegExp(`^(${o.map(i=>Or(i.source)).join("|")})$`)}});let t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(r,o)=>{if(t)return t(r,o);let i=!1,s=[];for(let a of e.options){let d=a._zod.run({value:r.value,issues:[]},o);if(d instanceof Promise)s.push(d),i=!0;else{if(d.issues.length===0)return d;s.push(d)}}return i?Promise.all(s).then(a=>vs(a,r,n,o)):vs(s,r,n,o)}});var Is=O("$ZodRecord",(n,e)=>{U.init(n,e);let t=gn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Mr(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:n}),r;let s=[],a=e.keyType._zod.values;if(a&&!e.partial){r.value=t?t.alloc(n,r,{},o):{};let d=new Set;for(let l of a)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){if(d.add(typeof l=="number"?l.toString():l),l==="__proto__")continue;let f=e.keyType._zod.run({value:l,issues:[]},o);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(f.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:f.issues.map(g=>ve(g,o,re())),input:l,path:[l],inst:n});continue}let c=f.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[l],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...Me(l,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...Me(l,p.issues)),r.value[c]=p.value)}let u;for(let l in i)if(!d.has(l))if(e.mode==="loose"){if(l==="__proto__")continue;r.value[l]=i[l]}else u=u??[],u.push(l);u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:u,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let u of Reflect.ownKeys(i)){if(u==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,u))continue;let l=e.keyType._zod.run({value:u,issues:[]},o);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof u=="string"&&Br.test(u)&&l.issues.length){let g=e.keyType._zod.run({value:Number(u),issues:[]},o);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(l=g)}if(l.issues.length){e.mode==="loose"?r.value[u]=i[u]:a?(d=d??[],d.push(u)):r.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(g=>ve(g,o,re())),input:u,path:[u],inst:n});continue}let c=l.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[u],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...Me(u,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...Me(u,p.issues)),r.value[c]=p.value)}d&&d.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:d,continue:!0})}return s.length?Promise.all(s).then(()=>r):r}});var Ts=O("$ZodEnum",(n,e)=>{U.init(n,e);let t=Ar(e.entries),r=new Set(t);n._zod.values=r,J(n,"pattern",o=>{let i=Ar(o.def.entries).filter(s=>Ki.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>Zn(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(o,i)=>{let s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:t,input:s,inst:n}),o}}),js=O("$ZodLiteral",(n,e)=>{U.init(n,e);let t=new Set(e.values);n._zod.values=t,J(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?Zn(i):i?Zn(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(r,o)=>{let i=r.value;return t.has(i)||r.issues.push({code:"invalid_value",values:e.values,input:i,inst:n}),r}});function ws(n,e){return n.value=e.issues.length?void 0:e.value,n}var Ds=O("$ZodOptional",(n,e)=>{U.init(n,e),J(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",J(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),J(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${Or(r.source)})?$`):void 0}),n._zod.parse=(t,r)=>{if(t.value===void 0){if(e.innerType._zod.optin!=="defaulted")return t;let o=e.innerType._zod.run({value:t.value,issues:[]},r);return o instanceof Promise?o.then(i=>ws(t,i)):ws(t,o)}return e.innerType._zod.run(t,r)}});var Fs=O("$ZodLazy",(n,e)=>{U.init(n,e),Fi(n._zod,"innerType",()=>{let t=e;return t._cachedInner||(t._cachedInner=e.getter()),t._cachedInner}),J(n,"pattern",t=>t.innerType?._zod?.pattern),J(n,"propValues",t=>t.innerType?._zod?.propValues),J(n,"optin",t=>t.innerType?._zod?.optin??void 0),J(n,"optout",t=>t.innerType?._zod?.optout??void 0),n._zod.parse=(t,r)=>n._zod.innerType._zod.run(t,r)}),Ls=O("$ZodCustom",(n,e)=>{oe.init(n,e),U.init(n,e),n._zod.parse=(t,r)=>t,n._zod.check=t=>{let r=t.value,o=e.fn(r);if(o instanceof Promise)return o.then(i=>xs(i,t,r,n));xs(o,t,r,n)}});function xs(n,e,t,r){if(!n){let o={code:"custom",input:t,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),e.issues.push(Cn(o))}}var Ml=()=>{let n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function e(i){return n[i]??null}let t={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){return i==="number"&&typeof s=="number"&&!Number.isFinite(s)?String(s):r[i]??i}return i=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=qi(i.input),d=o(a,i.input);return`Invalid input: expected ${s}, received ${d}`}case"invalid_value":return i.values.length===1?`Invalid input: expected ${zr(i.values[0])}`:`Invalid option: expected one of ${_r(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=e(i.origin);return a?`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=e(i.origin);return a?`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`:`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;return s.format==="starts_with"?`Invalid string: must start with "${s.prefix}"`:s.format==="ends_with"?`Invalid string: must end with "${s.suffix}"`:s.format==="includes"?`Invalid string: must include "${s.includes}"`:s.format==="regex"?`Invalid string: must match pattern ${s.pattern}`:`Invalid ${t[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${_r(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return i.options&&Array.isArray(i.options)&&i.options.length>0?`Invalid discriminator value. Expected ${i.options.map(a=>`'${a}'`).join(" | ")}`:i.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function Zs(){return{localeError:Ml()}}var Cs;var Hr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];return this._map.set(e,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Gs(){return new Hr}(Cs=globalThis).__zod_globalRegistry??(Cs.__zod_globalRegistry=Gs());var mn=globalThis.__zod_globalRegistry;function Ks(n){return n.checks&&(n.checks=[...n.checks]),n}function Bs(n,e){return new n(Ks({type:"string",...I(e)}))}function Vs(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...I(e)})}function Us(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...I(e)})}function Ws(n,e){return new n(Ks({type:"number",checks:[],...I(e)}))}function qs(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...I(e)})}function Hs(n,e){return new n({type:"boolean",...I(e)})}function Ys(n,e){return new n({type:"null",...I(e)})}function Js(n){return new n({type:"unknown"})}function Xs(n,e){return new n({type:"never",...I(e)})}function Qs(n,e){return new ds({check:"less_than",...I(e),value:n,inclusive:!0})}function ea(n,e){return new cs({check:"greater_than",...I(e),value:n,inclusive:!0})}function Tl(n,e){return new ls({check:"multiple_of",...I(e),value:n})}function Yr(n,e){return new fs({check:"max_length",...I(e),maximum:n})}function Kn(n,e){return new ps({check:"min_length",...I(e),minimum:n})}function Bn(n,e){return new hs({check:"string_format",format:"regex",...I(e),pattern:n})}function na(n,e,t){return new n({type:"custom",check:"custom",fn:e,...I(t)})}function ta(n,e){let t=jl(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(Cn(o,r.value,t._zod.def));else{let i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),"input"in i||(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),r.issues.push(Cn(i))}},n(r.value,r)),e);return t}function jl(n,e){let t=new oe({check:"custom",...I(e)});return t._zod.check=n,t}function ra(n){let e=new oe({check:"describe"});return e._zod.onattach=[t=>{let r=mn.get(t)??{};mn.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var X=O("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");U.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){Ue(this,"with",n)},parse(n,e){return Zr(this,n,e,{callee:this.parse})},parseAsync(n,e){return Cr(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return Gr(this,n,e)},safeParseAsync(n,e){return Kr(this,n,e)},check(...n){let e=this.def;return this.clone({...e,checks:[...e.checks??[],...n.map(t=>typeof t=="function"?{_zod:{check:t,def:{check:"custom"},onattach:[]}}:t)]},{parent:!0})},clone(n,e){return hn(this,n,e)},brand(){return this},register(n,e){return n.add(this,e),this},apply(n,...e){return e.length===0?n(this):n(this,...e)}}),ia=O("ZodMiniString",(n,e)=>{Wr.init(n,e),X.init(n,e)});function L(n){return Bs(ia,n)}var sa=O("ZodMiniStringFormat",(n,e)=>{_t.init(n,e),ia.init(n,e)}),Ll=O("ZodMiniEmail",(n,e)=>{Ss.init(n,e),sa.init(n,e)});function Dy(n){return Vs(Ll,n)}var Zl=O("ZodMiniURL",(n,e)=>{$s.init(n,e),sa.init(n,e)});function Fy(n){return Us(Zl,n)}var aa=O("ZodMiniNumber",(n,e)=>{qr.init(n,e),X.init(n,e)});function We(n){return Ws(aa,n)}var Cl=O("ZodMiniNumberFormat",(n,e)=>{As.init(n,e),aa.init(n,e)});function Ly(n){return qs(Cl,n)}var Gl=O("ZodMiniBoolean",(n,e)=>{_s.init(n,e),X.init(n,e)});function Zy(n){return Hs(Gl,n)}var Kl=O("ZodMiniNull",(n,e)=>{Os.init(n,e),X.init(n,e)});function Cy(n){return Ys(Kl,n)}var Bl=O("ZodMiniUnknown",(n,e)=>{Ps.init(n,e),X.init(n,e)});function Jr(){return Js(Bl)}var Vl=O("ZodMiniNever",(n,e)=>{Es.init(n,e),X.init(n,e)});function Ul(n){return Xs(Vl,n)}var Wl=O("ZodMiniArray",(n,e)=>{Ms.init(n,e),X.init(n,e)});function Gy(n,e){return new Wl({type:"array",element:n,...I(e)})}var Xr=O("ZodMiniObject",(n,e)=>{zs.init(n,e),X.init(n,e),Yi(n,"shape",t=>t._zod.def.shape,!1)});function ze(n,e){let t={type:"object",shape:n??{},...I(e)};return new Xr(t)}function yn(n,e){return new Xr({type:"object",shape:n,catchall:Ul(),...I(e)})}function Ky(n,e){return new Xr({type:"object",shape:n,catchall:Jr(),...I(e)})}function da(n,e){return Ui(n,e)}var ql=O("ZodMiniUnion",(n,e)=>{Ns.init(n,e),X.init(n,e)});function By(n,e){return new ql({type:"union",options:n,...I(e)})}var oa=O("ZodMiniRecord",(n,e)=>{Is.init(n,e),X.init(n,e)});function Vy(n,e,t){return!e||!e._zod?new oa({type:"record",keyType:L(),valueType:n,...I(e)}):new oa({type:"record",keyType:n,valueType:e,...I(t)})}var Hl=O("ZodMiniEnum",(n,e)=>{Ts.init(n,e),X.init(n,e),n.options=[...n._zod.values]});function ca(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new Hl({type:"enum",entries:t,...I(e)})}var Yl=O("ZodMiniLiteral",(n,e)=>{js.init(n,e),X.init(n,e)});function la(n,e){return new Yl({type:"literal",values:Array.isArray(n)?n:[n],...I(e)})}var Jl=O("ZodMiniOptional",(n,e)=>{Ds.init(n,e),X.init(n,e)});function Q(n){return new Jl({type:"optional",innerType:n})}var Xl=O("ZodMiniLazy",(n,e)=>{Fs.init(n,e),X.init(n,e)});function Uy(n){return new Xl({type:"lazy",getter:n})}var Ql=O("ZodMiniCustom",(n,e)=>{Ls.init(n,e),X.init(n,e)});function Ot(n,e={}){return na(Ql,n,e)}function Wy(n,e){return ta(n,e)}var qy=ra;re().localeError||re(Zs());var D=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,eu=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=mn.get(n)?.description;return typeof e=="string"?e:void 0};var nu=(n,e)=>n?.src?.(e)??e,Pt=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),Qr=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function eo(n){let e=n??{};return Pt(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&Qr(e.bytes,0)&&Qr(e.width)&&Qr(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)&&(e.poster===void 0||Pt(e.poster))&&(e.captions===void 0||Pt(e.captions))&&(e.duration===void 0||typeof e.duration=="number"&&Number.isFinite(e.duration)&&e.duration>0)&&(e.at===void 0||ua(e.at)!==void 0)}function ua(n){return typeof n=="string"&&n.length<41&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:?\d{2})$/.test(n)&&Number.isFinite(Date.parse(n))?n:void 0}var fa=n=>n.type.startsWith("image/"),pa=n=>n.type.startsWith("video/");function tu(n){let e=n.duration===void 0?0:Math.round(n.duration);if(e<1)return"a video";if(e<60)return`a ${e}-second video`;let t=Math.round(e/60);return t<60?`a ${t}-minute video`:`a ${Math.floor(t/60)}-hour${t%60>0?` ${t%60}-minute`:""} video`}var ru=(n,e)=>e==="image"?fa(n):e==="video"?pa(n):!0,ou=n=>`${n==="image"?"an image":n==="video"?"a video":"a file"} the host stored, at a path on this host`,Vn=n=>(Array.isArray(n)?n:[n]).filter(eo),ha=Symbol.for("@graview/core:file"),iu=(n,e)=>(Object.defineProperty(D(n),ha,{value:e,enumerable:!0}),n);function ga(n){let e=D(n);return e?.[ha]??(e?.innerType?ga(e.innerType):void 0)}var su=()=>({href:L(),name:L(),type:L(),bytes:We(),width:Q(We()),height:Q(We()),caption:Q(L()),poster:Q(L()),duration:Q(We()),captions:Q(L()),at:Q(L())});function Hb(n){return iu(ze(su()).check(Ot(e=>eo(e)&&ru(e,n),ou(n))),n)}var Et=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,Mt=n=>typeof n=="string"&&n.length<501&&Et.test(n);var ma=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,au=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function ya(n){if(typeof n!="string"||!n.startsWith("@")||!au.test(n))return;let e=n.lastIndexOf("/"),t=n.slice(0,e),r=n.slice(e+1),o=/^@https?:\/\//.test(t)||!t.includes("/")?t.slice(1):t;return Mt(o)?{address:o,kind:r}:void 0}var du=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,cu=n=>`${n.kind}:${n.id}`;function ba(n,e){if(typeof n!="string"||!du.test(n))return;let t=n.indexOf(":"),r=n.slice(0,t);return e.kinds.includes(r)?{address:e.address,kind:r,id:n.slice(t+1)}:void 0}function lu(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=ba(r,e);return o?[o]:[]})}var va=Symbol.for("@graview/core:linked"),Qb=(n,e)=>(Object.defineProperty(ma(n),va,{value:e,enumerable:!0}),n);function Un(n){let e=ma(n);return e?e[va]??Un(e.innerType):void 0}function uu(n){let e=n?.fields?.shape??{},t=new Map;for(let[r,o]of Object.entries(e)){let i=Un(o);i&&t.set(r,i)}return t}function fu(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(ya);if(e.some(r=>!r))return;let t=e[0].address;if(!e.some(r=>r.address!==t))return{address:t,kinds:[...new Set(e.map(r=>r.kind))],cardinality:n.cardinality??"many",...n.description?{description:n.description}:{}}}var pu=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function ev(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!pu(e)))}function nv(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=fu(r);o&&e.set(t,o)}return e}var no=new WeakMap;function hu(n,e){e?no.set(n,e):no.delete(n)}var wa=n=>no.get(n);var zt=["sun","mon","tue","wed","thu","fri","sat"],gu=["day","week","month","year"],vn=n=>`${n}Repeat`,qn=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,Sa=/^\d{4}-\d{2}-\d{2}$/,Ra=Symbol.for("@graview/core:repeat");function Nt(n){let e=D(n);return!!e&&(e[Ra]===1||Nt(e.innerType))}var mu=n=>(Object.defineProperty(D(n),Ra,{value:1,enumerable:!0}),n),to=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,xa=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&Sa.test(t)),yu=["every","interval","on","until","count","except","continues"],$a=n=>wn(n)&&Object.keys(n).every(e=>yu.includes(e))&&to(n.interval,1,99)&&to(n.count,1,1e3)&&xa(n.until===void 0?void 0:[n.until],1)&&xa(n.except,500)&&(n.continues===void 0||typeof n.continues=="string"&&n.continues.length<=200)&&(n.on===void 0||Array.isArray(n.on)&&n.on.length>0&&n.on.length<=31&&n.on.every(e=>n.every==="week"?zt.includes(e):n.every==="month"&&e!==0&&to(e,-1,31))),ov=()=>mu(Jr().check(Ot(n=>n===null||$a(n),"how a date repeats, or null"))),Wn=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),Aa=n=>new Date(n).toISOString().slice(0,10),ro=(n,e)=>Aa(Wn(n)+e*864e5),ka=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return Aa(Date.UTC(n,e,t<0||t>r?r:t))},wn=n=>typeof n=="object"&&n!==null&&gu.includes(n.every);function bn(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!Sa.test(r))return i;let s=Math.max(1,e.interval??1),a=e.every,d=t.from&&t.from>r?t.from.slice(0,10):r,u=[e.until,t.to?.slice(0,10)].filter(Boolean).sort()[0],l=t.limit??1e3,f=new Set(e.except??[]),c=+r.slice(0,4),p=+r.slice(5,7)-1,g=+r.slice(8,10),h=ro(r,-new Date(Wn(r)).getUTCDay()),v=(e.on?.length?e.on:[a==="week"?zt[new Date(Wn(r)).getUTCDay()]:g]).map(_=>typeof _=="string"?zt.indexOf(_):_),b=a==="day"?1:a==="week"?7:0,k=(+d.slice(0,4)-c)*12+(+d.slice(5,7)-1-p),$=e.count?0:Math.max(0,Math.floor((b?(Wn(d)-Wn(b===7?h:r))/864e5/b:a==="month"?k:k/12)/s)-1),x=0;for(let _=0;_<5e4&&i.length<l;_++,$++){let A=$*s,m=a==="day"?[ro(r,A)]:a==="week"?v.map(y=>ro(h,A*7+y)):a==="month"?v.map(y=>ka(c,p+A,y)):[ka(c+A,p,g)];for(let y of[...new Set(m)].sort())if(!(y<r)&&(u&&y>u||e.count&&x>=e.count||(x++,y>=d&&!f.has(y)&&i.push(y+o),i.length>=l)))return i}return i}function _a(n,e,t){if(!wn(e)||typeof n!="string")return n;let r=bn(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?bn(n,e):[];return o[o.length-1]??n}function bu(n,e,t){let r=n[e],o=n[vn(e)];return typeof r=="string"&&wn(o)?_a(r,o,t):r}var It=["human","visitor","agent","rule","system"],vu=new Set(It);function oo(n){return vu.has(n?.kind)?n.kind:"system"}function Hn(n,e){if(n.onBehalfOf){let{onBehalfOf:s,...a}=n;return`${Hn(a,e)}, for ${Hn(s,e)}`}let t=oo(n);if(n.id===void 0)return n.name??(t==="agent"?"an agent":t==="visitor"?"a visitor":t);let r=e.graph.getNode(n.id);if(r)return B(e.schema.tryDefinition(r.kind),r);let o=e.seats?.find(s=>s.principal.id===n.id);if(o)return o.label;let i=e.people?.find(s=>s.id===n.id&&(s.kind===void 0||s.kind===n.kind));return i?i.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":n.id.startsWith("form:")?"a visitor via a form":/[:_/]/.test(n.id)?{human:"somebody",visitor:"a visitor",agent:"an agent",rule:"a rule",system:"the system"}[t]:n.id}var xn="$archived",qe=n=>n?.[xn]===!0,lv=(n,e=!1)=>e==="all"||qe(n)===e,io=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,Yn="$leftAlone",Tt=new Set([xn,Yn]);var ce=class extends Error{constructor(t,r){super(r?`${t}
|
|
2
|
-
\u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function wu(n,e){let t=n,r=new Map;for(let a of t){if(r.has(a.kind))throw new ce(`Duplicate node kind "${a.kind}"`,"Each kind may be declared once; merge the two defineNode calls.");r.set(a.kind,a)}let o=new Map;for(let a of t)for(let[d,u]of Object.entries(a.edges)){if(u.to!=="*"){for(let f of u.to)if(!r.has(f))throw new ce(`Edge "${d}" on "${a.kind}" points at undeclared kind "${f}"`,`Declared kinds: ${[...r.keys()].join(", ")}`)}let l=o.get(d);l?l.from.push(a.kind):o.set(d,{from:[a.kind],decl:u})}let i=new Map;for(let[a,{from:d,decl:u}]of o){let l=d.map(f=>r.get(f).edges[a].to);i.set(a,{kind:a,from:d,to:l.includes("*")?"*":[...new Set(l.flat())],cardinality:u.cardinality??"many",...u.description===void 0?{}:{description:u.description}})}let s=new Map;for(let a of t)s.set(a.kind,da(a.fields,{id:L().check(Kn(1)),kind:la(a.kind)}));return{definitions:t,computed:e,kinds:t.map(a=>a.kind),edgeKinds:[...i.keys()],definition(a){let d=r.get(a);if(!d)throw new ce(`Unknown node kind "${String(a)}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);return d},tryDefinition(a){return r.get(a)},edge(a){return i.get(a)},edgeAllowed(a,d,u){let l=r.get(d)?.edges[a];return l?l.to==="*"||l.to.includes(u):!1},parseNode(a){let d=a?.kind;if(typeof d!="string")throw new ce("Node is missing a `kind`");let u=s.get(d);if(!u)throw new ce(`Unknown node kind "${d}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);let l={},f={};for(let[p,g]of Object.entries(a))Tt.has(p)?g===!0&&(f[p]=!0):l[p]=g;let c=u.parse(l);return Object.keys(f).length>0?{...c,...f}:c},__node:void 0}}var Jn="0.1.61";var de={snapshot:2,op:3},He=class extends Error{constructor(t,r,o,i,s){super(s!==void 0?`This ${t} holds a ${s} that @graview ${Jn} does not know: upgrade the framework to read it.`:`This ${t} is in a newer format (${r}${i?`, written by @graview ${i}`:""}) than @graview ${Jn} reads (${o}). `+(t==="snapshot"?"Refold it from the log, or upgrade the framework.":"Upgrade the framework to read it."));this.what=t;this.found=r;this.supported=o;this.writtenBy=i;this.unknown=s;this.name="NewerFormatError"}},so=["add-node","remove-node","patch-node","add-edge","remove-edge","splice-text"],xu=new Set(so);function ao(n){throw new He("op",de.op+1,de.op,void 0,`primitive "${n?.op}"`)}var co=new Set;function lo(n){for(let e in n){let t=n[e]?.$type;if(t!==void 0&&!co.has(t))throw new He("op",de.op+1,de.op,void 0,`value type "${t}" in "${e}"`)}}function uo(n){for(let e of n.primitives)xu.has(e?.op)||ao(e)}function N(n){return`${n.kind}\0${n.from}\0${n.to}`}var Xn={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function Oa(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function ku(n,e){let t=new Set([...Object.keys(n),...Object.keys(e)]),r=[];for(let o of t){let i=n[o],s=e[o];JSON.stringify(i)!==JSON.stringify(s)&&r.push(o)}return r.sort()}function Ne(n,e){let t=new Map(n.nodes.map(c=>[c.id,c])),r=new Map(e.nodes.map(c=>[c.id,c])),o=e.nodes.filter(c=>!t.has(c.id)),i=n.nodes.filter(c=>!r.has(c.id)),s=[];for(let c of n.nodes){let p=r.get(c.id);if(!p||p===c)continue;let g=ku(c,p);g.length>0&&s.push({before:c,after:p,fields:g})}let a=new Map(n.edges.map(c=>[N(c),c])),d=new Map(e.edges.map(c=>[N(c),c])),u=e.edges.filter(c=>!a.has(N(c))),l=n.edges.filter(c=>!d.has(N(c))),f=new Set;for(let c of o)f.add(c.id);for(let c of i)f.add(c.id);for(let c of s)f.add(c.after.id);for(let c of[...u,...l])f.add(c.from),f.add(c.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:u,removedEdges:l,touched:[...f].sort()}}function Ie(n,e,t){let r=new Set(t.flatMap(i=>i.op==="patch-node"||i.op==="splice-text"?[i.id]:"node"in i?[i.node.id]:[i.edge.from,i.edge.to]));if(r.size===0)return Xn;let o=i=>({nodes:i.nodes.filter(s=>r.has(s.id)),edges:i.edges.filter(s=>r.has(s.from)||r.has(s.to))});return Ne(o(n),o(e))}var jt={idLength:200,dataLength:4096,sameKindPerPair:1};function Pa({id:n,data:e}){if(n!==void 0&&!(typeof n=="string"&&n.length<=jt.idLength&&/^[^\s\p{Cc}]+$/u.test(n)))return`A link's id is 1\u2013${jt.idLength} characters with no space`;if(e!==void 0&&!(e&&typeof e=="object"&&!Array.isArray(e)&&JSON.stringify(e).length<=jt.dataLength))return`A link's data is a JSON object of at most ${jt.dataLength} characters`}function Su(n){let e=n?.issues;return!Array.isArray(e)||e.length===0?n instanceof Error?n.message:String(n):e.map(t=>{let r=t.path?.length?K(String(t.path.at(-1))):null,o=t.message??"is not what the declaration allows";return r?`${r}: ${o}`:o}).join("; ")}var z=class extends Error{constructor(t,r){super(r?`${t}
|
|
3
|
-
${r}`:t);this.hint=r;this.name="GraphError"}},W=class extends z{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}};function Dt(n,e){try{n.parseNode(e);return}catch(t){if(t instanceof ce)throw t;let r=t.issues??[];return{fields:new Set(r.flatMap(i=>i.code==="unrecognized_keys"&&i.keys?[...i.keys]:typeof i.path?.[0]=="string"?[i.path[0]]:[""])),error:t}}}var fo="n\0",po="e\0",ee=class n{constructor(e,t={}){this.schema=e;this.validate=t.validate??!0}nodes=new Map;edges=new Map;linkIds=new Map;outIndex=new Map;inIndex=new Map;rank=0;ranks=new Map;lapsed=new Map;reordered=!1;counts=new Map;archived=new Set;listeners=new Set;validate;static from(e,t,r={}){let o=new n(e,r);return o.load(t),o}load(e){let t=this.snapshot();this.restore(e);let r=Ne(t,this.snapshot());return this.emit(r),r}getNode(e){return this.nodes.get(e)}has(e){return this.nodes.has(e)}allNodes(e){return this.reach([...this.nodes.values()],e,this.held)}count(e,t){return t||this.archived.size?this.nodesOfKind(e,t).length:this.counts.get(e)??0}allEdges(e){return this.reach([...this.edges.values()],e,t=>this.archived.has(t.from)||this.archived.has(t.to))}nodesOfKind(e,t){return this.allNodes(t).filter(r=>r.kind===e)}edgesOfKind(e,t){return this.allEdges(t).filter(r=>r.kind===e)}out(e,t,r){return this.reach(this.resolve(this.outIndex.get(e),t,"to"),r,this.held)}in(e,t,r){return this.reach(this.resolve(this.inIndex.get(e),t,"from"),r,this.held)}neighbors(e,t){let r=new Map;for(let o of[...this.out(e,void 0,t),...this.in(e,void 0,t)])r.set(o.id,o);return[...r.values()]}isArchived(e){return this.archived.has(e)}outEdges(e,t){return this.edgesFrom(this.outIndex.get(e),t)}inEdges(e,t){return this.edgesFrom(this.inIndex.get(e),t)}linkById(e){return this.edges.get(this.linkIds.get(e))}snapshot(){return{nodes:[...this.nodes.values()],edges:[...this.edges.values()]}}get size(){return{nodes:this.nodes.size,edges:this.edges.size}}applyPrimitives(e,t={}){let r=this.snapshot();try{for(let i of e)this.applyOne(i,t.restoring===!0,t.inPlace===!0);this.settleOrder()}catch(i){throw this.restore(r),i}let o=Ie(r,this.snapshot(),e);return this.emit(o),o}preview(e,t={}){return n.from(this.schema,this.snapshot(),{validate:this.validate}).applyPrimitives(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}restore(e){let t=new Map([...this.lapsed,...this.ranks]);for(let o of[this.nodes,this.edges,this.linkIds,this.outIndex,this.inIndex,this.ranks,this.lapsed,this.counts,this.archived])o.clear();this.reordered=!1;for(let o of e.nodes)this.insertNode(o,!0);for(let o of e.edges)this.insertEdge(o,!0);let r=[...this.ranks.keys()];if(r.every((o,i)=>t.get(o)>(o[0]===r[i-1]?.[0]?t.get(r[i-1]):0))){for(let[o,i]of t)(this.ranks.has(o)?this.ranks:this.lapsed).set(o,i);for(;this.lapsed.size>4096;)this.lapsed.delete(this.lapsed.keys().next().value)}}tally(e,t){this.counts.set(e,(this.counts.get(e)??0)+t)}place(e,t){let r=t?this.lapsed.get(e):void 0;if(r===void 0){this.ranks.set(e,++this.rank);return}this.ranks.set(e,r),this.lapsed.delete(e),this.reordered=!0}lapse(e){let t=this.ranks.get(e);t!==void 0&&(this.ranks.delete(e),this.lapsed.set(e,t),this.lapsed.size>4096&&this.lapsed.delete(this.lapsed.keys().next().value))}settleOrder(){if(!this.reordered)return;this.reordered=!1;let e=o=>(i,s)=>this.ranks.get(o+i[0])-this.ranks.get(o+s[0]),t=[...this.nodes.entries()].sort(e(fo));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(po));this.edges.clear();for(let[o,i]of r)this.edges.set(o,i)}emit(e){if(!(e.addedNodes.length===0&&e.removedNodes.length===0&&e.changedNodes.length===0&&e.addedEdges.length===0&&e.removedEdges.length===0))for(let t of this.listeners)t(e)}applyOne(e,t,r){switch(e.op){case"add-node":lo(e.node),this.insertNode(e.node,t,r);return;case"remove-node":{let o=e.node.id,i=this.nodes.get(o);if(!i)throw new W(o,`Cannot remove missing node "${o}"`);for(let s of[...this.outEdges(o),...this.inEdges(o)])this.deleteEdge(s);this.tally(i.kind,-1),this.archived.delete(o),this.nodes.delete(o),this.lapse(fo+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new W(e.id,`Cannot patch missing node "${e.id}"`);lo(e.after);let i={...o};for(let[a,d]of Object.entries(e.after))Ge(d)?delete i[a]:i[a]=d;let s=t?i:this.checkPatch(o,i,Object.keys(e.after));this.nodes.set(e.id,s),this.archived[qe(s)?"add":"delete"](e.id),s.kind!==o.kind&&(this.tally(o.kind,-1),this.tally(s.kind,1));return}case"splice-text":{let o=this.nodes.get(e.id);if(!o)throw new W(e.id,`Cannot splice the text of missing node "${e.id}"`);let i=o[e.field],s;try{typeof i=="string"&&e.field!=="id"&&e.field!=="kind"&&(s=gr(i,e))}catch{}if(s===void 0)throw new z(`Cannot splice ${e.id}.${e.field}: it does not hold ${JSON.stringify(e.removed)} at ${e.at}`,"A corrupt op: the text it was made against is not the text the log folds to.");let a={...o,[e.field]:s};this.nodes.set(e.id,t?a:this.checkPatch(o,a,[e.field]));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{let o=e.edge.id===void 0?e.edge:this.linkById(e.edge.id);if(!o||!this.edges.has(N(o)))throw new W(e.edge.id??N(e.edge),`Cannot remove missing edge ${e.edge.id??N(e.edge)}`);this.deleteEdge(o);return}default:ao(e)}}check(e){if(!this.validate)return e;try{return this.schema.parseNode(e)}catch(t){throw this.refusal(e,t)}}checkPatch(e,t,r){if(!this.validate)return t;let o=this.schema.tryDefinition(String(t.kind))?.fields?.shape;if(!o)return this.check(t);for(let a of r){if(a==="id"||a==="kind"||Tt.has(a))continue;let d=o[a];if(!d){delete t[a];continue}let u=d.safeParse(t[a]);u.success&&(u.data===void 0?delete t[a]:t[a]=u.data)}let i=Dt(this.schema,t);if(i===void 0)return t;let s=Dt(this.schema,e)?.fields??new Set;if([...i.fields].some(a=>r.includes(a)||!s.has(a)))throw this.refusal(t,i.error);return t}refusal(e,t){if(t instanceof ce)return t;{let r=e?.id??"?",o=e?.kind??"?",i=this.schema.tryDefinition(o),s=i&&e&&typeof e=="object"?B(i,e):r;return new z(`${s} does not match what ${o} declares`,Su(t))}}insertNode(e,t,r=!1){if(this.nodes.has(e.id))throw new z(`Duplicate node id "${e.id}"`);this.nodes.set(e.id,t?e:this.check(e)),qe(e)&&this.archived.add(e.id),this.tally(e.kind,1),this.place(fo+e.id,r)}insertEdge(e,t,r=!1){let o=this.nodes.get(e.from),i=this.nodes.get(e.to);if(!o||!i){let a=o?e.to:e.from;throw new W(a,`Edge "${e.kind}" references missing node "${a}"`)}if(this.validate&&!t&&!this.schema.edgeAllowed(e.kind,o.kind,i.kind)){let a=this.schema.edge(e.kind);throw new z(`Edge "${e.kind}" is not declared from ${o.kind} to ${i.kind}`,a?`Declared: ${a.from.join("|")} -> ${a.to==="*"?"*":a.to.join("|")}`:`No edge kind "${e.kind}" is declared in this schema`)}let s=N(e);if(!t&&(e.id!==void 0||e.data!==void 0)){let a=this.edges.get(s),d=Pa(e)??(a&&e.id!==void 0&&a.id!==e.id?`A second "${e.kind}" link between two records is not allowed yet`:(this.linkIds.get(e.id)??s)!==s?`Link id "${e.id}" is already taken`:void 0);if(d)throw new z(d)}this.edges.has(s)||(this.edges.set(s,e),e.id!==void 0&&this.linkIds.set(e.id,s),this.place(po+s,r),this.index(this.outIndex,e.from,s),this.index(this.inIndex,e.to,s))}deleteEdge(e){let t=N(e),r=this.edges.get(t)?.id;r!==void 0&&this.linkIds.delete(r),this.edges.delete(t),this.lapse(po+t),this.outIndex.get(e.from)?.delete(t),this.inIndex.get(e.to)?.delete(t)}index(e,t,r){(e.get(t)??e.set(t,new Set).get(t)).add(r)}edgesFrom(e,t){if(!e)return[];let r=[];for(let o of e){let i=this.edges.get(o);i&&(t===void 0||i.kind===t)&&r.push(i)}return r}resolve(e,t,r){let o=[];for(let i of this.edgesFrom(e,t)){let s=this.nodes.get(i[r]);s&&o.push(s)}return o}held=e=>this.archived.has(e.id);reach(e,t,r){let o=t?.archived??!1;return o==="all"||!o&&!this.archived.size?e:e.filter(i=>r(i)===o)}};var Ft=class extends Error{constructor(t,r){super(`No invariant registered under "${t}" (required by node "${r}")`);this.invariant=t;this.nodeId=r;this.name="UnregisteredInvariantError"}};function Ru(n,e){return{...e,name:n}}var Lt=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function Ea(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof Lt,i=r instanceof Error?r.message:String(r),s=n.label??n.name.replace(/-/g," ");return[{invariant:n.name,status:o?"over-budget":"could-not-judge",...t!==void 0?{subjectId:t}:{},label:s,message:`${s} could not be judged: ${i}`,nodeIds:t!==void 0?[t]:[],repairs:[]}]}}function kn(n,e,t={}){let r=t.context??{},o=t.today===void 0?{}:{today:t.today},i=t.onUnregistered??"skip",s=new Set(e.map(c=>c.name)),a=[];for(let c of e)c.scope==="graph"&&a.push(...Ea(c,()=>c.evaluate({graph:n,subject:void 0,context:r,...o}),void 0));let d=e.filter(c=>c.scope!=="graph"),u=new Map;for(let c of d){let p=c.scope.kind,g=u.get(p);g?g.push(c):u.set(p,[c])}for(let c of n.allNodes()){let p=n.schema.tryDefinition(c.kind),g=p?.requiresInvariant?.(c)??null;if(t.subjectFilter&&!t.subjectFilter(c,r))continue;if(g!==null&&!s.has(g)){if(i==="throw")throw new Ft(g,c.id);continue}let h=!Sr(p,c,t.today);for(let v of u.get(c.kind)??[]){if(h&&v.judgesPast!==!0)continue;let b=v.scope.match;b&&!b(c)||a.push(...Ea(v,()=>v.evaluate({graph:n,subject:c,context:r,...o}),c.id))}}let l=new Set,f=a.filter(c=>{let p=`${c.message}|${[...c.nodeIds].sort().join(",")}`;return l.has(p)?!1:(l.add(p),!0)}).map(c=>{let p=kr(c.message);return p===c.message?c:{...c,message:p}});return ho?ho(n,e,f,t.today):f}var ho;function Nv(n){ho=n}function $u(n,e){let t=new Set(e);return n.filter(r=>r.nodeIds.some(o=>t.has(o))||r.subjectId!==void 0&&t.has(r.subjectId))}function Au(n){let e=new Set(n.map(r=>r.invariant)).size;if(e===0)return"All rules hold";let t=`${e} ${e===1?"rule":"rules"} broken`;return n.length>e?`${t} in ${n.length} places`:t}var Zt=(n,e)=>n==="*"||n.includes(e);function T(n){let e=n.onBehalfOf;if(!e)return n;let t=e.roles??[],r=n.roles===void 0?t:n.roles.filter(o=>t.includes(o));return{...n,...e.id!==void 0?{id:e.id}:{},roles:r}}var V=n=>n.kind==="system"&&n.onBehalfOf===void 0,ke=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));function Ma(n){return Ei(n.map(e=>pn(K(e).toLowerCase())),"or")}function Se(n,e,t,r,o,i,s={},a,d,u){if(!n)return{ok:!0};if(V(e))return{ok:!0};if(e=T(e),o!==void 0){if(Se(n,e,t,r,void 0,i).ok)return{ok:!0};let p=!1;if(o.some(b=>Se(n,e,b,r,void 0,i).ok)){if(!d||i===void 0||e.id!==void 0&&d()===e.id||!u&&n.grants.some(b=>b.roles!=="*"&&ke(b,e)&&o.some(k=>Zt(b.mutations,k))))return{ok:!0};p=!0}let g=p?[t]:[t,...o],h=[...new Set(g.flatMap(b=>go(n,b,r)))].sort(),v=(p?"only on what you made; ":"")+(h.length===0?o.length===0?"no declared act creates or changes it, so no role can":"no role can":`${Ma(h)} can`);return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:h,message:za(n,g,r,v,s)}}}let l=!1;for(let p of n.grants){if(!ke(p,e)||!Zt(p.mutations,t)||p.kinds!==void 0&&p.kinds!=="*"&&(r===void 0||!p.kinds.includes(r))||p.self&&(i===void 0||e.id===void 0||i!==e.id))continue;let g=p.ownEnd?a?.()??[]:[e.id];if(!g.length||g.some(h=>h!==e.id)){l=!0;continue}return{ok:!0}}let f=go(n,t,r),c=l?"only on your own end of the link":f.length===0?"no role can":`${Ma(f)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:f,message:za(n,[t],r,c,s)}}}function za(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>Na(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${pn(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function Na(n,e,t){return[...new Set(Ia(n,e,t).flatMap(r=>r.describe||[]))]}var Ia=(n,e,t)=>n.grants.filter(r=>Zt(r.mutations,e)&&(t===void 0||Zt(r.kinds??"*",t)));function go(n,e,t){let r=Ia(n,e,t);return r.some(o=>o.roles==="*")?[]:[...new Set(r.flatMap(o=>o.roles))].sort()}function mo(n,e,t){return n?t.filter(r=>{let o=T(e).id;return yo(r).some(i=>Se(n,e,r.name,i,void 0,o,void 0,()=>[o??[]].flat()).ok)}):t}var yo=n=>n.subject&&n.subject.kinds!=="*"?n.subject.kinds:[void 0];var Ct="type-text",ie={};var se=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};var Gt="publish",bo=n=>n?.mode==="on-publish",vo=(n,e,t)=>bo(n)&&!V(e)&&(t==="published"||!(T(e).roles??[]).some(r=>n.working.includes(r))),q=globalThis[Symbol.for("@graview/core:publishing")]??={};q.input=()=>ze({through:Q(We())});var Qn=class{constructor(e,t,r){this.present=e;this.timeline=t;this.unversioned=r}nodes=new Map;edges=new Map;touching=new Map;seq=Number.MAX_SAFE_INTEGER;wrote=new Map;begin(e){this.seq=e,this.wrote.clear()}writerOf(e){return t=>{let r=`${e}\0${t}`;return this.wrote.has(r)?this.wrote.get(r):this.timeline?.writers?.writerAt(e,t,this.seq)}}note(e,t){let r=e.op==="add-node"?e.node.id:e.op==="patch-node"||e.op==="splice-text"?e.id:"";if(r===""||this.unversioned?.has(r))return;let o=e.op==="add-node"?Object.keys(e.node):e.op==="splice-text"?[e.field]:Object.keys(e.after);for(let i of o)i!=="id"&&i!=="kind"&&this.wrote.set(`${r}\0${i}`,t(r,i))}node(e){return this.nodes.has(e)?this.nodes.get(e)??void 0:this.present.getNode(e)}setNode(e,t){this.nodes.set(e,t)}setEdge(e,t){let r=N(e);this.edges.set(r,t?e:null);for(let o of[e.from,e.to]){let i=this.touching.get(o);i||this.touching.set(o,i=new Set),i.add(r)}}incident(e){let t=new Map;for(let r of[...this.present.outEdges(e),...this.present.inEdges(e)]){let o=N(r);this.edges.has(o)||t.set(o,r)}for(let r of this.touching.get(e)??[]){let o=this.edges.get(r);o&&t.set(r,o)}return[...t.values()]}undo(e){switch(e.op){case"add-node":this.setNode(e.node.id,null);return;case"remove-node":this.setNode(e.node.id,e.node);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,Ta(t,e.before));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,mr(t,e,!0));return}case"add-edge":this.setEdge(e.edge,!1);return;case"remove-edge":this.setEdge(e.edge,!0);return}}apply(e){switch(e.op){case"add-node":this.setNode(e.node.id,e.node);return;case"remove-node":for(let t of this.incident(e.node.id))this.setEdge(t,!1);this.setNode(e.node.id,null);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,Ta(t,e.after));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,mr(t,e));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function Ta(n,e){let t={...n};for(let[r,o]of Object.entries(e))Ge(o)?delete t[r]:t[r]=o;return t}var _u=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"||n.op==="splice-text"?n.id:void 0;function wo(n,e,t,r){let o=l=>{let f=e.node(l);return f?t.served(f,e.writerOf(l))!==void 0:t.sees?.(l)??!1},i=_u(n);if(i===void 0){let l=n.edge,f=t.edgeClean(l)&&o(l.from)&&o(l.to);return e.apply(n),{primitives:f?[n]:[],faithful:!0}}let s=e.node(i),a=s?t.served(s,e.writerOf(i)):void 0;e.apply(n),e.note(n,r);let d=e.node(i),u=d?t.served(d,e.writerOf(i)):void 0;if(!a&&!u)return{primitives:[],faithful:!1};if(!a&&u){let l=e.incident(i).filter(c=>t.edgeClean(c)&&o(c.from===i?c.to:c.from)).map(c=>({op:"add-edge",edge:c})),f=n.op==="add-node"&&u===n.node&&l.length===0;return{primitives:f?[n]:[{op:"add-node",node:u},...l],faithful:f}}if(a&&!u){let l=n.op==="remove-node"&&a===s;return{primitives:l?[n]:[{op:"remove-node",node:a}],faithful:l}}if(n.op==="patch-node"){let l=(c,p)=>g=>g in c==(p!==void 0&&g in p);if(Object.keys(n.after).every(c=>l(a,s)(c)&&l(u,d)(c)))return{primitives:[n],faithful:!0};let f=c=>Object.fromEntries(Object.keys(n.after).map(p=>[p,p in c?c[p]:fe]));return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(u)}],faithful:!1}}if(n.op==="splice-text"){let l=n.field;if(a[l]===s[l]&&u[l]===d[l])return{primitives:[n],faithful:!0};let f=c=>({[l]:l in c?c[l]:fe});return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(u)}],faithful:!1}}return{primitives:[{op:"remove-node",node:a},{op:"add-node",node:u}],faithful:!1}}function ja(n,e,t){if(n.length===0)return[];let r=e.log.all(),o=r[0]?.seq??0,i=n.every(c=>r[c.seq-o]?.id===c.id),s=new Qn(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(c=>{let p=T(c.author).id,g=c.primitives.map(h=>wo(h,s,t,()=>p));return{op:c,primitives:g.flatMap(h=>h.primitives),faithful:g.every(h=>h.faithful)}});let a=new Set(n.map(c=>c.seq)),d=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let c of a)c<d&&(d=c),c>u&&(u=c);d-=o,u-=o;let l=Ou(r,d,e.present,t),f=l?new Qn(e.present,e,l.unversioned):s;for(let c=r.length-1;c>=d;c--){let p=r[c].primitives;for(let g=p.length-1;g>=0;g--)f.undo(p[g])}return Pu(n,r,d,u,a,f,l?.judge??t,e)}function Ou(n,e,t,r){let{sees:o,names:i}=r;if(!o||!i)return;let s=new Set,a=new Set,d=new Set,u=(f,c)=>{s.has(f)||a.has(f)||(o(f)?i(c)?(a.add(f),d.delete(f)):d.add(f):(s.add(f),d.delete(f)))};for(let f=e;f<n.length;f++)for(let c of n[f].primitives)c.op==="add-node"||c.op==="remove-node"?u(c.node.id,c.node):c.op==="patch-node"?(u(c.id,c.before),u(c.id,c.after)):c.op==="splice-text"&&(u(c.id,{}),s.has(c.id)||(a.add(c.id),d.delete(c.id)));for(let f of d){let c=t.getNode(f);c&&i(c)&&(d.delete(f),a.add(f))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(f,c)=>d.has(f.id)?f:s.has(f.id)?void 0:r.served(f,c)}}}function Pu(n,e,t,r,o,i,s,a){let d=new Map;for(let u=t;u<=r;u++){let l=e[u];if(i.begin(l.seq),!o.has(l.seq)){for(let p of l.primitives)i.apply(p);continue}let f=(p,g)=>a.writers?.writerAt(p,g,l.seq+1),c=l.primitives.map(p=>wo(p,i,s,f));d.set(l.seq,{op:l,primitives:c.flatMap(p=>p.primitives),faithful:c.every(p=>p.faithful)})}return n.map(u=>d.get(u.seq))}function Uv(n,e,t,r){let o=new Qn(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>wo(i,o,t,()=>r).primitives)}var Fa="A change you cannot see",La={kind:"system",id:"withheld",name:"Someone"};function Sn(n){return n.withheld===!0}var et=_e,Za=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&j(r,e));function Ca(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!Za(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function j(n,e){if(typeof n=="string")return!e(n);if(n===null||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0;t<n.length;t++)if(j(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||j(n[t],e)))return!0;return!1}function Ga(n,e){let t=r=>!e(r);return n.primitives.some(r=>et(r).some(t))||[...n.writes,...n.reads].some(t)||n.mutation!==null&&j(n.mutation.args,e)}function Eu(n,e){if(et(n).every(e.shows))switch(n.op){case"add-node":{let t=e.served(n.node);return t?t===n.node?n:{op:"add-node",node:t}:void 0}case"remove-node":{let t=n.node;return Za(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!j(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!j(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=fe;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!j(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return j(n.edge,e.sees)?void 0:n;case"splice-text":return j(n.removed,e.sees)||j(n.inserted,e.sees)?void 0:n}}function xo(n,e,t){let r=Ca(e),o=i=>r.shows(i)&&Ka(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:La,intent:Fa,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=Eu(i,r);return s?[s]:[]}),reads:n.reads.filter(o),writes:n.writes.filter(o),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function Rn(n,e){let t=Ca(e);if(t.hides?.()===!1)return[...n];let r=t.pin?.()??t;if(r.redact)return r.redact(n);if(r.timeline){let o={served:(i,s)=>r.servedWith(i,s),edgeClean:i=>!j(i,r.sees),sees:r.sees,names:i=>j(i,r.sees)};return ja(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?Da(i,r,s):void 0)??xo(i,r,s))}return n.map(o=>(!o.withheld&&!Ga(o,r.shows)?Da(o,r):void 0)??xo(o,r))}function Da(n,e,t){let r=n.inverse??n.primitives;if(t&&t.length<n.primitives.length){if(!t.length)return;r=r.filter(h=>et(h).every(e.shows));let{inverse:p,...g}=n;n={...g,primitives:t}}let o=p=>e.sees(p)&&Ka(e,p),i=n.reads.filter(o),s=new Set(n.primitives.flatMap(et)),a=n.writes.filter(p=>o(p)||e.sees(p)&&s.has(p)),d=i.length===n.reads.length&&a.length===n.writes.length?n:{...n,reads:i,writes:a},u=e.actor!==void 0&&T(n.author).id===e.actor;if(!u&&n.described?.some(p=>!e.sees(p)))return;if(!j(n,e.sees))return d;let l=new Set,f=p=>{if(typeof p=="string")l.add(p);else if(Array.isArray(p))for(let g of p)f(g);else if(p!==null&&typeof p=="object")for(let[g,h]of Object.entries(p))l.add(g),f(h)};t&&f(t);let c=p=>e.sees(p)||l.has(p);if(!j(r,c))return u&&n.mutation&&f(n.mutation.args),j({...d,primitives:[],inverse:[]},u?c:e.sees)?void 0:d}function Ka(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var Ye=class extends z{constructor(t){super(t.message);this.check=t;this.name="UndoBlockedError"}get blockedBy(){return this.check.blockedBy}};function nt(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(h=>t.has(h.batch)&&!r.has(h.id)),i=[...n.epochs()].reverse().find(h=>h.horizon);if(i){let h=new Set(n.all().map(b=>b.batch)),v=e.filter(b=>!h.has(b));if(v.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${v.map(b=>`batch ${b}`).join(", ")}: it is not after the undo horizon at op ${i.seq}${i.at?` (${i.at})`:""}. What was done before the horizon is archived, and undo does not reach behind it.`}}if(o.length===0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:e.length===0?"No batch given to undo":`Nothing live to undo in ${e.join(", ")} \u2014 already undone, or never applied`};if(o.some(Sn))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(Sn)?"Cannot undo a change you cannot see: only somebody who can see it can take it back.":"Cannot undo this here: part of it is a change you cannot see, and only somebody who can see it can take it back."};if(o.some(h=>h.enabledModules!==void 0))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:"Cannot undo turning a module off or on: it is changed by turning the module the other way."};let s=i&&o.some(h=>h.publishedThrough!==void 0)?q.undo?.(n,o,i):void 0;if(s)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:s};let a=new Set;for(let h of o)for(let v of h.writes)a.add(v);let d=Math.min(...o.map(h=>h.seq)),u=n.epochs().find(h=>h.change!==void 0&&h.seq>d);if(u){let h=o.find(v=>v.seq<u.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${h.intent}": ${h.intent===u.change?"it changed the declaration":`it was done before the declaration changed (${u.change})`}, and undo does not reach back across that change.`}}let l=new Map(n.all().map(h=>[h.id,h.seq])),f=o.flatMap(h=>h.primitives),c=[];for(let h of n.all()){if(h.seq<=d||t.has(h.batch)||r.has(h.id)||h.undoes!==void 0&&(l.get(h.undoes)??-1)>d)continue;let v=ie.aside?.(f,h);if(v===!0)continue;let b=[...new Set([...h.reads.filter(k=>a.has(k)),...v??[]])];b.length>0&&c.push({op:h,overlap:b})}if(c.length===0)return{ok:!0,ops:o};let p=c.filter(h=>!Sn(h.op)).map(h=>`"${h.op.intent}" (op ${h.op.id}, read ${h.overlap.join(", ")})`).join("; ");if(c.some(h=>Sn(h.op)))return{ok:!1,ops:o,blockedBy:c,includeBatches:[],message:`Cannot undo on its own \u2014 ${p?`a later operation depends on it: ${p}; and `:""}a later change you cannot see depends on it, which only somebody who can see it can take back.`};let g=[...new Set(c.map(h=>h.op.batch))];return{ok:!1,ops:o,blockedBy:c,includeBatches:g,message:`Cannot undo on its own \u2014 a later operation depends on it: ${p}. Include ${g.map(h=>`batch ${h}`).join(", ")} to undo them together.`}}function Ba(n,e){return e?ko(e,n).flatMap(t=>[...t.primitives]):[...n].sort((t,r)=>r.seq-t.seq).flatMap(t=>Ke(t))}function ko(n,e){return ie.undone?ie.undone(n,e):[...e].sort((t,r)=>r.seq-t.seq).map(t=>({op:t,primitives:Ke(t)}))}var Je=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function Mu(n){let e=n instanceof Error?n.message:String(n);if(n instanceof Je){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof W?{reason:"missing",sentence:e}:n instanceof se?{reason:n.reason,sentence:n.sentence}:n instanceof Ye?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var he=class extends z{constructor(t,r){super(`Invalid arguments for mutation "${t}"`,r.map(o=>`${o.path.map(String).join(".")||"(root)"}: ${o.message}`).join("; "));this.mutation=t;this.issues=r;this.name="InvalidArguments"}};var zu=["edit","remove","archive","unarchive","merge","leave-alone","allow-tidying"];var fw=n=>zu.map(e=>`${e}-${n}`);function Ua(n){let e=/^(edit|remove|archive|unarchive|merge|leave-alone|allow-tidying|skip|detach|split)-(.+)$/.exec(n);return e?{act:e[1],kind:e[2]}:void 0}var So=["connect","disconnect"],Wa=n=>n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),Ro=(n,e,t)=>`${n}-${e}-${Wa(t)}`;function pw(n,e){let t=/^(connect|disconnect)-(.+)$/.exec(n);if(t){for(let[r,o]of e)if(t[2].startsWith(`${r}-`)){for(let i of o)if(t[2]===`${r}-${Wa(i)}`)return{act:t[1],kind:r,relation:i}}}}var hw=n=>[...n].flatMap(([e,t])=>[...t].flatMap(r=>So.map(o=>Ro(o,e,r)))),Va=n=>`${/^[aeiou]/i.test(n)?"an":"a"} ${n}`;function qa(n,e){let t=e.also?` (${e.also})`:"";return{title:`${e.one?`${n==="connect"?"Set":"Clear"} the ${e.to}`:`${n==="connect"?"Link":"Unlink"} ${Va(e.to)}`}${t}`,fromTheOtherEnd:`${n==="connect"?"Link":"Unlink"} ${Va(e.from)}${t}`}}function Ha(n,e,t,r){if(t.cardinality!=="one"||t.to==="*"||t.to.length!==1||t.to[0]!==n)return;let o=t.description?.trim().replace(/\.$/,"");return o&&/^the\s+\S/i.test(o)&&!/[.;:!?,()]/.test(o)&&o.split(/\s+/).length<=8?{to:o.replace(/^the\s+/i,"")}:{also:r(e)}}var Xe=n=>n.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").replace(/-+/g,"-").toLowerCase();function Kt(n,e){let t=Xe(n),r=[...e];if(r.includes(n))return n;let o=r.filter(i=>Xe(i)===t);return o.length===1?o[0]:void 0}function Nu(n,e){let t=Array.from({length:e.length+1},(r,o)=>o);for(let r=1;r<=n.length;r+=1){let o=[r];for(let i=1;i<=e.length;i+=1)o[i]=Math.min(t[i]+1,o[i-1]+1,t[i-1]+(n[r-1]===e[i-1]?0:1));t=o}return t[e.length]}function $o(n,e){let t=[...e],r=Kt(n,t);if(r)return r;let o=Xe(n);if(o==="")return;let i,s=!1;for(let a of t){let d=Nu(o,Xe(a));d>Math.max(2,Math.floor(Math.max(o.length,a.length)/3))||(!i||d<i.far?(i={act:a,far:d},s=!1):d===i.far&&(s=!0))}return i&&!s?i.act:void 0}var Iu=n=>`Op "${n.id}" has seq ${n.seq}, so the log begins at seq ${n.seq}: a log that begins past 0 begins at its undo horizon, and none was given (a checkpoint epoch, or { horizon })`,$n=class n{ops=[];marks=[];start=0;get length(){return this.start+this.ops.length}get horizon(){return this.start}all(){return this.ops}opsFrom(e){return this.ops.slice(Math.max(0,e-this.start))}append(e){if(e.seq!==this.length)throw new Error(this.length===0&&e.seq>0?Iu(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);uo(e),this.ops.push(In(e))}static from(e,t=[],r={}){let o=new n,i=[...t].reverse().find(d=>d.horizon),s=r.horizon??i?.seq??0;if(!Number.isInteger(s)||s<0)throw new Error(`A log cannot begin at seq ${s}`);if(i&&r.horizon!==void 0&&i.seq!==r.horizon)throw new Error(`A log said to begin at seq ${r.horizon} has its checkpoint at seq ${i.seq}`);let a=e[0];if(a&&s>0&&a.seq!==s)throw new Error(`A log compacted at seq ${s} begins with op "${a.id}" at seq ${a.seq}`);o.start=s;for(let d of e)o.append(d);for(let d of t)o.markEpoch(d);return o}replace(e,t=[],r={}){let o=n.from(e,t,r);this.ops=o.ops,this.marks=o.marks,this.start=o.start}epochs(){return this.marks}horizonEpoch(){for(let e=this.marks.length-1;e>=0;e--)if(this.marks[e].horizon)return this.marks[e]}lastEpoch(){return this.marks.at(-1)}markEpoch(e){if(!Number.isInteger(e.seq)||e.seq<0||e.seq>this.length)throw new Error(`An epoch at seq ${e.seq} starts past the end of a log ${this.length} long`);if(e.seq<this.start)throw new Error(`An epoch at seq ${e.seq} is behind the horizon at seq ${this.start}: it went to the archive with the ops before it`);let t=this.lastEpoch();if(t&&e.seq<t.seq)throw new Error(`An epoch at seq ${e.seq} comes before the last one, at seq ${t.seq}`);this.marks.push(e)}truncate(e){if(!Number.isInteger(e)||e<this.start||e>this.length)throw new Error(`Cannot cut a log ${this.length} long back to ${e}`);let t=this.lastEpoch();if(t&&t.seq>e)throw new Error(`Cannot cut the log back to ${e}: an epoch begins at seq ${t.seq}`);return this.ops.splice(e-this.start)}checkpointAt(e,t,r={}){if(!Number.isInteger(t)||t<this.start||t>this.length)throw new Error(`No checkpoint at seq ${t}: this log holds seqs ${this.start} to ${this.length}`);let o=[...this.marks].reverse().find(a=>a.seq<=t);if(o?.seq===t)return{...o,horizon:!0};let i=this.fold(e,{...r,...o?{from:o}:{},to:t}).snapshot(),s=this.ops[t-1-this.start]?.at??o?.at;return{seq:t,base:i,...o?.version!==void 0?{version:o.version}:{},...s!==void 0?{at:s}:{},horizon:!0}}compact(e){if(!Number.isInteger(e.seq)||e.seq<this.start||e.seq>this.length)throw new Error(`Cannot compact at seq ${e.seq}: this log holds seqs ${this.start} to ${this.length}`);let t=this.ops.slice(0,e.seq-this.start),r=this.marks.filter(o=>o.seq<e.seq);return this.ops=this.ops.slice(e.seq-this.start),this.marks=[{...e,horizon:!0},...this.marks.filter(o=>o.seq>e.seq)],this.start=e.seq,{ops:t,epochs:r}}get(e){return this.ops.find(t=>t.id===e)}live(){let e=this.undoneIds();return this.ops.filter(t=>!e.has(t.id))}undoneIds(){return Qe(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return Ao(this.ops,this.undoneIds())}fold(e,t={}){let r=t.from?.seq??0;if(r<this.start)throw new Error(t.from?`An epoch at seq ${r} is behind the horizon at seq ${this.start}: fold from the checkpoint`:`A log compacted at seq ${this.start} does not fold from empty: fold from its checkpoint`);let o=t.from?.base??{nodes:[],edges:[]},i=ee.from(e,o,t.validate!==void 0?{validate:t.validate}:{}),s=t.to??this.length;for(let a of this.ops.slice(r-this.start,Math.max(0,s-this.start)))Tu(i,a);return i}toJSON(){return[...this.ops]}};function Tu(n,e){if(e.undoes!==void 0){n.applyPrimitives(e.primitives,{restoring:!0});return}try{n.applyPrimitives(e.primitives)}catch{n.applyPrimitives(e.primitives,{restoring:!0})}}function Qe(n){let e=new Map;for(let r of n){if(!r.undoes)continue;let o=e.get(r.undoes);o?o.push(r.id):e.set(r.undoes,[r.id])}let t=new Map;for(let r=n.length-1;r>=0;r--){let o=n[r],i=e.get(o.id)??[];t.set(o.id,!i.some(s=>t.get(s)===!0))}return new Set(n.filter(r=>t.get(r.id)===!1).map(r=>r.id))}function Ao(n,e){let t=[],r=new Map;for(let o of n){let i=r.get(o.batch);i?i.push(o):(r.set(o.batch,[o]),t.push(o.batch))}return t.map(o=>{let i=r.get(o)??[],s=i[0];return{id:o,author:s.author,intent:s.batchIntent??s.intent,at:s.at,...s.lineage?{lineage:s.lineage}:{},ops:i,undone:i.every(a=>e.has(a.id))}})}function _o(n){return n?.automated===!0&&n.kind!=="human"&&n.kind!=="rule"}var Ja=n=>n?.[Yn]===!0,ju=(n,e)=>Ja(("graph"in n?n.graph:n).getNode(e));function Ya(n,e,t){let r=n.tryDefinition(e);return t===void 0?r?.tidying:r?.edges?.[t]?.tidying}var Du=n=>JSON.stringify(n,(e,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.fromEntries(Object.entries(t).sort()):t);var Fu=/^(archive|unarchive|remove|leave-alone|allow-tidying)$/;function Lu(n,e){let t=Xe(n.name),r=e?.act(n.name),o=n.args??{},i=r?r.derived:Ua(t),{id:s}=o;if(i&&typeof s=="string"){if(Fu.test(i.act))return[i.act,s];if(i.act==="merge")return["merge",...[s,o.into].sort()];if(i.relation)return[i.act,i.relation,s,o.to]}let a=r?.subject?.arg??"id",[d,u]=Object.keys(o).filter(l=>l!==a);return r?.connects?.length===1&&d&&!u&&e.has(o[a])&&e.has(o[d])?["connect",r.connects[0],o[a],o[d]]:[t,r?.creates?.length&&typeof s=="string"&&!e.has(s)?{...o,id:0}:o]}var Xa=(n,e)=>`\u2248${Du(n.map(t=>Lu(t,e)))}`;function Qa(n,e,t){let r=Zu(n,t);return[e,...e.map(o=>[o])].map(o=>r.get(Xa(o,t))).find(Boolean)}function Zu(n,e){let t=Qe(n),r=new Map(n.map(i=>[i.id,i])),o=new Map;for(let i of n){let s=i.undoes!==void 0&&!t.has(i.id)&&!i.withheld?r.get(i.undoes):void 0;if(s?.suggests&&s.author.kind===i.author.kind&&s.author.id===i.author.id)continue;let a=s?.suggests??(s?.mutation&&(s.lineage||i.undoneLineage)?[s.mutation]:[]);if(a.length>0)for(let d of[a,...a.map(u=>[u])])o.set(Xa(d,e),i)}return o}function ed(n,e,t,r,o={}){let i=o.declaration!==!1,s=(a,d)=>`${r} may not ${a}: ${d}.`;for(let a of t){let d="edge"in a?a.edge:void 0,u=(d?[d.from,d.to]:["id"in a?a.id:a.node.id]).map(l=>e.getNode(l)??("node"in a?a.node:void 0));for(let l of u){if(!l)continue;if(Ja(l))return s(`change \u201C${B(n.tryDefinition(l.kind),l)}\u201D`,"a person said to leave it alone");if(!i)continue;let f=Ya(n,l.kind);if(f==="never")return s(`change ${ae(n,l.kind)} on its own`,"the app says they are never tidied");if(d&&f==="no-links")return s(`link or unlink ${ae(n,l.kind)} on its own`,"the app says they are never linked automatically")}if(d&&i&&u[0]&&Ya(n,u[0].kind,d.kind)==="never")return s(`${a.op==="add-edge"?"make":"break"} a \u201C${d.kind}\u201D link on its own`,"the app says that relation is never tidied")}}function Cu(n,e){if(!e||n.length===0)return null;let t=e.roles,r=o=>t?o.wouldNeed.some(i=>t.includes(i)):o.wouldNeed.length>0;return n.every(({refusal:o})=>r(o))?e:null}var Bt={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},Gu={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},Ku={under:0,raised:1,over:2},Oo=n=>`--graview-layer-${n}`,Bu=n=>`var(${Oo(n)}, ${Bt[n]})`;function Vu(){return Object.keys(Bt).map(n=>` ${Oo(n)}: ${Bt[n]};`).join(`
|
|
4
|
-
`)}function Uu(n){let e=n.onBehalfOf??n;return{kind:e.kind,...e.id!==void 0?{id:e.id}:{},...e.name!==void 0?{name:e.name}:{},...e.roles!==void 0?{roles:e.roles}:{}}}function nd(){return`sub_${(globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`).replace(/-/g,"").slice(0,20)}`}function td(n){return{...n,id:n.id??nd(),at:n.at??new Date().toISOString()}}function Wu(n=[]){let e=[...n],t=new Set,r=()=>{for(let o of t)o()};return{list:o=>o===void 0?e:e.filter(i=>i.who.id===o),add(o){let i=td(o);return e=[...e.filter(s=>s.id!==i.id),i],r(),i},remove(o){let i=e.length;e=e.filter(a=>a.id!==o);let s=e.length<i;return s&&r(),s},onChange(o){return t.add(o),()=>t.delete(o)}}}var Po=(n,e)=>`${n}\0${e}`,rd=new WeakMap;function qu(n,e){let t=new Map;for(let[o,i]of Object.entries(e??{}))for(let[s,a]of Object.entries(i))t.set(Po(o,s),[{seq:n-1,by:a}]);return{base:n,end:n,read:[],fields:t,written:[],seqOf:new Map,writers:{writerAt:(o,i,s)=>{let a=t.get(Po(o,i));if(!a)return;let d=0,u=a.length;for(;d<u;){let l=d+u>>1;a[l].seq<s?d=l+1:u=l}return d===0?void 0:a[d-1].by}}}}function Hu(n){if(n.op==="add-node")return[n.node.id,Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind")];if(n.op==="patch-node")return[n.id,Object.keys(n.after).filter(e=>!Ge(n.after[e]))];if(n.op==="splice-text")return[n.id,[n.field]]}function Yu(n,e){let t=n.end,r=T(e.author).id,o=e.undoes!==void 0?n.seqOf.get(e.undoes):void 0,i=[];for(let s of e.primitives){let a=Hu(s);if(!a)continue;let[d,u]=a;for(let l of u){let f=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,l,o):void 0,c=Po(d,l),p=n.fields.get(c);p||n.fields.set(c,p=[]),p.push({seq:t,by:f}),i.push(c)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function Ju(n,e){for(;n.written.length>0&&n.written.at(-1).seq>=e;){let{keys:t}=n.written.pop();for(let r of t)n.fields.get(r)?.pop()}for(let t of n.read.slice(e-n.base))n.seqOf.delete(t.id);n.read.length=e-n.base,n.end=e}function tt(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=rd.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&Ju(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||rd.set(n,o=qu(r,r>0?[...n.epochs?.()??[]].reverse().find(i=>i.horizon)?.writers:void 0));for(let i=o.end;i<t;i++)Yu(o,e[i-r]);return o.writers}function od(n,e,t,r){let o=tt(n),i={};for(let s of t)for(let a in s){if(!Object.hasOwn(s,a)||a==="id"||a==="kind"||!r(s[a]))continue;let d=o.writerAt(s.id,a,e);d!==void 0&&((i[s.id]??={})[a]=d)}return i}var en={served:new WeakSet},rt=n=>n.fields!==void 0||(n.hide?.length??0)>0,id=(n,e,t)=>(n??[]).some(r=>r.kinds.includes(e)&&(r.hide?.includes(t)===!0||r.fields!==void 0&&!r.fields.includes(t))),sd=(n,e,t,r)=>Object.entries(t).some(([o,i])=>typeof i=="string"&&i.trim()!==""&&n.includes(i.trim())&&r(e,o)),Te=n=>en.on===!0||en.served.has(n);var Eo=new WeakMap;function Xu(n,e){let t=new Map(Object.entries(e?.removed??{})),r=new Map(Object.entries(e?.creators??{})),o=n===0||e?.removed!==void 0;return{base:n,end:n,read:[],kinds:t,creators:r,entries:[],records:{kindOf:i=>t.get(i),creatorOf:i=>r.get(i),knowsAll:o}}}function Qu(n,e){let t=n.end;for(let r of e.primitives){if(r.op!=="add-node"&&r.op!=="remove-node")continue;let{id:o,kind:i}=r.node;if(n.kinds.has(o)||(n.kinds.set(o,i),n.entries.push({seq:t,id:o,creator:!1})),r.op!=="add-node"||n.creators.has(o)||e.undoes!==void 0)continue;let s=T(e.author).id;s!==void 0&&(n.creators.set(o,s),n.entries.push({seq:t,id:o,creator:!0}))}n.read.push(e),n.end++}function ef(n,e){for(;n.entries.length>0&&n.entries.at(-1).seq>=e;){let t=n.entries.pop();(t.creator?n.creators:n.kinds).delete(t.id)}n.read.length=e-n.base,n.end=e}function le(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Eo.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&ef(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Eo.set(n,o=Xu(r,r>0?nf(n,r):void 0));for(let i=o.end;i<t;i++)Qu(o,e[i-r]);return o.records}function nf(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function ad(n,e,t){le(n);let r=Eo.get(n),o=[new Set,new Set];for(let a=r.entries.length-1;a>=0&&r.entries[a].seq>=e;a--)o[+r.entries[a].creator].add(r.entries[a].id);let i={},s={};for(let[a,d]of r.creators)o[1].has(a)||(i[a]=d);for(let[a,d]of r.kinds)!o[0].has(a)&&!t(a)&&(s[a]=d);return r.records.knowsAll?{creators:i,removed:s}:{creators:i}}function An(n,e,t,r,o,i=en.on===!0){if(!n?.sees?.length||V(e))return!0;let s=n.sees.filter(a=>a.kinds.includes(t.kind)&&(i||!rt(a)));return s.length===0?!1:(e=T(e),s.some(a=>{if(!ke(a,e))return!1;if(!a.own&&!a.via)return!0;let d=e.id;if(d===void 0)return!1;let u=l=>l.id===d;return a.via?r.out(t.id,a.via).some(u)||r.in(t.id,a.via).some(u):t.id===d||r.out(t.id).some(u)||r.in(t.id).some(u)||o?.creatorOf(t.id)===d}))}var cd=Symbol.for("@graview/core:node-ref"),dd=n=>typeof n=="object"&&n!==null?n[cd]:void 0;function je(n="*"){return tf(L().check(Kn(1)),n)}function tf(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,cd,{value:t,enumerable:!0,configurable:!0})};return r(n),r(D(n)),n}function ot(n){if(typeof n!="object"||n===null)return;let e=dd(n);if(e)return e;let t=D(n),r=dd(t);if(r)return r;let o=t?.innerType;return o?ot(o):void 0}function it(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=ot(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}var zo=new Set;function Vt(n,e){return V(e)?zo:n.modules?.disabledKinds??zo}function nn(n,e){return V(e)?!1:(n.policy?.sees?.length??0)>0||Vt(n,e).size>0}function pd(n,e){if(!nn(n,e))return()=>!0;let t=n.modules?.disabledKinds??zo,r=n.policy?.sees??[],o=T(e),i=Te(n),s=l=>!t.has(l)&&(r.length===0||r.some(f=>f.kinds.includes(l)&&ke(f,o)&&!f.own&&!f.via&&(i||!rt(f)))),a=n.schema.kinds.every(s),d=l=>s(l)&&rf(n.schema,l).every(f=>f.every(c=>c==="*"?a:s(c))),u=a&&n.schema.kinds.every(d);return l=>u||l!==void 0&&d(l)}function st(n,e){return t=>{let r=Vt(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=le(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&An(n.policy,e,i,n.graph,o,Te(n));let s=o.kindOf(t)??hd(n,o,t);return s===void 0?!0:!r.has(s)&&An(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o,Te(n))}}function rf(n,e){let t=n?.tryDefinition?.(e)?.fields?.shape??{};return Object.values(t).flatMap(r=>{let o=ot(r);return o&&r.safeParse?.(void 0).success===!1?[o]:[]})}var of={out:()=>[],in:()=>[]};function hd(n,e,t){if(e.knowsAll||en.served.has(n))return;let r=t.indexOf(":");if(r<=0)return;let o=t.slice(0,r);return n.schema?.tryDefinition(o)?o:void 0}function sf(n,e,t=new Map,r){let o=Vt(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=le(n.log);return s=>{let a=t.get(s);if(a!==void 0)return a;let d,u=n.graph.getNode(s);if(u)d=!o.has(u.kind)&&An(n.policy,e,u,n.graph,i,Te(n));else{let l=i.kindOf(s)??hd(n,i,s);if(l===void 0)return r?.add(s),!0;d=!o.has(l)&&An(n.policy,e,{id:s,kind:l},of,i,Te(n))}return t.set(s,d),d}}function af(n){let e=new Map;return(t,r)=>{let o=`${t}\0${r}`,i=e.get(o);if(i===void 0){let s=n?.tryDefinition(t)?.fields?.shape,a=s?.[r];i=s!==void 0&&(a===void 0||a.safeParse?.(void 0).success===!0),e.set(o,i)}return i}}function Ut(n,e){return gd(n,e).lens}var No=()=>({judged:new Map,shown:new Map});function gd(n,e){let t=af(n.schema),r=V(e)?void 0:T(e).id,o=()=>n.log.length??n.log.all().length,i=new WeakMap,s=n.graph,a=(l,f,c,p,g)=>{let h=(y,S)=>{if(!l(y.id))return;let w;for(let M in y)if(!(!Object.hasOwn(y,M)||M==="id"||M==="kind"||!j(y[M],l))&&!(r!==void 0&&S(M)===r)){if(!t(y.kind,M))return;(w??=[]).push(M)}if(!w)return y;let R=w.join("\0"),P=i.get(y);if(P?.without===R)return P.node;let E=Object.fromEntries(Object.entries(y).filter(([M])=>!w.includes(M)));return i.set(y,{without:R,node:E}),E},v=y=>{let S=c();return h(y,w=>f().writerAt(y.id,w,S))},b=new WeakMap,k=g?y=>{let S=b.get(y);return S||b.set(y,S={node:v(y)}),S.node}:v,$=y=>{if(!l(y))return!1;let S=s.getNode(y);return S===void 0||k(S)!==void 0},x=g?.shown??new Map,_=g?y=>{let S=x.get(y);return S===void 0&&x.set(y,S=$(y)),S}:$,A=s.outEdges&&s.inEdges?{present:{getNode:y=>s.getNode(y),outEdges:y=>s.outEdges(y),inEdges:y=>s.inEdges(y)},log:n.log,get writers(){return f()}}:void 0,m={sees:l,shows:_,served:k,servedWith:h,optional:t,kindOf:p,...r!==void 0?{actor:r}:{},...A?{timeline:A}:{},hides:()=>nn(n,e),pin:g?()=>m:()=>d(No())};return en.lens?.(m,n,e)??m};function d(l){let f,c=o(),p=le(n.log);return a(sf(n,e,l.judged,l.unnamed),()=>f??=tt(n.log),()=>c,g=>s.getNode(g)?.kind??p.kindOf(g),l)}return{lens:a(st(n,e),()=>tt(n.log),o,l=>s.getNode(l)?.kind??le(n.log).kindOf(l)),pinWith:d}}var ld=new WeakMap,ud=new WeakMap,df=n=>{let e=new Set;for(let t of n)for(let r of t.primitives)r.op==="add-node"||r.op==="remove-node"?e.add(r.node.id):r.op==="patch-node"||r.op==="splice-text"?e.add(r.id):(e.add(r.edge.from),e.add(r.edge.to));return e};function md(n,e){if(!nn(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...Vt(n,e)].sort().join("\0"),s=yd(e),a=ld.get(n.log);a||ld.set(n.log,a=new Map);let d=a.get(s),{pinWith:u}=gd(n,e),l=ud.get(n.log);l||ud.set(n.log,l=new Set);let f=d!==void 0&&d.horizon===o&&d.off===i&&d.length<=r&&(d.length===o||t[d.length-1-o]===d.last);if(d&&f){if(d.length===r)return d.ops;let g=t.slice(d.length-o),h=u(No()),v=!0,b=df(g);for(let k of b){let $=d.judgments.judged.get(k),x=d.judgments.shown.get(k);if($!==void 0&&h.sees(k)!==$||x!==void 0&&h.shows(k)!==x){v=!1;break}}if(v){for(let k of b)if(l.has(k)){v=!1;break}}if(v){let k=[...d.ops,...Rn(g,u(d.judgments))],$={horizon:o,off:i,length:r,last:t.at(-1),ops:k,judgments:d.judgments};return a.set(s,$),k}}let c={...No(),unnamed:l},p=Rn(t,u(c));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:p,judgments:c}),p}function cf(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!j(t,n.sees)}function Io(n,e){return{all:()=>n,undoneIds:()=>Qe(n),epochs:e}}var fd=new WeakMap;function yd(n){let e=V(n)?n:T(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?`for:${n.id??""}`:""}`}var bd=(n,e)=>`${yd(n)}@${e}`,Mo=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t},lf=Symbol.for("@graview/core:seat");function Re(n,e,t={}){if(vo(n.publishing,e,t.as)){if(q.served)return q.served(n,e);throw new Error("Load @graview/core/publishing to serve a reader of an app that publishes.")}return wd(n,e)}var uf=()=>q.served!==void 0;function vd(n){let e=fd.get(n);return e||fd.set(n,e=new Map),e}function wd(n,e){if(!nn(n,e))return n;let t=bd(e,"head"),r=vd(n),o=r.get(t);if(o)return o;let i=n.graph,s=Ut(n,e),a=x=>{let _=w=>w===void 0?void 0:x.served(w),A=w=>_(w)!==void 0,m=w=>A(i.getNode(w));return{served:_,seenNode:A,seenId:m,seenEdge:w=>m(w.from)&&m(w.to)&&!j(w,x.sees),servedAll:w=>w.flatMap(R=>_(R)??[])}},{served:d,seenId:u}=a(s),l=()=>a(s.pin?.()??s),f=(x,_)=>{let A=tt(n.log),m=s.pin?.()??s,y=x.nodes.flatMap(w=>m.servedWith(w,R=>A.writerAt(w.id,R,_))??[]),S=new Set(y.map(w=>w.id));return{nodes:y,edges:x.edges.filter(w=>S.has(w.from)&&S.has(w.to)&&!j(w,m.sees))}},c=x=>{let{removed:_,writers:A,published:m,...y}=x,S=f(x.base,x.seq);if(!x.creators)return{...y,base:S};let w=new Set(S.nodes.map(P=>P.id)),R=Object.fromEntries(Object.entries(x.creators).filter(([P,E])=>w.has(P)&&!j(E,s.sees)));return{...y,base:S,creators:R}},p=x=>x&&c(x),g=()=>md(n,e),h=()=>Io(g(),()=>n.log.epochs()),v=new Proxy(i,{get(x,_){switch(_){case"getNode":return A=>d(x.getNode(A));case"has":return u;case"allNodes":case"nodesOfKind":return(...A)=>l().servedAll(x[_](...A));case"count":return(...A)=>l().servedAll(x.nodesOfKind(...A)).length;case"allEdges":case"edgesOfKind":case"outEdges":case"inEdges":return(...A)=>x[_](...A).filter(l().seenEdge);case"out":case"in":case"neighbors":return(A,...m)=>{let y=l();return y.seenId(A)?y.servedAll(x[_](A,...m)):[]};case"snapshot":return()=>{let A=x.snapshot(),m=l();return{...A,nodes:m.servedAll(A.nodes),edges:A.edges.filter(m.seenEdge)}};case"size":{let A=l();return{nodes:A.servedAll(x.allNodes({archived:"all"})).length,edges:x.allEdges({archived:"all"}).filter(A.seenEdge).length}}default:return Mo(x,_)}}}),b=()=>{let x=g();return Ao(x,Qe(x))},k=new Proxy(n.log,{get(x,_){switch(_){case"all":case"toJSON":return()=>[...g()];case"epochs":return()=>x.epochs().map(c);case"lastEpoch":return()=>p(x.lastEpoch());case"horizonEpoch":return()=>p(x.horizonEpoch());case"live":return()=>{let A=g(),m=Qe(A);return A.filter(y=>!m.has(y.id))};case"get":return A=>g().find(m=>m.id===A);case"opsInBatch":return A=>g().filter(m=>m.batch===A);case"batches":return b;default:return Mo(x,_)}}}),$=new Proxy(n,{get(x,_){switch(_){case lf:return{store:x,principal:e};case"graph":return v;case"log":return k;case"snapshot":return v.snapshot;case"batches":return b;case"canUndo":return A=>nt(h(),typeof A=="string"?[A]:A);case"violations":return A=>x.violations(A,v).filter(m=>cf(s,y=>i.has(y),m));case"findings":return()=>x.findings().filter(A=>(A.id.includes("->")?A.id.split("->").map((y,S)=>S===0?y.slice(y.indexOf(":")+1):y):[A.id]).every(y=>!i.has(y)||u(y))&&!j(A,s.sees));case"wouldChange":return A=>x.wouldChange(A,e);case"preview":return(A,m,y)=>x.preview(A,m,{author:e,...y});case"seenBy":return(A,m)=>Re(x,A,m);case"seenFor":return e;case"servedSeq":return x.servedSeq;case"checkpoint":return A=>p(x.checkpoint(A));default:return Mo(x,_)}}});return r.set(t,$),$}q.kit={seatView:wd,viewsOf:vd,viewKey:bd,diff:Ne,reads:vo};var To=new Set;function jo(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:To,disabledMutations:To,disabledInvariants:To,administered:xd(n,new Set(Object.keys(n??{})))};let t=new Set,r=a=>{if(!(t.has(a)||!(a in n))){t.add(a);for(let d of n[a]?.requires??[])r(d)}};for(let a of e)r(a);for(let[a,d]of Object.entries(n))d.required&&r(a);let o=new Set,i=new Set,s=new Set;for(let[a,d]of Object.entries(n))if(!t.has(a)){for(let u of d.kinds??[])o.add(u);for(let u of d.mutations??[])i.add(u);for(let u of d.invariants??[])s.add(u)}for(let a of t){let d=n[a];for(let u of d?.kinds??[])o.delete(u);for(let u of d?.mutations??[])i.delete(u);for(let u of d?.invariants??[])s.delete(u)}return{enabled:t,disabledKinds:o,disabledMutations:i,disabledInvariants:s,administered:xd(n,t)}}function xd(n,e){let t=new Map;for(let[r,o]of Object.entries(n??{}))e.has(r)&&o.visibility==="admin"&&t.set(r,o);return t}function kd(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var Wt=class{constructor(e){this.graph=e;for(let t of e.allNodes({archived:"all"}))this.file(t);e.subscribe(t=>this.follow(t))}kinds=new Map;filed=new Map;labelOf(e){return this.filed.get(e)?.label}lookup(e,t){let r=kd(t);if(r.length===0)return{exact:[],prefix:[]};let o=e.includes("*")?[...this.kinds.values()]:e.flatMap(a=>this.kinds.get(a)??[]),i=[],s=[];for(let a of o)for(let d=Do(a.sorted,r);d<a.sorted.length&&a.sorted[d].startsWith(r);d+=1){let u=[...a.ids.get(a.sorted[d])??[]];s.push(...u),a.sorted[d]===r&&i.push(...u)}return{exact:i,prefix:s}}follow(e){for(let t of e.removedNodes)this.unfile(t.id);for(let t of e.changedNodes)this.unfile(t.after.id),this.file(t.after);for(let t of e.addedNodes)this.file(t)}file(e){let t=B(this.graph.schema.tryDefinition(e.kind),e),r=kd(t);this.filed.set(e.id,{kind:e.kind,key:r,label:t});let o=this.kinds.get(e.kind);o||this.kinds.set(e.kind,o={ids:new Map,sorted:[]});let i=o.ids.get(r);i?i.add(e.id):(o.ids.set(r,new Set([e.id])),o.sorted.splice(Do(o.sorted,r),0,r))}unfile(e){let t=this.filed.get(e);if(!t)return;this.filed.delete(e);let r=this.kinds.get(t.kind),o=r?.ids.get(t.key);if(!r||!o||(o.delete(e),o.size>0))return;r.ids.delete(t.key);let i=Do(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function Do(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>>1;n[o]<e?t=o+1:r=o}return t}function ff(n,e){return e.includes("*")?"record":e.map(t=>Y(n.tryDefinition(t),t)).join(" or ")}function Sd(n,e,t,r){let o=ff(n,e.kinds);if(r.length===0)return{ok:!1,reason:"none",candidates:r,message:`There is no ${o} called "${t}".`};let i=r.slice(0,10).map(a=>`${a.label} (${a.id})`),s=r.length>i.length?`, and ${r.length-i.length} more`:"";return{ok:!1,reason:"ambiguous",candidates:r,message:`"${t}" names more than one ${o}: ${i.join(", ")}${s}. Pass the id of the one you mean as ${e.name}.`}}function Fo(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":Fo(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${Fo(e[r])}`).join(",")}}`}var Rd=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function pf(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(Rd),t=n.edges.map(r=>({key:N(r),value:{kind:r.kind,from:r.from,to:r.to,id:r.id,data:r.data}})).sort(Rd);return Fo({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function _n(n){return`sha256:${Ad(pf(n))}`}function $d(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=_n(t),a=ee.from(n,i,{validate:o});for(let[h,v]of e.entries())try{a.applyPrimitives(v.primitives)}catch(b){let k=e[h-1];return{ok:!1,expected:_n(a.snapshot()),actual:s,...k?{divergedAfter:k.id}:{},reason:`The log does not fold: op "${v.id}" (${v.intent}) could not be applied. ${b instanceof Error?b.message:String(b)}`}}let d=_n(a.snapshot());if(d===s)return{ok:!0,hash:s};let u=h=>{let v=ee.from(n,i,{validate:o});for(let b=0;b<=h;b++)v.applyPrimitives(e[b].primitives);return _n(v.snapshot())},l=h=>{try{let v=ee.from(n,t,{validate:o});for(let b=e.length-1;b>h;b--)v.applyPrimitives(Ke(e[b]));return _n(v.snapshot())}catch{return}},f=h=>{let v=l(h);return v!==void 0&&v!==u(h)},c=-1,p=e.length-1;for(;c<p;){let h=Math.floor((c+p)/2);f(h)?p=h:c=h+1}let g=p>=0?e[p]:void 0;return{ok:!1,expected:d,actual:s,...g?{divergedAfter:g.id}:{},reason:g?`The graph and the fold of its log part after op "${g.id}" (${g.intent}).`:"The graph and the fold of its log disagree before any op: the base it folds from does not match."}}var hf=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),gf=new TextEncoder,mf=new Uint32Array(64),yf=new Uint32Array(8),qt=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function Ad(n){let e=gf.encode(n),t=e.length*8,r=new Uint8Array(e.length+9+63>>6<<6);r.set(e),r[e.length]=128;let o=new DataView(r.buffer);o.setUint32(r.length-8,Math.floor(t/2**32)),o.setUint32(r.length-4,t>>>0);let i=yf;i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225;let s=mf;for(let d=0;d<r.length;d+=64){for(let b=0;b<16;b++)s[b]=o.getUint32(d+b*4);for(let b=16;b<64;b++){let k=s[b-15],$=s[b-2],x=(k>>>7|k<<25)^(k>>>18|k<<14)^k>>>3,_=($>>>17|$<<15)^($>>>19|$<<13)^$>>>10;s[b]=s[b-16]+x+s[b-7]+_>>>0}let u=i[0],l=i[1],f=i[2],c=i[3],p=i[4],g=i[5],h=i[6],v=i[7];for(let b=0;b<64;b++){let k=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),$=p&g^~p&h,x=v+k+$+hf[b]+s[b]>>>0,_=(u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),A=u&l^u&f^l&f,m=_+A>>>0;v=h,h=g,g=p,p=c+x>>>0,c=f,f=l,l=u,u=x+m>>>0}i[0]=i[0]+u>>>0,i[1]=i[1]+l>>>0,i[2]=i[2]+f>>>0,i[3]=i[3]+c>>>0,i[4]=i[4]+p>>>0,i[5]=i[5]+g>>>0,i[6]=i[6]+h>>>0,i[7]=i[7]+v>>>0}let a="";for(let d=0;d<8;d++){let u=i[d];a+=qt[u>>>24]+qt[u>>>16&255]+qt[u>>>8&255]+qt[u&255]}return a}var at=class{constructor(e){this.inner=e}seen=new Set;reads(){return[...this.seen]}markAll(e){for(let t of e)this.seen.add(t.id);return e}markEdges(e){for(let t of e)this.seen.add(t.from),this.seen.add(t.to);return e}getNode(e){return this.seen.add(e),this.inner.getNode(e)}has(e){return this.seen.add(e),this.inner.has(e)}allNodes(e){return this.markAll(this.inner.allNodes(e))}allEdges(e){return this.markEdges(this.inner.allEdges(e))}nodesOfKind(e,t){return this.markAll(this.inner.nodesOfKind(e,t))}edgesOfKind(e,t){return this.markEdges(this.inner.edgesOfKind(e,t))}out(e,t,r){return this.seen.add(e),this.markAll(this.inner.out(e,t,r))}in(e,t,r){return this.seen.add(e),this.markAll(this.inner.in(e,t,r))}neighbors(e,t){return this.seen.add(e),this.markAll(this.inner.neighbors(e,t))}};function bf(n,e){return{...e,name:n}}function Lo(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function Ed(n){let e=n.input,t=e._zod?.def;if(t?.type!=="object"||t.catchall!==void 0||!e.shape)return;let r=Object.keys(e.shape);return Lo(n)?[...r,"id"]:r}var _d=(n,e,t={})=>{let r=n.filter(s=>t[s]?.length),o=n.filter(s=>!t[s]?.length);return`${[...o.length>0?[`does not take ${o.map(s=>`"${s}"`).join(", ")}`]:[],...r.map(s=>`${s} is set by ${t[s].join(" or ")}`)].join("; ")}; it takes ${e.length>0?e.map(s=>`"${s}"`).join(", "):"nothing"}`};function vf(n){let e=n?._zod?.def;for(let t=0;e?.innerType&&t<8;t++)e=e.innerType._zod?.def;return e}var wf=/^-?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/;function Md(n,e){let t=n?.shape;if(!t||typeof e!="object"||e===null||Array.isArray(e))return e;let r;for(let[o,i]of Object.entries(e)){if(typeof i!="string"||!wf.test(i)||vf(t[o])?.type!=="number")continue;let s=Number(i);Number.isFinite(s)&&(r??={...e},r[o]=s)}return r??e}var zd=n=>typeof n=="string"&&n.length<=200&&/^[^\s\p{Cc}]+$/u.test(n);function xf(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(!zd(e))throw new z("An id is 1\u2013200 characters with no space",`Got ${JSON.stringify(e)}.`);return e}}function kf(n){let{id:e,...t}=n;return t}function Od(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function Zo(n){let e=2166136261;for(let t=0;t<n.length;t++)e=Math.imul(e^n.charCodeAt(t),16777619);return(e>>>0).toString(36).padStart(7,"0")}function Sf(n,e){if(e.limited&&e.me===void 0)return Pd(n,e.held);let t=e.limited?`${n}.${Zo(e.me)}`:n,r=t;for(let o=2;e.seen(r);o++)r=`${t}-${o}`;return e.held(r)?Pd(t,e.held):r}function Pd(n,e){let t;do t=`${n}-${Math.floor(Math.random()*36**6).toString(36).padStart(6,"0")}`;while(e(t));return t}function On(n,e,t,r={}){let o=Lo(e)?xf(t):void 0,i=Md(e.input,o===void 0?t:kf(t)),s=Ed(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let m=Object.keys(i).filter(y=>!s.includes(y)&&i[y]!==void 0);if(m.length>0)throw new he(e.name,[{path:[],message:_d(m,s,e.writtenBy)}])}let a=e.clearable&&typeof i=="object"&&i!==null&&!Array.isArray(i)?e.clearable.filter(m=>i[m]===null):[],d=e.input.safeParse(a.length>0?Object.fromEntries(Object.entries(i).filter(([m])=>!a.includes(m))):i);if(d.success)for(let m of a)d.data[m]=null;if(!d.success){let m=Object.keys(e.input.shape??{});throw new he(e.name,d.error.issues.map(y=>y.code==="unrecognized_keys"&&m.length>0?{...y,message:_d(y.keys,m,e.writtenBy)}:y))}let u=d.data,l=new at(r.seen??n),f=[],c=new Set,p=r.me===void 0?void 0:`.${Zo(r.me)}`,g=m=>!r.seesInFull||r.seesInFull()||p!==void 0&&new RegExp(`\\${p}(-[0-9a-z]+)?$`).test(m),h=m=>l.has(m)||n.has(m)||c.has(m)||r.everHeld?.(m)===!0,v,b=m=>{let y=new Set([...n.outEdges(m),...n.inEdges(m)]);for(let S of y)l.getNode(S.from),l.getNode(S.to),f.push({op:"remove-edge",edge:S});return y},k={graph:l,schema:n.schema,me:r.me,emit(m){f.push(m)},addNode(m){f.push({op:"add-node",node:m})},removeNode(m){let y=l.getNode(m)&&n.getNode(m);if(!y)throw new W(m,`Cannot remove missing node "${m}"`);b(m),f.push({op:"remove-node",node:y})},patchNode(m,y){let S=l.getNode(m)&&n.getNode(m);if(!S)throw new W(m,`Cannot patch missing node "${m}"`);let w={},R={};for(let[P,E]of Object.entries(y)){let M=S[P];JSON.stringify(M)===JSON.stringify(E)&&!r.keepUnchanged?.(E,P,S)||(w[P]=M,R[P]=E)}Object.keys(R).length!==0&&f.push({op:"patch-node",id:m,before:w,after:R})},archiveNode:m=>k.patchNode(m,{[xn]:!0}),unarchiveNode:m=>k.patchNode(m,{[xn]:void 0}),mergeNode(m,y){let S=l.getNode(y)&&n.getNode(y);if(!S)throw new W(y,`Cannot merge into missing node "${y}"`);if(m===y||qe(S))throw new z(m===y?"Cannot merge a record into itself":"Cannot merge into an archived record");let w=new Set([...n.outEdges(y),...n.inEdges(y)].map(N));for(let R of b(m)){let P={...R,from:R.from===m?y:R.from,to:R.to===m?y:R.to};P.from!==P.to&&!w.has(N(P))&&(w.add(N(P)),f.push({op:"add-edge",edge:P}))}k.archiveNode(m),v=y},addEdge(m){f.push({op:"add-edge",edge:m})},removeEdge(m){f.push({op:"remove-edge",edge:m.id!==void 0&&n.linkById(m.id)||m})},setSingleSource(m,y,S){n.inEdges(y,m).some(w=>w.from===S)||f.push({op:"add-edge",edge:{kind:m,from:S,to:y}});for(let w of n.inEdges(y,m))l.getNode(w.from),w.from!==S&&f.push({op:"remove-edge",edge:w})},freshId(m,y,S){if(o!==void 0&&!c.has(o)){if(y&&!o.startsWith(`${y}:`)){let Z=o.includes(":")?o.slice(o.indexOf(":")+1):o;throw new z(`Id "${o}" does not say its kind: ask for "${y}:${Z||o}"`,`Every ${y} id starts "${y}:", the ones "${e.name}" mints and the ones a caller asks for alike, so a later call names it as it names the rest.`)}if(!g(o))throw new z(`"${e.name}" makes its own id here`,`Leave id out${p?`, or end it "${p}"`:""}.`);if(h(o))throw new z(`Id "${o}" is already taken`,`"${e.name}" was asked to make a node with that id, and the graph has or had one. Pick another, or leave id out and let the act mint one.`);return c.add(o),o}let w=r.hint;if(o===void 0&&!c.size&&zd(w)&&(!y||w.startsWith(`${y}:`))&&g(w)&&!h(w))return c.add(w),w;y&&r.keeps&&[u,S??{}].some(Z=>sd(m,y,Z,r.keeps))&&(m=y);let R=y?`${y}:${Od(m)}`:Od(m),P=r.seesInFull!==void 0&&!r.seesInFull(y),M=Sf(R,{seen:Z=>(r.seen?r.seen.has(Z):n.has(Z))||c.has(Z)||!P&&r.everHeld?.(Z)===!0,held:h,limited:P,me:r.me});return c.add(M),M}};if(e.apply(k,u),o!==void 0&&!c.has(o))throw new z(`"${e.name}" did not make a record with id "${o}": it names what it makes itself`);let $=r.check?.(f,e),x=new Set(f.flatMap(_e)),_=new at(r.seen??n),A=e.describe?.(u,_)??`${e.name}(${Object.entries(u).map(([m,y])=>`${m}=${JSON.stringify(y)}`).join(", ")})`;return{primitives:f,reads:[...new Set([...l.reads(),..._.reads()])],...e.describe?{described:[..._.reads(),...$??[]]}:{},writes:[...x],intent:A,...v!==void 0?{mergedInto:v}:{},...c.size>0?{firstMinted:c.values().next().value}:{}}}function Co(n,e,t,r,o,i){if(typeof r!="string"||typeof o!="string")return n.allowedOn===void 0;if(n.allowedOn)return n.allowedOn(t,r);let s=n.subject?.arg??"id",a=n.input.shape??{},d=t.getNode(r)?.[o],u={[s]:r,...o!==s&&o in a&&d!==void 0&&d!==null?{[o]:d}:{}},l=n.input.safeParse?.(u),f=l?.success?l.data:u,c=()=>{},p={graph:t,schema:e,me:i,addNode:c,removeNode:c,patchNode:c,archiveNode:c,unarchiveNode:c,mergeNode:c,addEdge:c,removeEdge:c,setSingleSource:c,freshId:(g,h)=>`${h?`${h}:`:""}${g}`,emit:c};try{n.apply(p,f)}catch(g){let h=g;return!(h?.name==="ActRefusal"&&h.reason!=="invalid")}return!0}var Nd=Symbol.for("@graview/core:amount"),ux=(n,e)=>(Object.defineProperty(D(n),Nd,{value:e,enumerable:!0}),n);function Go(n,e=!0){let t=D(n);return t?.[Nd]??(e&&t?.innerType?Go(t.innerType):void 0)}function Id(n,e={}){let t=Number.isInteger(n),r={maximumFractionDigits:t?0:2,minimumFractionDigits:t?0:2};try{return ye(n,e.locale,e.currency?{style:"currency",currency:e.currency,...r}:r)}catch{return ye(n,e.locale,r)}}function Td(n,{format:e,unit:t,currency:r,locale:o}){let i=/^[A-Z]{3}$/.test(t??"");return e==="money"||!e&&i?Id(n,{...o?{locale:o}:{},...(i?t:r)?{currency:i?t:r}:{}}):e==="percent"?ye(n,o,{style:"percent",maximumFractionDigits:0}):ye(n,o)+(t?` ${t}`:"")}var Rf=Symbol.for("@graview/core:typed-field");function Ko(n){let e=D(n);return e?e[Rf]??Ko(e.innerType):void 0}var $f=/^[("'“‘]*(?:(?:[a-z]{1,3}\.){2,}|(?:dr|mr|mrs|ms|mx|st|mt|vs|jr|sr|prof|no|fig|approx)\.)$/i;function Af(n){for(let e of n.matchAll(/[.!?](?=\s|$)/g)){let t=n.slice(0,e.index+1),r=/\S+$/.exec(t)?.[0]??"";if(!(e[0]==="."&&$f.test(r))&&!(t.split(" ").length<3&&e.index+1<n.length))return t}}function jd(n,e=140){let t=n.replace(/^[#>\s]+|\*\*|`|\](\([^)\s]*\))?|\[/gm,"").replace(/\s+/g," ").trim(),r=Af(t);return r&&r.length<=e?r:t.length<=e?t:`${(t.slice(0,e+1).replace(/\s+\S*$/,"")||t.slice(0,e)).replace(/[\s,;:.—-]+$/,"")}\u2026`}function Bo(n){let e=n.fields.shape;return Object.keys(e).flatMap(t=>{let r=Nt(e[t])?qn(t):void 0;return r&&e[r]?[r]:[]})}var _f=[["skip","Skip this one","Leave one day out of the series; the rest stay as they are.","Skip {} on "],["detach","Change just this one","Make one day of the series a record of its own, to change apart from the rest.","Change {} only on "],["split","Change from here","End the series the day before, and start it again from that day with what changes.","Change {} from "]];function Dd(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=Bo(o);if(i.length===0)continue;let s=o.kind,a=o.fields.shape,d=dt(n,e).get(s),u=new Set(o.keptInStep??[]),l=g=>(d?.get(g)?.length??0)>0&&!u.has(g),f=De(o).filter(g=>!l(g)),c=Object.fromEntries(De(o).filter(l).map(g=>[g,d.get(g)])),p=g=>B(o,g);for(let[g,h,v,b]of _f){let k=`${g}-${s}`;t.has(k)||r.push({name:k,derived:{kind:s,act:g},title:h,description:v,subject:{kinds:[s],arg:"id"},writes:i.map(vn),...g==="skip"?{}:{creates:[s],...Object.keys(c).length>0?{writtenBy:c}:{}},input:yn({id:je([s]),on:L().check(Bn(/^\d{4}-\d{2}-\d{2}$/,"a day, like 2026-10-21")),...i.length>1?{field:Q(ca(i))}:{},...g==="skip"?{}:Object.fromEntries(f.map($=>[$,Q(a[$])]))}),describe:($,x)=>b.replace("{}",p(x.getNode(String($.id))??{id:$.id}))+Pe(String($.on)),apply($,x){let _=$.graph.getNode(String(x.id)),A=String(x.field??i[0]),m=_?.[A],y=_?.[vn(A)],S=String(x.on);if(typeof m!="string"||!wn(y))throw new se(`${p(_??{id:x.id})} does not repeat`,"refused");let w=bn(m,y,{from:S,to:S})[0];if(!w)throw new se(`${p(_)} does not fall on ${Pe(S)}`,"refused");let R=String(_.id),P=Object.fromEntries(f.filter(H=>x[H]!==void 0).map(H=>[H,x[H]])),E=vn(A),M=H=>{let pr=Object.fromEntries(Object.entries({..._,...H,...P}).filter(([gt,hr])=>hr!=null&>!=="id")),xi=$.freshId(p(pr),s,pr);$.addNode({...pr,id:xi,kind:s});for(let gt of Object.keys(o.edges??{}))for(let hr of $.graph.out(R,gt))$.addEdge({kind:gt,from:xi,to:hr.id})};if(g!=="split"){$.patchNode(R,{[E]:{...y,except:[...new Set([...y.except??[],S])].sort()}}),g==="detach"&&M({[A]:w,[E]:null});return}if(Object.keys(P).length===0)throw new se(`Nothing to change: give ${p(_)} from ${Pe(S)} something new`,"invalid");if(S<=m.slice(0,10))return $.patchNode(R,P);let Z=new Date(Date.parse(`${S}T00:00:00Z`)-864e5).toISOString().slice(0,10),Ce=y.count?bn(m,{...y,except:[]},{to:Z}).length:0,{count:cn,except:C,...ue}=y,G=H=>C?.some(H)?{except:C.filter(H)}:{};$.patchNode(R,{[E]:{...ue,until:Z,...G(H=>H<S),...cn?{count:Ce}:{}}}),M({[A]:w,[E]:{...ue,...G(H=>H>=S),...cn?{count:cn-Ce}:{},continues:R}})}})}}return r}function Fd(n,e,t,r){if(n==="detach")return!0;if(n!=="split"||typeof e.on!="string")return!1;let o=t?.[String(e.field??r[0])];return typeof o!="string"||e.on>o.slice(0,10)}function Ld(n,e){let t=new Set(e.map(a=>a.name)),r=e.filter(a=>!a.derived&&!a.creates?.length),o=(a,d,u,l)=>r.some(f=>{if(!(f[a]??[]).includes(u))return!1;let c=f.subject?.kinds;return c===void 0||c==="*"||c.includes(d)||l.to==="*"||c.some(p=>l.to.includes(p))}),i=[],s=(a,d)=>{let u=a.getNode(String(d));return u?B(n.tryDefinition(u.kind),u):String(d)};for(let a of n.definitions){let d=a.kind,u=Object.entries(a.edges??{}),l=f=>f.to==="*"?"record":f.to.map(c=>Y(n.tryDefinition(c),c)).join(" or ");for(let[f,c]of u){let p=l(c),g=c.cardinality==="one",h=u.some(([x,_])=>x!==f&&l(_)===p),v=x=>K(x).toLowerCase(),b=Ha(d,f,c,v),k={to:b&&"to"in b?b.to:p,from:Y(a,d),one:g,also:b&&"also"in b?b.also:h&&!b?v(f):void 0},$=k.from;for(let x of So){let _=Ro(x,d,f);if(t.has(_)||c.acts==="none"||(x==="connect"?o("connects",d,f,c):o("severs",d,f,c)||c.appendOnly))continue;let{title:A,fromTheOtherEnd:m}=qa(x,k),y=c.description?`: ${c.description.replace(/\.$/,"")}`:"";i.push({name:_,derived:{kind:d,act:x,relation:f},title:A,fromTheOtherEnd:m,description:x==="connect"?`Link this ${$} to ${/^[aeiou]/i.test(p)?"an":"a"} ${p}${y}.${g?" It has one, so this replaces the one it has.":""}`:`Take away the link between this ${$} and ${/^[aeiou]/i.test(p)?"an":"a"} ${p}${y}. Undo puts it back.`,subject:{kinds:[d],arg:"id"},...x==="connect"?{connects:[f]}:{severs:[f],destructive:!0},idempotent:!0,input:yn({id:je([d]),to:je(c.to==="*"?"*":c.to)}),describe:(S,w)=>x==="disconnect"?`Unlink ${s(w,S.id)} from ${s(w,S.to)}`:g?`Set the ${p} of ${s(w,S.id)} to ${s(w,S.to)}`:`Link ${s(w,S.id)} to ${s(w,S.to)}`,apply(S,w){let R=String(w.id),P=String(w.to);for(let M of[R,P])if(!S.graph.getNode(M))throw new se(`there is no record "${M}"`,"invalid");let E=S.graph.out(R,f).some(M=>M.id===P);if(x==="disconnect"){if(!E)throw new se(`${s(S.graph,R)} is not linked to ${s(S.graph,P)}`,"invalid");S.removeEdge({kind:f,from:R,to:P});return}if(g)for(let M of S.graph.out(R,f))M.id!==P&&S.removeEdge({kind:f,from:R,to:M.id});E||S.addEdge({kind:f,from:R,to:P})}})}}}return i}function Of(n){let e=new Set(n.declared),t=[...new Set([...(n.paged??[]).filter(o=>e.has(o)),...n.declared])],r=(n.naming??[]).filter(o=>e.has(o));return[...new Set([...r,...t.filter(n.must),...t])]}var Vo=n=>`\xA7${n}\xA7`;function Pf(n,e){if(n.label)try{let r={id:Vo(e.length),kind:n.kind};e.forEach((s,a)=>r[s]=Vo(a));let o=String(n.label(r)),i=e.map((s,a)=>[s,o.indexOf(Vo(a))]).filter(([,s])=>s>=0);if(i.length>0)return i.sort((s,a)=>s[1]-a[1]).map(([s])=>s)}catch{}let t=["name","title","label"].find(r=>e.includes(r));return t?[t]:[]}var Zd=new WeakMap;function Ht(n){let e=Zd.get(n);if(e)return e;let t=n.fields.shape??{},r=Object.keys(t),o=n.display?.page,i=Of({declared:r,paged:[...o?.fields??[],...(o?.groups??[]).flatMap(s=>s.fields)],must:s=>t[s]?.safeParse?.(void 0).success===!1&&!Object.hasOwn(n.defaults??{},s),naming:Pf(n,r)});return Zd.set(n,i),i}function Ef(n,e){let t=e.subject?.kinds,r=e.creates?.[0]??e.derived?.kind??(t!==void 0&&t!=="*"&&t.length===1?t[0]:void 0);return r===void 0?void 0:n.tryDefinition(r)}function Mf(n,e){let t=Object.keys(e.input?.shape??{}),r=n?Ef(n,e):void 0;if(!r)return t;let o=Ht(r),i=d=>d!==e.subject?.arg&&o.includes(d),s=t.filter(i).sort((d,u)=>o.indexOf(d)-o.indexOf(u)),a=0;return t.map(d=>i(d)?s[a++]:d)}function Uo(n,e,t=r=>r.name){let r=o=>{let i=e.indexOf(t(o));return i<0?e.length:i};return[...n].sort((o,i)=>r(o)-r(i))}function De(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function Wo(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function qo(n,e){let t=n.subject;if(!t||!n.writes&&n.creates?.length)return[];let r=new Set(Object.keys(e.fields.shape));if(n.writes)return n.writes.filter(s=>r.has(s));let o=n.input.shape??{},i=new Set(it(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function dt(n,e){let t=new Map,r=(o,i,s)=>{let a=t.get(o)??new Map;a.get(i)?.includes(s)||(a.set(i,[...a.get(i)??[],s]),t.set(o,a))};for(let o of e){for(let i of Wo(n,o)){let s=n.tryDefinition(i);if(s)for(let a of qo(o,s))r(i,a,o.name)}for(let[i,s]of Object.entries(o.writesOther??{})){let a=n.tryDefinition(i)?.fields.shape;if(a)for(let d of s)d in a&&r(i,d,o.name)}}return t}function Gd(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=dt(n,e).get(t);return De(r).filter(i=>!o?.has(i))}var Kd=n=>`edit-${n}`;function Bd(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=new Set;for(let i of e)i.derived||((i.creates??[]).includes(t)&&o.add(i.name),Wo(n,i).includes(t)&&qo(i,r).length>0&&o.add(i.name));return[...o]}function Vd(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=Kd(i);if(t.has(s))continue;let a=new Set((o.keptInStep??[]).filter(h=>De(o).includes(h))),d=Gd(n,e,i),u=Uo(De(o).filter(h=>d.includes(h)||a.has(h)),Ht(o),h=>h);if(u.length===0)continue;let l=dt(n,e).get(i),f=Object.fromEntries(De(o).flatMap(h=>!u.includes(h)&&l?.get(h)?.length?[[h,l.get(h)]]:[])),c=o.fields.shape,p=Y(o,i),g=u.map(h=>xt(o,h).toLowerCase());r.push({name:s,derived:{kind:i,act:"edit"},idempotent:!0,title:`Change the ${p}`,description:`Change what was set when this ${p} was made: ${g.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:u,...Object.keys(f).length>0?{writtenBy:f}:{},...u.some(h=>Cd(c[h]))?{clearable:u.filter(h=>Cd(c[h]))}:{},input:yn({id:je([i]),...Object.fromEntries(u.map(h=>[h,Q(If(c[h]))]))}),describe:(h,v)=>zf(o,c,u,h,v),apply(h,v){let b={};for(let k of u){let $=v[k];$===null?b[k]=void 0:$!==void 0&&(b[k]=$)}if(Object.keys(b).length===0)throw new se(`Nothing to change \u2014 give at least one of ${g.join(", ")} a value.`,"invalid");h.patchNode(v.id,b)}})}return r}function zf(n,e,t,r,o){let i=o.getNode(r.id),s=i?B(n,i):"a record",a=t.filter(d=>r[d]!==void 0).map((d,u)=>{let l=r[d],f=qn(d),c=f!==void 0&&f in e,p=xt(n,c?f:d);return`the ${p===p.toUpperCase()?p:Pi(p)}${u===0?` of ${s}`:""} to ${c?l?`repeat ${Nf(l)}`:"stop repeating":Ud(n,e[d],d,l)}`});return a.length===0?`Changed nothing on ${s}`:`Changed ${a.length>1?`${a.slice(0,-1).join(", ")} and ${a.at(-1)}`:a[0]}`}var Nf=n=>`every ${(n.interval??1)>1?`${n.interval} ${n.every}s`:n.every}`;function Ud(n,e,t,r){if(r===null||r===""||Array.isArray(r)&&r.length===0)return"nothing";let o=n.display?.format?.[t];try{if(o)return String(o(r))}catch{}if(Vn(r).length>0)return Vn(r).map(i=>i.name).join(", ");if(Un(e))return Array.isArray(r)&&r.length>1?`${r.length} linked records`:"a linked record";if(Array.isArray(r))return r.map(i=>Ud(n,e,t,i)).join(", ");if(typeof r=="boolean")return r?"yes":"no";if(typeof r=="number"){let i=Go(e);return i?Td(r,i):Ko(e)==="duration"?`${r>=60?`${Math.floor(r/60)} h `:""}${r%60||r<60?`${r%60} min`:""}`.trim():String(r)}if(typeof r!="string")return"a new value";if(vr.test(r))return Pe(r);if(yt.test(r))return xr(r);for(let i=D(e);i;i=D(i.innerType))if(i.type==="enum")return K(r);return`\u201C${jd(r,60)}\u201D`}function Cd(n){return n._zod?.def?.type==="optional"}function If(n){let e=n;for(let t=0;t<4;t++){let r=e._zod?.def;if((r?.type==="default"||r?.type==="prefault")&&r.innerType)e=r.innerType;else break}return e}function Yt(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function Jt(n,e,t){if(!t.derived)return;let r=t.derived.act;return r==="edit"||r==="skip"||r==="detach"||r==="split"||r==="connect"||r==="disconnect"?Bd(n,e,t.derived.kind):Yt(e,t.derived.kind)}function Tf(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=Y(o,i),a=(u,l)=>{let f=u.getNode(String(l));return f?B(o,f):String(l)},d=je([i]);for(let[u,l,f,c]of[["remove","Remove",`Remove the ${s}`,`Take this ${s} out of the graph, with every tie it has. Undo puts it back.`],["archive","Archive",`Archive the ${s}`,`Set this ${s} aside, with its ties and history kept.`],["unarchive","Bring back","Bring it back",`Bring this archived ${s} back.`],["merge","Merge",`Merge into another ${s}`,`The other takes this ${s}'s ties, and this one is archived.`],["leave-alone","Leave alone","Leave this one alone",`Nothing automated changes this ${s}: tidying passes it by until you allow it again.`],["allow-tidying","Allow tidying of","Allow tidying again",`Let tidying change this ${s} again.`]]){let p=`${u}-${i}`,g=u==="leave-alone"||u==="allow-tidying";t.has(p)||!g&&u!=="remove"&&o.archives===!1||g&&o.tidying==="never"||r.push({name:p,derived:{kind:i,act:u},title:f,description:c,subject:{kinds:[i],arg:"id"},...u==="remove"?{destructive:!0}:{},idempotent:!0,input:ze(u==="merge"?{id:d,into:d}:{id:d}),describe:(h,v)=>{let b=u==="remove"&&v.getNode(String(h.id)),k=b?new Set(Object.values(b).flatMap(_=>Vn(_).map(A=>A.href))).size:0,$=u==="merge"&&a(v,h.id)===a(v,h.into),x=_=>$?`${a(v,_)} (${String(_)})`:a(v,_);return`${l} ${x(h.id)}${u==="merge"?` into ${x(h.into)}`:""}${k?` and its ${k} file${k>1?"s":""}`:""}`},apply:g?(h,v)=>h.patchNode(String(v.id),{[Yn]:u==="leave-alone"?!0:void 0}):(h,v)=>h[`${u}Node`](v.id,v.into)})}}return r}function Ho(n,e){return[...Vd(n,e),...Tf(n,e),...Dd(n,e),...Ld(n,e)]}var jf=n=>({$made:n}),Xt=n=>typeof n=="object"&&n!==null&&Object.keys(n).join()==="$made"&&Number.isInteger(n.$made)&&n.$made>=0,Df=(n,e)=>Object.fromEntries(Object.entries(n.args??{}).map(([t,r])=>[t,Array.isArray(r)?r.map(e):e(r)])),Wd=n=>Object.values(n.args??{}).some(e=>Xt(e)||Array.isArray(e)&&e.some(Xt)),qd=(n,e,t)=>({...n,args:Df(n,r=>{if(!Xt(r))return r;let o=r.$made<t?e[r.$made]:void 0;if(o===void 0)throw new Error(`\u201C${n.name}\u201D names the record call ${r.$made+1} makes, and no call before it made that record.`);return o})});var Ff=500,Lf=120,Zf=50,Cf=200,Hd=4e3,Gf=["model","suggestion","interaction","actor","run"],Yd=n=>typeof n=="string"&&n.length>0&&n.length<=Lf,Kf=n=>typeof n=="string"&&n.length<=240&&n.lastIndexOf("#")>0&&n.lastIndexOf("#")<n.length-1,Bf=n=>{let e=JSON.stringify(n);return e===void 0?void 0:JSON.parse(e)};function ct(n){if(n===void 0)return;let e=n&&typeof n=="object"&&!Array.isArray(n)?n:{},t=typeof e.basis=="string"?e.basis.trim():"",r={basis:t},o=t!==""&&t.length<=Ff;for(let i of Object.keys(e)){let s=e[i];i==="basis"||s===void 0||(i==="model"&&typeof s=="string"&&(s=s.trim()),i==="confidence"?o&&=typeof s=="number"&&s>=0&&s<=1:Gf.includes(i)?o&&=Yd(s):i==="evidence"?o&&=Array.isArray(s)&&s.length<=Zf&&s.every(Yd):i==="read"?o&&=Array.isArray(s)&&s.length<=Cf&&s.every(Kf):o&&=i!=="__proto__"&&i!=="constructor"&&i!=="prototype"&&(s=Bf(s))!==void 0,o&&(r[i]=s))}if(!o)throw new z("A lineage is { basis: 1 to 500 characters, confidence?: 0 to 1, model?, suggestion?, interaction?, actor?, run?: 1 to 120 characters, evidence?: up to 50 ids, read?: up to 200 <id>#<field> }");if(JSON.stringify(r).length>Hd)throw new z(`A lineage is at most ${Hd} characters written out.`);return r}var Pn="keep-link";function Jd(n){let e=(t,r)=>{let o=t.getNode(r);return o?B(n.tryDefinition(o.kind),o):r};return{name:Pn,title:"Keep this link",input:ze({kind:L(),from:L(),to:L()}),describe:(t,r)=>`Keep the link from ${e(r,t.from)} to ${e(r,t.to)}`,apply(t,r){let{kind:o,from:i,to:s}=r;if(!t.graph.getNode(i)||!t.graph.getNode(s)){let d=N({kind:o,from:i,to:s});throw new W(d,`Cannot remove missing edge ${d}`)}let a=t.graph.edgesOfKind(o,{archived:"all"}).find(d=>d.from===i&&d.to===s)??{kind:o,from:i,to:s};t.removeEdge(a),t.addEdge(a)}}}var Yo=(n,e)=>[...n].filter(t=>!t.derived&&t.name!==Pn&&typeof e=="string"&&(t.connects?.includes(e)||t.severs?.includes(e))).map(t=>t.name);var Xd=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function Qd(n,e){let t=Dt(n,e);return t&&[...t.fields].filter(Boolean)}function Vf(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function Qt(n,e){try{return B(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var Uf=n=>`${n.kind}:${n.from}->${n.to}`,er=(n,e)=>n<e?-1:n>e?1:0;function ec(n,e,t={}){let{schema:r}=n,o=[],i=new Map;for(let c of e.nodes)i.has(c.id)||i.set(c.id,c);let s=c=>e.edges.filter(p=>p.from===c||p.to===c),a=c=>({action:"drop",primitives:[...s(c.id).filter(p=>i.has(p.from)&&i.has(p.to)).map(p=>({op:"remove-edge",edge:p})),{op:"remove-node",node:c}]}),d=new Set;for(let c of[...i.values()].sort((p,g)=>er(p.id,g.id))){if(!r.tryDefinition(c.kind)){d.add(c.id),o.push({code:"kind-unknown",id:c.id,message:`${Qt(r,c)} is a kind of record this app no longer has`,repair:a(c)});continue}let p=Qd(r,c);if(p===void 0)continue;let g=Qt(r,c),h=new Map,v=p.length>0;for(let b of p){if(b==="id"||b==="kind"){v=!1;continue}let k=Vf(r,c.kind,b),$=k?k.safeParse(void 0):{success:!0,data:void 0},x=r.tryDefinition(c.kind)?.defaults;!$.success&&k&&x&&Object.hasOwn(x,b)&&($=k.safeParse(x[b])),$.success?$.data===void 0?h.set(b,{action:"clear",value:fe}):h.set(b,{action:"coerce",value:$.data}):v=!1}if(v){let b={...c};for(let[k,$]of h)$.value===fe?delete b[k]:b[k]=$.value;Qd(r,b)!==void 0&&(v=!1)}if(p.length===0){o.push({code:"node-shape",id:c.id,message:`${g} does not fit what ${c.kind} declares`,repair:a(c)});continue}for(let b of p){let k=h.get(b),$=v&&k?{action:k.action,primitives:[{op:"patch-node",id:c.id,before:{[b]:c[b]===void 0?fe:c[b]},after:{[b]:k.value}}]}:a(c);o.push({code:"node-shape",id:c.id,detail:b,message:`${g}: ${K(b)} does not fit what ${c.kind} declares`,repair:$})}}let u=new Set,l=[];for(let c of[...e.edges].sort((p,g)=>er(N(p),N(g)))){if(u.has(N(c)))continue;u.add(N(c));let p=Uf(c),g=i.get(c.from),h=i.get(c.to);if(!g||!h){o.push({code:"edge-dangling",id:p,message:"A link points at a record that is not there",repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}});continue}l.push(c),!(d.has(g.id)||d.has(h.id))&&(r.edgeAllowed(c.kind,g.kind,h.kind)||o.push({code:"edge-disallowed",id:p,message:`${Qt(r,g)} \u2192 ${Qt(r,h)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}}))}let f=n.invariants??[];if(f.length>0){let c=ee.from(r,{nodes:[...i.values()],edges:l},{validate:!1}),p=new Set,g;try{g=kn(c,f,t.invariantOptions??{})}catch{g=[{invariant:"rules",status:"could-not-judge",label:"The rules",message:"The rules could not be judged",nodeIds:[],repairs:[]}]}for(let h of g){let v=h.status==="could-not-judge"?"rule-error":h.status==="over-budget"?"rule-budget":void 0;if(!v)continue;let b=h.subjectId??h.invariant,k=`${v}|${b}|${h.invariant}`;p.has(k)||(p.add(k),o.push({code:v,id:b,detail:h.invariant,message:h.message}))}}return o.sort((c,p)=>Xd.indexOf(c.code)-Xd.indexOf(p.code)||er(c.id,p.id)||er(c.detail??"",p.detail??""))}var lt=()=>globalThis.__graviewWatch;function nc(n){lt()?.store?.(n)}function nr(n){n!==void 0&<()?.learn?.({ids:[n],words:[]})}function tc(n,e){lt()?.refused?.({...n,...e===void 0?{}:{author:e}})}function Jo(n,e){let t=lt();if(!t?.refusedInput)return;let r=n.issues.map(o=>`${o.path.map(String).join(".")}: ${o.message}`).join("; ");t.refusedInput({mutation:n.mutation,message:r,...e===void 0?{}:{author:e}})}function Wf(n,e){n instanceof he&&Jo(n,e)}function qf(n,e,t){lt()?.seat?.(n,e,t)}function Qo(n,e){if(typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n))return n;let t=new Date(n).getTime();if(Number.isNaN(t))throw new Error(`Not a day: ${String(n)}`);return ne(e,t)}var Xo=15*6e4;function rc(n=Date.now(),e){let t=new Date(n).getTime(),r=bt(e),o=ne(r,t),i=new Date(Date.parse(`${o}T00:00:00Z`));if(i.setUTCDate(i.getUTCDate()+1),!r)return i.getTime()-t;let s=$i(i.toISOString().slice(0,10),0,r);for(;ne(r,s)===o;)s+=Xo;for(;ne(r,s-Xo)!==o;)s-=Xo;return s-t}function Hf(n,e){let t,r=()=>{t=setTimeout(()=>{let o=n.tick(new Date);r(),e?.(o)},rc(Date.now(),n.timeZone)+1e3),t.unref?.()};return r(),()=>clearTimeout(t)}function ei(n){let e=(n?.published?.length??0)>0;return{framework:Jn,formats:{...de,snapshot:e?2:1}}}var tr=class extends z{constructor(e){super(`This is the app as it stood${e.at?` at ${e.at}`:" at the start"}: the past is read, never changed`),this.name="PastError"}},ni="preview",F=(n,e)=>e===void 0?{}:{[n]:e},tn={kind:"human"},oc={kind:"system"},ac={kind:"system",id:"modules",name:"Modules"},ic=n=>n.mutation===null&&n.undoes===void 0;function ti(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var Yf=new Set(["remove","archive","unarchive","merge"]),Jf={has:()=>!0},dc=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function cc(n,e,t){let r=dc(n),o=f=>ti(f,r),i=new Set(e.map(o)),s=new Set(t.map(o)),a=t.filter(f=>!i.has(o(f))),d=e.filter(f=>!s.has(o(f)));if(a.length===0||d.length===0)return{introduces:a,resolves:d};let u=f=>f.subjectId&&ti(f,Jf),l=d.map(u);return{introduces:a.filter(f=>{let c=u(f)?l.indexOf(u(f)):-1;return c<0||(l[c]=null,!1)}),resolves:d.filter((f,c)=>l[c]!==null)}}var En=class extends Error{constructor(t,r){super(`Op "${t.id}" (${t.intent}) could not be applied: ${r instanceof Error?r.message:String(r)}`,{cause:r});this.op=t;this.name="ReceiveError"}},rr=class extends z{constructor(t,r){let o=$o(t,r);super(`Unknown mutation "${t}"${o?` \u2014 did you mean "${o}"?`:""}`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError",this.nearest=o}nearest},sc=n=>new Map(n.map(e=>[e.id,e.batch]));function Xf(){let n=globalThis.crypto,e=new Uint8Array(6);if(n?.getRandomValues)n.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256);return[...e].map(t=>t.toString(36).padStart(2,"0")).join("")}var ri=class n{schema;graph;log;mutations=new Map;keeper;typer;invariants;invariantOptions;policy;publishing;intelligence;may=new Map;by;declaredModules;startingModules;projected;nextId;now;validate;mintBatch;batchTag;counter=0;opCount=0;quiet=0;rehearsing=!1;suggesting=!1;ticked;timeZone;past;pastEvery;listeners=new Set;constructor(e){this.pastEvery=Math.max(1,e.pastEvery??64),this.past=e.past,this.schema=e.schema,this.invariants=e.invariants??[],this.invariantOptions=e.invariantOptions??{},this.timeZone=e.timeZone,this.timeZone&&(this.ticked={day:ne(this.timeZone),on:ne(this.timeZone)}),this.policy=e.policy,this.publishing=e.publishing,this.by=e.principal??tn,this.intelligence=e.intelligence??[];for(let i of e.intelligence??[])i.may&&this.may.set(i.name,new Set(i.may));this.declaredModules=e.modules,this.startingModules=e.enabledModules,this.nextId=e.ids??(()=>`op${++this.opCount}`),this.now=e.now??(()=>new Date().toISOString()),this.validate=e.validate??!0;let t=Xf();this.batchTag=e.batchIds?void 0:t,this.mintBatch=e.batchIds??(i=>`${i}:${t}:${++this.counter}`);for(let i of e.past?[]:e.mutations??[]){if(this.mutations.has(i.name))throw new z(`Duplicate mutation "${i.name}"`);this.mutations.set(i.name,i)}for(let i of e.past?[]:Ho(e.schema,e.mutations??[]))this.mutations.set(i.name,i);!e.past&&!this.mutations.has(Pn)&&(this.keeper=Jd(e.schema),this.mutations.set(Pn,this.keeper));let r=F("horizon",e.horizon),o={validate:this.validate};if(e.log){this.log=$n.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?ee.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=$n.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=ee.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);e.past||(this.countPastTheLog(),nc(this))}stillNow(){if(this.past)throw new tr(this.past)}countPastTheLog(){this.countPast(this.log.all())}countPast(e){let t=r=>{let o=/(\d+)$/.exec(r);return o?Number(o[1]):0};for(let r of e)this.counter=Math.max(this.counter,t(r.batch)),this.opCount=Math.max(this.opCount,t(r.id));this.log.horizon>0&&(this.opCount=Math.max(this.opCount,this.log.length))}get servedSeq(){return this.log.length}get publishedSeq(){return q.seq?.(this)}get publisher(){return q.act?.(this,this.mutations)}get modules(){let e=this.log.all(),t=e.at(-1)?.id,r=this.projected;if(r&&r.length===e.length&&r.last===t)return r.projection;let o,i=0;r&&r.length<=e.length&&(r.length===0||e[r.length-1]?.id===r.last)&&(o=r.said,i=r.length);for(let a=e.length-1;a>=i;a--){let d=e[a].enabledModules;if(d!==void 0){o=d;break}}o??=this.log.horizonEpoch()?.enabledModules;let s=r&&o===r.said?r.projection:jo(this.declaredModules,o??this.startingModules);return this.projected={projection:s,length:e.length,last:t,said:o},s}setEnabledModules(e,t={}){this.stillNow();let r=this.modules.enabled,o=jo(this.declaredModules,e).enabled,i=[...r].filter(l=>!o.has(l)),s=[...o].filter(l=>!r.has(l));if(i.length===0&&s.length===0)return;let a=l=>l.map(f=>{let c=this.declaredModules?.[f]?.kinds??[];return c.length>0?c.map(p=>ae(this.schema,p)).join(", "):f}).join(", "),d=[i.length>0?`Turn off ${a(i)}`:"",s.length>0?`turn on ${a(s)}`:""].filter(Boolean).join("; "),u={id:this.nextId(),seq:this.log.length,batch:t.batch??this.mintBatch("batch"),author:ac,intent:fn(d),mutation:null,primitives:[],reads:[],writes:[],at:this.now(),...F("via",t.via),enabledModules:[...o].sort()};return this.log.append(u),this.notify(Xn,[u]),u}mutation(e){let t=this.mutations.get(this.spelled(e))??(e===Gt?this.publisher:void 0);if(!t)throw new rr(e,[...this.mutations.keys()]);if(this.mutationDisabled(t))throw new z(`Mutation "${e}" belongs to a module this workspace has turned off`,`Enabled modules: ${[...this.modules.enabled].join(", ")||"(none)"}`);return t}spelled(e){return e===Ct&&!this.typer&&ie.typeText&&!this.past&&!this.mutations.has(e)&&this.mutations.set(e,this.typer=ie.typeText(this)),this.mutations.has(e)?e:Kt(e,this.mutations.keys())??e}spelledCall(e){let t=this.spelled(e.name);return t===e.name?e:{...e,name:t}}mutationDisabled(e){return this.modules.disabledMutations.has(e.name)?!0:e.derived!==void 0&&this.modules.disabledKinds.has(e.derived.kind)}allMutations(){return[...this.mutations.values(),...this.publisher?[this.publisher]:[]].filter(e=>e!==this.keeper&&e!==this.typer&&!this.mutationDisabled(e))}viaOf(e,t,r){if(e!==void 0&&e===this.keeper){let o=Yo(this.mutations.values(),t?.args.kind);if(o.length>0)return o;let i=[...this.mutations.values()];return[...new Set(i.filter(s=>s.derived?.relation===t?.args.kind).flatMap(s=>Jt(this.schema,i,s)??[]))]}if(e!==void 0&&e===this.typer){let o=r===void 0||V(r)?this.graph:Re(this,r).graph,i=s=>!this.mutationDisabled(s)&&Co(s,this.schema,o,t?.args.node,t?.args.field,r&&T(r).id);return ie.via(this.schema,[...this.mutations.values()],this.subjectKindOf(t,r),t?.args.field,i)}if(e?.derived)return Jt(this.schema,[...this.mutations.values()],e)}moved(e,t){return cc(this.allInvariants(),e,t)}allInvariants(){return this.invariants.filter(e=>this.invariantEnabled(e))}invariantEnabled(e){if(this.modules.disabledInvariants.has(e.name))return!1;if(e.scope!=="graph"){let t=e.scope.kind;if(this.modules.disabledKinds.has(t))return!1}return!0}permits(e,t=tn){if(e=this.spelledCall(e),this.past)return{ok:!1,refusal:{mutation:e.name,wouldNeed:[],message:"Nothing changes while you look back."}};let r=this.refusesAgent(e,t)??this.namesTurnedOff(e,t);if(r)return{ok:!1,refusal:r};let o=this.mutations.get(e.name)??(e.name===Gt?this.publisher:void 0);if(o&&o===this.publisher)return q.verdict(this,t);let i=o!==void 0&&o===this.keeper&&Yo(this.mutations.values(),e.args.kind).length===0,s=i?e.args.from:o?.subject&&e.args[o.subject.arg],a=this.subjectKindOf(e,t),d=Se(this.policy,t,e.name,a,this.viaOf(o,e,t),typeof s=="string"?s:void 0,this.words,()=>{let u=T(t).id,l=this.namedIn(e,!1);try{for(let f of On(this.graph,o,e.args,this.sighted(t)).primitives)"edge"in f&&f.edge.from!==u&&f.edge.to!==u&&l.push(f.edge.to)}catch{}return l},o!==void 0&&(o.derived!==void 0||o===this.typer||i)?()=>this.madeBy(o,e,s):void 0,o?.derived!==void 0&&Yf.has(o.derived.act));return!d.ok||!o?.derived||!this.repeatMakes(o,e,s,t)?d:Se(this.policy,t,e.name,a,Yt([...this.mutations.values()],o.derived.kind),typeof s=="string"?s:void 0,this.words)}repeatMakes(e,t,r,o){let i=e.derived.act;if(i!=="detach"&&i!=="split")return!1;let s=this.schema.tryDefinition(e.derived.kind);if(!s)return!1;let a=typeof r=="string"?(V(o)?this.graph:Re(this,o).graph).getNode(r):void 0;return Fd(i,t.args,a,Bo(s))}madeBy(e,t,r){let o=le(this.log),i=o.creatorOf(r),s=t.args.into;if(!(e.derived?.act==="merge"&&typeof s=="string"&&o.creatorOf(s)!==i))return i}namedIn(e,t=!0){let r=this.mutations.get(e.name);if(!r)return[];let o=r.subject?.arg;return[...t&&o?[e.args[o]]:[],...it(r.input).flatMap(s=>s.name===o?[]:[e.args[s.name]])].flat().filter(s=>typeof s=="string")}refuse(e,t,r=!this.rehearsing){throw r&&tc(e,t),new Je(e)}get words(){return{act:e=>this.mutations.get(e)?.title,noun:e=>Y(this.schema.tryDefinition(e),e)}}refusesAgent(e,t){if(t.kind!=="agent"||t.id===void 0)return;let r=this.may.get(t.id);if(!r||r.has(e.name))return;let o=s=>`\u201C${this.mutations.get(s)?.title??s}\u201D`,i=[...r].map(o);return{mutation:e.name,message:`${t.id} may not ${o(e.name)} here: it was declared able to ${i.length===0?"do nothing else":i.join(", ")}.`,wouldNeed:[]}}namesTurnedOff(e,t=oc){let r=this.modules.disabledKinds;if(r.size===0||!V(t))return;let o=this.mutations.get(e.name);if(!(!o||!this.namedIn(e).some(i=>r.has(this.graph.getNode(i)?.kind))))return{mutation:e.name,message:`\u201C${o.title??e.name}\u201D names a record of a module this workspace has turned off.`,wouldNeed:[]}}sighted(e){let t={me:e&&T(e).id,everHeld:o=>le(this.log).kindOf(o)!==void 0,keeps:(o,i)=>id(this.policy?.sees,o,i)};if(e===void 0||!nn(this,e))return t;let r=st(this,e);return{...t,seen:Re(this,e).graph,keepUnchanged:o=>j(o,r),seesInFull:pd(this,e)}}collaborative(e,t){return ie.collaborative?.(this.schema,this.graph.getNode(e)?.kind,t)??!1}asSplices(e,t){return ie.asSplices?ie.asSplices(this,e,t):e}missingFor(e,t=tn){e=this.spelledCall(e);let r=this.mutations.get(e.name),o=new Set(this.namedIn(e));if(!r||o.size===0)return;let i=Re(this,t).graph;for(let s of o)if(!i.has(s))return new W(s,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=tn){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return!!i&&yo(i).some(s=>Se(this.policy,t,o,s,this.viaOf(i)).ok)}):!1}seenBy(e,t){return Re(this,e,t)}sees(e,t){return this.graph.has(t)&&st(this,e)(t)}labels;resolveRef(e,t,r=tn){let o=(this.policy?.sees?.length??0)>0,i=c=>!o||this.sees(r,c),s=this.graph.getNode(t);if(this.labels??=new Wt(this.graph),s&&i(t))return{ok:!0,id:t,label:this.labels.labelOf(t)??t,by:"id"};let a=this.labels.lookup(e.kinds,t),d=c=>{let p=c.filter(g=>!this.graph.isArchived(g));return p.length?p:c},u=d(a.exact.filter(i)),l=u.length>0,f=(l?u:d(a.prefix.filter(i))).map(c=>({id:c,kind:this.graph.getNode(c).kind,label:this.labels.labelOf(c)??c})).sort((c,p)=>c.label<p.label?-1:c.label>p.label?1:c.id<p.id?-1:1);return f.length===1?{ok:!0,id:f[0].id,label:f[0].label,by:l?"label":"prefix"}:Sd(this.schema,e,t,f)}kindsKeptFrom(e=tn){let t=new Set;for(let[o,i]of this.modules.administered)if(!this.mayAdminister(o,e))for(let s of i.kinds??[])t.add(s);let r=this.policy?.sees??[];if(r.length>0&&!V(e)){let o=new Set(this.permittedMutations(e).flatMap(s=>s.creates??[])),i=Te(this);for(let s of this.schema.kinds)!r.some(d=>d.kinds.includes(s)&&ke(d,e)&&(!d.own&&!d.via||e.id!==void 0)&&(i||!rt(d)))&&!o.has(s)&&t.add(s)}return t}permittedMutations(e=tn){let t=this.allMutations(),r=mo(this.policy,e,t.filter(s=>!s.derived&&s!==this.publisher)),o=this.publisher&&q.verdict(this,e).ok?[this.publisher]:[],i=t.filter(s=>s.derived!==void 0&&Se(this.policy,e,s.name,s.derived.kind,this.viaOf(s),T(e).id).ok);return[...r,...o,...i]}subjectKindOf(e,t=oc){let o=this.mutations.get(e.name)?.subject;if(!o)return;let i=e.args[o.arg];if(typeof i!="string")return o.kinds!=="*"&&o.kinds.length===1?o.kinds[0]:void 0;if(!(!V(t)&&!Re(this,t).graph.has(i)))return this.graph.getNode(i)?.kind}today(){return this.pinned()??(this.ticked&&this.ticked.on===ne(this.timeZone)?this.ticked.day:void 0)??(this.timeZone?ne(this.timeZone):void 0)}pinned(){let e=this.invariantOptions.context,t=this.invariantOptions.today??e?.today;return typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?t:void 0}judging(e){let t=this.today(),r=wa(this.graph),o=e??this.invariantOptions.context,i=r&&!(o&&"linked"in o)?{...o,linked:r}:e,s=i??o,a=this.timeZone&&t!==void 0&&e===void 0&&!(s&&"today"in s)?{...s,today:t}:i;return{...this.invariantOptions,...a===void 0?{}:{context:a},...t===void 0?{}:{today:t}}}tick(e=new Date){let t=this.pinned();if(t!==void 0)return{day:t,was:t,appeared:[],cleared:[]};let r=Qo(e,this.timeZone),o=ne(this.timeZone);this.ticked&&(this.ticked={day:this.ticked.day,on:o});let i=this.today(),s=this.violations();this.ticked={day:r,on:o};let a=this.moved(s,this.violations());if(r!==i&&!this.rehearsing&&this.quiet===0)for(let d of this.listeners)d(Xn,[]);return{day:r,...i===void 0?{}:{was:i},appeared:a.introduces,cleared:a.resolves}}reread(){if(!(this.rehearsing||this.quiet>0))for(let e of this.listeners)e(Xn,[])}violations(e,t=this.graph){return kn(t,this.allInvariants(),this.judging(e)).map(r=>this.asking(r))}required=new Map;asking(e){if(!e.repairs.some(o=>o.missing===void 0))return e;let t=!1,r=e.repairs.map(o=>{if(o.missing!==void 0)return o;let i=this.requiredOf(o.mutation).filter(s=>o.args?.[s]===void 0);return i.length===0?o:(t=!0,{...o,missing:i})});return t?{...e,repairs:r}:e}requiredOf(e){let t=this.required.get(e);if(t)return t;let r=this.mutations.get(e)?.input?.shape??{},o=Object.entries(r).filter(([,i])=>typeof i?.safeParse=="function"&&!i.safeParse(void 0).success).map(([i])=>i);return this.required.set(e,o),o}wouldChange(e,t){try{return On(this.graph,this.mutation(e.name),e.args,this.sighted(t)).primitives.length>0}catch{return!0}}preview(e,t,r={}){e=this.spelledCall(e);let o=this.mutation(e.name),i=On(this.graph,o,e.args,this.sighted(r.author));return this.previewPrimitives(this.asSplices(i.primitives),{reads:i.reads,writes:i.writes,intent:i.intent,context:t})}previewAll(e,t={}){let{context:r,...o}=t;return{...this.rehearsal().applying(e,o,r),kept:!1}}rehearsal(){let e=Object.assign(Object.create(n.prototype),this),t=0;Object.assign(e,{graph:ee.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:$n.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${ni}:${++t}`,mintBatch:()=>ni,rehearsing:!0});let r=this.typer&&ie.typeText(e);return Object.assign(e,{typer:r,mutations:r?new Map(this.mutations).set(Ct,r):new Map(this.mutations)}),e}previewPrimitives(e,t){let r=this.violations(t.context),o=ee.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=kn(o,this.allInvariants(),this.judging(t.context));return{diff:i,primitives:e,reads:t.reads,writes:t.writes,intent:t.intent,...this.moved(r,s),violationsAfter:s}}apply(e,t={}){return this.applyAll([e],t)}applyAll(e,t={}){return this.applying(e,t)}applying(e,t,r){let o=e.map(w=>this.spelledCall(w));this.stillNow();let i=t.batch??this.mintBatch("batch"),s=t.author??this.by,a=ct(t.lineage),d=[],u=[],l=new Set,f=new Set,c=[],p=this.violations(r),g=this.graph.snapshot(),h=this.log.length,v=w=>{let R=this.policy||this.publisher&&w.name===Gt?this.permits(w,s):void 0;R&&!R.ok&&this.refuse(R.refusal,s.id)},b=w=>{let R=this.refusesAgent(w,s)??this.namesTurnedOff(w,s);R&&this.refuse(R,s.id)},k=o.map(Wd);o.forEach((w,R)=>k[R]||v(w)),o.forEach((w,R)=>k[R]||b(w));let $=_o(s);$&&this.refuseDeclined(o,s),this.rehearsing||nr(s.id);let x=[],_=[],A=new Map,m=w=>typeof w=="string"?A.get(w)??w:Array.isArray(w)?w.map(m):w;try{for(let[w,R]of o.entries()){let{mintedHint:P,...E}=R,M=A.size?{...E,args:Object.fromEntries(Object.entries(E.args).map(([G,H])=>[G,m(H)]))}:E,Z=k[w]?qd(M,x,w):M;k[w]&&(v(Z),b(Z));let Ce=this.mutation(Z.name);if(Ce===this.publisher){let G=q.op(this,{id:this.nextId(),at:this.now()},Z,i,s,t);d.push(G),c.push(G.intent);continue}let cn=this.missingFor(Z,s);if(cn)throw cn;let C;try{C=On(this.graph,Ce,Z.args,{...this.sighted(s),hint:P})}catch(G){throw G instanceof he&&!this.rehearsing&&Jo(G,s.id),G}if(P!==void 0&&C.firstMinted!==void 0&&C.firstMinted!==P&&A.set(P,C.firstMinted),$){let G=ed(this.schema,this.graph,C.primitives,this.authorName(s),{declaration:!this.suggesting});G&&this.refuse({mutation:Z.name,message:G,wouldNeed:[]},s.id)}if(C.primitives.length===0)continue;_[w]=C.firstMinted,x[w]=C.primitives.find(G=>G.op==="add-node")?.node.id;let ue={id:this.nextId(),seq:this.log.length,batch:i,author:s,intent:Ce.describe!==void 0?C.intent:t.intent??C.intent,...F("batchIntent",t.intent),mutation:Z,primitives:this.asSplices(C.primitives,t.base).map(Nn),reads:C.reads,writes:C.writes,...Ce.describe!==void 0&&C.described&&C.described.length>0?{described:C.described}:{},...F("mergedInto",C.mergedInto),at:this.now(),...F("via",t.via),...F("lineage",a)};this.graph.applyPrimitives(ue.primitives),this.log.append(ue),d.push(ue),u.push(...ue.primitives);for(let G of ue.reads)l.add(G);for(let G of ue.writes)f.add(G);c.push(ue.intent)}}catch(w){throw this.putBack(g,h),w}let y=Ie(g,this.graph.snapshot(),u);this.admitted(t,d,u,y,g,h);let S=this.violations(r);return this.notify(y,d),{batch:i,ops:d,..._.length>0?{minted:_}:{},diff:y,primitives:u,reads:[...l],writes:[...f],intent:t.intent??c.join("; "),...this.moved(p,S),violationsAfter:S}}receive(e,t={}){this.stillNow();let r=new Set(this.log.all().map(d=>d.id)),o=e.filter(d=>!r.has(d.id));if(o.length===0)return[];let i=this.graph.snapshot(),s=[];if(!t.applied)for(let d of o)try{this.graph.applyPrimitives(d.primitives,{restoring:d.undoes!==void 0})}catch(u){throw this.graph.load(i),new En(d,u)}let a=this.log.length;for(let[d,u]of o.entries()){let l=In({...u,seq:a+d});this.log.append(l),s.push(l)}return this.countPast(s),this.notify(Ie(i,this.graph.snapshot(),o.flatMap(d=>d.primitives)),s),s}append(e,t={}){if(this.stillNow(),e.length===0)return[];let r=new Set(this.log.all().map(a=>a.id)),o,i=e.map((a,d)=>{let u=a.primitives.map(Nn),l={id:a.id??this.nextId(),seq:this.log.length+d,batch:a.batch??t.batch??(o??=this.mintBatch("batch")),author:a.author,intent:a.intent,...F("batchIntent",a.batchIntent),mutation:a.mutation??null,primitives:u,reads:a.reads??[],writes:a.writes??[...new Set(u.flatMap(_e))],at:a.at??this.now(),...F("undoes",a.undoes),...F("via",a.via),...F("lineage",ct(a.lineage))};if(r.has(l.id))throw new z(`Op "${l.id}" (${l.intent}) is already in the log`,"A host-made op needs an id of its own; leave `id` out and the store mints one.");return r.add(l.id),l}),s=this.graph.snapshot();for(let a of i)try{this.graph.applyPrimitives(a.primitives,{restoring:a.undoes!==void 0})}catch(d){throw this.graph.load(s),new En(a,d)}for(let a of i)this.log.append(a);this.countPast(i);for(let a of i)nr(a.author.id);return this.notify(Ie(s,this.graph.snapshot(),i.flatMap(a=>a.primitives)),i),i}applyPrimitives(e,t={}){this.stillNow();let r=t.batch??this.mintBatch("batch"),o=t.author??this.by,i=this.violations(),s=this.graph.snapshot(),a=t.intent??"Apply a change",d=ct(t.lineage),u=this.asSplices(e,t.base).map(Nn),l=[];if(u.length>0){let p={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:u,reads:[],writes:[...new Set(u.flatMap(_e))],at:this.now(),...F("via",t.via),...F("lineage",d)};this.graph.applyPrimitives(p.primitives),this.log.append(p),l.push(p),nr(o.id)}let f=this.violations(),c=Ie(s,this.graph.snapshot(),u);return this.notify(c,l),{batch:r,ops:l,diff:c,primitives:u,reads:[],writes:l[0]?.writes??[],intent:a,...this.moved(i,f),violationsAfter:f}}findings(){return ec({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return nt(this.log,typeof e=="string"?[e]:e)}previewUndo(e,t){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=Ba(r.ops,this.log.all()),i=new Set;for(let s of r.ops)for(let a of s.writes)i.add(a);return{ok:!0,check:r,...this.previewPrimitives(o,{reads:[...new Set(r.ops.flatMap(s=>[...s.reads]))],writes:[...i],intent:`Undo: ${r.ops.map(s=>s.intent).join("; ")}`,restoring:r.ops.every(ic),...t===void 0?{}:{context:t}})}}undo(e,t={}){return this.undoing(e,t)}undoing(e,t){this.stillNow();let r=typeof e=="string"?[e]:e,o=t.author??this.by,i=(this.policy?.sees?.length??0)>0&&!V(o);if(i){let v=nt(Io(Rn(this.log.all(),Ut(this,o)),()=>this.log.epochs()),r);if(!v.ok)throw new Ye(v)}let s=this.canUndo(r);if(!s.ok)throw new Ye(i?{ok:!1,ops:[],blockedBy:[],includeBatches:[],message:"Cannot undo on its own \u2014 a later change you cannot see depends on it, which only somebody who can see it can take back."}:s);let a=t.batch??this.mintBatch("undo"),d=ct(t.lineage),u=this.undoRefusal(s.ops,o);u&&this.refuse(u,o.id,!0);let l=this.graph.snapshot(),f=this.violations(),c=[],p=this.log.length;for(let{op:v,primitives:b}of ko(this.log.all(),s.ops)){let k={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${v.intent}`,...F("batchIntent",t.intent),mutation:null,primitives:b,reads:v.reads,writes:v.writes,at:this.now(),undoes:v.id,...F("via",t.via),...F("lineage",d),...F("undoneLineage",v.lineage)};this.graph.applyPrimitives(k.primitives,{restoring:ic(v)}),this.log.append(k),c.push(k)}let g=Ie(l,this.graph.snapshot(),c.flatMap(v=>[...v.primitives]));this.admitted(t,c,c.flatMap(v=>[...v.primitives]),g,l,p);let h=this.violations();return this.notify(g,c),{batch:a,ops:c,diff:g,primitives:c.flatMap(v=>[...v.primitives]),reads:[...new Set(c.flatMap(v=>[...v.reads]))],writes:[...new Set(c.flatMap(v=>[...v.writes]))],intent:t.intent??c.map(v=>v.intent).join("; "),...this.moved(f,h),violationsAfter:h}}mayUndo(e,t=this.by){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=this.undoRefusal(r.ops,t);return o?{ok:!1,refusal:o}:{ok:!0}}undoRefusal(e,t){if(this.policy||this.publisher)for(let r of e){let o=this.rootOf(r),i=T(o.author).id;if(!o.mutation){if(o.primitives.length===0)continue;if(this.policy&&!V(t)&&i!==T(t).id&&!this.grantsEveryAct(t))return{mutation:"undo",wouldNeed:[],message:`Not permitted to undo "${r.intent}": no act made it, so only whoever did may take it back.`};continue}let s=d=>JSON.stringify(d).includes(JSON.stringify(i)),a=i!==void 0&&i!==T(t).id&&!V(t)&&!s(o.mutation.args)&&s(o.primitives)?{ok:!1,refusal:{mutation:o.mutation.name,wouldNeed:[],message:"it was done as somebody else."}}:this.permits(o.mutation,t);if(!a.ok)return{...a.refusal,message:`Not permitted to undo "${r.intent}": ${a.refusal.message}`}}}rootOf(e){let t=e;for(let r=t.undoes===void 0?void 0:this.log.get(t.undoes);r!==void 0;r=t.undoes===void 0?void 0:this.log.get(t.undoes))t=r;return t}grantsEveryAct(e){let t=T(e);return(this.policy?.grants??[]).some(r=>ke(r,t)&&r.mutations==="*"&&(r.kinds===void 0||r.kinds==="*")&&!r.self&&!r.ownEnd)}authorName(e){return Hn(e,{graph:this.graph,schema:this.schema})}actMeanings(){return{act:e=>this.mutations.get(this.spelled(e)),has:e=>this.graph.has(e)}}refuseDeclined(e,t){let r=Qa(this.log.all(),e,this.actMeanings());r&&this.refuse({mutation:e[0].name,message:`${this.authorName(t)} may not make this again: a person declined it on ${r.at.slice(0,10)}.`,wouldNeed:[]},t.id)}putBack(e,t){this.graph.load(e),this.log.length>t&&this.log.truncate(t)}admitted(e,t,r,o,i,s){if(!e.admit||t.length===0)return;let a=this.graph.size;try{e.admit({ops:t,primitives:r,added:{nodes:o.addedNodes.length,edges:o.addedEdges.length},removed:{nodes:o.removedNodes.length,edges:o.removedEdges.length},changed:{nodes:o.changedNodes.length},nodesAfter:a.nodes,edgesAfter:a.edges})}catch(d){throw this.putBack(i,s),d}}redo(e,t={}){return this.undo(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(e,t){if(!(this.quiet>0)&&!(t.length===0&&Oa(e)))for(let r of this.listeners)r(e,t)}rebase(e){this.stillNow();let t=new Set([...e.pending,...e.drop??[]]),r=this.log.all(),o=r.findIndex(h=>t.has(h.batch)),i=r.slice(o<0?r.length:o),s=this.log.horizon+(o<0?r.length:o),a=i.find(h=>!t.has(h.batch));if(a)throw new z(`Cannot rebase: op "${a.id}" (${a.intent}) comes after a pending batch and is neither pending nor dropped`,"While anything is pending, land the server's ops through rebase, so the log stays confirmed ops then pending ones.");let d=this.log.lastEpoch();if(d&&d.seq>s)throw new z(`Cannot rebase across an epoch: one begins at seq ${d.seq}, after pending op "${i[0].id}"`);let u=this.graph.snapshot(),l=[],f=[],c=[];this.quiet++;try{for(let k of[...i].reverse())this.graph.applyPrimitives(Ke(k),{restoring:!0,inPlace:!0});this.log.truncate(s);let h=new Set(this.log.all().map(k=>k.id));for(let k of e.confirmed){if(h.has(k.id))continue;try{this.graph.applyPrimitives(k.primitives,{restoring:k.undoes!==void 0})}catch(x){throw new En(k,x)}let $=In({...k,seq:this.log.length});this.log.append($),h.add(k.id),l.push($)}this.countPast(l);let v=ie.carried?.(i,l,e.pending),b=sc(i);for(let k of e.pending){let $=i.filter(x=>x.batch===k);if($.length!==0)try{f.push(...this.replay(k,$,v?.get(k),b))}catch(x){c.push({batch:k,error:x})}}}catch(h){this.log.truncate(s);for(let v of i)this.log.append(v);throw this.graph.load(u),h}finally{this.quiet--}let p=Ne(u,this.graph.snapshot()),g=[...l,...f];return this.notify(p,g),{diff:p,confirmed:l,pending:f,refused:c}}adopt(e){this.stillNow();let t=new Set(e.drop??[]),r=(e.pending??[]).filter(p=>!t.has(p)),o=this.log.all(),i=this.graph.snapshot(),s={ops:[...o],epochs:[...this.log.epochs()],horizon:this.log.horizon},a=new Set(o.map(p=>p.id)),d=new Map(r.map(p=>[p,o.filter(g=>g.batch===p)]));if(e.log.length>0)this.log.replace(e.log,e.epochs,F("horizon",e.horizon));else{let p=e.horizon??0;this.log.replace([],e.epochs??[{seq:p,base:e.snapshot}],{horizon:p})}let u=[],l=[];this.quiet++;try{this.graph.load(e.snapshot),this.projected=void 0,this.countPastTheLog();for(let p of r){let g=d.get(p)??[];if(g.length!==0)try{u.push(...this.replay(p,g,void 0,sc(o)))}catch(h){l.push({batch:p,error:h})}}}catch(p){throw this.log.replace(s.ops,s.epochs,{horizon:s.horizon}),this.graph.load(i),this.projected=void 0,p}finally{this.quiet--}let f=this.log.all().filter(p=>!a.has(p.id)&&!u.includes(p)),c=Ne(i,this.graph.snapshot());return this.notify(c,[...f,...u]),{diff:c,adopted:f,pending:u,refused:l}}replay(e,t,r,o=new Map){let i=t[0],s={author:i.author,batch:e,...F("intent",i.batchIntent),...F("via",i.via),...F("lineage",i.lineage)};if(i.undoes!==void 0){let a=t.map(u=>this.log.get(u.undoes??"")?.batch??o.get(u.undoes??"")),d=t.find((u,l)=>a[l]===void 0||!this.log.all().some(f=>f.batch===a[l]));if(d)throw new z(`What "${d.intent}" took back is no longer in the log`);return this.undoing([...new Set(a)],s).ops}return r?this.applying(r,s).ops:t.every(a=>a.mutation!==null)?this.applying(t.map(a=>a.mutation),s).ops:this.append(t.map(({seq:a,...d})=>d))}snapshot(){return this.graph.snapshot()}verify(){let e=this.log.lastEpoch();return $d(this.schema,this.log.opsFrom(e?.seq??0),this.graph.snapshot(),{validate:this.validate,...e?{base:e.base}:{}})}checkpoint(e={}){let t=this.log.all(),r;if(e.seq!==void 0)r=e.seq;else{let l=this.log.length-(e.keepOps??1e3),c=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,p=t.find(h=>Date.parse(h.at)>c),g=p?p.seq:this.log.length;r=Math.min(l,g)}let o=bo(this.publishing)&&this.publishedSeq===void 0?[0]:[],i=[...e.pins??[],...o].filter(l=>Number.isInteger(l));i.length>0&&(r=Math.min(r,...i));let s=e.format??de.snapshot;if(!Number.isInteger(s)||s<1||s>de.snapshot)throw new RangeError(`Cannot write a checkpoint in snapshot format ${String(s)}: this build writes formats 1 to ${de.snapshot}.`);let a=l=>{let f=Math.min(Math.max(l,this.log.horizon),this.log.length);for(;f>this.log.horizon&&f<this.log.length&&t[f-this.log.horizon].batch===t[f-1-this.log.horizon].batch;)f--;return f};if(r=a(r),r<=this.log.horizon)return;let d=this.verify();if(!d.ok)throw new z(`Cannot compact a store that does not verify: ${d.reason}`);let u=this.checkpointWithPublished(r);for(;ei(u).formats.snapshot>s;){if(r=a(Math.min(...u.published.map(l=>l.seq))),r<=this.log.horizon)return;u=this.checkpointWithPublished(r)}return u}checkpointWithPublished(e){let t=this.log.horizonEpoch()?.published??[],r=(q.behind?.(this,e)??[]).flatMap(o=>o>=this.log.horizon?[this.epochAt(o)]:t.filter(i=>i.seq===o));return{...this.epochAt(e),...r.length>0&&{published:r}}}epochAt(e){let t=this.log.all(),{creators:r,removed:o,writers:i,published:s,...a}=this.log.checkpointAt(this.schema,e,{validate:this.validate}),d=new Set(a.base.nodes.map(g=>g.id)),{creators:u,removed:l}=ad(this.log,e,g=>d.has(g)),f=le(this.log),c=od(this.log,e,a.base.nodes,g=>j(g,h=>!d.has(h)&&f.kindOf(h)===void 0)),p=g=>g&&Object.keys(g).length>0;return{...a,...p(u)&&{creators:u},...l&&{removed:l},...p(c)&&{writers:c},...F("enabledModules",t.slice(0,e-this.log.horizon).reverse().find(g=>g.enabledModules)?.enabledModules??this.log.horizonEpoch()?.enabledModules),...F("publishedThrough",q.seq?.(this,e))}}compact(e){return this.stillNow(),this.log.compact(e)}};var Qf=n=>`lens:${n}`,ep={hidden:[],removed:[],may:{views:!1,lenses:!1}};function np(n,e,t){return n.name!==void 0&&e.may.views?"view":n.declared&&e.may.lenses&&t.lens?"lens":null}var lc=["full","summary","glyph"],ut="view:",ii=(n,e)=>n.as===e.as&&(n.over??[n.kind]).includes(e.kind),tp=n=>n.filter((e,t)=>!n.slice(0,t).some(r=>ii(r,e))),rp=n=>n.filter(e=>!e.hidden);function $e(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function ft(n,e){return`/${$e(n.tryDefinition(e)?.plural??`${e}s`)}`}function op(n,e,t){return`${ft(n,e)}/${encodeURIComponent(t)}`}function ip(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function uc(n,e){return e.some(t=>t.as===n.as&&!ii(n,t))}function sp(n,e,t){return uc(n,e)?`${n.title} \xB7 ${(t.tryDefinition(n.kind)?.plural??`${n.kind}s`).toLowerCase()}`:n.title}var rn=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function oi(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function ap(n){let e=new Map,t=[],r=[],o,i=[],s={arrange(a){return a!==void 0&&(o=a),s},arrangement:()=>o,home(a,d){return a!==void 0&&i.push({view:a,...d?.name!==void 0?{name:d.name}:{}}),s},homeView:()=>i.at(-1)?.view,homes:()=>i,register(a,d,u,l){let f={...l?.over?.[1]?{over:l.over}:{},...l?.hidden?{hidden:!0}:{},...l?.name?{name:l.name}:{},...l?.declared?{declared:!0}:{}},c={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:u,...l?.title?{title:l.title}:{},...l?.across?{across:l.across}:{},...l?.beside?{beside:!0}:{},...f};if(r.push(c),!l?.beside&&!f.hidden&&e.set(rn(a,d),c),l?.title){let p=$e(l.title);e.set(rn(a,d,p),c),d.cardinality==="many"&&!t.some(g=>g.kind===a&&g.as===p)&&t.push({kind:a,title:l.title,as:p,...l.across?{across:l.across}:{},...f,...l.lens?{lens:l.lens}:{},...l.reads?.length?{reads:l.reads}:{}})}return s},places:()=>t,forget(a,d){for(let l of lc)e.delete(rn(a,{cardinality:"many",fidelity:l},d));let u=t.findIndex(l=>l.kind===a&&l.as===d);return u>=0&&t.splice(u,1),s},lookup(a,d){return e.get(rn(a,d))?.view},resolve(a,d,u){if(u)for(let l of oi(d.fidelity)){let f=e.get(rn(a,{cardinality:d.cardinality,fidelity:l},u));if(f)return f}for(let l of oi(d.fidelity)){let f=e.get(rn(a,{cardinality:d.cardinality,fidelity:l}));if(f)return f}if(d.cardinality==="one")for(let l of oi(d.fidelity)){let f=e.get(rn(a,{cardinality:"many",fidelity:l}));if(f)return f}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}var dp=["day","week","month","year","decade"];function fc(n){let e={};n.q&&n.q.trim().length>0&&(e.query=n.q);let t=io(n.archived);if(t&&(e.archived=t),n.sort){let[r,o]=n.sort.split(":");r&&(e.sort={by:r,direction:o==="desc"?"desc":"asc"})}if(n.filter){let r=[];for(let o of n.filter.split(",")){let i=o.indexOf(":");i<=0||r.push({key:o.slice(0,i),value:o.slice(i+1)})}r.length>0&&(e.filter=r)}if(n.group){let[r,o]=n.group.split(":");r&&(e.group={by:r,...dp.includes(o)?{bucket:o}:{}})}return e}function si(n){if(typeof n=="string"&&n.length>0)return{by:n,direction:"asc"};if(typeof n!="object"||n===null)return;let{by:e,direction:t}=n;if(!(typeof e!="string"||e.length===0))return{by:e,direction:t==="desc"?"desc":"asc"}}function or(n,e,t){let r=si(n);if(!r)return'an order is a field, like "released", or { "by": "released", "direction": "asc" | "desc" }';let o=typeof n=="object"&&n!==null?n.direction:void 0;if(o!==void 0&&o!=="asc"&&o!=="desc")return`an order runs "asc" or "desc", not "${String(o)}"`;if(r.by!=="label"&&!e.includes(r.by))return`${t} has no field "${r.by}" to order by (it has ${e.length>0?e.map(i=>`"${i}"`).join(", "):"none"}, and "label", its name)`}function cp(n,e,t){let r=si(e);if(!r)return n;let o=r.direction==="desc"?-1:1;return n.map((i,s)=>({item:i,at:s,value:t(i,r.by)})).sort((i,s)=>{let a=(i.value===void 0||i.value===null||i.value===""?1:0)-(s.value===void 0||s.value===null||s.value===""?1:0);if(a!==0)return a;if(i.value===s.value||i.value===void 0||i.value===null)return i.at-s.at;let d=typeof i.value=="number"&&typeof s.value=="number"?i.value-s.value:String(i.value).localeCompare(String(s.value),void 0,{numeric:!0});return d===0?i.at-s.at:d*o}).map(i=>i.item)}var pt={timeline:{binds:"fields",requiredRoles:["start","end"],options:["columns","extent","tick","minWindow","arranging"]},calendar:{binds:"fields",requiredRoles:["start"],options:["today","range","weekStartsOn","perCell","horizon","arranging","search","filters"]},coverage:{binds:"entities",requiredRoles:["rows","columns","link"],options:["rowRef","rowGroup","groupOrder","requiredGroups","requiredVia","badge","columnGroup","sort","columnSort","search","filters"]},board:{binds:"entities",requiredRoles:["slots","x","y","fill"],options:["fillFrom","slotCode","zones","aspect","emptyLabel","pickTarget","arranging","arrange"]},plan:{binds:"entities",requiredRoles:["regions","outline"],options:["hues","aspect","undrawnLabel","strayLabel","draw","place","help"]},reach:{binds:"nothing",requiredRoles:[],options:[]},blocks:{binds:"nothing",requiredRoles:[],options:["blocks"]},columns:{binds:"fields",requiredRoles:["column"],options:["sort","search","filters","move","collapsed","cap","hidden"]}},lp=20,hc=Object.keys(pt),up=(n,e,t,r=pt[n].options)=>({message:`The ${n} lens takes no option "${e}", so "${t}" ignores it.`,fix:r.length?`Use one of: ${r.join(", ")}.`:`The ${n} lens takes no options; drop it.`}),gc=n=>Object.hasOwn(pt,n);function ai(n,e,t){let r=n[e],o=Array.isArray(r)?r.filter(i=>typeof i=="string"&&t(i)):[];o.length>0?n[e]=o:delete n[e]}var Mn=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function pc(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=D(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=D(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function fp(n){let e=[],t=[],r=[],o=new Set(n.schema.kinds),i=new Set;for(let d of o)for(let u of Object.keys(n.schema.tryDefinition(d)?.edges??{}))i.add(u);let s=d=>Object.keys(n.schema.tryDefinition(d)?.fields.shape??{}),a=new Map;return(n.lenses??[]).forEach((d,u)=>{let l=`lenses.${u}`,f=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,c=(m,y)=>{t.push({index:u,name:d.name,...f?{title:f}:{},why:m}),y&&r.push({severity:"warning",...y})};if(!gc(d.name)){f?c(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${l}.name`,message:`"${f}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${hc.join(", ")} \u2014 or register the view yourself and drop the title.`}):c("it is a lens this app wrote, drawn by the app's own views");return}if(!f)return c("it has no title, so it is bindings the checker holds and no place");let p=pt[d.name],g=Mn(d.options)?d.options:{};if(d.options!==void 0&&!Mn(d.options))return c("its options are not an object",{code:"lens-options-not-an-object",path:`${l}.options`,message:`"${f}" has options that are not an object.`,fix:'Write them as { "<option>": <value> }, or drop them.'});for(let m of Object.keys(g))p.options.includes(m)||r.push({severity:"warning",code:"lens-option-unknown",path:`${l}.options.${m}`,...up(d.name,m,f,p.options)});let h={};for(let m of p.options)g[m]!==void 0&&(h[m]=g[m]);d.arrangedBy&&(h.arrangedBy=fc(d.arrangedBy));let v=Mn(d.bindings)?d.bindings:{},b=[],k,$=(m,y,S)=>c(y,{code:"lens-cannot-draw",path:m,message:`"${f}" cannot draw: ${y}.`,fix:S});if(p.binds==="fields"){let m=Object.keys(v).filter(S=>Mn(v[S])),y=m.filter(S=>!o.has(S));if(m.length===0)return $(`${l}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${p.requiredRoles.map(S=>`"${S}": "<field>"`).join(", ")} } }.`);if(y.length>0)return;if(h.bindings=v,b=m,d.name==="timeline"){let S=g.columns;if(Array.isArray(S))h.columns=S.map(w=>typeof w=="string"?{id:w,label:w}:w);else{let w=m.flatMap(P=>{let E=v[P],M=typeof E.column=="string"?E.column:typeof E.columns=="string"?E.columns:void 0;return M?pc(n.schema,P,M):[]}),R=[...new Set(w)];if(R.length===0)return $(`${l}.options.columns`,"it has no columns \u2014 no option names them and no `column` role is bound to a field of set values",'Bind "column" to a field whose values are the columns, or say "columns": ["mon", "tue", \u2026].');h.columns=R.map(P=>({id:P,label:P.toUpperCase()}))}h.extent===void 0&&(h.extent=1440)}if(d.name==="columns"){if(h.sort!==void 0){let w=m.map(R=>or(h.sort,s(R),R)).find(Boolean);w&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.sort`,message:`"${f}" cannot order its cards: ${w}.`,fix:'Write { "by": "<a field>", "direction": "asc" }, or drop it.'}),delete h.sort)}let S=new Set;for(let w of m){let R=v[w].column;if(typeof R!="string"||!s(w).includes(R))return;let P=pc(n.schema,w,R);if(P.length===0)return $(`${l}.bindings.${w}.column`,`its column field "${R}" is not a choice`,`Bind "column" to a choice field of ${w}, like a status.`);for(let E of P)S.add(E)}typeof h.move!="boolean"&&delete h.move,Number.isInteger(h.cap)&&h.cap>=1&&h.cap<=500||delete h.cap;for(let w of["collapsed","hidden"])ai(h,w,R=>S.has(R))}if(d.name==="calendar"&&h.today!==void 0&&!(typeof h.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(h.today)))return $(`${l}.options.today`,"its today is not a date",'Write it as "YYYY-MM-DD", or leave it out and the calendar opens on the day it is drawn.');if(d.name==="calendar"&&h.horizon!==void 0){let S=h.horizon,w=E=>E===void 0||Number.isInteger(E)&&E>=1&&E<=9999,R=typeof S=="number"?{years:S,title:"Years"}:S;Mn(R)&&Number.isInteger(R.years)&&R.years>=1&&R.years<=200&&typeof R.title=="string"&&R.title.trim().length>0&&w(R.from)&&w(R.to)&&Object.keys(R).every(E=>["years","title","from","to"].includes(E))&&!(typeof R.from=="number"&&typeof R.to=="number"&&R.to<R.from)?h.horizon=R:(delete h.horizon,r.push({severity:"warning",code:"lens-horizon",path:`${l}.options.horizon`,message:`"${f}" has a horizon that is not a span of years, so it offers no span of years.`,fix:'Write { "years": 30, "title": "The career" } \u2014 "from" and "to" (years, like 1962 and 2023) only to pin its ends, which otherwise reach the first and last of its records.'}))}if(d.name==="calendar"&&h.range!==void 0&&!["day","week","month","quarter","year","years","agenda"].includes(h.range))return $(`${l}.options.range`,`its range "${String(h.range)}" is not one a calendar opens at`,"Use one of: day, week, month, quarter, year, agenda.")}else if(p.binds==="entities"){let m=w=>{let R=v[w];if(Mn(R)){if(typeof R.kind=="string")return R.kind;if(typeof R.edge=="string")return R.edge;if(Array.isArray(R.path))return{path:R.path};if(typeof R.field=="string")return R.field}};for(let w of p.requiredRoles)if(m(w)===void 0)return;let y=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",S=m(y);if(!o.has(S))return;if(d.name==="coverage"){let w=m("columns");if(!o.has(w))return;let R=m("link");if(typeof R=="string"&&!i.has(R))return;Object.assign(h,{rows:S,columns:w,link:R}),w!==S&&(k=w);for(let[P,E]of[["sort",S],["columnSort",w]]){if(h[P]===void 0)continue;let M=or(h[P],s(E),E);M&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.${P}`,message:`"${f}" cannot order its ${P==="sort"?"rows":"columns"}: ${M}.`,fix:`Write { "by": "<a field of ${E}>", "direction": "asc" }, or drop it.`}),delete h[P])}}else if(d.name==="board"){Object.assign(h,{slots:S,x:m("x"),y:m("y"),fill:m("fill")});for(let w of["x","y"])if(!s(S).includes(h[w]))return}else{Object.assign(h,{regions:S,outline:m("outline")});for(let w of["markers","at","within","nests","regionKind","markerKind"]){let R=m(w);typeof R=="string"&&(h[w]=R)}}b=[S]}else if(d.name==="blocks"){if(!d.on)return $(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind it is a place of>".');if(!Array.isArray(h.blocks)||h.blocks.length===0)return $(`${l}.options.blocks`,"it has no blocks to draw",`Say "options": { "blocks": [{ "headline": "\u2026" }, { "list": "all('<kind>')", "as": "card" }] }.`)}else{let m=["user","person","member"].find(y=>o.has(y));if(!d.on&&!m)return $(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');b=m?[m]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return $(`${l}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(b=[d.on],d.name==="coverage"){let m=[h.rows,h.columns].find(y=>y!==d.on);k=typeof m=="string"?m:void 0}}let x=typeof h.rows=="string"?h.rows:b[0];if(x!==void 0){let m=["label",...s(x)],y=new Set(["is",...m,...Object.keys(n.schema.tryDefinition(x)?.edges??{})]);ai(h,"search",S=>m.includes(S)),ai(h,"filters",S=>y.has(S.split(".")[0]))}let _=$e(f);if(_.length===0)return $(`${l}.title`,"its title has no letters or digits to make an address of","Give it a title a person would say.");for(let m of b){let y=`${m}|${_}`;if(a.has(y))return c(`another lens on ${m} is already called "${f}"`,{code:"lens-title-taken",path:`${l}.title`,message:`"${f}" is the title of lenses.${a.get(y)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let m of b)a.set(`${m}|${_}`,u);let A=d.create;A!==void 0&&typeof A!="boolean"&&r.push({severity:"warning",code:"lens-create",path:`${l}.create`,message:`"${f}" says create ${JSON.stringify(A)}, which is neither true nor false, so its page keeps the forms that begin its kind.`,fix:'Say "create": false to leave them off, or drop it.'}),e.push({index:u,lens:d.name,title:f,as:_,kinds:b,...k?{across:k}:{},options:h,...d.hidden===!0?{hidden:!0}:{},...A===!1?{create:!1}:{}})}),{drawn:e,undrawn:t,findings:r}}var pp=6;function hp(n,e,t=[]){let r=n.kinds,o=s=>Object.values(n.tryDefinition(s)?.edges??{}).map(a=>(a.to==="*"?r:a.to).filter(d=>d!==s)),i=new Set(r.flatMap(s=>o(s).flat()));return new Set([...e?.hide??[],...t,...r.filter(s=>!i.has(s)&&o(s).length>0&&o(s).every(a=>a.length>=2))])}function gp(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map($e));return{kinds:new Set(e.kinds.filter(o=>r.has($e(o))||r.has(ft(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has($e(o.title))||o.name!==void 0&&n.primary.includes(ut+o.name)).map(o=>`${o.kind}|${o.as}`))}}var mc="overview",mp=`/places/${mc}`;function yp(n){let e=n?.scene?.trim();return e||"Scene"}function bp(n){let e=n?.pages?.trim();return e||"Pages"}function vp(n,e){if(!e||e.length===0)return n;let t=e.filter(r=>n.includes(r));return[...new Set(t),...n.filter(r=>!t.includes(r))]}function yc(n){return n.startsWith(ut)&&n.slice(ut.length).trim()||void 0}function wp(n,e,t){let r=[],o=new Set;for(let i of e??[]){let s=yc(i),a=s===void 0?void 0:t.find(d=>d.name===s&&n.includes(d.kind));a?r.some(d=>d.view===a)||r.push({kind:a.kind,view:a}):s===void 0&&n.includes(i)&&!o.has(i)&&(o.add(i),r.push({kind:i}))}for(let i of n)o.has(i)||r.push({kind:i});return r}function xp(n,e,t){if(n===void 0)return;let r=n.trim();if(r==="")return;if(r.toLowerCase()==="home"||r==="/")return{to:"home"};let o=$e(r),i=t.find(d=>d.title===r||ut+d.name===r)??t.find(d=>d.as===o);if(i)return{to:"place",place:i};let s=e.kinds,a=s.find(d=>d===r)??s.find(d=>ft(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function di(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function kp(n,e={}){let t=typeof n=="string"?n:n.address,r=di(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function Sp(n,e){let t=di(e);if(t==="")return n.startsWith("/")?n:`/${n}`;if(!n.toLowerCase().startsWith(t.toLowerCase()))return null;let r=n.slice(t.length);return r===""||r==="/"?"/":r.startsWith("/")?r:null}var ir=2500,Rp=ir*4;function $p(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function ci(n,e,t=ir){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}var vS=new Set(It);function Ap(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function _p(n,e,t,r=ir,o){let i=new Map;for(let[s,a]of n)ci(a,t,r)&&i.set(s,a);for(let s of e){if(!ci(s,t,r)){i.delete(s.participant);continue}let a=i.get(s.participant);(!a||Date.parse(a.at)<=Date.parse(s.at))&&i.set(s.participant,s)}return o!==void 0&&i.delete(o),i}function Op(n,e){return!n||!e?n===e:n.participant===e.participant&&n.kind===e.kind&&n.name===e.name&&n.onBehalfOf===e.onBehalfOf&&n.onBehalfOfName===e.onBehalfOfName&&n.until===e.until&&n.held===e.held&&n.hue===e.hue&&n.stop===e.stop&&(n.over??null)===(e.over??null)&&(n.robot?.at??null)===(e.robot?.at??null)&&(n.robot?.mode??null)===(e.robot?.mode??null)&&JSON.stringify(n.caret)===JSON.stringify(e.caret)}var bc=Symbol.for("@graview/core:app-link"),Pp=n=>(Object.defineProperty(D(n),bc,{value:1,enumerable:!0}),n);function vc(n){let e=D(n);return!!e&&(e[bc]===1||vc(e.innerType))}var SS=()=>Pp(L().check(Yr(500),Bn(Et,"another app's address")));var sr=(n,e)=>`${e.kind}\0${e.id??""}\0${n.address}\0${n.kind}\0${n.id}`;function Ep(n,e,t=()=>{}){let r=new Map,o=new Map,i=s=>{let a=sr(s,e),d=r.get(a);return d||(d=Promise.resolve().then(()=>n.resolve(s,e)).then(u=>Mp(u)?u:null,()=>null).then(u=>(r.get(a)===d&&(o.set(a,u),t(s)),u)),r.set(a,d)),d};return{read(s){let a=sr(s,e);if(o.has(a)){let d=o.get(a);return d===null?{unread:!0}:"denied"in d?{denied:!0}:{record:d}}return i(s),{unread:!0}},ask:i,answered:s=>o.get(sr(s,e)),forget(s){if(!s){r.clear(),o.clear();return}let a=sr(s,e);r.delete(a),o.delete(a)}}}function Mp(n){if(n===null)return!0;if(typeof n!="object"||n===void 0)return!1;if(n.denied===!0)return!0;let e=n;return typeof e.label=="string"&&typeof e.id=="string"&&typeof e.kind=="string"&&typeof e.fields=="object"&&e.fields!==null}var zp=1;var ar=(n,e)=>`${n}\0${e}`;function ui(n){return n.op==="add-node"?Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind").map(e=>[n.node.id,e]):n.op==="patch-node"?Object.keys(n.after).map(e=>[n.id,e]):n.op==="splice-text"?[[n.id,n.field]]:[]}var li=class n{revs=new Map;floor;constructor(e=0){this.floor=Math.max(0,Math.floor(e))-1}static of(e,t={}){let r=new n(t.horizon);return r.note(e),r}note(e){for(let t of e)for(let r of t.primitives)for(let[o,i]of ui(r)){let s=ar(o,i);(this.revs.get(s)??this.floor)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(ar(e,t))??this.floor}baseFor(e,t=new Set,r){let o=new Set,i=new Map;for(let s of e)for(let a of s.primitives)if(a.op==="add-node"&&o.add(a.node.id),!(a.op!=="patch-node"||o.has(a.id)||t.has(a.id)))for(let d of Object.keys(a.after)){let u=ar(a.id,d);t.has(u)||i.has(u)||r?.(a.id,d)||i.set(u,{node:a.id,field:d,rev:this.of(a.id,d)})}return[...i.values()]}stale(e){return e.filter(t=>this.of(t.node,t.field)>t.rev)}};function Np(n){let e=new Set;for(let t of n)for(let r of t.primitives){r.op==="add-node"&&e.add(r.node.id);for(let[o,i]of ui(r))e.add(ar(o,i))}return e}var PS=Symbol.for("@graview/core:collaborative"),ES=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0;var Ip=/^#([0-9a-f]{3,8})$/i,Tp=/(rgba?|hsla?)\(([^)]+)\)/gi;function jp(n){let e=Ip.exec(n.trim());if(!e)return null;let t=e[1];if((t.length===3||t.length===4)&&(t=[...t].map(i=>i+i).join("")),t.length!==6&&t.length!==8)return null;let r=Number.parseInt(t.slice(0,6),16),o=t.length===8?Number.parseInt(t.slice(6,8),16)/255:1;return{r:r>>16&255,g:r>>8&255,b:r&255,a:o}}function Dp(n){let e=n.slice(0,n.indexOf("(")).toLowerCase(),r=n.slice(n.indexOf("(")+1,n.lastIndexOf(")")).split(/[,\s/]+/).filter(Boolean).map(d=>d.endsWith("%")?Number.parseFloat(d)/100:Number.parseFloat(d));if(r.some(Number.isNaN))return null;if(e.startsWith("rgb")){let[d,u,l,f]=r;return d===void 0||u===void 0||l===void 0?null:{r:d,g:u,b:l,a:f??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...xc(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function on(n){let e=n.r/255,t=n.g/255,r=n.b/255,o=Math.max(e,t,r),i=Math.min(e,t,r),s=(o+i)/2;if(o===i)return{h:0,s:0,l:s};let a=o-i,d=a/(1-Math.abs(2*s-1));return{h:((o===e?60*((t-r)/a%6):o===t?60*((r-e)/a+2):60*((e-t)/a+4))+360)%360,s:d,l:s}}function Ae(n,e,t){return{...xc(n,e,t),a:1}}function xc(n,e,t){let r=(1-Math.abs(2*t-1))*e,o=(n%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),[s,a,d]=o<1?[r,i,0]:o<2?[i,r,0]:o<3?[0,r,i]:o<4?[0,i,r]:o<5?[i,0,r]:[r,0,i],u=t-r/2;return{r:Math.round((s+u)*255),g:Math.round((a+u)*255),b:Math.round((d+u)*255)}}function te(n){let e=[];for(let t of n.matchAll(Tp)){let r=Dp(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=jp(t[0]);r&&e.push(r)}return e}function sn(n,e){let t=n.a+e.a*(1-n.a);if(t===0)return{r:0,g:0,b:0,a:0};let r=(o,i)=>(o*n.a+i*e.a*(1-n.a))/t;return{r:r(n.r,e.r),g:r(n.g,e.g),b:r(n.b,e.b),a:t}}function fi(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function wc(n){return .2126*fi(n.r)+.7152*fi(n.g)+.0722*fi(n.b)}function ge(n,e){let[t,r]=[wc(n),wc(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}var dr=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,kc={r:0,g:0,b:0,a:1},cr={r:255,g:255,b:255,a:1};function lr(n){let e=te(n.accent)[0];if(!e)return{ok:!1,missing:["accent"],why:`"${n.accent}" is not a color this can read. Use a hex, rgb() or hsl() value.`};let t={},r=new Set,o=[],i=on(e);for(let s of["dark","light"]){let a=n.base[s],d=te(a.ground)[0]??(s==="dark"?kc:cr),u=sn(te(a.panel)[0]??cr,d),l=Zp(i,[u,d],s,4.5);l?Math.abs(l.l-i.l)>Lp&&(r.add(`accent (${s})`),o.push(`reaching 4.5:1 on the ${s} panel would move the accent's lightness by ${Math.round(Math.abs(l.l-i.l)*100)} points, which is far enough that it stops being the same color \u2014 supply one for ${s}`)):(r.add(`accent (${s})`),o.push(`no lightness of this hue clears 4.5:1 as text on the ${s} panel, so ${s} needs an accent of its own`));let f=l??i,c=Ae(f.h,f.s,f.l),p=n.accentInk?.[s]??(ge(cr,c)>=ge(kc,c)?"#ffffff":"#000000"),g=ge(te(p)[0]??cr,c);g+.005<4.5&&(r.add(`accentInk (${s})`),o.push(`neither black nor white clears 4.5:1 on the accent (best ${g.toFixed(2)}:1), so text on a filled button has to be given`)),t[s]={...a,accent:dr(c,1),accentDim:dr(c,s==="dark"?.35:.22),accentInk:p,glow:dr(c,s==="dark"?.28:.1),edgeBright:dr(c,pi(c,u,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let h=te(t[s].warn)[0];h&&Fp(on(h).h,f.h)<25&&(r.add(`warn (${s})`),o.push(`the warning color shares the accent's hue in ${s}, so "something is broken" looks like "this is selected"`))}return r.size>0?{ok:!1,missing:[...r].sort(),why:o.join("; ")}:{ok:!0,schemes:t}}function pi(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(ge(sn({...n,a:i},e),e)>=r)return i}return 1}function Fp(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var Lp=.3;function Zp(n,e,t,r){let o=t==="dark";for(let i=0;i<=100;i++){let s=o?n.l+i/100:n.l-i/100,a=o?n.l-i/100:n.l+i/100;for(let d of[s,a])if(!(d<0||d>1)&&e.every(u=>ge(Ae(n.h,n.s,d),u)>=r))return{...n,l:d}}return null}function Cp(n,e){let t=e?.[n];if(t!==void 0)return(t%360+360)%360;let r=2166136261;for(let o=0;o<n.length;o++)r^=n.charCodeAt(o),r=Math.imul(r,16777619);return(r>>>0)%360}var an=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),hi="Montserrat",gi=Object.freeze({display:550,body:450,label:600}),mi=Object.freeze({display:600,body:400,label:600}),Gp="-0.025em",Kp=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var Sc={ground:"#0a0f1f",groundDeep:"#060914",wash:"none",panel:"rgba(19, 27, 52, 0.96)",panelMuted:"rgba(14, 21, 42, 0.94)",panelWarning:"rgba(48, 33, 18, 0.95)",edge:"rgba(164, 178, 222, 0.18)",edgeBright:"rgba(154, 171, 255, 0.6)",ink:"#eef0f6",inkMuted:"#aab2c6",inkFaint:"#97a0b6",accent:"#9aabff",accentDim:"rgba(154, 171, 255, 0.32)",accentInk:an.navy,warn:"#f0a868",good:"#8fdcaa",bad:"#ffa3a3",glow:"rgba(154, 171, 255, 0.18)",bar:"rgba(10, 15, 31, 0.96)",float:"rgba(16, 23, 45, 0.98)",liftLow:"0 14px 36px -22px #000",liftHigh:"0 28px 64px -30px #000",tintAlpha:.2,tintLightness:52,gridAlpha:.35},Rc={ground:an.paper,groundDeep:"#efefe8",wash:"none",panel:"#ffffff",panelMuted:"#fafaf6",panelWarning:"#fdf4ea",edge:"rgba(24, 33, 58, 0.12)",edgeBright:"rgba(0, 23, 105, 0.6)",ink:an.ink,inkMuted:an.muted,inkFaint:"#626b7d",accent:an.navy,accentDim:"rgba(0, 23, 105, 0.16)",accentInk:"#ffffff",warn:"#9a5312",good:"#1b6436",bad:"#a1232d",glow:"rgba(0, 23, 105, 0.08)",bar:"rgba(255, 255, 255, 0.96)",float:"#ffffff",liftLow:"0 1px 2px rgba(24,33,58,0.06), 0 8px 24px -12px rgba(24,33,58,0.16)",liftHigh:"0 2px 6px rgba(24,33,58,0.08), 0 24px 56px -24px rgba(24,33,58,0.26)",tintAlpha:.16,tintLightness:46,gridAlpha:.5},Fe={dark:Sc,light:Rc};var Le=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),dn=Object.freeze({body:`"${hi}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function Bp(n){let e=n?.shape?.radius??Le.radius,t=n?.shape?.density??Le.density;return Object.freeze({radius:e,radiusSmall:Math.max(Le.radiusSmallFloor,Math.round(e*Le.radiusSmall)),pad:Math.round(Le.pad*t),padSmall:Math.round(Le.padSmall*t),gap:Math.round(Le.gap*t)})}function Vp(n){let e=n?.typography?.body??dn.body,t=n?.typography?.display??e,o=e===dn.body&&t===dn.body?gi:mi,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??dn.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var ZS=Object.freeze({light:Object.freeze({roof:Object.freeze({saturation:48,lightness:82}),right:Object.freeze({saturation:40,lightness:66}),left:Object.freeze({saturation:34,lightness:55}),roofEdge:"rgba(255,255,255,0.75)",plot:Object.freeze({saturation:45,lightness:58,alpha:.12}),plotEdge:Object.freeze({saturation:40,lightness:48,alpha:.55})}),dark:Object.freeze({roof:Object.freeze({saturation:42,lightness:32}),right:Object.freeze({saturation:40,lightness:21}),left:Object.freeze({saturation:38,lightness:13}),roofEdge:"rgba(255,255,255,0.14)",plot:Object.freeze({saturation:45,lightness:48,alpha:.2}),plotEdge:Object.freeze({saturation:40,lightness:62,alpha:.55})})});function Ac(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var _c="http://www.w3.org/2000/svg",Up=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",_c],Wp=new Set("svg g defs symbol use title desc path rect circle ellipse line polyline polygon text tspan textPath linearGradient radialGradient stop pattern clipPath mask marker image filter feBlend feColorMatrix feComponentTransfer feComposite feDropShadow feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feMerge feMergeNode feMorphology feOffset feTile feTurbulence".split(" ")),qp=new Set(["title","desc"]),ht="it embeds a page or media",Hp={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:ht,embed:ht,object:ht,audio:ht,video:ht,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},Yp={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function Jp(n){let e=!1,t=n.replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);?/gi,(r,o)=>{if(o[0]==="#"){let s=o[1]==="x"||o[1]==="X"?parseInt(o.slice(2),16):parseInt(o.slice(1),10);return s>0&&s<=1114111?String.fromCodePoint(s):"\uFFFD"}let i=Yp[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function Xp(n){if(/\\|@|expression\s*\(|(?:image-set|cross-fade|image|element|src)\s*\(/i.test(n))return!1;for(let[,e]of n.matchAll(/url\s*\(\s*["']?\s*([^)]*)/gi))if(!e.startsWith("#"))return!1;return!0}function Qp(n,e,t){let r=Jp(t);if(r===null)return"it declares XML entities";let o=(e.includes(":")?e.slice(e.indexOf(":")+1):e).toLowerCase();if(o.startsWith("on"))return"it has an event handler (an on\u2026 attribute)";if(e==="xml:base")return"it loads or links to something outside itself";if(e==="xmlns")return r===_c?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return Up.includes(r)?"it changes what its elements are (another xmlns)":null;if(o==="href"||o==="src"){let i=r.replace(/[\u0000- ]+/g,"");return i.startsWith("#")||n==="image"&&/^data:image\/(png|jpe?g|gif|webp|avif);/i.test(i)?null:"it loads or links to something outside itself"}return Xp(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var $c=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function Oc(n){if(/<!ENTITY/i.test(n))return"it declares XML entities";if(/<!\[CDATA\[/i.test(n))return"it has a CDATA section, which the page and the picture read differently";let e=[],t=!1,r=/^\s*(<\?xml\s[^?<>]*\?>)?/.exec(n)[0].length;for(;r<n.length;){let o=n.slice(r),i=/^[^<]+/.exec(o);if(i){if(e.length===0&&i[0].trim()!=="")return"it is not one SVG: there is text outside it";r+=i[0].length;continue}if(o.startsWith("<!--")){let p=o.indexOf("-->",4);if(p<0)return"it has a comment that never ends";let g=o.slice(4,p);if(/^-?>/.test(g)||g.includes("--")||g.includes("<!")||g.endsWith("-"))return"it has a comment the page and the picture read differently";r+=p+3;continue}if(/^<!DOCTYPE/i.test(o)){let p=/^<!DOCTYPE\s+svg\b[^<>[\]]*>/i.exec(o);if(!p||e.length>0||t)return"it declares XML entities";r+=p[0].length;continue}let s=/^<\/([A-Za-z][A-Za-z0-9_.:-]*)\s*>/.exec(o);if(s){if(e.pop()!==s[1])return`it is not one SVG: </${s[1]}> closes what is not open`;e.length===0&&(t=!0),r+=s[0].length;continue}let a=/^<([A-Za-z][A-Za-z0-9_.:-]*)/.exec(o);if(!a)return"it is not one SVG: it has markup a picture cannot hold";let d=a[1],u=Hp[d.toLowerCase()];if(u)return u;if(t)return`it is not one SVG: <${d}> comes after it ends`;if(e.length===0&&d!=="svg")return"it is not one SVG";if(d.includes(":"))return`it has an element of another kind (<${d}>)`;if(!Wp.has(d))return`it has a <${d}> element, which a picture does not need`;let l=e[e.length-1];if(l&&qp.has(l))return`it has an element inside a <${l}>, which the page reads as HTML`;let f=a[0].length;for(let p=$c.exec(o.slice(f));p;p=$c.exec(o.slice(f))){let g=Qp(d,p[1],p[2]??p[3]??"");if(g)return g;f+=p[0].length}let c=/^\s*(\/?)>/.exec(o.slice(f));if(!c)return/(?:^|[\s/"'])on[a-z]+\s*=/i.test(o.slice(f,f+400))?"it has an event handler (an on\u2026 attribute)":`it is not one SVG: <${d}>'s attributes are not each quoted and apart`;c[1]!=="/"?e.push(d):e.length===0&&(t=!0),r+=f+c[0].length}return e.length>0?`it is not one SVG: <${e[e.length-1]}> is never closed`:t?null:"it is not one SVG"}function Pc(n){if(n){if(!Ac(n)){if(/^\s*</.test(n))return;let e=/^\s*([a-z][a-z0-9+.-]*):/i.exec(n)?.[1]?.toLowerCase();return e===void 0||e==="http"||e==="https"||e==="data"&&/^\s*data:image\//i.test(n)?n:void 0}return Oc(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}var ur;function eh(){if(ur===void 0)try{ur=new RegExp("^\\p{RGI_Emoji}$","v")}catch{ur=null}return ur}function nh(n){return/\p{Extended_Pictographic}|\p{Regional_Indicator}|⃣/u.test(n)}function yi(n){if(typeof n!="string"||n.trim()==="")return"it is empty; give one emoji, like \u{1F3E1}";let e=[...new Intl.Segmenter("en",{granularity:"grapheme"}).segment(n)].map(o=>o.segment),t=e.filter(nh).length;if(t===0)return"it is not an emoji; give one emoji, like \u{1F3E1}";if(e.length>1)return t===e.length?`it is ${e.length} emoji, and a mark is one`:"it has other characters beside the emoji; give the emoji alone";let r=eh();return r&&!r.test(n)?"it is not one of the standard emoji every emoji set draws":null}function bi(n){return typeof n=="object"&&n!==null&&typeof n.emoji=="string"?n.emoji:void 0}function Ec(n){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text x="50" y="50" dy=".35em" font-size="88" text-anchor="middle">${n}</text></svg>`}function th(n){let e=n?.favicon;if(typeof e=="object"&&e!==null){let t=bi(e);return t!==void 0&&yi(t)===null?`data:image/svg+xml,${encodeURIComponent(Ec(t))}`:void 0}return Pc(e)}function rh(n){let e=n?.logo;return typeof e=="string"?e===""?void 0:{light:e}:e&&typeof e.light=="string"&&e.light!==""?e:void 0}function oh(n){if(n?.logo)return;let e=bi(n?.favicon);return e!==void 0&&yi(e)===null?e:void 0}var Mc={"system-sans":'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',"system-serif":'ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, Cambria, "Times New Roman", serif',"system-mono":dn.mono},ih=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],zc=["Georgia","Times New Roman","Times","Iowan Old Style","Palatino","Palatino Linotype","Charter","Cambria","Baskerville","Optima","Helvetica","Helvetica Neue","Arial","Verdana","Segoe UI","Roboto","Avenir","Avenir Next","Gill Sans","Menlo","Monaco","Consolas","SF Mono","SFMono-Regular","Courier New"];var sh=n=>new Set(n.map(e=>e.toLowerCase()));function ah(n){return sh([...ih,...zc]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function dh(n){return Mc[n]??n}function BS(n){if(/url\(|@import|[;{}<>\\]|\/\*|[\u0000-\u001f\u007f]/i.test(n))return"it is not a list of font names; a document names a face, never where one comes from";for(let e of n.split(",")){let t=e.trim();if(!(/^"[^"']*"$/.test(t)||/^'[^"']*'$/.test(t))&&/["']/.test(t))return`${t} is not quoted in one pair; write a face as Georgia or "Times New Roman"`}return null}var wi={r:255,g:255,b:255,a:1},Ic={r:0,g:0,b:0,a:1},zn=n=>`#${[n.r,n.g,n.b].map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0")).join("")}`,Ze=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,vi=(n,e,t)=>({r:n.r+(e.r-n.r)*t,g:n.g+(e.g-n.g)*t,b:n.b+(e.b-n.b)*t,a:1});function ch(n){return typeof n=="string"?{light:n}:{...n.light?{light:n.light}:{},...n.dark?{dark:n.dark}:{}}}function lh(n){let e=te(n)[0];if(!e)return;let{h:t,s:r}=on(e);return zn(Ae(t,Math.min(r,.45),.08))}function uh(n){return ge(wi,n)>ge(Ic,n)}function Tc(n,e){let t=te(n.edgeBright)[0];return Ze(t,pi({...t,a:1},e,t.a,3))}function fh(n,e,t){let{h:r,s:o}=on(t),i=vi(t,wi,.8);return{...n,ground:e,groundDeep:zn(vi(t,Ic,.04)),panel:zn(i),panelMuted:zn(vi(t,wi,.55)),edge:Ze(Ae(r,Math.min(o,.5),.14),.14),edgeBright:Tc(n,i),bar:Ze(i,.96),float:zn(i)}}function Nc(n,e,t){let{h:r,s:o,l:i}=on(t),s=a=>Ae(r,o,Math.min(1,i+a));return{...n,ground:e,groundDeep:zn(Ae(r,o,i*.6)),panel:Ze(s(.07),.96),panelMuted:Ze(s(.035),.94),edge:Ze(Ae(r,Math.min(o,.45),.75),.18),edgeBright:Tc(n,sn({...s(.07),a:.96},t)),bar:Ze(t,.96),float:Ze(s(.05),.98)}}function jc(n){if(n===void 0)return Fe;let e=ch(n),t=e.dark??(e.light?lh(e.light):void 0),r=e.light?te(e.light)[0]:void 0,o=t?te(t)[0]:void 0;return{light:r?uh(r)?Nc(Fe.dark,e.light,r):fh(Fe.light,e.light,r):Fe.light,dark:o?Nc(Fe.dark,t,o):Fe.dark}}var ph=[["ink","ink",["ground","panel","panelMuted","panelWarning","float","bar"],4.5],["inkMuted","muted ink",["ground","panel","panelMuted","float","bar"],4.5],["inkFaint","faint ink",["panel","panelMuted","float"],4.5],["accent","the accent",["ground","panel","float"],4.5],["warn","the warning color",["panel","panelWarning","float"],4.5],["good","the good status",["ground","panel"],4.5],["bad","the bad status",["ground","panel"],4.5],["edgeBright","the lit edge",["panel"],3]],hh={panel:"a card",panelMuted:"a receded card",panelWarning:"a flagged card",float:"a floating sheet",bar:"the bar"};function HS(n,e){for(let t of["light","dark"]){let r={...n[t],...t==="light"&&e?{accent:e}:{}},o=te(r.ground)[0];for(let[i,s,a,d]of ph)for(let u of a){let l=u==="ground"?[o]:te(String(r[u])).map(f=>sn(f,o));for(let f of l){let c=sn(te(String(r[i]))[0],f),p=ge(c,f);if(p<d)return{scheme:t,what:s,text:c,ground:o,...u==="ground"?{}:{card:f,surface:hh[u]},ratio:p,requires:d}}}}return null}function QS(n,e){let t=jc(e),r=lr({accent:n,base:t});return r.ok||!r.missing.every(o=>o.startsWith("warn"))?r:lr({accent:n,base:t,warn:{light:t.light.bad,dark:t.dark.bad}})}function gh(n,e,t){if(t.rows===0)return;let r=ae(n,e.rows).toLowerCase(),o=ae(n,e.columns).toLowerCase(),i=e.rows===e.columns,s=i?`link ${r} to each other`:`link ${r} to ${o}`;if(t.columns===0)return`No ${o} yet: ${s}.`;if(t.cells>0||typeof e.link=="object"&&e.link!==null)return;let a=Y(n.tryDefinition(e.rows),e.rows);return i?`No ${a} is linked to another yet: ${s}.`:`No ${a} is linked to ${pn(Y(n.tryDefinition(e.columns),e.columns))} yet: ${s}.`}function mh(n,e){let t=o=>o?._zod?.def,r={};for(let o of new Set(e)){let i=n.tryDefinition(o),s=i?.fields?.shape??{};for(let[a,d]of Object.entries(s)){let u=t(d);for(let f=0;f<6&&u?.innerType!==void 0&&u.type!=="enum";f++)u=t(u.innerType);if(u?.type==="array"&&(u=t(u.element)),u?.type!=="enum"||!u.entries)continue;let l=i?.display?.format?.[a];(r[o]??={})[a]=Object.fromEntries(Object.values(u.entries).map(f=>[String(f),l?l(f):K(String(f))]))}}return r}var me={connectors:{all:{route:"curve",visible:!0},byEdge:{}},captions:{visible:!0},grid:{visible:!0,size:64},lattice:{visible:!0,size:46},tags:{visible:!0},emphasis:{rest:.34,dim:.12},marks:{flag:"\u26A0"}};function yh(n){return n?{connectors:{all:{...me.connectors.all,...n.connectors?.all??{}},byEdge:{...me.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...me.captions,...n.captions??{}},grid:{...me.grid,...n.grid??{}},lattice:{...me.lattice,...n.lattice??{}},tags:{...me.tags,...n.tags??{}},emphasis:{...me.emphasis,...n.emphasis??{}},marks:{...me.marks,...n.marks??{}}}:me}function bh(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function vh(n){return[` --graview-kit-grid: ${n.grid.visible?1:0};`,` --graview-kit-grid-size: ${n.grid.size}px;`,` --graview-kit-lattice: ${n.lattice.visible?1:0};`,` --graview-kit-lattice-size: ${n.lattice.size}px;`,` --graview-kit-tags: ${n.tags.visible?"inline-flex":"none"};`,` --graview-kit-captions: ${n.captions.visible?"block":"none"};`,` --graview-kit-rest: ${n.emphasis.rest};`,` --graview-kit-dim: ${n.emphasis.dim};`,` --graview-kit-flag: "${n.marks.flag.replace(/"/g,"'")}";`].join(`
|
|
5
|
-
`)}var Dc=n=>n?.kind==="visitor"||n?.onBehalfOf?.kind==="visitor",fr=new WeakMap;function wh(n,e){e?fr.set(n,e):fr.delete(n)}function xh(n,e,t){if(!n||Dc(t))return;let r=fr.get(n)??fr.get(ki(n)?.store??{});if(r)try{r(e,t)}catch{}}function kh(n,e,t){let r=new Set([e]);for(let[o,i]of t.entries()){let s=n.edge(i);if(!s)return{ok:!1,at:o};let a=s.from,d=s.to==="*"?n.kinds:s.to,u=new Set;for(let l of r){if(a.includes(l))for(let f of d)u.add(f);if(s.to==="*"||d.includes(l))for(let f of a)u.add(f)}if(u.size===0)return{ok:!1,at:o};r=u}return{ok:!0,reached:r}}var Fc="graview:fresh";function Sh(n,e){let t=new URL(n),r="1";try{let o=Array.from(crypto.getRandomValues(new Uint8Array(16)),i=>i.toString(16).padStart(2,"0")).join("");(e??globalThis.sessionStorage).setItem(Fc,o),r=o}catch{}return t.searchParams.set("fresh",r),t.toString()}export{mn as a,Qs as b,ea as c,Tl as d,Yr as e,Kn as f,Bn as g,L as h,Dy as i,Fy as j,We as k,Ly as l,Zy as m,Cy as n,Jr as o,Gy as p,ze as q,yn as r,Ky as s,By as t,Vy as u,ca as v,la as w,Q as x,Uy as y,Ot as z,Wy as A,qy as B,D as C,eu as D,br as E,mt as F,Si as G,vr as H,yt as I,Rh as J,ne as K,Lc as L,Zc as M,Ri as N,vt as O,Cc as P,Pe as Q,wr as R,$i as S,xr as T,Bc as U,Vc as V,ye as W,Uc as X,Wc as Y,Oi as Z,qc as _,Hc as $,fn as aa,Pi as ba,Ei as ca,K as da,Jc as ea,Sr as fa,B as ga,Xc as ha,Qc as ia,ae as ja,el as ka,nl as la,xt as ma,pn as na,Y as oa,nu as pa,Pt as qa,eo as ra,ua as sa,fa as ta,pa as ua,tu as va,Vn as wa,ga as xa,Hb as ya,Mt as za,vc as Aa,SS as Ba,au as Ca,cu as Da,ba as Ea,lu as Fa,Qb as Ga,Un as Ha,uu as Ia,pu as Ja,ev as Ka,nv as La,hu as Ma,wa as Na,Ep as Oa,zt as Pa,gu as Qa,vn as Ra,qn as Sa,Nt as Ta,ov as Ua,wn as Va,bn as Wa,_a as Xa,bu as Ya,oo as Za,Hn as _a,xn as $a,qe as ab,lv as bb,io as cb,Tt as db,wu as eb,de as fb,N as gb,Xn as hb,z as ib,W as jb,ee as kb,Ru as lb,Lt as mb,Nv as nb,$u as ob,Au as pb,zp as qb,T as rb,V as sb,ke as tb,Se as ub,Ct as vb,ie as wb,Uv as xb,Fa as yb,Sn as zb,j as Ab,Rn as Bb,Je as Cb,se as Db,Mu as Eb,he as Fb,en as Gb,rt as Hb,id as Ib,sd as Jb,le as Kb,bf as Lb,Lo as Mb,Ed as Nb,On as Ob,Co as Pb,ux as Qb,Go as Rb,Id as Sb,Td as Tb,Ko as Ub,je as Vb,ot as Wb,it as Xb,Af as Yb,jd as Zb,fw as _b,Ua as $b,pw as ac,hw as bc,Of as cc,Mf as dc,Uo as ec,Wo as fc,qo as gc,dt as hc,Vd as ic,Jt as jc,jf as kc,Xt as lc,Qe as mc,li as nc,Np as oc,ct as pc,Pn as qc,PS as rc,ES as sc,Kt as tc,$o as uc,_o as vc,Ja as wc,ju as xc,Xa as yc,Cu as zc,Cp as Ac,hi as Bc,Gp as Cc,Fe as Dc,dn as Ec,Bp as Fc,Vp as Gc,Ac as Hc,Oc as Ic,Pc as Jc,th as Kc,rh as Lc,oh as Mc,ah as Nc,dh as Oc,BS as Pc,jc as Qc,HS as Rc,QS as Sc,si as Tc,cp as Uc,gh as Vc,mh as Wc,yh as Xc,bh as Yc,vh as Zc,Gu as _c,Ku as $c,Bu as ad,Vu as bd,tt as cd,nn as dd,st as ed,Ut as fd,Re as gd,uf as hd,Uu as id,Wu as jd,Dc as kd,wh as ld,xh as md,kh as nd,Wf as od,qf as pd,Ad as qd,Hf as rd,cc as sd,En as td,ri as ud,Qf as vd,ep as wd,np as xd,lc as yd,ii as zd,tp as Ad,rp as Bd,$e as Cd,ft as Dd,op as Ed,ip as Fd,uc as Gd,sp as Hd,ap as Id,fc as Jd,pt as Kd,lp as Ld,hc as Md,gc as Nd,fp as Od,pp as Pd,hp as Qd,gp as Rd,mc as Sd,mp as Td,yp as Ud,bp as Vd,vp as Wd,wp as Xd,xp as Yd,di as Zd,kp as _d,Sp as $d,Rp as ae,$p as be,Ap as ce,_p as de,Op as ee,Sh as fe};
|