@budibase/pro 3.20.8 → 3.20.10

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.js CHANGED
@@ -1,31 +1,31 @@
1
- "use strict";var xI=Object.create;var Dr=Object.defineProperty;var CI=Object.getOwnPropertyDescriptor;var OI=Object.getOwnPropertyNames;var LI=Object.getPrototypeOf,PI=Object.prototype.hasOwnProperty;var a=(e,t)=>Dr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Dr(e,r,{get:t[r],enumerable:!0})},Hu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of OI(t))!PI.call(e,o)&&o!==r&&Dr(e,o,{get:()=>t[o],enumerable:!(n=CI(t,o))||n.enumerable});return e};var F=(e,t,r)=>(r=e!=null?xI(LI(e)):{},Hu(t||!e||!e.__esModule?Dr(r,"default",{value:e,enumerable:!0}):r,e)),UI=e=>Hu(Dr({},"__esModule",{value:!0}),e);var dn=p((wG,Uc)=>{"use strict";function OS(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}a(OS,"arrayPush");Uc.exports=OS});var jo=p((EG,qc)=>{"use strict";var LS=typeof global=="object"&&global&&global.Object===Object&&global;qc.exports=LS});var _e=p((RG,Dc)=>{"use strict";var PS=jo(),US=typeof self=="object"&&self&&self.Object===Object&&self,qS=PS||US||Function("return this")();Dc.exports=qS});var Qt=p((vG,kc)=>{"use strict";var DS=_e(),kS=DS.Symbol;kc.exports=kS});var Gc=p((_G,Bc)=>{"use strict";var Mc=Qt(),Nc=Object.prototype,MS=Nc.hasOwnProperty,NS=Nc.toString,ca=Mc?Mc.toStringTag:void 0;function BS(e){var t=MS.call(e,ca),r=e[ca];try{e[ca]=void 0;var n=!0}catch{}var o=NS.call(e);return n&&(t?e[ca]=r:delete e[ca]),o}a(BS,"getRawTag");Bc.exports=BS});var Wc=p((CG,Fc)=>{"use strict";var GS=Object.prototype,FS=GS.toString;function WS(e){return FS.call(e)}a(WS,"objectToString");Fc.exports=WS});var Pt=p((LG,Qc)=>{"use strict";var $c=Qt(),$S=Gc(),jS=Wc(),QS="[object Null]",KS="[object Undefined]",jc=$c?$c.toStringTag:void 0;function VS(e){return e==null?e===void 0?KS:QS:jc&&jc in Object(e)?$S(e):jS(e)}a(VS,"baseGetTag");Qc.exports=VS});var ke=p((UG,Kc)=>{"use strict";function HS(e){return e!=null&&typeof e=="object"}a(HS,"isObjectLike");Kc.exports=HS});var Hc=p((DG,Vc)=>{"use strict";var YS=Pt(),zS=ke(),JS="[object Arguments]";function XS(e){return zS(e)&&YS(e)==JS}a(XS,"baseIsArguments");Vc.exports=XS});var pa=p((MG,Jc)=>{"use strict";var Yc=Hc(),ZS=ke(),zc=Object.prototype,ew=zc.hasOwnProperty,tw=zc.propertyIsEnumerable,rw=Yc(function(){return arguments}())?Yc:function(e){return ZS(e)&&ew.call(e,"callee")&&!tw.call(e,"callee")};Jc.exports=rw});var Ee=p((NG,Xc)=>{"use strict";var aw=Array.isArray;Xc.exports=aw});var rp=p((BG,tp)=>{"use strict";var Zc=Qt(),nw=pa(),ow=Ee(),ep=Zc?Zc.isConcatSpreadable:void 0;function sw(e){return ow(e)||nw(e)||!!(ep&&e&&e[ep])}a(sw,"isFlattenable");tp.exports=sw});var Qo=p((FG,np)=>{"use strict";var iw=dn(),uw=rp();function ap(e,t,r,n,o){var s=-1,i=e.length;for(r||(r=uw),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?ap(u,t-1,r,n,o):iw(o,u):n||(o[o.length]=u)}return o}a(ap,"baseFlatten");np.exports=ap});var la=p(($G,op)=>{"use strict";function cw(e){return e}a(cw,"identity");op.exports=cw});var fn=p((QG,sp)=>{"use strict";function pw(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}a(pw,"apply");sp.exports=pw});var Ko=p((VG,up)=>{"use strict";var lw=fn(),ip=Math.max;function dw(e,t,r){return t=ip(t===void 0?e.length-1:t,0),function(){for(var n=arguments,o=-1,s=ip(n.length-t,0),i=Array(s);++o<s;)i[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(i),lw(e,this,u)}}a(dw,"overRest");up.exports=dw});var pp=p((YG,cp)=>{"use strict";function fw(e){return function(){return e}}a(fw,"constant");cp.exports=fw});var je=p((JG,lp)=>{"use strict";function mw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}a(mw,"isObject");lp.exports=mw});var da=p((ZG,dp)=>{"use strict";var gw=Pt(),hw=je(),yw="[object AsyncFunction]",Aw="[object Function]",bw="[object GeneratorFunction]",Iw="[object Proxy]";function Sw(e){if(!hw(e))return!1;var t=gw(e);return t==Aw||t==bw||t==yw||t==Iw}a(Sw,"isFunction");dp.exports=Sw});var mp=p((tF,fp)=>{"use strict";var ww=_e(),Tw=ww["__core-js_shared__"];fp.exports=Tw});var yp=p((rF,hp)=>{"use strict";var Vo=mp(),gp=function(){var e=/[^.]+$/.exec(Vo&&Vo.keys&&Vo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ew(e){return!!gp&&gp in e}a(Ew,"isMasked");hp.exports=Ew});var Ho=p((nF,Ap)=>{"use strict";var Rw=Function.prototype,vw=Rw.toString;function _w(e){if(e!=null){try{return vw.call(e)}catch{}try{return e+""}catch{}}return""}a(_w,"toSource");Ap.exports=_w});var Ip=p((sF,bp)=>{"use strict";var xw=da(),Cw=yp(),Ow=je(),Lw=Ho(),Pw=/[\\^$.*+?()[\]{}|]/g,Uw=/^\[object .+?Constructor\]$/,qw=Function.prototype,Dw=Object.prototype,kw=qw.toString,Mw=Dw.hasOwnProperty,Nw=RegExp("^"+kw.call(Mw).replace(Pw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Bw(e){if(!Ow(e)||Cw(e))return!1;var t=xw(e)?Nw:Uw;return t.test(Lw(e))}a(Bw,"baseIsNative");bp.exports=Bw});var wp=p((uF,Sp)=>{"use strict";function Gw(e,t){return e?.[t]}a(Gw,"getValue");Sp.exports=Gw});var Ut=p((pF,Tp)=>{"use strict";var Fw=Ip(),Ww=wp();function $w(e,t){var r=Ww(e,t);return Fw(r)?r:void 0}a($w,"getNative");Tp.exports=$w});var Yo=p((dF,Ep)=>{"use strict";var jw=Ut(),Qw=function(){try{var e=jw(Object,"defineProperty");return e({},"",{}),e}catch{}}();Ep.exports=Qw});var _p=p((fF,vp)=>{"use strict";var Kw=pp(),Rp=Yo(),Vw=la(),Hw=Rp?function(e,t){return Rp(e,"toString",{configurable:!0,enumerable:!1,value:Kw(t),writable:!0})}:Vw;vp.exports=Hw});var zo=p((mF,xp)=>{"use strict";var Yw=800,zw=16,Jw=Date.now;function Xw(e){var t=0,r=0;return function(){var n=Jw(),o=zw-(n-r);if(r=n,o>0){if(++t>=Yw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}a(Xw,"shortOut");xp.exports=Xw});var mn=p((hF,Cp)=>{"use strict";var Zw=_p(),eT=zo(),tT=eT(Zw);Cp.exports=tT});var Jo=p((yF,Op)=>{"use strict";var rT=la(),aT=Ko(),nT=mn();function oT(e,t){return nT(aT(e,t,rT),e+"")}a(oT,"baseRest");Op.exports=oT});var fa=p((bF,Lp)=>{"use strict";var sT=Ut(),iT=sT(Object,"create");Lp.exports=iT});var qp=p((IF,Up)=>{"use strict";var Pp=fa();function uT(){this.__data__=Pp?Pp(null):{},this.size=0}a(uT,"hashClear");Up.exports=uT});var kp=p((wF,Dp)=>{"use strict";function cT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}a(cT,"hashDelete");Dp.exports=cT});var Np=p((EF,Mp)=>{"use strict";var pT=fa(),lT="__lodash_hash_undefined__",dT=Object.prototype,fT=dT.hasOwnProperty;function mT(e){var t=this.__data__;if(pT){var r=t[e];return r===lT?void 0:r}return fT.call(t,e)?t[e]:void 0}a(mT,"hashGet");Mp.exports=mT});var Gp=p((vF,Bp)=>{"use strict";var gT=fa(),hT=Object.prototype,yT=hT.hasOwnProperty;function AT(e){var t=this.__data__;return gT?t[e]!==void 0:yT.call(t,e)}a(AT,"hashHas");Bp.exports=AT});var Wp=p((xF,Fp)=>{"use strict";var bT=fa(),IT="__lodash_hash_undefined__";function ST(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=bT&&t===void 0?IT:t,this}a(ST,"hashSet");Fp.exports=ST});var jp=p((OF,$p)=>{"use strict";var wT=qp(),TT=kp(),ET=Np(),RT=Gp(),vT=Wp();function pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(pr,"Hash");pr.prototype.clear=wT;pr.prototype.delete=TT;pr.prototype.get=ET;pr.prototype.has=RT;pr.prototype.set=vT;$p.exports=pr});var Kp=p((PF,Qp)=>{"use strict";function _T(){this.__data__=[],this.size=0}a(_T,"listCacheClear");Qp.exports=_T});var lr=p((qF,Vp)=>{"use strict";function xT(e,t){return e===t||e!==e&&t!==t}a(xT,"eq");Vp.exports=xT});var ma=p((kF,Hp)=>{"use strict";var CT=lr();function OT(e,t){for(var r=e.length;r--;)if(CT(e[r][0],t))return r;return-1}a(OT,"assocIndexOf");Hp.exports=OT});var zp=p((NF,Yp)=>{"use strict";var LT=ma(),PT=Array.prototype,UT=PT.splice;function qT(e){var t=this.__data__,r=LT(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():UT.call(t,r,1),--this.size,!0}a(qT,"listCacheDelete");Yp.exports=qT});var Xp=p((GF,Jp)=>{"use strict";var DT=ma();function kT(e){var t=this.__data__,r=DT(t,e);return r<0?void 0:t[r][1]}a(kT,"listCacheGet");Jp.exports=kT});var el=p((WF,Zp)=>{"use strict";var MT=ma();function NT(e){return MT(this.__data__,e)>-1}a(NT,"listCacheHas");Zp.exports=NT});var rl=p((jF,tl)=>{"use strict";var BT=ma();function GT(e,t){var r=this.__data__,n=BT(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}a(GT,"listCacheSet");tl.exports=GT});var ga=p((KF,al)=>{"use strict";var FT=Kp(),WT=zp(),$T=Xp(),jT=el(),QT=rl();function dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(dr,"ListCache");dr.prototype.clear=FT;dr.prototype.delete=WT;dr.prototype.get=$T;dr.prototype.has=jT;dr.prototype.set=QT;al.exports=dr});var gn=p((HF,nl)=>{"use strict";var KT=Ut(),VT=_e(),HT=KT(VT,"Map");nl.exports=HT});var il=p((YF,sl)=>{"use strict";var ol=jp(),YT=ga(),zT=gn();function JT(){this.size=0,this.__data__={hash:new ol,map:new(zT||YT),string:new ol}}a(JT,"mapCacheClear");sl.exports=JT});var cl=p((JF,ul)=>{"use strict";function XT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}a(XT,"isKeyable");ul.exports=XT});var ha=p((ZF,pl)=>{"use strict";var ZT=cl();function eE(e,t){var r=e.__data__;return ZT(t)?r[typeof t=="string"?"string":"hash"]:r.map}a(eE,"getMapData");pl.exports=eE});var dl=p((t1,ll)=>{"use strict";var tE=ha();function rE(e){var t=tE(this,e).delete(e);return this.size-=t?1:0,t}a(rE,"mapCacheDelete");ll.exports=rE});var ml=p((a1,fl)=>{"use strict";var aE=ha();function nE(e){return aE(this,e).get(e)}a(nE,"mapCacheGet");fl.exports=nE});var hl=p((o1,gl)=>{"use strict";var oE=ha();function sE(e){return oE(this,e).has(e)}a(sE,"mapCacheHas");gl.exports=sE});var Al=p((i1,yl)=>{"use strict";var iE=ha();function uE(e,t){var r=iE(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}a(uE,"mapCacheSet");yl.exports=uE});var hn=p((c1,bl)=>{"use strict";var cE=il(),pE=dl(),lE=ml(),dE=hl(),fE=Al();function fr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(fr,"MapCache");fr.prototype.clear=cE;fr.prototype.delete=pE;fr.prototype.get=lE;fr.prototype.has=dE;fr.prototype.set=fE;bl.exports=fr});var Sl=p((l1,Il)=>{"use strict";var mE="__lodash_hash_undefined__";function gE(e){return this.__data__.set(e,mE),this}a(gE,"setCacheAdd");Il.exports=gE});var Tl=p((f1,wl)=>{"use strict";function hE(e){return this.__data__.has(e)}a(hE,"setCacheHas");wl.exports=hE});var Xo=p((g1,El)=>{"use strict";var yE=hn(),AE=Sl(),bE=Tl();function yn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new yE;++t<r;)this.add(e[t])}a(yn,"SetCache");yn.prototype.add=yn.prototype.push=AE;yn.prototype.has=bE;El.exports=yn});var vl=p((y1,Rl)=>{"use strict";function IE(e,t,r,n){for(var o=e.length,s=r+(n?1:-1);n?s--:++s<o;)if(t(e[s],s,e))return s;return-1}a(IE,"baseFindIndex");Rl.exports=IE});var xl=p((b1,_l)=>{"use strict";function SE(e){return e!==e}a(SE,"baseIsNaN");_l.exports=SE});var Ol=p((S1,Cl)=>{"use strict";function wE(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}a(wE,"strictIndexOf");Cl.exports=wE});var Pl=p((T1,Ll)=>{"use strict";var TE=vl(),EE=xl(),RE=Ol();function vE(e,t,r){return t===t?RE(e,t,r):TE(e,EE,r)}a(vE,"baseIndexOf");Ll.exports=vE});var Zo=p((R1,Ul)=>{"use strict";var _E=Pl();function xE(e,t){var r=e==null?0:e.length;return!!r&&_E(e,t,0)>-1}a(xE,"arrayIncludes");Ul.exports=xE});var Dl=p((_1,ql)=>{"use strict";function CE(e,t,r){for(var n=-1,o=e==null?0:e.length;++n<o;)if(r(t,e[n]))return!0;return!1}a(CE,"arrayIncludesWith");ql.exports=CE});var es=p((C1,kl)=>{"use strict";function OE(e,t){return e.has(t)}a(OE,"cacheHas");kl.exports=OE});var ts=p((L1,Ml)=>{"use strict";var LE=Ut(),PE=_e(),UE=LE(PE,"Set");Ml.exports=UE});var rs=p((P1,Nl)=>{"use strict";function qE(){}a(qE,"noop");Nl.exports=qE});var An=p((q1,Bl)=>{"use strict";function DE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}a(DE,"setToArray");Bl.exports=DE});var Fl=p((k1,Gl)=>{"use strict";var as=ts(),kE=rs(),ME=An(),NE=1/0,BE=as&&1/ME(new as([,-0]))[1]==NE?function(e){return new as(e)}:kE;Gl.exports=BE});var $l=p((M1,Wl)=>{"use strict";var GE=Xo(),FE=Zo(),WE=Dl(),$E=es(),jE=Fl(),QE=An(),KE=200;function VE(e,t,r){var n=-1,o=FE,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=WE;else if(s>=KE){var f=t?null:jE(e);if(f)return QE(f);i=!1,o=$E,c=new GE}else c=t?[]:u;e:for(;++n<s;){var g=e[n],h=t?t(g):g;if(g=r||g!==0?g:0,i&&h===h){for(var y=c.length;y--;)if(c[y]===h)continue e;t&&c.push(h),u.push(g)}else o(c,h,r)||(c!==u&&c.push(h),u.push(g))}return u}a(VE,"baseUniq");Wl.exports=VE});var bn=p((B1,jl)=>{"use strict";var HE=9007199254740991;function YE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=HE}a(YE,"isLength");jl.exports=YE});var mr=p((F1,Ql)=>{"use strict";var zE=da(),JE=bn();function XE(e){return e!=null&&JE(e.length)&&!zE(e)}a(XE,"isArrayLike");Ql.exports=XE});var ns=p(($1,Kl)=>{"use strict";var ZE=mr(),eR=ke();function tR(e){return eR(e)&&ZE(e)}a(tR,"isArrayLikeObject");Kl.exports=tR});var Hl=p((Q1,Vl)=>{"use strict";var rR=Qo(),aR=Jo(),nR=$l(),oR=ns(),sR=aR(function(e){return nR(rR(e,1,oR,!0))});Vl.exports=sR});var zl=p((K1,Yl)=>{"use strict";var iR=ga();function uR(){this.__data__=new iR,this.size=0}a(uR,"stackClear");Yl.exports=uR});var Xl=p((H1,Jl)=>{"use strict";function cR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}a(cR,"stackDelete");Jl.exports=cR});var ed=p((z1,Zl)=>{"use strict";function pR(e){return this.__data__.get(e)}a(pR,"stackGet");Zl.exports=pR});var rd=p((X1,td)=>{"use strict";function lR(e){return this.__data__.has(e)}a(lR,"stackHas");td.exports=lR});var nd=p((eW,ad)=>{"use strict";var dR=ga(),fR=gn(),mR=hn(),gR=200;function hR(e,t){var r=this.__data__;if(r instanceof dR){var n=r.__data__;if(!fR||n.length<gR-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new mR(n)}return r.set(e,t),this.size=r.size,this}a(hR,"stackSet");ad.exports=hR});var ya=p((rW,od)=>{"use strict";var yR=ga(),AR=zl(),bR=Xl(),IR=ed(),SR=rd(),wR=nd();function gr(e){var t=this.__data__=new yR(e);this.size=t.size}a(gr,"Stack");gr.prototype.clear=AR;gr.prototype.delete=bR;gr.prototype.get=IR;gr.prototype.has=SR;gr.prototype.set=wR;od.exports=gr});var Aa=p((nW,id)=>{"use strict";var sd=Yo();function TR(e,t,r){t=="__proto__"&&sd?sd(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}a(TR,"baseAssignValue");id.exports=TR});var os=p((sW,ud)=>{"use strict";var ER=Aa(),RR=lr();function vR(e,t,r){(r!==void 0&&!RR(e[t],r)||r===void 0&&!(t in e))&&ER(e,t,r)}a(vR,"assignMergeValue");ud.exports=vR});var pd=p((uW,cd)=>{"use strict";function _R(e){return function(t,r,n){for(var o=-1,s=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}a(_R,"createBaseFor");cd.exports=_R});var ss=p((pW,ld)=>{"use strict";var xR=pd(),CR=xR();ld.exports=CR});var is=p((ba,hr)=>{"use strict";var OR=_e(),gd=typeof ba=="object"&&ba&&!ba.nodeType&&ba,dd=gd&&typeof hr=="object"&&hr&&!hr.nodeType&&hr,LR=dd&&dd.exports===gd,fd=LR?OR.Buffer:void 0,md=fd?fd.allocUnsafe:void 0;function PR(e,t){if(t)return e.slice();var r=e.length,n=md?md(r):new e.constructor(r);return e.copy(n),n}a(PR,"cloneBuffer");hr.exports=PR});var us=p((dW,hd)=>{"use strict";var UR=_e(),qR=UR.Uint8Array;hd.exports=qR});var In=p((fW,Ad)=>{"use strict";var yd=us();function DR(e){var t=new e.constructor(e.byteLength);return new yd(t).set(new yd(e)),t}a(DR,"cloneArrayBuffer");Ad.exports=DR});var cs=p((gW,bd)=>{"use strict";var kR=In();function MR(e,t){var r=t?kR(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}a(MR,"cloneTypedArray");bd.exports=MR});var yr=p((yW,Id)=>{"use strict";function NR(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}a(NR,"copyArray");Id.exports=NR});var Ia=p((bW,wd)=>{"use strict";var BR=je(),Sd=Object.create,GR=function(){function e(){}return a(e,"object"),function(t){if(!BR(t))return{};if(Sd)return Sd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();wd.exports=GR});var ps=p((SW,Td)=>{"use strict";function FR(e,t){return function(r){return e(t(r))}}a(FR,"overArg");Td.exports=FR});var Sn=p((TW,Ed)=>{"use strict";var WR=ps(),$R=WR(Object.getPrototypeOf,Object);Ed.exports=$R});var wn=p((EW,Rd)=>{"use strict";var jR=Object.prototype;function QR(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||jR;return e===r}a(QR,"isPrototype");Rd.exports=QR});var ls=p((vW,vd)=>{"use strict";var KR=Ia(),VR=Sn(),HR=wn();function YR(e){return typeof e.constructor=="function"&&!HR(e)?KR(VR(e)):{}}a(YR,"initCloneObject");vd.exports=YR});var xd=p((xW,_d)=>{"use strict";function zR(){return!1}a(zR,"stubFalse");_d.exports=zR});var wa=p((Sa,Ar)=>{"use strict";var JR=_e(),XR=xd(),Ld=typeof Sa=="object"&&Sa&&!Sa.nodeType&&Sa,Cd=Ld&&typeof Ar=="object"&&Ar&&!Ar.nodeType&&Ar,ZR=Cd&&Cd.exports===Ld,Od=ZR?JR.Buffer:void 0,ev=Od?Od.isBuffer:void 0,tv=ev||XR;Ar.exports=tv});var ds=p((OW,Ud)=>{"use strict";var rv=Pt(),av=Sn(),nv=ke(),ov="[object Object]",sv=Function.prototype,iv=Object.prototype,Pd=sv.toString,uv=iv.hasOwnProperty,cv=Pd.call(Object);function pv(e){if(!nv(e)||rv(e)!=ov)return!1;var t=av(e);if(t===null)return!0;var r=uv.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Pd.call(r)==cv}a(pv,"isPlainObject");Ud.exports=pv});var Dd=p((PW,qd)=>{"use strict";var lv=Pt(),dv=bn(),fv=ke(),mv="[object Arguments]",gv="[object Array]",hv="[object Boolean]",yv="[object Date]",Av="[object Error]",bv="[object Function]",Iv="[object Map]",Sv="[object Number]",wv="[object Object]",Tv="[object RegExp]",Ev="[object Set]",Rv="[object String]",vv="[object WeakMap]",_v="[object ArrayBuffer]",xv="[object DataView]",Cv="[object Float32Array]",Ov="[object Float64Array]",Lv="[object Int8Array]",Pv="[object Int16Array]",Uv="[object Int32Array]",qv="[object Uint8Array]",Dv="[object Uint8ClampedArray]",kv="[object Uint16Array]",Mv="[object Uint32Array]",H={};H[Cv]=H[Ov]=H[Lv]=H[Pv]=H[Uv]=H[qv]=H[Dv]=H[kv]=H[Mv]=!0;H[mv]=H[gv]=H[_v]=H[hv]=H[xv]=H[yv]=H[Av]=H[bv]=H[Iv]=H[Sv]=H[wv]=H[Tv]=H[Ev]=H[Rv]=H[vv]=!1;function Nv(e){return fv(e)&&dv(e.length)&&!!H[lv(e)]}a(Nv,"baseIsTypedArray");qd.exports=Nv});var Tn=p((qW,kd)=>{"use strict";function Bv(e){return function(t){return e(t)}}a(Bv,"baseUnary");kd.exports=Bv});var En=p((Ta,br)=>{"use strict";var Gv=jo(),Md=typeof Ta=="object"&&Ta&&!Ta.nodeType&&Ta,Ea=Md&&typeof br=="object"&&br&&!br.nodeType&&br,Fv=Ea&&Ea.exports===Md,fs=Fv&&Gv.process,Wv=function(){try{var e=Ea&&Ea.require&&Ea.require("util").types;return e||fs&&fs.binding&&fs.binding("util")}catch{}}();br.exports=Wv});var Rn=p((kW,Gd)=>{"use strict";var $v=Dd(),jv=Tn(),Nd=En(),Bd=Nd&&Nd.isTypedArray,Qv=Bd?jv(Bd):$v;Gd.exports=Qv});var ms=p((MW,Fd)=>{"use strict";function Kv(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}a(Kv,"safeGet");Fd.exports=Kv});var gs=p((BW,Wd)=>{"use strict";var Vv=Aa(),Hv=lr(),Yv=Object.prototype,zv=Yv.hasOwnProperty;function Jv(e,t,r){var n=e[t];(!(zv.call(e,t)&&Hv(n,r))||r===void 0&&!(t in e))&&Vv(e,t,r)}a(Jv,"assignValue");Wd.exports=Jv});var Ir=p((FW,$d)=>{"use strict";var Xv=gs(),Zv=Aa();function e_(e,t,r,n){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=n?n(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?Zv(r,u,c):Xv(r,u,c)}return r}a(e_,"copyObject");$d.exports=e_});var Qd=p(($W,jd)=>{"use strict";function t_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}a(t_,"baseTimes");jd.exports=t_});var Ra=p((QW,Kd)=>{"use strict";var r_=9007199254740991,a_=/^(?:0|[1-9]\d*)$/;function n_(e,t){var r=typeof e;return t=t??r_,!!t&&(r=="number"||r!="symbol"&&a_.test(e))&&e>-1&&e%1==0&&e<t}a(n_,"isIndex");Kd.exports=n_});var hs=p((VW,Vd)=>{"use strict";var o_=Qd(),s_=pa(),i_=Ee(),u_=wa(),c_=Ra(),p_=Rn(),l_=Object.prototype,d_=l_.hasOwnProperty;function f_(e,t){var r=i_(e),n=!r&&s_(e),o=!r&&!n&&u_(e),s=!r&&!n&&!o&&p_(e),i=r||n||o||s,u=i?o_(e.length,String):[],c=u.length;for(var f in e)(t||d_.call(e,f))&&!(i&&(f=="length"||o&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||c_(f,c)))&&u.push(f);return u}a(f_,"arrayLikeKeys");Vd.exports=f_});var Yd=p((YW,Hd)=>{"use strict";function m_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}a(m_,"nativeKeysIn");Hd.exports=m_});var Jd=p((JW,zd)=>{"use strict";var g_=je(),h_=wn(),y_=Yd(),A_=Object.prototype,b_=A_.hasOwnProperty;function I_(e){if(!g_(e))return y_(e);var t=h_(e),r=[];for(var n in e)n=="constructor"&&(t||!b_.call(e,n))||r.push(n);return r}a(I_,"baseKeysIn");zd.exports=I_});var Sr=p((ZW,Xd)=>{"use strict";var S_=hs(),w_=Jd(),T_=mr();function E_(e){return T_(e)?S_(e,!0):w_(e)}a(E_,"keysIn");Xd.exports=E_});var ef=p((t$,Zd)=>{"use strict";var R_=Ir(),v_=Sr();function __(e){return R_(e,v_(e))}a(__,"toPlainObject");Zd.exports=__});var sf=p((a$,of)=>{"use strict";var tf=os(),x_=is(),C_=cs(),O_=yr(),L_=ls(),rf=pa(),af=Ee(),P_=ns(),U_=wa(),q_=da(),D_=je(),k_=ds(),M_=Rn(),nf=ms(),N_=ef();function B_(e,t,r,n,o,s,i){var u=nf(e,r),c=nf(t,r),f=i.get(c);if(f){tf(e,r,f);return}var g=s?s(u,c,r+"",e,t,i):void 0,h=g===void 0;if(h){var y=af(c),E=!y&&U_(c),M=!y&&!E&&M_(c);g=c,y||E||M?af(u)?g=u:P_(u)?g=O_(u):E?(h=!1,g=x_(c,!0)):M?(h=!1,g=C_(c,!0)):g=[]:k_(c)||rf(c)?(g=u,rf(u)?g=N_(u):(!D_(u)||q_(u))&&(g=L_(c))):h=!1}h&&(i.set(c,g),o(g,c,n,s,i),i.delete(c)),tf(e,r,g)}a(B_,"baseMergeDeep");of.exports=B_});var pf=p((o$,cf)=>{"use strict";var G_=ya(),F_=os(),W_=ss(),$_=sf(),j_=je(),Q_=Sr(),K_=ms();function uf(e,t,r,n,o){e!==t&&W_(t,function(s,i){if(o||(o=new G_),j_(s))$_(e,t,i,r,uf,n,o);else{var u=n?n(K_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),F_(e,i,u)}},Q_)}a(uf,"baseMerge");cf.exports=uf});var df=p((i$,lf)=>{"use strict";var V_=lr(),H_=mr(),Y_=Ra(),z_=je();function J_(e,t,r){if(!z_(r))return!1;var n=typeof t;return(n=="number"?H_(r)&&Y_(t,r.length):n=="string"&&t in r)?V_(r[t],e):!1}a(J_,"isIterateeCall");lf.exports=J_});var mf=p((c$,ff)=>{"use strict";var X_=Jo(),Z_=df();function ex(e){return X_(function(t,r){var n=-1,o=r.length,s=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(o--,s):void 0,i&&Z_(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,s)}return t})}a(ex,"createAssigner");ff.exports=ex});var ys=p((l$,gf)=>{"use strict";var tx=pf(),rx=mf(),ax=rx(function(e,t,r){tx(e,t,r)});gf.exports=ax});var Am=p(Ue=>{"use strict";Ue.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};Ue.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};Ue.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};Ue.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};Ue.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};Ue.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};Ue.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};Ue.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};Ue.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=Ue.aliasToReal,r={};for(var n in t){var o=t[n];e.call(r,o)?r[o].push(n):r[o]=[n]}return r}();Ue.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};Ue.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};Ue.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var di=p((AK,bm)=>{"use strict";bm.exports={}});var Tm=p((bK,wm)=>{"use strict";var me=Am(),NC=di(),Im=Array.prototype.push;function BC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}a(BC,"baseArity");function fi(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}a(fi,"baseAry");function Sm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}a(Sm,"cloneArray");function GC(e){return function(t){return e({},t)}}a(GC,"createCloner");function FC(e,t){return function(){for(var r=arguments.length,n=r-1,o=Array(r);r--;)o[r]=arguments[r];var s=o[t],i=o.slice(0,t);return s&&Im.apply(i,s),t!=n&&Im.apply(i,o.slice(t+1)),e.apply(this,i)}}a(FC,"flatSpread");function mi(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var o=n[0]=t.apply(void 0,n);return e.apply(void 0,n),o}}}a(mi,"wrapImmutable");function gi(e,t,r,n){var o=typeof t=="function",s=t===Object(t);if(s&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},u=o?r:NC,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,g="rearg"in n&&n.rearg,h=o?r.runInContext():void 0,y=o?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},E=y.ary,M=y.assign,k=y.clone,D=y.curry,C=y.forEach,W=y.isArray,ye=y.isError,ie=y.isFunction,Ye=y.isWeakMap,nt=y.keys,ot=y.rearg,Y=y.toInteger,G=y.toPath,Gt=nt(me.aryMethod),Ha={castArray:function(R){return function(){var b=arguments[0];return W(b)?R(Sm(b)):R.apply(void 0,arguments)}},iteratee:function(R){return function(){var b=arguments[0],I=arguments[1],v=R(b,I),q=v.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,q&&q<=I?v:fi(v,I)):v}},mixin:function(R){return function(b){var I=this;if(!ie(I))return R(I,Object(b));var v=[];return C(nt(b),function(q){ie(b[q])&&v.push([q,I.prototype[q]])}),R(I,Object(b)),C(v,function(q){var oe=q[1];ie(oe)?I.prototype[q[0]]=oe:delete I.prototype[q[0]]}),I}},nthArg:function(R){return function(b){var I=b<0?1:Y(b)+1;return D(R(b),I)}},rearg:function(R){return function(b,I){var v=I?I.length:0;return D(R(b,I),v)}},runInContext:function(R){return function(b){return gi(e,R(b),n)}}};function O(R,b){if(i.cap){var I=me.iterateeRearg[R];if(I)return Z(b,I);var v=!o&&me.iterateeAry[R];if(v)return $(b,v)}return b}a(O,"castCap");function w(R,b,I){return c||i.curry&&I>1?D(b,I):b}a(w,"castCurry");function A(R,b,I){if(i.fixed&&(f||!me.skipFixed[R])){var v=me.methodSpread[R],q=v&&v.start;return q===void 0?E(b,I):FC(b,q)}return b}a(A,"castFixed");function _(R,b,I){return i.rearg&&I>1&&(g||!me.skipRearg[R])?ot(b,me.methodRearg[R]||me.aryRearg[I]):b}a(_,"castRearg");function S(R,b){b=G(b);for(var I=-1,v=b.length,q=v-1,oe=k(Object(R)),Re=oe;Re!=null&&++I<v;){var Fe=b[I],st=Re[Fe];st!=null&&!(ie(st)||ye(st)||Ye(st))&&(Re[Fe]=k(I==q?st:Object(st))),Re=Re[Fe]}return oe}a(S,"cloneByPath");function U(R){return K.runInContext.convert(R)(void 0)}a(U,"convertLib");function P(R,b){var I=me.aliasToReal[R]||R,v=me.remap[I]||I,q=n;return function(oe){var Re=o?h:y,Fe=o?h[v]:b,st=M(M({},q),oe);return gi(Re,I,Fe,st)}}a(P,"createConverter");function $(R,b){return ne(R,function(I){return typeof I=="function"?fi(I,b):I})}a($,"iterateeAry");function Z(R,b){return ne(R,function(I){var v=b.length;return BC(ot(fi(I,v),b),v)})}a(Z,"iterateeRearg");function ne(R,b){return function(){var I=arguments.length;if(!I)return R();for(var v=Array(I);I--;)v[I]=arguments[I];var q=i.rearg?0:I-1;return v[q]=b(v[q]),R.apply(void 0,v)}}a(ne,"overArg");function pe(R,b,I){var v,q=me.aliasToReal[R]||R,oe=b,Re=Ha[q];return Re?oe=Re(b):i.immutable&&(me.mutate.array[q]?oe=mi(b,Sm):me.mutate.object[q]?oe=mi(b,GC(b)):me.mutate.set[q]&&(oe=mi(b,S))),C(Gt,function(Fe){return C(me.aryMethod[Fe],function(st){if(q==st){var Vu=me.methodSpread[q],_I=Vu&&Vu.afterRearg;return v=_I?A(q,_(q,oe,Fe),Fe):_(q,A(q,oe,Fe),Fe),v=O(q,v),v=w(q,v,Fe),!1}}),!v}),v||(v=oe),v==b&&(v=c?D(v,1):function(){return b.apply(this,arguments)}),v.convert=P(q,b),v.placeholder=b.placeholder=I,v}if(a(pe,"wrap"),!s)return pe(t,r,u);var K=r,Ge=[];return C(Gt,function(R){C(me.aryMethod[R],function(b){var I=K[me.remap[b]||b];I&&Ge.push([b,pe(b,I,K)])})}),C(nt(K),function(R){var b=K[R];if(typeof b=="function"){for(var I=Ge.length;I--;)if(Ge[I][0]==R)return;b.convert=P(R,b),Ge.push([R,b])}}),C(Ge,function(R){K[R[0]]=R[1]}),K.convert=U,K.placeholder=K,C(nt(K),function(R){C(me.realToAlias[R]||[],function(b){K[b]=K[R]})}),K}a(gi,"baseConvert");wm.exports=gi});var hi=p((SK,Em)=>{"use strict";var WC=Ut(),$C=_e(),jC=WC($C,"WeakMap");Em.exports=jC});var yi=p((wK,vm)=>{"use strict";var Rm=hi(),QC=Rm&&new Rm;vm.exports=QC});var Ai=p((TK,xm)=>{"use strict";var KC=la(),_m=yi(),VC=_m?function(e,t){return _m.set(e,t),e}:KC;xm.exports=VC});var Da=p((EK,Cm)=>{"use strict";var HC=Ia(),YC=je();function zC(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=HC(e.prototype),n=e.apply(r,t);return YC(n)?n:r}}a(zC,"createCtor");Cm.exports=zC});var Lm=p((vK,Om)=>{"use strict";var JC=Da(),XC=_e(),ZC=1;function eO(e,t,r){var n=t&ZC,o=JC(e);function s(){var i=this&&this!==XC&&this instanceof s?o:e;return i.apply(n?r:this,arguments)}return a(s,"wrapper"),s}a(eO,"createBind");Om.exports=eO});var bi=p((xK,Pm)=>{"use strict";var tO=Math.max;function rO(e,t,r,n){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,f=tO(s-i,0),g=Array(c+f),h=!n;++u<c;)g[u]=t[u];for(;++o<i;)(h||o<s)&&(g[r[o]]=e[o]);for(;f--;)g[u++]=e[o++];return g}a(rO,"composeArgs");Pm.exports=rO});var Ii=p((OK,Um)=>{"use strict";var aO=Math.max;function nO(e,t,r,n){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,f=t.length,g=aO(s-u,0),h=Array(g+f),y=!n;++o<g;)h[o]=e[o];for(var E=o;++c<f;)h[E+c]=t[c];for(;++i<u;)(y||o<s)&&(h[E+r[i]]=e[o++]);return h}a(nO,"composeArgsRight");Um.exports=nO});var Dm=p((PK,qm)=>{"use strict";function oO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}a(oO,"countHolders");qm.exports=oO});var Yn=p((qK,km)=>{"use strict";function sO(){}a(sO,"baseLodash");km.exports=sO});var Jn=p((kK,Mm)=>{"use strict";var iO=Ia(),uO=Yn(),cO=4294967295;function zn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=cO,this.__views__=[]}a(zn,"LazyWrapper");zn.prototype=iO(uO.prototype);zn.prototype.constructor=zn;Mm.exports=zn});var Si=p((NK,Bm)=>{"use strict";var Nm=yi(),pO=rs(),lO=Nm?function(e){return Nm.get(e)}:pO;Bm.exports=lO});var Fm=p((BK,Gm)=>{"use strict";var dO={};Gm.exports=dO});var jm=p((GK,$m)=>{"use strict";var Wm=Fm(),fO=Object.prototype,mO=fO.hasOwnProperty;function gO(e){for(var t=e.name+"",r=Wm[t],n=mO.call(Wm,t)?r.length:0;n--;){var o=r[n],s=o.func;if(s==null||s==e)return o.name}return t}a(gO,"getFuncName");$m.exports=gO});var wi=p((WK,Qm)=>{"use strict";var hO=Ia(),yO=Yn();function Xn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}a(Xn,"LodashWrapper");Xn.prototype=hO(yO.prototype);Xn.prototype.constructor=Xn;Qm.exports=Xn});var Vm=p((jK,Km)=>{"use strict";var AO=Jn(),bO=wi(),IO=yr();function SO(e){if(e instanceof AO)return e.clone();var t=new bO(e.__wrapped__,e.__chain__);return t.__actions__=IO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}a(SO,"wrapperClone");Km.exports=SO});var zm=p((KK,Ym)=>{"use strict";var wO=Jn(),Hm=wi(),TO=Yn(),EO=Ee(),RO=ke(),vO=Vm(),_O=Object.prototype,xO=_O.hasOwnProperty;function Zn(e){if(RO(e)&&!EO(e)&&!(e instanceof wO)){if(e instanceof Hm)return e;if(xO.call(e,"__wrapped__"))return vO(e)}return new Hm(e)}a(Zn,"lodash");Zn.prototype=TO.prototype;Zn.prototype.constructor=Zn;Ym.exports=Zn});var Xm=p((HK,Jm)=>{"use strict";var CO=Jn(),OO=Si(),LO=jm(),PO=zm();function UO(e){var t=LO(e),r=PO[t];if(typeof r!="function"||!(t in CO.prototype))return!1;if(e===r)return!0;var n=OO(r);return!!n&&e===n[0]}a(UO,"isLaziable");Jm.exports=UO});var Ti=p((zK,Zm)=>{"use strict";var qO=Ai(),DO=zo(),kO=DO(qO);Zm.exports=kO});var tg=p((JK,eg)=>{"use strict";var MO=/\{\n\/\* \[wrapped with (.+)\] \*/,NO=/,? & /;function BO(e){var t=e.match(MO);return t?t[1].split(NO):[]}a(BO,"getWrapDetails");eg.exports=BO});var ag=p((ZK,rg)=>{"use strict";var GO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function FO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(GO,`{
1
+ "use strict";var xI=Object.create;var Dr=Object.defineProperty;var CI=Object.getOwnPropertyDescriptor;var OI=Object.getOwnPropertyNames;var LI=Object.getPrototypeOf,PI=Object.prototype.hasOwnProperty;var a=(e,t)=>Dr(e,"name",{value:t,configurable:!0});var p=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),x=(e,t)=>{for(var r in t)Dr(e,r,{get:t[r],enumerable:!0})},Yu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of OI(t))!PI.call(e,o)&&o!==r&&Dr(e,o,{get:()=>t[o],enumerable:!(n=CI(t,o))||n.enumerable});return e};var F=(e,t,r)=>(r=e!=null?xI(LI(e)):{},Yu(t||!e||!e.__esModule?Dr(r,"default",{value:e,enumerable:!0}):r,e)),UI=e=>Yu(Dr({},"__esModule",{value:!0}),e);var fn=p((wG,qc)=>{"use strict";function OS(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}a(OS,"arrayPush");qc.exports=OS});var Qo=p((EG,Dc)=>{"use strict";var LS=typeof global=="object"&&global&&global.Object===Object&&global;Dc.exports=LS});var _e=p((vG,kc)=>{"use strict";var PS=Qo(),US=typeof self=="object"&&self&&self.Object===Object&&self,qS=PS||US||Function("return this")();kc.exports=qS});var Qt=p((RG,Mc)=>{"use strict";var DS=_e(),kS=DS.Symbol;Mc.exports=kS});var Fc=p((_G,Gc)=>{"use strict";var Nc=Qt(),Bc=Object.prototype,MS=Bc.hasOwnProperty,NS=Bc.toString,ca=Nc?Nc.toStringTag:void 0;function BS(e){var t=MS.call(e,ca),r=e[ca];try{e[ca]=void 0;var n=!0}catch{}var o=NS.call(e);return n&&(t?e[ca]=r:delete e[ca]),o}a(BS,"getRawTag");Gc.exports=BS});var $c=p((CG,Wc)=>{"use strict";var GS=Object.prototype,FS=GS.toString;function WS(e){return FS.call(e)}a(WS,"objectToString");Wc.exports=WS});var Pt=p((LG,Kc)=>{"use strict";var jc=Qt(),$S=Fc(),jS=$c(),QS="[object Null]",KS="[object Undefined]",Qc=jc?jc.toStringTag:void 0;function VS(e){return e==null?e===void 0?KS:QS:Qc&&Qc in Object(e)?$S(e):jS(e)}a(VS,"baseGetTag");Kc.exports=VS});var ke=p((UG,Vc)=>{"use strict";function HS(e){return e!=null&&typeof e=="object"}a(HS,"isObjectLike");Vc.exports=HS});var Yc=p((DG,Hc)=>{"use strict";var YS=Pt(),zS=ke(),JS="[object Arguments]";function XS(e){return zS(e)&&YS(e)==JS}a(XS,"baseIsArguments");Hc.exports=XS});var pa=p((MG,Xc)=>{"use strict";var zc=Yc(),ZS=ke(),Jc=Object.prototype,ew=Jc.hasOwnProperty,tw=Jc.propertyIsEnumerable,rw=zc(function(){return arguments}())?zc:function(e){return ZS(e)&&ew.call(e,"callee")&&!tw.call(e,"callee")};Xc.exports=rw});var Ee=p((NG,Zc)=>{"use strict";var aw=Array.isArray;Zc.exports=aw});var ap=p((BG,rp)=>{"use strict";var ep=Qt(),nw=pa(),ow=Ee(),tp=ep?ep.isConcatSpreadable:void 0;function sw(e){return ow(e)||nw(e)||!!(tp&&e&&e[tp])}a(sw,"isFlattenable");rp.exports=sw});var Ko=p((FG,op)=>{"use strict";var iw=fn(),uw=ap();function np(e,t,r,n,o){var s=-1,i=e.length;for(r||(r=uw),o||(o=[]);++s<i;){var u=e[s];t>0&&r(u)?t>1?np(u,t-1,r,n,o):iw(o,u):n||(o[o.length]=u)}return o}a(np,"baseFlatten");op.exports=np});var la=p(($G,sp)=>{"use strict";function cw(e){return e}a(cw,"identity");sp.exports=cw});var mn=p((QG,ip)=>{"use strict";function pw(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}a(pw,"apply");ip.exports=pw});var Vo=p((VG,cp)=>{"use strict";var lw=mn(),up=Math.max;function dw(e,t,r){return t=up(t===void 0?e.length-1:t,0),function(){for(var n=arguments,o=-1,s=up(n.length-t,0),i=Array(s);++o<s;)i[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(i),lw(e,this,u)}}a(dw,"overRest");cp.exports=dw});var lp=p((YG,pp)=>{"use strict";function fw(e){return function(){return e}}a(fw,"constant");pp.exports=fw});var je=p((JG,dp)=>{"use strict";function mw(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}a(mw,"isObject");dp.exports=mw});var da=p((ZG,fp)=>{"use strict";var gw=Pt(),hw=je(),yw="[object AsyncFunction]",Aw="[object Function]",bw="[object GeneratorFunction]",Iw="[object Proxy]";function Sw(e){if(!hw(e))return!1;var t=gw(e);return t==Aw||t==bw||t==yw||t==Iw}a(Sw,"isFunction");fp.exports=Sw});var gp=p((tF,mp)=>{"use strict";var ww=_e(),Tw=ww["__core-js_shared__"];mp.exports=Tw});var Ap=p((rF,yp)=>{"use strict";var Ho=gp(),hp=function(){var e=/[^.]+$/.exec(Ho&&Ho.keys&&Ho.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function Ew(e){return!!hp&&hp in e}a(Ew,"isMasked");yp.exports=Ew});var Yo=p((nF,bp)=>{"use strict";var vw=Function.prototype,Rw=vw.toString;function _w(e){if(e!=null){try{return Rw.call(e)}catch{}try{return e+""}catch{}}return""}a(_w,"toSource");bp.exports=_w});var Sp=p((sF,Ip)=>{"use strict";var xw=da(),Cw=Ap(),Ow=je(),Lw=Yo(),Pw=/[\\^$.*+?()[\]{}|]/g,Uw=/^\[object .+?Constructor\]$/,qw=Function.prototype,Dw=Object.prototype,kw=qw.toString,Mw=Dw.hasOwnProperty,Nw=RegExp("^"+kw.call(Mw).replace(Pw,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Bw(e){if(!Ow(e)||Cw(e))return!1;var t=xw(e)?Nw:Uw;return t.test(Lw(e))}a(Bw,"baseIsNative");Ip.exports=Bw});var Tp=p((uF,wp)=>{"use strict";function Gw(e,t){return e?.[t]}a(Gw,"getValue");wp.exports=Gw});var Ut=p((pF,Ep)=>{"use strict";var Fw=Sp(),Ww=Tp();function $w(e,t){var r=Ww(e,t);return Fw(r)?r:void 0}a($w,"getNative");Ep.exports=$w});var zo=p((dF,vp)=>{"use strict";var jw=Ut(),Qw=function(){try{var e=jw(Object,"defineProperty");return e({},"",{}),e}catch{}}();vp.exports=Qw});var xp=p((fF,_p)=>{"use strict";var Kw=lp(),Rp=zo(),Vw=la(),Hw=Rp?function(e,t){return Rp(e,"toString",{configurable:!0,enumerable:!1,value:Kw(t),writable:!0})}:Vw;_p.exports=Hw});var Jo=p((mF,Cp)=>{"use strict";var Yw=800,zw=16,Jw=Date.now;function Xw(e){var t=0,r=0;return function(){var n=Jw(),o=zw-(n-r);if(r=n,o>0){if(++t>=Yw)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}a(Xw,"shortOut");Cp.exports=Xw});var gn=p((hF,Op)=>{"use strict";var Zw=xp(),eT=Jo(),tT=eT(Zw);Op.exports=tT});var Xo=p((yF,Lp)=>{"use strict";var rT=la(),aT=Vo(),nT=gn();function oT(e,t){return nT(aT(e,t,rT),e+"")}a(oT,"baseRest");Lp.exports=oT});var fa=p((bF,Pp)=>{"use strict";var sT=Ut(),iT=sT(Object,"create");Pp.exports=iT});var Dp=p((IF,qp)=>{"use strict";var Up=fa();function uT(){this.__data__=Up?Up(null):{},this.size=0}a(uT,"hashClear");qp.exports=uT});var Mp=p((wF,kp)=>{"use strict";function cT(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}a(cT,"hashDelete");kp.exports=cT});var Bp=p((EF,Np)=>{"use strict";var pT=fa(),lT="__lodash_hash_undefined__",dT=Object.prototype,fT=dT.hasOwnProperty;function mT(e){var t=this.__data__;if(pT){var r=t[e];return r===lT?void 0:r}return fT.call(t,e)?t[e]:void 0}a(mT,"hashGet");Np.exports=mT});var Fp=p((RF,Gp)=>{"use strict";var gT=fa(),hT=Object.prototype,yT=hT.hasOwnProperty;function AT(e){var t=this.__data__;return gT?t[e]!==void 0:yT.call(t,e)}a(AT,"hashHas");Gp.exports=AT});var $p=p((xF,Wp)=>{"use strict";var bT=fa(),IT="__lodash_hash_undefined__";function ST(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=bT&&t===void 0?IT:t,this}a(ST,"hashSet");Wp.exports=ST});var Qp=p((OF,jp)=>{"use strict";var wT=Dp(),TT=Mp(),ET=Bp(),vT=Fp(),RT=$p();function pr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(pr,"Hash");pr.prototype.clear=wT;pr.prototype.delete=TT;pr.prototype.get=ET;pr.prototype.has=vT;pr.prototype.set=RT;jp.exports=pr});var Vp=p((PF,Kp)=>{"use strict";function _T(){this.__data__=[],this.size=0}a(_T,"listCacheClear");Kp.exports=_T});var lr=p((qF,Hp)=>{"use strict";function xT(e,t){return e===t||e!==e&&t!==t}a(xT,"eq");Hp.exports=xT});var ma=p((kF,Yp)=>{"use strict";var CT=lr();function OT(e,t){for(var r=e.length;r--;)if(CT(e[r][0],t))return r;return-1}a(OT,"assocIndexOf");Yp.exports=OT});var Jp=p((NF,zp)=>{"use strict";var LT=ma(),PT=Array.prototype,UT=PT.splice;function qT(e){var t=this.__data__,r=LT(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():UT.call(t,r,1),--this.size,!0}a(qT,"listCacheDelete");zp.exports=qT});var Zp=p((GF,Xp)=>{"use strict";var DT=ma();function kT(e){var t=this.__data__,r=DT(t,e);return r<0?void 0:t[r][1]}a(kT,"listCacheGet");Xp.exports=kT});var tl=p((WF,el)=>{"use strict";var MT=ma();function NT(e){return MT(this.__data__,e)>-1}a(NT,"listCacheHas");el.exports=NT});var al=p((jF,rl)=>{"use strict";var BT=ma();function GT(e,t){var r=this.__data__,n=BT(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}a(GT,"listCacheSet");rl.exports=GT});var ga=p((KF,nl)=>{"use strict";var FT=Vp(),WT=Jp(),$T=Zp(),jT=tl(),QT=al();function dr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(dr,"ListCache");dr.prototype.clear=FT;dr.prototype.delete=WT;dr.prototype.get=$T;dr.prototype.has=jT;dr.prototype.set=QT;nl.exports=dr});var hn=p((HF,ol)=>{"use strict";var KT=Ut(),VT=_e(),HT=KT(VT,"Map");ol.exports=HT});var ul=p((YF,il)=>{"use strict";var sl=Qp(),YT=ga(),zT=hn();function JT(){this.size=0,this.__data__={hash:new sl,map:new(zT||YT),string:new sl}}a(JT,"mapCacheClear");il.exports=JT});var pl=p((JF,cl)=>{"use strict";function XT(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}a(XT,"isKeyable");cl.exports=XT});var ha=p((ZF,ll)=>{"use strict";var ZT=pl();function eE(e,t){var r=e.__data__;return ZT(t)?r[typeof t=="string"?"string":"hash"]:r.map}a(eE,"getMapData");ll.exports=eE});var fl=p((t1,dl)=>{"use strict";var tE=ha();function rE(e){var t=tE(this,e).delete(e);return this.size-=t?1:0,t}a(rE,"mapCacheDelete");dl.exports=rE});var gl=p((a1,ml)=>{"use strict";var aE=ha();function nE(e){return aE(this,e).get(e)}a(nE,"mapCacheGet");ml.exports=nE});var yl=p((o1,hl)=>{"use strict";var oE=ha();function sE(e){return oE(this,e).has(e)}a(sE,"mapCacheHas");hl.exports=sE});var bl=p((i1,Al)=>{"use strict";var iE=ha();function uE(e,t){var r=iE(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}a(uE,"mapCacheSet");Al.exports=uE});var yn=p((c1,Il)=>{"use strict";var cE=ul(),pE=fl(),lE=gl(),dE=yl(),fE=bl();function fr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}a(fr,"MapCache");fr.prototype.clear=cE;fr.prototype.delete=pE;fr.prototype.get=lE;fr.prototype.has=dE;fr.prototype.set=fE;Il.exports=fr});var wl=p((l1,Sl)=>{"use strict";var mE="__lodash_hash_undefined__";function gE(e){return this.__data__.set(e,mE),this}a(gE,"setCacheAdd");Sl.exports=gE});var El=p((f1,Tl)=>{"use strict";function hE(e){return this.__data__.has(e)}a(hE,"setCacheHas");Tl.exports=hE});var Zo=p((g1,vl)=>{"use strict";var yE=yn(),AE=wl(),bE=El();function An(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new yE;++t<r;)this.add(e[t])}a(An,"SetCache");An.prototype.add=An.prototype.push=AE;An.prototype.has=bE;vl.exports=An});var _l=p((y1,Rl)=>{"use strict";function IE(e,t,r,n){for(var o=e.length,s=r+(n?1:-1);n?s--:++s<o;)if(t(e[s],s,e))return s;return-1}a(IE,"baseFindIndex");Rl.exports=IE});var Cl=p((b1,xl)=>{"use strict";function SE(e){return e!==e}a(SE,"baseIsNaN");xl.exports=SE});var Ll=p((S1,Ol)=>{"use strict";function wE(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}a(wE,"strictIndexOf");Ol.exports=wE});var Ul=p((T1,Pl)=>{"use strict";var TE=_l(),EE=Cl(),vE=Ll();function RE(e,t,r){return t===t?vE(e,t,r):TE(e,EE,r)}a(RE,"baseIndexOf");Pl.exports=RE});var es=p((v1,ql)=>{"use strict";var _E=Ul();function xE(e,t){var r=e==null?0:e.length;return!!r&&_E(e,t,0)>-1}a(xE,"arrayIncludes");ql.exports=xE});var kl=p((_1,Dl)=>{"use strict";function CE(e,t,r){for(var n=-1,o=e==null?0:e.length;++n<o;)if(r(t,e[n]))return!0;return!1}a(CE,"arrayIncludesWith");Dl.exports=CE});var ts=p((C1,Ml)=>{"use strict";function OE(e,t){return e.has(t)}a(OE,"cacheHas");Ml.exports=OE});var rs=p((L1,Nl)=>{"use strict";var LE=Ut(),PE=_e(),UE=LE(PE,"Set");Nl.exports=UE});var as=p((P1,Bl)=>{"use strict";function qE(){}a(qE,"noop");Bl.exports=qE});var bn=p((q1,Gl)=>{"use strict";function DE(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}a(DE,"setToArray");Gl.exports=DE});var Wl=p((k1,Fl)=>{"use strict";var ns=rs(),kE=as(),ME=bn(),NE=1/0,BE=ns&&1/ME(new ns([,-0]))[1]==NE?function(e){return new ns(e)}:kE;Fl.exports=BE});var jl=p((M1,$l)=>{"use strict";var GE=Zo(),FE=es(),WE=kl(),$E=ts(),jE=Wl(),QE=bn(),KE=200;function VE(e,t,r){var n=-1,o=FE,s=e.length,i=!0,u=[],c=u;if(r)i=!1,o=WE;else if(s>=KE){var f=t?null:jE(e);if(f)return QE(f);i=!1,o=$E,c=new GE}else c=t?[]:u;e:for(;++n<s;){var g=e[n],h=t?t(g):g;if(g=r||g!==0?g:0,i&&h===h){for(var y=c.length;y--;)if(c[y]===h)continue e;t&&c.push(h),u.push(g)}else o(c,h,r)||(c!==u&&c.push(h),u.push(g))}return u}a(VE,"baseUniq");$l.exports=VE});var In=p((B1,Ql)=>{"use strict";var HE=9007199254740991;function YE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=HE}a(YE,"isLength");Ql.exports=YE});var mr=p((F1,Kl)=>{"use strict";var zE=da(),JE=In();function XE(e){return e!=null&&JE(e.length)&&!zE(e)}a(XE,"isArrayLike");Kl.exports=XE});var os=p(($1,Vl)=>{"use strict";var ZE=mr(),ev=ke();function tv(e){return ev(e)&&ZE(e)}a(tv,"isArrayLikeObject");Vl.exports=tv});var Yl=p((Q1,Hl)=>{"use strict";var rv=Ko(),av=Xo(),nv=jl(),ov=os(),sv=av(function(e){return nv(rv(e,1,ov,!0))});Hl.exports=sv});var Jl=p((K1,zl)=>{"use strict";var iv=ga();function uv(){this.__data__=new iv,this.size=0}a(uv,"stackClear");zl.exports=uv});var Zl=p((H1,Xl)=>{"use strict";function cv(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}a(cv,"stackDelete");Xl.exports=cv});var td=p((z1,ed)=>{"use strict";function pv(e){return this.__data__.get(e)}a(pv,"stackGet");ed.exports=pv});var ad=p((X1,rd)=>{"use strict";function lv(e){return this.__data__.has(e)}a(lv,"stackHas");rd.exports=lv});var od=p((eW,nd)=>{"use strict";var dv=ga(),fv=hn(),mv=yn(),gv=200;function hv(e,t){var r=this.__data__;if(r instanceof dv){var n=r.__data__;if(!fv||n.length<gv-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new mv(n)}return r.set(e,t),this.size=r.size,this}a(hv,"stackSet");nd.exports=hv});var ya=p((rW,sd)=>{"use strict";var yv=ga(),Av=Jl(),bv=Zl(),Iv=td(),Sv=ad(),wv=od();function gr(e){var t=this.__data__=new yv(e);this.size=t.size}a(gr,"Stack");gr.prototype.clear=Av;gr.prototype.delete=bv;gr.prototype.get=Iv;gr.prototype.has=Sv;gr.prototype.set=wv;sd.exports=gr});var Aa=p((nW,ud)=>{"use strict";var id=zo();function Tv(e,t,r){t=="__proto__"&&id?id(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}a(Tv,"baseAssignValue");ud.exports=Tv});var ss=p((sW,cd)=>{"use strict";var Ev=Aa(),vv=lr();function Rv(e,t,r){(r!==void 0&&!vv(e[t],r)||r===void 0&&!(t in e))&&Ev(e,t,r)}a(Rv,"assignMergeValue");cd.exports=Rv});var ld=p((uW,pd)=>{"use strict";function _v(e){return function(t,r,n){for(var o=-1,s=Object(t),i=n(t),u=i.length;u--;){var c=i[e?u:++o];if(r(s[c],c,s)===!1)break}return t}}a(_v,"createBaseFor");pd.exports=_v});var is=p((pW,dd)=>{"use strict";var xv=ld(),Cv=xv();dd.exports=Cv});var us=p((ba,hr)=>{"use strict";var Ov=_e(),hd=typeof ba=="object"&&ba&&!ba.nodeType&&ba,fd=hd&&typeof hr=="object"&&hr&&!hr.nodeType&&hr,Lv=fd&&fd.exports===hd,md=Lv?Ov.Buffer:void 0,gd=md?md.allocUnsafe:void 0;function Pv(e,t){if(t)return e.slice();var r=e.length,n=gd?gd(r):new e.constructor(r);return e.copy(n),n}a(Pv,"cloneBuffer");hr.exports=Pv});var cs=p((dW,yd)=>{"use strict";var Uv=_e(),qv=Uv.Uint8Array;yd.exports=qv});var Sn=p((fW,bd)=>{"use strict";var Ad=cs();function Dv(e){var t=new e.constructor(e.byteLength);return new Ad(t).set(new Ad(e)),t}a(Dv,"cloneArrayBuffer");bd.exports=Dv});var ps=p((gW,Id)=>{"use strict";var kv=Sn();function Mv(e,t){var r=t?kv(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}a(Mv,"cloneTypedArray");Id.exports=Mv});var yr=p((yW,Sd)=>{"use strict";function Nv(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}a(Nv,"copyArray");Sd.exports=Nv});var Ia=p((bW,Td)=>{"use strict";var Bv=je(),wd=Object.create,Gv=function(){function e(){}return a(e,"object"),function(t){if(!Bv(t))return{};if(wd)return wd(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();Td.exports=Gv});var ls=p((SW,Ed)=>{"use strict";function Fv(e,t){return function(r){return e(t(r))}}a(Fv,"overArg");Ed.exports=Fv});var wn=p((TW,vd)=>{"use strict";var Wv=ls(),$v=Wv(Object.getPrototypeOf,Object);vd.exports=$v});var Tn=p((EW,Rd)=>{"use strict";var jv=Object.prototype;function Qv(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||jv;return e===r}a(Qv,"isPrototype");Rd.exports=Qv});var ds=p((RW,_d)=>{"use strict";var Kv=Ia(),Vv=wn(),Hv=Tn();function Yv(e){return typeof e.constructor=="function"&&!Hv(e)?Kv(Vv(e)):{}}a(Yv,"initCloneObject");_d.exports=Yv});var Cd=p((xW,xd)=>{"use strict";function zv(){return!1}a(zv,"stubFalse");xd.exports=zv});var wa=p((Sa,Ar)=>{"use strict";var Jv=_e(),Xv=Cd(),Pd=typeof Sa=="object"&&Sa&&!Sa.nodeType&&Sa,Od=Pd&&typeof Ar=="object"&&Ar&&!Ar.nodeType&&Ar,Zv=Od&&Od.exports===Pd,Ld=Zv?Jv.Buffer:void 0,eR=Ld?Ld.isBuffer:void 0,tR=eR||Xv;Ar.exports=tR});var fs=p((OW,qd)=>{"use strict";var rR=Pt(),aR=wn(),nR=ke(),oR="[object Object]",sR=Function.prototype,iR=Object.prototype,Ud=sR.toString,uR=iR.hasOwnProperty,cR=Ud.call(Object);function pR(e){if(!nR(e)||rR(e)!=oR)return!1;var t=aR(e);if(t===null)return!0;var r=uR.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Ud.call(r)==cR}a(pR,"isPlainObject");qd.exports=pR});var kd=p((PW,Dd)=>{"use strict";var lR=Pt(),dR=In(),fR=ke(),mR="[object Arguments]",gR="[object Array]",hR="[object Boolean]",yR="[object Date]",AR="[object Error]",bR="[object Function]",IR="[object Map]",SR="[object Number]",wR="[object Object]",TR="[object RegExp]",ER="[object Set]",vR="[object String]",RR="[object WeakMap]",_R="[object ArrayBuffer]",xR="[object DataView]",CR="[object Float32Array]",OR="[object Float64Array]",LR="[object Int8Array]",PR="[object Int16Array]",UR="[object Int32Array]",qR="[object Uint8Array]",DR="[object Uint8ClampedArray]",kR="[object Uint16Array]",MR="[object Uint32Array]",H={};H[CR]=H[OR]=H[LR]=H[PR]=H[UR]=H[qR]=H[DR]=H[kR]=H[MR]=!0;H[mR]=H[gR]=H[_R]=H[hR]=H[xR]=H[yR]=H[AR]=H[bR]=H[IR]=H[SR]=H[wR]=H[TR]=H[ER]=H[vR]=H[RR]=!1;function NR(e){return fR(e)&&dR(e.length)&&!!H[lR(e)]}a(NR,"baseIsTypedArray");Dd.exports=NR});var En=p((qW,Md)=>{"use strict";function BR(e){return function(t){return e(t)}}a(BR,"baseUnary");Md.exports=BR});var vn=p((Ta,br)=>{"use strict";var GR=Qo(),Nd=typeof Ta=="object"&&Ta&&!Ta.nodeType&&Ta,Ea=Nd&&typeof br=="object"&&br&&!br.nodeType&&br,FR=Ea&&Ea.exports===Nd,ms=FR&&GR.process,WR=function(){try{var e=Ea&&Ea.require&&Ea.require("util").types;return e||ms&&ms.binding&&ms.binding("util")}catch{}}();br.exports=WR});var Rn=p((kW,Fd)=>{"use strict";var $R=kd(),jR=En(),Bd=vn(),Gd=Bd&&Bd.isTypedArray,QR=Gd?jR(Gd):$R;Fd.exports=QR});var gs=p((MW,Wd)=>{"use strict";function KR(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}a(KR,"safeGet");Wd.exports=KR});var hs=p((BW,$d)=>{"use strict";var VR=Aa(),HR=lr(),YR=Object.prototype,zR=YR.hasOwnProperty;function JR(e,t,r){var n=e[t];(!(zR.call(e,t)&&HR(n,r))||r===void 0&&!(t in e))&&VR(e,t,r)}a(JR,"assignValue");$d.exports=JR});var Ir=p((FW,jd)=>{"use strict";var XR=hs(),ZR=Aa();function e_(e,t,r,n){var o=!r;r||(r={});for(var s=-1,i=t.length;++s<i;){var u=t[s],c=n?n(r[u],e[u],u,r,e):void 0;c===void 0&&(c=e[u]),o?ZR(r,u,c):XR(r,u,c)}return r}a(e_,"copyObject");jd.exports=e_});var Kd=p(($W,Qd)=>{"use strict";function t_(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}a(t_,"baseTimes");Qd.exports=t_});var va=p((QW,Vd)=>{"use strict";var r_=9007199254740991,a_=/^(?:0|[1-9]\d*)$/;function n_(e,t){var r=typeof e;return t=t??r_,!!t&&(r=="number"||r!="symbol"&&a_.test(e))&&e>-1&&e%1==0&&e<t}a(n_,"isIndex");Vd.exports=n_});var ys=p((VW,Hd)=>{"use strict";var o_=Kd(),s_=pa(),i_=Ee(),u_=wa(),c_=va(),p_=Rn(),l_=Object.prototype,d_=l_.hasOwnProperty;function f_(e,t){var r=i_(e),n=!r&&s_(e),o=!r&&!n&&u_(e),s=!r&&!n&&!o&&p_(e),i=r||n||o||s,u=i?o_(e.length,String):[],c=u.length;for(var f in e)(t||d_.call(e,f))&&!(i&&(f=="length"||o&&(f=="offset"||f=="parent")||s&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||c_(f,c)))&&u.push(f);return u}a(f_,"arrayLikeKeys");Hd.exports=f_});var zd=p((YW,Yd)=>{"use strict";function m_(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}a(m_,"nativeKeysIn");Yd.exports=m_});var Xd=p((JW,Jd)=>{"use strict";var g_=je(),h_=Tn(),y_=zd(),A_=Object.prototype,b_=A_.hasOwnProperty;function I_(e){if(!g_(e))return y_(e);var t=h_(e),r=[];for(var n in e)n=="constructor"&&(t||!b_.call(e,n))||r.push(n);return r}a(I_,"baseKeysIn");Jd.exports=I_});var Sr=p((ZW,Zd)=>{"use strict";var S_=ys(),w_=Xd(),T_=mr();function E_(e){return T_(e)?S_(e,!0):w_(e)}a(E_,"keysIn");Zd.exports=E_});var tf=p((t$,ef)=>{"use strict";var v_=Ir(),R_=Sr();function __(e){return v_(e,R_(e))}a(__,"toPlainObject");ef.exports=__});var uf=p((a$,sf)=>{"use strict";var rf=ss(),x_=us(),C_=ps(),O_=yr(),L_=ds(),af=pa(),nf=Ee(),P_=os(),U_=wa(),q_=da(),D_=je(),k_=fs(),M_=Rn(),of=gs(),N_=tf();function B_(e,t,r,n,o,s,i){var u=of(e,r),c=of(t,r),f=i.get(c);if(f){rf(e,r,f);return}var g=s?s(u,c,r+"",e,t,i):void 0,h=g===void 0;if(h){var y=nf(c),E=!y&&U_(c),M=!y&&!E&&M_(c);g=c,y||E||M?nf(u)?g=u:P_(u)?g=O_(u):E?(h=!1,g=x_(c,!0)):M?(h=!1,g=C_(c,!0)):g=[]:k_(c)||af(c)?(g=u,af(u)?g=N_(u):(!D_(u)||q_(u))&&(g=L_(c))):h=!1}h&&(i.set(c,g),o(g,c,n,s,i),i.delete(c)),rf(e,r,g)}a(B_,"baseMergeDeep");sf.exports=B_});var lf=p((o$,pf)=>{"use strict";var G_=ya(),F_=ss(),W_=is(),$_=uf(),j_=je(),Q_=Sr(),K_=gs();function cf(e,t,r,n,o){e!==t&&W_(t,function(s,i){if(o||(o=new G_),j_(s))$_(e,t,i,r,cf,n,o);else{var u=n?n(K_(e,i),s,i+"",e,t,o):void 0;u===void 0&&(u=s),F_(e,i,u)}},Q_)}a(cf,"baseMerge");pf.exports=cf});var ff=p((i$,df)=>{"use strict";var V_=lr(),H_=mr(),Y_=va(),z_=je();function J_(e,t,r){if(!z_(r))return!1;var n=typeof t;return(n=="number"?H_(r)&&Y_(t,r.length):n=="string"&&t in r)?V_(r[t],e):!1}a(J_,"isIterateeCall");df.exports=J_});var gf=p((c$,mf)=>{"use strict";var X_=Xo(),Z_=ff();function ex(e){return X_(function(t,r){var n=-1,o=r.length,s=o>1?r[o-1]:void 0,i=o>2?r[2]:void 0;for(s=e.length>3&&typeof s=="function"?(o--,s):void 0,i&&Z_(r[0],r[1],i)&&(s=o<3?void 0:s,o=1),t=Object(t);++n<o;){var u=r[n];u&&e(t,u,n,s)}return t})}a(ex,"createAssigner");mf.exports=ex});var As=p((l$,hf)=>{"use strict";var tx=lf(),rx=gf(),ax=rx(function(e,t,r){tx(e,t,r)});hf.exports=ax});var bm=p(Ue=>{"use strict";Ue.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};Ue.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};Ue.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};Ue.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};Ue.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};Ue.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};Ue.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};Ue.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};Ue.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=Ue.aliasToReal,r={};for(var n in t){var o=t[n];e.call(r,o)?r[o].push(n):r[o]=[n]}return r}();Ue.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};Ue.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};Ue.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var fi=p((AK,Im)=>{"use strict";Im.exports={}});var Em=p((bK,Tm)=>{"use strict";var me=bm(),NC=fi(),Sm=Array.prototype.push;function BC(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}a(BC,"baseArity");function mi(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}a(mi,"baseAry");function wm(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}a(wm,"cloneArray");function GC(e){return function(t){return e({},t)}}a(GC,"createCloner");function FC(e,t){return function(){for(var r=arguments.length,n=r-1,o=Array(r);r--;)o[r]=arguments[r];var s=o[t],i=o.slice(0,t);return s&&Sm.apply(i,s),t!=n&&Sm.apply(i,o.slice(t+1)),e.apply(this,i)}}a(FC,"flatSpread");function gi(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var o=n[0]=t.apply(void 0,n);return e.apply(void 0,n),o}}}a(gi,"wrapImmutable");function hi(e,t,r,n){var o=typeof t=="function",s=t===Object(t);if(s&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},u=o?r:NC,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,g="rearg"in n&&n.rearg,h=o?r.runInContext():void 0,y=o?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},E=y.ary,M=y.assign,k=y.clone,D=y.curry,C=y.forEach,W=y.isArray,ye=y.isError,ie=y.isFunction,Ye=y.isWeakMap,nt=y.keys,ot=y.rearg,Y=y.toInteger,G=y.toPath,Gt=nt(me.aryMethod),Ya={castArray:function(v){return function(){var b=arguments[0];return W(b)?v(wm(b)):v.apply(void 0,arguments)}},iteratee:function(v){return function(){var b=arguments[0],I=arguments[1],R=v(b,I),q=R.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,q&&q<=I?R:mi(R,I)):R}},mixin:function(v){return function(b){var I=this;if(!ie(I))return v(I,Object(b));var R=[];return C(nt(b),function(q){ie(b[q])&&R.push([q,I.prototype[q]])}),v(I,Object(b)),C(R,function(q){var oe=q[1];ie(oe)?I.prototype[q[0]]=oe:delete I.prototype[q[0]]}),I}},nthArg:function(v){return function(b){var I=b<0?1:Y(b)+1;return D(v(b),I)}},rearg:function(v){return function(b,I){var R=I?I.length:0;return D(v(b,I),R)}},runInContext:function(v){return function(b){return hi(e,v(b),n)}}};function O(v,b){if(i.cap){var I=me.iterateeRearg[v];if(I)return Z(b,I);var R=!o&&me.iterateeAry[v];if(R)return $(b,R)}return b}a(O,"castCap");function w(v,b,I){return c||i.curry&&I>1?D(b,I):b}a(w,"castCurry");function A(v,b,I){if(i.fixed&&(f||!me.skipFixed[v])){var R=me.methodSpread[v],q=R&&R.start;return q===void 0?E(b,I):FC(b,q)}return b}a(A,"castFixed");function _(v,b,I){return i.rearg&&I>1&&(g||!me.skipRearg[v])?ot(b,me.methodRearg[v]||me.aryRearg[I]):b}a(_,"castRearg");function S(v,b){b=G(b);for(var I=-1,R=b.length,q=R-1,oe=k(Object(v)),ve=oe;ve!=null&&++I<R;){var Fe=b[I],st=ve[Fe];st!=null&&!(ie(st)||ye(st)||Ye(st))&&(ve[Fe]=k(I==q?st:Object(st))),ve=ve[Fe]}return oe}a(S,"cloneByPath");function U(v){return K.runInContext.convert(v)(void 0)}a(U,"convertLib");function P(v,b){var I=me.aliasToReal[v]||v,R=me.remap[I]||I,q=n;return function(oe){var ve=o?h:y,Fe=o?h[R]:b,st=M(M({},q),oe);return hi(ve,I,Fe,st)}}a(P,"createConverter");function $(v,b){return ne(v,function(I){return typeof I=="function"?mi(I,b):I})}a($,"iterateeAry");function Z(v,b){return ne(v,function(I){var R=b.length;return BC(ot(mi(I,R),b),R)})}a(Z,"iterateeRearg");function ne(v,b){return function(){var I=arguments.length;if(!I)return v();for(var R=Array(I);I--;)R[I]=arguments[I];var q=i.rearg?0:I-1;return R[q]=b(R[q]),v.apply(void 0,R)}}a(ne,"overArg");function pe(v,b,I){var R,q=me.aliasToReal[v]||v,oe=b,ve=Ya[q];return ve?oe=ve(b):i.immutable&&(me.mutate.array[q]?oe=gi(b,wm):me.mutate.object[q]?oe=gi(b,GC(b)):me.mutate.set[q]&&(oe=gi(b,S))),C(Gt,function(Fe){return C(me.aryMethod[Fe],function(st){if(q==st){var Hu=me.methodSpread[q],_I=Hu&&Hu.afterRearg;return R=_I?A(q,_(q,oe,Fe),Fe):_(q,A(q,oe,Fe),Fe),R=O(q,R),R=w(q,R,Fe),!1}}),!R}),R||(R=oe),R==b&&(R=c?D(R,1):function(){return b.apply(this,arguments)}),R.convert=P(q,b),R.placeholder=b.placeholder=I,R}if(a(pe,"wrap"),!s)return pe(t,r,u);var K=r,Ge=[];return C(Gt,function(v){C(me.aryMethod[v],function(b){var I=K[me.remap[b]||b];I&&Ge.push([b,pe(b,I,K)])})}),C(nt(K),function(v){var b=K[v];if(typeof b=="function"){for(var I=Ge.length;I--;)if(Ge[I][0]==v)return;b.convert=P(v,b),Ge.push([v,b])}}),C(Ge,function(v){K[v[0]]=v[1]}),K.convert=U,K.placeholder=K,C(nt(K),function(v){C(me.realToAlias[v]||[],function(b){K[b]=K[v]})}),K}a(hi,"baseConvert");Tm.exports=hi});var yi=p((SK,vm)=>{"use strict";var WC=Ut(),$C=_e(),jC=WC($C,"WeakMap");vm.exports=jC});var Ai=p((wK,_m)=>{"use strict";var Rm=yi(),QC=Rm&&new Rm;_m.exports=QC});var bi=p((TK,Cm)=>{"use strict";var KC=la(),xm=Ai(),VC=xm?function(e,t){return xm.set(e,t),e}:KC;Cm.exports=VC});var Da=p((EK,Om)=>{"use strict";var HC=Ia(),YC=je();function zC(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=HC(e.prototype),n=e.apply(r,t);return YC(n)?n:r}}a(zC,"createCtor");Om.exports=zC});var Pm=p((RK,Lm)=>{"use strict";var JC=Da(),XC=_e(),ZC=1;function eO(e,t,r){var n=t&ZC,o=JC(e);function s(){var i=this&&this!==XC&&this instanceof s?o:e;return i.apply(n?r:this,arguments)}return a(s,"wrapper"),s}a(eO,"createBind");Lm.exports=eO});var Ii=p((xK,Um)=>{"use strict";var tO=Math.max;function rO(e,t,r,n){for(var o=-1,s=e.length,i=r.length,u=-1,c=t.length,f=tO(s-i,0),g=Array(c+f),h=!n;++u<c;)g[u]=t[u];for(;++o<i;)(h||o<s)&&(g[r[o]]=e[o]);for(;f--;)g[u++]=e[o++];return g}a(rO,"composeArgs");Um.exports=rO});var Si=p((OK,qm)=>{"use strict";var aO=Math.max;function nO(e,t,r,n){for(var o=-1,s=e.length,i=-1,u=r.length,c=-1,f=t.length,g=aO(s-u,0),h=Array(g+f),y=!n;++o<g;)h[o]=e[o];for(var E=o;++c<f;)h[E+c]=t[c];for(;++i<u;)(y||o<s)&&(h[E+r[i]]=e[o++]);return h}a(nO,"composeArgsRight");qm.exports=nO});var km=p((PK,Dm)=>{"use strict";function oO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}a(oO,"countHolders");Dm.exports=oO});var zn=p((qK,Mm)=>{"use strict";function sO(){}a(sO,"baseLodash");Mm.exports=sO});var Xn=p((kK,Nm)=>{"use strict";var iO=Ia(),uO=zn(),cO=4294967295;function Jn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=cO,this.__views__=[]}a(Jn,"LazyWrapper");Jn.prototype=iO(uO.prototype);Jn.prototype.constructor=Jn;Nm.exports=Jn});var wi=p((NK,Gm)=>{"use strict";var Bm=Ai(),pO=as(),lO=Bm?function(e){return Bm.get(e)}:pO;Gm.exports=lO});var Wm=p((BK,Fm)=>{"use strict";var dO={};Fm.exports=dO});var Qm=p((GK,jm)=>{"use strict";var $m=Wm(),fO=Object.prototype,mO=fO.hasOwnProperty;function gO(e){for(var t=e.name+"",r=$m[t],n=mO.call($m,t)?r.length:0;n--;){var o=r[n],s=o.func;if(s==null||s==e)return o.name}return t}a(gO,"getFuncName");jm.exports=gO});var Ti=p((WK,Km)=>{"use strict";var hO=Ia(),yO=zn();function Zn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}a(Zn,"LodashWrapper");Zn.prototype=hO(yO.prototype);Zn.prototype.constructor=Zn;Km.exports=Zn});var Hm=p((jK,Vm)=>{"use strict";var AO=Xn(),bO=Ti(),IO=yr();function SO(e){if(e instanceof AO)return e.clone();var t=new bO(e.__wrapped__,e.__chain__);return t.__actions__=IO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}a(SO,"wrapperClone");Vm.exports=SO});var Jm=p((KK,zm)=>{"use strict";var wO=Xn(),Ym=Ti(),TO=zn(),EO=Ee(),vO=ke(),RO=Hm(),_O=Object.prototype,xO=_O.hasOwnProperty;function eo(e){if(vO(e)&&!EO(e)&&!(e instanceof wO)){if(e instanceof Ym)return e;if(xO.call(e,"__wrapped__"))return RO(e)}return new Ym(e)}a(eo,"lodash");eo.prototype=TO.prototype;eo.prototype.constructor=eo;zm.exports=eo});var Zm=p((HK,Xm)=>{"use strict";var CO=Xn(),OO=wi(),LO=Qm(),PO=Jm();function UO(e){var t=LO(e),r=PO[t];if(typeof r!="function"||!(t in CO.prototype))return!1;if(e===r)return!0;var n=OO(r);return!!n&&e===n[0]}a(UO,"isLaziable");Xm.exports=UO});var Ei=p((zK,eg)=>{"use strict";var qO=bi(),DO=Jo(),kO=DO(qO);eg.exports=kO});var rg=p((JK,tg)=>{"use strict";var MO=/\{\n\/\* \[wrapped with (.+)\] \*/,NO=/,? & /;function BO(e){var t=e.match(MO);return t?t[1].split(NO):[]}a(BO,"getWrapDetails");tg.exports=BO});var ng=p((ZK,ag)=>{"use strict";var GO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function FO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(GO,`{
2
2
  /* [wrapped with `+t+`] */
3
- `)}a(FO,"insertWrapDetails");rg.exports=FO});var eo=p((t2,ng)=>{"use strict";function WO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}a(WO,"arrayEach");ng.exports=WO});var sg=p((a2,og)=>{"use strict";var $O=eo(),jO=Zo(),QO=1,KO=2,VO=8,HO=16,YO=32,zO=64,JO=128,XO=256,ZO=512,eL=[["ary",JO],["bind",QO],["bindKey",KO],["curry",VO],["curryRight",HO],["flip",ZO],["partial",YO],["partialRight",zO],["rearg",XO]];function tL(e,t){return $O(eL,function(r){var n="_."+r[0];t&r[1]&&!jO(e,n)&&e.push(n)}),e.sort()}a(tL,"updateWrapDetails");og.exports=tL});var Ei=p((o2,ig)=>{"use strict";var rL=tg(),aL=ag(),nL=mn(),oL=sg();function sL(e,t,r){var n=t+"";return nL(e,aL(n,oL(rL(n),r)))}a(sL,"setWrapToString");ig.exports=sL});var Ri=p((i2,pg)=>{"use strict";var iL=Xm(),uL=Ti(),cL=Ei(),pL=1,lL=2,dL=4,fL=8,ug=32,cg=64;function mL(e,t,r,n,o,s,i,u,c,f){var g=t&fL,h=g?i:void 0,y=g?void 0:i,E=g?s:void 0,M=g?void 0:s;t|=g?ug:cg,t&=~(g?cg:ug),t&dL||(t&=~(pL|lL));var k=[e,t,o,E,h,M,y,u,c,f],D=r.apply(void 0,k);return iL(e)&&uL(D,k),D.placeholder=n,cL(D,e,t)}a(mL,"createRecurry");pg.exports=mL});var vi=p((c2,lg)=>{"use strict";function gL(e){var t=e;return t.placeholder}a(gL,"getHolder");lg.exports=gL});var fg=p((l2,dg)=>{"use strict";var hL=yr(),yL=Ra(),AL=Math.min;function bL(e,t){for(var r=e.length,n=AL(t.length,r),o=hL(e);n--;){var s=t[n];e[n]=yL(s,r)?o[s]:void 0}return e}a(bL,"reorder");dg.exports=bL});var to=p((f2,gg)=>{"use strict";var mg="__lodash_placeholder__";function IL(e,t){for(var r=-1,n=e.length,o=0,s=[];++r<n;){var i=e[r];(i===t||i===mg)&&(e[r]=mg,s[o++]=r)}return s}a(IL,"replaceHolders");gg.exports=IL});var _i=p((g2,Ag)=>{"use strict";var SL=bi(),wL=Ii(),TL=Dm(),hg=Da(),EL=Ri(),RL=vi(),vL=fg(),_L=to(),xL=_e(),CL=1,OL=2,LL=8,PL=16,UL=128,qL=512;function yg(e,t,r,n,o,s,i,u,c,f){var g=t&UL,h=t&CL,y=t&OL,E=t&(LL|PL),M=t&qL,k=y?void 0:hg(e);function D(){for(var C=arguments.length,W=Array(C),ye=C;ye--;)W[ye]=arguments[ye];if(E)var ie=RL(D),Ye=TL(W,ie);if(n&&(W=SL(W,n,o,E)),s&&(W=wL(W,s,i,E)),C-=Ye,E&&C<f){var nt=_L(W,ie);return EL(e,t,yg,D.placeholder,r,W,nt,u,c,f-C)}var ot=h?r:this,Y=y?ot[e]:e;return C=W.length,u?W=vL(W,u):M&&C>1&&W.reverse(),g&&c<C&&(W.length=c),this&&this!==xL&&this instanceof D&&(Y=k||hg(Y)),Y.apply(ot,W)}return a(D,"wrapper"),D}a(yg,"createHybrid");Ag.exports=yg});var Ig=p((y2,bg)=>{"use strict";var DL=fn(),kL=Da(),ML=_i(),NL=Ri(),BL=vi(),GL=to(),FL=_e();function WL(e,t,r){var n=kL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=BL(o);u--;)i[u]=arguments[u];var f=s<3&&i[0]!==c&&i[s-1]!==c?[]:GL(i,c);if(s-=f.length,s<r)return NL(e,t,ML,o.placeholder,void 0,i,f,void 0,void 0,r-s);var g=this&&this!==FL&&this instanceof o?n:e;return DL(g,this,i)}return a(o,"wrapper"),o}a(WL,"createCurry");bg.exports=WL});var wg=p((b2,Sg)=>{"use strict";var $L=fn(),jL=Da(),QL=_e(),KL=1;function VL(e,t,r,n){var o=t&KL,s=jL(e);function i(){for(var u=-1,c=arguments.length,f=-1,g=n.length,h=Array(g+c),y=this&&this!==QL&&this instanceof i?s:e;++f<g;)h[f]=n[f];for(;c--;)h[f++]=arguments[++u];return $L(y,o?r:this,h)}return a(i,"wrapper"),i}a(VL,"createPartial");Sg.exports=VL});var xg=p((S2,_g)=>{"use strict";var HL=bi(),YL=Ii(),Tg=to(),Eg="__lodash_placeholder__",xi=1,zL=2,JL=4,Rg=8,ka=128,vg=256,XL=Math.min;function ZL(e,t){var r=e[1],n=t[1],o=r|n,s=o<(xi|zL|ka),i=n==ka&&r==Rg||n==ka&&r==vg&&e[7].length<=t[8]||n==(ka|vg)&&t[7].length<=t[8]&&r==Rg;if(!(s||i))return e;n&xi&&(e[2]=t[2],o|=r&xi?0:JL);var u=t[3];if(u){var c=e[3];e[3]=c?HL(c,u,t[4]):u,e[4]=c?Tg(e[3],Eg):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?YL(c,u,t[6]):u,e[6]=c?Tg(e[5],Eg):t[6]),u=t[7],u&&(e[7]=u),n&ka&&(e[8]=e[8]==null?t[8]:XL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}a(ZL,"mergeData");_g.exports=ZL});var Og=p((T2,Cg)=>{"use strict";var eP=/\s/;function tP(e){for(var t=e.length;t--&&eP.test(e.charAt(t)););return t}a(tP,"trimmedEndIndex");Cg.exports=tP});var Pg=p((R2,Lg)=>{"use strict";var rP=Og(),aP=/^\s+/;function nP(e){return e&&e.slice(0,rP(e)+1).replace(aP,"")}a(nP,"baseTrim");Lg.exports=nP});var Cr=p((_2,Ug)=>{"use strict";var oP=Pt(),sP=ke(),iP="[object Symbol]";function uP(e){return typeof e=="symbol"||sP(e)&&oP(e)==iP}a(uP,"isSymbol");Ug.exports=uP});var Mg=p((C2,kg)=>{"use strict";var cP=Pg(),qg=je(),pP=Cr(),Dg=0/0,lP=/^[-+]0x[0-9a-f]+$/i,dP=/^0b[01]+$/i,fP=/^0o[0-7]+$/i,mP=parseInt;function gP(e){if(typeof e=="number")return e;if(pP(e))return Dg;if(qg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=qg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=cP(e);var r=dP.test(e);return r||fP.test(e)?mP(e.slice(2),r?2:8):lP.test(e)?Dg:+e}a(gP,"toNumber");kg.exports=gP});var Gg=p((L2,Bg)=>{"use strict";var hP=Mg(),Ng=1/0,yP=17976931348623157e292;function AP(e){if(!e)return e===0?e:0;if(e=hP(e),e===Ng||e===-Ng){var t=e<0?-1:1;return t*yP}return e===e?e:0}a(AP,"toFinite");Bg.exports=AP});var Ci=p((U2,Fg)=>{"use strict";var bP=Gg();function IP(e){var t=bP(e),r=t%1;return t===t?r?t-r:t:0}a(IP,"toInteger");Fg.exports=IP});var ro=p((D2,Kg)=>{"use strict";var SP=Ai(),wP=Lm(),TP=Ig(),EP=_i(),RP=wg(),vP=Si(),_P=xg(),xP=Ti(),CP=Ei(),Wg=Ci(),OP="Expected a function",$g=1,LP=2,Oi=8,Li=16,Pi=32,jg=64,Qg=Math.max;function PP(e,t,r,n,o,s,i,u){var c=t&LP;if(!c&&typeof e!="function")throw new TypeError(OP);var f=n?n.length:0;if(f||(t&=~(Pi|jg),n=o=void 0),i=i===void 0?i:Qg(Wg(i),0),u=u===void 0?u:Wg(u),f-=o?o.length:0,t&jg){var g=n,h=o;n=o=void 0}var y=c?void 0:vP(e),E=[e,t,r,n,o,g,h,s,i,u];if(y&&_P(E,y),e=E[0],t=E[1],r=E[2],n=E[3],o=E[4],u=E[9]=E[9]===void 0?c?0:e.length:Qg(E[9]-f,0),!u&&t&(Oi|Li)&&(t&=~(Oi|Li)),!t||t==$g)var M=wP(e,t,r);else t==Oi||t==Li?M=TP(e,t,u):(t==Pi||t==($g|Pi))&&!o.length?M=RP(e,t,r,n):M=EP.apply(void 0,E);var k=y?SP:xP;return CP(k(M,E),e,t)}a(PP,"createWrap");Kg.exports=PP});var Hg=p((M2,Vg)=>{"use strict";var UP=ro(),qP=128;function DP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,UP(e,qP,void 0,void 0,void 0,void 0,t)}a(DP,"ary");Vg.exports=DP});var zg=p((B2,Yg)=>{"use strict";var kP=ps(),MP=kP(Object.keys,Object);Yg.exports=MP});var Ui=p((G2,Jg)=>{"use strict";var NP=wn(),BP=zg(),GP=Object.prototype,FP=GP.hasOwnProperty;function WP(e){if(!NP(e))return BP(e);var t=[];for(var r in Object(e))FP.call(e,r)&&r!="constructor"&&t.push(r);return t}a(WP,"baseKeys");Jg.exports=WP});var Or=p((W2,Xg)=>{"use strict";var $P=hs(),jP=Ui(),QP=mr();function KP(e){return QP(e)?$P(e):jP(e)}a(KP,"keys");Xg.exports=KP});var qi=p((j2,Zg)=>{"use strict";var VP=Ir(),HP=Or();function YP(e,t){return e&&VP(t,HP(t),e)}a(YP,"baseAssign");Zg.exports=YP});var th=p((K2,eh)=>{"use strict";var zP=Ir(),JP=Sr();function XP(e,t){return e&&zP(t,JP(t),e)}a(XP,"baseAssignIn");eh.exports=XP});var ah=p((H2,rh)=>{"use strict";function ZP(e,t){for(var r=-1,n=e==null?0:e.length,o=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}a(ZP,"arrayFilter");rh.exports=ZP});var Di=p((z2,nh)=>{"use strict";function eU(){return[]}a(eU,"stubArray");nh.exports=eU});var ao=p((X2,sh)=>{"use strict";var tU=ah(),rU=Di(),aU=Object.prototype,nU=aU.propertyIsEnumerable,oh=Object.getOwnPropertySymbols,oU=oh?function(e){return e==null?[]:(e=Object(e),tU(oh(e),function(t){return nU.call(e,t)}))}:rU;sh.exports=oU});var uh=p((Z2,ih)=>{"use strict";var sU=Ir(),iU=ao();function uU(e,t){return sU(e,iU(e),t)}a(uU,"copySymbols");ih.exports=uU});var ki=p((tV,ch)=>{"use strict";var cU=dn(),pU=Sn(),lU=ao(),dU=Di(),fU=Object.getOwnPropertySymbols,mU=fU?function(e){for(var t=[];e;)cU(t,lU(e)),e=pU(e);return t}:dU;ch.exports=mU});var lh=p((rV,ph)=>{"use strict";var gU=Ir(),hU=ki();function yU(e,t){return gU(e,hU(e),t)}a(yU,"copySymbolsIn");ph.exports=yU});var Mi=p((nV,dh)=>{"use strict";var AU=dn(),bU=Ee();function IU(e,t,r){var n=t(e);return bU(e)?n:AU(n,r(e))}a(IU,"baseGetAllKeys");dh.exports=IU});var Ni=p((sV,fh)=>{"use strict";var SU=Mi(),wU=ao(),TU=Or();function EU(e){return SU(e,TU,wU)}a(EU,"getAllKeys");fh.exports=EU});var gh=p((uV,mh)=>{"use strict";var RU=Mi(),vU=ki(),_U=Sr();function xU(e){return RU(e,_U,vU)}a(xU,"getAllKeysIn");mh.exports=xU});var yh=p((pV,hh)=>{"use strict";var CU=Ut(),OU=_e(),LU=CU(OU,"DataView");hh.exports=LU});var bh=p((lV,Ah)=>{"use strict";var PU=Ut(),UU=_e(),qU=PU(UU,"Promise");Ah.exports=qU});var Pr=p((dV,vh)=>{"use strict";var Bi=yh(),Gi=gn(),Fi=bh(),Wi=ts(),$i=hi(),Rh=Pt(),Lr=Ho(),Ih="[object Map]",DU="[object Object]",Sh="[object Promise]",wh="[object Set]",Th="[object WeakMap]",Eh="[object DataView]",kU=Lr(Bi),MU=Lr(Gi),NU=Lr(Fi),BU=Lr(Wi),GU=Lr($i),Xt=Rh;(Bi&&Xt(new Bi(new ArrayBuffer(1)))!=Eh||Gi&&Xt(new Gi)!=Ih||Fi&&Xt(Fi.resolve())!=Sh||Wi&&Xt(new Wi)!=wh||$i&&Xt(new $i)!=Th)&&(Xt=a(function(e){var t=Rh(e),r=t==DU?e.constructor:void 0,n=r?Lr(r):"";if(n)switch(n){case kU:return Eh;case MU:return Ih;case NU:return Sh;case BU:return wh;case GU:return Th}return t},"getTag"));vh.exports=Xt});var xh=p((mV,_h)=>{"use strict";var FU=Object.prototype,WU=FU.hasOwnProperty;function $U(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&WU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}a($U,"initCloneArray");_h.exports=$U});var Oh=p((hV,Ch)=>{"use strict";var jU=In();function QU(e,t){var r=t?jU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}a(QU,"cloneDataView");Ch.exports=QU});var Ph=p((AV,Lh)=>{"use strict";var KU=/\w*$/;function VU(e){var t=new e.constructor(e.source,KU.exec(e));return t.lastIndex=e.lastIndex,t}a(VU,"cloneRegExp");Lh.exports=VU});var Mh=p((IV,kh)=>{"use strict";var Uh=Qt(),qh=Uh?Uh.prototype:void 0,Dh=qh?qh.valueOf:void 0;function HU(e){return Dh?Object(Dh.call(e)):{}}a(HU,"cloneSymbol");kh.exports=HU});var Bh=p((wV,Nh)=>{"use strict";var YU=In(),zU=Oh(),JU=Ph(),XU=Mh(),ZU=cs(),eq="[object Boolean]",tq="[object Date]",rq="[object Map]",aq="[object Number]",nq="[object RegExp]",oq="[object Set]",sq="[object String]",iq="[object Symbol]",uq="[object ArrayBuffer]",cq="[object DataView]",pq="[object Float32Array]",lq="[object Float64Array]",dq="[object Int8Array]",fq="[object Int16Array]",mq="[object Int32Array]",gq="[object Uint8Array]",hq="[object Uint8ClampedArray]",yq="[object Uint16Array]",Aq="[object Uint32Array]";function bq(e,t,r){var n=e.constructor;switch(t){case uq:return YU(e);case eq:case tq:return new n(+e);case cq:return zU(e,r);case pq:case lq:case dq:case fq:case mq:case gq:case hq:case yq:case Aq:return ZU(e,r);case rq:return new n;case aq:case sq:return new n(e);case nq:return JU(e);case oq:return new n;case iq:return XU(e)}}a(bq,"initCloneByTag");Nh.exports=bq});var Fh=p((EV,Gh)=>{"use strict";var Iq=Pr(),Sq=ke(),wq="[object Map]";function Tq(e){return Sq(e)&&Iq(e)==wq}a(Tq,"baseIsMap");Gh.exports=Tq});var Qh=p((vV,jh)=>{"use strict";var Eq=Fh(),Rq=Tn(),Wh=En(),$h=Wh&&Wh.isMap,vq=$h?Rq($h):Eq;jh.exports=vq});var Vh=p((_V,Kh)=>{"use strict";var _q=Pr(),xq=ke(),Cq="[object Set]";function Oq(e){return xq(e)&&_q(e)==Cq}a(Oq,"baseIsSet");Kh.exports=Oq});var Jh=p((CV,zh)=>{"use strict";var Lq=Vh(),Pq=Tn(),Hh=En(),Yh=Hh&&Hh.isSet,Uq=Yh?Pq(Yh):Lq;zh.exports=Uq});var ji=p((OV,ty)=>{"use strict";var qq=ya(),Dq=eo(),kq=gs(),Mq=qi(),Nq=th(),Bq=is(),Gq=yr(),Fq=uh(),Wq=lh(),$q=Ni(),jq=gh(),Qq=Pr(),Kq=xh(),Vq=Bh(),Hq=ls(),Yq=Ee(),zq=wa(),Jq=Qh(),Xq=je(),Zq=Jh(),eD=Or(),tD=Sr(),rD=1,aD=2,nD=4,Xh="[object Arguments]",oD="[object Array]",sD="[object Boolean]",iD="[object Date]",uD="[object Error]",Zh="[object Function]",cD="[object GeneratorFunction]",pD="[object Map]",lD="[object Number]",ey="[object Object]",dD="[object RegExp]",fD="[object Set]",mD="[object String]",gD="[object Symbol]",hD="[object WeakMap]",yD="[object ArrayBuffer]",AD="[object DataView]",bD="[object Float32Array]",ID="[object Float64Array]",SD="[object Int8Array]",wD="[object Int16Array]",TD="[object Int32Array]",ED="[object Uint8Array]",RD="[object Uint8ClampedArray]",vD="[object Uint16Array]",_D="[object Uint32Array]",V={};V[Xh]=V[oD]=V[yD]=V[AD]=V[sD]=V[iD]=V[bD]=V[ID]=V[SD]=V[wD]=V[TD]=V[pD]=V[lD]=V[ey]=V[dD]=V[fD]=V[mD]=V[gD]=V[ED]=V[RD]=V[vD]=V[_D]=!0;V[uD]=V[Zh]=V[hD]=!1;function no(e,t,r,n,o,s){var i,u=t&rD,c=t&aD,f=t&nD;if(r&&(i=o?r(e,n,o,s):r(e)),i!==void 0)return i;if(!Xq(e))return e;var g=Yq(e);if(g){if(i=Kq(e),!u)return Gq(e,i)}else{var h=Qq(e),y=h==Zh||h==cD;if(zq(e))return Bq(e,u);if(h==ey||h==Xh||y&&!o){if(i=c||y?{}:Hq(e),!u)return c?Wq(e,Nq(i,e)):Fq(e,Mq(i,e))}else{if(!V[h])return o?e:{};i=Vq(e,h,u)}}s||(s=new qq);var E=s.get(e);if(E)return E;s.set(e,i),Zq(e)?e.forEach(function(D){i.add(no(D,t,r,D,e,s))}):Jq(e)&&e.forEach(function(D,C){i.set(C,no(D,t,r,C,e,s))});var M=f?c?jq:$q:c?tD:eD,k=g?void 0:M(e);return Dq(k||e,function(D,C){k&&(C=D,D=e[C]),kq(i,C,no(D,t,r,C,e,s))}),i}a(no,"baseClone");ty.exports=no});var ay=p((PV,ry)=>{"use strict";var xD=ji(),CD=4;function OD(e){return xD(e,CD)}a(OD,"clone");ry.exports=OD});var oy=p((qV,ny)=>{"use strict";var LD=ro(),PD=8;function Qi(e,t,r){t=r?void 0:t;var n=LD(e,PD,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Qi.placeholder,n}a(Qi,"curry");Qi.placeholder={};ny.exports=Qi});var iy=p((kV,sy)=>{"use strict";var UD=Pt(),qD=ke(),DD=ds(),kD="[object DOMException]",MD="[object Error]";function ND(e){if(!qD(e))return!1;var t=UD(e);return t==MD||t==kD||typeof e.message=="string"&&typeof e.name=="string"&&!DD(e)}a(ND,"isError");sy.exports=ND});var cy=p((NV,uy)=>{"use strict";var BD=Pr(),GD=ke(),FD="[object WeakMap]";function WD(e){return GD(e)&&BD(e)==FD}a(WD,"isWeakMap");uy.exports=WD});var ly=p((GV,py)=>{"use strict";function $D(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}a($D,"arraySome");py.exports=$D});var Ki=p((WV,dy)=>{"use strict";var jD=Xo(),QD=ly(),KD=es(),VD=1,HD=2;function YD(e,t,r,n,o,s){var i=r&VD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var f=s.get(e),g=s.get(t);if(f&&g)return f==t&&g==e;var h=-1,y=!0,E=r&HD?new jD:void 0;for(s.set(e,t),s.set(t,e);++h<u;){var M=e[h],k=t[h];if(n)var D=i?n(k,M,h,t,e,s):n(M,k,h,e,t,s);if(D!==void 0){if(D)continue;y=!1;break}if(E){if(!QD(t,function(C,W){if(!KD(E,W)&&(M===C||o(M,C,r,n,s)))return E.push(W)})){y=!1;break}}else if(!(M===k||o(M,k,r,n,s))){y=!1;break}}return s.delete(e),s.delete(t),y}a(YD,"equalArrays");dy.exports=YD});var my=p((jV,fy)=>{"use strict";function zD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,o){r[++t]=[o,n]}),r}a(zD,"mapToArray");fy.exports=zD});var by=p((KV,Ay)=>{"use strict";var gy=Qt(),hy=us(),JD=lr(),XD=Ki(),ZD=my(),ek=An(),tk=1,rk=2,ak="[object Boolean]",nk="[object Date]",ok="[object Error]",sk="[object Map]",ik="[object Number]",uk="[object RegExp]",ck="[object Set]",pk="[object String]",lk="[object Symbol]",dk="[object ArrayBuffer]",fk="[object DataView]",yy=gy?gy.prototype:void 0,Vi=yy?yy.valueOf:void 0;function mk(e,t,r,n,o,s,i){switch(r){case fk:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case dk:return!(e.byteLength!=t.byteLength||!s(new hy(e),new hy(t)));case ak:case nk:case ik:return JD(+e,+t);case ok:return e.name==t.name&&e.message==t.message;case uk:case pk:return e==t+"";case sk:var u=ZD;case ck:var c=n&tk;if(u||(u=ek),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=rk,i.set(e,t);var g=XD(u(e),u(t),n,o,s,i);return i.delete(e),g;case lk:if(Vi)return Vi.call(e)==Vi.call(t)}return!1}a(mk,"equalByTag");Ay.exports=mk});var wy=p((HV,Sy)=>{"use strict";var Iy=Ni(),gk=1,hk=Object.prototype,yk=hk.hasOwnProperty;function Ak(e,t,r,n,o,s){var i=r&gk,u=Iy(e),c=u.length,f=Iy(t),g=f.length;if(c!=g&&!i)return!1;for(var h=c;h--;){var y=u[h];if(!(i?y in t:yk.call(t,y)))return!1}var E=s.get(e),M=s.get(t);if(E&&M)return E==t&&M==e;var k=!0;s.set(e,t),s.set(t,e);for(var D=i;++h<c;){y=u[h];var C=e[y],W=t[y];if(n)var ye=i?n(W,C,y,t,e,s):n(C,W,y,e,t,s);if(!(ye===void 0?C===W||o(C,W,r,n,s):ye)){k=!1;break}D||(D=y=="constructor")}if(k&&!D){var ie=e.constructor,Ye=t.constructor;ie!=Ye&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ye=="function"&&Ye instanceof Ye)&&(k=!1)}return s.delete(e),s.delete(t),k}a(Ak,"equalObjects");Sy.exports=Ak});var Oy=p((zV,Cy)=>{"use strict";var Hi=ya(),bk=Ki(),Ik=by(),Sk=wy(),Ty=Pr(),Ey=Ee(),Ry=wa(),wk=Rn(),Tk=1,vy="[object Arguments]",_y="[object Array]",oo="[object Object]",Ek=Object.prototype,xy=Ek.hasOwnProperty;function Rk(e,t,r,n,o,s){var i=Ey(e),u=Ey(t),c=i?_y:Ty(e),f=u?_y:Ty(t);c=c==vy?oo:c,f=f==vy?oo:f;var g=c==oo,h=f==oo,y=c==f;if(y&&Ry(e)){if(!Ry(t))return!1;i=!0,g=!1}if(y&&!g)return s||(s=new Hi),i||wk(e)?bk(e,t,r,n,o,s):Ik(e,t,c,r,n,o,s);if(!(r&Tk)){var E=g&&xy.call(e,"__wrapped__"),M=h&&xy.call(t,"__wrapped__");if(E||M){var k=E?e.value():e,D=M?t.value():t;return s||(s=new Hi),o(k,D,r,n,s)}}return y?(s||(s=new Hi),Sk(e,t,r,n,o,s)):!1}a(Rk,"baseIsEqualDeep");Cy.exports=Rk});var Yi=p((XV,Uy)=>{"use strict";var vk=Oy(),Ly=ke();function Py(e,t,r,n,o){return e===t?!0:e==null||t==null||!Ly(e)&&!Ly(t)?e!==e&&t!==t:vk(e,t,r,n,Py,o)}a(Py,"baseIsEqual");Uy.exports=Py});var Dy=p((eH,qy)=>{"use strict";var _k=ya(),xk=Yi(),Ck=1,Ok=2;function Lk(e,t,r,n){var o=r.length,s=o,i=!n;if(e==null)return!s;for(e=Object(e);o--;){var u=r[o];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<s;){u=r[o];var c=u[0],f=e[c],g=u[1];if(i&&u[2]){if(f===void 0&&!(c in e))return!1}else{var h=new _k;if(n)var y=n(f,g,c,e,t,h);if(!(y===void 0?xk(g,f,Ck|Ok,n,h):y))return!1}}return!0}a(Lk,"baseIsMatch");qy.exports=Lk});var zi=p((rH,ky)=>{"use strict";var Pk=je();function Uk(e){return e===e&&!Pk(e)}a(Uk,"isStrictComparable");ky.exports=Uk});var Ny=p((nH,My)=>{"use strict";var qk=zi(),Dk=Or();function kk(e){for(var t=Dk(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,qk(o)]}return t}a(kk,"getMatchData");My.exports=kk});var Ji=p((sH,By)=>{"use strict";function Mk(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}a(Mk,"matchesStrictComparable");By.exports=Mk});var Fy=p((uH,Gy)=>{"use strict";var Nk=Dy(),Bk=Ny(),Gk=Ji();function Fk(e){var t=Bk(e);return t.length==1&&t[0][2]?Gk(t[0][0],t[0][1]):function(r){return r===e||Nk(r,e,t)}}a(Fk,"baseMatches");Gy.exports=Fk});var so=p((pH,Wy)=>{"use strict";var Wk=Ee(),$k=Cr(),jk=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Qk=/^\w*$/;function Kk(e,t){if(Wk(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||$k(e)?!0:Qk.test(e)||!jk.test(e)||t!=null&&e in Object(t)}a(Kk,"isKey");Wy.exports=Kk});var Qy=p((dH,jy)=>{"use strict";var $y=hn(),Vk="Expected a function";function Xi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Vk);var r=a(function(){var n=arguments,o=t?t.apply(this,n):n[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,n);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(Xi.Cache||$y),r}a(Xi,"memoize");Xi.Cache=$y;jy.exports=Xi});var Vy=p((mH,Ky)=>{"use strict";var Hk=Qy(),Yk=500;function zk(e){var t=Hk(e,function(n){return r.size===Yk&&r.clear(),n}),r=t.cache;return t}a(zk,"memoizeCapped");Ky.exports=zk});var Zi=p((hH,Hy)=>{"use strict";var Jk=Vy(),Xk=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Zk=/\\(\\)?/g,eM=Jk(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Xk,function(r,n,o,s){t.push(o?s.replace(Zk,"$1"):n||r)}),t});Hy.exports=eM});var eu=p((yH,Yy)=>{"use strict";function tM(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}a(tM,"arrayMap");Yy.exports=tM});var tA=p((bH,eA)=>{"use strict";var zy=Qt(),rM=eu(),aM=Ee(),nM=Cr(),oM=1/0,Jy=zy?zy.prototype:void 0,Xy=Jy?Jy.toString:void 0;function Zy(e){if(typeof e=="string")return e;if(aM(e))return rM(e,Zy)+"";if(nM(e))return Xy?Xy.call(e):"";var t=e+"";return t=="0"&&1/e==-oM?"-0":t}a(Zy,"baseToString");eA.exports=Zy});var tu=p((SH,rA)=>{"use strict";var sM=tA();function iM(e){return e==null?"":sM(e)}a(iM,"toString");rA.exports=iM});var ru=p((TH,aA)=>{"use strict";var uM=Ee(),cM=so(),pM=Zi(),lM=tu();function dM(e,t){return uM(e)?e:cM(e,t)?[e]:pM(lM(e))}a(dM,"castPath");aA.exports=dM});var Ur=p((RH,nA)=>{"use strict";var fM=Cr(),mM=1/0;function gM(e){if(typeof e=="string"||fM(e))return e;var t=e+"";return t=="0"&&1/e==-mM?"-0":t}a(gM,"toKey");nA.exports=gM});var au=p((_H,oA)=>{"use strict";var hM=ru(),yM=Ur();function AM(e,t){t=hM(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[yM(t[r++])];return r&&r==n?e:void 0}a(AM,"baseGet");oA.exports=AM});var iA=p((CH,sA)=>{"use strict";var bM=au();function IM(e,t,r){var n=e==null?void 0:bM(e,t);return n===void 0?r:n}a(IM,"get");sA.exports=IM});var cA=p((LH,uA)=>{"use strict";function SM(e,t){return e!=null&&t in Object(e)}a(SM,"baseHasIn");uA.exports=SM});var lA=p((UH,pA)=>{"use strict";var wM=ru(),TM=pa(),EM=Ee(),RM=Ra(),vM=bn(),_M=Ur();function xM(e,t,r){t=wM(t,e);for(var n=-1,o=t.length,s=!1;++n<o;){var i=_M(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=o?s:(o=e==null?0:e.length,!!o&&vM(o)&&RM(i,o)&&(EM(e)||TM(e)))}a(xM,"hasPath");pA.exports=xM});var fA=p((DH,dA)=>{"use strict";var CM=cA(),OM=lA();function LM(e,t){return e!=null&&OM(e,t,CM)}a(LM,"hasIn");dA.exports=LM});var gA=p((MH,mA)=>{"use strict";var PM=Yi(),UM=iA(),qM=fA(),DM=so(),kM=zi(),MM=Ji(),NM=Ur(),BM=1,GM=2;function FM(e,t){return DM(e)&&kM(t)?MM(NM(e),t):function(r){var n=UM(r,e);return n===void 0&&n===t?qM(r,e):PM(t,n,BM|GM)}}a(FM,"baseMatchesProperty");mA.exports=FM});var yA=p((BH,hA)=>{"use strict";function WM(e){return function(t){return t?.[e]}}a(WM,"baseProperty");hA.exports=WM});var bA=p((FH,AA)=>{"use strict";var $M=au();function jM(e){return function(t){return $M(t,e)}}a(jM,"basePropertyDeep");AA.exports=jM});var SA=p(($H,IA)=>{"use strict";var QM=yA(),KM=bA(),VM=so(),HM=Ur();function YM(e){return VM(e)?QM(HM(e)):KM(e)}a(YM,"property");IA.exports=YM});var nu=p((QH,wA)=>{"use strict";var zM=Fy(),JM=gA(),XM=la(),ZM=Ee(),eN=SA();function tN(e){return typeof e=="function"?e:e==null?XM:typeof e=="object"?ZM(e)?JM(e[0],e[1]):zM(e):eN(e)}a(tN,"baseIteratee");wA.exports=tN});var EA=p((VH,TA)=>{"use strict";var rN=ji(),aN=nu(),nN=1;function oN(e){return aN(typeof e=="function"?e:rN(e,nN))}a(oN,"iteratee");TA.exports=oN});var vA=p((YH,RA)=>{"use strict";var sN=Qo();function iN(e){var t=e==null?0:e.length;return t?sN(e,1):[]}a(iN,"flatten");RA.exports=iN});var xA=p((JH,_A)=>{"use strict";var uN=vA(),cN=Ko(),pN=mn();function lN(e){return pN(cN(e,void 0,uN),e+"")}a(lN,"flatRest");_A.exports=lN});var OA=p((ZH,CA)=>{"use strict";var dN=ro(),fN=xA(),mN=256,gN=fN(function(e,t){return dN(e,mN,void 0,void 0,void 0,t)});CA.exports=gN});var PA=p((eY,LA)=>{"use strict";var hN=eu(),yN=yr(),AN=Ee(),bN=Cr(),IN=Zi(),SN=Ur(),wN=tu();function TN(e){return AN(e)?hN(e,SN):bN(e)?[e]:yN(IN(wN(e)))}a(TN,"toPath");LA.exports=TN});var qA=p((rY,UA)=>{"use strict";UA.exports={ary:Hg(),assign:qi(),clone:ay(),curry:oy(),forEach:eo(),isArray:Ee(),isError:iy(),isFunction:da(),isWeakMap:cy(),iteratee:EA(),keys:Ui(),rearg:OA(),toInteger:Ci(),toPath:PA()}});var kA=p((aY,DA)=>{"use strict";var EN=Tm(),RN=qA();function vN(e,t,r){return EN(RN,e,t,r)}a(vN,"convert");DA.exports=vN});var ou=p((oY,NA)=>{"use strict";var _N=kA(),MA=_N("merge",ys());MA.placeholder=di();NA.exports=MA});var $A=p((su,iu)=>{"use strict";(function(e,t){typeof su=="object"&&typeof iu<"u"?iu.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(su,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",o="second",s="minute",i="hour",u="day",c="week",f="month",g="quarter",h="year",y="date",E="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,D={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(O){var w=["th","st","nd","rd"],A=O%100;return"["+O+(w[(A-20)%10]||w[A]||w[0])+"]"}},C=a(function(O,w,A){var _=String(O);return!_||_.length>=w?O:""+Array(w+1-_.length).join(A)+O},"m"),W={s:C,z:function(O){var w=-O.utcOffset(),A=Math.abs(w),_=Math.floor(A/60),S=A%60;return(w<=0?"+":"-")+C(_,2,"0")+":"+C(S,2,"0")},m:a(function O(w,A){if(w.date()<A.date())return-O(A,w);var _=12*(A.year()-w.year())+(A.month()-w.month()),S=w.clone().add(_,f),U=A-S<0,P=w.clone().add(_+(U?-1:1),f);return+(-(_+(A-S)/(U?S-P:P-S))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:f,y:h,w:c,d:u,D:y,h:i,m:s,s:o,ms:n,Q:g}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},ye="en",ie={};ie[ye]=D;var Ye="$isDayjsObject",nt=a(function(O){return O instanceof Gt||!(!O||!O[Ye])},"S"),ot=a(function O(w,A,_){var S;if(!w)return ye;if(typeof w=="string"){var U=w.toLowerCase();ie[U]&&(S=U),A&&(ie[U]=A,S=U);var P=w.split("-");if(!S&&P.length>1)return O(P[0])}else{var $=w.name;ie[$]=w,S=$}return!_&&S&&(ye=S),S||!_&&ye},"t"),Y=a(function(O,w){if(nt(O))return O.clone();var A=typeof w=="object"?w:{};return A.date=O,A.args=arguments,new Gt(A)},"O"),G=W;G.l=ot,G.i=nt,G.w=function(O,w){return Y(O,{locale:w.$L,utc:w.$u,x:w.$x,$offset:w.$offset})};var Gt=function(){function O(A){this.$L=ot(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[Ye]=!0}a(O,"M");var w=O.prototype;return w.parse=function(A){this.$d=function(_){var S=_.date,U=_.utc;if(S===null)return new Date(NaN);if(G.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var P=S.match(M);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return U?new Date(Date.UTC(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)):new Date(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)}}return new Date(S)}(A),this.init()},w.init=function(){var A=this.$d;this.$y=A.getFullYear(),this.$M=A.getMonth(),this.$D=A.getDate(),this.$W=A.getDay(),this.$H=A.getHours(),this.$m=A.getMinutes(),this.$s=A.getSeconds(),this.$ms=A.getMilliseconds()},w.$utils=function(){return G},w.isValid=function(){return this.$d.toString()!==E},w.isSame=function(A,_){var S=Y(A);return this.startOf(_)<=S&&S<=this.endOf(_)},w.isAfter=function(A,_){return Y(A)<this.startOf(_)},w.isBefore=function(A,_){return this.endOf(_)<Y(A)},w.$g=function(A,_,S){return G.u(A)?this[_]:this.set(S,A)},w.unix=function(){return Math.floor(this.valueOf()/1e3)},w.valueOf=function(){return this.$d.getTime()},w.startOf=function(A,_){var S=this,U=!!G.u(_)||_,P=G.p(A),$=a(function(I,v){var q=G.w(S.$u?Date.UTC(S.$y,v,I):new Date(S.$y,v,I),S);return U?q:q.endOf(u)},"l"),Z=a(function(I,v){return G.w(S.toDate()[I].apply(S.toDate("s"),(U?[0,0,0,0]:[23,59,59,999]).slice(v)),S)},"$"),ne=this.$W,pe=this.$M,K=this.$D,Ge="set"+(this.$u?"UTC":"");switch(P){case h:return U?$(1,0):$(31,11);case f:return U?$(1,pe):$(0,pe+1);case c:var R=this.$locale().weekStart||0,b=(ne<R?ne+7:ne)-R;return $(U?K-b:K+(6-b),pe);case u:case y:return Z(Ge+"Hours",0);case i:return Z(Ge+"Minutes",1);case s:return Z(Ge+"Seconds",2);case o:return Z(Ge+"Milliseconds",3);default:return this.clone()}},w.endOf=function(A){return this.startOf(A,!1)},w.$set=function(A,_){var S,U=G.p(A),P="set"+(this.$u?"UTC":""),$=(S={},S[u]=P+"Date",S[y]=P+"Date",S[f]=P+"Month",S[h]=P+"FullYear",S[i]=P+"Hours",S[s]=P+"Minutes",S[o]=P+"Seconds",S[n]=P+"Milliseconds",S)[U],Z=U===u?this.$D+(_-this.$W):_;if(U===f||U===h){var ne=this.clone().set(y,1);ne.$d[$](Z),ne.init(),this.$d=ne.set(y,Math.min(this.$D,ne.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},w.set=function(A,_){return this.clone().$set(A,_)},w.get=function(A){return this[G.p(A)]()},w.add=function(A,_){var S,U=this;A=Number(A);var P=G.p(_),$=a(function(pe){var K=Y(U);return G.w(K.date(K.date()+Math.round(pe*A)),U)},"y");if(P===f)return this.set(f,this.$M+A);if(P===h)return this.set(h,this.$y+A);if(P===u)return $(1);if(P===c)return $(7);var Z=(S={},S[s]=t,S[i]=r,S[o]=e,S)[P]||1,ne=this.$d.getTime()+A*Z;return G.w(ne,this)},w.subtract=function(A,_){return this.add(-1*A,_)},w.format=function(A){var _=this,S=this.$locale();if(!this.isValid())return S.invalidDate||E;var U=A||"YYYY-MM-DDTHH:mm:ssZ",P=G.z(this),$=this.$H,Z=this.$m,ne=this.$M,pe=S.weekdays,K=S.months,Ge=S.meridiem,R=a(function(v,q,oe,Re){return v&&(v[q]||v(_,U))||oe[q].slice(0,Re)},"h"),b=a(function(v){return G.s($%12||12,v,"0")},"d"),I=Ge||function(v,q,oe){var Re=v<12?"AM":"PM";return oe?Re.toLowerCase():Re};return U.replace(k,function(v,q){return q||function(oe){switch(oe){case"YY":return String(_.$y).slice(-2);case"YYYY":return G.s(_.$y,4,"0");case"M":return ne+1;case"MM":return G.s(ne+1,2,"0");case"MMM":return R(S.monthsShort,ne,K,3);case"MMMM":return R(K,ne);case"D":return _.$D;case"DD":return G.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return R(S.weekdaysMin,_.$W,pe,2);case"ddd":return R(S.weekdaysShort,_.$W,pe,3);case"dddd":return pe[_.$W];case"H":return String($);case"HH":return G.s($,2,"0");case"h":return b(1);case"hh":return b(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return G.s(Z,2,"0");case"s":return String(_.$s);case"ss":return G.s(_.$s,2,"0");case"SSS":return G.s(_.$ms,3,"0");case"Z":return P}return null}(v)||P.replace(":","")})},w.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},w.diff=function(A,_,S){var U,P=this,$=G.p(_),Z=Y(A),ne=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=a(function(){return G.m(P,Z)},"D");switch($){case h:U=K()/12;break;case f:U=K();break;case g:U=K()/3;break;case c:U=(pe-ne)/6048e5;break;case u:U=(pe-ne)/864e5;break;case i:U=pe/r;break;case s:U=pe/t;break;case o:U=pe/e;break;default:U=pe}return S?U:G.a(U)},w.daysInMonth=function(){return this.endOf(f).$D},w.$locale=function(){return ie[this.$L]},w.locale=function(A,_){if(!A)return this.$L;var S=this.clone(),U=ot(A,_,!0);return U&&(S.$L=U),S},w.clone=function(){return G.w(this.$d,this)},w.toDate=function(){return new Date(this.valueOf())},w.toJSON=function(){return this.isValid()?this.toISOString():null},w.toISOString=function(){return this.$d.toISOString()},w.toString=function(){return this.$d.toUTCString()},O}(),Ha=Gt.prototype;return Y.prototype=Ha,[["$ms",n],["$s",o],["$m",s],["$H",i],["$W",u],["$M",f],["$y",h],["$D",y]].forEach(function(O){Ha[O[1]]=function(w){return this.$g(w,O[0],O[1])}}),Y.extend=function(O,w){return O.$i||(O(w,Gt,Y),O.$i=!0),Y},Y.locale=ot,Y.isDayjs=nt,Y.unix=function(O){return Y(1e3*O)},Y.en=ie[ye],Y.Ls=ie,Y.p={},Y})});var Fb=p((w4,Gb)=>{"use strict";function YN(e,t,r,n){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(n,i,r(i),e)}return n}a(YN,"arrayAggregator");Gb.exports=YN});var $b=p((E4,Wb)=>{"use strict";var zN=ss(),JN=Or();function XN(e,t){return e&&zN(e,t,JN)}a(XN,"baseForOwn");Wb.exports=XN});var Qb=p((v4,jb)=>{"use strict";var ZN=mr();function eB(e,t){return function(r,n){if(r==null)return r;if(!ZN(r))return e(r,n);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&n(i[s],s,i)!==!1;);return r}}a(eB,"createBaseEach");jb.exports=eB});var Vb=p((x4,Kb)=>{"use strict";var tB=$b(),rB=Qb(),aB=rB(tB);Kb.exports=aB});var Yb=p((C4,Hb)=>{"use strict";var nB=Vb();function oB(e,t,r,n){return nB(e,function(o,s,i){t(n,o,r(o),i)}),n}a(oB,"baseAggregator");Hb.exports=oB});var Jb=p((L4,zb)=>{"use strict";var sB=Fb(),iB=Yb(),uB=nu(),cB=Ee();function pB(e,t){return function(r,n){var o=cB(r)?sB:iB,s=t?t():{};return o(r,e,uB(n,2),s)}}a(pB,"createAggregator");zb.exports=pB});var Zb=p((U4,Xb)=>{"use strict";var lB=Aa(),dB=Jb(),fB=Object.prototype,mB=fB.hasOwnProperty,gB=dB(function(e,t,r){mB.call(e,r)?e[r].push(t):lB(e,r,[t])});Xb.exports=gB});var NB={};x(NB,{Method:()=>To,ai:()=>Ku,api:()=>Iu,auditLogs:()=>kt,automations:()=>$n,backups:()=>Ne,branding:()=>Ln,constants:()=>aa,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>ym,licensing:()=>ct,logger:()=>Zt,mappers:()=>ce,middleware:()=>mu,plugins:()=>jn,publicApi:()=>Vn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,sdk:()=>uu,users:()=>Gn,utils:()=>cr});module.exports=UI(NB);var To=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(To||{});var uu={};x(uu,{ai:()=>Ds,auditLogs:()=>kt,automations:()=>$n,backups:()=>Ne,branding:()=>Ln,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>ym,licensing:()=>ct,logger:()=>Zt,plugins:()=>jn,publicApi:()=>Vn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,users:()=>Gn,utils:()=>cr});var Ln={};x(Ln,{getBrandingConfig:()=>Rx});var Ze={};x(Ze,{checkBackups:()=>xe,checkFeature:()=>Cn,checkFeatures:()=>xs,checkSCIM:()=>Us,isAppBuildersEnabled:()=>Ls,isAuditLogsEnabled:()=>On,isBackupsEnabled:()=>Cs,isBrandingEnabled:()=>Os,isEnforceableSSO:()=>Of,isExpandedPublicApiEnabled:()=>It,isPWAEnabled:()=>Ax,isPkceOidcEnabled:()=>Ix,isRecaptchaEnabled:()=>bx,isSSOEnforced:()=>Sx,isSyncAutomationsEnabled:()=>hx,isTriggerAutomationRunEnabled:()=>yx,isUserGroupsEnabled:()=>Ps,isViewPermissionEnabled:()=>wx,isViewReadonlyColumnsEnabled:()=>Tx});var bt=require("@budibase/backend-core"),Ae=require("@budibase/types");var ct={};x(ct,{cache:()=>Je,client:()=>Lt,features:()=>pn,getFreeLicense:()=>Rs,getLicense:()=>Ts,getLicenseFromKey:()=>Es,keys:()=>_s,offline:()=>vn,quotas:()=>ln});var Je={};x(Je,{getCachedLicense:()=>xf,invalidate:()=>Cf,refresh:()=>Kt});var Ya=require("@budibase/backend-core");var kr,qI=a(async()=>{kr=await Ya.RedisClient.init(Ya.redis.utils.Databases.LICENSES)},"init"),DI=a(async()=>{kr&&await kr.finish()},"shutdown");process.on("exit",async()=>{await DI()});var Eo=a(async()=>(kr||await qI(),kr),"getClient");var Lt={};x(Lt,{activateLicenseKey:()=>Go,getLicense:()=>ir,getLicenseFromKey:()=>Bo,triggerQuota:()=>IS});var Yu=F(require("node-fetch"));var zu=require("@budibase/backend-core"),Ro=require("dd-trace"),Ju=require("dd-trace/ext/formats");var vo=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await Ro.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...n.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";zu.logging.correlation.setHeader(s),Ro.tracer.inject(o,Ju.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(n.body):n.body,headers:s,credentials:"include"};return(0,Yu.default)(`${this.host}${r}`,u)});this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}static{a(this,"API")}},_o=vo;var sn=require("@budibase/types"),B=require("@budibase/backend-core");var it={};x(it,{bustCache:()=>Oo,getCurrentUsageValues:()=>oc,getQuotaUsage:()=>Ft,setAllUsage:()=>Po,setAppUsageValue:()=>Lo,setUsage:()=>rc,setUsagePerApp:()=>ac,utils:()=>Gr});var Le=require("@budibase/backend-core"),ve=require("@budibase/types");var Gr={};x(Gr,{generateBaseQuotaUsage:()=>Ja,generateNewMonthlyQuotas:()=>Br,generateNewQuotaUsage:()=>Co,getBreakdownName:()=>Za,getCurrentMonthString:()=>xt,getQuotaDocId:()=>Nr,setCurrentMonth:()=>Xa,setQuotaReset:()=>xo});var Mr=require("@budibase/backend-core"),za=require("@budibase/shared-core"),le=require("@budibase/types");var Nr=a(()=>Mr.context.isSelfHostUsingCloud()?`quota_usage_${Mr.context.getTenantId()}`:Mr.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),Xu=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),xo=a(e=>{e.quotaReset=Xu()},"setQuotaReset"),xt=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),Ja=a(()=>({usageQuota:{[le.StaticQuotaName.WORKSPACES]:0,[le.StaticQuotaName.ROWS]:0,[le.StaticQuotaName.PLUGINS]:0,[le.StaticQuotaName.USERS]:0,[le.StaticQuotaName.CREATORS]:0,[le.StaticQuotaName.USER_GROUPS]:0,[le.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[xt()]:Br()}}),"generateBaseQuotaUsage"),Co=a(()=>{let e={_id:Nr(),quotaReset:Xu(),...Ja(),apps:{}};return Xa(e),e},"generateNewQuotaUsage"),Br=a(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),Xa=a(e=>{let t=xt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Br()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),Za=a((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,za.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,za.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var Zu=Le.Duration.fromSeconds(60).toMs(),{Writethrough:ec}=Le.cache.writethrough;function MI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}a(MI,"clearDeprecated");var en=a(()=>Le.tenancy.isSelfHostUsingCloud()?new ec(Le.tenancy.getSelfHostCloudDB(),Zu):new ec(Le.tenancy.getGlobalDB(),Zu),"getDB");async function Oo(e=0){let r=en(),n=Nr(),o=await r.tryGet(n);o&&o._rev&&await r.remove(n,o._rev).catch(async s=>{if(e<1)return await Oo(e+1);throw s})}a(Oo,"bustCache");var Ft=a(async()=>{let e=en(),t=await e.tryGet(Nr());if(!t){t=Co();let{rev:r}=await e.put(t);t._rev=r}return Xa(t),xo(t),MI(t)},"getQuotaUsage"),rc=a(async(e,t,r)=>Po({name:t,type:r,values:{total:e}}),"setUsage"),ac=a(async(e,t,r)=>{let n=en(),o=await Ft(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=nc(o,t,r,{total:s,app:c},{appId:u});let i=await n.put(o);return o._rev=i.rev,o},"setUsagePerApp"),NI=a((e,t,r,n)=>{let o=Za(t,r);if(!o||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[o]||(e.breakdown[o]={parent:t,values:{}});let s=e.breakdown[o];return s.values[r]=n.breakdown,e},"setBreakdown"),Lo=a((e,t,r,n={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(n?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!ve.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:Ja()});let i=e.apps[s];switch(r){case ve.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case ve.QuotaUsageType.MONTHLY:{let u=xt(),c=t,f=i.monthly[u];f||(i.monthly[u]=Br(),f=i.monthly[u]),f[c]=o.app,ve.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=NI(f,c,n.id,o));break}}return e},"setAppUsageValue"),tc=a((e,t,r,n)=>{if(!ve.APP_QUOTA_NAMES.includes(r))return{};let o;try{o=Le.db.getProdWorkspaceID(Le.context.getWorkspaceId())}catch{}if(!o||!e.apps||!e.apps[o])return{app:0};let s=e.apps[o];switch(t){case ve.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],f=c[u],g,h=Za(u,n);return h&&n&&c.breakdown?.[h]&&(g=c.breakdown[h]?.values[n]),{app:f,breakdown:g||0}}}return{app:0}},"getAppUsageValue"),BI=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),GI=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),nc=a((e,t,r,n,o={})=>{if(r===ve.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,BI(t,e,n.triggers);else if(r===ve.QuotaUsageType.MONTHLY){t=t;let s=xt();e.monthly[s][t]=n.total,GI(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Lo(e,t,r,o,n)},"coreUsageUpdate"),Po=a(async e=>{let t=Array.isArray(e)?e:[e],r=en(),n=await Ft();for(let s of t)n=nc(n,s.name,s.type,s.values,s.opts);let o=await r.put(n,0);return n._rev=o.rev,n},"setAllUsage"),oc=a(async(e,t,r)=>{let n=await Ft(),o=0,s={};switch(e){case ve.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;o=n.usageQuota[i],s=tc(n,e,t,r)}break;case ve.QuotaUsageType.MONTHLY:{let i=xt(),u=t;n.monthly[i][u]&&(o=n.monthly[i][u],s=tc(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ve.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:o,app:s.app,breakdown:s.breakdown}},"getCurrentUsageValues");var We={};x(We,{destroy:()=>$I,get:()=>Uo,save:()=>WI});var Ct=require("@budibase/backend-core");var FI=a(()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),WI=a(async e=>{let t=await Uo();t={...t,...e};let n=await Ct.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),Uo=a(async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return FI();throw t}},"get"),$I=a(async()=>{let e=Ct.tenancy.getGlobalDB(),t=await Uo();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};x(z,{bulkSave:()=>tS,destroy:()=>rS,fetch:()=>JI,generateUserGroupID:()=>YI,get:()=>XI,getBulk:()=>ZI,getByName:()=>qo,getGroupUsers:()=>rn,getGroupUsersParams:()=>pc,getUserGroupsParams:()=>cc,save:()=>eS});var j=require("@budibase/backend-core");var ze=require("@budibase/types"),nr=require("@budibase/backend-core");async function sc(){let e=nr.sql.designDoc.base("type");e.sql.tables={[ze.AUDIT_LOG_TYPE]:{fields:{appId:ze.SQLiteType.TEXT,event:ze.SQLiteType.TEXT,userId:ze.SQLiteType.TEXT,timestamp:ze.SQLiteType.TEXT,metadata:ze.SQLiteType.TEXT,name:ze.SQLiteType.TEXT,type:ze.SQLiteType.TEXT,fallback:ze.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(sc,"createAuditLogDesignDocSQL");var tn=require("@budibase/backend-core");var{ViewName:jI,SEPARATOR:QI,DocumentType:KI,createView:VI}=tn.db,HI=KI.USER+QI;async function ic(){let e=tn.tenancy.getGlobalDB(),t=`function(doc) {
3
+ `)}a(FO,"insertWrapDetails");ag.exports=FO});var to=p((t2,og)=>{"use strict";function WO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}a(WO,"arrayEach");og.exports=WO});var ig=p((a2,sg)=>{"use strict";var $O=to(),jO=es(),QO=1,KO=2,VO=8,HO=16,YO=32,zO=64,JO=128,XO=256,ZO=512,eL=[["ary",JO],["bind",QO],["bindKey",KO],["curry",VO],["curryRight",HO],["flip",ZO],["partial",YO],["partialRight",zO],["rearg",XO]];function tL(e,t){return $O(eL,function(r){var n="_."+r[0];t&r[1]&&!jO(e,n)&&e.push(n)}),e.sort()}a(tL,"updateWrapDetails");sg.exports=tL});var vi=p((o2,ug)=>{"use strict";var rL=rg(),aL=ng(),nL=gn(),oL=ig();function sL(e,t,r){var n=t+"";return nL(e,aL(n,oL(rL(n),r)))}a(sL,"setWrapToString");ug.exports=sL});var Ri=p((i2,lg)=>{"use strict";var iL=Zm(),uL=Ei(),cL=vi(),pL=1,lL=2,dL=4,fL=8,cg=32,pg=64;function mL(e,t,r,n,o,s,i,u,c,f){var g=t&fL,h=g?i:void 0,y=g?void 0:i,E=g?s:void 0,M=g?void 0:s;t|=g?cg:pg,t&=~(g?pg:cg),t&dL||(t&=~(pL|lL));var k=[e,t,o,E,h,M,y,u,c,f],D=r.apply(void 0,k);return iL(e)&&uL(D,k),D.placeholder=n,cL(D,e,t)}a(mL,"createRecurry");lg.exports=mL});var _i=p((c2,dg)=>{"use strict";function gL(e){var t=e;return t.placeholder}a(gL,"getHolder");dg.exports=gL});var mg=p((l2,fg)=>{"use strict";var hL=yr(),yL=va(),AL=Math.min;function bL(e,t){for(var r=e.length,n=AL(t.length,r),o=hL(e);n--;){var s=t[n];e[n]=yL(s,r)?o[s]:void 0}return e}a(bL,"reorder");fg.exports=bL});var ro=p((f2,hg)=>{"use strict";var gg="__lodash_placeholder__";function IL(e,t){for(var r=-1,n=e.length,o=0,s=[];++r<n;){var i=e[r];(i===t||i===gg)&&(e[r]=gg,s[o++]=r)}return s}a(IL,"replaceHolders");hg.exports=IL});var xi=p((g2,bg)=>{"use strict";var SL=Ii(),wL=Si(),TL=km(),yg=Da(),EL=Ri(),vL=_i(),RL=mg(),_L=ro(),xL=_e(),CL=1,OL=2,LL=8,PL=16,UL=128,qL=512;function Ag(e,t,r,n,o,s,i,u,c,f){var g=t&UL,h=t&CL,y=t&OL,E=t&(LL|PL),M=t&qL,k=y?void 0:yg(e);function D(){for(var C=arguments.length,W=Array(C),ye=C;ye--;)W[ye]=arguments[ye];if(E)var ie=vL(D),Ye=TL(W,ie);if(n&&(W=SL(W,n,o,E)),s&&(W=wL(W,s,i,E)),C-=Ye,E&&C<f){var nt=_L(W,ie);return EL(e,t,Ag,D.placeholder,r,W,nt,u,c,f-C)}var ot=h?r:this,Y=y?ot[e]:e;return C=W.length,u?W=RL(W,u):M&&C>1&&W.reverse(),g&&c<C&&(W.length=c),this&&this!==xL&&this instanceof D&&(Y=k||yg(Y)),Y.apply(ot,W)}return a(D,"wrapper"),D}a(Ag,"createHybrid");bg.exports=Ag});var Sg=p((y2,Ig)=>{"use strict";var DL=mn(),kL=Da(),ML=xi(),NL=Ri(),BL=_i(),GL=ro(),FL=_e();function WL(e,t,r){var n=kL(e);function o(){for(var s=arguments.length,i=Array(s),u=s,c=BL(o);u--;)i[u]=arguments[u];var f=s<3&&i[0]!==c&&i[s-1]!==c?[]:GL(i,c);if(s-=f.length,s<r)return NL(e,t,ML,o.placeholder,void 0,i,f,void 0,void 0,r-s);var g=this&&this!==FL&&this instanceof o?n:e;return DL(g,this,i)}return a(o,"wrapper"),o}a(WL,"createCurry");Ig.exports=WL});var Tg=p((b2,wg)=>{"use strict";var $L=mn(),jL=Da(),QL=_e(),KL=1;function VL(e,t,r,n){var o=t&KL,s=jL(e);function i(){for(var u=-1,c=arguments.length,f=-1,g=n.length,h=Array(g+c),y=this&&this!==QL&&this instanceof i?s:e;++f<g;)h[f]=n[f];for(;c--;)h[f++]=arguments[++u];return $L(y,o?r:this,h)}return a(i,"wrapper"),i}a(VL,"createPartial");wg.exports=VL});var Cg=p((S2,xg)=>{"use strict";var HL=Ii(),YL=Si(),Eg=ro(),vg="__lodash_placeholder__",Ci=1,zL=2,JL=4,Rg=8,ka=128,_g=256,XL=Math.min;function ZL(e,t){var r=e[1],n=t[1],o=r|n,s=o<(Ci|zL|ka),i=n==ka&&r==Rg||n==ka&&r==_g&&e[7].length<=t[8]||n==(ka|_g)&&t[7].length<=t[8]&&r==Rg;if(!(s||i))return e;n&Ci&&(e[2]=t[2],o|=r&Ci?0:JL);var u=t[3];if(u){var c=e[3];e[3]=c?HL(c,u,t[4]):u,e[4]=c?Eg(e[3],vg):t[4]}return u=t[5],u&&(c=e[5],e[5]=c?YL(c,u,t[6]):u,e[6]=c?Eg(e[5],vg):t[6]),u=t[7],u&&(e[7]=u),n&ka&&(e[8]=e[8]==null?t[8]:XL(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=o,e}a(ZL,"mergeData");xg.exports=ZL});var Lg=p((T2,Og)=>{"use strict";var eP=/\s/;function tP(e){for(var t=e.length;t--&&eP.test(e.charAt(t)););return t}a(tP,"trimmedEndIndex");Og.exports=tP});var Ug=p((v2,Pg)=>{"use strict";var rP=Lg(),aP=/^\s+/;function nP(e){return e&&e.slice(0,rP(e)+1).replace(aP,"")}a(nP,"baseTrim");Pg.exports=nP});var Cr=p((_2,qg)=>{"use strict";var oP=Pt(),sP=ke(),iP="[object Symbol]";function uP(e){return typeof e=="symbol"||sP(e)&&oP(e)==iP}a(uP,"isSymbol");qg.exports=uP});var Ng=p((C2,Mg)=>{"use strict";var cP=Ug(),Dg=je(),pP=Cr(),kg=0/0,lP=/^[-+]0x[0-9a-f]+$/i,dP=/^0b[01]+$/i,fP=/^0o[0-7]+$/i,mP=parseInt;function gP(e){if(typeof e=="number")return e;if(pP(e))return kg;if(Dg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Dg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=cP(e);var r=dP.test(e);return r||fP.test(e)?mP(e.slice(2),r?2:8):lP.test(e)?kg:+e}a(gP,"toNumber");Mg.exports=gP});var Fg=p((L2,Gg)=>{"use strict";var hP=Ng(),Bg=1/0,yP=17976931348623157e292;function AP(e){if(!e)return e===0?e:0;if(e=hP(e),e===Bg||e===-Bg){var t=e<0?-1:1;return t*yP}return e===e?e:0}a(AP,"toFinite");Gg.exports=AP});var Oi=p((U2,Wg)=>{"use strict";var bP=Fg();function IP(e){var t=bP(e),r=t%1;return t===t?r?t-r:t:0}a(IP,"toInteger");Wg.exports=IP});var ao=p((D2,Vg)=>{"use strict";var SP=bi(),wP=Pm(),TP=Sg(),EP=xi(),vP=Tg(),RP=wi(),_P=Cg(),xP=Ei(),CP=vi(),$g=Oi(),OP="Expected a function",jg=1,LP=2,Li=8,Pi=16,Ui=32,Qg=64,Kg=Math.max;function PP(e,t,r,n,o,s,i,u){var c=t&LP;if(!c&&typeof e!="function")throw new TypeError(OP);var f=n?n.length:0;if(f||(t&=~(Ui|Qg),n=o=void 0),i=i===void 0?i:Kg($g(i),0),u=u===void 0?u:$g(u),f-=o?o.length:0,t&Qg){var g=n,h=o;n=o=void 0}var y=c?void 0:RP(e),E=[e,t,r,n,o,g,h,s,i,u];if(y&&_P(E,y),e=E[0],t=E[1],r=E[2],n=E[3],o=E[4],u=E[9]=E[9]===void 0?c?0:e.length:Kg(E[9]-f,0),!u&&t&(Li|Pi)&&(t&=~(Li|Pi)),!t||t==jg)var M=wP(e,t,r);else t==Li||t==Pi?M=TP(e,t,u):(t==Ui||t==(jg|Ui))&&!o.length?M=vP(e,t,r,n):M=EP.apply(void 0,E);var k=y?SP:xP;return CP(k(M,E),e,t)}a(PP,"createWrap");Vg.exports=PP});var Yg=p((M2,Hg)=>{"use strict";var UP=ao(),qP=128;function DP(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,UP(e,qP,void 0,void 0,void 0,void 0,t)}a(DP,"ary");Hg.exports=DP});var Jg=p((B2,zg)=>{"use strict";var kP=ls(),MP=kP(Object.keys,Object);zg.exports=MP});var qi=p((G2,Xg)=>{"use strict";var NP=Tn(),BP=Jg(),GP=Object.prototype,FP=GP.hasOwnProperty;function WP(e){if(!NP(e))return BP(e);var t=[];for(var r in Object(e))FP.call(e,r)&&r!="constructor"&&t.push(r);return t}a(WP,"baseKeys");Xg.exports=WP});var Or=p((W2,Zg)=>{"use strict";var $P=ys(),jP=qi(),QP=mr();function KP(e){return QP(e)?$P(e):jP(e)}a(KP,"keys");Zg.exports=KP});var Di=p((j2,eh)=>{"use strict";var VP=Ir(),HP=Or();function YP(e,t){return e&&VP(t,HP(t),e)}a(YP,"baseAssign");eh.exports=YP});var rh=p((K2,th)=>{"use strict";var zP=Ir(),JP=Sr();function XP(e,t){return e&&zP(t,JP(t),e)}a(XP,"baseAssignIn");th.exports=XP});var nh=p((H2,ah)=>{"use strict";function ZP(e,t){for(var r=-1,n=e==null?0:e.length,o=0,s=[];++r<n;){var i=e[r];t(i,r,e)&&(s[o++]=i)}return s}a(ZP,"arrayFilter");ah.exports=ZP});var ki=p((z2,oh)=>{"use strict";function eU(){return[]}a(eU,"stubArray");oh.exports=eU});var no=p((X2,ih)=>{"use strict";var tU=nh(),rU=ki(),aU=Object.prototype,nU=aU.propertyIsEnumerable,sh=Object.getOwnPropertySymbols,oU=sh?function(e){return e==null?[]:(e=Object(e),tU(sh(e),function(t){return nU.call(e,t)}))}:rU;ih.exports=oU});var ch=p((Z2,uh)=>{"use strict";var sU=Ir(),iU=no();function uU(e,t){return sU(e,iU(e),t)}a(uU,"copySymbols");uh.exports=uU});var Mi=p((tV,ph)=>{"use strict";var cU=fn(),pU=wn(),lU=no(),dU=ki(),fU=Object.getOwnPropertySymbols,mU=fU?function(e){for(var t=[];e;)cU(t,lU(e)),e=pU(e);return t}:dU;ph.exports=mU});var dh=p((rV,lh)=>{"use strict";var gU=Ir(),hU=Mi();function yU(e,t){return gU(e,hU(e),t)}a(yU,"copySymbolsIn");lh.exports=yU});var Ni=p((nV,fh)=>{"use strict";var AU=fn(),bU=Ee();function IU(e,t,r){var n=t(e);return bU(e)?n:AU(n,r(e))}a(IU,"baseGetAllKeys");fh.exports=IU});var Bi=p((sV,mh)=>{"use strict";var SU=Ni(),wU=no(),TU=Or();function EU(e){return SU(e,TU,wU)}a(EU,"getAllKeys");mh.exports=EU});var hh=p((uV,gh)=>{"use strict";var vU=Ni(),RU=Mi(),_U=Sr();function xU(e){return vU(e,_U,RU)}a(xU,"getAllKeysIn");gh.exports=xU});var Ah=p((pV,yh)=>{"use strict";var CU=Ut(),OU=_e(),LU=CU(OU,"DataView");yh.exports=LU});var Ih=p((lV,bh)=>{"use strict";var PU=Ut(),UU=_e(),qU=PU(UU,"Promise");bh.exports=qU});var Pr=p((dV,_h)=>{"use strict";var Gi=Ah(),Fi=hn(),Wi=Ih(),$i=rs(),ji=yi(),Rh=Pt(),Lr=Yo(),Sh="[object Map]",DU="[object Object]",wh="[object Promise]",Th="[object Set]",Eh="[object WeakMap]",vh="[object DataView]",kU=Lr(Gi),MU=Lr(Fi),NU=Lr(Wi),BU=Lr($i),GU=Lr(ji),Xt=Rh;(Gi&&Xt(new Gi(new ArrayBuffer(1)))!=vh||Fi&&Xt(new Fi)!=Sh||Wi&&Xt(Wi.resolve())!=wh||$i&&Xt(new $i)!=Th||ji&&Xt(new ji)!=Eh)&&(Xt=a(function(e){var t=Rh(e),r=t==DU?e.constructor:void 0,n=r?Lr(r):"";if(n)switch(n){case kU:return vh;case MU:return Sh;case NU:return wh;case BU:return Th;case GU:return Eh}return t},"getTag"));_h.exports=Xt});var Ch=p((mV,xh)=>{"use strict";var FU=Object.prototype,WU=FU.hasOwnProperty;function $U(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&WU.call(e,"index")&&(r.index=e.index,r.input=e.input),r}a($U,"initCloneArray");xh.exports=$U});var Lh=p((hV,Oh)=>{"use strict";var jU=Sn();function QU(e,t){var r=t?jU(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}a(QU,"cloneDataView");Oh.exports=QU});var Uh=p((AV,Ph)=>{"use strict";var KU=/\w*$/;function VU(e){var t=new e.constructor(e.source,KU.exec(e));return t.lastIndex=e.lastIndex,t}a(VU,"cloneRegExp");Ph.exports=VU});var Nh=p((IV,Mh)=>{"use strict";var qh=Qt(),Dh=qh?qh.prototype:void 0,kh=Dh?Dh.valueOf:void 0;function HU(e){return kh?Object(kh.call(e)):{}}a(HU,"cloneSymbol");Mh.exports=HU});var Gh=p((wV,Bh)=>{"use strict";var YU=Sn(),zU=Lh(),JU=Uh(),XU=Nh(),ZU=ps(),eq="[object Boolean]",tq="[object Date]",rq="[object Map]",aq="[object Number]",nq="[object RegExp]",oq="[object Set]",sq="[object String]",iq="[object Symbol]",uq="[object ArrayBuffer]",cq="[object DataView]",pq="[object Float32Array]",lq="[object Float64Array]",dq="[object Int8Array]",fq="[object Int16Array]",mq="[object Int32Array]",gq="[object Uint8Array]",hq="[object Uint8ClampedArray]",yq="[object Uint16Array]",Aq="[object Uint32Array]";function bq(e,t,r){var n=e.constructor;switch(t){case uq:return YU(e);case eq:case tq:return new n(+e);case cq:return zU(e,r);case pq:case lq:case dq:case fq:case mq:case gq:case hq:case yq:case Aq:return ZU(e,r);case rq:return new n;case aq:case sq:return new n(e);case nq:return JU(e);case oq:return new n;case iq:return XU(e)}}a(bq,"initCloneByTag");Bh.exports=bq});var Wh=p((EV,Fh)=>{"use strict";var Iq=Pr(),Sq=ke(),wq="[object Map]";function Tq(e){return Sq(e)&&Iq(e)==wq}a(Tq,"baseIsMap");Fh.exports=Tq});var Kh=p((RV,Qh)=>{"use strict";var Eq=Wh(),vq=En(),$h=vn(),jh=$h&&$h.isMap,Rq=jh?vq(jh):Eq;Qh.exports=Rq});var Hh=p((_V,Vh)=>{"use strict";var _q=Pr(),xq=ke(),Cq="[object Set]";function Oq(e){return xq(e)&&_q(e)==Cq}a(Oq,"baseIsSet");Vh.exports=Oq});var Xh=p((CV,Jh)=>{"use strict";var Lq=Hh(),Pq=En(),Yh=vn(),zh=Yh&&Yh.isSet,Uq=zh?Pq(zh):Lq;Jh.exports=Uq});var Qi=p((OV,ry)=>{"use strict";var qq=ya(),Dq=to(),kq=hs(),Mq=Di(),Nq=rh(),Bq=us(),Gq=yr(),Fq=ch(),Wq=dh(),$q=Bi(),jq=hh(),Qq=Pr(),Kq=Ch(),Vq=Gh(),Hq=ds(),Yq=Ee(),zq=wa(),Jq=Kh(),Xq=je(),Zq=Xh(),eD=Or(),tD=Sr(),rD=1,aD=2,nD=4,Zh="[object Arguments]",oD="[object Array]",sD="[object Boolean]",iD="[object Date]",uD="[object Error]",ey="[object Function]",cD="[object GeneratorFunction]",pD="[object Map]",lD="[object Number]",ty="[object Object]",dD="[object RegExp]",fD="[object Set]",mD="[object String]",gD="[object Symbol]",hD="[object WeakMap]",yD="[object ArrayBuffer]",AD="[object DataView]",bD="[object Float32Array]",ID="[object Float64Array]",SD="[object Int8Array]",wD="[object Int16Array]",TD="[object Int32Array]",ED="[object Uint8Array]",vD="[object Uint8ClampedArray]",RD="[object Uint16Array]",_D="[object Uint32Array]",V={};V[Zh]=V[oD]=V[yD]=V[AD]=V[sD]=V[iD]=V[bD]=V[ID]=V[SD]=V[wD]=V[TD]=V[pD]=V[lD]=V[ty]=V[dD]=V[fD]=V[mD]=V[gD]=V[ED]=V[vD]=V[RD]=V[_D]=!0;V[uD]=V[ey]=V[hD]=!1;function oo(e,t,r,n,o,s){var i,u=t&rD,c=t&aD,f=t&nD;if(r&&(i=o?r(e,n,o,s):r(e)),i!==void 0)return i;if(!Xq(e))return e;var g=Yq(e);if(g){if(i=Kq(e),!u)return Gq(e,i)}else{var h=Qq(e),y=h==ey||h==cD;if(zq(e))return Bq(e,u);if(h==ty||h==Zh||y&&!o){if(i=c||y?{}:Hq(e),!u)return c?Wq(e,Nq(i,e)):Fq(e,Mq(i,e))}else{if(!V[h])return o?e:{};i=Vq(e,h,u)}}s||(s=new qq);var E=s.get(e);if(E)return E;s.set(e,i),Zq(e)?e.forEach(function(D){i.add(oo(D,t,r,D,e,s))}):Jq(e)&&e.forEach(function(D,C){i.set(C,oo(D,t,r,C,e,s))});var M=f?c?jq:$q:c?tD:eD,k=g?void 0:M(e);return Dq(k||e,function(D,C){k&&(C=D,D=e[C]),kq(i,C,oo(D,t,r,C,e,s))}),i}a(oo,"baseClone");ry.exports=oo});var ny=p((PV,ay)=>{"use strict";var xD=Qi(),CD=4;function OD(e){return xD(e,CD)}a(OD,"clone");ay.exports=OD});var sy=p((qV,oy)=>{"use strict";var LD=ao(),PD=8;function Ki(e,t,r){t=r?void 0:t;var n=LD(e,PD,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=Ki.placeholder,n}a(Ki,"curry");Ki.placeholder={};oy.exports=Ki});var uy=p((kV,iy)=>{"use strict";var UD=Pt(),qD=ke(),DD=fs(),kD="[object DOMException]",MD="[object Error]";function ND(e){if(!qD(e))return!1;var t=UD(e);return t==MD||t==kD||typeof e.message=="string"&&typeof e.name=="string"&&!DD(e)}a(ND,"isError");iy.exports=ND});var py=p((NV,cy)=>{"use strict";var BD=Pr(),GD=ke(),FD="[object WeakMap]";function WD(e){return GD(e)&&BD(e)==FD}a(WD,"isWeakMap");cy.exports=WD});var dy=p((GV,ly)=>{"use strict";function $D(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}a($D,"arraySome");ly.exports=$D});var Vi=p((WV,fy)=>{"use strict";var jD=Zo(),QD=dy(),KD=ts(),VD=1,HD=2;function YD(e,t,r,n,o,s){var i=r&VD,u=e.length,c=t.length;if(u!=c&&!(i&&c>u))return!1;var f=s.get(e),g=s.get(t);if(f&&g)return f==t&&g==e;var h=-1,y=!0,E=r&HD?new jD:void 0;for(s.set(e,t),s.set(t,e);++h<u;){var M=e[h],k=t[h];if(n)var D=i?n(k,M,h,t,e,s):n(M,k,h,e,t,s);if(D!==void 0){if(D)continue;y=!1;break}if(E){if(!QD(t,function(C,W){if(!KD(E,W)&&(M===C||o(M,C,r,n,s)))return E.push(W)})){y=!1;break}}else if(!(M===k||o(M,k,r,n,s))){y=!1;break}}return s.delete(e),s.delete(t),y}a(YD,"equalArrays");fy.exports=YD});var gy=p((jV,my)=>{"use strict";function zD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,o){r[++t]=[o,n]}),r}a(zD,"mapToArray");my.exports=zD});var Iy=p((KV,by)=>{"use strict";var hy=Qt(),yy=cs(),JD=lr(),XD=Vi(),ZD=gy(),ek=bn(),tk=1,rk=2,ak="[object Boolean]",nk="[object Date]",ok="[object Error]",sk="[object Map]",ik="[object Number]",uk="[object RegExp]",ck="[object Set]",pk="[object String]",lk="[object Symbol]",dk="[object ArrayBuffer]",fk="[object DataView]",Ay=hy?hy.prototype:void 0,Hi=Ay?Ay.valueOf:void 0;function mk(e,t,r,n,o,s,i){switch(r){case fk:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case dk:return!(e.byteLength!=t.byteLength||!s(new yy(e),new yy(t)));case ak:case nk:case ik:return JD(+e,+t);case ok:return e.name==t.name&&e.message==t.message;case uk:case pk:return e==t+"";case sk:var u=ZD;case ck:var c=n&tk;if(u||(u=ek),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=rk,i.set(e,t);var g=XD(u(e),u(t),n,o,s,i);return i.delete(e),g;case lk:if(Hi)return Hi.call(e)==Hi.call(t)}return!1}a(mk,"equalByTag");by.exports=mk});var Ty=p((HV,wy)=>{"use strict";var Sy=Bi(),gk=1,hk=Object.prototype,yk=hk.hasOwnProperty;function Ak(e,t,r,n,o,s){var i=r&gk,u=Sy(e),c=u.length,f=Sy(t),g=f.length;if(c!=g&&!i)return!1;for(var h=c;h--;){var y=u[h];if(!(i?y in t:yk.call(t,y)))return!1}var E=s.get(e),M=s.get(t);if(E&&M)return E==t&&M==e;var k=!0;s.set(e,t),s.set(t,e);for(var D=i;++h<c;){y=u[h];var C=e[y],W=t[y];if(n)var ye=i?n(W,C,y,t,e,s):n(C,W,y,e,t,s);if(!(ye===void 0?C===W||o(C,W,r,n,s):ye)){k=!1;break}D||(D=y=="constructor")}if(k&&!D){var ie=e.constructor,Ye=t.constructor;ie!=Ye&&"constructor"in e&&"constructor"in t&&!(typeof ie=="function"&&ie instanceof ie&&typeof Ye=="function"&&Ye instanceof Ye)&&(k=!1)}return s.delete(e),s.delete(t),k}a(Ak,"equalObjects");wy.exports=Ak});var Ly=p((zV,Oy)=>{"use strict";var Yi=ya(),bk=Vi(),Ik=Iy(),Sk=Ty(),Ey=Pr(),vy=Ee(),Ry=wa(),wk=Rn(),Tk=1,_y="[object Arguments]",xy="[object Array]",so="[object Object]",Ek=Object.prototype,Cy=Ek.hasOwnProperty;function vk(e,t,r,n,o,s){var i=vy(e),u=vy(t),c=i?xy:Ey(e),f=u?xy:Ey(t);c=c==_y?so:c,f=f==_y?so:f;var g=c==so,h=f==so,y=c==f;if(y&&Ry(e)){if(!Ry(t))return!1;i=!0,g=!1}if(y&&!g)return s||(s=new Yi),i||wk(e)?bk(e,t,r,n,o,s):Ik(e,t,c,r,n,o,s);if(!(r&Tk)){var E=g&&Cy.call(e,"__wrapped__"),M=h&&Cy.call(t,"__wrapped__");if(E||M){var k=E?e.value():e,D=M?t.value():t;return s||(s=new Yi),o(k,D,r,n,s)}}return y?(s||(s=new Yi),Sk(e,t,r,n,o,s)):!1}a(vk,"baseIsEqualDeep");Oy.exports=vk});var zi=p((XV,qy)=>{"use strict";var Rk=Ly(),Py=ke();function Uy(e,t,r,n,o){return e===t?!0:e==null||t==null||!Py(e)&&!Py(t)?e!==e&&t!==t:Rk(e,t,r,n,Uy,o)}a(Uy,"baseIsEqual");qy.exports=Uy});var ky=p((eH,Dy)=>{"use strict";var _k=ya(),xk=zi(),Ck=1,Ok=2;function Lk(e,t,r,n){var o=r.length,s=o,i=!n;if(e==null)return!s;for(e=Object(e);o--;){var u=r[o];if(i&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++o<s;){u=r[o];var c=u[0],f=e[c],g=u[1];if(i&&u[2]){if(f===void 0&&!(c in e))return!1}else{var h=new _k;if(n)var y=n(f,g,c,e,t,h);if(!(y===void 0?xk(g,f,Ck|Ok,n,h):y))return!1}}return!0}a(Lk,"baseIsMatch");Dy.exports=Lk});var Ji=p((rH,My)=>{"use strict";var Pk=je();function Uk(e){return e===e&&!Pk(e)}a(Uk,"isStrictComparable");My.exports=Uk});var By=p((nH,Ny)=>{"use strict";var qk=Ji(),Dk=Or();function kk(e){for(var t=Dk(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,qk(o)]}return t}a(kk,"getMatchData");Ny.exports=kk});var Xi=p((sH,Gy)=>{"use strict";function Mk(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}a(Mk,"matchesStrictComparable");Gy.exports=Mk});var Wy=p((uH,Fy)=>{"use strict";var Nk=ky(),Bk=By(),Gk=Xi();function Fk(e){var t=Bk(e);return t.length==1&&t[0][2]?Gk(t[0][0],t[0][1]):function(r){return r===e||Nk(r,e,t)}}a(Fk,"baseMatches");Fy.exports=Fk});var io=p((pH,$y)=>{"use strict";var Wk=Ee(),$k=Cr(),jk=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Qk=/^\w*$/;function Kk(e,t){if(Wk(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||$k(e)?!0:Qk.test(e)||!jk.test(e)||t!=null&&e in Object(t)}a(Kk,"isKey");$y.exports=Kk});var Ky=p((dH,Qy)=>{"use strict";var jy=yn(),Vk="Expected a function";function Zi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Vk);var r=a(function(){var n=arguments,o=t?t.apply(this,n):n[0],s=r.cache;if(s.has(o))return s.get(o);var i=e.apply(this,n);return r.cache=s.set(o,i)||s,i},"memoized");return r.cache=new(Zi.Cache||jy),r}a(Zi,"memoize");Zi.Cache=jy;Qy.exports=Zi});var Hy=p((mH,Vy)=>{"use strict";var Hk=Ky(),Yk=500;function zk(e){var t=Hk(e,function(n){return r.size===Yk&&r.clear(),n}),r=t.cache;return t}a(zk,"memoizeCapped");Vy.exports=zk});var eu=p((hH,Yy)=>{"use strict";var Jk=Hy(),Xk=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Zk=/\\(\\)?/g,eM=Jk(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Xk,function(r,n,o,s){t.push(o?s.replace(Zk,"$1"):n||r)}),t});Yy.exports=eM});var tu=p((yH,zy)=>{"use strict";function tM(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}a(tM,"arrayMap");zy.exports=tM});var rA=p((bH,tA)=>{"use strict";var Jy=Qt(),rM=tu(),aM=Ee(),nM=Cr(),oM=1/0,Xy=Jy?Jy.prototype:void 0,Zy=Xy?Xy.toString:void 0;function eA(e){if(typeof e=="string")return e;if(aM(e))return rM(e,eA)+"";if(nM(e))return Zy?Zy.call(e):"";var t=e+"";return t=="0"&&1/e==-oM?"-0":t}a(eA,"baseToString");tA.exports=eA});var ru=p((SH,aA)=>{"use strict";var sM=rA();function iM(e){return e==null?"":sM(e)}a(iM,"toString");aA.exports=iM});var au=p((TH,nA)=>{"use strict";var uM=Ee(),cM=io(),pM=eu(),lM=ru();function dM(e,t){return uM(e)?e:cM(e,t)?[e]:pM(lM(e))}a(dM,"castPath");nA.exports=dM});var Ur=p((vH,oA)=>{"use strict";var fM=Cr(),mM=1/0;function gM(e){if(typeof e=="string"||fM(e))return e;var t=e+"";return t=="0"&&1/e==-mM?"-0":t}a(gM,"toKey");oA.exports=gM});var nu=p((_H,sA)=>{"use strict";var hM=au(),yM=Ur();function AM(e,t){t=hM(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[yM(t[r++])];return r&&r==n?e:void 0}a(AM,"baseGet");sA.exports=AM});var uA=p((CH,iA)=>{"use strict";var bM=nu();function IM(e,t,r){var n=e==null?void 0:bM(e,t);return n===void 0?r:n}a(IM,"get");iA.exports=IM});var pA=p((LH,cA)=>{"use strict";function SM(e,t){return e!=null&&t in Object(e)}a(SM,"baseHasIn");cA.exports=SM});var dA=p((UH,lA)=>{"use strict";var wM=au(),TM=pa(),EM=Ee(),vM=va(),RM=In(),_M=Ur();function xM(e,t,r){t=wM(t,e);for(var n=-1,o=t.length,s=!1;++n<o;){var i=_M(t[n]);if(!(s=e!=null&&r(e,i)))break;e=e[i]}return s||++n!=o?s:(o=e==null?0:e.length,!!o&&RM(o)&&vM(i,o)&&(EM(e)||TM(e)))}a(xM,"hasPath");lA.exports=xM});var mA=p((DH,fA)=>{"use strict";var CM=pA(),OM=dA();function LM(e,t){return e!=null&&OM(e,t,CM)}a(LM,"hasIn");fA.exports=LM});var hA=p((MH,gA)=>{"use strict";var PM=zi(),UM=uA(),qM=mA(),DM=io(),kM=Ji(),MM=Xi(),NM=Ur(),BM=1,GM=2;function FM(e,t){return DM(e)&&kM(t)?MM(NM(e),t):function(r){var n=UM(r,e);return n===void 0&&n===t?qM(r,e):PM(t,n,BM|GM)}}a(FM,"baseMatchesProperty");gA.exports=FM});var AA=p((BH,yA)=>{"use strict";function WM(e){return function(t){return t?.[e]}}a(WM,"baseProperty");yA.exports=WM});var IA=p((FH,bA)=>{"use strict";var $M=nu();function jM(e){return function(t){return $M(t,e)}}a(jM,"basePropertyDeep");bA.exports=jM});var wA=p(($H,SA)=>{"use strict";var QM=AA(),KM=IA(),VM=io(),HM=Ur();function YM(e){return VM(e)?QM(HM(e)):KM(e)}a(YM,"property");SA.exports=YM});var ou=p((QH,TA)=>{"use strict";var zM=Wy(),JM=hA(),XM=la(),ZM=Ee(),eN=wA();function tN(e){return typeof e=="function"?e:e==null?XM:typeof e=="object"?ZM(e)?JM(e[0],e[1]):zM(e):eN(e)}a(tN,"baseIteratee");TA.exports=tN});var vA=p((VH,EA)=>{"use strict";var rN=Qi(),aN=ou(),nN=1;function oN(e){return aN(typeof e=="function"?e:rN(e,nN))}a(oN,"iteratee");EA.exports=oN});var _A=p((YH,RA)=>{"use strict";var sN=Ko();function iN(e){var t=e==null?0:e.length;return t?sN(e,1):[]}a(iN,"flatten");RA.exports=iN});var CA=p((JH,xA)=>{"use strict";var uN=_A(),cN=Vo(),pN=gn();function lN(e){return pN(cN(e,void 0,uN),e+"")}a(lN,"flatRest");xA.exports=lN});var LA=p((ZH,OA)=>{"use strict";var dN=ao(),fN=CA(),mN=256,gN=fN(function(e,t){return dN(e,mN,void 0,void 0,void 0,t)});OA.exports=gN});var UA=p((eY,PA)=>{"use strict";var hN=tu(),yN=yr(),AN=Ee(),bN=Cr(),IN=eu(),SN=Ur(),wN=ru();function TN(e){return AN(e)?hN(e,SN):bN(e)?[e]:yN(IN(wN(e)))}a(TN,"toPath");PA.exports=TN});var DA=p((rY,qA)=>{"use strict";qA.exports={ary:Yg(),assign:Di(),clone:ny(),curry:sy(),forEach:to(),isArray:Ee(),isError:uy(),isFunction:da(),isWeakMap:py(),iteratee:vA(),keys:qi(),rearg:LA(),toInteger:Oi(),toPath:UA()}});var MA=p((aY,kA)=>{"use strict";var EN=Em(),vN=DA();function RN(e,t,r){return EN(vN,e,t,r)}a(RN,"convert");kA.exports=RN});var su=p((oY,BA)=>{"use strict";var _N=MA(),NA=_N("merge",As());NA.placeholder=fi();BA.exports=NA});var jA=p((iu,uu)=>{"use strict";(function(e,t){typeof iu=="object"&&typeof uu<"u"?uu.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(iu,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",o="second",s="minute",i="hour",u="day",c="week",f="month",g="quarter",h="year",y="date",E="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,k=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,D={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(O){var w=["th","st","nd","rd"],A=O%100;return"["+O+(w[(A-20)%10]||w[A]||w[0])+"]"}},C=a(function(O,w,A){var _=String(O);return!_||_.length>=w?O:""+Array(w+1-_.length).join(A)+O},"m"),W={s:C,z:function(O){var w=-O.utcOffset(),A=Math.abs(w),_=Math.floor(A/60),S=A%60;return(w<=0?"+":"-")+C(_,2,"0")+":"+C(S,2,"0")},m:a(function O(w,A){if(w.date()<A.date())return-O(A,w);var _=12*(A.year()-w.year())+(A.month()-w.month()),S=w.clone().add(_,f),U=A-S<0,P=w.clone().add(_+(U?-1:1),f);return+(-(_+(A-S)/(U?S-P:P-S))||0)},"t"),a:function(O){return O<0?Math.ceil(O)||0:Math.floor(O)},p:function(O){return{M:f,y:h,w:c,d:u,D:y,h:i,m:s,s:o,ms:n,Q:g}[O]||String(O||"").toLowerCase().replace(/s$/,"")},u:function(O){return O===void 0}},ye="en",ie={};ie[ye]=D;var Ye="$isDayjsObject",nt=a(function(O){return O instanceof Gt||!(!O||!O[Ye])},"S"),ot=a(function O(w,A,_){var S;if(!w)return ye;if(typeof w=="string"){var U=w.toLowerCase();ie[U]&&(S=U),A&&(ie[U]=A,S=U);var P=w.split("-");if(!S&&P.length>1)return O(P[0])}else{var $=w.name;ie[$]=w,S=$}return!_&&S&&(ye=S),S||!_&&ye},"t"),Y=a(function(O,w){if(nt(O))return O.clone();var A=typeof w=="object"?w:{};return A.date=O,A.args=arguments,new Gt(A)},"O"),G=W;G.l=ot,G.i=nt,G.w=function(O,w){return Y(O,{locale:w.$L,utc:w.$u,x:w.$x,$offset:w.$offset})};var Gt=function(){function O(A){this.$L=ot(A.locale,null,!0),this.parse(A),this.$x=this.$x||A.x||{},this[Ye]=!0}a(O,"M");var w=O.prototype;return w.parse=function(A){this.$d=function(_){var S=_.date,U=_.utc;if(S===null)return new Date(NaN);if(G.u(S))return new Date;if(S instanceof Date)return new Date(S);if(typeof S=="string"&&!/Z$/i.test(S)){var P=S.match(M);if(P){var $=P[2]-1||0,Z=(P[7]||"0").substring(0,3);return U?new Date(Date.UTC(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)):new Date(P[1],$,P[3]||1,P[4]||0,P[5]||0,P[6]||0,Z)}}return new Date(S)}(A),this.init()},w.init=function(){var A=this.$d;this.$y=A.getFullYear(),this.$M=A.getMonth(),this.$D=A.getDate(),this.$W=A.getDay(),this.$H=A.getHours(),this.$m=A.getMinutes(),this.$s=A.getSeconds(),this.$ms=A.getMilliseconds()},w.$utils=function(){return G},w.isValid=function(){return this.$d.toString()!==E},w.isSame=function(A,_){var S=Y(A);return this.startOf(_)<=S&&S<=this.endOf(_)},w.isAfter=function(A,_){return Y(A)<this.startOf(_)},w.isBefore=function(A,_){return this.endOf(_)<Y(A)},w.$g=function(A,_,S){return G.u(A)?this[_]:this.set(S,A)},w.unix=function(){return Math.floor(this.valueOf()/1e3)},w.valueOf=function(){return this.$d.getTime()},w.startOf=function(A,_){var S=this,U=!!G.u(_)||_,P=G.p(A),$=a(function(I,R){var q=G.w(S.$u?Date.UTC(S.$y,R,I):new Date(S.$y,R,I),S);return U?q:q.endOf(u)},"l"),Z=a(function(I,R){return G.w(S.toDate()[I].apply(S.toDate("s"),(U?[0,0,0,0]:[23,59,59,999]).slice(R)),S)},"$"),ne=this.$W,pe=this.$M,K=this.$D,Ge="set"+(this.$u?"UTC":"");switch(P){case h:return U?$(1,0):$(31,11);case f:return U?$(1,pe):$(0,pe+1);case c:var v=this.$locale().weekStart||0,b=(ne<v?ne+7:ne)-v;return $(U?K-b:K+(6-b),pe);case u:case y:return Z(Ge+"Hours",0);case i:return Z(Ge+"Minutes",1);case s:return Z(Ge+"Seconds",2);case o:return Z(Ge+"Milliseconds",3);default:return this.clone()}},w.endOf=function(A){return this.startOf(A,!1)},w.$set=function(A,_){var S,U=G.p(A),P="set"+(this.$u?"UTC":""),$=(S={},S[u]=P+"Date",S[y]=P+"Date",S[f]=P+"Month",S[h]=P+"FullYear",S[i]=P+"Hours",S[s]=P+"Minutes",S[o]=P+"Seconds",S[n]=P+"Milliseconds",S)[U],Z=U===u?this.$D+(_-this.$W):_;if(U===f||U===h){var ne=this.clone().set(y,1);ne.$d[$](Z),ne.init(),this.$d=ne.set(y,Math.min(this.$D,ne.daysInMonth())).$d}else $&&this.$d[$](Z);return this.init(),this},w.set=function(A,_){return this.clone().$set(A,_)},w.get=function(A){return this[G.p(A)]()},w.add=function(A,_){var S,U=this;A=Number(A);var P=G.p(_),$=a(function(pe){var K=Y(U);return G.w(K.date(K.date()+Math.round(pe*A)),U)},"y");if(P===f)return this.set(f,this.$M+A);if(P===h)return this.set(h,this.$y+A);if(P===u)return $(1);if(P===c)return $(7);var Z=(S={},S[s]=t,S[i]=r,S[o]=e,S)[P]||1,ne=this.$d.getTime()+A*Z;return G.w(ne,this)},w.subtract=function(A,_){return this.add(-1*A,_)},w.format=function(A){var _=this,S=this.$locale();if(!this.isValid())return S.invalidDate||E;var U=A||"YYYY-MM-DDTHH:mm:ssZ",P=G.z(this),$=this.$H,Z=this.$m,ne=this.$M,pe=S.weekdays,K=S.months,Ge=S.meridiem,v=a(function(R,q,oe,ve){return R&&(R[q]||R(_,U))||oe[q].slice(0,ve)},"h"),b=a(function(R){return G.s($%12||12,R,"0")},"d"),I=Ge||function(R,q,oe){var ve=R<12?"AM":"PM";return oe?ve.toLowerCase():ve};return U.replace(k,function(R,q){return q||function(oe){switch(oe){case"YY":return String(_.$y).slice(-2);case"YYYY":return G.s(_.$y,4,"0");case"M":return ne+1;case"MM":return G.s(ne+1,2,"0");case"MMM":return v(S.monthsShort,ne,K,3);case"MMMM":return v(K,ne);case"D":return _.$D;case"DD":return G.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return v(S.weekdaysMin,_.$W,pe,2);case"ddd":return v(S.weekdaysShort,_.$W,pe,3);case"dddd":return pe[_.$W];case"H":return String($);case"HH":return G.s($,2,"0");case"h":return b(1);case"hh":return b(2);case"a":return I($,Z,!0);case"A":return I($,Z,!1);case"m":return String(Z);case"mm":return G.s(Z,2,"0");case"s":return String(_.$s);case"ss":return G.s(_.$s,2,"0");case"SSS":return G.s(_.$ms,3,"0");case"Z":return P}return null}(R)||P.replace(":","")})},w.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},w.diff=function(A,_,S){var U,P=this,$=G.p(_),Z=Y(A),ne=(Z.utcOffset()-this.utcOffset())*t,pe=this-Z,K=a(function(){return G.m(P,Z)},"D");switch($){case h:U=K()/12;break;case f:U=K();break;case g:U=K()/3;break;case c:U=(pe-ne)/6048e5;break;case u:U=(pe-ne)/864e5;break;case i:U=pe/r;break;case s:U=pe/t;break;case o:U=pe/e;break;default:U=pe}return S?U:G.a(U)},w.daysInMonth=function(){return this.endOf(f).$D},w.$locale=function(){return ie[this.$L]},w.locale=function(A,_){if(!A)return this.$L;var S=this.clone(),U=ot(A,_,!0);return U&&(S.$L=U),S},w.clone=function(){return G.w(this.$d,this)},w.toDate=function(){return new Date(this.valueOf())},w.toJSON=function(){return this.isValid()?this.toISOString():null},w.toISOString=function(){return this.$d.toISOString()},w.toString=function(){return this.$d.toUTCString()},O}(),Ya=Gt.prototype;return Y.prototype=Ya,[["$ms",n],["$s",o],["$m",s],["$H",i],["$W",u],["$M",f],["$y",h],["$D",y]].forEach(function(O){Ya[O[1]]=function(w){return this.$g(w,O[0],O[1])}}),Y.extend=function(O,w){return O.$i||(O(w,Gt,Y),O.$i=!0),Y},Y.locale=ot,Y.isDayjs=nt,Y.unix=function(O){return Y(1e3*O)},Y.en=ie[ye],Y.Ls=ie,Y.p={},Y})});var Wb=p((w4,Fb)=>{"use strict";function YN(e,t,r,n){for(var o=-1,s=e==null?0:e.length;++o<s;){var i=e[o];t(n,i,r(i),e)}return n}a(YN,"arrayAggregator");Fb.exports=YN});var jb=p((E4,$b)=>{"use strict";var zN=is(),JN=Or();function XN(e,t){return e&&zN(e,t,JN)}a(XN,"baseForOwn");$b.exports=XN});var Kb=p((R4,Qb)=>{"use strict";var ZN=mr();function eB(e,t){return function(r,n){if(r==null)return r;if(!ZN(r))return e(r,n);for(var o=r.length,s=t?o:-1,i=Object(r);(t?s--:++s<o)&&n(i[s],s,i)!==!1;);return r}}a(eB,"createBaseEach");Qb.exports=eB});var Hb=p((x4,Vb)=>{"use strict";var tB=jb(),rB=Kb(),aB=rB(tB);Vb.exports=aB});var zb=p((C4,Yb)=>{"use strict";var nB=Hb();function oB(e,t,r,n){return nB(e,function(o,s,i){t(n,o,r(o),i)}),n}a(oB,"baseAggregator");Yb.exports=oB});var Xb=p((L4,Jb)=>{"use strict";var sB=Wb(),iB=zb(),uB=ou(),cB=Ee();function pB(e,t){return function(r,n){var o=cB(r)?sB:iB,s=t?t():{};return o(r,e,uB(n,2),s)}}a(pB,"createAggregator");Jb.exports=pB});var eI=p((U4,Zb)=>{"use strict";var lB=Aa(),dB=Xb(),fB=Object.prototype,mB=fB.hasOwnProperty,gB=dB(function(e,t,r){mB.call(e,r)?e[r].push(t):lB(e,r,[t])});Zb.exports=gB});var NB={};x(NB,{Method:()=>Eo,ai:()=>Vu,api:()=>Su,auditLogs:()=>kt,automations:()=>jn,backups:()=>Ne,branding:()=>Pn,constants:()=>aa,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Am,licensing:()=>ct,logger:()=>Zt,mappers:()=>ce,middleware:()=>gu,plugins:()=>Qn,publicApi:()=>Hn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,sdk:()=>cu,users:()=>Fn,utils:()=>cr});module.exports=UI(NB);var Eo=(s=>(s.POST="POST",s.GET="GET",s.PATCH="PATCH",s.DELETE="DELETE",s.PUT="PUT",s))(Eo||{});var cu={};x(cu,{ai:()=>ks,auditLogs:()=>kt,automations:()=>jn,backups:()=>Ne,branding:()=>Pn,environmentVariables:()=>mt,features:()=>Ze,groups:()=>re,init:()=>Am,licensing:()=>ct,logger:()=>Zt,plugins:()=>Qn,publicApi:()=>Hn,quotas:()=>ft,scimGroups:()=>qr,scimUsers:()=>qe,users:()=>Fn,utils:()=>cr});var Pn={};x(Pn,{getBrandingConfig:()=>vx});var Ze={};x(Ze,{checkBackups:()=>xe,checkFeature:()=>On,checkFeatures:()=>Cs,checkSCIM:()=>qs,isAppBuildersEnabled:()=>Ps,isAuditLogsEnabled:()=>Ln,isBackupsEnabled:()=>Os,isBrandingEnabled:()=>Ls,isEnforceableSSO:()=>Lf,isExpandedPublicApiEnabled:()=>It,isPWAEnabled:()=>Ax,isPkceOidcEnabled:()=>Ix,isRecaptchaEnabled:()=>bx,isSSOEnforced:()=>Sx,isSyncAutomationsEnabled:()=>hx,isTriggerAutomationRunEnabled:()=>yx,isUserGroupsEnabled:()=>Us,isViewPermissionEnabled:()=>wx,isViewReadonlyColumnsEnabled:()=>Tx});var bt=require("@budibase/backend-core"),Ae=require("@budibase/types");var ct={};x(ct,{cache:()=>Je,client:()=>Lt,features:()=>ln,getFreeLicense:()=>Rs,getLicense:()=>Es,getLicenseFromKey:()=>vs,keys:()=>xs,offline:()=>_n,quotas:()=>dn});var Je={};x(Je,{getCachedLicense:()=>Cf,invalidate:()=>Of,refresh:()=>Kt});var za=require("@budibase/backend-core");var kr,qI=a(async()=>{kr=await za.RedisClient.init(za.redis.utils.Databases.LICENSES)},"init"),DI=a(async()=>{kr&&await kr.finish()},"shutdown");process.on("exit",async()=>{await DI()});var vo=a(async()=>(kr||await qI(),kr),"getClient");var Lt={};x(Lt,{activateLicenseKey:()=>Fo,getLicense:()=>ir,getLicenseFromKey:()=>Go,triggerQuota:()=>IS});var zu=F(require("node-fetch"));var Ju=require("@budibase/backend-core"),Ro=require("dd-trace"),Xu=require("dd-trace/ext/formats");var _o=class{constructor(t){this.apiCall=t=>async(r="",n={})=>await Ro.tracer.trace(`api.${t}`,async o=>{o.setTag("url",r);let s={...n.headers};s["Content-Type"]||(s["Content-Type"]="application/json",s.Accept="application/json");let i=s["Content-Type"]==="application/json";Ju.logging.correlation.setHeader(s),Ro.tracer.inject(o,Xu.HTTP_HEADERS,s);let u={method:t,body:i?JSON.stringify(n.body):n.body,headers:s,credentials:"include"};return(0,zu.default)(`${this.host}${r}`,u)});this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}static{a(this,"API")}},xo=_o;var un=require("@budibase/types"),B=require("@budibase/backend-core");var it={};x(it,{bustCache:()=>Lo,getCurrentUsageValues:()=>sc,getQuotaUsage:()=>Ft,setAllUsage:()=>Uo,setAppUsageValue:()=>Po,setUsage:()=>ac,setUsagePerApp:()=>nc,utils:()=>Gr});var Le=require("@budibase/backend-core"),Re=require("@budibase/types");var Gr={};x(Gr,{generateBaseQuotaUsage:()=>Xa,generateNewMonthlyQuotas:()=>Br,generateNewQuotaUsage:()=>Oo,getBreakdownName:()=>en,getCurrentMonthString:()=>xt,getQuotaDocId:()=>Nr,setCurrentMonth:()=>Za,setQuotaReset:()=>Co});var Mr=require("@budibase/backend-core"),Ja=require("@budibase/shared-core"),le=require("@budibase/types");var Nr=a(()=>Mr.context.isSelfHostUsingCloud()?`quota_usage_${Mr.context.getTenantId()}`:Mr.db.StaticDatabases.GLOBAL.docs.usageQuota,"getQuotaDocId"),Zu=a(()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},"getNextQuotaReset"),Co=a(e=>{e.quotaReset=Zu()},"setQuotaReset"),xt=a(()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},"getCurrentMonthString"),Xa=a(()=>({usageQuota:{[le.StaticQuotaName.WORKSPACES]:0,[le.StaticQuotaName.ROWS]:0,[le.StaticQuotaName.PLUGINS]:0,[le.StaticQuotaName.USERS]:0,[le.StaticQuotaName.CREATORS]:0,[le.StaticQuotaName.USER_GROUPS]:0,[le.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[xt()]:Br()}}),"generateBaseQuotaUsage"),Oo=a(()=>{let e={_id:Nr(),quotaReset:Zu(),...Xa(),apps:{}};return Za(e),e},"generateNewQuotaUsage"),Br=a(()=>({[le.MonthlyQuotaName.QUERIES]:0,[le.MonthlyQuotaName.AUTOMATIONS]:0,[le.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,[le.MonthlyQuotaName.ACTIONS]:0,triggers:{}}),"generateNewMonthlyQuotas"),Za=a(e=>{let t=xt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Br()),e.monthly.current=e.monthly[t]},"setCurrentMonth"),en=a((e,t)=>{if(!(!t||!e))switch(e){case le.MonthlyQuotaName.AUTOMATIONS:return le.BreakdownQuotaName.AUTOMATIONS;case le.MonthlyQuotaName.QUERIES:return(0,Ja.isTableIdOrExternalTableId)(t)?le.BreakdownQuotaName.ROW_QUERIES:(0,Ja.isDatasourceOrDatasourcePlusId)(t)?le.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}},"getBreakdownName");var ec=Le.Duration.fromSeconds(60).toMs(),{Writethrough:tc}=Le.cache.writethrough;function MI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}a(MI,"clearDeprecated");var tn=a(()=>Le.tenancy.isSelfHostUsingCloud()?new tc(Le.tenancy.getSelfHostCloudDB(),ec):new tc(Le.tenancy.getGlobalDB(),ec),"getDB");async function Lo(e=0){let r=tn(),n=Nr(),o=await r.tryGet(n);o&&o._rev&&await r.remove(n,o._rev).catch(async s=>{if(e<1)return await Lo(e+1);throw s})}a(Lo,"bustCache");var Ft=a(async()=>{let e=tn(),t=await e.tryGet(Nr());if(!t){t=Oo();let{rev:r}=await e.put(t);t._rev=r}return Za(t),Co(t),MI(t)},"getQuotaUsage"),ac=a(async(e,t,r)=>Uo({name:t,type:r,values:{total:e}}),"setUsage"),nc=a(async(e,t,r)=>{let n=tn(),o=await Ft(),s=Object.values(e).reduce((u,c)=>u+c,0);for(let[u,c]of Object.entries(e))o=oc(o,t,r,{total:s,app:c},{appId:u});let i=await n.put(o);return o._rev=i.rev,o},"setUsagePerApp"),NI=a((e,t,r,n)=>{let o=en(t,r);if(!o||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[o]||(e.breakdown[o]={parent:t,values:{}});let s=e.breakdown[o];return s.values[r]=n.breakdown,e},"setBreakdown"),Po=a((e,t,r,n={},o)=>{let s;try{s=Le.db.getProdWorkspaceID(n?.appId||Le.context.getWorkspaceId())}catch{}if(!s||!o.app||!Re.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[s]||(e.apps={...e.apps,[s]:Xa()});let i=e.apps[s];switch(r){case Re.QuotaUsageType.STATIC:i.usageQuota[t]=o.app;break;case Re.QuotaUsageType.MONTHLY:{let u=xt(),c=t,f=i.monthly[u];f||(i.monthly[u]=Br(),f=i.monthly[u]),f[c]=o.app,Re.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=NI(f,c,n.id,o));break}}return e},"setAppUsageValue"),rc=a((e,t,r,n)=>{if(!Re.APP_QUOTA_NAMES.includes(r))return{};let o;try{o=Le.db.getProdWorkspaceID(Le.context.getWorkspaceId())}catch{}if(!o||!e.apps||!e.apps[o])return{app:0};let s=e.apps[o];switch(t){case Re.QuotaUsageType.STATIC:if(s.usageQuota?.[r])return{app:s.usageQuota[r]};break;case Re.QuotaUsageType.MONTHLY:{let i=xt(),u=r;if(!s.monthly?.[i]?.[u])break;let c=s.monthly[i],f=c[u],g,h=en(u,n);return h&&n&&c.breakdown?.[h]&&(g=c.breakdown[h]?.values[n]),{app:f,breakdown:g||0}}}return{app:0}},"getAppUsageValue"),BI=a((e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},"setStaticTriggers"),GI=a((e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},"setMonthlyTriggers"),oc=a((e,t,r,n,o={})=>{if(r===Re.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,BI(t,e,n.triggers);else if(r===Re.QuotaUsageType.MONTHLY){t=t;let s=xt();e.monthly[s][t]=n.total,GI(t,s,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Po(e,t,r,o,n)},"coreUsageUpdate"),Uo=a(async e=>{let t=Array.isArray(e)?e:[e],r=tn(),n=await Ft();for(let s of t)n=oc(n,s.name,s.type,s.values,s.opts);let o=await r.put(n,0);return n._rev=o.rev,n},"setAllUsage"),sc=a(async(e,t,r)=>{let n=await Ft(),o=0,s={};switch(e){case Re.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;o=n.usageQuota[i],s=rc(n,e,t,r)}break;case Re.QuotaUsageType.MONTHLY:{let i=xt(),u=t;n.monthly[i][u]&&(o=n.monthly[i][u],s=rc(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return Re.APP_QUOTA_NAMES.includes(t)&&!(s.app||s.breakdown)&&(s.app=s.app||0,s.breakdown=s.breakdown||0),{total:o,app:s.app,breakdown:s.breakdown}},"getCurrentUsageValues");var We={};x(We,{destroy:()=>$I,get:()=>qo,save:()=>WI});var Ct=require("@budibase/backend-core");var FI=a(()=>({_id:Ct.StaticDatabases.GLOBAL.docs.licenseInfo}),"newLicenseInfo"),WI=a(async e=>{let t=await qo();t={...t,...e};let n=await Ct.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},"save"),qo=a(async()=>{let e=Ct.tenancy.getGlobalDB();try{return await e.get(Ct.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return FI();throw t}},"get"),$I=a(async()=>{let e=Ct.tenancy.getGlobalDB(),t=await qo();t&&t._rev&&await e.remove(Ct.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)},"destroy");var z={};x(z,{bulkSave:()=>tS,destroy:()=>rS,fetch:()=>JI,generateUserGroupID:()=>YI,get:()=>XI,getBulk:()=>ZI,getByName:()=>Do,getGroupUsers:()=>an,getGroupUsersParams:()=>lc,getUserGroupsParams:()=>pc,save:()=>eS});var j=require("@budibase/backend-core");var ze=require("@budibase/types"),nr=require("@budibase/backend-core");async function ic(){let e=nr.sql.designDoc.base("type");e.sql.tables={[ze.AUDIT_LOG_TYPE]:{fields:{appId:ze.SQLiteType.TEXT,event:ze.SQLiteType.TEXT,userId:ze.SQLiteType.TEXT,timestamp:ze.SQLiteType.TEXT,metadata:ze.SQLiteType.TEXT,name:ze.SQLiteType.TEXT,type:ze.SQLiteType.TEXT,fallback:ze.SQLiteType.TEXT}}};let t=nr.context.getAuditLogsDB(),r;try{r=await t.get(nr.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}a(ic,"createAuditLogDesignDocSQL");var rn=require("@budibase/backend-core");var{ViewName:jI,SEPARATOR:QI,DocumentType:KI,createView:VI}=rn.db,HI=KI.USER+QI;async function uc(){let e=rn.tenancy.getGlobalDB(),t=`function(doc) {
4
4
  if (doc._id.startsWith("${HI}") && Array.isArray(doc.userGroups)) {
5
5
  for (let groupId of doc.userGroups) {
6
6
  emit("g_" + groupId, { email: doc.email, userId: doc._id })
7
7
  emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
8
8
  }
9
9
  }
10
- }`;await VI(e,t,jI.USER_BY_GROUP)}a(ic,"createGroupUserLookupView");var uc=`${j.DocumentType.GROUP}${j.SEPARATOR}`,Fr=a(async()=>(await j.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>j.db.getProdWorkspaceID(t)),"getAppIDs");function cc(e,t={}){e||(e="");let r=e?.startsWith(j.DocumentType.GROUP)?"":uc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${j.UNICODE_MAX}`}}a(cc,"getUserGroupsParams");function pc(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...o}=t;return r?{...o,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${j.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${j.UNICODE_MAX}`,startkey_docid:n}}a(pc,"getGroupUsersParams");function YI(){return`${uc}${j.utils.newid()}`}a(YI,"generateUserGroupID");async function rn(e,t){let r=j.tenancy.getGlobalDB();return(await j.db.queryView(j.db.ViewName.USER_BY_GROUP,pc(e,t),r,ic,{arrayResponse:!0})).map(o=>({_id:o.userId,email:o.email}))||[]}a(rn,"getGroupUsers");async function Wr(e,t){return e.users=await rn(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}a(Wr,"enrichGroup");async function zI(e){let r=(await Wr(e,await Fr())).users?.map(s=>s._id),n=await j.users.bulkGetGlobalUsersById(r),o=[];for(let s of n){if(!s.userGroups)continue;let i=s.userGroups.length;s.userGroups=s.userGroups.filter(u=>u!==e._id),s.userGroups.length!==i&&o.push(s)}o.length&&await j.users.bulkUpdateGlobalUsers(o)}a(zI,"cleanupUsers");async function lc(){return(await j.tenancy.getGlobalDB().allDocs(cc(null,{include_docs:!0}))).rows.map(t=>t.doc)}a(lc,"getAllGroupDocuments");async function JI(){let[e,t]=await Promise.all([lc(),Fr()]),r=[];for(let n of e)r.push(Wr(n,t));return await Promise.all(r)}a(JI,"fetch");async function XI(e){let t=j.tenancy.getGlobalDB(),[r,n]=await Promise.all([t.get(e),Fr()]);return await Wr(r,n)}a(XI,"get");async function ZI(e,t={enriched:!0}){let r=j.tenancy.getGlobalDB(),[n,o]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),Fr()]);if(t?.enriched){let s=[];for(let i of n)s.push(Wr(i,o));return await Promise.all(s)}else return n}a(ZI,"getBulk");async function eS(e){return await j.tenancy.getGlobalDB().put(e)}a(eS,"save");async function tS(e){return await j.tenancy.getGlobalDB().bulkDocs(e)}a(tS,"bulkSave");async function rS(e,t){let r=j.tenancy.getGlobalDB(),n=await r.get(e),o=await r.remove(e,t);return await zI(n),o}a(rS,"destroy");async function qo(e){let t=e.toLowerCase(),[r,n]=await Promise.all([lc(),Fr()]),o=r.find(s=>s.name.toLowerCase()===t);if(o)return await Wr(o,n)}a(qo,"getByName");var $e={};x($e,{deleteAppBackupMetadata:()=>gS,fetchAppBackups:()=>dS,generateAppBackupID:()=>Rc,getAppBackupMetadata:()=>hS,oldestBackupDate:()=>Tc,storeAppBackupMetadata:()=>fS,updateAppBackupMetadata:()=>mS});var te=require("@budibase/backend-core"),wc=require("@budibase/types");var aa={};x(aa,{GENERIC_PAGE_SIZE:()=>ut,auditLogs:()=>or,licenses:()=>De,quotas:()=>At,versions:()=>ra});var De={};x(De,{CLOUD_FREE_LICENSE:()=>nS,SELF_FREE_LICENSE:()=>Do,UNLIMITED:()=>ee,UNLIMITED_LICENSE:()=>oS});var Ot=require("@budibase/types");var At={};x(At,{UNLIMITED:()=>aS,actions:()=>Xr,appBackupRetentionDays:()=>ea,apps:()=>jr,automationLogRetentionDays:()=>Zr,automations:()=>zr,budibaseAICredits:()=>Jr,creators:()=>Kr,customAIConfigurations:()=>ta,plugins:()=>Hr,queries:()=>Yr,rows:()=>$r,userGroups:()=>Vr,users:()=>Qr});var Te=require("@budibase/types");var aS=-1,$r=a(e=>({[Te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),"rows"),jr=a(e=>({[Te.StaticQuotaName.WORKSPACES]:{name:"Workspaces",value:e,triggers:[100]}}),"apps"),Qr=a(e=>({[Te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),"users"),Kr=a(e=>({[Te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),"creators"),Vr=a(e=>({[Te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),"userGroups"),Hr=a(e=>({[Te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),"plugins"),Yr=a(e=>({[Te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),"queries"),zr=a(e=>({[Te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),"automations"),Jr=a(e=>({[Te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),"budibaseAICredits"),Xr=a(e=>({[Te.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),"actions"),Zr=a(e=>({[Te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),"automationLogRetentionDays"),ea=a(e=>({[Te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),"appBackupRetentionDays"),ta=a(e=>({[Te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}}),"customAIConfigurations");var ee=-1,nS={features:[],quotas:{usage:{monthly:{...Yr(ee),...zr(200),...Jr(5e4),...Xr(ee)},static:{...jr(ee),...$r(2e3),...Qr(5),...Kr(5),...Vr(0),...Hr(10),...ta(0)}},constant:{...Zr(1),...ea(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},Do={features:[],quotas:{usage:{monthly:{...Yr(ee),...zr(ee),...Jr(5e4),...Xr(ee)},static:{...$r(ee),...jr(ee),...Qr(20),...Kr(ee),...Vr(0),...Hr(10),...ta(0)}},constant:{...Zr(1),...ea(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},oS={features:[],quotas:{usage:{monthly:{...Yr(ee),...zr(ee),...Jr(ee),...Xr(ee)},static:{...jr(ee),...$r(ee),...Qr(ee),...Kr(ee),...Vr(ee),...Hr(ee),...ta(ee)}},constant:{...Zr(ee),...ea(ee)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}};var ra={};x(ra,{getLicenseVersion:()=>sS,getProVersion:()=>fc});var Wt=require("@budibase/backend-core"),an=F(require("fs")),dc=F(require("path"));var sS=a(()=>{if(Wt.env.isDev()){let e="dev-version.txt",t=dc.default.join(Wt.objectStore.budibaseTempDir(),e);if(an.default.existsSync(t))return an.default.readFileSync(t,"utf8");{let r=Wt.utils.newid();return an.default.writeFileSync(t,r),r}}else return fc()},"getLicenseVersion"),fc=a(()=>{let e=Wt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e},"getProVersion");var or={};x(or,{searchTable:()=>iS});var $t=require("@budibase/types"),mc=require("@budibase/backend-core");function iS(){return{type:"table",sourceType:$t.TableSourceType.INTERNAL,name:$t.AUDIT_LOG_TYPE,sourceId:mc.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:$t.FieldType.JSON},fallback:{name:"fallback",type:$t.FieldType.JSON}}}}a(iS,"searchTable");var ut=9;function na(e,t){let r=e.rows.map(o=>o.doc?o.doc:o);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}a(na,"pagination");var gc=require("@budibase/types");var uS=new Date(864e13).toISOString(),cS=1e3*60*60*24;async function nn(e){let r=(await Je.getCachedLicense()).quotas?.[gc.QuotaType.CONSTANT]?.[e]?.value||0;return r===De.UNLIMITED?new Date(uS).toISOString():new Date(new Date().getTime()-cS*r).toISOString()}a(nn,"getOldestRetentionDate");var sr=require("@budibase/backend-core");var{ViewName:yc,AutomationViewMode:ko,SEPARATOR:pt,DocumentType:Ac,createView:bc}=sr.db,pS=Ac.AUTOMATION_LOG+pt,hc=Ac.APP_BACKUP+pt;async function Ic(){let e=sr.context.getProdWorkspaceDB(),t=`function(doc) {
10
+ }`;await VI(e,t,jI.USER_BY_GROUP)}a(uc,"createGroupUserLookupView");var cc=`${j.DocumentType.GROUP}${j.SEPARATOR}`,Fr=a(async()=>(await j.db.getAllWorkspaces({dev:!0,efficient:!0,idsOnly:!0})).map(t=>j.db.getProdWorkspaceID(t)),"getAppIDs");function pc(e,t={}){e||(e="");let r=e?.startsWith(j.DocumentType.GROUP)?"":cc;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${j.UNICODE_MAX}`}}a(pc,"getUserGroupsParams");function lc(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...o}=t;return r?{...o,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${j.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${j.UNICODE_MAX}`,startkey_docid:n}}a(lc,"getGroupUsersParams");function YI(){return`${cc}${j.utils.newid()}`}a(YI,"generateUserGroupID");async function an(e,t){let r=j.tenancy.getGlobalDB();return(await j.db.queryView(j.db.ViewName.USER_BY_GROUP,lc(e,t),r,uc,{arrayResponse:!0})).map(o=>({_id:o.userId,email:o.email}))||[]}a(an,"getGroupUsers");async function Wr(e,t){return e.users=await an(e._id),e.roles&&(e.roles=Object.fromEntries(Object.entries(e.roles).filter(([r])=>t.includes(r)))),e}a(Wr,"enrichGroup");async function zI(e){let r=(await Wr(e,await Fr())).users?.map(s=>s._id),n=await j.users.bulkGetGlobalUsersById(r),o=[];for(let s of n){if(!s.userGroups)continue;let i=s.userGroups.length;s.userGroups=s.userGroups.filter(u=>u!==e._id),s.userGroups.length!==i&&o.push(s)}o.length&&await j.users.bulkUpdateGlobalUsers(o)}a(zI,"cleanupUsers");async function dc(){return(await j.tenancy.getGlobalDB().allDocs(pc(null,{include_docs:!0}))).rows.map(t=>t.doc)}a(dc,"getAllGroupDocuments");async function JI(){let[e,t]=await Promise.all([dc(),Fr()]),r=[];for(let n of e)r.push(Wr(n,t));return await Promise.all(r)}a(JI,"fetch");async function XI(e){let t=j.tenancy.getGlobalDB(),[r,n]=await Promise.all([t.get(e),Fr()]);return await Wr(r,n)}a(XI,"get");async function ZI(e,t={enriched:!0}){let r=j.tenancy.getGlobalDB(),[n,o]=await Promise.all([r.getMultiple(e,{allowMissing:!0}),Fr()]);if(t?.enriched){let s=[];for(let i of n)s.push(Wr(i,o));return await Promise.all(s)}else return n}a(ZI,"getBulk");async function eS(e){return await j.tenancy.getGlobalDB().put(e)}a(eS,"save");async function tS(e){return await j.tenancy.getGlobalDB().bulkDocs(e)}a(tS,"bulkSave");async function rS(e,t){let r=j.tenancy.getGlobalDB(),n=await r.get(e),o=await r.remove(e,t);return await zI(n),o}a(rS,"destroy");async function Do(e){let t=e.toLowerCase(),[r,n]=await Promise.all([dc(),Fr()]),o=r.find(s=>s.name.toLowerCase()===t);if(o)return await Wr(o,n)}a(Do,"getByName");var $e={};x($e,{deleteAppBackupMetadata:()=>gS,fetchAppBackups:()=>dS,generateAppBackupID:()=>Rc,getAppBackupMetadata:()=>hS,oldestBackupDate:()=>Ec,storeAppBackupMetadata:()=>fS,updateAppBackupMetadata:()=>mS});var te=require("@budibase/backend-core"),Tc=require("@budibase/types");var aa={};x(aa,{GENERIC_PAGE_SIZE:()=>ut,auditLogs:()=>or,licenses:()=>De,quotas:()=>At,versions:()=>ra});var De={};x(De,{CLOUD_FREE_LICENSE:()=>nS,SELF_FREE_LICENSE:()=>ko,UNLIMITED:()=>ee,UNLIMITED_LICENSE:()=>oS});var Ot=require("@budibase/types");var At={};x(At,{UNLIMITED:()=>aS,actions:()=>Xr,appBackupRetentionDays:()=>ea,apps:()=>jr,automationLogRetentionDays:()=>Zr,automations:()=>zr,budibaseAICredits:()=>Jr,creators:()=>Kr,customAIConfigurations:()=>ta,plugins:()=>Hr,queries:()=>Yr,rows:()=>$r,userGroups:()=>Vr,users:()=>Qr});var Te=require("@budibase/types");var aS=-1,$r=a(e=>({[Te.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),"rows"),jr=a(e=>({[Te.StaticQuotaName.WORKSPACES]:{name:"Workspaces",value:e,triggers:[100]}}),"apps"),Qr=a(e=>({[Te.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),"users"),Kr=a(e=>({[Te.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),"creators"),Vr=a(e=>({[Te.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),"userGroups"),Hr=a(e=>({[Te.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),"plugins"),Yr=a(e=>({[Te.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),"queries"),zr=a(e=>({[Te.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),"automations"),Jr=a(e=>({[Te.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),"budibaseAICredits"),Xr=a(e=>({[Te.MonthlyQuotaName.ACTIONS]:{name:"Actions",value:e,triggers:[80,90,100]}}),"actions"),Zr=a(e=>({[Te.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),"automationLogRetentionDays"),ea=a(e=>({[Te.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),"appBackupRetentionDays"),ta=a(e=>({[Te.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}}),"customAIConfigurations");var ee=-1,nS={features:[],quotas:{usage:{monthly:{...Yr(ee),...zr(200),...Jr(5e4),...Xr(ee)},static:{...jr(ee),...$r(2e3),...Qr(5),...Kr(5),...Vr(0),...Hr(10),...ta(0)}},constant:{...Zr(1),...ea(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},ko={features:[],quotas:{usage:{monthly:{...Yr(ee),...zr(ee),...Jr(5e4),...Xr(ee)},static:{...$r(ee),...jr(ee),...Qr(20),...Kr(ee),...Vr(0),...Hr(10),...ta(0)}},constant:{...Zr(1),...ea(0)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}},oS={features:[],quotas:{usage:{monthly:{...Yr(ee),...zr(ee),...Jr(ee),...Xr(ee)},static:{...jr(ee),...$r(ee),...Qr(ee),...Kr(ee),...Vr(ee),...Hr(ee),...ta(ee)}},constant:{...Zr(ee),...ea(ee)}},plan:{type:Ot.PlanType.FREE,usesInvoicing:!1,model:Ot.PlanModel.PER_USER}};var ra={};x(ra,{getLicenseVersion:()=>sS,getProVersion:()=>mc});var Wt=require("@budibase/backend-core"),nn=F(require("fs")),fc=F(require("path"));var sS=a(()=>{if(Wt.env.isDev()){let e="dev-version.txt",t=fc.default.join(Wt.objectStore.budibaseTempDir(),e);if(nn.default.existsSync(t))return nn.default.readFileSync(t,"utf8");{let r=Wt.utils.newid();return nn.default.writeFileSync(t,r),r}}else return mc()},"getLicenseVersion"),mc=a(()=>{let e=Wt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e},"getProVersion");var or={};x(or,{searchTable:()=>iS});var $t=require("@budibase/types"),gc=require("@budibase/backend-core");function iS(){return{type:"table",sourceType:$t.TableSourceType.INTERNAL,name:$t.AUDIT_LOG_TYPE,sourceId:gc.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:$t.FieldType.JSON},fallback:{name:"fallback",type:$t.FieldType.JSON}}}}a(iS,"searchTable");var ut=9;function na(e,t){let r=e.rows.map(o=>o.doc?o.doc:o);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}a(na,"pagination");var hc=require("@budibase/types");var uS=new Date(864e13).toISOString(),cS=1e3*60*60*24;async function on(e){let r=(await Je.getCachedLicense()).quotas?.[hc.QuotaType.CONSTANT]?.[e]?.value||0;return r===De.UNLIMITED?new Date(uS).toISOString():new Date(new Date().getTime()-cS*r).toISOString()}a(on,"getOldestRetentionDate");var sr=require("@budibase/backend-core");var{ViewName:Ac,AutomationViewMode:Mo,SEPARATOR:pt,DocumentType:bc,createView:Ic}=sr.db,pS=bc.AUTOMATION_LOG+pt,yc=bc.APP_BACKUP+pt;async function Sc(){let e=sr.context.getProdWorkspaceDB(),t=`function(doc) {
11
11
  if (doc._id.startsWith("${pS}")) {
12
12
  let autoId = doc.automationId + "${pt}"
13
13
  let status = doc.status + "${pt}"
14
- let autoKey = "${ko.AUTOMATION}${pt}" + autoId + doc.createdAt
15
- let statusKey = "${ko.STATUS}${pt}" + status + doc.createdAt
16
- let allKey = "${ko.ALL}${pt}" + status + autoId + doc.createdAt
14
+ let autoKey = "${Mo.AUTOMATION}${pt}" + autoId + doc.createdAt
15
+ let statusKey = "${Mo.STATUS}${pt}" + status + doc.createdAt
16
+ let allKey = "${Mo.ALL}${pt}" + status + autoId + doc.createdAt
17
17
  emit(statusKey)
18
18
  emit(autoKey)
19
19
  emit(allKey)
20
20
  }
21
- }`;await bc(e,t,yc.AUTOMATION_LOGS)}a(Ic,"createLogByAutomationView");async function Sc(){let e=sr.tenancy.getGlobalDB(),t=`function(doc) {
22
- if (doc._id.startsWith("${hc}") && doc.type && doc.trigger) {
21
+ }`;await Ic(e,t,Ac.AUTOMATION_LOGS)}a(Sc,"createLogByAutomationView");async function wc(){let e=sr.tenancy.getGlobalDB(),t=`function(doc) {
22
+ if (doc._id.startsWith("${yc}") && doc.type && doc.trigger) {
23
23
  let full = doc.appId + "${pt}"
24
24
  full += doc.trigger.toLowerCase() + "${pt}"
25
25
  full += doc.type.toLowerCase() + "${pt}"
26
- emit("${hc}" + full + doc.timestamp)
26
+ emit("${yc}" + full + doc.timestamp)
27
27
  }
28
- }`;await bc(e,t,yc.WORKSPACE_BACKUP_BY_TRIGGER)}a(Sc,"createAppBackupTriggerView");async function Tc(){return nn(wc.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}a(Tc,"oldestBackupDate");var Mo=`${te.db.DocumentType.APP_BACKUP}${te.db.SEPARATOR}`;async function lS(e,t,r={}){let n=await Tc(),o=te.db.getProdWorkspaceID(e),s=o,i=o;if(t.trigger&&t.type){let u=`${te.db.SEPARATOR}${t.trigger}`;u+=`${te.db.SEPARATOR}${t.type}`,s+=u,i+=u}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${te.db.SEPARATOR}${t.startDate}`),t.endDate&&(s+=`${te.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${Mo}${s}${te.db.UNICODE_MAX}`,endkey:`${Mo}${i}`}}a(lS,"getAppBackupParams");async function Ec(e,t){try{let r=te.db.getQueryIndex(te.db.ViewName.WORKSPACE_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Sc(),Ec(e,t);throw r}}a(Ec,"getAppBackupsByTrigger");function Rc(e,t){return`${Mo}${e}${te.db.SEPARATOR}${t}`}a(Rc,"generateAppBackupID");async function dS(e,t={}){let r=te.tenancy.getGlobalDB(),n,o=t.limit||9,s=await lS(e,t,{include_docs:!0,limit:o+1});t.page&&(s.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(s):n=await Ec(r,s);let i=na(n,{paginate:t.paginate,pageSize:o}),u=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await te.users.bulkGetGlobalUsersById(u,{cleanup:!0});for(let f of c)for(let g of i.data)f?._id===g.createdBy&&(g.createdBy=f);return i}a(dS,"fetchAppBackups");async function fS(e,t={}){let r=te.tenancy.getGlobalDB(),n=te.db.getProdWorkspaceID(e.appId),o=Rc(n,e.timestamp),s={...e,_id:o,appId:n,name:e.name};return s._id=t.docId||s._id,s._rev=t.docRev||s._rev,t.filename&&(s.filename=t.filename),e.createdBy&&(s.createdBy=te.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(s)}a(fS,"storeAppBackupMetadata");async function mS(e,t){let r=te.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}a(mS,"updateAppBackupMetadata");async function gS(e){let t=te.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}a(gS,"deleteAppBackupMetadata");async function hS(e){return await te.tenancy.getGlobalDB().get(e)}a(hS,"getAppBackupMetadata");var jt={};x(jt,{get:()=>AS,getCacheEnvVarID:()=>xc,getEnvVarID:()=>on,update:()=>bS});var Xe=require("@budibase/backend-core"),_c=F(require("lru-cache"));var yS=1e3,vc=new _c.default({max:yS});function on(){return Xe.StaticDatabases.GLOBAL.docs.environmentVariables}a(on,"getEnvVarID");function xc(e){return`${Xe.tenancy.getTenantId()}/${on()}/${e||""}`}a(xc,"getCacheEnvVarID");async function AS(){let e=on(),t=Xe.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(u){if(u.status==404)n=!0;else throw u}let o=xc(r?._rev),s=vc.get(o);if(s)return s;let i;return!n&&r?i={...r,variables:JSON.parse(Xe.encryption.decrypt(r.variables,Xe.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},vc.set(o,i),i}a(AS,"get");async function bS(e){let t=on();return await Xe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Xe.encryption.encrypt(JSON.stringify(e.variables),Xe.encryption.SecretOption.ENCRYPTION)})}a(bS,"update");var No=require("dd-trace");var un=new _o(B.env.INTERNAL_ACCOUNT_PORTAL_URL),cn=a(async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},"getResponseErrorMessage"),Cc=a(async e=>{let t,r;if(B.env.SELF_HOSTED){if(t=await We.get(),!t.licenseKey)return;r={[B.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=B.tenancy.getTenantId();r={[B.constants.Header.API_KEY]:B.env.ACCOUNT_PORTAL_API_KEY,[B.constants.Header.TENANT_ID]:n}}return e(r)},"authAware"),Oc=a(async()=>await No.tracer.trace("_getLicense",async()=>await Cc(async e=>{let t=await it.getQuotaUsage();if(t.usageQuota.users==null){let u=await B.users.getUserCount();console.info(`Syncing user count quota to ${u}`),t.usageQuota.users=u,await it.setUsage(u,sn.StaticQuotaName.USERS,sn.QuotaUsageType.STATIC)}let r=await B.installation.getInstallFromDB(),n=B.tenancy.getTenantId(),o=await B.events.identification.getUniqueTenantId(n),s=ra.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:o,version:s}};try{let u=await un.post("/api/license",{headers:{...e},body:i});if(u.status===404||u.status===403)return;if(u.status!==200){let c=await cn(u);throw new B.HTTPError(`Error getting license: ${c}`,u.status)}return u.json()}catch(u){if(B.env.DISABLE_ACCOUNT_PORTAL)return;throw u}})),"_getLicense");B.env.isJest()&&(Oc=jest.fn());var ir=Oc;async function Bo(e){return await No.tracer.trace("getLicenseFromKey",async t=>{let r;if(!B.env.ACCOUNT_PORTAL_API_KEY)throw new Error("getLicenseFromKey requires ACCOUNT_PORTAL_API_KEY to be set");try{r=await un.get(`/api/license/${e}`,{headers:{[B.constants.Header.API_KEY]:B.env.ACCOUNT_PORTAL_API_KEY}})}catch(n){if(B.env.DISABLE_ACCOUNT_PORTAL)return;throw n}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let n=await cn(r);throw new B.HTTPError(`Error getting license: ${n}`,r.status)}return r.json()})}a(Bo,"getLicenseFromKey");var IS=a(e=>Cc(async t=>{let r=await un.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await cn(r);B.logging.logAlert(`Error triggering quota usage: ${n}`)}}),"triggerQuota"),Go=a(async e=>{let t=await B.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await un.post("/api/license/activate",{headers:{[B.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new B.HTTPError("Invalid license key",400);if(n.status===409)throw new B.HTTPError("License key has already been activated",409);if(n.status!==200){let o=await cn(n);throw new B.HTTPError(`Error activating license key: ${o}`,n.status)}return n.json()},"activateLicenseKey");var ws=require("@budibase/backend-core");var vn={};x(vn,{activateOfflineLicenseToken:()=>nx,deleteOfflineLicenseToken:()=>ox,dev:()=>_a,enrichLicense:()=>wf,getIdentifier:()=>As,getIdentifierBase64:()=>sx,getIdentifierFromBase64:()=>ix,getOfflineLicense:()=>bs,getOfflineLicenseToken:()=>bf,signing:()=>ia,verifyExpiry:()=>If,verifyInstallation:()=>Sf});var ia={};x(ia,{sign:()=>wS,verifyLicenseToken:()=>sa});var Fo=F(require("jsonwebtoken"));var SS=`-----BEGIN PUBLIC KEY-----
28
+ }`;await Ic(e,t,Ac.WORKSPACE_BACKUP_BY_TRIGGER)}a(wc,"createAppBackupTriggerView");async function Ec(){return on(Tc.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}a(Ec,"oldestBackupDate");var No=`${te.db.DocumentType.APP_BACKUP}${te.db.SEPARATOR}`;async function lS(e,t,r={}){let n=await Ec(),o=te.db.getProdWorkspaceID(e),s=o,i=o;if(t.trigger&&t.type){let u=`${te.db.SEPARATOR}${t.trigger}`;u+=`${te.db.SEPARATOR}${t.type}`,s+=u,i+=u}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${te.db.SEPARATOR}${t.startDate}`),t.endDate&&(s+=`${te.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${No}${s}${te.db.UNICODE_MAX}`,endkey:`${No}${i}`}}a(lS,"getAppBackupParams");async function vc(e,t){try{let r=te.db.getQueryIndex(te.db.ViewName.WORKSPACE_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await wc(),vc(e,t);throw r}}a(vc,"getAppBackupsByTrigger");function Rc(e,t){return`${No}${e}${te.db.SEPARATOR}${t}`}a(Rc,"generateAppBackupID");async function dS(e,t={}){let r=te.tenancy.getGlobalDB(),n,o=t.limit||9,s=await lS(e,t,{include_docs:!0,limit:o+1});t.page&&(s.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(s):n=await vc(r,s);let i=na(n,{paginate:t.paginate,pageSize:o}),u=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await te.users.bulkGetGlobalUsersById(u,{cleanup:!0});for(let f of c)for(let g of i.data)f?._id===g.createdBy&&(g.createdBy=f);return i}a(dS,"fetchAppBackups");async function fS(e,t={}){let r=te.tenancy.getGlobalDB(),n=te.db.getProdWorkspaceID(e.appId),o=Rc(n,e.timestamp),s={...e,_id:o,appId:n,name:e.name};return s._id=t.docId||s._id,s._rev=t.docRev||s._rev,t.filename&&(s.filename=t.filename),e.createdBy&&(s.createdBy=te.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(s)}a(fS,"storeAppBackupMetadata");async function mS(e,t){let r=te.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}a(mS,"updateAppBackupMetadata");async function gS(e){let t=te.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}a(gS,"deleteAppBackupMetadata");async function hS(e){return await te.tenancy.getGlobalDB().get(e)}a(hS,"getAppBackupMetadata");var jt={};x(jt,{get:()=>AS,getCacheEnvVarID:()=>Cc,getEnvVarID:()=>sn,update:()=>bS});var Xe=require("@budibase/backend-core"),xc=F(require("lru-cache"));var yS=1e3,_c=new xc.default({max:yS});function sn(){return Xe.StaticDatabases.GLOBAL.docs.environmentVariables}a(sn,"getEnvVarID");function Cc(e){return`${Xe.tenancy.getTenantId()}/${sn()}/${e||""}`}a(Cc,"getCacheEnvVarID");async function AS(){let e=sn(),t=Xe.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(u){if(u.status==404)n=!0;else throw u}let o=Cc(r?._rev),s=_c.get(o);if(s)return s;let i;return!n&&r?i={...r,variables:JSON.parse(Xe.encryption.decrypt(r.variables,Xe.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},_c.set(o,i),i}a(AS,"get");async function bS(e){let t=sn();return await Xe.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:Xe.encryption.encrypt(JSON.stringify(e.variables),Xe.encryption.SecretOption.ENCRYPTION)})}a(bS,"update");var Bo=require("dd-trace");var cn=new xo(B.env.INTERNAL_ACCOUNT_PORTAL_URL),pn=a(async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},"getResponseErrorMessage"),Oc=a(async e=>{let t,r;if(B.env.SELF_HOSTED){if(t=await We.get(),!t.licenseKey)return;r={[B.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=B.tenancy.getTenantId();r={[B.constants.Header.API_KEY]:B.env.ACCOUNT_PORTAL_API_KEY,[B.constants.Header.TENANT_ID]:n}}return e(r)},"authAware"),Lc=a(async()=>await Bo.tracer.trace("_getLicense",async()=>await Oc(async e=>{let t=await it.getQuotaUsage();if(t.usageQuota.users==null){let u=await B.users.getUserCount();console.info(`Syncing user count quota to ${u}`),t.usageQuota.users=u,await it.setUsage(u,un.StaticQuotaName.USERS,un.QuotaUsageType.STATIC)}let r=await B.installation.getInstallFromDB(),n=B.tenancy.getTenantId(),o=await B.events.identification.getUniqueTenantId(n),s=ra.getProVersion(),i={quotaUsage:t,tenantId:n,install:{id:r.installId,tenantId:o,version:s}};try{let u=await cn.post("/api/license",{headers:{...e},body:i});if(u.status===404||u.status===403)return;if(u.status!==200){let c=await pn(u);throw new B.HTTPError(`Error getting license: ${c}`,u.status)}return u.json()}catch(u){if(B.env.DISABLE_ACCOUNT_PORTAL)return;throw u}})),"_getLicense");B.env.isJest()&&(Lc=jest.fn());var ir=Lc;async function Go(e){return await Bo.tracer.trace("getLicenseFromKey",async t=>{let r;if(!B.env.ACCOUNT_PORTAL_API_KEY)throw new Error("getLicenseFromKey requires ACCOUNT_PORTAL_API_KEY to be set");try{r=await cn.get(`/api/license/${e}`,{headers:{[B.constants.Header.API_KEY]:B.env.ACCOUNT_PORTAL_API_KEY}})}catch(n){if(B.env.DISABLE_ACCOUNT_PORTAL)return;throw n}if(r.status===404||r.status===403){t.addTags({licenseFound:!1});return}if(r.status!==200){let n=await pn(r);throw new B.HTTPError(`Error getting license: ${n}`,r.status)}return r.json()})}a(Go,"getLicenseFromKey");var IS=a(e=>Oc(async t=>{let r=await cn.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await pn(r);B.logging.logAlert(`Error triggering quota usage: ${n}`)}}),"triggerQuota"),Fo=a(async e=>{let t=await B.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await cn.post("/api/license/activate",{headers:{[B.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new B.HTTPError("Invalid license key",400);if(n.status===409)throw new B.HTTPError("License key has already been activated",409);if(n.status!==200){let o=await pn(n);throw new B.HTTPError(`Error activating license key: ${o}`,n.status)}return n.json()},"activateLicenseKey");var Ts=require("@budibase/backend-core");var _n={};x(_n,{activateOfflineLicenseToken:()=>nx,deleteOfflineLicenseToken:()=>ox,dev:()=>_a,enrichLicense:()=>Tf,getIdentifier:()=>bs,getIdentifierBase64:()=>sx,getIdentifierFromBase64:()=>ix,getOfflineLicense:()=>Is,getOfflineLicenseToken:()=>If,signing:()=>ia,verifyExpiry:()=>Sf,verifyInstallation:()=>wf});var ia={};x(ia,{sign:()=>wS,verifyLicenseToken:()=>sa});var Wo=F(require("jsonwebtoken"));var SS=`-----BEGIN PUBLIC KEY-----
29
29
  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
30
30
  XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
31
31
  l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
@@ -34,22 +34,22 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
34
34
  d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
35
35
  mwIDAQAB
36
36
  -----END PUBLIC KEY-----
37
- `;function sa(e){return Fo.default.verify(e,SS,{algorithms:["RS256"]})}a(sa,"verifyLicenseToken");function wS(e,t){return Fo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(wS,"sign");var pn={};x(pn,{getFeatures:()=>Wo});var l=require("@budibase/types");var TS={[l.PlanType.FREE]:[...De.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]},ES={[l.PlanType.FREE]:[...De.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]};function Wo(e,t){let r=[];function n(o){let s=o[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readFeatures"),e){case l.Hosting.SELF:r=n(TS);break;case l.Hosting.CLOUD:r=n(ES);break}return r}a(Wo,"getFeatures");var ln={};x(ln,{UNLIMITED:()=>m,getQuotas:()=>$o});var J=require("@budibase/types");var d=At,Lc=De,m=-1,ua=a(e=>e*1e6,"millions"),RS={[J.PlanType.FREE]:{...Lc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(1e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ua(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ua(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(1e4),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(5e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(365),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}},vS={[J.PlanType.FREE]:{...Lc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(90),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}};function $o(e,t){let r;function n(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readQuotas"),e){case J.Hosting.SELF:r=n(vS);break;case J.Hosting.CLOUD:r=n(RS);break}return JSON.parse(JSON.stringify(r))}a($o,"getQuotas");var cr={};x(cr,{encoding:()=>ur,workspaceExists:()=>_S});var Pc=require("@budibase/backend-core");async function _S(e){return(await Pc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(_S,"workspaceExists");var ur={};x(ur,{base64ToObject:()=>CS,objectToBase64:()=>xS});function xS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(xS,"objectToBase64");function CS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(CS,"base64ToObject");var hf=require("@budibase/types"),wr=require("@budibase/backend-core"),yf=F(Hl()),Af=F(ys());async function nx(e){await We.save({offlineLicenseToken:e}),await Kt()}a(nx,"activateOfflineLicenseToken");async function ox(){await We.save({offlineLicenseToken:void 0}),await Kt()}a(ox,"deleteOfflineLicenseToken");async function bf(){return(await We.get()).offlineLicenseToken}a(bf,"getOfflineLicenseToken");async function As(){let t=(await wr.installation.getInstall()).installId,r=wr.context.getTenantId(),n=await wr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(As,"getIdentifier");async function sx(){let e=await As();return ur.objectToBase64(e)}a(sx,"getIdentifierBase64");function ix(e){return ur.base64ToObject(e)}a(ix,"getIdentifierFromBase64");function If(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(If,"verifyExpiry");async function Sf(e){let t=await As();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(Sf,"verifyInstallation");function wf(e){let t=e.plan.type,r=hf.Hosting.SELF,n=Wo(r,t),o=$o(r,t);return e.features=(0,yf.default)(e.features,n),e.quotas=(0,Af.default)(e.quotas,o),e}a(wf,"enrichLicense");async function bs(){try{let e=await bf();if(e){let t=await sa(e);return If(t),await Sf(t),wf(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(bs,"getOfflineLicense");var _a={};x(_a,{deleteDevLicense:()=>dx,getOfflineLicense:()=>px,writeDevLicenseToDisk:()=>lx});var Tf=require("@budibase/backend-core"),Ss=require("path"),Ef=require("os"),Vt=F(require("fs"));var ux=Tf.env.isTest()?".budibase-test":".budibase",Is=(0,Ss.join)((0,Ef.tmpdir)(),ux),cx="dev_license.txt",va=(0,Ss.join)(Is,cx);if(!Vt.default.existsSync(Is))try{Vt.default.mkdirSync(Is)}catch{}function px(){try{if(Vt.default.existsSync(va)){let e=Vt.default.readFileSync(va,{encoding:"utf-8"});return sa(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(px,"getOfflineLicense");function lx(e){console.log(`Writing license to: ${va}`),Vt.default.writeFileSync(va,e,{encoding:"utf-8"})}a(lx,"writeDevLicenseToDisk");function dx(){Vt.default.rmSync(va,{force:!0})}a(dx,"deleteDevLicense");var Rf=require("dd-trace");var Ts=a(async()=>await Rf.tracer.trace("getLicense",async e=>{if(ws.env.OFFLINE_MODE)return e.addTags({offline:!0}),bs();let t=await ir();return t||(e.addTags({offlineFallback:!0}),t=_a.getOfflineLicense()),t}),"getLicense"),Es=a(e=>Bo(e),"getLicenseFromKey"),Rs=a(()=>ws.env.SELF_HOSTED?De.SELF_FREE_LICENSE:De.CLOUD_FREE_LICENSE,"getFreeLicense");var _s={};x(_s,{activateLicenseKey:()=>fx,deleteLicenseKey:()=>mx,getLicenseKey:()=>_n});var vs=F(require("dd-trace"));async function fx(e){await Go(e),await We.save({licenseKey:e}),await Kt()}a(fx,"activateLicenseKey");async function _n(){return await vs.default.trace("getLicenseKey",async e=>{let t=await We.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(_n,"getLicenseKey");async function mx(){return await vs.default.trace("deleteLicenseKey",async()=>{await We.save({licenseKey:void 0}),await Kt()})}a(mx,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),xn=F(require("dd-trace"));var vf=3600,Kt=a(async()=>{await Cf(),await xf()},"refresh"),_f=a(async(e,t)=>{let{populateLicense:r=Ts,populateFreeLicense:n=Rs}=t||{};return await xn.default.trace("getCachedLicense",async o=>{let s=Ht.context.getLicense();if(s)return o.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let i=Ht.tenancy.getTenantId(),u=await Eo(),c=await u.get(i);return o.addTags({tenantId:i,foundInCache:!!c}),c?(o.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await xn.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=xn.default.trace("populateFreeLicense",()=>n(e,i)),o.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),o.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:vf}),await u.store(i,c,vf),c)})},"_getCachedLicense");Ht.env.isJest()&&(_f=jest.fn());var xf=_f,Cf=a(async()=>{let e=Ht.tenancy.getTenantId();await(await Eo()).delete(e)},"invalidate");async function be(e,t){Array.isArray(e)||(e=[e]),t||(t=await Je.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(be,"areFeaturesEnabled");async function Cn(e,t){if(!await be(e,t))throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e)}a(Cn,"checkFeature");async function xs(e,t){if(!await be(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledError(`${r} are not currently enabled`,r)}}a(xs,"checkFeatures");function xe(e){return async(...t)=>(await Cn(Ae.Feature.WORKSPACE_BACKUPS),e(...t))}a(xe,"checkBackups");async function Cs(){return be(Ae.Feature.WORKSPACE_BACKUPS)}a(Cs,"isBackupsEnabled");async function Os(){return be(Ae.Feature.BRANDING)}a(Os,"isBrandingEnabled");async function Of(){return be(Ae.Feature.ENFORCEABLE_SSO)}a(Of,"isEnforceableSSO");async function hx(){return be(Ae.Feature.SYNC_AUTOMATIONS)}a(hx,"isSyncAutomationsEnabled");async function yx(){return be(Ae.Feature.TRIGGER_AUTOMATION_RUN)}a(yx,"isTriggerAutomationRunEnabled");async function Ls(){return be(Ae.Feature.APP_BUILDERS)}a(Ls,"isAppBuildersEnabled");async function On(){return be(Ae.Feature.AUDIT_LOGS)}a(On,"isAuditLogsEnabled");async function Ps(){return be(Ae.Feature.USER_GROUPS)}a(Ps,"isUserGroupsEnabled");function Ax(){return be(Ae.Feature.PWA)}a(Ax,"isPWAEnabled");function bx(){return be(Ae.Feature.RECAPTCHA)}a(bx,"isRecaptchaEnabled");var Ix=a(()=>be(Ae.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function It(){return be(Ae.Feature.EXPANDED_PUBLIC_API)}a(It,"isExpandedPublicApiEnabled");async function Sx(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Of())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}a(Sx,"isSSOEnforced");var Us=a(async()=>{let e=Ae.Feature.SCIM,t=await be(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function wx(){return be(Ae.Feature.VIEW_PERMISSIONS)}a(wx,"isViewPermissionEnabled");async function Tx(){return be(Ae.Feature.VIEW_READONLY_COLUMNS)}a(Tx,"isViewReadonlyColumnsEnabled");var Ex={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Rx(e){return await Os()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Ex}a(Rx,"getBrandingConfig");var Ds={};x(Ds,{enrichAIConfig:()=>qs});var Lf=require("@budibase/backend-core");var vx="budibase_ai";async function qs(e){if(Lf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[vx]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}a(qs,"enrichAIConfig");var ft={};x(ft,{addAction:()=>Lx,addApp:()=>Px,addAutomation:()=>Nx,addGroup:()=>Ms,addPlugin:()=>Bs,addRow:()=>qx,addRows:()=>kx,addUsers:()=>qn,bustCache:()=>Oo,decrement:()=>St,decrementMany:()=>xa,getCurrentUsageValues:()=>oc,getLicensedQuota:()=>Uf,getQuotaUsage:()=>Ft,increment:()=>Me,incrementBudibaseAICredits:()=>kn,incrementMany:()=>zt,removeApp:()=>Ux,removeGroup:()=>Ns,removePlugin:()=>Gs,removeRow:()=>Dx,removeRows:()=>Mx,removeUsers:()=>vr,set:()=>ks,setAllUsage:()=>Po,setAppUsageValue:()=>Lo,setUsage:()=>rc,setUsagePerApp:()=>ac,updatePluginCount:()=>Fs,updateUsage:()=>Tr,usageLimitIsExceeded:()=>Ox,utils:()=>Gr});var Pn=require("@budibase/types");var et=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Me=a(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await Pf({change:1,name:e,type:t,opts:r}))),"increment"),zt=a(e=>Yt.tracer.trace("quotas.incrementMany",async()=>Pf(e)),"incrementMany"),Pf=a(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let n=[];for(let o of r)await Yt.tracer.trace("quotas.incrementMany.fn",async s=>{s.addTags({actionName:o.name,actionType:o.type,actionChange:o.change});let i=o.opts?.fn;i&&n.push(await i())});return await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!1,valueFn:o.opts?.valueFn,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}}))),n[0]}),"tryIncrement"),St=a((e,t,r={})=>Tr({usageChange:-1,name:e,type:t,opts:r}),"decrement"),xa=a(e=>{let t=Array.isArray(e)?e:[e];return Tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),ks=a(async(e,t,r)=>it.setUsage(r,e,t),"set"),_x=a((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=it.utils.getCurrentMonthString(),o=r.monthly[n].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),xx=a(async(e,t,r,n)=>{try{await et.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};n&&(o.resetDate=n),await Lt.triggerQuota(o)})}catch(o){et.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),Cx=a(async(e,t,r,n)=>{let o=await Ft(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await _x(e,t,o),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,g]of u.entries())if(c>=g&&n.value!==At.UNLIMITED){if(!i[g]){i[g]=new Date().toISOString();let y=u[f+1]||100;(!(c>=y)||c===g)&&await xx(t,n,c,s)}}else i[g]=void 0;return i},"checkTriggers"),Tr=a(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=et.tenancy.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let o,s,i=[],u={},c={},f={},g={};for(let y of n)await Yt.tracer.trace("quotas.updateUsage.action",async E=>{E.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{o=et.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(y.name)&&!o)throw new Error("App context required for quota update");try{s=await Uf(de.QuotaType.USAGE,y.name,y.type),i.push(s);let{total:k,app:D,breakdown:C}=await it.getCurrentUsageValues(y.type,y.name,y.opts?.id);k+=y.usageChange,D!=null&&(D+=y.usageChange),C!=null&&(C+=y.usageChange);let W={};if(y.opts?.dryRun||(W=await Cx(y.type,y.name,k,s),g={...g,[y.name]:W}),s.value!==At.UNLIMITED&&k>s.value&&y.usageChange>0)throw new et.UsageLimitError(`Licensed ${s.name} of ${s.value} has been exceeded`,s.name);if(k=Math.max(0,k),D&&(D=Math.max(0,D)),C&&(C=Math.max(0,C),f={...f,[y.name]:C}),!y.opts?.dryRun){let ye=y.opts?.valueFn;ye&&(k=await ye(),D=k),u={...u,[y.name]:k},c={...c,[y.name]:D}}}catch(k){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,k),k}});let h=n.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:u[y.name],app:c[y.name],breakdown:f[y.name],triggers:g[y.name]},opts:{...y.opts,tenantId:r}}));h.length>0&&await it.setAllUsage(h)})},"updateUsage"),Uf=a(async(e,t,r)=>{let n=await Je.getCachedLicense();if(!n){let o=et.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),Ox=a(async({name:e,type:t,usageChange:r})=>{try{return await Tr({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw n}},"usageLimitIsExceeded");var Lx=a(async e=>Me(Pn.MonthlyQuotaName.ACTIONS,Pn.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var qf=require("@budibase/backend-core"),Er=require("@budibase/types");var Df=a(async()=>{let e=await qf.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Px=a(async(e,{appId:t}={})=>Me(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{fn:e,valueFn:Df,id:t}),"addApp"),Ux=a(async({appId:e}={})=>St(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{valueFn:Df,id:e}),"removeApp");var lt=require("@budibase/types");var qx=a(async(e,{tableId:t}={})=>Me(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),Dx=a(async({tableId:e}={})=>St(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{id:e}),"removeRow"),kx=a(async(e,t,{tableId:r}={})=>zt({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),Mx=a(async(e,{tableId:t}={})=>xa({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var Un=require("@budibase/types");var Nx=a(async(e,{automationId:t}={})=>Me(Un.MonthlyQuotaName.AUTOMATIONS,Un.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var Rr=require("@budibase/types");var Ms=a(async e=>Me(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Ns=a(async()=>St(Rr.StaticQuotaName.USER_GROUPS,Rr.QuotaUsageType.STATIC),"removeGroup");var Dt=require("@budibase/types");var Bs=a(async e=>Me(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),Gs=a(async()=>St(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC),"removePlugin"),Fs=a(async e=>ks(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,e),"updatePluginCount");var dt=require("@budibase/types"),Ca=require("@budibase/backend-core");var qn=a(async(e,t,r)=>{let n=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:Ca.users.getUserCount}}];t>0&&n.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getCreatorCount}});let o=await zt(n);return await ir(),o},"addUsers"),vr=a(async(e,t)=>{let r=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getUserCount}}];t>0&&r.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getCreatorCount}}),await xa(r),await ir()},"removeUsers");var Dn=require("@budibase/types");var kn=a(async e=>zt({change:e,name:Dn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:Dn.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Gn={};x(Gn,{db:()=>Qe});var Ks=require("@budibase/backend-core");var re={};x(re,{addUsers:()=>Bn,adjustGroupCreatorsQuotas:()=>Wx,cleanupApp:()=>Fx,enrichUserRolesFromGroups:()=>Gx,fetch:()=>Oa,get:()=>_r,getBulk:()=>Wf,getGroupBuilderAppIds:()=>Ff,getGroupRoleId:()=>Bx,remove:()=>Ws,removeUsers:()=>$s,save:()=>Nn,updateGroupApps:()=>Qs});var N=require("@budibase/backend-core");var kf=require("@budibase/backend-core");var Mn=class extends kf.HTTPError{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Bf(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[N.db.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await N.roles.roleToNumber(u)}))),o,s,i={};n.forEach(u=>{let[c,f]=Object.entries(u)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw N.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(Bf,"findHighestRole");async function Gf(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}a(Gf,"groupList");async function Ff(e,t){if(!e.userGroups)return[];let r=await Gf(e.userGroups,t?.groups),n=t?.appId?N.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;n&&i?.includes(n)?o.push(n):n||(o=o.concat(i||[]))}return[...new Set(o)]}a(Ff,"getGroupBuilderAppIds");async function Bx(e,t,r){if(!e.userGroups)return null;let n=await Gf(e.userGroups,r?.groups),o=N.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(n=n.filter(s=>s?.roles?Object.keys(s.roles).includes(o):!1),await Bf(n,t))}a(Bx,"getGroupRoleId");async function Gx(e){if(!e||!e.userGroups)return e;let t=await Wf(e.userGroups,{enriched:!1}),r=[];for(let o of t)o?.roles&&(r=r.concat(Object.keys(o.roles)));r=[...new Set(r)];for(let o of r)await N.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Bf(t,o);s&&(e.roles[o]=s)});let n=await Ff(e,{groups:t});if(n.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={apps:o.concat(n)}}return e}a(Gx,"enrichUserRolesFromGroups");async function Oa(){return await z.fetch()}a(Oa,"fetch");async function _r(e){return await z.get(e)}a(_r,"get");async function Wf(e,t={enriched:!0}){return await z.getBulk(e,t)}a(Wf,"getBulk");async function Mf(e){if(await z.getByName(e))throw new Mn(e)}a(Mf,"guardNameAvailability");async function Nf(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let n=await N.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await N.userUtils.creatorsInList(n)).filter(s=>s).length}a(Nf,"getCreatorsCountInGroup");async function Nn(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=z.generateUserGroupID(),await Mf(e.name),t.push(N.events.group.created(e));else{let s=await z.get(e._id);if(s.name!==e.name&&await Mf(e.name),t.push(N.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let i=s.users?.length||0,u=0;i>0&&(u=await Nf(s)),Object.values(e.roles).includes("CREATOR")?n=i-u:n=-i,t.push(N.events.group.permissionsEdited(e))}}await Promise.all(t);let o=a(()=>z.save(e),"saveGroup");if(r)return await Ms(o);{let s=await o();if(n>0)await qn(0,n);else if(n<0){let i=await Nf(e),u=Math.abs(n)-i;u>0&&await vr(0,u)}return s}}a(Nn,"save");async function Ws(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),o=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let i=N.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),f=(await Promise.all(u.map(E=>i.get(E._id)))).map(E=>({...E,userGroups:E.userGroups.filter(M=>M!==e)})),h=(await N.userUtils.creatorsInList(f)).filter(E=>E).length,y=u.length-h;y&&(o=a(()=>vr(0,y),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await N.events.group.deleted(r),await Ns(),await o(),s}a(Ws,"remove");async function Bn(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||o.push(c);if(!o.length)return o;let s=o.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await N.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let f=(await N.userUtils.creatorsInList(o)).filter(h=>h).length,g=o.length-f;g&&await qn(0,g)}let u=[];for(let c of t)u.push(N.cache.user.invalidateUser(c));return await Promise.all(u),await N.events.group.usersAdded(s.length,r),s}a(Bn,"addUsers");async function $s(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await N.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await N.userUtils.creatorsInList(o)).filter(g=>g).length,f=o.length-c;f&&await vr(0,f)}let i=[];for(let u of t)i.push(N.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await N.events.group.usersDeleted(o.length,r),o}a($s,"removeUsers");async function Qs(e,t){let r=await _r(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];if(r.builder={apps:Object.entries(r.roles).filter(([n,o])=>o==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!Ls())throw new N.HTTPError("Feature not enabled, please check license",400);return await Nn(r)}a(Qs,"updateGroupApps");async function Fx(e){let t=await Oa(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await z.bulkSave(r)}a(Fx,"cleanupApp");async function Wx(){if(!await Ps()){let e=N.tenancy.getGlobalDB(),r=(await Oa()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let o=await z.getGroupUsers(n._id),i=(await Promise.all(o.map(g=>e.get(g._id)))).map(g=>({...g,userGroups:g.userGroups.filter(h=>h!==n._id)})),c=(await N.userUtils.creatorsInList(i)).filter(g=>g).length,f=o.length-c;await z.save({...n,roles:{}}),f&&await vr(0,f)}}}a(Wx,"adjustGroupCreatorsQuotas");Ks.users.UserDB.init(ft,re,Ze);var Qe=Ks.users.UserDB;var $n={};x($n,{logs:()=>Zs});var Zs={};x(Zs,{logSearch:()=>Jx,oldestLogDate:()=>Yf,storeLog:()=>Xx});var Wn=require("@budibase/backend-core"),Hf=require("@budibase/types");var ge=require("@budibase/backend-core"),Fn=require("@budibase/types");var $f=require("@budibase/backend-core");async function jf(e,t){let r,n=5,o=!1,s,i=!0;for(;n>0;n--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||$f.logging.logWarn(`Failed to backoff: ${t}`,r),s}a(jf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:$x,DocumentType:Qf,AutomationViewMode:Vs,ViewName:jx,getQueryIndex:Qx}=ge.db,Kx=new Date(0).toISOString(),Vx=100,Hs=a(async()=>nn(Fn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function Kf(e,t,{status:r,automationId:n}={},o={}){let s=n?`${n}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&n?u=`${Vs.ALL}${wt}${i}${s}`:r?u=`${Vs.STATUS}${wt}${i}`:n?u=`${Vs.AUTOMATION}${wt}${s}`:u=`${Qf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${$x}`,endkey:`${u}${e}`}}a(Kf,"getAutomationLogParams");function Hx(e,t,r){return`${Qf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}a(Hx,"generateAutomationLogID");async function Ys(e,t,r={docs:!0}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Kf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await n.allDocs(i);return na(u,{paginate:r?.paginate,pageSize:9})}a(Ys,"getAllLogs");async function zs(e,t,r={}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o;try{let s={automationId:r?.automationId,status:r?.status},i=Kf(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),o=await n.query(Qx(jx.AUTOMATION_LOGS),i)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await Ic(),zs(e,t,r);throw s}return na(o,{paginate:!0,pageSize:9})}a(zs,"getLogsByView");async function Vf(e,t){let r=ge.context.getProdWorkspaceDB(),n=e._id,o=e.name,s=new Date().toISOString(),i=Hx(s,t.status,n),u={...t,automationId:n,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}a(Vf,"writeLog");async function Js(e,{clearing:t}={clearing:!1}){let r=ge.context.getProdWorkspaceDB();await jf(async()=>{let n=await r.get(ge.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ge.db.SEPARATOR),i=`${s[s.length-3]}${ge.db.SEPARATOR}${s[s.length-2]}`,u={};n.automationErrors&&(u=n.automationErrors),Array.isArray(u[i])||(u[i]=[]);let c=u[i].indexOf(o);t&&c!==-1?u[i].splice(c,1):u[i].push(o),u[i].length===0&&delete u[i],n.automationErrors=u}await r.put(n),await ge.cache.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(Js,"updateAppMetadataWithErrors");async function Yx(){let e=await Hs();try{return await Ys(Kx,e,{docs:!1,paginate:!1,limit:Vx})}catch{return{data:[],hasNextPage:!1}}}a(Yx,"getExpiredLogs");async function Xs(){let e=ge.context.getProdWorkspaceDB();try{let t=await Yx();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),n=t.data.filter(o=>{let s=o.id.split(ge.db.SEPARATOR);return s[s.length-1]===Fn.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),n.length&&await Js(n,{clearing:!0})}catch(t){ge.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(Xs,"clearOldHistory");var Yf=Hs;async function zx(e,t,r,n){let o,s=new Date().toISOString(),i=await Yf();return(!e||e<i)&&(e=i),r||t?o=await zs(e,s,{automationId:r,status:t,page:n}):o=await Ys(e,s,{status:t,page:n,docs:!0,paginate:!0}),o}a(zx,"getLogs");async function Jx(e){return await Xs(),await zx(e.startDate,e.status,e.automationId,e.page)}a(Jx,"logSearch");async function Xx(e,t){if(!Wn.db.isProdWorkspaceID(Wn.context.getWorkspaceId()))return;let r=await Vf(e,t);t.status===Hf.AutomationStatus.ERROR&&await Js([r]),await Xs()}a(Xx,"storeLog");var jn={};x(jn,{checkPluginQuotas:()=>tC,deletePlugin:()=>eC,storePlugin:()=>Zx});var Zf=require("@budibase/types"),fe=require("@budibase/backend-core");var zf=F(require("fs")),Jf=require("path");function Xf(e,t){return zf.default.readFileSync((0,Jf.join)(e,t),"utf8")}a(Xf,"loadJSFile");async function Zx(metadata,directory,source){let db=fe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=fe.objectStore.getPluginS3Dir(name),files=await fe.objectStore.uploadDirectory(fe.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Zf.PluginType.DATASOURCE){let js=Xf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=fe.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=a(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await Bs(write)}a(Zx,"storePlugin");async function eC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),n=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await Gs()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(eC,"deletePlugin");async function tC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Fs(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}a(tC,"checkPluginQuotas");var mt={};x(mt,{fetch:()=>aC,fetchValues:()=>nC,isEncryptionKeyAvailable:()=>rC,isValid:()=>rm,remove:()=>sC,update:()=>oC});var em=require("@budibase/backend-core"),La=require("@budibase/types");function rC(){return!!em.env.ENCRYPTION_KEY}a(rC,"isEncryptionKeyAvailable");async function aC(){let e=await jt.get();return Object.keys(e.variables)}a(aC,"fetch");async function nC(e){let r=(await jt.get()).variables,n={};for(let[o,s]of Object.entries(r))switch(e){case La.Environment.DEVELOPMENT:n[o]=s.development;break;case La.Environment.PRODUCTION:default:n[o]=s.production;break}return n}a(nC,"fetchValues");async function tm(e){if(!(await ct.cache.getCachedLicense()).features.includes(La.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await jt.get();r.variables=e(r.variables),await jt.update(r)}a(tm,"changeValues");async function oC(e,t){if(rm(e))await tm(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(oC,"update");async function sC(e){await tm(t=>(delete t[e],t))}a(sC,"remove");function rm(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(rm,"isValid");var kt={};x(kt,{definitions:()=>yC,download:()=>hC,fetch:()=>gC,write:()=>fC});var Pe=require("@budibase/backend-core"),Kn=require("@budibase/types");var ue=require("@budibase/backend-core"),tt=require("@budibase/types");var am=require("memorystream"),nm=new ue.sql.Sql(tt.SqlClient.SQL_LITE);async function iC(e,t,r){let n={operation:tt.Operation.READ,table:or.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:tt.SortOrder.DESCENDING,type:tt.SortType.STRING}}},o=nm._query(n);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}a(iC,"getAuditLogSqlQuery");function uC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}a(uC,"generateAuditLogID");async function om(e){e._id||(e._id=uC(e.timestamp)),e.type||(e.type=tt.AUDIT_LOG_TYPE);try{let r=await ue.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){ue.logging.logAlert("Failed to write audit log",t)}}a(om,"save");async function ei(e,t,r){t||(t=1);let n=ue.context.getAuditLogsDB();try{let o=9+1,s=await iC(e,t,o),i=or.searchTable(),u=nm.convertJsonStringColumns(i,await n.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let f={rows:u,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(o){if(o.status===404&&!r?.isRetry)return await cC(),await sc(),await ei(e,t,{isRetry:!0});throw o}}a(ei,"searchSQL");async function cC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:tt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}a(cC,"migrate");function sm(e){let t=ue.context.getAuditLogsDB(),r=new am,n=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=a((f,g)=>{!f||f.length===0||(u=!!(u&&g&&f.includes(g)))},"matcher");if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(u=u&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(s);u=u&&f.includes(e.fullSearch)}return u}}),o=new am;return r.on("data",s=>{let i=JSON.parse(Buffer.from(s).toString());if(Array.isArray(i.docs)){let u="";for(let c of i.docs)u+=JSON.stringify(c)+`
38
- `;o.write(u)}}),r.on("end",()=>{o.end()}),{promise:n,stream:o}}a(sm,"dump");var Pa=require("@budibase/backend-core"),Ua=require("@budibase/string-templates"),Qn=require("@budibase/types");var lC=Pa.constants.MIN_VALID_DATE.toISOString(),dC=Pa.constants.MAX_VALID_DATE.toISOString();function ti(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||lC,e.endDate=e.endDate||dC),e}a(ti,"fillDates");async function im(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Pa.db.getProdWorkspaceID(n)));let t={};function r(n,o){o?.length&&(t.oneOf={...t.oneOf,[n]:o})}return a(r,"addStringParams"),r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=ti(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(im,"getSearchFilters");function ri(e,t,r){let n={_id:e,status:Qn.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(ri,"deleted");function ai(e){let t=(0,Ua.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,Ua.processStringSync)(e,{})}return e}a(ai,"removeTemplateStrings");function um(e,t){let r=Qn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,Ua.processStringSync)(r,t);return n.includes('""')&&(n=ai(r)),n}a(um,"getEventFriendlyName");async function fC(e,t,r){if(!await On()||!Pe.utils.isAudited(e))return;let n=um(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:n,userId:r?.userId||Kn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){s.appId=Pe.db.getProdWorkspaceID(r.appId);let u=await Pe.cache.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(i.appName=u.name)}if(r?.userId){let u=await Pe.users.getById(r?.userId);i.email=u.email}}catch(u){Pe.logging.logAlert("Failed to retrieve fallback information for audit log",u)}return s.fallback=i,await om(s)}a(fC,"write");async function mC(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>Pe.db.getDevWorkspaceID(u.appId)),o=await Pe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await Pe.db.getWorkspacesByIDs([...new Set(n)]),i=[];for(let u of e){let c=o.find(h=>h?._id===u.userId),f=s.find(h=>Pe.db.isSameWorkspaceID(h?.appId,u.appId)),g={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||ri(u.userId,"user",u.fallback)};u.appId&&(g.app=f||ri(u.appId,"app",u.fallback)),i.push(g)}return i}a(mC,"enrich");async function gC(e){if(!await On())throw new Error("Audit logs not available - license required.");let t=await im(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ei(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await mC(r.rows)}}a(gC,"fetch");function hC(e){return e=ti(e),sm(e)}a(hC,"download");function yC(){let e=Object.entries(Kn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ai(r[1]);return t}a(yC,"definitions");var Vn={};x(Vn,{applications:()=>ii,roles:()=>oi,users:()=>ni});var ni={};x(ni,{roleCheck:()=>bC});function AC(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}a(AC,"removeRoles");async function bC(e,t){return await It()||AC(e,t),e}a(bC,"roleCheck");var oi={};x(oi,{assign:()=>IC,unAssign:()=>SC});var qa=require("@budibase/backend-core");async function IC(e,t){if(!await It())throw new Error("Unable to assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let o=qa.db.getProdWorkspaceID(t.role.appId);n.roles[o]=t.role.roleId}if(t.appBuilder){let o=qa.db.getProdWorkspaceID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([o])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Qe.bulkUpdate(r)}a(IC,"assign");async function SC(e,t){if(!await It())throw new Error("Unable to un-assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role){let o=qa.db.getProdWorkspaceID(t.role?.appId);n.roles[o]===t.role.roleId&&delete n.roles[o]}if(t.appBuilder&&n.builder?.apps){let o=qa.db.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==o)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(SC,"unAssign");var ii={};x(ii,{buildExportFn:()=>TC,buildImportFn:()=>wC});var si=require("@budibase/backend-core");function wC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await si.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(wC,"buildImportFn");function TC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:o}=t.request.body;await si.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}a(TC,"buildExportFn");var Se=require("@budibase/backend-core"),Ie=require("@budibase/types"),lm=F(require("fs")),dm=require("path");var ui=require("@budibase/backend-core");var cm;function pm(){cm=new ui.queue.BudibaseQueue(ui.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(pm,"init");function Jt(){return cm}a(Jt,"getBackupQueue");async function ci(e,t={}){return $e.storeAppBackupMetadata(e,t)}a(ci,"storeAppBackupMetadata");function fm(e){let t=new Date().toISOString();switch(e){case Ie.BackupStatus.COMPLETE:case Ie.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}a(fm,"getTimestamps");async function EC(e,t,r,n){let o=await Hn(e);return await $e.storeAppBackupMetadata({...o,...fm(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:n,docId:e})}a(EC,"updateBackupStatus");async function RC(e,t,r){let n=await Hn(e);return await $e.storeAppBackupMetadata({...n,...fm(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}a(RC,"updateRestoreStatus");async function Hn(e){return $e.getAppBackupMetadata(e)}a(Hn,"getAppBackup");async function vC(e,t){return $e.updateAppBackupMetadata(e,t)}a(vC,"updateAppBackup");async function mm(e){let t=await $e.getAppBackupMetadata(e);return t.filename&&await Se.objectStore.deleteFile(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),$e.deleteAppBackupMetadata(e)}a(mm,"deleteAppBackup");async function _C(e){let t=[];for(let r of e)try{await mm(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(_C,"deleteAppBackups");async function xC(e,t){return $e.fetchAppBackups(e,t)}a(xC,"fetchAppBackups");async function gm(e){let t=await $e.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await Se.objectStore.getReadStream(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(gm,"getBackupDownloadStream");async function CC(e){let{stream:t}=await gm(e),r=(0,dm.join)(Se.objectStore.budibaseTempDir(),Se.utils.newid()),n=lm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>o(r))})}a(CC,"downloadAppBackup");async function OC(e,t,r={}){let n;try{n=await ci({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.BACKUP,...r})}catch(o){if(o.status===409)return;throw o}return await Jt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Se.events.backup.appBackupTriggered(e,n.id,Ie.BackupType.BACKUP,t,r?.name),n.id}a(OC,"triggerAppBackup");async function LC(e,t,r,n){let o=await Hn(t),s;try{s=await ci({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Jt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:o}}a(LC,"triggerAppRestore");async function PC(e,t,r){let n=Se.db.getProdWorkspaceID(e);await Se.context.doInWorkspaceContext(n,async()=>{let o=Se.context.getProdWorkspaceDB();if(!await o.exists())return;let i=await o.tryGet(Ie.DocumentType.WORKSPACE_METADATA);i&&(i.backupErrors||(i.backupErrors={}),i.backupErrors[t]||(i.backupErrors[t]=[]),i.backupErrors[t].push(r),await o.put(i),await Se.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}a(PC,"trackBackupError");var UC={isEnabled:Cs,triggerAppRestore:xe(LC),triggerAppBackup:xe(OC),getBackupDownloadStream:xe(gm),downloadAppBackup:xe(CC),fetchAppBackups:xe(xC),storeAppBackupMetadata:xe(ci),updateBackupStatus:xe(EC),updateRestoreStatus:xe(RC),getAppBackup:xe(Hn),updateAppBackup:xe(vC),deleteAppBackup:xe(mm),deleteAppBackups:xe(_C),trackBackupError:xe(PC)},Ke=UC;var li={};x(li,{init:()=>pi});var ae=require("@budibase/backend-core"),rt=require("@budibase/types"),xr=F(require("fs"));async function pi(e){Jt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),kC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),DC(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(pi,"init");async function qC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}a(qC,"removeExistingApp");async function hm(e,t,r,n){let o=ae.db.getDevWorkspaceID(r),s=ae.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=a(async(c,f)=>{n?.doc?await Ke.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Ke.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:n?.name,type:rt.BackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(o,{tar:!0}),f=await n.processing.statsFn(o),g=`${s}/backup-${i}.tar.gz`,h=ae.objectStore.ObjectStoreBuckets.BACKUPS,y=xr.default.createReadStream(c);await ae.objectStore.streamUpload({bucket:h,filename:g,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:s}}}),await u(rt.BackupStatus.COMPLETE,{filename:g,contents:f}),xr.default.existsSync(c)&&xr.default.rmSync(c)}catch(c){ae.logging.logAlert("App backup error",c),await u(rt.BackupStatus.FAILED);let f=n?.doc?.id||`backup-${i}`,g=c instanceof Error?c.message:String(c);await Ke.trackBackupError(s,f,`Backup export failed: ${g}`)}}a(hm,"runBackup");async function DC(e,t){let r=e.data,n=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ae.tenancy.getTenantIDFromWorkspaceID(n);return ae.tenancy.doInTenant(u,async()=>{let c=ae.db.getDevWorkspaceID(n),f=`${c}_temp_${Date.now()}`,{rev:g}=await Ke.updateRestoreStatus(r.docId,r.docRev,rt.BackupStatus.STARTED);await hm(rt.BackupTrigger.RESTORING,u,n,{processing:t,createdBy:i,name:s});let h=await Ke.downloadAppBackup(o),y=rt.BackupStatus.COMPLETE;try{await t.importAppFn(f,ae.db.getDB(f),{file:{type:"application/gzip",path:h},key:h}),await qC(c),await new ae.db.Replication({source:f,target:c}).replicate()}catch(E){ae.logging.logAlert("App restore error",E),y=rt.BackupStatus.FAILED;let M=E instanceof Error?E.message:String(E);await Ke.trackBackupError(n,o,`Backup restore failed: ${M}`)}finally{try{await ae.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Ke.updateRestoreStatus(r.docId,g,y),xr.default.existsSync(h)&&xr.default.rmSync(h,{force:!0})})}a(DC,"importProcessor");async function kC(e,t){let r=e.data,n=r.appId,o=r.export.trigger,s=r.export.name,i=ae.tenancy.getTenantIDFromWorkspaceID(n);await ae.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await Ke.updateBackupStatus(r.docId,rt.BackupStatus.STARTED);return hm(o,i,n,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ae.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Ke.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(kC,"exportProcessor");var MC=a(async e=>{pm(),await pi(e.processing)},"init"),Ne={...Ke,processing:li,init:MC,getBackupQueue:Jt};var ym=a(async e=>{e.backups&&await Ne.init(e.backups)},"init");var qe={};x(qe,{create:()=>ON,find:()=>CN,get:()=>xN,remove:()=>PN,update:()=>LN});var BA=F(ou()),Tt=require("@budibase/backend-core");var GA=require("@budibase/types");async function xN(e){let t=Tt.tenancy.getGlobalDB(),r=new Tt.db.QueryBuilder(t.name,GA.SearchIndex.USER);r.setIndexBuilder(Tt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[o,s]of Object.entries(e.filters?.equal??{}))r.addEqual(o,s);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}a(xN,"get");async function CN(e){return await Tt.users.getById(e)}a(CN,"find");async function ON(e){let t=await Qe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Tt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,BA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Qe.save(e,{requirePassword:!1})}a(ON,"create");async function LN(e,t){return await Qe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(LN,"update");async function PN(e){return await Qe.destroy(e)}a(PN,"remove");var qr={};x(qr,{create:()=>UN});var FA=F(ou());var WA=require("@budibase/backend-core");async function UN(e){let t=await qo(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new WA.HTTPError("Group is already synched",409);r=t._id,t.users&&(await re.removeUsers(r,t.users.map(o=>o._id)),delete t.users),t.scimInfo=(0,FA.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}a(UN,"create");var Zt={};x(Zt,{logRequest:()=>kN,logResponse:()=>MN});var at=require("@budibase/backend-core"),jA=F($A());var{DocWritethrough:qN}=at.cache.docWritethrough;function DN(){return`${at.db.DocumentType.SCIM_LOG}${at.db.SEPARATOR}${(0,jA.default)().format("YYYYMMDD")}`}a(DN,"getLogDocId");var QA=a(()=>{let e=at.context.getScimDBName();return new qN(at.db.getDB(e),DN())},"getDB");async function kN(e){at.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await QA().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}a(kN,"logRequest");async function MN(e,t){at.logging.logWarn("SCIM response",t),await QA().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}a(MN,"logResponse");var mu={};x(mu,{doInScimContext:()=>cu,feature:()=>we,internalGroupOnly:()=>Ba,licenseAuth:()=>fu,licensing:()=>KA,requireSCIM:()=>pu,scimGroupOnly:()=>Na,scimUserOnly:()=>Ma});var Mt=require("@budibase/backend-core");var io=require("@budibase/types");var NN=a((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Mt.env.SELF_HOSTED&&Mt.env.DEFAULT_LICENSE)return t.user.license=Do,r();t.user.license=await ct.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Mt.utils.isServingApp(t)||Mt.utils.isServingBuilder(t)||Mt.utils.isServingBuilderPreview(t)||Mt.utils.isPublicApiRequest(t))&&await ft.usageLimitIsExceeded({name:io.StaticQuotaName.USERS,type:io.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),KA=NN;var we={};x(we,{requireFeature:()=>BN,requireFeatures:()=>GN});var BN=a(e=>async(t,r)=>{await Cn(e),await r()},"requireFeature"),GN=a((...e)=>async(t,r)=>{await xs(e),await r()},"requireFeatures");var uo=require("@budibase/backend-core");var cu=a(async(e,t)=>{let r;return uo.env.ENABLE_SCIM_LOGGER&&(r=await Zt.logRequest({...e.request.toJSON(),body:e.request.body})),await uo.context.doInScimContext(async()=>{let n=await t();return r&&await Zt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})},"doInScimContext");var pu=a(async(e,t)=>{await Us(),await t()},"requireSCIM");var VA=require("@budibase/backend-core");var Ma=a(e=>lu(VA.users.getById,e,!0),"scimUserOnly"),Na=a(e=>lu(z.get,e,!0),"scimGroupOnly"),Ba=a(e=>lu(z.get,e,!1),"internalGroupOnly");function lu(e,t,r){return async(n,o)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),o()}}a(lu,"scimSyncChecks");var Ga=require("@budibase/backend-core");var du=require("dd-trace");async function fu(e,t){await du.tracer.trace("licenseAuth",async r=>{let n=e.request.headers[Ga.constants.Header.LICENSE_KEY];Array.isArray(n)&&(n=n[0]),r.addTags({licenseKey:n}),n||e.throw(403,"License key not provided");let o=await Es(n);o||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),o.tenantId||e.throw(403,"License does not have a tenant ID"),du.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await Ga.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await Ga.context.doInLicenseContext(o,async()=>{await t()})})})}a(fu,"default");var Iu={};x(Iu,{appBackups:()=>ab,auditLogs:()=>lb,environmentVariables:()=>Sb,groups:()=>Ub,scim:()=>cI});var Et=require("@budibase/backend-core"),po=require("@budibase/types"),tb=F(require("@koa/router")),tr=F(require("joi"));var co=require("@budibase/backend-core"),gu=require("@budibase/types");async function er(e,t){t||e.throw(400,"App ID missing"),await cr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(er,"checkAppID");async function HA(e){let t=e.params.appId;await er(e,t);let{body:r}=e.request,n=e.user?._id,o=await Ne.triggerAppBackup(t,gu.BackupTrigger.MANUAL,{name:r.name,createdBy:n});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}a(HA,"manualBackup");async function YA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body.name,o=await Ne.triggerAppRestore(t,r,n,e.user?._id);o||e.throw(500,"Unable to start restore."),await co.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}a(YA,"importBackup");async function zA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(zA,"deleteBackup");async function JA(e){let t=co.context.getWorkspaceId();await er(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let n=await Ne.deleteAppBackups(r),o=n.filter(i=>i.success).length,s=n.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:n,successCount:o,failureCount:s}}a(JA,"deleteBackups");async function XA(e){let t=e.params.appId;await er(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(gu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}a(XA,"fetchBackups");async function ZA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}a(ZA,"updateBackup");async function eb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,{metadata:n,stream:o}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=o}a(eb,"downloadBackup");var rb=new tb.default;function WN(){return Et.auth.joiValidator.body(tr.default.object({trigger:tr.default.string().valid(...Object.values(po.BackupTrigger)),type:tr.default.string().valid(...Object.values(po.BackupType)),startDate:tr.default.date(),endDate:tr.default.date(),page:tr.default.string()}))}a(WN,"validateBackupSearch");rb.post("/api/apps/:appId/backups",Et.auth.builderOrAdmin,HA).post("/api/apps/:appId/backups/search",Et.auth.builderOrAdmin,WN(),XA).get("/api/apps/:appId/backups/:backupId/file",Et.auth.builderOrAdmin,eb).patch("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,ZA).delete("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,zA).delete("/api/apps/:appId/backups",Et.auth.builderOrAdmin,JA).post("/api/apps/:appId/backups/:backupId/import",Et.auth.builderOrAdmin,YA);var ab=rb;var hu=require("@budibase/backend-core");async function nb(e){let t=e.request.body,r=await kt.fetch(t);await hu.events.auditLog.filtered(t),e.body=r}a(nb,"search");async function ob(e){let t=e.request.body,{stream:r}=kt.download(t);await hu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(ob,"download");async function sb(e){e.body={events:kt.definitions()}}a(sb,"definitions");var ub=require("@budibase/types"),rr=require("@budibase/backend-core"),cb=F(require("@koa/router")),Ve=F(require("joi"));function ib(){return rr.auth.joiValidator.body(Ve.default.object({userIds:Ve.default.array().items(Ve.default.string()).optional(),appIds:Ve.default.array().items(Ve.default.string()).optional(),events:Ve.default.array().items(Ve.default.string().valid(...Object.values(ub.Event))).optional(),startDate:Ve.default.string().optional().allow(""),endDate:Ve.default.string().optional().allow(""),fullSearch:Ve.default.string().optional().allow(""),bookmark:Ve.default.number()}))}a(ib,"buildAuditLogSearchValidator");var pb=new cb.default;pb.post("/api/global/auditlogs/search",rr.auth.adminOnly,ib(),nb).get("/api/global/auditlogs/download",rr.auth.adminOnly,rr.middleware.querystringToBody,ib(),ob).get("/api/global/auditlogs/definitions",rr.auth.adminOnly,sb);var lb=pb;var Au=require("@budibase/backend-core"),yu=require("@budibase/types");async function fb(e){e.body={encryptionKeyAvailable:mt.isEncryptionKeyAvailable()}}a(fb,"status");async function mb(e){e.body={variables:await mt.fetch()}}a(mb,"fetch");async function gb(e){let{name:t,production:r,development:n}=e.request.body;await mt.update(t,{production:r,development:n});let o=[yu.Environment.PRODUCTION];r!==n&&o.push(yu.Environment.DEVELOPMENT),await Au.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}a(gb,"create");async function hb(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await mt.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(hb,"update");async function yb(e){let t=e.params.varName;await mt.remove(t),await Au.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(yb,"destroy");var ar=require("@budibase/backend-core"),bb=F(require("@koa/router")),Fa=F(require("joi"));var Ib=new bb.default;function Ab(){return ar.auth.joiValidator.body(Fa.default.object({name:Fa.default.string().optional(),production:Fa.default.string().required(),development:Fa.default.string().required()}))}a(Ab,"buildEnvVarUpdateValidator");Ib.get("/api/env/variables/status",ar.auth.builderOrAdmin,fb).get("/api/env/variables",ar.auth.builderOrAdmin,mb).post("/api/env/variables",ar.auth.builderOrAdmin,Ab(),gb).patch("/api/env/variables/:varName",ar.auth.builderOrAdmin,Ab(),hb).delete("/api/env/variables/:varName",ar.auth.builderOrAdmin,yb);var Sb=Ib;var gt=require("@budibase/backend-core"),Rt=require("@budibase/types"),Lb=F(require("@koa/router")),Ce=F(require("joi"));var wb=require("@budibase/backend-core");async function Tb(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await _r(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Nn(t);e.body={_id:r.id,_rev:r.rev}}a(Tb,"save");async function Eb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let o,s;r&&(o=await Bn(t,r)),n&&(s=await $s(t,n)),e.body={added:o,removed:s}}a(Eb,"updateGroupUsers");async function Rb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await Qs(t,{appsToAdd:r,appsToRemove:n})}a(Rb,"updateGroupApps");async function vb(e){e.body={data:await Oa()}}a(vb,"fetch");async function _b(e){let{groupId:t,rev:r}=e.params;try{await Ws(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(_b,"destroy");async function xb(e){try{e.body=await _r(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(xb,"find");async function Cb(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await rn(o,{...s,emailSearch:n,bookmark:r}),u=n?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}a(Cb,"searchUsers");async function Ob(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let n=await wb.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(n[0]).find(h=>/^(email|e-mail|email address|mail|e_mail)$/i.test(h.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(n.map(h=>h[s]).filter(h=>h&&typeof h=="string"&&h.trim().length>0).map(h=>h.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await _r(t)}catch(h){if(h.status===404)e.throw(404,"Group not found");else throw h}let u=[],c=[],f=[],g=await Promise.all(i.map(h=>Qe.getUserByEmail(h)));for(let h of i){let y=g.find(E=>E?.email===h);y?(u.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:h,reason:"User not found"})}f.length>0&&await Bn(t,f),e.body={added:u,skipped:c}}a(Ob,"bulkAddUsersFromCsv");var Pb=new Lb.default;function KN(){return gt.auth.joiValidator.body(Ce.default.object({_id:Ce.default.string().optional(),_rev:Ce.default.string().optional(),color:Ce.default.string().required(),icon:Ce.default.string().required(),name:Ce.default.string().trim().required().max(50),role:Ce.default.string().optional(),users:Ce.default.array().optional(),apps:Ce.default.array().optional(),roles:Ce.default.object().optional(),createdAt:Ce.default.string().optional(),updatedAt:Ce.default.string().optional()}).required())}a(KN,"buildGroupSaveValidation");Pb.post("/api/global/groups",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),KN(),Tb).get("/api/global/groups",we.requireFeature(Rt.Feature.USER_GROUPS),vb).delete("/api/global/groups/:groupId/:rev",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.adminOnly,Ba("groupId"),_b).get("/api/global/groups/:groupId",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,xb).get("/api/global/groups/:groupId/users",we.requireFeature(Rt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Cb).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ba("groupId"),Eb).post("/api/global/groups/:groupId/users/bulk",gt.auth.adminOnly,we.requireFeature(Rt.Feature.USER_GROUPS),Ba("groupId"),gt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),Ob).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,we.requireFeature(Rt.Feature.USER_GROUPS),Rb);var Ub=Pb;var uI=F(require("@koa/router"));var lo=require("scim-patch");var Db=require("@budibase/backend-core");function qb(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(qb,"tryGetQueryAsNumber");var kb=a(async e=>{let t=qb(e,"pageSize")??20,r=qb(e,"startIndex"),n;e.request.query.filter&&(n=ce.user.userFilters(e.request.query.filter));let o=await qe.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:o.total,Resources:o.users.map(ce.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),Mb=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await qe.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),Nb=a(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await qe.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof Db.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function VN(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}a(VN,"isDeactivation");var Bb=a(async e=>{let t=await qe.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),n=e.request.body;try{(0,lo.patchBodyValidation)(n)}catch{}if(VN(n))return bu(e);let o;try{o=(0,lo.scimPatch)(r,n.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await qe.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),bu=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await qe.remove(t),e.status=204},"remove");var eI=F(Zb()),tI=require("@budibase/shared-core"),fo=require("scim-patch");var mo=require("scim2-parse-filter");function rI(e,t){for(let r of t.split(","))delete e[r]}a(rI,"cleanResponse");var aI=a(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:n,excludedAttributes:o}=e.request.query;if(n){let s=(0,mo.filter)((0,mo.parse)(n));r=r.filter(s)}o&&r.forEach(s=>{rI(s,o)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),nI=a(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await qr.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),oI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&rI(n,o),e.body=n},"find"),sI=a(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),iI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,fo.patchBodyValidation)(o)}catch{e.throw(400)}let{true:s,false:i}=(0,eI.default)(o.Operations,u=>u.path==="members");if(i?.length){let u=(0,fo.scimPatch)(n,i);u||e.throw(500);let c={...ce.group.fromScimGroup(u),_rev:r._rev};await re.save(c)}if(s?.length){let u=[],c=[];for(let{op:f,value:g}of s)switch(f){case"add":case"Add":for(let h of g)u.push(await qe.find(h.value));break;case"remove":case"Remove":for(let h of g)c.push(await qe.find(h.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:tI.utils.unreachable(f)}u.length&&await re.addUsers(t,u.map(f=>f._id)),c.length&&await re.removeUsers(t,c.map(f=>f._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var Wa=require("@budibase/types"),Be=new uI.default({prefix:"/api/global/scim/v2"});Be.use(pu);Be.use(cu);Be.get("/users",kb);Be.get("/users/:id",Ma("id"),Mb);Be.post("/users",Nb);Be.patch("/users/:id",Ma("id"),Bb);Be.delete("/users/:id",Ma("id"),bu);Be.get("/groups",aI);Be.post("/groups",we.requireFeature(Wa.Feature.USER_GROUPS),nI);Be.get("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),oI);Be.delete("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),sI);Be.patch("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),iI);var cI=Be;var ce={};x(ce,{group:()=>wu,user:()=>Su});var Su={};x(Su,{fromScimUser:()=>SB,toScimUserResponse:()=>AB,userFilters:()=>wB});var pI=require("@budibase/backend-core"),lI=require("@budibase/shared-core"),go=require("@budibase/types"),dI=require("scim2-parse-filter");var{unreachable:yB}=lI.utils,AB=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},o={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===go.UserStatus.ACTIVE};(e.firstName||e.lastName)&&(o.name={formatted:[e.firstName,e.lastName].filter(i=>i).join(" "),familyName:e.lastName,givenName:e.firstName});let s="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(o[s]?.manager){let i=o[s].manager;typeof i=="string"&&(o[s].manager={value:i})}return o},"toScimUserResponse"),bB=a(e=>!!e?.id,"isScimUserResponse");function IB(e){if(pI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(IB,"tryGetEmail");var SB=a(e=>{let t=bB(e)?e:void 0,r=IB(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:yB(e.active)}let o,s;return e.name?.givenName?(o=e.name?.givenName,s=e.name?.familyName):o=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:o,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:n?go.UserStatus.ACTIVE:go.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),wB=a(e=>{let t={equal:{}},r=(0,dI.parse)(e);function n(o){switch(o.op){case"eq":{let s=o.attrPath,i;switch(s){case"emails.value":i="email";break;default:i=`scimInfo.${s}`}t.equal[i]=o.compValue;break}case"and":for(let s of o.filters)n(s);break;default:console.warn("Filter not handled",{filter:o})}}return a(n,"parseFilters"),n(r),t},"userFilters");var wu={};x(wu,{fromScimGroup:()=>RB,toScimGroupResponse:()=>TB});var TB=a(e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),"toScimGroupResponse"),EB=a(e=>!!e?.id,"isScimGroup"),RB=a(e=>{let t=EB(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimGroup");var Ku={};x(Ku,{LLM:()=>ht,LLMRequest:()=>se,TableGeneration:()=>Qu,agentHistoryTitleSystemPrompt:()=>kB,agentSystemPrompt:()=>DB,aiColumnSchemas:()=>$u,aiTableResponseToTableSchema:()=>Bu,appendAIColumns:()=>Gu,classifyText:()=>Ru,cleanData:()=>vu,extractFileData:()=>LB,generateAIColumns:()=>Mu,generateCode:()=>qB,generateCronExpression:()=>_u,generateData:()=>Nu,generateJs:()=>Lu,generateSQL:()=>UB,generateTables:()=>ku,generationStructure:()=>Wu,getLLM:()=>Qa,getLLMConfig:()=>Du,getLLMOrThrow:()=>TI,normalizeContentType:()=>Tu,parseResponseFormat:()=>yo,sanitiseToolName:()=>vB,searchWeb:()=>Ou,sentimentAnalysis:()=>Cu,summarizeText:()=>ho,tableDataStructuredOutput:()=>ju,translate:()=>xu});var $a=require("@budibase/types");function vB(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(vB,"sanitiseToolName");function Tu(e){return e?e.includes("/")?e:{[$a.SupportedFileType.PDF]:"application/pdf",[$a.SupportedFileType.JPG]:"image/jpeg",[$a.SupportedFileType.JPEG]:"image/jpeg",[$a.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(Tu,"normalizeContentType");var wo=require("@budibase/types");var yt=require("@budibase/backend-core"),bI=require("@budibase/types");var Ao=F(require("openai"));var Nt=require("@budibase/types");var fI=require("@budibase/shared-core");var Bt=F(require("dd-trace"));function Eu(e,t){return t.map(r=>e[r]).join(" ")}a(Eu,"extractTextFromColumns");var ht=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new se().addUserMessage(t):t,{messages:n,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:o}:{message:n[n.length-1].content||"",tokensUsed:o}})}async chat(t){return await Bt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Bt.default.trace("summarizeText",()=>this.prompt(ho(t)))}async generateCronExpression(t){return Bt.default.trace("generateCronExpression",()=>this.prompt(_u(t)))}async operation(t,r){return Bt.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:n,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(n){case Nt.AIOperationEnum.SUMMARISE_TEXT:return ho(Eu(r,s));case Nt.AIOperationEnum.CLEAN_DATA:return vu(r[o]);case Nt.AIOperationEnum.TRANSLATE:return xu(r[o],i);case Nt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Ru(Eu(r,s),u.split(","));case Nt.AIOperationEnum.SENTIMENT_ANALYSIS:return Cu(r[o]);case Nt.AIOperationEnum.PROMPT:return c;case Nt.AIOperationEnum.SEARCH_WEB:return Ou(Eu(r,s));default:throw fI.utils.unreachable(n)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:o=[]}=r||{};return await this.prompt(Lu(n,o).addUserMessage(t))})}};var gI=require("@budibase/types"),Pu=require("openai/helpers/zod");var hI=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(hI||{});function yo(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(yo,"parseResponseFormat");function mI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(mI,"calculateBudibaseAICredits");var He=class extends ht{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new Ao.default({apiKey:r.apiKey})}async uploadFile(r,n,o){let s=Tu(o);if(gI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let g=[];for await(let h of r)g.push(new Uint8Array(h));c=Buffer.concat(g)}let f=c.toString("base64");return`data:${s};base64,${f}`}let i=await(0,Ao.toFile)(r,n);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:yo(r.format)};Object.values(hI).includes(this.model)&&(n.verbosity="low",n.reasoning_effort="minimal"),r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Pu.zodFunction));let o=await this.client.chat.completions.create(n),s=o?.choices?.[0]?.message;if(s?.tool_calls){r.addMessage(s);let i=[];for(let u of s.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let g=JSON.parse(u.function.arguments);i.push(f.handler(g).then(h=>({role:"tool",tool_call_id:u.id,content:h})).catch(h=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,h),{role:"tool",tool_call_id:u.id,content:`Error: ${h.message}`})))}return r.addMessages(await Promise.all(i)),this.chatCompletion(r)}else{if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:mI(o.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:yo(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Pu.zodFunction));try{let o=await this.client.chat.completions.create(n),s=null,i="",u=null;for await(let f of o){let g=f?.choices?.[0]?.delta;if(g){if(g.content&&(i+=g.content,yield{type:"content",content:g.content}),g.tool_calls&&g.tool_calls.length>0){let h=g.tool_calls[0];h.id?(s={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}}):s&&h.function?.arguments&&(s.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}})}f.usage&&(u=f.usage)}}let c=u?mI(u):0;if(s){r.addMessage({role:"assistant",content:"",tool_calls:[{id:s.id,type:"function",function:{name:s.name,arguments:s.arguments}}]});let f=r.findTool(s.name);if(f)try{let g=JSON.parse(s.arguments),h=await f.handler(g);yield{type:"tool_call_result",toolResult:{id:s.id,result:h}},r.addMessage({role:"tool",tool_call_id:s.id,content:h}),yield*this.chatCompletionStream(r);return}catch(g){yield{type:"tool_call_result",toolResult:{id:s.id,result:`Error: ${g.message}`,error:g.message}},r.addMessage({role:"tool",tool_call_id:s.id,content:`Error: ${g.message}`}),yield*this.chatCompletionStream(r);return}else{let g=`Tool '${s.name}' not found`;yield{type:"tool_call_result",toolResult:{id:s.id,result:g,error:g}},r.addMessage({role:"tool",tool_call_id:s.id,content:g}),yield*this.chatCompletionStream(r);return}}i&&r.addMessage({role:"assistant",content:i}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(o){yield{type:"error",content:o.message}}}};var he=require("@budibase/backend-core"),yI=require("@budibase/types");var Uu=require("dd-trace");var bo=class extends ht{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await kn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await kn(r.tokensUsed),r}async uploadFile(t,r,n){return he.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new He({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let o;if(Buffer.isBuffer(t))o=t;else{let g=[];for await(let h of t)g.push(new Uint8Array(h));o=Buffer.concat(g)}let s=o.toString("base64");if(n&&yI.ImageContentTypes.includes(n.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let g=await _n();if(!g)throw new Error("No license key found");this._apiKey=g}let i=`${he.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await fetch(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await he.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return he.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await Uu.tracer.trace("chatCompletionCloud",async()=>await new He({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await Uu.tracer.trace("chatCompletionSelfHost",async r=>{if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:he.env.BUDICLOUD_URL}),!this._apiKey){let c=await _n();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},o=`${he.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let i=await fetch(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await he.HTTPError.fromResponse(i);let u=await i.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:o,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){he.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new He({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length,toolsCount:t.tools.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var ja=require("dd-trace");var qu=F(require("@anthropic-ai/sdk"));function _B(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(_B,"calculateBudibaseAICredits");var Io=class extends ht{constructor(r){super(r);this.client=new qu.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:s})=>{if(s==null)return{role:"user",content:""};if(typeof s=="string")return{role:"user",content:s};let i="";for(let u of s)u.type==="text"?i+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:i}}),max_tokens:this.maxTokens}),o=this.firstTextBlock(n)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:_B(n.usage)}}catch(n){throw n instanceof qu.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let o=n.messages[n.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var II=require("zod"),SI=require("openai/helpers/zod");var AI=require("openai");var So=class extends He{static{a(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new AI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}};var wI="gpt-5-mini",xB={OpenAI:He,TogetherAI:He,AzureOpenAI:So,Custom:He,Anthropic:Io,BudibaseAI:bo};async function CB(){return await ja.tracer.trace("getAIConfig",async e=>{let t={type:bI.ConfigType.AI,config:{}};if(!yt.context.isSelfHostUsingCloud()){let n=await yt.configs.getAIConfig();n&&(t=n)}await qs(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||wI,apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(CB,"getAIConfig");async function OB(){return ja.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!yt.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!yt.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:wI,apiKey:yt.env.OPENAI_API_KEY}})}a(OB,"getSelfHostOpenAIKeyConfig");async function Du(){return ja.tracer.trace("getLLMConfig",async()=>await CB()||await OB())}a(Du,"getLLMConfig");async function Qa(e){return await ja.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},o=await Du();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),n&&(o.maxTokens=n);let s=xB[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}a(Qa,"getLLM");async function TI(){let e=await Qa();if(!e)throw new yt.HTTPError("No available LLM configurations",500);return e}a(TI,"getLLMOrThrow");var se=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof II.z.ZodType?this.format=(0,SI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var vt=require("zod");function ho(e,t){let r=`Summarize this text:
39
- ${e}`,n="";if(t)switch(t){case wo.SummariseLength.SHORT:n="In 1-2 concise sentences, ";break;case wo.SummariseLength.MEDIUM:n="In 2-3 paragraphs, ";break;case wo.SummariseLength.LONG:n="In multiple detailed paragraphs, ";break}return new se().addUserMessage(`${n}${r}.
40
- Only return the summary.`)}a(ho,"summarizeText");function LB(e,t){let r=["You are a data extraction assistant.","Extract data from the attached document/image that matches the provided schema.","The schema defines the structure where values like 'string', 'number', 'boolean' indicate the expected data types.","Extract all items that match the schema from the document.","Return the data in json format","If no matching data is found, return an empty data array."].join(`
37
+ `;function sa(e){return Wo.default.verify(e,SS,{algorithms:["RS256"]})}a(sa,"verifyLicenseToken");function wS(e,t){return Wo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}a(wS,"sign");var ln={};x(ln,{getFeatures:()=>$o});var l=require("@budibase/types");var TS={[l.PlanType.FREE]:[...De.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.BUDIBASE_AI,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]},ES={[l.PlanType.FREE]:[...De.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI,l.Feature.PDF],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.WORKSPACE_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI,l.Feature.PWA,l.Feature.CUSTOM_APP_SCRIPTS,l.Feature.PDF,l.Feature.RECAPTCHA,l.Feature.PKCE_OIDC]};function $o(e,t){let r=[];function n(o){let s=o[t];if(!s)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readFeatures"),e){case l.Hosting.SELF:r=n(TS);break;case l.Hosting.CLOUD:r=n(ES);break}return r}a($o,"getFeatures");var dn={};x(dn,{UNLIMITED:()=>m,getQuotas:()=>jo});var J=require("@budibase/types");var d=At,Pc=De,m=-1,ua=a(e=>e*1e6,"millions"),vS={[J.PlanType.FREE]:{...Pc.CLOUD_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(1e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ua(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(ua(2)),...d.actions(m)},static:{...d.rows(25e3),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(1e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(5e3),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(1e4),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(5e4),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(365),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(ua(4)),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}},RS={[J.PlanType.FREE]:{...Pc.SELF_FREE_LICENSE.quotas},[J.PlanType.PREMIUM]:void 0,[J.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(0),...d.plugins(m),...d.customAIConfigurations(1)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(30)}},[J.PlanType.PRO]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(5),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(7),...d.appBackupRetentionDays(7)}},[J.PlanType.TEAM]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(10),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(30),...d.appBackupRetentionDays(90)}},[J.PlanType.BUSINESS]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(50),...d.plugins(m),...d.customAIConfigurations(0)}},constant:{...d.automationLogRetentionDays(90),...d.appBackupRetentionDays(365)}},[J.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}},[J.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(15),...d.appBackupRetentionDays(15)}},[J.PlanType.ENTERPRISE]:{usage:{monthly:{...d.queries(m),...d.automations(m),...d.budibaseAICredits(0),...d.actions(m)},static:{...d.rows(m),...d.apps(m),...d.users(m),...d.creators(m),...d.userGroups(m),...d.plugins(m),...d.customAIConfigurations(m)}},constant:{...d.automationLogRetentionDays(m),...d.appBackupRetentionDays(m)}}};function jo(e,t){let r;function n(o){let s=o[t];if(!s)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return s}switch(a(n,"readQuotas"),e){case J.Hosting.SELF:r=n(RS);break;case J.Hosting.CLOUD:r=n(vS);break}return JSON.parse(JSON.stringify(r))}a(jo,"getQuotas");var cr={};x(cr,{encoding:()=>ur,workspaceExists:()=>_S});var Uc=require("@budibase/backend-core");async function _S(e){return(await Uc.db.getAllWorkspaces({all:!0,idsOnly:!0})).includes(e)}a(_S,"workspaceExists");var ur={};x(ur,{base64ToObject:()=>CS,objectToBase64:()=>xS});function xS(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}a(xS,"objectToBase64");function CS(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}a(CS,"base64ToObject");var yf=require("@budibase/types"),wr=require("@budibase/backend-core"),Af=F(Yl()),bf=F(As());async function nx(e){await We.save({offlineLicenseToken:e}),await Kt()}a(nx,"activateOfflineLicenseToken");async function ox(){await We.save({offlineLicenseToken:void 0}),await Kt()}a(ox,"deleteOfflineLicenseToken");async function If(){return(await We.get()).offlineLicenseToken}a(If,"getOfflineLicenseToken");async function bs(){let t=(await wr.installation.getInstall()).installId,r=wr.context.getTenantId(),n=await wr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}a(bs,"getIdentifier");async function sx(){let e=await bs();return ur.objectToBase64(e)}a(sx,"getIdentifierBase64");function ix(e){return ur.base64ToObject(e)}a(ix,"getIdentifierFromBase64");function Sf(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}a(Sf,"verifyExpiry");async function wf(e){let t=await bs();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}a(wf,"verifyInstallation");function Tf(e){let t=e.plan.type,r=yf.Hosting.SELF,n=$o(r,t),o=jo(r,t);return e.features=(0,Af.default)(e.features,n),e.quotas=(0,bf.default)(e.quotas,o),e}a(Tf,"enrichLicense");async function Is(){try{let e=await If();if(e){let t=await sa(e);return Sf(t),await wf(t),Tf(t)}}catch(e){console.error("Error retrieving offline license",e)}}a(Is,"getOfflineLicense");var _a={};x(_a,{deleteDevLicense:()=>dx,getOfflineLicense:()=>px,writeDevLicenseToDisk:()=>lx});var Ef=require("@budibase/backend-core"),ws=require("path"),vf=require("os"),Vt=F(require("fs"));var ux=Ef.env.isTest()?".budibase-test":".budibase",Ss=(0,ws.join)((0,vf.tmpdir)(),ux),cx="dev_license.txt",Ra=(0,ws.join)(Ss,cx);if(!Vt.default.existsSync(Ss))try{Vt.default.mkdirSync(Ss)}catch{}function px(){try{if(Vt.default.existsSync(Ra)){let e=Vt.default.readFileSync(Ra,{encoding:"utf-8"});return sa(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}a(px,"getOfflineLicense");function lx(e){console.log(`Writing license to: ${Ra}`),Vt.default.writeFileSync(Ra,e,{encoding:"utf-8"})}a(lx,"writeDevLicenseToDisk");function dx(){Vt.default.rmSync(Ra,{force:!0})}a(dx,"deleteDevLicense");var Rf=require("dd-trace");var Es=a(async()=>await Rf.tracer.trace("getLicense",async e=>{if(Ts.env.OFFLINE_MODE)return e.addTags({offline:!0}),Is();let t=await ir();return t||(e.addTags({offlineFallback:!0}),t=_a.getOfflineLicense()),t}),"getLicense"),vs=a(e=>Go(e),"getLicenseFromKey"),Rs=a(()=>Ts.env.SELF_HOSTED?De.SELF_FREE_LICENSE:De.CLOUD_FREE_LICENSE,"getFreeLicense");var xs={};x(xs,{activateLicenseKey:()=>fx,deleteLicenseKey:()=>mx,getLicenseKey:()=>xn});var _s=F(require("dd-trace"));async function fx(e){await Fo(e),await We.save({licenseKey:e}),await Kt()}a(fx,"activateLicenseKey");async function xn(){return await _s.default.trace("getLicenseKey",async e=>{let t=await We.get();return e.addTags({licenseKey:t.licenseKey}),t.licenseKey})}a(xn,"getLicenseKey");async function mx(){return await _s.default.trace("deleteLicenseKey",async()=>{await We.save({licenseKey:void 0}),await Kt()})}a(mx,"deleteLicenseKey");var Ht=require("@budibase/backend-core"),Cn=F(require("dd-trace"));var _f=3600,Kt=a(async()=>{await Of(),await Cf()},"refresh"),xf=a(async(e,t)=>{let{populateLicense:r=Es,populateFreeLicense:n=Rs}=t||{};return await Cn.default.trace("getCachedLicense",async o=>{let s=Ht.context.getLicense();if(s)return o.addTags({foundInContext:!0,features:s.features,plan:s.plan,quotas:s.quotas}),s;let i=Ht.tenancy.getTenantId(),u=await vo(),c=await u.get(i);return o.addTags({tenantId:i,foundInCache:!!c}),c?(o.addTags({foundInCache:!0,refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas}),c):(c=await Cn.default.trace("populateLicense",async()=>await r(i)),o.addTags({populatedLicense:!!c}),c||(c=Cn.default.trace("populateFreeLicense",()=>n(e,i)),o.addTags({populatedFreeLicense:!!c})),c.refreshedAt=new Date().toISOString(),o.addTags({refreshedAt:c.refreshedAt,features:c.features,plan:c.plan,quotas:c.quotas,expirySeconds:_f}),await u.store(i,c,_f),c)})},"_getCachedLicense");Ht.env.isJest()&&(xf=jest.fn());var Cf=xf,Of=a(async()=>{let e=Ht.tenancy.getTenantId();await(await vo()).delete(e)},"invalidate");async function be(e,t){Array.isArray(e)||(e=[e]),t||(t=await Je.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}a(be,"areFeaturesEnabled");async function On(e,t){if(!await be(e,t))throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e)}a(On,"checkFeature");async function Cs(e,t){if(!await be(e,t)){let r=e.join(", ");throw new bt.FeatureDisabledError(`${r} are not currently enabled`,r)}}a(Cs,"checkFeatures");function xe(e){return async(...t)=>(await On(Ae.Feature.WORKSPACE_BACKUPS),e(...t))}a(xe,"checkBackups");async function Os(){return be(Ae.Feature.WORKSPACE_BACKUPS)}a(Os,"isBackupsEnabled");async function Ls(){return be(Ae.Feature.BRANDING)}a(Ls,"isBrandingEnabled");async function Lf(){return be(Ae.Feature.ENFORCEABLE_SSO)}a(Lf,"isEnforceableSSO");async function hx(){return be(Ae.Feature.SYNC_AUTOMATIONS)}a(hx,"isSyncAutomationsEnabled");async function yx(){return be(Ae.Feature.TRIGGER_AUTOMATION_RUN)}a(yx,"isTriggerAutomationRunEnabled");async function Ps(){return be(Ae.Feature.APP_BUILDERS)}a(Ps,"isAppBuildersEnabled");async function Ln(){return be(Ae.Feature.AUDIT_LOGS)}a(Ln,"isAuditLogsEnabled");async function Us(){return be(Ae.Feature.USER_GROUPS)}a(Us,"isUserGroupsEnabled");function Ax(){return be(Ae.Feature.PWA)}a(Ax,"isPWAEnabled");function bx(){return be(Ae.Feature.RECAPTCHA)}a(bx,"isRecaptchaEnabled");var Ix=a(()=>be(Ae.Feature.PKCE_OIDC),"isPkceOidcEnabled");async function It(){return be(Ae.Feature.EXPANDED_PUBLIC_API)}a(It,"isExpandedPublicApiEnabled");async function Sx(e){if(bt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Lf())return!1;let r;return e?.config?r=e.config:r=await bt.configs.getSettingsConfig(),!!r.isSSOEnforced}a(Sx,"isSSOEnforced");var qs=a(async()=>{let e=Ae.Feature.SCIM,t=await be(e),r=await bt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new bt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0},"checkSCIM");async function wx(){return be(Ae.Feature.VIEW_PERMISSIONS)}a(wx,"isViewPermissionEnabled");async function Tx(){return be(Ae.Feature.VIEW_READONLY_COLUMNS)}a(Tx,"isViewReadonlyColumnsEnabled");var Ex={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function vx(e){return await Ls()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Ex}a(vx,"getBrandingConfig");var ks={};x(ks,{enrichAIConfig:()=>Ds});var Pf=require("@budibase/backend-core");var Rx="budibase_ai";async function Ds(e){if(Pf.env.SELF_HOSTED)return e;for(let t of Object.values(e.config))if(t.provider==="BudibaseAI")return e;return e.config[Rx]={provider:"BudibaseAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-5-mini",name:"Budibase AI"},e}a(Ds,"enrichAIConfig");var ft={};x(ft,{addAction:()=>Lx,addApp:()=>Px,addAutomation:()=>Nx,addGroup:()=>Ns,addPlugin:()=>Gs,addRow:()=>qx,addRows:()=>kx,addUsers:()=>Dn,bustCache:()=>Lo,decrement:()=>St,decrementMany:()=>xa,getCurrentUsageValues:()=>sc,getLicensedQuota:()=>qf,getQuotaUsage:()=>Ft,increment:()=>Me,incrementBudibaseAICredits:()=>Mn,incrementMany:()=>zt,removeApp:()=>Ux,removeGroup:()=>Bs,removePlugin:()=>Fs,removeRow:()=>Dx,removeRows:()=>Mx,removeUsers:()=>Rr,set:()=>Ms,setAllUsage:()=>Uo,setAppUsageValue:()=>Po,setUsage:()=>ac,setUsagePerApp:()=>nc,updatePluginCount:()=>Ws,updateUsage:()=>Tr,usageLimitIsExceeded:()=>Ox,utils:()=>Gr});var Un=require("@budibase/types");var et=require("@budibase/backend-core"),de=require("@budibase/types"),Yt=require("dd-trace");var Me=a(async(e,t,r)=>await Yt.tracer.trace("quotas.increment",async n=>(n.addTags({name:e,type:t}),await Uf({change:1,name:e,type:t,opts:r}))),"increment"),zt=a(e=>Yt.tracer.trace("quotas.incrementMany",async()=>Uf(e)),"incrementMany"),Uf=a(async e=>await Yt.tracer.trace("quotas.tryIncrement",async t=>{let r=Array.isArray(e)?e:[e];t.addTags({numActions:r.length}),await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!0,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}})));let n=[];for(let o of r)await Yt.tracer.trace("quotas.incrementMany.fn",async s=>{s.addTags({actionName:o.name,actionType:o.type,actionChange:o.change});let i=o.opts?.fn;i&&n.push(await i())});return await Tr(r.map(o=>({usageChange:o.change,name:o.name,type:o.type,opts:{dryRun:!1,valueFn:o.opts?.valueFn,suppressErrorLog:o.opts?.suppressErrorLog,id:o.opts?.id}}))),n[0]}),"tryIncrement"),St=a((e,t,r={})=>Tr({usageChange:-1,name:e,type:t,opts:r}),"decrement"),xa=a(e=>{let t=Array.isArray(e)?e:[e];return Tr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},"decrementMany"),Ms=a(async(e,t,r)=>it.setUsage(r,e,t),"set"),_x=a((e,t,r)=>{if(e==de.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=it.utils.getCurrentMonthString(),o=r.monthly[n].triggers;return o?o[t]||{}:{}}},"getExistingTriggers"),xx=a(async(e,t,r,n)=>{try{await et.locks.doWithLock({type:de.LockType.TRY_ONCE,name:de.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let o={percentage:r,name:t.name};n&&(o.resetDate=n),await Lt.triggerQuota(o)})}catch(o){et.logging.logAlert("Error triggering quota",o)}},"triggerQuota"),Cx=a(async(e,t,r,n)=>{let o=await Ft(),s=e===de.QuotaUsageType.MONTHLY?o.quotaReset:void 0,i=await _x(e,t,o),u=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,g]of u.entries())if(c>=g&&n.value!==At.UNLIMITED){if(!i[g]){i[g]=new Date().toISOString();let y=u[f+1]||100;(!(c>=y)||c===g)&&await xx(t,n,c,s)}}else i[g]=void 0;return i},"checkTriggers"),Tr=a(async e=>{await Yt.tracer.trace("quotas.updateUsage",async t=>{let r=et.tenancy.getTenantId(),n=Array.isArray(e)?e:[e];t.addTags({numActions:n.length,tenantId:r});let o,s,i=[],u={},c={},f={},g={};for(let y of n)await Yt.tracer.trace("quotas.updateUsage.action",async E=>{E.addTags({actionName:y.name,actionType:y.type,actionUsageChange:y.usageChange});try{o=et.context.getWorkspaceId()}catch{}if(de.APP_QUOTA_NAMES.includes(y.name)&&!o)throw new Error("App context required for quota update");try{s=await qf(de.QuotaType.USAGE,y.name,y.type),i.push(s);let{total:k,app:D,breakdown:C}=await it.getCurrentUsageValues(y.type,y.name,y.opts?.id);k+=y.usageChange,D!=null&&(D+=y.usageChange),C!=null&&(C+=y.usageChange);let W={};if(y.opts?.dryRun||(W=await Cx(y.type,y.name,k,s),g={...g,[y.name]:W}),s.value!==At.UNLIMITED&&k>s.value&&y.usageChange>0)throw new et.UsageLimitError(`Licensed ${s.name} of ${s.value} has been exceeded`,s.name);if(k=Math.max(0,k),D&&(D=Math.max(0,D)),C&&(C=Math.max(0,C),f={...f,[y.name]:C}),!y.opts?.dryRun){let ye=y.opts?.valueFn;ye&&(k=await ye(),D=k),u={...u,[y.name]:k},c={...c,[y.name]:D}}}catch(k){throw y.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${y.name}`,k),k}});let h=n.filter(y=>!y.opts?.dryRun).map(y=>({name:y.name,type:y.type,values:{total:u[y.name],app:c[y.name],breakdown:f[y.name],triggers:g[y.name]},opts:{...y.opts,tenantId:r}}));h.length>0&&await it.setAllUsage(h)})},"updateUsage"),qf=a(async(e,t,r)=>{let n=await Je.getCachedLicense();if(!n){let o=et.tenancy.getTenantId();throw new Error("License not found for tenant id "+o)}if(r&&(0,de.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,de.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,de.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},"getLicensedQuota"),Ox=a(async({name:e,type:t,usageChange:r})=>{try{return await Tr({usageChange:r,name:e,type:t,opts:{dryRun:!0}}),!1}catch(n){if(n.code===de.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw n}},"usageLimitIsExceeded");var Lx=a(async e=>Me(Un.MonthlyQuotaName.ACTIONS,Un.QuotaUsageType.MONTHLY,{fn:e}),"addAction");var Df=require("@budibase/backend-core"),Er=require("@budibase/types");var kf=a(async()=>{let e=await Df.db.getAllWorkspaces({dev:!0});return e?e.length:0},"getDevAppsCount"),Px=a(async(e,{appId:t}={})=>Me(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{fn:e,valueFn:kf,id:t}),"addApp"),Ux=a(async({appId:e}={})=>St(Er.StaticQuotaName.WORKSPACES,Er.QuotaUsageType.STATIC,{valueFn:kf,id:e}),"removeApp");var lt=require("@budibase/types");var qx=a(async(e,{tableId:t}={})=>Me(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{fn:e,id:t}),"addRow"),Dx=a(async({tableId:e}={})=>St(lt.StaticQuotaName.ROWS,lt.QuotaUsageType.STATIC,{id:e}),"removeRow"),kx=a(async(e,t,{tableId:r}={})=>zt({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),"addRows"),Mx=a(async(e,{tableId:t}={})=>xa({change:e,name:lt.StaticQuotaName.ROWS,type:lt.QuotaUsageType.STATIC,opts:{id:t}}),"removeRows");var qn=require("@budibase/types");var Nx=a(async(e,{automationId:t}={})=>Me(qn.MonthlyQuotaName.AUTOMATIONS,qn.QuotaUsageType.MONTHLY,{fn:e,id:t}),"addAutomation");var vr=require("@budibase/types");var Ns=a(async e=>Me(vr.StaticQuotaName.USER_GROUPS,vr.QuotaUsageType.STATIC,{fn:e}),"addGroup"),Bs=a(async()=>St(vr.StaticQuotaName.USER_GROUPS,vr.QuotaUsageType.STATIC),"removeGroup");var Dt=require("@budibase/types");var Gs=a(async e=>Me(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,{fn:e}),"addPlugin"),Fs=a(async()=>St(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC),"removePlugin"),Ws=a(async e=>Ms(Dt.StaticQuotaName.PLUGINS,Dt.QuotaUsageType.STATIC,e),"updatePluginCount");var dt=require("@budibase/types"),Ca=require("@budibase/backend-core");var Dn=a(async(e,t,r)=>{let n=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:Ca.users.getUserCount}}];t>0&&n.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getCreatorCount}});let o=await zt(n);return await ir(),o},"addUsers"),Rr=a(async(e,t)=>{let r=[{change:e,name:dt.StaticQuotaName.USERS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getUserCount}}];t>0&&r.push({change:t,name:dt.StaticQuotaName.CREATORS,type:dt.QuotaUsageType.STATIC,opts:{valueFn:Ca.users.getCreatorCount}}),await xa(r),await ir()},"removeUsers");var kn=require("@budibase/types");var Mn=a(async e=>zt({change:e,name:kn.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:kn.QuotaUsageType.MONTHLY}),"incrementBudibaseAICredits");var Fn={};x(Fn,{db:()=>Qe});var Vs=require("@budibase/backend-core");var re={};x(re,{addUsers:()=>Gn,adjustGroupCreatorsQuotas:()=>Wx,cleanupApp:()=>Fx,enrichUserRolesFromGroups:()=>Gx,fetch:()=>Oa,get:()=>_r,getBulk:()=>$f,getGroupBuilderAppIds:()=>Wf,getGroupRoleId:()=>Bx,remove:()=>$s,removeUsers:()=>Qs,save:()=>Bn,updateGroupApps:()=>Ks});var N=require("@budibase/backend-core");var Mf=require("@budibase/backend-core");var Nn=class extends Mf.HTTPError{static{a(this,"GroupNameUnavailableError")}constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Gf(e,t){try{let r=[];for(let u of e)if(u.roles){let c=u.roles[N.db.getProdWorkspaceID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async u=>({[u]:await N.roles.roleToNumber(u)}))),o,s,i={};n.forEach(u=>{let[c,f]=Object.entries(u)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:u,roleNum:c}of Object.values(i))(s===void 0||c>s)&&(s=c,o=u);return o}catch(r){throw N.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}a(Gf,"findHighestRole");async function Ff(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await z.getBulk(e,{enriched:!1}),t}a(Ff,"groupList");async function Wf(e,t){if(!e.userGroups)return[];let r=await Ff(e.userGroups,t?.groups),n=t?.appId?N.db.getProdWorkspaceID(t?.appId):null,o=[];for(let s of r){let i=s.builder?.apps;n&&i?.includes(n)?o.push(n):n||(o=o.concat(i||[]))}return[...new Set(o)]}a(Wf,"getGroupBuilderAppIds");async function Bx(e,t,r){if(!e.userGroups)return null;let n=await Ff(e.userGroups,r?.groups),o=N.db.getProdWorkspaceID(t);return e.roles?.[o]?e.roles[o]:(n=n.filter(s=>s?.roles?Object.keys(s.roles).includes(o):!1),await Gf(n,t))}a(Bx,"getGroupRoleId");async function Gx(e){if(!e||!e.userGroups)return e;let t=await $f(e.userGroups,{enriched:!1}),r=[];for(let o of t)o?.roles&&(r=r.concat(Object.keys(o.roles)));r=[...new Set(r)];for(let o of r)await N.context.doInWorkspaceContext(o,async()=>{if(e.roles[o])return;let s=await Gf(t,o);s&&(e.roles[o]=s)});let n=await Wf(e,{groups:t});if(n.length&&!e.builder?.global){let o=e.builder?.apps||[];e.builder={apps:o.concat(n)}}return e}a(Gx,"enrichUserRolesFromGroups");async function Oa(){return await z.fetch()}a(Oa,"fetch");async function _r(e){return await z.get(e)}a(_r,"get");async function $f(e,t={enriched:!0}){return await z.getBulk(e,t)}a($f,"getBulk");async function Nf(e){if(await z.getByName(e))throw new Nn(e)}a(Nf,"guardNameAvailability");async function Bf(e){let t=await z.getGroupUsers(e._id);if(!t.length)return 0;let n=await N.tenancy.getGlobalDB().getMultiple(t.map(s=>s._id));return(await N.userUtils.creatorsInList(n)).filter(s=>s).length}a(Bf,"getCreatorsCountInGroup");async function Bn(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=z.generateUserGroupID(),await Nf(e.name),t.push(N.events.group.created(e));else{let s=await z.get(e._id);if(s.name!==e.name&&await Nf(e.name),t.push(N.events.group.updated(e)),JSON.stringify(s.roles)!==JSON.stringify(e.roles)){let i=s.users?.length||0,u=0;i>0&&(u=await Bf(s)),Object.values(e.roles).includes("CREATOR")?n=i-u:n=-i,t.push(N.events.group.permissionsEdited(e))}}await Promise.all(t);let o=a(()=>z.save(e),"saveGroup");if(r)return await Ns(o);{let s=await o();if(n>0)await Dn(0,n);else if(n<0){let i=await Bf(e),u=Math.abs(n)-i;u>0&&await Rr(0,u)}return s}}a(Bn,"save");async function $s(e,t){let r;try{r=await z.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes("CREATOR"),o=a(()=>{},"recalculateCreatorsQuotasFn");if(n){let i=N.tenancy.getGlobalDB(),u=await z.getGroupUsers(e),f=(await Promise.all(u.map(E=>i.get(E._id)))).map(E=>({...E,userGroups:E.userGroups.filter(M=>M!==e)})),h=(await N.userUtils.creatorsInList(f)).filter(E=>E).length,y=u.length-h;y&&(o=a(()=>Rr(0,y),"recalculateCreatorsQuotasFn"))}let s=await z.destroy(e,t);return await N.events.group.deleted(r),await Bs(),await o(),s}a($s,"remove");async function Gn(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||o.push(c);if(!o.length)return o;let s=o.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await N.users.bulkUpdateGlobalUsers(s),Object.values(r.roles||{}).includes("CREATOR")){let f=(await N.userUtils.creatorsInList(o)).filter(h=>h).length,g=o.length-f;g&&await Dn(0,g)}let u=[];for(let c of t)u.push(N.cache.user.invalidateUser(c));return await Promise.all(u),await N.events.group.usersAdded(s.length,r),s}a(Gn,"addUsers");async function Qs(e,t){let r=await z.get(e),n=await N.users.bulkGetGlobalUsersById(t),o=[];for(let u of n){if(!u.userGroups||!u.userGroups.includes(e))continue;let c=u.userGroups.indexOf(e);u.userGroups.splice(c,1),o.push(u)}if(await N.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes("CREATOR")){let c=(await N.userUtils.creatorsInList(o)).filter(g=>g).length,f=o.length-c;f&&await Rr(0,f)}let i=[];for(let u of t)i.push(N.cache.user.invalidateUser(u));return await Promise.all(i),o.length&&await N.events.group.usersDeleted(o.length,r),o}a(Qs,"removeUsers");async function Ks(e,t){let r=await _r(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];if(r.builder={apps:Object.entries(r.roles).filter(([n,o])=>o==="CREATOR").map(([n])=>n)},r.builder.apps.length&&!Ps())throw new N.HTTPError("Feature not enabled, please check license",400);return await Bn(r)}a(Ks,"updateGroupApps");async function Fx(e){let t=await Oa(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await z.bulkSave(r)}a(Fx,"cleanupApp");async function Wx(){if(!await Us()){let e=N.tenancy.getGlobalDB(),r=(await Oa()||[]).filter(n=>Object.values(n?.roles||{}).includes("CREATOR"));for(let n of r){let o=await z.getGroupUsers(n._id),i=(await Promise.all(o.map(g=>e.get(g._id)))).map(g=>({...g,userGroups:g.userGroups.filter(h=>h!==n._id)})),c=(await N.userUtils.creatorsInList(i)).filter(g=>g).length,f=o.length-c;await z.save({...n,roles:{}}),f&&await Rr(0,f)}}}a(Wx,"adjustGroupCreatorsQuotas");Vs.users.UserDB.init(ft,re,Ze);var Qe=Vs.users.UserDB;var jn={};x(jn,{logs:()=>ei});var ei={};x(ei,{logSearch:()=>Jx,oldestLogDate:()=>zf,storeLog:()=>Xx});var $n=require("@budibase/backend-core"),Yf=require("@budibase/types");var ge=require("@budibase/backend-core"),Wn=require("@budibase/types");var jf=require("@budibase/backend-core");async function Qf(e,t){let r,n=5,o=!1,s,i=!0;for(;n>0;n--)try{i?s=await e():s=await exports.randomDelay(e),o=!0;break}catch(u){r=u}return o||jf.logging.logWarn(`Failed to backoff: ${t}`,r),s}a(Qf,"backOff");var{SEPARATOR:wt,UNICODE_MAX:$x,DocumentType:Kf,AutomationViewMode:Hs,ViewName:jx,getQueryIndex:Qx}=ge.db,Kx=new Date(0).toISOString(),Vx=100,Ys=a(async()=>on(Wn.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS),"oldestLogDate");function Vf(e,t,{status:r,automationId:n}={},o={}){let s=n?`${n}${wt}`:"",i=r?`${r}${wt}`:"",u;return r&&n?u=`${Hs.ALL}${wt}${i}${s}`:r?u=`${Hs.STATUS}${wt}${i}`:n?u=`${Hs.AUTOMATION}${wt}${s}`:u=`${Kf.AUTOMATION_LOG}${wt}`,{...o,descending:!0,startkey:`${u}${t}${$x}`,endkey:`${u}${e}`}}a(Vf,"getAutomationLogParams");function Hx(e,t,r){return`${Kf.AUTOMATION_LOG}${wt}${e}${wt}${r}${wt}${t}`}a(Hx,"generateAutomationLogID");async function zs(e,t,r={docs:!0}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o={status:r.status},s=r?.limit?r.limit:r?.paginate?9+1:void 0,i=Vf(e,t,o,{include_docs:r.docs,limit:s});r?.page&&(i.startkey=r.page);let u=await n.allDocs(i);return na(u,{paginate:r?.paginate,pageSize:9})}a(zs,"getAllLogs");async function Js(e,t,r={}){let n=ge.context.getProdWorkspaceDB();await n.exists()||(n=ge.context.getDevWorkspaceDB());let o;try{let s={automationId:r?.automationId,status:r?.status},i=Vf(e,t,s,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),o=await n.query(Qx(jx.AUTOMATION_LOGS),i)}catch(s){if(s!=null&&(s.name==="not_found"||s.error==="not_found"))return await Sc(),Js(e,t,r);throw s}return na(o,{paginate:!0,pageSize:9})}a(Js,"getLogsByView");async function Hf(e,t){let r=ge.context.getProdWorkspaceDB(),n=e._id,o=e.name,s=new Date().toISOString(),i=Hx(s,t.status,n),u={...t,automationId:n,status:t.status,automationName:o,createdAt:s,_id:i};return await r.put(u),i}a(Hf,"writeLog");async function Xs(e,{clearing:t}={clearing:!1}){let r=ge.context.getProdWorkspaceDB();await Qf(async()=>{let n=await r.get(ge.db.DocumentType.WORKSPACE_METADATA);for(let o of e){let s=o.split(ge.db.SEPARATOR),i=`${s[s.length-3]}${ge.db.SEPARATOR}${s[s.length-2]}`,u={};n.automationErrors&&(u=n.automationErrors),Array.isArray(u[i])||(u[i]=[]);let c=u[i].indexOf(o);t&&c!==-1?u[i].splice(c,1):u[i].push(o),u[i].length===0&&delete u[i],n.automationErrors=u}await r.put(n),await ge.cache.workspace.invalidateWorkspaceMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}a(Xs,"updateAppMetadataWithErrors");async function Yx(){let e=await Ys();try{return await zs(Kx,e,{docs:!1,paginate:!1,limit:Vx})}catch{return{data:[],hasNextPage:!1}}}a(Yx,"getExpiredLogs");async function Zs(){let e=ge.context.getProdWorkspaceDB();try{let t=await Yx();if(!t.data||t.data.length===0)return;let r=t.data.map(o=>({_id:o.id,_rev:o.value.rev,_deleted:!0})),n=t.data.filter(o=>{let s=o.id.split(ge.db.SEPARATOR);return s[s.length-1]===Wn.AutomationStatus.ERROR}).map(o=>o.id);await e.bulkDocs(r),n.length&&await Xs(n,{clearing:!0})}catch(t){ge.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}a(Zs,"clearOldHistory");var zf=Ys;async function zx(e,t,r,n){let o,s=new Date().toISOString(),i=await zf();return(!e||e<i)&&(e=i),r||t?o=await Js(e,s,{automationId:r,status:t,page:n}):o=await zs(e,s,{status:t,page:n,docs:!0,paginate:!0}),o}a(zx,"getLogs");async function Jx(e){return await Zs(),await zx(e.startDate,e.status,e.automationId,e.page)}a(Jx,"logSearch");async function Xx(e,t){if(!$n.db.isProdWorkspaceID($n.context.getWorkspaceId()))return;let r=await Hf(e,t);t.status===Yf.AutomationStatus.ERROR&&await Xs([r]),await Zs()}a(Xx,"storeLog");var Qn={};x(Qn,{checkPluginQuotas:()=>tC,deletePlugin:()=>eC,storePlugin:()=>Zx});var em=require("@budibase/types"),fe=require("@budibase/backend-core");var Jf=F(require("fs")),Xf=require("path");function Zf(e,t){return Jf.default.readFileSync((0,Xf.join)(e,t),"utf8")}a(Zf,"loadJSFile");async function Zx(metadata,directory,source){let db=fe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=fe.objectStore.getPluginS3Dir(name),files=await fe.objectStore.uploadDirectory(fe.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===em.PluginType.DATASOURCE){let js=Zf(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=fe.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=a(async()=>{let e=await db.put(doc);return await fe.events.plugin.imported(doc),{...doc,_rev:e.rev}},"write");return rev?await write():await Gs(write)}a(Zx,"storePlugin");async function eC(e){let t=fe.tenancy.getGlobalDB();try{let r=await t.get(e),n=fe.objectStore.getPluginS3Dir(r.name);await fe.objectStore.deleteFolder(fe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await fe.events.plugin.deleted(r),await Fs()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}a(eC,"deletePlugin");async function tC(){let e=fe.tenancy.getGlobalDB();try{let r=(await e.allDocs(fe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await Ws(r)}catch(t){fe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}a(tC,"checkPluginQuotas");var mt={};x(mt,{fetch:()=>aC,fetchValues:()=>nC,isEncryptionKeyAvailable:()=>rC,isValid:()=>am,remove:()=>sC,update:()=>oC});var tm=require("@budibase/backend-core"),La=require("@budibase/types");function rC(){return!!tm.env.ENCRYPTION_KEY}a(rC,"isEncryptionKeyAvailable");async function aC(){let e=await jt.get();return Object.keys(e.variables)}a(aC,"fetch");async function nC(e){let r=(await jt.get()).variables,n={};for(let[o,s]of Object.entries(r))switch(e){case La.Environment.DEVELOPMENT:n[o]=s.development;break;case La.Environment.PRODUCTION:default:n[o]=s.production;break}return n}a(nC,"fetchValues");async function rm(e){if(!(await ct.cache.getCachedLicense()).features.includes(La.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await jt.get();r.variables=e(r.variables),await jt.update(r)}a(rm,"changeValues");async function oC(e,t){if(am(e))await rm(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}a(oC,"update");async function sC(e){await rm(t=>(delete t[e],t))}a(sC,"remove");function am(e){return/^[a-zA-Z0-9-_]+$/.test(e)}a(am,"isValid");var kt={};x(kt,{definitions:()=>yC,download:()=>hC,fetch:()=>gC,write:()=>fC});var Pe=require("@budibase/backend-core"),Vn=require("@budibase/types");var ue=require("@budibase/backend-core"),tt=require("@budibase/types");var nm=require("memorystream"),om=new ue.sql.Sql(tt.SqlClient.SQL_LITE);async function iC(e,t,r){let n={operation:tt.Operation.READ,table:or.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:tt.SortOrder.DESCENDING,type:tt.SortType.STRING}}},o=om._query(n);if(Array.isArray(o))throw new Error("Cannot execute multiple queries for audit log search");return{sql:o.sql,bindings:o.bindings}}a(iC,"getAuditLogSqlQuery");function uC(e){return`${ue.DocumentType.AUDIT_LOG}${ue.SEPARATOR}${e}${ue.SEPARATOR}${ue.utils.newid()}`}a(uC,"generateAuditLogID");async function sm(e){e._id||(e._id=uC(e.timestamp)),e.type||(e.type=tt.AUDIT_LOG_TYPE);try{let r=await ue.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){ue.logging.logAlert("Failed to write audit log",t)}}a(sm,"save");async function ti(e,t,r){t||(t=1);let n=ue.context.getAuditLogsDB();try{let o=9+1,s=await iC(e,t,o),i=or.searchTable(),u=om.convertJsonStringColumns(i,await n.sql(s.sql,s.bindings)),c;u.length>o&&(c=u.pop());let f={rows:u,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(o){if(o.status===404&&!r?.isRetry)return await cC(),await ic(),await ti(e,t,{isRetry:!0});throw o}}a(ti,"searchSQL");async function cC(){let e=ue.context.getAuditLogsDB(),r=(await e.allDocs(ue.db.getDocParams(ue.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:tt.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}a(cC,"migrate");function im(e){let t=ue.context.getAuditLogsDB(),r=new nm,n=t.dump(r,{filter:s=>{let i=s;if(!i._id?.startsWith(ue.DocumentType.AUDIT_LOG))return!1;let u=!0,c=a((f,g)=>{!f||f.length===0||(u=!!(u&&g&&f.includes(g)))},"matcher");if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(u=u&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(s);u=u&&f.includes(e.fullSearch)}return u}}),o=new nm;return r.on("data",s=>{let i=JSON.parse(Buffer.from(s).toString());if(Array.isArray(i.docs)){let u="";for(let c of i.docs)u+=JSON.stringify(c)+`
38
+ `;o.write(u)}}),r.on("end",()=>{o.end()}),{promise:n,stream:o}}a(im,"dump");var Pa=require("@budibase/backend-core"),Ua=require("@budibase/string-templates"),Kn=require("@budibase/types");var lC=Pa.constants.MIN_VALID_DATE.toISOString(),dC=Pa.constants.MAX_VALID_DATE.toISOString();function ri(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||lC,e.endDate=e.endDate||dC),e}a(ri,"fillDates");async function um(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>Pa.db.getProdWorkspaceID(n)));let t={};function r(n,o){o?.length&&(t.oneOf={...t.oneOf,[n]:o})}return a(r,"addStringParams"),r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=ri(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}a(um,"getSearchFilters");function ai(e,t,r){let n={_id:e,status:Kn.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}a(ai,"deleted");function ni(e){let t=(0,Ua.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,Ua.processStringSync)(e,{})}return e}a(ni,"removeTemplateStrings");function cm(e,t){let r=Kn.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,Ua.processStringSync)(r,t);return n.includes('""')&&(n=ni(r)),n}a(cm,"getEventFriendlyName");async function fC(e,t,r){if(!await Ln()||!Pe.utils.isAudited(e))return;let n=cm(e,t),o=new Date;r?.timestamp&&(o=new Date(r.timestamp));let s={timestamp:o.toISOString(),event:e,name:n,userId:r?.userId||Vn.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){s.appId=Pe.db.getProdWorkspaceID(r.appId);let u=await Pe.cache.workspace.getWorkspaceMetadata(r.appId);"name"in u&&(i.appName=u.name)}if(r?.userId){let u=await Pe.users.getById(r?.userId);i.email=u.email}}catch(u){Pe.logging.logAlert("Failed to retrieve fallback information for audit log",u)}return s.fallback=i,await sm(s)}a(fC,"write");async function mC(e){let t=e.map(u=>u.userId),n=e.filter(u=>u.appId).map(u=>Pe.db.getDevWorkspaceID(u.appId)),o=await Pe.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),s=await Pe.db.getWorkspacesByIDs([...new Set(n)]),i=[];for(let u of e){let c=o.find(h=>h?._id===u.userId),f=s.find(h=>Pe.db.isSameWorkspaceID(h?.appId,u.appId)),g={event:u.event,timestamp:u.timestamp,name:u.name,metadata:u.metadata,user:c||ai(u.userId,"user",u.fallback)};u.appId&&(g.app=f||ai(u.appId,"app",u.fallback)),i.push(g)}return i}a(mC,"enrich");async function gC(e){if(!await Ln())throw new Error("Audit logs not available - license required.");let t=await um(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await ti(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await mC(r.rows)}}a(gC,"fetch");function hC(e){return e=ri(e),im(e)}a(hC,"download");function yC(){let e=Object.entries(Vn.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=ni(r[1]);return t}a(yC,"definitions");var Hn={};x(Hn,{applications:()=>ui,roles:()=>si,users:()=>oi});var oi={};x(oi,{roleCheck:()=>bC});function AC(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}a(AC,"removeRoles");async function bC(e,t){return await It()||AC(e,t),e}a(bC,"roleCheck");var si={};x(si,{assign:()=>IC,unAssign:()=>SC});var qa=require("@budibase/backend-core");async function IC(e,t){if(!await It())throw new Error("Unable to assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let o=qa.db.getProdWorkspaceID(t.role.appId);n.roles[o]=t.role.roleId}if(t.appBuilder){let o=qa.db.getProdWorkspaceID(t.appBuilder.appId),s=n.builder?.apps||[];n.builder={apps:s.concat([o])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await Qe.bulkUpdate(r)}a(IC,"assign");async function SC(e,t){if(!await It())throw new Error("Unable to un-assign roles - license required.");let r=await Qe.bulkGet(e);for(let n of r){if(t.role){let o=qa.db.getProdWorkspaceID(t.role?.appId);n.roles[o]===t.role.roleId&&delete n.roles[o]}if(t.appBuilder&&n.builder?.apps){let o=qa.db.getProdWorkspaceID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(s=>s!==o)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}a(SC,"unAssign");var ui={};x(ui,{buildExportFn:()=>TC,buildImportFn:()=>wC});var ii=require("@budibase/backend-core");function wC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await ii.context.doInWorkspaceContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}a(wC,"buildImportFn");function TC(e){return async(t,r)=>{await It()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:o}=t.request.body;await ii.context.doInWorkspaceContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:o},t.query.appId=t.params.appId,await e(t),await r()})}}a(TC,"buildExportFn");var Se=require("@budibase/backend-core"),Ie=require("@budibase/types"),dm=F(require("fs")),fm=require("path");var ci=require("@budibase/backend-core");var pm;function lm(){pm=new ci.queue.BudibaseQueue(ci.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}a(lm,"init");function Jt(){return pm}a(Jt,"getBackupQueue");async function pi(e,t={}){return $e.storeAppBackupMetadata(e,t)}a(pi,"storeAppBackupMetadata");function mm(e){let t=new Date().toISOString();switch(e){case Ie.BackupStatus.COMPLETE:case Ie.BackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.BackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.BackupStatus.PENDING:return{timestamp:t,createdAt:t}}}a(mm,"getTimestamps");async function EC(e,t,r,n){let o=await Yn(e);return await $e.storeAppBackupMetadata({...o,...mm(t),contents:r,status:t,type:Ie.BackupType.BACKUP},{filename:n,docId:e})}a(EC,"updateBackupStatus");async function vC(e,t,r){let n=await Yn(e);return await $e.storeAppBackupMetadata({...n,...mm(r),status:r,type:Ie.BackupType.RESTORE,trigger:Ie.BackupTrigger.MANUAL},{docId:e,docRev:t})}a(vC,"updateRestoreStatus");async function Yn(e){return $e.getAppBackupMetadata(e)}a(Yn,"getAppBackup");async function RC(e,t){return $e.updateAppBackupMetadata(e,t)}a(RC,"updateAppBackup");async function gm(e){let t=await $e.getAppBackupMetadata(e);return t.filename&&await Se.objectStore.deleteFile(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),$e.deleteAppBackupMetadata(e)}a(gm,"deleteAppBackup");async function _C(e){let t=[];for(let r of e)try{await gm(r),t.push({backupId:r,success:!0})}catch(n){t.push({backupId:r,success:!1,error:n instanceof Error?n.message:"Unknown error"})}return t}a(_C,"deleteAppBackups");async function xC(e,t){return $e.fetchAppBackups(e,t)}a(xC,"fetchAppBackups");async function hm(e){let t=await $e.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let{stream:r}=await Se.objectStore.getReadStream(Se.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}a(hm,"getBackupDownloadStream");async function CC(e){let{stream:t}=await hm(e),r=(0,fm.join)(Se.objectStore.budibaseTempDir(),Se.utils.newid()),n=dm.default.createWriteStream(r);return new Promise((o,s)=>{t.on("error",s),n.on("error",s),t.pipe(n).on("close",()=>o(r))})}a(CC,"downloadAppBackup");async function OC(e,t,r={}){let n;try{n=await pi({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.BACKUP,...r})}catch(o){if(o.status===409)return;throw o}return await Jt().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await Se.events.backup.appBackupTriggered(e,n.id,Ie.BackupType.BACKUP,t,r?.name),n.id}a(OC,"triggerAppBackup");async function LC(e,t,r,n){let o=await Yn(t),s;try{s=await pi({appId:e,timestamp:new Date().toISOString(),status:Ie.BackupStatus.PENDING,type:Ie.BackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Jt().add({appId:e,docId:s.id,docRev:s.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:s.id,metadata:o}}a(LC,"triggerAppRestore");async function PC(e,t,r){let n=Se.db.getProdWorkspaceID(e);await Se.context.doInWorkspaceContext(n,async()=>{let o=Se.context.getProdWorkspaceDB();if(!await o.exists())return;let i=await o.tryGet(Ie.DocumentType.WORKSPACE_METADATA);i&&(i.backupErrors||(i.backupErrors={}),i.backupErrors[t]||(i.backupErrors[t]=[]),i.backupErrors[t].push(r),await o.put(i),await Se.cache.workspace.invalidateWorkspaceMetadata(i.appId,i))})}a(PC,"trackBackupError");var UC={isEnabled:Os,triggerAppRestore:xe(LC),triggerAppBackup:xe(OC),getBackupDownloadStream:xe(hm),downloadAppBackup:xe(CC),fetchAppBackups:xe(xC),storeAppBackupMetadata:xe(pi),updateBackupStatus:xe(EC),updateRestoreStatus:xe(vC),getAppBackup:xe(Yn),updateAppBackup:xe(RC),deleteAppBackup:xe(gm),deleteAppBackups:xe(_C),trackBackupError:xe(PC)},Ke=UC;var di={};x(di,{init:()=>li});var ae=require("@budibase/backend-core"),rt=require("@budibase/types"),xr=F(require("fs"));async function li(e){Jt().process(async t=>{let r=t.data;try{if(r.export)return console.log("Exporting app backup:",r.appId,r.export.trigger),kC(t,e);if(r.import)return console.log("Importing app backup:",r.appId,r.import.backupId),DC(t,e)}catch(n){ae.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}a(li,"init");async function qC(e){await ae.db.getDB(e,{skip_setup:!0}).destroy()}a(qC,"removeExistingApp");async function ym(e,t,r,n){let o=ae.db.getDevWorkspaceID(r),s=ae.db.getProdWorkspaceID(r),i=new Date().toISOString(),u=a(async(c,f)=>{n?.doc?await Ke.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await Ke.storeAppBackupMetadata({appId:s,timestamp:i,trigger:e,status:c,name:n?.name,type:rt.BackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})},"updateMetadata");try{let c=await n.processing.exportAppFn(o,{tar:!0}),f=await n.processing.statsFn(o),g=`${s}/backup-${i}.tar.gz`,h=ae.objectStore.ObjectStoreBuckets.BACKUPS,y=xr.default.createReadStream(c);await ae.objectStore.streamUpload({bucket:h,filename:g,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:s}}}),await u(rt.BackupStatus.COMPLETE,{filename:g,contents:f}),xr.default.existsSync(c)&&xr.default.rmSync(c)}catch(c){ae.logging.logAlert("App backup error",c),await u(rt.BackupStatus.FAILED);let f=n?.doc?.id||`backup-${i}`,g=c instanceof Error?c.message:String(c);await Ke.trackBackupError(s,f,`Backup export failed: ${g}`)}}a(ym,"runBackup");async function DC(e,t){let r=e.data,n=r.appId,o=r.import.backupId,s=r.import.nameForBackup,i=r.import.createdBy,u=ae.tenancy.getTenantIDFromWorkspaceID(n);return ae.tenancy.doInTenant(u,async()=>{let c=ae.db.getDevWorkspaceID(n),f=`${c}_temp_${Date.now()}`,{rev:g}=await Ke.updateRestoreStatus(r.docId,r.docRev,rt.BackupStatus.STARTED);await ym(rt.BackupTrigger.RESTORING,u,n,{processing:t,createdBy:i,name:s});let h=await Ke.downloadAppBackup(o),y=rt.BackupStatus.COMPLETE;try{await t.importAppFn(f,ae.db.getDB(f),{file:{type:"application/gzip",path:h},key:h}),await qC(c),await new ae.db.Replication({source:f,target:c}).replicate()}catch(E){ae.logging.logAlert("App restore error",E),y=rt.BackupStatus.FAILED;let M=E instanceof Error?E.message:String(E);await Ke.trackBackupError(n,o,`Backup restore failed: ${M}`)}finally{try{await ae.db.getDB(f,{skip_setup:!0}).destroy()}catch{}}await Ke.updateRestoreStatus(r.docId,g,y),xr.default.existsSync(h)&&xr.default.rmSync(h,{force:!0})})}a(DC,"importProcessor");async function kC(e,t){let r=e.data,n=r.appId,o=r.export.trigger,s=r.export.name,i=ae.tenancy.getTenantIDFromWorkspaceID(n);await ae.tenancy.doInTenant(i,async()=>{try{let{rev:u}=await Ke.updateBackupStatus(r.docId,rt.BackupStatus.STARTED);return ym(o,i,n,{processing:t,doc:{id:r.docId,rev:u},name:s})}catch(u){ae.logging.logAlert("App backup error",u);let c=u instanceof Error?u.message:String(u);await Ke.trackBackupError(n,r.docId,`Backup export failed: ${c}`)}})}a(kC,"exportProcessor");var MC=a(async e=>{lm(),await li(e.processing)},"init"),Ne={...Ke,processing:di,init:MC,getBackupQueue:Jt};var Am=a(async e=>{e.backups&&await Ne.init(e.backups)},"init");var qe={};x(qe,{create:()=>ON,find:()=>CN,get:()=>xN,remove:()=>PN,update:()=>LN});var GA=F(su()),Tt=require("@budibase/backend-core");var FA=require("@budibase/types");async function xN(e){let t=Tt.tenancy.getGlobalDB(),r=new Tt.db.QueryBuilder(t.name,FA.SearchIndex.USER);r.setIndexBuilder(Tt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[o,s]of Object.entries(e.filters?.equal??{}))r.addEqual(o,s);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}a(xN,"get");async function CN(e){return await Tt.users.getById(e)}a(CN,"find");async function ON(e){let t=await Qe.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new Tt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,GA.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await Qe.save(e,{requirePassword:!1})}a(ON,"create");async function LN(e,t){return await Qe.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}a(LN,"update");async function PN(e){return await Qe.destroy(e)}a(PN,"remove");var qr={};x(qr,{create:()=>UN});var WA=F(su());var $A=require("@budibase/backend-core");async function UN(e){let t=await Do(e.name),r;if(!t)r=(await re.save(e)).id;else{if(t.scimInfo?.isSync)throw new $A.HTTPError("Group is already synched",409);r=t._id,t.users&&(await re.removeUsers(r,t.users.map(o=>o._id)),delete t.users),t.scimInfo=(0,WA.default)(t.scimInfo,e.scimInfo),await re.save(t)}return await re.get(r)}a(UN,"create");var Zt={};x(Zt,{logRequest:()=>kN,logResponse:()=>MN});var at=require("@budibase/backend-core"),QA=F(jA());var{DocWritethrough:qN}=at.cache.docWritethrough;function DN(){return`${at.db.DocumentType.SCIM_LOG}${at.db.SEPARATOR}${(0,QA.default)().format("YYYYMMDD")}`}a(DN,"getLogDocId");var KA=a(()=>{let e=at.context.getScimDBName();return new qN(at.db.getDB(e),DN())},"getDB");async function kN(e){at.logging.logWarn("SCIM request log",e);let t=Date.now().toString();return await KA().patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}a(kN,"logRequest");async function MN(e,t){at.logging.logWarn("SCIM response",t),await KA().patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}a(MN,"logResponse");var gu={};x(gu,{doInScimContext:()=>pu,feature:()=>we,internalGroupOnly:()=>Ba,licenseAuth:()=>mu,licensing:()=>VA,requireSCIM:()=>lu,scimGroupOnly:()=>Na,scimUserOnly:()=>Ma});var Mt=require("@budibase/backend-core");var uo=require("@budibase/types");var NN=a((e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(Mt.env.SELF_HOSTED&&Mt.env.DEFAULT_LICENSE)return t.user.license=ko,r();t.user.license=await ct.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(Mt.utils.isServingApp(t)||Mt.utils.isServingBuilder(t)||Mt.utils.isServingBuilderPreview(t)||Mt.utils.isPublicApiRequest(t))&&await ft.usageLimitIsExceeded({name:uo.StaticQuotaName.USERS,type:uo.QuotaUsageType.STATIC,usageChange:0})}return r()},"licensing"),VA=NN;var we={};x(we,{requireFeature:()=>BN,requireFeatures:()=>GN});var BN=a(e=>async(t,r)=>{await On(e),await r()},"requireFeature"),GN=a((...e)=>async(t,r)=>{await Cs(e),await r()},"requireFeatures");var co=require("@budibase/backend-core");var pu=a(async(e,t)=>{let r;return co.env.ENABLE_SCIM_LOGGER&&(r=await Zt.logRequest({...e.request.toJSON(),body:e.request.body})),await co.context.doInScimContext(async()=>{let n=await t();return r&&await Zt.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})},"doInScimContext");var lu=a(async(e,t)=>{await qs(),await t()},"requireSCIM");var HA=require("@budibase/backend-core");var Ma=a(e=>du(HA.users.getById,e,!0),"scimUserOnly"),Na=a(e=>du(z.get,e,!0),"scimGroupOnly"),Ba=a(e=>du(z.get,e,!1),"internalGroupOnly");function du(e,t,r){return async(n,o)=>{let s=n.params[t];return typeof s!="string"&&n.throw(404),!!(await e(s)).scimInfo?.isSync!==r&&n.throw(404),o()}}a(du,"scimSyncChecks");var Ga=require("@budibase/backend-core");var fu=require("dd-trace");async function mu(e,t){await fu.tracer.trace("licenseAuth",async r=>{let n=e.request.headers[Ga.constants.Header.LICENSE_KEY];Array.isArray(n)&&(n=n[0]),r.addTags({licenseKey:n}),n||e.throw(403,"License key not provided");let o=await vs(n);o||(r.addTags({licenseFound:!1}),e.throw(403,"License not found or invalid")),o.tenantId||e.throw(403,"License does not have a tenant ID"),fu.tracer.setUser({id:"anonymous",tenantId:o.tenantId}),await Ga.context.doInSelfHostTenantUsingCloud(o.tenantId,async()=>{await Ga.context.doInLicenseContext(o,async()=>{await t()})})})}a(mu,"default");var Su={};x(Su,{appBackups:()=>nb,auditLogs:()=>fb,environmentVariables:()=>wb,groups:()=>qb,scim:()=>pI});var Et=require("@budibase/backend-core"),lo=require("@budibase/types"),rb=F(require("@koa/router")),tr=F(require("joi"));var po=require("@budibase/backend-core"),hu=require("@budibase/types");async function er(e,t){t||e.throw(400,"App ID missing"),await cr.workspaceExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}a(er,"checkAppID");async function YA(e){let t=e.params.appId;await er(e,t);let{body:r}=e.request,n=e.user?._id,o=await Ne.triggerAppBackup(t,hu.BackupTrigger.MANUAL,{name:r.name,createdBy:n});o||e.throw(500,"Unable to start backup."),e.body={backupId:o,message:"Backup triggered - process starting."}}a(YA,"manualBackup");async function zA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body.name,o=await Ne.triggerAppRestore(t,r,n,e.user?._id);o||e.throw(500,"Unable to start restore."),await po.events.backup.appBackupRestored(o.metadata),e.body={restoreId:o?.restoreId,message:"Restore triggered - process starting."}}a(zA,"importBackup");async function JA(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}a(JA,"deleteBackup");async function XA(e){let t=po.context.getWorkspaceId();await er(e,t);let{backupIds:r}=e.request.body;(!Array.isArray(r)||r.length===0)&&e.throw(400,"backupIds must be a non-empty array");let n=await Ne.deleteAppBackups(r),o=n.filter(i=>i.success).length,s=n.length-o;e.body={message:`${o} backups deleted successfully${s>0?`, ${s} failed`:""}.`,results:n,successCount:o,failureCount:s}}a(XA,"deleteBackups");async function ZA(e){let t=e.params.appId;await er(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(hu.BackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}a(ZA,"fetchBackups");async function eb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}a(eb,"updateBackup");async function tb(e){let t=e.params.appId;await er(e,t);let r=e.params.backupId,{metadata:n,stream:o}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=o}a(tb,"downloadBackup");var ab=new rb.default;function WN(){return Et.auth.joiValidator.body(tr.default.object({trigger:tr.default.string().valid(...Object.values(lo.BackupTrigger)),type:tr.default.string().valid(...Object.values(lo.BackupType)),startDate:tr.default.date(),endDate:tr.default.date(),page:tr.default.string()}))}a(WN,"validateBackupSearch");ab.post("/api/apps/:appId/backups",Et.auth.builderOrAdmin,YA).post("/api/apps/:appId/backups/search",Et.auth.builderOrAdmin,WN(),ZA).get("/api/apps/:appId/backups/:backupId/file",Et.auth.builderOrAdmin,tb).patch("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,eb).delete("/api/apps/:appId/backups/:backupId",Et.auth.builderOrAdmin,JA).delete("/api/apps/:appId/backups",Et.auth.builderOrAdmin,XA).post("/api/apps/:appId/backups/:backupId/import",Et.auth.builderOrAdmin,zA);var nb=ab;var yu=require("@budibase/backend-core");async function ob(e){let t=e.request.body,r=await kt.fetch(t);await yu.events.auditLog.filtered(t),e.body=r}a(ob,"search");async function sb(e){let t=e.request.body,{stream:r}=kt.download(t);await yu.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}a(sb,"download");async function ib(e){e.body={events:kt.definitions()}}a(ib,"definitions");var cb=require("@budibase/types"),rr=require("@budibase/backend-core"),pb=F(require("@koa/router")),Ve=F(require("joi"));function ub(){return rr.auth.joiValidator.body(Ve.default.object({userIds:Ve.default.array().items(Ve.default.string()).optional(),appIds:Ve.default.array().items(Ve.default.string()).optional(),events:Ve.default.array().items(Ve.default.string().valid(...Object.values(cb.Event))).optional(),startDate:Ve.default.string().optional().allow(""),endDate:Ve.default.string().optional().allow(""),fullSearch:Ve.default.string().optional().allow(""),bookmark:Ve.default.number()}))}a(ub,"buildAuditLogSearchValidator");var lb=new pb.default;lb.post("/api/global/auditlogs/search",rr.auth.adminOnly,ub(),ob).get("/api/global/auditlogs/download",rr.auth.adminOnly,rr.middleware.querystringToBody,ub(),sb).get("/api/global/auditlogs/definitions",rr.auth.adminOnly,ib);var fb=lb;var bu=require("@budibase/backend-core"),Au=require("@budibase/types");async function mb(e){e.body={encryptionKeyAvailable:mt.isEncryptionKeyAvailable()}}a(mb,"status");async function gb(e){e.body={variables:await mt.fetch()}}a(gb,"fetch");async function hb(e){let{name:t,production:r,development:n}=e.request.body;await mt.update(t,{production:r,development:n});let o=[Au.Environment.PRODUCTION];r!==n&&o.push(Au.Environment.DEVELOPMENT),await bu.events.environmentVariable.created(t,o),e.body={message:`Environment variable "${t}" created.`}}a(hb,"create");async function yb(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await mt.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}a(yb,"update");async function Ab(e){let t=e.params.varName;await mt.remove(t),await bu.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}a(Ab,"destroy");var ar=require("@budibase/backend-core"),Ib=F(require("@koa/router")),Fa=F(require("joi"));var Sb=new Ib.default;function bb(){return ar.auth.joiValidator.body(Fa.default.object({name:Fa.default.string().optional(),production:Fa.default.string().required(),development:Fa.default.string().required()}))}a(bb,"buildEnvVarUpdateValidator");Sb.get("/api/env/variables/status",ar.auth.builderOrAdmin,mb).get("/api/env/variables",ar.auth.builderOrAdmin,gb).post("/api/env/variables",ar.auth.builderOrAdmin,bb(),hb).patch("/api/env/variables/:varName",ar.auth.builderOrAdmin,bb(),yb).delete("/api/env/variables/:varName",ar.auth.builderOrAdmin,Ab);var wb=Sb;var gt=require("@budibase/backend-core"),vt=require("@budibase/types"),Pb=F(require("@koa/router")),Ce=F(require("joi"));var Tb=require("@budibase/backend-core");async function Eb(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await _r(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await Bn(t);e.body={_id:r.id,_rev:r.rev}}a(Eb,"save");async function vb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let o,s;r&&(o=await Gn(t,r)),n&&(s=await Qs(t,n)),e.body={added:o,removed:s}}a(vb,"updateGroupUsers");async function Rb(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await Ks(t,{appsToAdd:r,appsToRemove:n})}a(Rb,"updateGroupApps");async function _b(e){e.body={data:await Oa()}}a(_b,"fetch");async function xb(e){let{groupId:t,rev:r}=e.params;try{await $s(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}a(xb,"destroy");async function Cb(e){try{e.body=await _r(e.params.groupId)}catch(t){e.throw(t.status,t)}}a(Cb,"find");async function Ob(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,o=e.params.groupId,s={limit:t+1},i=await an(o,{...s,emailSearch:n,bookmark:r}),u=n?i[t]?.email:i[t]?._id,c=!!u;e.body={users:i.slice(0,t),bookmark:u,hasNextPage:c}}a(Ob,"searchUsers");async function Lb(e){let{groupId:t}=e.params,{csvContent:r}=e.request.body;(r===void 0||r.trim().length===0)&&e.throw(400,"CSV is empty");let n=await Tb.csv.jsonFromCsvString(r,{allowSingleColumn:!0});(!n||n.length===0)&&e.throw(400,"CSV file is invalid");let s=Object.keys(n[0]).find(h=>/^(email|e-mail|email address|mail|e_mail)$/i.test(h.trim()));s||e.throw(400,"CSV file must contain an email column");let i=Array.from(new Set(n.map(h=>h[s]).filter(h=>h&&typeof h=="string"&&h.trim().length>0).map(h=>h.trim())));i.length===0&&e.throw(400,"No valid email addresses found in CSV");try{await _r(t)}catch(h){if(h.status===404)e.throw(404,"Group not found");else throw h}let u=[],c=[],f=[],g=await Promise.all(i.map(h=>Qe.getUserByEmail(h)));for(let h of i){let y=g.find(E=>E?.email===h);y?(u.push({_id:y._id,email:y.email}),f.push(y._id)):c.push({email:h,reason:"User not found"})}f.length>0&&await Gn(t,f),e.body={added:u,skipped:c}}a(Lb,"bulkAddUsersFromCsv");var Ub=new Pb.default;function KN(){return gt.auth.joiValidator.body(Ce.default.object({_id:Ce.default.string().optional(),_rev:Ce.default.string().optional(),color:Ce.default.string().required(),icon:Ce.default.string().required(),name:Ce.default.string().trim().required().max(50),role:Ce.default.string().optional(),users:Ce.default.array().optional(),apps:Ce.default.array().optional(),roles:Ce.default.object().optional(),createdAt:Ce.default.string().optional(),updatedAt:Ce.default.string().optional()}).required())}a(KN,"buildGroupSaveValidation");Ub.post("/api/global/groups",gt.auth.adminOnly,we.requireFeature(vt.Feature.USER_GROUPS),KN(),Eb).get("/api/global/groups",we.requireFeature(vt.Feature.USER_GROUPS),_b).delete("/api/global/groups/:groupId/:rev",we.requireFeature(vt.Feature.USER_GROUPS),gt.auth.adminOnly,Ba("groupId"),xb).get("/api/global/groups/:groupId",we.requireFeature(vt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Cb).get("/api/global/groups/:groupId/users",we.requireFeature(vt.Feature.USER_GROUPS),gt.auth.builderOrAdmin,Ob).post("/api/global/groups/:groupId/users",gt.auth.adminOnly,we.requireFeature(vt.Feature.USER_GROUPS),Ba("groupId"),vb).post("/api/global/groups/:groupId/users/bulk",gt.auth.adminOnly,we.requireFeature(vt.Feature.USER_GROUPS),Ba("groupId"),gt.auth.joiValidator.body(Ce.default.object({csvContent:Ce.default.string().required()}).required()),Lb).post("/api/global/groups/:groupId/apps",gt.auth.builderOrAdmin,we.requireFeature(vt.Feature.USER_GROUPS),Rb);var qb=Ub;var cI=F(require("@koa/router"));var fo=require("scim-patch");var kb=require("@budibase/backend-core");function Db(e,t){let r=e.request.query[t];if(r!==void 0)return+r}a(Db,"tryGetQueryAsNumber");var Mb=a(async e=>{let t=Db(e,"pageSize")??20,r=Db(e,"startIndex"),n;e.request.query.filter&&(n=ce.user.userFilters(e.request.query.filter));let o=await qe.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:o.total,Resources:o.users.map(ce.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},"get"),Nb=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await qe.find(t);e.body=ce.user.toScimUserResponse(r)},"find"),Bb=a(async e=>{let t=ce.user.fromScimUser(e.request.body);try{let r=await qe.create(t);e.body=ce.user.toScimUserResponse(r)}catch(r){throw r instanceof kb.EmailUnavailableError&&e.throw(409,"Email already in use"),r}},"create");function VN(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}a(VN,"isDeactivation");var Gb=a(async e=>{let t=await qe.find(e.params.id);t||e.throw(404);let r=ce.user.toScimUserResponse(t),n=e.request.body;try{(0,fo.patchBodyValidation)(n)}catch{}if(VN(n))return Iu(e);let o;try{o=(0,fo.scimPatch)(r,n.Operations)}catch{}o||e.throw(500);let s=ce.user.fromScimUser(o);await qe.update(s,{allowChangingEmail:!0}),e.body=ce.user.toScimUserResponse(s)},"update"),Iu=a(async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await qe.remove(t),e.status=204},"remove");var tI=F(eI()),rI=require("@budibase/shared-core"),mo=require("scim-patch");var go=require("scim2-parse-filter");function aI(e,t){for(let r of t.split(","))delete e[r]}a(aI,"cleanResponse");var nI=a(async e=>{let r=(await re.fetch()).filter(s=>s.scimInfo?.isSync).map(ce.group.toScimGroupResponse),{filter:n,excludedAttributes:o}=e.request.query;if(n){let s=(0,go.filter)((0,go.parse)(n));r=r.filter(s)}o&&r.forEach(s=>{aI(s,o)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},"get"),oI=a(async e=>{let t=ce.group.fromScimGroup(e.request.body),r=await qr.create(t);e.body=ce.group.toScimGroupResponse(r)},"create"),sI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),{excludedAttributes:o}=e.request.query;o&&aI(n,o),e.body=n},"find"),iI=a(async e=>{let{id:t}=e.params,r=await re.get(t);await re.remove(t,r._rev),e.status=204},"remove"),uI=a(async e=>{let{id:t}=e.params,r=await re.get(t),n=ce.group.toScimGroupResponse(r),o=e.request.body;try{(0,mo.patchBodyValidation)(o)}catch{e.throw(400)}let{true:s,false:i}=(0,tI.default)(o.Operations,u=>u.path==="members");if(i?.length){let u=(0,mo.scimPatch)(n,i);u||e.throw(500);let c={...ce.group.fromScimGroup(u),_rev:r._rev};await re.save(c)}if(s?.length){let u=[],c=[];for(let{op:f,value:g}of s)switch(f){case"add":case"Add":for(let h of g)u.push(await qe.find(h.value));break;case"remove":case"Remove":for(let h of g)c.push(await qe.find(h.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:rI.utils.unreachable(f)}u.length&&await re.addUsers(t,u.map(f=>f._id)),c.length&&await re.removeUsers(t,c.map(f=>f._id))}e.body=ce.group.toScimGroupResponse(await re.get(t))},"update");var Wa=require("@budibase/types"),Be=new cI.default({prefix:"/api/global/scim/v2"});Be.use(lu);Be.use(pu);Be.get("/users",Mb);Be.get("/users/:id",Ma("id"),Nb);Be.post("/users",Bb);Be.patch("/users/:id",Ma("id"),Gb);Be.delete("/users/:id",Ma("id"),Iu);Be.get("/groups",nI);Be.post("/groups",we.requireFeature(Wa.Feature.USER_GROUPS),oI);Be.get("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),sI);Be.delete("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),iI);Be.patch("/groups/:id",we.requireFeature(Wa.Feature.USER_GROUPS),Na("id"),uI);var pI=Be;var ce={};x(ce,{group:()=>Tu,user:()=>wu});var wu={};x(wu,{fromScimUser:()=>SB,toScimUserResponse:()=>AB,userFilters:()=>wB});var lI=require("@budibase/backend-core"),dI=require("@budibase/shared-core"),ho=require("@budibase/types"),fI=require("scim2-parse-filter");var{unreachable:yB}=dI.utils,AB=a(e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},o={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===ho.UserStatus.ACTIVE};(e.firstName||e.lastName)&&(o.name={formatted:[e.firstName,e.lastName].filter(i=>i).join(" "),familyName:e.lastName,givenName:e.firstName});let s="urn:ietf:params:scim:schemas:extension:enterprise:2.0:User";if(o[s]?.manager){let i=o[s].manager;typeof i=="string"&&(o[s].manager={value:i})}return o},"toScimUserResponse"),bB=a(e=>!!e?.id,"isScimUserResponse");function IB(e){if(lI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}a(IB,"tryGetEmail");var SB=a(e=>{let t=bB(e)?e:void 0,r=IB(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:yB(e.active)}let o,s;return e.name?.givenName?(o=e.name?.givenName,s=e.name?.familyName):o=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:o,lastName:s,scimInfo:{...e,isSync:!0},roles:{},status:n?ho.UserStatus.ACTIVE:ho.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimUser"),wB=a(e=>{let t={equal:{}},r=(0,fI.parse)(e);function n(o){switch(o.op){case"eq":{let s=o.attrPath,i;switch(s){case"emails.value":i="email";break;default:i=`scimInfo.${s}`}t.equal[i]=o.compValue;break}case"and":for(let s of o.filters)n(s);break;default:console.warn("Filter not handled",{filter:o})}}return a(n,"parseFilters"),n(r),t},"userFilters");var Tu={};x(Tu,{fromScimGroup:()=>vB,toScimGroupResponse:()=>TB});var TB=a(e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),"toScimGroupResponse"),EB=a(e=>!!e?.id,"isScimGroup"),vB=a(e=>{let t=EB(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},"fromScimGroup");var Vu={};x(Vu,{LLM:()=>ht,LLMRequest:()=>se,TableGeneration:()=>Ku,agentHistoryTitleSystemPrompt:()=>kB,agentSystemPrompt:()=>DB,aiColumnSchemas:()=>ju,aiTableResponseToTableSchema:()=>Gu,appendAIColumns:()=>Fu,classifyText:()=>Ru,cleanData:()=>_u,extractFileData:()=>LB,generateAIColumns:()=>Nu,generateCode:()=>qB,generateCronExpression:()=>xu,generateData:()=>Bu,generateJs:()=>Pu,generateSQL:()=>UB,generateTables:()=>Mu,generationStructure:()=>$u,getLLM:()=>Ka,getLLMConfig:()=>ku,getLLMOrThrow:()=>TI,normalizeContentType:()=>Eu,parseResponseFormat:()=>Ao,sanitiseToolName:()=>RB,searchWeb:()=>Lu,sentimentAnalysis:()=>Ou,summarizeText:()=>yo,tableDataStructuredOutput:()=>Qu,translate:()=>Cu});var $a=require("@budibase/types");function RB(e){if(e.length>64)throw new Error("Tool name must be under 64 characters long");return e.replace(/[^a-zA-Z0-9_-]/g,"_")}a(RB,"sanitiseToolName");function Eu(e){return e?e.includes("/")?e:{[$a.SupportedFileType.PDF]:"application/pdf",[$a.SupportedFileType.JPG]:"image/jpeg",[$a.SupportedFileType.JPEG]:"image/jpeg",[$a.SupportedFileType.PNG]:"image/png"}[e.toLowerCase()]||"application/octet-stream":"application/octet-stream"}a(Eu,"normalizeContentType");var To=require("@budibase/types");var yt=require("@budibase/backend-core"),bI=require("@budibase/types");var bo=F(require("openai"));var Nt=require("@budibase/types");var mI=require("@budibase/shared-core");var Bt=F(require("dd-trace"));function vu(e,t){return t.map(r=>e[r]).join(" ")}a(vu,"extractTextFromColumns");var ht=class{static{a(this,"LLM")}constructor({model:t,apiKey:r,maxTokens:n}){this._model=t,this._apiKey=r,this._maxTokens=n??parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"1000")}get model(){return this._model}get apiKey(){return this._apiKey}get maxTokens(){return this._maxTokens}async prompt(t){return await Bt.default.trace("prompt",async()=>{let r=typeof t=="string"?new se().addUserMessage(t):t,{messages:n,tokensUsed:o}=await Bt.default.trace("chatCompletion",()=>this.chatCompletion(r));return!n||n.length===0?{message:"",tokensUsed:o}:{message:n[n.length-1].content||"",tokensUsed:o}})}async chat(t){return await Bt.default.trace("chat",async()=>await this.chatCompletion(t))}async*chatStream(t){yield*this.chatCompletionStream(t)}async summarizeText(t){return Bt.default.trace("summarizeText",()=>this.prompt(yo(t)))}async generateCronExpression(t){return Bt.default.trace("generateCronExpression",()=>this.prompt(xu(t)))}async operation(t,r){return Bt.default.trace("operation",n=>{n.addTags({operation:t.operation,rowId:r.id});let o=this.promptForOperation(t,r);return this.prompt(o)})}promptForOperation(t,r){let{operation:n,column:o,columns:s,language:i,categories:u,prompt:c}=t;switch(n){case Nt.AIOperationEnum.SUMMARISE_TEXT:return yo(vu(r,s));case Nt.AIOperationEnum.CLEAN_DATA:return _u(r[o]);case Nt.AIOperationEnum.TRANSLATE:return Cu(r[o],i);case Nt.AIOperationEnum.CATEGORISE_TEXT:if(!u)throw Error("No categories provided for categorise text operation. Please provide categories.");return Ru(vu(r,s),u.split(","));case Nt.AIOperationEnum.SENTIMENT_ANALYSIS:return Ou(r[o]);case Nt.AIOperationEnum.PROMPT:return c;case Nt.AIOperationEnum.SEARCH_WEB:return Lu(vu(r,s));default:throw mI.utils.unreachable(n)}}async generateJs(t,r){return await Bt.default.trace("generateJs",async()=>{let{bindings:n=[],snippets:o=[]}=r||{};return await this.prompt(Pu(n,o).addUserMessage(t))})}};var hI=require("@budibase/types"),Uu=require("openai/helpers/zod");var ja=(n=>(n.GPT_5_MINI="gpt-5-mini",n.GPT_5="gpt-5",n.GPT_5_NANO="gpt-5-nano",n))(ja||{});function Ao(e){if(e)return e==="text"?{type:"text"}:e==="json"?{type:"json_object"}:e}a(Ao,"parseResponseFormat");function gI(e){if(!e)return 0;let t=e.prompt_tokens;return e.completion_tokens*3+t}a(gI,"calculateBudibaseAICredits");var He=class extends ht{constructor(r){super(r);this.client=this.getClient(r)}static{a(this,"OpenAI")}getVerbosityForModel(){if(Object.values(ja).includes(this.model))return"low"}getClient(r){if(!r.apiKey)throw new Error("No OpenAI API key found");return new bo.default({apiKey:r.apiKey})}async uploadFile(r,n,o){let s=Eu(o);if(hI.ImageContentTypes.includes(s.toLowerCase())){let c;if(Buffer.isBuffer(r))c=r;else{let g=[];for await(let h of r)g.push(new Uint8Array(h));c=Buffer.concat(g)}let f=c.toString("base64");return`data:${s};base64,${f}`}let i=await(0,bo.toFile)(r,n);return(await this.client.files.create({file:i,purpose:"assistants"})).id}async chatCompletion(r){let n={model:this.model,messages:r.messages,max_completion_tokens:this._maxTokens,response_format:Ao(r.format)};if(Object.values(ja).includes(this.model)){let i=this.getVerbosityForModel();i&&(n.verbosity=i),n.reasoning_effort="minimal"}r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Uu.zodFunction));let o=await this.client.chat.completions.create(n),s=o?.choices?.[0]?.message;if(s?.tool_calls){r.addMessage(s);let i=[];for(let u of s.tool_calls){if(u.type!=="function"||!u.function){console.warn(`[OPENAI TOOL WARN] Unsupported tool call type: ${u.type}`);continue}let c=u.function.name,f=r.findTool(c);if(!f)throw new Error(`Tool ${c} not found in prompt tools`);let g=JSON.parse(u.function.arguments);i.push(f.handler(g).then(h=>({role:"tool",tool_call_id:u.id,content:h})).catch(h=>(console.error(`[OPENAI TOOL ERROR] Tool ${c} failed in OpenAI handler:`,h),{role:"tool",tool_call_id:u.id,content:`Error: ${h.message}`})))}return r.addMessages(await Promise.all(i)),this.chatCompletion(r)}else{if(s?.content)return{messages:[...r.messages,{role:s.role,content:s.content}],tokensUsed:gI(o.usage)};throw new Error("No response found")}}async*chatCompletionStream(r){let n={model:this.model,messages:r.messages,max_tokens:this.maxTokens,response_format:Ao(r.format),stream:!0};r.tools&&r.tools.length>0&&(n.tool_choice="auto",n.tools=r.tools.map(Uu.zodFunction));try{let o=await this.client.chat.completions.create(n),s=null,i="",u=null;for await(let f of o){let g=f?.choices?.[0]?.delta;if(g){if(g.content&&(i+=g.content,yield{type:"content",content:g.content}),g.tool_calls&&g.tool_calls.length>0){let h=g.tool_calls[0];h.id?(s={id:h.id,name:h.function?.name||"",arguments:h.function?.arguments||""},yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}}):s&&h.function?.arguments&&(s.arguments+=h.function.arguments,yield{type:"tool_call_start",toolCall:{id:s.id,name:s.name,arguments:s.arguments}})}f.usage&&(u=f.usage)}}let c=u?gI(u):0;if(s){r.addMessage({role:"assistant",content:"",tool_calls:[{id:s.id,type:"function",function:{name:s.name,arguments:s.arguments}}]});let f=r.findTool(s.name);if(f)try{let g=JSON.parse(s.arguments),h=await f.handler(g);yield{type:"tool_call_result",toolResult:{id:s.id,result:h}},r.addMessage({role:"tool",tool_call_id:s.id,content:h}),yield*this.chatCompletionStream(r);return}catch(g){yield{type:"tool_call_result",toolResult:{id:s.id,result:`Error: ${g.message}`,error:g.message}},r.addMessage({role:"tool",tool_call_id:s.id,content:`Error: ${g.message}`}),yield*this.chatCompletionStream(r);return}else{let g=`Tool '${s.name}' not found`;yield{type:"tool_call_result",toolResult:{id:s.id,result:g,error:g}},r.addMessage({role:"tool",tool_call_id:s.id,content:g}),yield*this.chatCompletionStream(r);return}}i&&r.addMessage({role:"assistant",content:i}),yield{type:"done",messages:r.messages,tokensUsed:c}}catch(o){yield{type:"error",content:o.message}}}};var he=require("@budibase/backend-core"),yI=require("@budibase/types");var qu=require("dd-trace");var Io=class extends ht{static{a(this,"BudibaseAI")}async prompt(t){let r=await super.prompt(t);return r.tokensUsed&&await Mn(r.tokensUsed),r}async chat(t){let r=await super.chat(t);return r.tokensUsed&&await Mn(r.tokensUsed),r}async uploadFile(t,r,n){return he.env.SELF_HOSTED?this.uploadFileSelfHost(t,r,n):this.uploadFileCloud(t,r,n)}async uploadFileCloud(t,r,n){return new He({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).uploadFile(t,r,n)}async uploadFileSelfHost(t,r,n){let o;if(Buffer.isBuffer(t))o=t;else{let g=[];for await(let h of t)g.push(new Uint8Array(h));o=Buffer.concat(g)}let s=o.toString("base64");if(n&&yI.ImageContentTypes.includes(n.toLowerCase()))return`data:image/jpeg;base64,${s}`;if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(!this._apiKey){let g=await xn();if(!g)throw new Error("No license key found");this._apiKey=g}let i=`${he.env.BUDICLOUD_URL}/api/ai/upload-file`,u={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify({data:s,filename:r,contentType:n})};console.debug("[BudibaseAI] uploadFileSelfHost - Making network call",{url:i,method:u.method,headers:u.headers,bodyKeys:["data","filename","contentType"],filename:r,contentType:n});let c=await fetch(i,u);if(console.debug("[BudibaseAI] uploadFileSelfHost - Network response",{url:i,status:c.status,statusText:c.statusText,ok:c.ok}),!c.ok)throw await he.HTTPError.fromResponse(c);return(await c.json()).fileId}async chatCompletion(t){return he.env.SELF_HOSTED?this.chatCompletionSelfHost(t):this.chatCompletionCloud(t)}async chatCompletionCloud(t){return await qu.tracer.trace("chatCompletionCloud",async()=>await new He({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletion(t))}async chatCompletionSelfHost(t){return await qu.tracer.trace("chatCompletionSelfHost",async r=>{if(!he.env.BUDICLOUD_URL)throw new Error("No Budibase URL found");if(r.addTags({budicloudUrl:he.env.BUDICLOUD_URL}),!this._apiKey){let c=await xn();if(!c)throw new Error("No license key found");this._apiKey=c,r.addTags({licenseKey:this._apiKey})}let n={messages:t.messages,format:t.format,useTools:t.tools.length>0},o=`${he.env.BUDICLOUD_URL}/api/ai/chat`,s={method:"POST",headers:{"Content-Type":"application/json",[he.constants.Header.LICENSE_KEY]:this._apiKey},body:JSON.stringify(n)};console.debug("[BudibaseAI] chatCompletionSelfHost - Making network call",{url:o,method:s.method,headers:s.headers,bodyKeys:Object.keys(n),messagesCount:t.messages.length,useTools:n.useTools,format:n.format});let i=await fetch(o,s);if(console.debug("[BudibaseAI] chatCompletionSelfHost - Network response",{url:o,status:i.status,statusText:i.statusText,ok:i.ok}),!i.ok)throw await he.HTTPError.fromResponse(i);let u=await i.json();return console.debug("[BudibaseAI] chatCompletionSelfHost - Response data",{url:o,tokensUsed:u.tokensUsed,messagesCount:u.messages?.length}),u})}async*chatCompletionStream(t){he.env.SELF_HOSTED?yield*this.chatCompletionStreamSelfHost(t):yield*this.chatCompletionStreamCloud(t)}async*chatCompletionStreamCloud(t){yield*new He({apiKey:he.env.OPENAI_API_KEY,model:this.model,max_completion_tokens:this.maxTokens}).chatCompletionStream(t)}async*chatCompletionStreamSelfHost(t){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Starting streaming (fallback to non-streaming)",{messagesCount:t.messages.length,toolsCount:t.tools.length});try{let r=await this.chatCompletionSelfHost(t);if(console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Yielding response chunks",{responseMessagesCount:r.messages.length,tokensUsed:r.tokensUsed}),r.messages.length>0){let n=r.messages[r.messages.length-1];n.content&&(yield{type:"content",content:n.content})}yield{type:"done",messages:r.messages,tokensUsed:r.tokensUsed}}catch(r){console.debug("[BudibaseAI] chatCompletionStreamSelfHost - Error occurred",{error:r.message}),yield{type:"error",content:r.message}}}};var Qa=require("dd-trace");var Du=F(require("@anthropic-ai/sdk"));function _B(e){if(!e)return 0;let t=e.input_tokens;return e.output_tokens*3+t}a(_B,"calculateBudibaseAICredits");var So=class extends ht{constructor(r){super(r);this.client=new Du.default({apiKey:r.apiKey})}static{a(this,"Anthropic")}firstTextBlock(r){for(let n of r.content)if(n.type==="text")return n.text}async uploadFile(r,n,o){throw new Error("File upload not supported for this LLM provider")}async chatCompletion(r){try{let n=await this.client.messages.create({model:this.model,messages:r.messages.map(({content:s})=>{if(s==null)return{role:"user",content:""};if(typeof s=="string")return{role:"user",content:s};let i="";for(let u of s)u.type==="text"?i+=u.text:["image_url","input_audio","file"].includes(u.type);return{role:"user",content:i}}),max_tokens:this.maxTokens}),o=this.firstTextBlock(n)||"";return{messages:[...r.messages,{role:"assistant",content:o}],tokensUsed:_B(n.usage)}}catch(n){throw n instanceof Du.default.APIError&&console.error(`Anthropic Prompt failed with error ${n.name} and status: ${n.status}`),n}}async*chatCompletionStream(r){try{let n=await this.chatCompletion(r);if(n.messages.length>0){let o=n.messages[n.messages.length-1];o.content&&(yield{type:"content",content:o.content})}yield{type:"done",messages:n.messages,tokensUsed:n.tokensUsed}}catch(n){yield{type:"error",content:n.message}}}};var II=require("zod"),SI=require("openai/helpers/zod");var AI=require("openai");var wo=class extends He{static{a(this,"AzureOpenAI")}getClient(t){if(!t.apiKey)throw new Error("No Azure OpenAI API key found");if(!t.model)throw new Error("No Azure OpenAI model specified");return new AI.AzureOpenAI({apiKey:t.apiKey,apiVersion:"2024-10-01-preview",baseURL:t.baseUrl})}getVerbosityForModel(){return Object.values(ja).includes(this.model)?"medium":void 0}};var wI={OpenAI:"gpt-5-mini",TogetherAI:"gpt-5-mini",AzureOpenAI:"gpt-4.1",Custom:"gpt-5-mini",Anthropic:"claude-3-5-sonnet-20240620",BudibaseAI:"gpt-5-mini"},xB={OpenAI:He,TogetherAI:He,AzureOpenAI:wo,Custom:He,Anthropic:So,BudibaseAI:Io};async function CB(){return await Qa.tracer.trace("getAIConfig",async e=>{let t={type:bI.ConfigType.AI,config:{}};if(!yt.context.isSelfHostUsingCloud()){let n=await yt.configs.getAIConfig();n&&(t=n)}await Ds(t);let r=Object.values(t.config).find(n=>n.active&&n.isDefault);if(!r){e.addTags({enabled:!1,reason:"no provider found"});return}return e.addTags({enabled:!0}),{provider:r.provider,model:r.defaultModel||wI[r.provider],apiKey:r.apiKey,baseUrl:r.baseUrl}})}a(CB,"getAIConfig");async function OB(){return Qa.tracer.trace("getSelfHostOpenAIKeyConfig",e=>{if(!yt.env.SELF_HOSTED){e.addTags({enabled:!1,reason:"not self host"});return}if(!yt.env.OPENAI_API_KEY){e.addTags({enabled:!1,reason:"no OPENAI_API_KEY"});return}return e.addTags({enabled:!0}),{provider:"OpenAI",model:wI.OpenAI,apiKey:yt.env.OPENAI_API_KEY}})}a(OB,"getSelfHostOpenAIKeyConfig");async function ku(){return Qa.tracer.trace("getLLMConfig",async()=>await CB()||await OB())}a(ku,"getLLMConfig");async function Ka(e){return await Qa.tracer.trace("getLLM",async t=>{let{model:r,maxTokens:n}=e||{},o=await ku();if(!o){t.addTags({enabled:!1,reason:"no config found"});return}r&&(o.model=r),n&&(o.maxTokens=n);let s=xB[o.provider];if(!s){t.addTags({enabled:!1,reason:"no provider found",provider:o.provider});return}return new s(o)})}a(Ka,"getLLM");async function TI(){let e=await Ka();if(!e)throw new yt.HTTPError("No available LLM configurations",500);return e}a(TI,"getLLMOrThrow");var se=class e{constructor(){this.messages=[];this.tools=[]}static{a(this,"LLMRequest")}addTool(t){return this.tools.push(t),this}addTools(t){return this.tools.push(...t),this}findTool(t){return this.tools.find(r=>r.name===t)}withFormat(t){return t instanceof II.z.ZodType?this.format=(0,SI.zodResponseFormat)(t,"key"):this.format=t,this}addMessage(t){return this.messages.push(t),this}addMessages(t){return this.messages.push(...t),this}addUserMessage(t){return this.messages.push({role:"user",content:t}),this}addSystemMessage(t){return this.messages.push({role:"system",content:t}),this}static fromRequest(t){let r=new e;return t.messages&&r.addMessages(t.messages),t.format&&r.withFormat(t.format),r}};var Rt=require("zod");function yo(e,t){let r=`Summarize this text:
39
+ ${e}`,n="";if(t)switch(t){case To.SummariseLength.SHORT:n="In 1-2 concise sentences, ";break;case To.SummariseLength.MEDIUM:n="In 2-3 paragraphs, ";break;case To.SummariseLength.LONG:n="In multiple detailed paragraphs, ";break}return new se().addUserMessage(`${n}${r}.
40
+ Only return the summary.`)}a(yo,"summarizeText");function LB(e,t){let r=["You are a data extraction assistant.","Extract data from the attached document/image that matches the provided schema.","The schema defines the structure where values like 'string', 'number', 'boolean' indicate the expected data types.","Extract all items that match the schema from the document.","Return the data in json format","If no matching data is found, return an empty data array."].join(`
41
41
 
42
42
  `),o=t.startsWith("data:")?[{type:"image_url",image_url:{url:t}},{type:"text",text:r}]:[{type:"text",text:`${r}
43
43
 
44
- File ID: ${t}`}],s=PB(e),i=vt.z.object({data:vt.z.array(s)});return new se().addMessages([{role:"user",content:o}]).withFormat(i)}a(LB,"extractFileData");function PB(e){let t={};for(let[r,n]of Object.entries(e))if(typeof n=="string")switch(n.toLowerCase()){case"string":t[r]=vt.z.string();break;case"number":t[r]=vt.z.number();break;case"boolean":t[r]=vt.z.boolean();break;default:t[r]=vt.z.string()}else t[r]=vt.z.string();return vt.z.object(t)}a(PB,"createZodSchemaFromRecord");function Ru(e,t){return new se().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}a(Ru,"classifyText");function vu(e){return new se().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}a(vu,"cleanData");function UB(e,t){return new se().addUserMessage(`Given the table schema:
44
+ File ID: ${t}`}],s=PB(e),i=Rt.z.object({data:Rt.z.array(s)});return new se().addMessages([{role:"user",content:o}]).withFormat(i)}a(LB,"extractFileData");function PB(e){let t={};for(let[r,n]of Object.entries(e))if(typeof n=="string")switch(n.toLowerCase()){case"string":t[r]=Rt.z.string();break;case"number":t[r]=Rt.z.number();break;case"boolean":t[r]=Rt.z.boolean();break;default:t[r]=Rt.z.string()}else t[r]=Rt.z.string();return Rt.z.object(t)}a(PB,"createZodSchemaFromRecord");function Ru(e,t){return new se().addUserMessage(`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category. Do not add any extra punctuation or fix spelling mistakes. It should exactly match one of the categories. `)}a(Ru,"classifyText");function _u(e){return new se().addUserMessage(`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`)}a(_u,"cleanData");function UB(e,t){return new se().addUserMessage(`Given the table schema:
45
45
  ${t}
46
46
 
47
47
  Generate a SQL query for the following request:
48
48
  ${e}.
49
49
  Only provide the SQL.`)}a(UB,"generateSQL");function qB(e){return new se().addUserMessage(`Generate JavaScript code for the following request:
50
50
  ${e}.
51
- Only provide the JS and nothing else.`)}a(qB,"generateCode");function _u(e){return new se().addUserMessage(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
52
- ${e}`)}a(_u,"generateCronExpression");function xu(e,t){return new se().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}a(xu,"translate");function Cu(e){return new se().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}a(Cu,"sentimentAnalysis");function Ou(e){return new se().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}a(Ou,"searchWeb");function Lu(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
51
+ Only provide the JS and nothing else.`)}a(qB,"generateCode");function xu(e){return new se().addUserMessage(`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
52
+ ${e}`)}a(xu,"generateCronExpression");function Cu(e,t){return new se().addUserMessage(`Translate the following text: "${e}" into ${t}. Only return the translation.`)}a(Cu,"translate");function Ou(e){return new se().addUserMessage(`Return the sentiment of this text: "${e}". Only return the sentiment.`)}a(Ou,"sentimentAnalysis");function Lu(e){return new se().addUserMessage(`Search the web for the following: "${e}". Only return the top results.`)}a(Lu,"searchWeb");function Pu(e,t){let r="You do not have access to any bindings in this request.";e&&e.length>0&&(r=`The bindings you have access to are:
53
53
 
54
54
  ${e.map(({readableBinding:o})=>`- $("${o}")`).join(`
55
55
  `)}`);let n="You do not have access to any snippets in this request.";return t.length>0&&(n=`The snippets you have access to are:
@@ -144,7 +144,7 @@ a variable, it will be provided to you as a binding.
144
144
 
145
145
  ${n}
146
146
 
147
- ${r}`)}a(Lu,"generateJs");function ku(){let e=`
147
+ ${r}`)}a(Pu,"generateJs");function Mu(){let e=`
148
148
  You are generating Budibase table schemas from user prompts.
149
149
  Always return at least 2 tables, and define only one side of relationships using a link field.
150
150
  Exclude id, created_at, and updated_at (Budibase adds them).
@@ -152,10 +152,10 @@ Include a variety of column types: text, dropdown, date, number.
152
152
  Add at least one formula column, one attachment, and one multi-attachment column across the tables.
153
153
  Budibase handles reverse relationships and many-to-many links \u2014 never define join tables or reverse fields.
154
154
  You may specify foreignColumnName, but do not create that field manually.
155
- `;return new se().addSystemMessage(e)}a(ku,"generateTables");function Mu(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new se().addSystemMessage(e)}a(Mu,"generateAIColumns");function Nu(){let e=`
155
+ `;return new se().addSystemMessage(e)}a(Mu,"generateTables");function Nu(){let e='Given the generated schema, add only one field of type "AI" to relevant tables to add value to the Budibase user.';return new se().addSystemMessage(e)}a(Nu,"generateAIColumns");function Bu(){let e=`
156
156
  For each table, populate the data field with realistic-looking sample records.
157
157
  Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and ensure values are unique across rows.
158
- `;return new se().addSystemMessage(e)}a(Nu,"generateData");function DB(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
158
+ `;return new se().addSystemMessage(e)}a(Bu,"generateData");function DB(e){return`You are a helpful support agent who uses workflows to resolve user issues efficiently.
159
159
 
160
160
  - The user will ask support queries.
161
161
  - Your replies MUST be short, concise, and directly answer the user's question as quickly and clearly as possible.
@@ -172,13 +172,13 @@ Avoid placeholder values like "foo" or "bar". Use real names, emails, etc., and
172
172
  ${JSON.stringify(e)}
173
173
  \`\`\``}a(DB,"agentSystemPrompt");function kB(){return`You will be provided with a set of history, a conversation between a user and an AI. Using this
174
174
  information generate a title for the conversation, this should start with a capital letter and MUST be
175
- less than five words.`}a(kB,"agentHistoryTitleSystemPrompt");var Ka=require("@budibase/backend-core"),vI=require("@budibase/shared-core");var _t=require("@budibase/types"),EI=require("@budibase/backend-core");function Bu(e){let t=[],r=[];for(let n of e.tables){let o=n.schema.reduce((s,i)=>{if(i.type===_t.FieldType.LINK){if(!r.includes(i.relationshipId)){let u={[_t.RelationshipType.MANY_TO_ONE]:_t.RelationshipType.ONE_TO_MANY,[_t.RelationshipType.ONE_TO_MANY]:_t.RelationshipType.MANY_TO_ONE,[_t.RelationshipType.MANY_TO_MANY]:_t.RelationshipType.MANY_TO_MANY},{reverseFieldName:c,relationshipId:f,...g}=i;s[i.name]={...g,fieldName:c,relationshipType:u[i.relationshipType]},r.push(f)}}else s[i.name]=i;return s},{});t.push({_id:EI.docIds.generateTableID(),name:n.name,primaryDisplay:n.primaryDisplay,schema:o})}return t}a(Bu,"aiTableResponseToTableSchema");function Gu(e,t){let r=[];for(let n of e)r.push({...n,schema:{...n.schema,...t[n.name]?.reduce((o,s)=>(o[s.name]=s,o),{})}});return r}a(Gu,"appendAIColumns");var L=require("@budibase/types"),T=require("zod");var Oe=T.z.object({name:T.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),Fu=Oe.extend({type:T.z.literal(L.FieldType.LINK),tableId:T.z.string().describe("This must match one of the generated table names"),reverseFieldName:T.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:T.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),MB=T.z.array(T.z.union([Oe.extend({type:T.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.LONGFORM]),constraints:T.z.object({presence:T.z.boolean()}).optional().nullable()}),Fu.extend({relationshipType:T.z.enum([L.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Fu.extend({relationshipType:T.z.enum([L.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Fu.extend({relationshipType:T.z.enum([L.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Oe.extend({type:T.z.literal(L.FieldType.OPTIONS),constraints:T.z.object({inclusion:T.z.array(T.z.string()).describe("The options for the field"),presence:T.z.boolean()})}).describe("A single option from closed set of options"),Oe.extend({type:T.z.literal(L.FieldType.ARRAY),constraints:T.z.object({inclusion:T.z.array(T.z.string()).describe("The options for the field"),presence:T.z.boolean(),type:T.z.literal(L.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),Oe.extend({type:T.z.literal(L.FieldType.FORMULA),formula:T.z.string().describe(`
175
+ less than five words.`}a(kB,"agentHistoryTitleSystemPrompt");var Va=require("@budibase/backend-core"),RI=require("@budibase/shared-core");var _t=require("@budibase/types"),EI=require("@budibase/backend-core");function Gu(e){let t=[],r=[];for(let n of e.tables){let o=n.schema.reduce((s,i)=>{if(i.type===_t.FieldType.LINK){if(!r.includes(i.relationshipId)){let u={[_t.RelationshipType.MANY_TO_ONE]:_t.RelationshipType.ONE_TO_MANY,[_t.RelationshipType.ONE_TO_MANY]:_t.RelationshipType.MANY_TO_ONE,[_t.RelationshipType.MANY_TO_MANY]:_t.RelationshipType.MANY_TO_MANY},{reverseFieldName:c,relationshipId:f,...g}=i;s[i.name]={...g,fieldName:c,relationshipType:u[i.relationshipType]},r.push(f)}}else s[i.name]=i;return s},{});t.push({_id:EI.docIds.generateTableID(),name:n.name,primaryDisplay:n.primaryDisplay,schema:o})}return t}a(Gu,"aiTableResponseToTableSchema");function Fu(e,t){let r=[];for(let n of e)r.push({...n,schema:{...n.schema,...t[n.name]?.reduce((o,s)=>(o[s.name]=s,o),{})}});return r}a(Fu,"appendAIColumns");var L=require("@budibase/types"),T=require("zod");var Oe=T.z.object({name:T.z.string().describe("A human readable name for the field. It MUST be alpha-numeric and capitalised.")}),Wu=Oe.extend({type:T.z.literal(L.FieldType.LINK),tableId:T.z.string().describe("This must match one of the generated table names"),reverseFieldName:T.z.string().describe("Only the *name* of the field that will appear in the foreign table. Budibase creates this automatically. Do not define the column yourself."),relationshipId:T.z.string().describe("The ID of the relationship. It must be used in pairs, paring many-to-ones and one-to-manys, or many-to-manys with each other.")}),MB=T.z.array(T.z.union([Oe.extend({type:T.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.LONGFORM]),constraints:T.z.object({presence:T.z.boolean()}).optional().nullable()}),Wu.extend({relationshipType:T.z.enum([L.RelationshipType.MANY_TO_ONE])}).describe("Many-to-one relationship, where the current table is the 'many' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Wu.extend({relationshipType:T.z.enum([L.RelationshipType.ONE_TO_MANY])}).describe("One-to-many relationship, where the current table is the 'one' side. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Wu.extend({relationshipType:T.z.enum([L.RelationshipType.MANY_TO_MANY])}).describe("Many to many relationship. Defines the initiating side of the relationship. Only this side should be defined. The reverse column will be created automatically."),Oe.extend({type:T.z.literal(L.FieldType.OPTIONS),constraints:T.z.object({inclusion:T.z.array(T.z.string()).describe("The options for the field"),presence:T.z.boolean()})}).describe("A single option from closed set of options"),Oe.extend({type:T.z.literal(L.FieldType.ARRAY),constraints:T.z.object({inclusion:T.z.array(T.z.string()).describe("The options for the field"),presence:T.z.boolean(),type:T.z.literal(L.JsonFieldSubType.ARRAY)}).describe("Multiple selected options from closed set of options")}),Oe.extend({type:T.z.literal(L.FieldType.FORMULA),formula:T.z.string().describe(`
176
176
  A JavaScript expression using only previously defined fields.
177
177
  Reference fields using $("Field name"). Must end with: return ...
178
178
  Example: return $("Score") + $("Weight")
179
- `),responseType:T.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.DATETIME])}).describe("Define these types after the other types"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean()}).describe("A datetime field, storing date and time"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),timeOnly:T.z.literal(!0)}).describe("A time only field"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),dateOnly:T.z.literal(!0)}).describe("A date only field"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Single image column"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENTS),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),Wu=T.z.object({tables:T.z.array(T.z.object({name:T.z.string(),schema:MB,primaryDisplay:T.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function $u(e){let t=T.z.object({});for(let r of e){let n=Object.values(r.schema),o=[Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.TRANSLATE),column:T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name)).describe("The columns to translate"),language:T.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.CATEGORISE_TEXT),columns:T.z.array(T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM,L.FieldType.BOOLEAN,L.FieldType.NUMBER,L.FieldType.DATETIME].includes(s.type)).map(s=>s.name))).describe("The columns to be used as context"),categories:T.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];n.some(s=>s.type===L.FieldType.LONGFORM)&&o.push(Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.SUMMARISE_TEXT),columns:T.z.array(T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:T.z.array(T.z.union(o))})}return t}a($u,"aiColumnSchemas");var X=require("zod"),RI=require("@budibase/shared-core"),Q=require("@budibase/types");function ju(e){let t=X.z.object({});for(let r of e){let n={_id:X.z.string().describe("Unique ID for the row")},o=X.z.union([X.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),X.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),s=X.z.object({fileName:X.z.string(),extension:X.z.enum([".pdf",".txt"]),content:X.z.string().describe("Random content for the file")});for(let i of Object.values(r.schema)){let{type:u}=i;switch(u){case Q.FieldType.STRING:case Q.FieldType.LONGFORM:n[i.name]=X.z.string();break;case Q.FieldType.NUMBER:case Q.FieldType.BIGINT:n[i.name]=X.z.number();break;case Q.FieldType.BOOLEAN:n[i.name]=X.z.boolean();break;case Q.FieldType.DATETIME:n[i.name]=X.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case Q.FieldType.ATTACHMENT_SINGLE:i.subtype===Q.AttachmentSubType.IMAGE?n[i.name]=o:n[i.name]=s;break;case Q.FieldType.ATTACHMENTS:i.subtype===Q.AttachmentSubType.IMAGE?n[i.name]=X.z.array(o):n[i.name]=X.z.array(s),n[i.name]=n[i.name].describe("Between 2 and 5 items.");break;case Q.FieldType.OPTIONS:n[i.name]=X.z.enum(i.constraints.inclusion);break;case Q.FieldType.LINK:{let c=X.z.string().describe(`Match one of the _ids created for table "${i.tableId}"`);i.relationshipType===Q.RelationshipType.ONE_TO_MANY?n[i.name]=X.z.array(c).describe("Array with a single item"):i.relationshipType===Q.RelationshipType.MANY_TO_MANY&&(n[i.name]=X.z.array(c).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case Q.FieldType.ARRAY:n[i.name]=X.z.array(X.z.enum(i.constraints.inclusion));break;case Q.FieldType.AI:case Q.FieldType.AUTO:case Q.FieldType.SIGNATURE_SINGLE:case Q.FieldType.BB_REFERENCE:case Q.FieldType.JSON:case Q.FieldType.FORMULA:case Q.FieldType.INTERNAL:case Q.FieldType.BARCODEQR:case Q.FieldType.BB_REFERENCE_SINGLE:break;default:throw RI.utils.unreachable(u)}}t=t.extend({[r.name]:X.z.array(X.z.object(n))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
179
+ `),responseType:T.z.enum([L.FieldType.STRING,L.FieldType.NUMBER,L.FieldType.BOOLEAN,L.FieldType.DATETIME])}).describe("Define these types after the other types"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean()}).describe("A datetime field, storing date and time"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),timeOnly:T.z.literal(!0)}).describe("A time only field"),Oe.extend({type:T.z.literal(L.FieldType.DATETIME),ignoreTimezones:T.z.boolean(),dateOnly:T.z.literal(!0)}).describe("A date only field"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Single image column"),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENT_SINGLE)}).describe("Single attachment column. It stores a single document: pdf, word, etc. Use an appropriate name for the column, like 'Invoice', 'Document', etc."),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENTS),subtype:T.z.literal(L.AttachmentSubType.IMAGE)}).describe("Multiple images column. Use an appropiate name for the columns, like 'Gallery', 'Photos', etc."),Oe.extend({type:T.z.literal(L.FieldType.ATTACHMENTS)}).describe("Multiple attachments column. It might hold different kind of documents mixed up: pdf, txt, etc. Use an appropiate name for the columns, like 'Invoices', 'Documents', 'Attachments', etc.")])),$u=T.z.object({tables:T.z.array(T.z.object({name:T.z.string(),schema:MB,primaryDisplay:T.z.string().describe("The column will be used as display, so pick the clearer option. This must match EXACTLY one of the created fields names in the schema.")}))});function ju(e){let t=T.z.object({});for(let r of e){let n=Object.values(r.schema),o=[Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.TRANSLATE),column:T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name)).describe("The columns to translate"),language:T.z.string()}).describe("This column will be autogenerated via AI to translate one column. Use it for reasonable cases, like translating descriptions or similar."),Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.CATEGORISE_TEXT),columns:T.z.array(T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM,L.FieldType.BOOLEAN,L.FieldType.NUMBER,L.FieldType.DATETIME].includes(s.type)).map(s=>s.name))).describe("The columns to be used as context"),categories:T.z.string().describe("CSV list of categories")}).describe("This column will be autogenerated via AI to categorise a row based on one or many columns.")];n.some(s=>s.type===L.FieldType.LONGFORM)&&o.push(Oe.extend({type:T.z.literal(L.FieldType.AI),operation:T.z.literal(L.AIOperationEnum.SUMMARISE_TEXT),columns:T.z.array(T.z.enum(n.filter(s=>[L.FieldType.STRING,L.FieldType.LONGFORM].includes(s.type)).map(s=>s.name))).describe("Columns, from the current table, to be passed in the context. Use at least one.")}).describe("This column will be autogenerated via AI to summarise one or many columns.")),t=t.extend({[r.name]:T.z.array(T.z.union(o))})}return t}a(ju,"aiColumnSchemas");var X=require("zod"),vI=require("@budibase/shared-core"),Q=require("@budibase/types");function Qu(e){let t=X.z.object({});for(let r of e){let n={_id:X.z.string().describe("Unique ID for the row")},o=X.z.union([X.z.literal("https://picsum.photos/600/600").describe("For profile pictures and similar"),X.z.literal("https://picsum.photos/1920/1080").describe("For anything else")]),s=X.z.object({fileName:X.z.string(),extension:X.z.enum([".pdf",".txt"]),content:X.z.string().describe("Random content for the file")});for(let i of Object.values(r.schema)){let{type:u}=i;switch(u){case Q.FieldType.STRING:case Q.FieldType.LONGFORM:n[i.name]=X.z.string();break;case Q.FieldType.NUMBER:case Q.FieldType.BIGINT:n[i.name]=X.z.number();break;case Q.FieldType.BOOLEAN:n[i.name]=X.z.boolean();break;case Q.FieldType.DATETIME:n[i.name]=X.z.string().describe(`ISO datetime. Use realistic dates, based on today's date, ${new Date().toISOString()}`);break;case Q.FieldType.ATTACHMENT_SINGLE:i.subtype===Q.AttachmentSubType.IMAGE?n[i.name]=o:n[i.name]=s;break;case Q.FieldType.ATTACHMENTS:i.subtype===Q.AttachmentSubType.IMAGE?n[i.name]=X.z.array(o):n[i.name]=X.z.array(s),n[i.name]=n[i.name].describe("Between 2 and 5 items.");break;case Q.FieldType.OPTIONS:n[i.name]=X.z.enum(i.constraints.inclusion);break;case Q.FieldType.LINK:{let c=X.z.string().describe(`Match one of the _ids created for table "${i.tableId}"`);i.relationshipType===Q.RelationshipType.ONE_TO_MANY?n[i.name]=X.z.array(c).describe("Array with a single item"):i.relationshipType===Q.RelationshipType.MANY_TO_MANY&&(n[i.name]=X.z.array(c).describe("Array with a one or many items. You can repeat the same ids between rows"))}break;case Q.FieldType.ARRAY:n[i.name]=X.z.array(X.z.enum(i.constraints.inclusion));break;case Q.FieldType.AI:case Q.FieldType.AUTO:case Q.FieldType.SIGNATURE_SINGLE:case Q.FieldType.BB_REFERENCE:case Q.FieldType.JSON:case Q.FieldType.FORMULA:case Q.FieldType.INTERNAL:case Q.FieldType.BARCODEQR:case Q.FieldType.BB_REFERENCE_SINGLE:break;default:throw vI.utils.unreachable(u)}}t=t.extend({[r.name]:X.z.array(X.z.object(n))}).describe(`Each table should include at least a few items (min 3, max 18). The number of items should not be evenly distributed. Instead, follow natural relationships and usage patterns based on the tables nature. For example:
180
180
  1. If we have posts and comments, there should be more posts than users, and more comments than posts.
181
181
  2. If it's a ticketing system, there may be more tickets than users, and some users may have submitted several tickets.
182
182
  3. In a CRM, there are fewer users than customers, and customers may have many deals.
183
- 4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}a(ju,"tableDataStructuredOutput");var Va=F(require("dd-trace"));var Qu=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Va.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(ku().addUserMessage(t).withFormat(Wu));try{let n=JSON.parse(r.message);return Bu(n)}catch{throw new Ka.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Va.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Va.default.trace("llm.generateData",async()=>{let n=await this.llm.prompt(Nu().addUserMessage(t).withFormat(ju(r)));try{return JSON.parse(n.message)}catch{throw new Ka.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static{a(this,"TableGeneration")}static async init(t){let r=await Qa({model:"gpt-5-mini",maxTokens:5e3});if(!r)throw new Ka.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Va.default.trace("tableGeneration.generate",async n=>{let o=await this.generateTables(t,r);return n.addTags({table_count:o.length}),o})}async generateTables(t,r){let n=await this.llmFunctions.getTableStructure(t),o=this.llmFunctions.generateAIColumns(t,n).then(u=>this.delegates.generateTablesDelegate(Gu(n,u))),s=await this.llmFunctions.generateData(t,n),i=await o;return await this.delegates.generateDataDelegate(s,r,vI.utils.toMap("name",n)),i}async generateAIColumns(t,r){let n=await this.llm.prompt(Mu().addUserMessage(`This is the initial user prompt that generated the given schema:
184
- "${t}"`).withFormat($u(r)));try{return JSON.parse(n.message)}catch{throw new Ka.HTTPError("Error generating columns",500)}}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
183
+ 4. In a project management tool, projects might have many tasks, and tasks might have multiple comments.`)}return t}a(Qu,"tableDataStructuredOutput");var Ha=F(require("dd-trace"));var Ku=class e{constructor(t,r){this.llmFunctions={getTableStructure:async t=>Ha.default.trace("llm.getTableStructure",async()=>{let r=await this.llm.prompt(Mu().addUserMessage(t).withFormat($u));try{let n=JSON.parse(r.message);return Gu(n)}catch{throw new Va.HTTPError("Error generating tables",500)}}),generateAIColumns:(t,r)=>Ha.default.trace("llm.generateAIColumns",async()=>this.generateAIColumns(t,r)),generateData:async(t,r)=>Ha.default.trace("llm.generateData",async()=>{let n=await this.llm.prompt(Bu().addUserMessage(t).withFormat(Qu(r)));try{return JSON.parse(n.message)}catch{throw new Va.HTTPError("Error generating data",500)}})};this.llm=t,this.delegates=r}static{a(this,"TableGeneration")}static async init(t){let r=await Ka({model:"gpt-5-mini",maxTokens:5e3});if(!r)throw new Va.HTTPError("LLM not available",422);return new e(r,t)}async generate(t,r){return Ha.default.trace("tableGeneration.generate",async n=>{let o=await this.generateTables(t,r);return n.addTags({table_count:o.length}),o})}async generateTables(t,r){let n=await this.llmFunctions.getTableStructure(t),o=this.llmFunctions.generateAIColumns(t,n).then(u=>this.delegates.generateTablesDelegate(Fu(n,u))),s=await this.llmFunctions.generateData(t,n),i=await o;return await this.delegates.generateDataDelegate(s,r,RI.utils.toMap("name",n)),i}async generateAIColumns(t,r){let n=await this.llm.prompt(Nu().addUserMessage(`This is the initial user prompt that generated the given schema:
184
+ "${t}"`).withFormat(ju(r)));try{return JSON.parse(n.message)}catch{throw new Va.HTTPError("Error generating columns",500)}}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});