!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Gubu=e()}}((function(){var e={},t={};Object.defineProperty(t,"__esModule",{value:!0}),t.Gubu=void 0;const n=Symbol.for("gubu$"),r={gubu$:n,v$:"9.0.0"},l=/^[A-Z]/,{toString:i}=Object.prototype,o="gubu",s="name",u="nan",a="never",c="number",f="required",p="array",h="function",v="object",d="string",g="boolean",y="undefined",m="any",b="list",$="instance",k="null",x="type",I="closed",S="shape",j="check",w="regexp",N="String",O="Number",V="Boolean",A="Object",R="Array",D="Function",E="Value",C="Above",G="All",T="Any",B="Below",F="Check",J="Child",W="Exact",M="Max",P="Min",z="One",L="Open",_="Required",q="Some",H=" for property ",U='"$PATH"',K='"$VALUE"',Z={[N]:String,[O]:Number,[V]:Boolean,[A]:Object,[R]:Array,["Symbol"]:Symbol,[D]:Function},Q=e=>Object.keys(e),X=(e,t,n)=>Object.defineProperty(e,t,n),Y=e=>Array.isArray(e),ee=e=>JSON.parse(e),te=(e,t)=>JSON.stringify(e,t);class ne{constructor(e,t,n,r){this.match=!1,this.dI=0,this.nI=2,this.cI=-1,this.pI=0,this.sI=-1,this.valType=a,this.isRoot=!1,this.key="",this.type=a,this.stop=!0,this.nextSibling=!0,this.fromDflt=!1,this.ignoreVal=void 0,this.curerr=[],this.err=[],this.parents=[],this.keys=[],this.ancestors=[],this.path=[],this.root=e,this.vals=[e,-1],this.node=t,this.nodes=[t,-1],this.ctx=n||{},this.match=!!r}next(){this.stop=!1,this.fromDflt=!1,this.ignoreVal=void 0,this.isRoot=0===this.pI,this.check=void 0;let e=this.nodes[this.pI];for(this.ancestors[this.dI]=this.node;+e;)this.dI--,this.ctx.log&&-1e.text).join("\n")),this.gubu=!0,this.name="GubuError",this.code=e,this.gname=t,this.desc=()=>({name:"GubuError",code:e,err:n,ctx:r}),this.stack=null===(l=this.stack)||void 0===l?void 0:l.replace(/.*\/gubu\/gubu\.[tj]s.*\n/g,""),this.props=n.map(e=>{var t;return{path:e.path,what:e.why,type:null===(t=e.node)||void 0===t?void 0:t.t,value:e.value}})}toJSON(){return{...this,err:this.desc().err,name:this.name,message:this.message}}}const le={Array:!0,BigInt:!0,Boolean:!0,Function:!0,Number:!0,Object:!0,String:!0,Symbol:!0},ie={string:"",number:0,boolean:!1,object:{},array:[],symbol:Symbol(""),bigint:BigInt(0),null:null,regexp:/.*/};function oe(e,t,o){var s,a,f,g;if(ue===e)e=void 0;else if(null!=e&&(null===(s=e.$)||void 0===s?void 0:s.gubu$)){if(n===e.$.gubu$)return e.d=null==t?e.d:t,e;if(!0===e.$.gubu$){let r={...e};return r.$={v$:"9.0.0",...r.$,gubu$:n},r.v=null!=r.v&&v===typeof r.v?{...r.v}:r.v,r.t=r.t||typeof r.v,h===r.t&&le[r.v.name]&&(r.t=r.v.name.toLowerCase(),r.v=Qe(ie[r.t]),r.f=r.v),r.r=!!r.r,r.p=!!r.p,r.d=null==t?null==r.d?-1:r.d:t,r.b=r.b||[],r.a=r.a||[],r.u=r.u||{},r.m=r.m||o||{},r}}let b=null===e?k:typeof e;b=y===b?m:b;let x,I=e,S=I,j=!1,N={},O=[],V=[];if(v===b)S=void 0,Y(I)?(b=p,1===I.length&&(x=I[0],I=[])):null!=I&&Function!==I.constructor&&Object!==I.constructor&&null!=I.constructor?("[object RegExp]"===i.call(I)?(b=w,j=!0):(b=$,N.n=I.constructor.name,N.i=I.constructor),S=I):0===Q(I).length&&(x=ye());else if(h===b)if(le[e.name])b=e.name.toLowerCase(),j=!0,I=Qe(ie[b]),S=I,A===e.name&&(x=ye());else if(I.gubu===r||!0===(null===(a=I.$)||void 0===a?void 0:a.gubu)){let e=I.node?I.node():I;b=e.t,I=e.v,S=I,j=e.r,N={...e.u},O=[...e.a],V=[...e.b]}else D===I.constructor.name&&l.test(I.name)&&(b=$,j=!0,N.n=null===(g=null===(f=I.prototype)||void 0===f?void 0:f.constructor)||void 0===g?void 0:g.name,N.i=I);else c===b&&isNaN(I)?b=u:d===b&&""===I&&(N.empty=!0);let R=null==I||v!==b&&p!==b?I:{...I};return{$:r,t:b,v:R,f:S,n:null!=R&&v===typeof R?Q(R).length:0,c:x,r:j,p:!1,d:null==t?-1:t,k:[],e:!0,u:N,a:O,b:V,m:o||{},[Symbol.for("nodejs.util.inspect.custom")](){const e={...this};return delete e.$,JSON.stringify(e,(e,t)=>"function"!=typeof t||Ye[t.name]||Z[t.name]?t:t.name).replace(/"/g,"").replace(/,/g," ")}}}function se(e,t){var n;const r=[[{},"root",e,t]];for(let l=0;l{var n;(null===(n=e[1].$)||void 0===n?void 0:n.gubu$)||r.push([t.v,e[0],e[1],t.d+1])})}return r[0][0].root}function ue(t,l){const i=null==l?{}:l;i.name=null==i.name?"G$"+(""+Math.random()).substring(2,8):""+i.name;let o=i.meta=i.meta||{};o.active=!0===o.active||!1,o.suffix=d==typeof o.suffix?o.suffix:"$$";let s=i.keyexpr=i.keyexpr||{};s.active=!1!==s.active;let u=i.valexpr=i.valexpr||{};u.active=!0===u.active,u.keymark=d==typeof u.keymark?u.keymark:o.suffix;let c,h=oe(t,0),g="";function N(e,t,n){var r,l,c;const g=null===(r=null==t?void 0:t.skip)||void 0===r?void 0:r.depth,N=Array.isArray(null===(l=null==t?void 0:t.skip)||void 0===l?void 0:l.depth)?t.skip.depth:null,O=Array.isArray(null===(c=null==t?void 0:t.skip)||void 0===c?void 0:c.keys)?t.skip.keys:null,V=new ne(e,h,t,n);for(;V.next(),!V.stop;){let t=V.node,n=!1,r=!1,l=!!(t.d===g||N&&N.includes(t.d)||O&&1===t.d&&O.includes(V.key))||t.p;if(0void 0===t.v[e]);if(0!isNaN(+e)),i=0N(e,t=t||{},!0),O.error=(e,t)=>{let n=t||{};return n.err=n.err||[],N(e,n,!1),n.err},O.spec=()=>{O(void 0,{err:!1});const e=Ze(h,!1,!0,{key:Object.keys(Z)},(e,t)=>n===t||t);return ee(e)},O.node=()=>(O.spec(),h),O.stringify=(...e)=>{const t=O.jsonify();return""===g?g="string"==typeof t?t.replace(/^"(.*)"$/,"$1"):JSON.stringify(t,...e):g},O.jsonify=()=>null==c?c=Ke(O.node()):c,O.toString=function(){return g=""===g?this.stringify():g,`[Gubu ${i.name} ${he(g)}]`},e.inspect&&e.inspect.custom&&(O[e.inspect.custom]=O.toString),O.gubu=r,O.spec(),O}function ae(e,t){var n,r;let l,i=!1;"string"==typeof e&&(e={src:e}),e.keymark=e.keymark||"$$";const o=null===(n=null==t?void 0:t.$)||void 0===n?void 0:n.gubu$;if(e.i=e.i||0,null==e.tokens){l=null!=e.val?oe(e.val,(e.d||0)+1,e.meta):void 0,i=!0,e.tokens=[];let n=/\s*,?\s*([)(\.]|"(\\.|[^"\\])*"|\/(\\.|[^\/\\])*\/[a-z]?|[^)(,.\s]+)\s*/g,r=null;for(;r=n.exec(e.src);)e.tokens.push(r[1]);if(!o){let n=0,r=!1;for(;n{var r;return e[n[0]]=((null===(r=t.valexpr)||void 0===r?void 0:r.keymark)||"$$")===n[0]?n[1]:ce(n[1],t,!1),e},{}):p===l&&(r=e.map(e=>ce(e,t,!1))),n?(t.valexpr=t.valexpr||{},t.valexpr.active=!0,et(r,t)):r}function fe(e,t){var n;let r,l={},i=!1;try{i=!(void 0!==t.val||!(null===(n=e.gubu$)||void 0===n?void 0:n.Check))||(t.check=e,e(t.val,l,t))}catch(s){r=s}let o=Y(l.err)?0null!=e).map(e=>(e.path=null==e.path?i:e.path,e.mark=null==e.mark?2010:e.mark,e)));else{let l=e.name;null!=l&&""!=l||(l=he(e.toString().replace(/[ \t\r\n]+/g," "))),t.curerr.push(Ue(n,t,1045,void 0,{thrown:r},l))}l.done=null==l.done||l.done}return l.hasOwnProperty("uval")?(t.updateVal(l.uval),t.ignoreVal=!1):void 0===l.val||Number.isNaN(l.val)||(t.updateVal(l.val),t.ignoreVal=!1),void 0!==l.node&&(t.node=l.node),void 0!==l.type&&(t.type=l.type),l}function pe(e){return e.path.slice(1,e.dI+1).filter(e=>null!=e).join(".")}function he(e,t){let n=String(e),r=null==t||isNaN(t)?30:t<0?0:~~t,l=null==e?0:n.length,i=null==e?"":n.substring(0,l);return i=ret(e));t.u.list=n.map(e=>e.node());const r=function(t,r,l){let i=!0;for(let e of n){let n={...l.ctx,err:[]};e(t,n),0Ze(e,!0)).join(", "))]),i};return r.n=G,r.a=e,t.b.push(r),t},Ne=function(...e){let t=qe(this);t.t=b,t.r=!0;let n=e.map(e=>et(e));t.u.list=n.map(e=>e.node());const r=function(t,r,l){let i=!1;for(let e of n){let n={...l.ctx,err:[]},o=e.match(t,n);o&&(r.val=e(t,n)),i||(i=o)}return i||(r.why=q,r.err=[He(l,E+" "+K+H+U+" does not satisfy any of: "+e.map(e=>Ze(e,!0)).join(", "))]),i};return r.n=q,r.a=e,t.b.push(r),t},Oe=function(...e){let t=qe(this);t.t=b,t.r=!0;let n=e.map(e=>et(e));t.u.list=n.map(e=>e.node());const r=function(t,r,l){let i=0;for(let e of n){let n={...l.ctx,err:[]};if(e.match(t,n)){i++,r.val=e(t,n);break}}return 1!==i&&(r.why=z,r.err=[He(l,E+" "+K+H+U+" does not satisfy one of: "+e.map(e=>Ze(e,!0)).join(", "))]),!0};return r.n=z,r.a=e,t.b.push(r),t},Ve=function(...e){const t=qe(this),n=function(t,n,r){for(let l=0;lZe(e,!0)).join(", ")),n.done=!0,!1};return n.n=W,n.a=e,n.s=()=>W+"("+e.map(e=>Ze(e,!0)).join(",")+")",t.b.push(n),t},Ae=function(e,t){let n=qe(this,t);return n.b.push(e),n},Re=function(e,t){let n=qe(this,t);return n.a.push(e),n},De=function(e,t){let n=qe(this,t);if(n.r=!0,h===typeof e){let t=e;t.gubu$=t.gubu$||{},t.gubu$.Check=!0,t.s=()=>F+"("+Ze(e,!0)+")",n.b.push(e),n.t=j}else if(v===typeof e){if(Object.prototype.toString.call(e).includes("RegExp")){let t=t=>null!=t&&!Number.isNaN(t)&&!!String(t).match(e);X(t,s,{value:String(e)}),X(t,"gubu$",{value:{Check:!0}}),t.s=()=>F+"("+Ze(e,!0)+")",n.b.push(t),n.t=j}}else d===typeof e&&(n.t=e);if(void 0!==t){const e=oe(t);n.t=e.t}return n},Ee=function(e){let t=qe(this,e);return p===t.t&&void 0!==t.c&&0===t.n&&(t.v=[t.c]),t.c=void 0,t},Ce=function(e,t){let n=qe(this,t),r=d===typeof e?e:(v===typeof e&&e||{}).name;return null!=r&&""!=r&&n.b.push((function(e,t,n){return(n.ctx.ref=n.ctx.ref||{})[r]=n.node,!0})),n},Ge=function(e,t){let n=qe(this,t),r=v===typeof e&&e||{},l=d===typeof e?e:r.name,i=!!r.fill;return null!=l&&""!=l&&n.b.push((function(e,t,n){if(void 0!==e||i){let e=n.ctx.ref=n.ctx.ref||{};if(void 0!==e[l]){let n={...e[l]};n.t=n.t||a,t.node=n,t.type=n.t}}return!0})),n},Te=function(e,t){let n=qe(this,t),r=v===typeof e&&e||{},l=d===typeof e?e:r.name,i=g===typeof r.keep?r.keep:void 0,o=Y(r.claim)?r.claim:[];if(null!=l&&""!=l){let e=(e,t,n)=>{if(void 0===e&&0(n.parent[l]=e,n.match||i||n.key===l||Y(n.parent)&&!1!==i||(delete n.parent[n.key],t.done=!0),n.ctx.Rename=n.ctx.Rename||{},n.ctx.Rename.fromDflt=n.ctx.Rename.fromDflt||{},n.ctx.Rename.fromDflt[l]={yes:n.fromDflt,key:n.key,dval:n.node.v,node:n.node},!0);X(t,s,{value:"Rename:"+l}),n.a.push(t)}return n},Be=function(e,t){let n=qe(this,t);return n.c=oe(e),void 0===n.v&&(n.t="object",n.v={},n.f={}),n},Fe=function(e,t){let n=qe(this,t||[]);return n.t="array",n.c=oe(e),n.m=n.m||{},n.m.rest=!0,n},Je=function(e,t){let n=oe(Z[e]||e),r=qe(this,t);return r!==n&&(r.t=n.t,r.r=n.r,r.p=n.p,r.v=n.v),r};function We(e,t,n,r,l){let i=qe(e,n);t=+t;let o=function(e,n,r){return l(function(e){return c===typeof e?e:c===typeof(null==e?void 0:e.length)?e.length:null!=e&&v===typeof e?Q(e).length:NaN}(e),t,e,n,r)};return Object.defineProperty(o,s,{value:r}),o.n=r,o.a=[t],o.s=()=>r+"("+t+")",o[Symbol.for("nodejs.util.inspect.custom")]=o.s(),o.toJSON=()=>o.s(),i.b.push(o),i}const Me=function(e,t){return We(this,e,t,P,(e,t,n,r,l)=>{if(t<=e)return!0;l.checkargs={min:1};let i=c===typeof n?"":"length ";return r.err=He(l,E+" "+K+H+U+` must be a minimum ${i}of ${t} (was ${e}).`),!1})},Pe=function(e,t){return We(this,e,t,M,(e,t,n,r,l)=>{if(e<=t)return!0;let i=c===typeof n?"":"length ";return r.err=He(l,E+" "+K+H+U+` must be a maximum ${i}of ${t} (was ${e}).`),!1})},ze=function(e,t){return We(this,e,t,C,(e,t,n,r,l)=>{if(t{if(e{if(t===e)return!0;let i=c===typeof n?"":" in length";return r.err=He(l,E+" "+K+H+U+` must be exactly ${t}${i} (was ${e}).`),!1})};function qe(e,t){let n,r=null!=e&&(e.window===e||e.global===e);if(void 0!==e&&!r||void 0===t)if(void 0===e||r)n=oe(void 0);else if(void 0!==t){n=oe(t);let r=oe(e);void 0===n.v&&"list"!==n.t&&(n.v=r.v,n.t=r.t),["f","r","p","c","e","z"].map(e=>n[e]=void 0!==r[e]?r[e]:n[e]),n.u=Object.assign({...r.u},n.u),n.m=Object.assign({...r.m},n.m),n.a=r.a.concat(n.a),n.b=r.b.concat(n.b)}else n=oe(e);else n=oe(t);return n.Above?n:Object.assign(n,{Above:ze,After:Re,Any:ye,Before:Ae,Below:Le,Check:De,Child:Be,Closed:Ee,Default:xe,Define:Ce,Empty:Ie,Exact:Ve,Fault:me,Ignore:$e,Len:_e,Max:Pe,Min:Me,Never:Se,Open:de,Optional:ge,Refer:Ge,Rename:Te,Required:ve,Rest:Fe,Skip:be,Type:Je,String:()=>Je.call(n,String),Number:()=>Je.call(n,Number),Boolean:()=>Je.call(n,Boolean),Object:()=>Je.call(n,Object),Array:()=>Je.call(n,Array),Function:()=>Je.call(n,Function),Symbol:()=>Je.call(n,Symbol)})}function He(e,t,n,r){return Ue(n||j,e,4e3,t,r)}function Ue(e,t,n,r,l,i){var o;let s={key:t.key,type:t.node.t,node:t.node,value:t.val,path:pe(t),why:e,check:(null===(o=t.check)||void 0===o?void 0:o.name)||"none",args:t.checkargs||{},mark:n,text:"",use:l||{}},u=he((void 0===t.val?y:Ze(t.val,!1,!1,{key:[/\$$/]})).replace(/"/g,""),111);if(null==(r=r||t.node.z)||""===r){let n=u.startsWith("[")?p:u.startsWith("{")?v:null==t.val||c===typeof t.val&&isNaN(t.val)?"value":typeof t.val,r=u.startsWith("[")||Y(t.parents[t.pI])?"index":"property",o="is",h=null==l?void 0:l.k;h=Y(h)?(r=1t.s?"."+t.s(e):"").join(""),t}if(m===n){let n="";return e.r&&(n+=_),m==(null===(t=e.c)||void 0===t?void 0:t.t)&&(n+=(""===n?"":".")+L),n+=e.b.map(t=>t.s?"."+t.s(e):"").join(""),n.startsWith(".")&&(n=n.slice(1)),""===n&&(n=T),n}if(j===n){let t="";return t+=e.b.map(t=>t.s?"."+t.s(e):"").join(""),t.startsWith(".")&&(t=t.slice(1)),t}if(v===n){let t={};for(let n in e.v)t[n]=Ke(e.v[n]);return void 0!==e.c&&(r[e.c.t]?t.$$=J+"("+r[e.c.t]+")":"any"===e.c.t?t.$$=L:(t.$$=J+"($$child)",t.$$child=Ke(e.c))),0t.s?"."+t.s(e):"").join(""),t.$$.startsWith(".")&&(t.$$=t.$$.slice(1))),t.$$&&1===Object.keys(t).length&&t.$$.startsWith(J)?t.$$:t}if(b===n){let t={},n=0,r=e.u.list.map(e=>Ke(e)).map((e,r)=>v===typeof e?(t[r="$$ref"+n++]=e,r):e),l=(e.b[0].n||e.b[0].name)+"("+r.join(",")+")";return 0===n?l:{$$:l,...t}}if(p===n){let t=[];return void 0!==e.c?t[0]=Ke(e.c):t=Object.keys(e.v).reduce((t,n)=>(t[+n]=e.v[n],t),[]).map(e=>Ke(e)),t}if(w===n)return e.v.toString()}function Ze(e,t,r,l,o){let s;if(!r&&e&&e.$&&(n===e.$.gubu$||!0===e.$.gubu$))return e=JSON.stringify(Ke(e)),t&&(e="string"==typeof e?e.replace(/\\/g,"").replace(/"/g,""):""),e;try{s=te(e,(e,s)=>{var u,a,c,f,p,d;if(o&&(s=o(e,s)),(null===(u=null==l?void 0:l.key)||void 0===u?void 0:u.reduce((t,n)=>t||n===e||e.match(n),!1))||(null===(a=null==l?void 0:l.val)||void 0===a?void 0:a.reduce((t,n)=>t||n===s||e.match(n),!1)))s=void 0;else if(null!=s&&v===typeof s&&s.constructor&&A!==s.constructor.name&&R!==s.constructor.name){let e=i.call(s);s="[object RegExp]"===e||h===typeof s.toString?s.toString():s.constructor.name}else r||n!==(null===(c=null==s?void 0:s.$)||void 0===c?void 0:c.gubu$)?h===typeof s?s=h===typeof ue[s.name]&&isNaN(+e)||(null===(f=null==l?void 0:l.val)||void 0===f?void 0:f.reduce((e,t)=>e||t===s.name||s.name.match(t),!1))?void 0:null!=s.name&&""!==s.name?s.name:he(s.toString().replace(/[ \t\r\n]+/g," ")):"bigint"==typeof s?s=String(s.toString()):Number.isNaN(s)?s="NaN":!0===r||!0!==(null===(p=null==s?void 0:s.$)||void 0===p?void 0:p.gubu$)&&n!==(null===(d=null==s?void 0:s.$)||void 0===d?void 0:d.gubu$)||(s=JSON.stringify(Ke(s))):"number"===s.t||"string"===s.t||"boolean"===s.t?s=s.v:(s=Ke(s),s=JSON.stringify(s),t&&(s="string"==typeof s?s.replace(/\\/g,"").replace(/"/g,""):""));return s}),s=String(s)}catch(u){s=te(String(e))}return!0===t&&(s=s.replace(/^"/,"").replace(/"$/,"")),s}function Qe(e){return null==e||v!==typeof e?e:ee(te(e))}const Xe=e=>oe({...e,$:{gubu$:!0}}),Ye={Above:ze,After:Re,All:we,Any:ye,Before:Ae,Below:Le,Check:De,Child:Be,Closed:Ee,Default:xe,Define:Ce,Empty:Ie,Exact:Ve,Fault:me,Func:ke,Ignore:$e,Key:je,Len:_e,Max:Pe,Min:Me,Never:Se,One:Oe,Open:de,Optional:ge,Refer:Ge,Rename:Te,Required:ve,Skip:be,Some:Ne,Rest:Fe,Type:Je};if(y!==typeof window)for(let rt in Ye)X(Ye[rt],s,{value:rt});Object.assign(ue,{Gubu:ue,...Ye,...Object.entries(Ye).reduce((e,t)=>(e["G"+t[0]]=t[1],e),{}),isShape:e=>e&&r===e.gubu,G$:Xe,buildize:qe,makeErr:He,stringify:Ze,truncate:he,nodize:oe,expr:ae,build:ce,MakeArgu:tt}),X(ue,s,{value:o});const et=ue;t.Gubu=et;function tt(e){return function(t,n,r){let l=!1;d===typeof t&&(l=!0,r=n,n=t);const i=et(r=r||n,{name:e+(n=d===typeof n?" ("+n+")":"")}),o=i.node(),s=o.k;let u=t,a={},c=0,f=0;for(;cRe((function(e,n,r){if(0t;e--)o.v[s[e]].m.rest?a[s[e]].splice(o.v[s[e]].m.rest_pos+t-e,0,a[s[e-1]]):(r.vals[r.pI+e-t]=r.vals[r.pI+e-t-1],a[s[e]]=a[s[e-1]]);n.uval=void 0,n.done=!1}return!0}),e))(c),e.e=!1),c!==s.length-1||o.v[s[c]].m.rest||(o.v[s[c]]=Re((function(e,t,n){return!(s.length-f