pure-regex
Version:
A brave RegExp engine implemented in pure JS / vanilla JavaScript.
1 lines • 58.3 kB
JavaScript
var a,b,commonIdeographic=[[13312,19903],[19968,40959],[131072,173791],[173824,177977],[177984,178205],[178208,183969],[183984,191456],[196608,201546],[201552,205743]],Unified_Ideograph=[64014,64015,64017,64019,64020,64031,64033,64035,64036,[64039,64041],...commonIdeographic],commonIdeographic=[12294,12295,[12321,12329],[12344,12346],[63744,64109],[64112,64217],94180,[94208,100343],[100352,101589],[101632,101640],[110960,111355],[194560,195101],...commonIdeographic],ASCII_Hex_Digit=[[48,57],[65,70],[97,102]];const codePointsMap={White_Space:[[9,13],32,133,160,5760,[8192,8202],8232,8233,8239,8287,12288],Quotation_Mark:[34,39,171,187,8216,8217,[8218,,8223],8249,8250,11842,[12300,12303],[12317,12319],[65089,65092],65282,65287,65378,65379],Hex_Digit:[...ASCII_Hex_Digit,[65296,65305],[65313,65318],[65345,65350]],ASCII_Hex_Digit:ASCII_Hex_Digit,Unified_Ideograph:Unified_Ideograph,Ideographic:commonIdeographic,Separator:[32,160,5760,8239,8287,12288,[8192,8202],[8232,8233]]};for([a,b]of Object.entries({Han:[[11904,11929],[11931,12019],[12032,12245],12293,12295,[12321,12329],[12344,12347],[13312,19903],[19968,40959],[63744,64109],[64112,64217],94178,94179,[94192,94193],[131072,173791],[173824,177977],[177984,178205],[178208,183969],[183984,191456],[191472,192093],[194560,195101],[196608,201546],[201552,205743]]}))codePointsMap["Script="+a]=b;const multiPointsMap={},propAliasMap={sc:"Script",WSpace:"White_Space",QMark:"Quotation_Mark",Hex:"Hex_Digit",AHex:"ASCII_Hex_Digit",UIdeo:"Unified_Ideograph",Ideo:"Ideographic",Cc:"Control",N:"Number",P:"Punctuation",Z:"Separator",C:"Other"},constPointsMap={d:[["0","9"]],s:[" "," "," ","\f","\n","\r","\t","\v"],w:[["a","z"],["A","Z"],["0","9"],"_"],".":[["a","z"],["A","Z"],["0","9"],"_"]},commonPointsMap={lineBreak:["\n","\r","\u2028","\u2029"]};function reversePointRanges(e){var r,l,o=[[0,1114111]],c=(e,r)=>r[0]<=e&&e<=r[1];for(r of e){let t,a,n=(Array.isArray(r)?[t,a]=r:t=a=r,t>a&&(l=t,t=a,a=l),-1),i=-1,s;for(let r=0;i<0&&r<o.length;r++){let e=o[r];if(n<0&&c(t,e))n=r+1,s=[t,e[1]],e[1]=t-1,e[0]>e[1]&&n--,c(a,s)&&(s[0]=a+1,i=r+1);else if(n<0&&t<e[0]){if(a<e[0])break;n=r,r--}else c(a,e)?(e[0]=a+1,i=r,e[0]>e[1]&&i++):a<e[0]&&(i=r)}0<=n&&i<0&&(i=o.length),0<=n&&o.splice(n,i-n,...s?[s]:[])}return o.map(e=>e[0]===e[1]?e[0]:e)}function parseToken(e="",N,t={}){let n=e;const a=["[","]"];var e=[".","\\d","\\D","\\w","\\W","\\s","\\S","\\b","\\B"],i={n:"\n",r:"\r",f:"\f",t:"\t",v:"\v"},s={edge:["^","$"],bracket:["(",")"],brace:["{","}"],comma:",",repeat:"+",optRepeat:"*",omit:"?",charEcho:a,paramStart:["?"],nameEcho:["<",">"],paramSign:[":","=","!"],branch:"|",const:e},l={num:[["0","9"]],alphabet:[["a","z"],["A","Z"]]};const o={charEcho:a[1],const:e.slice(1)};t.unicodeSets&&(o.charEcho=a,o.charListOpr=["&&","--"]);var c,f,u,h,B=Object.keys(s),$=Object.keys(l);const p=t.unicode||t.unicodeSets,r=[];let d=0,g,m,v=!1,b=0;for(;n;){let e=!1,r=!1;if("charEcho"===m)if(g[1]===a[0]){v=!0,b++;for(u of L("^"))if(h=P(u))break;h&&R("charNegation",h)}else v=v&&0<--b;if(v){if(!([a[0],"^"].includes(g[1])||t.unicodeSets&&j("--"))&&(h=P("-"))){R("rangeBond",h);continue}for(var x of Object.keys(o)){for(c of L(o[x]))if(h=P(c))break;if(h){e=!0,R(x,h);break}}if(e)continue;r=!0}if(!r)for(var k of B){for(f of L(s[k]))if(h=P(f))break;if(h){e=!0,M(h.length),_([k,h]);break}}if(!e)if(j("\\"))if(j("x",n,1)){if(2!==(y=A(n,2,2)).length)throw Error("Invalid escape at "+d);R("unicode",n.slice(0,2+y.length),U(y))}else{if(p&&j("u",n,1)){let e=4,r=2,t=!1;"{"===n[2]&&(e=-1,r++,t=!0);var y,S=U(y=A(n,r,e)),E=(1114111<S&&(y=""),t&&"}"===n[r+y.length]);if(t?y.length&&E:4===y.length){R("unicode",n.slice(0,r+y.length+ +!!E),S);continue}throw Error("Invalid Unicode escape at "+d)}if(p&&(j("p",n,1)||j("P",n,1))){E="Invalid property name at "+d,S="P"===n[1];if("{"!==n[2])throw Error(E);let e=function(t){if("string"!=typeof t)throw Error("Expect a string to search.");var a=[["a","z"],["A","Z"]];let n="";for(let e=3,r=!1;e<t.length;e++){e;var i=getMatchInRangeStartingWith(t,a,e);if(!(i=!i&&3<e?"_"===t[e]&&t[e]:i)&&3<e&&e<t.length-1){if(r)break;(i="="===t[e]&&t[e])&&(r=!0)}if(!i)break;n+=i}return n}(n);var w,I="}"===n[3+e.length],C=e.indexOf("=");let r=e;for(w of Object.keys(propAliasMap))if(C<0&&w===e||w.length===C&&e.startsWith(w)){r=propAliasMap[w]+e.slice(w.length);break}var T=r in codePointsMap;if(I&&e&&T){R("script",n.slice(0,3+e.length+1),[r,S]);continue}if(I&&e&&!T)throw Error(`Unsupported property name "${e}" at pos `+d);throw Error("Invalid property name at pos "+d)}if(t.unicodeSets&&v&&j("q",n,1)&&!j("{",n,2))throw Error("Invalid escape at pos "+d);I=getMatchInRangeStartingWith(n,Object.keys(i),1);if(I)R("escape",n.slice(0,1+I.length),i[I]);else{T=function(r){if("string"!=typeof r)throw Error("Expect a string to search.");let t="";for(let e=1;e<r.length;e++){var a=r[e];if(!isStartCharInRange(r,"0","7",e))break;if(3<=(t+=a).length)break}return t}(n);if(T){var F=parseInt(T,8);R("unicode",n.slice(0,1+T.length),F)}else{let e=n.slice(0,2);if(R("escape",e,e.slice(1)),n.length<2)throw new SyntaxError("\\ at end of pattern")}}}else if(!e){for(var O of $)if(h=getMatchInRangeStartingWith(n,l[O])){e=!0,M(h.length),_([O,h]);break}e||_(["char",function(){if(!p)return M(1,void 0);let e="",r=0;for(var t of n){if(1<++r)break;e+=t}return n=n.slice(e.length,void 0),d+=e.length,e}()])}}function R(e,r,t){M(r.length),_([e,r,t])}function A(r,t=0,a=-1){if("string"!=typeof r)throw Error("Expect a string to search.");var n=[["0","9"],["a","f"],["A","F"]];let i="";for(let e=t;e<r.length;e++){e;var s=getMatchInRangeStartingWith(r,n,e);if(!s)break;if(i+=s,0<a&&i.length>=a)break}return i}function U(e){return parseInt(e,16)}function P(e,r=n,t=0){if(e instanceof RegExp){if(e.global&&0!=r.search(e))return null;var a=r.match(e);return!a||a.index?null:a[0]}if("string"!=typeof e)throw Error("Expect a string or regExp for search.");a=r.substr(t,e.length);return a===e?a:null}function j(e,r=n,t=0){if(e instanceof RegExp)return 0==(t?r.slice(t):r).search(e);if("string"!=typeof e)throw Error("Expect a string or regExp for search.");return r.substr(t,e.length)===e}function M(e=0,r){var t=n.slice(0,e);return n=n.slice(e,r),d+=t.length,t}function _(e){r.push(e),g=e,m=e[0]}function L(e,r=[]){return Array.isArray(e)?e:void 0!==e?[e]:r}return r}function getMatchInRangeStartingWith(e,r,t=0){if(!Array.isArray(r))throw Error("Expect a range array for search.");for(var a of r)if("string"==typeof a){var n=e.substr(t,a.length);if(n===a)return n}else if(isStartCharInRange(e,a[0],a[1],t))return e[t];return null}function isStartCharInRange(e,r,t,a=0){if("string"!=typeof e)throw Error("Expect a string to search.");var n=e=>"string"==typeof e?e.codePointAt(0):e;if(r=n(r),t=n(t),!isNum(r)&&!isNum(t))throw Error("Expect a range for match.");n=e.codePointAt(a);return!(isNum(r)&&n<r||isNum(t)&&t<n)}function isNum(e){return"number"==typeof e&&!isNaN(e)}function buildAst(e,r){let t={type:"root",children:[]},c=t;const a=[t];function u(e,r,t,a,n=c){return{type:"element",tagType:"statement",tag:e,value:r,param:t,parent:n,enclosed:a,children:[]}}function W(e,r){t?c&&c.children.push(e):t={type:"root",children:[]},r||(a.push(e),c=a[a.length-1])}{var[m=[],i,f={}]=[e,{statementStart(e,r,t,a,n,i){W(u(e,r,t,a,c),a)},supplant(e,r,t,a,n,i,s=1){let l=u(e,r,t,a,c);s<0&&(s=0);e=c.children.splice(-s);if(e.length)for(var o of e)l.children.push(o);W(l,a)},statementEnd(e,r){{const t=a.pop();return t.enclosed=!0,void(c=a[a.length-1])}},getPriorBrother(){var e=c.children;return e[e.length-1]}},r];const he=["clause","num","const","escape","char","charList","ref"],pe=["branch"];var H={i:"ignoreCase",m:"multiline",s:"dotAll"};const de=["i","m","s"],F=[];let h=0,p,d,n=1,g=[{}];const ge={get lastEle(){return F.length?F[F.length-1]:null},get lastTag(){return this.lastEle.tag}};var v=e=>m[e]||[];F[0]={name:"root",childrenLimit:1};for(var s,b=0;b<m.length;h+=m[b++][1].length){var x,l=m[b];let[r,u]=l;if("bracket"===r){var k="clause";let c={catchable:!0};var y=h;let e=u.length,f=$(k,u,c,!1,{start:y,offset:e});if(p=k,"("===u){let l=b+1,o=v(l);if("?"===o[1]){o=v(++l);let s=!1;do{if(":"===o[1]){f.param.catchable=!1;break}"<"===o[1]&&(s=!0,o=v(++l));let e=!1,r=!1;if("="===o[1]?e=!0:"!"===o[1]&&(e=!0,r=!0),e){c.catchable=!1,c.assertion=!0,c.forward=!s,c.exclusive=r;break}let[t,a,n,i]=function(e,r=0){if(!Array.isArray(e))throw Error("Expect a tokens array to search.");let t="";for(var a={},n={},i=!1,s=r;s<e.length;s++){var[,l]=e[s];if("-"!==l||i){if(!de.includes(l))break;if(t+=l,n[l]||a[l])throw new SyntaxError("Repeated flag in flag group");i?n[l]=!0:a[l]=!0}else i=!0}return[t,s-r,a,n]}(m,l);if(t){c.catchable=!1,c.flagGroup=!0;for(var J of Object.keys(i))n[J]=!1;let e={};for(var[D,Z]of Object.entries(n))e[H[D]]=Z;c.flagObj=e,l+=a;break}if(!s)throw new SyntaxError("Invalid group at pos "+h);var[S,q]=ne(m,l);if(l+=q,o=v(l),S&&">"===o[1]){if(oe(S))throw Error("Duplicate capture group name at pos "+h);g[g.length-1][S]=!0,c.groupName=S;break}throw Error("Invalid capture group name at pos "+l)}while(0);M(l-b),e=h-y,f.offset=e}c.catchable&&!c.assertion&&(c.captureIndex=n++),F.push(f),se(),d=!1,i.statementStart&&i.statementStart(k,u,c,!1,y,e)}else{if(")"!==u)throw y=u,s=r,Error(`Unrecognized ${s?s+" ":""}token: `+y);{for(let e=F.length;0<e&&!1!==ce();e--);let e=F.pop();for(;e&&F.length&&e.name!==k;){if(!e.enclosed)throw new SyntaxError(`Unexpected closed bracket ")" inside another block at pos ${h}.`);L(e),e=F.pop()}if(!e||e.name!==k)throw new SyntaxError(`Unmatched closed bracket ${s=u,"string"!=typeof s?s:'"'+s.replace(/"/g,'\\"')+'"'} at pos ${h}.`);le(),d=!0,i.statementEnd&&i.statementEnd(k,e)}}}else{if(ce(),"brace"===r){let e=!1;do{if("}"===u)break;let e=b+1;var[o,E]=ie(m,e);if(!o)break;let r=+o,t=r,a=v(e+=E);if(","===a[1]&&(t=null,[o,E]=ie(m,++e),o&&(t=o),e+=E,a=v(e)),"}"!==a[1])break;if((t||0===t)&&r>t)throw Error("Numbers out of order in {} quantifier at pos "+h);M(e-b);o={minTimes:r,maxTimes:t},E=`Expect a value expression before range repeat indicator "${u}", but found `+p}while(fe("repeat",u,o,0,0,E),e=!0,0);if(e)continue;r="char"}if("charEcho"===r){let e=!1;do{if("["!==u)break;let r={},t=[],n=b+1,i=("charNegation"===v(n)[0]&&(r.exclusive=!0,++n),"charList");var V=(e,r,t,a)=>$(i,e,r,!1,{start:t,offset:a});const U=e=>{for(var r of e)_(r)};let s=V(u,r,h,n-h);_(s),s.hiddenChdLen=0;const me="charRange",G=["escape","unicode","script"],z=(e,r)=>("const"!==e&&"charListOpr"!==e||"."===r)&&!G.includes(e);let l=[],o=[],c;for(var K=()=>{U(t),L(s),c=s,t=l.pop(),s=o.pop()},Q=(n--,()=>new SyntaxError("Unterminated character class at pos "+h));;){if(!(x=v(++n))[0])throw Q();for(;s.childrenLimit&&s.childrenLimit<=t.length+(s.hiddenChdLen||0);)K();if("]"===x[1]){if("charListOpr"===s.tag)throw new SyntaxError("Invalid set operation or invalid character in character class");if(K(),t)continue;break}let e=x[0],a=x[1];if(f.unicodeSets&&"["===a)U(t),t.length=0,c=null,l.push(t),o.push(s),s.hiddenChdLen++,r={},"charNegation"===v(n+1)[0]&&(r.exclusive=!0,++n),_(s=V(a,r,n,r.exclusive?2:1)),t=[],s.hiddenChdLen=0;else if(f.unicodeSets&&"charListOpr"===e){var w={name:"charListOpr",value:a,param:null,childrenLimit:2,children:[],...void 0},I=(e,r)=>["char","unicode","charList","charRange","script","charListOpr","clause"].includes(e)||z(e,r)&&"]"!==r,C=t[t.length-1]||c,T=v(n+1);if(!C||!I(C.name,C.value)||!I(T.name,T.value))throw new SyntaxError("Invalid set operation in character class");U(t),t.length=0,c=null,N(w),l.push(t),o.push(s),s.hiddenChdLen++,s=w,t=[],s.hiddenChdLen=1}else if(f.unicodeSets&&"escape"===e&&"\\q"==a.toLowerCase()){n+=1;let r=v(++n);var C=$("clause",a,{},!1),X=(_(C),()=>$("branch",null,null,!1));let t=X();for(_(t);"}"!==r[1];r=v(++n)){if(!r[0])throw Q();let e=r[1];if("|"===e)L(t),_(t=X());else{if(G.includes(r[0]))e=r[2]||e;else if(!z(r[0],e))throw new SyntaxError("Invalid character in character class");_($("char",e,null,!0))}}L(t),L(C),c=C,s.hiddenChdLen++}else{if("rangeBond"===e){I=t[t.length-1]||c,T=v(n+1),w=(e,r)=>"char"===e||z(e,r)&&e!==me&&"]"!==r;if(w(I.name,I.value)&&w(T[0],T[1])){let e=I.value,r=T[1];var O={minChar:e,maxChar:r};if(e.charCodeAt(0)>r.charCodeAt(0))throw new SyntaxError("Range out of order in character class at pos "+h);O=$(me,a,O,!0);t.pop(),t.push(O),n+=1;continue}}z(e,a)?e="char":G.includes(e)&&(a=x[2]||a);O=$(e,a,null,!0);t.push(O)}}M(n-b),p=i,d=e=!0,e=!0}while(0);if(e)continue;r="char"}if("repeat"===r||"optRepeat"===r){y="optRepeat"===r?0:1;fe("repeat",u,{minTimes:y,maxTimes:null}),p="repeat",d=!0}else if("omit"===r){let e=i.getPriorBrother();if("repeat"!==p||e.param.restraint){if(!he.includes(p))throw new SyntaxError(`Nothing to omit, unexpected "${u}" at pos `+h);fe("repeat",u,{minTimes:0,maxTimes:1}),p="repeat",d=!0}else e.param.restraint=!0}else if("branch"===r){var R=$("branch",u,null,!0,{start:h});N(R,-1),_({...R,enclosed:!1}),F.push(R),le(!0),se(),p="branch"}else{if("unicode"===r&&u.startsWith("\\")||"escape"===r&&+l[2]){let a=!1;do{let e=b,r=u.slice(1);for(;r.length<2;){var Y=v(e+1);if("num"!==Y[0])break;r+=Y[1],e++}var ee=r.slice(2),A=+r.slice(0,2);if(A>=n||!A)break;var re,te=h;M(e-b);let t="ref";_(ue(t,A,{},!0,{start:te,offset:h-te}));for(re of ee)_($(t="char",re,null,!0));p=t,d=a=!0}while(0);if(a)continue}if("escape"===r&&"\\k"===u){let e=!1;do{var P=b+1;if("<"!==v(P++)[1])break;var[j,ae]=ne(m,P),ae=v(P+=ae);if(!j||">"!==ae[1])break;if(M(P-b),!oe(j))throw new SyntaxError("Invalid named capture referenced at pos "+h)}while(_(ue("ref",j,{isName:!0},!0,{})),p="ref",d=e=!0,0);if(e)continue;throw new SyntaxError("Invalid named reference at pos "+h)}"script"===r?B(r,l[2],null):"edge"===r||"const"===r?B(r,u,null):"escape"===r?B("char",l[2]||u,null):"unicode"!==r?B("char",u,null):(R=r,l=l[2]||u,p=R,d=!0,i.statementStart&&i.statementStart(R,l,null,!0))}}}if(F[0]&&"root"===F[0].name&&F.shift(),e=function(r,t){for(let e=r.length-1;0<=e;e--)if(t(r[e],e))return e;return-1}(F,e=>!pe.includes(e.name)),F.slice(0,e+1).length)throw new SyntaxError("There is a few unclosed blocks.");function ne(e,r=0,t=-1){if(!Array.isArray(e))throw Error("Expect a tokens array to search.");let a="";for(var n=r;n<e.length;n++){var[i,s]=e[n],l=n===r;if(!["_","$"].includes(s)&&"alphabet"!==i&&(l||"num"!==i))break;if(a+=s,0<t&&a.length>=t)break}return[a,n-r]}function ie(e,r=0,t=-1){if(!Array.isArray(e))throw Error("Expect a tokens array to search.");let a="";for(var n=r;n<e.length;n++){var[i,s]=e[n];if("num"!==i)break;if(a+=s,0<t&&a.length>=t)break}return[a,n-r]}function se(){g.push({})}function le(e){if(g.pop(),!e&&!g[0])throw Error("Unexpected exiting clause")}function oe(r){return g.some(e=>e[r])}function ce(){var e=ge.lastEle,r=e&&e.childrenLimit;if(!(0<r&&e.children&&r<=e.children.length))return!1;L(e),F.pop()}function M(e=0){let r=m.slice(b,b+e);b+=e,h+=r.reduce((e,r)=>e+r[1].length,0),r}function _(e){i.statementStart&&i.statementStart(e.name,e.value,e.param,e.enclosed,e.startPos,e.offset)}function L(e){i.statementEnd&&i.statementEnd(e.name,e)}function N(e,r){i.supplant&&i.supplant(e.name,e.value,e.param,e.enclosed,e.startPos,e.offset,r)}function B(e,r,t,a=!0){p=e,d=a,i.statementStart&&i.statementStart(e,r,t,a)}function fe(e,r,t,a,n,i){let s={name:e,value:r,param:t,childrenLimit:1,...void 0};if(i=i||"Nothing to repeat",!d||!he.includes(p))throw Error(`${i} at pos ${h}.`);p=e,d=s.enclosed=!0,N(s)}function ue(e,r,t,a=!0,n){return{name:e,value:r,param:t,enclosed:a,...n}}function $(e,r,t,a,n){return{type:"element",tagType:"statement",name:e,value:r,param:t,enclosed:a,...n}}F}return t}function mapAst(e,r){const{enter:a,leave:n}=r;let i;var s=[],l=[],o=!1;void 0!==r.ignoreRoot&&r.ignoreRoot&&"root"==e.type?((i=m(e)).children=i.children.map(m),s[0]=[...i.children]):(i=m(e),s[0]=[i]),l[0]=0;for(var c=s.length-1,f=(e,r=-1)=>e&&e.length?e[e.length+r]:null;s.length;){var u,h,p,d=f(s);let t=l[c];if(o&&(u=d[t++],n&&(p=0<=(p=l[c-1])&&f(s,-2)[p],void 0!==(h=n(u,c,p))&&g(u,h,p,d,t-1)),o=!1,l[c]=t),t>=d.length)s.pop(),l.pop(),c--,o=!0;else{let e=d[t],r=(a&&(h=0<=(u=l[c-1])&&f(s,-2)[u],void 0!==(p=a(e,c,h))&&(g(e,p,h,d,t),e=p)),e&&e.children);r&&0<r.length?(e.children=r.map(e=>m(e)),r=e.children,s.push(r),l.push(0),c++):o=!0}}function g(e,r,t,a,n){e===i?i=r:((t=t||i).children[n]=r,t.children!==a&&(a[n]=r))}function m(e){return{...e}}return i}function traversePath(e,r){const{enter:t,leave:a}=r;var n,i=[],s=[],l=[],o=!1,c=(n=e,i[0]=void 0!==r.ignoreRoot&&r.ignoreRoot&&"root"==e.type?n.children:[n],l[s[0]=0]={},i.length-1),f=(e,r=-1)=>e&&e.length?e[e.length+r]:null;const u=()=>l[c];for(var h={skipBrothers(){u().brothersSkipped=!0},skipChildren(){u().childrenSkipped=!0},reenter(){u().needReentrant=!0},fallback(){u().needFallback=!0}};0<=c;){var p=f(i);let r=s[c];if(o){var d=p[r++];a&&(g=0<=(g=s[c-1])&&f(i,-2)[g],a(d,c,g,h)),o=!1;let e=u();e.brothersSkipped&&(r=p.length,e.brothersSkipped=!1),e.needReentrant&&(r--,e.needReentrant=!1),e.needFallback&&(1<r?r-=2:r=p.length,e.needFallback=!1),s[c]=r}if(r>=p.length)i.pop(),s.pop(),l.pop(),c--,o=!0;else{var g,m,d=p[r];t&&(m=0<=(g=s[c-1])&&f(i,-2)[g],t(d,c,m,h));let e=u();e.needFallback&&(e.childrenSkipped=!0),e.brothersSkipped?(s[c]=p.length,e.brothersSkipped=!1):e.childrenSkipped?o=!(e.childrenSkipped=!1):(m=d.children)&&0<m.length?(i.push(m),l.push({}),s.push(0),c++):o=!0}}return n}function optimizeAst(r,y={}){var W,I,e,C,t,T,O,R=[],c=0,re=[],f=y.ignoreCase,l=mapAst(r,{enter(e){delete e.parent}}),l=mapAst(l,{enter(t,e,r){var a=t.tag;if("script"!==t.tag)return"unicode"===t.tag?"unicode"!==t.tag?t:X(t.value):("clause"===a&&t.param.catchable&&c++,"clause"===a&&t.param.groupName&&R.push(t.param.groupName),"clause"===a&&t.param.flagGroup&&(re.push(W),t.param.flagObj.__proto__=W||y,W=t.param.flagObj,f=f||W.ignoreCase),"repeat"===a&&"string"==typeof t.param.maxTimes&&(t.param.maxTimes=+t.param.maxTimes),"escape"===a?X(t.value):W&&"const"===a&&!t._translated?U(t,!1,W):void 0);{a=t;if("script"!==a.tag)return a;let[e,r]=a.value;var t=codePointsMap[e],n=multiPointsMap[e];if(!t)throw Error("Unsupport unicode prop "+a.value);const o=e=>q(Array.isArray(e)?e[0]:e);var i,s=z();n&&r&&(s.param.exclusive=!0,r=!1),r?t=reversePointRanges(t):t.sort((e,r)=>o(e)-o(r)),s.children=E(t);for(i of n||[]){var l=(i="string"==typeof i?[...i]:i).map(e=>G(e)),l=K(Y(),l);s.children.push(l)}return D(s)}},leave(e,N,r){var t,{tag:a,children:n}=e;if("clause"===a&&e.param.flagGroup){if(e.param.flagObj!==W)throw Error("Unexpected leaving of flag group");(W=re.pop())&&e.param.flagObj.ignoreCase===W.ignoreCase&&(e.param.flagObj=e.param.flagGroup=null)}if("charListOpr"===a)return r._needFlat=!0,"charListOpr"!==(r=e).tag?r:("&&"===r.value?function(e){if("charListOpr"!==e.tag&&"&&"===e.value)return e;var[e,r]=e.children,t=Z(e),a=Z(r),n=(e,r)=>q(e)-q(r),i=e=>"charRange"===e.tag?e.param.maxChar:e.value,s=e=>"charRange"===e.tag?e.param.minChar:e.value,l=[];for(let e=0,r=0;e<t.length&&r<a.length;){var o=t[e],c=a[r],f=i(o),o=s(o),u=s(c),c=i(c);n(f,u)<0?e++:0<n(o,c)?r++:(o=Math.max(q(o),q(u)),u=Math.min(q(f),q(c)),l.push(o==u?X(o):Q(o,u)),0<(o=n(f,c))?r++:o<0?e++:(e++,r++))}l=l.map(e=>V([e]));let h=Y();return h.children=l,h}:function(e){if("charListOpr"!==e.tag&&"--"===e.value)return e;for(var[e,r]=e.children,t=Z(e),a=Z(r),n=(e,r)=>q(e)-q(r),i=e=>"charRange"===e.tag?e.param.maxChar:e.value,s=e=>"charRange"===e.tag?e.param.minChar:e.value,l=[],o=0,c=0;o<t.length&&c<a.length;){let e=t[o];var f=a[c],u=i(e),h=s(e),p=s(f),f=i(f);n(u,p)<0?(l.push(e),o++):0<n(h,f)?c++:(n(h,p)<0&&(h=h,p=q(p)-1,l.push(h===p?X(h):Q(h,p))),0<n(u,f)&&(e.param.minChar=q(f)+1),0<(h=n(u,f))?c++:h<0?o++:(o++,c++))}for(;o<t.length;o++)l.push(t[o]);l=l.map(e=>V([e]));return K(Y(),l)})(r);if(e._needFlat)return D(e);"charList"===a&&(t=!0,{tag:a,children:n}=e=D(e));var r=n[0],l=!1;if(r&&"branch"===r.tag)te(n),"branch"!==a&&function(a){if(!(a.length<2||"branch"!==a[0].tag)){var n,i,s={};const o=e=>"string"==typeof e?e:String.fromCodePoint(e);for(let t=0;t<a.length;t++){let e=[],r;for(n of a[t].children){if(null===(r=(e=>{var{tag:r,param:t}=e;return"char"===r?e.value:"charRange"===r?"R"+o(t.minChar)+"-"+o(t.maxChar):"const"===r?"S"+e.value:"edge"===r?"E"+e.value:"ref"===r?"F"+e.value:null})(n)))break;e.push(r)}null!==r&&(s[i=JSON.stringify(e)]||(s[i]=[]),s[i].push(t))}var e,r={},t=!1;for(e of Object.values(s))if(!(e.length<2)){for(var l of e.slice(1))r[l]=!0;t=!0}if(t){for(let e=a.length-1;0<=e;e--)r[e]&&a.splice(e,1);return 1}}}(n)&&te(n,!0),l=!0;else if(r){var i=n;for(let e=0;e<i.length;e++){var B,s=i[e];J(s)?(B=s.children[0])&&"branch"===B.tag||(i.splice(e,1,...s.children),e--):i[e]=function(e){var{tag:r,children:t}=e;if("repeat"===r&&1===t.length){r=t[0];if("clause"!==r.tag||!r.param.assertion)return e;const a=e.param;if(1<=a.minTimes)return r;0===a.minTimes&&0!==a.maxTimes&&(a.maxTimes=1)}return e}(s)||s}}if(r&&!l){var o=n;if(o.length&&o.some(e=>"repeat"===e.tag)){for(let r=0;r<o.length;r++){var c=o[r],f=h,$=p;if(h=p=null,"repeat"===c.tag){var u=c.param;if(!u.restraint&&!function(e){var n,r=e.children;if(r&&r.length)return n=!1,traversePath(e="clause"===e.tag?{children:r}:e,{leave:function(e,r,t,a){return n?a.skipBrothers():"clause"===e.tag&&e.param.catchable?(n=!0,a.skipBrothers()):void 0}}),n}(c)){var F=JSON.stringify(c.children),h=c,p=F;if(f&&$===F){let e=f.param;e.minTimes+=u.minTimes||0,"number"==typeof e.maxTimes&&"number"==typeof u.maxTimes?e.maxTimes+=u.maxTimes:e.maxTimes=null,o.splice(r--,1),h=f}}}}h=p=null;var d=[];for(let e=0;e<o.length;e++){var g=o[e],U=h,G=p;if(h=p=null,"repeat"===g.tag){var{param:m,children:v}=g;if(!m.restraint&&!m.minTimes)if(h=g,G===(p=JSON.stringify(1===v.length&&"clause"===v[0].tag?v[0].children:v))){d.length||(d[0]=U),d.push(g);continue}}d.length<2?d.length&&(d.length=0):(m=function(r){let a=r[r.length-1];for(let e=r.length-2;0<=e;e--){var n=r[e];if("repeat"!==n.tag)throw Error("Expect repeat nodes, received "+n.tag);if(1<n.param.maxTimes||n.param.minTimes)a=function(o){let c=o[o.length-1];H(c);for(let l=o.length-2;0<=l;l--){var f=o[l],{minTimes:u,maxTimes:h}=f.param;if("repeat"!==f.tag||u)throw Error("Expect optional repeat nodes, received "+f.tag);H(f);u=f.children,u=1===u.length?u[0]:Object.assign(Y(),{children:u});let e=ee(),r=e.param,t=ee(),a=t.param,n=(r.minTimes=r.maxTimes=h,a.minTimes=0,a.maxTimes=h-1,e.children[0]=u,t.children[0]=u,f.param.isStatic&&(r.isStatic=a.isStatic=!0),ae()),i=ae(),s=(n.children=[e,c],1<h&&(i.children=[t]),Y());s.children=[n,i],c=s}return c}([n,a]);else{let e,r=n.children,t=(1===r.length?e=r[0]:(e=Y()).children=r,ee());t.param.minTimes=0,t.param.maxTimes=1,t.children=[e,a],a=t}}return a}(d),o.splice(e-d.length,d.length,m),h=U,d.length=0)}}var b=n;if(b.length&&b.some(e=>"repeat"===e.tag&&(e.param.minTimes||e.param.maxTimes))){for(let t=0;t<b.length;t++){var x=b[t];let r=x.param;if("repeat"===x.tag&&0<r.minTimes&&(1!==r.minTimes||r.maxTimes)&&r.minTimes!==+r.maxTimes){var k=r.minTimes;r.minTimes=0,r.maxTimes&&(r.maxTimes-=k);let e=ee();e.children=x.children,e.param={minTimes:k,maxTimes:k},b.splice(t,0,e),t+=1}}for(let e=0;e<b.length;e++){var y,S=b[e];"repeat"===S.tag&&(!(y=S.param).minTimes&&1<y.maxTimes?b[e]=function(r){let e=r.param,t=e.maxTimes,a=(e.maxTimes=1,delete e.isStatic,E(r)),n=a;for(let e=t-1;0<e;e--){var i=1===e?r:E(r);n.children.push(i),n=i}return n.param={...n.param},H(n),a}(S):y.minTimes&&y.minTimes===+y.maxTimes&&(y=y.minTimes,H(S=(1===S.children.length?S.children[0]:null)||K(Y(),S.children)),S=function(r,t){let a=[];for(let e=0;e<t;e++)a.push(E(r));return a}(S,y),b.splice(e,1,...S),e+=y-1))}}function E(e){return mapAst(e,{})}}if(("repeat"!==a&&"branch"!==a||H(e),"clause"===a&&e.param.assertion)&&("clause"===(r=e).tag&&r.param.assertion)){let i=!0,s=!1;if(r.children.length){l={enter:function(e,r,t,a){if(s)return a.skipBrothers();var n=e.tag;if("ref"===n||"clause"===n&&e.param.catchable)return s=!0,i=!1,a.skipBrothers();if("clause"===n&&e.param.assertion){n=e.param;if(!1===n.isAssertSilent&&(i=!1),n._asrtStaticMarked)return n.isAssertSilent?a.skipChildren():(s=!0,a.skipBrothers())}e.param||(e.param={}),e.param.canPass=!0}};const{enter:M,leave:_}=l;var w=[],I=[],C=[],T=!1,O=(n=r,w[0]=void 0!==l.ignoreRoot&&l.ignoreRoot&&"root"==r.type?n.children:[n],C[I[0]=0]={},w.length-1),R=(e,r=-1)=>e&&e.length?e[e.length+r]:null;const L=()=>C[O];for(var z={skipBrothers(){L().brothersSkipped=!0},skipChildren(){L().childrenSkipped=!0},reenter(){L().needReentrant=!0},fallback(){L().needFallback=!0}};0<=O;){var A=R(w);let r=I[O];if(T){var P=A[r--];_&&(j=0<=(j=I[O-1])&&R(w,-2)[j],_(P,O,j,z)),T=!1;let e=L();e.brothersSkipped&&(r=-1,e.brothersSkipped=!1),e.needReentrant&&(r++,e.needReentrant=!1),e.needFallback&&(r<A.length-2?r+=2:r=-1,e.needFallback=!1),I[O]=r}if(r<0)w.pop(),I.pop(),C.pop(),O--,T=!0;else{var j,P=A[r];M&&(A=0<=(j=I[O-1])&&R(w,-2)[j],M(P,O,A,z));let e=L();e.needFallback&&(e.childrenSkipped=!0),e.brothersSkipped?(I[O]=-1,e.brothersSkipped=!1):e.childrenSkipped?T=!(e.childrenSkipped=!1):(A=P.children)&&0<A.length?(w.push(A),C.push({}),I.push(A.length-1),O++):T=!0}}}r.param||(r.param={}),r.param.isAssertSilent=i,r.param._asrtStaticMarked=!0}return t?e:void 0}});let s=[],A=[],P={},o=!1,j=(traversePath(l,{enter(e,r,t,a){var{tag:n,param:i}=e;"clause"===n&&i.assertion&&(i.forward?o&&(s.push(r),o=!1):o||(s.push(r),o=!0)),o&&e.children&&(e.children.reverse(),A.push(...e.children))},leave(e,r,t,a){s.length&&r===s[s.length-1]&&(s.pop(),o=!o)}}),0),u={},M={},h,a=[],_=[],p=[],d=[],L={},g={},m=[0],v=[],b=[],x=-1,k={};function N(e){var r=b[x];r<e&&(r=[r,e],v[x].push(r))}traversePath(l,{enter(t,e){if(t.serial=h=j++,"clause"===t.tag&&t.param.catchable){let e=u[t.param.captureIndex];e||(u[t.param.captureIndex]=e=[]),e.push([t.serial]),M[t.serial]=!0}if(p.length&&"branch"!==t.tag){var r=d[0]||0;for(let e=p.length-1;0<=e;e--){var a=p[e];if(a<r)break;L[a]=t.serial,p.pop()}}if("ref"===t.tag?p.push(t.serial):"branch"===t.tag&&p.length&&d.unshift(t.serial),c&&-1===x&&(x=0,v[0]=[],b[0]=Math.max(t.serial,1)),0<=x&&"branch"===t.tag&&(m[x]!==e&&(N(h),m[++x]=e,v[x]=[]),b[x]=t.serial),0<=x&&"ref"===t.tag){e=b[x];let r=g[t.serial];r||(g[t.serial]=r=[]);for(let e=0;e<x;e++){var n,i=v[e];r.push(...i);for(n of i)k[n[0]]?k[n[0]]++:k[n[0]]=1}e<t.serial&&r.push([e,t.serial-1]),b[x]=t.serial+1}},leave(r,e){if(r.serial in M){let e=u[r.param.captureIndex];e[e.length-1][1]=h}var t;"repeat"===r.tag&&r.serial<h?a.push([r.serial,h]):"branch"===r.tag&&d.length&&d[0]===r.serial&&d.pop(),m[x]>e?((t=v[x]).length&&v[x-1].push(...t),m.pop(),v.pop(),b.pop(),x--,b[x]=h+1):"branch"===r.tag&&m[x]===e&&N(h)}});let n={};for(let r=0;r<a.length-1;r++){var B=a[r][0];for(let e=r+1;e<a.length;e++)if(B<=a[e][1]&&B>a[e][0]){n[B]=a[e][0];break}}for([I,e]of Object.entries(n))n[e]?n[I]=[e].concat(n[e]):n[I]=[e];for(let t=1;t<=c;t++){let e=u[t];var i=a.findIndex(r=>e.some(e=>e[0]<=r[1]&&r[0]<e[0])),i=a[i];let r;r=i?i[0]:0;i=n[r];i&&(r=[r].concat(i)),_[t]=r}for([C,t]of Object.entries(g))if(t.length){let r=[];for(let e=t.length-1;0<=e;e--){var S=t[e],$=k[S[0]];$&&2<=$?t.splice(e,1):0<e&&S[0]<=t[e-1][1]+1?(t[e-1][1]=S[1],t.splice(e,1)):S[1]<=S[0]+1&&(r.push(S[0]),S[0]!==S[1]&&r.push(S[1]),t.splice(e,1))}r.length&&(t.serials=r)}else delete g[C];let F={};for(T of a)F[T[0]]=T;for(O of A)P[O.serial]=!0;function H(e){if("repeat"===e.tag||"branch"===e.tag||"clause"===e.tag&&e.param.assertion){let s=!0;e.children.length&&traversePath({children:e.children},{enter:function(e,r,t,a){if(!s)return a.skipBrothers();var n=e.tag;if("repeat"===n)return(i=e.param).minTimes&&i.minTimes===i.maxTimes?i.isStatic&&a.skipChildren():(s=!1,a.skipBrothers());if("branch"===n)return s=!1,a.skipBrothers();if("clause"===n){var i=e.param;if(i.assertion||i.exclusive&&"charList"===i.origin)return a.skipChildren()}}}),s&&(e.param||(e.param={}),e.param.isStatic=s)}}function J(e){if("clause"===e.tag){const r=e.param;return!(r.assertion||r.catchable||r.exclusive||r.flagObj&&r.flagObj.hasOwnProperty("ignoreCase"))}}function te(a,e){if(a.length&&"branch"===a[0].tag){for(let t=0;!e&&t<a.length;t++){let e=a[t],r=e.children;var n;"branch"===e.tag&&1===r.length&&J(n=r[0])&&(e.children=r=n.children),r.length&&r.every(e=>"branch"===e.tag)&&a.splice(t--,1,...r)}1===a.length&&"branch"===a[0].tag&&a.splice(0,1,...a[0].children)}}function D(e){if("charList"!==e.tag)return e;let t=e.children;for(let r=0,e=t.length;y.unicodeSets&&r<e;r++){var a=t[r];if("const"===a.tag){let e=U(a,!0);t[r]=e.pop(),t.push(...e)}}let r=[],n={};var i,s=(e,r)=>q(e)-q(r);for(i of t){var l=i.tag,o=(y.ignoreCase&&"char"===l&&(i.value=i.value.toLowerCase()),"char"===l?i.value:"charRange"===l?i.param.minChar:null);if(null===o){if(J(i)){var c=i.children[0];if(c&&"branch"===c.tag){for(var f of i.children.map(e=>e.children))1<f.length?(f=K(Y(),f),r.push(f)):t.push(f[0]);continue}}r.push(i)}else{o=q(o);let e=n[o];if(e&&"char"!==e.tag){if("charRange"!==e.tag)throw Error("Internal: unexpected node "+l+" in charList");"char"!==l&&0<s(i.param.maxChar,e.param.maxChar)&&(e.param.maxChar=i.param.maxChar)}else n[o]=i}}var u=!r.length;let h;var p,d=e=>"charRange"===e.tag?e.param.maxChar:e.value,g=e=>"charRange"===e.tag?e.param.minChar:e.value;for(p of Object.keys(n).sort((e,r)=>e-r)){let e=n[p];var m=d(e),v=g(e);h&&s(v,v=d(h))<=1&&(e=Q(g(h),0<s(v,m)?v:m),r.pop()),r.push(e),h=e}let b=Y(),x=b.param;if(x.catchable=!1,x.origin="charList",x.exclusive=e.param.exclusive,y.unicodeSets&&x.exclusive&&u){let e=[];for(var k of r)if("char"===k.tag)e.push(q(k.value));else{if("charRange"!==k.tag)throw Error(`Untackled child element ${k.tag} in charList`);e.push([q(k.param.minChar),q(k.param.maxChar)])}e=reversePointRanges(e),r=E(e),x.exclusive=!1}else u||(r=function(n,e){if(n.length<2||!e&&"branch"!==n[0].tag)return n;let r=[],t=[],i={};for(let a=0;a<n.length;a++){let r=n[a],t=function(r){let t=[];for(let e=0;e<r.length&&t;e++){var a,n=r[e];"char"===n.tag?(a=q(n.value),t.push(a)):"charRange"===n.tag?(a=q(n.param.minChar))===(n=q(n.param.maxChar))?t.push(a):t.push([a,n]):t=null}return t}("branch"===r.tag||J(r)?r.children:[r]);if(t&&!(t.length<=1)){r.dirty=!0,t.idx=a;let e=i[t.length];e||(i[t.length]=e=[]),e.push(t)}}var a,s,l,o,c,f,u=[];const h=e=>Array.isArray(e)?e[0]:e;for([a,s]of Object.entries(i)){s.sort((r,t)=>{for(let e=0;e<r.length;e++)if(h(r[e])!==h(t[e]))return h(r[e])-h(t[e])});for(let e=0;e<s.length-1;e++){var p=function(r,t){if(r.length!==t.length)return-2;var a=0,n=e=>Array.isArray(e)?e:[e,e];for(let e=0;e<r.length;e++){var[i,s]=n(r[e]),[l,o]=n(t[e]);if(i!==l||s!==o)if(l<=i&&s<=o){if(0<a)return-2;a=-1}else{if(!(i<=l&&o<=s))return-2;if(a<0)return-2;a=1}}return a}(s[e],s[e+1]);0<=p?(s[e+1]=s[e],s[e]=null):-1===p&&(s[e]=null)}u.push(+a)}u.sort((e,r)=>r-e);for(l of n)l.dirty||t.push(l);for(o of u)for(c of i[o])c&&(f=function(e){if(!(0<=e.idx))return(r=Y()).children=E(e),r;var r=n[e.idx];return delete r.dirty,r}(c),r.push(f));return r.concat(t)}(r,!0));return 1!==r.length||x.exclusive?(1<r.length&&(r=r.map(e=>V([e]))),b.children=r,b):b=r[0]}function U(t,a,n={}){if("const"!==t.tag)return a?[t]:t;var i=()=>a?[t]:t,s=t.value;if("."===s){if(n.dotAll===y.dotAll)return i();e=n.dotAll?[[0,1114111]]:reversePointRanges(function(t){var a=e=>"string"==typeof e?e.codePointAt(0):e;for(let r=0;r<t.length;r++){let e=t[r];"number"!=typeof e&&("string"==typeof e?t[r]=a(e):t[r]=e.map(a))}return t}(commonPointsMap.lineBreak))}else{if("^"===s||"$"===s){if(n.multiline===y.multiline||t._translated)return i();if(!n.multiline)return i();let e=w("clause","(",{assertion:!0,forward:"$"===s,exclusive:void 0},!0);e.children=E(commonPointsMap.lineBreak).map(e=>V(e)),t._translated=!0;var l=[V(t),V()];if(a)return l;let r=Y();return r.children=l,r}var e,n=(s="\\"===s[0]?s.slice(1):s).toLowerCase(),s=s!==n;if(!(e=constPointsMap[n]))return i();s&&(e=reversePointRanges(e))}if(l=E(e),a)return l;n=z();return n.children=l,D(n)}function Z(e){if("char"===e.tag||"charRange"===e.tag)return[e];if("clause"!==e.tag)throw Error(`Unexpected node ${e.tag} in operator`);if(J(node))return e.children.map(e=>"branch"===e.tag?e.children:e).flat();throw Error(`The node type ${e.tag}-${JSON.stringify(e.param)} errors`)}function E(e){var r,t=[];for(r of e){var a=G(r);t.push(a)}return t}function G(e){return Array.isArray(e)?e[0]===e[1]?X(e[0]):Q(e[0],e[1]):X(e)}function q(e){return"string"==typeof e?e.codePointAt(0):e}function V(e){var r=w("branch","|",null,!0);return r.children=e,r}function K(e,r){return e.children=r,e}function z(){return w("charList","[",{},!0)}function Q(e,r){if(!e&&0!==e||!r)throw Error("Both param minChar and maxChar are required.");return w("charRange","-",{minChar:e,maxChar:r},!0)}function X(e){return w("char",e="number"==typeof e?String.fromCodePoint(e):e,null,!0)}function Y(){return w("clause","(",{},!0)}function ae(){return w("branch","|",null,!0)}function ee(){return w("repeat","{",{},!0)}function w(e,r,t,a){return{type:"element",tagType:"statement",tag:e,value:r,param:t,parent:void 0,enclosed:a,children:[]}}return l.param=l.param||{},l.param.groupNames=R,l.param.groupsBounds=u,l.param.repeatBounds=F,l.param.capInsideRptStarts=_,l.param.refFollowingSerials=L,l.param.refManorSecsMap=g,l.param.captureNum=c,l.param.backwardSerials=P,l.hasIgnoreCase=f,l.includedStrs=function(e){let n=[""],i=0;const s=()=>n[++i]="";traversePath(l,{enter(e,r,t,a){if(r){if(-1===i)return a.skipBrothers();r=e.tag;if("branch"===r)return s(),a.skipBrothers();if("repeat"===r&&!+e.param.minTimes)return s(),a.skipChildren();if("char"===r||"unicode"===r)n[i]+=X(e.value).value;else{if("clause"===r)return e.param.assertion?a.skipChildren():e.param.exclusive?(s(),a.skipChildren()):void 0;if("edge"===r){if("$"===e.value&&!y.multiline)return i=-1,a.skipBrothers()}else s()}}}}),-1<i&&n.push("");let r=[],t=!1;for(var a of n)!a&&t||(a&&!t&&r.push(""),t=!a,e&&a&&(a=a.toLowerCase()),r.push(a));return r}(f),l}const backtrackEnabled=!0;let countEnabled=!1;var Av,execCount=0,failedRefsIdx=1;function regMatcher(t,y,a=0,g={},m={}){let S=y;var e=se({tag:"root"});const E=[null];let w=[e],I=0,C=[],T={};C.groups=Object.create(null);e=t.param||{};C.length=1+~~e.captureNum,C.fill(void 0);const O={},V={},R={},v=m.contTracks||{},b=m.refContTracks||{},x=m.refVals||{},K=m.contFailedEnds||{};let k=m.failedRefs||[],A=m.spareFailedRefs||[],P=m.contExemptedTracks||{},j=m.spareContExeTracks||{},M=m.assertExeTracksMap||{},Q=m.assertExeTracksStack||[],_;var n=m.misTracksGroupMap||{},i=m.exeTracksGroupMap||{},s=m.fastLanesMap||{};const L=m.assertPassesMap||{},N=m.refCombiGroupMap||{},X={},Y=e.backwardSerials||{},B=e.groupsBounds||{},l=e.capInsideRptStarts||{},ee=e.refFollowingSerials||{},$=(Object.assign(m,{contTracks:v,contHistories:m.contHistories||{},contFailedEnds:K,refContTracks:b,refVals:x,refCombiGroupMap:N,matchSymbolMap:m.matchSymbolMap||{},treetopGroupMap:m.treetopGroupMap||{},refTreetopTracksMap:m.refTreetopTracksMap||{}}),g.unicode||g.unicodeSets),re=[];var F=g.ignoreCase;let U=a=Math.trunc(a)||0,G=!1;const z=(e,r=-1)=>e&&e.length?e[e.length+r]:null,te=["repeat","branch","clause"];var r,o,c,W=!1,H=!1,ae=!1,J=!1,ne=!1,D=!1,Z=null,ie=!1;if(traversePath(t,{enter:function(n,e,r,t){if("root"!==n.type){var{tag:i,param:s}=n,{tag:i,param:s}=(countLoop(),n),l=(i in X?X[i]=1:X[i]++,H&&"repeat"!==i&&("clause"!==i||s.assertion));if(H&&(l&&"ref"===i?de(n):(o=ue()).children&&traversePath(o,{enter(e,r){"ref"===e.tag&&de(e.node)}}),he()),l)return t.fallback();var o=H,l=!ae&&!H;H=ae=!1,W=!1,I===e?l&&w.index++:I<e&&(c=z(w),E[e]=c,(w=c.children).index=0),E,!(l||I<e)||w.index<w.length||w.push(se(n)),w;let a=w[w.index];I=e,a,void 0===a.start&&(a.start=U);var c=()=>(W=H=!0,t.fallback());if(null!==Z){if(Z[e]!==w.index)return t.skipChildren();if(Z.length-1!==e)return;if(Z=null,ie)return ie=!1,c()}if(a.ended)return J=!0,("clause"!==i||s.assertion)&&("branch"!==i||s&&s.isStatic)&&t.skipChildren();if(J=!1,A.foremostCapSerial&&n.serial<A.foremostCapSerial&&(me(),A),l&&!a.reentrant&&oe(n,U)){let e=_&&_[n.serial];if(e&&e[a.start])e[a.start]=!1;else{!k.encore&&k.encore||pe(A,n.serial),A.encore?ge():k.encore||pe(k,n.serial);var f=k.map(e=>[e,q(e.groupIndex)]);JSON.stringify(f)!==k.lastBrief&&Object.defineProperty(k,"lastBrief",{value:JSON.stringify(f),enumerable:!1,writable:!0});let e=P[n.serial];if(!(function(d,s){let i=d.lastRefs;if(i=!i&&d.encore?d:i){let t=d.changedSerials,r=(t=t||(d.changedSerials={}),d.isUnique),a=(d.encore?void 0===r&&(r=d.isUnique=function(){let t={},r=!0;for(var e of d)t[e.groupIndex]=ke(be(e.groupIndex));var a,n,i,s=Object.keys(t);if(1===s.length&&ce(s[0].groupIndex,t[s[0].groupIndex]))return!1;let l=[];for(a of Object.keys(t)){var o=N[a],o=o&&o[t[a]];o&&l.push(o)}let c=N.combiLenMap,f=(void 0===c&&(N.combiLenMap=c={}),{}),u,h=0;for(n of l){for(var p of Object.keys(n)){let e=f[p];if(e||(f[p]=e={len:c[p]||1,count:0}),e.count++,e.count===e.len&&e.len<=s.length){if(e.len===s.length){r=!1;break}e.len>h&&(u=p,h=e.len)}}if(!r)break}if(!r)return r;void 0===u&&(void 0===N.combiIdInc&&(N.combiIdInc=1),u=N.combiIdInc++);for(i of s){let e=N[i],r=(e||(N[i]=e={}),e[t[i]]);r||(e[t[i]]=r={}),r[u]||(r[u]=!0,c[i]?c[i]++:c[i]=1)}return r}()):r=!1,d.validSerial||0),n=[];for(let e=0;r&&e<i.length;e++){var l=i[e];let r=ye(l.groupIndex,!1,s);var o=s<=l.serial&&l.serial>a;if(o&&(t[l.serial]=!0),l.serial>a&&(JSON.stringify(r),ce(l.groupIndex,r),x),o)if(null===r)n.push(l.groupIndex);else{let e=l.serials;o=e.find(e=>e>a&&((i,r)=>{let t=P[r];if(t,t&&Object.keys(t).filter(e=>t[e]).map(e=>y.slice(e)),t){if(!i)return!0;let e=Object.keys(t).filter(e=>t[e]),a=(Y[s]&&(e=e.map(e=>toInvertedIndexOf(e,y))),{serial:r}),n=ee[r]&&{serial:ee[r]};return e.some(e=>{return fe(a,i),n&&oe(n,e+i.length),r=e,!((t=fe(a,i))&&t[r]||n&&oe(n,e+i.length));var r,t})}})(r,e));if(o){a=o;break}}}if(a&&(d.validSerial=a),a<s&&d.encore&&!A.failureContinued){let t=A;if(!t.length){t.push(...d);for(let r=0;r<t.length;r++){let e=t[r];var c=ye(e.groupIndex,!1,s),f=xe(e.groupIndex,!1);e.valSym!==f&&(t[r]=e=Object.assign({},e),e.refVal=c,e.valSym=f)}let e=j;e.finalSerial=0}A.failureContinued=!0}if(a<s&&!n.length)for(var e of i)if(function(e,r){let t=B[e];e=e=>r<=e[1]&&e[0]<=r;return"object"==typeof t?t.some(e):t&&e(t)}(e.groupIndex,s)){n.push(e.groupIndex);break}return a>=s||n.length}}(k,n.serial,a)&&e&&e[a.start])||void a)return a,a,a,e,ne=!0,c();e[a.start]=!1,a,e}}{f=a;let e=n.serial,r=S===y?v:v["t"+S.length],t=(r=r||(v["t"+S.length]={}))[e];t||(r[e]=t={});f=f.start;f in t||(t[f]=!0)}if(D)return l&&(a.onLane=!0),t.skipBrothers();if((f=a).node&&(("clause"!==n.tag||!n.param.assertion)&&ve(f)))return D=!0,l&&(a.onLane=!0),t.skipBrothers();var l=n.value,u=!1;if("char"===i)return(h=function(r,t,a=0){let n="";if(F&&Ee(r))return t.substr(a,r.length).toLowerCase()==r.toLowerCase()&&t[a];for(let e=0;e<r.length;e++){if(t[a+e]!==r[e])return"";n+=r[e]}return n}(l,S,U))?void(U+=h.length):c();if("const"===i){let e=function(e,r,t=0){var a=r[t]||"",n=$?we(r,t,1):a,i=e.toLowerCase(),s=e!==i,l=e=>s?!e:e;if("."==(e=i))return g.dotAll||!"\n\r\u2028\u2029".includes(a)?n:"";const o=constPointsMap.blankCharRanges,c=[["a","z"],["A","Z"],["0","9"],"_"],f=e=>!!Se(e,c);if("\\b"===e)return i=r[t]||"",l(f(r=r[t-1]||"")&&!f(i)||!f(r)&&f(i));if("\\w"===e)return l(f(a))?n:"";if("\\d"===e)return l(Se(a,[["0","9"]]))?n:"";if("\\s"===e)return l(Se(a,o))?n:"";throw Error("Unknown constant "+e)}(l,S,U);return JSON.stringify(e),e?(!0===e&&(e=""),void(U+=e.length)):c()}if("charRange"===i)return h=function(r,e,t=0){e=$?we(e,t,1):e[t]||"";const a=[["a","z"],["A","Z"]],n=e=>"string"==typeof e?e.codePointAt(0):e,i=(e,r)=>n(e)-n(r),s=(e,r)=>0<=i(e,r[0])&&i(e,r[1])<=0;var l,[t,o]=r,c=isStartCharInRange(e,t,o);return c?e:(F&&Ee(e)&&a.some(e=>((e,r)=>s(e[0],r)||s(r[0],e))(r,e))&&(l=e.toLowerCase(),c=isStartCharInRange(e===l?e.toUpperCase():l,t,o)),c&&e)}([s.minChar,s.maxChar],S,U),JSON.stringify(h),h?U+=h.length:c();if("unicode"===i)return h=function(e,r,t=0){r=$?we(r,t,1):r[t]||"";if(r.codePointAt()===e)return r}(l,S,U),JSON.stringify(h),h?U+=h.length:c();if("edge"===i)return function(e,r){var t=e=>["\r","\n","\u2028","\u2029"].includes(e);if("^"===e)return 0===U||g.multiline&&t(r[U-1]);if("$"===e)return U===r.length||g.multiline&&t(r[U]);throw Error("Unknown position sign "+e)}(l,y,U)?U+=0:c();if("ref"===i){let t=q(l,s.isName);JSON.stringify(t);{var h=n,p=t,d=a;let e=b[h.serial],r=(e=e||(b[h.serial]={}))[p];r=r||(e[p]={});h=d.start;h in r||(r[h]=!0)}p=s.isName?O[l]:l;let e=x[p];if((e=e||(x[p]={}))[t]=!0,G&&t&&(t=reverseStr(t,$)),k.length){s.isName&&O;let e=k.findIndex(e=>e.serial===n.serial);(0<(e=e<0&&n.serial>k[0].serial&&k.encore?0:e)||0===e)&&(k.encore?k.splice(e):k.splice(e,1))}d=G?toInvertedIndexOf(U,y)-(t||"").length:U;return t&&!function(e,r,t=0){if(e instanceof RegExp)return 0==(t?r.slice(t):r).search(e);if("string"!=typeof e)throw Error("Expect a string or regExp for search.");return r.substr(t,e.length)===e}(t,y,d)?(de(n,t,!0),he(a),c()):U+=(t||"").length}if("repeat"===i&&!a.reentrant&&s.restraint&&s.minTimes<1)return t.skipChildren();if(o&&"clause"===i&&!s.assertion)return s.exclusive?t.skipChildren():void(a.children.length&&le(a,n,e));if("clause"!==i||!s.assertion||s.forward||a.reentrant||G||(a.inverted=!0,S=(S=m.reversedText)||(m.reversedText=reverseStr(y,$)),U=toInvertedIndexOf(U,y),G=!0),"clause"===i&&s.assertion){h=n;if((l=M[h.serial])&&(Q.push(l),_=l),s.forward&&G&&(a.inverted=!0,a.origText=S,S=y,U=toInvertedIndexOf(U,y),G=!1),ve(a))return t.skipChildren()}else"clause"===i&&s.flagGroup&&(re.push(F),F=s.flagObj.ignoreCase);if(!(u=!!["clause","branch","repeat"].includes(i)||u))throw Error("Unrecognized node named "+i)}},leave:function(t,a,e,n){if(a||"root"!==t.type){countLoop(),I!==a&&I>a&&(E.pop(),w=E[a].children,I=a);let c=w[w.index];if(null===Z||Z[a]===w.index){S.substr(U,20),U;var{tag:r,param:i}=t,s=e=>{W=H=!0,e||he(),w.pop(),w.index--,n.fallback()};if(ne)return s(!(ne=!1));if(H&&!te.includes(r))return s(!0);var l=H;if(H=!1,D)if("clause"===r&&i.assertion)D=!1;else if("repeat"!==r)return n.skipBrothers();if("repeat"===r){const b=(e,r,t)=>{let a={};for(let e=1;e<C.length;e++){var n,i=C[e];t<V[e]&&(n=T[e],a[e]=[n,i],C[e]=T[e]=V[e]=void 0)}let s=[];for(var l of Object.keys(R)){var o;l<t||(o=R[l],s.push(o),delete R[l])}s.length&&(a=Object.assign({},...s,a)),c.matchMaps[r]=a},x=(e,r)=>{var t=e in c.statuses;c.statuses[e]=r;let a=c.avlStatusesKeys;t||r.ended||a.push(e)};var o=r=>{if(r in c.statuses&&c.statuses[r].ended){let e=c.avlStatusesKeys;r=e.indexOf(r);0<=r&&e.splice(r,1)}};const k=e=>{var r;K,e&&c,e||backtrackEnabled?e||U===c.lastStart||(b(c.start,c.lastStart,t.serial),x(c.lastStart,c.children),r=c.statuses[U]||[],c.children=r,c.lastStart=U,r=c.matchMaps[U],R[t.serial]=r):c.children.length=0,!e&&c.children.length&&le(c,t,a),c,U,ae=!0,n.reenter()};var f=e=>{let r=null;for(var t of c.avlStatusesKeys)a=+t,(!e||e<=a)&&a<=c.lastStart&&(null===r?a>=r:a>r)&&!c.statuses[a].ended&&(r=+t);var a;let n;if(null!==r&&(U=r,n=c.statuses[r]),!n||n.ended)return!1;k()},u=()=>{var e=c.matchMaps[z(c.backtracks,-2)];R[t.serial]=e};if(!c.reentrant&&(c.times=0,c.backtracks=[c.start],c.lastIndex=c.start,c.lastStart=c.start,c.lastEnd=c.start,c.statuses={[c.start]:c.children},c.avlStatusesKeys=Object.keys(c.statuses),c.matchMaps={},c.reentrant=!0,i.restraint&&i.minTimes<1))return c.ended=!0;if(c.ended&&!i.restraint)return(J=!1)!==f(z(c.backtracks,-2))?(c.ended=!1,c.backtracks.pop(),c.times--,void c):c.backtracks.length-1<=0||c.times<=i.minTimes?(c,c,R[t.serial]=null,s()):(c.backtracks.pop(),c.times--,U=z(c.backtracks),c.lastStart=U,u(),c.lastEnd=U,c.offset=U-c.start);if(c.ended)return J=!1,Ie(i.maxTimes)&&c.times>=i.maxTimes||!c.backtracks.length?s():(U=z(c.backtracks),x(c.lastStart,c.children),c.lastEnd=c.lastStart=U,c.children=[],c.tracking=!0,c.ended=!1,void k());if(W||J){if(W=!1,c.children.ended=!0,o(c.lastStart),c.tracking)return c.backtracks.length&&!1!==f()?i.restraint?(c.ended=!1,c.backtracks.pop(),c.times--,void c):c.times--:s();if(u(),c.ended=!0,U=c.lastStart,c.times<i.minTimes&&i.isStatic)return void s();if(c.times<i.minTimes)return k(!0)}else{c.times++;f=U-c.lastIndex;U,c,c.backtracks.includes(U)||c.backtracks.push(U),i.restraint||c,c.lastIndex=U,(Ie(i.maxTimes)&&c.times>=i.maxTimes||!f)&&(c.ended=!0),i.isStatic&&(c.children.ended=!0,o(c.lastStart))}if(c,!c.ended)if(!i.restraint||c.times<i.minTimes){f=c.statuses[U];if(f&&f.ended)c.ended=!0;else{var o=t.serial;let e=K[o];if(e&&(e.includes(U)||i.empty&&e.includes(U+1)))return c.ended=!0,k();k()}}else c.ended=!0;if(c.ended)return b(c.start,c.lastStart,t.serial),c.times<i.minTimes?s():(u(),c.offset=U-c.start,void(c.lastEnd=U))}if("branch"===r){if(c.ended)return void(U=c.start);f=!W;if(c.ended=!0,l||J)w,c.failed=!0,U=c.start,W=!0;else if(f)return W=!1,n.skipBrothers()}if("clause"===r&&!i.assertion&&!i.flagGroup){c.reentrant||(c.reentrant=!0);let e=!W&&!J;if(W=!1,i.exclusive&&((e=!e)?(o=$?Math.max(1,we(y,U,1).length):1,(U+=o)>S.length&&(e=!1)):U=c.start),e&&i.catchable){c.offset=U-c.start;var{captureIndex:u,groupName:l}=i,f=G?toInvertedIndexOf(U,y):c.start,o=f+c.offset,f=y.slice(f,o);C[u]=f,T[u]=o,V[u]=t.serial,l&&(O[l]=u)}else if(!e)return s()}if("clause"===r&&i.assertion){f=c.reentrant,o=(c.reentrant||(c.lastIndex=c.start,c.reentrant=!0),()=>{!i.forward&&c.inverted?(U=c.start,S=y,G=!1):i.forward&&c.inverted&&(U=c.start,c.origText&&(S=c.origText,c.origText=null),G=!0)});let e=!W;if(W=!1,e){l=c;let r=M[l.serial],t=(r||(M[l.serial]=r={}),[]);let a=[l.children],n=[0];for(let e=0;e<a.length;){var h=a[e][n[e]++];if(h){{p=void 0;d=void 0;p=void 0;g=void 0;var p=h;{var d=p.serial,g=r;let e=g[d];(e=e||(g[d]={}))[p.start]=!0,t.push(p)}}if("clause"!==h.tag||!h.node||!h.node.param.assertion){g=h;if(g.node&&("clause"!==g.tag||!g.node.param.assertion))if(g.node.param.canPass){let e=L[g.serial];e||(L[g.serial]=e={}),e[g.start]=!0}var m=h.children;if(m&&m.length&&(a.push(m),n.push(0)),"repeat"===h.tag)for(let e=0,r=h.backtracks;e<r.length-1;e++){var v=h.statuses[r[e]];v&&v!==m&&(a.push(v),n.push(0))}}}else e++}t.map(e=>e.tag+"-"+e.serial+" "+e.start);u=l;if("clause"===u.tag&&u.node.param.assertion&&u.node.param.isAssertSilent){let e=L[u.serial];e||(L[u.serial]=e={}),e[u.start]=!0}}else i.exclusive&&(c.children=[]);if(f||_&&_===M[t.serial]&&(Q.pop(),_=null),(e=i.exclusive?!e:e)||(c.lastFailedEnd=U,U=c.start),!e)return o(),s();o(),U=c.start}else if("clause"===r&&i.flagGroup&&(F=re.pop(),W))return s();c.offset=U-c.start,te.includes(r)||(c.ended=!0)}}else(H||W)&&(U=null)}}),1===A.foremostCapSerial&&me(),m.failedRefs=k,m.spareFailedRefs=A,m.contExemptedTracks=P,m.spareContExeTracks=j,m.assertExeTracksMap=M,m.assertExeTracksStack=Q,Object.assign(m,{misTracksGroupMap:n,exeTracksGroupMap:i,fastLanesMap:s,assertPassesMap:L}),"number"!=typeof U)return null;C[0]=S.slice(a,U);for(r of Object.keys(R)){var f,u=R[r];if(u)for(var[h,p]of Object.entries(u)){let e=l[h];e&&(Array.isArray(e)?e.includes(+r):+r===e)&&([p,f]=p,C[h]=f,T[h]=p)}}for([o,c]of Object.entries(O))C.groups[o]=C[c],T[o]=T[c];return C._indices=T,C;function se(e){var r={tag:e.tag,serial:e.serial};return Object.defineProperty(r,"children",{value:Object.assign([],{index:0}),enumerable:!1,writable:!0}),("ref"===e.tag||"clause"===e.tag&&e.param.assertion||e.param&&e.param.canPass)&&Object.defineProperty(r,"node",{value:e,enumerable:!1,writable:!0}),r}function le(e,r,t){e=function(e,r,t){(Z=[])[t]=w.index;let a=e,n=r,i=t+1;for(;!(["repeat"].includes(a.tag)||"branch"===a.tag&&a.isStatic);i++){if("clause"===a.tag&&n.param.exclusive){a=null;break}if("branch"===a.tag&&(a.ended=!1),"ref"===a.tag)break;var s=a.children&&a.children.length-1;if(!(0<=s))break;a=a.children[s],n=n.children[s],Z[i]=s}return a}(e,r,t);e&&!["repeat","branch"].includes(e.tag)&&(ie=!0)}function oe(e,r){var t=S===y?v:v["t"+S.length],t=t&&t[e.contId||e.serial];return t&&r in t}function ce(e,r){e=x[e];return e&&e[r]}function fe(e,r){e=b[e.serial];if(e)return e[r]}function d(e,r){let t=j,a=t[e];(a=a||(t[e]={}))[r.start]=!0}function ue(){return w[w.index]}function he(e){if(A.length){e=e||ue();var r=j[e.serial];if(!(r&&e.start in r)){d(e.serial,e);var n=e=>traversePath({children:e},{enter(e,r){r&&d(e.serial,e)}});let t=[[e]],a=[0];for(let e=0;e<t.length;){var i=t[e][a[e]++];if(i){var s=i.children;if(s&&s.length&&(n(s),t.push(s),a.push(0)),"repeat"===i.tag)for(let e=0,r=i.backtracks;e<r.length-1;e++){var l=i.statuses[r[e]];l&&l!==s&&(n(l),t.push(l),a.push(0))}}else e++}}}}function pe(e,r){var t;t=r,(r=e).length&&r.some(e=>function(e,r){var e=B[e],t=e=>e[1]<r;return"object"==typeof e?t(e[e.length-1]):!serialRange||t(e)}(e.groupIndex,t)&&q(e.groupIndex)!==e.refVal)&&(e.encore=!0)}function de(t,a,e){let r=t.param.isName?O[t.value]:t.value;void 0===a&&(a=q(r));var n=xe(r),i=!!e;let s=A,l=s.findIndex(e=>e.groupIndex===r),o=(a||0<=l&&(s,l),s.serialMismatchs||(s.serialMismatchs={}),s.serialMismatchs);if((!i&&o[t.serial]||i&&!o[t.serial]&&t.serial in o)&&(s,l),!e&&0<=l){let e=s[l],r=(e.refVal=a,e.valSym=n,e.serial=Math.max(e.serial,t.serial),e.serials);r.includes(t.serial)||r.push(t.serial)}else{l<0&&(l=s.length);e={serial:t.serial,groupIndex:r,refVal:a,valSym:n,serials:[t.serial]};s[l]=e}s.sort((e,r)=>r.serial-e.serial),o[t.serial]=i;a=s[0];if(a){let e=j;e.finalSerial=a.serial}s.foremostCapIndex=s.reduce((e,r)=>!e||r.groupIndex<e?r.groupIndex:e,k.foremostCapIndex);n=B[s.foremostCapIndex][0];s.foremostCapSerial="object"==typeof n?n[0]:n}function ge(){var e;if(0<=(e=j.finalSerial||0))for(var r of Object.keys(P))e<r?(r in j&&Object.assign(P[r],j[r]),j[r]=P[r]):isNaN(r)||(r in j?j[r]=Object.assign(P[r],j[r]):j[r]=P[r]);var t,a,n,i,s=A.reduce((e,r)=>Math.max(e,r.serial),0);A.finalSerial=s;let l={},o={};for(t of A)l[t.groupIndex]=t;if(k.lastRefs)for(i of k.lastRefs){var c=l[i.groupIndex];(!c||c.serial<i.serial)&&(o[i.groupIndex]=i)}for(a of Object.keys(l)){let e=o[a],r=l[a];e?(r.serial>e.serial&&(o[a]=r),n=e.serials.concat(r.serials),o[a].serials=[...new Set(n)]):o[a]=r}A.lastRefs=Object.values(o).sort((e,r)=>r.serial-e.serial),A.foremostCapIndex=A.lastRefs.reduce