md-runbook 0.0.0-stage → 0.19.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +58 -2
- package/cli.js +519 -0
- package/package.json +38 -4
package/cli.js
ADDED
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var Ll=Object.create;var wr=Object.defineProperty;var Nl=Object.getOwnPropertyDescriptor;var $l=Object.getOwnPropertyNames;var Gl=Object.getPrototypeOf,Ml=Object.prototype.hasOwnProperty;var Hl=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},Pl=(r,e)=>{for(var t in e)wr(r,t,{get:e[t],enumerable:!0})},ZB=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of $l(e))!Ml.call(r,s)&&s!==t&&wr(r,s,{get:()=>e[s],enumerable:!(n=Nl(e,s))||n.enumerable});return r};var Ce=(r,e,t)=>(t=r!=null?Ll(Gl(r)):{},ZB(e||!r||!r.__esModule?wr(t,"default",{value:r,enumerable:!0}):t,r)),_l=r=>ZB(wr({},"__esModule",{value:!0}),r);var pl=Hl((fl,hl)=>{var Cl=(function(){var r=function(E,x){var O=236,I=17,v=E,L=t[x],b=null,m=0,M=null,y=[],H={},z=function(A,S){m=v*4+17,b=(function(R){for(var $=new Array(R),G=0;G<R;G+=1){$[G]=new Array(R);for(var P=0;P<R;P+=1)$[G][P]=null}return $})(m),j(0,0),j(m-7,0),j(0,m-7),te(),ne(),se(A,S),v>=7&&ae(A),M==null&&(M=W(v,L,y)),De(M,S)},j=function(A,S){for(var R=-1;R<=7;R+=1)if(!(A+R<=-1||m<=A+R))for(var $=-1;$<=7;$+=1)S+$<=-1||m<=S+$||(0<=R&&R<=6&&($==0||$==6)||0<=$&&$<=6&&(R==0||R==6)||2<=R&&R<=4&&2<=$&&$<=4?b[A+R][S+$]=!0:b[A+R][S+$]=!1)},X=function(){for(var A=0,S=0,R=0;R<8;R+=1){z(!0,R);var $=s.getLostPoint(H);(R==0||A>$)&&(A=$,S=R)}return S},ne=function(){for(var A=8;A<m-8;A+=1)b[A][6]==null&&(b[A][6]=A%2==0);for(var S=8;S<m-8;S+=1)b[6][S]==null&&(b[6][S]=S%2==0)},te=function(){for(var A=s.getPatternPosition(v),S=0;S<A.length;S+=1)for(var R=0;R<A.length;R+=1){var $=A[S],G=A[R];if(b[$][G]==null)for(var P=-2;P<=2;P+=1)for(var q=-2;q<=2;q+=1)P==-2||P==2||q==-2||q==2||P==0&&q==0?b[$+P][G+q]=!0:b[$+P][G+q]=!1}},ae=function(A){for(var S=s.getBCHTypeNumber(v),R=0;R<18;R+=1){var $=!A&&(S>>R&1)==1;b[Math.floor(R/3)][R%3+m-8-3]=$}for(var R=0;R<18;R+=1){var $=!A&&(S>>R&1)==1;b[R%3+m-8-3][Math.floor(R/3)]=$}},se=function(A,S){for(var R=L<<3|S,$=s.getBCHTypeInfo(R),G=0;G<15;G+=1){var P=!A&&($>>G&1)==1;G<6?b[G][8]=P:G<8?b[G+1][8]=P:b[m-15+G][8]=P}for(var G=0;G<15;G+=1){var P=!A&&($>>G&1)==1;G<8?b[8][m-G-1]=P:G<9?b[8][15-G-1+1]=P:b[8][15-G-1]=P}b[m-8][8]=!A},De=function(A,S){for(var R=-1,$=m-1,G=7,P=0,q=s.getMaskFunction(S),Q=m-1;Q>0;Q-=2)for(Q==6&&(Q-=1);;){for(var oe=0;oe<2;oe+=1)if(b[$][Q-oe]==null){var ue=!1;P<A.length&&(ue=(A[P]>>>G&1)==1);var ee=q($,Q-oe);ee&&(ue=!ue),b[$][Q-oe]=ue,G-=1,G==-1&&(P+=1,G=7)}if($+=R,$<0||m<=$){$-=R,R=-R;break}}},de=function(A,S){for(var R=0,$=0,G=0,P=new Array(S.length),q=new Array(S.length),Q=0;Q<S.length;Q+=1){var oe=S[Q].dataCount,ue=S[Q].totalCount-oe;$=Math.max($,oe),G=Math.max(G,ue),P[Q]=new Array(oe);for(var ee=0;ee<P[Q].length;ee+=1)P[Q][ee]=255&A.getBuffer()[ee+R];R+=oe;var Ie=s.getErrorCorrectPolynomial(ue),Te=i(P[Q],Ie.getLength()-1),vn=Te.mod(Ie);q[Q]=new Array(Ie.getLength()-1);for(var ee=0;ee<q[Q].length;ee+=1){var Dt=ee+vn.getLength()-q[Q].length;q[Q][ee]=Dt>=0?vn.getAt(Dt):0}}for(var Tt=0,ee=0;ee<S.length;ee+=1)Tt+=S[ee].totalCount;for(var Zt=new Array(Tt),ut=0,ee=0;ee<$;ee+=1)for(var Q=0;Q<S.length;Q+=1)ee<P[Q].length&&(Zt[ut]=P[Q][ee],ut+=1);for(var ee=0;ee<G;ee+=1)for(var Q=0;Q<S.length;Q+=1)ee<q[Q].length&&(Zt[ut]=q[Q][ee],ut+=1);return Zt},W=function(A,S,R){for(var $=o.getRSBlocks(A,S),G=a(),P=0;P<R.length;P+=1){var q=R[P];G.put(q.getMode(),4),G.put(q.getLength(),s.getLengthInBits(q.getMode(),A)),q.write(G)}for(var Q=0,P=0;P<$.length;P+=1)Q+=$[P].dataCount;if(G.getLengthInBits()>Q*8)throw"code length overflow. ("+G.getLengthInBits()+">"+Q*8+")";for(G.getLengthInBits()+4<=Q*8&&G.put(0,4);G.getLengthInBits()%8!=0;)G.putBit(!1);for(;!(G.getLengthInBits()>=Q*8||(G.put(O,8),G.getLengthInBits()>=Q*8));)G.put(I,8);return de(G,$)};H.addData=function(A,S){S=S||"Byte";var R=null;switch(S){case"Numeric":R=c(A);break;case"Alphanumeric":R=u(A);break;case"Byte":R=l(A);break;case"Kanji":R=C(A);break;default:throw"mode:"+S}y.push(R),M=null},H.isDark=function(A,S){if(A<0||m<=A||S<0||m<=S)throw A+","+S;return b[A][S]},H.getModuleCount=function(){return m},H.make=function(){if(v<1){for(var A=1;A<40;A++){for(var S=o.getRSBlocks(A,L),R=a(),$=0;$<y.length;$++){var G=y[$];R.put(G.getMode(),4),R.put(G.getLength(),s.getLengthInBits(G.getMode(),A)),G.write(R)}for(var P=0,$=0;$<S.length;$++)P+=S[$].dataCount;if(R.getLengthInBits()<=P*8)break}v=A}z(!1,X())},H.createTableTag=function(A,S){A=A||2,S=typeof S>"u"?A*4:S;var R="";R+='<table style="',R+=" border-width: 0px; border-style: none;",R+=" border-collapse: collapse;",R+=" padding: 0px; margin: "+S+"px;",R+='">',R+="<tbody>";for(var $=0;$<H.getModuleCount();$+=1){R+="<tr>";for(var G=0;G<H.getModuleCount();G+=1)R+='<td style="',R+=" border-width: 0px; border-style: none;",R+=" border-collapse: collapse;",R+=" padding: 0px; margin: 0px;",R+=" width: "+A+"px;",R+=" height: "+A+"px;",R+=" background-color: ",R+=H.isDark($,G)?"#000000":"#ffffff",R+=";",R+='"/>';R+="</tr>"}return R+="</tbody>",R+="</table>",R},H.createSvgTag=function(A,S,R,$){var G={};typeof arguments[0]=="object"&&(G=arguments[0],A=G.cellSize,S=G.margin,R=G.alt,$=G.title),A=A||2,S=typeof S>"u"?A*4:S,R=typeof R=="string"?{text:R}:R||{},R.text=R.text||null,R.id=R.text?R.id||"qrcode-description":null,$=typeof $=="string"?{text:$}:$||{},$.text=$.text||null,$.id=$.text?$.id||"qrcode-title":null;var P=H.getModuleCount()*A+S*2,q,Q,oe,ue,ee="",Ie;for(Ie="l"+A+",0 0,"+A+" -"+A+",0 0,-"+A+"z ",ee+='<svg version="1.1" xmlns="http://www.w3.org/2000/svg"',ee+=G.scalable?"":' width="'+P+'px" height="'+P+'px"',ee+=' viewBox="0 0 '+P+" "+P+'" ',ee+=' preserveAspectRatio="xMinYMin meet"',ee+=$.text||R.text?' role="img" aria-labelledby="'+U([$.id,R.id].join(" ").trim())+'"':"",ee+=">",ee+=$.text?'<title id="'+U($.id)+'">'+U($.text)+"</title>":"",ee+=R.text?'<description id="'+U(R.id)+'">'+U(R.text)+"</description>":"",ee+='<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>',ee+='<path d="',oe=0;oe<H.getModuleCount();oe+=1)for(ue=oe*A+S,q=0;q<H.getModuleCount();q+=1)H.isDark(oe,q)&&(Q=q*A+S,ee+="M"+Q+","+ue+Ie);return ee+='" stroke="transparent" fill="black"/>',ee+="</svg>",ee},H.createDataURL=function(A,S){A=A||2,S=typeof S>"u"?A*4:S;var R=H.getModuleCount()*A+S*2,$=S,G=R-S;return k(R,R,function(P,q){if($<=P&&P<G&&$<=q&&q<G){var Q=Math.floor((P-$)/A),oe=Math.floor((q-$)/A);return H.isDark(oe,Q)?0:1}else return 1})},H.createImgTag=function(A,S,R){A=A||2,S=typeof S>"u"?A*4:S;var $=H.getModuleCount()*A+S*2,G="";return G+="<img",G+=' src="',G+=H.createDataURL(A,S),G+='"',G+=' width="',G+=$,G+='"',G+=' height="',G+=$,G+='"',R&&(G+=' alt="',G+=U(R),G+='"'),G+="/>",G};var U=function(A){for(var S="",R=0;R<A.length;R+=1){var $=A.charAt(R);switch($){case"<":S+="<";break;case">":S+=">";break;case"&":S+="&";break;case'"':S+=""";break;default:S+=$;break}}return S},re=function(A){var S=1;A=typeof A>"u"?S*2:A;var R=H.getModuleCount()*S+A*2,$=A,G=R-A,P,q,Q,oe,ue,ee={"\u2588\u2588":"\u2588","\u2588 ":"\u2580"," \u2588":"\u2584"," ":" "},Ie={"\u2588\u2588":"\u2580","\u2588 ":"\u2580"," \u2588":" "," ":" "},Te="";for(P=0;P<R;P+=2){for(Q=Math.floor((P-$)/S),oe=Math.floor((P+1-$)/S),q=0;q<R;q+=1)ue="\u2588",$<=q&&q<G&&$<=P&&P<G&&H.isDark(Q,Math.floor((q-$)/S))&&(ue=" "),$<=q&&q<G&&$<=P+1&&P+1<G&&H.isDark(oe,Math.floor((q-$)/S))?ue+=" ":ue+="\u2588",Te+=A<1&&P+1>=G?Ie[ue]:ee[ue];Te+=`
|
|
3
|
+
`}return R%2&&A>0?Te.substring(0,Te.length-R-1)+Array(R+1).join("\u2580"):Te.substring(0,Te.length-1)};return H.createASCII=function(A,S){if(A=A||1,A<2)return re(S);A-=1,S=typeof S>"u"?A*2:S;var R=H.getModuleCount()*A+S*2,$=S,G=R-S,P,q,Q,oe,ue=Array(A+1).join("\u2588\u2588"),ee=Array(A+1).join(" "),Ie="",Te="";for(P=0;P<R;P+=1){for(Q=Math.floor((P-$)/A),Te="",q=0;q<R;q+=1)oe=1,$<=q&&q<G&&$<=P&&P<G&&H.isDark(Q,Math.floor((q-$)/A))&&(oe=0),Te+=oe?ue:ee;for(Q=0;Q<A;Q+=1)Ie+=Te+`
|
|
4
|
+
`}return Ie.substring(0,Ie.length-1)},H.renderTo2dContext=function(A,S){S=S||2;for(var R=H.getModuleCount(),$=0;$<R;$++)for(var G=0;G<R;G++)A.fillStyle=H.isDark($,G)?"black":"white",A.fillRect(G*S,$*S,S,S)},H};r.stringToBytesFuncs={default:function(E){for(var x=[],O=0;O<E.length;O+=1){var I=E.charCodeAt(O);x.push(I&255)}return x}},r.stringToBytes=r.stringToBytesFuncs.default,r.createStringToBytes=function(E,x){var O=(function(){for(var v=f(E),L=function(){var ne=v.read();if(ne==-1)throw"eof";return ne},b=0,m={};;){var M=v.read();if(M==-1)break;var y=L(),H=L(),z=L(),j=String.fromCharCode(M<<8|y),X=H<<8|z;m[j]=X,b+=1}if(b!=x)throw b+" != "+x;return m})(),I=63;return function(v){for(var L=[],b=0;b<v.length;b+=1){var m=v.charCodeAt(b);if(m<128)L.push(m);else{var M=O[v.charAt(b)];typeof M=="number"?(M&255)==M?L.push(M):(L.push(M>>>8),L.push(M&255)):L.push(I)}}return L}};var e={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},t={L:1,M:0,Q:3,H:2},n={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},s=(function(){var E=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],x=1335,O=7973,I=21522,v={},L=function(b){for(var m=0;b!=0;)m+=1,b>>>=1;return m};return v.getBCHTypeInfo=function(b){for(var m=b<<10;L(m)-L(x)>=0;)m^=x<<L(m)-L(x);return(b<<10|m)^I},v.getBCHTypeNumber=function(b){for(var m=b<<12;L(m)-L(O)>=0;)m^=O<<L(m)-L(O);return b<<12|m},v.getPatternPosition=function(b){return E[b-1]},v.getMaskFunction=function(b){switch(b){case n.PATTERN000:return function(m,M){return(m+M)%2==0};case n.PATTERN001:return function(m,M){return m%2==0};case n.PATTERN010:return function(m,M){return M%3==0};case n.PATTERN011:return function(m,M){return(m+M)%3==0};case n.PATTERN100:return function(m,M){return(Math.floor(m/2)+Math.floor(M/3))%2==0};case n.PATTERN101:return function(m,M){return m*M%2+m*M%3==0};case n.PATTERN110:return function(m,M){return(m*M%2+m*M%3)%2==0};case n.PATTERN111:return function(m,M){return(m*M%3+(m+M)%2)%2==0};default:throw"bad maskPattern:"+b}},v.getErrorCorrectPolynomial=function(b){for(var m=i([1],0),M=0;M<b;M+=1)m=m.multiply(i([1,B.gexp(M)],0));return m},v.getLengthInBits=function(b,m){if(1<=m&&m<10)switch(b){case e.MODE_NUMBER:return 10;case e.MODE_ALPHA_NUM:return 9;case e.MODE_8BIT_BYTE:return 8;case e.MODE_KANJI:return 8;default:throw"mode:"+b}else if(m<27)switch(b){case e.MODE_NUMBER:return 12;case e.MODE_ALPHA_NUM:return 11;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 10;default:throw"mode:"+b}else if(m<41)switch(b){case e.MODE_NUMBER:return 14;case e.MODE_ALPHA_NUM:return 13;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 12;default:throw"mode:"+b}else throw"type:"+m},v.getLostPoint=function(b){for(var m=b.getModuleCount(),M=0,y=0;y<m;y+=1)for(var H=0;H<m;H+=1){for(var z=0,j=b.isDark(y,H),X=-1;X<=1;X+=1)if(!(y+X<0||m<=y+X))for(var ne=-1;ne<=1;ne+=1)H+ne<0||m<=H+ne||X==0&&ne==0||j==b.isDark(y+X,H+ne)&&(z+=1);z>5&&(M+=3+z-5)}for(var y=0;y<m-1;y+=1)for(var H=0;H<m-1;H+=1){var te=0;b.isDark(y,H)&&(te+=1),b.isDark(y+1,H)&&(te+=1),b.isDark(y,H+1)&&(te+=1),b.isDark(y+1,H+1)&&(te+=1),(te==0||te==4)&&(M+=3)}for(var y=0;y<m;y+=1)for(var H=0;H<m-6;H+=1)b.isDark(y,H)&&!b.isDark(y,H+1)&&b.isDark(y,H+2)&&b.isDark(y,H+3)&&b.isDark(y,H+4)&&!b.isDark(y,H+5)&&b.isDark(y,H+6)&&(M+=40);for(var H=0;H<m;H+=1)for(var y=0;y<m-6;y+=1)b.isDark(y,H)&&!b.isDark(y+1,H)&&b.isDark(y+2,H)&&b.isDark(y+3,H)&&b.isDark(y+4,H)&&!b.isDark(y+5,H)&&b.isDark(y+6,H)&&(M+=40);for(var ae=0,H=0;H<m;H+=1)for(var y=0;y<m;y+=1)b.isDark(y,H)&&(ae+=1);var se=Math.abs(100*ae/m/m-50)/5;return M+=se*10,M},v})(),B=(function(){for(var E=new Array(256),x=new Array(256),O=0;O<8;O+=1)E[O]=1<<O;for(var O=8;O<256;O+=1)E[O]=E[O-4]^E[O-5]^E[O-6]^E[O-8];for(var O=0;O<255;O+=1)x[E[O]]=O;var I={};return I.glog=function(v){if(v<1)throw"glog("+v+")";return x[v]},I.gexp=function(v){for(;v<0;)v+=255;for(;v>=256;)v-=255;return E[v]},I})();function i(E,x){if(typeof E.length>"u")throw E.length+"/"+x;var O=(function(){for(var v=0;v<E.length&&E[v]==0;)v+=1;for(var L=new Array(E.length-v+x),b=0;b<E.length-v;b+=1)L[b]=E[b+v];return L})(),I={};return I.getAt=function(v){return O[v]},I.getLength=function(){return O.length},I.multiply=function(v){for(var L=new Array(I.getLength()+v.getLength()-1),b=0;b<I.getLength();b+=1)for(var m=0;m<v.getLength();m+=1)L[b+m]^=B.gexp(B.glog(I.getAt(b))+B.glog(v.getAt(m)));return i(L,0)},I.mod=function(v){if(I.getLength()-v.getLength()<0)return I;for(var L=B.glog(I.getAt(0))-B.glog(v.getAt(0)),b=new Array(I.getLength()),m=0;m<I.getLength();m+=1)b[m]=I.getAt(m);for(var m=0;m<v.getLength();m+=1)b[m]^=B.gexp(B.glog(v.getAt(m))+L);return i(b,0).mod(v)},I}var o=(function(){var E=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],x=function(v,L){var b={};return b.totalCount=v,b.dataCount=L,b},O={},I=function(v,L){switch(L){case t.L:return E[(v-1)*4+0];case t.M:return E[(v-1)*4+1];case t.Q:return E[(v-1)*4+2];case t.H:return E[(v-1)*4+3];default:return}};return O.getRSBlocks=function(v,L){var b=I(v,L);if(typeof b>"u")throw"bad rs block @ typeNumber:"+v+"/errorCorrectionLevel:"+L;for(var m=b.length/3,M=[],y=0;y<m;y+=1)for(var H=b[y*3+0],z=b[y*3+1],j=b[y*3+2],X=0;X<H;X+=1)M.push(x(z,j));return M},O})(),a=function(){var E=[],x=0,O={};return O.getBuffer=function(){return E},O.getAt=function(I){var v=Math.floor(I/8);return(E[v]>>>7-I%8&1)==1},O.put=function(I,v){for(var L=0;L<v;L+=1)O.putBit((I>>>v-L-1&1)==1)},O.getLengthInBits=function(){return x},O.putBit=function(I){var v=Math.floor(x/8);E.length<=v&&E.push(0),I&&(E[v]|=128>>>x%8),x+=1},O},c=function(E){var x=e.MODE_NUMBER,O=E,I={};I.getMode=function(){return x},I.getLength=function(b){return O.length},I.write=function(b){for(var m=O,M=0;M+2<m.length;)b.put(v(m.substring(M,M+3)),10),M+=3;M<m.length&&(m.length-M==1?b.put(v(m.substring(M,M+1)),4):m.length-M==2&&b.put(v(m.substring(M,M+2)),7))};var v=function(b){for(var m=0,M=0;M<b.length;M+=1)m=m*10+L(b.charAt(M));return m},L=function(b){if("0"<=b&&b<="9")return b.charCodeAt(0)-48;throw"illegal char :"+b};return I},u=function(E){var x=e.MODE_ALPHA_NUM,O=E,I={};I.getMode=function(){return x},I.getLength=function(L){return O.length},I.write=function(L){for(var b=O,m=0;m+1<b.length;)L.put(v(b.charAt(m))*45+v(b.charAt(m+1)),11),m+=2;m<b.length&&L.put(v(b.charAt(m)),6)};var v=function(L){if("0"<=L&&L<="9")return L.charCodeAt(0)-48;if("A"<=L&&L<="Z")return L.charCodeAt(0)-65+10;switch(L){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+L}};return I},l=function(E){var x=e.MODE_8BIT_BYTE,O=E,I=r.stringToBytes(E),v={};return v.getMode=function(){return x},v.getLength=function(L){return I.length},v.write=function(L){for(var b=0;b<I.length;b+=1)L.put(I[b],8)},v},C=function(E){var x=e.MODE_KANJI,O=E,I=r.stringToBytesFuncs.SJIS;if(!I)throw"sjis not supported.";(function(b,m){var M=I(b);if(M.length!=2||(M[0]<<8|M[1])!=m)throw"sjis not supported."})("\u53CB",38726);var v=I(E),L={};return L.getMode=function(){return x},L.getLength=function(b){return~~(v.length/2)},L.write=function(b){for(var m=v,M=0;M+1<m.length;){var y=(255&m[M])<<8|255&m[M+1];if(33088<=y&&y<=40956)y-=33088;else if(57408<=y&&y<=60351)y-=49472;else throw"illegal char at "+(M+1)+"/"+y;y=(y>>>8&255)*192+(y&255),b.put(y,13),M+=2}if(M<m.length)throw"illegal char at "+(M+1)},L},h=function(){var E=[],x={};return x.writeByte=function(O){E.push(O&255)},x.writeShort=function(O){x.writeByte(O),x.writeByte(O>>>8)},x.writeBytes=function(O,I,v){I=I||0,v=v||O.length;for(var L=0;L<v;L+=1)x.writeByte(O[L+I])},x.writeString=function(O){for(var I=0;I<O.length;I+=1)x.writeByte(O.charCodeAt(I))},x.toByteArray=function(){return E},x.toString=function(){var O="";O+="[";for(var I=0;I<E.length;I+=1)I>0&&(O+=","),O+=E[I];return O+="]",O},x},p=function(){var E=0,x=0,O=0,I="",v={},L=function(m){I+=String.fromCharCode(b(m&63))},b=function(m){if(!(m<0)){if(m<26)return 65+m;if(m<52)return 97+(m-26);if(m<62)return 48+(m-52);if(m==62)return 43;if(m==63)return 47}throw"n:"+m};return v.writeByte=function(m){for(E=E<<8|m&255,x+=8,O+=1;x>=6;)L(E>>>x-6),x-=6},v.flush=function(){if(x>0&&(L(E<<6-x),E=0,x=0),O%3!=0)for(var m=3-O%3,M=0;M<m;M+=1)I+="="},v.toString=function(){return I},v},f=function(E){var x=E,O=0,I=0,v=0,L={};L.read=function(){for(;v<8;){if(O>=x.length){if(v==0)return-1;throw"unexpected end of file./"+v}var m=x.charAt(O);if(O+=1,m=="=")return v=0,-1;if(m.match(/^\s$/))continue;I=I<<6|b(m.charCodeAt(0)),v+=6}var M=I>>>v-8&255;return v-=8,M};var b=function(m){if(65<=m&&m<=90)return m-65;if(97<=m&&m<=122)return m-97+26;if(48<=m&&m<=57)return m-48+52;if(m==43)return 62;if(m==47)return 63;throw"c:"+m};return L},w=function(E,x){var O=E,I=x,v=new Array(E*x),L={};L.setPixel=function(y,H,z){v[H*O+y]=z},L.write=function(y){y.writeString("GIF87a"),y.writeShort(O),y.writeShort(I),y.writeByte(128),y.writeByte(0),y.writeByte(0),y.writeByte(0),y.writeByte(0),y.writeByte(0),y.writeByte(255),y.writeByte(255),y.writeByte(255),y.writeString(","),y.writeShort(0),y.writeShort(0),y.writeShort(O),y.writeShort(I),y.writeByte(0);var H=2,z=m(H);y.writeByte(H);for(var j=0;z.length-j>255;)y.writeByte(255),y.writeBytes(z,j,255),j+=255;y.writeByte(z.length-j),y.writeBytes(z,j,z.length-j),y.writeByte(0),y.writeString(";")};var b=function(y){var H=y,z=0,j=0,X={};return X.write=function(ne,te){if(ne>>>te)throw"length over";for(;z+te>=8;)H.writeByte(255&(ne<<z|j)),te-=8-z,ne>>>=8-z,j=0,z=0;j=ne<<z|j,z=z+te},X.flush=function(){z>0&&H.writeByte(j)},X},m=function(y){for(var H=1<<y,z=(1<<y)+1,j=y+1,X=M(),ne=0;ne<H;ne+=1)X.add(String.fromCharCode(ne));X.add(String.fromCharCode(H)),X.add(String.fromCharCode(z));var te=h(),ae=b(te);ae.write(H,j);var se=0,De=String.fromCharCode(v[se]);for(se+=1;se<v.length;){var de=String.fromCharCode(v[se]);se+=1,X.contains(De+de)?De=De+de:(ae.write(X.indexOf(De),j),X.size()<4095&&(X.size()==1<<j&&(j+=1),X.add(De+de)),De=de)}return ae.write(X.indexOf(De),j),ae.write(z,j),ae.flush(),te.toByteArray()},M=function(){var y={},H=0,z={};return z.add=function(j){if(z.contains(j))throw"dup key:"+j;y[j]=H,H+=1},z.size=function(){return H},z.indexOf=function(j){return y[j]},z.contains=function(j){return typeof y[j]<"u"},z};return L},k=function(E,x,O){for(var I=w(E,x),v=0;v<x;v+=1)for(var L=0;L<E;L+=1)I.setPixel(L,v,O(L,v));var b=h();I.write(b);for(var m=p(),M=b.toByteArray(),y=0;y<M.length;y+=1)m.writeByte(M[y]);return m.flush(),"data:image/gif;base64,"+m};return r})();(function(){Cl.stringToBytesFuncs["UTF-8"]=function(r){function e(t){for(var n=[],s=0;s<t.length;s++){var B=t.charCodeAt(s);B<128?n.push(B):B<2048?n.push(192|B>>6,128|B&63):B<55296||B>=57344?n.push(224|B>>12,128|B>>6&63,128|B&63):(s++,B=65536+((B&1023)<<10|t.charCodeAt(s)&1023),n.push(240|B>>18,128|B>>12&63,128|B>>6&63,128|B&63))}return n}return e(r)}})();(function(r){typeof define=="function"&&define.amd?define([],r):typeof fl=="object"&&(hl.exports=r())})(function(){return Cl})});var MC={};Pl(MC,{lint:()=>yl,main:()=>Il,parseArgs:()=>Fl});module.exports=_l(MC);var qe=Ce(require("node:fs")),Et=Ce(require("node:path"));var XB={persistOutputs:!0,maxOutputLines:2e3,stripAnsi:!0};function me(r){return typeof r=="string"}function ei(r){if(typeof r!="object"||r===null)return!1;let e=r;return e.kind==="markup"&&me(e.lead)&&me(e.content)&&me(e.trail)&&(e.eol===`
|
|
5
|
+
`||e.eol===`\r
|
|
6
|
+
`)&&me(e.finalEol)&&me(e.value)}function ti(r){if(typeof r!="object"||r===null)return!1;let e=r;return(e.raw===void 0||me(e.raw))&&me(e.text)&&typeof e.attrs=="object"&&e.attrs!==null&&Object.values(e.attrs).every(me)}function Jl(r){if(typeof r!="object"||r===null)return!1;let e=r;return me(e.raw)&&me(e.gap)&&Array.isArray(e.entries)&&e.entries.every(ti)}function Ul(r){if(typeof r!="object"||r===null)return!1;let e=r;return me(e.raw)&&me(e.gap)}function pe(r){if(typeof r!="object"||r===null)return!1;let e=r;return e.kind==="code"&&me(e.lead)&&me(e.open)&&me(e.body)&&me(e.close)&&me(e.trail)&&me(e.indent)&&(e.fenceChar==="`"||e.fenceChar==="~")&&typeof e.fenceLen=="number"&&me(e.info)&&me(e.lang)&&(e.eol===`
|
|
7
|
+
`||e.eol===`\r
|
|
8
|
+
`)&&me(e.value)&&(e.output===void 0||Ul(e.output))&&(e.history===void 0||Jl(e.history))}function ni(r){if(typeof r!="object"||r===null)return!1;let e=r;return typeof e.bom=="boolean"&&(e.eol===`
|
|
9
|
+
`||e.eol===`\r
|
|
10
|
+
`)}function $t(r){let e=[],t=/\r\n|\n|\r/g,n=0,s;for(;(s=t.exec(r))!==null;)e.push({text:r.slice(n,s.index),eol:s[0]}),n=t.lastIndex;return n<r.length&&e.push({text:r.slice(n),eol:""}),e}function it(r){let e="";for(let t of r)e+=t.text+t.eol;return e}function xr(r,e){let t=0,n=0;for(let s of r)s.eol===`\r
|
|
11
|
+
`?t++:s.eol===`
|
|
12
|
+
`&&n++;return t===0&&n===0?e:t>n?`\r
|
|
13
|
+
`:`
|
|
14
|
+
`}function vr(r){return r.endsWith(`\r
|
|
15
|
+
`)?`\r
|
|
16
|
+
`:r.endsWith(`
|
|
17
|
+
`)?`
|
|
18
|
+
`:r.endsWith("\r")?"\r":""}function Sn(r){return vr(r)!==""}function nn(r){return r.replace(/\r\n?/g,`
|
|
19
|
+
`)}var rn=/^[ \t]*$/;var Kl=new Set(["sh","bash","pwsh","powershell","cmd"]),jl={sh:"shellscript",bash:"shellscript",pwsh:"powershell",powershell:"powershell",cmd:"bat"},ri={shellscript:"bash",powershell:"pwsh",bat:"cmd"},KC=Object.keys(ri);function Ds(r){return Kl.has(r)}function kr(r){return jl[r]??r}function si(r){return ri[r]??r}var zl=/^([ \t]*)(`{3,}|~{3,})(.*)$/,Bi=/^[ \t]*(`{3,}|~{3,})[ \t]*$/;function Se(r){let e=zl.exec(r);if(!e)return null;let t=e[1]??"",n=e[2]??"",s=e[3]??"",B=n[0];return B==="`"&&s.includes("`")?null:{indent:t,char:B,len:n.length,info:s}}function Ne(r,e){let t=Bi.exec(r);if(!t)return!1;let n=t[1]??"";return n[0]===e.char&&n.length>=e.len}var ii=/^(\s*)([^\s{]+)/;function wt(r){let e=ii.exec(r);return e?(e[2]??"").toLowerCase():""}function oi(r,e){let t=ii.exec(r);return t?(t[1]??"")+e+r.slice(t[0].length):e+r}function ai(r,e){let t=0;for(let n of r){let B=Bi.exec(n)?.[1];B&&B[0]===e&&(t=Math.max(t,B.length))}return t}function bs(r,e){if(e==="")return r;if(r.startsWith(e))return r.slice(e.length);let t=0;for(;t<e.length&&t<r.length&&(r[t]===" "||r[t]===" ");)t++;return r.slice(t)}function Gt(r,e){return r===""?r:e+r}var Yl=new RegExp(["(?:\\u001B\\]|\\u009D)[^\\u0007\\u001B\\u009C]*(?:\\u0007|\\u001B\\u005C|\\u009C)","[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|"),"g");function We(r){return r.replace(Yl,"")}var Ql=/^\u001b\[([0-9;?]*)([ -/]*)([@-~])/,ql=/^\u001b\][^\u0007\u001b]*(?:\u0007|\u001b\\)?/,Wl=/[\r\b\u0000-\u0008\u000b-\u001a\u001c-\u001f\u007f]|\u001b\[[0-9;?]*[ -/]*[A-GJKsu]|\u001b[78]/;function An(r,e=""){if(!Wl.test(r))return r;let t=[[]],n=[!1],s=[""],B="",i=0,o=0,a=[0,0],c=C=>{for(;t.length<=C;)t.push([]),n.push(!1),s.push("")},u=C=>{let h=t[i];for(;h.length<o;)h.push(" ");h[o]=B+C,B="",o++},l=(C,h)=>{let p=parseInt(C.split(";")[0]??"",10);return Number.isFinite(p)&&p>0?p:h};for(let C=0;C<r.length;){let h=r[C];if(h==="\x1B"){let p=r.slice(C,C+256),f=Ql.exec(p);if(f){let[E,x,O,I]=f;if(C+=E.length,O!==""||x.startsWith("?")){I==="m"&&(B+=E);continue}let v=l(x,1);switch(I){case"A":i=Math.max(0,i-v);break;case"B":i+=v,c(i);break;case"C":o+=v;break;case"D":o=Math.max(0,o-v);break;case"E":i+=v,c(i),o=0;break;case"F":i=Math.max(0,i-v),o=0;break;case"G":o=v-1;break;case"K":{let L=l(x,0),b=t[i];if(L===0)b.length=Math.min(b.length,o);else if(L===1)for(let m=0;m<=o&&m<b.length;m++)b[m]=" ";else b.length=0;break}case"J":{let L=l(x,0);if(L===0)t[i].length=Math.min(t[i].length,o),t.length=i+1,n.length=i+1,s.length=i+1;else if(L===1){for(let b=0;b<i;b++)t[b]=[];for(let b=0;b<=o&&b<t[i].length;b++)t[i][b]=" "}break}case"s":a=[i,o];break;case"u":[i,o]=a,c(i);break;default:B+=E}continue}let w=ql.exec(p);if(w&&w[0].length>2){B+=w[0],C+=w[0].length;continue}let k=r[C+1];k==="7"?a=[i,o]:k==="8"&&([i,o]=a,c(i)),C+=k===void 0?1:2;continue}if(C++,h===`
|
|
20
|
+
`)s[i]+=B,B="",i++,c(i),o=0;else if(h==="\r")o=0;else if(h==="\b")o=Math.max(0,o-1);else if(e!==""&&h===e)n[i]=!0;else if(h===" ")u(h);else{if(h<" "||h==="\x7F")continue;h>="\uD800"&&h<="\uDBFF"&&C<r.length?u(h+r[C++]):u(h)}}return s[i]+=B,t.map((C,h)=>(n[h]?e:"")+C.join("")+s[h]).join(`
|
|
21
|
+
`)}var ui=[{level:"critical",words:["EMERGENCY","EMERG","ALERT","CRITICAL","CRIT","FATAL","PANIC"],capitalized:!0,colon:["fatal","panic","critical"],brackets:["fatal","fatl","ftl","crit","critical","emerg","alert"],klog:"F"},{level:"error",words:["ERROR","ERR","EROR","FAIL","FAILED","FAILURE","EE"],capitalized:!0,colon:["error","err"],brackets:["error","eror","err","er","e","fail","failed"],klog:"E",extra:["\\b[A-Za-z.]*Exception\\b","[\u2717\u2718]"]},{level:"warning",words:["WARNING","WARN","WRN","WW"],capitalized:!0,colon:["warning","warn"],brackets:["warning","warn","wrn","wn","w"],klog:"W"},{level:"info",words:["INFORMATIONAL","INFORMATION","INFO","NOTICE","HINT","II"],capitalized:!0,colon:["info","notice","hint"],brackets:["information","info","inf","in","i","notice"],klog:"I"},{level:"debug",words:["DEBUG_LOW","DEBUG_MED","DEBUG_HIGH","DEBUG_MAX","DBG_LOW","DBG_MED","DBG_HIGH","DBG_MAX","DEBUG","DBUG","DBG"],capitalized:!0,colon:["debug"],brackets:["debug","dbug","dbg","de","d"]},{level:"trace",words:["TRACE","VERBOSE","VRB"],capitalized:!0,colon:["trace","verbose"],brackets:["trace","verbose","verb","vrb","vb","v"]},{level:"success",words:["SUCCESSFUL","SUCCEEDED","SUCCESS","COMPLETED","PASSED","PASS","DONE","OK"],capitalized:!0,colon:["success","ok","done"],brackets:["success","ok","pass","passed","done"],extra:["[\u2713\u2714]"]}],Vl=new Set(["ALERT","NOTICE","HINT","PASS","DONE","OK","EE","WW","II","ERR","EROR","CRIT","EMERG","WRN","DBUG","DBG","VRB"]),li=r=>r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Zl=r=>r[0]+r.slice(1).toLowerCase(),VC=new RegExp(ui.map(r=>{let e=[],t=[...r.words,...r.capitalized?r.words.filter(n=>!Vl.has(n)&&!n.includes("_")).map(Zl):[]];return e.push(`\\b(?:${t.map(li).join("|")})\\b`),r.colon?.length&&e.push(`\\b(?:${r.colon.map(li).join("|")})(?=:)`),r.brackets?.length&&e.push(`\\[(?:${r.brackets.map(n=>n.split("").map(s=>`[${s.toLowerCase()}${s.toUpperCase()}]`).join("")).join("|")})\\]`),r.klog&&e.push(`^${r.klog}\\d{4} \\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?`),r.extra&&e.push(...r.extra),`(${e.join("|")})`}).join("|"),"gu");var sn="\uE000";function ws(r){if(!r.includes(sn))return{text:r,stderr:[]};let e=[];return{text:r.split(`
|
|
22
|
+
`).map((n,s)=>n.includes(sn)?(e.push(s),n.split(sn).join("")):n).join(`
|
|
23
|
+
`),stderr:e}}function xs(r){let e=[...new Set(r)].sort((n,s)=>n-s),t=[];for(let n=0;n<e.length;){let s=n;for(;s+1<e.length&&e[s+1]===e[s]+1;)s++;t.push(n===s?`${e[n]+1}`:`${e[n]+1}-${e[s]+1}`),n=s+1}return t.join(",")}var Or=/^[ \t]*<!--[ \t]*md-runbook:output start\b(.*?)-->[ \t]*$/,vs=/^[ \t]*<!--[ \t]*md-runbook:output end[ \t]*-->[ \t]*$/,ci=/^[ \t]*<details>[ \t]*<summary>[ \t]*md-runbook:[^<]*<\/summary>[ \t]*$/,Ci=/^[ \t]*<\/details>[ \t]*$/,Xl=/([\w-]+)=(?:"([^"]*)"|(\S+))/g;function Rn(r){let e={};for(let t of r.matchAll(Xl)){let n=t[1];n&&(e[n]=t[2]??t[3]??"")}return e}function fi(r){let e="";for(let[t,n]of Object.entries(r)){if(!/^[\w-]+$/.test(t))continue;let s=n.replace(/["\r\n]/g,"").replace(/-->/g,"--");e+=" "+t+"="+(s===""||/\s/.test(s)?`"${s}"`:s)}return e}function eu(r){return`\u2026 [md-runbook: ${r} line${r===1?"":"s"} truncated] \u2026`}function hi(r,e){if(e<=0)return r;let t=r.split(`
|
|
24
|
+
`);if(t.length<=e)return r;let n=Math.ceil(e/2),s=e-n,B=t.length-e;return[...t.slice(0,n),eu(B),...t.slice(t.length-s)].join(`
|
|
25
|
+
`)}function pi(r,e){let t=An(r.replace(/\r\n/g,`
|
|
26
|
+
`),sn);e.stripAnsi&&(t=We(t)),e.redact&&(t=e.redact(t)),t=t.replace(/\n+$/,"");let n=ws(hi(t,e.maxOutputLines));return{text:n.text,stderr:xs(n.stderr)}}function Fn(r,e,t,n){let s=r===""?[]:nn(r).split(`
|
|
27
|
+
`),B="`".repeat(Math.max(3,tu(s)+1));return[`<!-- md-runbook:output start${fi(e)} -->`,B+"text",...s,B,"<!-- md-runbook:output end -->"].map(o=>Gt(o,t)).join(n)+n}function tu(r){let e=0;for(let t of r){let n=/^[ \t]*(`+)/.exec(t);n?.[1]&&(e=Math.max(e,n[1].length))}return e}function ks(r){return`${(Math.max(0,r)/1e3).toFixed(3)}s`}function Oe(r){let e=s=>String(Math.abs(s)).padStart(2,"0"),t=-r.getTimezoneOffset(),n=t>=0?"+":"-";return`${r.getFullYear()}-${e(r.getMonth()+1)}-${e(r.getDate())}T${e(r.getHours())}:${e(r.getMinutes())}:${e(r.getSeconds())}${n}${e(Math.trunc(t/60))}:${e(t%60)}`}function Ee(r){let e=r,t=!1;e.charCodeAt(0)===65279&&(t=!0,e=e.slice(1));let n=$t(e),s=xr(n,`
|
|
28
|
+
`),B=[],i="",o=u=>{if(u.length===0)return;let l=0,C=u.length;for(;l<C&&rn.test(u[l].text);)l++;for(;C>l&&rn.test(u[C-1].text);)C--;if(l===C){let w=it(u),k=B[B.length-1];k?k.meta.trail+=w:i+=w;return}let h=u.slice(l,C),p=h.map(w=>w.text).join(`
|
|
29
|
+
`),f={kind:"markup",lead:i+it(u.slice(0,l)),content:it(h),trail:it(u.slice(C)),eol:xr(h,s),finalEol:h[h.length-1].eol,value:p};i="",B.push({kind:"markup",value:p,languageId:"markdown",meta:f})},a=0,c=0;for(;c<n.length;){let u=Se(n[c].text);if(!u){c++;continue}let l=c+1;for(;l<n.length&&!Ne(n[l].text,u);)l++;if(l>=n.length)break;let C=wt(u.info);if(!Ds(C)){c=l+1;continue}o(n.slice(a,c));let h=n[c],p=n.slice(c+1,l),f=p.map(O=>bs(O.text,u.indent)).join(`
|
|
30
|
+
`),w={kind:"code",lead:i,open:h.text+h.eol,body:it(p),close:n[l].text+n[l].eol,trail:"",indent:u.indent,fenceChar:u.char,fenceLen:u.len,info:u.info,lang:C,eol:xr([h,...p],s),value:f};i="";let k={kind:"code",value:f,languageId:kr(C),meta:w},E=l+1,x=Os(n,E);if(x){w.output=x.meta,k.output=x.output,E=x.end;let O=nu(n,E);O&&(w.history=O.meta,E=O.end)}B.push(k),c=E,a=E}return o(n.slice(a)),i!==""&&B.push({kind:"markup",value:"",languageId:"markdown",meta:{kind:"markup",lead:i,content:"",trail:"",eol:s,finalEol:"",value:""}}),{meta:{bom:t,eol:s},cells:B}}function Os(r,e){let t=e;for(;t<r.length&&rn.test(r[t].text);)t++;let n=r[t]?Or.exec(r[t].text):null;if(!n)return null;let s=t+1,B=r[s]?Se(r[s].text):null;if(!B)return null;let i=s+1;for(;i<r.length&&!Ne(r[i].text,B);)i++;let o=i+1;if(o>=r.length||!vs.test(r[o].text))return null;let a=r.slice(s+1,i).map(c=>bs(c.text,B.indent)).join(`
|
|
31
|
+
`);return{meta:{raw:it(r.slice(e,o+1)),gap:it(r.slice(e,t))},output:{text:a,attrs:Rn(n[1]??"")},end:o+1}}function nu(r,e){let t=e;for(;t<r.length&&rn.test(r[t].text);)t++;if(!r[t]||!ci.test(r[t].text))return null;let n=[],s=t+1;for(;;){let B=Os(r,s);if(!B)break;n.push({raw:B.meta.raw.slice(B.meta.gap.length),...B.output}),s=B.end}for(;s<r.length&&rn.test(r[s].text);)s++;return n.length===0||!r[s]||!Ci.test(r[s].text)?null:{meta:{raw:it(r.slice(e,s+1)),gap:it(r.slice(e,t)),entries:n},end:s+1}}function Ss(r){let e=$t(r),t=Os(e,0);return t&&t.end===e.length?t.output:null}function As(r){if(!r.output)return;let e=r.output.raw.slice(r.output.gap.length),t=Ss(e);return t?{raw:e,...t}:void 0}function Rs(r,e,t){return!r||t<=0?[]:[r,...e].slice(0,t)}function ru(r){return`md-runbook: ${r} previous run${r===1?"":"s"}`}function Fs(r,e,t){let n=Gt(`<details><summary>${ru(r.length)}</summary>`,e)+t;for(let s of r)n+=t,s.raw!==void 0?n+=Sn(s.raw)?s.raw:s.raw+t:n+=Fn(s.text,s.attrs,e,t);return n+t+Gt("</details>",e)+t}function Sr(r,e,t){let n=ni(r)?r:{bom:!1,eol:`
|
|
32
|
+
`},s=n.eol,B="",i=!1,o=!1;for(let a of e){let c=nn(a.value),u=a.kind==="markup"?ei(a.meta)?a.meta:void 0:pe(a.meta)?a.meta:void 0,l=u===void 0;B!==""&&!Sn(B)&&(B+=s);let C=o&&B!=="",h=a.kind==="markup"?ou(c,u,s,C):au(c,a.languageId,u,a.output,s,t,C);B!==""&&(l||i)&&!Bu(B)&&!su(h)&&(B+=s),B+=h,i=l,o=u!==void 0&&u.trail!==""}return(n.bom?"\uFEFF":"")+B}function su(r){return/^[ \t]*(?:\r\n|\n|\r)/.test(r)}function Bu(r){return/(?:\r\n|\n|\r)[ \t]*(?:\r\n|\n|\r)$/.test(r)||/^[ \t]*(?:\r\n|\n|\r)$/.test(r)}function gi(r,e,t=""){return r===""?"":r.split(`
|
|
33
|
+
`).map(n=>Gt(n,t)).join(e)}function iu(r){let e=null;for(let t of r.split(`
|
|
34
|
+
`))e?Ne(t,e)&&(e=null):e=Se(t);return e?e.indent+e.char.repeat(e.len):""}function di(r,e,t){let n=iu(r);return gi(r,e)+(n===""?"":e+n)+t}function ou(r,e,t,n){if(!e)return r===""?"":di(r,t,t);let s=n?"":e.lead;if(r===e.value)return s+e.content+e.trail;let B=r===""?"":di(r,e.eol,e.finalEol);return s+B+e.trail}function au(r,e,t,n,s,B,i){let o=t!==void 0&&e!==void 0&&kr(t.lang)!==e,a=i?"":t?.lead??"";if(t&&!o&&r===t.value)a+=t.open+t.body+t.close;else{let u=t?.eol??s,l=t?.indent??"",C=t?.fenceChar??"`",h=t?.fenceLen??3,p=Math.max(h,ai(r.split(`
|
|
35
|
+
`),C)+1),f=si(e??"shellscript"),w=l+C.repeat(p),k,E;if(t){let O=o?oi(t.info,f):t.info,I=vr(t.open);k=p===h&&!o&&I!=="\r"?t.open:w+O+(I==="\r"?u:I||u),E=p===h?t.close:w+vr(t.close)}else k=w+f+u,E=w+u;let x=r===""?"":gi(r,u,l)+u;a+=k+x+E}let c=lu(n,t,s,B);return c!==""&&(Sn(a)||(a+=t?.eol??s),a+=c),a+(t?.trail??"")}function lu(r,e,t,n){if(!r)return"";if(r.kind==="preserved")return e?.output?e.output.raw+(e.history?.raw??""):"";if(!n.persistOutputs)return"";let{text:s,stderr:B}=pi(r.text,n),i=e?.eol??t,o=e?.indent??"",{stderr:a,...c}=r.attrs,u=B?{...c,stderr:B}:c,l=r.previous?{...u,changed:r.previous.text===s?"no":"yes"}:u,C=(e?.output?.gap??"")+Fn(s,l,o,i);return r.history?.length&&(C+=(e?.history?.gap??"")+Fs(r.history,o,i)),C}function Ar(r,e=!0){return r.cells.map(t=>({kind:t.kind,value:t.value,languageId:t.languageId,meta:t.meta,output:e&&t.output?{kind:"preserved"}:void 0}))}function ys(r){let e=Ee(r);return Sr(e.meta,Ar(e,!1),XB)}var Bn="[REDACTED]",Is="password|passwd|pwd|secret|token|api[_-]?key|access[_-]?key|private[_-]?key|privatekey|client[_-]?key|credentials?|\\.key",uu=`(?:\\$\\{[^}\\s]*\\}|\\$\\([^)\\r\\n]*\\)|\\$env:\\w+|%[A-Za-z_]\\w*%)(?![^\\s"',;&])`,Rr=`(?<!\\$\\{(?:secret|secretFile|input|param):)(?!(?:Bearer|Basic|Negotiate|true|false|null|none)\\b)(?!${uu})`,mi="k8s-secret-data",Ts=[{name:"pem-private-key",pattern:"(?<=-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----)[\\s\\S]+?(?=-----END [A-Z0-9 ]*PRIVATE KEY-----|$)"},{name:mi,pattern:"(?!)"},{name:"authorization-header",pattern:`(?<=\\b(?:Proxy-)?Authorization["']?[ \\t]*:[ \\t]*)[^\\s"'][^\\r\\n"']*|(?<=\\b(?:Proxy-)?Authorization["']?[ \\t]*=[ \\t]*)[^\\s"'][^\\r\\n"',;}&]*`,flags:"i"},{name:"cookie-header",pattern:`(?<=\\b(?:Set-)?Cookie["']?[ \\t]*[:=][ \\t]*)[^\\s"'][^\\r\\n"']*`,flags:"i"},{name:"bearer-token",pattern:"(?<=\\bBearer[ \\t]+)(?=[A-Za-z0-9\\-._~+/]*[0-9._~+/-])[A-Za-z0-9\\-._~+/]{8,}=*",flags:"i"},{name:"jwt",pattern:"\\beyJ[A-Za-z0-9_-]{5,}\\.[A-Za-z0-9_-]{5,}(?:\\.[A-Za-z0-9_-]*)*"},{name:"secret-key-value-quoted",pattern:`(?<=\\b[\\w.-]*(?:${Is})[\\w.-]*["']?[ \\t]*[:=][ \\t]*")${Rr}[^"\\r\\n]+(?=")|(?<=\\b[\\w.-]*(?:${Is})[\\w.-]*["']?[ \\t]*[:=][ \\t]*')${Rr}[^'\\r\\n]+(?=')`,flags:"i"},{name:"secret-key-value",pattern:`(?<=\\b[\\w.-]*(?:${Is})[\\w.-]*["']?[ \\t]*[:=][ \\t]*["']?)${Rr}[^\\s"',;&}]+`,flags:"i"},{name:"pass-key-value",pattern:`(?<=(?:^|[^A-Za-z0-9])(?:[\\w.-]*[_.-])?pass["']?[ \\t]*[:=][ \\t]*["']?)${Rr}[^\\s"',;&}]+`,flags:"i"},{name:"secret-flag-value",pattern:`(?<=(?:^|\\s)--?(?:password|passwd|pass|secret|client-secret|token|api-key|apikey|access-key|secret-key)[ \\t]+)(?:"(?![$%])[^"\\r\\n]*"|'(?![$%])[^'\\r\\n]*'|(?![-$%])[^\\s"']+)|(?<=\\blogin\\b[^\\r\\n]*?\\s-p[ \\t]*)(?!-)[^\\s"']+|(?<=\\bmysql\\b[^\\r\\n]*?\\s-p)[^\\s"']+|(?<=(?:^|\\s)(?:-u|--user)[ \\t]+[^\\s:"']+:)[^\\s"']+`,flags:"i"},{name:"keycloak-client-secret",pattern:'(?<="type"[ \\t]*:[ \\t]*"secret"[ \\t]*,[ \\t]*"value"[ \\t]*:[ \\t]*")[^"]+|(?<=\\bsecret\\b[^\\r\\n]{0,40}?)\\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\b',flags:"i"},{name:"url-credentials",pattern:"(?<=\\b[a-z][a-z0-9+.-]*://[^/\\s:@]+:)[^/\\s@]+(?=@)",flags:"i"},{name:"base64-pem",pattern:"\\bLS0tLS1CRUdJTi[A-Za-z0-9+/=]+"},{name:"base64-dockerconfig",pattern:"\\beyJhdXRocyI6[A-Za-z0-9+/=]+"},{name:"openshift-token",pattern:"\\bsha256~[A-Za-z0-9_-]{20,}"},{name:"github-token",pattern:"\\bgh[pousr]_[A-Za-z0-9]{30,}"},{name:"gitlab-token",pattern:"\\bglpat-[A-Za-z0-9_-]{20,}"},{name:"npm-token",pattern:"\\bnpm_[A-Za-z0-9]{36}\\b"},{name:"anthropic-openai-key",pattern:"\\bsk-(?:ant-)?[A-Za-z0-9_-]{20,}"},{name:"slack-token",pattern:"\\bxox[abposr]-[A-Za-z0-9-]{10,}"},{name:"gcp-api-key",pattern:"\\bAIza[0-9A-Za-z_-]{35}\\b"},{name:"gcp-oauth-token",pattern:"\\bya29\\.[0-9A-Za-z_-]{20,}"},{name:"azure-storage-key",pattern:"(?<=\\b(?:AccountKey|SharedAccessKey)=)[A-Za-z0-9+/=]{20,}",flags:"i"},{name:"azure-sas-signature",pattern:"(?<=[?&]sig=)[A-Za-z0-9%+/=]{20,}"},{name:"aws-access-key-id",pattern:"\\b(?:AKIA|ASIA)[0-9A-Z]{16}\\b"}];function cu(r){if(!/["']?kind["']?[ \t]*:[ \t]*["']?Secret\b/.test(r))return r;let e=r.replace(/^([ \t]*)(data|stringData):[ \t]*(\r?\n)((?:\1[ \t]+[^\r\n]*(?:\r?\n|$))+)/gm,(t,n,s,B,i)=>{let o=i.replace(/^([ \t]+[^\s:#][^:\r\n]*:[ \t]*)(?:\|[-+]?|>[-+]?)?[ \t]*(\S[^\r\n]*)?$/gm,(a,c,u)=>u===void 0||u.startsWith("[REDACTED]")?a:`${c}${Bn}`);return`${n}${s}:${B}${o}`});return e=e.replace(/("(?:data|stringData)"[ \t]*:[ \t]*\{)([^{}]*)(\})/g,(t,n,s,B)=>n+s.replace(/("[^"\r\n]+"[ \t]*:[ \t]*)"[^"]*"/g,`$1"${Bn}"`)+B),e}function Cu(r){let e=new Set((r??"").replace(/[gy]/g,"").split(""));return e.add("g"),[...e].join("")}function fu(r){let e=typeof r=="string"?{pattern:r}:r;return new RegExp(e.pattern,Cu(e.flags))}function Ls(r){let e=[],t=[],n=!1;for(let s of r){if(typeof s!="string"&&s.name===mi){n=!0;continue}try{e.push(fu(s))}catch(B){let i=typeof s=="string"?s:s.name??s.pattern;t.push(`${i}: ${B instanceof Error?B.message:String(B)}`)}}return{errors:t,redact(s){let B=n?cu(s):s;for(let i of e)i.lastIndex=0,B=B.replace(i,o=>o===""?o:Bn);return B}}}var hu=/-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----(?![\s\S]*-----END [A-Z0-9 ]*PRIVATE KEY-----)/,Mt=class{constructor(e,t=B=>B,n=64*1024,s=256*1024){this.emit=e;this.transform=t;this.maxPending=n;this.maxHeld=s}emit;transform;maxPending;maxHeld;pending="";held="";write(e){this.pending+=e;let t=this.pending.lastIndexOf(`
|
|
36
|
+
`);if(t>=0&&(this.held+=this.pending.slice(0,t+1),this.pending=this.pending.slice(t+1),(!hu.test(this.held)||this.held.length>this.maxHeld)&&this.release(this.held)),this.pending.length>this.maxPending){let n=Math.max(this.pending.lastIndexOf(" "),this.pending.lastIndexOf(" ")),s=n>0?n+1:this.pending.length,B=this.pending.slice(0,s);this.pending=this.pending.slice(s),this.release(this.held+B)}}flush(){this.release(this.held+this.pending),this.pending=""}release(e){this.held="",e!==""&&this.emit(this.transform(e))}};function Ae(r){switch(r.toLowerCase()){case"sh":case"bash":case"shellscript":return"bash";case"pwsh":case"powershell":return"pwsh";case"cmd":case"bat":return"cmd";default:return}}var yn=["bash","zsh","sh"],In=["pwsh","windows-powershell"];function Tn(r){let e={},t=[],n=[],s=r.replace(/^\s*\[|\]\s*$/g,"").split(/[\s,]+/).map(B=>B.replace(/^["']|["']$/g,"")).filter(Boolean);for(let B of s){let i=B.toLowerCase();yn.includes(i)?e.unix?n.push(B):e.unix=i:In.includes(i)?e.powershell?n.push(B):e.powershell=i:t.push(B)}return{shells:e,unknown:t,twice:n}}function Ln(r){return r.timedOut?"timeout":r.cancelled?"cancelled":r.error!==void 0?"error":r.exitCode!==null?String(r.exitCode):r.signal??"unknown"}function Nn(r){return!r.timedOut&&!r.cancelled&&r.error===void 0&&r.exitCode===0}var Ht=class{constructor(e,t){this.emit=t;this.needle=""+e+" "}emit;pending="";needle;code;get done(){return this.code!==void 0}write(e){if(this.done)return;let t=this.pending+e,n=t.indexOf(this.needle);if(n>=0){this.send(t.slice(0,n)),t=t.slice(n);let i=t.indexOf(`
|
|
37
|
+
`);if(i>=0){let o=Number.parseInt(t.slice(this.needle.length,i),10);this.code=Number.isNaN(o)?1:o,t=""}this.pending=t;return}let s=t.lastIndexOf(""),B=s>=0&&this.needle.startsWith(t.slice(s))?s:t.length;this.send(t.slice(0,B)),this.pending=t.slice(B)}flush(){this.send(this.pending),this.pending=""}send(e){e!==""&&this.emit(e)}};function Fr(r){return r.match(/\r\n|\n|\r/g)?.length??0}function Pt(r){let e=[],t=0;return r.cells.forEach((n,s)=>{let B=n.meta;if(pe(B)){let i=t+Fr(B.lead);e.push({cellIndex:s,line:i,closeLine:i+1+Fr(B.body),language:B.lang,info:B.info,source:n.value,outputAttrs:n.output?.attrs}),t+=Fr(B.lead+B.open+B.body+B.close+(B.output?.raw??"")+(B.history?.raw??"")+B.trail)}else t+=Fr(B.lead+B.content+B.trail)}),e}function $n(r,e,t,n){let s=Ee(r);if(s.cells[e]?.kind!=="code")return;let B=Ar(s);return B[e].output=t,Sr(s.meta,B,n)}function Ns(r,e=new Date){let t=r.exit??"?",s=[`${r.check==="failed"?"\u2717":r.check==="ok"||t==="0"||t==="done"?"\u2713":["skipped","declined","proposed","running"].includes(t)?"\u2013":"\u2717"} ${/^-?\d+$/.test(t)?`exit ${t}`:t}`];r.check==="failed"&&s.push("check failed"),r.attempts&&s.push(`${r.attempts} attempts`),r.lines&&s.push(`lines ${r.lines}`);let B=r.duration?parseFloat(r.duration):NaN;isNaN(B)||s.push(B<60?`${B.toFixed(1)}s`:`${Math.floor(B/60)}m${Math.round(B%60)}s`);let i=Date.parse(r.ended??r.ran??"");return isNaN(i)||s.push(pu(e.getTime()-i)),s.join(" \xB7 ")}function pu(r){let e=Math.max(0,Math.round(r/1e3));return e<60?"just now":e<3600?`${Math.floor(e/60)}m ago`:e<86400?`${Math.floor(e/3600)}h ago`:`${Math.floor(e/86400)}d ago`}function Z(r){return r.replace(/[&<>"']/g,e=>`&${{"&":"amp","<":"lt",">":"gt",'"':"quot","'":"#39"}[e]};`)}function Di(r){if(/[\x00-\x20\x7f]/.test(r)||/^[\\/]{2}/.test(r))return;let e=/^([^/?#]*?):/.exec(r);if(!(e&&!/^(https?|mailto)$/i.test(e[1])))return r}var bi=/^ {0,3}(#{1,6})(?:[ \t]+(.*?))?(?:[ \t]+#+)?[ \t]*$/,wi=/^ {0,3}([-*_])(?:[ \t]*\1){2,}[ \t]*$/,Mn=/^([ \t]*)([-*+]|(\d{1,9})[.)])([ \t]+|$)(.*)$/,$s=/^ {0,3}> ?(.*)$/,du=/^[ \t]*\|?[ \t]*:?-+:?[ \t]*(\|[ \t]*:?-+:?[ \t]*)*\|?[ \t]*$/,on=/^[ \t]*$/;function Gn(r){let e=0;for(let t of r)e+=t===" "?4-e%4:1;return e}function Ir(r,e){return`<div class="code">${e?`<span class="lang">${Z(e)}</span>`:""}<pre><code>${Z(r)}</code></pre></div>
|
|
38
|
+
`}var yr=r=>r;function Gs(r,e){let t=yr;yr=e??(n=>n);try{return Ms(nn(r).split(`
|
|
39
|
+
`))}finally{yr=t}}function xi(r){return bi.test(r)||wi.test(r)||$s.test(r)||Se(r)!==null||/^[ \t]*<!--/.test(r)}function Ms(r){let e="",t=0;for(;t<r.length;){let n=r[t];if(on.test(n)){t++;continue}if(/^[ \t]*<!--/.test(n)){for(;t<r.length&&!r[t].includes("-->");)t++;t++;continue}let s=Se(n);if(s){let c=t+1;for(;c<r.length&&!Ne(r[c],s);)c++;let u=l=>l.replace(new RegExp(`^[ \\t]{0,${s.indent.length}}`),"");e+=Ir(yr(r.slice(t+1,c).map(u).join(`
|
|
40
|
+
`)),wt(s.info)),t=c+1;continue}let B=bi.exec(n);if(B){let c=B[1].length;e+=`<h${c}>${xt(B[2]??"")}</h${c}>
|
|
41
|
+
`,t++;continue}if(wi.test(n)){e+=`<hr>
|
|
42
|
+
`,t++;continue}if($s.test(n)){let c=[];for(;t<r.length&&!on.test(r[t]);){let u=$s.exec(r[t]);c.push(u?u[1]:r[t]),t++}e+=`<blockquote>
|
|
43
|
+
${Ms(c)}</blockquote>
|
|
44
|
+
`;continue}if(Mn.test(n)){let c=gu(r,t);e+=c.html,t=c.end;continue}if(n.includes("|")&&t+1<r.length&&du.test(r[t+1])&&r[t+1].includes("-")){let c=[n],u=t+2;for(;u<r.length&&!on.test(r[u])&&r[u].includes("|");)c.push(r[u++]);e+=Eu(c),t=u;continue}let i=[];for(;t<r.length&&!on.test(r[t])&&(i.length===0||!xi(r[t])&&!Mn.test(r[t]));)i.push(r[t]),t++;let o=c=>/ {2,}$|\\$/.test(c),a=i.map((c,u)=>xt(c.trim().replace(/\\$/,""))+(u===i.length-1?"":o(c)?`<br>
|
|
45
|
+
`:`
|
|
46
|
+
`));e+=`<p>${a.join("")}</p>
|
|
47
|
+
`}return e}function gu(r,e){let t=Mn.exec(r[e]),n=Gn(t[1]),s=t[3]!==void 0,B=[],i=e;for(;i<r.length;){let u=Mn.exec(r[i]);if(u&&Gn(u[1])<=n+1&&u[3]!==void 0===s){let l=Gn(u[1]+u[2]+(u[4]||" ")),C=[u[5]];for(i++;i<r.length;){let h=r[i];if(on.test(h)){let f=i;for(;f<r.length&&on.test(r[f]);)f++;if(f<r.length&&Gn(/^[ \t]*/.exec(r[f])[0])>=l){for(;i<f;)C.push(r[i++].trim());continue}break}if(Gn(/^[ \t]*/.exec(h)[0])>=l)C.push(mu(h,l));else if(!Mn.test(h)&&!xi(h))C.push(h.trim());else break;i++}B.push(C);continue}break}let o=s?"ol":"ul",a=s&&t[3]!=="1"?` start="${parseInt(t[3],10)}"`:"",c=`<${o}${a}>
|
|
48
|
+
`;for(let u of B){let l=/^\[([ xX])\][ \t]+/.exec(u[0]);l&&(u[0]=u[0].slice(l[0].length));let C=l?`<input type="checkbox" disabled${l[1]===" "?"":" checked"}> `:"",h=u.length===1?xt(u[0]):Ms(u).replace(/^<p>([\s\S]*?)<\/p>\n/,`$1
|
|
49
|
+
`);c+=`<li${l?' class="task"':""}>${C}${h}</li>
|
|
50
|
+
`}return{html:c+`</${o}>
|
|
51
|
+
`,end:i}}function mu(r,e){let t=0,n=0;for(;n<r.length&&t<e&&(r[n]===" "||r[n]===" ");)t+=r[n]===" "?4-t%4:1,n++;return r.slice(n)}function Eu(r){let e=B=>B.trim().replace(/^\|/,"").replace(/(?<!\\)\|$/,"").split(/(?<!\\)\|/).map(i=>i.trim().replace(/\\\|/g,"|")),[t,...n]=r,s=`<table>
|
|
52
|
+
<thead><tr>`+e(t).map(B=>`<th>${xt(B)}</th>`).join("")+`</tr></thead>
|
|
53
|
+
<tbody>
|
|
54
|
+
`;for(let B of n)s+="<tr>"+e(B).map(i=>`<td>${xt(i)}</td>`).join("")+`</tr>
|
|
55
|
+
`;return s+`</tbody>
|
|
56
|
+
</table>
|
|
57
|
+
`}function xt(r){let e=[],t=s=>`\0${e.push(s)-1}\0`,n=r.replace(/\u0000/g,"");for(n=n.replace(/(`+)([\s\S]*?[^`])\1(?!`)/g,(s,B,i)=>t(`<code>${Z(i.replace(/^ (.*) $/,"$1"))}</code>`)),n=n.replace(/\\([!-/:-@[-`{-~])/g,(s,B)=>t(Z(B))),n=Z(n),n=n.replace(/!?\[([^\]]*)\]\(([^)\s]*)(?:\s+"[^)]*?")?\)/g,(s,B,i)=>{let o=Di(i.replace(/&/g,"&")),a=Ei(B)||i;return t(o===void 0?a:`<a href="${Z(o)}">${a}</a>`)}),n=n.replace(/<((?:https?:\/\/|mailto:)[^\s&]+(?:&[^\s&]+)*)>/g,(s,B)=>t(`<a href="${B}">${B}</a>`)),n=Ei(n);/\u0000\d+\u0000/.test(n);)n=n.replace(/\u0000(\d+)\u0000/g,(s,B)=>e[Number(B)]);return n}function Ei(r){return r.replace(/\*\*(?=\S)([\s\S]*?\S)\*\*/g,"<strong>$1</strong>").replace(/(^|[^\w])__(?=\S)([\s\S]*?\S)__(?!\w)/g,"$1<strong>$2</strong>").replace(/\*(?=[^\s*])([\s\S]*?[^\s*])\*/g,"<em>$1</em>").replace(/(^|[^\w])_(?=[^\s_])([\s\S]*?[^\s_])_(?!\w)/g,"$1<em>$2</em>").replace(/~~(?=\S)([\s\S]*?\S)~~/g,"<del>$1</del>")}var N=class Jt{static FOLD_CASE=1;static LITERAL=2;static CLASS_NL=4;static DOT_NL=8;static ONE_LINE=16;static NON_GREEDY=32;static PERL_X=64;static UNICODE_GROUPS=128;static WAS_DOLLAR=256;static LOOKBEHIND=512;static MATCH_NL=Jt.CLASS_NL|Jt.DOT_NL;static PERL=Jt.CLASS_NL|Jt.ONE_LINE|Jt.PERL_X|Jt.UNICODE_GROUPS;static POSIX=0;static UNANCHORED=0;static ANCHOR_START=1;static ANCHOR_BOTH=2},Ve={CASE_INSENSITIVE:1,DOTALL:2,MULTILINE:4,DISABLE_UNICODE_GROUPS:8,LONGEST_MATCH:16,LOOKBEHINDS:512},Un=128,Us=new Int32Array(Un),Ks=new Int32Array(Un),Tr=65535;for(let r=0;r<Un;r++)r>=97&&r<=122?Us[r]=r-32:Us[r]=r,r>=65&&r<=90?Ks[r]=r+32:Ks[r]=r;var T=class{static CODES=new Map([["\x07",7],["\b",8],[" ",9],[`
|
|
58
|
+
`,10],["\v",11],["\f",12],["\r",13],[" ",32],['"',34],["$",36],["&",38],["'",39],["(",40],[")",41],["*",42],["+",43],["-",45],[".",46],["0",48],["1",49],["2",50],["3",51],["4",52],["5",53],["6",54],["7",55],["8",56],["9",57],[":",58],["<",60],[">",62],["?",63],["A",65],["B",66],["C",67],["F",70],["P",80],["Q",81],["U",85],["Z",90],["[",91],["\\",92],["]",93],["^",94],["_",95],["`",96],["a",97],["b",98],["f",102],["i",105],["m",109],["n",110],["r",114],["s",115],["t",116],["v",118],["x",120],["z",122],["{",123],["|",124],["}",125]]);static toUpperCase(r){if(r<Un)return Us[r];let e=String.fromCodePoint(r).toUpperCase(),t=e.codePointAt(0)>Tr?2:1;if(e.length>t)return r;let n=String.fromCodePoint(e.codePointAt(0)).toLowerCase(),s=n.codePointAt(0)>Tr?2:1;return n.length>s||n.codePointAt(0)!==r?r:e.codePointAt(0)}static toLowerCase(r){if(r<Un)return Ks[r];let e=String.fromCodePoint(r).toLowerCase(),t=e.codePointAt(0)>Tr?2:1;if(e.length>t)return r;let n=String.fromCodePoint(e.codePointAt(0)).toUpperCase(),s=n.codePointAt(0)>Tr?2:1;return n.length>s||n.codePointAt(0)!==r?r:e.codePointAt(0)}},d=class{constructor(r,e=!1){this.data=r,this.isStride1=e,this.SIZE=e?2:3}getLo(r){return this.data[r*this.SIZE]}getHi(r){return this.data[r*this.SIZE+1]}getStride(r){return this.isStride1?1:this.data[r*this.SIZE+2]}get length(){return this.data.length/this.SIZE}},Vi=new Uint8Array(256);for(let r=0,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-";r<64;r++)Vi[e.charCodeAt(r)]=r;var Zi=r=>{let e=[],t=0,n=0;for(let s=0;s<r.length;s++){let B=Vi[r.charCodeAt(s)];t|=(B&31)<<n,(B&32)===0?(e.push(t),t=0,n=0):n+=5}return e},g=(r,e)=>{let t=Zi(r),n=e?t.length/2:t.length/3,s=new Uint32Array(n*3),B=0,i=0;for(let o=0;o<n;o++)B+=t[i++],s[o*3]=B,B+=t[i++],s[o*3+1]=B,s[o*3+2]=e?1:t[i++];return s},Du=r=>{let e=Zi(r),t=new Map,n=0;for(let s=0;s<e.length;s+=2){n+=e[s];let B=e[s+1],i=B>>>1^-(B&1);t.set(n,n+i)}return t},Lr=class{constructor(r){this.initializer=r,this.cache=new Map}has(r){return r in this.initializer}get(r){if(this.cache.has(r))return this.cache.get(r);let e=this.initializer[r],t=e?e():null;return this.cache.set(r,t),t}},Me=class{static _CASE_ORBIT=null;static get CASE_ORBIT(){return this._CASE_ORBIT||(this._CASE_ORBIT=Du("rCgCIgCY+rQI4QiCuuBLgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCCgCBgCBgCBgCBgCBgCBgCB+7OB-BB-BB-BB-BB-BBskQB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BC-BB-BB-BB-BB-BB-BB-BByHBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBDCBBBCBBBCBBCCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBCCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBxHBCBBBCBBBCBBB3SBmMBkNBCBBBCBBB8MBCBBB6MB6MBCBBC+EB0MB2MBCBBB6MB+MBiGBmNBiNBCBBBmKBikzCBmNBqNBkIBsNBCBBBCBBBCBBB0NBCBBB0NDCBBB0NBCBBByNByNBCBBBCBBB2NBCBBDCBBCwDFCBCBDBCBCBDBCBCBDBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBB9EBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBCCBCBDBCBBBhGBvDBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBjICCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBH2iVBCBBBlKBwiVB+jVB+jVBCBBBlMBqEBuEBCBBBCBBBCBBBCBBBCBBB+hVB4hVB8hVBjNB7MC5MB5MCzMC1MB+0yCE5MB20yCC9MBu2yCBwyyCBo0yCChNBlNBo0yCBu-UBi0yCDlNC6-UBpNDrNIu+UDzNCm0yCBzNE0yyCBzNBpEBxNBxNBtEG1NLqxyCBkxyCnFoFrBCBBBCBBDCBBEkIBkIBkICoHHsCCqCBqCBqCCgEC+DB+DBmkOBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCC+BBgCBgCBgCBgCBgCBgCBgCBgCBrCBpCBpCBpCBmjOB-BB8BB-BB-BBgEB-BB-BByBBqgOBsDB-BBtwBB-BB-BB-BBsBBgDBCB-BB-BB-BBeB-BB-BB61OB-BB-BB-DB9DB9DBQB7DBmCE9CBrDBPBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBrFB-EBOBnHB3FB-FCCBBBNBCBBCjIBjIBjIBgFBgFBgFBgFBgFBgFBgFBgFBgFBgFBgFBgFBgFBgFBgFBgFBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCB-BB-BB8kMB-BB6kMB-BB-BB-BB-BB-BB-BB-BB-BB-BBokMB-BB-BBkkMBkkMB-BB-BB-BB-BB-BB-BB-BB4jMB-BB-BB-BB-BB-BB-EB-EB-EB-EB-EB-EB-EB-EB-EB-EB-EB-EB-EB-EB-EB-EBCBBBCBoiMBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBJCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBeBCBBBCBBBCBBBCBBBCBBBCBBBCBBBdBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBCgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDL-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-C64CgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOBgmOCgmOGgmODg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FBg8FDg8FBg8FBg8FhVg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBg9rCBQBQBQBQBQBQDPBPBPBPBPBPjkC7mMB5mMBnmMBjmMBCBlmMB3lMBpiMBk8kCBCBBG-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FB-7FD-7FB-7FB-7F6FoglCEsuHRwjlCyDCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCB0DBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBG1DD97OCCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBQBQBQBQBQBQBQBQBPBPBPBPBPBPBPBPBQBQBQBQBQBQDPBPBPBPBPBPDQBQBQBQBQBQBQBQBPBPBPBPBPBPBPBPBQBQBQBQBQBQBQBQBPBPBPBPBPBPBPBPBQBQBQBQBQBQDPBPBPBPBPBPEQCQCQCQCPCPCPCPBQBQBQBQBQBQBQBQBPBPBPBPBPBPBPBPB0EB0EBsFBsFBsFBsFBoGBoGBgIBgIBgHBgHB8HB8HDQBQBQBQBQBQBQBQBPBPBPBPBPBPBPBPBQBQBQBQBQBQBQBQBPBPBPBPBPBPBPBPBQBQBQBQBQBQBQBQBPBPBPBPBPBPBPBPBQBQCSFPBPBzEBzEBRCxnOFSFrFBrFBrFBrFBREQBQClkOFPBPBnGBnGFQBQCljOCODPBPB-GB-GBNHSF-HB-HB7HB7HBRqJ53OE9tQBrmQH4Bc3BSgBBgBBgBBgBBgBBgBBgBBgBBgBBgBBgBBgBBgBBgBBgBBgBBfBfBfBfBfBfBfBfBfBfBfBfBfBfBfBfECBByZ0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BB0BBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzBBzB34BgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDBgDB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CB-CBCBBBt-UBruHBt+UB1iVBviVBCBBBCBBBCBBB3hVB5-UB9hVB7hVCCBBCCBBI9jVB9jVBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBICBBBCBBECBBN-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOB-lOC-lOG-lOzoeCBBBCBBBCBBBCBBBCBBBCBl8kCBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBTCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBnECBBBCBBBCBBBCBBBCBBBCBBBCBBDCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBKCBBBCBBBnglCBCBBBCBBBCBBBCBBBCBBECBBBvyyCDCBBBCBBBgDCCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBn0yCB90yCB10yCBh0yCBn0yCCjxyCBzyyCBpxyCBg6BBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBB-CBl0yCBvjlCBCBBBCBBBt2yCBCBBBCBBBCBBBCBBBCBBBCBBBCBBBCBBBhkzCZCBB9a-5Bd-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCB-8rCm6TCBB7gBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCH-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BmlBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvChDwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCBwCFvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvCBvC1DuCBuCBuCBuCBuCBuCBuCBuCBuCBuCBuCCuCBuCBuCBuCBuCBuCBuCBuCBuCBuCBuCBuCBuCBuCBuCCuCBuCBuCBuCBuCBuCBuCCuCBuCCtCBtCBtCBtCBtCBtCBtCBtCBtCBtCBtCCtCBtCBtCBtCBtCBtCBtCBtCBtCBtCBtCBtCBtCBtCBtCCtCBtCBtCBtCBtCBtCBtCCtCBtCk2BgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEBgEO-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-DB-D+CgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCL-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-B74CgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BhrVgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCBgCB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BB-BhB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BB2BD1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BB1BtxekCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBkCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjCBjC")),this._CASE_ORBIT}static _Print=null;static get Print(){return this._Print||(this._Print=new d(g("hB9CBjBLBCpWBDFBFGBCCCBSBCsMBClBBDxBBDCBC2BBJaBFFBSVBC-FBCvBBD6BBDkDBP6BBDwBBDOBCbBDCCBJBGfBIqCBCgFBCHBDBBDVBCGBCEEBCBDIBDBBDDBJFFBCCBDBDYBDCBCFBFBBDVBCGBCBBCBBCBBDCCBDBFBBDCBEIIBCBCIIBPBLCBCIBCCBCVBCGBCBBCEBDJBCCBCCBDQQBCBDLBIGBCCBCHBDBBDVBCGBCBBCEBDIBDBBDCBICBFBBCEBDRBLBBCFBECBCDBEBBCCCBEEBEEBBBELBFEBECBCDBDHHPUBGMBCCBCWBCPBDIBCCBCDBIBBCCBCBBDDBDJBIVBCCBCWBCJBCEBDIBCCBCDBIBBGCBCDBDJBCCBNMBCCBCyBBCCBCFBFPBDZBCCBCRBEXBCIBCDDBFBEFFBEBCCCBGBHJBDCBN5BBFcBmBBBCCCBDBCXBCCCBVBDEBCCCBFBCJBDDBhBnCBCjBBFmBBCjBBCOBCMBmBlGBCGGD4LBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBDfBEZBH1CBDFBD-TBCbBE4CBIVBKXBKTBNMBCCBCBBN9CBDJBHJBHNBCKBH4CBIqBBGlCBLeBCLBFLBFEEBoBBDEBMrBBFZBHKBE9BBDgCBCcBDKBHJBHNBDtBBDLBVsCBClFBJ7BBEOBE9BBGqBBDKBJqBBG1QBDFBDlBBDFBDHBCGCBdBD0BBCOBCNBDFBCSBDCBCIBSXBJuBBSBBDaBCMBEhBBPgBBQrEBF5UBXKBWz4BBD9LBGsBBCGGD3BBIBBPXBKGBCGBCGBCGBCGBCGBCGBCGBC9DBjBZBC4CBN1GBbPBC+BBC1CBDmDBGqBBC9CBC1CBKvBBCszcBE2BBK7KBV3FBJ8GBV7BBEJBH3BBJlCBJLBHzDBMdBEtCBCKBFgBBC2BBKNBDJBDmDBZbBLFBDFBDFBKGBCGBC7BBF9DBDJBHj9KBNWBFwBBloItLBDpDBnBGBNEBGZBCEBCCCBCCBCCBoUBhBpBBHyBBCSBCDBFEBCmEBF9FBEFBDFBDFBDCBEGBCGBOBBDLBCZBCSBCBBCOBDNBjB6DBGCBFsBBE3CBCMBEwBwBBsBBjEcBEwBBQbBFjBBKdBGqBBGdBCkBBFNBrB9EBDJBHjBBFjBBFnBBJzBBMLBCOBCGBCBBCKBCOBCGBCBBEzBBN2JBKVBLHBZFBCpBBCIBmCFBDCCBqBBCBBEDDBVBCnCBJIBxBSBCBBGgBBEaBGaBnB3BBFTBDxBBCBBGHBCCBCcBDCBFJBIIBI-BBhBmBBFLBK1BBEcBDaBGZBIDBNGBxCoCB4ByBBOyBBItBBJJBHlBBEcBJBBxGeBCpBBCCBDBBRFBJIBiBtBBJpBBXZBnBbBVWBKtCBFjBBK9BBCEBOYBIJBH0BBCRBJmBBK-CBCTBMRBCuBB-BGBCCCBCBCOBCKBH6BBGJBHDBCHBDBBDVBCGBCBBCEBCJBDBBDCBDHHGGBDGBEEBMJBCDDClBBCJBCDDCDBCJBCBBJBBe7CBCEBfnCBJJBnF1BBDlBBjBkCBMJBHMBU5BBHJBHTBdaBDOBFWB6F7BBlDyCBNHBDDDBGBCBBCdBCBBDLBKJBnCHBDtBBDKBcnCBJyCBOoCBIJB3CHB5ChBBPJBHIBCsBBCNBLcBEfBDVBCNBqCGBCBBCrBBECCBCCBHBJJBHFBCBBCkBBCBBCFBIJBHrBBFJB3HYBIQBCoBBEcB2CQQBwBBO6cBnDuDBCEBMjGBtyCiDBOvhBBRVBL68DBGmSB61G5BBn2B4RBIeBCJBFwCBCJBHdBDFBLlCBLJBCGBCUBGSBxN5BBnG6CBGYBDYBtBqCBF4BBIQBhCEBMGBK1mHBqBfBiDyDB+vIDBCGBCBBCiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBDDBh7D8HBEzNBHWBQQBQtBBDWBKzDB9B1HBLmBBDpCBJvDBWlCB7DTBNTBN2CBKYBoE0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDjJBD9VBQEBCOBxiBeBHFB2GGBCQBDGBCBBCEBG9BBiBxDxDBrBBENBDJBFBBhKeBS5BBGxOxOBoBB3GqBBFhGhGBdBCVBJBBhHGBCDBCBBCOBCkGBDPBqBrCBFJBFBByYjCBtC8BBjGDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQB1BBBvIrBBFjDBNOBDOBCOBCkBBLtFB5BcBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBCmDBmgB-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIBnkzVvHB",!1))),this._Print}static CATEGORIES=new Lr({C:()=>new d(g("AfBgDgBBOrWrWBHHBCBICCVuMuMnBBBzBBBE4B4BBGBcDBHQBXhGhGxBBB8BBBmDNB8BBByBBBQddBCCMEBhBGBsCiFiFJBBDBBXIICCBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBPMMBEB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKMMBDBbEByBPBDBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBjoIBvLBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCB-FCBHBBHBBHBBECBIIIBLBDBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIB-BGGBLBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMBxhBPBXJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBF-6DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBrCHBxDUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIlkzVBxHvw-FB",!1)),Cc:()=>new d(g("AfgDgB",!0)),Cf:()=>new d(g("tFzqBzqBBEBXhGhGyBhMhMBxCxCs5D9-B9-BBDBbEByBEBCJBw03B6H6HBBBimEQQj7IPBhjiBDBwmFHBn0rYffB+CB",!1)),Cn:()=>new d(g("4bBBHDBICCVuMuMnBBBzBBBE4B4BBGBcDBHKBvI9B9BBmDmDBMB8BBByBBBQddBCCMEBjBEBuHJJBDDBXXICCBBBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBbFB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKmDmDNBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBDBvzIBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCC-FCBHBBHBBHBBECBIIIBIBGBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIBlCJBCBBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMB3iBJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBJ76DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBjGUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIm8yVBCdBhD-DBxHvw-BB---BBB---BBB",!1)),Co:()=>new d(g("gg4B-nGh4hc9--BD9--B",!0)),Cs:()=>new d(g("gg2B--B",!0)),L:()=>new d(g("hCZBHZBwBLLFGGBVBCeBCpOBFLBPEBICCiEEBCBBDDBCHHCCBCCCBSBCyCBCqEBJlFBClBBDHHBnBBoCaBFDBuBqBBkBBBCiDBCQQBIIBLLBBBDRRCdBe4CBMZZBfBKBBFGGBUBFKKEYYBXBIKBGXBCGBRpBB7B1BBETTIJBQPBFHBDBBDVBCGBCEEBCBERROBBCCBPBBLJJBEBFBBDVBCGBCBBCBBCBBgBDBCUUBBBRIBCCBCVBCGBCBBCEBETTQBBYMMBGBDBBDVBCGBCBBCEBEffBCCBBBQSSCFBECBCDBEBBCCCBEEBEEBBBELBX1B1BBGBCCBCWBCPBEbbBBBCBBDBBfFFBGBCCBCWBCJBCEBEffBBBCBBQBBSIBCCBCoBBDRRGCBJCBZFBGRBEXBCIBCDDBFB7BvBBCBBNGB7BBBCCCBDBCXBCCCBIBCBBKDDBDBCWWBCBhBgCgCBGBCjBBcEB0DqBBVRRBEBFDBEEEBIIBBBFMBNSSBkBBCGGDqBBCsKBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBmBPBR1CBDFBErTBDQBCZBGqCBHHBIRBOSBPRBPMBCCBQzBBkBFFkC4CBIEBDhBBCGGBkCBLeByBdBDEBMrBBFZB3BWBK0BBzC+C+CBtBBSHB3BdBOBBLrBBbjBBqBCBLjBBDKBGqBBDCBqBDBCFBCBBEGGB+FBhC1IBDFBDlBBDFBDHBCGCBdBD0BBCGBCEEBBBCGBEDBDFBFMBGCBCGB1DOORMBmDFFDJBCEEBDBHGCBCBCKBDDBGEBF1B1BB8zC8zCBjHBHDBEBBNlBBCGGD3BBIRRBVBKGBCGBCGBCGBCGBCGBCGBCGBxC2O2OBrBrBBDBGBBF1CBHCBC5CBCDBGqBBC9CBSfBxBPBhQ-tGBhCs0VBkCtBBDsIBEPBLBBVuBBReBDlCByBIBDmDBDxCBVQBCCBCDBCWBezBBPxBB-BFBECCBMMBaBLWBacBIuBBdRRBDBCJBLEBCoBBYCBCHBVWBEEEBwBBCEEBDDBDBDCCZCBDKBICBNFBDFBDFBKGBCGBCqBBCNBHyDBej9KBNWBFwBBloItLBDpDBnBGBNEBGCCBIBCMBCEBCCCBCCBCCBqDBiBqLBT-BBD1BBpBLB1DEBCmEBlBZBHZBM4CBEFBDFBDFBDCBkBLBCZBCSBCBBCOBDNBjB6DBmMcBEwBBwBfBOTBCHBHlBBLdBDjBBFHBxB9EBTjBBFjBBFnBBJzBBNKBCOBCGBCBBCKBCOBCGBCBBEzBBN2JBKVBLHBZFBCpBBCIBmCFBDCCBqBBCBBEDDBVBLWBKeBiCSBCBBLVBLZBHZBnB3BBHBBhCQQBCBCCBCcBrBcBEcBkBHBCbBc1BBLVBLSBORBvDoCB4ByBBOyBBOjBBnBbBKWB7HpBBHBBRFB5BcBLJJBUBrBRBvBUBcWBN0BB6BBBDOOBrBBhBYBbjBBeDDJiBBENNBuBBPDBWCCkBRBCYBUBBgCGBCCCBCBCOBCJBIuBBnBHBDBBDVBCGBCBBCEBETTNEBfJBCDDClBBCaaCtBtBBzBBTDBVCBfvBBVBBC5F5FBtBBqBDBlBvBBV8B8BBpBBOoCoCBZBmBGB6FrBB1D-BBgBHBDDDBGBCBBCXBQCC-CHBDmBBRCCdLLBmBBIWWMtBBUTTBnCBoGgBBgBIBCkBBSyByBBcBxDGBCBBClBBWaaBEBCBBCfBPYYBqBBlISBQCCBLBChBB9DwCwCB4cBnHjGBtyCgDBQvhBBSFBa68DBGmSB61GdBj3B4RBIeBSuCBSdBTvBBRDBgBUBGSBxNsBB0G-BBhBYBDYBtBqCBGjCjCBLBhCBBCPPBNNB0mHBqBfBiDyDB+vIDBCGBCBBCiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBn7F0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDYBCYBCeBCYBCeBCYBCeBCYBCeBCYBCHB15BeBHFBmI9BBzEsBBLGBRiKiKBcBTrBBlPbBlHdBDwGwGBdBCCBCBBCGBDEBKBBhHGBCDBCBBCOBCkGB8BjCBI1lB1lBBCBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQBlqE-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB",!1)),LC:()=>new d(g("hCZBHZB7BLLBVBCeBCiGBCDBFvGBDZBhGDBDBBECBCHHCCBCCCBSBCyCBCqEBJlFBClBBKoBB44ClBBCGGDqBBDCBhV1CBDFBjkCKBGqBBDCBhCrBBgCMBChBBmD1IBDFBDlBBDFBDHBCGCBdBD0BBCGBCEEBBBCGBEDBDFBFMBGCBCGBmIFFDJBCEEBDBHGCBCBCFBFDDBCBGEBF1B1BB8zC8zCB6DBDmDBHDBEBBNlBBCGGzoetBBTbBnEtCBCWBEDBCsCBZBBE2Z2ZBpBBGIBIvCBh6TGBNEBqgBZBHZBmlBvCBhDjBBFjBB1DKBCOBCGBCBBCKBCOBCGBCBBk2ByBBOyBB+CVBLVB74C-BBhrV-BBhBYBDYBtpZ0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDYBCYBCeBCYBCeBCYBCeBCYBCeBCYBCHB15BJBCTBHFB2uCjCB",!1)),Ll:()=>new d(g("hDZB7BqBqBBWBCHBC2BCBQCBuBCDECBBBDCCDEEBFFDEEBBBDDDCCCDCCBCCDEECDDBDDBBBHGDCOCBSCBDDCEEC4BCBFBDDDBCCFICBjCBDZBiGCCEEEBBBTccBhBBCBBECBCWCBDBCGDB0B0BBuBBCgBCK0BCDMCBgDCxBoBBo6CqBBDCB5XFBjkCIBC2D2DBqBBgCMBChBBnD0ECBHBCgDCBHBJFBLHBJHBJFBLHBJHBJNBDHBJHBJHBJEBCBBHEEBBBCBBJDBDBBJHBLCBCBBzIEEBEEcKFDBBJDBF2B2Bs1CvBBCEEBGCFCCBCCBEBGiDCBIICFFNlBBCGG0oesBCUaCoEMCBBBC+BCBGBCCCDICFCCDCCBBBCSCGGGCMCFCCDOCbEE2ZqBBGIBIvCBh6TGBNEBqhBZBumBnBBpEjBB8EKBCOBCGBCBBk4ByBB+DVB75CfBhsVfB8BYBnqZZBbGBCRBbZBbDBCCCBFBCKBbZBbZBbZBbZBbZBbZBbZBbZBbbBdYBCFBbYBCFBbYBCFBbYBCFBbYBCFBC15B15BBIBCTBHFB4vChBB",!1)),Lm:()=>new d(g("wVRBFLBPEBICCmEGG-OnHnHlFBBuIBBFgBgBKEEhFoFoF1mBgEgE2R72B72BsDkTkTxOFBvF+BBOjBjBBjBByVOORMBg-CBByHgGgG2OsBsBBDBGiDiDB+C+CBBB34bjnBjnBBEBvIzDzDdBB6DIBxCYYpDDBEBB2OXXqEtDtDWBBoDDBKngVngVuBBBh-BFBCpBBCIB0sBhBhB2K04D04DnrTDB9PCBpBBBnRMBhCBBCPPB9-P9-PBCBCGBCBByhM9BBqGGBud0Q0QsSAB",!1)),Lo:()=>new d(g("qFQQhIFFBCBxGBB7ZaBFDBuBfBCJBkBBBCiDBCZZBLLBBBDRRCdBe4CBMZZBfBWVBrBYBIKBGXBCGBRoBB8B1BBETTIJBROBFHBDBBDVBCGBCEEBCBERROBBCCBPBBLJJBEBFBBDVBCGBCBBCBBCBBgBDBCUUBBBRIBCCBCVBCGBCBBCEBETTQBBYMMBGBDBBDVBCGBCBBCEBEffBCCBBBQSSCFBECBCDBEBBCCCBEEBEEBBBELBX1B1BBGBCCBCWBCPBEbbBBBCBBDBBfFFBGBCCBCWBCJBCEBEffBBBCBBQBBSIBCCBCoBBDRRGCBJCBZFBGRBEXBCIBCDDBFB7BvBBCBBNFB8BBBCCCBDBCXBCCCBIBCBBKDDBDBYDBhBgCgCBGBCjBBcEB0DqBBVRRBEBFDBEEEBIIBBBFMBNyDyDBnKBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBmBPByDrTBDQBCZBGqCBHHBIRBOSBPRBPMBCCBQzBBpBkCkCBhBBC0BBIEBDhBBCGGBkCBLeByBdBDEBMrBBFZB3BWBK0BBxFuBBSHB3BdBOBBLrBBbjBBqBCBLdByDDBCFBCBBE7hB7hBBCB4-C3BBZWBKGBCGBCGBCGBCGBCGBCGBCGBoR2B2BF1CBJCCB4CBFGGBpBBC9CBSfBxBPBhQ-tGBhC0wUBC2jBBkCnBBJrIBFPBLBBjCyByBBkCBqFoDoDEGBCCBCDBCWBezBBPxBB-BFBECCBMMBaBLWBacBIuBBuBEBDIBLEBCoBBYCBCHBVPBCFBEEEBwBBCEEBDDBDBDCCZBBEKBIPPBEBDFBDFBKGBCGByEiBBej9KBNWBFwBBloItLBDpDBkCCCBIBCMBCEBCCCBCCBCCBqDBiBqLBT-BBD1BBpBLB1DEBCmEBqDJBCsBBDeBEFBDFBDFBDCBkBLBCZBCSBCBBCOBDNBjB6DBmMcBEwBBwBfBOTBCHBHlBBLdBDjBBFHBhEtCBjDnBBJzBB9CzBBN2JBKVBLHB5EFBDCCBqBBCBBEDDBVBLWBKeBiCSBCBBLVBLZBHZBnB3BBHBBhCQQBCBCCBCcBrBcBEcBkBHBCbBc1BBLVBLSBORBvDoCB4FjBBnBDBCxJxJBoBBHBBRCBCBB5BcBLJJBUBrBRBvBUBcWBN0BB6BBBDOOBrBBhBYBbjBBeDDJiBBENNBuBBPDBWCCkBRBCYBUBBgCGBCCCBCBCOBCJBIuBBnBHBDBBDVBCGBCBBCEBETTNEBfJBCDDClBBCaaCtBtBBzBBTDBVCBfvBBVBBC5F5FBtBBqBDBlBvBBV8B8BBpBBOoCoCBZBmBGB6FrBB0GHBDDDBGBCBBCXBQCC-CHBDmBBRCCdLLBmBBIWWMtBBUTTBnCBoGgBBgBIBCkBBSyByBBcBxDGBCBBClBBWaaBEBCBBCfBPYYBnBBCBBlISBQCCBLBChBB9DwCwCB4cBnHjGBtyCgDBQvhBBSFBa68DBGmSB61GdBj3B4RBIeBSuCBSdBTvBB0BUBGSB0NnBB2MqCBGwFwFB0mHBqBfBiDyDBuwIiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBxzI2P2PBrBBiBiKiKBcBTrBBlPaBmHdBDwGwGBdBCCBCBBCGBDEBKiHiHBFBCDBCBBCOBCkGB8pBDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQBlqE-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB",!1)),Lt:()=>new d(g("lOGDnB2sH2sHBGBJHBJHBNQQwBAB",!1)),Lu:()=>new d(g("hCZBmDWBCGBiB2BCDOCDuBCBECEBBCCCBCCBBBDDBCBBCCBEBBCBBCECBCCDCCBCCBBBCCCBEEIJDCMCDQCDDDCCBC4BCIBBCBBDCCBCBCGCiJCCEJJHCCBBBCCCBCCBPBCIBkBDDBBBEWCGDDCBBDyBBxBgBCK2BCBMCD+CCDlBBq6ClBBCGGzW1CB0kCHHBpBBDCBhK0ECKgDCKHBJFBLHBJHBJFBMGCJHBpCDBNDBNDBNEBMDBnIFFECBDCBDEEBDBHGCBCBDDBLBBG+B+B9zCvBBxBCCBBBDGCBCBCDDJCBCgDCJCCFuqeuqeCqBCUaCoEMCE8BCLECBICFCCDCCEUCBDBCEBCOCBCBCCCBQCZs5Vs5VBYBmmBnBBpEjBB9EKBCOBCGBCBBr3ByBB+EVB75CfBhsVfBhCYBoqZZBbZBbZBbCCBGDBDDBCBCHBbZBbBBCDBDHBCGBcBBCDBCEBCEEBFBcZBbZBbZBbZBbZBbZBfYBiBYBiBYBiBYBiBYBiB2pE2pEBgBB",!1)),M:()=>new d(g("gYvDB0IGBoIsBBCCCBCCBCCpCKBxBUBRmDmDBFBDFBDBBCDBkBffBZB8CKB7BIBKZZBCBCIBCCBCEBsBCB8BIBrBXBCgBB3BCBCRBCGBLBBeCB5BCCBFBDBBDCBKLLBbbDCB5BCCBDBFBBDCBEffBEEMCB5BCCBGBCCBCCBVBBXFBCCB5BCCBFBDBBDCBICBLBBf8B8BBDBECBCDBKpBpBBDB4BCCBFBCCBCDBIBBMBBeCB5BCCBFBCCBCDBIBBMBBQNNBCB4BBBCGBCCBCDBKLLBeeBBBnCFFBEBCCCBGBTBB+BDDBFBNHBjDDDBHBMGBqCBBcECFBByBTBCBBGKBCjBBKlDlDBSBYDBFCBCCBDGBEDBOLBCLLBCBgWCBzdDBdCBeBBfBBhCfBKuBuBBBBC2D2DBjBjB3DLBFLB8GEB6BJBCcBDxBxBBsBBDLBVEBwBQBnBIBNCBfMB5BNBxBTB5ECBCUBFHHDCBnG-BBxWgBB--CCBuEhDhDBeBrRFBqDBB1udDBCJBhBBBxCBBxIEEFYYBDBF0C0CBzBzBBQBbRBOnBnBBGBaMBtBDBwBNBlBkCkCBMBNJJBuBuBBBBzBCCBBBDBBGBBCqBqBBDBGBBtHHBCBBx5TiXiXBOBRPBuejHjH2EEBn0BCBCBBGDBpBCBFmFmFB+R+RBCBiCEB+JBBuCFBnCKByBDB7DCB2BOBqBDDBLLBCBuBKBI+B+BBBBlBNBRBBtBNNBBBxBNBJDBCBB9CLBHDD+ELBWDB4BBBCGBDBBDCBKLLBDDBFBEEBkCIBCDDCDBCEBCPPBzCzCBQBYyCyCBSBsHGBDIBcBBzCQBrDMBmDOBhIOB2HFBCBBDDBCCCBuEuEBFBDGBEddBIBpBGBCDBJKKBJBvBPBnGHBoGHBCHBzCVBCNB7DFBECCBCCBFBCjCjCBDBCBBCEB8KDBKBBCxBxBBFBEEBYmnFmnFHOBpmLRBhuCEB8BGB5gBCCB1BBIDByCMMBslTslTBizEizEBsBBDWB-QEBEFBJHBDGBfDB1ECB89B2BBFxBBJPPXEBCOBxqBGBCQBDGBCBBCEBlDhFhFBFB4L+B+BBCB9PDB-HBB0HDDIBBG7O7OBFBuDGB29lYvHB",!1)),Mc:()=>new d(g("joC4B4BDCBJDBCBBzBBB7BCBHBBDBBLsBsB7BCBjC7B7BBBBJCCB2B2BB7B7BCHHBDDBLLnDBBCBBECBCCBLqBqBBBB+BDB+BBB7BCCBDBDBBCBBKBBdPPB7B7BBBBGCBCCBLrBrBBsCsCBBBHHBTBBrKBBgCsFsFBFFHDDBaaBLLBBBDGBWBBDFBDLLBBB5zBffiEIIBGBCBB7KDBDCBFBBCFBhHBB7BCCKCCBJJBEByExBxBGCCBDBCBB+BffFBBD9B9BDCBCEEBxBxBBGBJBBsFWW35EBB0-dBBD5C5CBzBzBBOBvEBBwBxBxBBFFBDDBBBvDBBDBBZuBuBCuDuDDBBGuHuHBCCBCCBCC0gZCCgEuBuBBBBFBB0DZZB8B8BxBCBKBBO+C+CBBBEBBCrFrFBBBgBBB7BBBCDBDBBDCBKLLB1C1CBBBIDDCDBCBBCmDmDBBBJBBErDrDBBBHCCBCBDuHuHBBBHDBDyDyDBBBJBBCuDuDCBBHoDoDCBBFmImIBBBK4H4HBEBCBBFDDCvEvEBBBJDBF1C1CeBB-BqGqGECCoGPPrDIID2G2GBDBFBBC-K-KBNNxBBBJBBCpvQpvQBBBlxD2BBpDBB0rYBBHFB",!1)),Me:()=>new d(g("okBBB1xF-wB-wBBCBCCBsshBCB",!1)),Mn:()=>new d(g("gYvDB0IEBqIsBBCCCBCCBCCpCKBxBUBRmDmDBFBDFBDBBCDBkBffBZB8CKB7BIBKZZBCBCIBCCBCEBsBCB8BIBrBXBCfB4BCCFHBFEEBFBLBBe7B7BFDBJVVBbbDBB6BFFBFFBDDBBBEffBEEMBB6BFFBDBCBBFVVBXXBEBC7B7BDCCBCBJIIBMMBff+BNNzBEE4BCCBBBGCBCDBIBBMBBe7B7BDHHGBBVBBdBB6BBBFDBJVVBeepCIIBBBC7C7CDGBNHBjDDDBHBMGBqCBBcEC4BNBCEBCBBGKBCjBBKnDnDBCBCFBCBBDBBaBBFCBRDBODDBHHQgWgWBBBzdCBeBBfBBfBBhCBBCGBJDDBJBKuBuBBBBC2D2DBjBjB3DCBFBBKHHBBB8GBBD7B7BCGBCCCDHBHJBDxBxBBMBCeBDLBVDBxBCCBDBCGGpBIBNBBhBDBDBBCCB5BCCBEECCB7BHBDBB5ECBCMBCGBFHHEBBnG-BBxWMBFEEBKB--CCBuEhDhDBeBrRDBsDBB1udFFBIBhBBBxCBBxIEEFaaBGG4EBBbRBOnBnBBGBaKBvBCBxBDDBCBDBBoBkCkCBEBDBBDBBNJJwB0B0BCCBDBBGBBCrBrBBJJvHDDFx5Tx5TiXPBRPBuejHjH2EEBn0BCBCBBGDBpBCBFmFmFB+R+RBCBiCEB+JBBuCFBnCKByBDB8D3B3BBNBqBDDBLLBBByBDBDBBI+B+BBBBlBEBCHB-BNNB1B1BBHBLDBDgDgDBBBDCCBHHD+E+EEHBWBB6BBBEmBmBBFBEEBnCFBOECPBB2CHBDCBCYY1CFBCFFBCCBvHvHBCBHBBCBBcBB2CHBDCCBrDrDCDDBEBCmDmDCDDBCBCEBkIIBCBBhIBBCFFxEDBDBBFhBhBBIBpBFBDDBJKKBEBDCBvBMBCBBnGCCBBBCqGqGBFBCFBCzCzCBUBDGBCBBCBB7DFBECCBCCBFBCpCpCBEEC8K8KBMMB1B1BBDBGCCYmnFmnFHOBpmLLBECBhuCEB8BGB5gBgCgCBCByC5lT5lTBizEizEBsBBDWBhRCBSHBDGBfDB1ECB89B2BBFxBBJPPXEBCOBxqBGBCQBDGBCBBCEBlDhFhFBFB4L+B+BBCB9PDB-HBB0HDDIBBG7O7OBFBuDGB29lYvHB",!1)),N:()=>new d(g("wBJB5DBBGDDBBBitBJBnEJBnGJB9MJB3DJBFFBtDJB3DJB3DJBDFBvDMB0DJBJGBoDJBpDGBISBuDJBhDJB3DJBnCTBtIJBnCJBwWTBybCBwHJBHJBXJBtJJBhEKBmFJBHJB3FJB3CJBnEJBHJB3gBEEBEBHJBnGyBBDEB3W7BBvCVB3TdBqrBqYqYaIBPCB4KDBrEJBfHBCOBhBJBoBOBh7cJB9FJBhKFB7EJBnBJBnGJBXJB3CJB3MJB34UJBuPsBBN4BBSBB2KaBlBDBeJJnEEBrGJBvdHBaGBoBIBsCEBXFBhFBBDPBDtBBhCIB1BBBfCBsCEBpDHBZHBqBGBrKFBxBJBHJB3IeB-EJBrBDBxDGBnEdBhEJB9BJBxEJBITB8HJB3KJB3DJB3LJBnDJBHTBtCLBlNSB+CJB3UJB3CcBkHJBnCJB3BJBnLJBnDUBshBuDBimPJBnpCJB3CJBnEJBCGBvQJBnIWB+KCB6nXJBnuBTBNTBtDYB2iBxBBhqCJBnNJB3PJB4HJBtWIBhEJB4Y6BBCCBCDBtCsBBCOBjeMBk3CJB",!1)),Nd:()=>new d(g("wBJnxBJnEJnGJ9MJ3DJ3DJ3DJ3DJ3DJ3DJ3DJ3DJ3DJhDJ3DJnCJ3IJnCJn6BJnBJtJJhEJnFJHJ3FJ3CJnEJHJnuiBJnVJnBJnGJXJ3CJ3MJ34UJnsBJnkCJHJ9YJhEJ9BJxEJ3IJ3KJ3DJ3LJnDJHTtCJnNJnDJ3UJ3CJ3HJnCJ3BJnLJ3uQJnpCJ3CJnEJ3QJ37XJ12CxBhqCJnNJ3PJ4HJ2aJ30EJ",!0)),Nl:()=>new d(g("u3FCBwzCiBBDDB-zDaaBHBPCBs1dJBxyW0BBtOJJnEEBrhIuDBm8SCB",!1)),No:()=>new d(g("yFBBGDDBBB2pCFB5LFB5DCBmEGB6GGBSIByNJB2hBTB0jBJBhP20B20BEFBHJBnGPBqB3W3WB6BBvCVB3TdBqrB1kB1kBBCBrEJBfHBCOBhBJBoBOBxrdFBymWsBBiCDBSBB2KaBlBDB1pBHBaGBoBIBsCEBXFBhFBBDPBDtBBhCIB1BBBfCBsCEBpDHBZHBqBGBrKFBhLeB-EJBrBDBxDGBnETB8LTBmqBBBvNIBobSB0aUBn8SGB-YWBqhZTBNTBtDYBvqFIBid6BBCCBCDBtCsBBCOBjeMB",!1)),P:()=>new d(g("hBCBCFBCDBLBBEBBbCBCccCkBkBGEELBBEEE-VJJzOFBqBBB0BCCDDDtBBBVBBCBBOCCBBBrCDBnDsBsBBMBqHCB3BOBgBmImIBLLtE5D5D6DnMnMNwLwL7CLLBpFpFBNBCmBmBBCBoCrCrCBDBFBBwDFBsFlTlTBHB4EuTuTtBBBvCCBoCBB+ECBCCBmBKB6JBB5GBBhEGBCFBhFBBLGBdCB9DDB8BEB-BBBhCHBM9Z9ZBWBJTBCMBCLBfBBPBB6TDBeBB+hBNBwCBBgBJB0MVBgCDBhBBB8XDBCBBxDwEwEBtBBCfBDLBkNCBFJBDLBRNNjD7C7CjgdBBuICBkDLL0DFB9LDB3CBBpBCBCyByBBwBwBiDMBRBB9DDB-DBBRBB6HzqUzqUBxGxGBIBXiBBCNBCFFCBB2ECBCFBCDBLBBEBBbCBCccCCCBFB7MCB9UxBxB-MoXoXoGgBgBxIIBnBxDxDBFBjCGB6CDByO-J-JjBlElEBDBtBDB+FGBuDBBCDB-DDBxBBBwCDBFOOCCB5CFBsDrJrJBCCBzDzDBDBLBBCpDpD7HWBqDCBdMBtCjEjEBBB9HpIpIBBB8E9C9CBGB0CCBCEB+CJB4GgDgDBDBrBBBmUBBrCMBwFxjBxjBBDB97CBB8zOBBmEiCiCBDBJpRpRBBBoJDBoK9lT9lTovHEB07C-a-aBAB",!1)),Pc:()=>new d(g("-Cg-Hg-HBUU-u3BBBZCBwHAB",!1)),Pd:()=>new d(g("tB9qB9qB0BiyDiyDmgBqgCqgCBEBiwDDDgBBBFdd-NUUwDxszBxszBBmBmBLqFqFhzD-J-J",!1)),Pe:()=>new d(g("pB0B0BgB+1D+1DC-6B-6BqtC4B4BQ7T7TCff-hBMCxChBhBCGC1MUChCCCiBmhBmhBCECtBGCtNICEGCDBB-ozB6G6GeOCESSCCCrF0B0BgBGD",!1)),Pf:()=>new d(g("7F+6H+6HEddpuDCCFDDQEE",!1)),Pi:()=>new d(g("rFt7Ht7HDBBDaapuDCCFDDQEE",!1)),Po:()=>new d(g("hBCBCCBDECBLLBEEBcclCGGPBBI-V-VJzOzOBEBqB3B3BDDDtBBBVBBCBBOCCBBBrCDBnDsBsBBMBqHCB3BOBgBmImIBLLtE5D5D6DnMnMNwLwL7CLLBpFpFBNBCxDxDrCEBFBBwDFBsFlTlTBHBmY9D9DBBBoCBB+ECBCCBmBFBCDB6JBB5GBBhEGBCFBhFBBLGBdCB9DDB8BEB-BBBhCHBMjajaBJJBGBJIBDDBDCBEKBCCCBIB7kDDBCBBxDwEwEBFFBBBDDDBHBCBBCDDBLLBDBCJBDDBCCCBLBDCBtNCB6B+F+FjgdBBuICBkDLL0DFB9LDB3CBBpBCBCyByBBwBwBiDMBRBB9DDB-DBBRBB6HlxUlxUBFBDXXVBBDDBECBCDBICBHCCB2E2EBBBCCBDECBLLBEEBcclBDDB7M7MBBB9UxBxB-MoXoXoGgBgBxIIBnBxDxDBFBjCGB6CDB0ZlElEBDBtBDB+FGBuDBBCDB-DDBxBBBwCDBFOOCCB5CFBsDrJrJBCCBzDzDBDBLBBCpDpD7HWBqDCBdMBtCjEjEBBB9HpIpIBBB8E9C9CBGB0CCBCEB+CJB4GgDgDBDBrBBBmUBBrCMBwFxjBxjBBDB97CBB8zOBBmEiCiCBDBJpRpRBBBoJDBoK9lT9lTovHEB07C-a-aBAB",!1)),Ps:()=>new d(g("oBzBzBgB-1D-1DC-6B-6B-rCEEnB4B4BQ7T7TCff-hBMCxChBhBCGC1MUChCCCiBmhBmhBCECaTTCECtNICEGCDipzBipzB4GeeCMCESSCCCrFzBzBgBEEDAB",!1)),S:()=>new d(g("kBHHRCBgBCCcCCkBEBCBBDCCBCBDEEfgBgBrODBNNBGGBCCCBPB2DPPBxDxDsErIrIBBB3DCBDDDBvGvGLUUB4H4HIBBpEqLqLBHHB2H2H-DjEjEBGBlEwGwGqBmGmGiGCBQCCBBBDFBVECmEHBCFBCBBGDBmGBBxXJB0WuLuLlL+E+EBgBBiLJBKIBhiBCCBBBMCBOCBOCBOBBmCOOoBCBOCBUhBB-BBBCDBCBBLCCBBBGFBCECFMMBFFBDBGDBC7B7BBFFB2LBFcBD+HBXKByCtCBXnTBtBwBBDeBLyMBX+BBFfBD1LBDpEBmHFBmLBBvBZBC4CBN1GBbPBFOOBNNWBBHBB8CBB0HBBFJBhBlBBKRRBdBMdBJQQBeBLmBBQ-JBhuG-BBx0V2BB6RWBKBBoDBB+EDBLDB+RCBiHPPB+9T+9TpEgBBuLPBhCBB3BHBtBDBjDCCBBBD7E7EHRRBBBgBCCcCCiEGBCGBOBB6JIB6BQBDCBCMBEwBwBBrBB7zBBBwSmWmWBiKiKBGBnjC2kC2kCBbBr6SDBG3qU3qUk7DvHBLCBEzNBHWBQQBgDzDB9B1HBLmBBD7BBGCBXBBIdBF8BBWhCBE7F7FB1CBrbaagBaagBaagBaagBaa9B-PB4BDBzBHBCNBCBBp2BwNwNttCEE+DiOiOBvIvIBqBBFjDBNOBDOBCOBCkBBYgFB5BcBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBC7CBLAB",!1)),Sc:()=>new d(g("kB+D+DBCBqnB8D8DzPBBzPBBI2H2HoImSmS8sClmClmCBgBB37hBkuVkuVtD7E7E8GBBEBB3-HDB-4wBxtCxtC",!1)),Sk:()=>new d(g("+CCCoCHHFEEqQDBNNBGGBCCCBPB2DPPBjoBjoB15FCCBBBMCBOCBOCBOBB9kEBBkzdWBKBBoDBBxePPBniUniUBPB8bCCjF4g9B4g9BBDB",!1)),Sm:()=>new d(g("rBRRBBB+BCCuBFFmBgBgB-XwQwQBBB8xGOOoBCBOCBsEoBoBBDBHlClCBDBGBBFGDIgBgBBDDCgBgBBqIBhBBB7CffBXBpBFB2OKK3BHBwDxKxKBDBDeBLPBhIiEBX+BBFfBDhIBxBUBDFB9+zB5Z5ZCCBlFRRBBB+BCCkEHHBCBitDBBhrwBx+Bx+BagBgBagBgBagBgBagBgBat5Ft5FB-uC-uCBHB",!1)),So:()=>new d(g("mFDDFCCyerIrIBgEgEBvGvGLUUB4H4HkQ2L2LjEFBClElEwGqBqBoMCBQCCBBBDFBVECmEHBCFBCBBGDBmGBBxXJB0WzWzW+EhBBiLJBKIBksBBBCDBCBBLCCBHHBEBCECFMMBPPCBBC7B7BBKKBDBDDBCBBCBBCGBCeBDBBCCCBdBtIHBFTBDGBDwCBCdBanBBHnCBXKByCtCBX2FBCIBC1BBJuDBC3HBtBrBBhC-HBhQvBBWBBHmBBDpEBmHFBmLBBvBZBC4CBN1GBbPBFOOBNNWBBHBBxKBBFJBhBlBBKRRBdBMdBJQQBeBLmBBQ-JBhuG-BBx0V2BBibDBLBBC+R+RBBBqqUPBuLPBhCBB3BHBuBCBlPEEFBBOBB6JIB6BQBDCBCMBEwBwBBrBB7zBBBwSpgBpgBBGBnjC2kC2kCBGBFQBr6SDBG3qU3qUk7DvHBLCBEzNBHWBQPBhDzDB9B1HBLmBBD7BBGCBXBBIdBF8BBWhCBE7F7FB1CBqlB-PB4BDBzBHBCNBCBBp2B96C96CiEyWyWBqBBFjDBNOBDOBCOBCkBBYgFB5BcBOrBBFIBIBBPFB7E6HBG4WBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBB-B3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBC7CBLAB",!1)),Z:()=>new d(g("gBgEgEgvFgsCgsCBJBeBBGwBwBh9DAB",!1)),Zl:()=>new d(g("ohIA",!0)),Zp:()=>new d(g("phIA",!0)),Zs:()=>new d(g("gBgEgEgvFgsCgsCBJBlBwBwBh9DAB",!1)),ASCII_Hex_Digit:()=>new d(g("wBJIFbF",!0)),Alphabetic:()=>new d(g("hCZBHZBwBLLFGGBVBCeBCpOBFLBPEBICC3CeeBQBCBBDDBCHHCCBCCCBSBCyCBCqEBJlFBClBBDHHBnBBoBNBCCCBCCBCCJaBFDBeKBG3BBCGBPlDBCHBFHBFCBLCBDRRBuBBOkDBZgBBKBBFGGBWBDSBUYBIKBGXBCGBIJJBoBBLLBEGBHrCBCPBCCBFOBOSBCHBDBBDVBCGBCEEBCBEHBDBBDBBCJJFBBCEBNBBLFFBBBCFBFBBDVBCGBCBBCBBCBBFEBFBBDBBFIIBCBCSSBEBMCBCIBCCBCVBCGBCBBCEBEIBCCBCBBEQQBCBWDBFCBCHBDBBDVBCGBCBBCEBEHBDBBDBBKBBFBBCEBORRBCCBEBECBCDBEBBCCCBEEBEEBBBELBFEBECBCCBEHHpBMBCCBCWBCPBEHBCCBCCBJBBCCBCBBDDBdDBCHBCCBCWBCJBCEBEHBCCBCCBJBBGCBCDBOCBNMBCCBCoBBDHBCCBCCBCGGBCBIEBXFBCCBCRBEXBCIBCDDBFBJFBCCCBGBTBBO5BBGGBH0B0BBECBDBCXBCCCBRBCCBDEBCHHPDBhBgCgCBGBCjBBFSBFPBCjBBkC2BBCDDBDBR-BBLDBDlBBCGGDqBBCsKBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBmBPBR1CBDFBErTBDQBCZBGqCBEKBITBMUBNTBNMBCCBCBBNzBBDSBPFFkC4CBIqBBGlCBLeBCLBFIBYdBDEBMrBBFZB3BbBF+BBDTBzBYYBMMBBByBzBBCOBCHB0BpBBDDBLrBBCKBP2BBXCBLjBBDKBGqBBDCBqBDBCFBCBBEGGB+FBUhBBM1IBDFBDlBBDFBDHBCGCBdBD0BBCGBCEEBBBCGBEDBDFBFMBGCBCGB1DOORMBmDFFDJBCEEBDBHGCBCBCKBDDBGEBFSSBnBBuZzBB34BkHBHDBEBBNlBBCGGD3BBIRRBVBKGBCGBCGBCGBCGBCGBCGBCGBCfBwB2O2OBBBaIBIEBDEBF1CBHCBC5CBCDBGqBBC9CBSfBxBPBhQ-tGBhCs0VBkCtBBDsIBEPBLBBVuBBGHBEwDBoBIBDmDBDxCBVUBCgBBZzBBNjCBCtBtBBEBECCBBBLgBBGiBBOcBEyBBCLBQRRBOBLEBC2BBKNBTWBEkCBCCCZCBDPBDDBMFBDFBDFBKGBCGBCqBBCNBH6DBWj9KBNWBFwBBloItLBDpDBnBGBNEBGLBCMBCEBCCCBCCBCCBqDBiBqLBT-BBD1BBpBLB1DEBCmEBlBZBHZBM4CBEFBDFBDFBDCBkBLBCZBCSBCBBCOBDNBjB6DBmC0BBsIcBEwBBwBfBOdBGqBBGdBDjBBFHBCEBrB9EBTjBBFjBBFnBBJzBBNKBCOBCGBCBBCKBCOBCGBCBBEzBBN2JBKVBLHBZFBCpBBCIBmCFBDCCBqBBCBBEDDBVBLWBKeBiCSBCBBLVBLZBHZBnB3BBHBBhCDBCBBGHBCCBCcBrBcBEcBkBHBCbBc1BBLVBLSBORBvDoCB4ByBBOyBBOnBBjBbBEGGBVB7HpBBCBBEBBRFBzBCBEcBLJJBUBrBRBvBUBcWBKlCBsBEBL4BBKOOBXBYyBBSDBJiBBEKKB+BBCDBKBBLCCkBRBChBBDHHBCB-BGBCCCBCBCOBCJBI4BBYDBCHBDBBDVBCGBCBBCEBEHBDBBDBBEHHGGBdJBCDDClBBCJBCDDCDBCBBECCtBhCBCCBCDBVCBfhCBDBBC5F5FB0BBDGBaFBjB+BBCEE8B1BBDoCoCBZBDNBWGB6F4BBoD-BBgBHBDDDBGBCBBCdBCBBDBBDDB+CHBDtBBDFBCCCBccBxBBDJBSnCBGTTBnCBoDHB5CgBBgBIBCsBBCGBCyByBBcBDVBCNBqCGBCBBCrBBECCBCCBBBCDDBZZBEBCBBCkBBCBBCDBCYYBqBBlIWBKQBCoBBECBwDwCwCB4cBnDuDBSjGBtyCgDBQvhBBSFBa68DBGmSB61GuBBy2B4RBIeBSuCBSdBTvBBRDBgBUBGSBxNsBB0G-BBhBYBDYBtBqCBF4BBIQBhCBBCNNBFBK1mHBqBfBiDyDB+vIDBCGBCBBCiJBQeeBBBDPPBCBJrMBloCqDBGMBEIBIJBFi7Fi7FBzCBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDYBCYBCeBCYBCeBCYBCeBCYBCeBCYBCHB15BeBHFB2GGBCQBDGBCBBCEBG9BBiBxDxDBrBBLGBRiKiKBcBTrBBlPbBlHdBDwGwGBdBCVBJBBhHGBCDBCBBCOBCkGB8BjCBEEE1lBDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQB1TZBHZBHZB3zD-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB",!1)),Dash:()=>new d(g("tB9qB9qB0BiyDiyDmgBqgCqgCBEB+BoBoBQnMnMlgDDDgBBBFdd-NUUwDxszBxszBBmBmBLqFqFhzD-J-J",!1)),Emoji:()=>new d(g("jBHHGJBwDFFu8HNN5GXX7CFBQBBwLBBNnFnFaKBFCBoGoHoHBLLK7B7BBCBCEBKGDBDDFDDCBBDIEBJJBBBGCCGLBMBBDCCBCCTDDBTTBEBCCCBEEBGGDBBFBBMBBGBBDGGBECBVVBGGBEBCDBDFFDDDBEBCDDCCCHEEHLLBQQDFFCFFBBBCMMBxBxBBBBKeP1LBBwOCBUBB0BFF7mBNN6SCCrrvDrGrGhFBBNBBPDDBIBsCZBCBBYVVDIBWBBvFhBBDvDBDBBCCBDyCBDCBCmIBC+BBMFBCXBIBBDHBNDDBCBDFFBOOBDDJBBKGGBBBNCBJCBDCCFHHEHHB0CBxBlCBGHBDDBEJBECCBEEDJBkHLBF8I8IBtBBCJBC4FBxDMBEKBE4BBCFFBOBDLBFJB",!1)),Emoji_Component:()=>new d(g("jBHHGJB0+H2G2Gsp3B3+8B3+8BBYB8PEBxtBDBtzhY-CB",!1)),Emoji_Modifier:()=>new d(g("7-8DE",!0)),Emoji_Modifier_Base:()=>new d(g("9wJ8G8GRDB4jzD9B9BBBBDDDBBB2DBBDKBWSBEFFBBBCCBICCZqGqGBFFWFFBvFvFBBBEEB0CRRBBBKMMgSDDJHBHKKBIBDCB5B+B+BBCCBCCSCBCMBmHCBrBIB",!1)),Emoji_Presentation:()=>new d(g("64IBBuGDBEDDqQBBWBBzBLBsBUUOJJBSSBGGBJJGWWIBBCFFDIIFBBdkBkBCFFBBBC+B+BBBBZPP8aBB0BFFvlxDrGrG-FDDBIBsCZBCZZVDDBDBCCBWBBvFgBBNIBClCBCVBNqBBFEBNQBEEEBlCBCCCB5FBD+BBODBCXBTbbBOO3C0CBxBlCBHEEBBBDDBEDBMBBIIBkHLBF8I8IBtBBCJBC4FBxDMBEKBE4BBCFFBOBDLBFJB",!1)),Extended_Pictographic:()=>new d(g("pFFFu8HNN5GXX7CFBQBBwLBBNnFnFaKBFCBoGoHoHBLLK7B7BBCBCEBKGDBDDFDDCBBDIEBJJBBBGCCGLBMBBDCCBCCTDDBTTBEBCCCBEEBGGDBBFBBMBBGBBDGGBECBVVBGGBEBCDBDFFDDDBEBCDDCCCHEEHLLBQQDFFCFFBBBCMMBxBxBBBBKeP1LBBwOCBUBB0BFF7mBNN6SCCrrvDoBoBBCBlDLBQBBQPPBmBmBBIBxDBBNBBPDDBIBU3BBcOBLVVDIBCDBKWBH7FBDvDBDBBCCBDyCBDCBCDBG9HBC+BBMFBCXBIBBDHBNDDBCBDFFBOOBDDJBBKGGBBBNCBJCBDCCFHHEHHB0CBxBlCBGHBDQBECCBEBDMB7GlBBNDB5BHBLFBpBHBfBBNDBDNBKmBBNuBBCJBC4FB5CHBPxEBhI9fB",!1)),Hex_Digit:()=>new d(g("wBJIFbFq1-BJIFbF",!0)),Lowercase:()=>new d(g("hDZBwBLLFlBlBBWBCHBC2BCBQCBuBCDECBBBDCCDEEBFFDEEBBBDDDCCCDCCBCCDEECDDBDDBBBHGDCOCBSCBDDCEEC4BCBFBDDDBCCFICBjCBDiBBIBBfEBhDsBsBCEEDDBTccBhBBCBBECBCWCBDBCGDB0B0BBuBBCgBCK0BCDMCBgDCxBoBBo6CqBBCDB5XFBjkCIBC2D2DB+FBiC0ECBHBCgDCBHBJFBLHBJHBJFBLHBJHBJNBDHBJHBJHBJEBCBBHEEBBBCBBJDBDBBJHBLCBCBB6DOORMBuDEEBEEcKFDBBJDBFiBiBBOBFsasaBYBn6BvBBCEEBGCFCCBCCBGBEiDCBIICFFNlBBCGG0oesBCUaCBBBmEMCBBBC8BCBIBCCCDICFCCDCCBBBCSCGGGCMCFCCDOCWDBCCCBBB2ZqBBCNBHvCBh6TGBNEBqhBZBumBnBBpEjBB8EKBCOBCGBCBBkODDBBBCpBBCIBmoByBB+DVB75CfBhsVfB8BYBnqZZBbGBCRBbZBbDBCCCBFBCKBbZBbZBbZBbZBbZBbZBbZBbZBbbBdYBCFBbYBCFBbYBCFBbYBCFBbYBCFBC15B15BBIBCTBHFBmI9BB1lChBB",!1)),Math:()=>new d(g("rBRRBBBgBeeCuBuBFmBmBgB5W5WBBBDbbBDDBBBwQCBuwGccBBBMEEOPPBCBWEBMEBiCMBFEEBFFBDBTFFDJBCDDBEBHEEBDDBCCBBBCFBENBClClCBWBCFBCBBFBBFfBCHHBPPBqIBJDBVBB7CffBZBCZZMGB+NBBNJBFFBFBBDBBEEBPCCDFBMHBGBB6BCCeDBKCBxK-BBhI-PBxBUBDFB9+zB4Z4ZBEBCjFjFRCBeCCeCCkEHHBCBitDBBhrwBwoBwoBBzCBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDjJBDxBBhwFDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQB1BBB-uCIB",!1)),Quotation_Mark:()=>new d(g("iBFFkEQQ96HHBaBBowDqOqOBCBOCBixzBDB+FFF7CBB",!1)),Terminal_Punctuation:()=>new d(g("hBLLCMMBEE-ZJJiQ6B6BpCPPCCB1FsBsBBJBCsHsHB3B3BBEBCHBgBmImIB1nB1nBBtFtFFFB4JBB2YHBmY9D9DBBBoCBB+ECBEoBoBBCBDBB7JBBjLDBjFBBLBBCCBeCB8FEB-BBBldYYBKKBBBwlDCBzJOOFLLCBBEBBtNBB8ndBBuICBkHEB-LBB3CBBgD4E4EBBB0ECBgERRB6H6HnxUDDB6B6BBBBCDBqFLLCMMBEEiCDD7hBxBxBnkBoGoG3JBB5EFBlCFB6CDB5dEBtBDB+FGBxDDBgECBiEBBHRRB5C5CBDBtDrJrJB2D2DBBBNBBnLDBEOBqDBB6HCBmQCC8HBB4CBBFBB-MCBuBmUmUBrCrCBspBspBBDB6vRBBmEiCiCBBBLqRqRBoJoJBnwTnwTovHDB",!1)),Uppercase:()=>new d(g("hCZBmDWBCGBiB2BCDOCDuBCBECEBBCCCBCCBBBDDBCBBCCBEBBCBBCECBCCDCCBCCBBBCCCBEEIJDCMCDQCDDDCCBC4BCIBBCBBDCCBCBCGCiJCCEJJHCCBBBCCCBCCBPBCIBkBDDBBBEWCGDDCBBDyBBxBgBCK2BCBMCD+CCDlBBq6ClBBCGGzW1CB0kCHHBpBBDCBhK0ECKgDCKHBJFBLHBJHBJFBMGCJHBpCDBNDBNDBNEBMDBnIFFECBDCBDEEBDBHGCBCBDDBLBBGbbBOBUzZzZBYBx5BvBBxBCCBBBDGCBCBCDDJCBCgDCJCCFuqeuqeCqBCUaCoEMCE8BCLECBICFCCDCCEUCBDBCEBCOCBCBCCCBQCZs5Vs5VBYBmmBnBBpEjBB9EKBCOBCGBCBBr3ByBB+EVB75CfBhsVfBhCYBoqZZBbZBbZBbCCBGDBDDBCBCHBbZBbBBCDBDHBCGBcBBCDBCEBCEEBFBcZBbZBbZBbZBbZBbZBfYBiBYBiBYBiBYBiBYBiB2pE2pEBgBBvgCZBHZBHZB",!1)),White_Space:()=>new d(g("JEBTlDlDbgvFgvFgsCKBeBBGwBwBh9DAB",!1))});static get Upper(){return this.CATEGORIES.get("Lu")}static SCRIPTS=new Lr({Adlam:()=>new d(g("go6DrCFJFB",!0)),Ahom:()=>new d(g("g4lCaDOFW",!0)),Anatolian_Hieroglyphs:()=>new d(g("ggxCmS",!0)),Arabic:()=>new d(g("gwBEBCFBCNBCCBCfBCJBMZBCrDBChBBxCvBBxHhBBGqCBCcBxy8BtPBDvEBhBPBxDEBCmEBk7DeBkCFBJIBiBFBh43BDBCaBCBBCDDCJBCDBCCCHFFCECBBBCBBCDDCICBCCDDBCGBCDBCDBCCCBIBCQBGCBCEBCQB1BBB",!1)),Armenian:()=>new d(g("xpBlBDxBDCks9BE",!0)),Avestan:()=>new d(g("g4iC1BEG",!0)),Balinese:()=>new d(g("g4GsCCxB",!0)),Bamum:()=>new d(g("g1pB3CpowB4R",!0)),Bassa_Vah:()=>new d(g("w26CdDF",!0)),Batak:()=>new d(g("g+GzBJD",!0)),Bengali:()=>new d(g("gsCDBCHBDBBDVBCGBCEEBCBDIBDBBDDBJFFBCCBDBDYB",!1)),Beria_Erfe:()=>new d(g("g17CYDY",!0)),Bhaiksuki:()=>new d(g("ggnCICsBCNLc",!0)),Bopomofo:()=>new d(g("qXB6wLqBxDf",!0)),Brahmi:()=>new d(g("ggkCtCFjBKA",!0)),Braille:()=>new d(g("ggK-H",!0)),Buginese:()=>new d(g("gwGbDB",!0)),Buhid:()=>new d(g("g6FT",!0)),Canadian_Aboriginal:()=>new d(g("ggF-TxRlC7tgCP",!0)),Carian:()=>new d(g("g1gCwB",!0)),Caucasian_Albanian:()=>new d(g("wphCzBMA",!0)),Chakma:()=>new d(g("gokC0BCR",!0)),Cham:()=>new d(g("gwqB2BKNDJDD",!0)),Cherokee:()=>new d(g("g9E1CDFz7lBvC",!0)),Chorasmian:()=>new d(g("w9jCb",!0)),Common:()=>new d(g("AgCBbFBbuBBCOBCEBYgBgBiOmBBGEBDTB1DKKHCC+THHPEEhB9E9ElQiEiEB6mB6mB2MDBjJwvBwvBBBBoCBBsGBBCumBumBOIIBCBCFBCCBDmYmYBKBD2CBCKBEKBCOBShBB-BlBBCCBDFBCaBCQBqBCBF5UBXKBW-cBhIzTBDpEBhQ9CBzMUBCCCBXBQHBFDB8CBBE7C7CB0E0EBOBhBlBBKxBxBB+BBgBwCBwB5C5CBmFBhuG-BBhoWhBBnDCBmFJB1HhFhFsMPPBzuUzuUBxGxGBIBXiBBCSBCDB0ECCBeBbFBbKBLuBuBBhChCBFBCGBLEBjICBFsBBEIBxCMB0BsBBlHaBltuBDB96D8HBEzNBHWBQQBgDzDB9B1HBLmBBD9BBEQBJBBIdBF8BB2GTBNTBN2CBKYBoE0CBCmCBCBBDDDBDDBCBCLBCCCBFBCgCBCDBDHBCGBCbBCDBCEBCEEBFBCzKBDjJBDxBByjFjCBtC8BBjWrBBFjDBNOBDOBCOBCkBBLtFB5BZBCBBOrBBFIBIBBPFB7E4eBEQBEMBE5GBHLBFQQBKBF3BBJJBHnBBJdBDLBFBBPIBoB3KBJNBDMBEKBE4BBCFFBOBDLBFJBIyEBCmDBnghYffB+CB",!1)),Coptic:()=>new d(g("ifNxkKzDGG",!0)),Cuneiform:()=>new d(g("ggoC5cnDuDCEMjG",!0)),Cypriot:()=>new d(g("ggiCFBDCCBqBBCBBEDD",!1)),Cypro_Minoan:()=>new d(g("w8rCiD",!0)),Cyrillic:()=>new d(g("ggBkEBDoFBx6FKBhFtCtCojEfBhie-CBv8VBBhw4B9BBiBAB",!1)),Deseret:()=>new d(g("gghCvC",!0)),Devanagari:()=>new d(g("goCwCFODZh7nBfhwcJ",!0)),Dives_Akuru:()=>new d(g("gomCGBDDDBGBCBBCdBCBBDLBKJB",!1)),Dogra:()=>new d(g("ggmC7B",!0)),Duployan:()=>new d(g("ggvDqDGMEIIJDD",!0)),Egyptian_Hieroglyphs:()=>new d(g("ggsC1iBL68D",!0)),Elbasan:()=>new d(g("gohCnB",!0)),Elymaic:()=>new d(g("g-jCW",!0)),Ethiopic:()=>new d(g("gwEoCBCDBDGBCCCBCBDoBBCDBDgBBCDBDGBCCCBCBDOBC4BBCDBDiCBDfBEZBnvGWBKGBCGBCGBCGBCGBCGBCGBCGBjpfFBDFBDFBKGBCGBylvCGBCDBCBBCOB",!1)),Garay:()=>new d(g("gqjClBEcJB",!0)),Georgian:()=>new d(g("glElBBCGGDqBBCDBx8CqBBDCBhiElBBCGG",!1)),Glagolitic:()=>new d(g("ggL-Ch9sDGCQDGCBCE",!0)),Gothic:()=>new d(g("w5gCa",!0)),Grantha:()=>new d(g("g4kCDBCHBDBBDVBCGBCBBCEBDIBDBBDCBDHHGGBDGBEEB",!1)),Greek:()=>new d(g("wbDBCCBDDBCFFCCCBBBCCCBSBC+BBPPBnpGEBzBEBFEB1ChKhKBUBDFBDlBBDFBDHBCGCBdBD0BBCOBCNBDFBCSBDCBCIBoJ-xiB-xiB7uVuCBSgj0Bgj0BBkCB",!1)),Gujarati:()=>new d(g("h0CCBCIBCCBCVBCGBCBBCEBDJBCCBCCBDQQBCBDLBIGB",!1)),Gunjala_Gondi:()=>new d(g("grnCFCBCkBCBCFIJ",!0)),Gurmukhi:()=>new d(g("hwCCBCFBFBBDVBCGBCBBCBBCBBDCCBDBFBBDCBEIIBCBCIIBPB",!1)),Gurung_Khema:()=>new d(g("go4C5B",!0)),Han:()=>new d(g("g0LZBC4CBN1GBwBCCaIBPDBle-tGBhC-vUBhoWtLBDpDBpodBBNGBqgkB-2pBBhB9oEBDt0FBDwpHBQtTBjtC9QBjvBq6EBGppIB",!1)),Hangul:()=>new d(g("goE-HvxHBiI9CyDeiCei3dckUj9KNWFwBl9JeEFDFDFDC",!0)),Hanifi_Rohingya:()=>new d(g("gojCnBJJ",!0)),Hanunoo:()=>new d(g("g5FU",!0)),Hatran:()=>new d(g("gniCSCBGE",!0)),Hebrew:()=>new d(g("xsB2BBJaBFFBpp9BZBCEBCCCBCCBCCBIB",!1)),Hiragana:()=>new d(g("hiM1CBHCBi7-C+IBTeeBBBulQAB",!1)),Imperial_Aramaic:()=>new d(g("giiCVCI",!0)),Inherited:()=>new d(g("gYvDB2IBBlOKBbhXhXBCB8qEtBBDLBlPCBCMBCGBFHHEBBnG-BBtQBBjGgBB65DDBsDBBmrzBPBRNBwejHjH7iEl+uBl+uBBsBBDWBhRCBSHBDGBfDBz6rYvHB",!1)),Inscriptional_Pahlavi:()=>new d(g("g7iCSGH",!0)),Inscriptional_Parthian:()=>new d(g("g6iCVDH",!0)),Javanese:()=>new d(g("gsqBtCDJFB",!0)),Kaithi:()=>new d(g("gkkCiCLA",!0)),Kannada:()=>new d(g("gkDMCCCWCJCEDICCCDIBGCCDDJCC",!0)),Katakana:()=>new d(g("hlM5CBDCBxHPBxGuBBC3CBvgzBJBCsBBzisBDBCGBCBBCgJgJBBBzBPPBCB",!1)),Kawi:()=>new d(g("g4nCQCoBEc",!0)),Kayah_Li:()=>new d(g("goqBtBCA",!0)),Kharoshthi:()=>new d(g("gwiCDCBGHCCCcDCFJII",!0)),Khitan_Small_Script:()=>new d(g("k-7C84G84GB0OBqBAB",!1)),Khmer:()=>new d(g("g8F9CDJHJnPf",!0)),Khojki:()=>new d(g("gwkCRCuB",!0)),Khudawadi:()=>new d(g("w1kC6BGJ",!0)),Kirat_Rai:()=>new d(g("gq7C5B",!0)),Lao:()=>new d(g("h0DBBCCCBDBCXBCCCBVBDEBCCCBFBCJBDDB",!1)),Latin:()=>new d(g("hCZBHZBwBQQGWBCeBCgOBoBEB8wGlBBHwBBGDBGMBClCBiC-HByLOORMBuEBBHccSoBB42CfBj1elDBExCBVOBxZqBBCIBCDB38TGB7gBZBHZBmhCFBCpBBCIBm61BeBHFB",!1)),Lepcha:()=>new d(g("ggH3BEOEC",!0)),Limbu:()=>new d(g("goGeBCLBFLBFEEBKB",!1)),Linear_A:()=>new d(g("gwhC2JKVLH",!0)),Linear_B:()=>new d(g("gggCLCZCSCBCODNjB6D",!0)),Lisu:()=>new d(g("wmpBvBx1eA",!0)),Lycian:()=>new d(g("g0gCc",!0)),Lydian:()=>new d(g("gpiCZGA",!0)),Mahajani:()=>new d(g("wqkCmB",!0)),Makasar:()=>new d(g("g3nCY",!0)),Malayalam:()=>new d(g("goDMCCCyBCCCFFPDZ",!0)),Mandaic:()=>new d(g("giCbDA",!0)),Manichaean:()=>new d(g("g2iCmBFL",!0)),Marchen:()=>new d(g("wjnCfDVCN",!0)),Masaram_Gondi:()=>new d(g("gonCGBCBBCrBBECCBCCBHBJJB",!1)),Medefaidrin:()=>new d(g("gy7C6C",!0)),Meetei_Mayek:()=>new d(g("g3qBWqGtBDJ",!0)),Mende_Kikakui:()=>new d(g("gg6DkGDP",!0)),Meroitic_Cursive:()=>new d(g("gtiCXFTDtB",!0)),Meroitic_Hieroglyphs:()=>new d(g("gsiCf",!0)),Miao:()=>new d(g("g47CqCF4BIQ",!0)),Modi:()=>new d(g("gwlCkCMJ",!0)),Mongolian:()=>new d(g("ggGBBDCCBSBH4CBIqBB2t-BMB",!1)),Mro:()=>new d(g("gy6CeCJFB",!0)),Multani:()=>new d(g("g0kCGBCCCBCBCOBCKB",!1)),Myanmar:()=>new d(g("ggE-EhqmBeiDfxibT",!0)),Nabataean:()=>new d(g("gkiCeJI",!0)),Nag_Mundari:()=>new d(g("wm5DpB",!0)),Nandinagari:()=>new d(g("gtmCHDtBDK",!0)),New_Tai_Lue:()=>new d(g("gsGrBFZHKEB",!0)),Newa:()=>new d(g("gglC7CCE",!0)),Nko:()=>new d(g("g+B6BDC",!0)),Nushu:()=>new d(g("h-7CvsQvsQBqMB",!1)),Nyiakeng_Puachue_Hmong:()=>new d(g("go4DsBENDJFB",!0)),Ogham:()=>new d(g("g0Fc",!0)),Ol_Chiki:()=>new d(g("wiHvB",!0)),Ol_Onal:()=>new d(g("wu5DqBFA",!0)),Old_Hungarian:()=>new d(g("gkjCyBOyBIF",!0)),Old_Italic:()=>new d(g("g4gCjBKC",!0)),Old_North_Arabian:()=>new d(g("g0iCf",!0)),Old_Permic:()=>new d(g("w6gCqB",!0)),Old_Persian:()=>new d(g("g9gCjBFN",!0)),Old_Sogdian:()=>new d(g("g4jCnB",!0)),Old_South_Arabian:()=>new d(g("gziCf",!0)),Old_Turkic:()=>new d(g("ggjCoC",!0)),Old_Uyghur:()=>new d(g("w7jCZ",!0)),Oriya:()=>new d(g("h4CCCHDBDVCGCBCEDIDBDCICFBCEDR",!0)),Osage:()=>new d(g("wlhCjBFjB",!0)),Osmanya:()=>new d(g("gkhCdDJ",!0)),Pahawh_Hmong:()=>new d(g("g46ClCLJCGCUGS",!0)),Palmyrene:()=>new d(g("gjiCf",!0)),Pau_Cin_Hau:()=>new d(g("g2mC4B",!0)),Phags_Pa:()=>new d(g("giqB3B",!0)),Phoenician:()=>new d(g("goiCbEA",!0)),Psalter_Pahlavi:()=>new d(g("g8iCRIDNG",!0)),Rejang:()=>new d(g("wpqBjBMA",!0)),Runic:()=>new d(g("g1FqCEK",!0)),Samaritan:()=>new d(g("ggCtBDO",!0)),Saurashtra:()=>new d(g("gkqBlCJL",!0)),Sharada:()=>new d(g("gskC-ChsCH",!0)),Shavian:()=>new d(g("wihCvB",!0)),Siddham:()=>new d(g("gslC1BDlB",!0)),Sidetic:()=>new d(g("gqiCZ",!0)),SignWriting:()=>new d(g("gg2DrUQECO",!0)),Sinhala:()=>new d(g("hsDCBCRBEXBCIBCDDBFBEFFBEBCCCBGBHJBDCBt-gCTB",!1)),Sogdian:()=>new d(g("w5jCpB",!0)),Sora_Sompeng:()=>new d(g("wmkCYIJ",!0)),Soyombo:()=>new d(g("wymCyC",!0)),Sundanese:()=>new d(g("g8G-BhIH",!0)),Sunuwar:()=>new d(g("g+mChBPJ",!0)),Syloti_Nagri:()=>new d(g("ggqBsB",!0)),Syriac:()=>new d(g("g4BNC7BDCxIK",!0)),Tagalog:()=>new d(g("g4FVKA",!0)),Tagbanwa:()=>new d(g("g7FMCCCB",!0)),Tai_Le:()=>new d(g("wqGdDE",!0)),Tai_Tham:()=>new d(g("gxG+BCcDKHJHN",!0)),Tai_Viet:()=>new d(g("g0qBiCZE",!0)),Tai_Yo:()=>new d(g("g25DeCVJB",!0)),Takri:()=>new d(g("g0lC5BHJ",!0)),Tamil:()=>new d(g("i8CBBCFBECBCDBEBBCCCBEEBEEBBBELBFEBECBCDBDHHPUBm+kCxBBOAB",!1)),Tangsa:()=>new d(g("wz6CuCCJ",!0)),Tangut:()=>new d(g("g-7CgBgBB+3GBhQeBiDyDB",!1)),Telugu:()=>new d(g("ggDMCCCWCPDICCCDIBCCCBDDDJII",!0)),Thaana:()=>new d(g("g8BxB",!0)),Thai:()=>new d(g("hwD5BGb",!0)),Tibetan:()=>new d(g("g4DnCCjBFmBCjBCOCGFB",!0)),Tifinagh:()=>new d(g("wpL3BIBPA",!0)),Tirhuta:()=>new d(g("gklCnCJJ",!0)),Todhri:()=>new d(g("guhCzB",!0)),Tolong_Siki:()=>new d(g("wtnCrBFJ",!0)),Toto:()=>new d(g("w04De",!0)),Tulu_Tigalari:()=>new d(g("g8kCJBCDDClBBCJBCDDCDBCJBCBBJBB",!1)),Ugaritic:()=>new d(g("g8gCdCA",!0)),Unknown:()=>new d(g("4bBBHDBICCVuMuMnBBBzBBBE4B4BBGBcDBHKBvI9B9BBmDmDBMB8BBByBBBQddBCCMEBjBEBuHJJBDDBXXICCBBBFBBKBBDBBFHBCDBDGGBaaBEEHDBDBBXIIDGDBCCGDBDBBECBCGBFCCBFBSJBEKKEXXIDDGBBLIEBCCBNBFBBNGBIEEJBBDBBXIIDGGBKKBDDBEEBFBEDBDGGBTTBIBDHHBBBEFFBBBDCCDCBDCBECBNDBGCBEFFBCCBEBCNBWEBOEEYRRBKKEFFBFBDEEDBBFBBLGBXEEYLLGBBKEEFGBDEBEFFBLLELBOEE0BEEHDBRBBbEETCBZKKCBBICBCDBHCCJFBLBBELB7BDBekBBDCCGZZCYYBGGCIILBBFfBpClBlBBCBoBlBlBQOOBjBBnGCCBDBCBB6LFFBIICFFBqBqBFBBiBFFBIICFFBQQ6BFFBkCkCBhBhBBBBbFB3CBBHBB+UCB6CGBXIBZIBVLBOEEDLB-CBBLFBLFBbFB6CGBsBEBnCJBgBNNBCBNDBCCBrBBBGKBtBDBbFBMCB-BBBiCeeBMMBEBLFBPBBvBBBNTBuCnFnFBGB9BCBQCB-BEBsBBBMHBsBEB3QBBHBBnBBBHBBJGCgBBB2BQQPBBHUUBEEKmDmDNBBcOOBBBjBNBiBOBtEDB7UVBMUB14BBB-LEBuBCCBDBCBB5BGBDNBZIBI4BI-DhBBb6C6CBKB3GZBxC3C3CBoDoDBDBsB-C-C3CIBxBuzcuzcBBB4BIB9KTB5FHB+GTB9BCBLFB5BHBnCHBNFB1DKBfCBvCMMBCBiB4B4BBHBPBBLBBoDXBdJBHBBHBBHIBIII9BDB-DBBLFBl9KLBYDByBjoIBvLBBrDlBBILBGEBbGGCGDrUfBrBFB0BUUFDBGoEoEBCC-FCBHBBHBBHBBECBIIIBIBGBBNbbUDDQBBPhBB8DEBEDBuBCB5COOBBBCuBBvBhEBeCByBOBdDBlBIBfEBsBEBfmBmBBCBPpBB-EBBLFBlBDBlBDBpBHB1BKBNQQIDDMQQIDDBBB1BLB4JIBXJBJXBHrBrBKkCBHBBCtBtBDCBCBBYpCpCBGBKvBBUDDBDBiBCBcEBclBB5BDBVBBzBDDBDBJEEeBBEDBLGBKGBhCfBoBDBNIB3BCBeBBcEBbGBFLBIvCBqC2BB0BMB0BGBvBHBLFBnBCBeHBDvGBgBrBrBEBBDPBHHBKgBBvBHBrBVBblBBdTBYIBvCDBlBIBlCJBCBBaGBLFB2BTTBGBoBIBhDVVBJBTwBwBB8BBICCFQQMFB8BEBLFBFJJBDDBXXIDDGLLBDDBEEBCCBEBCEBIBBICBGKBLCCBCCnBLLCBBCFFLDDBGBDcB9CGGBcBpCHBLlFB3BBBnBhBBmCKBLFBOSB7BFBLFBVbBcBBQDBY4FB9BjDB0CLBJBBCBBJDDfDDBNNBHBLlCBJBBvBBBMaBpCHB0CMBqCGBL1CBJ3CBjBNBLFBKuBuBPJBeCBhBBBXPPBnCBIDDtBCBCDDKHBLFBHDDmBDDHGBLFBtBDBL1HBaGBSqBqBBBBe0CBCOBzBMB8clDBwDGGBJBlGryCBkDMB3iBJB88DEBoS41GB7Bl2BB6RGBgBLLBCByCLLBEBfBBHJBnCJBLIIWEBUvNB7BlGB8CEBaBBarBBsCDB6BGBS-BBGKBIIB3mHoBBhBgDB0D8vIBFIIDkJkJBNBCcBEBBCNBFHBtMjoCBsDEBOCBKGBLBBJ76DB+HCB1NFBYOBSOBvBBBYIB1D7BB3HJBoBBBjGUBnC5DBVLBVLB4CIBamEB2CoCoCDBBCBBDBBFNNCIIiCFFBJJIddFGGCCBI1K1KBlJlJB-V-VBNBGQQBuiBBgBFBH0GBISSBIIDGGBDB-BgBBCvDBuBCBPBBLDBD-JBgBQB7BEBCvOBrB1GBsBDBC-FBgBXXBGBD-GBIFFDQQmGBBRoBBtCDBLDBDwYBlCrCB+BhGBFccDCCBCCLFFCCCBEBCDBCECEDDCBBCICDCCBFFIKFCLLSEBEGGSzBBDtIBtBDBlDLBQBBQQQmBJBvF3BBeMBtBDBKGBDNBH5EB6eCBSCBOCB7GFBNDBCOBNDB5BHBLFBpBHBfBBNDBDNBKmBB5KHBPBBOCBMCB6BCCBCBRBBNDBLGB0EoDoDBjgBBh3pBfB-oEBBv0FBBypHOBvThtCB-QhvBBs6EEBrpIm8yVBCdBhD-DBxHvw-FB",!1)),Vai:()=>new d(g("gopBrJ",!0)),Vithkuqi:()=>new d(g("wrhCKCOCGCBCKCOCGCB",!0)),Wancho:()=>new d(g("g24D5BGA",!0)),Warang_Citi:()=>new d(g("glmCyCNA",!0)),Yezidi:()=>new d(g("g0jCpBCCDB",!0)),Yi:()=>new d(g("ggoBskBE2B",!0)),Zanabazar_Square:()=>new d(g("gwmCnC",!0))});static FOLD_CATEGORIES=new Lr({L:()=>new d(g("laA",!0)),LC:()=>new d(g("laA",!0)),Ll:()=>new d(g("hCZBmDWBCGBiBuBCEECDOCDuBCBECEBBCCCBCCBBBDDBCBBCCBEBBCBBCECBCCDCCBCCBBBCCCBEEIBBCBBCBBCOCDQCDBBCCCBBBC4BCIBBCBBDCCBCBCGC3HrBrBCEEJHHCCBCCCBCCBPBCIBkBJJCUCGDDCBBDyBBxBgBCK2BCBMCD+CCDlBBq6ClBBCGGzW1CB0kCHHBpBBDCBhK0ECKgDCKHBJFBLHBJHBJFBMGCJHBZHBJHBJHBJEBMEBMDBNEBMEBqJEEBHHxC9zC9zCBuBBxBCCBBBDGCBCBCDDJCBCgDCJCCFuqeuqeCqBCUaCoEMCE8BCLECBICFCCDCCEUCBDBCEBCOCBCBCCCBQCZs5Vs5VBYBmmBnBBpEjBB9EKBCOBCGBCBBr3ByBB+EVB75CfBhsVfBhCYBoyehBB",!1)),Lt:()=>new d(g("kOCCBCCBCClBCCtsHHBJHBJHBMQQwBAB",!1)),Lu:()=>new d(g("hDZB7BqBqBBWBCHBCuBCEECDOCDsBCDECBBBDCCDEEGDDECBDDDCCCDFFDEECDDECCGBBCBBCBBCOCBSCDBBCEECkBCEQCJDDBCCFICBEBCBBCCCBEEBCCBCBCEBDCCBDDIDDCBBEFBGLLBnFnFsBCCEEEBBBvBDBCdBCBBECBCWCBDBCGD1BvBBCgBCK0BCDMCBgDCyBlBBq6CqBBDCB5XFBjkCIBCvHvHERRzD0ECGGGC8CCBHBJFBLHBJHBJFBMGCJHBJNBzBBBNSSBPPBEEpL2B2Bs1CvBBCEEBGCHDDLiDCJCCFNNBkBBCGG0oesBCUaCoEMCE8BCLCCDICFFFCBBDSCMOCFCCDOCb9a9advCBi8UZBumBnBBpEjBB8EKBCOBCGBCBBk4ByBB+DVB75CfBhsVfB8BYBvyehBB",!1)),M:()=>new d(g("5cgBgBlgHAB",!1)),Mn:()=>new d(g("5cgBgBlgHAB",!1)),Emoji:()=>new d(g("8mJA",!0)),Extended_Pictographic:()=>new d(g("8mJA",!0)),Lowercase:()=>new d(g("hCZBmDWBCGBiBuBCEECDOCDuBCBECEBBCCCBCCBBBDDBCBBCCBEBBCBBCECBCCDCCBCCBBBCCCBEEIBBCBBCBBCOCDQCDBBCCCBBBC4BCIBBCBBDCCBCBCGCiJCCEJJHCCBBBCCCBCCBPBCIBkBJJCUCGDDCBBDyBBxBgBCK2BCBMCD+CCDlBBq6ClBBCGGzW1CB0kCHHBpBBDCBhK0ECKgDCKHBJFBLHBJHBJFBMGCJHBZHBJHBJHBJEBMEBMDBNEBMEBqJEEBHHuBPBUzZzZBYBx5BvBBxBCCBBBDGCBCBCDDJCBCgDCJCCFuqeuqeCqBCUaCoEMCE8BCLECBICFCCDCCEUCBDBCEBCOCBCBCCCBQCZs5Vs5VBYBmmBnBBpEjBB9EKBCOBCGBCBBr3ByBB+EVB75CfBhsVfBhCYBoyehBB",!1)),Math:()=>new d(g("ycGDCHHFMMDDDCHHFAB",!1)),Uppercase:()=>new d(g("hDZB7BqBqBBWBCHBCuBCEECDOCDsBCDECBBBDCCDEEGDDECBDDDCCCDFFDEECDDECCGBBCBBCBBCOCBSCDBBCEECkBCEQCJDDBCCFICBEBCBBCCCBEEBCCBCBCEBDCCBDDIDDCBBEFBGLLBnFnFsBCCEEEBBBvBDBCdBCBBECBCWCBDBCGD1BvBBCgBCK0BCDMCBgDCyBlBBq6CqBBDCB5XFBjkCIBCvHvHERRzD0ECGGGC8CCBHBJFBLHBJHBJFBMGCJHBJNBzBBBNSSBPPBEEpLiBiBBOBFsasaBYBn6BvBBCEEBGCHDDLiDCJCCFNNBkBBCGG0oesBCUaCoEMCE8BCLCCDICFFFCBBDSCMOCFCCDOCb9a9advCBi8UZBumBnBBpEjBB8EKBCOBCGBCBBk4ByBB+DVB75CfBhsVfB8BYBvyehBB",!1))});static FOLD_SCRIPT=new Lr({Common:()=>new d(g("8cgBgB",!1)),Greek:()=>new d(g("1FwUwU",!1)),Inherited:()=>new d(g("5cgBgBlgHAB",!1))})},J=class Re{static MAX_RUNE=1114111;static RUNE_ERROR=65533;static isUnsearchable(e){return e===Re.RUNE_ERROR||e>=Re.MIN_HIGH_SURROGATE&&e<=Re.MAX_LOW_SURROGATE}static MAX_ASCII=127;static MAX_LATIN1=255;static MAX_BMP=65535;static MIN_FOLD=65;static MAX_FOLD=125251;static MIN_HIGH_SURROGATE=55296;static MAX_HIGH_SURROGATE=56319;static MIN_LOW_SURROGATE=56320;static MAX_LOW_SURROGATE=57343;static MIN_SUPPLEMENTARY_CODE_POINT=65536;static is32(e,t){let n=0,s=e.length;for(;n<s;){let B=n+Math.floor((s-n)/2),i=e.getLo(B),o=e.getHi(B);if(i<=t&&t<=o){let a=e.getStride(B);return(t-i)%a===0}t<i?s=B:n=B+1}return!1}static is(e,t){if(t<=Re.MAX_LATIN1){for(let n=0;n<e.length;n++){if(t>e.getHi(n))continue;let s=e.getLo(n);if(t<s)return!1;let B=e.getStride(n);return(t-s)%B===0}return!1}return e.length>0&&t>=e.getLo(0)&&Re.is32(e,t)}static isUpper(e){if(e<=Re.MAX_LATIN1){let t=String.fromCodePoint(e);return t.toUpperCase()===t&&t.toLowerCase()!==t}return Re.is(Me.Upper,e)}static isPrint(e){return e<=Re.MAX_LATIN1?e>=32&&e<Re.MAX_ASCII||e>=161&&e!==173:Re.is(Me.Print,e)}static simpleFold(e){if(Me.CASE_ORBIT.has(e))return Me.CASE_ORBIT.get(e);if(e<=Re.MAX_ASCII){let t=T.toLowerCase(e);return t!==e?t:T.toUpperCase(e)}return e}static equalsIgnoreCase(e,t){if(e===t)return!0;if(e<0||t<0)return!1;if(e<=Re.MAX_ASCII&&t<=Re.MAX_ASCII)return 65<=e&&e<=90&&(e|=32),65<=t&&t<=90&&(t|=32),e===t;for(let n=Re.simpleFold(e);n!==e;n=Re.simpleFold(n))if(n===t)return!0;return!1}},Ys=256,Xi=new Uint8Array(Ys);for(let r=0;r<Ys;r++)Xi[r]=97<=r&&r<=122||65<=r&&r<=90||48<=r&&r<=57||r===95?1:0;var Hs=null,Ps=null,_=class He{static METACHARACTERS="\\.+*?()|[]{}^$";static EMPTY_BEGIN_LINE=1;static EMPTY_END_LINE=2;static EMPTY_BEGIN_TEXT=4;static EMPTY_END_TEXT=8;static EMPTY_WORD_BOUNDARY=16;static EMPTY_NO_WORD_BOUNDARY=32;static EMPTY_ALL=-1;static emptyInts(){return[]}static isByteArray(e){return Array.isArray(e)||Object.prototype.toString.call(e)==="[object Uint8Array]"}static isalnum(e){return T.CODES.get("0")<=e&&e<=T.CODES.get("9")||T.CODES.get("a")<=e&&e<=T.CODES.get("z")||T.CODES.get("A")<=e&&e<=T.CODES.get("Z")}static unhex(e){return T.CODES.get("0")<=e&&e<=T.CODES.get("9")?e-T.CODES.get("0"):T.CODES.get("a")<=e&&e<=T.CODES.get("f")?e-T.CODES.get("a")+10:T.CODES.get("A")<=e&&e<=T.CODES.get("F")?e-T.CODES.get("A")+10:-1}static escapeRune(e){let t="";if(J.isPrint(e))He.METACHARACTERS.indexOf(String.fromCodePoint(e))>=0&&(t+="\\"),t+=String.fromCodePoint(e);else switch(e){case T.CODES.get('"'):t+='\\"';break;case T.CODES.get("\\"):t+="\\\\";break;case T.CODES.get(" "):t+="\\t";break;case T.CODES.get(`
|
|
59
|
+
`):t+="\\n";break;case T.CODES.get("\r"):t+="\\r";break;case T.CODES.get("\b"):t+="\\b";break;case T.CODES.get("\f"):t+="\\f";break;default:{let n=e.toString(16);e<256?(t+="\\x",n.length===1&&(t+="0"),t+=n):t+=`\\x{${n}}`;break}}return t}static stringToRunes(e){let t=String(e),n=[],s=0;for(;s<t.length;){let B=t.codePointAt(s);n.push(B),s+=B>J.MAX_BMP?2:1}return new Int32Array(n)}static runeToString(e){return String.fromCodePoint(e)}static isWordRune(e){return e<Ys?Xi[e]===1:!1}static emptyOpContext(e,t){let n=0;return e<0&&(n|=He.EMPTY_BEGIN_TEXT|He.EMPTY_BEGIN_LINE),e===10&&(n|=He.EMPTY_BEGIN_LINE),t<0&&(n|=He.EMPTY_END_TEXT|He.EMPTY_END_LINE),t===10&&(n|=He.EMPTY_END_LINE),He.isWordRune(e)!==He.isWordRune(t)?n|=He.EMPTY_WORD_BOUNDARY:n|=He.EMPTY_NO_WORD_BOUNDARY,n}static quoteMeta(e){return e.split("").map(t=>He.METACHARACTERS.indexOf(t)>=0?`\\${t}`:t).join("")}static charCount(e){return e>J.MAX_BMP?2:1}static toArray(e){let t=e.length,n=new Array(t);for(let s=0;s<t;s++)n[s]=e[s];return n}static stringToUtf8ByteArray(e){if(globalThis.TextEncoder)return Hs||(Hs=new TextEncoder),Hs.encode(e);{let t=[],n=0;for(let s=0;s<e.length;s++){let B=e.charCodeAt(s);B<128?t[n++]=B:B<2048?(t[n++]=B>>6|192,t[n++]=B&63|128):(B&64512)===J.MIN_HIGH_SURROGATE&&s+1<e.length&&(e.charCodeAt(s+1)&64512)===J.MIN_LOW_SURROGATE?(B=J.MIN_SUPPLEMENTARY_CODE_POINT+((B&1023)<<10)+(e.charCodeAt(++s)&1023),t[n++]=B>>18|240,t[n++]=B>>12&63|128,t[n++]=B>>6&63|128,t[n++]=B&63|128):(t[n++]=B>>12|224,t[n++]=B>>6&63|128,t[n++]=B&63|128)}return t}}static utf8ByteArrayToString(e){if(globalThis.TextDecoder){Ps||(Ps=new TextDecoder("utf-8"));let t=e instanceof Uint8Array?e:new Uint8Array(e);return Ps.decode(t)}else{let t=[],n=0,s=0;for(;n<e.length;){let B=e[n++];if(B<128)t[s++]=String.fromCharCode(B);else if(B>191&&B<224){let i=e[n++];t[s++]=String.fromCharCode((B&31)<<6|i&63)}else if(B>239&&B<365){let i=e[n++],o=e[n++],a=e[n++],c=((B&7)<<18|(i&63)<<12|(o&63)<<6|a&63)-J.MIN_SUPPLEMENTARY_CODE_POINT;t[s++]=String.fromCharCode(J.MIN_HIGH_SURROGATE+(c>>10)),t[s++]=String.fromCharCode(J.MIN_LOW_SURROGATE+(c&1023))}else{let i=e[n++],o=e[n++];t[s++]=String.fromCharCode((B&15)<<12|(i&63)<<6|o&63)}}return t.join("")}}},eo=(r=[],e=0)=>{let t=Object.create(null);for(let n=0;n<r.length;n++){let s=r[n],B=e+n;t[s]=B,t[B]=s}return Object.freeze(t)},jt=class js{static Encoding=eo(["UTF_16","UTF_8"]);getEncoding(){throw Error("not implemented")}asCharSequence(){throw Error("not implemented")}asBytes(){throw Error("not implemented")}length(){throw Error("not implemented")}isUTF8Encoding(){return this.getEncoding()===js.Encoding.UTF_8}isUTF16Encoding(){return this.getEncoding()===js.Encoding.UTF_16}},vi=class extends jt{constructor(r=null){super(),this.bytes=r}getEncoding(){return jt.Encoding.UTF_8}asCharSequence(){return _.utf8ByteArrayToString(this.bytes)}asBytes(){return this.bytes}length(){return this.bytes.length}},bu=class extends jt{constructor(r=null){super(),this.charSequence=r}getEncoding(){return jt.Encoding.UTF_16}asCharSequence(){return this.charSequence}asBytes(){return _.stringToUtf8ByteArray(this.charSequence.toString())}length(){return this.charSequence.length}},Kt=class{static utf16(r){return new bu(r)}static utf8(r){return _.isByteArray(r)?new vi(r):new vi(_.stringToUtf8ByteArray(r))}},$e=class{static EOF(){return-8}constructor(){this.end=0}canCheckPrefix(){return!0}endPos(){return this.end}hasString(){return!1}hasAnyString(){return!1}prefixLength(){return 0}},wu=class an extends $e{static RUNE_ERROR_STEP=J.RUNE_ERROR<<3|1;constructor(e,t=0,n=e.length){super(),this.bytes=e,this.start=t,this.end=n}hasString(e,t){let n=e.bytes;if(n.length===0)return!0;let s=this.indexOf(this.bytes,n,this.start+t);return s!==-1&&s<=this.end-n.length}hasAnyString(e,t){return e.automaton8().searchUTF8(this.bytes,this.start+t,this.end)}step(e){if(e+=this.start,e>=this.end)return $e.EOF();let t=this.bytes[e]&255;if(t<128)return t<<3|1;let n,s,B=128,i=191;if(t>=194&&t<=223)n=2,s=t&31;else if(t>=224&&t<=239)n=3,s=t&15,t===224?B=160:t===237&&(i=159);else if(t>=240&&t<=244)n=4,s=t&7,t===240?B=144:t===244&&(i=143);else return an.RUNE_ERROR_STEP;if(e+n>this.end)return an.RUNE_ERROR_STEP;let o=this.bytes[e+1]&255;if(o<B||o>i)return an.RUNE_ERROR_STEP;if(s=s<<6|o&63,n>2){let a=this.bytes[e+2]&255;if((a&192)!==128)return an.RUNE_ERROR_STEP;if(s=s<<6|a&63,n>3){let c=this.bytes[e+3]&255;if((c&192)!==128)return an.RUNE_ERROR_STEP;s=s<<6|c&63}}return s<<3|n}index(e,t){t+=this.start;let n=this.indexOf(this.bytes,e.prefixUTF8,t);return n<0?n:n-t}context(e){e+=this.start;let t=-1;if(e>this.start&&e<=this.end){let s=e-1;if(t=this.bytes[s--],t>=128){let B=e-4;for(B<this.start&&(B=this.start);s>=B&&(this.bytes[s]&192)===128;)s--;s<this.start&&(s=this.start);let i=this.step(s-this.start);t=s+(i&7)===e?i>>3:J.RUNE_ERROR}}let n=e<this.end?this.step(e-this.start)>>3:-1;return _.emptyOpContext(t,n)}indexOf(e,t,n=0){let s=t.length;if(s===0)return n<=this.end?n:-1;let B=t[0],i=this.end-s,o=typeof e.indexOf=="function",a=n;for(;a<=i;){if(o){if(a=e.indexOf(B,a),a===-1||a>i)return-1}else{for(;a<=i&&e[a]!==B;)a++;if(a>i)return-1}let c=!0;for(let u=1;u<s;u++)if(e[a+u]!==t[u]){c=!1;break}if(c)return a;a++}return-1}prefixLength(e){return e.prefixUTF8.length}},xu=class extends $e{constructor(r,e=0,t=r.length){super(),this.charSequence=r,this.start=e,this.end=t}hasString(r,e){let t=this.charSequence.indexOf(r.str,this.start+e);return t!==-1&&t<=this.end-r.str.length}hasAnyString(r,e){return r.automaton16().searchUTF16(this.charSequence,this.start+e,this.end)}step(r){if(r+=this.start,r>=this.end)return $e.EOF();let e=this.charSequence.charCodeAt(r);if(e<J.MIN_HIGH_SURROGATE||e>J.MAX_HIGH_SURROGATE||r+1>=this.end)return e<<3|1;let t=this.charSequence.charCodeAt(r+1);return t>=J.MIN_LOW_SURROGATE&&t<=J.MAX_LOW_SURROGATE?(e-J.MIN_HIGH_SURROGATE)*1024+(t-J.MIN_LOW_SURROGATE)+J.MIN_SUPPLEMENTARY_CODE_POINT<<3|2:e<<3|1}index(r,e){e+=this.start;let t=this.charSequence.indexOf(r.prefix,e);return t<0||t>this.end-r.prefix.length?-1:t-e}context(r){r+=this.start;let e=r>this.start&&r<=this.end?this.charSequence.charCodeAt(r-1):-1,t=r<this.end?this.charSequence.charCodeAt(r):-1;return _.emptyOpContext(e,t)}prefixLength(r){return r.prefix.length}},fe=class{static fromUTF8(r,e=0,t=r.length){return new wu(r,e,t)}static fromUTF16(r,e=0,t=r.length){return new xu(r,e,t)}},Kn=class extends Error{constructor(r){super(r),this.name="RE2JSException"}},he=class extends Kn{constructor(r,e=null){let t=`error parsing regexp: ${r}`;e&&(t+=`: \`${e}\``),super(t),this.name="RE2JSSyntaxException",this.message=t,this.error=r,this.input=e}getDescription(){return this.error}getPattern(){return this.input}},_n=class extends Kn{constructor(r){super(r),this.name="RE2JSCompileException"}},Ge=class extends Kn{constructor(r){super(r),this.name="RE2JSGroupException"}},vu=class extends Kn{constructor(r){super(r),this.name="RE2JSFlagsException"}},Jn=class extends Kn{constructor(r){super(r),this.name="RE2JSInternalException"}},ki=class to{static MAX_REPLACER_ARGS=65535;static quoteReplacement(e,t=!1){return t?e.indexOf("\\")<0&&e.indexOf("$")<0?e:e.split("").map(n=>{let s=n.codePointAt(0);return s===T.CODES.get("\\")||s===T.CODES.get("$")?`\\${n}`:n}).join(""):e.indexOf("$")<0?e:e.split("").map(n=>n.codePointAt(0)===T.CODES.get("$")?"$$":n).join("")}constructor(e,t){if(e===null)throw new Error("pattern is null");this.patternInput=e;let n=this.patternInput.re2();this.patternGroupCount=n.numberOfCapturingGroups(),this.groups=[],this.namedGroups=n.namedGroups,this.numberOfInstructions=n.numberOfInstructions(),this.lookbehindState=null,t instanceof jt?this.resetMatcherInput(t):_.isByteArray(t)?this.resetMatcherInput(Kt.utf8(t)):this.resetMatcherInput(Kt.utf16(t))}pattern(){return this.patternInput}reset(){return this.matcherInputLength=this.matcherInput.length(),this.appendPos=0,this.hasMatch=!1,this.hasGroups=!1,this.anchorFlag=0,this}resetMatcherInput(e){if(e===null)throw new Error("input is null");return e instanceof jt||(_.isByteArray(e)?e=Kt.utf8(e):e=Kt.utf16(e)),this.matcherInput=e,this.lookbehindState!==null?this.lookbehindState.reset():this.lookbehindState=this.patternInput.re2().createLookbehindState(),this.reset(),this}start(e=0){if(typeof e=="string"){let t=this.namedGroups[e];if(!Number.isFinite(t))throw new Ge(`group '${e}' not found`);e=t}return this.loadGroup(e),this.groups[2*e]}end(e=0){if(typeof e=="string"){let t=this.namedGroups[e];if(!Number.isFinite(t))throw new Ge(`group '${e}' not found`);e=t}return this.loadGroup(e),this.groups[2*e+1]}programSize(){return this.numberOfInstructions}group(e=0){if(typeof e=="string"){let s=this.namedGroups[e];if(!Number.isFinite(s))throw new Ge(`group '${e}' not found`);e=s}let t=this.start(e),n=this.end(e);return t<0&&n<0?null:this.substring(t,n)}getNamedGroups(){if(!this.hasMatch)throw new Ge("perhaps no match attempted");let e=Object.create(null);for(let t of Object.keys(this.namedGroups))e[t]=this.group(t);return e}groupCount(){return this.patternGroupCount}loadGroup(e){if(!Number.isInteger(e)||e<0||e>this.patternGroupCount)throw new Ge(`Group index out of bounds: ${e}`);if(!this.hasMatch)throw new Ge("perhaps no match attempted");if(e===0||this.hasGroups)return;let t=this.matcherInputLength,n=this.patternInput.re2().matchMachineInput(this.matcherInput,this.groups[0],t,this.anchorFlag,1+this.patternGroupCount,this.lookbehindState);if(!n[0])throw new Ge("inconsistency in matching group data");this.groups=n[1],this.hasGroups=!0}matches(){return this.genMatch(0,N.ANCHOR_BOTH)}lookingAt(){return this.genMatch(0,N.ANCHOR_START)}find(e=null){if(e!==null){if(!Number.isInteger(e)||e<0||e>this.matcherInputLength)throw new Ge(`start index out of bounds: ${e}`);return this.reset(),this.genMatch(e,0)}if(e=0,this.hasMatch&&(e=this.groups[1],this.groups[0]===this.groups[1])){let t=(this.matcherInput.isUTF16Encoding()?fe.fromUTF16(this.matcherInput.asCharSequence(),0,this.matcherInputLength):fe.fromUTF8(this.matcherInput.asBytes(),0,this.matcherInputLength)).step(e);t<0?e++:e+=t&7}return this.genMatch(e,N.UNANCHORED)}genMatch(e,t){let n=this.patternInput.re2().matchMachineInput(this.matcherInput,e,this.matcherInputLength,t,1,this.lookbehindState);return n[0]?(this.groups=n[1],this.hasMatch=!0,this.hasGroups=this.patternGroupCount===0,this.anchorFlag=t,!0):(this.hasMatch=!1,!1)}substring(e,t){return this.matcherInput.isUTF8Encoding()?_.utf8ByteArrayToString(this.matcherInput.asBytes().slice(e,t)):this.matcherInput.asCharSequence().substring(e,t).toString()}inputLength(){return this.matcherInputLength}appendReplacement(e,t=!1){let n="",s=this.start(),B=this.end();return this.appendPos<s&&(n+=this.substring(this.appendPos,s)),this.appendPos=B,n+=t?this.appendReplacementInternalJava(e):this.appendReplacementInternalJs(e),n}appendReplacementInternalJava(e){let t="",n=0,s=e.length,B=0;for(;B<s;){let i=e.codePointAt(B);if(i===T.CODES.get("\\")){if(n<B&&(t+=e.substring(n,B)),B++,B>=s)throw new Ge("character to be escaped is missing");n=B,B++;continue}if(i===T.CODES.get("$")){if(n<B&&(t+=e.substring(n,B)),B+1>=s)throw new Ge("Illegal group reference: group index is missing");let o=e.codePointAt(B+1);if(T.CODES.get("0")<=o&&o<=T.CODES.get("9")){let a=o-T.CODES.get("0"),c=B+2;for(;c<s;c++){let l=e.codePointAt(c);if(l<T.CODES.get("0")||l>T.CODES.get("9")||a*10+l-T.CODES.get("0")>this.patternGroupCount)break;a=a*10+l-T.CODES.get("0")}if(a>this.patternGroupCount)throw new Ge(`n > number of groups: ${a}`);let u=this.group(a);u!==null&&(t+=u),B=c,n=B}else if(o===T.CODES.get("{")){let a=B+2;for(;a<s&&e.codePointAt(a)!==T.CODES.get("}");)a++;if(a>=s)throw new Ge("named capture group is missing trailing '}'");let c=e.substring(B+2,a),u=this.group(c);u!==null&&(t+=u),B=a+1,n=B}else throw new Ge("Illegal group reference");continue}B++}return n<s&&(t+=e.substring(n,s)),t}appendReplacementInternalJs(e){let t="",n=0,s=e.length;for(let B=0;B<s-1;B++)if(e.codePointAt(B)===T.CODES.get("$")){let i=e.codePointAt(B+1);if(T.CODES.get("$")===i){n<B&&(t+=e.substring(n,B)),t+="$",B++,n=B+1;continue}else if(T.CODES.get("&")===i){n<B&&(t+=e.substring(n,B));let o=this.group(0);o!==null?t+=o:t+="$&",B++,n=B+1;continue}else if(T.CODES.get("`")===i){n<B&&(t+=e.substring(n,B)),t+=this.substring(0,this.start(0)),B++,n=B+1;continue}else if(T.CODES.get("'")===i){n<B&&(t+=e.substring(n,B)),t+=this.substring(this.end(0),this.matcherInputLength),B++,n=B+1;continue}else if(T.CODES.get("1")<=i&&i<=T.CODES.get("9")){let o=i-T.CODES.get("0");for(n<B&&(t+=e.substring(n,B)),B+=2;B<s&&(i=e.codePointAt(B),!(i<T.CODES.get("0")||i>T.CODES.get("9")||o*10+i-T.CODES.get("0")>this.patternGroupCount));B++)o=o*10+i-T.CODES.get("0");if(o>this.patternGroupCount){t+=`$${o}`,n=B,B--;continue}let a=this.group(o);a!==null&&(t+=a),n=B,B--;continue}else if(i===T.CODES.get("<")){n<B&&(t+=e.substring(n,B)),B++;let o=B+1;for(;o<e.length&&e.codePointAt(o)!==T.CODES.get(">")&&e.codePointAt(o)!==T.CODES.get(" ");)o++;if(o===e.length||e.codePointAt(o)!==T.CODES.get(">")){t+=e.substring(B-1,o+1),n=o+1,B=o;continue}let a=e.substring(B+1,o);if(Object.prototype.hasOwnProperty.call(this.namedGroups,a)){let c=this.group(a);c!==null&&(t+=c)}else t+=`$<${a}>`;n=o+1,B=o;continue}}return n<s&&(t+=e.substring(n,s)),t}appendTail(){return this.substring(this.appendPos,this.matcherInputLength)}replaceAll(e,t=!1){return this.replace(e,!0,t)}replaceFirst(e,t=!1){return this.replace(e,!1,t)}replace(e,t=!0,n=!1){let s="";this.reset();let B=typeof e=="function",i=Object.keys(this.namedGroups).length>0,o=null;if(B){if(this.groupCount()>=to.MAX_REPLACER_ARGS)throw new Ge("Too many capture groups to safely invoke replacer function");o=this.matcherInput.isUTF8Encoding()?this.matcherInput.asBytes():this.matcherInput.asCharSequence()}for(;this.find()&&(s+=B?this.appendReplacementFunc(e,i,o):this.appendReplacement(e,n),!!t););return s+=this.appendTail(),s}appendReplacementFunc(e,t,n){let s="",B=this.start(),i=this.end();this.appendPos<B&&(s+=this.substring(this.appendPos,B)),this.appendPos=i;let o=this.buildReplacerArgs(B,t,n);return s+=String(e(...o)),s}buildReplacerArgs(e,t,n){let s=[this.group(0)],B=this.groupCount();for(let i=1;i<=B;i++){let o=this.start(i);o<0?s.push(void 0):s.push(this.substring(o,this.end(i)))}if(s.push(e),s.push(n),t){let i=this.getNamedGroups();for(let o in i)i[o]===null&&(i[o]=void 0);s.push(i)}return s}},F=class xe{static ALT=1;static ALT_MATCH=2;static CAPTURE=3;static EMPTY_WIDTH=4;static FAIL=5;static MATCH=6;static NOP=7;static RUNE=8;static RUNE1=9;static RUNE_ANY=10;static RUNE_ANY_NOT_NL=11;static LB_WRITE=12;static LB_CHECK=13;static isRuneOp(e){return xe.RUNE<=e&&e<=xe.RUNE_ANY_NOT_NL}static escapeRunes(e){let t='"';for(let n of e)t+=_.escapeRune(n);return t+='"',t}constructor(e){this.op=e,this.out=0,this.arg=0,this.runes=new Int32Array(0),this.next=null}matchRune(e){if(this.runes.length===1){let i=this.runes[0];return(this.arg&N.FOLD_CASE)!==0?J.equalsIgnoreCase(i,e):e===i}let t=this.runes.length;if(t===0)return!1;if(t===2||t===4||t===6||t===8){for(let i=0;i<t;i+=2){if(e<this.runes[i])return!1;if(e<=this.runes[i+1])return!0}return!1}let n=0,s=t>>1;for(;s>1;){let i=s>>1;n+=this.runes[n+i<<1]<=e?i:0,s-=i}n+=this.runes[n<<1]<=e?1:0;let B=n-1;return B>=0&&e<=this.runes[B<<1|1]}matchRunePos(e){if(this.runes.length===1){let i=this.runes[0];return(this.arg&N.FOLD_CASE)!==0?J.equalsIgnoreCase(i,e)?0:-1:e===i?0:-1}let t=this.runes.length;if(t===0)return-1;if(t===2||t===4||t===6||t===8){for(let i=0;i<t;i+=2){if(e<this.runes[i])return-1;if(e<=this.runes[i+1])return Math.floor(i/2)}return-1}let n=0,s=t>>1;for(;s>1;){let i=s>>1;n+=this.runes[n+i<<1]<=e?i:0,s-=i}n+=this.runes[n<<1]<=e?1:0;let B=n-1;return B>=0&&e<=this.runes[B<<1|1]?B:-1}toString(){switch(this.op){case xe.ALT:return`alt -> ${this.out}, ${this.arg}`;case xe.ALT_MATCH:return`altmatch -> ${this.out}, ${this.arg}`;case xe.CAPTURE:return`cap ${this.arg} -> ${this.out}`;case xe.EMPTY_WIDTH:return`empty ${this.arg} -> ${this.out}`;case xe.MATCH:return`match${this.arg!==0?` ${this.arg}`:""}`;case xe.FAIL:return"fail";case xe.NOP:return`nop -> ${this.out}`;case xe.LB_WRITE:return`lbwrite ${this.arg} -> ${this.out}`;case xe.LB_CHECK:return`lbcheck ${this.arg} -> ${this.out}`;case xe.RUNE:return this.runes===null?"rune <null>":["rune ",xe.escapeRunes(this.runes),(this.arg&N.FOLD_CASE)!==0?"/i":""," -> ",this.out].join("");case xe.RUNE1:return`rune1 ${xe.escapeRunes(this.runes)} -> ${this.out}`;case xe.RUNE_ANY:return`any -> ${this.out}`;case xe.RUNE_ANY_NOT_NL:return`anynotnl -> ${this.out}`;default:throw new Error("unhandled case in Inst.toString")}}},Oi=class no{constructor(e){this.sparse=new Int32Array(e),this.densePcs=new Int32Array(e),this.denseCaps=null,this.size=0,this.ncap=0,this.mainThreads=0}static INITIAL_THREADS=32;init(e){this.ncap=e;let t=Math.min(this.densePcs.length,no.INITIAL_THREADS)*e;(!this.denseCaps||this.denseCaps.length<t)&&(this.denseCaps=new Int32Array(t))}growCaps(e){let t=this.densePcs.length*this.ncap,n=new Int32Array(Math.min(t,Math.max(e,2*this.denseCaps.length)));n.set(this.denseCaps),this.denseCaps=n}contains(e){let t=this.sparse[e];return t<this.size&&this.densePcs[t]===e}isEmpty(){return this.size===0}add(e){let t=this.size++;return this.sparse[e]=t,this.densePcs[t]=e,t}clear(){this.size=0,this.mainThreads=0}toString(){let e="{";for(let t=0;t<this.size;t++)t!==0&&(e+=", "),e+=this.densePcs[t];return e+="}",e}},ku=class{constructor(r){this.pos=-1,this.pcs=new Int32Array(r.numInst()),this.size=0,this.lbTable=new Int32Array(r.numLb+1)}reset(){this.pos=-1,this.size=0}},ro=class so{static fromRE2(e){let t=new so;return t.prog=e.prog,t.re2=e,t.q0=new Oi(t.prog.numInst()),t.q1=new Oi(t.prog.numInst()),t.addStack=new Int32Array(2*(t.prog.numInst()+1)),t.matched=!1,t.matchcap=new Int32Array(t.prog.numCap<2?2:t.prog.numCap),t.ncap=0,t}constructor(){this.prog=null,this.re2=null,this.q0=null,this.q1=null,this.addStack=null,this.matched=!1,this.matchcap=null,this.ncap=0,this.lbTable=null}init(e){this.ncap=e,e>this.matchcap.length?this.matchcap=new Int32Array(e).fill(-1):this.matchcap.fill(-1),this.q0.init(e),this.q1.init(e),this.prog.numLb>0&&((!this.lbTable||this.lbTable.length<this.prog.numLb+1)&&(this.lbTable=new Int32Array(this.prog.numLb+1)),this.lbTable.fill(-1))}submatches(){return this.ncap===0?_.emptyInts():_.toArray(this.matchcap.subarray(0,this.ncap))}match(e,t,n,s=null){let B=this.re2.cond;if(B===_.EMPTY_ALL||(n===N.ANCHOR_START||n===N.ANCHOR_BOTH)&&t!==0)return!1;this.matched=!1,this.matchcap.fill(-1);let i=this.prog.numLb>0,o=t,a=t,c=!1;i&&(s!==null&&s.pos>=0&&s.pos<=t?(a=s.pos,c=!0):a=0);let u=i&&s!==null,l=this.q0,C=this.q1,h=e.step(a),p=h>>3,f=h&7,w=-1,k=0;h!==$e.EOF()&&(h=e.step(a+f),w=h>>3,k=h&7);let E;for(a===0?E=_.emptyOpContext(-1,p):E=e.context(a),i&&(c?this.restoreLookbehinds(s,l,E):this.spawnLookbehinds(l,a,E));;){if(l.mainThreads===0){if((B&_.EMPTY_BEGIN_TEXT)!==0&&a!==0||(n===N.ANCHOR_START||n===N.ANCHOR_BOTH)&&a!==0||this.matched)break;if(this.prog.numLb===0&&l.isEmpty()&&this.re2.prefix.length!==0&&w!==this.re2.prefixRune&&e.canCheckPrefix()){let I=e.index(this.re2,a);if(I<0)break;a+=I,h=e.step(a),p=h>>3,f=h&7,h=e.step(a+f),w=h>>3,k=h&7,E=e.context(a)}}a>=o&&(u&&(this.saveLookbehinds(s,l,a),u=!1),!this.matched&&(a===0||n===N.UNANCHORED)&&(this.ncap>0&&(this.matchcap[0]=a),this.add(l,this.prog.start,a,this.matchcap,0,E)));let x=a+f;if(E=e.context(x),this.step(l,C,a,x,p,E,n,a===e.endPos()),f===0||this.ncap===0&&this.matched)break;a+=f,p=w,f=k,p!==-1&&(h=e.step(a+f),w=h>>3,k=h&7);let O=l;l=C,C=O}return l.clear(),C.clear(),this.matched}matchSet(e,t,n){let s=this.re2.cond;if(s===_.EMPTY_ALL)return[];if((n===N.ANCHOR_START||n===N.ANCHOR_BOTH)&&t!==0)return[];let B=this.prog.numLb>0?0:t,i=t,o=this.q0,a=this.q1,c=e.step(B),u=c>>3,l=c&7,C=-1,h=0;c!==$e.EOF()&&(c=e.step(B+l),C=c>>3,h=c&7);let p=B===0?_.emptyOpContext(-1,u):e.context(B),f=new Set;for(this.prog.numLb>0&&this.spawnLookbehinds(o,B,p);!(o.mainThreads===0&&((s&_.EMPTY_BEGIN_TEXT)!==0&&B!==0||(n===N.ANCHOR_START||n===N.ANCHOR_BOTH)&&B!==0));){(B===0||n===N.UNANCHORED)&&B>=i&&this.add(o,this.prog.start,B,this.matchcap,0,p);let w=B+l;p=e.context(w);for(let E=0;E<o.size;E++){let x=o.densePcs[E],O=this.prog.inst[x],I=E*this.ncap,v=!1;switch(O.op){case F.MATCH:if(n===N.ANCHOR_BOTH&&B!==e.endPos())break;f.add(O.arg);break;case F.RUNE:v=O.matchRune(u);break;case F.RUNE1:v=u===O.runes[0];break;case F.RUNE_ANY:v=!0;break;case F.RUNE_ANY_NOT_NL:v=u!==10;break;default:continue}v&&this.add(a,O.out,w,o.denseCaps,I,p)}if(o.clear(),l===0)break;B+=l,u=C,l=h,u!==-1&&(c=e.step(B+l),C=c>>3,h=c&7);let k=o;o=a,a=k}return a.clear(),Array.from(f).sort((w,k)=>w-k)}step(e,t,n,s,B,i,o,a){let c=this.re2.longest;for(let u=0;u<e.size;u++){let l=e.densePcs[u],C=u*this.ncap;if(c&&this.matched&&this.ncap>0&&this.matchcap[0]<e.denseCaps[C])continue;let h=this.prog.inst[l],p=!1;switch(h.op){case F.MATCH:if(o===N.ANCHOR_BOTH&&!a)break;if(this.ncap>0&&(!c||!this.matched||this.matchcap[1]<n)){e.denseCaps[C+1]=n;for(let f=0;f<this.ncap;f++)this.matchcap[f]=e.denseCaps[C+f]}c||(e.size=0),this.matched=!0;break;case F.RUNE:p=h.matchRune(B);break;case F.RUNE1:p=B===h.runes[0];break;case F.RUNE_ANY:p=!0;break;case F.RUNE_ANY_NOT_NL:p=B!==10;break;default:continue}p&&this.add(t,h.out,s,e.denseCaps,C,i)}e.clear()}spawnLookbehinds(e,t,n){for(let s=0;s<this.prog.lbStarts.length;s++)this.add(e,this.prog.lbStarts[s],t,this.matchcap,0,n)}restoreLookbehinds(e,t,n){this.lbTable.set(e.lbTable);for(let s=0;s<e.size;s++)this.add(t,e.pcs[s],e.pos,this.matchcap,0,n)}saveLookbehinds(e,t,n){let s=0;for(let B=0;B<t.size;B++){let i=t.densePcs[B];this.prog.lbInst[i]===1&&F.isRuneOp(this.prog.inst[i].op)&&(e.pcs[s++]=i)}e.size=s,e.pos=n,e.lbTable.set(this.lbTable)}add(e,t,n,s,B,i){let o=this.addStack,a=0;for(;;){for(;t!==0&&!e.contains(t);){let u=e.add(t),l=this.prog.inst[t];switch(l.op){case F.FAIL:t=0;break;case F.ALT:case F.ALT_MATCH:o[a++]=l.arg,o[a++]=0,t=l.out;break;case F.EMPTY_WIDTH:t=(l.arg&~i)===0?l.out:0;break;case F.NOP:t=l.out;break;case F.CAPTURE:l.arg<this.ncap&&(o[a++]=-l.arg-1,o[a++]=s[B+l.arg],s[B+l.arg]=n),t=l.out;break;case F.LB_WRITE:this.lbTable[Math.abs(l.arg)]=n,t=l.out;break;case F.LB_CHECK:l.arg>0?t=this.lbTable[l.arg]===n?l.out:0:t=this.lbTable[-l.arg]!==n?l.out:0;break;case F.MATCH:case F.RUNE:case F.RUNE1:case F.RUNE_ANY:case F.RUNE_ANY_NOT_NL:if(this.prog.lbInst[t]===0&&e.mainThreads++,this.ncap>0){let C=u*this.ncap;C+this.ncap>e.denseCaps.length&&e.growCaps(C+this.ncap);for(let h=0;h<this.ncap;h++)e.denseCaps[C+h]=s[B+h]}t=0;break;default:throw new Jn("unhandled")}}if(a===0)return;a-=2;let c=o[a];c<0?(s[B-c-1]=o[a+1],t=0):t=c}}},Ou=(r,e,t)=>{let n=-2128831035;for(let s=0;s<r.length;s++)n^=r[s],n=Math.imul(n,16777619);n^=e,n=Math.imul(n,16777619);for(let s=0;s<t.length;s++)n^=t[s],n=Math.imul(n,16777619);return n},Si=(r,e)=>{if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0},_s=[],Hn=-1,Su=class{constructor(r,e,t){this.nfaStates=r,this.flag=e,this.isMatch=(e&Qs.FLAG_MATCH)!==0,this.matchIDs=t,this.next=null,this.nextAnchored=null}},Qs=class Pe{static FLAG_EMPTY_MASK=255;static FLAG_MATCH=256;static FLAG_LAST_WORD=512;static FLAG_NEED_SHIFT=16;static STATE_OVERHEAD=160;static TABLE_OVERHEAD=16;static PROGRESS_PER_STATE=10;constructor(e,t=8388608){this.prog=e,this.maxMem=t,this.stateCache=new Map,this.stateCount=0,this.startStates=new Map,this.failed=!1;for(let n=0;n<e.numInst();n++){let s=e.getInst(n).op;if(s===F.LB_WRITE||s===F.LB_CHECK){this.failed=!0;break}}this.computeRuneClasses(),this.stateBudget=t,this.memBudget=t}computeRuneClasses(){let e=new Set,t=(s,B)=>{e.add(s),e.add(B+1)};for(let s=0;s<this.prog.numInst();s++){let B=this.prog.getInst(s);switch(B.op){case F.RUNE:case F.RUNE1:if(B.runes.length===1){if(t(B.runes[0],B.runes[0]),(B.arg&N.FOLD_CASE)!==0)for(let i=J.simpleFold(B.runes[0]);i!==B.runes[0];i=J.simpleFold(i))t(i,i)}else for(let i=0;i<B.runes.length;i+=2)t(B.runes[i],B.runes[i+1]);break;case F.RUNE_ANY_NOT_NL:t(10,10);break;case F.EMPTY_WIDTH:(B.arg&(_.EMPTY_BEGIN_LINE|_.EMPTY_END_LINE))!==0&&t(10,10),(B.arg&(_.EMPTY_WORD_BOUNDARY|_.EMPTY_NO_WORD_BOUNDARY))!==0&&(t(48,57),t(65,90),t(95,95),t(97,122))}}e.delete(0),this.classBounds=Int32Array.from(e).sort(),this.numClasses=this.classBounds.length+1;let n=new Int32Array(J.MAX_LATIN1+1);for(let s=0;s<=J.MAX_LATIN1;s++)n[s]=this.searchClass(s);this.latin1Class=n}runeClass(e){return e<=J.MAX_LATIN1?this.latin1Class[e]:this.searchClass(e)}searchClass(e){let t=this.classBounds,n=0,s=t.length;for(;n<s;){let B=n+s>>1;t[B]<=e?n=B+1:s=B}return n}closure(e,t){let n=new Set,s=Array.from(e),B=0;for(;s.length>0;){let i=s.pop();if(i===0||n.has(i))continue;n.add(i);let o=this.prog.getInst(i);switch(o.op){case F.ALT:case F.ALT_MATCH:s.push(o.out),s.push(o.arg);break;case F.NOP:case F.CAPTURE:s.push(o.out);break;case F.EMPTY_WIDTH:B|=o.arg,(o.arg&~t)===0&&s.push(o.out)}}return{pcs:Int32Array.from(n).sort(),needflags:B}}getState(e,t,n){let s=Ou(e,t,n),B=this.stateCache.get(s);if(B)for(let a=0;a<B.length;a++){let c=B[a];if(c.flag===t&&Si(c.nfaStates,e)&&Si(c.matchIDs,n))return c}let i=Pe.STATE_OVERHEAD+4*e.length+8*n.length;if(this.memBudget<i)return null;this.memBudget-=i,B||(B=[],this.stateCache.set(s,B));let o=new Su(e,t,n);return B.push(o),this.stateCount++,o}makeState(e,t,n){let s=this.closure(e,t&Pe.FLAG_EMPTY_MASK),B=t;return s.needflags===0&&(B&=Pe.FLAG_MATCH),B|=s.needflags<<Pe.FLAG_NEED_SHIFT,this.getState(s.pcs,B,n)}allocTable(e,t){let n=this.numClasses+1,s=Pe.TABLE_OVERHEAD+8*n;if(this.memBudget<s)return null;this.memBudget-=s;let B=new Array(n).fill(null);return t===N.UNANCHORED?e.next=B:e.nextAnchored=B,B}clearCache(){this.stateCache.clear(),this.stateCount=0,this.startStates.clear(),this.memBudget=this.stateBudget}resetCache(e){return this.clearCache(),this.getState(e.nfaStates,e.flag,e.matchIDs)}step(e,t,n,s){let B=s===N.UNANCHORED?e.next:e.nextAnchored;if(B!==null){let E=B[t];if(E!==null)return E}else if(B=this.allocTable(e,s),B===null)return null;let i=e.flag>>>Pe.FLAG_NEED_SHIFT,o=e.flag&Pe.FLAG_EMPTY_MASK,a=o,c=0;n===10&&(a|=_.EMPTY_END_LINE,c|=_.EMPTY_BEGIN_LINE),n===Hn&&(a|=_.EMPTY_END_LINE|_.EMPTY_END_TEXT);let u=(e.flag&Pe.FLAG_LAST_WORD)!==0,l=n!==Hn&&_.isWordRune(n);a|=l===u?_.EMPTY_NO_WORD_BOUNDARY:_.EMPTY_WORD_BOUNDARY;let C=e.nfaStates;(a&~o&i)!==0&&(C=this.closure(C,a).pcs);let h=[],p=!1,f=_s;for(let E=0;E<C.length;E++){let x=this.prog.getInst(C[E]);x.op===F.MATCH?(p||(p=!0,f=[]),f.push(x.arg)):n!==Hn&&F.isRuneOp(x.op)&&x.matchRune(n)&&h.push(x.out)}f.length>1&&f.sort((E,x)=>E-x),s===N.UNANCHORED&&n!==Hn&&h.push(this.prog.start);let w=c;p&&(w|=Pe.FLAG_MATCH),l&&(w|=Pe.FLAG_LAST_WORD);let k=this.makeState(h,w,f);return k===null?null:(B[t]=k,k)}start(e,t){let n=e.context(t),s;if((n&_.EMPTY_BEGIN_TEXT)!==0)s=_.EMPTY_BEGIN_TEXT|_.EMPTY_BEGIN_LINE;else if((n&_.EMPTY_BEGIN_LINE)!==0)s=_.EMPTY_BEGIN_LINE;else{let i=e.step(t),o=i>=0&&_.isWordRune(i>>3);s=(n&_.EMPTY_WORD_BOUNDARY)!==0!==o?Pe.FLAG_LAST_WORD:0}let B=this.startStates.get(s);if(B===void 0){if(B=this.makeState([this.prog.start],s,_s),B===null&&(this.clearCache(),B=this.makeState([this.prog.start],s,_s),B===null))return null;this.startStates.set(s,B)}return B}stepOrReset(e,t,n,s,B,i){let o=this.step(e,t,n,s);if(o!==null)return o;if(i.resetPos>=0&&B-i.resetPos<Pe.PROGRESS_PER_STATE*this.stateCount)return null;i.resetPos=B;let a=this.resetCache(e);return a===null?null:(o=this.step(a,t,n,s),o)}run(e,t,n,s,B){let i=e.endPos(),o=this.latin1Class,a=n===N.UNANCHORED,c={resetPos:-1},u=t;for(;u<i;){let l=e.step(u),C=l>>3,h=l&7;if(h===0)break;let p=C<=J.MAX_LATIN1?o[C]:this.runeClass(C),f=a&&s.next!==null?s.next[p]:null;if(f===null&&(f=this.stepOrReset(s,p,C,n,u,c),f===null))return null;if(s=f,s.isMatch&&B(s,!1))return!0;if(!a&&s.nfaStates.length===0)return!1;u+=h}return s=this.stepOrReset(s,this.numClasses,Hn,n,u,c),s===null?null:s.isMatch&&B(s,!0)}match(e,t,n){if(this.failed)return null;if((n===N.ANCHOR_START||n===N.ANCHOR_BOTH)&&t!==0)return!1;let s=this.start(e,t);return s===null?null:this.run(e,t,n,s,(B,i)=>n!==N.ANCHOR_BOTH||i)}matchSet(e,t,n){if(this.failed)return null;if((n===N.ANCHOR_START||n===N.ANCHOR_BOTH)&&t!==0)return[];let s=this.start(e,t);if(s===null)return null;let B=new Set,i=(o,a)=>{if(n!==N.ANCHOR_BOTH||a)for(let c=0;c<o.matchIDs.length;c++)B.add(o.matchIDs[c]);return!1};return this.run(e,t,n,s,i)===null?null:Array.from(B).sort((o,a)=>o-a)}},Au=32,Ru=500,Js=256,Fu=262144,yu=class{constructor(){this.end=0,this.cap=new Int32Array(0),this.matchcap=new Int32Array(0),this.ncap=0,this.jobPc=new Int32Array(Js),this.jobArg=new Uint8Array(Js),this.jobPos=new Int32Array(Js),this.jobLen=0,this.visited=new Uint32Array(0)}reset(r,e,t){this.end=e,this.jobLen=0,this.ncap=t;let n=r.numInst()*(e+1)+Au-1>>>5;this.visited.length<n?this.visited=new Uint32Array(n):this.visited.fill(0,0,n),this.cap.length<t?this.cap=new Int32Array(t).fill(-1):this.cap.fill(-1,0,t),this.matchcap.length<t?this.matchcap=new Int32Array(t).fill(-1):this.matchcap.fill(-1,0,t)}shouldVisit(r,e){let t=r*(this.end+1)+e,n=t>>>5,s=1<<(t&31);return(this.visited[n]&s)!==0?!1:(this.visited[n]|=s,!0)}push(r,e,t,n){if(r.prog.getInst(e).op!==F.FAIL&&(n||this.shouldVisit(e,t))){if(this.jobLen>=this.jobPc.length){let s=this.jobPc.length*2,B=new Int32Array(s);B.set(this.jobPc),this.jobPc=B;let i=new Uint8Array(s);i.set(this.jobArg),this.jobArg=i;let o=new Int32Array(s);o.set(this.jobPos),this.jobPos=o}this.jobPc[this.jobLen]=e,this.jobArg[this.jobLen]=n?1:0,this.jobPos[this.jobLen]=t,this.jobLen++}}tryBacktrack(r,e,t,n,s){let B=r.longest;for(this.push(r,t,n,!1);this.jobLen>0;){this.jobLen--;let i=this.jobPc[this.jobLen],o=this.jobArg[this.jobLen]===1,a=this.jobPos[this.jobLen],c=!0;for(;!(!c&&!this.shouldVisit(i,a));){c=!1;let u=r.prog.getInst(i);switch(u.op){case F.FAIL:throw new Jn("unexpected InstFail");case F.ALT:if(o){o=!1,i=u.arg;continue}else{this.push(r,i,a,!0),i=u.out;continue}case F.ALT_MATCH:{let l=r.prog.getInst(u.out);if(F.isRuneOp(l.op)){this.push(r,u.arg,a,!1),i=u.arg,a=this.end;continue}this.push(r,u.out,this.end,!1),i=u.out;continue}case F.RUNE:{let l=e.step(a);if(l===$e.EOF()||!u.matchRune(l>>3))break;a+=l&7,i=u.out;continue}case F.RUNE1:{let l=e.step(a);if(l===$e.EOF()||l>>3!==u.runes[0])break;a+=l&7,i=u.out;continue}case F.RUNE_ANY_NOT_NL:{let l=e.step(a);if(l===$e.EOF()||l>>3===10)break;a+=l&7,i=u.out;continue}case F.RUNE_ANY:{let l=e.step(a);if(l===$e.EOF())break;a+=l&7,i=u.out;continue}case F.CAPTURE:if(o){this.cap[u.arg]=a;break}else{u.arg<this.ncap&&(this.push(r,i,this.cap[u.arg],!0),this.cap[u.arg]=a),i=u.out;continue}case F.EMPTY_WIDTH:{let l=e.context(a);if((u.arg&~l)!==0)break;i=u.out;continue}case F.NOP:i=u.out;continue;case F.MATCH:{if(s===N.ANCHOR_BOTH&&a!==this.end)break;if(this.ncap===0)return!0;this.ncap>1&&(this.cap[1]=a);let l=this.matchcap[1];if((l===-1||B&&a>0&&a>l)&&this.matchcap.set(this.cap),!B||a===this.end)return!0;break}case F.LB_WRITE:case F.LB_CHECK:throw new Jn("Backtracker cannot evaluate Lookbehind instructions");default:throw new Jn("bad inst")}break}}return B&&this.matchcap.length>1&&this.matchcap[1]>=0}},Nr=[],$r=class Bo{static shouldBacktrack(e){return e.numInst()<=Ru}static maxBitStateLen(e){return Bo.shouldBacktrack(e)?Math.floor(Fu/e.numInst()):0}static execute(e,t,n,s,B){let i=e.cond;if(i===_.EMPTY_ALL||(s===N.ANCHOR_START||s===N.ANCHOR_BOTH)&&n!==0||(i&_.EMPTY_BEGIN_TEXT)!==0&&n!==0)return null;let o=Nr.length>0?Nr.pop():new yu,a=t.endPos();o.reset(e.prog,a,B);let c=!1;if((i&_.EMPTY_BEGIN_TEXT)!==0||s===N.ANCHOR_START||s===N.ANCHOR_BOTH)o.ncap>0&&(o.cap[0]=n),o.tryBacktrack(e,t,e.prog.start,n,s)&&(c=!0);else{let l=-1;for(;n<=a&&l!==0;n+=l){if(e.prefix.length>0){let h=t.index(e,n);if(h<0)break;n+=h}if(o.ncap>0&&(o.cap[0]=n),o.tryBacktrack(e,t,e.prog.start,n,s)){c=!0;break}let C=t.step(n);l=C===$e.EOF()?0:C&7}}if(!c)return Nr.push(o),null;let u=B===0?[]:_.toArray(o.matchcap.subarray(0,B));return Nr.push(o),u}},Ai=class{constructor(r){this.sparse=new Uint32Array(r),this.dense=new Uint32Array(r),this.size=0,this.nextIndex=0}empty(){return this.nextIndex>=this.size}next(){return this.dense[this.nextIndex++]}clear(){this.size=0,this.nextIndex=0}contains(r){return r<this.sparse.length&&this.sparse[r]<this.size&&this.dense[this.sparse[r]]===r}insert(r){this.contains(r)||this.insertNew(r)}insertNew(r){r>=this.sparse.length||(this.sparse[r]=this.size,this.dense[this.size]=r,this.size++)}},Iu=(r,e,t,n)=>{let s=r.length,B=e.length,i=0,o=0,a=[],c=[],u=!0,l=-1,C=h=>{let p=h?r:e,f=h?i:o,w=h?t:n;return l>0&&p[f]<=a[l]?!1:(a.push(p[f],p[f+1]),h?i+=2:o+=2,l+=2,c.push(w),!0)};for(;i<s||o<B;)if(o>=B?u=C(!0):i>=s||e[o]<r[i]?u=C(!1):u=C(!0),!u)return null;return{merged:a,next:c}},Tu=class{constructor(r){this.start=r.start,this.numCap=r.numCap,this.inst=new Array(r.inst.length);for(let e=0;e<r.inst.length;e++){let t=r.inst[e],n=new F(t.op);n.out=t.out,n.arg=t.arg,n.runes=t.runes?new Int32Array(t.runes):new Int32Array(0),n.next=null,this.inst[e]=n}}},Lu=r=>{let e=new Tu(r);for(let t=0;t<e.inst.length;t++){let n=e.inst[t];if(n.op!==F.ALT&&n.op!==F.ALT_MATCH)continue;let s="out",B="arg",i=e.inst[n[B]];if(i.op!==F.ALT&&i.op!==F.ALT_MATCH&&(s="arg",B="out",i=e.inst[n[B]],i.op!==F.ALT&&i.op!==F.ALT_MATCH))continue;let o=e.inst[n[s]];if(o.op===F.ALT||o.op===F.ALT_MATCH)continue;let a="out",c="arg",u=!1;i.out===t?u=!0:i.arg===t&&(u=!0,a="arg",c="out"),u&&(i[a]=n[s]),n[s]===i[a]&&(n[B]=i[c])}return e},Nu=r=>{if(r.inst.length>=1e3)return null;let e=new Ai(r.inst.length),t=new Ai(r.inst.length),n=new Array(r.inst.length),s=new Array(r.inst.length).fill(!1),B=i=>{let o=!0,a=r.inst[i];if(t.contains(i))return!0;switch(t.insert(i),a.op){case F.ALT:case F.ALT_MATCH:{o=B(a.out)&&B(a.arg);let c=s[a.out],u=s[a.arg];if(c&&u)return!1;if(u){let p=a.out;a.out=a.arg,a.arg=p;let f=c;c=u,u=f}c&&(s[i]=!0,a.op=F.ALT_MATCH);let l=n[a.out]||[],C=n[a.arg]||[],h=Iu(l,C,a.out,a.arg);if(!h)return!1;n[i]=new Int32Array(h.merged),a.next=new Uint32Array(h.next);break}case F.CAPTURE:case F.EMPTY_WIDTH:case F.NOP:o=B(a.out),s[i]=s[a.out],n[i]=n[a.out]?new Int32Array(n[a.out]):new Int32Array(0),a.next=new Uint32Array(Math.floor(n[i].length/2)+1).fill(a.out);break;case F.MATCH:case F.FAIL:s[i]=a.op===F.MATCH;break;case F.RUNE:{if(s[i]=!1,a.next&&a.next.length>0)break;if(e.insert(a.out),!a.runes||a.runes.length===0){n[i]=new Int32Array(0),a.next=new Uint32Array([a.out]);break}let c=[];if(a.runes.length===1&&(a.arg&N.FOLD_CASE)!==0){let u=a.runes[0];c.push(u,u);for(let l=J.simpleFold(u);l!==u;l=J.simpleFold(l))c.push(l,l);c.sort((l,C)=>l-C)}else for(let u=0;u<a.runes.length;u++)c.push(a.runes[u]);n[i]=new Int32Array(c),a.next=new Uint32Array(Math.floor(c.length/2)+1).fill(a.out),a.op=F.RUNE;break}case F.RUNE1:{if(s[i]=!1,a.next&&a.next.length>0)break;e.insert(a.out);let c=[];if((a.arg&N.FOLD_CASE)!==0){let u=a.runes[0];c.push(u,u);for(let l=J.simpleFold(u);l!==u;l=J.simpleFold(l))c.push(l,l);c.sort((l,C)=>l-C)}else c.push(a.runes[0],a.runes[0]);n[i]=new Int32Array(c),a.next=new Uint32Array(Math.floor(c.length/2)+1).fill(a.out),a.op=F.RUNE;break}case F.RUNE_ANY:if(s[i]=!1,a.next&&a.next.length>0)break;e.insert(a.out),n[i]=new Int32Array([0,J.MAX_RUNE]),a.next=new Uint32Array([a.out]);break;case F.RUNE_ANY_NOT_NL:if(s[i]=!1,a.next&&a.next.length>0)break;e.insert(a.out),n[i]=new Int32Array([0,9,11,J.MAX_RUNE]),a.next=new Uint32Array(Math.floor(n[i].length/2)+1).fill(a.out)}return o};for(e.clear(),e.insert(r.start);!e.empty();)if(t.clear(),!B(e.next()))return null;for(let i=0;i<r.inst.length;i++)n[i]&&(r.inst[i].runes=n[i]);return r},$u=(r,e)=>{for(let t=0;t<e.inst.length;t++){let n=e.inst[t];switch(n.op){case F.ALT:case F.ALT_MATCH:case F.RUNE:break;case F.CAPTURE:case F.EMPTY_WIDTH:case F.NOP:case F.MATCH:case F.FAIL:r.inst[t].next=null;break;case F.RUNE1:case F.RUNE_ANY:case F.RUNE_ANY_NOT_NL:r.inst[t].next=null,r.inst[t].op=n.op,r.inst[t].runes=n.runes?new Int32Array(n.runes):new Int32Array(0)}}},Ri=class io{static compile(e){if(e.start===0||e.numLb>0)return null;let t=e.inst[e.start];if(t.op!==F.EMPTY_WIDTH||(t.arg&_.EMPTY_BEGIN_TEXT)===0)return null;let n=!1;for(let B=0;B<e.inst.length;B++)if(e.inst[B].op===F.ALT||e.inst[B].op===F.ALT_MATCH){n=!0;break}for(let B=0;B<e.inst.length;B++){let i=e.inst[B],o=e.inst[i.out].op;switch(i.op){case F.ALT:case F.ALT_MATCH:if(o===F.MATCH||e.inst[i.arg].op===F.MATCH)return null;break;case F.EMPTY_WIDTH:if(o===F.MATCH){if((i.arg&_.EMPTY_END_TEXT)===_.EMPTY_END_TEXT)continue;return null}break;default:if(o===F.MATCH&&n)return null}}let s=Lu(e);return s=Nu(s),s!==null&&$u(s,e),s}static next(e,t){let n=e.matchRunePos(t);return n>=0?e.next[n]:e.op===F.ALT_MATCH?e.out:0}static execute(e,t,n,s,B){let i=e.onepass;if(!i)return null;let o=new Int32Array(B).fill(-1),a=!1,c=t.step(n),u=c>>3,l=c&7,C=$e.EOF(),h=-1,p=0;c!==$e.EOF()&&(C=t.step(n+l),C!==$e.EOF()&&(h=C>>3,p=C&7));let f=n===0?_.emptyOpContext(-1,u):t.context(n),w=i.start,k;for(;;){switch(k=i.inst[w],w=k.out,k.op){case F.MATCH:return s===N.ANCHOR_BOTH&&n!==t.endPos()?null:(a=!0,o.length>0&&(o[0]=0,o[1]=n),B===0?[]:_.toArray(o));case F.RUNE:if(!k.matchRune(u))return null;break;case F.RUNE1:if(u!==k.runes[0])return null;break;case F.RUNE_ANY:break;case F.RUNE_ANY_NOT_NL:if(u===10)return null;break;case F.ALT:case F.ALT_MATCH:w=io.next(k,u);continue;case F.FAIL:return null;case F.NOP:continue;case F.EMPTY_WIDTH:if((k.arg&~f)!==0)return null;continue;case F.CAPTURE:k.arg<o.length&&(o[k.arg]=n);continue;default:throw new Jn("bad inst")}if(l===0)break;f=_.emptyOpContext(u,h),n+=l,u=h,l=p,u!==-1&&(C=t.step(n+l),C!==$e.EOF()?(h=C>>3,p=C&7):(h=-1,p=0))}return a?B===0?[]:_.toArray(o):null}},D=class V{static Op=eo(["NO_MATCH","EMPTY_MATCH","LITERAL","CHAR_CLASS","ANY_CHAR_NOT_NL","ANY_CHAR","BEGIN_LINE","END_LINE","BEGIN_TEXT","END_TEXT","WORD_BOUNDARY","NO_WORD_BOUNDARY","CAPTURE","STAR","PLUS","QUEST","REPEAT","CONCAT","ALTERNATE","PLB","NLB","LEFT_PAREN","VERTICAL_BAR"]);static isPseudoOp(e){return e>=V.Op.LEFT_PAREN}static emptySubs(){return[]}static quoteIfHyphen(e){return e===T.CODES.get("-")?"\\":""}static fromRegexp(e){let t=new V(e.op);return t.flags=e.flags,t.subs=e.subs,t.runes=e.runes,t.cap=e.cap,t.min=e.min,t.max=e.max,t.name=e.name,t.namedGroups=e.namedGroups,t.lb=e.lb,t}constructor(e){this.op=e,this.flags=0,this.subs=V.emptySubs(),this.runes=new Int32Array(0),this.min=0,this.max=0,this.cap=0,this.name=null,this.namedGroups=Object.create(null),this.lb=0}reinit(){this.flags=0,this.subs=V.emptySubs(),this.runes=new Int32Array(0),this.cap=0,this.min=0,this.max=0,this.name=null,this.namedGroups=Object.create(null),this.lb=0}toString(){return this.appendTo()}appendTo(){let e="";switch(this.op){case V.Op.NO_MATCH:e+="[^\\x00-\\x{10FFFF}]";break;case V.Op.EMPTY_MATCH:e+="(?:)";break;case V.Op.STAR:case V.Op.PLUS:case V.Op.QUEST:case V.Op.REPEAT:{let t=this.subs[0];switch(t.op>V.Op.CAPTURE||t.op===V.Op.LITERAL&&t.runes.length>1?e+=`(?:${t.appendTo()})`:e+=t.appendTo(),this.op){case V.Op.STAR:e+="*";break;case V.Op.PLUS:e+="+";break;case V.Op.QUEST:e+="?";break;case V.Op.REPEAT:e+=`{${this.min}`,this.min!==this.max&&(e+=",",this.max>=0&&(e+=this.max)),e+="}"}(this.flags&N.NON_GREEDY)!==0&&(e+="?");break}case V.Op.CONCAT:for(let t of this.subs)t.op===V.Op.ALTERNATE?e+=`(?:${t.appendTo()})`:e+=t.appendTo();break;case V.Op.ALTERNATE:{let t="";for(let n of this.subs)e+=t,t="|",e+=n.appendTo();break}case V.Op.LITERAL:(this.flags&N.FOLD_CASE)!==0&&(e+="(?i:");for(let t of this.runes)e+=_.escapeRune(t);(this.flags&N.FOLD_CASE)!==0&&(e+=")");break;case V.Op.ANY_CHAR_NOT_NL:e+="(?-s:.)";break;case V.Op.ANY_CHAR:e+="(?s:.)";break;case V.Op.PLB:e+=`(?<=${this.subs[0].appendTo()})`;break;case V.Op.NLB:e+=`(?<!${this.subs[0].appendTo()})`;break;case V.Op.CAPTURE:this.name===null||this.name.length===0?e+="(":e+=`(?P<${this.name}>`,this.subs[0].op!==V.Op.EMPTY_MATCH&&(e+=this.subs[0].appendTo()),e+=")";break;case V.Op.BEGIN_TEXT:e+="\\A";break;case V.Op.END_TEXT:(this.flags&N.WAS_DOLLAR)!==0?e+="(?-m:$)":e+="\\z";break;case V.Op.BEGIN_LINE:e+="^";break;case V.Op.END_LINE:e+="$";break;case V.Op.WORD_BOUNDARY:e+="\\b";break;case V.Op.NO_WORD_BOUNDARY:e+="\\B";break;case V.Op.CHAR_CLASS:if(this.runes.length%2!==0){e+="[invalid char class]";break}if(e+="[",this.runes.length===0)e+="^\\x00-\\x{10FFFF}";else if(this.runes[0]===0&&this.runes[this.runes.length-1]===J.MAX_RUNE){e+="^";for(let t=1;t<this.runes.length-1;t+=2){let n=this.runes[t]+1,s=this.runes[t+1]-1;e+=V.quoteIfHyphen(n),e+=_.escapeRune(n),n!==s&&(e+="-",e+=V.quoteIfHyphen(s),e+=_.escapeRune(s))}}else for(let t=0;t<this.runes.length;t+=2){let n=this.runes[t],s=this.runes[t+1];e+=V.quoteIfHyphen(n),e+=_.escapeRune(n),n!==s&&(e+="-",e+=V.quoteIfHyphen(s),e+=_.escapeRune(s))}e+="]";break;default:e+=this.op}return e}maxCap(){let e=0;if(this.op===V.Op.CAPTURE&&(e=this.cap),this.subs!==null)for(let t of this.subs){let n=t.maxCap();e<n&&(e=n)}return e}equals(e){if(!(e!==null&&e instanceof V)||this.op!==e.op)return!1;switch(this.op){case V.Op.END_TEXT:if((this.flags&N.WAS_DOLLAR)!==(e.flags&N.WAS_DOLLAR))return!1;break;case V.Op.LITERAL:case V.Op.CHAR_CLASS:if((this.flags&N.FOLD_CASE)!==(e.flags&N.FOLD_CASE))return!1;if(this.runes===null&&e.runes===null)break;if(this.runes===null||e.runes===null||this.runes.length!==e.runes.length)return!1;for(let t=0;t<this.runes.length;t++)if(this.runes[t]!==e.runes[t])return!1;break;case V.Op.ALTERNATE:case V.Op.CONCAT:if(this.subs.length!==e.subs.length)return!1;for(let t=0;t<this.subs.length;++t)if(!this.subs[t].equals(e.subs[t]))return!1;break;case V.Op.STAR:case V.Op.PLUS:case V.Op.QUEST:if((this.flags&N.NON_GREEDY)!==(e.flags&N.NON_GREEDY)||!this.subs[0].equals(e.subs[0]))return!1;break;case V.Op.REPEAT:if((this.flags&N.NON_GREEDY)!==(e.flags&N.NON_GREEDY)||this.min!==e.min||this.max!==e.max||!this.subs[0].equals(e.subs[0]))return!1;break;case V.Op.CAPTURE:if(this.cap!==e.cap||(this.name===null?e.name!==null:this.name!==e.name)||!this.subs[0].equals(e.subs[0]))return!1;break;case V.Op.PLB:case V.Op.NLB:if(this.lb!==e.lb||!this.subs[0].equals(e.subs[0]))return!1}return!0}},qs=class{static walk(r,e){let t=[],n=r,s;for(;;){if(n.subs.length===0)s=e.leaf(n);else{let B=e.enter(n);if(B.result===void 0){t.push({re:n,state:B,i:0}),n=n.subs[0];continue}s=B.result}for(;;){if(t.length===0)return s;let B=t[t.length-1];if(e.child(B.re,B.state,s,B.i),B.i++,B.state.result===void 0&&B.i<B.re.subs.length){n=B.re.subs[B.i];break}t.pop(),s=B.state.result!==void 0?B.state.result:e.leave(B.re,B.state)}}}},Fi=class{constructor(r,e){let t=new Map,n=[0],s=[0],B=[0],i=[0];for(let p of r){let f=0;for(let w=0;w<p.length;w++){let k=f*e+p[w],E=t.get(k);E===void 0&&(E=n.length,t.set(k,E),n.push(f),s.push(p[w]),B.push(B[f]+1),i.push(0)),f=E}i[f]=1}let o=n.length,a=new Int32Array(o-1);for(let p=1;p<o;p++)a[p-1]=p;a.sort((p,f)=>n[p]-n[f]||s[p]-s[f]);let c=new Int32Array(o+1);for(let p=1;p<o;p++)c[n[p]+1]++;for(let p=0;p<o;p++)c[p+1]+=c[p];let u=new Int32Array(o-1);for(let p=0;p<a.length;p++)u[p]=s[a[p]];this.childStart=c,this.childUnit=u,this.childNode=a;let l=new Int32Array(o);for(let p=0;p<o;p++)l[p]=p;l.sort((p,f)=>B[p]-B[f]);let C=new Int32Array(o),h=Uint8Array.from(i);for(let p=1;p<o;p++){let f=l[p],w=n[f];if(w!==0){let k=C[w],E=this.next(k,s[f]);for(;E<0&&k!==0;)k=C[k],E=this.next(k,s[f]);C[f]=E>=0?E:0}h[f]|=h[C[f]]}this.fail=C,this.match=h}next(r,e){let t=this.childStart[r],n=this.childStart[r+1],s=this.childUnit;for(;t<n;){let B=t+n>>1,i=s[B];if(i===e)return this.childNode[B];i<e?t=B+1:n=B}return-1}advance(r,e){for(;;){let t=this.next(r,e);if(t>=0)return t;if(r===0)return 0;r=this.fail[r]}}searchUTF16(r,e,t){let n=0;for(let s=e;s<t;s++)if(n=this.advance(n,r.charCodeAt(s)),this.match[n]===1)return!0;return!1}searchUTF8(r,e,t){let n=0;for(let s=e;s<t;s++)if(n=this.advance(n,r[s]),this.match[n]===1)return!0;return!1}},Be=class ln{static Type={NONE:0,EXACT:1,AND:2,OR:3};static MAX_SCANS=32;static MAX_AC_UNITS=1<<18;constructor(e){this.type=e,this.subs=[],this.str="",this.bytes=null,this.cost=e===ln.Type.EXACT?1:0,this.allExact=!1,this.ac16=null,this.ac8=null}automaton16(){if(this.ac16===null){let e=this.subs.map(t=>{let n=new Array(t.str.length);for(let s=0;s<t.str.length;s++)n[s]=t.str.charCodeAt(s);return n});this.ac16=new Fi(e,65536)}return this.ac16}automaton8(){return this.ac8===null&&(this.ac8=new Fi(this.subs.map(e=>e.bytes),256)),this.ac8}eval(e,t){switch(this.type){case ln.Type.NONE:return!0;case ln.Type.EXACT:return e.hasString(this,t);case ln.Type.AND:for(let n=0;n<this.subs.length;n++)if(!this.subs[n].eval(e,t))return!1;return!0;case ln.Type.OR:if(this.allExact)return e.hasAnyString(this,t);for(let n=0;n<this.subs.length;n++)if(this.subs[n].eval(e,t))return!0;return!1;default:return!0}}},Gu=class un{static build(e){return e?qs.walk(e,un.WALKER):new Be(Be.Type.NONE)}static WALKER={leaf:e=>un.leaf(e),enter:e=>un.enter(e),child:(e,t,n)=>un.child(e,t,n),leave:(e,t)=>un.leave(e,t)};static leaf(e){if(e.op!==D.Op.LITERAL)return new Be(Be.Type.NONE);if(e.runes.length===0||(e.flags&N.FOLD_CASE)!==0)return new Be(Be.Type.NONE);let t="";for(let s=0;s<e.runes.length;s++){if(J.isUnsearchable(e.runes[s]))return new Be(Be.Type.NONE);t+=String.fromCodePoint(e.runes[s])}let n=new Be(Be.Type.EXACT);return n.str=t,n.bytes=_.stringToUtf8ByteArray(n.str),n}static enter(e){switch(e.op){case D.Op.CAPTURE:case D.Op.PLUS:return{sub:null};case D.Op.REPEAT:return e.min>=1?{sub:null}:{result:new Be(Be.Type.NONE)};case D.Op.CONCAT:return{pf:new Be(Be.Type.AND),subs:[]};case D.Op.ALTERNATE:return{pf:new Be(Be.Type.OR),subs:[]};default:return{result:new Be(Be.Type.NONE)}}}static child(e,t,n){if(t.subs===void 0){t.sub=n;return}if(t.pf.type===Be.Type.AND){if(n.type===Be.Type.NONE)return;if(n.type===Be.Type.AND){for(let s=0;s<n.subs.length;s++)t.subs.push(n.subs[s]);return}t.subs.push(n);return}if(n.type===Be.Type.NONE){t.result=new Be(Be.Type.NONE);return}if(n.type===Be.Type.OR){for(let s=0;s<n.subs.length;s++)t.subs.push(n.subs[s]);return}t.subs.push(n)}static leave(e,t){if(t.subs===void 0)return t.sub;let n=t.pf,s=new Set,B=[];for(let c of t.subs){if(c.type===Be.Type.EXACT){if(s.has(c.str))continue;s.add(c.str)}B.push(c)}if(n.type===Be.Type.AND){let c=[],u=0;for(let l of B)u+l.cost>Be.MAX_SCANS||(c.push(l),u+=l.cost);return c.length===0?new Be(Be.Type.NONE):c.length===1?c[0]:(n.subs=c,n.cost=u,n)}if(B.length===0)return new Be(Be.Type.NONE);if(B.length===1)return B[0];n.subs=B;let i=!0,o=0,a=0;for(let c of B)c.type!==Be.Type.EXACT?i=!1:a+=c.bytes.length,o+=c.cost;return i?a>Be.MAX_AC_UNITS?new Be(Be.Type.NONE):(n.allExact=!0,n.cost=1,n):o>Be.MAX_SCANS?new Be(Be.Type.NONE):(n.cost=o,n)}},Ke=class{constructor(r=0,e=0){this.head=r,this.tail=e}},Mu=class{constructor(){this.inst=[],this.start=0,this.numCap=2,this.lbStarts=[],this.numLb=0,this.lbInst=null}getInst(r){return this.inst[r]}numInst(){return this.inst.length}addInst(r){this.inst.push(new F(r))}markLookbehindInsts(){let r=new Uint8Array(this.inst.length),e=this.lbStarts.slice();for(;e.length>0;){let t=e.pop();if(t===0||r[t]===1)continue;r[t]=1;let n=this.inst[t];switch(n.op){case F.ALT:case F.ALT_MATCH:e.push(n.out,n.arg);break;case F.MATCH:case F.FAIL:break;default:e.push(n.out)}}this.lbInst=r}skipNop(r){let e=this.inst[r];for(;e.op===F.NOP||e.op===F.CAPTURE;)e=this.inst[r],r=e.out;return e}prefix(){let r="",e=this.skipNop(this.start);if(!F.isRuneOp(e.op)||e.runes.length!==1)return[e.op===F.MATCH,r];for(;F.isRuneOp(e.op)&&e.runes.length===1&&(e.arg&N.FOLD_CASE)===0&&!J.isUnsearchable(e.runes[0]);)r+=String.fromCodePoint(e.runes[0]),e=this.skipNop(e.out);return[e.op===F.MATCH,r]}startCond(){let r=0,e=this.start;e:for(;;){let t=this.inst[e];switch(t.op){case F.EMPTY_WIDTH:r|=t.arg;break;case F.FAIL:return-1;case F.CAPTURE:case F.NOP:break;default:break e}e=t.out}return r}patch(r,e){let t=r.head;for(;t!==0;){let n=this.inst[t>>1];(t&1)===0?(t=n.out,n.out=e):(t=n.arg,n.arg=e)}}append(r,e){if(r.head===0)return e;if(e.head===0)return r;let t=this.inst[r.tail>>1];return(r.tail&1)===0?t.out=e.head:t.arg=e.head,new Ke(r.head,e.tail)}toString(){let r="";for(let e=0;e<this.inst.length;e++){let t=r.length;r+=e,e===this.start&&(r+="*"),r+=" ".substring(r.length-t),r+=this.inst[e],r+=`
|
|
60
|
+
`}return r}},Hu=new Int32Array([0,T.CODES.get(`
|
|
61
|
+
`)-1,T.CODES.get(`
|
|
62
|
+
`)+1,J.MAX_RUNE]),yi=new Int32Array([0,J.MAX_RUNE]),Gr=class{constructor(r=0,e=new Ke,t=!1){this.i=r,this.out=e,this.nullable=t}},oo=class zs{static compileRegexp(e){let t=new zs,n=t.compile(e);return t.prog.patch(n.out,t.newInst(F.MATCH).i),t.prog.start=n.i,t.prog.markLookbehindInsts(),t.prog}static compileSet(e){let t=new zs;if(e.length===0)return t.prog.start=t.newInst(F.FAIL).i,t.prog.markLookbehindInsts(),t.prog;let n=[];for(let B=0;B<e.length;B++){let i=t.compile(e[B]),o=t.newInst(F.MATCH);t.prog.getInst(o.i).arg=B,t.prog.patch(i.out,o.i),n.push(i.i)}let s=n[0];for(let B=1;B<n.length;B++){let i=t.newInst(F.ALT),o=t.prog.getInst(i.i);o.out=s,o.arg=n[B],s=i.i}return t.prog.start=s,t.prog.markLookbehindInsts(),t.prog}constructor(){this.prog=new Mu,this.newInst(F.FAIL),this.runeCache=new Map,this.walker={leaf:e=>this.leaf(e),enter:e=>this.enter(e),child:(e,t,n)=>this.child(e,t,n),leave:(e,t)=>this.leave(e,t)}}newInst(e){return this.prog.addInst(e),new Gr(this.prog.numInst()-1,new Ke,!0)}nop(){let e=this.newInst(F.NOP);return e.out=new Ke(e.i<<1,e.i<<1),e}fail(){return new Gr}cap(e){let t=this.newInst(F.CAPTURE);return t.out=new Ke(t.i<<1,t.i<<1),this.prog.getInst(t.i).arg=e,this.prog.numCap<e+1&&(this.prog.numCap=e+1),t}cat(e,t){return e.i===0||t.i===0?this.fail():(this.prog.patch(e.out,t.i),new Gr(e.i,t.out,e.nullable&&t.nullable))}alt(e,t){if(e.i===0)return t;if(t.i===0)return e;let n=this.newInst(F.ALT),s=this.prog.getInst(n.i);return s.out=e.i,s.arg=t.i,n.out=this.prog.append(e.out,t.out),n.nullable=e.nullable||t.nullable,n}loop(e,t){let n=this.newInst(F.ALT),s=this.prog.getInst(n.i);return t?(s.arg=e.i,n.out=new Ke(n.i<<1,n.i<<1)):(s.out=e.i,n.out=new Ke(n.i<<1|1,n.i<<1|1)),this.prog.patch(e.out,n.i),n}quest(e,t){let n=this.newInst(F.ALT),s=this.prog.getInst(n.i);return t?(s.arg=e.i,n.out=new Ke(n.i<<1,n.i<<1)):(s.out=e.i,n.out=new Ke(n.i<<1|1,n.i<<1|1)),n.out=this.prog.append(n.out,e.out),n}star(e,t){return e.nullable?this.quest(this.plus(e,t),t):this.loop(e,t)}plus(e,t){return new Gr(e.i,this.loop(e,t).out,e.nullable)}empty(e){let t=this.newInst(F.EMPTY_WIDTH);return this.prog.getInst(t.i).arg=e,t.out=new Ke(t.i<<1,t.i<<1),t}rune(e,t){let n=this.newInst(F.RUNE);n.nullable=!1;let s=this.prog.getInst(n.i);return s.runes=e,t&=N.FOLD_CASE,(e.length!==1||J.simpleFold(e[0])===e[0])&&(t&=~N.FOLD_CASE),s.arg=t,n.out=new Ke(n.i<<1,n.i<<1),(t&N.FOLD_CASE)===0&&e.length===1||e.length===2&&e[0]===e[1]?s.op=F.RUNE1:e.length===2&&e[0]===0&&e[1]===J.MAX_RUNE?s.op=F.RUNE_ANY:e.length===4&&e[0]===0&&e[1]===T.CODES.get(`
|
|
63
|
+
`)-1&&e[2]===T.CODES.get(`
|
|
64
|
+
`)+1&&e[3]===J.MAX_RUNE&&(s.op=F.RUNE_ANY_NOT_NL),n}lookBehind(e,t){let n=this.newInst(F.LB_WRITE);this.prog.getInst(n.i).arg=t;let s=this.rune(yi,0),B=this.star(s,!0),i=this.cat(B,e);this.prog.patch(i.out,n.i);let o=this.newInst(F.LB_CHECK);return this.prog.getInst(o.i).arg=t,this.prog.lbStarts.push(i.i),Math.abs(t)>this.prog.numLb&&(this.prog.numLb=Math.abs(t)),o.out=new Ke(o.i<<1,o.i<<1),o}compile(e){return qs.walk(e,this.walker)}leaf(e){switch(e.op){case D.Op.NO_MATCH:return this.fail();case D.Op.EMPTY_MATCH:return this.nop();case D.Op.LITERAL:{if(e.runes.length===0)return this.nop();let t=null;for(let n of e.runes){let s=this.runeCache.get(n);s===void 0&&(s=new Int32Array([n]),this.runeCache.set(n,s));let B=this.rune(s,e.flags);t=t===null?B:this.cat(t,B)}return t}case D.Op.CHAR_CLASS:return this.rune(e.runes,e.flags);case D.Op.ANY_CHAR_NOT_NL:return this.rune(Hu,0);case D.Op.ANY_CHAR:return this.rune(yi,0);case D.Op.BEGIN_LINE:return this.empty(_.EMPTY_BEGIN_LINE);case D.Op.END_LINE:return this.empty(_.EMPTY_END_LINE);case D.Op.BEGIN_TEXT:return this.empty(_.EMPTY_BEGIN_TEXT);case D.Op.END_TEXT:return this.empty(_.EMPTY_END_TEXT);case D.Op.WORD_BOUNDARY:return this.empty(_.EMPTY_WORD_BOUNDARY);case D.Op.NO_WORD_BOUNDARY:return this.empty(_.EMPTY_NO_WORD_BOUNDARY);case D.Op.CONCAT:case D.Op.ALTERNATE:return this.nop();default:throw new _n("regexp: unhandled case in compile")}}enter(e){switch(e.op){case D.Op.PLB:case D.Op.NLB:case D.Op.STAR:case D.Op.PLUS:case D.Op.QUEST:return{sub:null};case D.Op.CAPTURE:return{bra:this.cap(e.cap<<1),sub:null};case D.Op.CONCAT:case D.Op.ALTERNATE:return{f:null};default:throw new _n("regexp: unhandled case in compile")}}child(e,t,n){e.op===D.Op.CONCAT?t.f=t.f===null?n:this.cat(t.f,n):e.op===D.Op.ALTERNATE?t.f=t.f===null?n:this.alt(t.f,n):t.sub=n}leave(e,t){switch(e.op){case D.Op.PLB:case D.Op.NLB:return this.lookBehind(t.sub,e.lb);case D.Op.CAPTURE:{let n=this.cap(e.cap<<1|1);return this.cat(this.cat(t.bra,t.sub),n)}case D.Op.STAR:return this.star(t.sub,(e.flags&N.NON_GREEDY)!==0);case D.Op.PLUS:return this.plus(t.sub,(e.flags&N.NON_GREEDY)!==0);case D.Op.QUEST:return this.quest(t.sub,(e.flags&N.NON_GREEDY)!==0);case D.Op.CONCAT:case D.Op.ALTERNATE:return t.f;default:throw new _n("regexp: unhandled case in compile")}}},ao=class Fe{static simplify(e){return e===null?null:qs.walk(e,Fe.WALKER)}static WALKER={leaf:e=>Fe.leaf(e),enter:e=>Fe.enter(e),child:(e,t,n,s)=>Fe.child(e,t,n,s),leave:(e,t)=>Fe.leave(e,t)};static leaf(e){if(e.op===D.Op.CHAR_CLASS){if(e.runes===null)return e;if(e.runes.length===0)return new D(D.Op.NO_MATCH);if(e.runes.length===2&&e.runes[0]===0&&e.runes[1]===J.MAX_RUNE)return new D(D.Op.ANY_CHAR);if(e.runes.length===4&&e.runes[0]===0&&e.runes[1]===T.CODES.get(`
|
|
65
|
+
`)-1&&e.runes[2]===T.CODES.get(`
|
|
66
|
+
`)+1&&e.runes[3]===J.MAX_RUNE)return new D(D.Op.ANY_CHAR_NOT_NL)}return e}static enter(e){switch(e.op){case D.Op.PLB:case D.Op.NLB:case D.Op.CAPTURE:case D.Op.STAR:case D.Op.PLUS:case D.Op.QUEST:return{sub:null};case D.Op.CONCAT:case D.Op.ALTERNATE:return{subs:[],changed:!1};case D.Op.REPEAT:return e.min===0&&e.max===0?{result:new D(D.Op.EMPTY_MATCH)}:{sub:null};default:return{result:e}}}static child(e,t,n,s){if(t.subs===void 0){t.sub=n;return}if(n!==e.subs[s]&&(t.changed=!0),e.op===D.Op.CONCAT){if(n.op===D.Op.NO_MATCH){t.result=new D(D.Op.NO_MATCH);return}if(n.op===D.Op.EMPTY_MATCH){t.changed=!0;return}if(n.op===D.Op.CONCAT){t.changed=!0;for(let B=0;B<n.subs.length;B++)t.subs.push(n.subs[B]);return}}else{if(n.op===D.Op.NO_MATCH){t.changed=!0;return}if(n.op===D.Op.ALTERNATE){t.changed=!0;for(let B=0;B<n.subs.length;B++)t.subs.push(n.subs[B]);return}}t.subs.push(n)}static leave(e,t){switch(e.op){case D.Op.PLB:case D.Op.NLB:case D.Op.CAPTURE:{let n=t.sub;if(n!==e.subs[0]){let s=D.fromRegexp(e);return s.runes=new Int32Array(0),s.subs=[n],s}return e}case D.Op.CONCAT:case D.Op.ALTERNATE:if(t.changed){let n=t.subs;if(n.length===0)return new D(e.op===D.Op.CONCAT?D.Op.EMPTY_MATCH:D.Op.NO_MATCH);if(n.length===1)return n[0];let s=D.fromRegexp(e);return s.runes=new Int32Array(0),s.subs=n,s}return e;case D.Op.STAR:case D.Op.PLUS:case D.Op.QUEST:return Fe.simplify1(e.op,e.flags,t.sub,e);case D.Op.REPEAT:return Fe.simplifyRepeat(e,t.sub);default:return e}}static simplifyRepeat(e,t){if(e.max===-1){if(e.min===0)return Fe.simplify1(D.Op.STAR,e.flags,t,null);if(e.min===1)return Fe.simplify1(D.Op.PLUS,e.flags,t,null);let s=[];for(let B=0;B<e.min-1;B++)s.push(t);return s.push(Fe.simplify1(D.Op.PLUS,e.flags,t,null)),Fe.concat(s)}if(e.min===1&&e.max===1)return t;let n=null;if(e.min>0){n=[];for(let s=0;s<e.min;s++)n.push(t)}if(e.max>e.min){let s=Fe.simplify1(D.Op.QUEST,e.flags,t,null);for(let B=e.min+1;B<e.max;B++)s=Fe.simplify1(D.Op.QUEST,e.flags,Fe.concat([t,s]),null);if(n===null)return s;n.push(s)}return n!==null?Fe.concat(n):new D(D.Op.NO_MATCH)}static concat(e){let t=[];for(let s=0;s<e.length;s++){let B=e[s];if(B.op===D.Op.NO_MATCH)return new D(D.Op.NO_MATCH);if(B.op!==D.Op.EMPTY_MATCH){if(B.op===D.Op.CONCAT){for(let i=0;i<B.subs.length;i++)t.push(B.subs[i]);continue}t.push(B)}}if(t.length===0)return new D(D.Op.EMPTY_MATCH);if(t.length===1)return t[0];let n=new D(D.Op.CONCAT);return n.subs=t,n}static simplify1(e,t,n,s){if(n.op===D.Op.EMPTY_MATCH)return n;if(n.op===D.Op.NO_MATCH)return e===D.Op.PLUS?n:new D(D.Op.EMPTY_MATCH);if(e===n.op&&(t&N.NON_GREEDY)===(n.flags&N.NON_GREEDY))return n;if(s!==null&&s.op===e&&(s.flags&N.NON_GREEDY)===(t&N.NON_GREEDY)&&n===s.subs[0])return s;let B=new D(e);return B.flags=t,B.subs=[n],B}},le=class{constructor(r,e){this.sign=r,this.cls=e}},Ii=[48,57],Ti=[9,10,12,13,32,32],Li=[48,57,65,90,95,95,97,122],Ni=new Map([["\\d",new le(1,Ii)],["\\D",new le(-1,Ii)],["\\s",new le(1,Ti)],["\\S",new le(-1,Ti)],["\\w",new le(1,Li)],["\\W",new le(-1,Li)]]),$i=[48,57,65,90,97,122],Gi=[65,90,97,122],Mi=[0,127],Hi=[9,9,32,32],Pi=[0,31,127,127],_i=[48,57],Ji=[33,126],Ui=[97,122],Ki=[32,126],ji=[33,47,58,64,91,96,123,126],zi=[9,13,32,32],Yi=[65,90],Qi=[48,57,65,90,95,95,97,122],qi=[48,57,65,70,97,102],Wi=new Map([["[:alnum:]",new le(1,$i)],["[:^alnum:]",new le(-1,$i)],["[:alpha:]",new le(1,Gi)],["[:^alpha:]",new le(-1,Gi)],["[:ascii:]",new le(1,Mi)],["[:^ascii:]",new le(-1,Mi)],["[:blank:]",new le(1,Hi)],["[:^blank:]",new le(-1,Hi)],["[:cntrl:]",new le(1,Pi)],["[:^cntrl:]",new le(-1,Pi)],["[:digit:]",new le(1,_i)],["[:^digit:]",new le(-1,_i)],["[:graph:]",new le(1,Ji)],["[:^graph:]",new le(-1,Ji)],["[:lower:]",new le(1,Ui)],["[:^lower:]",new le(-1,Ui)],["[:print:]",new le(1,Ki)],["[:^print:]",new le(-1,Ki)],["[:punct:]",new le(1,ji)],["[:^punct:]",new le(-1,ji)],["[:space:]",new le(1,zi)],["[:^space:]",new le(-1,zi)],["[:upper:]",new le(1,Yi)],["[:^upper:]",new le(-1,Yi)],["[:word:]",new le(1,Qi)],["[:^word:]",new le(-1,Qi)],["[:xdigit:]",new le(1,qi)],["[:^xdigit:]",new le(-1,qi)]]),_t=class Mr{static charClassToString(e,t){let n="[";for(let s=0;s<t;s+=2){s>0&&(n+=" ");let B=e[s],i=e[s+1];B===i?n+=`0x${B.toString(16)}`:n+=`0x${B.toString(16)}-0x${i.toString(16)}`}return n+="]",n}static sortRanges(e,t){let n=t>>1,s=new Array(n);for(let i=0;i<n;i++)s[i]=i;s.sort((i,o)=>e[2*i]-e[2*o]||e[2*o+1]-e[2*i+1]);let B=e.slice(0,t);for(let i=0;i<n;i++)e[2*i]=B[2*s[i]],e[2*i+1]=B[2*s[i]+1]}constructor(e=_.emptyInts()){this.r=e,this.len=e.length}toArray(){return this.r instanceof Int32Array?this.len===this.r.length?this.r:this.r.subarray(0,this.len):new Int32Array(this.len===this.r.length?this.r:this.r.slice(0,this.len))}toGrowableArray(){return Array.isArray(this.r)?(this.r.length=this.len,this.r):Array.from(this.r.subarray(0,this.len))}cleanClass(){if(this.len<4)return this;Mr.sortRanges(this.r,this.len);let e=2;for(let t=2;t<this.len;t+=2){let n=this.r[t],s=this.r[t+1];if(n<=this.r[e-1]+1){s>this.r[e-1]&&(this.r[e-1]=s);continue}this.r[e]=n,this.r[e+1]=s,e+=2}return this.len=e,this}appendLiteral(e,t){return(t&N.FOLD_CASE)!==0?this.appendFoldedRange(e,e):this.appendRange(e,e)}appendRange(e,t){if(this.len>0){for(let n=2;n<=4;n+=2)if(this.len>=n){let s=this.r[this.len-n],B=this.r[this.len-n+1];if(e<=B+1&&s<=t+1)return e<s&&(this.r[this.len-n]=e),t>B&&(this.r[this.len-n+1]=t),this}}return this.r[this.len++]=e,this.r[this.len++]=t,this}appendFoldedRange(e,t){if(e<=J.MIN_FOLD&&t>=J.MAX_FOLD)return this.appendRange(e,t);if(t<J.MIN_FOLD||e>J.MAX_FOLD)return this.appendRange(e,t);e<J.MIN_FOLD&&(this.appendRange(e,J.MIN_FOLD-1),e=J.MIN_FOLD),t>J.MAX_FOLD&&(this.appendRange(J.MAX_FOLD+1,t),t=J.MAX_FOLD);for(let n=e;n<=t;n++){this.appendRange(n,n);for(let s=J.simpleFold(n);s!==n;s=J.simpleFold(s))this.appendRange(s,s)}return this}appendClass(e){for(let t=0;t<e.length;t+=2)this.appendRange(e[t],e[t+1]);return this}appendFoldedClass(e){for(let t=0;t<e.length;t+=2)this.appendFoldedRange(e[t],e[t+1]);return this}appendNegatedClass(e){let t=0;for(let n=0;n<e.length;n+=2){let s=e[n],B=e[n+1];t<=s-1&&this.appendRange(t,s-1),t=B+1}return t<=J.MAX_RUNE&&this.appendRange(t,J.MAX_RUNE),this}appendTable(e){for(let t=0;t<e.length;++t){let n=e.getLo(t),s=e.getHi(t),B=e.getStride(t);if(B===1){this.appendRange(n,s);continue}for(let i=n;i<=s;i+=B)this.appendRange(i,i)}return this}appendNegatedTable(e){let t=0;for(let n=0;n<e.length;++n){let s=e.getLo(n),B=e.getHi(n),i=e.getStride(n);if(i===1){t<=s-1&&this.appendRange(t,s-1),t=B+1;continue}for(let o=s;o<=B;o+=i)t<=o-1&&this.appendRange(t,o-1),t=o+1}return t<=J.MAX_RUNE&&this.appendRange(t,J.MAX_RUNE),this}appendTableWithSign(e,t){return t<0?this.appendNegatedTable(e):this.appendTable(e)}negateClass(){let e=0,t=0;for(let n=0;n<this.len;n+=2){let s=this.r[n],B=this.r[n+1];e<=s-1&&(this.r[t]=e,this.r[t+1]=s-1,t+=2),e=B+1}return this.len=t,e<=J.MAX_RUNE&&(this.r[this.len++]=e,this.r[this.len++]=J.MAX_RUNE),this}appendClassWithSign(e,t){return t<0?this.appendNegatedClass(e):this.appendClass(e)}appendGroup(e,t){let n=e.cls;return t&&(n=new Mr().appendFoldedClass(n).cleanClass().toArray()),this.appendClassWithSign(n,e.sign)}toString(){return Mr.charClassToString(this.r,this.len)}},Pu=class{constructor(r){this.str=r,this.position=0}pos(){return this.position}rewindTo(r){this.position=r}more(){return this.position<this.str.length}peek(){return this.str.codePointAt(this.position)}skip(r){this.position+=r}skipString(r){this.position+=r.length}pop(){let r=this.str.codePointAt(this.position);return this.position+=_.charCount(r),r}lookingAt(r){return this.str.startsWith(r,this.position)}rest(){return this.str.substring(this.position)}from(r){return this.str.substring(r,this.position)}toString(){return this.rest()}},Pn=class Y{static ERR_INTERNAL_ERROR="regexp/syntax: internal error";static ERR_INVALID_CHAR_RANGE="invalid character class range";static ERR_INVALID_ESCAPE="invalid escape sequence";static ERR_INVALID_NAMED_CAPTURE="invalid named capture";static ERR_INVALID_PERL_OP="invalid or unsupported Perl syntax";static ERR_INVALID_REPEAT_OP="invalid nested repetition operator";static ERR_INVALID_REPEAT_SIZE="invalid repeat count";static ERR_MISSING_BRACKET="missing closing ]";static ERR_MISSING_PAREN="missing closing )";static ERR_MISSING_REPEAT_ARGUMENT="missing argument to repetition operator";static ERR_TRAILING_BACKSLASH="trailing backslash at end of expression";static ERR_DUPLICATE_NAMED_CAPTURE="duplicate capture group name";static ERR_UNEXPECTED_PAREN="unexpected )";static ERR_NESTING_DEPTH="expression nests too deeply";static ERR_LARGE="expression too large";static ERR_INVALID_CAPTURE_IN_LOOKBEHIND="invalid capture in lookbehind";static MAX_HEIGHT=1e3;static MAX_SIZE=1398101;static MAX_RUNES=33554432;static ANY_TABLE=new d(new Uint32Array([0,J.MAX_RUNE,1]));static ASCII_TABLE=new d(new Uint32Array([0,127,1]));static ASCII_FOLD_TABLE=new d(new Uint32Array([0,127,1,383,383,1,8490,8490,1]));static unicodeTable(e){return e==="Any"?{tab:Y.ANY_TABLE,fold:Y.ANY_TABLE,sign:1}:e==="Ascii"?{tab:Y.ASCII_TABLE,fold:Y.ASCII_FOLD_TABLE,sign:1}:e==="Assigned"?{tab:Me.CATEGORIES.get("Cn"),fold:Me.CATEGORIES.get("Cn"),sign:-1}:e==="Lc"?{tab:Me.CATEGORIES.get("LC"),fold:Me.FOLD_CATEGORIES.get("LC"),sign:1}:Me.CATEGORIES.has(e)?{tab:Me.CATEGORIES.get(e),fold:Me.FOLD_CATEGORIES.get(e),sign:1}:Me.SCRIPTS.has(e)?{tab:Me.SCRIPTS.get(e),fold:Me.FOLD_SCRIPT.get(e),sign:1}:null}static minFoldRune(e){if(e<J.MIN_FOLD||e>J.MAX_FOLD)return e;let t=e,n=e;for(e=J.simpleFold(e);e!==n;e=J.simpleFold(e))t>e&&(t=e);return t}static leadingRegexp(e){if(e.op===D.Op.EMPTY_MATCH)return null;if(e.op===D.Op.CONCAT&&e.subs.length>0){let t=e.subs[0];return t.op===D.Op.EMPTY_MATCH?null:t}return e}static literalRegexp(e,t){let n=new D(D.Op.LITERAL);return n.flags=t,n.runes=_.stringToRunes(e),n}static parse(e,t){return new Y(e,t).parseInternal()}static parseRepeat(e){let t=e.pos();if(!e.more()||!e.lookingAt("{"))return-1;e.skip(1);let n=Y.parseInt(e);if(n===-1||!e.more())return-1;let s;if(!e.lookingAt(","))s=n;else{if(e.skip(1),!e.more())return-1;if(e.lookingAt("}"))s=-1;else if((s=Y.parseInt(e))===-1)return-1}if(!e.more()||!e.lookingAt("}"))return-1;if(e.skip(1),n<0||n>1e3||s===-2||s>1e3||s>=0&&n>s)throw new he(Y.ERR_INVALID_REPEAT_SIZE,e.from(t));return n<<16|s&J.MAX_BMP}static isValidCaptureName(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++){let n=e.codePointAt(t);if(n!==T.CODES.get("_")&&!_.isalnum(n))return!1}return!0}static parseInt(e){let t=e.pos();for(;e.more()&&e.peek()>=T.CODES.get("0")&&e.peek()<=T.CODES.get("9");)e.skip(1);let n=e.from(t);return n.length===0||n.length>1&&n.codePointAt(0)===T.CODES.get("0")?-1:n.length>8?-2:parseInt(n,10)}static isCharClass(e){return e.op===D.Op.LITERAL&&e.runes.length===1||e.op===D.Op.CHAR_CLASS||e.op===D.Op.ANY_CHAR_NOT_NL||e.op===D.Op.ANY_CHAR}static matchRune(e,t){switch(e.op){case D.Op.LITERAL:return e.runes.length===1&&e.runes[0]===t;case D.Op.CHAR_CLASS:for(let n=0;n<e.runes.length;n+=2)if(e.runes[n]<=t&&t<=e.runes[n+1])return!0;return!1;case D.Op.ANY_CHAR_NOT_NL:return t!==T.CODES.get(`
|
|
67
|
+
`);case D.Op.ANY_CHAR:return!0}return!1}static mergeCharClass(e,t){switch(e.op){case D.Op.ANY_CHAR:break;case D.Op.ANY_CHAR_NOT_NL:Y.matchRune(t,T.CODES.get(`
|
|
68
|
+
`))&&(e.op=D.Op.ANY_CHAR);break;case D.Op.CHAR_CLASS:{let n=new _t(Array.isArray(e.runes)?e.runes:Array.from(e.runes));t.op===D.Op.LITERAL?n.appendLiteral(t.runes[0],t.flags):n.appendClass(t.runes),e.runes=n.toGrowableArray();break}case D.Op.LITERAL:if(t.runes[0]===e.runes[0]&&t.flags===e.flags)break;e.op=D.Op.CHAR_CLASS,e.runes=new _t().appendLiteral(e.runes[0],e.flags).appendLiteral(t.runes[0],t.flags).toGrowableArray()}}static parseEscape(e){let t=e.pos();if(e.skip(1),!e.more())throw new he(Y.ERR_TRAILING_BACKSLASH);let n=e.pop();e:switch(n){case T.CODES.get("1"):case T.CODES.get("2"):case T.CODES.get("3"):case T.CODES.get("4"):case T.CODES.get("5"):case T.CODES.get("6"):case T.CODES.get("7"):if(!e.more()||e.peek()<T.CODES.get("0")||e.peek()>T.CODES.get("7"))break;case T.CODES.get("0"):{let s=n-T.CODES.get("0");for(let B=1;B<3&&!(!e.more()||e.peek()<T.CODES.get("0")||e.peek()>T.CODES.get("7"));B++)s=s*8+e.peek()-T.CODES.get("0"),e.skip(1);return s}case T.CODES.get("x"):{if(!e.more())break;if(n=e.pop(),n===T.CODES.get("{")){let i=0,o=0;for(;;){if(!e.more())break e;if(n=e.pop(),n===T.CODES.get("}"))break;let a=_.unhex(n);if(a<0||(o=o*16+a,o>J.MAX_RUNE))break e;i++}if(i===0)break e;return o}let s=_.unhex(n);if(!e.more())break;n=e.pop();let B=_.unhex(n);if(s<0||B<0)break;return s*16+B}case T.CODES.get("a"):return T.CODES.get("\x07");case T.CODES.get("f"):return T.CODES.get("\f");case T.CODES.get("n"):return T.CODES.get(`
|
|
69
|
+
`);case T.CODES.get("r"):return T.CODES.get("\r");case T.CODES.get("t"):return T.CODES.get(" ");case T.CODES.get("v"):return T.CODES.get("\v");default:if(n<=J.MAX_ASCII&&!_.isalnum(n))return n}throw new he(Y.ERR_INVALID_ESCAPE,e.from(t))}static parseClassChar(e,t){if(!e.more())throw new he(Y.ERR_MISSING_BRACKET,e.from(t));return e.lookingAt("\\")?Y.parseEscape(e):e.pop()}static hasCapture(e){if(e===null)return!1;if(e.op===D.Op.CAPTURE)return!0;if(e.subs){for(let t of e.subs)if(Y.hasCapture(t))return!0}return!1}constructor(e,t=0){this.wholeRegexp=e,this.flags=t,this.numCap=0,this.namedGroups=Object.create(null),this.stack=[],this.free=null,this.numRegexp=0,this.numRunes=0,this.repeats=0,this.height=null,this.size=null,this.nlb=0}newRegexp(e){let t=this.free;return t!==null&&t.subs!==null&&t.subs.length>0?(this.free=t.subs[0],t.reinit(),t.op=e):(t=new D(e),this.numRegexp+=1),t}reuse(e){this.height!==null&&this.height.has(e)&&this.height.delete(e),e.subs!==null&&e.subs.length>0&&(e.subs[0]=this.free),this.free=e}checkLimits(e){if(this.numRunes>Y.MAX_RUNES)throw new he(Y.ERR_LARGE);this.checkSize(e),this.checkHeight(e)}checkSize(e){if(this.size===null){if(this.repeats===0&&(this.repeats=1),e.op===D.Op.REPEAT){let t=e.max;t===-1&&(t=e.min),t<=0&&(t=1),t>Math.floor(Y.MAX_SIZE/this.repeats)?this.repeats=Y.MAX_SIZE:this.repeats*=t}if(this.numRegexp<Math.floor(Y.MAX_SIZE/this.repeats))return;this.size=new Map;for(let t of this.stack)this.checkSize(t)}if(this.calcSize(e,!0)>Y.MAX_SIZE)throw new he(Y.ERR_LARGE)}calcSize(e,t=!1){if(!t&&this.size!==null&&this.size.has(e))return this.size.get(e);let n=0;switch(e.op){case D.Op.LITERAL:n=e.runes.length;break;case D.Op.PLB:case D.Op.NLB:case D.Op.CAPTURE:case D.Op.STAR:n=2+this.calcSize(e.subs[0]);break;case D.Op.PLUS:case D.Op.QUEST:n=1+this.calcSize(e.subs[0]);break;case D.Op.CONCAT:for(let s of e.subs)n=n+this.calcSize(s);break;case D.Op.ALTERNATE:for(let s of e.subs)n=n+this.calcSize(s);e.subs.length>1&&(n=n+e.subs.length-1);break;case D.Op.REPEAT:{let s=this.calcSize(e.subs[0]);if(e.max===-1){e.min===0?n=2+s:n=1+e.min*s;break}n=e.max*s+(e.max-e.min);break}}return n=Math.max(1,n),this.size===null&&(this.size=new Map),this.size.set(e,n),n}checkHeight(e){if(!(this.numRegexp<Y.MAX_HEIGHT)){if(this.height===null){this.height=new Map;for(let t of this.stack)this.checkHeight(t)}if(this.calcHeight(e,!0)>Y.MAX_HEIGHT)throw new he(Y.ERR_NESTING_DEPTH)}}calcHeight(e,t=!1){if(!t&&this.height!==null&&this.height.has(e))return this.height.get(e);let n=1;for(let s of e.subs){let B=this.calcHeight(s);n<1+B&&(n=1+B)}return this.height===null&&(this.height=new Map),this.height.set(e,n),n}pop(){return this.stack.pop()}popToPseudo(){let e=this.stack.length,t=e;for(;t>0&&!D.isPseudoOp(this.stack[t-1].op);)t--;return this.stack.splice(t,e-t)}push(e){if(this.numRunes+=e.runes.length,e.op===D.Op.CHAR_CLASS&&e.runes.length===2&&e.runes[0]===e.runes[1]){if(this.maybeConcat(e.runes[0],this.flags&~N.FOLD_CASE))return null;e.op=D.Op.LITERAL,e.runes=[e.runes[0]],e.flags=this.flags&~N.FOLD_CASE}else if(e.op===D.Op.CHAR_CLASS&&e.runes.length===4&&e.runes[0]===e.runes[1]&&e.runes[2]===e.runes[3]&&J.simpleFold(e.runes[0])===e.runes[2]&&J.simpleFold(e.runes[2])===e.runes[0]||e.op===D.Op.CHAR_CLASS&&e.runes.length===2&&e.runes[0]+1===e.runes[1]&&J.simpleFold(e.runes[0])===e.runes[1]&&J.simpleFold(e.runes[1])===e.runes[0]){if(this.maybeConcat(e.runes[0],this.flags|N.FOLD_CASE))return null;e.op=D.Op.LITERAL,e.runes=[e.runes[0]],e.flags=this.flags|N.FOLD_CASE}else this.maybeConcat(-1,0);return this.stack.push(e),this.checkLimits(e),e}maybeConcat(e,t){let n=this.stack.length;if(n<2)return!1;let s=this.stack[n-1],B=this.stack[n-2];if(s.op!==D.Op.LITERAL||B.op!==D.Op.LITERAL||(s.flags&N.FOLD_CASE)!==(B.flags&N.FOLD_CASE))return!1;Array.isArray(B.runes)||(B.runes=Array.from(B.runes));for(let i=0;i<s.runes.length;i++)B.runes.push(s.runes[i]);return e>=0?(s.runes=[e],s.flags=t,!0):(this.pop(),this.reuse(s),!1)}newLiteral(e,t){let n=this.newRegexp(D.Op.LITERAL);return n.flags=t,(t&N.FOLD_CASE)!==0&&(e=Y.minFoldRune(e)),n.runes=[e],n}literal(e){this.push(this.newLiteral(e,this.flags))}op(e){let t=this.newRegexp(e);return t.flags=this.flags,this.push(t)}repeat(e,t,n,s,B,i){let o=this.flags;if((o&N.PERL_X)!==0&&(B.more()&&B.lookingAt("?")&&(B.skip(1),o^=N.NON_GREEDY),i!==-1))throw new he(Y.ERR_INVALID_REPEAT_OP,B.from(i));let a=this.stack.length;if(a===0)throw new he(Y.ERR_MISSING_REPEAT_ARGUMENT,B.from(s));let c=this.stack[a-1];if(D.isPseudoOp(c.op))throw new he(Y.ERR_MISSING_REPEAT_ARGUMENT,B.from(s));let u=this.newRegexp(e);if(u.min=t,u.max=n,u.flags=o,u.subs=[c],this.stack[a-1]=u,this.checkLimits(u),e===D.Op.REPEAT&&(t>=2||n>=2)&&!this.repeatIsValid(u,1e3))throw new he(Y.ERR_INVALID_REPEAT_SIZE,B.from(s))}repeatIsValid(e,t){if(e.op===D.Op.REPEAT){let n=e.max;if(n===0)return!0;if(n<0&&(n=e.min),n>t)return!1;n>0&&(t=Math.trunc(t/n))}for(let n of e.subs)if(!this.repeatIsValid(n,t))return!1;return!0}concat(){this.maybeConcat(-1,0);let e=this.popToPseudo();return e.length===0?this.push(this.newRegexp(D.Op.EMPTY_MATCH)):this.push(this.collapse(e,D.Op.CONCAT))}alternate(){let e=this.popToPseudo();return e.length>0&&this.cleanAlt(e[e.length-1]),e.length===0?this.push(this.newRegexp(D.Op.NO_MATCH)):this.push(this.collapse(e,D.Op.ALTERNATE))}cleanAlt(e){e.op===D.Op.CHAR_CLASS&&(e.runes=new _t(Array.from(e.runes)).cleanClass().toArray(),e.runes.length===2&&e.runes[0]===0&&e.runes[1]===J.MAX_RUNE?(e.runes=new Int32Array(0),e.op=D.Op.ANY_CHAR):e.runes.length===4&&e.runes[0]===0&&e.runes[1]===T.CODES.get(`
|
|
70
|
+
`)-1&&e.runes[2]===T.CODES.get(`
|
|
71
|
+
`)+1&&e.runes[3]===J.MAX_RUNE&&(e.runes=new Int32Array(0),e.op=D.Op.ANY_CHAR_NOT_NL))}collapse(e,t){if(e.length===1)return e[0];let n=0;for(let o of e)n+=o.op===t?o.subs.length:1;let s=new Array(n).fill(null),B=0;for(let o of e)if(o.op===t){for(let a=0;a<o.subs.length;a++)s[B++]=o.subs[a];this.reuse(o)}else s[B++]=o;let i=this.newRegexp(t);if(i.subs=s,t===D.Op.ALTERNATE&&(i.subs=this.factor(i.subs),i.subs.length===1)){let o=i;i=i.subs[0],this.reuse(o)}return i}factor(e){if(e.length<2)return e;let t=0,n=e.length,s=0,B=null,i=0,o=0,a=0;for(let u=0;u<=n;u++){let l=null,C=0,h=0;if(u<n){let p=e[t+u];if(p.op===D.Op.CONCAT&&p.subs.length>0&&(p=p.subs[0]),p.op===D.Op.LITERAL&&(l=p.runes,C=p.runes.length,h=p.flags&N.FOLD_CASE),h===o){let f=0;for(;f<i&&f<C&&B[f]===l[f];)f++;if(f>0){i=f;continue}}}if(u!==a)if(u===a+1)e[s++]=e[t+a];else{let p=this.newRegexp(D.Op.LITERAL);p.flags=o,p.runes=B.slice(0,i);for(let k=a;k<u;k++)e[t+k]=this.removeLeadingString(e[t+k],i),this.checkLimits(e[t+k]);let f=this.collapse(e.slice(t+a,t+u),D.Op.ALTERNATE),w=this.newRegexp(D.Op.CONCAT);w.subs=[p,f],e[s++]=w}a=u,B=l,i=C,o=h}n=s,t=0,a=0,s=0;let c=null;for(let u=0;u<=n;u++){let l=null;if(!(u<n&&(l=Y.leadingRegexp(e[t+u]),c!==null&&c.equals(l)&&(Y.isCharClass(c)||c.op===D.Op.REPEAT&&c.min===c.max&&Y.isCharClass(c.subs[0]))))){if(u!==a)if(u===a+1)e[s++]=e[t+a];else{let C=c;for(let f=a;f<u;f++){let w=f!==a;e[t+f]=this.removeLeadingRegexp(e[t+f],w),this.checkLimits(e[t+f])}let h=this.collapse(e.slice(t+a,t+u),D.Op.ALTERNATE),p=this.newRegexp(D.Op.CONCAT);p.subs=[C,h],e[s++]=p}a=u,c=l}}n=s,t=0,a=0,s=0;for(let u=0;u<=n;u++)if(!(u<n&&Y.isCharClass(e[t+u]))){if(u!==a)if(u===a+1)e[s++]=e[t+a];else{let l=a;for(let h=a+1;h<u;h++){let p=e[t+l],f=e[t+h];(p.op<f.op||p.op===f.op&&(p.runes!==null?p.runes.length:0)<(f.runes!==null?f.runes.length:0))&&(l=h)}let C=e[t+a];e[t+a]=e[t+l],e[t+l]=C;for(let h=a+1;h<u;h++)Y.mergeCharClass(e[t+a],e[t+h]),this.reuse(e[t+h]);this.cleanAlt(e[t+a]),e[s++]=e[t+a]}u<n&&(e[s++]=e[t+u]),a=u+1}n=s,t=0,a=0,s=0;for(let u=0;u<n;++u)u+1<n&&e[t+u].op===D.Op.EMPTY_MATCH&&e[t+u+1].op===D.Op.EMPTY_MATCH||(e[s++]=e[t+u]);return n=s,t=0,e.slice(t,n)}removeLeadingString(e,t){if(e.op===D.Op.CONCAT&&e.subs.length>0){let n=this.removeLeadingString(e.subs[0],t);if(e.subs[0]=n,n.op===D.Op.EMPTY_MATCH)switch(this.reuse(n),e.subs.length){case 0:case 1:e.op=D.Op.EMPTY_MATCH,e.subs=D.emptySubs();break;case 2:{let s=e;e=e.subs[1],this.reuse(s);break}default:e.subs=e.subs.slice(1,e.subs.length)}return e}return e.op===D.Op.LITERAL&&(e.runes=e.runes.slice(t,e.runes.length),e.runes.length===0&&(e.op=D.Op.EMPTY_MATCH)),e}removeLeadingRegexp(e,t){if(e.op===D.Op.CONCAT&&e.subs.length>0){switch(t&&this.reuse(e.subs[0]),e.subs=e.subs.slice(1,e.subs.length),e.subs.length){case 0:e.op=D.Op.EMPTY_MATCH,e.subs=D.emptySubs();break;case 1:{let n=e;e=e.subs[0],this.reuse(n);break}}return e}return t&&this.reuse(e),this.newRegexp(D.Op.EMPTY_MATCH)}parseInternal(){if((this.flags&N.LITERAL)!==0)return Y.literalRegexp(this.wholeRegexp,this.flags);let e=-1,t=-1,n=-1,s=new Pu(this.wholeRegexp);for(;s.more();){let B=-1;e:switch(s.peek()){case T.CODES.get("("):if((this.flags&N.LOOKBEHIND)!==0){if(s.lookingAt("(?<=")){this.parsePosLookBehind(),s.skip(4);break}if(s.lookingAt("(?<!")){this.parseNegLookBehind(),s.skip(4);break}}if((this.flags&N.PERL_X)!==0&&s.lookingAt("(?")){this.parsePerlFlags(s);break}this.op(D.Op.LEFT_PAREN).cap=++this.numCap,s.skip(1);break;case T.CODES.get("|"):this.parseVerticalBar(),s.skip(1);break;case T.CODES.get(")"):this.parseRightParen(),s.skip(1);break;case T.CODES.get("^"):(this.flags&N.ONE_LINE)!==0?this.op(D.Op.BEGIN_TEXT):this.op(D.Op.BEGIN_LINE),s.skip(1);break;case T.CODES.get("$"):(this.flags&N.ONE_LINE)!==0?this.op(D.Op.END_TEXT).flags|=N.WAS_DOLLAR:this.op(D.Op.END_LINE),s.skip(1);break;case T.CODES.get("."):(this.flags&N.DOT_NL)!==0?this.op(D.Op.ANY_CHAR):this.op(D.Op.ANY_CHAR_NOT_NL),s.skip(1);break;case T.CODES.get("["):this.parseClass(s);break;case T.CODES.get("*"):case T.CODES.get("+"):case T.CODES.get("?"):{B=s.pos();let i=null;switch(s.pop()){case T.CODES.get("*"):i=D.Op.STAR;break;case T.CODES.get("+"):i=D.Op.PLUS;break;case T.CODES.get("?"):i=D.Op.QUEST}this.repeat(i,t,n,B,s,e);break}case T.CODES.get("{"):{let i=s.pos(),o=Y.parseRepeat(s);if(o<0){s.rewindTo(i),this.literal(s.pop());break}B=i,t=o>>16,n=(o&J.MAX_BMP)<<16>>16,this.repeat(D.Op.REPEAT,t,n,B,s,e);break}case T.CODES.get("\\"):{let i=s.pos();if(s.skip(1),(this.flags&N.PERL_X)!==0&&s.more())switch(s.pop()){case T.CODES.get("A"):this.op(D.Op.BEGIN_TEXT);break e;case T.CODES.get("b"):this.op(D.Op.WORD_BOUNDARY);break e;case T.CODES.get("B"):this.op(D.Op.NO_WORD_BOUNDARY);break e;case T.CODES.get("C"):throw new he(Y.ERR_INVALID_ESCAPE,"\\C");case T.CODES.get("Q"):{let c=s.rest(),u=c.indexOf("\\E");u>=0?(c=c.substring(0,u),s.skipString(c),s.skipString("\\E")):s.skipString(c);let l=0;for(;l<c.length;){let C=c.codePointAt(l);this.literal(C),l+=_.charCount(C)}break e}case T.CODES.get("z"):this.op(D.Op.END_TEXT);break e;default:s.rewindTo(i)}else s.rewindTo(i);let o=this.newRegexp(D.Op.CHAR_CLASS);if(o.flags=this.flags,s.lookingAt("\\p")||s.lookingAt("\\P")){let c=new _t;if(this.parseUnicodeClass(s,c)){o.runes=c.toArray(),this.push(o);break e}}let a=new _t;if(this.parsePerlClassEscape(s,a)){o.runes=a.toArray(),this.push(o);break e}s.rewindTo(i),this.reuse(o),this.literal(Y.parseEscape(s));break}default:this.literal(s.pop())}e=B}if(this.concat(),this.swapVerticalBar()&&this.pop(),this.alternate(),this.stack.length!==1)throw new he(Y.ERR_MISSING_PAREN,this.wholeRegexp);return this.stack[0].namedGroups=this.namedGroups,this.stack[0]}parsePerlFlags(e){let t=e.pos(),n=e.rest();if(n.startsWith("(?P<")||n.startsWith("(?<")){let o=n.charAt(2)==="P"?4:3,a=n.indexOf(">");if(a<0)throw new he(Y.ERR_INVALID_NAMED_CAPTURE,n);let c=n.substring(o,a);if(e.skipString(c),e.skip(o+1),!Y.isValidCaptureName(c))throw new he(Y.ERR_INVALID_NAMED_CAPTURE,n.substring(0,a+1));let u=this.op(D.Op.LEFT_PAREN);if(u.cap=++this.numCap,this.namedGroups[c])throw new he(Y.ERR_DUPLICATE_NAMED_CAPTURE,c);this.namedGroups[c]=this.numCap,u.name=c;return}e.skip(2);let s=this.flags,B=1,i=!1;e:for(;e.more();){let o=e.pop();switch(o){case T.CODES.get("i"):s|=N.FOLD_CASE,i=!0;break;case T.CODES.get("m"):s&=~N.ONE_LINE,i=!0;break;case T.CODES.get("s"):s|=N.DOT_NL,i=!0;break;case T.CODES.get("U"):s|=N.NON_GREEDY,i=!0;break;case T.CODES.get("-"):if(B<0)break e;B=-1,s=~s,i=!1;break;case T.CODES.get(":"):case T.CODES.get(")"):if(B<0){if(!i)break e;s=~s}o===T.CODES.get(":")&&this.op(D.Op.LEFT_PAREN),this.flags=s;return;default:break e}}throw new he(Y.ERR_INVALID_PERL_OP,e.from(t))}parsePosLookBehind(){let e=this.newRegexp(D.Op.LEFT_PAREN);return e.flags=this.flags,e.lb=++this.nlb,this.push(e)}parseNegLookBehind(){let e=this.newRegexp(D.Op.LEFT_PAREN);return e.flags=this.flags,e.lb=-++this.nlb,this.push(e)}parseVerticalBar(){this.concat(),this.swapVerticalBar()||this.op(D.Op.VERTICAL_BAR)}swapVerticalBar(){let e=this.stack.length;if(e>=3&&this.stack[e-2].op===D.Op.VERTICAL_BAR&&Y.isCharClass(this.stack[e-1])&&Y.isCharClass(this.stack[e-3])){let t=this.stack[e-1],n=this.stack[e-3];if(t.op>n.op){let s=n;n=t,t=s,this.stack[e-3]=n}return Y.mergeCharClass(n,t),this.reuse(t),this.pop(),!0}if(e>=2){let t=this.stack[e-1],n=this.stack[e-2];if(n.op===D.Op.VERTICAL_BAR)return e>=3&&this.cleanAlt(this.stack[e-3]),this.stack[e-2]=t,this.stack[e-1]=n,!0}return!1}parseRightParen(){if(this.concat(),this.swapVerticalBar()&&this.pop(),this.alternate(),this.stack.length<2)throw new he(Y.ERR_UNEXPECTED_PAREN,this.wholeRegexp);let e=this.pop(),t=this.pop();if(t.op!==D.Op.LEFT_PAREN)throw new he(Y.ERR_UNEXPECTED_PAREN,this.wholeRegexp);if(this.flags=t.flags,t.lb!==0){if(Y.hasCapture(e))throw new he(Y.ERR_INVALID_CAPTURE_IN_LOOKBEHIND,this.wholeRegexp);t.lb>0?t.op=D.Op.PLB:t.op=D.Op.NLB,t.subs=[e],this.push(t);return}t.cap===0?this.push(e):(t.op=D.Op.CAPTURE,t.subs=[e],this.push(t))}parsePerlClassEscape(e,t){let n=e.pos();if((this.flags&N.PERL_X)===0||!e.more()||e.pop()!==T.CODES.get("\\")||!e.more())return!1;e.pop();let s=e.from(n),B=Ni.has(s)?Ni.get(s):null;return B===null?!1:(t.appendGroup(B,(this.flags&N.FOLD_CASE)!==0),!0)}parseNamedClass(e,t){let n=e.rest(),s=n.indexOf(":]");if(s<0)return!1;let B=n.substring(0,s+2);e.skipString(B);let i=Wi.has(B)?Wi.get(B):null;if(i===null)throw new he(Y.ERR_INVALID_CHAR_RANGE,B);return t.appendGroup(i,(this.flags&N.FOLD_CASE)!==0),!0}parseUnicodeClass(e,t){let n=e.pos();if((this.flags&N.UNICODE_GROUPS)===0||!e.lookingAt("\\p")&&!e.lookingAt("\\P"))return!1;e.skip(1);let s=1,B=e.pop();if(B===T.CODES.get("P")&&(s=-1),!e.more())throw e.rewindTo(n),new he(Y.ERR_INVALID_CHAR_RANGE,e.rest());B=e.pop();let i;if(B!==T.CODES.get("{"))i=_.runeToString(B);else{let u=e.rest(),l=u.indexOf("}");if(l<0)throw e.rewindTo(n),new he(Y.ERR_INVALID_CHAR_RANGE,e.rest());i=u.substring(0,l),e.skipString(i),e.skip(1)}i.length!==0&&i.codePointAt(0)===T.CODES.get("^")&&(s=0-s,i=i.substring(1));let o=Y.unicodeTable(i);if(o===null)throw new he(Y.ERR_INVALID_CHAR_RANGE,e.from(n));o.sign<0&&(s=0-s);let a=o.tab,c=o.fold;if((this.flags&N.FOLD_CASE)===0||c===null)t.appendTableWithSign(a,s);else{let u=new _t().appendTable(a).appendTable(c).cleanClass().toArray();t.appendClassWithSign(Array.from(u),s)}return!0}parseClass(e){let t=e.pos();e.skip(1);let n=this.newRegexp(D.Op.CHAR_CLASS);n.flags=this.flags;let s=new _t,B=1;e.more()&&e.lookingAt("^")&&(B=-1,e.skip(1),(this.flags&N.CLASS_NL)===0&&s.appendRange(T.CODES.get(`
|
|
72
|
+
`),T.CODES.get(`
|
|
73
|
+
`)));let i=!0;for(;!e.more()||e.peek()!==T.CODES.get("]")||i;){if(e.more()&&e.lookingAt("-")&&(this.flags&N.PERL_X)===0&&!i){let u=e.rest();if(u==="-"||!u.startsWith("-]"))throw e.rewindTo(t),new he(Y.ERR_INVALID_CHAR_RANGE,e.rest())}i=!1;let o=e.pos();if(e.lookingAt("[:")){if(this.parseNamedClass(e,s))continue;e.rewindTo(o)}if(this.parseUnicodeClass(e,s)||this.parsePerlClassEscape(e,s))continue;e.rewindTo(o);let a=Y.parseClassChar(e,t),c=a;if(e.more()&&e.lookingAt("-")){if(e.skip(1),e.more()&&e.lookingAt("]"))e.skip(-1);else if(c=Y.parseClassChar(e,t),c<a)throw new he(Y.ERR_INVALID_CHAR_RANGE,e.from(o))}(this.flags&N.FOLD_CASE)===0?s.appendRange(a,c):s.appendFoldedRange(a,c)}e.skip(1),s.cleanClass(),B<0&&s.negateClass(),n.runes=s.toArray(),this.push(n)}},_u=class Ut{static initTest(e){let t=Ut.compile(e),n=new Ut(t.expr,t.prog,t.numSubexp,t.longest);return n.cond=t.cond,n.prefix=t.prefix,n.prefixUTF8=t.prefixUTF8,n.prefixComplete=t.prefixComplete,n.prefixRune=t.prefixRune,n.prefilter=t.prefilter,n}static compile(e){return Ut.compileImpl(e,N.PERL,!1)}static compilePOSIX(e){return Ut.compileImpl(e,N.POSIX,!0)}static compileImpl(e,t,n){let s=Pn.parse(e,t),B=s.maxCap(),i=s.namedGroups;s=ao.simplify(s);let o=Gu.build(s),a=oo.compileRegexp(s),c=new Ut(e,a,B,n);c.prefilter=o.type===Be.Type.NONE?null:o;let[u,l]=a.prefix();return c.prefixComplete=u,c.prefix=l,c.prefixUTF8=_.stringToUtf8ByteArray(c.prefix),c.prefix.length>0&&(c.prefixRune=c.prefix.codePointAt(0)),c.namedGroups=i,c}static match(e,t){return Ut.compile(e).match(t)}constructor(e,t,n=0,s=0){this.expr=e,this.prog=t,this.numSubexp=n,this.longest=s,this.cond=t.startCond(),this.prefix=null,this.prefixUTF8=null,this.prefixComplete=!1,this.prefixRune=0,this.machinePool=[],this.dfa=new Qs(this.prog),this.onepass=Ri.compile(this.prog),this.prefilter=null}matchPrefixComplete(e,t,n,s){if((n===N.ANCHOR_START||n===N.ANCHOR_BOTH)&&t!==0)return null;let B=-1,i=-1,o=e.prefixLength(this);if(n===N.UNANCHORED){let a=e.index(this,t);if(a<0)return null;B=t+a,i=B+o}else if(n===N.ANCHOR_BOTH){if(e.endPos()!==o||e.index(this,0)!==0)return null;B=0,i=o}else if(n===N.ANCHOR_START){if(e.index(this,0)!==0)return null;B=0,i=o}if(B<0)return null;if(s>0){let a=new Int32Array(s).fill(-1);return a[0]=B,a[1]=i,Array.from(a)}return[]}createLookbehindState(){return this.prog.numLb>0?new ku(this.prog):null}executeEngine(e,t,n,s,B=null){if(this.prefixComplete&&(s===0||this.numSubexp===0))return this.matchPrefixComplete(e,t,n,s);if(this.prefilter!==null&&n===N.UNANCHORED&&!this.prefilter.eval(e,t))return null;if(this.onepass!==null)return Ri.execute(this,e,t,n,s);if(s>0)return this.prog.numLb===0&&e.endPos()<=$r.maxBitStateLen(this.prog)?$r.execute(this,e,t,n,s):this.doExecuteNFA(e,t,n,s,B);if(this.prog.numLb===0){let i=this.dfa.match(e,t,n);if(i!==null)return i?[]:null;if(e.endPos()<=$r.maxBitStateLen(this.prog))return $r.execute(this,e,t,n,s)}return this.doExecuteNFA(e,t,n,s,B)}numberOfCapturingGroups(){return this.numSubexp}numberOfInstructions(){return this.prog.numInst()}get(){return this.machinePool.length>0?this.machinePool.pop():null}reset(){this.machinePool.length=0}put(e){this.machinePool.push(e)}toString(){return this.expr}doExecuteNFA(e,t,n,s,B=null){let i=this.get();i||(i=ro.fromRE2(this)),i.init(s);let o=i.match(e,t,n,B)?i.submatches():null;return this.put(i),o}match(e){return this.executeEngine(fe.fromUTF16(e),0,N.UNANCHORED,0)!==null}matchWithGroup(e,t,n,s,B,i=null){return e instanceof jt||(_.isByteArray(e)?e=Kt.utf8(e):e=Kt.utf16(e)),this.matchMachineInput(e,t,n,s,B,i)}matchMachineInput(e,t,n,s,B,i=null){if(t>n)return[!1,null];let o=e.isUTF16Encoding()?fe.fromUTF16(e.asCharSequence(),0,n):fe.fromUTF8(e.asBytes(),0,n),a=this.executeEngine(o,t,s,2*B,i);return a===null?[!1,null]:[!0,a]}matchUTF8(e){return this.executeEngine(fe.fromUTF8(e),0,N.UNANCHORED,0)!==null}replaceAll(e,t){return this.replaceAllFunc(e,()=>t,2*e.length+1)}replaceFirst(e,t){return this.replaceAllFunc(e,()=>t,1)}replaceAllFunc(e,t,n){let s=0,B=0,i="",o=fe.fromUTF16(e),a=this.createLookbehindState(),c=0;for(;B<=e.length;){let u=this.executeEngine(o,B,N.UNANCHORED,2,a);if(u===null||u.length===0)break;i+=e.substring(s,u[0]),(u[1]>s||u[0]===0)&&(i+=t(e.substring(u[0],u[1])),c++),s=u[1];let l=o.step(B)&7;if(B+l>u[1]?B+=l:B+1>u[1]?B++:B=u[1],c>=n)break}return i+=e.substring(s),i}pad(e){if(e===null)return null;let t=(1+this.numSubexp)*2;if(e.length<t){let n=new Array(t).fill(-1);for(let s=0;s<e.length;s++)n[s]=e[s];e=n}return e}allMatches(e,t,n=s=>s){let s=[],B=e.endPos();t<0&&(t=B+1);let i=0,o=0,a=-1,c=this.createLookbehindState();for(;o<t&&i<=B;){let u=this.executeEngine(e,i,N.UNANCHORED,this.prog.numCap,c);if(u===null||u.length===0)break;let l=!0;if(u[1]===i){u[0]===a&&(l=!1);let C=e.step(i);C<0?i=B+1:i+=C&7}else i=u[1];a=u[1],l&&(s.push(n(this.pad(u))),o++)}return s}findUTF8(e){let t=this.executeEngine(fe.fromUTF8(e),0,N.UNANCHORED,2);return t===null?null:e.slice(t[0],t[1])}findUTF8Index(e){let t=this.executeEngine(fe.fromUTF8(e),0,N.UNANCHORED,2);return t===null?null:t.slice(0,2)}find(e){let t=this.executeEngine(fe.fromUTF16(e),0,N.UNANCHORED,2);return t===null?"":e.substring(t[0],t[1])}findIndex(e){return this.executeEngine(fe.fromUTF16(e),0,N.UNANCHORED,2)}findUTF8Submatch(e){let t=this.executeEngine(fe.fromUTF8(e),0,N.UNANCHORED,this.prog.numCap);if(t===null)return null;let n=new Array(1+this.numSubexp).fill(null);for(let s=0;s<n.length;s++)2*s<t.length&&t[2*s]>=0&&(n[s]=e.slice(t[2*s],t[2*s+1]));return n}findUTF8SubmatchIndex(e){return this.pad(this.executeEngine(fe.fromUTF8(e),0,N.UNANCHORED,this.prog.numCap))}findSubmatch(e){let t=this.executeEngine(fe.fromUTF16(e),0,N.UNANCHORED,this.prog.numCap);if(t===null)return null;let n=new Array(1+this.numSubexp).fill(null);for(let s=0;s<n.length;s++)2*s<t.length&&t[2*s]>=0&&(n[s]=e.substring(t[2*s],t[2*s+1]));return n}findSubmatchIndex(e){return this.pad(this.executeEngine(fe.fromUTF16(e),0,N.UNANCHORED,this.prog.numCap))}findAllUTF8(e,t){let n=this.allMatches(fe.fromUTF8(e),t,s=>e.slice(s[0],s[1]));return n.length===0?null:n}findAllUTF8Index(e,t){let n=this.allMatches(fe.fromUTF8(e),t,s=>s.slice(0,2));return n.length===0?null:n}findAll(e,t){let n=this.allMatches(fe.fromUTF16(e),t,s=>e.substring(s[0],s[1]));return n.length===0?null:n}findAllIndex(e,t){let n=this.allMatches(fe.fromUTF16(e),t,s=>s.slice(0,2));return n.length===0?null:n}findAllUTF8Submatch(e,t){let n=this.allMatches(fe.fromUTF8(e),t,s=>{let B=new Array(s.length/2|0).fill(null);for(let i=0;i<B.length;i++)s[2*i]>=0&&(B[i]=e.slice(s[2*i],s[2*i+1]));return B});return n.length===0?null:n}findAllUTF8SubmatchIndex(e,t){let n=this.allMatches(fe.fromUTF8(e),t);return n.length===0?null:n}findAllSubmatch(e,t){let n=this.allMatches(fe.fromUTF16(e),t,s=>{let B=new Array(s.length/2|0).fill(null);for(let i=0;i<B.length;i++)s[2*i]>=0&&(B[i]=e.substring(s[2*i],s[2*i+1]));return B});return n.length===0?null:n}findAllSubmatchIndex(e,t){let n=this.allMatches(fe.fromUTF16(e),t);return n.length===0?null:n}},th=class Hr{static UNANCHORED=N.UNANCHORED;static ANCHOR_START=N.ANCHOR_START;static ANCHOR_BOTH=N.ANCHOR_BOTH;constructor(e=Hr.UNANCHORED,t=0,n=8388608){this.anchor=e,this.jsFlags=t,this.maxMem=n;let s=N.PERL;(t&Ve.DISABLE_UNICODE_GROUPS)!==0&&(s&=~N.UNICODE_GROUPS),(t&Ve.LOOKBEHINDS)!==0&&(s|=N.LOOKBEHIND),this.re2Flags=s,this.regexps=[],this.prog=null,this.dfa=null,this.dummyRe2=null}add(e){if(this.prog)throw new _n("Cannot add patterns after compile");let t=e;(this.jsFlags&Ve.CASE_INSENSITIVE)!==0&&(t=`(?i)${t}`),(this.jsFlags&Ve.DOTALL)!==0&&(t=`(?s)${t}`),(this.jsFlags&Ve.MULTILINE)!==0&&(t=`(?m)${t}`);let n=Pn.parse(t,this.re2Flags);return this.regexps.push(ao.simplify(n)),this.regexps.length-1}compile(){if(this.prog)return;let e=oo.compileSet(this.regexps);if(e.numInst()>Pn.MAX_SIZE)throw new _n(`${Pn.ERR_LARGE}: the set compiles to ${e.numInst()} instructions, more than ${Pn.MAX_SIZE}`);this.prog=e,this.dfa=new Qs(this.prog,this.maxMem),this.dummyRe2={prog:this.prog,cond:this.prog.startCond(),prefix:"",prefixRune:0,longest:!1}}match(e){this.prog||this.compile();let t=_.isByteArray(e)?fe.fromUTF8(e):fe.fromUTF16(e),n=N.UNANCHORED;this.anchor===Hr.ANCHOR_START?n=N.ANCHOR_START:this.anchor===Hr.ANCHOR_BOTH&&(n=N.ANCHOR_BOTH);let s=this.dfa.matchSet(t,0,n);if(s!==null)return s;let B=ro.fromRE2(this.dummyRe2);return B.init(0),B.matchSet(t,0,n)}},Ju=class cn{static isHexadecimal(e){return"0"<=e&&e<="9"||"A"<=e&&e<="F"||"a"<=e&&e<="f"}static translate(e){let t="";if(e instanceof RegExp&&(e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e=e.source),typeof e!="string")return e;let n="",s=!1,B=e.length;B===0&&(n="(?:)",s=!0);let i=!1,o=0;for(;o<B;){let c=e[o];if(c==="\\"){if(o+1<B)switch(c=e[o+1],c){case"\\":n+="\\\\",o+=2;continue;case"c":if(o+2<B){let C=e[o+2].charCodeAt(0);if(C>=65&&C<=90||C>=97&&C<=122){let h=C%32;n+="\\x",n+=(h>>4).toString(16).toUpperCase(),n+=(h&15).toString(16).toUpperCase(),o+=3,s=!0;continue}}n+="c",o+=2,s=!0;continue;case"u":if(o+2<B){if(e[o+2]==="{"){let C=o+3,h=!1,p=!1;for(;C<B;){let f=e[C];if(f==="}"){p=!0;break}if(!cn.isHexadecimal(f))break;h=!0,C++}if(p&&h){n+="\\x",o+=2,s=!0;continue}}else if(o+5<B){let C=!0;for(let h=0;h<4;h++)if(!cn.isHexadecimal(e[o+2+h])){C=!1;break}if(C){n+="\\x{"+e.substring(o+2,o+6)+"}",o+=6,s=!0;continue}}}n+="u",o+=2,s=!0;continue;case"x":{let C=!1;if(o+2<B&&e[o+2]==="{"){let h=o+3,p=!1,f=!1;for(;h<B;){let w=e[h];if(w==="}"){f=!0;break}if(!cn.isHexadecimal(w))break;p=!0,h++}f&&p&&(C=!0)}else o+3<B&&cn.isHexadecimal(e[o+2])&&cn.isHexadecimal(e[o+3])&&(C=!0);C?(n+="\\x",o+=2):(n+="x",o+=2,s=!0);continue}case"n":case"r":case"t":case"a":case"f":case"v":case"d":case"D":case"s":case"S":case"w":case"W":case"b":case"B":case"p":case"P":case"A":case"z":case"Q":case"E":case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":n+="\\"+c,o+=2;continue;default:{let C=e.codePointAt(o+1);if(C>=48&&C<=57||C>=65&&C<=90||C>=97&&C<=122){let h=_.charCount(C);n+=e.substring(o+1,o+1+h),o+=h+1,s=!0}else{n+="\\";let h=_.charCount(C);n+=e.substring(o+1,o+1+h),o+=h+1}continue}}}else if(c==="/"){n+="\\/",o+=1,s=!0;continue}else if(c==="[")i=!0;else if(c==="]")i=!1;else if(!i&&c==="("&&o+2<B&&e[o+1]==="?"&&e[o+2]==="<"&&o+3<B&&!"=!>)".includes(e[o+3])){n+="(?P<",o+=3,s=!0;continue}let u=e.codePointAt(o),l=_.charCount(u);n+=e.substring(o,o+l),o+=l}let a=s?n:e;return t.length>0?`(?${t})${a}`:a}},Cn=class ye{static CASE_INSENSITIVE=Ve.CASE_INSENSITIVE;static DOTALL=Ve.DOTALL;static MULTILINE=Ve.MULTILINE;static DISABLE_UNICODE_GROUPS=Ve.DISABLE_UNICODE_GROUPS;static LONGEST_MATCH=Ve.LONGEST_MATCH;static LOOKBEHINDS=Ve.LOOKBEHINDS;static quote(e){return _.quoteMeta(e)}static quoteReplacement(e,t=!1){return ki.quoteReplacement(e,t)}static translateRegExp(e){return Ju.translate(e)}static compile(e,t=0){let n=e;if((t&ye.CASE_INSENSITIVE)!==0&&(n=`(?i)${n}`),(t&ye.DOTALL)!==0&&(n=`(?s)${n}`),(t&ye.MULTILINE)!==0&&(n=`(?m)${n}`),(t&~(ye.MULTILINE|ye.DOTALL|ye.CASE_INSENSITIVE|ye.DISABLE_UNICODE_GROUPS|ye.LONGEST_MATCH|ye.LOOKBEHINDS))!==0)throw new vu("Flags should only be a combination of MULTILINE, DOTALL, CASE_INSENSITIVE, DISABLE_UNICODE_GROUPS, LONGEST_MATCH, LOOKBEHINDS");let s=N.PERL;(t&ye.DISABLE_UNICODE_GROUPS)!==0&&(s&=~N.UNICODE_GROUPS),(t&ye.LOOKBEHINDS)!==0&&(s|=N.LOOKBEHIND);let B=new ye(e,t);return B.re2Input=_u.compileImpl(n,s,(t&ye.LONGEST_MATCH)!==0),B}static matches(e,t){return ye.compile(e).testExact(t)}static initTest(e,t,n){if(e==null)throw new Error("pattern is null");if(n==null)throw new Error("re2 is null");let s=new ye(e,t);return s.re2Input=n,s}constructor(e,t){this.patternInput=e,this.flagsInput=t,this.re2Input=null}reset(){this.re2Input.reset()}flags(){return this.flagsInput}pattern(){return this.patternInput}re2(){return this.re2Input}matches(e){return this.testExact(e)}matcher(e){return _.isByteArray(e)&&(e=Kt.utf8(e)),new ki(this,e)}test(e){return _.isByteArray(e)?this.re2Input.matchUTF8(e):this.re2Input.match(e)}testExact(e){let t=_.isByteArray(e)?fe.fromUTF8(e):fe.fromUTF16(e);return this.re2Input.executeEngine(t,0,N.ANCHOR_BOTH,0)!==null}exec(e){let t=this.matcher(e);if(!t.find())return null;let n=[t.group(0)];for(let B=1;B<=t.groupCount();B++){let i=t.group(B);n.push(i===null?void 0:i)}n.index=t.start(0),n.input=e;let s=this.namedGroups();if(Object.keys(s).length>0){let B=t.getNamedGroups();for(let i in B)B[i]===null&&(B[i]=void 0);n.groups=B}else n.groups=void 0;return n}split(e,t=0){let n=this.matcher(e),s=[],B=0,i=0;for(;n.find();){if(i===0&&n.end()===0){i=n.end();continue}if(t>0&&s.length===t-1)break;if(i===n.start()){if(t===0){B+=1,i=n.end();continue}}else for(;B>0;)s.push(""),B-=1;s.push(n.substring(i,n.start())),i=n.end()}if(t===0&&i!==n.inputLength()){for(;B>0;)s.push(""),B-=1;s.push(n.substring(i,n.inputLength()))}return(t!==0||s.length===0&&!(i===n.inputLength()&&i>0))&&s.push(n.substring(i,n.inputLength())),s}*matchAll(e){let t=this.matcher(e);for(;t.find();){let n=[t.group(0)];for(let B=1;B<=t.groupCount();B++){let i=t.group(B);n.push(i===null?void 0:i)}n.index=t.start(0),n.input=e;let s=this.namedGroups();if(Object.keys(s).length>0){let B=t.getNamedGroups();for(let i in B)B[i]===null&&(B[i]=void 0);n.groups=B}else n.groups=void 0;yield n}}toString(){return this.patternInput}programSize(){return this.re2Input.numberOfInstructions()}groupCount(){return this.re2Input.numberOfCapturingGroups()}namedGroups(){return this.re2Input.namedGroups}equals(e){return this===e?!0:e===null||this.constructor!==e.constructor?!1:this.flagsInput===e.flagsInput&&this.patternInput===e.patternInput}};var lo="kubectl config current-context",Uu=/^[A-Za-z0-9][A-Za-z0-9._:@/+-]*$/;function uo(r){return r.length<=253&&Uu.test(r)}var Ku=/^\$\{param:([A-Za-z_][A-Za-z0-9_]*)\}$/;function zt(r){return r===void 0?void 0:Ku.exec(r)?.[1]}function Pr(r){return uo(r)||zt(r)!==void 0}function _r(r,e){return r.kubeContext??e?.kubeContext}function co(r,e){let t=zt(r);if(t===void 0)return r;let n=e(t);if(n===void 0)throw new Error(`md-runbook: kube-context \${param:${t}} has no value: nothing ran`);if(!uo(n))throw new Error(`md-runbook: kube-context \${param:${t}} is ${JSON.stringify(n)}, which is not a Kubernetes context name: nothing ran`);return n}function Co(r){let e=zt(r);return e===void 0?"":`\${param:${e}}`}function ju(r,e){let t=e.stdout.split(/\r?\n/).map(B=>B.trim()).find(B=>B!=="");if(e.exitCode===0&&t===r)return;let n=`md-runbook: this runbook is for the Kubernetes context ${r}`;if(e.exitCode===0&&t!==void 0)return`${n}, and kubectl's current context is ${t}: nothing ran. Switch with \`kubectl config use-context ${r}\`, or open the runbook meant for ${t}.`;let s=(e.stderr??"").split(/\r?\n/).map(B=>B.trim()).find(B=>B!=="");return`${n}, and \`${lo}\` ${s?`failed (${s})`:"named no context"}: nothing ran.`}async function fo(r,e,t=!1){if(r===void 0)return;let n;try{n=await e(t?mo(r):lo)}catch(s){n={exitCode:null,stdout:"",stderr:s instanceof Error?s.message:String(s)}}return t?zu(r,n):ju(r,n)}var ho=["check","pin"];function po(r){return`# md-runbook: the Kubernetes context of a runbook with kube-context-mode: pin.
|
|
74
|
+
# Only the current context is here; clusters, users and credentials come from your own kubeconfig.
|
|
75
|
+
apiVersion: v1
|
|
76
|
+
kind: Config
|
|
77
|
+
preferences: {}
|
|
78
|
+
clusters: []
|
|
79
|
+
contexts: []
|
|
80
|
+
users: []
|
|
81
|
+
current-context: ${JSON.stringify(r)}
|
|
82
|
+
`}function go(r,e,t){return r+(t==="win32"?";":":")+e}function mo(r){return`kubectl config get-contexts ${r}`}function zu(r,e){let t=e.stdout.split(/\r?\n/).map(B=>B.trim().split(/\s+/));if(e.exitCode===0&&t.some(B=>B[0]==="*"&&B[1]===r))return;let n=`md-runbook: this runbook pins the Kubernetes context ${r}`;if(e.exitCode===0&&t.some(B=>B[0]===r))return`${n}, and kubectl's current context in the cell is another one (does KUBECONFIG change before kubectl runs?): nothing ran.`;let s=(e.stderr??"").split(/\r?\n/).map(B=>B.trim()).find(B=>B!=="");return s!==void 0&&/\bcontext\b.*\bnot found\b/i.test(s)?`${n}, and your kubeconfig has no context ${r} (${s}): nothing ran. \`kubectl config get-contexts\` lists the ones you have.`:`${n}, and \`${mo(r)}\` ${s?`failed (${s})`:"did not list it"}: nothing ran.`}var ft=/^[A-Za-z_][A-Za-z0-9_]*$/,Ws=/\$\{(secret|input|param|out):([A-Za-z_][A-Za-z0-9_]*)(:secret)?\}/g;function Yu(r){return/_(PASSWORD|TOKEN|SECRET)$/i.test(r)}function Ze(r){let e=new Map;for(let t of r.matchAll(Ws)){let n=t[1],s=t[2];if(t[3]&&n!=="input")continue;let B=n==="secret"||n==="input"&&(!!t[3]||Yu(s)),i=e.get(s);if(i&&i.kind!==n)throw new Error(`${s} is referenced as both ${i.kind} and ${n}`);i?i.secret||=B:e.set(s,{kind:n,name:s,secret:B})}return[...e.values()]}function Ur(r,e){return r.replace(Ws,(t,n,s,B)=>B&&n!=="input"?t:e(n,s))}function Qu(r,e){switch(e){case"bash":return"${"+r+"}";case"pwsh":return"${env:"+r+"}";case"cmd":return"!"+r+"!"}}var qu="@setlocal EnableDelayedExpansion";function fn(r,e){let t=!1,n=r.replace(Ws,(B,i,o,a)=>a&&i!=="input"?B:(t=!0,Qu(o,e)));if(e!=="cmd"||!t)return n;let s=/\r\n/.test(r)?`\r
|
|
83
|
+
`:`
|
|
84
|
+
`;return qu+s+n}function Jr(r){return r.length>=2&&(r.startsWith('"')&&r.endsWith('"')||r.startsWith("'")&&r.endsWith("'"))?r.startsWith('"')?r.slice(1,-1).replace(/\\(["\\])/g,"$1"):r.slice(1,-1).replace(/''/g,"'"):r}function Wu(r){let e=r.trim(),t=/^("(?:[^"\\]|\\.)*"|'(?:[^']|'')*')\s*(?:#.*)?$/.exec(e);return t?Jr(t[1]):e.startsWith("#")?"":e.replace(/\s+#.*$/,"")}var Vs=/^\s+([A-Za-z_][A-Za-z0-9_]*)\s*:(?:\s+(.*?))?\s*$/;function Vu(r){let e=r.trim().toLowerCase();if(/^\d+(?:\.\d+)?$/.test(e))return Number(e);let t=/^(?:(\d+)h)?\s*(?:(\d+)m)?\s*(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}function Xe(r){let e=r.replace(/^\uFEFF/,"").split(/\r?\n/);if(e[0]?.trimEnd()!=="---")return;let t=[],n,s,B,i,o,a,c,u,l,C,h,p,f,w=Object.create(null),k=!1,E=!1;for(let x=1;x<e.length;x++){let O=e[x];if(/^(---|\.\.\.)\s*$/.test(O))return{params:t,...n?{mode:n}:{},...s!==void 0?{timeoutSeconds:s}:{},...B!==void 0?{cwd:B}:{},...i?{shell:i}:{},...o?{incident:o}:{},...a?{severity:a}:{},...c||o?{evidence:!0}:{},...u!==void 0?{rtoSeconds:u}:{},...l?{practice:l}:{},...C?{drill:C}:{},...h?{kubeContext:h}:{},...p?{kubeContextMode:p}:{},...f?{gitBashPathConversion:f}:{},...Object.keys(w).length>0?{env:w}:{}};if(O.trim()===""||O.trim().startsWith("#"))continue;if(!/^\s/.test(O)&&!O.startsWith("-")){k=/^params\s*:\s*$/.test(O),E=/^env\s*:\s*(#.*)?$/i.test(O);let L=/^mode\s*:\s*["']?(session|isolated)["']?\s*(#.*)?$/i.exec(O);L&&(n=L[1].toLowerCase());let b=/^timeout\s*:\s*["']?(\d+(?:\.\d+)?)s?["']?\s*(#.*)?$/i.exec(O);b&&(s=Number(b[1]));let m=/^cwd\s*:\s*(.*?)\s*$/i.exec(O);m&&m[1]!==""&&(B=Jr(m[1].replace(/\s+#.*$/,"")));let M=/^shell\s*:\s*(.*?)\s*(#.*)?$/i.exec(O);if(M){let{shells:ae}=Tn(M[1]);(ae.unix||ae.powershell)&&(i={...ae,...i})}let y=ae=>{let se=new RegExp(`^${ae}\\s*:\\s*(.*?)\\s*$`,"i").exec(O)?.[1];return se===void 0||se===""?void 0:Jr(se.replace(/\s+#.*$/,""))};o=y("incident")??o,a=y("severity")??a,l=y("practice")??l;let H=y("drill");H!==void 0&&(C=/^(true|yes|on)$/i.test(H));let z=y("evidence");z!==void 0&&(c=/^(true|yes|on)$/i.test(z));let j=y("rto");j!==void 0&&(u=Vu(j)??u);let X=y("kube-context");X!==void 0&&Pr(X)&&(h=X);let ne=y("kube-context-mode")?.toLowerCase();ne!==void 0&&ho.includes(ne)&&(p=ne);let te=y("git-bash-path-conversion")?.toLowerCase();(te==="on"||te==="off")&&(f=te);continue}if(E){let L=Vs.exec(O);L&&!(L[1]in w)&&(w[L[1]]=Wu(L[2]??""));continue}if(!k)continue;let I=/^\s*-\s+([A-Za-z_][A-Za-z0-9_]*)\s*(?::\s*(.*?))?\s*$/.exec(O);if(!I)continue;let v=I[1];t.some(L=>L.name===v)||t.push(I[2]!==void 0&&I[2]!==""?{name:v,default:Jr(I[2])}:{name:v})}}var Zs=100,bo=36e5,jn=class{constructor(e,t){this.source=e;this.flags=t;let n=0;t.includes("i")&&(n|=Cn.CASE_INSENSITIVE),t.includes("m")&&(n|=Cn.MULTILINE),t.includes("s")&&(n|=Cn.DOTALL);try{this.re=Cn.compile(e,n)}catch(s){let B=s instanceof Error?s.message:String(s);throw new Error(`invalid regular expression /${e}/${t}: ${B} (look-around and back-references are not supported)`)}}source;flags;re;exec(e){let t=this.re.matcher(e);if(!t.find())return null;let n=[];for(let s=0;s<=t.groupCount();s++)n.push(t.group(s)??void 0);return n}toString(){return`/${this.source}/${this.flags}`}},Zu=/^\/([\s\S]*)\/([imsu]*)$/;function Xs(r){let e=Ze(r).find(n=>n.secret);if(e)throw new Error(`a check can't use the secret ${e.kind==="secret"?`\${secret:${e.name}}`:`\${input:${e.name}}`}: its text is shown when it fails`);let t=Zu.exec(r);return t?(Ze(t[1]).length>0&&new jn(Ur(t[1],()=>"(?:x)"),t[2]),{kind:"regex",re:new jn(t[1],t[2])}):{kind:"text",text:r}}function eB(r){return[r?.expect,r?.expectNot].filter(e=>e!==void 0).map(e=>e.kind==="text"?e.text:e.re.source).join(`
|
|
85
|
+
`)}function Xu(r){return Ze(eB(r))}function wo(r,e,t=()=>!1){let n=(o,a,c)=>{let u=e[a];if(u===void 0)throw new Error(`\${${o}:${a}} in a check has no value`);if(t(a))throw new Error(`a check can't use \${${o}:${a}}: it is a secret value, and a check's text is shown when it fails`);return c(u)},s=o=>{if(o===void 0)return;if(o.kind==="text")return{kind:"text",text:Ur(o.text,(c,u)=>n(c,u,l=>l))};let a=Ur(o.re.source,(c,u)=>n(c,u,l=>`(?:${Cn.quote(l)})`));return a===o.re.source?o:{kind:"regex",re:new jn(a,o.re.flags)}};if(Xu(r).length===0)return r;let B=s(r.expect),i=s(r.expectNot);return{...r,...B?{expect:B}:{},...i?{expectNot:i}:{}}}function Kr(r){return r.kind==="text"?JSON.stringify(r.text):String(r.re)}function xo(r,e){let t=r.indexOf(":"),n=t<0?r:r.slice(0,t);if(!ft.test(n))throw new Error("expected a variable name (letters, digits, _)");if(t<0)return{name:n,secret:e};let s=Xs(r.slice(t+1));if(s.kind!=="regex")throw new Error("expected NAME or NAME:/regex/");return{name:n,pattern:s.re,secret:e}}function vo(r){return!!r&&(r.expect!==void 0||r.expectNot!==void 0||r.expectExit!==void 0||r.captures.length>0)}var Eo=r=>We(r).replace(/\r\n?/g,`
|
|
86
|
+
`);function Do(r,e){return r.kind==="text"?e.includes(r.text):r.re.exec(e)!==null}function ko(r,e,t,n){let s=[],B=r.expectExit??0,i=e===B;!i&&r.expectExit!==void 0&&s.push(`exit code ${e}, expected ${B}`);let o=Eo(t);r.expect&&!Do(r.expect,o)&&(i=!1,s.push(r.expect.kind==="text"?`the output does not contain ${Kr(r.expect)}`:`the output does not match ${Kr(r.expect)}`)),r.expectNot&&Do(r.expectNot,o)&&(i=!1,s.push(r.expectNot.kind==="text"?`the output contains ${Kr(r.expectNot)}`:`the output matches ${Kr(r.expectNot)}`));let a=[],c=[];if(i){let u=Eo(n);for(let l of r.captures){let C;if(l.pattern){let h=l.pattern.exec(u);C=h?h[1]??h[0]:void 0,C===void 0&&s.push(`capture ${l.name}: nothing in the output matches ${String(l.pattern)}`)}else C=u.trim(),C===""&&(s.push(`capture ${l.name}: the cell printed nothing`),C=void 0);C!==void 0&&a.push({name:l.name,value:C,secret:l.secret}),C!==void 0&&l.secret&&c.push(C)}a.length<r.captures.length&&(i=!1,a.length=0)}return{ok:i,failures:s,captured:a,secretValues:c}}function Oo(r){let e=/^(\d+(?:\.\d+)?)(ms|s|m)?$/i.exec(r.trim());if(!e)return;let t=Number(e[1]),n=(e[2]??"s").toLowerCase();return Math.round(n==="ms"?t:n==="m"?t*6e4:t*1e3)}var ec={windows:"windows",win:"windows",win32:"windows",linux:"linux",macos:"macos",mac:"macos",osx:"macos",darwin:"macos"},tc={windows:"Windows",linux:"Linux",macos:"macOS"};function So(r){let e=[];for(let t of r.split(",").map(n=>n.trim().toLowerCase())){let n=ec[t];if(!n)return`unknown OS "${t}" (expected windows, linux or macos)`;e.includes(n)||e.push(n)}return e.length>0?e:"expected windows, linux or macos"}function tB(r=process.platform){return r==="win32"?"windows":r==="darwin"?"macos":"linux"}function hn(r){return r.map(e=>tc[e]).join(", ")}function zn(r,e=tB()){let t=-1,n=new Set,s=!1;return r.map((B,i)=>{if(B.kind!=="markup"){if(!B.os){s=!1;return}(!s||B.os.some(o=>n.has(o)))&&(t=i,n=new Set),s=!0;for(let o of B.os)n.add(o);return{group:t,active:B.os.includes(e)}}})}function vt(r){let e=zn(r),t=new Map,n=0;return r.map((s,B)=>{if(s.kind!=="code")return;let i=e[B];return i&&t.has(i.group)?t.get(i.group):(n++,i&&t.set(i.group,n),n)})}var nB=r=>r===" "||r===" ";function Yn(r){let e=[],t=r.length,n=0;for(;n<t;){for(;n<t&&nB(r[n]);)n++;if(n>=t)break;if(r[n]==="{"){let a=r.indexOf("}",n);n=a<0?t:a+1;continue}let s=n;for(;n<t&&!nB(r[n])&&r[n]!=="=";)n++;let B=r.slice(s,n);if(r[n]!=="="){e.push({key:B,start:s,end:n});continue}n++;let i=r[n],o;if(i==='"'||i==="'"){let a=r.indexOf(i,n+1);o=r.slice(n+1,a<0?t:a),n=a<0?t:a+1}else{let a=n;for(;n<t&&!nB(r[n]);)n++;o=r.slice(a,n)}B!==""&&e.push({key:B,value:o,start:s,end:n})}return e}var nc=/^\s*[^\s{]*/;function pn(r,e,t){let n=ve(e),s=[eB(n.checks),Co(_r(n,t))].filter(B=>B!=="");return Ze([r,...s].join(`
|
|
87
|
+
`))}function ve(r){let e={env:{},errors:[]},t=()=>e.checks??={captures:[]},n;for(let{key:s,value:B}of Yn(r.replace(nc,""))){let i=s.toLowerCase();if(B===void 0)i==="continue-on-error"?e.continueOnError=!0:i==="skip"?e.skip=!0:i==="confirm"?e.confirm=!0:i==="no-confirm"?e.confirm=!1:i==="terminal"&&(e.terminal=!0);else if(i==="timeout"){let o=Number(B.replace(/s$/i,""));B.trim()===""||!Number.isFinite(o)||o<0?e.errors.push(`timeout=${B}: expected seconds (0 = none)`):e.timeoutSeconds=o}else if(i==="cwd")B===""?e.errors.push("cwd: empty path"):e.cwd=B;else if(i==="name")e.name=B;else if(i==="expect"||i==="expect-not")try{t()[i==="expect"?"expect":"expectNot"]=Xs(B)}catch(o){e.errors.push(`${i}=${B}: ${o instanceof Error?o.message:String(o)}`)}else if(i==="expect-exit")/^-?\d+$/.test(B.trim())?t().expectExit=Number(B):e.errors.push(`expect-exit=${B}: expected an exit code`);else if(i==="capture"||i==="capture-secret")try{t().captures.push(xo(B,i==="capture-secret"))}catch(o){e.errors.push(`${i}=${B}: ${o instanceof Error?o.message:String(o)}`)}else if(i==="os"){let o=So(B);typeof o=="string"?e.errors.push(`os=${B}: ${o}`):e.os=o}else if(i==="host")B.trim()===""?e.errors.push("host: empty name"):e.host=B.trim();else if(i==="kube-context")Pr(B.trim())?e.kubeContext=B.trim():e.errors.push(`kube-context=${B}: expected a Kubernetes context name or \${param:NAME}`);else if(i==="lines")B.toLowerCase()!=="any"?e.errors.push(`lines=${B}: expected lines=any`):e.lines="any";else if(i==="retry"){let o=Number(B);!Number.isInteger(o)||o<1||o>Zs?e.errors.push(`retry=${B}: expected the number of attempts (1 to ${Zs})`):e.retry={attempts:o,everyMs:5e3}}else i==="every"?(n=Oo(B),n===void 0?e.errors.push(`every=${B}: expected a duration such as 15s, 500ms or 2m`):n>bo&&e.errors.push(`every=${B}: at most 1h`)):i.startsWith("env.")&&s.length>4&&(e.env[s.slice(4)]=B)}return e.retry&&n!==void 0&&(e.retry.everyMs=n),e}function Ao(r){return/(^|[\s;|&(])md-runbook-probe(\s|$)/m.test(r)}var rc=/^(OK|FAIL) {2,}(\S+) {2,}(.+)$/;function Ro(r){let e=[];for(let t of r.split(/\r?\n/)){let n=rc.exec(t.trimEnd());if(!n)continue;let s=n[3],B={target:n[2],ok:n[1]==="OK",detail:s},i=/(\d+) days left \((\d{4}-\d\d-\d\d)\)/.exec(s),o=/expires in (-?\d+) days \((\d{4}-\d\d-\d\d)\)/.exec(s),a=/expires (\d{4}-\d\d-\d\d) \((-?\d+) days\)/.exec(s),c=/EXPIRED on (\d{4}-\d\d-\d\d) \((\d+) days ago\)/.exec(s);if(i||o){let u=i??o;B.daysLeft=Number(u[1]),B.expires=u[2]}else a?(B.daysLeft=Number(a[2]),B.expires=a[1]):c&&(B.daysLeft=-Number(c[2]),B.expires=c[1]);e.push(B)}return e}var rB=["detected","mitigated","resolved"],sc=/^[ \t]*<!--[ \t]*md-runbook:note\b(.*?)-->[ \t]*\r?\n((?:[ \t]*>.*(?:\r?\n|$))*)/gm;function Bc(r){let e=[];for(let t of r.matchAll(sc)){let n=Rn(t[1]??"");if(!n.at||Number.isNaN(Date.parse(n.at)))continue;let s=(t[2]??"").split(/\r?\n/).map(i=>i.replace(/^[ \t]*>[ \t]?/,"")).join(`
|
|
88
|
+
`).trim().replace(/^\*\*[^*]*:\*\*\s*/,""),B=rB.includes(n.milestone??"")?n.milestone:void 0;e.push({at:n.at,kind:"note",text:s,...n.by?{by:n.by}:{},...B?{milestone:B}:{}})}return e}var ic=(r,e)=>e==="failed"||r!==void 0&&!["0","done","skipped","running","proposed","declined"].includes(r)&&e!=="ok";function Fo(r,e,t,n,s){if(!r.ran||Number.isNaN(Date.parse(r.ran)))return;let B=r.exit==="done"||r.exit==="skipped",i=s===void 0?[]:Ro(s);return{at:r.ran,kind:B&&r.duration===void 0?"mark":"run",step:e,label:t,...r.by?{by:r.by}:{},...r.on?{on:r.on}:{},...r.exit!==void 0?{exit:r.exit}:{},...r.check?{check:r.check}:{},ok:!ic(r.exit,r.check),...r.duration?{duration:r.duration}:{},...n?{earlier:!0}:{},...i.length?{checks:i}:{}}}var jr=(r,e)=>Math.max(0,Math.round((Date.parse(e)-Date.parse(r))/1e3));function zr(r){let e=Xe(r),t=[],n=Ee(r),s=n.cells.map(h=>pe(h.meta)?ve(h.meta.info):void 0),B=vt(n.cells.map((h,p)=>pe(h.meta)?{kind:"code",os:s[p]?.os}:{kind:"markup"}));for(let[h,p]of n.cells.entries()){let f=B[h];if(f===void 0||!pe(p.meta))continue;let w=s[h]?.name??p.value.split(/\r?\n/).find(E=>E.trim()!=="")?.trim()??`step ${f}`,k=Ao(p.value);if(p.output){let E=Fo(p.output.attrs,f,w,!1,k?p.output.text:void 0);E&&t.push(E)}for(let E of p.meta.history?.entries??[]){let x=Fo(E.attrs,f,w,!0,k?E.text:void 0);x&&t.push(x)}}t.push(...Bc(r)),t.sort((h,p)=>Date.parse(h.at)-Date.parse(p.at)||(h.step??0)-(p.step??0));let i={};for(let h of t)h.milestone&&!i[h.milestone]&&(i[h.milestone]=h.at);let o=t.filter(h=>h.kind==="run"),a=t[0]?.at,c=t[t.length-1]?.at,u=i.detected??a,l={...e?.incident?{incident:e.incident}:{},...e?.severity?{severity:e.severity}:{},...e?.drill?{drill:!0}:{},...a?{start:a}:{},...c?{end:c}:{},...a&&c?{durationSeconds:jr(a,c)}:{},runs:o.length,failedAttempts:o.filter(h=>!h.ok).length,milestones:i,...u&&i.mitigated?{timeToMitigateSeconds:jr(u,i.mitigated)}:{},...u&&i.resolved?{timeToResolveSeconds:jr(u,i.resolved)}:{},people:[...new Set(t.flatMap(h=>h.by?[h.by]:[]))],places:[...new Set(t.flatMap(h=>h.on?[h.on]:[]))]},C=t.flatMap(h=>h.earlier?[]:h.checks??[]);if(C.length&&(l.endpointChecks={total:C.length,failed:C.filter(h=>!h.ok).length}),e?.rtoSeconds!==void 0){l.rtoSeconds=e.rtoSeconds;let h=i.resolved??c;a&&h&&(l.rtoMet=jr(a,h)<=e.rtoSeconds)}return{events:t,summary:l}}function Qn(r){let e=Math.floor(r/3600),t=Math.floor(r%3600/60),n=r%60;return[e?`${e} h`:"",t?`${t} min`:"",n||!e&&!t?`${n} s`:""].filter(Boolean).join(" ")}var oc=100;function yo(r,e,t=!1){return!t&&!Xe(r)?.evidence?{}:{...e.by?{by:e.by}:{},...e.on?{on:e.on}:{}}}function Io(r,e){return Xe(r)?.evidence?Math.max(e,oc):e}var $o=require("module"),ac=(0,$o.createRequire)("/"),lc;try{lc=ac("worker_threads").Worker}catch{}var we=Uint8Array,_e=Uint16Array,cB=Int32Array,Yr=new we([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Qr=new we([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),oB=new we([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Go=function(r,e){for(var t=new _e(31),n=0;n<31;++n)t[n]=e+=1<<r[n-1];for(var s=new cB(t[30]),n=1;n<30;++n)for(var B=t[n];B<t[n+1];++B)s[B]=B-t[n]<<5|n;return{b:t,r:s}},Mo=Go(Yr,2),Ho=Mo.b,aB=Mo.r;Ho[28]=258,aB[258]=28;var Po=Go(Qr,0),uc=Po.b,To=Po.r,lB=new _e(32768);for(ce=0;ce<32768;++ce)ht=(ce&43690)>>1|(ce&21845)<<1,ht=(ht&52428)>>2|(ht&13107)<<2,ht=(ht&61680)>>4|(ht&3855)<<4,lB[ce]=((ht&65280)>>8|(ht&255)<<8)>>1;var ht,ce,ot=(function(r,e,t){for(var n=r.length,s=0,B=new _e(e);s<n;++s)r[s]&&++B[r[s]-1];var i=new _e(e);for(s=1;s<e;++s)i[s]=i[s-1]+B[s-1]<<1;var o;if(t){o=new _e(1<<e);var a=15-e;for(s=0;s<n;++s)if(r[s])for(var c=s<<4|r[s],u=e-r[s],l=i[r[s]-1]++<<u,C=l|(1<<u)-1;l<=C;++l)o[lB[l]>>a]=c}else for(o=new _e(n),s=0;s<n;++s)r[s]&&(o[s]=lB[i[r[s]-1]++]>>15-r[s]);return o}),kt=new we(288);for(ce=0;ce<144;++ce)kt[ce]=8;var ce;for(ce=144;ce<256;++ce)kt[ce]=9;var ce;for(ce=256;ce<280;++ce)kt[ce]=7;var ce;for(ce=280;ce<288;++ce)kt[ce]=8;var ce,Zn=new we(32);for(ce=0;ce<32;++ce)Zn[ce]=5;var ce,cc=ot(kt,9,0),Cc=ot(kt,9,1),fc=ot(Zn,5,0),hc=ot(Zn,5,1),sB=function(r){for(var e=r[0],t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},et=function(r,e,t){var n=e/8|0;return(r[n]|r[n+1]<<8)>>(e&7)&t},BB=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},CB=function(r){return(r+7)/8|0},Vn=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new we(r.subarray(e,t))};var pc=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],tt=function(r,e,t){var n=new Error(e||pc[r]);if(n.code=r,Error.captureStackTrace&&Error.captureStackTrace(n,tt),!t)throw n;return n},dc=function(r,e,t,n){var s=r.length,B=n?n.length:0;if(!s||e.f&&!e.l)return t||new we(0);var i=!t,o=i||e.i!=2,a=e.i;i&&(t=new we(s*3));var c=function(q){var Q=t.length;if(q>Q){var oe=new we(Math.max(Q*2,q));oe.set(t),t=oe}},u=e.f||0,l=e.p||0,C=e.b||0,h=e.l,p=e.d,f=e.m,w=e.n,k=s*8;do{if(!h){u=et(r,l,1);var E=et(r,l+1,3);if(l+=3,E)if(E==1)h=Cc,p=hc,f=9,w=5;else if(E==2){var v=et(r,l,31)+257,L=et(r,l+10,15)+4,b=v+et(r,l+5,31)+1;l+=14;for(var m=new we(b),M=new we(19),y=0;y<L;++y)M[oB[y]]=et(r,l+y*3,7);l+=L*3;for(var H=sB(M),z=(1<<H)-1,j=ot(M,H,1),y=0;y<b;){var X=j[et(r,l,z)];l+=X&15;var x=X>>4;if(x<16)m[y++]=x;else{var ne=0,te=0;for(x==16?(te=3+et(r,l,3),l+=2,ne=m[y-1]):x==17?(te=3+et(r,l,7),l+=3):x==18&&(te=11+et(r,l,127),l+=7);te--;)m[y++]=ne}}var ae=m.subarray(0,v),se=m.subarray(v);f=sB(ae),w=sB(se),h=ot(ae,f,1),p=ot(se,w,1)}else tt(1);else{var x=CB(l)+4,O=r[x-4]|r[x-3]<<8,I=x+O;if(I>s){a&&tt(0);break}o&&c(C+O),t.set(r.subarray(x,I),C),e.b=C+=O,e.p=l=I*8,e.f=u;continue}if(l>k){a&&tt(0);break}}o&&c(C+131072);for(var De=(1<<f)-1,de=(1<<w)-1,W=l;;W=l){var ne=h[BB(r,l)&De],U=ne>>4;if(l+=ne&15,l>k){a&&tt(0);break}if(ne||tt(2),U<256)t[C++]=U;else if(U==256){W=l,h=null;break}else{var re=U-254;if(U>264){var y=U-257,A=Yr[y];re=et(r,l,(1<<A)-1)+Ho[y],l+=A}var S=p[BB(r,l)&de],R=S>>4;S||tt(3),l+=S&15;var se=uc[R];if(R>3){var A=Qr[R];se+=BB(r,l)&(1<<A)-1,l+=A}if(l>k){a&&tt(0);break}o&&c(C+131072);var $=C+re;if(C<se){var G=B-se,P=Math.min(se,$);for(G+C<0&&tt(3);C<P;++C)t[C]=n[G+C]}for(;C<$;++C)t[C]=t[C-se]}}e.l=h,e.p=W,e.b=C,e.f=u,h&&(u=1,e.m=f,e.d=p,e.n=w)}while(!u);return C!=t.length&&i?Vn(t,0,C):t.subarray(0,C)},pt=function(r,e,t){t<<=e&7;var n=e/8|0;r[n]|=t,r[n+1]|=t>>8},qn=function(r,e,t){t<<=e&7;var n=e/8|0;r[n]|=t,r[n+1]|=t>>8,r[n+2]|=t>>16},iB=function(r,e){for(var t=[],n=0;n<r.length;++n)r[n]&&t.push({s:n,f:r[n]});var s=t.length,B=t.slice();if(!s)return{t:Jo,l:0};if(s==1){var i=new we(t[0].s+1);return i[t[0].s]=1,{t:i,l:1}}t.sort(function(I,v){return I.f-v.f}),t.push({s:-1,f:25001});var o=t[0],a=t[1],c=0,u=1,l=2;for(t[0]={s:-1,f:o.f+a.f,l:o,r:a};u!=s-1;)o=t[t[c].f<t[l].f?c++:l++],a=t[c!=u&&t[c].f<t[l].f?c++:l++],t[u++]={s:-1,f:o.f+a.f,l:o,r:a};for(var C=B[0].s,n=1;n<s;++n)B[n].s>C&&(C=B[n].s);var h=new _e(C+1),p=uB(t[u-1],h,0);if(p>e){var n=0,f=0,w=p-e,k=1<<w;for(B.sort(function(v,L){return h[L.s]-h[v.s]||v.f-L.f});n<s;++n){var E=B[n].s;if(h[E]>e)f+=k-(1<<p-h[E]),h[E]=e;else break}for(f>>=w;f>0;){var x=B[n].s;h[x]<e?f-=1<<e-h[x]++-1:++n}for(;n>=0&&f;--n){var O=B[n].s;h[O]==e&&(--h[O],++f)}p=e}return{t:new we(h),l:p}},uB=function(r,e,t){return r.s==-1?Math.max(uB(r.l,e,t+1),uB(r.r,e,t+1)):e[r.s]=t},Lo=function(r){for(var e=r.length;e&&!r[--e];);for(var t=new _e(++e),n=0,s=r[0],B=1,i=function(a){t[n++]=a},o=1;o<=e;++o)if(r[o]==s&&o!=e)++B;else{if(!s&&B>2){for(;B>138;B-=138)i(32754);B>2&&(i(B>10?B-11<<5|28690:B-3<<5|12305),B=0)}else if(B>3){for(i(s),--B;B>6;B-=6)i(8304);B>2&&(i(B-3<<5|8208),B=0)}for(;B--;)i(s);B=1,s=r[o]}return{c:t.subarray(0,n),n:e}},Wn=function(r,e){for(var t=0,n=0;n<e.length;++n)t+=r[n]*e[n];return t},_o=function(r,e,t){var n=t.length,s=CB(e+2);r[s]=n&255,r[s+1]=n>>8,r[s+2]=r[s]^255,r[s+3]=r[s+1]^255;for(var B=0;B<n;++B)r[s+B+4]=t[B];return(s+4+n)*8},No=function(r,e,t,n,s,B,i,o,a,c,u){pt(e,u++,t),++s[256];for(var l=iB(s,15),C=l.t,h=l.l,p=iB(B,15),f=p.t,w=p.l,k=Lo(C),E=k.c,x=k.n,O=Lo(f),I=O.c,v=O.n,L=new _e(19),b=0;b<E.length;++b)++L[E[b]&31];for(var b=0;b<I.length;++b)++L[I[b]&31];for(var m=iB(L,7),M=m.t,y=m.l,H=19;H>4&&!M[oB[H-1]];--H);var z=c+5<<3,j=Wn(s,kt)+Wn(B,Zn)+i,X=Wn(s,C)+Wn(B,f)+i+14+3*H+Wn(L,M)+2*L[16]+3*L[17]+7*L[18];if(a>=0&&z<=j&&z<=X)return _o(e,u,r.subarray(a,a+c));var ne,te,ae,se;if(pt(e,u,1+(X<j)),u+=2,X<j){ne=ot(C,h,0),te=C,ae=ot(f,w,0),se=f;var De=ot(M,y,0);pt(e,u,x-257),pt(e,u+5,v-1),pt(e,u+10,H-4),u+=14;for(var b=0;b<H;++b)pt(e,u+3*b,M[oB[b]]);u+=3*H;for(var de=[E,I],W=0;W<2;++W)for(var U=de[W],b=0;b<U.length;++b){var re=U[b]&31;pt(e,u,De[re]),u+=M[re],re>15&&(pt(e,u,U[b]>>5&127),u+=U[b]>>12)}}else ne=cc,te=kt,ae=fc,se=Zn;for(var b=0;b<o;++b){var A=n[b];if(A>255){var re=A>>18&31;qn(e,u,ne[re+257]),u+=te[re+257],re>7&&(pt(e,u,A>>23&31),u+=Yr[re]);var S=A&31;qn(e,u,ae[S]),u+=se[S],S>3&&(qn(e,u,A>>5&8191),u+=Qr[S])}else qn(e,u,ne[A]),u+=te[A]}return qn(e,u,ne[256]),u+te[256]},gc=new cB([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Jo=new we(0),mc=function(r,e,t,n,s,B){var i=B.z||r.length,o=new we(n+i+5*(1+Math.ceil(i/7e3))+s),a=o.subarray(n,o.length-s),c=B.l,u=(B.r||0)&7;if(e){u&&(a[0]=B.r>>3);for(var l=gc[e-1],C=l>>13,h=l&8191,p=(1<<t)-1,f=B.p||new _e(32768),w=B.h||new _e(p+1),k=Math.ceil(t/3),E=2*k,x=function(ue){return(r[ue]^r[ue+1]<<k^r[ue+2]<<E)&p},O=new cB(25e3),I=new _e(288),v=new _e(32),L=0,b=0,m=B.i||0,M=0,y=B.w||0,H=0;m+2<i;++m){var z=x(m),j=m&32767,X=w[z];if(f[j]=X,w[z]=j,y<=m){var ne=i-m;if((L>7e3||M>24576)&&(ne>423||!c)){u=No(r,a,0,O,I,v,b,M,H,m-H,u),M=L=b=0,H=m;for(var te=0;te<286;++te)I[te]=0;for(var te=0;te<30;++te)v[te]=0}var ae=2,se=0,De=h,de=j-X&32767;if(ne>2&&z==x(m-de))for(var W=Math.min(C,ne)-1,U=Math.min(32767,m),re=Math.min(258,ne);de<=U&&--De&&j!=X;){if(r[m+ae]==r[m+ae-de]){for(var A=0;A<re&&r[m+A]==r[m+A-de];++A);if(A>ae){if(ae=A,se=de,A>W)break;for(var S=Math.min(de,A-2),R=0,te=0;te<S;++te){var $=m-de+te&32767,G=f[$],P=$-G&32767;P>R&&(R=P,X=$)}}}j=X,X=f[j],de+=j-X&32767}if(se){O[M++]=268435456|aB[ae]<<18|To[se];var q=aB[ae]&31,Q=To[se]&31;b+=Yr[q]+Qr[Q],++I[257+q],++v[Q],y=m+ae,++L}else O[M++]=r[m],++I[r[m]]}}for(m=Math.max(m,y);m<i;++m)O[M++]=r[m],++I[r[m]];u=No(r,a,c,O,I,v,b,M,H,m-H,u),c||(B.r=u&7|a[u/8|0]<<3,u-=7,B.h=w,B.p=f,B.i=m,B.w=y)}else{for(var m=B.w||0;m<i+c;m+=65535){var oe=m+65535;oe>=i&&(a[u/8|0]=c,oe=i),u=_o(a,u+1,r.subarray(m,oe))}B.i=i}return Vn(o,0,n+CB(u)+s)};var Ec=function(r,e,t,n,s){if(!s&&(s={l:1},e.dictionary)){var B=e.dictionary.subarray(-32768),i=new we(B.length+r.length);i.set(B),i.set(r,B.length),r=i,s.w=B.length}return mc(r,e.level==null?6:e.level,e.mem==null?s.l?Math.ceil(Math.max(8,Math.min(13,Math.log(r.length)))*1.5):20:12+e.mem,t,n,s)};function Uo(r,e){return Ec(r,e||{},0,0)}var Ko=(function(){function r(e,t){typeof e=="function"&&(t=e,e={}),this.ondata=t;var n=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:n?n.length:0},this.o=new we(32768),this.p=new we(0),n&&this.o.set(n)}return r.prototype.e=function(e){if(this.ondata||tt(5),this.d&&tt(4),!this.p.length)this.p=e;else if(e.length){var t=new we(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},r.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,n=dc(this.p,this.s,this.o);this.ondata(Vn(n,t,this.s.b),this.d),this.o=Vn(n,this.s.b-32768),this.s.b=this.o.length,this.p=Vn(this.p,this.s.p/8|0),this.s.p&=7},r.prototype.push=function(e,t){this.e(e),this.c(t)},r})();var Dc=typeof TextDecoder<"u"&&new TextDecoder,bc=0;try{Dc.decode(Jo,{stream:!0}),bc=1}catch{}var wc=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),at=(r,e)=>r>>>e|r<<32-e;function jo(r){return Array.from(xc(new TextEncoder().encode(r)),e=>e.toString(16).padStart(8,"0")).join("")}function xc(r){let e=r.length*8,t=new Uint8Array(r.length+9+63>>6<<6);t.set(r),t[r.length]=128;let n=new DataView(t.buffer);n.setUint32(t.length-8,Math.floor(e/4294967296)),n.setUint32(t.length-4,e>>>0);let s=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),B=new Uint32Array(64);for(let i=0;i<t.length;i+=64){for(let f=0;f<16;f++)B[f]=n.getUint32(i+f*4);for(let f=16;f<64;f++){let w=at(B[f-15],7)^at(B[f-15],18)^B[f-15]>>>3,k=at(B[f-2],17)^at(B[f-2],19)^B[f-2]>>>10;B[f]=B[f-16]+w+B[f-7]+k>>>0}let[o,a,c,u,l,C,h,p]=[s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7]];for(let f=0;f<64;f++){let w=at(l,6)^at(l,11)^at(l,25),k=l&C^~l&h,E=p+w+k+wc[f]+B[f]>>>0,x=at(o,2)^at(o,13)^at(o,22),O=o&a^o&c^a&c,I=x+O>>>0;p=h,h=C,C=l,l=u+E>>>0,u=c,c=a,a=o,o=E+I>>>0}s[0]=s[0]+o>>>0,s[1]=s[1]+a>>>0,s[2]=s[2]+c>>>0,s[3]=s[3]+u>>>0,s[4]=s[4]+l>>>0,s[5]=s[5]+C>>>0,s[6]=s[6]+h>>>0,s[7]=s[7]+p>>>0}return s}var qr=/[ \t]/,zo=/[A-Za-z0-9_]/,vc=/^[ \t]*(function[ \t]+[^\s()]+([ \t]*\([ \t]*\))?|[^\s()=;&|<>]+[ \t]*\([ \t]*\))[ \t]*$/;function kc(r,e){let t=e,n=r[t]==="-";for(n&&t++;t<r.length&&qr.test(r[t]);)t++;let s="";for(;t<r.length&&!/[\s;&|<>()]/.test(r[t]);){let B=r[t];if(B==="'"||B==='"'){let i=r.indexOf(B,t+1);if(i<0)return;let o=r.slice(t+1,i);s+=B==='"'?o.replace(/\\([\\"$`])/g,"$1"):o,t=i+1}else B==="\\"?(s+=r[t+1]??"",t+=2):(s+=B,t++)}return s===""?void 0:{word:s,strip:n,end:t}}var fB=class{quote="";stack=[];heredocs=[];inHeredoc=!1;cont=!1;open(){return this.quote!==""||this.stack.length>0||this.heredocs.length>0||this.cont}line(e){if(this.inHeredoc){let o=this.heredocs[0];return(o.strip?e.replace(/^\t+/,""):e)===o.word&&this.heredocs.shift(),this.inHeredoc=this.heredocs.length>0,!0}this.cont=!1;let t=this.quote!=="",n=this.quote==="",s="",B=e.length,i=0;for(;i<B;){let o=e[i];if(this.quote==="'"||this.quote==="$'"){o==="\\"&&this.quote==="$'"?i++:o==="'"&&(this.quote=""),i++;continue}if(this.quote==='"'||this.quote==="`"){o==="\\"?(i===B-1&&(this.cont=!0),i++):o===this.quote&&(this.quote=""),i++;continue}if(qr.test(o)){i++;continue}if(o==="#"&&(i===0||/[\s;&|()]/.test(e[i-1])))break;if(t=!0,o==="\\"){i===B-1&&(this.cont=!0),s="",n=!1,i+=2;continue}if(o==="'"||o==='"'||o==="`")this.quote=o;else if(o==="$"&&e[i+1]==="'")this.quote="$'",i++;else if(o==="<"&&e.startsWith("<<",i)&&e[i+2]!=="<"){let a=kc(e,i+2);if(a){this.heredocs.push({word:a.word,strip:a.strip}),i=a.end,s="x",n=!1;continue}}else if(o==="("||o===")")this.top()!=="case"&&(o==="("?this.stack.push("("):this.top()==="("&&this.stack.pop());else if(o==="{")this.stack.push("{");else if(o==="}")this.top()==="{"&&this.stack.pop();else if(n&&zo.test(o)){let a=i;for(;a<B&&zo.test(e[a]);)a++;let c=e.slice(i,a);if((a===B||/[\s;&|()<>]/.test(e[a]))&&this.keyword(c)){i=a,s=c;continue}i=a,s=c,n=!1;continue}n=o===";"||o==="&"||o==="|"||o==="("||o==="{"||o==="}"||o==="!",s=(s+o).slice(-2),i++}return this.quote===""&&(s.endsWith("|")||s.endsWith("&&"))&&(this.cont=!0),this.quote===""&&vc.test(e.replace(/[ \t]+#.*$/,""))&&(this.cont=!0),this.inHeredoc=this.heredocs.length>0,t}top(){return this.stack[this.stack.length-1]}keyword(e){switch(e){case"if":case"case":return this.stack.push(e),!0;case"for":case"while":case"until":case"select":return this.stack.push("loop"),!0;case"fi":case"esac":case"done":{let t=e==="fi"?"if":e==="esac"?"case":"loop";return this.top()===t&&this.stack.pop(),!0}case"then":case"do":case"else":case"elif":case"in":case"function":case"time":return!0;default:return!1}}},hB=class{quote="";blockComment=!1;depth=0;cont=!1;open(){return this.quote!==""||this.blockComment||this.depth>0||this.cont}line(e){if(this.cont=!1,this.quote==="@'"||this.quote==='@"')return e.startsWith(this.quote[1]+"@")&&(this.quote=""),!0;let t=this.quote!=="",n="",s=e.length,B=0;for(;B<s;){let i=e[B];if(this.blockComment){e.startsWith("#>",B)?(this.blockComment=!1,B+=2):B++;continue}if(this.quote==="'"){(i==="'"||i==="\u2018"||i==="\u2019")&&(e[B+1]===i?B++:this.quote=""),B++;continue}if(this.quote==='"'){i==="`"?B++:i==='"'&&(e[B+1]==='"'?B++:this.quote=""),B++;continue}if(qr.test(i)){B++;continue}if(e.startsWith("<#",B)){this.blockComment=!0,B+=2;continue}if(i==="#")break;if(t=!0,i==="`"){B===s-1&&(this.cont=!0),n="`",B+=2;continue}if(i==="@"&&(e[B+1]==="'"||e[B+1]==='"')&&e.slice(B+2).trim()==="")return this.quote=e[B+1]==="'"?"@'":'@"',!0;i==="'"||i==='"'||i==="\u2018"||i==="\u2019"?this.quote=i==='"'?'"':"'":i==="("||i==="{"||i==="["?this.depth++:(i===")"||i==="}"||i==="]")&&this.depth>0&&this.depth--,n=(n+i).slice(-4),B++}return this.quote===""&&!this.blockComment&&/(\||,|(?<![=!<>+\-*/%])=|&&|\|\||-and|-or)$/i.test(n)&&(this.cont=!0),t}},pB=class{depth=0;cont=!1;open(){return this.depth>0||this.cont}line(e){if(this.cont=!1,this.depth===0&&/^[ \t]*(@?rem([ \t].*)?$|:)/i.test(e))return!1;let t=!1,n=!1;for(let s=0;s<e.length;s++){let B=e[s];if(qr.test(B)||(n=!0),B==='"')t=!t;else{if(t)continue;B==="^"?(s===e.length-1&&(this.cont=!0),s++):B==="("?this.depth++:B===")"&&this.depth>0&&this.depth--}}return n}};function Oc(r){return r==="pwsh"?new hB:r==="cmd"?new pB:new fB}function Sc(r,e){return r==="pwsh"&&/^[ \t]*(\||(else|elseif|catch|finally)\b)/i.test(e)}function Yo(r,e){let t=$t(r),n=Oc(e),s=[],B,i=a=>{s.push({start:B,end:a,text:t.slice(B,a+1).map((c,u,l)=>c.text+(u<l.length-1?c.eol:"")).join("")}),B=void 0},o=a=>t.slice(a+1).find(c=>c.text.trim()!=="")?.text;for(let a=0;a<t.length;a++){let c=n.line(t[a].text);if(B===void 0){if(!c)continue;B=a}if(n.open())continue;let u=o(a);u!==void 0&&Sc(e,u)||i(a)}if(B!==void 0){let a=t.length-1;for(;a>B&&t[a].text.trim()==="";)a--;i(a)}return s}var gB="md-runbook",qo="md-runbook-manifest 1",Wo=/^[A-Za-z0-9][A-Za-z0-9._/-]{0,99}$/,Ac=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Rc=/^\d{4}-\d{2}-\d{2}$/,Fc=r=>Rc.test(r)&&new Date(`${r}T00:00:00Z`).toISOString().slice(0,10)===r;function Qo(r){return/^(PATH|IFS|ENV|BASH_ENV|CDPATH|GLOBIGNORE|HOME|SHELL|SHELLOPTS|BASHOPTS|PS[1-4]|PROMPT_COMMAND|PWD|OLDPWD|TMPDIR|LANG|LANGUAGE)$/.test(r)||/^(LC_|LD_|DYLD_|BASH_FUNC_|__mdrb_|MD_RUNBOOK_GATE_)/.test(r)}var yc=/\\[dDwWsSbB1-9]|\(\?|[*+?}]\?/,Xn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Ot(r){let e=new TextEncoder().encode(r),t="";for(let n=0;n<e.length;n+=3){let s=e[n],B=e[n+1],i=e[n+2];t+=Xn[s>>2]+Xn[(s&3)<<4|(B??0)>>4],t+=B===void 0?"=":Xn[(B&15)<<2|(i??0)>>6],t+=i===void 0?"=":Xn[i&63]}return t}function Vo(r){if(r.length%4!==0||!/^[A-Za-z0-9+/]*={0,2}$/.test(r))return;let e=r.endsWith("==")?2:r.endsWith("=")?1:0,t=new Uint8Array(r.length/4*3-e),n=0;for(let B=0;B<r.length;B+=4){let i=[0,1,2,3].map(a=>r[B+a]==="="?0:Xn.indexOf(r[B+a])),o=i[0]<<18|i[1]<<12|i[2]<<6|i[3];for(let a of[o>>16,o>>8&255,o&255])n<t.length&&(t[n++]=a)}let s=new TextDecoder().decode(t);return Ot(s)===r?s:void 0}function dB(r){let e=[];return Ee(r).cells.forEach((t,n)=>{t.kind!=="code"||!pe(t.meta)||Ae(t.languageId)==="bash"&&e.push({index:n,info:t.meta.info.trim(),value:t.value})}),e}function Ic(r){let e=[],t=null,n=!1;return r.split(/\r?\n/).forEach((s,B)=>{if(t){Ne(s,t)&&(/^( {4}|\t| {0,3}\t)/.test(s)&&e.push(`line ${B+1}: a closing fence indented 4 spaces or more (indent fences less, so GitHub shows the same blocks)`),t=null);return}let i=Se(s);if(i){/^( {4}|\t| {0,3}\t)/.test(i.indent)&&e.push(`line ${B+1}: a fence indented 4 spaces or more (indent fences less, so GitHub shows the same blocks)`),n&&Ae(wt(i.info))==="bash"&&e.push(`line ${B+1}: a bash block inside an HTML comment (<!-- \u2026 -->) is hidden on GitHub but would be signed`),t=i;return}for(let o of s.matchAll(/<!--|-->/g))n=o[0]==="<!--"}),e}function mB(r,e){let t=[];Wo.test(e.name)||t.push(`name "${e.name}": use letters, digits and . _ / - (at most 100)`),(!Number.isInteger(e.version)||e.version<1)&&t.push(`version ${e.version}: expected a positive whole number`),e.expires!==void 0&&!Fc(e.expires)&&t.push(`expires ${e.expires}: expected a date, YYYY-MM-DD`);for(let a of e.scopes)Ac.test(a)||t.push(`scope "${a}": use letters, digits and . _ - (at most 64)`);for(let[a,c]of Object.entries(e.patterns))ft.test(a)?Qo(a)&&t.push(`\${param:${a}}: ${a} can't be a parameter of a signed runbook (it changes how the shell runs the code)`):t.push(`pattern for "${a}": not a parameter name`),c===""||/[\r\n]/.test(c)?t.push(`pattern for ${a}: empty or more than one line`):yc.test(c)&&t.push(`pattern for ${a}: ${c} uses JavaScript-only syntax (\\d, \\w, (?\u2026), lazy *?, back-references); servers check it with grep -E: use [0-9], [A-Za-z0-9_], \u2026`);t.push(...Ic(ta(r)));let n=Xe(r)?.shell?.unix;n&&n!=="bash"&&t.push(`front matter shell: ${n}: servers run signed runbooks in bash; remove it, or write shell: bash`);let s=new Set;for(let a of dB(r))for(let c of ve(a.info).checks?.captures??[])c.secret&&s.add(c.name);let B=[];for(let a of dB(r)){let c=B.length+1,u=`cell ${c} (${a.value.split(`
|
|
89
|
+
`)[0]?.slice(0,40)??""})`,l=ve(a.info);for(let p of l.errors)t.push(`${u}: invalid option ${p}`);let C=[];try{for(let p of Ze(a.value)){let f=`\${${p.kind}:${p.name}${p.kind==="input"&&p.secret?":secret":""}}`;p.kind==="secret"?t.push(`${u}: ${f} can't be signed (servers log the values signed cells get)`):p.secret?t.push(`${u}: ${f} can't be signed: a secret input would be in the servers' logs`):p.kind==="out"&&s.has(p.name)?t.push(`${u}: ${f} comes from capture-secret= and can't be signed (servers log the values)`):e.patterns[p.name]===void 0?t.push(`${u}: ${f} needs a pattern (--pattern ${p.name}=REGEX)`):C.includes(p.name)||C.push(p.name)}}catch(p){t.push(`${u}: ${p instanceof Error?p.message:String(p)}`)}for(let p of a.value.matchAll(/\$\{(secret|input|param|out):[^}\s]*/g))/^\$\{((secret|param|out):[A-Za-z_][A-Za-z0-9_]*|input:[A-Za-z_][A-Za-z0-9_]*(:secret)?)$/.test(p[0])||t.push(`${u}: ${p[0]}} is not a plain \${${p[1]}:NAME} and can't be signed`);let h=zt(l.kubeContext);h!==void 0&&e.patterns[h]===void 0&&t.push(`${u}: kube-context=\${param:${h}} needs a pattern (--pattern ${h}=REGEX)`);for(let[p,f]of Object.entries(l.env))ft.test(p)?Qo(p)&&t.push(`${u}: env.${p} can't be set by a signed runbook (it changes how the shell runs the code)`):t.push(`${u}: env.${p} is not a variable name`),/\$\{(secret|input|param|out):/.test(f)&&t.push(`${u}: env.${p} can't use placeholders in a signed runbook`);B.push({n:c,lines:l.lines==="any"?"any":"all",info:a.info,code:fn(a.value,"bash"),needs:C,...l.cwd!==void 0?{cwd:l.cwd}:{},env:l.env,steps:Yo(a.value,"bash").map(p=>fn(p.text,"bash"))})}if(B.length===0&&t.push("no bash or sh cells to sign"),t.length>0)return{errors:t};let i=new Set(B.flatMap(a=>a.needs)),o=Object.fromEntries(Object.entries(e.patterns).filter(([a])=>i.has(a)));return{manifest:{...e,scopes:[...new Set(e.scopes)],patterns:o,cells:B}}}function EB(r){let e=[qo,`name ${r.name}`,`version ${r.version}`];r.expires&&e.push(`expires ${r.expires}`),r.scopes.length>0&&e.push(`scope ${r.scopes.join(" ")}`);for(let[t,n]of Object.entries(r.patterns))e.push(`param ${t} ${Ot(n)}`);for(let t of r.cells){e.push(`cell ${t.n} ${t.lines}`,`info ${Ot(t.info)}`,`code ${Ot(t.code)}`);for(let n of t.needs)e.push(`needs ${n}`);t.cwd!==void 0&&e.push(`cwd ${Ot(t.cwd)}`);for(let[n,s]of Object.entries(t.env))e.push(`env ${n} ${Ot(s)}`);for(let n of t.steps)e.push(`step ${Ot(n)}`)}return e.push("end"),e.join(`
|
|
90
|
+
`)+`
|
|
91
|
+
`}function er(r){let e=r.split(`
|
|
92
|
+
`);if(e[0]!==qo)throw new Error("not an md-runbook manifest (or a newer version)");let t={name:"",version:0,scopes:[],patterns:{},cells:[]},n,s=(o,a)=>{let c=o===void 0?void 0:Vo(o);if(c===void 0)throw new Error(`manifest: bad ${a}`);return c},B=o=>{if(!n)throw new Error(`manifest: ${o} outside a cell`);return n},i=!1;for(let o of e.slice(1)){if(i){if(o!=="")throw new Error("manifest: text after end");continue}if(o==="")continue;let[a,c,u,...l]=o.split(" ");if(l.length>0&&a!=="scope")throw new Error(`manifest: bad line "${o.slice(0,40)}"`);switch(a){case"name":t.name=c??"";break;case"version":t.version=Number(c);break;case"expires":t.expires=c;break;case"scope":t.scopes=o.split(" ").slice(1);break;case"param":t.patterns[c??""]=s(u,"pattern");break;case"cell":n={n:Number(c),lines:u==="any"?"any":"all",info:"",code:"",needs:[],env:{},steps:[]},t.cells.push(n);break;case"info":B("info").info=s(c,"info");break;case"code":B("code").code=s(c,"code");break;case"needs":B("needs").needs.push(c??"");break;case"cwd":B("cwd").cwd=s(c,"cwd");break;case"env":B("env").env[c??""]=s(u,"env");break;case"step":B("step").steps.push(s(c,"step"));break;case"end":i=!0;break;default:throw new Error(`manifest: unknown item "${a}"`)}}if(!i)throw new Error("manifest: no end");if(!Wo.test(t.name)||!Number.isInteger(t.version)||t.version<1)throw new Error("manifest: bad name or version");return t}var Tc=/^<!-- md-runbook:signature v1 signer=(\S+) signed=(\d{4}-\d{2}-\d{2})\r?\nmanifest\r?\n([A-Za-z0-9+/=\r\n]+?)\r?\nsignature\r?\n([A-Za-z0-9+/=\r\n]+?)((?:\r?\ncosign signer=\S+ signed=\d{4}-\d{2}-\d{2}\r?\n[A-Za-z0-9+/=\r\n]+?)*)\r?\n-->[ \t]*$/m,Lc=/cosign signer=(\S+) signed=(\d{4}-\d{2}-\d{2})\r?\n([A-Za-z0-9+/=\r\n]+?)(?=\r?\ncosign |$)/g,Wr=r=>r.replace(/.{1,76}/g,`$&
|
|
93
|
+
`).trimEnd(),St=r=>r.replace(/[^\w@.+-]+/g,"_").replace(/-{2,}/g,"-")||"unknown";function Nc(r){return`<!-- md-runbook:signature v1 signer=${St(r.signer)} signed=${r.signed}
|
|
94
|
+
manifest
|
|
95
|
+
${Wr(Ot(r.manifest))}
|
|
96
|
+
signature
|
|
97
|
+
${Wr(r.signature)}
|
|
98
|
+
`+(r.cosigners??[]).map(e=>`cosign signer=${St(e.signer)} signed=${e.signed}
|
|
99
|
+
${Wr(e.signature)}
|
|
100
|
+
`).join("")+"-->"}function Zo(r){let e=new Set,t=null,n=0;for(let i of r.split(`
|
|
101
|
+
`)){let o=i.replace(/\r$/,"");t?(e.add(n),Ne(o,t)&&(t=null)):t=Se(o),n+=i.length+1}let s=new RegExp(Tc.source,"gm"),B;for(let i=s.exec(r);i;i=s.exec(r))e.has(i.index)||(B=i);return B}function DB(r){let e=Zo(r);if(!e)return;let t=Vo(e[3].replace(/\s+/g,""));if(t===void 0)return;let n=[...(e[5]??"").trim().matchAll(Lc)].map(s=>({signer:s[1],signed:s[2],signature:s[3].replace(/\s+/g,"")}));return{signer:e[1],signed:e[2],manifest:t,signature:e[4].replace(/\s+/g,""),...n.length?{cosigners:n}:{}}}function Xo(r,e){let t;try{t=er(e.manifest)}catch{return!1}let n=mB(r,{name:t.name,version:t.version,...t.expires?{expires:t.expires}:{},scopes:t.scopes,patterns:t.patterns});return!("errors"in n)&&EB(n.manifest)===e.manifest}function ea(r){return[r.signature,...(r.cosigners??[]).map(e=>e.signature)]}function bB(r){return[r.signer,...(r.cosigners??[]).map(e=>e.signer)]}function ta(r){let e=Zo(r);return e?r.slice(0,e.index).replace(/(\r?\n)[ \t]*(\r?\n)+$/,"$1")+r.slice(e.index+e[0].length).replace(/^\r?\n/,""):r}function wB(r,e){let t=ta(r),n=/\r\n/.test(t)?`\r
|
|
102
|
+
`:`
|
|
103
|
+
`,s=Nc(e).replace(/\n/g,n),B=t.replace(/(\r?\n)*$/,"");return(B===""?"":B+n+n)+s+n}function na(r){return`-----BEGIN SSH SIGNATURE-----
|
|
104
|
+
${Wr(r)}
|
|
105
|
+
-----END SSH SIGNATURE-----
|
|
106
|
+
`}function ra(r){let e=/-----BEGIN SSH SIGNATURE-----([\s\S]*?)-----END SSH SIGNATURE-----/.exec(r);if(!e)throw new Error("not an SSH signature");return e[1].replace(/\s+/g,"")}function At(r){let e=DB(r);if(!e)return;let t;try{t=er(e.manifest)}catch{return}let n=[...t.cells],s=new Map,B=[],i=[],o=0;for(let a of dB(r)){let c=fn(a.value,"bash"),u=n.findIndex(C=>C.info===a.info&&C.code===c);if(u<0){B.push(a.index);continue}let l=n.splice(u,1)[0];s.set(a.index,{n:l.n,lines:l.lines,steps:l.steps,needs:l.needs}),l.n<o&&i.push(a.index),o=Math.max(o,l.n)}return{block:e,manifest:t,cells:s,changed:B,missing:n.map(a=>a.n),moved:i}}var Zr="mdrunbook://open",$c=256*1024,Gc=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Mc=/^[0-9a-f]{64}$/;function Vr(r){let e;try{e=new URL(r.trim())}catch{return{ok:!1,problem:"not-a-link"}}let t=e.searchParams;if(!(e.protocol==="mdrunbook:"||e.protocol==="https:"&&/\/open\/?$/.test(e.pathname)&&(t.has("url")||t.has("rb"))))return e.protocol==="https:"?{ok:!0,link:{url:e.toString(),params:{}}}:{ok:!1,problem:"not-a-link"};let s={params:{}},B=t.get("url"),i=t.get("rb");if(B!==null&&i!==null)return{ok:!1,problem:"both"};if(B!==null){try{if(new URL(B).protocol!=="https:")return{ok:!1,problem:"not-https"}}catch{return{ok:!1,problem:"not-https"}}s.url=B}else if(i!==null){let c=Pc(i);if(typeof c!="string")return{ok:!1,problem:c.problem};s.text=c}else return{ok:!1,problem:"no-runbook"};let o=t.get("sha256");if(o!==null){if(!Mc.test(o.toLowerCase()))return{ok:!1,problem:"bad-sha256"};s.sha256=o.toLowerCase()}let a=t.get("host");if(a!==null){if(!Gc.test(a))return{ok:!1,problem:"bad-host"};s.host=a}for(let[c,u]of t){if(!c.startsWith("p."))continue;let l=c.slice(2);if(!ft.test(l)||/[\r\n]/.test(u))return{ok:!1,problem:"bad-param"};s.params[l]=u}return t.get("action")==="cosign"&&(s.action="cosign"),{ok:!0,link:s}}function nr(r,e=Zr){let t=[],n=(s,B)=>t.push(`${encodeURIComponent(s)}=${encodeURIComponent(B)}`);r.url!==void 0?n("url",r.url):r.text!==void 0&&n("rb",oa(r.text)),r.sha256&&n("sha256",r.sha256),r.host&&n("host",r.host);for(let[s,B]of Object.entries(r.params))n(`p.${s}`,B);return r.action&&n("action",r.action),`${e}?${t.join("&")}`}var sa="vscode://smojon.md-runbook/open",Hc=/[&=#+%]/;function Ba(r){return[r.url,r.text!==void 0?oa(r.text):void 0,r.sha256,r.host,...Object.entries(r.params).flat()].some(t=>t!==void 0&&Hc.test(t))?`${sa}?link=${encodeURIComponent(nr(r))}`:nr(r,sa)}function ia(r){if(r.startsWith("link="))return Vr(r.slice(5));let e=r.split("&").map(t=>{let n=t.indexOf("=");return n<0?encodeURIComponent(t):`${encodeURIComponent(t.slice(0,n))}=${encodeURIComponent(t.slice(n+1))}`});return Vr(`${Zr}?${e.join("&")}`)}function rr(r){return jo(r.replace(/^/,""))}function oa(r){return _c(Uo(new TextEncoder().encode(r),{level:9}))}function Pc(r){let e;try{e=Jc(r)}catch{return{problem:"bad-text"}}let t=[],n=0,s=!1,B=new Ko(a=>{n+=a.length,n>$c?s=!0:t.push(a)});try{for(let a=0;a<e.length&&!s;a+=4096)B.push(e.subarray(a,a+4096),a+4096>=e.length)}catch{return{problem:"bad-text"}}if(s)return{problem:"too-large"};let i=new Uint8Array(n),o=0;for(let a of t)i.set(a,o),o+=a.length;try{return new TextDecoder().decode(i)}catch{return{problem:"bad-text"}}}var tr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function _c(r){let e="";for(let t=0;t<r.length;t+=3){let n=r[t]<<16|(r[t+1]??0)<<8|(r[t+2]??0);e+=tr[n>>18&63]+tr[n>>12&63],t+1<r.length&&(e+=tr[n>>6&63]),t+2<r.length&&(e+=tr[n&63])}return e}function Jc(r){let e=r.replace(/=+$/,"").replace(/\+/g,"-").replace(/\//g,"_");if(/[^A-Za-z0-9_-]/.test(e)||e.length%4===1)throw new Error("not base64url");let t=new Uint8Array(Math.floor(e.length*3/4)),n=0,s=0,B=0;for(let i of e)s=s<<6|tr.indexOf(i),n+=6,n>=8&&(n-=8,t[B++]=s>>n&255);return t}var aa="[A-Za-z0-9+/=\\r\\n]+?",ua=new RegExp(`^<!-- md-runbook:record-signature v1 signer=(\\S+) signed=(\\S+) sha256=([0-9a-f]{64})\\r?\\nsignature\\r?\\n(${aa})((?:\\r?\\ncosign signer=\\S+ signed=\\S+\\r?\\n${aa})*)\\r?\\n-->[ \\t]*$`,"m"),Uc=/cosign signer=(\S+) signed=(\S+)\r?\n([A-Za-z0-9+/=\r\n]+?)(?=\r?\ncosign |$)/g,la=r=>r.replace(/.{1,76}/g,`$&
|
|
107
|
+
`).trimEnd();function xB(r){return`md-runbook run record v1
|
|
108
|
+
sha256 ${r}
|
|
109
|
+
`}function Kc(r){let e=ua.exec(r);if(!e)return;let t=[...(e[5]??"").trim().matchAll(Uc)].map(n=>({signer:n[1],signed:n[2],signature:n[3].replace(/\s+/g,"")}));return{signer:e[1],signed:e[2],sha256:e[3],signature:e[4].replace(/\s+/g,""),...t.length?{cosigners:t}:{}}}function ca(r){let e=ua.exec(r);return e?r.slice(0,e.index).replace(/(\r?\n)[ \t]*(\r?\n)+$/,"$1")+r.slice(e.index+e[0].length).replace(/^\r?\n/,""):r}function Xr(r){return rr(ca(r))}function jc(r){return`<!-- md-runbook:record-signature v1 signer=${St(r.signer)} signed=${r.signed} sha256=${r.sha256}
|
|
110
|
+
signature
|
|
111
|
+
${la(r.signature)}
|
|
112
|
+
`+(r.cosigners??[]).map(e=>`cosign signer=${St(e.signer)} signed=${e.signed}
|
|
113
|
+
${la(e.signature)}
|
|
114
|
+
`).join("")+"-->"}function Ca(r,e){let t=ca(r),n=/\r\n/.test(t)?`\r
|
|
115
|
+
`:`
|
|
116
|
+
`;return`${t.replace(/(\r?\n)*$/,"")}${n}${n}${jc(e).replace(/\n/g,n)}${n}`}function sr(r){let e=Kc(r);return e?{block:e,unchanged:Xr(r)===e.sha256}:void 0}var dn=r=>[r.signer,...(r.cosigners??[]).map(e=>e.signer)];function fa(r,e){return{...r,cosigners:[...(r.cosigners??[]).filter(t=>t.signer!==St(e.signer)),e]}}function vB(r,e,t){return r===void 0?"none":t==="failed"?"fail":t==="ok"||r==="0"||r==="done"?e===void 0?"ok":"none":r==="running"||r==="declined"||r==="proposed"?"none":r==="skipped"?"skip":"fail"}function zc(r,e,t){if(e!==void 0&&vB(r,e,t)==="none")return`<span class="badge none">${Z(`\u2013 lines ${e} ran`)}</span>`;if(t==="failed")return`<span class="badge fail">${Z("\u2717 check failed")}</span>`;if(t==="ok")return`<span class="badge ok">${Z(`\u2713 ${/^-?\d+$/.test(r??"")?`exit ${r}`:r??""}`)}</span>`;let n=vB(r),s=r!==void 0&&!/^-?\d+$/.test(r),B=n==="none"?s?`\u2013 ${r}`:"not run":n==="ok"?s?`\u2713 ${r}`:"\u2713 exit 0":n==="skip"?"\u2013 skipped":`\u2717 ${/^-?\d+$/.test(r)?`exit ${r}`:r}`;return`<span class="badge ${n}">${Z(B)}</span>`}function Yc(r){let e;for(let t of r.split(`
|
|
117
|
+
`)){let n=/^ {0,3}(`{3,}|~{3,})/.exec(t)?.[1];if(e!==void 0){n&&n[0]===e[0]&&n.length>=e.length&&t.trim()===n&&(e=void 0);continue}if(n){e=n;continue}let s=/^ {0,3}#{1,6}[ \t]+(.*?)(?:[ \t]+#+)?[ \t]*$/.exec(t);if(s?.[1])return s[1].replace(/[*_`]/g,"")}}function Qc(r){let e=r.split(`
|
|
118
|
+
`);if(e[0]?.replace(/^\uFEFF/,"").trimEnd()!=="---")return;let t=e.findIndex((n,s)=>s>0&&/^(---|\.\.\.)[ \t]*$/.test(n));if(!(t<0))return{yaml:e.slice(1,t).join(`
|
|
119
|
+
`),rest:e.slice(t+1).join(`
|
|
120
|
+
`)}}function kB(r,e){let t=Ee(r),n=k=>e.redact?e.redact(k):k,s,B="",i="",o=0,a={ok:0,fail:0,skip:0,none:0},c=k=>{let E=t.cells[k].meta;return pe(E)?ve(E.info).os:void 0},u=zn(t.cells.map((k,E)=>pe(k.meta)?{kind:"code",os:c(E)}:{kind:"markup"})),l=new Map;u.forEach((k,E)=>{if(!k)return;let x=l.get(k.group);(x===void 0||!t.cells[x].output&&t.cells[E].output)&&l.set(k.group,E)});let C=vt(t.cells.map((k,E)=>pe(k.meta)?{kind:"code",os:c(E)}:{kind:"markup"})),h=new Map;C.forEach((k,E)=>k!==void 0&&h.set(E,k)),o=Math.max(0,...C.filter(k=>k!==void 0));for(let[k,E]of t.cells.entries()){if(!pe(E.meta)){let z=E.value;if(k===0){let j=Qc(z);j&&(i+=`<div class="front-matter">${Ir(n(j.yaml),"front matter")}</div>
|
|
121
|
+
`,z=j.rest)}s??=Yc(z),i+=Gs(z,n);continue}let x=u[k],O=x!==void 0&&l.get(x.group)!==k,I=h.get(k),v=E.output?.attrs??{},L=O?"skip":vB(v.exit,v.lines,v.check);O||a[L]++;let b=O?`<span class="badge skip">${Z(`\u2013 for ${hn(c(k)??[])}`)}</span>`:zc(v.exit,v.lines,v.check),m=O?`step-${I}-${k}`:`step-${I}`,M=E.meta.lang,y=n(E.value),H=y.split(`
|
|
122
|
+
`).find(z=>z.trim()!=="")?.trim()??"";if(B+=`<tr class="${L}"><td><a href="#${m}">${I}</a></td><td><code>${Z(H)}</code></td><td>${Z(M)}</td><td>${b}</td><td>${Z(v.ran??"")}</td><td>${Z(v.duration??"")}</td></tr>
|
|
123
|
+
`,i+=`<section class="step ${L}" id="${m}">
|
|
124
|
+
<div class="step-head">Step ${I}${O?" (alternative)":""}</div>
|
|
125
|
+
`,i+=Ir(y,M),E.output){let z=[v.ran&&`ran ${v.ran}`,v.duration].filter(Boolean).map(j=>Z(j));i+=`<div class="output"><div class="output-head">${b} ${z.join(" \xB7 ")}</div><pre>${Z(n(We(E.output.text)))}</pre></div>
|
|
126
|
+
`}i+=`</section>
|
|
127
|
+
`}let p=s??e.fallbackTitle??"Runbook report",f=[`${o} step${o===1?"":"s"}`,`${a.ok} passed`,`${a.fail} failed`];a.skip&&f.push(`${a.skip} skipped`),a.none&&f.push(`${a.none} not run`);let w=qc(zr(r),sr(r),n);return`<!DOCTYPE html>
|
|
128
|
+
<html lang="en">
|
|
129
|
+
<head>
|
|
130
|
+
<meta charset="utf-8">
|
|
131
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'">
|
|
132
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
133
|
+
<meta name="generator" content="md-runbook">
|
|
134
|
+
<title>${Z(p)}</title>
|
|
135
|
+
<style>${OB}${w.pageCss}</style>
|
|
136
|
+
</head>
|
|
137
|
+
<body>
|
|
138
|
+
<header>
|
|
139
|
+
<h1 class="title">${xt(p)}</h1>
|
|
140
|
+
<p class="meta">Generated ${Z(Oe(e.generatedAt))} \xB7 ${f.join(" \xB7 ")}</p>
|
|
141
|
+
</header>
|
|
142
|
+
${w.html}<table class="summary">
|
|
143
|
+
<thead><tr><th>#</th><th>Command</th><th>Shell</th><th>Exit</th><th>Ran</th><th>Duration</th></tr></thead>
|
|
144
|
+
<tbody>
|
|
145
|
+
${B}</tbody>
|
|
146
|
+
</table>
|
|
147
|
+
<main>
|
|
148
|
+
${i}</main>
|
|
149
|
+
</body>
|
|
150
|
+
</html>
|
|
151
|
+
`}var OB=`
|
|
152
|
+
:root{--bg:#fff;--fg:#1f2328;--muted:#656d76;--border:#d0d7de;--code:#f6f8fa;--ok:#1a7f37;--fail:#cf222e;--skip:#9a6700;--link:#0969da}
|
|
153
|
+
@media (prefers-color-scheme:dark){:root{--bg:#0d1117;--fg:#e6edf3;--muted:#8d96a0;--border:#30363d;--code:#161b22;--ok:#3fb950;--fail:#f85149;--skip:#d29922;--link:#4493f8}}
|
|
154
|
+
*{box-sizing:border-box}
|
|
155
|
+
body{margin:0 auto;max-width:960px;padding:24px 16px;background:var(--bg);color:var(--fg);font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}
|
|
156
|
+
a{color:var(--link)}
|
|
157
|
+
.meta{color:var(--muted);margin-top:-8px}
|
|
158
|
+
h1,h2,h3{border-bottom:1px solid var(--border);padding-bottom:.25em}
|
|
159
|
+
h1.title{border:0}
|
|
160
|
+
code,pre{font:13px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
|
|
161
|
+
:not(pre)>code{background:var(--code);padding:.1em .35em;border-radius:4px}
|
|
162
|
+
@media print{:root{--bg:#fff;--fg:#1f2328;--muted:#656d76;--border:#d0d7de;--code:#f6f8fa;--ok:#1a7f37;--fail:#cf222e;--skip:#9a6700;--link:#0969da}body{max-width:none;padding:0;font-size:12px}pre{white-space:pre-wrap;overflow-wrap:anywhere}tr,.step-head{break-inside:avoid}.step-head{break-after:avoid}}
|
|
163
|
+
pre{background:var(--code);border:1px solid var(--border);border-radius:6px;padding:10px 12px;overflow:auto;margin:0;white-space:pre}
|
|
164
|
+
.code{position:relative;margin:12px 0}
|
|
165
|
+
.lang{position:absolute;top:4px;right:8px;font-size:11px;color:var(--muted)}
|
|
166
|
+
table{border-collapse:collapse;margin:12px 0;width:100%}
|
|
167
|
+
th,td{border:1px solid var(--border);padding:4px 8px;text-align:left;vertical-align:top}
|
|
168
|
+
.summary td:nth-child(2){max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
169
|
+
.badge{display:inline-block;font-size:12px;font-weight:600;padding:0 8px;border-radius:10px;border:1px solid currentColor;white-space:nowrap}
|
|
170
|
+
.badge.ok{color:var(--ok)}.badge.fail{color:var(--fail)}.badge.skip{color:var(--skip)}.badge.none{color:var(--muted)}
|
|
171
|
+
.step{border-left:3px solid var(--border);padding-left:12px;margin:20px 0}
|
|
172
|
+
.step.ok{border-color:var(--ok)}.step.fail{border-color:var(--fail)}.step.skip{border-color:var(--skip)}
|
|
173
|
+
.step-head{font-weight:600;color:var(--muted);font-size:13px}
|
|
174
|
+
.output-head{margin:6px 0 4px;color:var(--muted);font-size:13px}
|
|
175
|
+
.output pre{white-space:pre-wrap;word-break:break-word}
|
|
176
|
+
li.task{list-style:none}
|
|
177
|
+
blockquote{margin:0;padding:0 1em;color:var(--muted);border-left:.25em solid var(--border)}
|
|
178
|
+
.record{margin:16px 0 24px}
|
|
179
|
+
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px 16px;margin:12px 0}
|
|
180
|
+
.facts div{border:1px solid var(--border);border-radius:6px;padding:6px 10px}
|
|
181
|
+
.facts dt{font-size:12px;color:var(--muted)}.facts dd{margin:0;font-weight:600}
|
|
182
|
+
.facts div.changed{border-color:var(--fail);color:var(--fail)}
|
|
183
|
+
.timeline td:first-child{white-space:nowrap;font-variant-numeric:tabular-nums}
|
|
184
|
+
.timeline tr.note td{background:var(--code)}
|
|
185
|
+
.badge.milestone{color:var(--link)}
|
|
186
|
+
.earlier{font-size:12px;color:var(--muted)}
|
|
187
|
+
@media print{.facts div,.timeline tr{break-inside:avoid}.timeline tr.note td{background:none}}
|
|
188
|
+
`,Br=r=>r.replace("T"," ").replace(/([+-]\d\d:\d\d|Z)$/," $1");function qc(r,e,t){let n=r.summary;if(r.events.length===0&&!n.incident&&!e)return{html:"",pageCss:""};let s=[];n.incident&&s.push([n.drill?"Drill":"Incident",[n.incident,n.severity].filter(Boolean).join(" \xB7 ")]),n.start&&s.push(["Start",Br(n.start)]),n.end&&s.push(["End",Br(n.end)]),n.durationSeconds!==void 0&&s.push(["Duration",Qn(n.durationSeconds)]);for(let l of rB)n.milestones[l]&&s.push([l[0].toUpperCase()+l.slice(1),Br(n.milestones[l])]);if(n.timeToMitigateSeconds!==void 0&&s.push(["Time to mitigate",Qn(n.timeToMitigateSeconds)]),n.timeToResolveSeconds!==void 0&&s.push(["Time to resolve",Qn(n.timeToResolveSeconds)]),n.rtoSeconds!==void 0&&s.push(["RTO",`${Qn(n.rtoSeconds)}${n.rtoMet===void 0?"":n.rtoMet?" \xB7 met":" \xB7 missed"}`]),s.push(["Runs",`${n.runs}${n.failedAttempts?` \xB7 ${n.failedAttempts} failed`:""}`]),n.endpointChecks&&s.push(["Endpoint checks",`${n.endpointChecks.total}${n.endpointChecks.failed?` \xB7 ${n.endpointChecks.failed} failed`:" \xB7 all up"}`]),n.people.length&&s.push(["People",n.people.join(", ")]),n.places.length&&s.push(["Ran on",n.places.join(", ")]),e){let l=dn(e.block).join(", ");s.push(["Record signed",e.unchanged?`by ${l} \xB7 unchanged since`:`by ${l} \xB7 CHANGED since signing`])}let B=s.map(([l,C])=>`<div${l==="Record signed"&&e&&!e.unchanged?' class="changed"':""}><dt>${Z(l)}</dt><dd>${Z(t(C))}</dd></div>`).join(""),i=r.events.map(l=>{let C=l.kind==="note"?`${l.milestone?`<span class="badge milestone">${Z(l.milestone)}</span> `:""}${Z(t(l.text??"")).replace(/\n/g,"<br>")}`:`<a href="#step-${l.step}">${l.step}</a> <code>${Z(t(l.label??""))}</code>${l.earlier?' <span class="earlier">earlier attempt</span>':""}`,h=l.kind==="note"?"":`<span class="badge ${l.ok?l.exit==="skipped"?"skip":"ok":"fail"}">${Z(l.check==="failed"?"check failed":l.exit==="0"?"exit 0":/^-?\d+$/.test(l.exit??"")?`exit ${l.exit}`:l.exit??"")}</span>`;return`<tr class="${l.kind}"><td>${Z(Br(l.at))}</td><td>${C}</td><td>${Z(t(l.by??""))}</td><td>${Z(t(l.on??""))}</td><td>${h}</td><td>${Z(l.duration??"")}</td></tr>
|
|
189
|
+
`}).join(""),o=r.events.flatMap(l=>(l.checks??[]).map(C=>({e:l,c:C}))).map(({e:l,c:C})=>`<tr><td>${Z(Br(l.at))}</td><td><a href="#step-${l.step}">${l.step}</a>${l.earlier?' <span class="earlier">earlier attempt</span>':""}</td><td><code>${Z(t(C.target))}</code></td><td><span class="badge ${C.ok?"ok":"fail"}">${C.ok?"up":"failed"}</span></td><td>${C.expires?Z(`${C.expires} (${C.daysLeft!==void 0&&C.daysLeft<0?`expired ${-C.daysLeft} days ago`:`${C.daysLeft} days`})`):""}</td><td>${Z(t(C.detail))}</td></tr>
|
|
190
|
+
`).join(""),a=`<section class="record">
|
|
191
|
+
<h2>${n.drill?"Drill record":n.incident?"Incident record":"Run record"}</h2>
|
|
192
|
+
<dl class="facts">${B}</dl>
|
|
193
|
+
`+(i?`<table class="timeline">
|
|
194
|
+
<thead><tr><th>Time</th><th>What</th><th>By</th><th>On</th><th>Result</th><th>Duration</th></tr></thead>
|
|
195
|
+
<tbody>
|
|
196
|
+
${i}</tbody>
|
|
197
|
+
</table>
|
|
198
|
+
`:"")+(o?`<h3>Endpoint checks</h3>
|
|
199
|
+
<table class="timeline">
|
|
200
|
+
<thead><tr><th>Time</th><th>Step</th><th>Endpoint</th><th>Result</th><th>Certificate expires</th><th>Detail</th></tr></thead>
|
|
201
|
+
<tbody>
|
|
202
|
+
${o}</tbody>
|
|
203
|
+
</table>
|
|
204
|
+
`:"")+`</section>
|
|
205
|
+
`,c=n.incident?`${n.incident}${n.severity?` \xB7 ${n.severity}`:""}`:"",u=`@page{@bottom-right{content:"Page " counter(page) " of " counter(pages);font:10px sans-serif;color:#656d76}${c?`@top-right{content:${JSON.stringify(c)};font:10px sans-serif;color:#656d76}`:""}}`;return{html:a,pageCss:u}}var da=new Set(["timeout","cwd","continue-on-error","skip","confirm","no-confirm","terminal","name","expect","expect-not","expect-exit","capture","capture-secret","os","host","kube-context","lines","retry","every","proposed","by","reason","approved","approved-by","approved-at"]),Vc=/^\s*[^\s{]*/;function ha(r,e){let t=Array.from({length:r.length+1},(n,s)=>Array.from({length:e.length+1},(B,i)=>s===0?i:i===0?s:0));for(let n=1;n<=r.length;n++)for(let s=1;s<=e.length;s++){let B=r[n-1]===e[s-1]?0:1,i=Math.min(t[n-1][s]+1,t[n][s-1]+1,t[n-1][s-1]+B);n>1&&s>1&&r[n-1]===e[s-2]&&r[n-2]===e[s-1]&&(i=Math.min(i,t[n-2][s-2]+1)),t[n][s]=i}return t[r.length][e.length]}function Zc(r){let e=r.toLowerCase(),t=e.length<=4?1:2,n,s=1/0,B=!1;for(let i of da){let o=i.endsWith("y")?`${i.slice(0,-1)}ies`:`${i}s`,a=Math.min(ha(e,i),ha(e,o));a<s?(n=i,s=a,B=!1):a===s&&(B=!0)}return n!==void 0&&s<=t&&!B?n:void 0}var Xc=/^(PATH|BASH_ENV|ENV|IFS|PROMPT_COMMAND|PS4|SHELLOPTS|BASHOPTS|CDPATH|LD_\w+|DYLD_\w+|NODE_OPTIONS|PYTHONPATH|PYTHONSTARTUP|PERL5OPT|PERL5LIB|RUBYOPT|GIT_SSH_COMMAND|GIT_EXEC_PATH)$/i;function eC(r,e,t){let n=[],s=r.findIndex((i,o)=>o>0&&o<e&&/^env\s*:/i.test(i));if(s<0)return n;if(!/^env\s*:\s*(#.*)?$/i.test(r[s]))return n.push({severity:"warning",line:s,message:"front matter env: is ignored: write each variable on its own indented line below it ( NAME: value)"}),n;let B=new Set;for(let i=s+1;i<e;i++){let o=r[i];if(o.trim()===""||o.trim().startsWith("#"))continue;if(!/^\s/.test(o))break;let a=Vs.exec(o);if(!a){n.push({severity:"warning",line:i,message:`front matter env: "${o.trim()}" is ignored (expected NAME: value, the name letters, digits and _)`});continue}let c=a[1];if(B.has(c)){n.push({severity:"warning",line:i,message:`front matter env: ${c} is set twice: the first one counts`});continue}B.add(c),Xc.test(c)&&n.push({severity:"warning",line:i,message:`front matter env: ${c} changes what every cell runs, and the front matter isn't signed: set it on the cells that need it (env.${c}=)`})}return t&&B.size>0&&n.push({severity:"warning",line:s,message:"front matter env: is used in VS Code and the command line only: the md-runbook app doesn't use it for a signed runbook's cells (the front matter isn't signed); put what a host needs on the cells (env.NAME=)"}),n}function ga(r){let e=[],t=Ee(r),n=Pt(t),s=Xe(r);if(s){let u=r.replace(/^/,"").split(/\r?\n/),l=u.findIndex((h,p)=>p>0&&/^(---|\.\.\.)\s*$/.test(h));for(let h=1;h<l;h++){let p=/^(mode|timeout|cwd|kube-context|kube-context-mode|git-bash-path-conversion)\s*:\s*(.*?)\s*(#.*)?$/i.exec(u[h]);if(!p)continue;let f=p[1].toLowerCase();if(f==="mode"&&s.mode===void 0||f==="timeout"&&s.timeoutSeconds===void 0||f==="cwd"&&s.cwd===void 0||f==="kube-context"&&s.kubeContext===void 0||f==="kube-context-mode"&&s.kubeContextMode===void 0||f==="git-bash-path-conversion"&&s.gitBashPathConversion===void 0){let k={mode:"session or isolated",timeout:"seconds, e.g. 300",cwd:"a folder","kube-context":"a Kubernetes context name, e.g. prod-eu, or ${param:NAME}","kube-context-mode":"check or pin","git-bash-path-conversion":"on or off"};e.push({severity:"warning",line:h,message:`front matter ${f}: "${p[2]}" is ignored (expected ${k[f]})`})}}let C={};for(let h=1;h<l;h++){let p=/^shell\s*:\s*(.*?)\s*(#.*)?$/i.exec(u[h]);if(!p)continue;if(p[1]===""){e.push({severity:"warning",line:h,message:"front matter shell: is empty: write the names on the same line (shell: zsh, pwsh), not as a list below it"});continue}let{shells:f,unknown:w,twice:k}=Tn(p[1]);for(let E of["unix","powershell"]){let x=f[E];x&&(C[E]?k.push(x):C[E]=x)}for(let E of w){let x=/[\\/]/.test(E)?`front matter shell: "${E}" is ignored: name a shell (${[...yn,...In].join(", ")}), never a path`:`front matter shell: "${E}" is ignored (expected ${yn.join(", ")} for sh/bash cells, ${In.join(" or ")} for PowerShell cells)`;e.push({severity:"warning",line:h,message:x})}for(let E of k)e.push({severity:"warning",line:h,message:`front matter shell: "${E}" is ignored: one shell per kind of cell, the first one counts`})}e.push(...eC(u,l,At(r)!==void 0))}let B=s?.kubeContextMode==="pin",i=()=>Math.max(0,r.replace(/^/,"").split(/\r?\n/).findIndex(u=>/^kube-context-mode\s*:/i.test(u)));B&&!s?.kubeContext&&!n.some(u=>ve(u.info).kubeContext!==void 0)&&e.push({severity:"warning",line:i(),message:"front matter kube-context-mode: pin has no effect: no kube-context: in the front matter and no kube-context= on a block"}),B&&s?.practice&&e.push({severity:"warning",line:i(),message:`front matter kube-context-mode: pin doesn't apply on the practice host ${s.practice}: there the Kubernetes context is only checked`});let o=new Set((s?.params??[]).map(u=>u.name)),a=new Set;for(let u of n){let l=t.cells[u.cellIndex];if(!pe(l.meta)||!Ae(u.language))continue;let C=(x,O,I,v)=>{e.push({severity:x,message:O,line:I===void 0?u.line:u.line+1+I,cell:{index:u.cellIndex,...I!==void 0?{sourceLine:I}:{}},...v?{fix:v}:{}})},h=ve(u.info);for(let x of h.errors)C("error",`invalid cell option ${x}`);let p=u.info.replace(Vc,"");for(let x of Yn(p)){let O=x.key.toLowerCase();if(da.has(O)||O.startsWith("env.")&&O.length>4)continue;let I=Zc(O);I?C("warning",`unknown cell option "${x.key}" (ignored): did you mean "${I}"?`,void 0,{option:x.key,to:I}):C("warning",`unknown cell option "${x.key}" (ignored)`)}/(^|\s)every=/i.test(p)&&!h.retry&&C("warning","every= has no effect without retry="),h.host&&s?.env&&C("warning",`front matter env: doesn't apply on the host ${h.host}: there the cell gets only its own env.NAME= variables`);let f=h.kubeContext??s?.kubeContext;B&&h.host&&f&&C("warning",`kube-context-mode: pin doesn't apply on the host ${h.host}: there kubectl's current context must already be ${f} (only checked)`);let w=[];try{w=pn(u.source,u.info,s)}catch(x){C("error",x instanceof Error?x.message:String(x))}let k=u.source.split(/\r?\n/),E=x=>{let O=k.findIndex(I=>I.includes(x));return O<0?void 0:O};for(let x of w){let O="${"+x.kind+":"+x.name;x.kind==="out"&&!a.has(x.name)&&C("error",`\${out:${x.name}} is not captured by an earlier block (add capture=${x.name} to the block that prints it)`,E(O)),x.kind==="param"&&!o.has(x.name)&&C("warning",`\${param:${x.name}} is not declared in the front matter params: (it has no default, and the command line needs --param ${x.name}=\u2026)`,E(O))}for(let x of h.checks?.captures??[])a.add(x.name)}let c=At(r);if(c){let u=s?.shell?.unix;if(u&&u!=="bash"){let l=r.replace(/^/,"").split(/\r?\n/).findIndex(C=>/^shell\s*:/i.test(C));e.push({severity:"warning",line:Math.max(0,l),message:`front matter shell: ${u} in a signed runbook: servers run its signed blocks in bash, and without the gate they would run in ${u}`})}for(let l of n.filter(C=>c.changed.includes(C.cellIndex)))e.push({severity:"warning",line:l.line,cell:{index:l.cellIndex},message:"block changed since the runbook was signed: servers that only run signed runbooks refuse it (sign the runbook again)"});for(let l of n.filter(C=>c.moved.includes(C.cellIndex)))e.push({severity:"warning",line:l.line,cell:{index:l.cellIndex},message:`block moved since the runbook was signed: it was signed as block ${c.cells.get(l.cellIndex).n}, after blocks that now come later`});c.missing.length>0&&e.push({severity:"warning",line:Math.max(0,pa(r)),message:`signed block${c.missing.length===1?"":"s"} ${c.missing.join(", ")} of ${c.manifest.cells.length} not in the file as signed (deleted or changed since signing)`})}else{let u=pa(r);u>=0&&e.push({severity:"error",line:u,message:"the signature block is damaged (sign the runbook again)"})}return e.sort((u,l)=>u.line-l.line)}function pa(r){let e=null,t=-1;return r.split(/\r?\n/).forEach((n,s)=>{e?Ne(n,e)&&(e=null):(e=Se(n),e===null&&n.startsWith("<!-- md-runbook:signature")&&(t=s))}),t}function ma(r,e){return`${r}:${e.line+1}: ${e.severity}: ${e.message}`}var fr=Ce(require("node:fs")),cs=Ce(require("node:os")),mt=Ce(require("node:path"));var AB=require("node:child_process"),SB=require("node:string_decoder");function es(r,e=process.platform){if(e==="win32"){(0,AB.spawn)("taskkill",["/PID",String(r),"/T","/F"],{windowsHide:!0,stdio:"ignore"}).on("error",()=>{});return}let t=n=>{try{process.kill(-r,n)}catch{try{process.kill(r,n)}catch{}}};t("SIGTERM"),setTimeout(()=>t("SIGKILL"),2e3).unref()}var tC=1e3;function RB(r){let e=Date.now();return new Promise(t=>{let n=!1,s=!1,B=!1,i,o=p=>{B||(B=!0,clearTimeout(i),r.signal?.removeEventListener("abort",a),t({...p,timedOut:n,cancelled:s,durationMs:Date.now()-e}))},a=()=>{s=!0,u()};if(r.signal?.aborted){s=!0,o({exitCode:null,signal:null});return}let c=(0,AB.spawn)(r.command,r.args,{cwd:r.cwd,env:r.env??process.env,stdio:["ignore","pipe","pipe"],windowsHide:!0,detached:process.platform!=="win32",windowsVerbatimArguments:r.windowsVerbatimArguments}),u=()=>{c.pid!==void 0&&c.exitCode===null&&es(c.pid)};r.signal?.addEventListener("abort",a),r.timeoutMs>0&&(i=setTimeout(()=>{n=!0,u()},r.timeoutMs));let l=new SB.StringDecoder("utf8"),C=new SB.StringDecoder("utf8");c.stdout?.on("data",p=>r.onStdout(l.write(p))),c.stderr?.on("data",p=>r.onStderr(C.write(p)));let h=(p,f)=>{if(B)return;let w=l.end(),k=C.end();w&&r.onStdout(w),k&&r.onStderr(k),o({exitCode:p,signal:f})};c.on("error",p=>o({exitCode:null,signal:null,error:p.message})),c.on("close",h),c.on("exit",(p,f)=>{setTimeout(()=>{B||(c.stdout?.destroy(),c.stderr?.destroy(),h(p,f))},tC)})})}var dt=Ce(require("node:fs")),IB=Ce(require("node:os")),mn=Ce(require("node:path"));var Da=require("node:child_process"),nC=["HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment","HKCU\\Environment"];function ba(r){let e=/^\s*Path\s+REG_(?:EXPAND_)?SZ\s+(.*)$/im.exec(r);return e?e[1].trim():""}function wa(r,e){return r.replace(/%([^%;]+)%/g,(t,n)=>{let s=Object.keys(e).find(i=>i.toUpperCase()===n.toUpperCase()),B=s===void 0?void 0:e[s];return B===void 0?t:B})}function Ea(r){return r.trim().replace(/[\\/]+$/,"").toLowerCase()}function xa(r,e){let t=new Set(r.split(";").map(Ea).filter(Boolean)),n=[];for(let s of e){let B=Ea(s);!B||t.has(B)||(t.add(B),n.push(s.trim()))}return n.length===0?r:[r.replace(/;+$/,""),...n].filter(Boolean).join(";")}var rC=r=>new Promise(e=>{(0,Da.execFile)("reg",["query",r,"/v","Path"],{windowsHide:!0,timeout:5e3},(t,n)=>e(t?"":String(n)))}),ts,sC=3e3;async function va(r,e=Date.now(),t=rC){if(!ts||e-ts.at>=sC){let n=await Promise.all(nC.map(async s=>ba(await t(s))));ts={at:e,values:n}}return ts.values.flatMap(n=>wa(n,r).split(";").filter(s=>s.trim()))}async function FB(r,e=process.platform,t=va){if(e!=="win32")return r;let n=Object.keys(r).find(i=>i.toUpperCase()==="PATH")??"Path",s=r[n]??"",B=xa(s,await t(r));return B!==s&&(r[n]=B),r}var gn=Ce(require("node:path"));function Yt(r,e,t){switch(r){case"pwsh":return BC(e,t);case"cmd":return iC(t);case"bash":return aC(e,t)}}function ka(r){let e=r.env.SystemRoot??r.env.SYSTEMROOT??"C:\\Windows",t=gn.win32.join(e,"System32","WindowsPowerShell","v1.0","powershell.exe");return r.which("powershell.exe")??(r.exists(t)?t:void 0)}function BC(r,e){let t=e.platform==="win32",n=r.runbook?.powershell,s;if(n==="windows-powershell"){if(!t)return{ok:!1,error:"Windows PowerShell 5.1 runs only on Windows (the runbook's shell: windows-powershell)."};if(s=ka(e),!s)return{ok:!1,error:"Windows PowerShell 5.1 not found (the runbook's shell: windows-powershell)."}}else{if(s=r.pwshPath?.trim()||e.which("pwsh"),!s&&n==="pwsh")return{ok:!1,error:"PowerShell 7 (pwsh) not found (the runbook's shell: pwsh): install it or set mdRunbook.shell.pwshPath."};!s&&t&&(s=ka(e)),s||(s=e.which("powershell"))}if(!s)return{ok:!1,error:"PowerShell not found: install PowerShell 7 (pwsh) or set mdRunbook.shell.pwshPath."};let B=/powershell(\.exe)?$/i.test(s)?"powershell":"pwsh";return{ok:!0,shell:{kind:"pwsh",command:s,label:B,extension:".ps1",args:i=>["-NoLogo","-NoProfile","-NonInteractive",...t?["-ExecutionPolicy","Bypass"]:[],"-Command",Sa(i)],script:i=>"\uFEFF"+i.replace(/\r?\n/g,t?`\r
|
|
206
|
+
`:`
|
|
207
|
+
`)+(t?`\r
|
|
208
|
+
`:`
|
|
209
|
+
`)}}}function Sa(r){return["[Console]::OutputEncoding = [System.Text.Encoding]::UTF8","$OutputEncoding = New-Object System.Text.UTF8Encoding $false","$global:LASTEXITCODE = 0",`& ${"'"+r.replace(/['\u2018\u2019\u201A\u201B]/g,t=>t+t)+"'"}`,"$mdRunbookOk = $?","if ($LASTEXITCODE) { exit $LASTEXITCODE } elseif (-not $mdRunbookOk) { exit 1 } else { exit 0 }"].join("; ")}function iC(r){if(r.platform!=="win32")return{ok:!1,error:"cmd blocks can only run on Windows."};let e=r.env.SystemRoot??r.env.SYSTEMROOT??"C:\\Windows";return{ok:!0,shell:{kind:"cmd",command:r.env.ComSpec??r.env.COMSPEC??gn.win32.join(e,"System32","cmd.exe"),label:"cmd",extension:".cmd",args:n=>["/d","/s","/c",`""${n}""`],windowsVerbatimArguments:!0,script:n=>["@echo off","@chcp 65001 >nul",...n.split(/\r?\n/)].join(`\r
|
|
210
|
+
`)+`\r
|
|
211
|
+
`}}}function yB(r){let e=gn.win32,t=[];for(let s of[r.env.ProgramFiles,r.env.ProgramW6432,r.env["ProgramFiles(x86)"]])s&&t.push(e.join(s,"Git","bin","bash.exe"));r.env.LOCALAPPDATA&&t.push(e.join(r.env.LOCALAPPDATA,"Programs","Git","bin","bash.exe")),r.env.USERPROFILE&&t.push(e.join(r.env.USERPROFILE,"scoop","apps","git","current","bin","bash.exe"));let n=r.which("git.exe")??r.which("git");if(n){let s=e.dirname(n);t.push(e.join(s,"..","bin","bash.exe"),e.join(s,"..","..","bin","bash.exe"))}return[...new Set(t.map(s=>e.normalize(s)))]}function Aa(r){return/\\(System32|Sysnative)\\bash\.exe$/i.test(r)||/\\WindowsApps\\/i.test(r)}function Oa(r,e){let t=r.which(e);return t&&!Aa(t)?t:void 0}var Ra=(r,e,t)=>({kind:"bash",command:r,label:e,extension:".sh",args:n=>[t?n.replace(/\\/g,"/"):n],script:n=>n.replace(/\r\n/g,`
|
|
212
|
+
`)+`
|
|
213
|
+
`});function oC(r,e,t){let n=t.platform==="win32",s;if(r==="zsh")s=n?Oa(t,"zsh.exe"):t.which("zsh");else if(!n)s=t.exists("/bin/sh")?"/bin/sh":t.which("sh");else{let B=e.bashPath?.trim();s=[...B?[B]:[],...yB(t)].map(i=>gn.win32.join(gn.win32.dirname(i),"sh.exe")).find(i=>t.exists(i)),s??=Oa(t,"sh.exe")}return s?{ok:!0,shell:Ra(s,r,n)}:{ok:!1,error:`${r} not found${n&&r==="sh"?": install Git for Windows":n?" on PATH (WSL's is not used)":" on PATH"} (the runbook's shell: ${r}).`}}function aC(r,e){let t=r.runbook?.unix;if(t==="zsh"||t==="sh")return oC(t,r,e);let n=e.platform==="win32",s=r.bashPath?.trim()||void 0;if(!s&&n){if(s=yB(e).find(B=>e.exists(B)),!s){let B=e.which("bash.exe");B&&!Aa(B)&&(s=B)}if(!s)return{ok:!1,error:"Git Bash not found: install Git for Windows or set mdRunbook.shell.bashPath to bash.exe."}}return s||(s=e.which("bash")??(t==="bash"?void 0:e.which("sh"))),s?{ok:!0,shell:Ra(s,/(^|[\\/])sh$/.test(s)?"sh":"bash",n)}:{ok:!1,error:`bash not found on PATH${t==="bash"?" (the runbook's shell: bash)":""}: set mdRunbook.shell.bashPath.`}}function Fa(r,e=process.env){let t=(e.PATH??e.Path??"").split(mn.delimiter).filter(Boolean),n=process.platform==="win32"?["",...(e.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";")]:[""];for(let s of t)for(let B of n){let i=mn.join(s,r.toLowerCase().endsWith(B.toLowerCase())?r:r+B);try{if(dt.statSync(i).isFile())return i}catch{}}}function Rt(r=process.env){return{platform:process.platform,env:r,exists:e=>{try{return dt.statSync(e).isFile()}catch{return!1}},which:e=>Fa(e,r)}}async function ir(r,e,t){let n={...process.env,...e};return r.refreshPath!==!1&&await FB(n,t),ya(n,t)}function ya(r,e){return e!=="win32"||Object.keys(r).some(n=>/^(PYTHONIOENCODING|PYTHONUTF8)$/i.test(n))||(r.PYTHONIOENCODING="utf-8"),r}function ns(r,e){return r.env===process.env?{...r,env:e,which:t=>Fa(t,e)}:r}async function Qt(r,e=Rt()){let t=C=>({exitCode:null,signal:null,timedOut:!1,cancelled:!1,error:C,durationMs:0}),n=Ae(r.language);if(!n)return t(`No shell for language '${r.language}'.`);let s=await ir(r.settings,r.env,e.platform),B=Yt(n,r.settings,ns(e,s));if(!B.ok)return t(B.error);let i=B.shell,o=dt.mkdtempSync(mn.join(IB.tmpdir(),"md-runbook-")),a=mn.join(o,"cell"+i.extension),c=r.source,u=r.cwd,l=i.args(a);i.kind==="cmd"&&/^[\\/]{2}/.test(u)&&(c=`pushd "${u}" >nul 2>&1 || (echo md-runbook: cannot open ${u} 1>&2 & exit /b 1)\r
|
|
214
|
+
${c}\r
|
|
215
|
+
popd`,u=IB.tmpdir()),i.kind==="bash"&&e.platform==="win32"&&/['"\[\]*?{}$`]/.test(a)&&(s.MDRB_SCRIPT=l[0]??a,l=["-c",'. "$MDRB_SCRIPT"']);try{return dt.writeFileSync(a,i.script(c),"utf8"),{...await RB({command:i.command,args:l,cwd:u,env:s,timeoutMs:r.timeoutMs,signal:r.signal,windowsVerbatimArguments:i.windowsVerbatimArguments,onStdout:r.onStdout,onStderr:r.onStderr}),shell:i}}finally{try{dt.rmSync(o,{recursive:!0,force:!0})}catch{}}}var Ft=Ce(require("node:fs")),or=Ce(require("node:os")),qt=Ce(require("node:path"));var Ia={MSYS_NO_PATHCONV:"1",MSYS2_ARG_CONV_EXCL:"*"};function En(r,e,t){if(t!=="win32")return r[e];let n=Object.keys(r).find(s=>s.toUpperCase()===e);return n===void 0?void 0:r[n]}var lC=r=>{try{return Ft.statSync(r).isFile()}catch{return!1}};function Ta(r,e=process.platform,t=lC){let n=En(r,"KUBECONFIG",e);if(n)return n;let s=e==="win32"?qt.win32.join:qt.posix.join;if(e!=="win32")return s(r.HOME||or.homedir(),".kube","config");let B=En(r,"HOMEDRIVE",e),i=En(r,"HOMEPATH",e);return[En(r,"HOME",e),B&&i?B+i:void 0,En(r,"USERPROFILE",e)].filter(c=>!!c).map(c=>s(c,".kube","config")).find(t)??s(En(r,"USERPROFILE",e)||or.homedir(),".kube","config")}var ar=class{constructor(e=or.tmpdir()){this.tmp=e}tmp;dir;files=new Map;file(e){let t=this.files.get(e);t===void 0&&this.files.set(e,t=`pin-${this.files.size+1}.kubeconfig`);let n=()=>{this.dir??=Ft.mkdtempSync(qt.join(this.tmp,"md-runbook-kube-"));let s=qt.join(this.dir,t);return Ft.writeFileSync(s,po(e),{mode:384}),s};try{return n()}catch(s){if(s.code!=="ENOENT")throw s;return this.dir=void 0,n()}}dispose(){if(this.dir!==void 0){try{Ft.rmSync(this.dir,{recursive:!0,force:!0})}catch{}this.dir=void 0}}};function TB(r){let e=r.platform??process.platform,t=r.frontMatter,n={...t?.env},s={},B=!1;if(t?.kubeContextMode==="pin"&&r.pins){let i=Ta(r.env,e);r.kubeContext!==void 0?(s.KUBECONFIG=go(r.pins.file(r.kubeContext),i,e),B=!0):s.KUBECONFIG=i}return t?.gitBashPathConversion==="off"&&e==="win32"&&Ae(r.language)==="bash"&&Object.assign(s,Ia),{env:s,defaults:n,pinned:B}}function LB(r,e){return{...e.defaults,...r,...e.env}}var La=require("node:child_process"),Na=require("node:crypto"),Je=Ce(require("node:fs")),$a=Ce(require("node:os")),ss=Ce(require("node:path"));function Bs(r){return(0,Na.createHash)("sha256").update(r,"utf8").digest("hex")}function rs(r,e,t){return new Promise((n,s)=>{let B=(0,La.spawn)(r,e,{stdio:[t==="inherit"?"inherit":"pipe","pipe","pipe"],windowsHide:!0}),i="",o="";B.stdout.on("data",a=>i+=a.toString("utf8")),B.stderr.on("data",a=>o+=a.toString("utf8")),B.on("error",a=>s(new Error(`${r}: ${a.message} (OpenSSH's ssh-keygen is needed)`))),B.on("close",a=>n({code:a,stdout:i,stderr:o})),t!=="inherit"&&(B.stdin.on("error",()=>{}),B.stdin.end(t))})}function Ga(){return Je.mkdtempSync(ss.join($a.tmpdir(),"md-runbook-sign-"))}async function lr(r,e,t={}){let n=Ga();try{let s=ss.join(n,"manifest");Je.writeFileSync(s,r,"utf8");let B=await rs(t.sshKeygen??"ssh-keygen",["-Y","sign","-q","-f",e,"-n",gB,s],t.interactive===!1?"":"inherit");if(B.code!==0||!Je.existsSync(s+".sig"))throw new Error(`ssh-keygen could not sign: ${B.stderr.trim()||`exit ${B.code}`}`);return ra(Je.readFileSync(s+".sig","utf8"))}finally{Je.rmSync(n,{recursive:!0,force:!0})}}async function is(r,e,t,n="ssh-keygen"){let s=Ga();try{let B=ss.join(s,"manifest.sig");Je.writeFileSync(B,na(e),"utf8");let i=await rs(n,["-Y","find-principals","-s",B,"-f",t],""),o=i.code===0?i.stdout.split(/[\r\n,]+/).filter(Boolean):[];if(o.length===0)throw new Error(`no key in ${t} made this signature`);let a="";for(let c of o){let u=await rs(n,["-Y","verify","-f",t,"-I",c,"-n",gB,"-s",B],r);if(u.code===0)return c;a=(u.stderr||u.stdout).trim()}throw new Error(`the signature does not verify: ${a}`)}finally{Je.rmSync(s,{recursive:!0,force:!0})}}async function NB(r,e){let t=[];for(let n of r.cells)if(!(n.steps.length<2))for(let s=0;s<n.steps.length;s++){let B;try{B=await rs(e,["--norc","--noprofile","-n"],n.steps[s])}catch{return}let i=B.stderr.trim().split(/\r?\n/)[0];(B.code!==0||i)&&t.push(`cell ${n.n}, command ${s+1} (${n.steps[s].split(`
|
|
216
|
+
`)[0]}): ${i||`bash -n exit ${B.code}`}`)}return t}function ur(r){let e=r.endsWith(".pub")?r:r+".pub";try{let t=Je.readFileSync(e,"utf8").trim().split(/\s+/);return t.length>=3?t.slice(2).join(" "):void 0}catch{return}}var yt=Ce(require("node:fs")),Ma=Ce(require("node:path")),Ha=10*1024*1024,uC=100,cr=class{constructor(e,t,n=Ha,s=uC){this.file=e;this.onError=t;this.maxBytes=n;this.batchMs=s}file;onError;maxBytes;batchMs;pending="";timer;failed=!1;append(e){this.failed||e===""||(this.pending+=e,this.timer===void 0&&(this.timer=setTimeout(()=>this.flush(),this.batchMs),this.timer.unref?.()))}flush(){this.timer!==void 0&&clearTimeout(this.timer),this.timer=void 0;let e=this.pending;if(this.pending="",!(this.failed||e===""))try{yt.mkdirSync(Ma.dirname(this.file),{recursive:!0});let t=0;try{t=yt.statSync(this.file).size}catch{}t>0&&t+Buffer.byteLength(e)>this.maxBytes&&yt.renameSync(this.file,`${this.file}.1`),yt.appendFileSync(this.file,e,"utf8")}catch(t){this.failed=!0,this.onError?.(t instanceof Error?t:new Error(String(t)))}}};var Pa=["\\b(delete|drain|cordon|scale\\s+.*--replicas=0)\\b","\\brm\\s+-[a-z]*r[a-z]*f","--force\\b","\\bRemove-Item\\b.*-Recurse","\\bdrop\\s+(table|database)\\b","\\brollout\\s+(restart|undo)\\b","(?<![-.])\\bpatch\\b","(?<![-.])\\bapply\\b","(?<![-.])\\breplace\\b","\\badm\\s+policy\\s+(add|remove)","\\bset\\s+(env|image|resources)\\b","\\bhelm\\s+(upgrade|rollback|uninstall)\\b","\\bcurl\\b.*(-X\\s*|--request[\\s=]+)(PUT|POST|PATCH|DELETE)\\b","\\bInvoke-(RestMethod|WebRequest)\\b.*-Method\\s+(Put|Post|Patch|Delete)\\b"];function _a(r){let e=[],t=[];for(let n of r)try{e.push(new RegExp(n,"i"))}catch(s){t.push(`${n}: ${s instanceof Error?s.message:String(s)}`)}return{regexes:e,errors:t}}function cC(r,e){let t;for(let n of e){let s=n.exec(r);s&&(!t||s.index<t.index)&&(t=s)}return t?.[0]}function $B(r,e,t,n){if(n===!1||n===void 0&&e==="never")return;let s=cC(r,t);return s!==void 0?s:n===!0||e==="always"?"":void 0}function GB(r){let e=wt(r),t=r.slice(r.toLowerCase().indexOf(e)+e.length),n={state:"none"},s=!1;for(let B of Yn(t)){let i=B.key.toLowerCase();i==="proposed"&&B.value===void 0?s=!0:i==="by"&&B.value?n.by=B.value:i==="reason"&&B.value!==void 0?n.reason=B.value:i==="approved-by"&&B.value?n.approvedBy=B.value:i==="approved-at"&&B.value&&(n.approvedAt=B.value)}return n.state=s?"proposed":n.approvedBy?"approved":n.by?"proposed":"none",n}var Ua=require("node:child_process"),Ka=require("node:crypto"),gt=Ce(require("node:fs")),ja=Ce(require("node:os")),Wt=Ce(require("node:path")),HB=require("node:string_decoder");var CC=1e3,Cr="MD_RUNBOOK_SESSION_DIR",os="MD_RUNBOOK_TERM",za="__mdrbCellCwd",Ja=r=>"'"+r.replace(/'/g,"'\\''")+"'",MB=r=>"'"+r.replace(/['‘’‚‛]/g,"$&$&")+"'";function fC(r,e){return r.kind==="bash"?["-s"]:["-NoLogo","-NoProfile","-NonInteractive",...e==="win32"?["-ExecutionPolicy","Bypass"]:[],"-Command","-"]}function hC(r){return r==="bash"?`__mdrb_dir=$${Cr}; unset ${Cr}
|
|
217
|
+
`:`$__mdrbDir = $env:${Cr}; Remove-Item Env:${Cr} -ErrorAction Ignore; if ($env:${os}) { $env:TERM = $env:${os} } else { Remove-Item Env:TERM -ErrorAction Ignore }; Remove-Item Env:${os} -ErrorAction Ignore; [Console]::OutputEncoding = [System.Text.Encoding]::UTF8; $OutputEncoding = New-Object System.Text.UTF8Encoding $false
|
|
218
|
+
`}function pC(r,e,t,n){let s=`__MDRB_${e}__`;if(r==="bash"){let o=`"$__mdrb_dir/${e}.pre${t}"`,a=`. "$__mdrb_dir/${e}${t}" </dev/null; __mdrb_rc=$?`;return(n?`__mdrb_cd=; if . ${o} </dev/null; then rm -f ${o} 2>/dev/null; ${a}; else __mdrb_rc=$?; rm -f ${o} 2>/dev/null; fi; if [ -n "$__mdrb_cd" ]; then cd -- "$__mdrb_cd" 2>/dev/null; __mdrb_cd=; fi; `:`${a}; `)+`printf '\\036%s %s\\n' ${s} "$__mdrb_rc"; printf '\\036%s %s\\n' ${s} "$__mdrb_rc" >&2
|
|
219
|
+
`}let B=`"$__mdrbDir/${e}.pre${t}"`;return`$global:LASTEXITCODE = 0; $__mdrbOk = $false; $__mdrbPushed = $false; ${n?`. ${B}; Remove-Item -LiteralPath ${B} -Force -ErrorAction Ignore; `:""}. "$__mdrbDir/${e}${t}"; $__mdrbOk = $?
|
|
220
|
+
if ($__mdrbPushed) { Pop-Location -StackName ${za} -ErrorAction Ignore; $__mdrbPushed = $false }; $__mdrbRc = if ($LASTEXITCODE) { $LASTEXITCODE } elseif (-not $__mdrbOk) { 1 } else { 0 }; $__mdrbS = [string][char]30 + "${s} $__mdrbRc\`n"; [Console]::Out.Write($__mdrbS); [Console]::Error.Write($__mdrbS)
|
|
221
|
+
`}function dC(r,e,t,n=process.platform){let s=[];for(let[B,i]of Object.entries(e))r==="pwsh"?s.push(`[Environment]::SetEnvironmentVariable(${MB(B)}, ${MB(i)})`):/^[A-Za-z_][A-Za-z0-9_]*$/.test(B)&&s.push(`export ${B}=${Ja(i)}`);return t!==void 0&&(r==="pwsh"?s.push(`Push-Location -LiteralPath ${MB(t)} -StackName ${za} -ErrorAction Stop`,"$__mdrbPushed = $true"):s.push("__mdrb_cd=$PWD",`cd -- ${Ja(n==="win32"?t.replace(/\\/g,"/"):t)} || return 1`)),s.join(`
|
|
222
|
+
`)}var PB=class{constructor(e,t,n=process.platform,s=process.env){this.shell=e;this.cwd=t;this.platform=n;this.dir=gt.mkdtempSync(Wt.join(ja.tmpdir(),"md-runbook-session-"));let B=n==="win32"&&e.kind==="bash"?this.dir.replace(/\\/g,"/"):this.dir,i={...s,[Cr]:B};e.kind==="pwsh"&&(i[os]=i.TERM??"",i.TERM="dumb"),this.child=(0,Ua.spawn)(e.command,fC(e,n),{cwd:t,env:i,stdio:["pipe","pipe","pipe"],windowsHide:!0,detached:n!=="win32"}),this.child.stdout.on("data",o=>this.deliver("out",this.outDec.write(o))),this.child.stderr.on("data",o=>this.deliver("err",this.errDec.write(o))),this.child.stdin.on("error",()=>{}),this.child.on("error",o=>{this.startError=o.message,this.end(null,null)}),this.child.on("close",(o,a)=>this.end(o,a)),this.child.on("exit",(o,a)=>setTimeout(()=>this.end(o,a),CC).unref()),this.child.stdin.write(hC(e.kind))}shell;cwd;platform;child;dir;ended=!1;killed=!1;startError;current;outDec=new HB.StringDecoder("utf8");errDec=new HB.StringDecoder("utf8");onDidEnd=()=>{};get alive(){return!this.ended&&!this.killed}get pid(){return this.child.pid}run(e){let t=Date.now();return new Promise(n=>{let s=!1,B=!1,i=!1,o,a=[],c=(k,E)=>{if(!i){i=!0,clearTimeout(o),e.signal?.removeEventListener("abort",u),this.current=void 0;for(let x of a)try{gt.rmSync(x,{force:!0})}catch{}n({...k,timedOut:s,cancelled:B,ended:E,durationMs:Date.now()-t})}},u=()=>{B=!0,this.kill()};if(!this.alive)return c({exitCode:null,signal:null,error:this.startError??"The session has ended."},!0);if(this.current)return c({exitCode:null,signal:null,error:"The session is busy."},!1);if(e.signal?.aborted)return B=!0,c({exitCode:null,signal:null},!1);let l=(0,Ka.randomBytes)(12).toString("hex"),C=this.shell.extension,h=e.env??{},p=Object.keys(h).length>0||e.cwd!==void 0;try{let k=Wt.join(this.dir,l+C);if(a.push(k),gt.writeFileSync(k,this.shell.script(e.source),"utf8"),p){let E=Wt.join(this.dir,`${l}.pre${C}`);a.push(E),gt.writeFileSync(E,this.shell.script(dC(this.shell.kind,h,e.cwd,this.platform)),{encoding:"utf8",mode:384})}}catch(k){return c({exitCode:null,signal:null,error:k instanceof Error?k.message:String(k)},!1)}let f=new Ht(`__MDRB_${l}__`,e.onStdout),w=new Ht(`__MDRB_${l}__`,e.onStderr);this.current={out:f,err:w,check:()=>{f.done&&w.done&&c({exitCode:f.code,signal:null},!1)},onExit:(k,E)=>{f.flush(),w.flush(),c({exitCode:k,signal:E,error:this.startError},!0)}},e.signal?.addEventListener("abort",u),e.timeoutMs>0&&(o=setTimeout(()=>{s=!0,this.kill()},e.timeoutMs)),this.child.stdin.write(pC(this.shell.kind,l,C,p))})}kill(){this.killed||this.ended||(this.killed=!0,this.child.pid!==void 0&&es(this.child.pid,this.platform))}dispose(){this.kill(),this.ended&&this.cleanup()}deliver(e,t){let n=this.current;!n||t===""||(n[e].write(t),n.check())}end(e,t){this.ended||(this.ended=!0,this.deliver("out",this.outDec.end()),this.deliver("err",this.errDec.end()),this.current?.onExit(e,t),this.cleanup(),this.onDidEnd())}cleanup(){gt.rm(this.dir,{recursive:!0,force:!0},()=>{})}},as=class{constructor(e=()=>{},t=Rt(),n=" session"){this.onChange=e;this.shellEnv=t;this.labelSuffix=n}onChange;shellEnv;labelSuffix;sessions=new Map;started=new Set;settings={};labels(){return[...this.sessions.values()].filter(e=>e.alive).map(e=>e.shell.label)}session(e){let t=this.sessions.get(e);return t?.alive?t:void 0}async execute(e){let t=Ae(e.language);if(t===void 0||t==="cmd")return Qt(e,this.shellEnv);this.settings=e.settings;let n=await ir(e.settings,void 0,this.shellEnv.platform),s=Yt(t,e.settings,ns(this.shellEnv,n));if(!s.ok)return Qt(e,this.shellEnv);let B=this.sessions.get(t);B&&(!B.alive||B.shell.command!==s.shell.command)&&(B.dispose(),B=void 0),B||(this.started.has(t)&&e.onStdout(`[md-runbook] new session started
|
|
223
|
+
`),B=this.start(s.shell,e.baseCwd??e.cwd,n));let i=Wt.resolve(e.cwd)===Wt.resolve(B.cwd)?void 0:e.cwd,o=await B.run({source:e.source,env:e.env,cwd:i,timeoutMs:e.timeoutMs,signal:e.signal,onStdout:e.onStdout,onStderr:e.onStderr});o.ended&&!o.cancelled&&!o.timedOut&&o.error===void 0&&e.onStderr(`[md-runbook] session ended (exit ${o.exitCode??o.signal}); the next cell starts a new session
|
|
224
|
+
`);let{ended:a,...c}=o;return{...c,shell:{...s.shell,label:s.shell.label+this.labelSuffix}}}async restart(){let e=[...this.sessions.values()].filter(n=>n.alive);if(e.length===0)return[];let t=await ir(this.settings,void 0,this.shellEnv.platform);for(let n of e)n.dispose(),this.start(n.shell,n.cwd,t);return e.map(n=>n.shell.label)}stop(){let e=this.labels();for(let t of this.sessions.values())t.dispose();return this.sessions.clear(),this.onChange(),e}dispose(){this.stop()}start(e,t,n){let s=new PB(e,t,this.shellEnv.platform,n);return s.onDidEnd=()=>{this.sessions.get(e.kind)===s&&this.sessions.delete(e.kind),this.onChange()},this.sessions.set(e.kind,s),this.started.add(e.kind),this.onChange(),s}};function gC(r){let e=Math.max(0,Math.round(r));return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m${Math.round(e%6e4/1e3)}s`}var Ya=r=>r.replace(/\s*[\r\n]+\s*/g," ").trim();function mC(r,e){let t=r.step!==void 0?`Step ${r.step}`:void 0,n=r.line!==void 0?`${r.runbook}:${r.line}`:r.runbook,s=[Oe(r.at),n,t,r.section,r.title].filter(i=>i!==void 0&&i.trim()!==""),B=`===== ${e(s.map(Ya).join(" \xB7 "))}
|
|
225
|
+
`;if(r.command!==void 0&&r.command.trim()!==""){let i=e(We(r.command).replace(/\r\n?/g,`
|
|
226
|
+
`).replace(/\n+$/,"")).split(`
|
|
227
|
+
`);B+=i.map(o=>`$ ${o}`).join(`
|
|
228
|
+
`)+`
|
|
229
|
+
`}return B}function EC(r){return`===== ${[`exit=${r.exit}`,gC(r.durationMs),r.check&&`check ${r.check==="ok"?"passed":"failed"}`,r.attempt!==void 0&&r.attempts!==void 0&&r.attempts>1&&`attempt ${r.attempt}/${r.attempts}`,r.lines&&`lines ${r.lines}`].filter(Boolean).join(" \xB7 ")}
|
|
230
|
+
|
|
231
|
+
`}function Qa(r,e,t,n){return`===== ${n(Ya(`${Oe(r)} \xB7 ${e} \xB7 ${t}`))}
|
|
232
|
+
|
|
233
|
+
`}var DC={stdout:"| ",stderr:"! "},ls=class{constructor(e,t,n=!1){this.write=e;this.redact=t;this.hold=n;let s=i=>this.redact(We(An(i.replace(/\r\n/g,`
|
|
234
|
+
`)))),B=i=>new Mt(o=>this.lines(i,o),s);this.buffers={stdout:B("stdout"),stderr:B("stderr")}}write;redact;hold;buffers;carry={stdout:"",stderr:""};held=[];ended=!1;start(e){this.write(mC(e,this.redact))}out(e,t){this.ended||t===""||(this.hold?this.held.push({stream:e,text:t}):this.buffers[e].write(t))}attempt(e,t,n){this.ended||(this.release(),this.write(`----- attempt ${e}/${t} \xB7 ${Oe(n)}
|
|
235
|
+
`))}end(e){this.ended||(this.release(),this.ended=!0,this.write(EC(e)))}release(){for(let e of this.held.splice(0))this.buffers[e.stream].write(e.text);for(let e of["stdout","stderr"])this.buffers[e].flush(),this.carry[e]!==""&&this.lines(e,`
|
|
236
|
+
`)}lines(e,t){let n=(this.carry[e]+t).split(`
|
|
237
|
+
`);this.carry[e]=n.pop(),n.length>0&&this.write(n.map(s=>DC[e]+s).join(`
|
|
238
|
+
`)+`
|
|
239
|
+
`)}};var je=class extends Error{},bC=/^ {0,3}(#{1,6})(?:[ \t]+(.*?))?[ \t]*$/;function _B(r){let e=$t(r.replace(/^/,"")).map(s=>s.text),t=[],n=0;if(e[0]?.trimEnd()==="---"){let s=e.findIndex((B,i)=>i>0&&/^(---|\.\.\.)\s*$/.test(B));s>0&&(n=s+1)}for(;n<e.length;n++){let s=Se(e[n]);if(s){for(;n+1<e.length&&!Ne(e[n+1],s);)n++;n++;continue}let B=bC.exec(e[n]);if(!B)continue;let i=(B[2]??"").replace(/(^|[ \t]+)#+$/,"").trim();t.push({line:n,level:B[1].length,text:i})}return t}function qa(r){let e=[...r].sort((n,s)=>n-s),t=[];for(let n=0;n<e.length;){let s=n;for(;s+1<e.length&&e[s+1]===e[s]+1;)s++;t.push(s===n?`${e[n]}`:`${e[n]}\u2013${e[s]}`),n=s+1}return t.join(", ")}function us(r){return[...r.from!==void 0?[`--from ${r.from}`]:[],...r.to!==void 0?[`--to ${r.to}`]:[],...(r.sections??[]).map(e=>`--section ${JSON.stringify(e)}`)].join(" ")}function Wa(r,e,t,n){let s=n.sections??[];if(n.from===void 0&&n.to===void 0&&s.length===0)return;let B=Math.max(0,...t);for(let[u,l]of[["--from",n.from],["--to",n.to]])if(l!==void 0&&(l<1||l>B))throw new je(`${u} ${l} is outside the runbook: it has ${B===0?"no steps":B===1?"one step":`steps 1 to ${B}`}`);if(n.from!==void 0&&n.to!==void 0&&n.from>n.to)throw new je(`--from ${n.from} is after --to ${n.to}`);let i=n.from??1,o=n.to??B,a=()=>!0;if(s.length>0){let u=_B(r),l=s.filter(p=>!u.some(f=>f.text.startsWith(p)));if(l.length>0)throw new je(`no heading starts with ${l.map(p=>JSON.stringify(p)).join(", ")} (--section matches the heading text after the #s, case-sensitive)`);let C=Math.min(...u.map(p=>p.level)),h=u.filter(p=>p.level===C);if(h.length===1&&u.length>1){let p=h[0],f=s.filter(w=>p.text.startsWith(w));if(f.length>0){let w=f[0],k=u.filter(x=>x!==p&&x.text.startsWith(w)).map(x=>x.text),E=k.length>0?`; for ${JSON.stringify(k[0])}, give more of it, e.g. --section ${JSON.stringify(k[0].split(/\s+/).slice(0,2).join(" "))}`:"";throw new je(`--section ${JSON.stringify(w)} matches the runbook's title ${JSON.stringify(p.text)}, which holds every step${E}`)}}a=p=>{let f=[];for(let w of u){if(w.line>=p)break;for(;f.length>0&&f[f.length-1].level>=w.level;)f.pop();f.push(w)}return f.some(w=>s.some(k=>w.text.startsWith(k)))}}let c=new Set;if(e.forEach((u,l)=>{let C=t[l];C>=i&&C<=o&&a(u.line)&&c.add(C)}),c.size===0)throw new je(`${us(n)} selects no step`);return c}function Va(r,e){let t=[];return r.forEach((n,s)=>{if(n.runs)for(let B of new Set(n.uses)){let i=r.slice(0,s).filter(a=>a.captures.includes(B));if(i.length===0||i.some(a=>a.selected))continue;let o=i[i.length-1];t.push(`step ${n.n} (${e}:${n.loc.line+1}) uses \${out:${B}}, captured by step ${o.n} (${e}:${o.loc.line+1}), which is not selected`)}}),t}var wC=4,xC=(r,e)=>new Promise(t=>{if(e?.aborted)return t(!1);let n=setTimeout(()=>t(!0),r);e?.addEventListener("abort",()=>(clearTimeout(n),t(!1)),{once:!0})});async function Xa(r,e){let t=fr.readFileSync(r.file,"utf8"),n=mt.basename(r.file),s=mt.dirname(mt.resolve(r.file)),B=Xe(t),i=B?.cwd?mt.resolve(s,B.cwd):s,o=r.session??B?.mode==="session",a=new ar,c=new Set,u=Ls(Ts),l=W=>{let U=u.redact(W);for(let re of[...c].sort((A,S)=>S.length-A.length))U=U.split(re).join(Bn);return U},C=W=>{W.length>=wC&&c.add(W)},h={persistOutputs:!0,maxOutputLines:2e3,stripAnsi:!0,redact:l},{regexes:p}=_a(Pa),f=new Map,w=t,k=Ee(t),E=Pt(k);for(let W of r.extraSecrets??[])C(W);for(let W of E){if(!Ae(W.language))continue;let U=[];try{U=Ze(W.source)}catch{continue}for(let re of U){if(!re.secret)continue;let A=re.kind==="secret"?r.env[re.name]:re.kind==="input"?r.inputs[re.name]??r.env[re.name]:void 0;A!==void 0&&C(A)}}let x=k.cells.map(W=>W.kind==="code"?{kind:"code",os:ve(W.meta.kind==="code"?W.meta.info:"").os}:{kind:"markup"}),O=zn(x),I=new Set(O.filter(W=>W?.active).map(W=>W.group)),v=vt(x),L=E.map(W=>v[W.cellIndex]),b={...r.from!==void 0?{from:r.from}:{},...r.to!==void 0?{to:r.to}:{},...r.sections?.length?{sections:r.sections}:{}},m=Wa(t,E,L,b),M=E.map((W,U)=>{let re=ve(W.info),A=O[W.cellIndex],S=GB(W.info),R=[];try{R=pn(W.source,W.info,B).filter(G=>G.kind==="out").map(G=>G.name)}catch{}let $=!m||m.has(L[U]);return{n:L[U],loc:W,selected:$,runs:$&&(!A||A.active)&&!re.host&&!re.skip&&re.errors.length===0&&S.state!=="proposed"&&S.by===void 0,uses:R,captures:(re.checks?.captures??[]).map(G=>G.name)}}),y=Va(M,n);if(y.length>0)throw new je(`${y.join(`
|
|
240
|
+
`)}
|
|
241
|
+
select the step that captures it too (a run starts without captured values); nothing ran`);if(!r.yes&&!r.keepGoing){let W=M.flatMap(U=>{if(!U.runs)return[];let re=ve(U.loc.info),A=$B(U.loc.source,"patterns",p,re.confirm===!0?!0:void 0);if(A===void 0)return[];let S=U.loc.source.split(/\r?\n/).find(R=>R.trim()!=="")?.trim()??"";return[` Step ${U.n} \xB7 ${n}:${U.loc.line+1} \xB7 ${l(re.name??S)}: ${A===""?"confirm option":`risky command \u201C${A.trim()}\u201D`}`]});if(W.length>0){let U=W.length===1;throw new je(`${U?"a step asks":`${W.length} steps ask`} for confirmation in VS Code and ${U?"needs":"need"} --yes here; nothing ran:
|
|
242
|
+
${W.join(`
|
|
243
|
+
`)}
|
|
244
|
+
pass --yes to run ${U?"it":"them"}`)}}m&&e.log(`Step${m.size===1?"":"s"} ${qa([...m])} of ${Math.max(0,...L)} (${us(b)})`);let H=`not selected (${us(b)})`,z=o?new as:void 0,j=r.transcript?new cr(mt.resolve(r.transcript),W=>e.log(`! the transcript ${r.transcript} can't be written, so it stops: ${W.message}`)):void 0,X=_B(t),ne=W=>[...X].reverse().find(U=>U.line<W)?.text,te=(W,U,re)=>{j?.append(Qa(new Date,n,`Step ${W} \xB7 ${U}: ${re}`,l)),j?.flush()},ae=new Set,se=[],De=!1;try{for(let[W,U]of E.entries()){let re=O[U.cellIndex];if(re&&ae.has(re.group)){if(!re.active)continue}else re&&ae.add(re.group);let A=L[W],S=ve(U.info),R=U.source.split(/\r?\n/).find(K=>K.trim()!=="")?.trim()??"",$=(K,ke,Bt={})=>({step:A,line:U.line+1,language:U.language,title:l(S.name??R),status:K,exit:ke,durationMs:0,output:"",...Bt}),G=`Step ${A} \xB7 ${n}:${U.line+1} \xB7 ${U.language}`;if(re&&!re.active){I.has(re.group)||(e.log(`\u2013 ${G}: for ${hn(S.os??[])}, skipped on ${hn([tB()])}`),se.push($("skipped","skipped",{message:`for ${hn(S.os??[])}`})));continue}if(!M[W].selected){se.push($("skipped","skipped",{message:H}));continue}if(S.host){e.log(`\u2013 ${G}: runs on the host ${S.host} (md-runbook app), skipped here`),se.push($("skipped","skipped",{message:`runs on the host ${S.host}`}));continue}if(De){se.push($("not run","not run",{message:"an earlier step failed"}));continue}let P=(K,ke="not run")=>{e.log(`\u2717 ${G}: not run: ${K}`),te(A,l(S.name??R),`not run: ${K}`),se.push($("not run",ke,{message:K})),r.keepGoing||(De=!0)};if(S.errors.length>0){P(`invalid cell option ${S.errors.join("; ")}`,"error");continue}let q=GB(U.info);if(q.state==="proposed"){P("proposed by an assistant and not approved; approve it in VS Code first");continue}if(q.by!==void 0){P("written by an assistant; such cells only run in VS Code (approval, read-only credentials)");continue}let Q=Ae(U.language);if(!Q)continue;if(S.skip){e.log(`\u2013 ${G}: skipped (skip option)`),w=$n(w,U.cellIndex,{kind:"new",text:`[md-runbook] skipped: skip option
|
|
245
|
+
`,attrs:{exit:"skipped",ran:Oe(new Date)}},h)??w,se.push($("skipped","skipped"));continue}let oe=$B(U.source,"patterns",p,S.confirm===!0?!0:void 0);if(oe!==void 0&&!r.yes){let K=oe===""?"this block asks for confirmation (confirm option)":`risky command \u201C${oe.trim()}\u201D`;w=$n(w,U.cellIndex,{kind:"new",text:`[md-runbook] not confirmed: ${K}; pass --yes to run it
|
|
246
|
+
`,attrs:{exit:"declined",ran:Oe(new Date)}},h)??w,P(`${K}; pass --yes to run it`,"declined");continue}let ue={...S.env},ee,Ie=new Set,Te,vn;try{vn=Ze(U.source).length,Te=pn(U.source,U.info,B)}catch(K){P(K instanceof Error?K.message:String(K),"error");continue}for(let K of Te){let ke,Bt=K.secret;if(K.kind==="secret")ke=r.env[K.name];else if(K.kind==="input")ke=r.inputs[K.name]??r.env[K.name];else if(K.kind==="param")ke=r.params[K.name]??B?.params.find(bt=>bt.name===K.name)?.default;else{let bt=f.get(K.name);ke=bt?.value,Bt=bt?.secret??!1}if(ke===void 0){ee=K.kind==="secret"?`\${secret:${K.name}}: set the environment variable ${K.name}`:K.kind==="input"?`\${input:${K.name}}: pass --input ${K.name}=\u2026 or set the environment variable ${K.name}`:K.kind==="param"?`\${param:${K.name}}: pass --param ${K.name}=\u2026 (it has no default)`:`\${out:${K.name}} has no value yet; run the cell with capture=${K.name} first`;break}ue[K.name]=ke,Bt&&(C(ke),Ie.add(K.name))}if(ee){P(ee,"error");continue}let Dt=S.checks,Tt,Zt=_r(S,B);try{Dt&&(Dt=wo(Dt,ue,K=>Ie.has(K))),Tt=co(Zt,K=>ue[K])}catch(K){P(K instanceof Error?K.message:String(K),"error");continue}let ut=zt(Zt)!==void 0?Tt:void 0,zB=TB({language:U.language,frontMatter:B,kubeContext:Tt,env:{...process.env,...B?.env,...ue},pins:a});ue=LB(ue,zB);let YB=vn>0?fn(U.source,Q):U.source,ps=(S.checks?.captures??[]).some(K=>K.secret),ds="",kn=S.cwd!==void 0?mt.resolve(s,S.cwd):i,QB=S.timeoutSeconds??B?.timeoutSeconds??r.timeoutSeconds??0,Lt=S.retry?.attempts??1;e.log(`\u25B6 ${G}${S.name?` \xB7 ${S.name}`:""}${ut?` \xB7 Kubernetes context ${ut}`:""}`);let On=new Date,Xt=j?new ls(K=>j.append(K),l,ps):void 0;Xt?.start({at:On,runbook:n,step:A,line:U.line+1,section:ne(U.line),title:S.name??R,command:YB});let en="",gs="",ge,Le,ct=0,qB=fr.existsSync(kn)?await fo(Tt,async K=>{let ke="",Bt="",bt={language:U.language,source:K,cwd:kn,settings:B?.shell?{...r.shell,runbook:B.shell}:r.shell,timeoutMs:15e3,env:ue,signal:r.signal,onStdout:Nt=>ke+=Nt,onStderr:Nt=>Bt+=Nt},tn=z?await z.execute({...bt,baseCwd:i}):await Qt(bt);return{exitCode:tn.exitCode,stdout:ke,stderr:tn.error??(tn.timedOut?"timed out":Bt)}},zB.pinned):void 0;if(qB!==void 0)ct=1,ge={exitCode:null,signal:null,timedOut:!1,cancelled:!1,error:qB,durationMs:0};else for(;;){ct++,ct>1&&Xt?.attempt(ct,Lt,new Date),en="",gs="",ds="";let K=new Mt(Ct=>ps?ds+=Ct:e.out(Ct),l),ke=Ct=>br=>{en+=br,Ct&&(gs+=br),K.write(br),Xt?.out(Ct?"stdout":"stderr",br)},Bt={language:U.language,source:YB,cwd:kn,settings:B?.shell?{...r.shell,runbook:B.shell}:r.shell,timeoutMs:QB*1e3,env:ue,signal:r.signal,onStdout:ke(!0),onStderr:ke(!1)};if(!fr.existsSync(kn))ge={exitCode:null,signal:null,timedOut:!1,cancelled:!1,error:`Working directory not found: ${kn}`,durationMs:0};else try{ge=z?await z.execute({...Bt,baseCwd:i}):await Qt(Bt)}catch(Ct){ge={exitCode:null,signal:null,timedOut:!1,cancelled:!1,error:Ct instanceof Error?Ct.message:String(Ct),durationMs:0}}if(K.flush(),Le=vo(Dt)&&ge.exitCode!==null&&ge.error===void 0&&!ge.timedOut&&!ge.cancelled?ko(Dt,ge.exitCode,en,gs):void 0,(Le?Le.ok:Nn(ge))||ct>=Lt||ge.cancelled||r.signal?.aborted)break;let tn=Le?.failures[0]??(ge.timedOut?"timed out":ge.error??`exit code ${Ln(ge)}`),Nt=S.retry?.everyMs??0;if(e.log(` attempt ${ct}/${Lt} failed (${l(tn)}); trying again in ${Nt/1e3}s`),Xt?.out("stderr",`[md-runbook] attempt ${ct}/${Lt} failed (${tn}); trying again in ${Nt/1e3}s
|
|
247
|
+
`),!await xC(Nt,r.signal))break}for(let K of Le?.secretValues??[])C(K);ps&&e.out(l(ds));let ms=K=>{en+=K,e.out(l(K)),Xt?.out("stderr",K)};ge.error!==void 0&&ms(ge.error+`
|
|
248
|
+
`),ge.timedOut&&ms(`[md-runbook] timed out after ${QB}s; process tree killed
|
|
249
|
+
`);for(let K of Le&&!Le.ok?Le.failures:[])ms(`[md-runbook] check failed: ${K}
|
|
250
|
+
`);if(Le?.ok)for(let K of Le.captured)f.set(K.name,{value:K.value,secret:K.secret});let dr=new Date,gr=Ln(ge),mr=Le?Le.ok?"ok":"failed":void 0,WB={exit:gr,ran:Oe(On),ended:Oe(dr),duration:ks(dr.getTime()-On.getTime()),...mr?{check:mr}:{},...Lt>1?{attempts:String(ct)}:{},...S.name!==void 0?{name:S.name}:{},...ut?{"kube-context":ut}:{},...yo(w,{by:Za(),on:`${Za()}@${cs.hostname()}`})},Er=Ee(w).cells[U.cellIndex]?.meta,Dr=pe(Er)?As(Er):void 0,VB=Dr?Rs(Dr,pe(Er)?Er.history?.entries??[]:[],Io(w,0)):[];w=$n(w,U.cellIndex,{kind:"new",text:en,attrs:WB,...Dr&&VB.length?{previous:Dr,history:VB}:{}},h)??w;let Es=Le?Le.ok:Nn(ge);Xt?.end({exit:gr,durationMs:dr.getTime()-On.getTime(),...mr?{check:mr}:{},...Lt>1?{attempt:ct,attempts:Lt}:{}}),j?.flush();let{ran:HC,ended:PC,...Tl}=WB;e.log(`${Ns(Tl)}${ge.shell?` \xB7 ${ge.shell.label}`:""}`),se.push($(Es?"passed":"failed",gr,{durationMs:dr.getTime()-On.getTime(),output:l(en),...Es?{}:{message:Le?.failures[0]??`exit ${gr}`}})),!Es&&!S.continueOnError&&!r.keepGoing&&(De=!0),r.signal?.aborted&&(De=!0)}}finally{j?.flush(),z?.dispose(),a.dispose()}let de=se.every(W=>W.status==="passed"||W.status==="skipped");return{steps:se,text:w,ok:de,redact:l}}var Dn=r=>r.replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]).replace(/[\x00-\x08\x0b\x0c\x0e-\x1f]/g,"");function el(r,e){let t=e.filter(o=>o.status==="failed"||o.status==="not run").length,n=e.filter(o=>o.status==="skipped").length,s=o=>(o/1e3).toFixed(3),B=e.reduce((o,a)=>o+a.durationMs,0),i=e.map(o=>{let a=Dn(`Step ${o.step}: ${o.title}`),c=` <testcase classname="${Dn(r)}" name="${a}" time="${s(o.durationMs)}">`;return o.status==="passed"?`${c}</testcase>`:o.status==="skipped"?`${c}<skipped message="${Dn(o.message??"skipped")}"/></testcase>`:`${c}
|
|
251
|
+
<failure message="${Dn(o.message??o.exit)}">${Dn(o.output)}</failure>
|
|
252
|
+
</testcase>`});return`<?xml version="1.0" encoding="UTF-8"?>
|
|
253
|
+
<testsuites>
|
|
254
|
+
<testsuite name="${Dn(r)}" tests="${e.length}" failures="${t}" skipped="${n}" time="${s(B)}">
|
|
255
|
+
`+i.join(`
|
|
256
|
+
`)+`
|
|
257
|
+
</testsuite>
|
|
258
|
+
</testsuites>
|
|
259
|
+
`}function tl(r,e){let t={passed:"\u2705",failed:"\u274C",skipped:"\u23ED\uFE0F","not run":"\u26D4"},n=i=>i.replace(/\|/g,"\\|").replace(/\r?\n/g," "),s=e.map(i=>`| ${i.step} | ${t[i.status]} ${i.status} | \`${n(i.title).slice(0,80)}\` | ${n(i.exit)} | ${(i.durationMs/1e3).toFixed(1)}s | ${n(i.message??"")} |`),B=e.filter(i=>i.status==="passed").length;return`### ${n(r)}: ${B}/${e.length} steps passed
|
|
260
|
+
|
|
261
|
+
| Step | Result | Command | Exit | Time | Note |
|
|
262
|
+
|---|---|---|---|---|---|
|
|
263
|
+
${s.join(`
|
|
264
|
+
`)}
|
|
265
|
+
`}function Za(){try{return cs.userInfo().username}catch{return process.env.USER??process.env.USERNAME??"unknown"}}function nl(r,e){let t=r?.trim();if(!t)return;let n=(e?.trim()||"failure").toLowerCase();if(n!=="failure"&&n!=="always")return`notify-on must be "failure" or "always", not "${e}"`;let s;try{s=new URL(t)}catch{return"the notification URL is not a valid URL"}let B=s.hostname==="localhost"||s.hostname==="127.0.0.1"||s.hostname==="[::1]";return s.protocol!=="https:"&&!(s.protocol==="http:"&&B)?"the notification URL must use https":{url:t,on:n}}function Cs(r){let{GITHUB_SERVER_URL:e,GITHUB_REPOSITORY:t,GITHUB_RUN_ID:n}=r;return e&&t&&n?`${e}/${t}/actions/runs/${n}`:void 0}var vC=r=>`Step ${r.step} (line ${r.line}) ${r.status==="failed"?"failed":"was not run"}${r.message?`: ${r.message}`:""}`;function rl(r,e,t){let n=e.steps.length,s=e.steps.filter(o=>o.status==="failed"||o.status==="not run"),i=[e.ok?`\u2713 ${r}: all ${n} step${n===1?"":"s"} passed`:`\u2717 ${r}: ${s.length} of ${n} steps failed or did not run`,...s.filter(o=>o.status==="failed"||o.message!=="an earlier step failed").slice(0,5).map(o=>`\u2022 ${vC(o)}`)];return t&&i.push(t),i.join(`
|
|
266
|
+
`)}function kC(r,e){let t=new URL(r).hostname.toLowerCase();return t==="discord.com"||t.endsWith(".discord.com")||t==="discordapp.com"?{content:e.slice(0,2e3)}:t.endsWith(".logic.azure.com")||t.endsWith(".powerplatform.com")||t.endsWith(".webhook.office.com")?{type:"message",attachments:[{contentType:"application/vnd.microsoft.card.adaptive",content:{$schema:"http://adaptivecards.io/schemas/adaptive-card.json",type:"AdaptiveCard",version:"1.4",body:e.split(`
|
|
267
|
+
`).map((n,s)=>({type:"TextBlock",text:n,wrap:!0,...s===0?{weight:"Bolder"}:{}}))}}]}:{text:e}}async function sl(r,e,t=fetch){let n;try{n=await t(r,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(kC(r,e)),signal:AbortSignal.timeout(15e3)})}catch(s){let B=s instanceof Error&&s.name==="TimeoutError"?"no answer within 15 s":"the request failed";throw new Error(`could not send the notification (${B})`)}if(!n.ok)throw new Error(`could not send the notification (HTTP ${n.status})`)}var Bl=require("node:child_process"),Ye=Ce(require("node:fs")),il=Ce(require("node:os")),ze=Ce(require("node:path")),ol=require("node:url");function OC(r){let e=r.env;return r.platform==="win32"?[e.ProgramFiles,e["ProgramFiles(x86)"],e.LOCALAPPDATA].filter(n=>!!n).flatMap(n=>[ze.win32.join(n,"Google","Chrome","Application","chrome.exe"),ze.win32.join(n,"Microsoft","Edge","Application","msedge.exe"),ze.win32.join(n,"Chromium","Application","chrome.exe")]):r.platform==="darwin"?["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Chromium.app/Contents/MacOS/Chromium"]:["google-chrome","google-chrome-stable","chromium","chromium-browser","microsoft-edge"].map(t=>r.which(t)).filter(t=>t!==void 0)}function bn(r,e=Rt()){return r||OC(e).find(t=>e.exists(t))}async function wn(r,e,t){let n=Ye.mkdtempSync(ze.join(il.tmpdir(),"md-runbook-pdf-")),s=ze.join(n,"report.html"),B=ze.resolve(e);Ye.writeFileSync(s,r,"utf8");try{Ye.rmSync(B,{force:!0});let i=["--headless=new","--disable-gpu","--no-first-run","--no-default-browser-check",`--user-data-dir=${ze.join(n,"profile")}`,...process.platform==="linux"&&process.getuid?.()===0?["--no-sandbox"]:[],"--no-pdf-header-footer",`--print-to-pdf=${B}`,(0,ol.pathToFileURL)(s).href];await new Promise((o,a)=>{(0,Bl.execFile)(t,i,{timeout:12e4,windowsHide:!0},(c,u,l)=>{if(Ye.existsSync(B)&&Ye.statSync(B).size>0)return o();a(new Error(`${ze.basename(t)} did not write the PDF${c?`: ${c.message}`:""}${l.trim()?`
|
|
268
|
+
${l.trim().split(`
|
|
269
|
+
`).slice(-3).join(`
|
|
270
|
+
`)}`:""}`))})})}finally{Ye.rm(n,{recursive:!0,force:!0,maxRetries:3},()=>{})}}var lt=Ce(require("node:fs")),al=Ce(require("node:path"));var hr=`Usage: md-runbook sign <file.md> --key KEY [options]
|
|
271
|
+
md-runbook verify <file.md> [--allowed-signers FILE]
|
|
272
|
+
|
|
273
|
+
sign writes a signature block at the end of the runbook: its bash blocks as servers with
|
|
274
|
+
md-runbook-gate run them, signed with ssh-keygen. Signing again keeps the name, scopes and
|
|
275
|
+
patterns and counts the version up.
|
|
276
|
+
|
|
277
|
+
--key KEY Private key, or a .pub whose key is in the SSH agent (ssh-keygen -Y sign)
|
|
278
|
+
--signer NAME Name shown as the signer (default: the key's comment)
|
|
279
|
+
--name NAME Runbook name, e.g. ops/restart-api (default: the file name)
|
|
280
|
+
--version N Version (default: the previous one + 1, else 1)
|
|
281
|
+
--expires DATE Last day it may run, YYYY-MM-DD (UTC)
|
|
282
|
+
--expires-in DAYS The same, counted from today
|
|
283
|
+
--scope NAME Where it may run (repeatable; servers and keys accept scopes)
|
|
284
|
+
--pattern NAME=RE What \${param:NAME}, \${input:NAME} or \${out:NAME} may be: a POSIX
|
|
285
|
+
extended regex for the whole value
|
|
286
|
+
--out FILE Write the signed runbook to FILE instead
|
|
287
|
+
--record Sign the run record instead (outputs, notes and all: an incident, a
|
|
288
|
+
drill), so a report can tell it was not changed afterwards
|
|
289
|
+
--cosign Add your signature to the signed runbook as it is (a reviewer's, for
|
|
290
|
+
servers that need two signers); refused if it changed since signing
|
|
291
|
+
|
|
292
|
+
verify shows what a runbook's signature covers and which blocks changed since signing. Only
|
|
293
|
+
with --allowed-signers (a server's allowed_signers file) does it check the signature as the gate
|
|
294
|
+
would; without it, the signer's name is just what the file says. Exit code 0 when everything is
|
|
295
|
+
signed (and, with --allowed-signers, the signature verifies).
|
|
296
|
+
`,nt=class extends Error{},pr=(r=0)=>new Date(Date.now()+r*864e5).toISOString().slice(0,10);function SC(r){return al.basename(r).replace(/(\.runbook)?\.md$/i,"").replace(/[^A-Za-z0-9._/-]+/g,"-").replace(/^[^A-Za-z0-9]+/,"")||"runbook"}function AC(r){let e=[...r],t={patterns:{}},n=s=>{let B=e.shift();if(B===void 0||B.startsWith("--"))throw new nt(`${s} needs a value`);return B};for(;e.length>0;){let s=e.shift();switch(s){case"--key":t.key=n(s);break;case"--signer":t.signer=n(s);break;case"--name":t.name=n(s);break;case"--out":t.out=n(s);break;case"--cosign":t.cosign=!0;break;case"--record":t.record=!0;break;case"--version":{let B=Number(n(s));if(!Number.isInteger(B)||B<1)throw new nt("--version expects a positive whole number");t.version=B;break}case"--expires":t.expires=n(s);break;case"--expires-in":{let B=Number(n(s));if(!Number.isInteger(B)||B<0)throw new nt("--expires-in expects days");t.expires=pr(B);break}case"--scope":(t.scopes??=[]).push(n(s));break;case"--pattern":{let B=n(s),i=B.indexOf("=");if(i<=0)throw new nt(`--pattern expects NAME=REGEX, got "${B}"`);t.patterns[B.slice(0,i)]=B.slice(i+1);break}default:if(s.startsWith("-"))throw new nt(`unknown option ${s}`);if(t.file)throw new nt(`one runbook at a time (got "${t.file}" and "${s}")`);t.file=s}}if(!t.file)throw new nt("missing the runbook file");if(!t.key)throw new nt("missing --key");return t}var ll=r=>{process.stdout.write(r+`
|
|
297
|
+
`)};async function ul(r,e=ll,t){if(r.includes("-h")||r.includes("--help"))return process.stdout.write(hr),0;let n;try{n=AC(r)}catch(f){if(!(f instanceof nt))throw f;return process.stderr.write(`md-runbook: ${f.message}
|
|
298
|
+
|
|
299
|
+
${hr}`),2}if(!lt.existsSync(n.file))return process.stderr.write(`md-runbook: no such file: ${n.file}
|
|
300
|
+
`),2;let s=lt.readFileSync(n.file,"utf8"),B=(()=>{let f=DB(s);try{return f?{block:f,manifest:er(f.manifest)}:void 0}catch{return}})();if(n.record)return FC(n,s,e,t);if(n.cosign)return RC(n,s,B?.block,e,t);let i={name:n.name??B?.manifest.name??SC(n.file),version:n.version??(B?B.manifest.version+1:1),...n.expires?{expires:n.expires}:{},scopes:n.scopes??B?.manifest.scopes??[],patterns:{...B?.manifest.patterns??{},...n.patterns}},o=mB(s,i);if("errors"in o){for(let f of o.errors)e(`${n.file}: error: ${f}`);return e("\u2717 not signed"),1}let a=Yt("bash",{},Rt()),c=a.ok?await NB(o.manifest,a.shell.command):void 0;if(c?.length){for(let f of c)e(`${n.file}: error: ${f}`);return e("\u2717 not signed: a server runs these commands one by one; make each a whole command (or end the cell differently)"),1}c||e(" note: bash not found, so the commands were not checked one by one (bash -n)");let u=EB(o.manifest),l;try{l=await lr(u,n.key,{sshKeygen:t})}catch(f){return e(`\u2717 ${f instanceof Error?f.message:String(f)}`),1}let C=n.signer??ur(n.key)??B?.block.signer??"unknown",h=n.out??n.file;lt.writeFileSync(h,wB(s,{signer:C,signed:pr(),manifest:u,signature:l}),"utf8");let p=o.manifest;return e(`\u2713 ${p.name} version ${p.version} signed by ${C}: ${p.cells.length} block${p.cells.length===1?"":"s"}${p.scopes.length?`, scopes ${p.scopes.join(" ")}`:""}${p.expires?`, until ${p.expires}`:""} \xB7 written to ${h}`),e(` manifest sha256 ${Bs(u)} (list it in a server's revoked file to withdraw this version)`),0}async function RC(r,e,t,n,s){if(!t)return n(`\u2717 ${r.file} is not signed yet: sign it first, then a second signer adds --cosign`),1;if(r.name||r.version||r.expires||r.scopes||Object.keys(r.patterns).length)return n("\u2717 --cosign signs the manifest as it is: --name, --version, --expires, --scope and --pattern belong to signing"),1;if(!Xo(e,t))return n(`\u2717 ${r.file} changed since ${t.signer} signed it: sign it again (a new version), then co-sign that`),1;let B;try{B=await lr(t.manifest,r.key,{sshKeygen:s})}catch(l){return n(`\u2717 ${l instanceof Error?l.message:String(l)}`),1}let i=r.signer??ur(r.key)??"unknown",o=[...(t.cosigners??[]).filter(l=>l.signer!==St(i)),{signer:i,signed:pr(),signature:B}],a=r.out??r.file,c={...t,cosigners:o};lt.writeFileSync(a,wB(e,c),"utf8");let u=er(t.manifest);return n(`\u2713 ${u.name} version ${u.version} co-signed by ${i}: signed by ${bB(c).join(", ")} \xB7 written to ${a}`),0}async function FC(r,e,t,n){let s=sr(e);if(r.cosign&&!s)return process.stderr.write(`md-runbook: ${r.file}: the run record is not signed yet (sign it first, then a second person co-signs)
|
|
301
|
+
`),1;if(r.cosign&&s&&!s.unchanged)return process.stderr.write(`md-runbook: ${r.file}: the run record changed since ${dn(s.block).join(", ")} signed it: sign it again first
|
|
302
|
+
`),1;let B=Xr(e),i;try{i=await lr(xB(B),r.key,{sshKeygen:n})}catch(l){return process.stderr.write(`md-runbook: ${l instanceof Error?l.message:String(l)}
|
|
303
|
+
`),1}let o=r.signer??ur(r.key)??"unknown",a=Oe(new Date),c=r.cosign&&s?fa(s.block,{signer:o,signed:a,signature:i}):{signer:o,signed:a,sha256:B,signature:i},u=r.out??r.file;return lt.writeFileSync(u,Ca(e,c),"utf8"),t(`\u2713 ${u}: run record signed by ${dn(c).join(", ")} (sha256 ${B})`),0}async function yC(r,e,t,n,s){let B=sr(r);if(!B)return;let i=B.block,o=(i.cosigners??[]).map(c=>`, co-signed by ${c.signer} at ${c.signed}`).join("");n(`${e}: run record signed by ${i.signer} at ${i.signed}${o} (as the file says)`),n(` record sha256 ${i.sha256}: ${B.unchanged?"unchanged since signing":`CHANGED since signing (now ${Xr(r)})`}`);let a=B.unchanged;if(t){let c=[i.signature,...(i.cosigners??[]).map(l=>l.signature)],u=dn(i);for(let l=0;l<c.length;l++)try{n(` record signature ${l+1} (${u[l]}): good, by ${await is(xB(i.sha256),c[l],t,s)} (${t})`)}catch(C){n(` record signature ${l+1} (${u[l]}): ${C instanceof Error?C.message:String(C)}`),a=!1}}else n(" record signature: NOT checked: add --allowed-signers FILE");return a}async function cl(r,e=ll,t){if(r.includes("-h")||r.includes("--help"))return process.stdout.write(hr),0;let n=[...r],s,B;for(;n.length>0;){let h=n.shift();if(h==="--allowed-signers")B=n.shift();else{if(h.startsWith("-")||s)return process.stderr.write(`md-runbook: ${h.startsWith("-")?`unknown option ${h}`:"one runbook at a time"}
|
|
304
|
+
|
|
305
|
+
${hr}`),2;s=h}}if(!s||r.includes("--allowed-signers")&&!B)return process.stderr.write(`md-runbook: ${s?"--allowed-signers needs a file":"missing the runbook file"}
|
|
306
|
+
|
|
307
|
+
${hr}`),2;if(!lt.existsSync(s))return process.stderr.write(`md-runbook: no such file: ${s}
|
|
308
|
+
`),2;let i=lt.readFileSync(s,"utf8"),o=At(i),a=await yC(i,s,B,e,t);if(!o)return a!==void 0?(e(`${a?"\u2713":"\u2717"} run record${B?"":", signature not checked"} (the runbook itself is not signed)`),a?0:1):(e(`\u2717 ${s}: ${/<!-- md-runbook:signature/.test(i)?"the signature block is damaged":"not signed"}`),1);a===!1&&e(" (the run record above does not verify)");let c=o.manifest,u=(o.block.cosigners??[]).map(h=>`, co-signed by ${h.signer} on ${h.signed}`).join("");e(`${s}: ${c.name} version ${c.version}, signed by ${o.block.signer} on ${o.block.signed}${u} (as the file says)`),e(` scopes: ${c.scopes.length?c.scopes.join(" "):"none (only servers that accept any scope)"}`),c.expires&&e(` expires: ${c.expires}${c.expires<pr()?" (expired)":""}`);for(let[h,p]of Object.entries(c.patterns))e(` parameter ${h}: ${p}`);e(` manifest sha256 ${Bs(o.block.manifest)}`);let l=!0,C=new Map(Pt(Ee(i)).map(h=>[h.cellIndex,h.line]));for(let h of o.changed)e(`${s}:${(C.get(h)??0)+1}: changed since signing: servers that only run signed runbooks refuse this block`),l=!1;for(let h of o.moved)e(`${s}:${(C.get(h)??0)+1}: moved since signing: signed as block ${o.cells.get(h).n}, after blocks that now come later`),l=!1;if(o.missing.length>0&&(e(` signed block${o.missing.length===1?"":"s"} ${o.missing.join(", ")} of ${c.cells.length} not in the file as signed (deleted or changed)`),l=!1),c.expires&&c.expires<pr()&&(l=!1),B){let h=ea(o.block),p=bB(o.block),f=new Set;for(let w=0;w<h.length;w++){let k=h.length>1?`signature ${w+1} (${p[w]})`:"signature";try{let E=await is(o.block.manifest,h[w],B,t);f.add(E),e(` ${k}: good, by ${E} (${B})`)}catch(E){e(` ${k}: ${E instanceof Error?E.message:String(E)}`),l=!1}}h.length>1&&e(` signers: ${f.size} distinct (${[...f].join(", ")||"none"})`)}else e(" signature: NOT checked (anyone can write a signer name): add --allowed-signers FILE to check it as the gate does");return e(`${l?"\u2713":"\u2717"} ${o.cells.size} signed block${o.cells.size===1?"":"s"}, ${o.changed.length} changed`+(B?"":", signature not checked")),l&&a!==!1?0:1}var bl=require("node:child_process"),rt=Ce(require("node:fs")),be=Ce(require("node:path"));var IC=pl(),dl={M:2331,L:2953};function JB(r){let e=new TextEncoder().encode(r).length,t=e<=dl.M?"M":e<=dl.L?"L":void 0;if(!t)return;let n=IC(0,t);n.addData(r,"Byte"),n.make();let s=n.getModuleCount(),B=Array.from({length:s},(i,o)=>Array.from({length:s},(a,c)=>n.isDark(o,c)));return{size:s,dark:B,level:t}}function UB(r,e={}){let t=e.scale??4,n=e.margin??4,s=(r.size+n*2)*t,B=e.caption?Math.max(14,t*4)+t*2:0,i=[];for(let a=0;a<r.size;a++){let c=0;for(;c<r.size;){if(!r.dark[a][c]){c++;continue}let u=c;for(;c<r.size&&r.dark[a][c];)c++;i.push(`M${(u+n)*t} ${(a+n)*t}h${(c-u)*t}v${t}h-${(c-u)*t}z`)}}let o=e.caption?`<text x="${s/2}" y="${s+B/2}" text-anchor="middle" dominant-baseline="middle" font-family="system-ui, sans-serif" font-size="${Math.max(12,t*3.5)}" fill="#000">${Z(e.caption)}</text>`:"";return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${s} ${s+B}" width="${s}" height="${s+B}" shape-rendering="crispEdges"><rect width="100%" height="100%" fill="#fff"/><path fill="#000" d="${i.join("")}"/>${o}</svg>`}function gl(r,e){let t=[],n=e.map(B=>{let i=JB(B.link);return i?`<figure class="label">${UB(i,{scale:3})}<figcaption><strong>${Z(B.title)}</strong>${B.subtitle?`<span>${Z(B.subtitle)}</span>`:""}</figcaption></figure>`:(t.push(B.title),"")});return{html:`<!doctype html>
|
|
309
|
+
<html lang="en"><head><meta charset="utf-8">
|
|
310
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; img-src data:">
|
|
311
|
+
<title>${Z(r)}</title>
|
|
312
|
+
<style>
|
|
313
|
+
@page{size:A4;margin:12mm}
|
|
314
|
+
body{font-family:system-ui,sans-serif;margin:0;color:#000;background:#fff}
|
|
315
|
+
h1{font-size:14px;font-weight:600;margin:0 0 8mm}
|
|
316
|
+
.sheet{display:grid;grid-template-columns:repeat(3,1fr);gap:6mm}
|
|
317
|
+
.label{margin:0;padding:4mm;border:1px dashed #999;break-inside:avoid;text-align:center}
|
|
318
|
+
.label svg{width:100%;height:auto;max-width:52mm}
|
|
319
|
+
figcaption{font-size:11px;line-height:1.35;margin-top:2mm;overflow-wrap:anywhere}
|
|
320
|
+
figcaption span{display:block;color:#333}
|
|
321
|
+
</style></head><body>
|
|
322
|
+
<h1>${Z(r)}</h1>
|
|
323
|
+
<div class="sheet">
|
|
324
|
+
${n.filter(Boolean).join(`
|
|
325
|
+
`)}
|
|
326
|
+
</div>
|
|
327
|
+
</body></html>
|
|
328
|
+
`,tooLong:t}}function ml(r){let e=[],t=[],n="",s=!1,B=r.replace(/^/,"");for(let c=0;c<B.length;c++){let u=B[c];s?u==='"'&&B[c+1]==='"'?(n+='"',c++):u==='"'?s=!1:n+=u:u==='"'?s=!0:u===","?(t.push(n),n=""):u===`
|
|
329
|
+
`||u==="\r"?(u==="\r"&&B[c+1]===`
|
|
330
|
+
`&&c++,t.push(n),e.push(t),t=[],n=""):n+=u}(n!==""||t.length>0)&&(t.push(n),e.push(t));let[i,...o]=e.filter(c=>c.some(u=>u.trim()!==""));if(!i)return[];let a=i.map(c=>c.trim());return o.map(c=>Object.fromEntries(a.map((u,l)=>[u,(c[l]??"").trim()])))}function El(r,e,t){let n=r.trim().replace(/\.git$/,""),s=/^(?:git@([^:]+):|ssh:\/\/(?:[^@/]+@)?([^/:]+)(?::\d+)?\/|https:\/\/(?:[^@/]+@)?([^/]+)\/)(.+)$/.exec(n);if(!s)return;let B=(s[1]??s[2]??s[3]).toLowerCase(),i=s[4],o=c=>c.split(/[\\/]/).map(encodeURIComponent).join("/"),a=o(t);if(B==="github.com")return`https://github.com/${i}/blob/${o(e)}/${a}`;if(B.includes("gitlab"))return`https://${B}/${i}/-/blob/${o(e)}/${a}`}var Dl=`Usage: md-runbook qr <file.md> [options]
|
|
331
|
+
md-runbook link <file.md> [options] (prints the link: a pager alert, a chat)
|
|
332
|
+
md-runbook qr <file.md> --labels hosts.csv [options]
|
|
333
|
+
|
|
334
|
+
Makes a QR code that opens the runbook in the md-runbook app (Scan a code). It carries the
|
|
335
|
+
runbook's address, or the runbook itself; nothing runs from a code, and only a signed runbook
|
|
336
|
+
says who approved it.
|
|
337
|
+
|
|
338
|
+
--embed Put the runbook itself in the code, without outputs: no network needed
|
|
339
|
+
(a code holds about 2 KB). Default: its address
|
|
340
|
+
--url URL The runbook's https address. Default: its file on GitHub or GitLab, from
|
|
341
|
+
the Git remote, pinned (sha256=) to the pushed file
|
|
342
|
+
--pin With --url: pin the address to this file's content
|
|
343
|
+
--host NAME The host in the app to run on
|
|
344
|
+
--param NAME=VALUE A parameter value (repeatable)
|
|
345
|
+
--cosign Open on Co-sign Runbook
|
|
346
|
+
--web-app URL Make https links on the web app (https://\u2026/open) instead of mdrunbook://
|
|
347
|
+
--vscode (link only) Make links that open the runbook in VS Code
|
|
348
|
+
(vscode://smojon.md-runbook/open?\u2026), for a laptop
|
|
349
|
+
--labels FILE.csv One label per row: column host (the app's host name), optional label
|
|
350
|
+
(printed under it) and p.NAME columns (parameter values)
|
|
351
|
+
--out FILE .svg (one code), .html or .pdf (labels). Default: next to the runbook
|
|
352
|
+
--browser PATH Browser for a .pdf (default: CHROME_PATH, else one found on this machine)
|
|
353
|
+
--link Print the link too
|
|
354
|
+
`,Qe=class extends Error{},TC=r=>{process.stdout.write(r+`
|
|
355
|
+
`)};function LC(r){let e=[...r],t={file:"",embed:!1,pin:!1,params:{},cosign:!1,vscode:!1,printLink:!1},n=s=>{let B=e.shift();if(B===void 0||B.startsWith("--"))throw new Qe(`${s} needs a value`);return B};for(;e.length>0;){let s=e.shift();switch(s){case"--embed":t.embed=!0;break;case"--url":t.url=n(s);break;case"--pin":t.pin=!0;break;case"--host":t.host=n(s);break;case"--param":{let B=n(s),i=B.indexOf("=");if(i<=0||!ft.test(B.slice(0,i)))throw new Qe(`--param expects NAME=VALUE, got "${B}"`);t.params[B.slice(0,i)]=B.slice(i+1);break}case"--cosign":t.cosign=!0;break;case"--web-app":t.webApp=n(s);break;case"--vscode":t.vscode=!0;break;case"--labels":t.labels=n(s);break;case"--out":t.out=n(s);break;case"--browser":t.browser=n(s);break;case"--link":t.printLink=!0;break;default:if(s.startsWith("-"))throw new Qe(`unknown option ${s}`);if(t.file)throw new Qe(`one runbook at a time (got ${t.file} and ${s})`);t.file=s}}if(!t.file)throw new Qe("missing the runbook file");if(t.embed&&t.url)throw new Qe("--embed and --url: choose one");if(t.pin&&!t.url)throw new Qe("--pin goes with --url (the Git address is pinned anyway)");if(t.webApp&&!/^https:\/\/[^/]+\/(?:.*\/)?open$/.test(t.webApp))throw new Qe("--web-app expects https://<web app>/open");if(t.webApp&&t.vscode)throw new Qe("--web-app and --vscode: choose one");return t}var fs=(r,e)=>(0,bl.execFileSync)("git",e,{cwd:r,encoding:"utf8",windowsHide:!0,timeout:1e4,stdio:["ignore","pipe","ignore"],maxBuffer:8*1024*1024});function NC(r){let e=be.dirname(be.resolve(r)),t,n,s;try{t=fs(e,["rev-parse","--show-toplevel"]).trim(),n=fs(e,["remote","get-url","origin"]).trim(),s=fs(e,["rev-parse","--abbrev-ref","HEAD"]).trim()}catch{return"not in a Git repository with a remote: use --embed, or --url"}let B=be.relative(t,be.resolve(r)).split(be.sep).join("/"),i=El(n,s,B);if(!i)return`the app opens GitHub and GitLab addresses; this repository's remote is ${n}: use --embed, or --url`;try{return{web:i,sha256:rr(fs(t,["show",`origin/${s}:${B}`]))}}catch{return{web:i}}}async function KB(r,e=TC,t=!1){if(r.includes("-h")||r.includes("--help"))return process.stdout.write(Dl),0;let n;try{n=LC(r)}catch(f){if(!(f instanceof Qe))throw f;return process.stderr.write(`md-runbook: ${f.message}
|
|
356
|
+
|
|
357
|
+
${Dl}`),2}if(!rt.existsSync(n.file))return process.stderr.write(`md-runbook: no such file: ${n.file}
|
|
358
|
+
`),2;if(n.vscode&&!t)return process.stderr.write(`md-runbook: --vscode is for md-runbook link (a phone camera does not open VS Code links)
|
|
359
|
+
`),2;let s=rt.readFileSync(n.file,"utf8"),B={params:{...n.params},...n.cosign?{action:"cosign"}:{}};if(n.embed)B.text=ys(s);else if(n.url)B.url=n.url,n.pin&&(B.sha256=rr(s));else{let f=NC(n.file);if(typeof f=="string")return process.stderr.write(`md-runbook: ${f}
|
|
360
|
+
`),2;B.url=f.web,f.sha256?B.sha256=f.sha256:process.stderr.write(`md-runbook: the file is not pushed yet (no origin version): the link is not pinned
|
|
361
|
+
`)}let i=f=>n.vscode?Ba(f):nr(f,n.webApp??Zr),o=f=>{let w=n.vscode?ia(decodeURIComponent(f.slice(f.indexOf("?")+1))):Vr(f);return w.ok?void 0:w.problem},a=be.basename(n.file).replace(/\.md$/i,""),c=/^#\s+(.+)$/m.exec(s)?.[1]?.trim()??a;if(!n.labels){n.host&&(B.host=n.host);let f=i(B),w=o(f);if(w)return process.stderr.write(`md-runbook: the app would refuse this link (${w})
|
|
362
|
+
`),2;if(t)return e(f),0;let k=JB(f);if(!k)return process.stderr.write(`md-runbook: too much for a QR code (${Buffer.byteLength(f)} bytes; 2953 at most): use its address instead of --embed
|
|
363
|
+
`),1;let E=n.out??be.join(be.dirname(n.file),`${a}.qr.svg`);return rt.mkdirSync(be.dirname(be.resolve(E)),{recursive:!0}),rt.writeFileSync(E,UB(k,{scale:8,caption:n.host??c})+`
|
|
364
|
+
`,"utf8"),n.printLink&&e(f),e(`\u2713 ${E}: QR code (${k.size}\xD7${k.size}, level ${k.level}) for ${n.host?`${c} on ${n.host}`:c}`),0}if(n.host)return process.stderr.write(`md-runbook: --host and --labels: the hosts come from the CSV
|
|
365
|
+
`),2;let u=ml(rt.readFileSync(n.labels,"utf8"));if(u.length===0||!("host"in u[0]))return process.stderr.write(`md-runbook: ${n.labels}: expected a header row with a host column (and optional label, p.NAME columns)
|
|
366
|
+
`),2;let l=[];for(let[f,w]of u.entries()){let k={...B.params};for(let[O,I]of Object.entries(w))O.startsWith("p.")&&I!==""&&(k[O.slice(2)]=I);let E=i({...B,...w.host?{host:w.host}:{},params:k}),x=o(E);if(x)return process.stderr.write(`md-runbook: ${n.labels} row ${f+2}: the app would refuse its link (${x})
|
|
367
|
+
`),2;t?e(`${w.host} ${E}`):n.printLink&&e(E),l.push({link:E,title:w.host||c,subtitle:w.label||(w.host?c:void 0)})}if(t)return 0;let{html:C,tooLong:h}=gl(c,l);if(h.length>0)return process.stderr.write(`md-runbook: too much for a QR code: ${h.join(", ")} (use its address instead of --embed)
|
|
368
|
+
`),1;let p=n.out??be.join(be.dirname(n.file),`${a}.labels.html`);if(rt.mkdirSync(be.dirname(be.resolve(p)),{recursive:!0}),/\.pdf$/i.test(p)){let f=bn(n.browser??process.env.CHROME_PATH);if(!f)return process.stderr.write(`md-runbook: a .pdf needs Chrome, Edge or Chromium; none was found (use --browser PATH or CHROME_PATH), or write .html
|
|
369
|
+
`),1;await wn(C,p,f)}else rt.writeFileSync(p,C,"utf8");return e(`\u2713 ${p}: ${l.length} label${l.length===1?"":"s"}`),0}var st=Ce(require("node:fs")),Vt=Ce(require("node:path"));function wl(r){let e=[],t=0;for(let n of r.split(/\r?\n/)){if(n.trim()==="")continue;let s=n.indexOf("{");if(s<0){t++;continue}try{let B=JSON.parse(n.slice(s));typeof B.time=="string"&&typeof B.event=="string"?e.push(B):t++}catch{t++}}return{events:e,skipped:t}}var ie=r=>typeof r=="string"?r:r===void 0?"":String(r);function xl(r,e=0){let t=[...r].sort((l,C)=>Date.parse(l.time)-Date.parse(C.time)),n=[],s=[],B=[],i=new Map,o=new Map,a=new Map,c=0,u=l=>`${ie(l.account)}
|
|
370
|
+
${ie(l.who)}
|
|
371
|
+
${ie(l.client)}`;for(let l of t){let C=u(l);switch(l.event){case"session":c++,i.set(C,new Map);break;case"load":i.has(C)||i.set(C,new Map),i.get(C).set(ie(l.runbook),{});break;case"param":{let h=i.get(C)??new Map;i.set(C,h);let p=h.get(ie(l.runbook))??{};p[ie(l.name)]=ie(l.value),h.set(ie(l.runbook),p);break}case"run":{let h={time:l.time,account:ie(l.account),who:ie(l.who),client:ie(l.client),runbook:ie(l.runbook),version:ie(l.version),hash:ie(l.hash),signer:ie(l.signer),cell:ie(l.cell),step:ie(l.step),params:{...i.get(C)?.get(ie(l.runbook))??{}}};n.push(h),o.set(ie(l.id),h),a.set(ie(l.id),h);break}case"probe":{let h=Number(ie(l.days_left)),p=l.run===void 0?void 0:a.get(ie(l.run));B.push({time:l.time,account:ie(l.account),who:ie(l.who),client:ie(l.client),target:ie(l.target),address:ie(l.address),ok:l.result==="ok",detail:ie(l.detail),...ie(l.days_left)!==""&&Number.isFinite(h)?{daysLeft:h}:{},...l.not_after?{notAfter:ie(l.not_after)}:{},...l.cert_sha256?{certSha256:ie(l.cert_sha256)}:{},...p?{run:p}:{}});break}case"end":{let h=o.get(ie(l.id));if(!h)break;o.delete(ie(l.id)),h.ended=l.time,h.durationSeconds=Math.max(0,Math.round((Date.parse(l.time)-Date.parse(h.time))/1e3)),typeof l.exit=="number"&&(h.exit=l.exit);break}case"refused":case"unsigned":case"stop":s.push({time:l.time,kind:l.event,account:ie(l.account),who:ie(l.who),client:ie(l.client),detail:l.event==="refused"?ie(l.reason):l.event==="unsigned"?`unsigned code, sha256 ${ie(l.hash)}`:`stopped (${ie(l.signal)})`});break}}return{runs:n,findings:s,probes:B,sessions:c,skipped:e}}function vl(r,e){let t=n=>(!e.since||Date.parse(n)>=e.since.getTime())&&(!e.until||Date.parse(n)<=e.until.getTime());return{...r,runs:r.runs.filter(n=>t(n.time)&&(!e.runbook||n.runbook===e.runbook)&&(!e.who||n.who===e.who)),findings:r.findings.filter(n=>t(n.time)&&(!e.who||n.who===e.who)),probes:r.probes.filter(n=>t(n.time)&&(!e.who||n.who===e.who)&&(!e.runbook||n.run?.runbook===e.runbook))}}function kl(r,e,t,n=120){let s=At(t),B=s?.manifest.name??"",i=Ee(t),o=i.cells.map(C=>pe(C.meta)?ve(C.meta.info):void 0),a=vt(i.cells.map((C,h)=>pe(C.meta)?{kind:"code",os:o[h]?.os}:{kind:"markup"})),c=[],u=[],l=new Set;for(let[C,h]of i.cells.entries()){let p=a[C];if(p===void 0||!pe(h.meta))continue;let f=h.output?.attrs.ran;if(!f||Number.isNaN(Date.parse(f)))continue;let w=s?.cells.get(C)?.n;if(w===void 0)continue;let k=r.runs.find(E=>!l.has(E)&&E.runbook===B&&E.cell===String(w)&&Math.abs(Date.parse(E.time)-Date.parse(f))<=n*1e3);k?(l.add(k),k.matched={file:e,step:p},c.push({step:p,ran:f})):u.push({step:p,ran:f})}return{file:e,runbook:B,confirmed:c,missing:u}}var xn=r=>r.replace("T"," ").replace(/Z$/," UTC");function Ol(r,e,t){let n=r.runs,s=n.filter(f=>f.exit!==void 0&&f.exit!==0).length,B=new Set(n.map(f=>f.who)),i=n.length?`${xn(n[0].time)} \u2013 ${xn(n[n.length-1].time)}`:"no runs",o=new Map;for(let f of n){let w=`${f.runbook} v${f.version}`,k=o.get(w)??{version:f.version,signer:f.signer,runs:0,failed:0};k.runs++,f.exit!==void 0&&f.exit!==0&&k.failed++,o.set(w,k)}let a=f=>`<td>${Z(f)}</td>`,c=f=>f.exit===void 0?'<span class="badge none">no end logged</span>':`<span class="badge ${f.exit===0?"ok":"fail"}">exit ${f.exit}</span>`,u=n.map(f=>`<tr>${a(xn(f.time))}${a(f.who)}${a(`${f.account} from ${f.client}`)}${a(`${f.runbook} v${f.version}`)}${a(`${f.cell}${f.step?`.${f.step}`:""}`)}${a(Object.entries(f.params).map(([w,k])=>`${w}=${k}`).join(" "))}<td>${c(f)}</td>${a(f.durationSeconds===void 0?"":`${f.durationSeconds} s`)}${a(f.matched?`${f.matched.file}, step ${f.matched.step}`:"")}</tr>
|
|
372
|
+
`).join(""),l=r.findings.map(f=>`<tr>${a(xn(f.time))}${a(f.kind)}${a(f.who)}${a(`${f.account} from ${f.client}`)}${a(f.detail)}</tr>
|
|
373
|
+
`).join(""),C=r.probes.map(f=>`<tr>${a(xn(f.time))}${a(f.who)}${a(f.target)}${a(f.address)}<td><span class="badge ${f.ok?"ok":"fail"}">${f.ok?"up":"failed"}</span></td>${a(f.notAfter?`${xn(f.notAfter)}${f.daysLeft===void 0?"":` (${f.daysLeft} days)`}`:"")}${a(f.certSha256?`sha256 ${f.certSha256}`:"")}${a(f.run?`${f.run.runbook} v${f.run.version}, block ${f.run.cell}`:"unsigned or by hand")}${a(f.detail)}</tr>
|
|
374
|
+
`).join(""),h=[...o.entries()].map(([f,w])=>`<tr>${a(f)}${a(w.signer)}${a(String(w.runs))}${a(String(w.failed))}</tr>
|
|
375
|
+
`).join(""),p=e.map(f=>`<h3>${Z(f.file)}${f.runbook?` (${Z(f.runbook)})`:""}</h3>
|
|
376
|
+
<p>${f.confirmed.length} recorded run${f.confirmed.length===1?"":"s"} of signed blocks confirmed by the log`+(f.missing.length?`; <strong>not in the log</strong>: ${f.missing.map(w=>`step ${w.step} at ${Z(w.ran)}`).join(", ")} (ran elsewhere, unsigned, or the log is incomplete)`:"")+`.</p>
|
|
377
|
+
`).join("");return`<!DOCTYPE html>
|
|
378
|
+
<html lang="en">
|
|
379
|
+
<head>
|
|
380
|
+
<meta charset="utf-8">
|
|
381
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'">
|
|
382
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
383
|
+
<meta name="generator" content="md-runbook audit">
|
|
384
|
+
<title>Gate audit</title>
|
|
385
|
+
<style>${OB}@page{@bottom-right{content:"Page " counter(page) " of " counter(pages);font:10px sans-serif;color:#656d76}}</style>
|
|
386
|
+
</head>
|
|
387
|
+
<body>
|
|
388
|
+
<header>
|
|
389
|
+
<h1 class="title">Gate audit</h1>
|
|
390
|
+
<p class="meta">Generated ${Z(Oe(t.generatedAt))} from ${Z(t.sources.join(", "))} \xB7 ${r.sessions} session${r.sessions===1?"":"s"} \xB7 ${n.length} run${n.length===1?"":"s"} by ${B.size} ${B.size===1?"key":"keys"} \xB7 ${s} failed \xB7 ${r.findings.length} finding${r.findings.length===1?"":"s"}</p>
|
|
391
|
+
</header>
|
|
392
|
+
<section class="record">
|
|
393
|
+
<dl class="facts"><div><dt>Period</dt><dd>${Z(i)}</dd></div><div><dt>Runs</dt><dd>${n.length}${s?` \xB7 ${s} failed`:""}</dd></div><div><dt>Findings</dt><dd>${r.findings.length}</dd></div>${r.skipped?`<div><dt>Other log lines</dt><dd>${r.skipped} skipped</dd></div>`:""}</dl>
|
|
394
|
+
</section>
|
|
395
|
+
<h2>Runbooks</h2>
|
|
396
|
+
<table class="timeline"><thead><tr><th>Runbook</th><th>Signer (as the gate accepted)</th><th>Runs</th><th>Failed</th></tr></thead><tbody>
|
|
397
|
+
${h}</tbody></table>
|
|
398
|
+
<h2>Runs</h2>
|
|
399
|
+
<table class="timeline"><thead><tr><th>Time</th><th>Who (key)</th><th>Account, client</th><th>Runbook</th><th>Block</th><th>Parameters</th><th>Result</th><th>Duration</th><th>In run record</th></tr></thead><tbody>
|
|
400
|
+
${u}</tbody></table>
|
|
401
|
+
<h2>Findings</h2>
|
|
402
|
+
${l?`<table class="timeline"><thead><tr><th>Time</th><th>What</th><th>Who (key)</th><th>Account, client</th><th>Detail</th></tr></thead><tbody>
|
|
403
|
+
${l}</tbody></table>`:"<p>None: no refusals, no unsigned code, no stopped runs.</p>"}
|
|
404
|
+
${C?`<h2>Endpoint checks</h2>
|
|
405
|
+
<table class="timeline"><thead><tr><th>Time</th><th>Who (key)</th><th>Endpoint</th><th>Address</th><th>Result</th><th>Certificate expires</th><th>Certificate</th><th>Signed run</th><th>Detail</th></tr></thead><tbody>
|
|
406
|
+
${C}</tbody></table>
|
|
407
|
+
`:""}${e.length?`<h2>Run records</h2>
|
|
408
|
+
${p}`:""}</body>
|
|
409
|
+
</html>
|
|
410
|
+
`}var Sl=`Usage: md-runbook audit <gate log>... [options]
|
|
411
|
+
|
|
412
|
+
Reads md-runbook-gate's log (its log file, or syslog: journalctl -t md-runbook-gate -o cat, or
|
|
413
|
+
/var/log/syslog lines with the tag) and reports every run of a signed runbook: when, the key
|
|
414
|
+
(its fingerprint, or the gate's --who name), the account and client, the runbook, version and
|
|
415
|
+
signer, the block, the parameter values, the exit code and duration; and the findings: refused
|
|
416
|
+
requests, unsigned code (where allowed) and stopped runs. On an ops host, also each endpoint
|
|
417
|
+
md-runbook-probe checked (up or not, the certificate's expiry and fingerprint, the signed run
|
|
418
|
+
that checked it). "-" reads standard input.
|
|
419
|
+
|
|
420
|
+
--record FILE.md A saved run record (the runbook with its outputs, e.g. an incident's
|
|
421
|
+
copy) to match: each recorded run of a signed block the log confirms, and
|
|
422
|
+
the ones it doesn't show (repeatable)
|
|
423
|
+
--since DATE Only from this time on (2026-10-26, or 2026-10-26T22:00:00Z)
|
|
424
|
+
--until DATE Only up to this time
|
|
425
|
+
--runbook NAME Only this runbook (its signed name, e.g. ops/restart-api)
|
|
426
|
+
--who KEY Only this key (its fingerprint or --who name, as the log has it)
|
|
427
|
+
--out FILE .html (default: gate-audit.html), .pdf or .json
|
|
428
|
+
--browser PATH Browser for a .pdf (default: CHROME_PATH, else one found on this machine)
|
|
429
|
+
|
|
430
|
+
Exit code 0: nothing to flag; 1: findings, or recorded runs the log doesn't show; 2: usage.
|
|
431
|
+
`,It=class extends Error{},$C=r=>{process.stdout.write(r+`
|
|
432
|
+
`)};function Al(r,e){let t=new Date(/^\d{4}-\d{2}-\d{2}$/.test(e)?`${e}T00:00:00Z`:e);if(Number.isNaN(t.getTime()))throw new It(`${r} expects a date or time, got "${e}"`);return t}function GC(r){let e=[...r],t={logs:[],records:[],out:"gate-audit.html"},n=s=>{let B=e.shift();if(B===void 0||B.startsWith("--"))throw new It(`${s} needs a value`);return B};for(;e.length>0;){let s=e.shift();switch(s){case"--record":t.records.push(n(s));break;case"--since":t.since=Al(s,n(s));break;case"--until":t.until=Al(s,n(s));break;case"--runbook":t.runbook=n(s);break;case"--who":t.who=n(s);break;case"--out":t.out=n(s);break;case"--browser":t.browser=n(s);break;default:if(s.startsWith("--"))throw new It(`unknown option ${s}`);t.logs.push(s)}}if(t.logs.length===0)throw new It("missing the gate log (a file, or - for standard input)");if(!/\.(html?|pdf|json)$/i.test(t.out))throw new It("--out must end in .html, .pdf or .json");return t}async function Rl(r,e=$C,t=()=>st.readFileSync(0,"utf8")){if(r.includes("-h")||r.includes("--help"))return process.stdout.write(Sl),0;let n;try{n=GC(r)}catch(l){if(!(l instanceof It))throw l;return process.stderr.write(`md-runbook: ${l.message}
|
|
433
|
+
|
|
434
|
+
${Sl}`),2}for(let l of[...n.logs.filter(C=>C!=="-"),...n.records])if(!st.existsSync(l))return process.stderr.write(`md-runbook: no such file: ${l}
|
|
435
|
+
`),2;let s=0,B=n.logs.flatMap(l=>{let C=wl(l==="-"?t():st.readFileSync(l,"utf8"));return s+=C.skipped,C.events}),i=vl(xl(B,s),n),o=n.records.map(l=>kl(i,Vt.basename(l),st.readFileSync(l,"utf8")));if(st.mkdirSync(Vt.dirname(Vt.resolve(n.out)),{recursive:!0}),/\.json$/i.test(n.out)){let l=i.probes.map(({run:C,...h})=>({...h,...C?{run:{time:C.time,runbook:C.runbook,version:C.version,cell:C.cell}}:{}}));st.writeFileSync(n.out,JSON.stringify({format:"md-runbook gate audit v1",sources:n.logs,...i,probes:l,records:o},null,2)+`
|
|
436
|
+
`,"utf8")}else{let l=Ol(i,o,{generatedAt:new Date,sources:n.logs.map(C=>C==="-"?"standard input":Vt.basename(C))});if(/\.pdf$/i.test(n.out)){let C=bn(n.browser??process.env.CHROME_PATH);if(!C)return process.stderr.write(`md-runbook: a .pdf needs Chrome, Edge or Chromium; none was found (use --browser PATH or CHROME_PATH), or write .html
|
|
437
|
+
`),2;await wn(l,n.out,C)}else st.writeFileSync(n.out,l,"utf8")}let a=i.runs.filter(l=>l.exit!==void 0&&l.exit!==0).length,c=o.reduce((l,C)=>l+C.missing.length,0);e(`${i.runs.length} run${i.runs.length===1?"":"s"} in ${i.sessions} session${i.sessions===1?"":"s"}, ${a} failed, ${i.findings.length} finding${i.findings.length===1?"":"s"}`);for(let l of i.findings)e(` ${l.time} ${l.kind}: ${l.who} (${l.account} from ${l.client}): ${l.detail}`);if(i.probes.length){let l=i.probes.filter(C=>!C.ok);e(`${i.probes.length} endpoint check${i.probes.length===1?"":"s"} (md-runbook-probe), ${l.length} failed`);for(let C of l)e(` ${C.time} ${C.target}: ${C.detail}`)}for(let l of o)e(` ${l.file}: ${l.confirmed.length} recorded run${l.confirmed.length===1?"":"s"} confirmed by the log${l.missing.length?`, ${l.missing.length} not in it (steps ${l.missing.map(C=>C.step).join(", ")})`:""}`);let u=i.findings.length>0||c>0;return e(`${u?"\u2717":"\u2713"} ${n.out}`),u?1:0}var jB=`Usage: md-runbook run <file.md> [options]
|
|
438
|
+
md-runbook lint <file.md>... [--strict]
|
|
439
|
+
md-runbook sign <file.md> --key KEY [options] (see md-runbook sign --help)
|
|
440
|
+
md-runbook verify <file.md> [--allowed-signers FILE]
|
|
441
|
+
md-runbook qr <file.md> [options] (see md-runbook qr --help)
|
|
442
|
+
md-runbook link <file.md> [options] (the qr options; prints the link)
|
|
443
|
+
md-runbook audit <gate log>... [options] (see md-runbook audit --help)
|
|
444
|
+
|
|
445
|
+
Runs the bash, pwsh/powershell and cmd blocks of a Markdown runbook in order and writes their
|
|
446
|
+
output into the file, as the VS Code extension does. Stops at the first failed step.
|
|
447
|
+
|
|
448
|
+
Options:
|
|
449
|
+
--check Run, but don't write the outputs into the file
|
|
450
|
+
--out FILE Write the runbook with its outputs to FILE instead
|
|
451
|
+
--report FILE.html Also write the HTML report
|
|
452
|
+
--pdf FILE.pdf Also write the report as PDF (needs Chrome, Edge or Chromium)
|
|
453
|
+
--browser PATH Browser for --pdf (default: CHROME_PATH, else one found on this machine)
|
|
454
|
+
--junit FILE.xml Also write a JUnit report (one test case per step)
|
|
455
|
+
--json FILE.json Also write the step results as JSON (status, exit, message, output) and
|
|
456
|
+
the run record (every run, attempt and note in time order)
|
|
457
|
+
--transcript FILE Also append each step to FILE as it runs: the command, every output line
|
|
458
|
+
("| " stdout, "! " stderr), exit code and time (redacted; tail -f it)
|
|
459
|
+
--param NAME=VALUE Value for \${param:NAME} (repeatable; default: the front matter's)
|
|
460
|
+
--input NAME=VALUE Value for \${input:NAME} (repeatable; default: environment variable NAME)
|
|
461
|
+
--yes Run blocks that ask for confirmation in VS Code (risky commands, confirm);
|
|
462
|
+
without it, a run that has such blocks stops before the first step
|
|
463
|
+
--from N, --to N Run only steps N to M (the numbers of the "\u25B6 Step N" lines); the others
|
|
464
|
+
are skipped and keep their outputs
|
|
465
|
+
--section TEXT Run only the steps under headings that start with TEXT, e.g. "3." or
|
|
466
|
+
"Rollback" (repeatable; with --from/--to, both must hold)
|
|
467
|
+
--keep-going Carry on after a failed step
|
|
468
|
+
--session Run all blocks of a shell in one process (like session mode)
|
|
469
|
+
--isolated One process per block, even with "mode: session" in the front matter
|
|
470
|
+
--timeout SECONDS Default timeout per block (the front matter and timeout= win)
|
|
471
|
+
--bash PATH bash to use (e.g. Git Bash on Windows)
|
|
472
|
+
--pwsh PATH PowerShell to use
|
|
473
|
+
--notify URL Post a summary to a chat webhook (Slack, Teams Workflows, Discord, Google
|
|
474
|
+
Chat); better: the environment variable MD_RUNBOOK_NOTIFY_URL
|
|
475
|
+
--notify-on WHEN failure (default) or always; or MD_RUNBOOK_NOTIFY_ON
|
|
476
|
+
--quiet Only print the summary
|
|
477
|
+
-h, --help Show this help
|
|
478
|
+
--version Show the version
|
|
479
|
+
|
|
480
|
+
lint checks runbooks without running them (invalid or unknown cell options, \${out:NAME}
|
|
481
|
+
without an earlier capture=NAME, undeclared \${param:NAME}, ignored front matter values) and
|
|
482
|
+
exits with 1 when it finds an error (with --strict: also a warning).
|
|
483
|
+
|
|
484
|
+
\${secret:NAME} values come from the environment variable NAME and are redacted from output.
|
|
485
|
+
On GitHub Actions, a summary table is added to the job summary.
|
|
486
|
+
`,Ue=class extends Error{};function hs(r,e){qe.mkdirSync(Et.dirname(Et.resolve(r)),{recursive:!0}),qe.writeFileSync(r,e,"utf8")}function Fl(r){let e=[...r];if(e.length===0||e[0]==="-h"||e[0]==="--help")return"help";if(e[0]==="--version")return"version";if(e[0]!=="run")throw new Ue(`unknown command "${e[0]}" (expected run, lint, sign, verify, qr, link or audit)`);e.shift();let t={file:"",write:!0,params:{},inputs:{},yes:!1,keepGoing:!1,shell:{}},n,s,B,i,o=!1,a=u=>{let l=e.shift();if(l===void 0||l.startsWith("--"))throw new Ue(`${u} needs a value`);return l},c=(u,l)=>{let C=a(u),h=C.indexOf("=");if(h<=0)throw new Ue(`${u} expects NAME=VALUE, got "${C}"`);l[C.slice(0,h)]=C.slice(h+1)};for(;e.length>0;){let u=e.shift();switch(u){case"--check":t.write=!1;break;case"--out":t.out=a(u);break;case"--report":t.report=a(u);break;case"--pdf":n=a(u);break;case"--browser":s=a(u);break;case"--notify":B=a(u);break;case"--notify-on":i=a(u);break;case"--junit":t.junit=a(u);break;case"--json":t.json=a(u);break;case"--transcript":t.transcript=a(u);break;case"--param":c(u,t.params);break;case"--input":c(u,t.inputs);break;case"--yes":t.yes=!0;break;case"--keep-going":t.keepGoing=!0;break;case"--from":case"--to":{let l=a(u);if(!/^[1-9]\d*$/.test(l))throw new Ue(`${u} expects a step number (1, 2, \u2026), got "${l}"`);t[u==="--from"?"from":"to"]=Number(l);break}case"--section":{let l=a(u);if(l.trim()==="")throw new Ue("--section needs the start of a heading");(t.sections??=[]).push(l);break}case"--session":t.session=!0;break;case"--isolated":t.session=!1;break;case"--timeout":{let l=Number(a(u));if(!Number.isFinite(l)||l<0)throw new Ue("--timeout expects seconds (0 = none)");t.timeoutSeconds=l;break}case"--bash":t.shell.bashPath=a(u);break;case"--pwsh":t.shell.pwshPath=a(u);break;case"--quiet":o=!0;break;default:if(u.startsWith("-"))throw new Ue(`unknown option ${u}`);if(t.file)throw new Ue(`only one runbook per run (got "${t.file}" and "${u}")`);t.file=u}}if(!t.file)throw new Ue("missing the runbook file");if(t.from!==void 0&&t.to!==void 0&&t.from>t.to)throw new Ue(`--from ${t.from} is after --to ${t.to}`);return{options:t,...n?{pdf:n}:{},...s?{browser:s}:{},...B?{notify:B}:{},...i?{notifyOn:i}:{},quiet:o}}function yl(r,e=t=>{process.stdout.write(t+`
|
|
487
|
+
`)}){let t=r.includes("--strict"),n=r.filter(a=>a!=="--strict"),s=n.find(a=>a.startsWith("-"));if(s||n.length===0)return process.stderr.write(`md-runbook: ${s?`unknown option ${s}`:"missing the runbook file(s)"}
|
|
488
|
+
|
|
489
|
+
${jB}`),2;let B=process.env.GITHUB_ACTIONS==="true",i=!1,o=0;for(let a of n){if(!qe.existsSync(a)){e(`${a}: error: no such file`),i=!0;continue}for(let c of ga(qe.readFileSync(a,"utf8")))o++,e(ma(a,c)),B&&e(`::${c.severity} file=${a},line=${c.line+1}::${c.message.replace(/\r?\n/g," ")}`),(c.severity==="error"||t)&&(i=!0)}return e(`${i?"\u2717":"\u2713"} ${n.length} runbook${n.length===1?"":"s"} checked, ${o} problem${o===1?"":"s"}`),i?1:0}async function Il(r){if(r[0]==="lint")return yl(r.slice(1));if(r[0]==="sign")return ul(r.slice(1));if(r[0]==="verify")return cl(r.slice(1));if(r[0]==="qr")return KB(r.slice(1));if(r[0]==="link")return KB(r.slice(1),void 0,!0);if(r[0]==="audit")return Rl(r.slice(1));let e;try{e=Fl(r)}catch(w){if(!(w instanceof Ue))throw w;return process.stderr.write(`md-runbook: ${w.message}
|
|
490
|
+
|
|
491
|
+
${jB}`),2}if(e==="help")return process.stdout.write(jB),0;if(e==="version")return process.stdout.write(`0.19.2
|
|
492
|
+
`),0;let{options:t,quiet:n}=e;if(!qe.existsSync(t.file))return process.stderr.write(`md-runbook: no such file: ${t.file}
|
|
493
|
+
`),2;let s=nl(e.notify??process.env.MD_RUNBOOK_NOTIFY_URL,e.notifyOn??process.env.MD_RUNBOOK_NOTIFY_ON);if(typeof s=="string")return process.stderr.write(`md-runbook: ${s}
|
|
494
|
+
`),2;delete process.env.MD_RUNBOOK_NOTIFY_URL;let B=async w=>{if(s)try{await sl(s.url,w)}catch(k){process.stderr.write(`md-runbook: ${k instanceof Error?k.message:String(k)}
|
|
495
|
+
`)}},i=new AbortController,o=()=>i.abort();process.once("SIGINT",o),process.once("SIGTERM",o);let a;try{a=await Xa({...t,env:process.env,signal:i.signal,...s?{extraSecrets:[s.url]}:{}},{out:w=>{n||process.stdout.write(w)},log:w=>{n||process.stdout.write(w+`
|
|
496
|
+
`)}})}catch(w){if(w instanceof je)return process.off("SIGINT",o),process.off("SIGTERM",o),process.stderr.write(`md-runbook: ${w.message}
|
|
497
|
+
`),2;throw await B(`\u2717 ${Et.basename(t.file)}: the run stopped with an error${Cs(process.env)?`
|
|
498
|
+
${Cs(process.env)}`:""}`),w}process.off("SIGINT",o),process.off("SIGTERM",o);let c=Et.basename(t.file),u=t.out??t.file;t.write&&hs(u,a.text);let l=()=>kB(a.text,{generatedAt:new Date,fallbackTitle:c,redact:a.redact});t.report&&hs(t.report,l()),t.junit&&hs(t.junit,el(c,a.steps)),t.json&&hs(t.json,JSON.stringify({file:c,ok:a.ok,steps:a.steps,record:zr(a.text)},null,2)+`
|
|
499
|
+
`);let C=process.env.GITHUB_STEP_SUMMARY;C&&qe.appendFileSync(C,tl(c,a.steps)+`
|
|
500
|
+
`);let h=!1;if(e.pdf){let w=bn(e.browser??process.env.CHROME_PATH);if(!w)process.stderr.write(`md-runbook: --pdf needs Chrome, Edge or Chromium; none was found (use --browser PATH or CHROME_PATH)
|
|
501
|
+
`),h=!0;else try{qe.mkdirSync(Et.dirname(Et.resolve(e.pdf)),{recursive:!0}),await wn(l(),e.pdf,w)}catch(k){process.stderr.write(`md-runbook: PDF export failed: ${k instanceof Error?k.message:String(k)}
|
|
502
|
+
`),h=!0}}s&&(s.on==="always"||!a.ok)&&await B(rl(c,a,Cs(process.env)));let p=w=>a.steps.filter(k=>k.status===w).length,f=[`${p("passed")} passed`,`${p("failed")} failed`];return p("skipped")&&f.push(`${p("skipped")} skipped`),p("not run")&&f.push(`${p("not run")} not run`),process.stdout.write(`
|
|
503
|
+
${a.ok?"\u2713":"\u2717"} ${c}: ${a.steps.length} step${a.steps.length===1?"":"s"}, ${f.join(", ")}${t.write?` \xB7 outputs written to ${u}`:""}
|
|
504
|
+
`),a.ok&&!h?0:1}require.main===module&&Il(process.argv.slice(2)).then(r=>process.exitCode=r,r=>{process.stderr.write(`md-runbook: ${r instanceof Error?r.stack??r.message:String(r)}
|
|
505
|
+
`),process.exitCode=1});0&&(module.exports={lint,main,parseArgs});
|
|
506
|
+
/*! Bundled license information:
|
|
507
|
+
|
|
508
|
+
re2js/build/index.js:
|
|
509
|
+
(*!
|
|
510
|
+
* re2js
|
|
511
|
+
* RE2JS is the JavaScript port of RE2, a regular expression engine that provides linear time matching
|
|
512
|
+
*
|
|
513
|
+
* @version v2.8.8
|
|
514
|
+
* @author Oleksii Vasyliev
|
|
515
|
+
* @homepage https://github.com/le0pard/re2js#readme
|
|
516
|
+
* @repository [object Object]
|
|
517
|
+
* @license MIT
|
|
518
|
+
*)
|
|
519
|
+
*/
|