diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000..626e009314 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +frontend/utilities/node-sql-parser \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 8eb4d80d72..17a0cabc1e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -34,6 +34,7 @@ website/ # certain frontend files that are not meant to be formatted frontend/components/FleetAce/mode.ts frontend/components/FleetAce/theme.ts +frontend/utilities/node-sql-parser # github workflow yaml, which may contain shell scripts that shouldn't be formatted .github/workflows/* \ No newline at end of file diff --git a/changes/30109-fix-sql-like-clause b/changes/30109-fix-sql-like-clause new file mode 100644 index 0000000000..4e7e178c02 --- /dev/null +++ b/changes/30109-fix-sql-like-clause @@ -0,0 +1 @@ +- Fixed an issue where using ESCAPE in a LIKE clause caused SQL validation to fail diff --git a/frontend/components/forms/validators/validate_query/index.js b/frontend/components/forms/validators/validate_query/index.js index 3a8436217d..42a73cfc61 100644 --- a/frontend/components/forms/validators/validate_query/index.js +++ b/frontend/components/forms/validators/validate_query/index.js @@ -1,4 +1,4 @@ -import { Parser } from "node-sql-parser"; +import { Parser } from "utilities/node-sql-parser/sqlite"; import { includes, some } from "lodash"; const invalidQueryResponse = (message) => { diff --git a/frontend/utilities/node-sql-parser/README.md b/frontend/utilities/node-sql-parser/README.md new file mode 100644 index 0000000000..440140da1d --- /dev/null +++ b/frontend/utilities/node-sql-parser/README.md @@ -0,0 +1,12 @@ +# About + +This is compiled from a [fork](https://github.com/taozhi8833998/node-sql-parser/compare/master...sgress454:node-sql-parser:5.3.10-plus) of the 5.3.10 release of [node-sql-parser library](https://github.com/sgress454/node-sql-parser/tree/sgress454/add-escape-to-sqlite-like) created to fix issue [#30109](https://github.com/fleetdm/fleet/issues/30109). + +Once a new release of node-sql-parser comes out with this code in it, we can revert back to using `node-sql-parser` as a dependency in Fleet. + +# To compile + +1. Check out https://github.com/sgress454/node-sql-parser/tree/5.3.10-plus +2. `npm install` +3. `npm run build` +4. `cp output/prod/build/sqlite.* /path/to/fleet/frontend/utilities/node-sql-parser` \ No newline at end of file diff --git a/frontend/utilities/node-sql-parser/sqlite.d.ts b/frontend/utilities/node-sql-parser/sqlite.d.ts new file mode 100644 index 0000000000..81a39a8511 --- /dev/null +++ b/frontend/utilities/node-sql-parser/sqlite.d.ts @@ -0,0 +1 @@ +export * from '../types'; diff --git a/frontend/utilities/node-sql-parser/sqlite.js b/frontend/utilities/node-sql-parser/sqlite.js new file mode 100644 index 0000000000..f6ac501dec --- /dev/null +++ b/frontend/utilities/node-sql-parser/sqlite.js @@ -0,0 +1,2 @@ +!function(r,t){for(var e in t)r[e]=t[e]}(exports,function(r){var t={};function e(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return r[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=r,e.c=t,e.d=function(r,t,n){e.o(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:n})},e.r=function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},e.t=function(r,t){if(1&t&&(r=e(r)),8&t)return r;if(4&t&&"object"==typeof r&&r&&r.__esModule)return r;var n=Object.create(null);if(e.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:r}),2&t&&"string"!=typeof r)for(var o in r)e.d(n,o,function(t){return r[t]}.bind(null,o));return n},e.n=function(r){var t=r&&r.__esModule?function(){return r.default}:function(){return r};return e.d(t,"a",t),t},e.o=function(r,t){return Object.prototype.hasOwnProperty.call(r,t)},e.p="",e(e.s=1)}([function(r,t,e){"use strict";var n=e(2);function o(r,t,e,n){this.message=r,this.expected=t,this.found=e,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,o)}!function(r,t){function e(){this.constructor=r}e.prototype=t.prototype,r.prototype=new e}(o,Error),o.buildMessage=function(r,t){var e={literal:function(r){return'"'+o(r.text)+'"'},class:function(r){var t,e="";for(t=0;t0){for(t=1,n=1;t{const{table:t,as:e}=r;Ic[t]=t,e&&(Ic[e]=t),function(r){const t=Tc(r);r.clear(),t.forEach(t=>r.add(t))}(kc)}),t},Qr=yu("=",!1),Xr=yu("DUPLICATE",!0),Kr=yu("ABORT",!0),zr=yu("FAIL",!0),Zr=yu("IGNORE",!0),Jr=yu("REPLACE",!0),rt=yu("ROLLBACK",!0),tt=function(r,t){return jc(r,t)},et=yu("!",!1),nt=function(r){return r[0]+" "+r[2]},ot=yu(">=",!1),ut=yu(">",!1),at=yu("<=",!1),st=yu("<>",!1),it=yu("<",!1),ct=yu("==",!1),lt=yu("!=",!1),ft=yu("ESCAPE",!0),pt=yu("glob",!0),bt=yu("+",!1),vt=yu("-",!1),yt=yu("*",!1),dt=yu("/",!1),ht=yu("%",!1),mt=yu("||",!1),wt=yu("?",!1),Lt=yu("~",!1),Ct=yu("?|",!1),At=yu("?&",!1),Et=yu("#-",!1),gt=yu("#>>",!1),jt=yu("#>",!1),_t=yu("@>",!1),Tt=yu("<@",!1),St=function(r){return!0===wc[r.toUpperCase()]},xt=yu('"',!1),kt=/^[^"]/,It=du(['"'],!0,!1),Nt=/^[^']/,Rt=du(["'"],!0,!1),Ot=yu("`",!1),Ut=/^[^`]/,Mt=du(["`"],!0,!1),Dt=function(r,t){return r+t.join("")},Pt=/^[A-Za-z_]/,Ft=du([["A","Z"],["a","z"],"_"],!1,!1),$t=/^[A-Za-z0-9_]/,Ht=du([["A","Z"],["a","z"],["0","9"],"_"],!1,!1),Bt=/^[A-Za-z0-9_:]/,qt=du([["A","Z"],["a","z"],["0","9"],"_",":"],!1,!1),Gt=yu(":",!1),Wt=yu("_binary",!0),Yt=yu("X",!0),Vt=/^[0-9A-Fa-f]/,Qt=du([["0","9"],["A","F"],["a","f"]],!1,!1),Xt=yu("b",!0),Kt=yu("0x",!1),zt=function(r,t){return{type:r.toLowerCase(),value:t[1].join("")}},Zt=/^[^"\\\0-\x1F\x7F]/,Jt=du(['"',"\\",["\0",""],""],!0,!1),re=yu("''",!1),te=/^[\n\r]/,ee=du(["\n","\r"],!1,!1),ne=yu(".",!1),oe=/^[0-9]/,ue=du([["0","9"]],!1,!1),ae=(du([["0","9"],["a","f"],["A","F"]],!1,!1),/^[eE]/),se=du(["e","E"],!1,!1),ie=/^[+\-]/,ce=du(["+","-"],!1,!1),le=yu("ANALYZE",!0),fe=yu("ATTACH",!0),pe=yu("NULL",!0),be=yu("NOT NULL",!0),ve=yu("TRUE",!0),ye=yu("TO",!0),de=yu("FALSE",!0),he=yu("SHOW",!0),me=yu("DROP",!0),we=yu("USE",!0),Le=yu("ALTER",!0),Ce=yu("SELECT",!0),Ae=yu("UPDATE",!0),Ee=yu("CREATE",!0),ge=yu("TEMPORARY",!0),je=yu("TEMP",!0),_e=yu("DELETE",!0),Te=yu("INSERT",!0),Se=yu("RECURSIVE",!0),xe=yu("RENAME",!0),ke=yu("RETURNING",!0),Ie=(yu("EXPLAIN",!0),yu("PARTITION",!0)),Ne=yu("INTO",!0),Re=yu("FROM",!0),Oe=yu("UNLOCK",!0),Ue=yu("AS",!0),Me=yu("TABLE",!0),De=yu("TABLES",!0),Pe=yu("DATABASE",!0),Fe=yu("SCHEMA",!0),$e=yu("LEFT",!0),He=yu("INNER",!0),Be=yu("JOIN",!0),qe=yu("OUTER",!0),Ge=yu("OVER",!0),We=yu("UNION",!0),Ye=yu("VALUES",!0),Ve=yu("USING",!0),Qe=yu("WHERE",!0),Xe=yu("GROUP",!0),Ke=yu("BY",!0),ze=yu("ORDER",!0),Ze=yu("HAVING",!0),Je=yu("LIMIT",!0),rn=yu("OFFSET",!0),tn=yu("ASC",!0),en=yu("DESC",!0),nn=yu("DESCRIBE",!0),on=yu("ALL",!0),un=yu("DISTINCT",!0),an=yu("BETWEEN",!0),sn=yu("IN",!0),cn=yu("IS",!0),ln=yu("LIKE",!0),fn=yu("RLIKE",!0),pn=yu("REGEXP",!0),bn=yu("EXISTS",!0),vn=yu("AND",!0),yn=yu("OR",!0),dn=yu("COUNT",!0),hn=yu("MAX",!0),mn=yu("MIN",!0),wn=yu("SUM",!0),Ln=yu("AVG",!0),Cn=yu("CALL",!0),An=yu("CASE",!0),En=yu("WHEN",!0),gn=yu("THEN",!0),jn=yu("ELSE",!0),_n=yu("CAST",!0),Tn=yu("BIT",!0),Sn=yu("CHAR",!0),xn=yu("VARCHAR",!0),kn=yu("NUMERIC",!0),In=yu("DECIMAL",!0),Nn=yu("SIGNED",!0),Rn=yu("UNSIGNED",!0),On=yu("INT",!0),Un=yu("ZEROFILL",!0),Mn=yu("INTEGER",!0),Dn=yu("JSON",!0),Pn=yu("SMALLINT",!0),Fn=yu("TINYINT",!0),$n=yu("TINYTEXT",!0),Hn=yu("TEXT",!0),Bn=yu("MEDIUMTEXT",!0),qn=yu("LONGTEXT",!0),Gn=yu("BIGINT",!0),Wn=yu("ENUM",!0),Yn=yu("FLOAT",!0),Vn=yu("DOUBLE",!0),Qn=yu("REAL",!0),Xn=yu("DATE",!0),Kn=yu("DATETIME",!0),zn=yu("TIME",!0),Zn=yu("TIMESTAMP",!0),Jn=yu("TRUNCATE",!0),ro=yu("USER",!0),to=yu("CURRENT_DATE",!0),eo=(yu("ADDDATE",!0),yu("INTERVAL",!0)),no=yu("YEAR",!0),oo=yu("MONTH",!0),uo=yu("DAY",!0),ao=yu("HOUR",!0),so=yu("MINUTE",!0),io=yu("SECOND",!0),co=yu("CURRENT_TIME",!0),lo=yu("CURRENT_TIMESTAMP",!0),fo=yu("CURRENT_USER",!0),po=yu("SESSION_USER",!0),bo=yu("SYSTEM_USER",!0),vo=yu("GLOBAL",!0),yo=yu("SESSION",!0),ho=yu("PERSIST",!0),mo=yu("PERSIST_ONLY",!0),wo=yu("VIEW",!0),Lo=yu("@",!1),Co=yu("@@",!1),Ao=yu("$",!1),Eo=yu("return",!0),go=yu(":=",!1),jo=yu("DUAL",!0),_o=yu("ADD",!0),To=yu("COLUMN",!0),So=yu("INDEX",!0),xo=yu("MODIFY",!0),ko=yu("FULLTEXT",!0),Io=yu("SPATIAL",!0),No=yu("COMMENT",!0),Ro=yu("CONSTRAINT",!0),Oo=yu("REFERENCES",!0),Uo=yu("SQL_CALC_FOUND_ROWS",!0),Mo=yu("SQL_CACHE",!0),Do=yu("SQL_NO_CACHE",!0),Po=yu("SQL_SMALL_RESULT",!0),Fo=yu("SQL_BIG_RESULT",!0),$o=yu("SQL_BUFFER_RESULT",!0),Ho=yu(",",!1),Bo=yu("[",!1),qo=yu("]",!1),Go=yu(";",!1),Wo=yu("->",!1),Yo=yu("->>",!1),Vo=yu("&&",!1),Qo=yu("/*",!1),Xo=yu("*/",!1),Ko=yu("--",!1),zo=yu("#",!1),Zo={type:"any"},Jo=/^[ \t\n\r]/,ru=du([" ","\t","\n","\r"],!1,!1),tu=yu("blob",!0),eu=yu("tinyblob",!0),nu=yu("mediumblob",!0),ou=yu("longblob",!0),uu=yu("boolean",!0),au=function(r){return{dataType:r}},su=/^[0-6]/,iu=du([["0","6"]],!1,!1),cu=0,lu=0,fu=[{line:1,column:1}],pu=0,bu=[],vu=0;if("startRule"in t){if(!(t.startRule in a))throw new Error("Can't start parsing from rule \""+t.startRule+'".');s=a[t.startRule]}function yu(r,t){return{type:"literal",text:r,ignoreCase:t}}function du(r,t,e){return{type:"class",parts:r,inverted:t,ignoreCase:e}}function hu(t){var e,n=fu[t];if(n)return n;for(e=t-1;!fu[e];)e--;for(n={line:(n=fu[e]).line,column:n.column};epu&&(pu=cu,bu=[]),bu.push(r))}function Lu(r,t,e){return new o(o.buildMessage(r,t),r,t,e)}function Cu(){var r,t;return r=cu,Ji()!==u&&(t=gu())!==u?(lu=r,r=t):(cu=r,r=u),r}function Au(){var t;return(t=function(){var t,e,n;t=cu,(e=function(){var t,e,n,o;t=cu,"analyze"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(le));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="ANALYZE"):(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&(n=pa())!==u&&Ji()!==u?(lu=t,o=e,a=n,xc.add(`${o}::${a.db}::${a.table}`),e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:o.toLowerCase(),table:a}},t=e):(cu=t,t=u);var o,a;return t}())===u&&(t=function(){var t,e,n,o,a,s;t=cu,(e=function(){var t,e,n,o;t=cu,"attach"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(fe));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="ATTACH"):(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&(n=Ys())!==u&&Ji()!==u&&(o=Ua())!==u&&Ji()!==u&&(a=qs())!==u&&Ji()!==u&&(s=Ja())!==u&&Ji()!==u?(lu=t,i=e,c=n,l=o,f=a,p=s,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:i.toLowerCase(),database:c,expr:l,as:f&&f[0].toLowerCase(),schema:p}},t=e):(cu=t,t=u);var i,c,l,f,p;return t}())===u&&(t=function(){var r,t,e,n,o,a,s;r=cu,(t=Ns())!==u&&Ji()!==u&&(e=Gs())!==u&&Ji()!==u?((n=Su())===u&&(n=null),n!==u&&Ji()!==u&&(o=ia())!==u?(lu=r,c=t,l=e,f=n,(p=o)&&p.forEach(r=>xc.add(`${c}::${r.db}::${r.table}`)),t={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:c.toLowerCase(),keyword:l.toLowerCase(),prefix:f,name:p}},r=t):(cu=r,r=u)):(cu=r,r=u);var c,l,f,p;r===u&&(r=cu,(t=Ns())!==u&&Ji()!==u&&(e=Ri())!==u&&Ji()!==u?((n=Su())===u&&(n=null),n!==u&&Ji()!==u&&(o=ia())!==u?(lu=r,t=function(r,t,e,n){return{tableList:Array.from(xc),columnList:Tc(kc),ast:{type:r.toLowerCase(),keyword:t.toLowerCase(),prefix:e,name:n}}}(t,e,n,o),r=t):(cu=r,r=u)):(cu=r,r=u),r===u&&(r=cu,(t=Ns())!==u&&Ji()!==u&&(e=Fi())!==u&&Ji()!==u&&(n=Ka())!==u&&Ji()!==u&&(o=Vs())!==u&&Ji()!==u&&(a=pa())!==u&&Ji()!==u?((s=function(){var r,t,e,n,o,a;r=cu,(t=Du())===u&&(t=Pu());if(t!==u){for(e=[],n=cu,(o=Ji())!==u?((a=Du())===u&&(a=Pu()),a!==u?n=o=[o,a]:(cu=n,n=u)):(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u?((a=Du())===u&&(a=Pu()),a!==u?n=o=[o,a]:(cu=n,n=u)):(cu=n,n=u);e!==u?(lu=r,t=i(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())===u&&(s=null),s!==u&&Ji()!==u?(lu=r,t=function(r,t,e,n,o){return{tableList:Array.from(xc),columnList:Tc(kc),ast:{type:r.toLowerCase(),keyword:t.toLowerCase(),name:e,table:n,options:o}}}(t,e,n,a,s),r=t):(cu=r,r=u)):(cu=r,r=u)));return r}())===u&&(t=function(){var t;(t=function(){var r,t,e,n,o,a,s;r=cu,(t=Os())!==u&&Ji()!==u?((e=Us())===u&&(e=Ms()),e===u&&(e=null),e!==u&&Ji()!==u&&Gs()!==u&&Ji()!==u?((n=Tu())===u&&(n=null),n!==u&&Ji()!==u&&(o=pa())!==u&&Ji()!==u&&(a=function(){var r,t,e,n,o,a,s,i,c;if(r=cu,(t=Vi())!==u)if(Ji()!==u)if((e=Iu())!==u){for(n=[],o=cu,(a=Ji())!==u&&(s=Wi())!==u&&(i=Ji())!==u&&(c=Iu())!==u?o=a=[a,s,i,c]:(cu=o,o=u);o!==u;)n.push(o),o=cu,(a=Ji())!==u&&(s=Wi())!==u&&(i=Ji())!==u&&(c=Iu())!==u?o=a=[a,s,i,c]:(cu=o,o=u);n!==u&&(o=Ji())!==u&&(a=Qi())!==u?(lu=r,t=T(e,n),r=t):(cu=r,r=u)}else cu=r,r=u;else cu=r,r=u;else cu=r,r=u;return r}())!==u&&Ji()!==u?((s=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=Yu())!==u){for(e=[],n=cu,(o=Ji())!==u?((a=Wi())===u&&(a=null),a!==u&&(s=Ji())!==u&&(i=Yu())!==u?n=o=[o,a,s,i]:(cu=n,n=u)):(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u?((a=Wi())===u&&(a=null),a!==u&&(s=Ji())!==u&&(i=Yu())!==u?n=o=[o,a,s,i]:(cu=n,n=u)):(cu=n,n=u);e!==u?(lu=r,t=m(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())===u&&(s=null),s!==u?(lu=r,i=t,c=e,l=n,p=a,b=s,(f=o)&&xc.add(`create::${f.db}::${f.table}`),t={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:i[0].toLowerCase(),keyword:"table",temporary:c&&c[0].toLowerCase(),if_not_exists:l,table:[f],create_definitions:p,table_options:b}},r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u);var i,c,l,f,p,b;r===u&&(r=cu,(t=Os())!==u&&Ji()!==u?((e=Us())===u&&(e=Ms()),e===u&&(e=null),e!==u&&Ji()!==u&&Gs()!==u&&Ji()!==u?((n=Tu())===u&&(n=null),n!==u&&Ji()!==u&&(o=pa())!==u&&Ji()!==u&&(a=qs())!==u&&Ji()!==u&&(s=Qu())!==u?(lu=r,t=function(r,t,e,n,o,u){return n&&xc.add(`create::${n.db}::${n.table}`),{tableList:Array.from(xc),columnList:Tc(kc),ast:{type:r[0].toLowerCase(),keyword:"table",temporary:t&&t[0].toLowerCase(),if_not_exists:e,table:[n],as:"as",query_expr:u}}}(t,e,n,o,0,s),r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u));return r}())===u&&(t=function(){var t,e,n,o,a,s;t=cu,(e=Os())!==u&&Ji()!==u?((n=Ys())===u&&(n=function(){var t,e,n,o;t=cu,"schema"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Fe));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="SCHEMA"):(cu=t,t=u)):(cu=t,t=u);return t}()),n!==u&&Ji()!==u?((o=Tu())===u&&(o=null),o!==u&&Ji()!==u&&(a=pc())!==u&&Ji()!==u?((s=function(){var r,t,e,n,o,a;if(r=cu,(t=Wu())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wu())!==u?n=o=[o,a]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wu())!==u?n=o=[o,a]:(cu=n,n=u);e!==u?(lu=r,t=i(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())===u&&(s=null),s!==u?(lu=t,e=function(r,t,e,n,o){const u=t.toLowerCase();return{tableList:Array.from(xc),columnList:Tc(kc),ast:{type:r[0].toLowerCase(),keyword:u,if_not_exists:e,[u]:{db:n.schema,schema:n.name},create_definitions:o}}}(e,n,o,a,s),t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(t=function(){var r,t,e,n,o,a,s,i,c,l,f;r=cu,(t=Os())!==u&&Ji()!==u?((e=Hi())===u&&(e=null),e!==u&&Ji()!==u&&(n=Fi())!==u&&Ji()!==u?((o=Tu())===u&&(o=null),o!==u&&Ji()!==u&&(a=pa())!==u&&Ji()!==u?((s=ua())===u&&(s=null),s!==u&&Ji()!==u&&(i=Vs())!==u&&Ji()!==u&&(c=pa())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&(l=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=ku())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=ku())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=ku())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,t=m(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())!==u&&Ji()!==u&&Qi()!==u&&Ji()!==u?((f=ya())===u&&(f=null),f!==u?(lu=r,p=t,b=e,v=n,y=o,d=a,h=i,w=c,L=l,C=f,t={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:p[0].toLowerCase(),index_type:b&&b.toLowerCase(),keyword:v.toLowerCase(),if_not_exists:y,index:{schema:d.db,name:d.table},on_kw:h[0].toLowerCase(),table:w,index_columns:L,where:C}},r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u);var p,b,v,y,d,h,w,L,C;return r}())===u&&(t=function(){var t,e,n,o,a,s,i,c,l,f,h,j,_;t=cu,(e=Os())!==u&&Ji()!==u?((n=Us())===u&&(n=Ms()),n===u&&(n=null),n!==u&&Ji()!==u?("trigger"===r.substr(cu,7).toLowerCase()?(o=r.substr(cu,7),cu+=7):(o=u,0===vu&&wu(p)),o!==u&&Ji()!==u?((a=Tu())===u&&(a=null),a!==u&&Ji()!==u&&(s=pa())!==u&&Ji()!==u?("before"===r.substr(cu,6).toLowerCase()?(i=r.substr(cu,6),cu+=6):(i=u,0===vu&&wu(b)),i===u&&("after"===r.substr(cu,5).toLowerCase()?(i=r.substr(cu,5),cu+=5):(i=u,0===vu&&wu(v)),i===u&&("instead of"===r.substr(cu,10).toLowerCase()?(i=r.substr(cu,10),cu+=10):(i=u,0===vu&&wu(y)))),i===u&&(i=null),i!==u&&Ji()!==u&&(c=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=xu())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=li())!==u&&(s=Ji())!==u&&(i=xu())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=li())!==u&&(s=Ji())!==u&&(i=xu())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,t=m(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())!==u&&Ji()!==u?("on"===r.substr(cu,2).toLowerCase()?(l=r.substr(cu,2),cu+=2):(l=u,0===vu&&wu(d)),l!==u&&Ji()!==u&&(f=pa())!==u&&Ji()!==u?((h=function(){var t,e,n,o;t=cu,"for"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(C));e!==u&&Ji()!==u?("each"===r.substr(cu,4).toLowerCase()?(n=r.substr(cu,4),cu+=4):(n=u,0===vu&&wu(A)),n===u&&(n=null),n!==u&&Ji()!==u?("row"===r.substr(cu,3).toLowerCase()?(o=r.substr(cu,3),cu+=3):(o=u,0===vu&&wu(E)),o===u&&("statement"===r.substr(cu,9).toLowerCase()?(o=r.substr(cu,9),cu+=9):(o=u,0===vu&&wu(g))),o!==u?(lu=t,a=e,i=o,e={keyword:(s=n)?`${a.toLowerCase()} ${s.toLowerCase()}`:a.toLowerCase(),args:i.toLowerCase()},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var a,s,i;return t}())===u&&(h=null),h!==u&&Ji()!==u?((j=function(){var r,t;r=cu,pi()!==u&&Ji()!==u&&(t=Ua())!==u?(lu=r,r={type:"when",cond:t}):(cu=r,r=u);return r}())===u&&(j=null),j!==u&&Ji()!==u&&(_=function(){var t,e,n,o;t=cu,"begin"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(w));e!==u&&Ji()!==u&&(n=gu())!==u&&Ji()!==u?("end"===r.substr(cu,3).toLowerCase()?(o=r.substr(cu,3),cu+=3):(o=u,0===vu&&wu(L)),o!==u?(lu=t,t=e={type:"multiple",prefix:e,expr:n,suffix:o}):(cu=t,t=u)):(cu=t,t=u);return t}())!==u?(lu=t,S=o,x=a,k=s,I=i,N=c,R=f,O=h,U=j,M=_,e={type:"create",temporary:(T=n)&&T[0].toLowerCase(),time:I&&I.toLowerCase(),events:N,trigger:k,table:R,for_each:O,if_not_exists:x,when:U,execute:M,keyword:S&&S.toLowerCase()},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var T,S,x,k,I,N,R,O,U,M;return t}())===u&&(t=function(){var r,t,e,n,o,a,s,i,c,l,f;r=cu,(t=Os())!==u&&Ji()!==u?((e=Ms())===u&&(e=Us()),e===u&&(e=null),e!==u&&Ji()!==u&&Ri()!==u&&Ji()!==u?((n=Tu())===u&&(n=null),n!==u&&Ji()!==u&&(o=pa())!==u&&Ji()!==u?(a=cu,(s=Vi())!==u&&(i=Ji())!==u&&(c=za())!==u&&(l=Ji())!==u&&(f=Qi())!==u?a=s=[s,i,c,l,f]:(cu=a,a=u),a===u&&(a=null),a!==u&&(s=Ji())!==u&&(i=qs())!==u&&(c=Ji())!==u&&(l=Zu())!==u?(lu=r,p=t,b=e,v=n,d=a,h=l,(y=o).view=y.table,delete y.table,t={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:p[0].toLowerCase(),keyword:"view",if_not_exists:v,temporary:b&&b[0].toLowerCase(),columns:d&&d[2],select:h,view:y}},r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u);var p,b,v,y,d,h;return r}());return t}())===u&&(t=function(){var t,e,n,o;t=cu,(e=function(){var t,e,n,o;t=cu,"truncate"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(Jn));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="TRUNCATE"):(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u?((n=Gs())===u&&(n=null),n!==u&&Ji()!==u&&(o=ia())!==u?(lu=t,a=e,s=n,(i=o)&&i.forEach(r=>xc.add(`${a}::${r.db}::${r.table}`)),e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:a.toLowerCase(),keyword:s&&s.toLowerCase()||"table",name:i}},t=e):(cu=t,t=u)):(cu=t,t=u);var a,s,i;return t}())===u&&(t=function(){var r,t,e;r=cu,(t=Fs())!==u&&Ji()!==u&&Gs()!==u&&Ji()!==u&&(e=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=oa())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=oa())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=oa())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,t=T(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())!==u?(lu=r,(n=e).forEach(r=>r.forEach(r=>r.table&&xc.add(`rename::${r.db}::${r.table}`))),t={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"rename",table:n}},r=t):(cu=r,r=u);var n;return r}())===u&&(t=function(){var t,e,n;t=cu,(e=function(){var t,e,n,o;t=cu,"call"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Cn));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="CALL"):(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&(n=bc())!==u?(lu=t,o=n,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"call",expr:o}},t=e):(cu=t,t=u);var o;return t}())===u&&(t=function(){var t,e,n;t=cu,(e=function(){var t,e,n,o;t=cu,"use"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(we));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&(n=Ja())!==u?(lu=t,o=n,xc.add(`use::${o}::null`),e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"use",db:o}},t=e):(cu=t,t=u);var o;return t}())===u&&(t=function(){var t,e,n,o;t=cu,(e=function(){var t,e,n,o;t=cu,"alter"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(Le));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&Gs()!==u&&Ji()!==u&&(n=ia())!==u&&Ji()!==u&&(o=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=Mu())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=Mu())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=Mu())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,t=T(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())!==u?(lu=t,s=o,(a=n)&&a.length>0&&a.forEach(r=>xc.add(`alter::${r.db}::${r.table}`)),e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"alter",table:a,expr:s}},t=e):(cu=t,t=u);var a,s;return t}())===u&&(t=function(){var t,e,n,o;t=cu,(e=Bs())!==u&&Ji()!==u?((n=function(){var t,e,n,o;t=cu,"global"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(vo));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="GLOBAL"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(n=function(){var t,e,n,o;t=cu,"session"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(yo));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="SESSION"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(n=function(){var t,e,n,o;t=cu,"local"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(j));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="LOCAL"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(n=function(){var t,e,n,o;t=cu,"persist"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(ho));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="PERSIST"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(n=function(){var t,e,n,o;t=cu,"persist_only"===r.substr(cu,12).toLowerCase()?(e=r.substr(cu,12),cu+=12):(e=u,0===vu&&wu(mo));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="PERSIST_ONLY"):(cu=t,t=u)):(cu=t,t=u);return t}()),n===u&&(n=null),n!==u&&Ji()!==u&&(o=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=sc())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=sc())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=sc())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,t=Ir(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())!==u?(lu=t,a=n,(s=o).keyword=a,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"set",keyword:a,expr:s}},t=e):(cu=t,t=u)):(cu=t,t=u);var a,s;return t}())===u&&(t=function(){var t,e,n;t=cu,(e=function(){var t,e,n,o;t=cu,"lock"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Q));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&Ws()!==u&&Ji()!==u&&(n=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=Vu())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=Vu())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=Vu())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,t=Ir(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())!==u?(lu=t,o=n,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"lock",keyword:"tables",tables:o}},t=e):(cu=t,t=u);var o;return t}())===u&&(t=function(){var t,e;t=cu,(e=function(){var t,e,n,o;t=cu,"unlock"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Oe));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&Ws()!==u?(lu=t,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"unlock",keyword:"tables"}},t=e):(cu=t,t=u);return t}())===u&&(t=function(){var t,e,n,o,a,s,i,c,l;t=cu,(e=Is())!==u&&Ji()!==u?("binary"===r.substr(cu,6).toLowerCase()?(n=r.substr(cu,6),cu+=6):(n=u,0===vu&&wu(Nr)),n===u&&("master"===r.substr(cu,6).toLowerCase()?(n=r.substr(cu,6),cu+=6):(n=u,0===vu&&wu(Rr))),n!==u&&(o=Ji())!==u?("logs"===r.substr(cu,4).toLowerCase()?(a=r.substr(cu,4),cu+=4):(a=u,0===vu&&wu(Or)),a!==u?(lu=t,f=n,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"show",suffix:"logs",keyword:f.toLowerCase()}},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var f;t===u&&(t=cu,(e=Is())!==u&&Ji()!==u?("binlog"===r.substr(cu,6).toLowerCase()?(n=r.substr(cu,6),cu+=6):(n=u,0===vu&&wu(Ur)),n!==u&&(o=Ji())!==u?("events"===r.substr(cu,6).toLowerCase()?(a=r.substr(cu,6),cu+=6):(a=u,0===vu&&wu(Mr)),a!==u&&(s=Ji())!==u?((i=qa())===u&&(i=null),i!==u&&Ji()!==u?((c=na())===u&&(c=null),c!==u&&Ji()!==u?((l=La())===u&&(l=null),l!==u?(lu=t,p=i,b=c,v=l,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"show",suffix:"events",keyword:"binlog",in:p,from:b,limit:v}},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,(e=Is())!==u&&Ji()!==u?(n=cu,"character"===r.substr(cu,9).toLowerCase()?(o=r.substr(cu,9),cu+=9):(o=u,0===vu&&wu(lr)),o!==u&&(a=Ji())!==u?("set"===r.substr(cu,3).toLowerCase()?(s=r.substr(cu,3),cu+=3):(s=u,0===vu&&wu(fr)),s!==u?n=o=[o,a,s]:(cu=n,n=u)):(cu=n,n=u),n===u&&("collation"===r.substr(cu,9).toLowerCase()?(n=r.substr(cu,9),cu+=9):(n=u,0===vu&&wu(Dr))),n!==u&&(o=Ji())!==u?((a=Ba())===u&&(a=ya()),a===u&&(a=null),a!==u?(lu=t,e=function(r,t){let e=Array.isArray(r)&&r||[r];return{tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"show",suffix:e[2]&&e[2].toLowerCase(),keyword:e[0].toLowerCase(),expr:t}}}(n,a),t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=function(){var t,e,n,o;t=cu,(e=Is())!==u&&Ji()!==u?("grants"===r.substr(cu,6).toLowerCase()?(n=r.substr(cu,6),cu+=6):(n=u,0===vu&&wu(Pr)),n!==u&&Ji()!==u?((o=function(){var t,e,n,o,a,s,i;t=cu,"for"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(C));e!==u&&Ji()!==u&&(n=Ja())!==u&&Ji()!==u?(o=cu,(a=Oi())!==u&&(s=Ji())!==u&&(i=Ja())!==u?o=a=[a,s,i]:(cu=o,o=u),o===u&&(o=null),o!==u&&(a=Ji())!==u?((s=function(){var r,t;r=cu,Ks()!==u&&Ji()!==u&&(t=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=Ja())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=Ja())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=Ja())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,t=Ir(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())!==u?(lu=r,r=t):(cu=r,r=u);return r}())===u&&(s=null),s!==u?(lu=t,l=s,e={user:n,host:(c=o)&&c[2],role_list:l},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var c,l;return t}())===u&&(o=null),o!==u?(lu=t,a=o,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"show",keyword:"grants",for:a}},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var a;return t}())));var p,b,v;return t}())===u&&(t=function(){var t,e,n;t=cu,(e=ri())===u&&(e=function(){var t,e,n,o;t=cu,"describe"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(nn));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DESCRIBE"):(cu=t,t=u)):(cu=t,t=u);return t}());e!==u&&Ji()!==u&&(n=Ja())!==u?(lu=t,o=n,e={tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"desc",table:o}},t=e):(cu=t,t=u);var o;return t}()),t}function Eu(){var t;return(t=_u())===u&&(t=function(){var r,t,e,n,o,a,s,i;r=cu,(t=Rs())!==u&&Ji()!==u&&(e=ia())!==u&&Ji()!==u&&Bs()!==u&&Ji()!==u&&(n=Ca())!==u&&Ji()!==u?((o=ya())===u&&(o=null),o!==u&&Ji()!==u?((a=Ea())===u&&(a=null),a!==u&&Ji()!==u?((s=ha())===u&&(s=null),s!==u&&Ji()!==u?((i=La())===u&&(i=null),i!==u?(lu=r,t=function(r,t,e,n,o,u){const a={};return r&&r.forEach(r=>{const{server:t,db:e,schema:n,as:o,table:u,join:s}=r,i=s?"select":"update",c=[t,e,n].filter(Boolean).join(".")||null;e&&(a[u]=c),u&&xc.add(`${i}::${c}::${u}`)}),t&&t.forEach(r=>{if(r.table){const t=_c(r.table);xc.add(`update::${a[t]||null}::${t}`)}kc.add(`update::${r.table}::${r.column}`)}),{tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"update",table:r,set:t,where:e,returning:n,orderby:o,limit:u}}}(e,n,o,a,s,i),r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u);return r}())===u&&(t=function(){var r,t,e,n,o,a,s,i,c;r=cu,(t=Ta())!==u&&Ji()!==u?((e=Hs())===u&&(e=null),e!==u&&Ji()!==u&&(n=pa())!==u&&Ji()!==u?((o=ja())===u&&(o=null),o!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&(a=za())!==u&&Ji()!==u&&Qi()!==u&&Ji()!==u&&(s=ga())!==u&&Ji()!==u?((i=_a())===u&&(i=null),i!==u&&Ji()!==u?((c=Ea())===u&&(c=null),c!==u?(lu=r,t=function(r,t,e,n,o,u,a){if(t&&(xc.add(`insert::${t.db}::${t.table}`),t.as=null),n){let r=t&&t.table||null;Array.isArray(o)&&o.forEach((r,t)=>{if(r.value.length!=n.length)throw new Error("Error: column count doesn't match value count at row "+(t+1))}),n.forEach(t=>kc.add(`insert::${r}::${t}`))}return{tableList:Array.from(xc),columnList:Tc(kc),ast:{...r,table:[t],columns:n,values:o,partition:e,on_duplicate_update:u,returning:a}}}(t,n,o,a,s,i,c),r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u);return r}())===u&&(t=function(){var t,e,n,o,a,s,i,c;t=cu,(e=Ta())!==u&&Ji()!==u?((n=function(){var t,e,n,o;t=cu,"ignore"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Zr));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(n=null),n!==u&&Ji()!==u?((o=Hs())===u&&(o=null),o!==u&&Ji()!==u&&(a=pa())!==u&&Ji()!==u?((s=ja())===u&&(s=null),s!==u&&Ji()!==u&&(i=ga())!==u&&Ji()!==u?((c=_a())===u&&(c=null),c!==u?(lu=t,e=function(r,t,e,n,o,u,a){n&&(xc.add(`insert::${n.db}::${n.table}`),kc.add(`insert::${n.table}::(.*)`),n.as=null);const s=[t,e].filter(r=>r).map(r=>r[0]&&r[0].toLowerCase()).join(" ");return{tableList:Array.from(xc),columnList:Tc(kc),ast:{...r,table:[n],columns:null,values:u,partition:o,prefix:s,on_duplicate_update:a}}}(e,n,o,a,s,i,c),t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(t=function(){var r,t,e,n,o,a;r=cu,(t=Ta())!==u&&Ji()!==u&&Hs()!==u&&Ji()!==u&&(e=pa())!==u&&Ji()!==u?((n=ja())===u&&(n=null),n!==u&&Ji()!==u&&Bs()!==u&&Ji()!==u&&(o=Ca())!==u&&Ji()!==u?((a=_a())===u&&(a=null),a!==u?(lu=r,s=t,c=n,l=o,f=a,(i=e)&&(xc.add(`insert::${i.db}::${i.table}`),kc.add(`insert::${i.table}::(.*)`),i.as=null),t={tableList:Array.from(xc),columnList:Tc(kc),ast:{...s,table:[i],columns:null,partition:c,set:l,on_duplicate_update:f}},r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u);var s,i,c,l,f;return r}())===u&&(t=function(){var r,t,e,n,o,a,s,i;r=cu,(t=Ds())!==u&&Ji()!==u?((e=ia())===u&&(e=null),e!==u&&Ji()!==u&&(n=na())!==u&&Ji()!==u?((o=ya())===u&&(o=null),o!==u&&Ji()!==u?((a=Ea())===u&&(a=null),a!==u&&Ji()!==u?((s=ha())===u&&(s=null),s!==u&&Ji()!==u?((i=La())===u&&(i=null),i!==u?(lu=r,t=function(r,t,e,n,o,u){if(t&&t.forEach(r=>{const{db:t,as:e,table:n,join:o}=r,u=o?"select":"delete";n&&xc.add(`${u}::${t}::${n}`),o||kc.add(`delete::${n}::(.*)`)}),null===r&&1===t.length){const e=t[0];r=[{db:e.db,table:e.table,as:e.as,addition:!0}]}return{tableList:Array.from(xc),columnList:Tc(kc),ast:{type:"delete",table:r,from:t,where:e,returning:n,orderby:o,limit:u}}}(e,n,o,a,s,i),r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u);return r}())===u&&(t=Au())===u&&(t=function(){var r,t;r=[],t=ac();for(;t!==u;)r.push(t),t=ac();return r}()),t}function gu(){var r,t,e,n,o,a,s,i;if(r=cu,(t=Eu())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Xi())!==u&&(s=Ji())!==u&&(i=Eu())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Xi())!==u&&(s=Ji())!==u&&(i=Eu())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,r=t=function(r,t){const e=r&&r.ast||r,n=t&&t.length&&t[0].length>=4?[e]:e;t||(t=[]);for(let r=0;rr).join(" ").toLowerCase(),resource:"constraint"}}(e,n,o,a),t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&(lu=t,e={check:e}),(t=e)===u&&(t=cu,(e=Gu())!==u&&Ji()!==u?((n=Mi())===u&&(n=null),n!==u&&Ji()!==u&&(o=Za())!==u?(lu=t,t=e=function(r,t,e){return{character_set:{type:r,value:e,symbol:t}}}(e,n,o)):(cu=t,t=u)):(cu=t,t=u))))))))))))),t}function Ru(){var r,t,e,n,o,a,s;return r=cu,(t=us())!==u&&Ji()!==u?((e=hc())===u&&(e=null),e!==u&&Ji()!==u?((n=function(){var r,t,e,n,o,a;if(r=cu,(t=Nu())!==u)if(Ji()!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Nu())!==u?n=o=[o,a]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Nu())!==u?n=o=[o,a]:(cu=n,n=u);e!==u?(lu=r,r=t=function(r,t){let e=r;for(let r=0;rr).join(" ").toLowerCase():r.toLowerCase(),resource:e,type:"alter"}}(n,a),t=e):(cu=t,t=u)):(cu=t,t=u));return t}())===u&&(t=function(){var r,t,e,n;r=cu,(t=Di())!==u&&Ji()!==u?((e=Pi())===u&&(e=null),e!==u&&Ji()!==u&&(n=Ru())!==u?(lu=r,o=e,a=n,t={action:"add",...a,keyword:o,resource:"column",type:"alter"},r=t):(cu=r,r=u)):(cu=r,r=u);var o,a;return r}())===u&&(t=function(){var r,t,e;r=cu,Ns()!==u&&Ji()!==u?((t=Pi())===u&&(t=null),t!==u&&Ji()!==u&&(e=Ka())!==u?(lu=r,r={action:"drop",column:e,keyword:t,resource:"column",type:"alter"}):(cu=r,r=u)):(cu=r,r=u);return r}())===u&&(t=function(){var t,e,n,o,a;t=cu,(e=function(){var t,e,n,o;t=cu,"modify"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(xo));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="MODIFY"):(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u?((n=Pi())===u&&(n=null),n!==u&&Ji()!==u&&(o=Ru())!==u&&Ji()!==u?((a=Uu())===u&&(a=null),a!==u?(lu=t,s=o,i=a,e={action:"modify",keyword:n,...s,suffix:i,resource:"column",type:"alter"},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var s,i;return t}())===u&&(t=function(){var r,t,e;r=cu,(t=Di())!==u&&Ji()!==u&&(e=Fu())!==u?(lu=r,n=e,t={action:"add",type:"alter",...n},r=t):(cu=r,r=u);var n;return r}())===u&&(t=function(){var r,t,e,n,o;r=cu,(t=Fs())!==u&&Ji()!==u&&Pi()!==u&&Ji()!==u&&(e=Ka())!==u&&Ji()!==u?((n=ks())===u&&(n=qs()),n===u&&(n=null),n!==u&&Ji()!==u&&(o=Ka())!==u?(lu=r,s=o,t={action:"rename",type:"alter",resource:"column",keyword:"column",old_column:e,prefix:(a=n)&&a[0].toLowerCase(),column:s},r=t):(cu=r,r=u)):(cu=r,r=u);var a,s;return r}())===u&&(t=function(){var r,t,e,n;r=cu,(t=Fs())!==u&&Ji()!==u?((e=ks())===u&&(e=qs()),e===u&&(e=null),e!==u&&Ji()!==u&&(n=Ja())!==u?(lu=r,a=n,t={action:"rename",type:"alter",resource:"table",keyword:(o=e)&&o[0].toLowerCase(),table:a},r=t):(cu=r,r=u)):(cu=r,r=u);var o,a;return r}())===u&&(t=Du())===u&&(t=Pu())===u&&(t=function(){var t,e,n,o,a,s;t=cu,"change"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(q));e!==u&&Ji()!==u?((n=Pi())===u&&(n=null),n!==u&&Ji()!==u&&(o=Ka())!==u&&Ji()!==u&&(a=Ru())!==u&&Ji()!==u?((s=Uu())===u&&(s=null),s!==u?(lu=t,i=n,c=a,l=s,e={action:"change",old_column:o,...c,keyword:i,resource:"column",type:"alter",suffix:l},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var i,c,l;return t}())===u&&(t=cu,(e=Yu())!==u&&(lu=t,(n=e).resource=n.keyword,n[n.keyword]=n.value,delete n.value,e={type:"alter",...n}),t=e),t}function Du(){var t,e,n,o;return t=cu,"algorithm"===r.substr(cu,9).toLowerCase()?(e=r.substr(cu,9),cu+=9):(e=u,0===vu&&wu(G)),e!==u&&Ji()!==u?((n=Mi())===u&&(n=null),n!==u&&Ji()!==u?("default"===r.substr(cu,7).toLowerCase()?(o=r.substr(cu,7),cu+=7):(o=u,0===vu&&wu(M)),o===u&&("instant"===r.substr(cu,7).toLowerCase()?(o=r.substr(cu,7),cu+=7):(o=u,0===vu&&wu(W)),o===u&&("inplace"===r.substr(cu,7).toLowerCase()?(o=r.substr(cu,7),cu+=7):(o=u,0===vu&&wu(Y)),o===u&&("copy"===r.substr(cu,4).toLowerCase()?(o=r.substr(cu,4),cu+=4):(o=u,0===vu&&wu(V))))),o!==u?(lu=t,t=e={type:"alter",keyword:"algorithm",resource:"algorithm",symbol:n,algorithm:o}):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t}function Pu(){var t,e,n,o;return t=cu,"lock"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Q)),e!==u&&Ji()!==u?((n=Mi())===u&&(n=null),n!==u&&Ji()!==u?("default"===r.substr(cu,7).toLowerCase()?(o=r.substr(cu,7),cu+=7):(o=u,0===vu&&wu(M)),o===u&&("none"===r.substr(cu,4).toLowerCase()?(o=r.substr(cu,4),cu+=4):(o=u,0===vu&&wu(X)),o===u&&("shared"===r.substr(cu,6).toLowerCase()?(o=r.substr(cu,6),cu+=6):(o=u,0===vu&&wu(K)),o===u&&("exclusive"===r.substr(cu,9).toLowerCase()?(o=r.substr(cu,9),cu+=9):(o=u,0===vu&&wu(z))))),o!==u?(lu=t,t=e={type:"alter",keyword:"lock",resource:"lock",symbol:n,lock:o}):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t}function Fu(){var r,t,e,n,o,a,s,i;return r=cu,(t=Fi())===u&&(t=$i()),t!==u&&Ji()!==u?((e=as())===u&&(e=null),e!==u&&Ji()!==u?((n=ua())===u&&(n=null),n!==u&&Ji()!==u&&(o=zu())!==u&&Ji()!==u?((a=aa())===u&&(a=null),a!==u&&Ji()!==u?(lu=r,s=n,i=a,r=t={index:e,definition:o,keyword:t.toLowerCase(),index_type:s,resource:"index",index_options:i}):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u),r}function $u(){var t;return(t=function(){var t,e,n,o,a,s,i,c;t=cu,(e=Hu())===u&&(e=null);e!==u&&Ji()!==u?(n=cu,"primary"===r.substr(cu,7).toLowerCase()?(o=r.substr(cu,7),cu+=7):(o=u,0===vu&&wu(N)),o!==u&&(a=Ji())!==u?("key"===r.substr(cu,3).toLowerCase()?(s=r.substr(cu,3),cu+=3):(s=u,0===vu&&wu(I)),s!==u?n=o=[o,a,s]:(cu=n,n=u)):(cu=n,n=u),n!==u&&(o=Ji())!==u?((a=ua())===u&&(a=null),a!==u&&(s=Ji())!==u&&(i=zu())!==u&&Ji()!==u?((c=aa())===u&&(c=null),c!==u?(lu=t,f=n,p=a,b=i,v=c,e={constraint:(l=e)&&l.constraint,definition:b,constraint_type:`${f[0].toLowerCase()} ${f[2].toLowerCase()}`,keyword:l&&l.keyword,index_type:p,resource:"constraint",index_options:v},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var l,f,p,b,v;return t}())===u&&(t=function(){var r,t,e,n,o,a,s,i;r=cu,(t=Hu())===u&&(t=null);t!==u&&Ji()!==u&&(e=Hi())!==u&&Ji()!==u?((n=Fi())===u&&(n=$i()),n===u&&(n=null),n!==u&&Ji()!==u?((o=as())===u&&(o=null),o!==u&&Ji()!==u?((a=ua())===u&&(a=null),a!==u&&Ji()!==u&&(s=zu())!==u&&Ji()!==u?((i=aa())===u&&(i=null),i!==u?(lu=r,l=e,f=n,p=o,b=a,v=s,y=i,t={constraint:(c=t)&&c.constraint,definition:v,constraint_type:f&&`${l.toLowerCase()} ${f.toLowerCase()}`||l.toLowerCase(),keyword:c&&c.keyword,index_type:b,index:p,resource:"constraint",index_options:y},r=t):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u)):(cu=r,r=u);var c,l,f,p,b,v,y;return r}())===u&&(t=function(){var t,e,n,o,a,s;t=cu,(e=Hu())===u&&(e=null);e!==u&&Ji()!==u?("foreign key"===r.substr(cu,11).toLowerCase()?(n=r.substr(cu,11),cu+=11):(n=u,0===vu&&wu(rr)),n!==u&&Ji()!==u?((o=as())===u&&(o=null),o!==u&&Ji()!==u&&(a=zu())!==u&&Ji()!==u?((s=Bu())===u&&(s=null),s!==u?(lu=t,c=n,l=o,f=a,p=s,e={constraint:(i=e)&&i.constraint,definition:f,constraint_type:c,keyword:i&&i.keyword,index:l,resource:"constraint",reference_definition:p},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var i,c,l,f,p;return t}())===u&&(t=function(){var t,e,n,o,a,s,i,c,l,f;t=cu,(e=Hu())===u&&(e=null);e!==u&&Ji()!==u?("check"===r.substr(cu,5).toLowerCase()?(n=r.substr(cu,5),cu+=5):(n=u,0===vu&&wu(_)),n!==u&&Ji()!==u?(o=cu,"not"===r.substr(cu,3).toLowerCase()?(a=r.substr(cu,3),cu+=3):(a=u,0===vu&&wu(Z)),a!==u&&(s=Ji())!==u?("for"===r.substr(cu,3).toLowerCase()?(i=r.substr(cu,3),cu+=3):(i=u,0===vu&&wu(C)),i!==u&&(c=Ji())!==u?("replication"===r.substr(cu,11).toLowerCase()?(l=r.substr(cu,11),cu+=11):(l=u,0===vu&&wu(J)),l!==u&&(f=Ji())!==u?o=a=[a,s,i,c,l,f]:(cu=o,o=u)):(cu=o,o=u)):(cu=o,o=u),o===u&&(o=null),o!==u&&(a=Vi())!==u&&(s=Ji())!==u&&(i=ba())!==u&&(c=Ji())!==u&&(l=Qi())!==u?(lu=t,p=e,b=o,v=i,e={constraint_type:n.toLowerCase(),keyword:p&&p.keyword,constraint:p&&p.constraint,index_type:b&&{keyword:"not for replication"},definition:[v],resource:"constraint"},t=e):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u);var p,b,v;return t}()),t}function Hu(){var r,t,e,n;return r=cu,(t=qi())!==u&&Ji()!==u?((e=Ja())===u&&(e=null),e!==u?(lu=r,n=e,r=t={keyword:t.toLowerCase(),constraint:n}):(cu=r,r=u)):(cu=r,r=u),r}function Bu(){var t,e,n,o,a,s,i,c,l,f;return t=cu,(e=function(){var t,e,n,o;t=cu,"references"===r.substr(cu,10).toLowerCase()?(e=r.substr(cu,10),cu+=10):(e=u,0===vu&&wu(Oo));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="REFERENCES"):(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&(n=pa())!==u&&Ji()!==u&&(o=zu())!==u&&Ji()!==u?("match full"===r.substr(cu,10).toLowerCase()?(a=r.substr(cu,10),cu+=10):(a=u,0===vu&&wu(er)),a===u&&("match partial"===r.substr(cu,13).toLowerCase()?(a=r.substr(cu,13),cu+=13):(a=u,0===vu&&wu(nr)),a===u&&("match simple"===r.substr(cu,12).toLowerCase()?(a=r.substr(cu,12),cu+=12):(a=u,0===vu&&wu(or)))),a===u&&(a=null),a!==u&&Ji()!==u?((s=qu())===u&&(s=null),s!==u&&Ji()!==u?((i=qu())===u&&(i=null),i!==u?(lu=t,c=a,l=s,f=i,t=e={definition:o,table:[n],keyword:e.toLowerCase(),match:c&&c.toLowerCase(),on_action:[l,f].filter(r=>r)}):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,(e=qu())!==u&&(lu=t,e={on_action:[e]}),t=e),t}function qu(){var t,e,n,o;return t=cu,Vs()!==u&&Ji()!==u?((e=Ds())===u&&(e=Rs()),e!==u&&Ji()!==u&&(n=function(){var t,e,n;t=cu,(e=Ni())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u?((n=xa())===u&&(n=null),n!==u&&Ji()!==u&&Qi()!==u?(lu=t,t=e={type:"function",name:{name:[{type:"origin",value:e}]},args:n}):(cu=t,t=u)):(cu=t,t=u);t===u&&(t=cu,"restrict"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(ur)),e===u&&("cascade"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(ar)),e===u&&("set null"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(sr)),e===u&&("no action"===r.substr(cu,9).toLowerCase()?(e=r.substr(cu,9),cu+=9):(e=u,0===vu&&wu(ir)),e===u&&("set default"===r.substr(cu,11).toLowerCase()?(e=r.substr(cu,11),cu+=11):(e=u,0===vu&&wu(cr)),e===u&&(e=Ni()))))),e!==u&&(lu=t,e={type:"origin",value:e.toLowerCase()}),t=e);return t}())!==u?(lu=t,o=n,t={type:"on "+e[0].toLowerCase(),value:o}):(cu=t,t=u)):(cu=t,t=u),t}function Gu(){var t,e,n;return t=cu,"character"===r.substr(cu,9).toLowerCase()?(e=r.substr(cu,9),cu+=9):(e=u,0===vu&&wu(lr)),e!==u&&Ji()!==u?("set"===r.substr(cu,3).toLowerCase()?(n=r.substr(cu,3),cu+=3):(n=u,0===vu&&wu(fr)),n!==u?(lu=t,t=e="CHARACTER SET"):(cu=t,t=u)):(cu=t,t=u),t}function Wu(){var t,e,n,o,a,s,i,c,l;return t=cu,(e=xs())===u&&(e=null),e!==u&&Ji()!==u?((n=Gu())===u&&("charset"===r.substr(cu,7).toLowerCase()?(n=r.substr(cu,7),cu+=7):(n=u,0===vu&&wu(pr)),n===u&&("collate"===r.substr(cu,7).toLowerCase()?(n=r.substr(cu,7),cu+=7):(n=u,0===vu&&wu(br)))),n!==u&&Ji()!==u?((o=Mi())===u&&(o=null),o!==u&&Ji()!==u&&(a=Za())!==u?(lu=t,i=n,c=o,l=a,t=e={keyword:(s=e)&&`${s[0].toLowerCase()} ${i.toLowerCase()}`||i.toLowerCase(),symbol:c,value:l}):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t}function Yu(){var t,e,n,o,a,s,i,c,l;return t=cu,"auto_increment"===r.substr(cu,14).toLowerCase()?(e=r.substr(cu,14),cu+=14):(e=u,0===vu&&wu(S)),e===u&&("avg_row_length"===r.substr(cu,14).toLowerCase()?(e=r.substr(cu,14),cu+=14):(e=u,0===vu&&wu(vr)),e===u&&("key_block_size"===r.substr(cu,14).toLowerCase()?(e=r.substr(cu,14),cu+=14):(e=u,0===vu&&wu(yr)),e===u&&("max_rows"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(dr)),e===u&&("min_rows"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(hr)),e===u&&("stats_sample_pages"===r.substr(cu,18).toLowerCase()?(e=r.substr(cu,18),cu+=18):(e=u,0===vu&&wu(mr))))))),e!==u&&Ji()!==u?((n=Mi())===u&&(n=null),n!==u&&Ji()!==u&&(o=Es())!==u?(lu=t,c=n,l=o,t=e={keyword:e.toLowerCase(),symbol:c,value:l.value}):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=Wu())===u&&(t=cu,(e=Bi())===u&&("connection"===r.substr(cu,10).toLowerCase()?(e=r.substr(cu,10),cu+=10):(e=u,0===vu&&wu(wr))),e!==u&&Ji()!==u?((n=Mi())===u&&(n=null),n!==u&&Ji()!==u&&(o=ws())!==u?(lu=t,t=e=function(r,t,e){return{keyword:r.toLowerCase(),symbol:t,value:`'${e.value}'`}}(e,n,o)):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,"compression"===r.substr(cu,11).toLowerCase()?(e=r.substr(cu,11),cu+=11):(e=u,0===vu&&wu(Lr)),e!==u&&Ji()!==u?((n=Mi())===u&&(n=null),n!==u&&Ji()!==u?(o=cu,39===r.charCodeAt(cu)?(a="'",cu++):(a=u,0===vu&&wu(Cr)),a!==u?("zlib"===r.substr(cu,4).toLowerCase()?(s=r.substr(cu,4),cu+=4):(s=u,0===vu&&wu(Ar)),s===u&&("lz4"===r.substr(cu,3).toLowerCase()?(s=r.substr(cu,3),cu+=3):(s=u,0===vu&&wu(Er)),s===u&&("none"===r.substr(cu,4).toLowerCase()?(s=r.substr(cu,4),cu+=4):(s=u,0===vu&&wu(X)))),s!==u?(39===r.charCodeAt(cu)?(i="'",cu++):(i=u,0===vu&&wu(Cr)),i!==u?o=a=[a,s,i]:(cu=o,o=u)):(cu=o,o=u)):(cu=o,o=u),o!==u?(lu=t,t=e=function(r,t,e){return{keyword:r.toLowerCase(),symbol:t,value:e.join("").toUpperCase()}}(e,n,o)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,"engine"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(gr)),e!==u&&Ji()!==u?((n=Mi())===u&&(n=null),n!==u&&Ji()!==u&&(o=is())!==u?(lu=t,t=e=function(r,t,e){return{keyword:r.toLowerCase(),symbol:t,value:e.toUpperCase()}}(e,n,o)):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,"without"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(jr)),e!==u&&Ji()!==u?("rowid"===r.substr(cu,5).toLowerCase()?(n=r.substr(cu,5),cu+=5):(n=u,0===vu&&wu(_r)),n!==u?(lu=t,t=e={keyword:"without rowid"}):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,"strict"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Tr)),e!==u&&(lu=t,e={keyword:"strict"}),t=e))))),t}function Vu(){var t,e,n,o,a;return t=cu,(e=la())!==u&&Ji()!==u&&(n=function(){var t,e,n;return t=cu,"read"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Sr)),e!==u&&Ji()!==u?("local"===r.substr(cu,5).toLowerCase()?(n=r.substr(cu,5),cu+=5):(n=u,0===vu&&wu(j)),n===u&&(n=null),n!==u?(lu=t,t=e={type:"read",suffix:n&&"local"}):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,"low_priority"===r.substr(cu,12).toLowerCase()?(e=r.substr(cu,12),cu+=12):(e=u,0===vu&&wu(xr)),e===u&&(e=null),e!==u&&Ji()!==u?("write"===r.substr(cu,5).toLowerCase()?(n=r.substr(cu,5),cu+=5):(n=u,0===vu&&wu(kr)),n!==u?(lu=t,t=e={type:"write",prefix:e&&"low_priority"}):(cu=t,t=u)):(cu=t,t=u)),t}())!==u?(lu=t,o=e,a=n,xc.add(`lock::${o.db}::${o.table}`),t=e={table:o,lock_type:a}):(cu=t,t=u),t}function Qu(){var t,e,n,o,a,s,i;return(t=Zu())===u&&(t=cu,e=cu,40===r.charCodeAt(cu)?(n="(",cu++):(n=u,0===vu&&wu(Fr)),n!==u&&(o=Ji())!==u&&(a=Qu())!==u&&(s=Ji())!==u?(41===r.charCodeAt(cu)?(i=")",cu++):(i=u,0===vu&&wu($r)),i!==u?e=n=[n,o,a,s,i]:(cu=e,e=u)):(cu=e,e=u),e!==u&&(lu=t,e={...e[2],parentheses_symbol:!0}),t=e),t}function Xu(){var t,e,n,o,a,s,i,c,l;if(t=cu,zs()!==u)if(Ji()!==u)if((e=Ku())!==u){for(n=[],o=cu,(a=Ji())!==u&&(s=Wi())!==u&&(i=Ji())!==u&&(c=Ku())!==u?o=a=[a,s,i,c]:(cu=o,o=u);o!==u;)n.push(o),o=cu,(a=Ji())!==u&&(s=Wi())!==u&&(i=Ji())!==u&&(c=Ku())!==u?o=a=[a,s,i,c]:(cu=o,o=u);n!==u?(lu=t,t=T(e,n)):(cu=t,t=u)}else cu=t,t=u;else cu=t,t=u;else cu=t,t=u;return t===u&&(t=cu,Ji()!==u&&zs()!==u&&(e=Ji())!==u&&(n=function(){var t,e,n,o;t=cu,"recursive"===r.substr(cu,9).toLowerCase()?(e=r.substr(cu,9),cu+=9):(e=u,0===vu&&wu(Se));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&(o=Ji())!==u&&(a=Ku())!==u?(lu=t,(l=a).recursive=!0,t=[l]):(cu=t,t=u)),t}function Ku(){var r,t,e,n,o,a,s;return r=cu,(t=ws())===u&&(t=is())===u&&(t=pa()),t!==u&&Ji()!==u?((e=zu())===u&&(e=null),e!==u&&Ji()!==u&&qs()!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&(n=_u())!==u&&Ji()!==u&&Qi()!==u?(lu=r,a=e,s=n,"string"==typeof(o=t)&&(o={type:"default",value:o}),o.table&&(o={type:"default",value:o.table}),r=t={name:o,stmt:s,columns:a}):(cu=r,r=u)):(cu=r,r=u),r}function zu(){var r,t;return r=cu,Vi()!==u&&Ji()!==u&&(t=function(){var r;(r=da())===u&&(r=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=hs())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=hs())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=hs())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,t=T(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}());return r}())!==u&&Ji()!==u&&Qi()!==u?(lu=r,r=t):(cu=r,r=u),r}function Zu(){var t,e,n,o,a,s,i,c,l,f,p,b,v,y,d,h,m,w,L,A,E,g,j,_,T,S;return t=cu,Ji()!==u?((e=Xu())===u&&(e=null),e!==u&&Ji()!==u&&function(){var t,e,n,o;t=cu,"select"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Ce));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}()!==u&&rc()!==u?((n=function(){var r,t,e,n,o,a;if(r=cu,(t=Ju())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Ju())!==u?n=o=[o,a]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Ju())!==u?n=o=[o,a]:(cu=n,n=u);e!==u?(lu=r,t=function(r,t){const e=[r];for(let r=0,n=t.length;rr.table&&xc.add(`select::${r.db}::${r.table}`)),t={with:h,type:"select",options:m,distinct:w,columns:L,from:A,where:E,groupby:g,having:j,orderby:_,limit:T,for_update:S&&`${S[0]} ${S[2][0]}`}):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t}function Ju(){var t,e;return t=cu,(e=function(){var t;"sql_calc_found_rows"===r.substr(cu,19).toLowerCase()?(t=r.substr(cu,19),cu+=19):(t=u,0===vu&&wu(Uo));return t}())===u&&((e=function(){var t;"sql_cache"===r.substr(cu,9).toLowerCase()?(t=r.substr(cu,9),cu+=9):(t=u,0===vu&&wu(Mo));return t}())===u&&(e=function(){var t;"sql_no_cache"===r.substr(cu,12).toLowerCase()?(t=r.substr(cu,12),cu+=12):(t=u,0===vu&&wu(Do));return t}()),e===u&&(e=function(){var t;"sql_big_result"===r.substr(cu,14).toLowerCase()?(t=r.substr(cu,14),cu+=14):(t=u,0===vu&&wu(Fo));return t}())===u&&(e=function(){var t;"sql_small_result"===r.substr(cu,16).toLowerCase()?(t=r.substr(cu,16),cu+=16):(t=u,0===vu&&wu(Po));return t}())===u&&(e=function(){var t;"sql_buffer_result"===r.substr(cu,17).toLowerCase()?(t=r.substr(cu,17),cu+=17):(t=u,0===vu&&wu($o));return t}())),e!==u&&(lu=t,e=e),t=e}function ra(){var r,t,e,n,o,a,s,i;if(r=cu,(t=ti())===u&&(t=cu,(e=Yi())!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t===u&&(t=Yi())),t!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=ta())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=ta())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,r=t=function(r,t){kc.add("select::null::(.*)");const e={expr:{type:"column_ref",table:null,column:"*"},as:null};return t&&t.length>0?gc(e,t):[e]}(0,e)):(cu=r,r=u)}else cu=r,r=u;if(r===u)if(r=cu,(t=ta())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=ta())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=ta())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,r=t=T(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function ta(){var r,t,e,n,o;return r=cu,t=cu,(e=Ja())!==u&&(n=Ji())!==u&&(o=Gi())!==u?t=e=[e,n,o]:(cu=t,t=u),t===u&&(t=null),t!==u&&(e=Ji())!==u&&(n=Yi())!==u?(lu=r,r=t=function(r){const t=r&&r[0]||null;return kc.add(`select::${t}::(.*)`),{expr:{type:"column_ref",table:t,column:"*"},as:null}}(t)):(cu=r,r=u),r===u&&(r=cu,(t=function(){var r,t,e,n,o,a,s,i;if(r=cu,(t=Ua())!==u){for(e=[],n=cu,(o=Ji())!==u?((a=ci())===u&&(a=li())===u&&(a=Zi()),a!==u&&(s=Ji())!==u&&(i=Ua())!==u?n=o=[o,a,s,i]:(cu=n,n=u)):(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u?((a=ci())===u&&(a=li())===u&&(a=Zi()),a!==u&&(s=Ji())!==u&&(i=Ua())!==u?n=o=[o,a,s,i]:(cu=n,n=u)):(cu=n,n=u);e!==u?(lu=r,t=function(r,t){const e=r.ast;if(e&&"select"===e.type&&(!(r.parentheses_symbol||r.parentheses||r.ast.parentheses||r.ast.parentheses_symbol)||1!==e.columns.length||"*"===e.columns[0].expr.column))throw new Error("invalid column clause with select statement");if(!t||0===t.length)return r;const n=t.length;let o=t[n-1][3];for(let e=n-1;e>=0;e--){const n=0===e?r:t[e-1][3];o=Ac(t[e][1],n,o)}return o}(t,e),r=t):(cu=r,r=u)}else cu=r,r=u;return r}())!==u&&(e=Ji())!==u?((n=ea())===u&&(n=null),n!==u?(lu=r,r=t={expr:t,as:n}):(cu=r,r=u)):(cu=r,r=u)),r}function ea(){var r,t,e;return r=cu,(t=qs())!==u&&rc()!==u&&(e=function(){var r,t;r=cu,(t=is())!==u?(lu=cu,(function(r){if(!0===wc[r.toUpperCase()])throw new Error("Error: "+JSON.stringify(r)+" is a reserved word, can not as alias clause");return!1}(t)?u:void 0)!==u?(lu=r,r=t=t):(cu=r,r=u)):(cu=r,r=u);r===u&&(r=cu,(t=ts())!==u&&(lu=r,t=t),r=t);return r}())!==u?(lu=r,r=t=e):(cu=r,r=u),r===u&&(r=cu,(t=qs())===u&&(t=null),t!==u&&Ji()!==u&&(e=Ja())!==u?(lu=r,r=t=e):(cu=r,r=u)),r}function na(){var t,e;return t=cu,function(){var t,e,n,o;t=cu,"from"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Re));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}()!==u&&Ji()!==u&&(e=ia())!==u?(lu=t,t=e):(cu=t,t=u),t}function oa(){var r,t,e;return r=cu,(t=pa())!==u&&Ji()!==u&&ks()!==u&&Ji()!==u&&(e=pa())!==u?(lu=r,r=t=[t,e]):(cu=r,r=u),r}function ua(){var t,e;return t=cu,Ks()!==u&&Ji()!==u?("btree"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(Hr)),e===u&&("hash"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Br))),e!==u?(lu=t,t={keyword:"using",type:e.toLowerCase()}):(cu=t,t=u)):(cu=t,t=u),t}function aa(){var r,t,e,n,o,a;if(r=cu,(t=sa())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=sa())!==u?n=o=[o,a]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=sa())!==u?n=o=[o,a]:(cu=n,n=u);e!==u?(lu=r,r=t=function(r,t){const e=[r];for(let r=0;r="===r.substr(cu,2)?(t=">=",cu+=2):(t=u,0===vu&&wu(ot)),t===u&&(62===r.charCodeAt(cu)?(t=">",cu++):(t=u,0===vu&&wu(ut)),t===u&&("<="===r.substr(cu,2)?(t="<=",cu+=2):(t=u,0===vu&&wu(at)),t===u&&("<>"===r.substr(cu,2)?(t="<>",cu+=2):(t=u,0===vu&&wu(st)),t===u&&(60===r.charCodeAt(cu)?(t="<",cu++):(t=u,0===vu&&wu(it)),t===u&&("=="===r.substr(cu,2)?(t="==",cu+=2):(t=u,0===vu&&wu(ct)),t===u&&(61===r.charCodeAt(cu)?(t="=",cu++):(t=u,0===vu&&wu(Qr)),t===u&&("!="===r.substr(cu,2)?(t="!=",cu+=2):(t=u,0===vu&&wu(lt))))))))),t}function Ha(){var r,t,e,n,o;return r=cu,t=cu,(e=ii())!==u&&(n=Ji())!==u&&(o=oi())!==u?t=e=[e,n,o]:(cu=t,t=u),t!==u&&(lu=r,t=nt(t)),(r=t)===u&&(r=oi()),r}function Ba(){var t,e,n,o,a,s,i;return t=cu,(e=function(){var r,t,e,n,o;return r=cu,t=cu,(e=ii())!==u&&(n=Ji())!==u&&(o=ai())!==u?t=e=[e,n,o]:(cu=t,t=u),t!==u&&(lu=r,t=nt(t)),(r=t)===u&&(r=ai()),r}())!==u&&Ji()!==u?((n=hs())===u&&(n=Fa()),n!==u&&Ji()!==u?((o=function(){var t,e,n;return t=cu,"escape"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(ft)),e!==u&&Ji()!==u&&(n=ws())!==u?(lu=t,t=e={type:"ESCAPE",value:n}):(cu=t,t=u),t}())===u&&(o=null),o!==u?(lu=t,a=e,s=n,(i=o)&&(s.escape=i),t=e={op:a,right:s}):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t}function qa(){var r,t,e,n;return r=cu,(t=Ha())!==u&&Ji()!==u&&(e=Vi())!==u&&Ji()!==u&&(n=xa())!==u&&Ji()!==u&&Qi()!==u?(lu=r,r=t={op:t,right:n}):(cu=r,r=u),r===u&&(r=cu,(t=Ha())!==u&&Ji()!==u?((e=yc())===u&&(e=ws())===u&&(e=ys()),e!==u?(lu=r,r=t=function(r,t){return{op:r,right:t}}(t,e)):(cu=r,r=u)):(cu=r,r=u)),r}function Ga(){var r,t,e,n,o,a,s,i;if(r=cu,(t=Ya())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wa())!==u&&(s=Ji())!==u&&(i=Ya())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wa())!==u&&(s=Ji())!==u&&(i=Ya())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,r=t=function(r,t){if(t&&t.length&&"column_ref"===r.type&&"*"===r.column)throw new Error(JSON.stringify({message:"args could not be star column in additive expr",...Lc()}));return jc(r,t)}(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function Wa(){var t;return 43===r.charCodeAt(cu)?(t="+",cu++):(t=u,0===vu&&wu(bt)),t===u&&(45===r.charCodeAt(cu)?(t="-",cu++):(t=u,0===vu&&wu(vt))),t}function Ya(){var r,t,e,n,o,a,s,i;if(r=cu,(t=Xa())!==u){for(e=[],n=cu,(o=Ji())!==u?((a=Va())===u&&(a=Zi()),a!==u&&(s=Ji())!==u&&(i=Xa())!==u?n=o=[o,a,s,i]:(cu=n,n=u)):(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u?((a=Va())===u&&(a=Zi()),a!==u&&(s=Ji())!==u&&(i=Xa())!==u?n=o=[o,a,s,i]:(cu=n,n=u)):(cu=n,n=u);e!==u?(lu=r,r=t=jc(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function Va(){var t;return 42===r.charCodeAt(cu)?(t="*",cu++):(t=u,0===vu&&wu(yt)),t===u&&(47===r.charCodeAt(cu)?(t="/",cu++):(t=u,0===vu&&wu(dt)),t===u&&(37===r.charCodeAt(cu)?(t="%",cu++):(t=u,0===vu&&wu(ht)),t===u&&("||"===r.substr(cu,2)?(t="||",cu+=2):(t=u,0===vu&&wu(mt))))),t}function Qa(){var t,e,n,o;return(t=function(){var t,e,n,o,a,s,i;t=cu,(e=vi())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&(n=Ua())!==u&&Ji()!==u&&qs()!==u&&Ji()!==u&&(o=hc())!==u&&Ji()!==u&&(a=Qi())!==u?(lu=t,c=n,l=o,e={type:"cast",keyword:e.toLowerCase(),expr:c,symbol:"as",target:[l]},t=e):(cu=t,t=u);var c,l;t===u&&(t=cu,(e=vi())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&(n=Ua())!==u&&Ji()!==u&&qs()!==u&&Ji()!==u&&(o=mi())!==u&&Ji()!==u&&(a=Vi())!==u&&Ji()!==u&&(s=gs())!==u&&Ji()!==u&&Qi()!==u&&Ji()!==u&&(i=Qi())!==u?(lu=t,e=function(r,t,e){return{type:"cast",keyword:r.toLowerCase(),expr:t,symbol:"as",target:[{dataType:"DECIMAL("+e+")"}]}}(e,n,s),t=e):(cu=t,t=u),t===u&&(t=cu,(e=vi())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&(n=Ua())!==u&&Ji()!==u&&qs()!==u&&Ji()!==u&&(o=mi())!==u&&Ji()!==u&&(a=Vi())!==u&&Ji()!==u&&(s=gs())!==u&&Ji()!==u&&Wi()!==u&&Ji()!==u&&(i=gs())!==u&&Ji()!==u&&Qi()!==u&&Ji()!==u&&Qi()!==u?(lu=t,e=function(r,t,e,n){return{type:"cast",keyword:r.toLowerCase(),expr:t,symbol:"as",target:[{dataType:"DECIMAL("+e+", "+n+")"}]}}(e,n,s,i),t=e):(cu=t,t=u),t===u&&(t=cu,(e=vi())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&(n=Ua())!==u&&Ji()!==u&&qs()!==u&&Ji()!==u&&(o=function(){var t;(t=function(){var t,e,n,o;t=cu,"signed"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Nn));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="SIGNED"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(t=wi());return t}())!==u&&Ji()!==u?((a=Ci())===u&&(a=null),a!==u&&Ji()!==u&&(s=Qi())!==u?(lu=t,e=function(r,t,e,n){return{type:"cast",keyword:r.toLowerCase(),expr:t,symbol:"as",target:[{dataType:e+(n?" "+n:"")}]}}(e,n,o,a),t=e):(cu=t,t=u)):(cu=t,t=u))));return t}())===u&&(t=hs())===u&&(t=function(){var t;(t=function(){var t,e,n,o;t=cu,(e=function(){var t,e,n,o;t=cu,"count"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(dn));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="COUNT"):(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&(n=function(){var t,e,n,o,a,s,i,c,l,f;t=cu,(e=function(){var t,e;t=cu,42===r.charCodeAt(cu)?(e="*",cu++):(e=u,0===vu&&wu(yt));e!==u&&(lu=t,e={type:"star",value:"*"});return t=e}())!==u&&(lu=t,e={expr:e});if((t=e)===u){if(t=cu,(e=ei())===u&&(e=null),e!==u)if(Ji()!==u)if((n=Vi())!==u)if(Ji()!==u)if((o=Ua())!==u)if(Ji()!==u)if(Qi()!==u){for(a=[],s=cu,(i=Ji())!==u?((c=ci())===u&&(c=li()),c!==u&&(l=Ji())!==u&&(f=Ua())!==u?s=i=[i,c,l,f]:(cu=s,s=u)):(cu=s,s=u);s!==u;)a.push(s),s=cu,(i=Ji())!==u?((c=ci())===u&&(c=li()),c!==u&&(l=Ji())!==u&&(f=Ua())!==u?s=i=[i,c,l,f]:(cu=s,s=u)):(cu=s,s=u);a!==u&&(s=Ji())!==u?((i=ha())===u&&(i=null),i!==u?(lu=t,e=function(r,t,e,n){const o=e.length;let u=t;u.parentheses=!0;for(let r=0;r>"===r.substr(cu,3)?(s="#>>",cu+=3):(s=u,0===vu&&wu(gt)),s===u&&("#>"===r.substr(cu,2)?(s="#>",cu+=2):(s=u,0===vu&&wu(jt)),s===u&&(s=zi())===u&&(s=Ki())===u&&("@>"===r.substr(cu,2)?(s="@>",cu+=2):(s=u,0===vu&&wu(_t)),s===u&&("<@"===r.substr(cu,2)?(s="<@",cu+=2):(s=u,0===vu&&wu(Tt))))))))),s!==u&&(i=Ji())!==u&&(c=Qa())!==u?o=a=[a,s,i,c]:(cu=o,o=u)):(cu=o,o=u);o!==u;)n.push(o),o=cu,(a=Ji())!==u?("?|"===r.substr(cu,2)?(s="?|",cu+=2):(s=u,0===vu&&wu(Ct)),s===u&&("?&"===r.substr(cu,2)?(s="?&",cu+=2):(s=u,0===vu&&wu(At)),s===u&&(63===r.charCodeAt(cu)?(s="?",cu++):(s=u,0===vu&&wu(wt)),s===u&&("#-"===r.substr(cu,2)?(s="#-",cu+=2):(s=u,0===vu&&wu(Et)),s===u&&("#>>"===r.substr(cu,3)?(s="#>>",cu+=3):(s=u,0===vu&&wu(gt)),s===u&&("#>"===r.substr(cu,2)?(s="#>",cu+=2):(s=u,0===vu&&wu(jt)),s===u&&(s=zi())===u&&(s=Ki())===u&&("@>"===r.substr(cu,2)?(s="@>",cu+=2):(s=u,0===vu&&wu(_t)),s===u&&("<@"===r.substr(cu,2)?(s="<@",cu+=2):(s=u,0===vu&&wu(Tt))))))))),s!==u&&(i=Ji())!==u&&(c=Qa())!==u?o=a=[a,s,i,c]:(cu=o,o=u)):(cu=o,o=u);n!==u?(lu=t,l=e,e=(f=n)&&0!==f.length?jc(l,f):l,t=e):(cu=t,t=u)}else cu=t,t=u;else cu=t,t=u;var l,f;return t}())===u&&(t=cu,(e=function(){var t;33===r.charCodeAt(cu)?(t="!",cu++):(t=u,0===vu&&wu(et));t===u&&(45===r.charCodeAt(cu)?(t="-",cu++):(t=u,0===vu&&wu(vt)),t===u&&(43===r.charCodeAt(cu)?(t="+",cu++):(t=u,0===vu&&wu(bt)),t===u&&(126===r.charCodeAt(cu)?(t="~",cu++):(t=u,0===vu&&wu(Lt)))));return t}())!==u?(n=cu,(o=Ji())!==u&&(a=Xa())!==u?n=o=[o,a]:(cu=n,n=u),n!==u?(lu=t,t=e=Cc(e,n[1])):(cu=t,t=u)):(cu=t,t=u)),t}function Ka(){var r,t,e,n,o,a,s,i,c,l,f,p;return r=cu,(t=Ja())!==u&&(e=Ji())!==u&&(n=Gi())!==u&&(o=Ji())!==u&&(a=us())!==u?(s=cu,(i=Ji())!==u&&(c=Ou())!==u?s=i=[i,c]:(cu=s,s=u),s===u&&(s=null),s!==u?(lu=r,l=t,f=a,p=s,kc.add(`select::${l}::${f}`),r=t={type:"column_ref",table:l,column:f,collate:p&&p[1]}):(cu=r,r=u)):(cu=r,r=u),r===u&&(r=cu,(t=as())!==u?(e=cu,(n=Ji())!==u&&(o=Ou())!==u?e=n=[n,o]:(cu=e,e=u),e===u&&(e=null),e!==u?(lu=r,r=t=function(r,t){return kc.add("select::null::"+r),{type:"column_ref",table:null,column:r,collate:t&&t[1]}}(t,e)):(cu=r,r=u)):(cu=r,r=u)),r}function za(){var r,t,e,n,o,a,s,i;if(r=cu,(t=as())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=as())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=as())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,r=t=T(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function Za(){var r,t;return r=cu,(t=is())!==u&&(lu=r,t={type:"default",value:t}),(r=t)===u&&(r=rs()),r}function Ja(){var r,t;return r=cu,(t=is())!==u?(lu=cu,(St(t)?u:void 0)!==u?(lu=r,r=t=t):(cu=r,r=u)):(cu=r,r=u),r===u&&(r=cu,(t=ts())!==u&&(lu=r,t=t),r=t),r}function rs(){var r;return(r=es())===u&&(r=ns())===u&&(r=os()),r}function ts(){var r,t;return r=cu,(t=es())===u&&(t=ns())===u&&(t=os()),t!==u&&(lu=r,t=t.value),r=t}function es(){var t,e,n,o;if(t=cu,34===r.charCodeAt(cu)?(e='"',cu++):(e=u,0===vu&&wu(xt)),e!==u){if(n=[],kt.test(r.charAt(cu))?(o=r.charAt(cu),cu++):(o=u,0===vu&&wu(It)),o!==u)for(;o!==u;)n.push(o),kt.test(r.charAt(cu))?(o=r.charAt(cu),cu++):(o=u,0===vu&&wu(It));else n=u;n!==u?(34===r.charCodeAt(cu)?(o='"',cu++):(o=u,0===vu&&wu(xt)),o!==u?(lu=t,t=e={type:"double_quote_string",value:n.join("")}):(cu=t,t=u)):(cu=t,t=u)}else cu=t,t=u;return t}function ns(){var t,e,n,o;if(t=cu,39===r.charCodeAt(cu)?(e="'",cu++):(e=u,0===vu&&wu(Cr)),e!==u){if(n=[],Nt.test(r.charAt(cu))?(o=r.charAt(cu),cu++):(o=u,0===vu&&wu(Rt)),o!==u)for(;o!==u;)n.push(o),Nt.test(r.charAt(cu))?(o=r.charAt(cu),cu++):(o=u,0===vu&&wu(Rt));else n=u;n!==u?(39===r.charCodeAt(cu)?(o="'",cu++):(o=u,0===vu&&wu(Cr)),o!==u?(lu=t,t=e={type:"single_quote_string",value:n.join("")}):(cu=t,t=u)):(cu=t,t=u)}else cu=t,t=u;return t}function os(){var t,e,n,o;if(t=cu,96===r.charCodeAt(cu)?(e="`",cu++):(e=u,0===vu&&wu(Ot)),e!==u){if(n=[],Ut.test(r.charAt(cu))?(o=r.charAt(cu),cu++):(o=u,0===vu&&wu(Mt)),o!==u)for(;o!==u;)n.push(o),Ut.test(r.charAt(cu))?(o=r.charAt(cu),cu++):(o=u,0===vu&&wu(Mt));else n=u;n!==u?(96===r.charCodeAt(cu)?(o="`",cu++):(o=u,0===vu&&wu(Ot)),o!==u?(lu=t,t=e={type:"backticks_quote_string",value:n.join("")}):(cu=t,t=u)):(cu=t,t=u)}else cu=t,t=u;return t}function us(){var r,t;return r=cu,(t=ss())!==u&&(lu=r,t=t),(r=t)===u&&(r=ts()),r}function as(){var r,t;return r=cu,(t=ss())!==u?(lu=cu,(St(t)?u:void 0)!==u?(lu=r,r=t=t):(cu=r,r=u)):(cu=r,r=u),r===u&&(r=ts()),r}function ss(){var r,t,e,n;if(r=cu,(t=cs())!==u){for(e=[],n=fs();n!==u;)e.push(n),n=fs();e!==u?(lu=r,r=t=Dt(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function is(){var r,t,e,n;if(r=cu,(t=cs())!==u){for(e=[],n=ls();n!==u;)e.push(n),n=ls();e!==u?(lu=r,r=t=Dt(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function cs(){var t;return Pt.test(r.charAt(cu))?(t=r.charAt(cu),cu++):(t=u,0===vu&&wu(Ft)),t}function ls(){var t;return $t.test(r.charAt(cu))?(t=r.charAt(cu),cu++):(t=u,0===vu&&wu(Ht)),t}function fs(){var t;return Bt.test(r.charAt(cu))?(t=r.charAt(cu),cu++):(t=u,0===vu&&wu(qt)),t}function ps(){var t,e,n,o;return t=cu,e=cu,58===r.charCodeAt(cu)?(n=":",cu++):(n=u,0===vu&&wu(Gt)),n!==u&&(o=is())!==u?e=n=[n,o]:(cu=e,e=u),e!==u&&(lu=t,e={type:"param",value:e[1]}),t=e}function bs(){var r,t,e;return r=cu,Vs()!==u&&Ji()!==u&&Rs()!==u&&Ji()!==u&&(t=Ni())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u?((e=xa())===u&&(e=null),e!==u&&Ji()!==u&&Qi()!==u?(lu=r,r={type:"on update",keyword:t,parentheses:!0,expr:e}):(cu=r,r=u)):(cu=r,r=u),r===u&&(r=cu,Vs()!==u&&Ji()!==u&&Rs()!==u&&Ji()!==u&&(t=Ni())!==u?(lu=r,r=function(r){return{type:"on update",keyword:r}}(t)):(cu=r,r=u)),r}function vs(){var t,e,n;return t=cu,function(){var t,e,n,o;t=cu,"over"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Ge));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}()!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u&&$s()!==u&&Ji()!==u&&Zs()!==u&&Ji()!==u&&(e=ra())!==u&&Ji()!==u?((n=ha())===u&&(n=null),n!==u&&Ji()!==u&&Qi()!==u?(lu=t,t={partitionby:e,orderby:n}):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=bs()),t}function ys(){var t,e,n,o,a;return t=cu,(e=function(){var t;(t=ds())===u&&(t=function(){var t,e,n,o;t=cu,"current_user"===r.substr(cu,12).toLowerCase()?(e=r.substr(cu,12),cu+=12):(e=u,0===vu&&wu(fo));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="CURRENT_USER"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(t=function(){var t,e,n,o;t=cu,"user"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(ro));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="USER"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(t=function(){var t,e,n,o;t=cu,"session_user"===r.substr(cu,12).toLowerCase()?(e=r.substr(cu,12),cu+=12):(e=u,0===vu&&wu(po));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="SESSION_USER"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(t=function(){var t,e,n,o;t=cu,"system_user"===r.substr(cu,11).toLowerCase()?(e=r.substr(cu,11),cu+=11):(e=u,0===vu&&wu(bo));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="SYSTEM_USER"):(cu=t,t=u)):(cu=t,t=u);return t}());return t}())!==u&&Ji()!==u&&(n=Vi())!==u&&Ji()!==u?((o=xa())===u&&(o=null),o!==u&&Ji()!==u&&Qi()!==u&&Ji()!==u?((a=vs())===u&&(a=null),a!==u?(lu=t,t=e={type:"function",name:{name:[{type:"default",value:e}]},args:o||{type:"expr_list",value:[]},over:a,...Lc()}):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,(e=ds())!==u&&Ji()!==u?((n=bs())===u&&(n=null),n!==u?(lu=t,t=e={type:"function",name:{name:[{type:"origin",value:e}]},over:n,...Lc()}):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=cu,(e=pc())!==u&&Ji()!==u&&(n=Vi())!==u&&Ji()!==u?((o=Ma())===u&&(o=null),o!==u&&Ji()!==u&&Qi()!==u&&Ji()!==u?((a=vs())===u&&(a=null),a!==u?(lu=t,t=e=function(r,t,e){return t&&"expr_list"!==t.type&&(t={type:"expr_list",value:[t]}),{type:"function",name:r,args:t||{type:"expr_list",value:[]},over:e,...Lc()}}(e,o,a)):(cu=t,t=u)):(cu=t,t=u)):(cu=t,t=u))),t}function ds(){var t;return(t=function(){var t,e,n,o;t=cu,"current_date"===r.substr(cu,12).toLowerCase()?(e=r.substr(cu,12),cu+=12):(e=u,0===vu&&wu(to));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="CURRENT_DATE"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(t=function(){var t,e,n,o;t=cu,"current_time"===r.substr(cu,12).toLowerCase()?(e=r.substr(cu,12),cu+=12):(e=u,0===vu&&wu(co));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="CURRENT_TIME"):(cu=t,t=u)):(cu=t,t=u);return t}())===u&&(t=Ni()),t}function hs(){var t,e,n,o,a,s,i,c,l;return t=cu,"binary"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Nr)),e===u&&(e=null),e!==u&&Ji()!==u&&(n=ws())!==u?(o=cu,(a=Ji())!==u&&(s=Ou())!==u?o=a=[a,s]:(cu=o,o=u),o===u&&(o=null),o!==u?(lu=t,c=n,l=o,(i=e)&&(c.prefix=i.toLowerCase()),l&&(c.suffix={collate:l[1]}),t=e=c):(cu=t,t=u)):(cu=t,t=u),t===u&&(t=Es())===u&&(t=function(){var t,e;t=cu,(e=function(){var t,e,n,o;t=cu,"true"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(ve));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&(lu=t,e={type:"bool",value:!0});(t=e)===u&&(t=cu,(e=function(){var t,e,n,o;t=cu,"false"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(de));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&(lu=t,e={type:"bool",value:!1}),t=e);return t}())===u&&(t=ms())===u&&(t=function(){var t,e,n,o,a,s;t=cu,(e=ki())===u&&(e=Si())===u&&(e=Ii())===u&&(e=xi());if(e!==u)if(Ji()!==u){if(n=cu,39===r.charCodeAt(cu)?(o="'",cu++):(o=u,0===vu&&wu(Cr)),o!==u){for(a=[],s=Cs();s!==u;)a.push(s),s=Cs();a!==u?(39===r.charCodeAt(cu)?(s="'",cu++):(s=u,0===vu&&wu(Cr)),s!==u?n=o=[o,a,s]:(cu=n,n=u)):(cu=n,n=u)}else cu=n,n=u;n!==u?(lu=t,e=zt(e,n),t=e):(cu=t,t=u)}else cu=t,t=u;else cu=t,t=u;if(t===u)if(t=cu,(e=ki())===u&&(e=Si())===u&&(e=Ii())===u&&(e=xi()),e!==u)if(Ji()!==u){if(n=cu,34===r.charCodeAt(cu)?(o='"',cu++):(o=u,0===vu&&wu(xt)),o!==u){for(a=[],s=Ls();s!==u;)a.push(s),s=Ls();a!==u?(34===r.charCodeAt(cu)?(s='"',cu++):(s=u,0===vu&&wu(xt)),s!==u?n=o=[o,a,s]:(cu=n,n=u)):(cu=n,n=u)}else cu=n,n=u;n!==u?(lu=t,e=zt(e,n),t=e):(cu=t,t=u)}else cu=t,t=u;else cu=t,t=u;return t}()),t}function ms(){var t,e;return t=cu,(e=function(){var t,e,n,o;t=cu,"null"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(pe));e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u);return t}())!==u&&(lu=t,e={type:"null",value:null}),t=e}function ws(){var t,e,n,o,a,s,i,c;if(t=cu,"_binary"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(Wt)),e===u&&(e=null),e!==u)if((n=Ji())!==u)if("x"===r.substr(cu,1).toLowerCase()?(o=r.charAt(cu),cu++):(o=u,0===vu&&wu(Yt)),o!==u){if(a=cu,39===r.charCodeAt(cu)?(s="'",cu++):(s=u,0===vu&&wu(Cr)),s!==u){for(i=[],Vt.test(r.charAt(cu))?(c=r.charAt(cu),cu++):(c=u,0===vu&&wu(Qt));c!==u;)i.push(c),Vt.test(r.charAt(cu))?(c=r.charAt(cu),cu++):(c=u,0===vu&&wu(Qt));i!==u?(39===r.charCodeAt(cu)?(c="'",cu++):(c=u,0===vu&&wu(Cr)),c!==u?a=s=[s,i,c]:(cu=a,a=u)):(cu=a,a=u)}else cu=a,a=u;a!==u?(lu=t,t=e={type:"hex_string",prefix:e,value:a[1].join("")}):(cu=t,t=u)}else cu=t,t=u;else cu=t,t=u;else cu=t,t=u;if(t===u){if(t=cu,"_binary"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(Wt)),e===u&&(e=null),e!==u)if((n=Ji())!==u)if("b"===r.substr(cu,1).toLowerCase()?(o=r.charAt(cu),cu++):(o=u,0===vu&&wu(Xt)),o!==u){if(a=cu,39===r.charCodeAt(cu)?(s="'",cu++):(s=u,0===vu&&wu(Cr)),s!==u){for(i=[],Vt.test(r.charAt(cu))?(c=r.charAt(cu),cu++):(c=u,0===vu&&wu(Qt));c!==u;)i.push(c),Vt.test(r.charAt(cu))?(c=r.charAt(cu),cu++):(c=u,0===vu&&wu(Qt));i!==u?(39===r.charCodeAt(cu)?(c="'",cu++):(c=u,0===vu&&wu(Cr)),c!==u?a=s=[s,i,c]:(cu=a,a=u)):(cu=a,a=u)}else cu=a,a=u;a!==u?(lu=t,t=e=function(r,t,e){return{type:"bit_string",prefix:r,value:e[1].join("")}}(e,0,a)):(cu=t,t=u)}else cu=t,t=u;else cu=t,t=u;else cu=t,t=u;if(t===u){if(t=cu,"_binary"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(Wt)),e===u&&(e=null),e!==u)if((n=Ji())!==u)if("0x"===r.substr(cu,2)?(o="0x",cu+=2):(o=u,0===vu&&wu(Kt)),o!==u){for(a=[],Vt.test(r.charAt(cu))?(s=r.charAt(cu),cu++):(s=u,0===vu&&wu(Qt));s!==u;)a.push(s),Vt.test(r.charAt(cu))?(s=r.charAt(cu),cu++):(s=u,0===vu&&wu(Qt));a!==u?(lu=t,t=e=function(r,t,e){return{type:"full_hex_string",prefix:r,value:e.join("")}}(e,0,a)):(cu=t,t=u)}else cu=t,t=u;else cu=t,t=u;else cu=t,t=u;if(t===u){if(t=cu,e=cu,39===r.charCodeAt(cu)?(n="'",cu++):(n=u,0===vu&&wu(Cr)),n!==u){for(o=[],a=Cs();a!==u;)o.push(a),a=Cs();o!==u?(39===r.charCodeAt(cu)?(a="'",cu++):(a=u,0===vu&&wu(Cr)),a!==u?e=n=[n,o,a]:(cu=e,e=u)):(cu=e,e=u)}else cu=e,e=u;if(e!==u&&(lu=t,e=function(r){return{type:"single_quote_string",value:r[1].join("")}}(e)),(t=e)===u){if(t=cu,e=cu,34===r.charCodeAt(cu)?(n='"',cu++):(n=u,0===vu&&wu(xt)),n!==u){for(o=[],a=Ls();a!==u;)o.push(a),a=Ls();o!==u?(34===r.charCodeAt(cu)?(a='"',cu++):(a=u,0===vu&&wu(xt)),a!==u?e=n=[n,o,a]:(cu=e,e=u)):(cu=e,e=u)}else cu=e,e=u;e!==u&&(lu=t,e=function(r){return{type:"double_quote_string",value:r[1].join("")}}(e)),t=e}}}}return t}function Ls(){var t;return Zt.test(r.charAt(cu))?(t=r.charAt(cu),cu++):(t=u,0===vu&&wu(Jt)),t===u&&(t=As()),t}function Cs(){var t;return Nt.test(r.charAt(cu))?(t=r.charAt(cu),cu++):(t=u,0===vu&&wu(Rt)),t===u&&(t=As()),t}function As(){var t;return"''"===r.substr(cu,2)?(t="''",cu+=2):(t=u,0===vu&&wu(re)),t}function Es(){var r,t,e;return r=cu,(t=function(){var r,t,e,n;r=cu,(t=gs())!==u&&(e=js())!==u&&(n=_s())!==u?(lu=r,r=t={type:"bigint",value:t+e+n}):(cu=r,r=u);r===u&&(r=cu,(t=gs())!==u&&(e=js())!==u?(lu=r,t=function(r,t){const e=r+t;if(Ec(r))return{type:"bigint",value:e};const n=t.length>=1?t.length-1:0;return parseFloat(e).toFixed(n)}(t,e),r=t):(cu=r,r=u),r===u&&(r=cu,(t=gs())!==u&&(e=_s())!==u?(lu=r,t=function(r,t){return{type:"bigint",value:r+t}}(t,e),r=t):(cu=r,r=u),r===u&&(r=cu,(t=gs())!==u&&(lu=r,t=function(r){return Ec(r)?{type:"bigint",value:r}:parseFloat(r)}(t)),r=t)));return r}())!==u&&(lu=r,t=(e=t)&&"bigint"===e.type?e:{type:"number",value:e}),r=t}function gs(){var t,e,n;return(t=Ts())===u&&(t=Ss())===u&&(t=cu,45===r.charCodeAt(cu)?(e="-",cu++):(e=u,0===vu&&wu(vt)),e===u&&(43===r.charCodeAt(cu)?(e="+",cu++):(e=u,0===vu&&wu(bt))),e!==u&&(n=Ts())!==u?(lu=t,t=e=e+n):(cu=t,t=u),t===u&&(t=cu,45===r.charCodeAt(cu)?(e="-",cu++):(e=u,0===vu&&wu(vt)),e===u&&(43===r.charCodeAt(cu)?(e="+",cu++):(e=u,0===vu&&wu(bt))),e!==u&&(n=Ss())!==u?(lu=t,t=e=function(r,t){return r+t}(e,n)):(cu=t,t=u))),t}function js(){var t,e,n,o;return t=cu,46===r.charCodeAt(cu)?(e=".",cu++):(e=u,0===vu&&wu(ne)),e!==u?((n=Ts())===u&&(n=null),n!==u?(lu=t,t=e=(o=n)?"."+o:""):(cu=t,t=u)):(cu=t,t=u),t}function _s(){var t,e,n;return t=cu,(e=function(){var t,e,n;t=cu,ae.test(r.charAt(cu))?(e=r.charAt(cu),cu++):(e=u,0===vu&&wu(se));e!==u?(ie.test(r.charAt(cu))?(n=r.charAt(cu),cu++):(n=u,0===vu&&wu(ce)),n===u&&(n=null),n!==u?(lu=t,t=e=e+(null!==(o=n)?o:"")):(cu=t,t=u)):(cu=t,t=u);var o;return t}())!==u&&(n=Ts())!==u?(lu=t,t=e=e+n):(cu=t,t=u),t}function Ts(){var r,t,e;if(r=cu,t=[],(e=Ss())!==u)for(;e!==u;)t.push(e),e=Ss();else t=u;return t!==u&&(lu=r,t=t.join("")),r=t}function Ss(){var t;return oe.test(r.charAt(cu))?(t=r.charAt(cu),cu++):(t=u,0===vu&&wu(ue)),t}function xs(){var t,e,n,o;return t=cu,"default"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(M)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function ks(){var t,e,n,o;return t=cu,"to"===r.substr(cu,2).toLowerCase()?(e=r.substr(cu,2),cu+=2):(e=u,0===vu&&wu(ye)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Is(){var t,e,n,o;return t=cu,"show"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(he)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Ns(){var t,e,n,o;return t=cu,"drop"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(me)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DROP"):(cu=t,t=u)):(cu=t,t=u),t}function Rs(){var t,e,n,o;return t=cu,"update"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Ae)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Os(){var t,e,n,o;return t=cu,"create"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Ee)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Us(){var t,e,n,o;return t=cu,"temporary"===r.substr(cu,9).toLowerCase()?(e=r.substr(cu,9),cu+=9):(e=u,0===vu&&wu(ge)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Ms(){var t,e,n,o;return t=cu,"temp"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(je)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Ds(){var t,e,n,o;return t=cu,"delete"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(_e)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Ps(){var t,e,n,o;return t=cu,"insert"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Te)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Fs(){var t,e,n,o;return t=cu,"rename"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(xe)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function $s(){var t,e,n,o;return t=cu,"partition"===r.substr(cu,9).toLowerCase()?(e=r.substr(cu,9),cu+=9):(e=u,0===vu&&wu(Ie)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="PARTITION"):(cu=t,t=u)):(cu=t,t=u),t}function Hs(){var t,e,n,o;return t=cu,"into"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Ne)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Bs(){var t,e,n,o;return t=cu,"set"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(fr)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="SET"):(cu=t,t=u)):(cu=t,t=u),t}function qs(){var t,e,n,o;return t=cu,"as"===r.substr(cu,2).toLowerCase()?(e=r.substr(cu,2),cu+=2):(e=u,0===vu&&wu(Ue)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Gs(){var t,e,n,o;return t=cu,"table"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(Me)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="TABLE"):(cu=t,t=u)):(cu=t,t=u),t}function Ws(){var t,e,n,o;return t=cu,"tables"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(De)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="TABLES"):(cu=t,t=u)):(cu=t,t=u),t}function Ys(){var t,e,n,o;return t=cu,"database"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(Pe)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DATABASE"):(cu=t,t=u)):(cu=t,t=u),t}function Vs(){var t,e,n,o;return t=cu,"on"===r.substr(cu,2).toLowerCase()?(e=r.substr(cu,2),cu+=2):(e=u,0===vu&&wu(d)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Qs(){var t,e,n,o;return t=cu,"join"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Be)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Xs(){var t,e,n,o;return t=cu,"values"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Ye)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Ks(){var t,e,n,o;return t=cu,"using"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(Ve)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function zs(){var t,e,n,o;return t=cu,"with"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(qr)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Zs(){var t,e,n,o;return t=cu,"by"===r.substr(cu,2).toLowerCase()?(e=r.substr(cu,2),cu+=2):(e=u,0===vu&&wu(Ke)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function Js(){var t,e,n,o;return t=cu,"asc"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(tn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="ASC"):(cu=t,t=u)):(cu=t,t=u),t}function ri(){var t,e,n,o;return t=cu,"desc"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(en)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DESC"):(cu=t,t=u)):(cu=t,t=u),t}function ti(){var t,e,n,o;return t=cu,"all"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(on)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="ALL"):(cu=t,t=u)):(cu=t,t=u),t}function ei(){var t,e,n,o;return t=cu,"distinct"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(un)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DISTINCT"):(cu=t,t=u)):(cu=t,t=u),t}function ni(){var t,e,n,o;return t=cu,"between"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(an)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="BETWEEN"):(cu=t,t=u)):(cu=t,t=u),t}function oi(){var t,e,n,o;return t=cu,"in"===r.substr(cu,2).toLowerCase()?(e=r.substr(cu,2),cu+=2):(e=u,0===vu&&wu(sn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="IN"):(cu=t,t=u)):(cu=t,t=u),t}function ui(){var t,e,n,o;return t=cu,"is"===r.substr(cu,2).toLowerCase()?(e=r.substr(cu,2),cu+=2):(e=u,0===vu&&wu(cn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="IS"):(cu=t,t=u)):(cu=t,t=u),t}function ai(){var t,e,n,o;return t=cu,"like"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(ln)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="LIKE"):(cu=t,t=u)):(cu=t,t=u),t}function si(){var t,e,n,o;return t=cu,"exists"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(bn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="EXISTS"):(cu=t,t=u)):(cu=t,t=u),t}function ii(){var t,e,n,o;return t=cu,"not"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(Z)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="NOT"):(cu=t,t=u)):(cu=t,t=u),t}function ci(){var t,e,n,o;return t=cu,"and"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(vn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="AND"):(cu=t,t=u)):(cu=t,t=u),t}function li(){var t,e,n,o;return t=cu,"or"===r.substr(cu,2).toLowerCase()?(e=r.substr(cu,2),cu+=2):(e=u,0===vu&&wu(yn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="OR"):(cu=t,t=u)):(cu=t,t=u),t}function fi(){var t,e,n,o;return t=cu,"case"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(An)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function pi(){var t,e,n,o;return t=cu,"when"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(En)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function bi(){var t,e,n,o;return t=cu,"end"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(L)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?t=e=[e,n]:(cu=t,t=u)):(cu=t,t=u),t}function vi(){var t,e,n,o;return t=cu,"cast"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(_n)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="CAST"):(cu=t,t=u)):(cu=t,t=u),t}function yi(){var t,e,n,o;return t=cu,"char"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Sn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="CHAR"):(cu=t,t=u)):(cu=t,t=u),t}function di(){var t,e,n,o;return t=cu,"varchar"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(xn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="VARCHAR"):(cu=t,t=u)):(cu=t,t=u),t}function hi(){var t,e,n,o;return t=cu,"numeric"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(kn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="NUMERIC"):(cu=t,t=u)):(cu=t,t=u),t}function mi(){var t,e,n,o;return t=cu,"decimal"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(In)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DECIMAL"):(cu=t,t=u)):(cu=t,t=u),t}function wi(){var t,e,n,o;return t=cu,"unsigned"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(Rn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="UNSIGNED"):(cu=t,t=u)):(cu=t,t=u),t}function Li(){var t,e,n,o;return t=cu,"int"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(On)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="INT"):(cu=t,t=u)):(cu=t,t=u),t}function Ci(){var t,e,n,o;return t=cu,"integer"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(Mn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="INTEGER"):(cu=t,t=u)):(cu=t,t=u),t}function Ai(){var t,e,n,o;return t=cu,"smallint"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(Pn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="SMALLINT"):(cu=t,t=u)):(cu=t,t=u),t}function Ei(){var t,e,n,o;return t=cu,"tinyint"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(Fn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="TINYINT"):(cu=t,t=u)):(cu=t,t=u),t}function gi(){var t,e,n,o;return t=cu,"bigint"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Gn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="BIGINT"):(cu=t,t=u)):(cu=t,t=u),t}function ji(){var t,e,n,o;return t=cu,"float"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(Yn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="FLOAT"):(cu=t,t=u)):(cu=t,t=u),t}function _i(){var t,e,n,o;return t=cu,"double"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(Vn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DOUBLE"):(cu=t,t=u)):(cu=t,t=u),t}function Ti(){var t,e,n,o;return t=cu,"real"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Qn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="REAL"):(cu=t,t=u)):(cu=t,t=u),t}function Si(){var t,e,n,o;return t=cu,"date"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(Xn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DATE"):(cu=t,t=u)):(cu=t,t=u),t}function xi(){var t,e,n,o;return t=cu,"datetime"===r.substr(cu,8).toLowerCase()?(e=r.substr(cu,8),cu+=8):(e=u,0===vu&&wu(Kn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="DATETIME"):(cu=t,t=u)):(cu=t,t=u),t}function ki(){var t,e,n,o;return t=cu,"time"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(zn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="TIME"):(cu=t,t=u)):(cu=t,t=u),t}function Ii(){var t,e,n,o;return t=cu,"timestamp"===r.substr(cu,9).toLowerCase()?(e=r.substr(cu,9),cu+=9):(e=u,0===vu&&wu(Zn)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="TIMESTAMP"):(cu=t,t=u)):(cu=t,t=u),t}function Ni(){var t,e,n,o;return t=cu,"current_timestamp"===r.substr(cu,17).toLowerCase()?(e=r.substr(cu,17),cu+=17):(e=u,0===vu&&wu(lo)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="CURRENT_TIMESTAMP"):(cu=t,t=u)):(cu=t,t=u),t}function Ri(){var t,e,n,o;return t=cu,"view"===r.substr(cu,4).toLowerCase()?(e=r.substr(cu,4),cu+=4):(e=u,0===vu&&wu(wo)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="VIEW"):(cu=t,t=u)):(cu=t,t=u),t}function Oi(){var t;return 64===r.charCodeAt(cu)?(t="@",cu++):(t=u,0===vu&&wu(Lo)),t}function Ui(){var t;return(t=function(){var t;return"@@"===r.substr(cu,2)?(t="@@",cu+=2):(t=u,0===vu&&wu(Co)),t}())===u&&(t=Oi())===u&&(t=function(){var t;return 36===r.charCodeAt(cu)?(t="$",cu++):(t=u,0===vu&&wu(Ao)),t}()),t}function Mi(){var t;return 61===r.charCodeAt(cu)?(t="=",cu++):(t=u,0===vu&&wu(Qr)),t}function Di(){var t,e,n,o;return t=cu,"add"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(_o)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="ADD"):(cu=t,t=u)):(cu=t,t=u),t}function Pi(){var t,e,n,o;return t=cu,"column"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(To)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="COLUMN"):(cu=t,t=u)):(cu=t,t=u),t}function Fi(){var t,e,n,o;return t=cu,"index"===r.substr(cu,5).toLowerCase()?(e=r.substr(cu,5),cu+=5):(e=u,0===vu&&wu(So)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="INDEX"):(cu=t,t=u)):(cu=t,t=u),t}function $i(){var t,e,n,o;return t=cu,"key"===r.substr(cu,3).toLowerCase()?(e=r.substr(cu,3),cu+=3):(e=u,0===vu&&wu(I)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="KEY"):(cu=t,t=u)):(cu=t,t=u),t}function Hi(){var t,e,n,o;return t=cu,"unique"===r.substr(cu,6).toLowerCase()?(e=r.substr(cu,6),cu+=6):(e=u,0===vu&&wu(k)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="UNIQUE"):(cu=t,t=u)):(cu=t,t=u),t}function Bi(){var t,e,n,o;return t=cu,"comment"===r.substr(cu,7).toLowerCase()?(e=r.substr(cu,7),cu+=7):(e=u,0===vu&&wu(No)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="COMMENT"):(cu=t,t=u)):(cu=t,t=u),t}function qi(){var t,e,n,o;return t=cu,"constraint"===r.substr(cu,10).toLowerCase()?(e=r.substr(cu,10),cu+=10):(e=u,0===vu&&wu(Ro)),e!==u?(n=cu,vu++,o=cs(),vu--,o===u?n=void 0:(cu=n,n=u),n!==u?(lu=t,t=e="CONSTRAINT"):(cu=t,t=u)):(cu=t,t=u),t}function Gi(){var t;return 46===r.charCodeAt(cu)?(t=".",cu++):(t=u,0===vu&&wu(ne)),t}function Wi(){var t;return 44===r.charCodeAt(cu)?(t=",",cu++):(t=u,0===vu&&wu(Ho)),t}function Yi(){var t;return 42===r.charCodeAt(cu)?(t="*",cu++):(t=u,0===vu&&wu(yt)),t}function Vi(){var t;return 40===r.charCodeAt(cu)?(t="(",cu++):(t=u,0===vu&&wu(Fr)),t}function Qi(){var t;return 41===r.charCodeAt(cu)?(t=")",cu++):(t=u,0===vu&&wu($r)),t}function Xi(){var t;return 59===r.charCodeAt(cu)?(t=";",cu++):(t=u,0===vu&&wu(Go)),t}function Ki(){var t;return"->"===r.substr(cu,2)?(t="->",cu+=2):(t=u,0===vu&&wu(Wo)),t}function zi(){var t;return"->>"===r.substr(cu,3)?(t="->>",cu+=3):(t=u,0===vu&&wu(Yo)),t}function Zi(){var t;return(t=function(){var t;return"||"===r.substr(cu,2)?(t="||",cu+=2):(t=u,0===vu&&wu(mt)),t}())===u&&(t=function(){var t;return"&&"===r.substr(cu,2)?(t="&&",cu+=2):(t=u,0===vu&&wu(Vo)),t}()),t}function Ji(){var r,t;for(r=[],(t=oc())===u&&(t=tc());t!==u;)r.push(t),(t=oc())===u&&(t=tc());return r}function rc(){var r,t;if(r=[],(t=oc())===u&&(t=tc()),t!==u)for(;t!==u;)r.push(t),(t=oc())===u&&(t=tc());else r=u;return r}function tc(){var t;return(t=function(){var t,e,n,o,a,s;t=cu,"/*"===r.substr(cu,2)?(e="/*",cu+=2):(e=u,0===vu&&wu(Qo));if(e!==u){for(n=[],o=cu,a=cu,vu++,"*/"===r.substr(cu,2)?(s="*/",cu+=2):(s=u,0===vu&&wu(Xo)),vu--,s===u?a=void 0:(cu=a,a=u),a!==u&&(s=nc())!==u?o=a=[a,s]:(cu=o,o=u);o!==u;)n.push(o),o=cu,a=cu,vu++,"*/"===r.substr(cu,2)?(s="*/",cu+=2):(s=u,0===vu&&wu(Xo)),vu--,s===u?a=void 0:(cu=a,a=u),a!==u&&(s=nc())!==u?o=a=[a,s]:(cu=o,o=u);n!==u?("*/"===r.substr(cu,2)?(o="*/",cu+=2):(o=u,0===vu&&wu(Xo)),o!==u?t=e=[e,n,o]:(cu=t,t=u)):(cu=t,t=u)}else cu=t,t=u;return t}())===u&&(t=function(){var t,e,n,o,a,s;t=cu,"--"===r.substr(cu,2)?(e="--",cu+=2):(e=u,0===vu&&wu(Ko));if(e!==u){for(n=[],o=cu,a=cu,vu++,s=uc(),vu--,s===u?a=void 0:(cu=a,a=u),a!==u&&(s=nc())!==u?o=a=[a,s]:(cu=o,o=u);o!==u;)n.push(o),o=cu,a=cu,vu++,s=uc(),vu--,s===u?a=void 0:(cu=a,a=u),a!==u&&(s=nc())!==u?o=a=[a,s]:(cu=o,o=u);n!==u?t=e=[e,n]:(cu=t,t=u)}else cu=t,t=u;return t}())===u&&(t=function(){var t,e,n,o,a,s;t=cu,35===r.charCodeAt(cu)?(e="#",cu++):(e=u,0===vu&&wu(zo));if(e!==u){for(n=[],o=cu,a=cu,vu++,s=uc(),vu--,s===u?a=void 0:(cu=a,a=u),a!==u&&(s=nc())!==u?o=a=[a,s]:(cu=o,o=u);o!==u;)n.push(o),o=cu,a=cu,vu++,s=uc(),vu--,s===u?a=void 0:(cu=a,a=u),a!==u&&(s=nc())!==u?o=a=[a,s]:(cu=o,o=u);n!==u?t=e=[e,n]:(cu=t,t=u)}else cu=t,t=u;return t}()),t}function ec(){var r,t,e,n,o,a,s;return r=cu,(t=Bi())!==u&&Ji()!==u?((e=Mi())===u&&(e=null),e!==u&&Ji()!==u&&(n=ws())!==u?(lu=r,a=e,s=n,r=t={type:(o=t).toLowerCase(),keyword:o.toLowerCase(),symbol:a,value:s}):(cu=r,r=u)):(cu=r,r=u),r}function nc(){var t;return r.length>cu?(t=r.charAt(cu),cu++):(t=u,0===vu&&wu(Zo)),t}function oc(){var t;return Jo.test(r.charAt(cu))?(t=r.charAt(cu),cu++):(t=u,0===vu&&wu(ru)),t}function uc(){var t,e;if((t=function(){var t,e;t=cu,vu++,r.length>cu?(e=r.charAt(cu),cu++):(e=u,0===vu&&wu(Zo));vu--,e===u?t=void 0:(cu=t,t=u);return t}())===u)if(t=[],te.test(r.charAt(cu))?(e=r.charAt(cu),cu++):(e=u,0===vu&&wu(ee)),e!==u)for(;e!==u;)t.push(e),te.test(r.charAt(cu))?(e=r.charAt(cu),cu++):(e=u,0===vu&&wu(ee));else t=u;return t}function ac(){var t,e;return t=cu,lu=cu,Sc=[],(!0?void 0:u)!==u&&Ji()!==u?((e=sc())===u&&(e=function(){var t,e;t=cu,function(){var t;return"return"===r.substr(cu,6).toLowerCase()?(t=r.substr(cu,6),cu+=6):(t=u,0===vu&&wu(Eo)),t}()!==u&&Ji()!==u&&(e=ic())!==u?(lu=t,t={type:"return",expr:e}):(cu=t,t=u);return t}()),e!==u?(lu=t,t={stmt:e,vars:Sc}):(cu=t,t=u)):(cu=t,t=u),t}function sc(){var t,e,n,o;return t=cu,(e=yc())===u&&(e=dc()),e!==u&&Ji()!==u?((n=function(){var t;return":="===r.substr(cu,2)?(t=":=",cu+=2):(t=u,0===vu&&wu(go)),t}())===u&&(n=Mi()),n!==u&&Ji()!==u&&(o=ic())!==u?(lu=t,t=e={type:"assign",left:e,symbol:n,right:o}):(cu=t,t=u)):(cu=t,t=u),t}function ic(){var t;return(t=Qu())===u&&(t=function(){var r,t,e,n,o;r=cu,(t=yc())!==u&&Ji()!==u&&(e=fa())!==u&&Ji()!==u&&(n=yc())!==u&&Ji()!==u&&(o=va())!==u?(lu=r,r=t={type:"join",ltable:t,rtable:n,op:e,on:o}):(cu=r,r=u);return r}())===u&&(t=cc())===u&&(t=function(){var t,e;t=cu,function(){var t;return 91===r.charCodeAt(cu)?(t="[",cu++):(t=u,0===vu&&wu(Bo)),t}()!==u&&Ji()!==u&&(e=vc())!==u&&Ji()!==u&&function(){var t;return 93===r.charCodeAt(cu)?(t="]",cu++):(t=u,0===vu&&wu(qo)),t}()!==u?(lu=t,t={type:"array",value:e}):(cu=t,t=u);return t}()),t}function cc(){var r,t,e,n,o,a,s,i;if(r=cu,(t=lc())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wa())!==u&&(s=Ji())!==u&&(i=lc())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wa())!==u&&(s=Ji())!==u&&(i=lc())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,r=t=tt(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function lc(){var r,t,e,n,o,a,s,i;if(r=cu,(t=fc())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Va())!==u&&(s=Ji())!==u&&(i=fc())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Va())!==u&&(s=Ji())!==u&&(i=fc())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,r=t=tt(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function fc(){var r,t,e;return(r=hs())===u&&(r=yc())===u&&(r=bc())===u&&(r=ps())===u&&(r=cu,Vi()!==u&&Ji()!==u&&(t=cc())!==u&&Ji()!==u&&Qi()!==u?(lu=r,(e=t).parentheses=!0,r=e):(cu=r,r=u)),r}function pc(){var r,t,e,n,o,a,s;return r=cu,(t=Za())!==u?(e=cu,(n=Ji())!==u&&(o=Gi())!==u&&(a=Ji())!==u&&(s=Za())!==u?e=n=[n,o,a,s]:(cu=e,e=u),e===u&&(e=null),e!==u?(lu=r,r=t=function(r,t){const e={name:[r]};return null!==t&&(e.schema=r,e.name=[t[3]]),e}(t,e)):(cu=r,r=u)):(cu=r,r=u),r}function bc(){var r,t,e;return r=cu,(t=pc())!==u&&Ji()!==u&&Vi()!==u&&Ji()!==u?((e=vc())===u&&(e=null),e!==u&&Ji()!==u&&Qi()!==u?(lu=r,r=t={type:"function",name:t,args:{type:"expr_list",value:e},...Lc()}):(cu=r,r=u)):(cu=r,r=u),r===u&&(r=cu,(t=pc())!==u&&(lu=r,t=function(r){return{type:"function",name:r,args:null,...Lc()}}(t)),r=t),r}function vc(){var r,t,e,n,o,a,s,i;if(r=cu,(t=fc())!==u){for(e=[],n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=fc())!==u?n=o=[o,a,s,i]:(cu=n,n=u);n!==u;)e.push(n),n=cu,(o=Ji())!==u&&(a=Wi())!==u&&(s=Ji())!==u&&(i=fc())!==u?n=o=[o,a,s,i]:(cu=n,n=u);e!==u?(lu=r,r=t=T(t,e)):(cu=r,r=u)}else cu=r,r=u;return r}function yc(){var r,t,e,n,o;return r=cu,(t=Ui())!==u&&(e=dc())!==u?(lu=r,n=t,o=e,r=t={type:"var",...o,prefix:n}):(cu=r,r=u),r}function dc(){var t,e,n,o,a;return t=cu,(e=is())!==u&&(n=function(){var t,e,n,o,a;t=cu,e=[],n=cu,46===r.charCodeAt(cu)?(o=".",cu++):(o=u,0===vu&&wu(ne));o!==u&&(a=is())!==u?n=o=[o,a]:(cu=n,n=u);for(;n!==u;)e.push(n),n=cu,46===r.charCodeAt(cu)?(o=".",cu++):(o=u,0===vu&&wu(ne)),o!==u&&(a=is())!==u?n=o=[o,a]:(cu=n,n=u);e!==u&&(lu=t,e=function(r){const t=[];for(let e=0;e"):"".concat(o," ").concat(u)}}function j(r){if(r){var t=[],e=r.keyword,n=r.symbol,o=r.value;return t.push(e.toUpperCase()),n&&t.push(n),t.push(w(o)),t.join(" ")}}function _(r){return r.map((function(r){var t=r.keyword,e=r.args,n=[h(t)];if(e){var o=e.keyword,u=e.columns;n.push(h(o),u.map(yt).join(", "))}return n.join(" ")})).join(" OR ")}function T(r){return r?["RETURNING",r.columns.map(At).filter(m).join(", ")].join(" "):""}function S(r){return r?[h(r.keyword),h(r.args)]:[]}function x(r){if(r){if("string"==typeof r){var t=p().database;switch(t&&t.toLowerCase()){case"sqlite":return"AUTOINCREMENT";default:return"AUTO_INCREMENT"}}var e=r.keyword,n=r.seed,o=r.increment,u=r.parentheses,a=h(e);return u&&(a+="(".concat(w(n),", ").concat(w(o),")")),a}}function k(r){if(r)return r.map(wt).filter(m).join(", ")}function I(r){return function(r){if(Array.isArray(r))return N(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,t){if(r){if("string"==typeof r)return N(r,t);var e={}.toString.call(r).slice(8,-1);return"Object"===e&&r.constructor&&(e=r.constructor.name),"Map"===e||"Set"===e?Array.from(r):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?N(r,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=Array(t);er.length)&&(t=r.length);for(var e=0,n=Array(t);e=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,a=!0,s=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return a=r.done,r},e:function(r){s=!0,u=r},f:function(){try{a||null==e.return||e.return()}finally{if(s)throw u}}}}function Y(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=Array(t);er.length)&&(t=r.length);for(var e=0,n=Array(t);e0?cr([""].concat(tr(n))):"";return u.join("")+o+a.join("")+l}return o}var f=r[0],p=[];if("dual"===f.type)return"DUAL";p.push(ir(f));for(var b=1;b0){var i,c=[],l=function(r,t){var e="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!e){if(Array.isArray(r)||(e=Br(r))||t&&r&&"number"==typeof r.length){e&&(r=e);var n=0,o=function(){};return{s:o,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,a=!0,s=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return a=r.done,r},e:function(r){s=!0,u=r},f:function(){try{a||null==e.return||e.return()}finally{if(s)throw u}}}}(a);try{for(l.s();!(i=l.n()).done;){var f=i.value,p=f.type;switch(p){case"collate":c.push(ut(f));break;case"default":c.push(h(p),ut(f.value));break;case"constraint":c.push(Rr(f))}}}catch(r){l.e(r)}finally{l.f()}s.push(c.filter(m).join(" "))}return s.filter(m).join(" ")}(r);break;case"type":e=function(r){var t=r.as,e=r.create_definitions,n=r.keyword,o=r.name,u=r.resource,a=[h(r.type),h(n),[d(o.schema),d(o.name)].filter(m).join("."),h(t),h(u)];if(e){var s=[];switch(u){case"enum":case"range":s.push(ut(e));break;default:s.push("(".concat(e.map(Gr).join(", "),")"))}a.push(s.filter(m).join(" "))}return a.filter(m).join(" ")}(r);break;case"user":e=function(r){var t=r.attribute,e=r.comment,n=r.default_role,o=r.if_not_exists,u=r.keyword,a=r.lock_option,i=r.password_options,c=r.require,l=r.resource_options,f=r.type,p=r.user.map((function(r){var t=r.user,e=r.auth_option,n=[xr(t)];return e&&n.push(h(e.keyword),e.auth_plugin,w(e.value)),n.filter(m).join(" ")})).join(", "),b=[h(f),h(u),h(o),p];n&&b.push(h(n.keyword),n.value.map(xr).join(", "));b.push(s(c&&c.keyword,ut,c&&c.value)),l&&b.push(h(l.keyword),l.value.map((function(r){return ut(r)})).join(" "));i&&i.forEach((function(r){return b.push(s(r.keyword,ut,r.value))}));return b.push(w(a),j(e),w(t)),b.filter(m).join(" ")}(r);break;default:throw new Error("unknown create resource ".concat(t))}return e},comment:function(r){var t=r.expr,e=r.keyword,n=r.target;return[h(r.type),h(e),fr(n),pr(t)].filter(m).join(" ")},select:G,deallocate:function(r){var t=r.type,e=r.keyword,n=r.expr;return[h(t),h(e),ut(n)].filter(m).join(" ")},delete:function(r){var t=r.columns,e=r.from,n=r.table,o=r.where,u=r.orderby,a=r.with,i=r.limit,c=r.returning,l=[B(a),"DELETE"],f=gt(t,e);return l.push(f),Array.isArray(n)&&(1===n.length&&!0===n[0].addition||l.push(cr(n))),l.push(s("FROM",cr,e)),l.push(s("WHERE",ut,o)),l.push(st(u,"order by")),l.push(H(i)),l.push(T(c)),l.filter(m).join(" ")},exec:function(r){var t=r.keyword,e=r.module,n=r.parameters;return[h(t),ir(e),(n||[]).map(br).filter(m).join(", ")].filter(m).join(" ")},execute:function(r){var t=r.type,e=r.name,n=r.args,o=[h(t)],u=[e];n&&u.push("(".concat(ut(n).join(", "),")"));return o.push(u.join("")),o.filter(m).join(" ")},explain:function(r){var t=r.type,e=r.expr;return[h(t),G(e)].join(" ")},for:function(r){var t=r.type,e=r.label,n=r.target,o=r.query,u=r.stmts;return[e,h(t),n,"IN",mr([o]),"LOOP",mr(u),"END LOOP",e].filter(m).join(" ")},update:function(r){var t=r.from,e=r.table,n=r.set,o=r.where,u=r.orderby,a=r.with,i=r.limit,c=r.returning;return[B(a),"UPDATE",cr(e),s("SET",V,n),s("FROM",cr,t),s("WHERE",ut,o),st(u,"order by"),H(i),T(c)].filter(m).join(" ")},if:function(r){var t=r.boolean_expr,e=r.else_expr,n=r.elseif_expr,o=r.if_expr,u=r.prefix,a=r.go,s=r.semicolons,i=r.suffix,c=[h(r.type),ut(t),w(u),"".concat(Ar(o.ast||o)).concat(s[0]),h(a)];n&&c.push(n.map((function(r){return[h(r.type),ut(r.boolean_expr),"THEN",Ar(r.then.ast||r.then),r.semicolon].filter(m).join(" ")})).join(" "));e&&c.push("ELSE","".concat(Ar(e.ast||e)).concat(s[1]));return c.push(w(i)),c.filter(m).join(" ")},insert:J,drop:Tr,truncate:Tr,replace:J,declare:function(r){var t=r.type,e=r.declare,n=r.symbol,o=[h(t)],u=e.map((function(r){var t=r.at,e=r.name,n=r.as,o=r.constant,u=r.datatype,a=r.not_null,s=r.prefix,i=r.definition,c=r.keyword,l=[[t,e].filter(m).join(""),h(n),h(o)];switch(c){case"variable":l.push(dt(u),ut(r.collate),h(a)),i&&l.push(h(i.keyword),ut(i.value));break;case"cursor":l.push(h(s));break;case"table":l.push(h(s),"(".concat(i.map(Gr).join(", "),")"))}return l.filter(m).join(" ")})).join("".concat(n," "));return o.push(u),o.join(" ")},use:function(r){var t=r.type,e=r.db,n=h(t),o=d(e);return"".concat(n," ").concat(o)},rename:function(r){var t=r.type,e=r.table,n=[],o="".concat(t&&t.toUpperCase()," TABLE");if(e){var u,a=Er(e);try{for(a.s();!(u=a.n()).done;){var s=u.value.map(ir);n.push(s.join(" TO "))}}catch(r){a.e(r)}finally{a.f()}}return"".concat(o," ").concat(n.join(", "))},call:function(r){var t=ut(r.expr);return"".concat("CALL"," ").concat(t)},desc:function(r){var t=r.type,e=r.table,n=h(t);return"".concat(n," ").concat(d(e))},set:function(r){var t=r.type,e=r.expr,n=r.keyword,o=h(t),u=e.map(ut).join(", ");return[o,h(n),u].filter(m).join(" ")},lock:Sr,unlock:Sr,show:yr,grant:kr,revoke:kr,proc:function(r){var t=r.stmt;switch(t.type){case"assign":return vr(t);case"return":return function(r){var t=r.type,e=r.expr;return[h(t),ut(e)].join(" ")}(t)}},raise:function(r){var t=r.type,e=r.level,n=r.raise,o=r.using,u=[h(t),h(e)];n&&u.push([w(n.keyword),"format"===n.type&&n.expr.length>0&&","].filter(m).join(""),n.expr.map((function(r){return ut(r)})).join(", "));o&&u.push(h(o.type),h(o.option),o.symbol,o.expr.map((function(r){return ut(r)})).join(", "));return u.filter(m).join(" ")},transaction:function(r){var t=r.expr,e=t.action,n=t.keyword,o=t.modes,u=[w(e),h(n)];return o&&u.push(o.map(w).join(", ")),u.filter(m).join(" ")}};function hr(r){if(!r)return"";for(var t=dr[r.type],e=r,n=e._parentheses,o=e._orderby,u=e._limit,a=[n&&"(",t(r)];r._next;){var s=dr[r._next.type],i=h(r.set_op);a.push(i,s(r._next)),r=r._next}return a.push(n&&")",st(o,"order by"),H(u)),a.filter(m).join(" ")}function mr(r){for(var t=[],e=0,n=r.length;e=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,a=!0,s=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return a=r.done,r},e:function(r){s=!0,u=r},f:function(){try{a||null==e.return||e.return()}finally{if(s)throw u}}}}function gr(r){return function(r){if(Array.isArray(r))return _r(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||jr(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function jr(r,t){if(r){if("string"==typeof r)return _r(r,t);var e={}.toString.call(r).slice(8,-1);return"Object"===e&&r.constructor&&(e=r.constructor.name),"Map"===e||"Set"===e?Array.from(r):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?_r(r,t):void 0}}function _r(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=Array(t);er.length)&&(t=r.length);for(var e=0,n=Array(t);e")),E&&E.length&&(j+=" ".concat(E.map(w).join(" ")));var _="::",T="",S=[];"as"===o&&(0===l&&(i="".concat(h(n),"(").concat(i)),T=")",_=" ".concat(o.toUpperCase()," ")),0===l&&S.push(i);var x=Pr(p);S.push(_,C,y,C,x,j,T),c.push(S.filter(m).join(""))}u&&c.push(" AS ".concat(d(u)));var k=c.filter(m).join("");return s?"(".concat(k,")"):k}function $r(r){var t=r.args,e=r.array_index,n=r.name,o=r.args_parentheses,u=r.parentheses,a=r.within_group,s=r.over,i=r.suffix,c=Dr(s),l=function(r){if(!r)return"";var t=r.type,e=r.keyword,n=r.orderby;return[h(t),h(e),"(".concat(st(n,"order by"),")")].filter(m).join(" ")}(a),f=ut(i),p=[w(n.schema),n.name.map(w).join(".")].filter(m).join(".");if(!t)return[p,l,c].filter(m).join(" ");var b=r.separator||", ";"TRIM"===h(p)&&(b=" ");var v=[p];v.push(!1===o?" ":"(");var y=ut(t);if(Array.isArray(b)){for(var d=y[0],L=1,C=y.length;Lr.length)&&(t=r.length);for(var e=0,n=Array(t);e",ut(e)].join(" ")},insert:hr,interval:rr,json:function(r){var t=r.keyword,e=r.expr_list;return[h(t),e.map((function(r){return ut(r)})).join(", ")].join(" ")},json_object_arg:function(r){var t=r.expr,e=t.key,n=t.value,o=t.on,u=[ut(e),"VALUE",ut(n)];return o&&u.push("ON","NULL",ut(o)),u.filter(m).join(" ")},json_visitor:function(r){return[r.symbol,ut(r.expr)].join("")},func_arg:function(r){var t=r.value;return[t.name,t.symbol,ut(t.expr)].filter(m).join(" ")},show:yr,struct:tt,tablefunc:function(r){var t=r.as,e=r.name,n=r.args,o=[w(e.schema),e.name.map(w).join(".")].filter(m).join(".");return["".concat(o,"(").concat(ut(n).join(", "),")"),"AS",$r(t)].join(" ")},tables:cr,unnest:nr,window:function(r){return r.expr.map(Mr).join(", ")}};function ot(r){var t=r.prefix,e=void 0===t?"@":t,n=r.name,o=r.members,u=r.quoted,a=r.suffix,s=[],i=o&&o.length>0?"".concat(n,".").concat(o.join(".")):n,c="".concat(e||"").concat(i);return a&&(c+=a),s.push(c),[u,s.join(" "),u].filter(m).join("")}function ut(r){if(r){var t=r;if(r.ast){var e=t.ast;Reflect.deleteProperty(t,e);for(var n=0,o=Object.keys(e);nr.length)&&(t=r.length);for(var e=0,n=Array(t);e=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,a=!0,s=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return a=r.done,r},e:function(r){s=!0,u=r},f:function(){try{a||null==e.return||e.return()}finally{if(s)throw u}}}}(r);try{for(n.s();!(t=n.n()).done;){var o=t.value,u=o.brackets?"[".concat(w(o.index),"]"):"".concat(o.notation).concat(w(o.index));o.property&&(u="".concat(u,".").concat(w(o.property))),e.push(u)}}catch(r){n.e(r)}finally{n.f()}return e.join("")}function yt(r){var t=r.array_index,e=r.as,n=r.column,o=r.collate,u=r.db,a=r.isDual,i=r.notations,c=void 0===i?[]:i,l=r.options,f=r.schema,p=r.table,b=r.parentheses,v=r.suffix,y=r.order_by,w=r.subFields,L=void 0===w?[]:w,C="*"===n?"*":bt(n,a),A=[u,f,p].filter(m).map((function(r){return"".concat("string"==typeof r?d(r):ut(r))})),E=A[0];if(E){for(var g=1;g=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,a=!0,s=!1;return{s:function(){e=e.call(r)},n:function(){var r=e.next();return a=r.done,r},e:function(r){s=!0,u=r},f:function(){try{a||null==e.return||e.return()}finally{if(s)throw u}}}}function Rt(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=Array(t);e1&&void 0!==arguments[1]?arguments[1]:u,e=this.parse(r,t);return e&&e.ast}},{key:"sqlify",value:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u;return b(t),Ar(r)}},{key:"exprToSQL",value:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u;return b(t),ut(r)}},{key:"columnsToSQL",value:function(r,t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:u;if(b(e),!r||"*"===r)return[];var n=Et(t);return r.map((function(r){return At(r,n)}))}},{key:"parse",value:function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u,e=t.database,n=void 0===e?"sqlite":e;b(t);var o=n.toLowerCase();if(kt[o])return kt[o](!1===t.trimQuery?r:r.trim(),t.parseOptions||u.parseOptions);throw new Error("".concat(n," is not supported currently"))}},{key:"whiteListCheck",value:function(r,t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:u;if(t&&0!==t.length){var n=e.type,o=void 0===n?"table":n;if(!this["".concat(o,"List")]||"function"!=typeof this["".concat(o,"List")])throw new Error("".concat(o," is not valid check mode"));var a,s=this["".concat(o,"List")].bind(this),i=s(r,e),c=!0,l="",f=Nt(i);try{for(f.s();!(a=f.n()).done;){var p,b=a.value,v=!1,y=Nt(t);try{for(y.s();!(p=y.n()).done;){var d=p.value,h=new RegExp("^".concat(d,"$"),"i");if(h.test(b)){v=!0;break}}}catch(r){y.e(r)}finally{y.f()}if(!v){l=b,c=!1;break}}}catch(r){f.e(r)}finally{f.f()}if(!c)throw new Error("authority = '".concat(l,"' is required in ").concat(o," whiteList to execute SQL = '").concat(r,"'"))}}},{key:"tableList",value:function(r,t){var e=this.parse(r,t);return e&&e.tableList}},{key:"columnList",value:function(r,t){var e=this.parse(r,t);return e&&e.columnList}}])}();function Dt(r){return(Dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r})(r)}"object"===("undefined"==typeof self?"undefined":Dt(self))&&self&&(self.NodeSQLParser={Parser:Mt,util:n}),"undefined"==typeof global&&"object"===("undefined"==typeof window?"undefined":Dt(window))&&window&&(window.global=window),"object"===("undefined"==typeof global?"undefined":Dt(global))&&global&&global.window&&(global.window.NodeSQLParser={Parser:Mt,util:n})}])); +//# sourceMappingURL=sqlite.js.map \ No newline at end of file diff --git a/frontend/utilities/node-sql-parser/sqlite.js.map b/frontend/utilities/node-sql-parser/sqlite.js.map new file mode 100644 index 0000000000..ce1e7f2d66 --- /dev/null +++ b/frontend/utilities/node-sql-parser/sqlite.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["/Users/scott/Development/node-sql-parser/webpack/bootstrap","/Users/scott/Development/node-sql-parser/pegjs/sqlite.pegjs","/Users/scott/Development/node-sql-parser/external \"big-integer\"","/Users/scott/Development/node-sql-parser/src/util.js","/Users/scott/Development/node-sql-parser/src/index-definition.js","/Users/scott/Development/node-sql-parser/src/binary.js","/Users/scott/Development/node-sql-parser/src/limit.js","/Users/scott/Development/node-sql-parser/src/with.js","/Users/scott/Development/node-sql-parser/src/select.js","/Users/scott/Development/node-sql-parser/src/update.js","/Users/scott/Development/node-sql-parser/src/insert.js","/Users/scott/Development/node-sql-parser/src/interval.js","/Users/scott/Development/node-sql-parser/src/tables.js","/Users/scott/Development/node-sql-parser/src/comment.js","/Users/scott/Development/node-sql-parser/src/exec.js","/Users/scott/Development/node-sql-parser/src/assign.js","/Users/scott/Development/node-sql-parser/src/show.js","/Users/scott/Development/node-sql-parser/src/union.js","/Users/scott/Development/node-sql-parser/src/alter.js","/Users/scott/Development/node-sql-parser/src/analyze.js","/Users/scott/Development/node-sql-parser/src/create.js","/Users/scott/Development/node-sql-parser/src/command.js","/Users/scott/Development/node-sql-parser/src/delete.js","/Users/scott/Development/node-sql-parser/src/explain.js","/Users/scott/Development/node-sql-parser/src/proc.js","/Users/scott/Development/node-sql-parser/src/transaction.js","/Users/scott/Development/node-sql-parser/src/sql.js","/Users/scott/Development/node-sql-parser/src/constrain.js","/Users/scott/Development/node-sql-parser/src/window.js","/Users/scott/Development/node-sql-parser/src/over.js","/Users/scott/Development/node-sql-parser/src/func.js","/Users/scott/Development/node-sql-parser/src/array-struct.js","/Users/scott/Development/node-sql-parser/src/expr.js","/Users/scott/Development/node-sql-parser/src/aggregation.js","/Users/scott/Development/node-sql-parser/src/case.js","/Users/scott/Development/node-sql-parser/src/column.js","/Users/scott/Development/node-sql-parser/src/json.js","/Users/scott/Development/node-sql-parser/src/collate.js","/Users/scott/Development/node-sql-parser/src/parser.single.js","/Users/scott/Development/node-sql-parser/src/parser.js","/Users/scott/Development/node-sql-parser/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","BigInt","peg$SyntaxError","message","expected","found","location","this","Error","captureStackTrace","child","parent","ctor","constructor","peg$subclass","buildMessage","DESCRIBE_EXPECTATION_FNS","literal","expectation","literalEscape","text","escapedParts","parts","length","Array","classEscape","inverted","any","end","other","description","hex","ch","charCodeAt","toString","toUpperCase","replace","j","descriptions","type","sort","slice","join","describeExpected","describeFound","SyntaxError","parse","input","options","peg$result","peg$FAILED","peg$startRuleFunctions","start","peg$parsestart","peg$startRuleFunction","peg$c4","head","tail","createList","peg$c6","peg$literalExpectation","peg$c8","peg$c10","peg$c13","peg$c15","peg$c17","peg$c19","peg$c21","peg$c25","peg$c27","peg$c29","peg$c31","peg$c34","peg$c36","peg$c38","peg$c40","peg$c50","peg$c52","peg$c62","peg$c66","peg$c68","peg$c71","peg$c73","peg$c76","peg$c90","peg$c92","peg$c94","peg$c96","peg$c99","peg$c101","peg$c103","peg$c115","peg$c117","peg$c124","peg$c133","peg$c136","peg$c138","peg$c140","peg$c142","peg$c145","peg$c147","peg$c149","peg$c151","peg$c159","peg$c161","peg$c164","peg$c167","peg$c170","peg$c172","peg$c174","peg$c180","peg$c182","peg$c184","peg$c186","peg$c188","peg$c191","peg$c193","peg$c196","peg$c198","peg$c201","peg$c203","peg$c205","peg$c207","peg$c209","peg$c212","peg$c215","peg$c217","peg$c219","peg$c221","peg$c224","peg$c227","peg$c229","peg$c232","peg$c238","peg$c241","peg$c243","peg$c246","peg$c250","peg$c252","peg$c254","peg$c257","peg$c259","peg$c262","peg$c265","peg$c271","peg$c273","peg$c288","peg$c290","peg$c295","peg$c297","peg$c300","peg$c302","peg$c304","unshift","forEach","tableInfo","table","as","tableAlias","columnList","columns","columnListTableAlias","clear","col","add","refreshColumnList","peg$c325","peg$c335","peg$c338","peg$c340","peg$c342","peg$c344","peg$c346","peg$c359","createBinaryExprChain","peg$c361","peg$c365","nk","peg$c368","peg$c370","peg$c372","peg$c374","peg$c376","peg$c378","peg$c380","peg$c386","peg$c390","peg$c397","peg$c399","peg$c402","peg$c404","peg$c406","peg$c408","peg$c411","peg$c415","peg$c417","peg$c419","peg$c421","peg$c423","peg$c425","peg$c427","peg$c429","peg$c434","reservedMap","peg$c440","peg$c441","peg$c442","peg$classExpectation","peg$c444","peg$c445","peg$c448","peg$c449","peg$c450","peg$c454","peg$c455","peg$c456","peg$c457","peg$c458","peg$c459","peg$c460","peg$c462","peg$c486","peg$c488","peg$c489","peg$c490","peg$c493","peg$c496","peg$c500","ca","toLowerCase","peg$c501","peg$c502","peg$c504","peg$c505","peg$c506","peg$c515","peg$c519","peg$c520","peg$c523","peg$c524","peg$c525","peg$c526","peg$c529","peg$c532","peg$c535","peg$c537","peg$c539","peg$c541","peg$c543","peg$c545","peg$c547","peg$c550","peg$c552","peg$c554","peg$c556","peg$c558","peg$c560","peg$c562","peg$c564","peg$c566","peg$c568","peg$c570","peg$c572","peg$c577","peg$c580","peg$c582","peg$c585","peg$c587","peg$c589","peg$c592","peg$c595","peg$c598","peg$c602","peg$c604","peg$c606","peg$c608","peg$c610","peg$c612","peg$c614","peg$c616","peg$c618","peg$c620","peg$c622","peg$c624","peg$c626","peg$c628","peg$c630","peg$c633","peg$c636","peg$c639","peg$c642","peg$c645","peg$c648","peg$c651","peg$c654","peg$c657","peg$c660","peg$c663","peg$c665","peg$c669","peg$c672","peg$c675","peg$c678","peg$c681","peg$c684","peg$c687","peg$c690","peg$c693","peg$c695","peg$c697","peg$c699","peg$c701","peg$c704","peg$c707","peg$c710","peg$c713","peg$c716","peg$c719","peg$c722","peg$c725","peg$c728","peg$c731","peg$c734","peg$c737","peg$c740","peg$c743","peg$c746","peg$c749","peg$c752","peg$c755","peg$c758","peg$c761","peg$c764","peg$c767","peg$c770","peg$c773","peg$c776","peg$c779","peg$c782","peg$c785","peg$c788","peg$c794","peg$c797","peg$c800","peg$c803","peg$c806","peg$c809","peg$c812","peg$c815","peg$c818","peg$c821","peg$c824","peg$c827","peg$c830","peg$c833","peg$c837","peg$c840","peg$c843","peg$c846","peg$c848","peg$c850","peg$c852","peg$c854","peg$c856","peg$c858","peg$c861","peg$c864","peg$c867","peg$c871","peg$c874","peg$c879","peg$c882","peg$c885","peg$c888","peg$c890","peg$c892","peg$c894","peg$c896","peg$c898","peg$c900","peg$c902","peg$c904","peg$c906","peg$c908","peg$c910","peg$c912","peg$c914","peg$c916","peg$c918","peg$c920","peg$c922","peg$c923","peg$c924","peg$c940","peg$c942","peg$c944","peg$c946","peg$c949","peg$c952","dataType","peg$c957","peg$c958","peg$currPos","peg$savedPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","ignoreCase","peg$computePosDetails","pos","details","peg$computeLocation","startPos","endPos","startPosDetails","endPosDetails","offset","peg$fail","push","peg$buildStructuredError","s0","s2","peg$parse__","peg$parsemultiple_stmt","peg$parsecmd_stmt","s1","s3","substr","peg$parseident_start","peg$parseKW_ANALYZE","peg$parsetable_name","a","tableList","db","from","ast","peg$parseanalyze_stmt","s5","s7","s9","peg$parseKW_ATTACH","peg$parseKW_DATABASE","peg$parseexpr","peg$parseKW_AS","peg$parseident","e","schema","database","expr","peg$parseattach_stmt","s11","peg$parseKW_DROP","peg$parseKW_TABLE","peg$parseif_exists","peg$parsetable_ref_list","ife","tt","keyword","prefix","peg$parseKW_VIEW","peg$c109","peg$parseKW_INDEX","peg$parsecolumn_ref","peg$parseKW_ON","s4","peg$parseALTER_ALGORITHM","peg$parseALTER_LOCK","peg$parsedrop_index_opt","op","peg$c110","peg$parsedrop_stmt","s13","peg$parseKW_CREATE","peg$parseKW_TEMPORARY","peg$parseKW_TEMP","peg$parseif_not_exists_stmt","s6","s8","peg$parseLPAREN","peg$parsecreate_definition","peg$parseCOMMA","peg$parseRPAREN","peg$parsecreate_table_definition","peg$parsetable_option","peg$parsetable_options","tp","to","temporary","if_not_exists","create_definitions","table_options","peg$parseselect_stmt","qe","query_expr","peg$c59","peg$parsecreate_table_stmt","peg$parseKW_SCHEMA","peg$parseproc_func_name","peg$parsecreate_option_character_set","peg$parsecreate_db_definition","k","peg$c43","peg$parsecreate_db_stmt","s15","s19","s23","peg$parseKW_UNIQUE","peg$parseindex_type","peg$parsecolumn_order_item","peg$parsecolumn_order_list","peg$parsewhere_clause","kw","on","ta","cols","where","index_type","index","on_kw","index_columns","peg$parsecreate_index_stmt","s17","s21","peg$parsetrigger_event","peg$parseKW_OR","peg$parsetrigger_event_list","ob","args","peg$parsetrigger_for_row","peg$parseKW_WHEN","cond","peg$parsetrigger_when","suffix","peg$parsetrigger_action","te","tn","fe","tw","time","events","trigger","for_each","when","execute","peg$parsecreate_trigger_stmt","s12","s14","s16","peg$parsecolumn_list","peg$parseselect_stmt_nake","v","view","select","peg$parsecreate_view_stmt","peg$parsecreate_stmt","peg$parseKW_TRUNCATE","peg$parsetruncate_stmt","peg$parseKW_RENAME","peg$parsetable_to_item","peg$parsetable_to_list","tg","dt","peg$parserename_stmt","peg$parseKW_CALL","peg$parseproc_func_call","peg$parsecall_stmt","peg$parseKW_USE","peg$parseuse_stmt","peg$parseKW_ALTER","peg$parsealter_action","peg$parsealter_action_list","peg$parsealter_table_stmt","peg$parseKW_SET","peg$parseKW_GLOBAL","peg$parseKW_SESSION","peg$parseKW_LOCAL","peg$parseKW_PERSIST","peg$parseKW_PERSIST_ONLY","peg$parseassign_stmt","peg$parseassign_stmt_list","peg$parseset_stmt","peg$parseKW_LOCK","peg$parseKW_TABLES","peg$parselock_table","peg$parselock_table_list","ltl","tables","peg$parselock_stmt","peg$parseKW_UNLOCK","peg$parseunlock_stmt","peg$parseKW_SHOW","peg$parsein_op_right","peg$parsefrom_clause","peg$parselimit_clause","ins","limit","in","peg$parselike_op_right","isArray","peg$c263","peg$parseKW_VAR__PRE_AT","peg$parseKW_USING","peg$parseshow_grant_for_using_list","peg$parseshow_grant_for_using","u","user","host","h","role_list","peg$parseshow_grant_for","f","for","peg$parseshow_grant_stmt","peg$parseshow_stmt","peg$parseKW_DESC","peg$parseKW_DESCRIBE","peg$parsedesc_stmt","peg$parsecrud_stmt","peg$parseunion_stmt","peg$parseKW_UPDATE","peg$parseset_list","peg$parsereturning_stmt","peg$parseorder_by_clause","w","or","lc","dbObj","server","action","fullName","filter","Boolean","queryTableAlias","set","returning","orderby","peg$c322","peg$parseupdate_stmt","peg$parsereplace_insert","peg$parseKW_INTO","peg$parseinsert_partition","peg$parseinsert_value_clause","peg$parseon_duplicate_update_stmt","ri","odp","row","idx","values","partition","on_duplicate_update","peg$c331","peg$parsereplace_insert_stmt","peg$parseKW_IGNORE","ig","it","map","peg$c332","peg$parseinsert_no_columns_stmt","peg$parseinsert_into_set","peg$parseKW_DELETE","addition","peg$c323","peg$parsedelete_stmt","peg$parseproc_stmt","peg$parseproc_stmts","peg$parseSEMICOLON","headAst","cur","peg$c1","peg$parseset_op","peg$parseKW_UNION","peg$parseKW_ALL","peg$parseKW_DISTINCT","_next","set_op","_orderby","_limit","peg$c3","peg$parseKW_NOT","peg$parseKW_EXISTS","peg$parseKW_INSERT","peg$parsecolumn_ref_list","peg$c26","peg$parsecollate_expr","peg$parseKW_ASC","collate","order_by","peg$c45","peg$parsecolumn_order","peg$parsecreate_constraint_definition","peg$parsecreate_column_definition","peg$parsecreate_index_definition","peg$parseKW_FULLTEXT","peg$parseKW_SPATIAL","peg$parseKW_KEY","peg$parsecolumn","peg$parsecte_column_definition","peg$parseindex_options","id","definition","kc","index_options","resource","peg$parsecreate_fulltext_spatial_index_definition","peg$parsecolumn_definition_opt","peg$parseKW_NOT_NULL","peg$parseliteral_not_null","peg$parseliteral_null","nullable","peg$parseKW_DEFAULT","peg$parsedefault_expr","default_val","auto_increment","sql","unique","peg$c74","primary_key","peg$c77","peg$parsekeyword_comment","comment","peg$parseKW_CONSTRAINT","peg$parseident_without_kw_type","constraint","peg$c79","peg$parsecolumn_format","column_format","peg$parsestorage","storage","peg$parsereference_definition","reference_definition","peg$parseconstraint_name","peg$parseor_and_expr","ne","enforced","constraint_type","peg$c168","peg$parsecheck_constraint_definition","check","peg$parsecreate_option_character_set_kw","peg$parseKW_ASSIGIN_EQUAL","character_set","symbol","peg$c85","cdo","peg$parsecolumn_without_kw","peg$parsedata_type","opt","peg$c86","peg$parsecolumn_definition_opt_list","peg$parseKW_COLLATE","peg$parsealter_column_suffix","peg$c118","peg$parseKW_ADD","peg$parseALTER_ADD_CONSTRAINT","peg$parseident_name","peg$parseALTER_DROP_CONSTRAINT","peg$c125","peg$parseALTER_DROP_KEY_INDEX","peg$parseKW_COLUMN","cd","peg$parseALTER_ADD_COLUMN","peg$parseALTER_DROP_COLUMN","peg$parseKW_MODIFY","af","peg$parseALTER_MODIFY_COLUMN","peg$parseALTER_ADD_INDEX_OR_KEY","peg$parseKW_TO","old_column","peg$parseALTER_RENAME_COLUMN","peg$parseALTER_RENAME_TABLE","peg$parseALTER_CHANGE_COLUMN","algorithm","lock","de","peg$parsecreate_constraint_primary","peg$parsecreate_constraint_unique","peg$parsecreate_constraint_foreign","s10","nfr","peg$parsecreate_constraint_check","od","ou","peg$parseKW_REFERENCES","peg$parseon_reference","match","on_action","ro","peg$parseKW_CURRENT_TIMESTAMP","peg$parseexpr_list","peg$parsereference_option","peg$parseliteral_numeric","peg$parseKW_COMMENT","peg$parseliteral_string","peg$c213","peg$c222","peg$c225","lt","peg$parsetable_base","peg$parselock_type","lock_type","parentheses_symbol","peg$parsewith_clause","cte","peg$parseKW_WITH","peg$parsecte_definition","peg$parseKW_RECURSIVE","recursive","stmt","peg$parseliteral","peg$parseliteral_list","peg$parsecolumn_ref_index","s18","s20","s22","s24","s25","s26","opts","g","fu","peg$parseKW_SELECT","peg$parse___","peg$parsequery_option","peg$c279","peg$parseoption_clause","peg$parsecolumn_clause","peg$parseKW_GROUP","peg$parseKW_BY","peg$parsegroup_by_clause","peg$parseKW_HAVING","peg$parseor_and_where_expr","peg$parsehaving_clause","info","with","distinct","groupby","having","for_update","peg$parseOPT_SQL_CALC_FOUND_ROWS","peg$parseOPT_SQL_CACHE","peg$parseOPT_SQL_NO_CACHE","peg$parseOPT_SQL_BIG_RESULT","peg$parseOPT_SQL_SMALL_RESULT","peg$parseOPT_SQL_BUFFER_RESULT","peg$parseSTAR","peg$parsecolumn_list_item","item","peg$c281","peg$parseDOT","tbl","peg$c282","peg$parseKW_AND","peg$parseLOGIC_OPERATOR","parentheses","len","result","left","createBinaryExpr","peg$c357","peg$parsebinary_column_expr","peg$parsealias_clause","JSON","stringify","peg$c437","peg$parsequoted_ident","peg$parsealias_ident","peg$parseKW_FROM","peg$parseindex_option","peg$c292","kbs","peg$parseKW_KEY_BLOCK_SIZE","peg$c303","peg$parsetable_ref","peg$parsejoin_op","using","peg$parseon_clause","peg$c307","alias","peg$c308","peg$parsetable_join","peg$parseKW_DUAL","peg$c311","peg$c312","peg$parseKW_LEFT","peg$parseKW_OUTER","peg$parseKW_JOIN","peg$parseKW_INNER","obj","peg$c315","peg$parsevar_decl","peg$c317","peg$parseKW_WHERE","peg$parseKW_ORDER","peg$parseorder_by_element","peg$parseorder_by_list","peg$parsenumber_or_param","peg$parseparam","peg$parseKW_LIMIT","peg$parseKW_OFFSET","i1","res","seperator","peg$c321","peg$parseset_item","peg$parseadditive_expr","peg$parseKW_VALUES","peg$c327","peg$parseKW_RETURNING","peg$parsevalue_item","peg$parsevalue_list","peg$parsevalue_clause","peg$parseKW_PARTITION","peg$c347","peg$parseKW_REPLACE","el","peg$c350","peg$parseinterval_expr","peg$parseKW_INTERVAL","peg$parseKW_UNIT_YEAR","peg$parseKW_UNIT_MONTH","peg$parseKW_UNIT_DAY","peg$parseKW_UNIT_HOUR","peg$parseKW_UNIT_MINUTE","peg$parseKW_UNIT_SECOND","peg$parseinterval_unit","unit","peg$parsecase_when_then_list","peg$parsecase_when_then","peg$parseKW_THEN","peg$parsecase_else","peg$parseKW_ELSE","peg$parse_expr","peg$parseand_expr","peg$parseor_expr","peg$parseadditive_operator","peg$parseprimary","createUnaryExpr","peg$parseunary_expr","peg$c358","peg$parsenot_expr","peg$parsecomparison_expr","peg$parseexists_op","peg$parseexists_expr","rh","peg$parsearithmetic_comparison_operator","peg$parsearithmetic_op_right","peg$parseKW_BETWEEN","peg$parsebetween_or_not_between_op","right","peg$parsebetween_op_right","peg$parseKW_IS","peg$c382","peg$parseis_op_right","peg$parseKW_REGEXP","peg$parseKW_RLIKE","peg$parseregexp_op","peg$parsefunc_call","b","peg$c391","peg$parseregexp_op_right","peg$parsecomparison_op_right","peg$parsein_op","peg$parseKW_IN","es","peg$parseKW_LIKE","peg$parselike_op","peg$parseescape_op","escape","peg$c394","peg$parsemultiplicative_expr","getLocationObject","peg$c395","peg$parseunary_expr_or_primary","peg$parsemultiplicative_operator","list","peg$parseKW_CAST","target","peg$parseKW_DECIMAL","peg$parseint","precision","peg$c477","scale","peg$c478","peg$parseKW_SIGNED","peg$parseKW_UNSIGNED","peg$parsesignedness","peg$parseKW_INTEGER","peg$c479","peg$parsecast_expr","peg$parseKW_COUNT","peg$parsestar_expr","peg$c470","peg$parsecount_arg","peg$parseover_partition","over","peg$parseaggr_fun_count","peg$parseKW_SUM","peg$parseKW_MAX","peg$parseKW_MIN","peg$parseKW_AVG","peg$parseKW_SUM_MAX_MIN_AVG","peg$parseaggr_fun_smma","peg$parseaggr_func","condition_list","otherwise","peg$parseKW_CASE","peg$parseKW_END","peg$c353","peg$parsecase_expr","peg$parseDOUBLE_ARROW","peg$parseSINGLE_ARROW","peg$parsejsonb_expr","peg$parseunary_operator","ce","peg$c432","peg$parsequoted_ident_type","peg$parsedouble_quoted_ident","peg$parsesingle_quoted_ident","peg$parsebackticks_quoted_ident","test","charAt","peg$parsecolumn_name","peg$parsecolumn_part","peg$parseident_part","peg$parseon_update_current_timestamp","peg$c466","peg$parseKW_OVER","partitionby","peg$parsescalar_time_func","peg$parseKW_CURRENT_USER","peg$parseKW_USER","peg$parseKW_SESSION_USER","peg$parseKW_SYSTEM_USER","peg$parsescalar_func","bc","peg$c475","peg$parseKW_CURRENT_DATE","peg$parseKW_CURRENT_TIME","peg$parseKW_TRUE","peg$parseKW_FALSE","peg$parseliteral_bool","peg$parseKW_TIME","peg$parseKW_DATE","peg$parseKW_TIMESTAMP","peg$parseKW_DATETIME","peg$parsesingle_char","peg$parsesingle_quote_char","peg$parseliteral_datetime","peg$parseKW_NULL","peg$c494","peg$c497","peg$c498","peg$c499","peg$parseescape_char","peg$parsefrac","peg$parseexp","int_","frac","numStr","isBigInt","fixed","parseFloat","toFixed","peg$c509","exp","peg$c510","peg$c511","peg$parsenumber","peg$parsedigits","peg$parsedigit","digit","peg$c513","digits","sign","peg$parsee","peg$parseKW_CHAR","peg$parseKW_VARCHAR","peg$parseKW_NUMERIC","peg$parseKW_INT","peg$parseKW_SMALLINT","peg$parseKW_TINYINT","peg$parseKW_BIGINT","peg$parseKW_FLOAT","peg$parseKW_DOUBLE","peg$parseKW_REAL","peg$parseKW_VAR_PRE","peg$parseKW_VAR__PRE_AT_AT","peg$parseKW_VAR_PRE_DOLLAR","peg$parseOPERATOR_CONCATENATION","peg$parseOPERATOR_AND","peg$parsewhitespace","peg$parsecomment","peg$parsechar","peg$parseblock_comment","peg$parseEOL","peg$parseline_comment","peg$parsepound_sign_comment","peg$parseEOF","varList","peg$parseKW_RETURN","peg$parseproc_expr","peg$parsereturn_stmt","vars","peg$parsewithout_prefix_var_decl","peg$parseKW_ASSIGN","ltable","rtable","peg$parseproc_join","peg$parseproc_additive_expr","peg$parseLBRAKE","peg$parseproc_primary_list","peg$parseRBRAKE","peg$parseproc_array","peg$parseproc_multiplicative_expr","peg$parseproc_primary","peg$c931","peg$c933","peg$c938","peg$parsemem_chain","members","quoted","parseInt","peg$parsecharacter_string_type","peg$parseKW_BIT","peg$parsenumeric_type_suffix","peg$c955","peg$c956","peg$parsenumeric_type","peg$parsedatetime_type","peg$parseKW_JSON","peg$parsejson_type","peg$parseKW_TINYTEXT","peg$parseKW_TEXT","peg$parseKW_MEDIUMTEXT","peg$parseKW_LONGTEXT","peg$parsetext_type","peg$parseKW_ENUM","peg$parseenum_type","peg$parseboolean_type","peg$parseblob_type","peg$parseKW_ZEROFILL","un","ze","peg$c953","includeLocations","loc","operator","numberStr","previousMaxSafe","Number","MAX_SAFE_INTEGER","po","tableName","newColumnsList","Set","keys","columnInfo","split","require","DEFAULT_OPT","PARSER_NAME","trimQuery","parseOptions","parserOpt","commonOptionConnector","concat","connector","str","createValueExpr","_typeof","getParserOpt","setParserOpt","topToSQL","percent","val","columnIdentifierToSql","ident","identifierToSql","isDual","toUpper","hasVal","literalToSQL","collateToSQL","commonTypeValue","replaceParams","params","replaceParamsInner","onPartitionsToSQL","partitions","dataTypeToSQL","arrayStructTypeToSQL","anglebracket","dataTypeUpper","field","field_name","field_type","commentToSQL","triggerEventToSQL","event","eventKw","kwArgs","columnRefToSQL","returningToSQL","columnToSQL","commonKeywordArgsToSQL","autoIncrementToSQL","autoIncrement","seed","increment","columnOrderListToSQL","columnOrderList","columnOrderToSQL","indexTypeToSQL","indexType","indexOptionToSQL","indexOpt","upperType","indexOptArray","apply","_toConsumableArray","shift","indexOptionListToSQL","indexOptList","indexTypeAndOptionToSQL","indexDefinition","constraintType","_indexDefinition$inde","indexOptions","withExpr","definitionSQL","exprToSQL","binaryToSQL","rstr","isBetween","composePrefixValSuffix","limitToSQL","fetch","limitOffsetToSQL","withToSQL","isRecursive","withExprStr","selectIntoToSQL","into","position","intoType","varToSQL","selectToSQL","asStructVal","as_struct_val","forXml","_stmt$for_sys_time_as","for_sys_time_as_of","forSystem","lockingRead","locking_read","_stmt$into","isolation","qualify","top","windowInfo","window","withInfo","clauses","distinctToSQL","columnsToSQL","intoSQL","tablesToSQL","_ref","getExprListSQL","modifiers","orderOrPartitionByToSQL","forXmlToSQL","setToSQL","sets","_step","_iterator","_createForOfIteratorHelper","done","setItem","err","valuesToSQL","partitionToSQL","partitionArr","conflictTargetToSQL","conflictTarget","conflictActionToSQL","conflictAction","conflictToSQL","conflict","insertToSQL","_stmt$or","orExpr","_stmt$prefix","onDuplicateUpdate","duplicateSet","intervalToSQL","intervalExpr","unnestToSQL","unnestExpr","withOffset","with_offset","operatorToSQL","in_expr","pivotOperatorToSQL","tableHintToSQL","tableHintExpr","tableTumbleArgsToSQL","param","temporalTableOptionToSQL","of","between","and","tableToSQL","generatorSQL","prefixStr","tablesample","temporal_table","table_hint","serverName","schemaStr","valueSQL","valuesExpr","tumble","data","timecol","size","fullTableName","timeColSQL","sizeSQL","tableTumbleToSQL","generators","generator","tableSampleSQL","repeatable","temporalTableToSQL","tableSQL","joins","leftParentheses","rightParentheses","parenthesesNumber","joinsSQL","baseTable","joinExpr","tableOptionToSQL","tableOption","tableOptionItem","commentOptionToSQL","commentIsExprToSQL","execVariablesToSQL","assignToSQL","leftVar","rightVal","showToSQL","showExpr","showEventExpr","inClause","showCharacterSetExpr","showLikeAndWhereToSQL","showGrantsForExpr","forExpr","userAndHost","role","showGrantsForUser","typeToSQLFn","alter","_stmt$keyword","argsExpr","alterArgsToSQL","alterExprToSQL","alterAggregateToSQL","if_exists","_stmt$expr","exprList","alterTableToSQL","alterSchemaToSQL","sequence","_stmt$expr2","sequenceName","createDefinitionToSQL","alterSequenceToSQL","alterDomainTypeToSQL","alterFunctionToSQL","attributes","viewName","alterViewToSQL","analyze","attach","functionName","argsSQL","aggregateOptionToSQL","createAggregateToSQL","like","ifNotExists","createDefinition","tableOptions","ignoreReplace","ignore_replace","orReplace","partitionOf","partition_of","queryExpr","unLogged","unlogged","likeType","likeTableName","createTablePartitionOfToSQL","withSQL","withExprItem","unionToSQL","createTableToSQL","constraintKw","constraint_kw","deferrable","funcToSQL","createConstraintTriggerToSQL","definer","triggerBody","triggerEvents","triggerOrder","order","triggerTime","eventStr","multipleToSQL","createTriggerToSQL","extension","withName","version","createExtensionToSQL","returns","last","columnDefinitionToSQL","createFunctionReturnsOptToSQL","createFunctionReturnsToSQL","createFunctionOptionToSQL","createFunctionToSQL","concurrently","fileStream","filestream_on","include","indexColumns","indexUsing","index_using","algorithmOpt","algorithm_option","lockOpt","lock_option","onKw","tablespace","withBeforeWhere","with_before_where","withIndexOpt","includeColumns","indexName","createIndexToSQL","createSequenceToSQL","createDatabaseOrSchemaToSQL","sqlSecurity","sql_security","withClause","withOptions","with_options","withOpt","createViewToSQL","domain","definitionType","constraintDefinitionToSQL","createDomainToSQL","createTypeToSQL","attribute","defaultRole","default_role","lockOption","passwordOptions","password_options","requireOption","resourceOptions","resource_options","userAuthOptions","userAuthOption","userInfo","auth_option","grantUserOrRoleToSQL","auth_plugin","resourceOption","passwordOption","createUserToSQL","deallocate","delete","exec","parameters","nameWithArgs","explain","label","query","stmts","update","if","boolExpr","boolean_expr","elseExpr","else_expr","elseifExpr","elseif_expr","ifExpr","if_expr","go","semicolons","astToSQL","elseif","then","semicolon","insert","drop","commonCmdToSQL","truncate","declare","dec","at","constant","datatype","not_null","declareInfo","columnDataType","use","rename","renameInfo","storeProcessCall","desc","setItems","lockUnlockToSQL","unlock","show","grant","grantAndRevokeToSQL","revoke","proc","returnToSQL","raise","level","exprInfo","option","transaction","modes","fun","_stmt","_parentheses","nextFun","unionKeyword","astInfo","supportedTypes","checkSupported","includes","toSQL","goToSQL","go_next","sqlItem","_step2","tableStmt","_iterator2","_loop","lockType","tableInfoTemp","lockMode","lock_mode","nowait","lockInfo","pgLock","grant_option_for","objects","to_from","user_or_roles","objStr","priv","privSQL","object_type","priv_level","privLevel","constraintDefinition","referenceDefinition","forColumn","withValues","with_values","constraintSQL","constraintTypeStr","columnReferenceDefinitionToSQL","windowFrameExprToSQL","windowFrameExpr","asWindowSpecToSQL","asWindowSpec","windowSpec","window_specification","windowFrame","window_frame_clause","windowSpecificationToSQL","namedWindowExprToSQL","namedWindowExpr","as_window_specification","overToSQL","onUpdate","arrayDimensionToSymbol","array","_target$array","dimension","castToSQL","targets","expression","outParentheses","columnOffsetToSQL","angleBrackets","angle_brackets","dataTypeSuffix","targetExpr","symbolChar","targetResult","arrayDimension","array_index","args_parentheses","withinGroup","within_group","overStr","withinGroupStr","withinGroupToSQL","suffixStr","funcName","separator","argsList","arrayIndexToSQL","indexSQL","forValueItemToSQL","modulus","remainder","forValues","for_values","begin","parameter","alterExprPartition","ifExists","oldColumn","alterArray","trim","arg","defaultSQL","arrayStructValueToSQL","expr_list","arrayPath","array_path","brackets","arrayExprListToSQL","arrayStructExprToSQL","exprToSQLConvertFn","aggr_func","within_group_orderby","fnName","delimiter","filterStr","any_value","window_func","_expr$consider_nulls","consider_nulls","_expr$separator","constructArgsList","assign","binary_expr","case","conditions","exprItem","cast","column_ref","column_definition","extract","castType","cast_type","source","flatten","argsStr","flattenArgToSQL","fulltext_search","against","matchExpr","againstExpr","asToSQL","function","lambda","interval","json","json_object_arg","argExpr","json_visitor","func_arg","_argExpr$value","struct","tablefunc","unnest","namedWindowExprInfo","_expr$prefix","varName","exprOrigin","Reflect","deleteProperty","_i","_Object$keys","expressions","upperPrefix","nulls","_stmt$collate","offsetExpr","offsetItem","arrayIndexList","arrayIndex","arrayIndexStr","notation","_expr$notations","notations","_expr$subFields","subFields","arrayExpr","reference","onAction","onRef","columnOption","columnOpt","characterSet","defaultOpt","generated","uniqueKey","primaryKey","columnFormat","nullSQL","storage_type","generatedExpressionToSQL","columnOrder","opclass","columnExpr","columnDefinition","asStr","columnsStr","has","getDual","joinSymbol","unary_expr","unarExpr","space","map_object","mapExpr","exprStr","_defineProperty","Parser","_createClass","_classCallCheck","arguments","undefined","_opt$database","typeCase","parsers","whiteList","_opt$type","checkFun","authorityList","hasAuthority","denyInfo","authority","hasCorrespondingAuthority","whiteAuthority","regex","RegExp","self","NodeSQLParser","util","global"],"mappings":"6DACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,+BC1ErD,IAAIC,EAAS,EAAQ,GAQrB,SAASC,EAAgBC,EAASC,EAAUC,EAAOC,GACjDC,KAAKJ,QAAWA,EAChBI,KAAKH,SAAWA,EAChBG,KAAKF,MAAWA,EAChBE,KAAKD,SAAWA,EAChBC,KAAK/B,KAAW,cAEuB,mBAA5BgC,MAAMC,mBACfD,MAAMC,kBAAkBF,KAAML,IAdlC,SAAsBQ,EAAOC,GAC3B,SAASC,IAASL,KAAKM,YAAcH,EACrCE,EAAKf,UAAYc,EAAOd,UACxBa,EAAMb,UAAY,IAAIe,EAexBE,CAAaZ,EAAiBM,OAE9BN,EAAgBa,aAAe,SAASX,EAAUC,GAChD,IAAIW,EAA2B,CACzBC,QAAS,SAASC,GAChB,MAAO,IAAOC,EAAcD,EAAYE,MAAQ,KAGlD,MAAS,SAASF,GAChB,IACIjD,EADAoD,EAAe,GAGnB,IAAKpD,EAAI,EAAGA,EAAIiD,EAAYI,MAAMC,OAAQtD,IACxCoD,GAAgBH,EAAYI,MAAMrD,aAAcuD,MAC5CC,EAAYP,EAAYI,MAAMrD,GAAG,IAAM,IAAMwD,EAAYP,EAAYI,MAAMrD,GAAG,IAC9EwD,EAAYP,EAAYI,MAAMrD,IAGpC,MAAO,KAAOiD,EAAYQ,SAAW,IAAM,IAAML,EAAe,KAGlEM,IAAK,SAAST,GACZ,MAAO,iBAGTU,IAAK,SAASV,GACZ,MAAO,gBAGTW,MAAO,SAASX,GACd,OAAOA,EAAYY,cAI3B,SAASC,EAAIC,GACX,OAAOA,EAAGC,WAAW,GAAGC,SAAS,IAAIC,cAGvC,SAAShB,EAAcnB,GACrB,OAAOA,EACJoC,QAAQ,MAAO,QACfA,QAAQ,KAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,gBAAyB,SAASJ,GAAM,MAAO,OAASD,EAAIC,MACpEI,QAAQ,yBAAyB,SAASJ,GAAM,MAAO,MAASD,EAAIC,MAGzE,SAASP,EAAYzB,GACnB,OAAOA,EACJoC,QAAQ,MAAO,QACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,KAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACfA,QAAQ,gBAAyB,SAASJ,GAAM,MAAO,OAASD,EAAIC,MACpEI,QAAQ,yBAAyB,SAASJ,GAAM,MAAO,MAASD,EAAIC,MA6CzE,MAAO,YAtCP,SAA0B5B,GACxB,IACInC,EAAGoE,EANoBnB,EAKvBoB,EAAe,IAAId,MAAMpB,EAASmB,QAGtC,IAAKtD,EAAI,EAAGA,EAAImC,EAASmB,OAAQtD,IAC/BqE,EAAarE,IATYiD,EASad,EAASnC,GAR1C+C,EAAyBE,EAAYqB,MAAMrB,IAalD,GAFAoB,EAAaE,OAETF,EAAaf,OAAS,EAAG,CAC3B,IAAKtD,EAAI,EAAGoE,EAAI,EAAGpE,EAAIqE,EAAaf,OAAQtD,IACtCqE,EAAarE,EAAI,KAAOqE,EAAarE,KACvCqE,EAAaD,GAAKC,EAAarE,GAC/BoE,KAGJC,EAAaf,OAASc,EAGxB,OAAQC,EAAaf,QACnB,KAAK,EACH,OAAOe,EAAa,GAEtB,KAAK,EACH,OAAOA,EAAa,GAAK,OAASA,EAAa,GAEjD,QACE,OAAOA,EAAaG,MAAM,GAAI,GAAGC,KAAK,MAClC,QACAJ,EAAaA,EAAaf,OAAS,IAQxBoB,CAAiBvC,GAAY,QAJlD,SAAuBC,GACrB,OAAOA,EAAQ,IAAOc,EAAcd,GAAS,IAAO,eAGMuC,CAAcvC,GAAS,WA6mzBrFrC,EAAOD,QAAU,CACf8E,YAAa3C,EACb4C,MA5mzBF,SAAmBC,EAAOC,GACxBA,OAAsB,IAAZA,EAAqBA,EAAU,GAEzC,IAw9EIC,EAx9EAC,EAAa,GAEbC,EAAyB,CAAEC,MAAOC,IAClCC,EAAyBD,GAqCzBE,EAAS,SAASC,EAAMC,GACpB,OAAOC,GAAWF,EAAMC,EAAM,IAGlCE,EAASC,GAAuB,MAAM,GAItCC,EAASD,GAAuB,MAAM,GAEtCE,EAAUF,GAAuB,UAAU,GAK3CG,EAAUH,GAAuB,WAAW,GAE5CI,EAAUJ,GAAuB,UAAU,GAE3CK,EAAUL,GAAuB,SAAS,GAE1CM,EAAUN,GAAuB,cAAc,GAE/CO,EAAUP,GAAuB,MAAM,GAsBvCQ,EAAUR,GAAuB,MAAM,GAOvCS,EAAU,SAASb,EAAMC,GACrB,OAAOC,GAAWF,EAAMC,IAG5Ba,EAAUV,GAAuB,SAAS,GAE1CW,EAAUX,GAAuB,OAAO,GAUxCY,EAAUZ,GAAuB,OAAO,GAExCa,EAAUb,GAAuB,QAAQ,GAEzCc,EAAUd,GAAuB,OAAO,GAExCe,EAAUf,GAAuB,aAAa,GA4D9CgB,GAFUhB,GAAuB,YAAY,GAEnCA,GAAuB,SAAS,IAE1CiB,EAAUjB,GAAuB,SAAS,GAoE1CkB,GAlEUlB,GAAuB,UAAU,GAkEjC,SAASJ,EAAMC,GACnB,OAAOC,GAAWF,EAAMC,KAU9BsB,EAAUnB,GAAuB,kBAAkB,GAEnDoB,EAAUpB,GAAuB,iBAAiB,GAKlDqB,EAAUrB,GAAuB,UAAU,GAE3CsB,EAAUtB,GAAuB,OAAO,GAOxCuB,EAAUvB,GAAuB,WAAW,GA8D5CwB,EAAUxB,GAAuB,iBAAiB,GAElDyB,EAAUzB,GAAuB,SAAS,GAE1C0B,EAAU1B,GAAuB,WAAW,GAE5C2B,EAAU3B,GAAuB,WAAW,GAQ5C4B,EAAU5B,GAAuB,WAAW,GAE5C6B,EAAW7B,GAAuB,QAAQ,GAE1C8B,EAAW9B,GAAuB,UAAU,GAgH5C+B,EAAW/B,GAAuB,SAAS,GAI3CgC,EAAWhC,GAAuB,SAAS,GAwC3CiC,EAAWjC,GAAuB,WAAW,GAmE7CkC,EAAWlC,GAAuB,UAAU,GAa5CmC,EAAWnC,GAAuB,aAAa,GAE/CoC,EAAWpC,GAAuB,WAAW,GAE7CqC,EAAWrC,GAAuB,WAAW,GAE7CsC,EAAWtC,GAAuB,QAAQ,GAW1CuC,EAAWvC,GAAuB,QAAQ,GAE1CwC,EAAWxC,GAAuB,QAAQ,GAE1CyC,EAAWzC,GAAuB,UAAU,GAE5C0C,EAAW1C,GAAuB,aAAa,GA2D/C2C,EAAW3C,GAAuB,OAAO,GAEzC4C,EAAW5C,GAAuB,eAAe,GAYjD6C,GAAW7C,GAAuB,eAAe,GAajD8C,GAAW9C,GAAuB,YAAY,GAc9C+C,GAAW/C,GAAuB,cAAc,GAEhDgD,GAAWhD,GAAuB,iBAAiB,GAEnDiD,GAAWjD,GAAuB,gBAAgB,GA8BlDkD,GAAWlD,GAAuB,YAAY,GAE9CmD,GAAWnD,GAAuB,WAAW,GAE7CoD,GAAWpD,GAAuB,YAAY,GAE9CqD,GAAWrD,GAAuB,aAAa,GAE/CsD,GAAWtD,GAAuB,eAAe,GAQjDuD,GAAWvD,GAAuB,aAAa,GAE/CwD,GAAWxD,GAAuB,OAAO,GAKzCyD,GAAWzD,GAAuB,WAAW,GAE7C0D,GAAW1D,GAAuB,WAAW,GAS7C2D,GAAW3D,GAAuB,kBAAkB,GAEpD4D,GAAW5D,GAAuB,kBAAkB,GAEpD6D,GAAW7D,GAAuB,YAAY,GAE9C8D,GAAW9D,GAAuB,YAAY,GAE9C+D,GAAW/D,GAAuB,sBAAsB,GASxDgE,GAAWhE,GAAuB,cAAc,GAShDiE,GAAWjE,GAAuB,eAAe,GAEjDkE,GAAWlE,GAAuB,KAAK,GAEvCmE,GAAWnE,GAAuB,QAAQ,GAE1CoE,GAAWpE,GAAuB,OAAO,GASzCqE,GAAWrE,GAAuB,UAAU,GAS5CsE,GAAWtE,GAAuB,WAAW,GAE7CuE,GAAWvE,GAAuB,SAAS,GAO3CwE,GAAWxE,GAAuB,UAAU,GAwC5CyE,GAAWzE,GAAuB,QAAQ,GAQ1C0E,GAAW1E,GAAuB,gBAAgB,GAElD2E,GAAW3E,GAAuB,SAAS,GAc3C4E,GAAW,SAAShF,EAAMC,GACtB,OAAOC,GAAWF,EAAMC,IAwB5BgF,GAAW7E,GAAuB,UAAU,GAE5C8E,GAAW9E,GAAuB,UAAU,GAE5C+E,GAAW/E,GAAuB,QAAQ,GAa1CgF,GAAWhF,GAAuB,UAAU,GAE5CiF,GAAWjF,GAAuB,UAAU,GAgB5CkF,GAAWlF,GAAuB,aAAa,GAe/CmF,GAAWnF,GAAuB,UAAU,GAiC5CoF,GAAWpF,GAAuB,KAAK,GAEvCqF,GAAWrF,GAAuB,KAAK,GA8EvCsF,GAAWtF,GAAuB,SAAS,GAE3CuF,GAAWvF,GAAuB,QAAQ,GAsB1CwF,GAAWxF,GAAuB,QAAQ,GAE1CyF,GAAWzF,GAAuB,UAAU,GAQ5C0F,GAAW1F,GAAuB,WAAW,GAE7C2F,GAAW3F,GAAuB,aAAa,GAO/C4F,GAAW,SAAShG,EAAMC,GAQpB,OAPAA,EAAKgG,QAAQjG,GACbC,EAAKiG,QAAQC,IACX,MAAM,MAAEC,EAAK,GAAEC,GAAOF,EACtBG,GAAWF,GAASA,EAChBC,IAAIC,GAAWD,GAAMD,GA67wBnC,SAA2BG,GACzB,MAAMC,EAAUC,GAAqBF,GACrCA,EAAWG,QACXF,EAAQN,QAAQS,GAAOJ,EAAWK,IAAID,IA/7wB9BE,CAAkBN,MAEbtG,GAiKb6G,GAAW1G,GAAuB,KAAK,GA2FvC2G,GAAW3G,GAAuB,aAAa,GAQ/C4G,GAAW5G,GAAuB,SAAS,GAE3C6G,GAAW7G,GAAuB,QAAQ,GAE1C8G,GAAW9G,GAAuB,UAAU,GAE5C+G,GAAW/G,GAAuB,WAAW,GAE7CgH,GAAWhH,GAAuB,YAAY,GAqG9CiH,GAAW,SAASrH,EAAMC,GACpB,OAAOqH,GAAsBtH,EAAMC,IAGzCsH,GAAWnH,GAAuB,KAAK,GAavCoH,GAAW,SAASC,GAAM,OAAOA,EAAG,GAAK,IAAMA,EAAG,IAKlDC,GAAWtH,GAAuB,MAAM,GAExCuH,GAAWvH,GAAuB,KAAK,GAEvCwH,GAAWxH,GAAuB,MAAM,GAExCyH,GAAWzH,GAAuB,MAAM,GAExC0H,GAAW1H,GAAuB,KAAK,GAEvC2H,GAAW3H,GAAuB,MAAM,GAExC4H,GAAW5H,GAAuB,MAAM,GAoBxC6H,GAAW7H,GAAuB,UAAU,GAY5C8H,GAAW9H,GAAuB,QAAQ,GAsB1C+H,GAAW/H,GAAuB,KAAK,GAEvCgI,GAAWhI,GAAuB,KAAK,GAKvCiI,GAAWjI,GAAuB,KAAK,GAEvCkI,GAAWlI,GAAuB,KAAK,GAEvCmI,GAAWnI,GAAuB,KAAK,GAEvCoI,GAAWpI,GAAuB,MAAM,GAMxCqI,GAAWrI,GAAuB,KAAK,GAYvCsI,GAAWtI,GAAuB,KAAK,GAEvCuI,GAAWvI,GAAuB,MAAM,GAExCwI,GAAWxI,GAAuB,MAAM,GAExCyI,GAAWzI,GAAuB,MAAM,GAExC0I,GAAW1I,GAAuB,OAAO,GAEzC2I,GAAW3I,GAAuB,MAAM,GAExC4I,GAAW5I,GAAuB,MAAM,GAExC6I,GAAW7I,GAAuB,MAAM,GA2BxC8I,GAAW,SAASlO,GAAQ,OAA2C,IAApCmO,GAAYnO,EAAK2D,gBAepDyK,GAAWhJ,GAAuB,KAAM,GACxCiJ,GAAW,QACXC,GAAWC,GAAqB,CAAC,MAAO,GAAM,GAO9CC,GAAW,QACXC,GAAWF,GAAqB,CAAC,MAAM,GAAM,GAQ7CG,GAAWtJ,GAAuB,KAAK,GACvCuJ,GAAW,QACXC,GAAWL,GAAqB,CAAC,MAAM,GAAM,GAW7CM,GAAW,SAASjK,EAAO9B,GAAS,OAAO8B,EAAQ9B,EAAMoB,KAAK,KAC9D4K,GAAW,aACXC,GAAWR,GAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,MAAM,GAAO,GACtES,GAAW,gBACXC,GAAWV,GAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,MAAM,GAAO,GAClFW,GAAW,iBACXC,GAAWZ,GAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,IAAK,MAAM,GAAO,GAEvFa,GAAWhK,GAAuB,KAAK,GAqJvCiK,GAAWjK,GAAuB,WAAW,GAE7CkK,GAAWlK,GAAuB,KAAK,GACvCmK,GAAW,eACXC,GAAWjB,GAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,OAAO,GAAO,GAS7EkB,GAAWrK,GAAuB,KAAK,GASvCsK,GAAWtK,GAAuB,MAAM,GAoBxCuK,GAAW,SAAS5L,EAAM6L,GACpB,MAAO,CACL7L,KAAMA,EAAK8L,cACXnP,MAAOkP,EAAG,GAAG1L,KAAK,MAG1B4L,GAAW,qBACXC,GAAWxB,GAAqB,CAAC,IAAM,KAAM,CAAC,KAAM,KAAS,MAAS,GAAM,GAE5EyB,GAAW5K,GAAuB,MAAM,GACxC6K,GAAW,UACXC,GAAW3B,GAAqB,CAAC,KAAM,OAAO,GAAO,GAsCrD4B,GAAW/K,GAAuB,KAAK,GAOvCgL,GAAW,SACXC,GAAW9B,GAAqB,CAAC,CAAC,IAAK,OAAO,GAAO,GAGrD+B,IADW/B,GAAqB,CAAC,CAAC,IAAK,KAAM,CAAC,IAAK,KAAM,CAAC,IAAK,OAAO,GAAO,GAClE,SACXgC,GAAWhC,GAAqB,CAAC,IAAK,MAAM,GAAO,GACnDiC,GAAW,SACXC,GAAWlC,GAAqB,CAAC,IAAK,MAAM,GAAO,GAGnDmC,GAAWtL,GAAuB,WAAW,GAG7CuL,GAAWvL,GAAuB,UAAU,GAG5CwL,GAAWxL,GAAuB,QAAQ,GAE1CyL,GAAWzL,GAAuB,YAAY,GAE9C0L,GAAW1L,GAAuB,QAAQ,GAE1C2L,GAAW3L,GAAuB,MAAM,GAExC4L,GAAW5L,GAAuB,SAAS,GAE3C6L,GAAW7L,GAAuB,QAAQ,GAE1C8L,GAAW9L,GAAuB,QAAQ,GAG1C+L,GAAW/L,GAAuB,OAAO,GAEzCgM,GAAWhM,GAAuB,SAAS,GAE3CiM,GAAWjM,GAAuB,UAAU,GAE5CkM,GAAWlM,GAAuB,UAAU,GAE5CmM,GAAWnM,GAAuB,UAAU,GAE5CoM,GAAWpM,GAAuB,aAAa,GAE/CqM,GAAWrM,GAAuB,QAAQ,GAE1CsM,GAAWtM,GAAuB,UAAU,GAE5CuM,GAAWvM,GAAuB,UAAU,GAE5CwM,GAAWxM,GAAuB,aAAa,GAE/CyM,GAAWzM,GAAuB,UAAU,GAE5C0M,GAAW1M,GAAuB,aAAa,GAK/C2M,IAFW3M,GAAuB,WAAW,GAElCA,GAAuB,aAAa,IAG/C4M,GAAW5M,GAAuB,QAAQ,GAE1C6M,GAAW7M,GAAuB,QAAQ,GAG1C8M,GAAW9M,GAAuB,UAAU,GAE5C+M,GAAW/M,GAAuB,MAAM,GAExCgN,GAAWhN,GAAuB,SAAS,GAG3CiN,GAAWjN,GAAuB,UAAU,GAG5CkN,GAAWlN,GAAuB,YAAY,GAG9CmN,GAAWnN,GAAuB,UAAU,GAI5CoN,GAAWpN,GAAuB,QAAQ,GAE1CqN,GAAWrN,GAAuB,SAAS,GAE3CsN,GAAWtN,GAAuB,QAAQ,GAE1CuN,GAAWvN,GAAuB,SAAS,GAE3CwN,GAAWxN,GAAuB,QAAQ,GAE1CyN,GAAWzN,GAAuB,SAAS,GAE3C0N,GAAW1N,GAAuB,UAAU,GAE5C2N,GAAW3N,GAAuB,SAAS,GAE3C4N,GAAW5N,GAAuB,SAAS,GAE3C6N,GAAW7N,GAAuB,SAAS,GAE3C8N,GAAW9N,GAAuB,MAAM,GAExC+N,GAAW/N,GAAuB,SAAS,GAE3CgO,GAAWhO,GAAuB,UAAU,GAE5CiO,GAAWjO,GAAuB,SAAS,GAE3CkO,GAAWlO,GAAuB,UAAU,GAG5CmO,GAAWnO,GAAuB,OAAO,GAGzCoO,GAAWpO,GAAuB,QAAQ,GAG1CqO,GAAWrO,GAAuB,YAAY,GAG9CsO,GAAWtO,GAAuB,OAAO,GAGzCuO,GAAWvO,GAAuB,YAAY,GAG9CwO,GAAWxO,GAAuB,WAAW,GAG7CyO,GAAWzO,GAAuB,MAAM,GAGxC0O,GAAW1O,GAAuB,MAAM,GAGxC2O,GAAW3O,GAAuB,QAAQ,GAG1C4O,GAAW5O,GAAuB,SAAS,GAG3C6O,GAAW7O,GAAuB,UAAU,GAE5C8O,GAAW9O,GAAuB,UAAU,GAI5C+O,GAAW/O,GAAuB,OAAO,GAGzCgP,GAAWhP,GAAuB,MAAM,GAGxCiP,GAAWjP,GAAuB,SAAS,GAG3CkP,GAAWlP,GAAuB,OAAO,GAGzCmP,GAAWnP,GAAuB,OAAO,GAGzCoP,GAAWpP,GAAuB,OAAO,GAGzCqP,GAAWrP,GAAuB,OAAO,GAGzCsP,GAAWtP,GAAuB,QAAQ,GAG1CuP,GAAWvP,GAAuB,QAAQ,GAE1CwP,GAAWxP,GAAuB,QAAQ,GAE1CyP,GAAWzP,GAAuB,QAAQ,GAE1C0P,GAAW1P,GAAuB,QAAQ,GAE1C2P,GAAW3P,GAAuB,QAAQ,GAG1C4P,GAAW5P,GAAuB,OAAO,GAGzC6P,GAAW7P,GAAuB,QAAQ,GAG1C8P,GAAW9P,GAAuB,WAAW,GAG7C+P,GAAW/P,GAAuB,WAAW,GAG7CgQ,GAAWhQ,GAAuB,WAAW,GAG7CiQ,GAAWjQ,GAAuB,UAAU,GAG5CkQ,GAAWlQ,GAAuB,YAAY,GAG9CmQ,GAAWnQ,GAAuB,OAAO,GAGzCoQ,GAAWpQ,GAAuB,YAAY,GAG9CqQ,GAAWrQ,GAAuB,WAAW,GAG7CsQ,GAAWtQ,GAAuB,QAAQ,GAG1CuQ,GAAWvQ,GAAuB,YAAY,GAG9CwQ,GAAWxQ,GAAuB,WAAW,GAG7CyQ,GAAWzQ,GAAuB,YAAY,GAG9C0Q,GAAW1Q,GAAuB,QAAQ,GAG1C2Q,GAAW3Q,GAAuB,cAAc,GAGhD4Q,GAAW5Q,GAAuB,YAAY,GAG9C6Q,GAAW7Q,GAAuB,UAAU,GAG5C8Q,GAAW9Q,GAAuB,QAAQ,GAG1C+Q,GAAW/Q,GAAuB,SAAS,GAG3CgR,GAAWhR,GAAuB,UAAU,GAG5CiR,GAAWjR,GAAuB,QAAQ,GAG1CkR,GAAWlR,GAAuB,QAAQ,GAG1CmR,GAAWnR,GAAuB,YAAY,GAG9CoR,GAAWpR,GAAuB,QAAQ,GAG1CqR,GAAWrR,GAAuB,aAAa,GAG/CsR,GAAWtR,GAAuB,YAAY,GAG9CuR,GAAWvR,GAAuB,QAAQ,GAG1CwR,GAAWxR,GAAuB,gBAAgB,GAMlDyR,IAHWzR,GAAuB,WAAW,GAGlCA,GAAuB,YAAY,IAG9C0R,GAAW1R,GAAuB,QAAQ,GAG1C2R,GAAW3R,GAAuB,SAAS,GAG3C4R,GAAW5R,GAAuB,OAAO,GAGzC6R,GAAW7R,GAAuB,QAAQ,GAG1C8R,GAAW9R,GAAuB,UAAU,GAG5C+R,GAAW/R,GAAuB,UAAU,GAG5CgS,GAAWhS,GAAuB,gBAAgB,GAGlDiS,GAAWjS,GAAuB,qBAAqB,GAGvDkS,GAAWlS,GAAuB,gBAAgB,GAGlDmS,GAAWnS,GAAuB,gBAAgB,GAGlDoS,GAAWpS,GAAuB,eAAe,GAGjDqS,GAAWrS,GAAuB,UAAU,GAG5CsS,GAAWtS,GAAuB,WAAW,GAI7CuS,GAAWvS,GAAuB,WAAW,GAG7CwS,GAAWxS,GAAuB,gBAAgB,GAGlDyS,GAAWzS,GAAuB,QAAQ,GAG1C0S,GAAW1S,GAAuB,KAAK,GAEvC2S,GAAW3S,GAAuB,MAAM,GAExC4S,GAAW5S,GAAuB,KAAK,GAEvC6S,GAAW7S,GAAuB,UAAU,GAE5C8S,GAAW9S,GAAuB,MAAM,GAExC+S,GAAW/S,GAAuB,QAAQ,GAE1CgT,GAAWhT,GAAuB,OAAO,GAGzCiT,GAAWjT,GAAuB,UAAU,GAG5CkT,GAAWlT,GAAuB,SAAS,GAG3CmT,GAAWnT,GAAuB,UAAU,GAI5CoT,GAAWpT,GAAuB,YAAY,GAG9CqT,GAAWrT,GAAuB,WAAW,GAK7CsT,GAAWtT,GAAuB,WAAW,GAG7CuT,GAAWvT,GAAuB,cAAc,GAGhDwT,GAAWxT,GAAuB,cAAc,GAGhDyT,GAAWzT,GAAuB,uBAAuB,GAEzD0T,GAAW1T,GAAuB,aAAa,GAE/C2T,GAAW3T,GAAuB,gBAAgB,GAElD4T,GAAW5T,GAAuB,oBAAoB,GAEtD6T,GAAW7T,GAAuB,kBAAkB,GAEpD8T,GAAW9T,GAAuB,qBAAqB,GAEvD+T,GAAW/T,GAAuB,KAAK,GAEvCgU,GAAWhU,GAAuB,KAAK,GAEvCiU,GAAWjU,GAAuB,KAAK,GAEvCkU,GAAWlU,GAAuB,KAAK,GAEvCmU,GAAWnU,GAAuB,MAAM,GAExCoU,GAAWpU,GAAuB,OAAO,GAEzCqU,GAAWrU,GAAuB,MAAM,GAExCsU,GAAWtU,GAAuB,MAAM,GAExCuU,GAAWvU,GAAuB,MAAM,GAExCwU,GAAWxU,GAAuB,MAAM,GAExCyU,GAAWzU,GAAuB,KAAK,GASvC0U,GAuLK,CAAE/V,KAAM,OAtLbgW,GAAW,aACXC,GAAWzL,GAAqB,CAAC,IAAK,KAAM,KAAM,OAAO,GAAO,GA+FhE0L,GAAW7U,GAAuB,QAAQ,GAE1C8U,GAAW9U,GAAuB,YAAY,GAE9C+U,GAAW/U,GAAuB,cAAc,GAEhDgV,GAAWhV,GAAuB,YAAY,GAG9CiV,GAAWjV,GAAuB,WAAW,GAK7CkV,GAAW,SAAS3Z,GAAK,MAAO,CAAE4Z,SAAU5Z,IAU5C6Z,GAAW,SACXC,GAAWlM,GAAqB,CAAC,CAAC,IAAK,OAAO,GAAO,GAWrDmM,GAAuB,EACvBC,GAAuB,EACvBC,GAAuB,CAAC,CAAEC,KAAM,EAAGC,OAAQ,IAC3CC,GAAuB,EACvBC,GAAuB,GACvBC,GAAuB,EAI3B,GAAI,cAAezW,EAAS,CAC1B,KAAMA,EAAQ0W,aAAavW,GACzB,MAAM,IAAI3C,MAAM,mCAAqCwC,EAAQ0W,UAAY,MAG3EpW,EAAwBH,EAAuBH,EAAQ0W,WA2BzD,SAAS9V,GAAuBxC,EAAMuY,GACpC,MAAO,CAAEpX,KAAM,UAAWnB,KAAMA,EAAMuY,WAAYA,GAGpD,SAAS5M,GAAqBzL,EAAOI,EAAUiY,GAC7C,MAAO,CAAEpX,KAAM,QAASjB,MAAOA,EAAOI,SAAUA,EAAUiY,WAAYA,GAexE,SAASC,GAAsBC,GAC7B,IAAwC9Z,EAApC+Z,EAAUV,GAAoBS,GAElC,GAAIC,EACF,OAAOA,EAGP,IADA/Z,EAAI8Z,EAAM,GACFT,GAAoBrZ,IAC1BA,IASF,IALA+Z,EAAU,CACRT,MAFFS,EAAUV,GAAoBrZ,IAEZsZ,KAChBC,OAAQQ,EAAQR,QAGXvZ,EAAI8Z,GACmB,KAAxB9W,EAAMd,WAAWlC,IACnB+Z,EAAQT,OACRS,EAAQR,OAAS,GAEjBQ,EAAQR,SAGVvZ,IAIF,OADAqZ,GAAoBS,GAAOC,EACpBA,EAIX,SAASC,GAAoBC,EAAUC,GACrC,IAAIC,EAAkBN,GAAsBI,GACxCG,EAAkBP,GAAsBK,GAE5C,MAAO,CACL7W,MAAO,CACLgX,OAAQJ,EACRX,KAAQa,EAAgBb,KACxBC,OAAQY,EAAgBZ,QAE1B1X,IAAK,CACHwY,OAAQH,EACRZ,KAAQc,EAAcd,KACtBC,OAAQa,EAAcb,SAK5B,SAASe,GAASja,GACZ8Y,GAAcK,KAEdL,GAAcK,KAChBA,GAAiBL,GACjBM,GAAsB,IAGxBA,GAAoBc,KAAKla,IAO3B,SAASma,GAAyBna,EAAUC,EAAOC,GACjD,OAAO,IAAIJ,EACTA,EAAgBa,aAAaX,EAAUC,GACvCD,EACAC,EACAC,GAIJ,SAAS+C,KACP,IAAImX,EAAQC,EAmBZ,OAjBAD,EAAKtB,GACAwB,OACMxX,IACTuX,EAAKE,QACMzX,GACTiW,GAAeqB,EAEfA,EADYC,IAOdvB,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASI,KACP,IAAIJ,EA2CJ,OAzCAA,EAwgFF,WACE,IAAIA,EAAIK,EAAQC,EAEhBN,EAAKtB,IACL2B,EAivZF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAx7fQ,YAy7fTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnL,KAEpC2L,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA38f6B,YA88f7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EApxZFS,MACM/X,GACJwX,OACMxX,IACT4X,EAAKI,QACMhY,GACJwX,OACMxX,GACTiW,GAAeqB,EA3xJDW,EA4xJAN,EA5xJG1b,EA4xJC2b,EA3xJlBM,GAAUhR,IAAI,GAAG+Q,MAAMhc,EAAEkc,OAAOlc,EAAEyK,SA2xJlCiR,EA1xJO,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE9M,cACRzE,MAAOzK,IAsxJXqb,EAAKK,IAcX3B,GAAcsB,EACdA,EAAKtX,GA5yJM,IAASiY,EAAGhc,EA+yJzB,OAAOqb,EAxiFFgB,MACMtY,IACTsX,EAyiFJ,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAExCnB,EAAKtB,IACL2B,EAovZF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA39fQ,WA49fTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlL,KAEpC0L,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA9+f6B,WAi/f7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAvxZFoB,MACM1Y,GACJwX,OACMxX,IACT4X,EAAKe,QACM3Y,GACJwX,OACMxX,IACTuY,EAAKK,QACM5Y,GACJwX,OACMxX,IACTwY,EAAKK,QACM7Y,GACJwX,OACMxX,IACTyY,EAAKK,QACM9Y,GACHwX,OACMxX,GACViW,GAAeqB,EA/zJbW,EAg0JYN,EAh0JTQ,EAg0JaP,EAh0JTmB,EAg0JaR,EAh0JV5R,EAg0Jc6R,EAh0JVQ,EAg0JcP,EAA9Bd,EA9zJL,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE9M,cACR8N,SAAUd,EACVe,KAAMH,EACNpS,GAAIA,GAAMA,EAAG,GAAGwE,cAChB6N,WAuzJQ1B,EAAKK,IAsCvB3B,GAAcsB,EACdA,EAAKtX,GAx2JM,IAASiY,EAAGE,EAAIY,EAAGpS,EAAIqS,EA22JpC,OAAO1B,EA7mFA6B,MACMnZ,IACTsX,EA+qFN,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAASW,EAEjD9B,EAAKtB,IACL2B,EAAK0B,QACMrZ,GACJwX,OACMxX,IACT4X,EAAK0B,QACMtZ,GACJwX,OACMxX,IACTuY,EAAKgB,QACMvZ,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKgB,QACMxZ,GACTiW,GAAeqB,EAt7JPW,EAu7JMN,EAv7JH9b,EAu7JO+b,EAv7JJ6B,EAu7JQlB,GAv7JHtc,EAu7JOuc,IAt7J1Bvc,EAAEuK,QAAQkT,GAAMxB,GAAUhR,IAAI,GAAG+Q,MAAMyB,EAAGvB,OAAOuB,EAAGhT,UAs7JpDiR,EAr7JC,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE9M,cACRwO,QAAS9d,EAAEsP,cACXyO,OAAQH,EACRne,KAAMW,IA+6JJqb,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAn9JM,IAASiY,EAAGpc,EAAG4d,EAAKxd,EAq9J7Bqb,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK0B,QACMrZ,GACJwX,OACMxX,IACT4X,EAAKiC,QACM7Z,GACJwX,OACMxX,IACTuY,EAAKgB,QACMvZ,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKgB,QACMxZ,GACTiW,GAAeqB,EACfK,EA59JH,SAASM,EAAGpc,EAAG4d,EAAKxd,GACzB,MAAO,CACLic,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE9M,cACRwO,QAAS9d,EAAEsP,cACXyO,OAAQH,EACRne,KAAMW,IAo9JG6d,CAASnC,EAAIC,EAAIW,EAAIC,GAC1BlB,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK0B,QACMrZ,GACJwX,OACMxX,IACT4X,EAAKmC,QACM/Z,GACJwX,OACMxX,IACTuY,EAAKyB,QACMha,GACJwX,OACMxX,IACTwY,EAAKyB,QACMja,GACJwX,OACMxX,IACTyY,EAAKT,QACMhY,GACHwX,OACMxX,IACVoZ,EA7L1B,WACE,IAAI9B,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAExBjB,EAAKtB,IACL2B,EAAKwC,QACMna,IACT2X,EAAKyC,MAEP,GAAIzC,IAAO3X,EAAY,CAoBrB,IAnBAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK4B,QACMna,IACTuY,EAAK6B,MAEH7B,IAAOvY,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAGVvC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK4B,QACMna,IACTuY,EAAK6B,MAEH7B,IAAOvY,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAGVvC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKtX,EAAOsX,EAAIJ,GAChBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA+HuB+C,MACMra,IACVoZ,EAAM,MAEJA,IAAQpZ,GACJwX,OACMxX,GACViW,GAAeqB,EACfK,EA5gKf,SAASM,EAAGpc,EAAGd,EAAGkB,EAAGqe,GAC1B,MAAO,CACLpC,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE9M,cACRwO,QAAS9d,EAAEsP,cACX7P,KAAMP,EACN2L,MAAOzK,EACP6D,QAASwa,IAmgKYC,CAAS5C,EAAIC,EAAIW,EAAIE,EAAIW,GAC9B9B,EAAKK,IAMP3B,GAAcsB,EACdA,EAAKtX,KAuCzBgW,GAAcsB,EACdA,EAAKtX,KAKX,OAAOsX,EAx2FEkD,MACMxa,IACTsX,EAsCR,WACE,IAAIA,GAEJA,EA6jDF,WACE,IAAIA,EAAIK,EAAQC,EAAgBY,EAAQC,EAASW,EAAUqB,EAE3DnD,EAAKtB,IACL2B,EAAK+C,QACM1a,GACJwX,OACMxX,IACT4X,EAAK+C,QACM3a,IACT4X,EAAKgD,MAEHhD,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GACJsZ,OACMtZ,GACJwX,OACMxX,IACTwY,EAAKqC,QACM7a,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKT,QACMhY,GACHwX,OACMxX,IACVoZ,EA0OtB,WACE,IAAI9B,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAAIuC,EAAItC,EAIxC,GAFAnB,EAAKtB,IACL2B,EAAKqD,QACMhb,EAET,GADKwX,OACMxX,EAET,IADA4X,EAAKqD,QACMjb,EAAY,CA6BrB,IA5BAka,EAAK,GACL3B,EAAKvC,IACL8E,EAAKtD,QACMxX,IACTwY,EAAK0C,QACMlb,IACT+a,EAAKvD,QACMxX,IACTyY,EAAKwC,QACMjb,EAETuY,EADAuC,EAAK,CAACA,EAAItC,EAAIuC,EAAItC,IAexBzC,GAAcuC,EACdA,EAAKvY,GAEAuY,IAAOvY,GACZka,EAAG9C,KAAKmB,GACRA,EAAKvC,IACL8E,EAAKtD,QACMxX,IACTwY,EAAK0C,QACMlb,IACT+a,EAAKvD,QACMxX,IACTyY,EAAKwC,QACMjb,EAETuY,EADAuC,EAAK,CAACA,EAAItC,EAAIuC,EAAItC,IAexBzC,GAAcuC,EACdA,EAAKvY,GAGLka,IAAOla,IACTuY,EAAKf,QACMxX,IACT8a,EAAKK,QACMnb,GACTiW,GAAeqB,EACfK,EAAK/V,EAAQgW,EAAIsC,GACjB5C,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA/UmB8D,MACMpb,GACJwX,OACMxX,IACVya,EAyvG1B,WACE,IAAInD,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAK0D,QACMrb,EAAY,CAgCrB,IA/BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACTuY,EAAK,MAEHA,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAK6C,QACMrb,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACTuY,EAAK,MAEHA,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAK6C,QACMrb,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKxW,EAAQwW,EAAIJ,GACjBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA50GuBgE,MACMtb,IACVya,EAAM,MAEJA,IAAQza,GACViW,GAAeqB,EA/jIpBW,EAgkIkBN,EAhkIf4D,EAgkImB3D,EAhkIf6B,EAgkImBjB,EAhkIXpd,EAgkImBge,EAhkIhBoC,EAgkIqBf,GAhkI3Bxe,EAgkIkBwc,IA/jIrCP,GAAUhR,IAAI,WAAWjL,EAAEkc,OAAOlc,EAAEyK,SA+jIxBiR,EA9jIX,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE,GAAG9M,cACXwO,QAAS,QACT8B,UAAWF,GAAMA,EAAG,GAAGpQ,cACvBuQ,cAAcjC,EACd/S,MAAO,CAACzK,GACR0f,mBAAoBvgB,EACpBwgB,cAAeJ,IAqjIDlE,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAuBjBgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GApnIK,IAASiY,EAAGsD,EAAI9B,EAAKxd,EAAGb,EAAGogB,EAsnInClE,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK+C,QACM1a,GACJwX,OACMxX,IACT4X,EAAK+C,QACM3a,IACT4X,EAAKgD,MAEHhD,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GACJsZ,OACMtZ,GACJwX,OACMxX,IACTwY,EAAKqC,QACM7a,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKT,QACMhY,GACHwX,OACMxX,IACVoZ,EAAMP,QACM7Y,GACJwX,OACMxX,IACVya,EAAMoB,QACM7b,GACViW,GAAeqB,EACfK,EA5oIhB,SAASM,EAAGsD,EAAI9B,EAAKxd,EAAG0K,EAAImV,GAEhC,OADG7f,GAAGic,GAAUhR,IAAI,WAAWjL,EAAEkc,OAAOlc,EAAEyK,SACnC,CACLwR,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE,GAAG9M,cACXwO,QAAS,QACT8B,UAAWF,GAAMA,EAAG,GAAGpQ,cACvBuQ,cAAejC,EACf/S,MAAO,CAACzK,GACR0K,GAAI,KACJoV,WAAYD,IAgoISE,CAAQrE,EAAIC,EAAIY,EAAIC,EAAIW,EAAKqB,GAClCnD,EAAKK,IA0BjB3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,IAIT,OAAOsX,EA5vDF2E,MACMjc,IACTsX,EAu5BJ,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAExCnB,EAAKtB,IACL2B,EAAK+C,QACM1a,GACJwX,OACMxX,IACT4X,EAAKe,QACM3Y,IACT4X,EAmkfR,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA3oiBQ,WA4oiBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStJ,KAEpC8J,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA9piB6B,WAiqiB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAtmfI4E,IAEHtE,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKsC,QACM7a,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAK2D,QACMnc,GACJwX,OACMxX,IACTyY,EApqBlB,WACE,IAAInB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAIxB,GAFAjB,EAAKtB,IACL2B,EAAKyE,QACMpc,EAAY,CAiBrB,IAhBAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK6D,QACMpc,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK6D,QACMpc,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKtX,EAAOsX,EAAIJ,GAChBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA+mBc+E,MACMrc,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EACfK,EA59GN,SAASM,EAAGqE,EAAG7C,EAAKxd,EAAGb,GAC3B,MAAMue,EAAU2C,EAAEnR,cAClB,MAAO,CACL+M,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE,GAAG9M,cACXwO,UACA+B,cAAcjC,EACd,CAACE,GAAU,CAAExB,GAAIlc,EAAE+c,OAAQA,OAAQ/c,EAAEX,MACrCqgB,mBAAoBvgB,IAk9GTmhB,CAAQ5E,EAAIC,EAAIW,EAAIC,EAAIC,GAC7BnB,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA99BAkF,MACMxc,IACTsX,EAuoCN,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAASW,EAAUqB,EAAUgC,EAAoBC,EAAoBC,EAE7GrF,EAAKtB,IACL2B,EAAK+C,QACM1a,GACJwX,OACMxX,IACT4X,EAAKgF,QACM5c,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKwB,QACM/Z,GACJwX,OACMxX,IACTwY,EAAKqC,QACM7a,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKT,QACMhY,GACHwX,OACMxX,IACVoZ,EAAMyD,QACM7c,IACVoZ,EAAM,MAEJA,IAAQpZ,GACJwX,OACMxX,IACVya,EAAMR,QACMja,GACJwX,OACMxX,IACVyc,EAAMzE,QACMhY,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACV0c,EAzNtC,WACE,IAAIpF,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKmF,QACM9c,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKsE,QACM9c,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKsE,QACM9c,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKxW,EAAQwW,EAAIJ,GACjBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA4ImCyF,MACM/c,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACV2c,EAAMK,QACMhd,IACV2c,EAAM,MAEJA,IAAQ3c,GACViW,GAAeqB,EAjtHxCW,EAktHsCN,EAltHnCsF,EAktHuCrF,EAltHnC3b,EAktHuCsc,EAltHpCkB,EAktHwCjB,EAltHnChc,EAktHuCic,EAltHhCyE,EAktHyCzC,EAltHrC0C,EAktH0CV,EAltHtCW,EAktH2CV,EAltHrCW,EAktH0CV,EAArDhF,EAjtHjC,CACHO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE,GAAG9M,cACXmS,WAAYL,GAAMA,EAAG9R,cACrBwO,QAAS1d,EAAEkP,cACXuQ,cAAejC,EACf8D,MAAO,CAAEvE,OAAQxc,EAAE2b,GAAI7c,KAAMkB,EAAEkK,OAC/B8W,MAAON,EAAG,GAAG/R,cACbzE,MAAOyW,EACPM,cAAeL,EACfC,UAssHkC/F,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KA+C7BgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GA9yHK,IAASiY,EAAGgF,EAAIhhB,EAAGwd,EAAKjd,EAAO0gB,EAAIC,EAAIC,EAAMC,EAizHzD,OAAO/F,EAryCEoG,MACM1d,IACTsX,EAyZR,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAASW,EAAUqB,EAAUgC,EAAUkB,EAAUjB,EAAUkB,EAAUjB,EAE7GrF,EAAKtB,IACL2B,EAAK+C,QACM1a,GACJwX,OACMxX,IACT4X,EAAK+C,QACM3a,IACT4X,EAAKgD,MAEHhD,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GA5hGL,YA6hGAH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAStW,IAEpC0X,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKqC,QACM7a,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKT,QACMhY,GACHwX,OACMxX,GA/iGlB,WAgjGYH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BiO,EAAMvZ,EAAMgY,OAAO7B,GAAa,GAChCA,IAAe,IAEfoD,EAAMpZ,EACkB,IAApBuW,IAAyBY,GAASrW,IAEpCsY,IAAQpZ,IArjGpB,UAsjGcH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BiO,EAAMvZ,EAAMgY,OAAO7B,GAAa,GAChCA,IAAe,IAEfoD,EAAMpZ,EACkB,IAApBuW,IAAyBY,GAASpW,IAEpCqY,IAAQpZ,IA3jGtB,eA4jGgBH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCiO,EAAMvZ,EAAMgY,OAAO7B,GAAa,IAChCA,IAAe,KAEfoD,EAAMpZ,EACkB,IAApBuW,IAAyBY,GAASnW,MAIxCoY,IAAQpZ,IACVoZ,EAAM,MAEJA,IAAQpZ,GACJwX,OACMxX,IACVya,EA2M1B,WACE,IAAInD,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKkG,QACM7d,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKuF,QACM9d,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKqF,QACM7d,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKuF,QACM9d,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKqF,QACM7d,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKxW,EAAQwW,EAAIJ,GACjBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAxRuByG,MACM/d,GACJwX,OACMxX,GA5kG1B,OA6kGoBH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BsR,EAAM5c,EAAMgY,OAAO7B,GAAa,GAChCA,IAAe,IAEfyG,EAAMzc,EACkB,IAApBuW,IAAyBY,GAASlW,IAEpCwb,IAAQzc,GACJwX,OACMxX,IACV2d,EAAM3F,QACMhY,GACJwX,OACMxX,IACV0c,EA8TtC,WACE,IAAIpF,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,GA/2GO,QAg3GRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7V,IAEpCqW,IAAO3X,GACJwX,OACMxX,GAv3GD,SAw3GJH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS5V,IAEpCqW,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GAl4GL,QAm4GAH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS3V,IAEpC+W,IAAOvY,IAx4GP,cAy4GEH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS1V,KAGtC8W,IAAOvY,GACTiW,GAAeqB,EAh5GJ2F,EAi5GEtF,EAj5GKqG,EAi5GGzF,EAArBZ,EAh5GG,CACLgC,SAFiBZ,EAi5GEnB,GA/4GN,GAAGqF,EAAG9R,iBAAiB4N,EAAE5N,gBAAkB8R,EAAG9R,cAC3D8S,KAAMD,EAAG7S,eA+4GPmM,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAr6GK,IAASid,EAAIlE,EAAGiF,EAw6G5B,OAAO1G,EAlYmC4G,MACMle,IACV0c,EAAM,MAEJA,IAAQ1c,GACJwX,OACMxX,IACV4d,EA8X1C,WACE,IAAItG,EAAYM,EAEhBN,EAAKtB,GACAmI,OACMne,GACJwX,OACMxX,IACT4X,EAAKgB,QACM5Y,GACTiW,GAAeqB,EAEfA,EAh7GO,CACLjY,KAAM,OACN+e,KA66GWxG,KAWjB5B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAxZuC+G,MACMre,IACV4d,EAAM,MAEJA,IAAQ5d,GACJwX,OACMxX,IACV2c,EA2P9C,WACE,IAAIrF,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,GAt0GO,UAu0GRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/V,IAEpCuW,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKH,QACMzX,GACJwX,OACMxX,GAl1GL,QAm1GAH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS9V,IAEpCkX,IAAOvY,GACTiW,GAAeqB,EAEfA,EADAK,EAz1GG,CACLtY,KAAM,WACNua,OAu1GejC,EAt1GfuB,KAs1GmBtB,EAr1GnB0G,OAq1GuB/F,KAGrBvC,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA7S2CiH,MACMve,GACViW,GAAeqB,EAzmGhCrb,EA0mGsCsc,EA1mGnCkB,EA0mGuCjB,EA1mGlCpd,EA0mGsCqd,EA1mGnC5b,EA0mGuCuc,EA1mGpCoF,EA0mGyC/D,EA1mGjCgE,EA0mG2Cd,EA1mGvCe,EA0mG4ChC,EA1mGxCiC,EA0mG6Cf,EA1mGzCT,EA0mG8CR,EAA/DhF,EAzmGjC,CACHtY,KAAM,SACNoc,WAHeF,EA0mGsC3D,IAvmGpC2D,EAAG,GAAGpQ,cACvByT,KAAM/hB,GAAKA,EAAEsO,cACb0T,OAAQL,EACRM,QAAS1jB,EACTsL,MAAO+X,EACPM,SAAUL,EACVhD,cAAejC,EACfuF,KAAML,EACNM,QAAS9B,EACTxD,QAAS1d,GAAKA,EAAEkP,eA+lGoBmM,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAtsGK,IAAaub,EAAItf,EAAGwd,EAAKre,EAAGyB,EAAG2hB,EAAQC,EAAIC,EAAIC,EAAIxB,EAysG/D,OAAO7F,EAjmBI4H,MACMlf,IACTsX,EAo6CV,WACE,IAAIA,EAAIK,EAAQC,EAAgBY,EAAQC,EAASW,EAAK+F,EAAK1E,EAAK2E,EAAK3C,EAAK4C,EAE1E/H,EAAKtB,IACL2B,EAAK+C,QACM1a,GACJwX,OACMxX,IACT4X,EAAKgD,QACM5a,IACT4X,EAAK+C,MAEH/C,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GACJ6Z,OACM7Z,GACJwX,OACMxX,IACTwY,EAAKqC,QACM7a,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKT,QACMhY,GACHwX,OACMxX,GACVoZ,EAAMpD,IACNmJ,EAAMnE,QACMhb,IACVya,EAAMjD,QACMxX,IACVof,EAAME,QACMtf,IACVyc,EAAMjF,QACMxX,IACVqf,EAAMlE,QACMnb,EAEVoZ,EADA+F,EAAM,CAACA,EAAK1E,EAAK2E,EAAK3C,EAAK4C,IAmBnCrJ,GAAcoD,EACdA,EAAMpZ,GAEJoZ,IAAQpZ,IACVoZ,EAAM,MAEJA,IAAQpZ,IACVmf,EAAM3H,QACMxX,IACVya,EAAM5B,QACM7Y,IACVof,EAAM5H,QACMxX,IACVyc,EAAM8C,QACMvf,GACViW,GAAeqB,EAn+HxBW,EAo+HsBN,EAp+HnB4D,EAo+HuB3D,EAp+HnB6B,EAo+HuBjB,EAp+Hfpd,EAo+HuBge,EAp+HpBtc,EAo+HyB2f,GAp+H/B+C,EAo+HsB/G,GAn+H/CgH,KAAOD,EAAE9Y,aACJ8Y,EAAE9Y,MAk+HeiR,EAj+HjB,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE,GAAG9M,cACXwO,QAAS,OACT+B,cAAejC,EACfgC,UAAWF,GAAMA,EAAG,GAAGpQ,cACvBrE,QAAS1L,GAAKA,EAAE,GAChBskB,OAAQ5iB,EACR2iB,KAAMD,IAw9HclI,EAAKK,IAkBb3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAhiIK,IAASiY,EAAGsD,EAAI9B,EAAK+F,EAAGpkB,EAAG0B,EAmiIvC,OAAOwa,EAljDMqI,IAMb,OAAOrI,EAvDIsI,MACM5f,IACTsX,EAu2FV,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,IACL2B,EA6zgBF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA9mnBQ,aA+mnBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnF,KAEpC2F,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAjonB6B,aAoonB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAh2gBFuI,MACM7f,GACJwX,OACMxX,IACT4X,EAAK0B,QACMtZ,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKiB,QACMxZ,GACTiW,GAAeqB,EAxkKHW,EAykKEN,EAzkKCsF,EAykKGrF,GAzkKC3b,EAykKGsc,IAxkKlBtc,EAAEuK,QAAQkT,GAAMxB,GAAUhR,IAAI,GAAG+Q,MAAMyB,EAAGvB,OAAOuB,EAAGhT,UAwkKxDiR,EAvkKK,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM4Y,EAAE9M,cACRwO,QAASsD,GAAMA,EAAG9R,eAAiB,QACnC7P,KAAMW,IAkkKRqb,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GA7lKM,IAASiY,EAAGgF,EAAIhhB,EAgmK7B,OAAOqb,EAh5FMwI,MACM9f,IACTsX,EAm6KZ,WACE,IAAIA,EAAIK,EAAgBY,EAExBjB,EAAKtB,IACL2B,EAAKoI,QACM/f,GACJwX,OACMxX,GACJsZ,OACMtZ,GACJwX,OACMxX,IACTuY,EA6zDV,WACE,IAAIjB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKqI,QACMhgB,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKwH,QACMhgB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKwH,QACMhgB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAK/V,EAAQ+V,EAAIJ,GACjBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA14DM2I,MACMjgB,GACTiW,GAAeqB,GAnuOHrb,EAouOEsc,GAnuOd/R,QAAQ0Z,GAAMA,EAAG1Z,QAAQ2Z,GAAMA,EAAGzZ,OAASwR,GAAUhR,IAAI,WAAWiZ,EAAGhI,OAAOgI,EAAGzZ,WAmuOjFiR,EAluOK,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,SACNqH,MAAOzK,IA8tOTqb,EAAKK,IAkBb3B,GAAcsB,EACdA,EAAKtX,GAxvOM,IAAS/D,EA2vOtB,OAAOqb,EAz8KQ8I,MACMpgB,IACTsX,EAwwLd,WACE,IAAIA,EAAIK,EAAQC,EAEhBN,EAAKtB,IACL2B,EAurYF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAz+kBQ,SA0+kBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnH,KAEpC2H,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA5/kB6B,SA+/kB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA1tYF+I,MACMrgB,GACJwX,OACMxX,IACT4X,EAAK0I,QACMtgB,GACTiW,GAAeqB,EA9/OCyB,EA+/OFnB,EAAdD,EA9/OO,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,OACN6Z,KAAMH,IA0/OVzB,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,GA3gPM,IAAS+Y,EA8gPtB,OAAOzB,EAlyLUiJ,MACMvgB,IACTsX,EA64FhB,WACE,IAAIA,EAAIK,EAAQC,EAEhBN,EAAKtB,IACL2B,EAmtZF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAxxgBQ,QAyxgBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1K,KAEpCkL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EArvZFkJ,MACMxgB,GACJwX,OACMxX,IACT4X,EAAKkB,QACM9Y,GACTiW,GAAeqB,EAjmKCjc,EAkmKFuc,EAjmKZM,GAAUhR,IAAI,QAAQ7L,WAimKxBsc,EAhmKS,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,MACN8Y,GAAI9c,IA4lKVic,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,GA9mKM,IAAS3E,EAinKtB,OAAOic,EAv6FYmJ,MACMzgB,IACTsX,EAw6FlB,WACE,IAAIA,EAAIK,EAAgBY,EAAQC,EAEhClB,EAAKtB,IACL2B,EA2tZF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA3zgBQ,UA4zgBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzK,KAEpCiL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA7vZFoJ,MACM1gB,GACJwX,OACMxX,GACJsZ,OACMtZ,GACJwX,OACMxX,IACTuY,EAAKiB,QACMxZ,GACJwX,OACMxX,IACTwY,EAuFd,WACE,IAAIlB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKgJ,QACM3gB,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKmI,QACM3gB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKmI,QACM3gB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAK/V,EAAQ+V,EAAIJ,GACjBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EApKUsJ,MACM5gB,GACTiW,GAAeqB,EA3nKJyB,EA4nKOP,GA5nKVvc,EA4nKMsc,IA3nKXtc,EAAEoC,OAAS,GAAGpC,EAAEuK,QAAQE,GAASwR,GAAUhR,IAAI,UAAUR,EAAMyR,OAAOzR,EAAMA,UA2nK/EiR,EA1nKC,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,QACNqH,MAAOzK,EACPid,KAAMH,IAqnKJzB,EAAKK,IA0BjB3B,GAAcsB,EACdA,EAAKtX,GAxpKM,IAAS/D,EAAG8c,EA2pKzB,OAAOzB,EA19FcuJ,MACM7gB,IACTsX,EAo8KpB,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,IACL2B,EAAKmJ,QACM9gB,GACJwX,OACMxX,IACT4X,EAkzcN,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA9poBQ,WA+poBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpE,KAEpC4E,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAjroB6B,WAoroB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAr1cEyJ,MACM/gB,IACT4X,EAs1cR,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAjsoBQ,YAksoBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnE,KAEpC2E,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAptoB6B,YAutoB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAz3cI0J,MACMhhB,IACT4X,EA03cV,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GArysBO,UAsysBRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzV,IAEpCiW,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAzvoB6B,UA4voB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA75cM2J,MACMjhB,IACT4X,EA85cZ,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAzwoBQ,YA0woBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlE,KAEpC0E,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA5xoB6B,YA+xoB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAj8cQ4J,MACMlhB,IACT4X,EAk8cd,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA5yoBQ,iBA6yoBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjE,KAEpCyE,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA/zoB6B,iBAk0oB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAr+cU6J,IAKTvJ,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAw0fV,WACE,IAAIjB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKyJ,QACMphB,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAK4I,QACMphB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAK4I,QACMphB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKrS,GAASqS,EAAIJ,GAClBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAr5fM+J,MACMrhB,GACTiW,GAAeqB,EAhxOH2F,EAixOErF,GAjxOEK,EAixOEM,GAhxOpBoB,QAAUsD,EAgxORtF,EA/wOG,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,MACNsa,QAASsD,EACT/D,KAAMjB,IA0wONX,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAryOM,IAASid,EAAIhF,EAwyO1B,OAAOX,EAz/KgBgK,MACMthB,IACTsX,EAutLtB,WACE,IAAIA,EAAIK,EAAgBY,EAExBjB,EAAKtB,IACL2B,EA0mVF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAp3kBQ,SAq3kBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlU,IAEpC0U,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA5oVFiK,MACMvhB,GACJwX,OACMxX,GACJwhB,OACMxhB,GACJwX,OACMxX,IACTuY,EA5FV,WACE,IAAIjB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAK8J,QACMzhB,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKiJ,QACMzhB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKiJ,QACMzhB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKrS,GAASqS,EAAIJ,GAClBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAeMoK,MACM1hB,GACTiW,GAAeqB,EAp+OHqK,EAq+OEpJ,EAAdZ,EAp+OG,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,OACNsa,QAAS,SACTiI,OAAQD,IA+9ORrK,EAAKK,IAkBb3B,GAAcsB,EACdA,EAAKtX,GAz/OM,IAAS2hB,EA4/OtB,OAAOrK,EA7vLkBuK,MACM7hB,IACTsX,EAw/KxB,WACE,IAAIA,EAAIK,EAERL,EAAKtB,IACL2B,EAkyVF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAv7hBQ,WAw7hBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3J,KAEpCmK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAp0VFwK,MACM9hB,GACJwX,OACMxX,GACJwhB,OACMxhB,GACTiW,GAAeqB,EACfK,EAzyOO,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,SACNsa,QAAS,WAqyObrC,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAlhLoByK,MACM/hB,IACTsX,EAyxL1B,WACE,IAAIA,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAAQC,EAASW,EAEjD9B,EAAKtB,IACL2B,EAAKqK,QACMhiB,GACJwX,OACMxX,GA9gPA,WA+gPLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS5R,KAEpCqS,IAAO5X,IAphPF,WAqhPHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS3R,MAGtCoS,IAAO5X,IACTka,EAAK1C,QACMxX,GA7hPJ,SA8hPDH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS1R,KAEpC8S,IAAOvY,GACTiW,GAAeqB,EApiPHrb,EAqiPE2b,EAAdD,EApiPG,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,OACNif,OAAQ,OACR3E,QAAS1d,EAAEkP,gBA+hPXmM,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAzjPM,IAAS/D,EA2jPlBqb,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKqK,QACMhiB,GACJwX,OACMxX,GArjPF,WAsjPHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASzR,KAEpCkS,IAAO5X,IACTka,EAAK1C,QACMxX,GA7jPN,WA8jPCH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASxR,KAEpC4S,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKyJ,QACMjiB,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKyJ,QACMliB,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,IACVoZ,EAAM+I,QACMniB,IACVoZ,EAAM,MAEJA,IAAQpZ,GACViW,GAAeqB,EAzlPjB8K,EA0lPgB5J,EA1lPXJ,EA0lPeK,EA1lPT4J,EA0lPajJ,EAAtBzB,EAzlPX,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,OACNif,OAAQ,SACR3E,QAAS,SACT2I,GAAIF,EACJhK,OACAiK,UAilPc/K,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKqK,QACMhiB,GACJwX,OACMxX,GACT4X,EAAK5B,GAz0PA,cA00PDnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B+O,EAAKra,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAASlT,KAEpCiW,IAAOla,IACTuY,EAAKf,QACMxX,GAj1PR,QAk1PGH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B2P,EAAKjb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASjT,KAEpC4W,IAAO9a,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,IAGd9E,GAAc4B,EACdA,EAAK5X,KAOTgW,GAAc4B,EACdA,EAAK5X,GAEH4X,IAAO5X,IAjqPN,cAkqPCH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASvR,MAGtCgS,IAAO5X,IACTka,EAAK1C,QACMxX,IACTuY,EAAKgK,QACMviB,IACTuY,EAAKyE,MAEHzE,IAAOvY,IACTuY,EAAK,MAEHA,IAAOvY,GACTiW,GAAeqB,EACfK,EAprPD,SAAS2E,EAAGvD,GACnB,IAAIY,EAAUrb,MAAMkkB,QAAQlG,IAAMA,GAAK,CAACA,GACxC,MAAO,CACLpE,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,OACNif,OAAQ3E,EAAQ,IAAMA,EAAQ,GAAGxO,cACjCwO,QAASA,EAAQ,GAAGxO,cACpB+N,KAAMH,IA2qPG0J,CAAS7K,EAAIW,GAClBjB,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAQR,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,IACL2B,EAAKqK,QACMhiB,GACJwX,OACMxX,GA7sPA,WA8sPLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAStR,KAEpC+R,IAAO5X,GACJwX,OACMxX,IACTuY,EAgCV,WACE,IAAIjB,EAAIK,EAAQC,EAAQW,EAAIuC,EAAItC,EAAIuC,EAEpCzD,EAAKtB,GA/lRO,QAgmRRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7V,IAEpCqW,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKkB,QACM9Y,GACJwX,OACMxX,GACTuY,EAAKvC,IACL8E,EAAK4H,QACM1iB,IACTwY,EAAKhB,QACMxX,IACT+a,EAAKjC,QACM9Y,EAETuY,EADAuC,EAAK,CAACA,EAAItC,EAAIuC,IAWlB/E,GAAcuC,EACdA,EAAKvY,GAEHuY,IAAOvY,IACTuY,EAAK,MAEHA,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAwCd,WACE,IAAIlB,EAAYM,EAEhBN,EAAKtB,GACA2M,OACM3iB,GACJwX,OACMxX,IACT4X,EAqBN,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKmB,QACM9Y,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKM,QACM9Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKM,QACM9Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKrS,GAASqS,EAAIJ,GAClBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAlGEsL,MACM5iB,GACTiW,GAAeqB,EAEfA,EADcM,IAWlB5B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAlEUuL,MACM7iB,IACTwY,EAAK,MAEHA,IAAOxY,GACTiW,GAAeqB,EA7xPDwL,EA8xPQtK,EAAtBb,EA7xPD,CACLoL,KA4xPoBnL,EA3xPpBoL,MAHiBC,EA8xPO1K,IA3xPb0K,EAAE,GACbC,UAAWJ,GA2xPLxL,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GA1zPM,IAAYijB,EAAGH,EA6zP5B,OAAOxL,EAlHM6L,MACMnjB,IACTuY,EAAK,MAEHA,IAAOvY,GACTiW,GAAeqB,EA3tPH8L,EA4tPE7K,EAAdZ,EA3tPG,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,OACNsa,QAAS,SACT0J,IAAKD,IAstPL9L,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAhvPM,IAASojB,EAmvPtB,OAAO9L,EAvDIgM,MA3tPE,IAASlB,EAAKhK,EAAMiK,EAguPjC,OAAO/K,EAvgMsBiM,MACMvjB,IACTsX,EA4vM5B,WACE,IAAIA,EAAIK,EAAQC,EAEhBN,EAAKtB,IACL2B,EAAK6L,QACMxjB,IACT2X,EAugWJ,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAh3jBQ,aAi3jBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpI,KAEpC4I,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAn4jB6B,aAs4jB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA1iWAmM,IAEH9L,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKkB,QACM9Y,GACTiW,GAAeqB,EAh7PCrb,EAi7PF2b,EAAdD,EAh7PO,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,OACNqH,MAAOzK,IA46PXqb,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,GA77PM,IAAS/D,EAg8PtB,OAAOqb,EAzxMwBoM,IAexBpM,EAuBT,SAASqM,KACP,IAAIrM,EAyBJ,OAvBAA,EAAKsM,QACM5jB,IACTsX,EA+pRJ,WACE,IAAIA,EAAIK,EAAQC,EAAgBY,EAAQC,EAASW,EAAUqB,EAAUgC,EAErEnF,EAAKtB,IACL2B,EAAKkM,QACM7jB,GACJwX,OACMxX,IACT4X,EAAK4B,QACMxZ,GACJwX,OACMxX,GACJ8gB,OACM9gB,GACJwX,OACMxX,IACTwY,EAAKsL,QACM9jB,GACJwX,OACMxX,IACTyY,EAAKuE,QACMhd,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,IACVoZ,EAAM2K,QACM/jB,IACVoZ,EAAM,MAEJA,IAAQpZ,GACJwX,OACMxX,IACVya,EAAMuJ,QACMhkB,IACVya,EAAM,MAEJA,IAAQza,GACJwX,OACMxX,IACVyc,EAAM0F,QACMniB,IACVyc,EAAM,MAEJA,IAAQzc,GACViW,GAAeqB,EACfK,EAjrUjB,SAAS1b,EAAGjB,EAAGipB,EAAGpoB,EAAGqoB,EAAIC,GAC9B,MAAMC,EAAQ,GAkBd,OAVInoB,GAAGA,EAAEuK,QAPYC,IACnB,MAAM,OAAE4d,EAAM,GAAElM,EAAE,OAAEa,EAAM,GAAErS,EAAE,MAAED,EAAK,KAAElH,GAASiH,EAC1C6d,EAAS9kB,EAAO,SAAW,SAC3B+kB,EAAW,CAACF,EAAQlM,EAAIa,GAAQwL,OAAOC,SAASjlB,KAAK,MAAQ,KAC/D2Y,IAAIiM,EAAM1d,GAAS6d,GACnB7d,GAAOwR,GAAUhR,IAAI,GAAGod,MAAWC,MAAa7d,OAGnD1L,GACDA,EAAEwL,QAAQS,IACR,GAAIA,EAAIP,MAAO,CACb,MAAMA,EAAQge,GAAgBzd,EAAIP,OAClCwR,GAAUhR,IAAI,WAAWkd,EAAM1d,IAAU,SAASA,KAEpDG,GAAWK,IAAI,WAAWD,EAAIP,UAAUO,EAAImP,YAGzC,CACL8B,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,SACNqH,MAAOzK,EACP0oB,IAAK3pB,EACLqiB,MAAO4G,EACPW,UAAW/oB,EACXgpB,QAASX,EACT7B,MAAO8B,IAopUgBW,CAASlN,EAAIY,EAAIC,EAAIW,EAAKqB,EAAKgC,GACpCnF,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KA+BrBgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA7wRAyN,MACM/kB,IACTsX,EAg0SN,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAiBY,EAAoBqD,EAAUkB,EAAUjB,EAEzFpF,EAAKtB,IACL2B,EAAKqN,QACMhlB,GACJwX,OACMxX,IACT4X,EAAKqN,QACMjlB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKP,QACMhY,GACJwX,OACMxX,IACTwY,EAAK0M,QACMllB,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,GACJgb,OACMhb,GACHwX,OACMxX,IACVoZ,EAAMkG,QACMtf,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACVyc,EAAM0I,QACMnlB,GACJwX,OACMxX,IACV2d,EAAMyH,QACMplB,IACV2d,EAAM,MAEJA,IAAQ3d,GACJwX,OACMxX,IACV0c,EAAMqH,QACM/jB,IACV0c,EAAM,MAEJA,IAAQ1c,GACViW,GAAeqB,EACfK,EAxwVzB,SAAS0N,EAAIppB,EAAGY,EAAGzB,EAAGokB,EAAG8F,EAAKzpB,GAKnC,GAJII,IACFic,GAAUhR,IAAI,WAAWjL,EAAEkc,OAAOlc,EAAEyK,SACpCzK,EAAE0K,GAAK,MAELvL,EAAG,CACL,IAAIsL,EAAQzK,GAAKA,EAAEyK,OAAS,KACzBpI,MAAMkkB,QAAQhD,IACfA,EAAEhZ,QAAQ,CAAC+e,EAAKC,KACd,GAAGD,EAAIvpB,MAAMqC,QAAUjD,EAAEiD,OACvB,MAAM,IAAIf,MAAM,yDAAwDkoB,EAAI,MAIlFpqB,EAAEoL,QAAQpL,GAAKyL,GAAWK,IAAI,WAAWR,MAAUtL,MAErD,MAAO,CACL8c,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,IACAgN,EACH3e,MAAO,CAACzK,GACR6K,QAAS1L,EACTqqB,OAAQjG,EACRkG,UAAW7oB,EACX8oB,oBAAqBL,EACrBV,UAAW/oB,IA8uVoB+pB,CAASjO,EAAIY,EAAIC,EAAIY,EAAKqD,EAAKkB,EAAKjB,GACzCpF,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAuCzBgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAt8SEuO,MACM7lB,IACTsX,EAu8SR,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAASW,EAAUqB,EAE3DnD,EAAKtB,IACL2B,EAAKqN,QACMhlB,GACJwX,OACMxX,IACT4X,EA4jNN,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA/0iBQ,WAg1iBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3P,KAEpCmQ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA9lNEwO,MACM9lB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK0M,QACMjlB,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKR,QACMhY,GACJwX,OACMxX,IACTyY,EAAKyM,QACMllB,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,IACVoZ,EAAM+L,QACMnlB,GACJwX,OACMxX,IACVya,EAAM2K,QACMplB,IACVya,EAAM,MAEJA,IAAQza,GACViW,GAAeqB,EACfK,EAv2Vb,SAAS0N,EAAIU,EAAIC,EAAI/pB,EAAGY,EAAG2iB,EAAG8F,GAC/BrpB,IACFic,GAAUhR,IAAI,WAAWjL,EAAEkc,OAAOlc,EAAEyK,SACpCG,GAAWK,IAAI,WAAWjL,EAAEyK,eAC5BzK,EAAE0K,GAAK,MAET,MAAMiT,EAAS,CAACmM,EAAIC,GAAIxB,OAAOhF,GAAKA,GAAGyG,IAAIzG,GAAKA,EAAE,IAAMA,EAAE,GAAGrU,eAAe3L,KAAK,KACjF,MAAO,CACL0Y,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,IACAgN,EACH3e,MAAO,CAACzK,GACR6K,QAAS,KACT2e,OAAQjG,EACRkG,UAAW7oB,EACX+c,SACA+L,oBAAqBL,IAs1VFY,CAASvO,EAAIC,EAAIW,EAAIC,EAAIC,EAAIW,EAAKqB,GACvCnD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAziTI6O,MACMnmB,IACTsX,EA0iTV,WACE,IAAIA,EAAIK,EAAgBY,EAAQC,EAAiBY,EAAUqB,EAE3DnD,EAAKtB,IACL2B,EAAKqN,QACMhlB,GACJwX,OACMxX,GACJilB,OACMjlB,GACJwX,OACMxX,IACTuY,EAAKP,QACMhY,GACJwX,OACMxX,IACTwY,EAAK0M,QACMllB,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,GACJ8gB,OACM9gB,GACHwX,OACMxX,IACVoZ,EAAM0K,QACM9jB,GACJwX,OACMxX,IACVya,EAAM2K,QACMplB,IACVya,EAAM,MAEJA,IAAQza,GACViW,GAAeqB,EAh7VnB+N,EAi7VkB1N,EAj7VX9a,EAi7VmB2b,EAj7VhBxd,EAi7VoBoe,EAj7VjBkM,EAi7VsB7K,GAj7V/Bxe,EAi7VkBsc,KA/6VlCL,GAAUhR,IAAI,WAAWjL,EAAEkc,OAAOlc,EAAEyK,SACpCG,GAAWK,IAAI,WAAWjL,EAAEyK,eAC5BzK,EAAE0K,GAAK,MA66VSgR,EA36VX,CACLO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,IACAgN,EACH3e,MAAO,CAACzK,GACR6K,QAAS,KACT4e,UAAW7oB,EACX8nB,IAAK3pB,EACL2qB,oBAAqBL,IAm6VPhO,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAuBjBgW,GAAcsB,EACdA,EAAKtX,KAuBjBgW,GAAcsB,EACdA,EAAKtX,GAr+VM,IAASqlB,EAAIppB,EAAGY,EAAG7B,EAAGsqB,EAw+VnC,OAAOhO,EAtoTM8O,MACMpmB,IACTsX,EAwwRZ,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAASW,EAAUqB,EAE3DnD,EAAKtB,IACL2B,EAAK0O,QACMrmB,GACJwX,OACMxX,IACT4X,EAAK4B,QACMxZ,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK2J,QACMliB,GACJwX,OACMxX,IACTwY,EAAKwE,QACMhd,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKsL,QACM/jB,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,IACVoZ,EAAM4K,QACMhkB,IACVoZ,EAAM,MAEJA,IAAQpZ,GACJwX,OACMxX,IACVya,EAAM0H,QACMniB,IACVya,EAAM,MAEJA,IAAQza,GACViW,GAAeqB,EACfK,EAhwUb,SAAS1b,EAAGmnB,EAAGa,EAAGpoB,EAAGqoB,EAAIlpB,GAO9B,GANEooB,GAAGA,EAAE5c,QAAQC,IACb,MAAM,GAAE0R,EAAE,GAAExR,EAAE,MAAED,EAAK,KAAElH,GAASiH,EAC1B6d,EAAS9kB,EAAO,SAAW,SAC7BkH,GAAOwR,GAAUhR,IAAI,GAAGod,MAAWnM,MAAOzR,KACzClH,GAAMqH,GAAWK,IAAI,WAAWR,aAE7B,OAANzK,GAA2B,IAAbmnB,EAAE/kB,OAAc,CAChC,MAAMoI,EAAY2c,EAAE,GACpBnnB,EAAI,CAAC,CACHkc,GAAI1R,EAAU0R,GACdzR,MAAOD,EAAUC,MACjBC,GAAIF,EAAUE,GACd2f,UAAU,IAGd,MAAO,CACLpO,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK,CACHhZ,KAAM,SACNqH,MAAOzK,EACPmc,KAAMgL,EACN/F,MAAO4G,EACPW,UAAW/oB,EACXgpB,QAASX,EACT7B,MAAOrnB,IAsuUYurB,CAAS3O,EAAIW,EAAIC,EAAIC,EAAIW,EAAKqB,GACnCnD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA72RQkP,MACMxmB,IACTsX,EAAKI,QACM1X,IACTsX,EAqrqBhB,WACE,IAAIA,EAAIK,EAERL,EAAK,GACLK,EAAK8O,KACL,KAAO9O,IAAO3X,GACZsX,EAAGF,KAAKO,GACRA,EAAK8O,KAGP,OAAOnP,EA/rqBYoP,IASZpP,EAGT,SAASG,KACP,IAAIH,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKgM,QACM3jB,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKoO,QACM3mB,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKmL,QACM3jB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKoO,QACM3mB,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKmL,QACM3jB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA1wFO,SAASrX,EAAMC,GAClB,MAAMqmB,EAAUtmB,GAAQA,EAAK+X,KAAO/X,EAC9BumB,EAAMtmB,GAAQA,EAAKlC,QAAUkC,EAAK,GAAGlC,QAAU,EAAI,CAACuoB,GAAWA,EAChErmB,IAAMA,EAAO,IAClB,IAAK,IAAIxF,EAAI,EAAGA,EAAIwF,EAAKlC,OAAQtD,IAC3BwF,EAAKxF,GAAG,IAA4B,IAAtBwF,EAAKxF,GAAG,GAAGsD,QAC7BwoB,EAAIzP,KAAK7W,EAAKxF,GAAG,IAAMwF,EAAKxF,GAAG,GAAGsd,KAAO9X,EAAKxF,GAAG,IAEnD,MAAO,CACLmd,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAKwO,GA+vFNC,CAAOnP,EAAIJ,KAGhBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASyP,KACP,IAAIzP,EAAYM,EA3wFI9a,EA0yFpB,OA7BAwa,EAAKtB,GA+ohBP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAv6iBQ,UAw6iBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShJ,KAEpCwJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAhrhBF0P,KACMhnB,GACJwX,OACMxX,IACT4X,EAAKqP,QACMjnB,IACT4X,EAAKsP,MAEHtP,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,GA5xFcxa,EA2xFF8a,GA1xFD,SAAS9a,EAAEqO,cAAkB,UA6xFxC6K,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASsM,KACP,IAAItM,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKkE,QACM7b,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKwO,QACM/mB,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKqD,QACM7b,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKwO,QACM/mB,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKqD,QACM7b,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,IACT4X,EAAKJ,QACMxX,IACTka,EAAK8J,QACMhkB,IACTka,EAAK,MAEHA,IAAOla,IACTuY,EAAKf,QACMxX,IACT8a,EAAKqH,QACMniB,IACT8a,EAAK,MAEHA,IAAO9a,GACTiW,GAAeqB,EAEfA,EADAK,EA13FD,SAASrX,EAAMC,EAAMyd,EAAIhjB,GAC5B,IAAI6rB,EAAMvmB,EACV,IAAK,IAAIvF,EAAI,EAAGA,EAAIwF,EAAKlC,OAAQtD,IAC/B8rB,EAAIM,MAAQ5mB,EAAKxF,GAAG,GACpB8rB,EAAIO,OAAS7mB,EAAKxF,GAAG,GACrB8rB,EAAMA,EAAIM,MAIZ,OAFGnJ,IAAI1d,EAAK+mB,SAAWrJ,GACpBhjB,IAAGsF,EAAKgnB,OAAStsB,GACb,CACLkd,UAAW5Z,MAAM8Z,KAAKF,IACtBrR,WAAYE,GAAqBF,IACjCwR,IAAK/X,GA82FEinB,CAAO5P,EAAIJ,EAAI2C,EAAIY,KAGxB9E,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA2DT,SAASuD,KACP,IAAIvD,EAAIK,EA2CR,OAzCAL,EAAKtB,GAj8FM,OAk8FPnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1W,IAEpCkX,IAAO3X,GACJwX,OACMxX,GACJwnB,OACMxnB,GACJwX,OACMxX,GACJynB,OACMznB,GACTiW,GAAeqB,EAEfA,EADAK,EAh9FG,kBAm+FX3B,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASiC,KACP,IAAIjC,EAAIK,EAAQC,EAqChB,OAnCAN,EAAKtB,GAh/FM,OAi/FPnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxW,IAEpCgX,IAAO3X,GACJwX,OACMxX,GAp/FF,WAq/FHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASvW,IAEpCgX,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EA3/FO,cA8/FP3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA8MT,SAASuG,KACP,IAAIvG,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAkE5B,OAhEAxD,EAAKtB,IACL2B,EAAK+P,QACM1nB,IACT2X,EAAK0O,MAEH1O,IAAO3X,IACTiW,GAAeqB,EACfK,EAtsGW,CACLgC,QAqsGOhC,EArsGK,GAAGxM,iBAusGvBmM,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EAAKkM,QACM7jB,GACJwX,OACMxX,GACT4X,EAAK5B,GA3sGC,OA4sGFnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B+O,EAAKra,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAASjW,IAEpCgZ,IAAOla,IACTuY,EAAKf,QACMxX,IACT8a,EAAK6M,QACM3nB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,IAWlB9E,GAAc4B,EACdA,EAAK5X,GAEH4X,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAzuGI,SAASsF,EAAIhF,GACnB,MAAO,CACL0B,QAASsD,EAAG,GAAG9R,cACf8S,KAAMhG,GAAK,CAAE0B,QAAS1B,EAAE,GAAInR,QAASmR,EAAE,KAAQ,MAsuG1C2P,CAAQjQ,EAAIC,KAGjB5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,IAIFsX,EAsYT,SAASwF,KACP,IAAIxF,EAAIK,EAAQC,EAAQW,EAzkHHnd,EAAOI,EA0nH5B,OA/CA8b,EAAKtB,IACL2B,EAAKiB,QACM5Y,GACJwX,OACMxX,IACT4X,EAAKiQ,QACM7nB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKuP,QACM9nB,IACTuY,EAAKiL,MAEHjL,IAAOvY,IACTuY,EAAK,MAEHA,IAAOvY,GACTiW,GAAeqB,EA/lHJlc,EAgmHEuc,EAhmHKnc,EAgmHG+c,EACrBjB,EADAK,EA/lHG,CACLoQ,QA8lHmBnQ,KA7lHhBxc,EACH4sB,SAAUxsB,GAAKA,EAAE2P,iBA+lHf6K,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAMJ,WACE,IAAIA,EAAIK,EAAQC,EAEhBN,EAAKtB,IACL2B,EAAKqC,QACMha,GACJwX,OACMxX,IACT4X,EAAKkQ,QACM9nB,IACT4X,EAAK4L,MAEH5L,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EACfK,EAvoHM,SAASvc,EAAGI,GAClB,MAAO,IACFJ,EACH4sB,SAAUxsB,GAAKA,EAAE2P,eAooHd8c,CAAQtQ,EAAIC,GACjBN,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAtCA4Q,IAGA5Q,EA20BT,SAAS2D,KACP,IAAI3D,EAaJ,OAXAA,EAAK6Q,QACMnoB,IACTsX,EAAK8Q,QACMpoB,IACTsX,EAAK+Q,QACMroB,IACTsX,EAo+DR,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAExCnB,EAAKtB,IACL2B,EAk1gBF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAvopBQ,aAwopBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrD,KAEpC6D,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA1ppB6B,aA6ppB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAr3gBFgR,MACMtoB,IACT2X,EAs3gBJ,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA1qpBQ,YA2qpBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpD,KAEpC4D,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA7rpB6B,YAgspB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAz5gBAiR,IAEH5Q,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKmC,QACM/Z,IACT4X,EAAK4Q,MAEH5Q,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKkQ,QACMzoB,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKkQ,QACM1oB,GACJwX,OACMxX,IACTyY,EAAKkQ,QACM3oB,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,GACViW,GAAeqB,EAh/Lbza,EAi/LY8a,EAj/LEiR,EAi/LcnQ,EAA9Bd,EAh/LL,CACL4F,MA++LgChF,EA9+LhCsQ,WA8+LoCrQ,EA7+LpCmB,SAJemP,EAi/LalR,IA7+Lb,GAAG/a,EAAEsO,iBAAiB2d,EAAG3d,iBAAmBtO,EAAEsO,cAC7D4d,cAAeH,EACfI,SAAU,SA4+LA1R,EAAKK,IAMP3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAzhMM,IAASnD,EAAGisB,EAAWF,EA4hMpC,OAAOtR,EAvjEI2R,IAKJ3R,EAGT,SAAS4R,KACP,IAAI5R,EAAIK,EAAQC,EAAQW,EA72IH/b,EA8lJrB,OA/OA8a,EAAKtB,IACL2B,EAq4YF,WACE,IAAIL,EAAIK,EAERL,EAAKtB,IACL2B,EAshCF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAtkgBQ,aAukgBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShL,KAEpCwL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAxjCF6R,MACMnpB,IACTiW,GAAeqB,EACfK,EA/qeW,CACLtY,KAAM,WACNrD,MAAO,aAiref,OAFAsb,EAAKK,EA94YAyR,MACMppB,IACT2X,EAAK0R,MAEH1R,IAAO3X,IACTiW,GAAeqB,GAr3II9a,EAs3INmb,KAr3ICnb,EAAER,QAAOQ,EAAER,MAAQ,QAq3IjC2b,EAp3IW,CAAE2R,SAAU9sB,KAs3IzB8a,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EA4eJ,WACE,IAAIL,EAAYM,EAEhBN,EAAKtB,GACAuT,OACMvpB,GACJwX,OACMxX,IACT4X,EAAKgB,QACM5Y,GACTiW,GAAeqB,EAEfA,EAnwJO,CACLjY,KAAM,UACNrD,MAgwJY4b,KAWlB5B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAtgBAkS,MACMxpB,IACTiW,GAAeqB,EACfK,EAz3IS,CAAE8R,YAy3IE9R,KAEfL,EAAKK,KACM3X,IACTsX,EAAKtB,GA33IG,mBA43IJnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStV,IAEpC8V,IAAO3X,IAj4IH,kBAk4IFH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrV,KAGtC6V,IAAO3X,IACTiW,GAAeqB,EACfK,EAz4IO,CAAE+R,eAy4II/R,EAz4IcxM,iBA24I7BmM,EAAKK,KACM3X,IACTsX,EAAKtB,GA34IC,WA44IFnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpV,IAEpC4V,IAAO3X,GACJwX,OACMxX,GAn5IP,QAo5IEH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASnV,IAEpC4V,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EA95IA,SAAS2E,GACf,MAAMqN,EAAM,CAAC,UAEb,OADIrN,GAAGqN,EAAIvS,KAAKkF,GACT,CAAEsN,OAAQD,EAAInqB,KAAK,KAAK2L,YAAY,KA25IhC0e,CAAQjS,KAGb5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GAx6ID,YAy6IAnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlV,IAEpC0V,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,GA57IT,QA67IIH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASnV,IAEpC4V,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EA77IF,SAAS9a,GACf,MAAM8sB,EAAM,GAGZ,OAFI9sB,GAAG8sB,EAAIvS,KAAK,WAChBuS,EAAIvS,KAAK,OACF,CAAE0S,YAAaH,EAAInqB,KAAK,KAAK2L,YAAY,KAy7InC4e,CAAQpS,KAGb3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKqS,QACMhqB,IACTiW,GAAeqB,EACfK,EAz8IC,CAAEsS,QAy8IUtS,KAEfL,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EAAKuS,QACMlqB,GACJwX,OACMxX,IACT4X,EAAKuS,QACMnqB,GACTiW,GAAeqB,EAEfA,EADAK,EAn9IN,SAASmR,EAAItsB,GACnB,MAAO,CAAE4tB,WAAY,CAAEzQ,QAASmP,EAAG3d,cAAeif,WAAY5tB,IAk9I7C6tB,CAAQ1S,EAAIC,KAWrB5B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKkQ,QACM7nB,IACTiW,GAAeqB,EACfK,EAl+IH,CAAEoQ,QAk+IcpQ,KAEfL,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EA6OlB,WACE,IAAIL,EAAIK,EAAQC,EAEhBN,EAAKtB,GAxqJO,kBAyqJRnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjV,IAEpCyV,IAAO3X,GACJwX,OACMxX,GAhrJD,UAirJJH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAShV,IAEpCyV,IAAO5X,IAtrJH,YAurJFH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS/U,IAEpCwV,IAAO5X,IA5rJL,YA6rJAH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS9U,MAIxCuV,IAAO5X,GACTiW,GAAeqB,EACfK,EArsJO,CACLtY,KAAM,gBACNrD,MAmsJe4b,EAnsJNzM,eAosJXmM,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EArScgT,MACMtqB,IACTiW,GAAeqB,EACfK,EAv+IL,CAAE4S,cAu+IgB5S,KAEfL,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EAgSpB,WACE,IAAIL,EAAIK,EAAQC,EAEhBN,EAAKtB,GArtJO,YAstJRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7U,IAEpCqV,IAAO3X,GACJwX,OACMxX,GA7tJA,SA8tJLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS5U,IAEpCqV,IAAO5X,IAnuJF,WAouJHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS3U,KAGtCoV,IAAO5X,GACTiW,GAAeqB,EACfK,EA3uJO,CACLtY,KAAM,UACNrD,MAyuJgB4b,EAzuJPzM,eA0uJXmM,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA/UgBkT,MACMxqB,IACTiW,GAAeqB,EACfK,EA5+IP,CAAE8S,QA4+IkB9S,KAEfL,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EAAK+S,QACM1qB,IACTiW,GAAeqB,EACfK,EAj/IT,CAAEgT,qBAi/IoBhT,KAEfL,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EA01ExB,WACE,IAAIL,EAAIK,EAAQC,EAAgBY,EAAiBY,EAAK+F,EAAK1E,EAAK2E,EAEhE9H,EAAKtB,IACL2B,EAAKiT,QACM5qB,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,GAj9ND,UAk9NJH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASxV,IAEpCiW,IAAO5X,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTwY,EAAKqS,QACM7qB,GACJwX,OACMxX,GACJmb,OACMnb,GACHwX,OACMxX,GACVoZ,EAAMpD,IACNmJ,EAAMqI,QACMxnB,IACVmf,EAAM,MAEJA,IAAQnf,IACVya,EAAMjD,QACMxX,GAv+MrB,aAw+MeH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BiU,EAAMvf,EAAMgY,OAAO7B,GAAa,GAChCA,IAAe,IAEfoJ,EAAMpf,EACkB,IAApBuW,IAAyBY,GAAS3T,KAEpC4b,IAAQpf,EAEVoZ,EADA+F,EAAM,CAACA,EAAK1E,EAAK2E,IAGjBpJ,GAAcoD,EACdA,EAAMpZ,KAOVgW,GAAcoD,EACdA,EAAMpZ,GAEJoZ,IAAQpZ,IACVoZ,EAAM,MAEJA,IAAQpZ,GACViW,GAAeqB,EACfK,EAjgNT,SAASmR,EAAIhG,EAAG1nB,EAAG0vB,GAC1B,MAAMC,EAAW,GAEjB,OADID,GAAIC,EAAS3T,KAAK0T,EAAG,GAAIA,EAAG,IACzB,CACHE,gBAAiBlI,EAAE3X,cACnBwO,QAASmP,GAAMA,EAAGnP,QAClByQ,WAAYtB,GAAMA,EAAGsB,WACrBvB,WAAY,CAACztB,GACb2vB,SAAUA,EAASvG,OAAOhF,GAAKA,GAAGhgB,KAAK,KAAK2L,cAC5C6d,SAAU,cAw/MOiC,CAAStT,EAAIC,EAAIY,EAAIY,GAC1B9B,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KA+BrBgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA78EoB4T,MACMlrB,IACTiW,GAAeqB,EACfK,EAt/IX,CAAEwT,MAs/IsBxT,KAEfL,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EAAKyT,QACMprB,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK4R,QACMnqB,GACTiW,GAAeqB,EAEfA,EADAK,EAvgJtB,SAAS1b,EAAGa,EAAG0iB,GACrB,MAAO,CAAE8L,cAAe,CAAEjsB,KAAMpD,EAAGD,MAAOwjB,EAAG+L,OAAQzuB,IAsgJpB0uB,CAAQ7T,EAAIC,EAAIW,KAWzBvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,eAexBsX,EAiET,SAAS8Q,KACP,IAAI9Q,EAAIK,EAAQC,EAAQW,EAlmJHnd,EAAGC,EAAGowB,EA6oJ3B,OAzCAnU,EAAKtB,IACL2B,EAAK+T,QACM1rB,GACJwX,OACMxX,IACT4X,EAAK+T,QACM3rB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EA7EV,WACE,IAAIjB,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAI5B,GAFAxD,EAAKtB,IACL2B,EAAKuR,QACMlpB,EAET,GADKwX,OACMxX,EAAY,CAiBrB,IAhBA4X,EAAK,GACLsC,EAAKlE,IACLuC,EAAKf,QACMxX,IACT8a,EAAKoO,QACMlpB,EAETka,EADA3B,EAAK,CAACA,EAAIuC,IAOZ9E,GAAckE,EACdA,EAAKla,GAEAka,IAAOla,GACZ4X,EAAGR,KAAK8C,GACRA,EAAKlE,IACLuC,EAAKf,QACMxX,IACT8a,EAAKoO,QACMlpB,EAETka,EADA3B,EAAK,CAACA,EAAIuC,IAOZ9E,GAAckE,EACdA,EAAKla,GAGL4X,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAtlJM,SAASrX,EAAMC,GACrB,IAAIqrB,EAAMtrB,EACV,IAAK,IAAIvF,EAAI,EAAGA,EAAIwF,EAAKlC,OAAQtD,IAC/B6wB,EAAM,IAAKA,KAAQrrB,EAAKxF,GAAG,IAE7B,OAAO6wB,EAilJFC,CAAQlU,EAAIC,KAGjB5B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAkBMwU,MACM9rB,IACTuY,EAAK,MAEHA,IAAOvY,GACTiW,GAAeqB,EArnJJlc,EAsnJEuc,EAtnJCtc,EAsnJGuc,EAtnJA6T,EAsnJIlT,EArnJvB1R,GAAWK,IAAI,WAAW9L,EAAEsL,UAAUtL,EAAEY,OAASZ,KAsnJ/Ckc,EADAK,EApnJK,CACLvB,OAAQ,CACN/W,KAAM,aACNqH,MAAO,KACP0P,OAAQhb,GAEVytB,WAAYxtB,EACZ2tB,SAAU,YACNyC,GAAO,MA+mJXzV,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASuQ,KACP,IAAIvQ,EAAYM,EAAQW,EAwCxB,OAtCAjB,EAAKtB,GAsucP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAj7kBQ,YAk7kBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/S,KAEpCuT,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAnsiB6B,YAssiB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAxwcFyU,KACM/rB,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKO,QACM9Y,GACTiW,GAAeqB,EAEfA,EArpJG,CACLjY,KAAM,UACNsa,QAAS,UACToO,QAAS,CACPzsB,KAgpJiBid,EA/oJjBgT,OA+oJa3T,MAWjB5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAknBT,SAAS0U,KACP,IAAI1U,EAAIK,EAAQC,EA8ChB,OA5CAN,EAAKtB,GArpKQ,UAspKTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1U,IAEpCkV,IAAO3X,IACTiW,GAAeqB,EACfK,EA5pKa,CAAEgC,QA4pKDhC,KAEhBL,EAAKK,KACM3X,IACTsX,EAAKtB,GAvjLK,UAwjLNnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzU,IAEpCiV,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKoC,QACMha,GACTiW,GAAeqB,EAEfA,EADAK,EA3qKK,SAAS2E,EAAGvhB,GACjB,MAAO,CAAE4e,QAAS2C,EAAGpD,KAAMne,GA0qKtBkxB,CAAStU,EAAIC,KAWtB5B,GAAcsB,EACdA,EAAKtX,IAIFsX,EAmFT,SAASqJ,KACP,IAAIrJ,EAAIK,EA5wKc1b,EA0zKtB,OA5CAqb,EA+CF,WACE,IAAIA,EAAYM,EAEhBN,EAAKtB,GACAkW,OACMlsB,GACJwX,OACMxX,IACT4X,EAAKuQ,QACMnoB,GACTiW,GAAeqB,EAEfA,EA/zKS,CACLgN,OAAQ,MACR3I,mBA4zKU/D,EA3zKVoR,SAAU,aACV3pB,KAAM,WAq0Kd2W,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAzEF6U,MACMnsB,IACTsX,EA0EJ,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,IACL2B,EAAK0B,QACMrZ,GACJwX,OACMxX,GAzoLD,UA0oLJH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASxV,IAEpCiW,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK6T,QACMpsB,GACTiW,GAAeqB,EACfK,EA71KK,CACL2M,OAAQ,OACR8F,WA21KkB7R,EA11KlBoB,QA01Kc/B,EA11KFzM,cACZ6d,SAAU,aACV3pB,KAAM,SAy1KNiY,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAtHA+U,MACMrsB,IACTsX,EAuHN,WACE,IAAIA,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAE5BxD,EAAKtB,IACL2B,EAAK0B,QACMrZ,GACJwX,OACMxX,GAzlLD,YA0lLJH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASlV,IAEpC2V,IAAO5X,IACTka,EAAK1C,QACMxX,IACTuY,EAAKiQ,QACMxoB,GACTiW,GAAeqB,EAEfA,EADAK,EAn4KG,CACH2M,OAAQ,OACRhoB,IAAK,GACLqd,QAAS,cACTqP,SAAU,MACV3pB,KAAM,WAy4KV2W,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK0B,QACMrZ,GACJwX,OACMxX,GACT4X,EAAK5B,GAv5KE,YAw5KHnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B+O,EAAKra,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAASxU,IAEpCuX,IAAOla,IACTka,EAAK,MAEHA,IAAOla,IACTuY,EAAKf,QACMxX,IACT8a,EAAK0N,QACMxoB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,IAWlB9E,GAAc4B,EACdA,EAAK5X,GAEH4X,IAAO5X,IACT4X,EAAKmC,MAEHnC,IAAO5X,IACTka,EAAK1C,QACMxX,IACTuY,EAAKO,QACM9Y,GACTiW,GAAeqB,EACfK,EA57KC,SAAS2E,EAAGlhB,GACnB,MAAM4tB,EAAW1qB,MAAMkkB,QAAQlG,GAAK,MAAQ,QAC5C,MAAO,CACHgI,OAAQ,OACR,CAAC0E,GAAW5tB,EACZue,QAASrb,MAAMkkB,QAAQlG,GAAK,GAAG,CAACA,EAAE,GAAIA,EAAE,IAAIkI,OAAOhF,GAAKA,GAAGhgB,KAAK,KAAK2L,cAAkBmR,EAAEnR,cACzF6d,WACA3pB,KAAM,SAq7KCitB,CAAS1U,EAAIW,GAClBjB,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,IAIT,OAAOsX,EAvOEiV,MACMvsB,IACTsX,EAwOR,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,IACL2B,EAAKuU,QACMlsB,GACJwX,OACMxX,IACT4X,EAAK4U,QACMxsB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK6P,QACMpoB,GACTiW,GAAeqB,EA99KHwR,EA+9KElR,EA/9KE6U,EA+9KElU,EAAlBZ,EA99KK,CACL2M,OAAQ,SACLmI,EACH9S,QAASmP,EACTE,SAAU,SACV3pB,KAAM,SA09KNiY,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAn/KM,IAAS8oB,EAAI2D,EAs/K1B,OAAOnV,EAjRIoV,MACM1sB,IACTsX,EAkRV,WACE,IAAIA,EAAYM,EAAQW,EAExBjB,EAAKtB,GACAqD,OACMrZ,GACJwX,OACMxX,IACT4X,EAAK4U,QACMxsB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKyB,QACMha,GACTiW,GAAeqB,EAEfA,EAlgLK,CACLgN,OAAQ,OACRlO,OA+/KkBmC,EA9/KlBoB,QA8/Kc/B,EA7/KdoR,SAAU,SACV3pB,KAAM,WAugLV2W,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA3TMqV,MACM3sB,IACTsX,EA4TZ,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAEhClB,EAAKtB,IACL2B,EA0xhBF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA/jpBQ,WAgkpBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStD,KAEpC8D,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAllpB6B,WAqlpB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA7zhBFsV,MACM5sB,GACJwX,OACMxX,IACT4X,EAAK4U,QACMxsB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK6P,QACMpoB,GACJwX,OACMxX,IACTwY,EAAKwT,QACMhsB,IACTwY,EAAK,MAEHA,IAAOxY,GACTiW,GAAeqB,EA3iLHmV,EA4iLMlU,EA5iLFsU,EA4iLMrU,EAAtBb,EA3iLC,CACL2M,OAAQ,SACR3K,QAyiLkB/B,KAxiLf6U,EACHnO,OAAQuO,EACR7D,SAAU,SACV3pB,KAAM,SAsiLFiY,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAxkLM,IAAaysB,EAAII,EA2kL9B,OAAOvV,EApXQwV,MACM9sB,IACTsX,EAqXd,WACE,IAAIA,EAAIK,EAAQC,EAEhBN,EAAKtB,IACL2B,EAAKuU,QACMlsB,GACJwX,OACMxX,IACT4X,EAAKyQ,QACMroB,GACTiW,GAAeqB,EA9kLCsR,EA+kLFhR,EAAdD,EA9kLS,CACL2M,OAAQ,MACRjlB,KAAM,WACHupB,GA4kLPtR,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,GA3lLM,IAAS4oB,EA8lLtB,OAAOtR,EA/YUyV,MACM/sB,IACTsX,EAgZhB,WACE,IAAIA,EAAIK,EAAgBY,EAAQC,EAAQC,EAExCnB,EAAKtB,IACL2B,EAAKoI,QACM/f,GACJwX,OACMxX,GACJwsB,OACMxsB,GACJwX,OACMxX,IACTuY,EAAKyB,QACMha,GACJwX,OACMxX,IACTwY,EAAKwU,QACMhtB,IACTwY,EAAKK,MAEHL,IAAOxY,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKuB,QACMha,GACTiW,GAAeqB,EAtnLJmH,EAunLWhG,EAAtBd,EAtnLL,CACL2M,OAAQ,SACRjlB,KAAM,QACN2pB,SAAU,SACVrP,QAAS,SACTsT,WAinLwB1U,EAhnLxBqB,QAPiBqD,EAunLWzE,IAhnLdyE,EAAG,GAAG9R,cACpBiL,OAAQqI,GAgnLEnH,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAuBjBgW,GAAcsB,EACdA,EAAKtX,GA3pLM,IAAYid,EAAIwB,EA8pL7B,OAAOnH,EApdY4V,MACMltB,IACTsX,EAqdlB,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,IACL2B,EAAKoI,QACM/f,GACJwX,OACMxX,IACT4X,EAAKoV,QACMhtB,IACT4X,EAAKiB,MAEHjB,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKO,QACM9Y,GACTiW,GAAeqB,EA1qLCmH,EA2qLElG,EAAlBZ,EA1qLG,CACL2M,OAAQ,SACRjlB,KAAM,QACN2pB,SAAU,QACVrP,SALcsD,EA2qLErF,IAtqLDqF,EAAG,GAAG9R,cACrBzE,MAAO+X,GAsqLLnH,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GA/rLM,IAASid,EAAIwB,EAksL1B,OAAOnH,EAjgBc6V,MACMntB,IACTsX,EAAK6C,QACMna,IACTsX,EAAK8C,QACMpa,IACTsX,EA8fxB,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAExCnB,EAAKtB,GA/rLQ,WAgsLTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvU,IAEpC+U,IAAO3X,GACJwX,OACMxX,IACT4X,EAAK4U,QACMxsB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKyB,QACMha,GACJwX,OACMxX,IACTwY,EAAK4P,QACMpoB,GACJwX,OACMxX,IACTyY,EAAKuT,QACMhsB,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EA5tLXwR,EA6tLUlR,EA7tLF6U,EA6tLUjU,EA7tLNqU,EA6tLUpU,EAA1Bd,EA5tLL,CACH2M,OAAQ,SACR2I,WA0tL0B1U,KAztLvBkU,EACH9S,QAASmP,EACTE,SAAU,SACV3pB,KAAM,QACNif,OAAQuO,GAstLAvV,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAuBjBgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAjwLM,IAAS8oB,EAAQ2D,EAAII,EAowLlC,OAAOvV,EAxkBoB8V,MACMptB,IACTsX,EAAKtB,IACL2B,EAAK0D,QACMrb,IACTiW,GAAeqB,GAzyKnBrb,EA0yKkB0b,GAzyKhCqR,SAAW/sB,EAAE0d,QACf1d,EAAEA,EAAE0d,SAAW1d,EAAED,aACVC,EAAED,MAuyKW2b,EAtyKb,CACLtY,KAAM,WACHpD,IAsyKaqb,EAAKK,GActBL,EAqjBT,SAAS6C,KACP,IAAI7C,EAAIK,EAAQC,EAAQW,EA+ExB,OA7EAjB,EAAKtB,GA/vLQ,cAgwLTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStU,IAEpC8U,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GAxgML,YAygMAH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS9U,IAEpCkW,IAAOvY,IAtxLN,YAuxLCH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASrU,IAEpCyV,IAAOvY,IA5xLR,YA6xLGH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASpU,IAEpCwV,IAAOvY,IAlyLV,SAmyLKH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASnU,OAK1CuV,IAAOvY,GACTiW,GAAeqB,EAEfA,EADAK,EA5yLG,CACLtY,KAAM,QACNsa,QAAS,YACTqP,SAAU,YACVuC,OAwyLgB3T,EAvyLhByV,UAuyLoB9U,KAGlBvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS8C,KACP,IAAI9C,EAAIK,EAAQC,EAAQW,EA+ExB,OA7EAjB,EAAKtB,GAj0LQ,SAk0LTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlU,IAEpC0U,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GA3lML,YA4lMAH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS9U,IAEpCkW,IAAOvY,IAx1LN,SAy1LCH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASjU,IAEpCqV,IAAOvY,IA91LR,WA+1LGH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAShU,IAEpCoV,IAAOvY,IAp2LV,cAq2LKH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BoN,EAAK1Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS/T,OAK1CmV,IAAOvY,GACTiW,GAAeqB,EAEfA,EADAK,EA92LG,CACLtY,KAAM,QACNsa,QAAS,OACTqP,SAAU,OACVuC,OA02LgB3T,EAz2LhB0V,KAy2LoB/U,KAGlBvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS+Q,KACP,IAAI/Q,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAj4LXxc,EAAO2sB,EAg9LpC,OA7EAtR,EAAKtB,IACL2B,EAAKoC,QACM/Z,IACT2X,EAAK6Q,MAEH7Q,IAAO3X,GACJwX,OACMxX,IACT4X,EAAK6Q,QACMzoB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKsE,QACM7c,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKkQ,QACM1oB,GACJwX,OACMxX,IACTyY,EAAKkQ,QACM3oB,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,GACViW,GAAeqB,EAp6LNrb,EAq6Lasc,EAr6LNqQ,EAq6LcnQ,EAC9BnB,EADAK,EAp6LL,CACL4F,MAm6L4B3F,EAl6L5BiR,WAk6LoCrQ,EAj6LpCmB,QAi6LwBhC,EAj6LZxM,cACZmS,WAAYrhB,EACZ+sB,SAAU,QACVD,cAAeH,KAq6LP5S,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyFT,SAAS6Q,KACP,IAAI7Q,EAaJ,OAXAA,EA8CF,WACE,IAAIA,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAAQC,EAExCnB,EAAKtB,IACL2B,EAAKiT,QACM5qB,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,GACT4X,EAAK5B,GAn8MG,YAo8MJnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B+O,EAAKra,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAASlV,IAEpCiY,IAAOla,IACTuY,EAAKf,QACMxX,GAp9ML,QAq9MAH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B2P,EAAKjb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASnV,IAEpC8Y,IAAO9a,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,IAGd9E,GAAc4B,EACdA,EAAK5X,KAOTgW,GAAc4B,EACdA,EAAK5X,GAEH4X,IAAO5X,IACTka,EAAK1C,QACMxX,IACTuY,EAAKsE,QACM7c,IACTuY,EAAK,MAEHA,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKkQ,QACM1oB,GACJwX,OACMxX,IACTyY,EAAKkQ,QACM3oB,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EAhoMPza,EAioMU+a,EAjoMP3b,EAioMWsc,EAjoMRgV,EAioMY/U,EAjoMRoQ,EAioMYnQ,EAA9Bd,EAhoML,CACHyS,YAFYtB,EAioMUnR,IA/nMJmR,EAAGsB,WACrBvB,WAAY0E,EACZvC,gBAAiB,GAAGnuB,EAAE,GAAGsO,iBAAiBtO,EAAE,GAAGsO,gBAC/CwO,QAASmP,GAAMA,EAAGnP,QAClB2D,WAAYrhB,EACZ+sB,SAAU,aACVD,cAAeH,GA0nMPtR,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GArqMM,IAAS8oB,EAAIjsB,EAAGZ,EAAGsxB,EAAI3E,EAwqMpC,OAAOtR,EArJFkW,MACMxtB,IACTsX,EAsJJ,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAASW,EAAUqB,EAE3DnD,EAAKtB,IACL2B,EAAKiT,QACM5qB,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKgF,QACM5c,GACJwX,OACMxX,IACTuY,EAAKwB,QACM/Z,IACTuY,EAAKiQ,MAEHjQ,IAAOvY,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKiQ,QACMzoB,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKoE,QACM7c,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,IACVoZ,EAAMsP,QACM1oB,GACJwX,OACMxX,IACVya,EAAMkO,QACM3oB,IACVya,EAAM,MAEJA,IAAQza,GACViW,GAAeqB,EAhtMfwL,EAitMkBlL,EAjtMf/a,EAitMmB0b,EAjtMhBxd,EAitMoByd,EAjtMjBvc,EAitMqBwc,EAjtMlB8U,EAitMsBnU,EAjtMlBwP,EAitMuBnO,EAAvC9C,EAhtMb,CACHyS,YAFYtB,EAitMkBnR,IA/sMZmR,EAAGsB,WACrBvB,WAAY0E,EACZvC,gBAAiBnuB,GAAK,GAAGimB,EAAE3X,iBAAiBtO,EAAEsO,iBAAmB2X,EAAE3X,cACnEwO,QAASmP,GAAMA,EAAGnP,QAClB2D,WAAYrhB,EACZshB,MAAOxiB,EACPiuB,SAAU,aACVD,cAAeH,GAysMCtR,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GArwMM,IAAS8oB,EAAIhG,EAAGjmB,EAAG9B,EAAGkB,EAAGsxB,EAAI3E,EAwwM1C,OAAOtR,EA9PAmW,MACMztB,IACTsX,EA0YN,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAExCnB,EAAKtB,IACL2B,EAAKiT,QACM5qB,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,GAt4MA,gBAu4MLH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCyM,EAAK/X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS5T,KAEpCqU,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKkQ,QACMzoB,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKkQ,QACM1oB,GACJwX,OACMxX,IACTyY,EAAKiS,QACM1qB,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EA/5MPza,EAg6MU+a,EAh6MP7c,EAg6MWwd,EAh6MRgV,EAg6MY/U,EAh6MRoQ,EAg6MYnQ,EAA9Bd,EA/5ML,CACHyS,YAFYtB,EAg6MUnR,IA95MJmR,EAAGsB,WACrBvB,WAAY0E,EACZvC,gBAAiBnuB,EACjB8c,QAASmP,GAAMA,EAAGnP,QAClB4D,MAAOxiB,EACPiuB,SAAU,aACV2B,qBAAsB/B,GAy5MdtR,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAp8MM,IAAS8oB,EAAIjsB,EAAG9B,EAAGwyB,EAAI3E,EAu8MpC,OAAOtR,EAvdEoW,MACM1tB,IACTsX,EA6PR,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAIuC,EAAItC,EAAIuC,EAAItC,EAAIkV,EAAKvU,EAEjD9B,EAAKtB,IACL2B,EAAKiT,QACM5qB,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,GAtvND,UAuvNJH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASxV,IAEpCiW,IAAO5X,GACJwX,OACMxX,GACTuY,EAAKvC,GApxMA,QAqxMDnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B2P,EAAKjb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS9T,IAEpCyX,IAAO9a,IACTwY,EAAKhB,QACMxX,GA/0NT,QAg1NIH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B4P,EAAKlb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf+E,EAAK/a,EACmB,IAApBuW,IAAyBY,GAAS7V,IAEpCyZ,IAAO/a,IACTyY,EAAKjB,QACMxX,GAtyMZ,gBAuyMOH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwiB,EAAM9tB,EAAMgY,OAAO7B,GAAa,IAChCA,IAAe,KAEf2X,EAAM3tB,EACkB,IAApBuW,IAAyBY,GAAS7T,IAEpCqqB,IAAQ3tB,IACVoZ,EAAM5B,QACMxX,EAEVuY,EADAuC,EAAK,CAACA,EAAItC,EAAIuC,EAAItC,EAAIkV,EAAKvU,IAO7BpD,GAAcuC,EACdA,EAAKvY,KAOTgW,GAAcuC,EACdA,EAAKvY,KAOTgW,GAAcuC,EACdA,EAAKvY,GAEHuY,IAAOvY,IACTuY,EAAK,MAEHA,IAAOvY,IACT8a,EAAKE,QACMhb,IACTwY,EAAKhB,QACMxX,IACT+a,EAAK8P,QACM7qB,IACTyY,EAAKjB,QACMxX,IACT2tB,EAAMxS,QACMnb,GACViW,GAAeqB,EAv1MbwR,EAw1MYnR,EAx1MLiW,EAw1MarV,EAx1MRnd,EAw1MY2f,EAA1BpD,EAv1MP,CACHqT,gBAs1M4BpT,EAt1MTzM,cACnBwO,QAASmP,GAAMA,EAAGnP,QAClByQ,WAAYtB,GAAMA,EAAGsB,WACrB9M,WAAYsQ,GAAO,CAAEjU,QAAS,uBAC9BkP,WAAY,CAACztB,GACb4tB,SAAU,cAk1MA1R,EAAKK,IAsBf3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAh4MM,IAAS8oB,EAAO8E,EAAKxyB,EAm4MlC,OAAOkc,EArYIuW,IAKJvW,EAGT,SAASsT,KACP,IAAItT,EAAIK,EAAQC,EAxiMUxc,EAokM1B,OA1BAkc,EAAKtB,IACL2B,EAAKuS,QACMlqB,GACJwX,OACMxX,IACT4X,EAAKkB,QACM9Y,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EApjMKlc,EAqjMFwc,EAClBN,EADAK,EApjMO,CACLgC,QAmjMYhC,EAnjMAxM,cACZif,WAAYhvB,KAqjMd4a,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyiBT,SAASoT,KACP,IAAIpT,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAASW,EAliNhBje,EAAG2yB,EAAIC,EAqpNxC,OAjHAzW,EAAKtB,IACL2B,EAy4fF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA71pBQ,eA81pBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjD,KAEpCyD,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAh3pB6B,eAm3pB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA56fF0W,MACMhuB,GACJwX,OACMxX,IACT4X,EAAKI,QACMhY,GACJwX,OACMxX,IACTuY,EAAKmQ,QACM1oB,GACJwX,OACMxX,GAtjNR,eAujNGH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCqN,EAAK3Y,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEfwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAAS1T,KAEpC+U,IAAOxY,IA5jNV,kBA6jNKH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCqN,EAAK3Y,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEfwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASzT,KAEpC8U,IAAOxY,IAlkNZ,iBAmkNOH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCqN,EAAK3Y,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEfwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASxT,OAIxC6U,IAAOxY,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKwV,QACMjuB,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,IACVoZ,EAAM6U,QACMjuB,IACVoZ,EAAM,MAEJA,IAAQpZ,GACViW,GAAeqB,EA5lNJnc,EA6lNeqd,EA7lNZsV,EA6lNgBrV,EA7lNZsV,EA6lNgB3U,EAClC9B,EADAK,EA5lNT,CACHkR,WA2lNkCtQ,EA1lNlC7R,MAAO,CA0lNuBkR,GAzlN9B+B,QAylN0BhC,EAzlNdxM,cACZ+iB,MAAO/yB,GAAKA,EAAEgQ,cACdgjB,UAAW,CAACL,EAAIC,GAAIvJ,OAAOhF,GAAKA,MA0lNpBxJ,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAuBjBgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKsW,QACMjuB,IACTiW,GAAeqB,EACfK,EAtoNS,CACLwW,UAAW,CAqoNDxW,KAEhBL,EAAKK,GAGAL,EAGT,SAAS2W,KACP,IAAI3W,EAAYM,EAAQW,EA3oNE6V,EAmrN1B,OAtCA9W,EAAKtB,GACAiE,OACMja,GACJwX,OACMxX,IACT4X,EAAKyO,QACMrmB,IACT4X,EAAKiM,MAEHjM,IAAO5X,GACJwX,OACMxX,IACTuY,EA6BV,WACE,IAAIjB,EAAIK,EAAgBY,EAExBjB,EAAKtB,IACL2B,EAAK0W,QACMruB,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAAK+V,QACMtuB,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,EAEfA,EADAK,EApsND,CACLtY,KAAM,WACN/D,KAAM,CAAEA,KAAM,CAAC,CAAE+D,KAAM,SAAUrD,MAksNb2b,KAjsNpBsG,KAisNwB1F,KAWtBvC,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GA7tNM,aA8tNPnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvT,KAEpC+T,IAAO3X,IAnuNA,YAouNLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStT,KAEpC8T,IAAO3X,IAzuNF,aA0uNHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrT,KAEpC6T,IAAO3X,IA/uNJ,cAgvNDH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpT,KAEpC4T,IAAO3X,IArvNN,gBAsvNCH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnT,KAEpC2T,IAAO3X,IACT2X,EAAK0W,UAMX1W,IAAO3X,IACTiW,GAAeqB,EACfK,EAnwNS,CACLtY,KAAM,SACNrD,MAiwNU2b,EAjwNAxM,gBAmwNhBmM,EAAKK,GAGP,OAAOL,EAxIMiX,MACMvuB,GACTiW,GAAeqB,EA3pNC8W,EA4pNE7V,EAClBjB,EA3pNG,CACLjY,KAAM,MAypNUuY,EAzpND,GAAGzM,cAClBnP,MAAOoyB,KAmqNTpY,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAuMT,SAAS8T,KACP,IAAI9T,EAAIK,EAAQC,EAqChB,OAnCAN,EAAKtB,GA/1NQ,cAg2NTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlT,KAEpC0T,IAAO3X,GACJwX,OACMxX,GAv2NA,QAw2NLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASjT,KAEpC0T,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EA92NO,kBAi3NP3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS8E,KACP,IAAI9E,EAAIK,EAAQC,EAAQW,EAAQC,EA33NVyE,EAAIhhB,EAAGa,EAAG0iB,EAo8NhC,OAvEAlI,EAAKtB,IACL2B,EAAK4R,QACMvpB,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKwT,QACMprB,IA14NF,YA24NHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAShT,KAEpCyT,IAAO5X,IAh5NJ,YAi5NDH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS/S,OAIxCwT,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK8S,QACMrrB,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAK2R,QACMnqB,GACTiW,GAAeqB,EAp6NHrb,EAq6NM2b,EAr6NH9a,EAq6NOyb,EAr6NJiH,EAq6NQhH,EAC1BlB,EADAK,EAp6ND,CACLgC,SAFcsD,EAq6NMtF,IAn6NL,GAAGsF,EAAG,GAAG9R,iBAAiBlP,EAAEkP,iBAAmBlP,EAAEkP,cAChEogB,OAAQzuB,EACRd,MAAOwjB,KA46NLxJ,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS+D,KACP,IAAI/D,EAAIK,EAAQC,EAAQW,EAAIuC,EAAItC,EAAIuC,EAv7NVje,EAAG0iB,EA0wO7B,OAjVAlI,EAAKtB,GA98OO,mBA+8ORnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStV,IAEpC8V,IAAO3X,IA38NE,mBA48NPH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9S,KAEpCsT,IAAO3X,IAj9NA,mBAk9NLH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7S,KAEpCqT,IAAO3X,IAv9NF,aAw9NHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5S,KAEpCoT,IAAO3X,IA79NJ,aA89NDH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3S,KAEpCmT,IAAO3X,IAn+NN,uBAo+NCH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1S,UAO9CkT,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKiW,QACMxuB,GACTiW,GAAeqB,EA1/NCxa,EA2/NE8a,EA3/NC4H,EA2/NGjH,EACtBjB,EADAK,EA1/NG,CACLgC,QAy/NgBhC,EAz/NJxM,cACZogB,OAAQzuB,EACRd,MAAOwjB,EAAExjB,SAkgOXga,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAK8E,QACMpc,IACTsX,EAAKtB,IACL2B,EAAK8W,QACMzuB,IA/gOF,eAghOHH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzS,MAGtCiT,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKmW,QACM1uB,GACTiW,GAAeqB,EAEfA,EADAK,EAniOD,SAASsF,EAAIngB,EAAG1B,GACvB,MAAO,CACLue,QAASsD,EAAG9R,cACZogB,OAAQzuB,EACRd,MAAO,IAAIZ,EAAEY,UA+hOF2yB,CAAShX,EAAIC,EAAIW,KAW1BvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GAnjOE,gBAojOHnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxS,KAEpCgT,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GACTuY,EAAKvC,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB8E,EArkOH,IAskOG9E,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpCkW,IAAO9a,GAzkOZ,SA0kOOH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BqN,EAAK3Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAAStS,KAEpC2T,IAAOxY,IA/kOd,QAglOSH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BqN,EAAK3Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASrS,KAEpC0T,IAAOxY,IAnyOhB,SAoyOWH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BqN,EAAK3Y,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASjU,MAIxCsV,IAAOxY,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnB+E,EAvmOP,IAwmOO/E,OAEA+E,EAAK/a,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpCmW,IAAO/a,EAETuY,EADAuC,EAAK,CAACA,EAAItC,EAAIuC,IAGd/E,GAAcuC,EACdA,EAAKvY,KAGPgW,GAAcuC,EACdA,EAAKvY,KAGPgW,GAAcuC,EACdA,EAAKvY,GAEHuY,IAAOvY,GACTiW,GAAeqB,EAEfA,EADAK,EAxnOH,SAASsF,EAAIngB,EAAG0iB,GACvB,MAAO,CACL7F,QAASsD,EAAG9R,cACZogB,OAAQzuB,EACRd,MAAOwjB,EAAEhgB,KAAK,IAAIP,eAonOL2vB,CAASjX,EAAIC,EAAIW,KAGtBvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GAxoOA,WAyoODnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpS,KAEpC4S,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK6T,QACMpsB,GACTiW,GAAeqB,EAEfA,EADAK,EA3pOL,SAASsF,EAAIngB,EAAG1B,GACvB,MAAO,CACLue,QAASsD,EAAG9R,cACZogB,OAAQzuB,EACRd,MAAOZ,EAAE6D,eAupOM4vB,CAASlX,EAAIC,EAAIW,KAW1BvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GA3qOF,YA4qOCnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnS,KAEpC2S,IAAO3X,GACJwX,OACMxX,GAnrOV,UAorOKH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASlS,KAEpC2S,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EA1rOH,CACLgC,QAAS,mBA4rOD3D,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GArsOJ,WAssOGnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjS,KAEpCyS,IAAO3X,IACTiW,GAAeqB,EACfK,EA5sOD,CACLgC,QAAS,WA6sOLrC,EAAKK,OAQVL,EAoNT,SAASmK,KACP,IAAInK,EAAIK,EAAQC,EAp3OM3b,EAAG6yB,EA64OzB,OAvBAxX,EAAKtB,IACL2B,EAAKoX,QACM/uB,GACJwX,OACMxX,IACT4X,EA3FN,WACE,IAAIN,EAAIK,EAAQC,EA+EhB,OA7EAN,EAAKtB,GArzOQ,SAszOTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShS,KAEpCwS,IAAO3X,GACJwX,OACMxX,GA9/PD,UA+/PJH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASzV,IAEpCkW,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAz0OO,CACLtY,KAAM,OACNif,OAu0OY1G,GAv0OC,WA00Of5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GAn1OM,iBAo1OPnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/R,KAEpCuS,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,GA91OF,UA+1OHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS9R,KAEpCuS,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAr2OK,CACLtY,KAAM,QACNua,OAm2OcjC,GAn2OD,kBAs2Ob3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,IAIFsX,EAWE0X,MACMhvB,GACTiW,GAAeqB,EA73OCrb,EA83OF0b,EA93OKmX,EA83ODlX,EA73OlBM,GAAUhR,IAAI,SAASjL,EAAEkc,OAAOlc,EAAEyK,SA83OlC4Q,EADAK,EA53OO,CACLjR,MAAOzK,EACPgzB,UAAWH,KAq4OjB9Y,GAAcsB,EACdA,EAAKtX,GAGAsX,EA8pBT,SAASuE,KACP,IAAIvE,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAyD5B,OAvDAxD,EAAKiI,QACMvf,IACTsX,EAAKtB,GACL2B,EAAK3B,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBuB,EAj8PS,IAk8PTvB,OAEAuB,EAAKvX,EACmB,IAApBuW,IAAyBY,GAASrR,KAEpCyR,IAAOvX,IACT4X,EAAKJ,QACMxX,IACTka,EAAK2B,QACM7b,IACTuY,EAAKf,QACMxX,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnB8E,EA78PC,IA88PD9E,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASpR,KAEpC+U,IAAO9a,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,EAAI3B,EAAIuC,IAGtB9E,GAAc2B,EACdA,EAAK3X,KAebgW,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAz+PW,IAy+PGA,EAx+PH,GACLuX,oBAAoB,IAy+P5B5X,EAAKK,GAGAL,EAGT,SAAS6X,KACP,IAAI7X,EAAYM,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAAIuC,EAAItC,EA7+PlB2W,EAi/PtB,GAFA9X,EAAKtB,GACAqZ,OACMrvB,EAET,GADKwX,OACMxX,EAET,IADA4X,EAAK0X,QACMtvB,EAAY,CA6BrB,IA5BAka,EAAK,GACL3B,EAAKvC,IACL8E,EAAKtD,QACMxX,IACTwY,EAAK0C,QACMlb,IACT+a,EAAKvD,QACMxX,IACTyY,EAAK6W,QACMtvB,EAETuY,EADAuC,EAAK,CAACA,EAAItC,EAAIuC,EAAItC,IAexBzC,GAAcuC,EACdA,EAAKvY,GAEAuY,IAAOvY,GACZka,EAAG9C,KAAKmB,GACRA,EAAKvC,IACL8E,EAAKtD,QACMxX,IACTwY,EAAK0C,QACMlb,IACT+a,EAAKvD,QACMxX,IACTyY,EAAK6W,QACMtvB,EAETuY,EADAuC,EAAK,CAACA,EAAItC,EAAIuC,EAAItC,IAexBzC,GAAcuC,EACdA,EAAKvY,GAGLka,IAAOla,GACTiW,GAAeqB,EAEfA,EADK1V,EAAQgW,EAAIsC,KAGjBlE,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EA6CP,OA3CIsX,IAAOtX,IACTsX,EAAKtB,GACAwB,OACMxX,GACJqvB,OACMrvB,IACT4X,EAAKJ,QACMxX,IACTka,EA4+SV,WACE,IAAI5C,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAnlhBQ,cAolhBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjK,KAEpCyK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA9gTMiY,MACMvvB,IACTuY,EAAKf,QACMxX,IACT8a,EAAKwU,QACMtvB,GACTiW,GAAeqB,GAllQP8X,EAmlQMtU,GAllQhB0U,WAAY,EAmlQVlY,EAllQC,CAAC8X,KAwmQZpZ,GAAcsB,EACdA,EAAKtX,IAIFsX,EAGT,SAASgY,KACP,IAAIhY,EAAIK,EAAQC,EAAwBa,EA/mQlBnd,EAAMwL,EAAS2oB,EAisQrC,OAhFAnY,EAAKtB,IACL2B,EAAK+W,QACM1uB,IACT2X,EAAKyU,QACMpsB,IACT2X,EAAKK,MAGLL,IAAO3X,GACJwX,OACMxX,IACT4X,EAAK8Q,QACM1oB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GACJ6Y,OACM7Y,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTyY,EAAKmL,QACM5jB,GACHwX,OACMxX,GACJmb,OACMnb,GACViW,GAAeqB,EAjpQTxQ,EAkpQY8Q,EAlpQH6X,EAkpQOhX,EAjpQlB,iBADJnd,EAkpQcqc,KAjpQArc,EAAO,CAAE+D,KAAM,UAAWrD,MAAOV,IAC3DA,EAAKoL,QAAOpL,EAAO,CAAE+D,KAAM,UAAWrD,MAAOV,EAAKoL,QAipQtC4Q,EADAK,EA/oQT,CAAErc,OAAMm0B,OAAM3oB,aAkrQrBkP,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASoR,KACP,IAAIpR,EAAYM,EAqChB,OAnCAN,EAAKtB,GACAgF,OACMhb,GACJwX,OACMxX,IACT4X,EA2yDN,WACE,IAAIN,GAEJA,EAAKqQ,QACM3nB,IACTsX,EAo5LJ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAK+X,QACM1vB,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKkX,QACM1vB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKkX,QACM1vB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAK/V,EAAQ+V,EAAIJ,GACjBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAj+LAqY,IAGP,OAAOrY,EAnzDEsY,MACM5vB,GACJwX,OACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,EAEfA,EADcM,IAmBtB5B,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASiI,KACP,IAAIjI,EAAQC,EAAgBuD,EAAQC,EAAQ4S,EAAUxO,EAAUC,EAAUC,EAAUwQ,EAAUC,EAAUC,EAAKpT,EAAKqT,EAAKC,EAAKC,EAtuQtGd,EAAKe,EAAM90B,EAAGD,EAAGgoB,EAAGa,EAAGmM,EAAGnN,EAAGznB,EAAGR,EAAGq1B,EA+6QzD,OAvMA/Y,EAAKtB,GACAwB,OACMxX,IACTuX,EAAK4X,QACMnvB,IACTuX,EAAK,MAEHA,IAAOvX,GACJwX,OACMxX,GAwjSjB,WACE,IAAIsX,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA91gBQ,WA+1gBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxK,KAEpCgL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAzlSIgZ,KACMtwB,GACJuwB,OACMvwB,IACT8a,EA4LZ,WACE,IAAIxD,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAIxB,GAFAjB,EAAKtB,IACL2B,EAAK6Y,QACMxwB,EAAY,CAiBrB,IAhBAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKiY,QACMxwB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKiY,QACMxwB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EA38QS,SAASrX,EAAMC,GACtB,MAAM4vB,EAAO,CAAC7vB,GACd,IAAK,IAAIvF,EAAI,EAAGC,EAAIuF,EAAKlC,OAAQtD,EAAIC,IAAKD,EACxCo1B,EAAK/Y,KAAK7W,EAAKxF,GAAG,IAEpB,OAAOo1B,EAs8QJM,CAAS9Y,EAAIJ,GAClBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAjPQoZ,MACM1wB,IACT8a,EAAK,MAEHA,IAAO9a,GACJwX,OACMxX,IACT+a,EAAKmM,QACMlnB,IACT+a,EAAK,MAEHA,IAAO/a,GACJwX,OACMxX,IACT2tB,EAAMgD,QACM3wB,GACJwX,OACMxX,IACVmf,EAAM+C,QACMliB,IACVmf,EAAM,MAEJA,IAAQnf,GACJwX,OACMxX,IACVof,EAAMpC,QACMhd,IACVof,EAAM,MAEJA,IAAQpf,GACJwX,OACMxX,IACVqf,EAgrDhC,WACE,IAAI/H,EAAIK,EAAgBY,EAExBjB,EAAKtB,IACL2B,EA2pRF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAxljBQ,UAyljBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5I,KAEpCoJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA7rRFsZ,MACM5wB,GACJwX,OACMxX,GACJ6wB,OACM7wB,GACJwX,OACMxX,IACTuY,EAAK+V,QACMtuB,GACTiW,GAAeqB,EACfK,EAtxTG,CACL7Q,QAqxTgByR,EArxTLvc,OAsxTTsb,EAAKK,IAkBb3B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAttD6BwZ,MACM9wB,IACVqf,EAAM,MAEJA,IAAQrf,GACJwX,OACMxX,IACV6vB,EA6yDpC,WACE,IAAIvY,EAAYM,EAEhBN,EAAKtB,GAuoRP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAjsjBQ,WAksjBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzI,KAEpCiJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAxqRFyZ,KACM/wB,GACJwX,OACMxX,IACT4X,EAAKoZ,QACMhxB,GACTiW,GAAeqB,EAEfA,EADcM,IAWlB5B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAv0DiC2Z,MACMjxB,IACV6vB,EAAM,MAEJA,IAAQ7vB,GACJwX,OACMxX,IACV8vB,EAAM9L,QACMhkB,IACV8vB,EAAM,MAEJA,IAAQ9vB,GACJwX,OACMxX,IACV+vB,EAAM5N,QACMniB,IACV+vB,EAAM,MAEJA,IAAQ/vB,GACV2c,EAAM3G,GA3sStC,QA4sSoCnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B6kB,EAAMnwB,EAAMgY,OAAO7B,GAAa,GAChCA,IAAe,IAEfga,EAAMhwB,EACkB,IAApBuW,IAAyBY,GAAS7V,IAEpC0uB,IAAQhwB,IACViwB,EAAMzY,QACMxX,IACVkwB,EAAMrM,QACM7jB,EAEV2c,EADAqT,EAAM,CAACA,EAAKC,EAAKC,IAWrBla,GAAc2G,EACdA,EAAM3c,GAEJ2c,IAAQ3c,IACV2c,EAAM,MAEJA,IAAQ3c,GACViW,GAAeqB,EA/0QvC8X,EAg1QsC7X,EAh1QjC4Y,EAg1QqCrV,EAh1Q/Bzf,EAg1QmC0f,EAh1QhC3f,EAg1QoCuyB,EAh1Q9B1J,EAg1QwC7E,EAh1QrCgR,EAg1Q0C/Q,EAh1QvC4D,EAg1Q4C4M,EAh1QzCr0B,EAg1Q8Cs0B,EAh1Q3C90B,EAg1QgD+0B,EAh1Q7CM,EAg1QkD1T,GAh1QpEyG,EAg1QsCjE,IA/0Q/DiE,EAAE5c,QAAQ0qB,GAAQA,EAAKxqB,OAASwR,GAAUhR,IAAI,WAAWgqB,EAAK/Y,OAAO+Y,EAAKxqB,UAg1Q1C4Q,EA/0Q/B,CACH6Z,KAAM/B,EACN/vB,KAAM,SACNS,QAASqwB,EACTiB,SAAU/1B,EACVyL,QAAS1L,EACTgd,KAAMgL,EACN/F,MAAO4G,EACPoN,QAASjB,EACTkB,OAAQrO,EACR4B,QAASrpB,EACT6mB,MAAOrnB,EACPu2B,WAAYlB,GAAM,GAAGA,EAAG,MAAMA,EAAG,GAAG,QAq0QFra,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA2DT,SAASkZ,KACP,IAAIlZ,EAAIK,EAyBR,OAvBAL,EAAKtB,IACL2B,EA2qbF,WACE,IAAIL,EA93pBS,wBAg4pBTzX,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCmM,EAAKzX,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAShD,KAGxC,OAAOmD,EAtrbFka,MACMxxB,KACT2X,EAurbJ,WACE,IAAIL,EA14pBS,cA44pBTzX,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BmM,EAAKzX,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS/C,KAGxC,OAAOkD,EAlsbAma,MACMzxB,IACT2X,EAmsbN,WACE,IAAIL,EAt5pBS,iBAw5pBTzX,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCmM,EAAKzX,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS9C,KAGxC,OAAOiD,EA9sbEoa,IAEH/Z,IAAO3X,IACT2X,EA4tbN,WACE,IAAIL,EA96pBS,mBAg7pBTzX,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCmM,EAAKzX,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS5C,KAGxC,OAAO+C,EAvubEqa,MACM3xB,IACT2X,EA4sbR,WACE,IAAIL,EAl6pBS,qBAo6pBTzX,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCmM,EAAKzX,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS7C,KAGxC,OAAOgD,EAvtbIsa,MACM5xB,IACT2X,EAsubV,WACE,IAAIL,EA17pBS,sBA47pBTzX,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCmM,EAAKzX,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS3C,KAGxC,OAAO8C,EAjvbMua,KAKTla,IAAO3X,IACTiW,GAAeqB,EACfK,EAAcA,GAEhBL,EAAKK,EAKP,SAASgZ,KACP,IAAIrZ,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAiChC,GA/BAlB,EAAKtB,IACL2B,EAAKsP,QACMjnB,IACT2X,EAAK3B,IACLuB,EAAKua,QACM9xB,GACT4X,EAAK5B,GACLO,KACA2D,EAAKpC,KACLvB,KACI2D,IAAOla,EACT4X,OAAK,GAEL5B,GAAc4B,EACdA,EAAK5X,GAEH4X,IAAO5X,EAET2X,EADAJ,EAAK,CAACA,EAAIK,IAGV5B,GAAc2B,EACdA,EAAK3X,KAGPgW,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACT2X,EAAKma,OAGLna,IAAO3X,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKuZ,QACM/xB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKuZ,QACM/xB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA7kRS,SAASrX,EAAMC,GACpBsG,GAAWK,IAAI,sBACf,MAAM8qB,EAAO,CACX9Y,KAAM,CACJ7Z,KAAM,aACNqH,MAAO,KACP0P,OAAQ,KAEVzP,GAAI,MAEN,OAAIpG,GAAQA,EAAKlC,OAAS,EAAUmC,GAAWwxB,EAAMzxB,GAC9C,CAACyxB,GAkkRPC,CAASta,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAEP,GAAIsX,IAAOtX,EAGT,GAFAsX,EAAKtB,IACL2B,EAAKoa,QACM/xB,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKuZ,QACM/xB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKuZ,QACM/xB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAK/V,EAAQ+V,EAAIJ,KAGjBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAIT,OAAOsX,EAGT,SAASya,KACP,IAAIza,EAAIK,EAAIJ,EAAIK,EAAIsC,EA2EpB,OAzEA5C,EAAKtB,GACL2B,EAAK3B,IACLuB,EAAKuB,QACM9Y,IACT4X,EAAKJ,QACMxX,IACTka,EAAKgY,QACMlyB,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAWlBlE,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,IACTuX,EAAKC,QACMxX,IACT4X,EAAKka,QACM9xB,GACTiW,GAAeqB,EAEfA,EADAK,EA3rRO,SAASwa,GACd,MAAMzrB,EAAQyrB,GAAOA,EAAI,IAAM,KAE/B,OADAtrB,GAAWK,IAAI,WAAWR,WACnB,CACLwS,KAAM,CACJ7Z,KAAM,aACNqH,MAAOA,EACP0P,OAAQ,KAEVzP,GAAI,MAkrRHyrB,CAASza,KAWlB3B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAo4GJ,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKiB,QACM5Y,EAAY,CAmCrB,IAlCAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK8Z,QACMryB,IACTuY,EAAKuF,QACM9d,IACTuY,EAAK+Z,MAGL/Z,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKI,QACM5Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK8Z,QACMryB,IACTuY,EAAKuF,QACM9d,IACTuY,EAAK+Z,MAGL/Z,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKI,QACM5Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAtwXS,SAASrX,EAAMC,GACtB,MAAM8X,EAAM/X,EAAK+X,IACjB,GAAIA,GAAoB,WAAbA,EAAIhZ,SACPiB,EAAK4uB,oBAAsB5uB,EAAKiyB,aAAejyB,EAAK+X,IAAIka,aAAejyB,EAAK+X,IAAI6W,qBAA8C,IAAvB7W,EAAIvR,QAAQzI,QAA+C,MAA/Bga,EAAIvR,QAAQ,GAAGoS,KAAK9C,QAAgB,MAAM,IAAI9Y,MAAM,+CAE/L,IAAKiD,GAAwB,IAAhBA,EAAKlC,OAAc,OAAOiC,EACvC,MAAMkyB,EAAMjyB,EAAKlC,OACjB,IAAIo0B,EAASlyB,EAAKiyB,EAAM,GAAG,GAC3B,IAAK,IAAIz3B,EAAIy3B,EAAM,EAAGz3B,GAAK,EAAGA,IAAK,CACjC,MAAM23B,EAAa,IAAN33B,EAAUuF,EAAOC,EAAKxF,EAAI,GAAG,GAC1C03B,EAASE,GAAiBpyB,EAAKxF,GAAG,GAAI23B,EAAMD,GAE9C,OAAOA,EA0vXJG,CAASjb,EAAIJ,GAClBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA79GAub,MACM7yB,IACTuX,EAAKC,QACMxX,IACT4X,EAAKkb,QACM9yB,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAxsRO,CAAEuB,KAwsRKvB,EAxsRIhR,GAwsRAiR,KAGlB5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,IAIFsX,EAGT,SAASwb,KACP,IAAIxb,EAAIK,EAAQC,EAoDhB,OAlDAN,EAAKtB,IACL2B,EAAKkB,QACM7Y,GACJuwB,OACMvwB,IACT4X,EAm8KN,WACE,IAAIN,EAAIK,EAERL,EAAKtB,IACL2B,EAAKyU,QACMpsB,GACTiW,GAAeD,IAzlbJ,SAAS1a,GACd,IAAwC,IAApCmO,GAAYnO,EAAK2D,eAAyB,MAAM,IAAI3B,MAAM,UAAWy1B,KAAKC,UAAU13B,GAAM,gDAC9F,OAAO,EAwlbR23B,CAAStb,GAEP3X,OAEA,KAEIA,GACTiW,GAAeqB,EAEfA,EADAK,EAAcA,IAGd3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKub,QACMlzB,IACTiW,GAAeqB,EACfK,EAAcA,GAEhBL,EAAKK,GAGP,OAAOL,EAt+KE6b,MACMnzB,GACTiW,GAAeqB,EAEfA,EADAK,EAAcC,IAWlB5B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKkB,QACM7Y,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKkB,QACM9Y,GACTiW,GAAeqB,EAEfA,EADAK,EAAcC,IAWlB5B,GAAcsB,EACdA,EAAKtX,IAIFsX,EAGT,SAAS4K,KACP,IAAI5K,EAAYM,EAyBhB,OAvBAN,EAAKtB,GA6gSP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA/2hBQ,SAg3hBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5J,KAEpCoK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA9iSF8b,KACMpzB,GACJwX,OACMxX,IACT4X,EAAK4B,QACMxZ,GACTiW,GAAeqB,EAEfA,EADcM,IAWlB5B,GAAcsB,EACdA,EAAKtX,GAGAsX,EAmFT,SAAS0I,KACP,IAAI1I,EAAIK,EAAgBY,EAqCxB,OAnCAjB,EAAKtB,IACL2B,EAAKK,QACMhY,GACJwX,OACMxX,GACJgtB,OACMhtB,GACJwX,OACMxX,IACTuY,EAAKP,QACMhY,GACTiW,GAAeqB,EAEfA,EADAK,EA14RK,CA04RSA,EAAIY,KAmB1BvC,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASuF,KACP,IAAIvF,EAAYM,EAwChB,OAtCAN,EAAKtB,GACA2M,OACM3iB,GACJwX,OACMxX,GAz6RA,UA06RLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASnR,KAEpC4R,IAAO5X,IA/6RF,SAg7RHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASlR,MAGtC2R,IAAO5X,GACTiW,GAAeqB,EAEfA,EAx7RO,CACLqC,QAAS,QACTta,KAq7RYuY,EAr7RJzM,iBAw7RV6K,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASqR,KACP,IAAIrR,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAIxB,GAFAjB,EAAKtB,IACL2B,EAAK0b,QACMrzB,EAAY,CAiBrB,IAhBAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK8a,QACMrzB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK8a,QACMrzB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA9+RS,SAASrX,EAAMC,GACtB,MAAMkyB,EAAS,CAACnyB,GAChB,IAAK,IAAIvF,EAAI,EAAGA,EAAIwF,EAAKlC,OAAQtD,IAC/B03B,EAAOrb,KAAK7W,EAAKxF,GAAG,IAEtB,OAAO03B,EAy+RJa,CAAS3b,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAAS+b,KACP,IAAI/b,EAAIK,EAAQC,EAAQW,EAt/RCQ,EAAGwa,EA4mS5B,OApHAjc,EAAKtB,IACL2B,EA67ZF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA/vsBQ,mBAgwsBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7S,KAEpCqT,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAvwpB6B,mBA0wpB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAh+ZFkc,MACMxzB,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKiW,QACMxuB,GACTiW,GAAeqB,EAtgSAyB,EAugSGnB,EAvgSA2b,EAugSIhb,EACtBjB,EADAK,EAtgSG,CACLtY,KAqgSgBsY,EArgSRxM,cACRogB,OAAQxS,EACRG,KAAMqa,KA8gSRvd,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKuF,QACM7c,IACTsX,EAAKtB,GAzhSI,SA0hSLnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjR,KAEpCyR,IAAO3X,GACJwX,OACMxX,GAjiSJ,WAkiSDH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAShR,KAEpCyR,IAAO5X,GACJwX,OACMxX,IACTuY,EAAK6T,QACMpsB,GACTiW,GAAeqB,EAEfA,EADAK,EA5iSD,CACLtY,KAAM,cACN6Z,KA0iSoBX,KAWlBvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GA9jSE,YA+jSHnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/Q,KAEpCuR,IAAO3X,IApkSJ,cAqkSDH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9Q,MAGtCsR,IAAO3X,IACTiW,GAAeqB,EACfK,EA7kSK,SAAS2E,GAChB,MAAO,CACLjd,KAAMid,EAAEnR,cACR+N,KAAMoD,EAAEnR,eA0kSHsoB,CAAS9b,KAEhBL,EAAKK,KACM3X,IACTsX,EAAK0S,QAMN1S,EAGT,SAASkC,KACP,IAAIlC,EAAIK,EAAIJ,EAAIK,EAIhB,GAFAN,EAAKtB,IACL2B,EAAKoX,QACM/uB,EAAY,CAGrB,IAFAuX,EAAK,GACLK,EAAK8b,KACE9b,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK8b,KAEHnc,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAKrR,GAASqR,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASoc,KACP,IAAIpc,EAAQC,EAAQ2C,EAiDpB,OA/CA5C,EAAKtB,GACAwB,OACMxX,IACTuX,EAAK2D,QACMlb,GACJwX,OACMxX,IACTka,EAAK6U,QACM/uB,GACTiW,GAAeqB,EAEfA,EADc4C,IAepBlE,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GACAwB,OACMxX,IACTuX,EAkBN,WACE,IAAID,EAAIK,EAAQC,EAAQW,EAAgBE,EAAIkV,EAAKvU,EAAK+F,EAAK1E,EAAK2E,EAAK3C,EAIrE,GAFAnF,EAAKtB,IACL2B,EAAKgc,QACM3zB,EAET,GADKwX,OACMxX,EAET,IADA4X,EAAKmX,QACM/uB,EAET,GADKwX,OACMxX,EAET,IADAuY,EAAKoK,QACM3iB,EAET,GADKwX,OACMxX,EAET,GADKgb,OACMhb,EAET,GADKwX,OACMxX,EAET,IADAyY,EAAK0R,QACMnqB,EAAY,CA6BrB,IA5BA2tB,EAAM,GACNvU,EAAMpD,IACNmJ,EAAM3H,QACMxX,IACVya,EAAMS,QACMlb,IACVof,EAAM5H,QACMxX,IACVyc,EAAM0N,QACMnqB,EAEVoZ,EADA+F,EAAM,CAACA,EAAK1E,EAAK2E,EAAK3C,IAe5BzG,GAAcoD,EACdA,EAAMpZ,GAEDoZ,IAAQpZ,GACb2tB,EAAIvW,KAAKgC,GACTA,EAAMpD,IACNmJ,EAAM3H,QACMxX,IACVya,EAAMS,QACMlb,IACVof,EAAM5H,QACMxX,IACVyc,EAAM0N,QACMnqB,EAEVoZ,EADA+F,EAAM,CAACA,EAAK1E,EAAK2E,EAAK3C,IAe5BzG,GAAcoD,EACdA,EAAMpZ,GAGN2tB,IAAQ3tB,IACVoZ,EAAM5B,QACMxX,IACVmf,EAAMhE,QACMnb,GACViW,GAAeqB,EA/uSjBgD,EAgvSgB3C,EAhvSTrX,EAgvSiBmY,EAhvSXlY,EAgvSeotB,GAhvSxB1xB,EAgvSgB2b,GA/uShCpY,KAAO8a,EACTre,EAAE23B,MAAQpzB,GAAWF,EAAMC,GA+uSX+W,EADAK,EA7uST1b,IAwvSK+Z,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAhySM,IAASsa,EAAIre,EAAGqE,EAAMC,EAkyS/B+W,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKgc,QACM3zB,GACJwX,OACMxX,IACT4X,EAAKmX,QACM/uB,GACJwX,OACMxX,IACTuY,EAAKsb,QACM7zB,IACTuY,EAAK,MAEHA,IAAOvY,GACTiW,GAAeqB,EACfK,EA7ySC,SAAS2C,EAAIre,EAAGid,GAGrB,OAFAjd,EAAEuD,KAAO8a,EACTre,EAAEihB,GAAOhE,EACFjd,EA0ySE63B,CAASnc,EAAIC,EAAIW,GACtBjB,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKgc,QACM3zB,IACT2X,EAAKoP,MAEHpP,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKoD,QACMhb,GACJwX,OACMxX,IACTuY,EAAKqL,QACM5jB,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACTyY,EAAKqa,QACM9yB,IACTyY,EAAK,MAEHA,IAAOzY,IACT2tB,EAAMnW,QACMxX,IACVoZ,EAAMya,QACM7zB,IACVoZ,EAAM,MAEJA,IAAQpZ,GACViW,GAAeqB,EACfK,EAh2Sb,SAAS2C,EAAImV,EAAMsE,EAAO7a,GAEjC,OADAuW,EAAK8C,aAAc,EACZ,CACLrZ,KAAMuW,EACN9oB,GAAIotB,EACJv0B,KAAM8a,EACN4C,GAAIhE,GA01SmB8a,CAASrc,EAAIY,EAAIE,EAAIW,GAC1B9B,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KA+BrBgW,GAAcsB,EACdA,EAAKtX,KAKX,OAAOsX,EAnRE2c,MACMj0B,GACTiW,GAAeqB,EAEfA,EADcC,IAOhBvB,GAAcsB,EACdA,EAAKtX,IAIFsX,EAuQT,SAASyX,KACP,IAAIzX,EAAIK,EAAQC,EAAQW,EAAQC,EAAQC,EAuJxC,OArJAnB,EAAKtB,IACL2B,EAgrYF,WACE,IAAIL,EAx8oBS,SA08oBTzX,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BmM,EAAKzX,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS1D,KAGxC,OAAO6D,EA3rYF4c,MACMl0B,IACTiW,GAAeqB,EACfK,EAj5Sa,CACLtY,KAAM,UAk5ShBiY,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EAAKyU,QACMpsB,GACJwX,OACMxX,IACT4X,EAAKoD,QACMhb,GACJwX,OACMxX,IACTuY,EAAK+V,QACMtuB,GACJwX,OACMxX,IACTwY,EAAK2C,QACMnb,GACJwX,OACMxX,IACTyY,EAAKqa,QACM9yB,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EAEfA,EADAK,EAv6SL,CACLuB,KAAM,CACJ7Z,KAAM,WACN/D,KAAM,CAAEA,KAAM,CAAC,CAAE+D,KAAM,UAAWrD,MAo6SZ2b,KAn6StBsG,KAm6S0B1F,GAj6S5B5R,GAi6SgC8R,KAGtBzC,GAAcsB,EACdA,EAAKtX,KA+BrBgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKK,QACMhY,GACJwX,OACMxX,IACT4X,EAAKkb,QACM9yB,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAh9SG,SAAS1b,EAAG83B,GACjB,MAAe,QAAX93B,EAAEoD,MACJpD,EAAE0K,GAAKotB,EACA93B,GAEA,CACLkc,GAAIlc,EAAEkc,GACNzR,MAAOzK,EAAEyK,MACTC,GAAIotB,GAw8SDI,CAASxc,EAAIC,KAGlB5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKqD,QACMhb,GACJwX,OACMxX,IACT4X,EAAKgM,QACM5jB,GACJwX,OACMxX,IACTuY,EAAK4C,QACMnb,GACJwX,OACMxX,IACTwY,EAAKsa,QACM9yB,IACTwY,EAAK,MAEHA,IAAOxY,GACTiW,GAAeqB,EAEfA,EADAK,EAt+SP,SAAS8X,EAAMsE,GAEpB,OADAtE,EAAK8C,aAAc,EACZ,CACLrZ,KAAMuW,EACN9oB,GAAIotB,GAk+SWK,CAASxc,EAAIY,KAGlBxC,GAAcsB,EACdA,EAAKtX,KAuBjBgW,GAAcsB,EACdA,EAAKtX,MAMNsX,EAGT,SAASqc,KACP,IAAIrc,EAAIK,EAAIJ,EAAIK,EA2EhB,OAzEAN,EAAKtB,IACL2B,EAqkRF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAxviBQ,SAyviBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrJ,KAEpC6J,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAvmRF+c,MACMr0B,IACTuX,EAAKC,QACMxX,IACT4X,EAgrRN,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAj2iBQ,UAk2iBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlJ,KAEpC0J,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAltREgd,MACMt0B,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,GACJu0B,OACMv0B,GACTiW,GAAeqB,EAEfA,EADAK,EAthTuB,cAiiT3B3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GACL2B,EAAK3B,IACLuB,EAmkRJ,WACE,IAAID,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA3xiBQ,UA4xiBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpJ,KAEpC4J,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EArmRAkd,MACMx0B,IACT4X,EAAKJ,QACMxX,EAET2X,EADAJ,EAAK,CAACA,EAAIK,IAOZ5B,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,IACTuX,EAAKgd,QACMv0B,GACTiW,GAAeqB,EAEfA,EADAK,EAnkT2B,eA0kT7B3B,GAAcsB,EACdA,EAAKtX,IAIFsX,EAGT,SAASU,KACP,IAAIV,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EA1kTN0E,EAmoTtB,OAvDAlI,EAAKtB,IACL2B,EAAKmB,QACM9Y,GACTuX,EAAKvB,IACL4B,EAAKJ,QACMxX,IACTka,EAAKgY,QACMlyB,IACTuY,EAAKf,QACMxX,IACT8a,EAAKhC,QACM9Y,EAETuX,EADAK,EAAK,CAACA,EAAIsC,EAAI3B,EAAIuC,IAexB9E,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,IACTuX,EAAK,MAEHA,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAvnTS,SAASwI,EAAI5f,GAClB,MAAMk0B,EAAM,CAAEtc,GAAI,KAAMzR,MAAOyZ,GAK/B,OAJa,OAAT5f,IACFk0B,EAAItc,GAAKgI,EACTsU,EAAI/tB,MAAQnG,EAAK,IAEZk0B,EAinTNC,CAAS/c,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKgd,QACM30B,IACTiW,GAAeqB,GA7nTGkI,EA8nTJ7H,GA7nTRQ,GAAK,KACPqH,EAAE9Y,MAAQ8Y,EAAElkB,KA4nThBqc,EA3nTW6H,GA6nTblI,EAAKK,GAGAL,EAGT,SAASuT,KACP,IAAIvT,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKiB,QACM5Y,EAAY,CAgCrB,IA/BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK8Z,QACMryB,IACTuY,EAAKuF,MAEHvF,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKI,QACM5Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK8Z,QACMryB,IACTuY,EAAKuF,MAEHvF,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKI,QACM5Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAzsTS,SAASrX,EAAMC,GACtB,MAAMiyB,EAAMjyB,EAAKlC,OACjB,IAAIo0B,EAASnyB,EACb,IAAK,IAAIvF,EAAI,EAAGA,EAAIy3B,IAAOz3B,EACzB03B,EAASE,GAAiBpyB,EAAKxF,GAAG,GAAI03B,EAAQlyB,EAAKxF,GAAG,IAExD,OAAO03B,EAmsTJmC,CAASjd,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASuc,KACP,IAAIvc,EAAYM,EAyBhB,OAvBAN,EAAKtB,GACAiE,OACMja,GACJwX,OACMxX,IACT4X,EAAKoZ,QACMhxB,GACTiW,GAAeqB,EAEfA,EADcM,IAWlB5B,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS0F,KACP,IAAI1F,EAAYM,EAyBhB,OAvBAN,EAAKtB,GA+mRP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAhhjBQ,UAihjBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7I,KAEpCqJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAhpRFud,KACM70B,GACJwX,OACMxX,IACT4X,EAAKoZ,QACMhxB,GACTiW,GAAeqB,EAEfA,EADcM,IAWlB5B,GAAcsB,EACdA,EAAKtX,GAGAsX,EAuDT,SAASqQ,KACP,IAAIrQ,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKqC,QACMha,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKwB,QACMha,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKwB,QACMha,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAK/V,EAAQ+V,EAAIJ,KAGjBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAgCT,SAAS0M,KACP,IAAI1M,EAAoBiB,EAqCxB,OAnCAjB,EAAKtB,GAqkRP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA9pjBQ,UA+pjBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1I,KAEpCkJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAtmRFwd,KACM90B,GACJwX,OACMxX,GACJ6wB,OACM7wB,GACJwX,OACMxX,IACTuY,EA6BV,WACE,IAAIjB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKod,QACM/0B,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKuc,QACM/0B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKuc,QACM/0B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAK/V,EAAQ+V,EAAIJ,GACjBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA1GM0d,MACMh1B,GACTiW,GAAeqB,EAEfA,EADciB,IAmBtBvC,GAAcsB,EACdA,EAAKtX,GAGAsX,EAmFT,SAASyd,KACP,IAAIzd,EAAIK,EAAQC,EA+BhB,OA7BAN,EAAKtB,IACL2B,EAAKiB,QACM5Y,GACJwX,OACMxX,IACT4X,EAAK4L,QACMxjB,IACT4X,EAAKkQ,MAEHlQ,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EA7iUY,CAAEuB,KA6iUAvB,EA7iUStY,KA6iULuY,KAGlB5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS2d,KACP,IAAI3d,EAOJ,OALAA,EAAKkX,QACMxuB,IACTsX,EAAK4d,MAGA5d,EAGT,SAAS6K,KACP,IAAI7K,EAAYM,EAAQW,EAAIuC,EAAItC,EAAIuC,EA+DpC,OA7DAzD,EAAKtB,GAw+QP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GApujBQ,UAqujBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxI,KAEpCgJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAzgRF6d,KACMn1B,GACJwX,OACMxX,IACT4X,EAAKqd,QACMj1B,GACJwX,OACMxX,GACTuY,EAAKvC,IACL8E,EAAKI,QACMlb,IACT8a,EAigRZ,WACE,IAAIxD,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAvwjBQ,WAwwjBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvI,KAEpC+I,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA1xjB6B,WA6xjB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EApiRQ8d,IAEHta,IAAO9a,IACTwY,EAAKhB,QACMxX,IACT+a,EAAKka,QACMj1B,EAETuY,EADAuC,EAAK,CAACA,EAAItC,EAAIuC,IAWlB/E,GAAcuC,EACdA,EAAKvY,GAEHuY,IAAOvY,IACTuY,EAAK,MAEHA,IAAOvY,GACTiW,GAAeqB,EAEfA,EAjnUG,SAAS+d,EAAI90B,GAClB,MAAM+0B,EAAM,CAACD,GAEb,OADI90B,GAAM+0B,EAAIle,KAAK7W,EAAK,IACjB,CACLg1B,UAAWh1B,GAAQA,EAAK,IAAMA,EAAK,GAAG4K,eAAiB,GACvDnP,MAAOs5B,GA2mUFE,CAAS5d,EAAIW,KAGlBvC,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA4NT,SAASwM,KACP,IAAIxM,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAK8d,QACMz1B,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKid,QACMz1B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKid,QACMz1B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAK/V,EAAQ+V,EAAIJ,KAGjBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASme,KACP,IAAIne,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAQC,EAAiBY,EA32U3B+Y,EA0iVtB,OA7LA7a,EAAKtB,GACL2B,EAAK3B,IACLuB,EAAKuB,QACM9Y,IACT4X,EAAKJ,QACMxX,IACTka,EAAKgY,QACMlyB,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAWlBlE,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,IACTuX,EAAKC,QACMxX,IACT4X,EAAK8T,QACM1rB,IACTka,EAAK1C,QACMxX,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnBuC,EAh5UG,IAi5UHvC,OAEAuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS/P,KAEpCmR,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKkd,QACM11B,GACTiW,GAAeqB,EAEfA,EADAK,EAz5UC,CAAEvB,OAy5UewB,EAz5UJ5b,MAy5UQwc,EAz5UE9R,OADhByrB,EA05UMxa,IAz5UwBwa,EAAI,MAo6U9Cnc,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GACL2B,EAAK3B,IACLuB,EAAKuB,QACM9Y,IACT4X,EAAKJ,QACMxX,IACTka,EAAKgY,QACMlyB,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAWlBlE,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,IACTuX,EAAKC,QACMxX,IACT4X,EAAK8T,QACM1rB,IACTka,EAAK1C,QACMxX,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnBuC,EA59UC,IA69UDvC,OAEAuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAAS/P,KAEpCmR,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKmd,QACM31B,GACJwX,OACMxX,GACJgb,OACMhb,GACHwX,OACMxX,IACVoZ,EAAMY,QACMha,GACJwX,OACMxX,GACJmb,OACMnb,GACViW,GAAeqB,EAEfA,EADAK,EA/+Uf,SAASwa,EAAK/2B,EAAGokB,GACtB,MAAO,CAAEpJ,OAAQhb,EAAGY,MAAOwjB,EAAG9Y,MAAOyrB,GAAOA,EAAI,GAAIxY,QAAS,UA8+UpCic,CAASje,EAAIC,EAAIwB,KAmCtCpD,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,IAIFsX,EAGT,SAASyM,KACP,IAAIzM,EAAIK,EAAQC,EAxiVM0E,EAAGlhB,EAokVzB,OA1BAkc,EAAKtB,IACL2B,EA01NF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA9rhBQ,cA+rhBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/J,KAEpCuK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAjthB6B,cAothB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA73NFue,MACM71B,GACJwX,OACMxX,IACT4X,EAAK+Y,QACM3wB,IACT4X,EAAKiE,MAEHjE,IAAO5X,GACTiW,GAAeqB,EApjVIlc,EAqjVDwc,EAClBN,EADAK,EAnjVO,CACLtY,MAHcid,EAqjVF3E,IAljVD2E,EAAEnR,eAAiB,YAC9BrE,QAAe,MAAN1L,GAAa,CAAC,CAAEiE,KAAM,OAAQ6Z,KAAM,CAAE7Z,KAAM,aAAcqH,MAAO,KAAM0P,OAAQ,KAAOzP,GAAI,QAAWvL,KAojVhH4a,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS6N,KACP,IAAI7N,EAOJ,OALAA,EA+oBF,WACE,IAAIA,EAAYM,EAEhBN,EAAKtB,GACA2f,OACM31B,GACJwX,OACMxX,IACT4X,EAqBN,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKme,QACM91B,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKsd,QACM91B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKsd,QACM91B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAK/V,EAAQ+V,EAAIJ,GACjBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAlGEye,MACM/1B,GACTiW,GAAeqB,EAEfA,EADcM,IAWlB5B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAzqBF0e,MACMh2B,IACTsX,EAAKiI,MAGAjI,EAGT,SAAS4N,KACP,IAAI5N,EAAYM,EAAQW,EAAIuC,EAAItC,EAAIuC,EAAItC,EAAIkV,EAAKvU,EAIjD,GAFA9B,EAAKtB,GACAigB,OACMj2B,EAET,GADKwX,OACMxX,EAET,IADA4X,EAAKoD,QACMhb,EAET,GADKwX,OACMxX,EAET,IADAuY,EAAK6T,QACMpsB,EAAY,CA6BrB,IA5BA8a,EAAK,GACLtC,EAAKxC,IACL+E,EAAKvD,QACMxX,IACTyY,EAAKyC,QACMlb,IACT2tB,EAAMnW,QACMxX,IACVoZ,EAAMgT,QACMpsB,EAEVwY,EADAuC,EAAK,CAACA,EAAItC,EAAIkV,EAAKvU,IAezBpD,GAAcwC,EACdA,EAAKxY,GAEAwY,IAAOxY,GACZ8a,EAAG1D,KAAKoB,GACRA,EAAKxC,IACL+E,EAAKvD,QACMxX,IACTyY,EAAKyC,QACMlb,IACT2tB,EAAMnW,QACMxX,IACVoZ,EAAMgT,QACMpsB,EAEVwY,EADAuC,EAAK,CAACA,EAAItC,EAAIkV,EAAKvU,IAezBpD,GAAcwC,EACdA,EAAKxY,GAGL8a,IAAO9a,IACTwY,EAAKhB,QACMxX,IACT+a,EAAKI,QACMnb,GACTiW,GAAeqB,EAEfA,EAzpVD9W,GAwpVe+X,EAAIuC,KAWtB9E,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EA2BP,OAzBIsX,IAAOtX,IACTsX,EAAKtB,GACAigB,OACMj2B,GACJwX,OACMxX,IACT4X,EAAKke,QACM91B,GACTiW,GAAeqB,EAEfA,EADcM,IAWlB5B,GAAcsB,EACdA,EAAKtX,IAIFsX,EAgVT,SAAS8N,KACP,IAAI9N,EAAYM,EAAwBa,EAmExC,OAjEAnB,EAAKtB,GACAiE,OACMja,GACJwX,OACMxX,GA/9VA,cAg+VLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS9P,KAEpCuQ,IAAO5X,GACJwX,OACMxX,GACJwoB,OACMxoB,GACJwX,OACMxX,GACJ6jB,OACM7jB,GACJwX,OACMxX,IACTyY,EAAKqL,QACM9jB,GACTiW,GAAeqB,EAEfA,EAn/VL,CACLqC,QAAS,0BACTgL,IAg/VwBlM,KA2B1BzC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS0N,KACP,IAAI1N,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAmG5B,OAjGAxD,EAAKtB,IACL2B,EAAK+P,QACM1nB,GACTuX,EAAKvB,IACL4B,EAAKJ,QACMxX,IACTka,EAAK4D,QACM9d,IACTuY,EAAKf,QACMxX,GAniWJ,UAoiWDH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B2P,EAAKjb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS7P,KAEpCwT,IAAO9a,IAziWN,SA0iWCH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B2P,EAAKjb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS5P,KAEpCuT,IAAO9a,IA/iWR,WAgjWGH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B2P,EAAKjb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS3P,KAEpCsT,IAAO9a,IArjWV,YAsjWKH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B2P,EAAKjb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS1P,KAEpCqT,IAAO9a,IA3jWZ,aA4jWOH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/B2P,EAAKjb,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASzP,SAM5CoT,IAAO9a,EAETuX,EADAK,EAAK,CAACA,EAAIsC,EAAI3B,EAAIuC,IAGlB9E,GAAcuB,EACdA,EAAKvX,KAWXgW,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,IACTuX,EAAK,MAEHA,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA7lWS,SAASpX,GAChB,MAAMkyB,EAAS,CACbpzB,KAAM,UAER,OAAKkB,GAAwB,IAAhBA,EAAKlC,QAGlBo0B,EAAOvO,GAAK,CACV,CACE7kB,KAAM,SACNrD,MAAO,MAET,CACEqD,KAAM,SACNrD,MAAOuE,EAAK,KAGTkyB,GAZEA,EAwlWNyD,CAAS3e,KAGdvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EA6mMJ,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA7tiBQ,YA8tiBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1P,KAEpCkQ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA/oMA6e,MACMn2B,IACTiW,GAAeqB,EACfK,EAxlWS,CAAEtY,KAAM,YA0lWnBiY,EAAKK,GAGAL,EAgHT,SAASwe,KACP,IAAIxe,EAAYM,EAqChB,OAnCAN,EAAKtB,GACAgF,OACMhb,GACJwX,OACMxX,IACT4X,EAAK0W,QACMtuB,GACJwX,OACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,EAEfA,EADcM,IAmBtB5B,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASgX,KACP,IAAIhX,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKiB,QACM5Y,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKI,QACM5Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKI,QACM5Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAnzWS,SAASrX,EAAMC,GACpB,MAAM61B,EAAK,CAAE/2B,KAAM,aAEnB,OADA+2B,EAAGp6B,MAAQwE,GAAWF,EAAMC,GACrB61B,EAgzWNC,CAAS1e,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASgf,KACP,IAAIhf,EAAYM,EAAQW,EAqCxB,OAnCAjB,EAAKtB,GA6tSP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA1vnBQ,aA2vnBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShF,KAEpCwF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA7wnB6B,aAgxnB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA/vSFif,KACMv2B,GACJwX,OACMxX,IACT4X,EAAKgB,QACM5Y,GACJwX,OACMxX,IACTuY,EAsjWV,WACE,IAAIjB,GAEJA,EA/zDF,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA7xnBQ,SA8xnBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/E,KAEpCuF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAhznB6B,SAmznB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA4xDFkf,MACMx2B,IACTsX,EA3xDJ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAh0nBQ,UAi0nBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9E,KAEpCsF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAn1nB6B,UAs1nB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAwvDAmf,MACMz2B,IACTsX,EAvvDN,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAn2nBQ,QAo2nBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7E,KAEpCqF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAt3nB6B,QAy3nB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAotDEof,MACM12B,IACTsX,EAntDR,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAt4nBQ,SAu4nBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5E,KAEpCoF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAz5nB6B,SA45nB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAgrDIqf,MACM32B,IACTsX,EA/qDV,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAz6nBQ,WA06nBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3E,KAEpCmF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA57nB6B,WA+7nB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA4oDMsf,MACM52B,IACTsX,EA3oDZ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA58nBQ,WA68nBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1E,KAEpCkF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA/9nB6B,WAk+nB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAwmDQuf,IAOf,OAAOvf,EA1kWMwf,MACM92B,GACTiW,GAAeqB,EAEfA,EA30WK,CACLjY,KAAM,WACN6Z,KAw0WctB,EAv0Wdmf,KAu0WkBxe,EAv0WVpN,iBA01WhB6K,GAAcsB,EACdA,EAAKtX,GAGAsX,EAwJT,SAAS0f,KACP,IAAI1f,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAI5B,GAFAxD,EAAKtB,IACL2B,EAAKsf,QACMj3B,EAET,GADKwX,OACMxX,EAAY,CAiBrB,IAhBA4X,EAAK,GACLsC,EAAKlE,IACLuC,EAAKf,QACMxX,IACT8a,EAAKmc,QACMj3B,EAETka,EADA3B,EAAK,CAACA,EAAIuC,IAOZ9E,GAAckE,EACdA,EAAKla,GAEAka,IAAOla,GACZ4X,EAAGR,KAAK8C,GACRA,EAAKlE,IACLuC,EAAKf,QACMxX,IACT8a,EAAKmc,QACMj3B,EAETka,EADA3B,EAAK,CAACA,EAAIuC,IAOZ9E,GAAckE,EACdA,EAAKla,GAGL4X,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAAKtX,EAAOsX,EAAIC,KAGhB5B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAAS2f,KACP,IAAI3f,EAAYM,EAAgBY,EAiDhC,OA/CAlB,EAAKtB,GACAmI,OACMne,GACJwX,OACMxX,IACT4X,EAAKoZ,QACMhxB,GACJwX,OACMxX,GAgtPnB,WACE,IAAIsX,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAlllBQ,SAmllBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShH,KAEpCwH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAjvPM4f,KACMl3B,GACJwX,OACMxX,IACTwY,EAAKI,QACM5Y,GACTiW,GAAeqB,EAEfA,EApjXD,CACLjY,KAAM,OACN+e,KAijXoBxG,EAhjXpB6a,OAgjXwBja,KA2B9BxC,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS6f,KACP,IAAI7f,EAAYM,EAyBhB,OAvBAN,EAAKtB,GAwsPP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GArnlBQ,SAsnlBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/G,KAEpCuH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAzuPF8f,KACMp3B,GACJwX,OACMxX,IACT4X,EAAKgB,QACM5Y,GACTiW,GAAeqB,EAEfA,EA1lXO,CAAEjY,KAAM,OAAQozB,OAylXT7a,KAWlB5B,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS+f,KACP,IAAI/f,EAOJ,OALAA,EAuQF,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAK2f,QACMt3B,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAKqW,QACMvwB,IACTuY,EAAKuF,QACM9d,IACT8a,EAAKtD,QACMxX,IACTwY,EAAK8e,QACMt3B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAKqW,QACMvwB,IACTuY,EAAKuF,QACM9d,IACT8a,EAAKtD,QACMxX,IACTwY,EAAK8e,QACMt3B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EACfK,EAAKhQ,GAASgQ,EAAIJ,GAClBD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EApVFigB,MACMv3B,IACTsX,EAiBJ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAIxB,GAFAjB,EAAKtB,IACL2B,EAAK6f,QACMx3B,EAAY,CAiBrB,GAhBAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKkf,QACMz3B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAEH4X,IAAO5X,EACT,KAAO4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKkf,QACMz3B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,QAITuX,EAAKvX,EAEHuX,IAAOvX,GACTiW,GAAeqB,EACfK,EA5qXS+f,GA4qXK/f,EAAIJ,EA5qXgB,GAAG,IA6qXrCD,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA1EAqgB,IAGArgB,EAGT,SAASsB,KACP,IAAItB,EAOJ,OALAA,EAAK+f,QACMr3B,IACTsX,EAAKsM,MAGAtM,EA2JT,SAAS0Z,KACP,IAAI1Z,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKiB,QACM5Y,EAAY,CAmCrB,IAlCAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK8Z,QACMryB,IACTuY,EAAKuF,QACM9d,IACTuY,EAAK2C,MAGL3C,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKI,QACM5Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK8Z,QACMryB,IACTuY,EAAKuF,QACM9d,IACTuY,EAAK2C,MAGL3C,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKI,QACM5Y,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAp1XS,SAASrX,EAAMC,GACtB,MAAMiyB,EAAMjyB,EAAKlC,OACjB,IAAIo0B,EAASnyB,EACTi1B,EAAY,GAChB,IAAK,IAAIx6B,EAAI,EAAGA,EAAIy3B,IAAOz3B,EACN,MAAfwF,EAAKxF,GAAG,IACVw6B,EAAY,IACPj3B,MAAMkkB,QAAQiQ,KAASA,EAAS,CAACA,IACtCA,EAAOrb,KAAK7W,EAAKxF,GAAG,KAEpB03B,EAASE,GAAiBpyB,EAAKxF,GAAG,GAAI03B,EAAQlyB,EAAKxF,GAAG,IAG1D,GAAkB,MAAdw6B,EAAmB,CACrB,MAAMa,EAAK,CAAE/2B,KAAM,aAEnB,OADA+2B,EAAGp6B,MAAQy2B,EACJ2D,EAET,OAAO3D,EAk0XJmF,CAASjgB,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAmFT,SAASggB,KACP,IAAIhgB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKkgB,QACM73B,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAKqW,QACMvwB,IACTuY,EAAK8Z,QACMryB,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKqf,QACM73B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAKqW,QACMvwB,IACTuY,EAAK8Z,QACMryB,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKqf,QACM73B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAKhQ,GAASgQ,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASugB,KACP,IAAIvgB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAqEpB,OAnEA5C,EAAKwgB,QACM93B,IACTsX,EA0GJ,WACE,IAAIA,EAAIK,EAAgBY,EAExBjB,EAAKtB,IACL2B,EAiDF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAAIsC,EAEpB5C,EAAKtB,GACL2B,EAAK3B,IACLuB,EAAKiQ,QACMxnB,IACT4X,EAAKJ,QACMxX,IACTka,EAAKuN,QACMznB,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAWlBlE,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAAK7P,GAAS6P,KAEhBL,EAAKK,KACM3X,IACTsX,EAAKmQ,MAGP,OAAOnQ,EAnFFygB,MACM/3B,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAAKqL,QACM5jB,GACJwX,OACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,EAlmYPgD,EAmmYM3C,GAnmYF8X,EAmmYMlX,GAlmYrBga,aAAc,EAkmYX5a,EAjmYD+f,GAAgBpd,EAAImV,GAkmYnBnY,EAAKK,IA0BjB3B,GAAcsB,EACdA,EAAKtX,GA/nYM,IAASsa,EAAImV,EAkoY1B,OAAOnY,EA5JA0gB,MACMh4B,IACTsX,EAAKtB,IACL2B,EAAK6P,QACMxnB,IACT2X,EAAK3B,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBuB,EAv/XK,IAw/XLvB,OAEAuB,EAAKvX,EACmB,IAApBuW,IAAyBY,GAAStP,KAEpC0P,IAAOvX,GACT4X,EAAK5B,GACLO,KACsC,KAAlC1W,EAAMd,WAAWiX,KACnBkE,EArtYG,IAstYHlE,OAEAkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAAS/P,KAExCmP,KACI2D,IAAOla,EACT4X,OAAK,GAEL5B,GAAc4B,EACdA,EAAK5X,GAEH4X,IAAO5X,EAET2X,EADAJ,EAAK,CAACA,EAAIK,IAGV5B,GAAc2B,EACdA,EAAK3X,KAGPgW,GAAc2B,EACdA,EAAK3X,IAGL2X,IAAO3X,IACTuX,EAAKC,QACMxX,IACT4X,EAAKigB,QACM73B,GACTiW,GAAeqB,EAEfA,EADAK,EA7hYK+f,GAAgB,MA6hYP9f,KAWlB5B,GAAcsB,EACdA,EAAKtX,IAKJsX,EAGT,SAASwgB,KACP,IAAIxgB,EAAIK,EAAQC,EAhjYM8a,EAAMuF,EAklY5B,OAhCA3gB,EAAKtB,IACL2B,EAAK+d,QACM11B,GACJwX,OACMxX,IACT4X,EAwHN,WACE,IAAIN,GAEJA,EAoBF,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAE5BxD,EAAKtB,GACL2B,EAAK,GACLJ,EAAKvB,IACL4B,EAAKJ,QACMxX,IACTka,EAAKge,QACMl4B,IACTuY,EAAKf,QACMxX,IACT8a,EAAK4a,QACM11B,EAETuX,EADAK,EAAK,CAACA,EAAIsC,EAAI3B,EAAIuC,IAexB9E,GAAcuB,EACdA,EAAKvX,GAEP,GAAIuX,IAAOvX,EACT,KAAOuX,IAAOvX,GACZ2X,EAAGP,KAAKG,GACRA,EAAKvB,IACL4B,EAAKJ,QACMxX,IACTka,EAAKge,QACMl4B,IACTuY,EAAKf,QACMxX,IACT8a,EAAK4a,QACM11B,EAETuX,EADAK,EAAK,CAACA,EAAIsC,EAAI3B,EAAIuC,IAexB9E,GAAcuB,EACdA,EAAKvX,QAIT2X,EAAK3X,EAEH2X,IAAO3X,IACTiW,GAAeqB,EACfK,EA/vYa,CAAEtY,KAAM,aAAckB,KA+vYrBoX,IAIhB,OAFAL,EAAKK,EA1FAwgB,MACMn4B,IACTsX,EAAK2K,QACMjiB,IACTsX,EAiPN,WACE,IAAIA,EAAIK,EAAQC,EAAgBY,EAEhClB,EAAKtB,IACL2B,EAiDF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAAIsC,EAEpB5C,EAAKtB,GACL2B,EAAK3B,IACLuB,EAAKiQ,QACMxnB,IACT4X,EAAKJ,QACMxX,IACTka,EAAKke,QACMp4B,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAWlBlE,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAAK7P,GAAS6P,KAEhBL,EAAKK,KACM3X,IACTsX,EAAK8gB,MAGP,OAAO9gB,EAnFF+gB,MACMr4B,GACJwX,OACMxX,IACT4X,EAAK8d,QACM11B,GACJwX,OACMxX,GACJqyB,OACMryB,GACJwX,OACMxX,IACTwY,EAAKkd,QACM11B,GACTiW,GAAeqB,EAEfA,EADAK,EAx5YC,CACL2C,GAu5YkB3C,EAt5YlB2gB,MAAO,CACLj5B,KAAM,YACNrD,MAAO,CAo5Ya4b,EAAIY,OA2BlCxC,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAnSEihB,MACMv4B,IACTsX,EAsKR,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAEpB5C,EAAKtB,IACL2B,EAAK6gB,QACMx4B,IACTuX,EAAKC,QACMxX,IACT4X,EAAK8d,QACM11B,GACTiW,GAAeqB,EAEfA,EADAK,EA70YS,CAAE2C,GAAI,KAAMge,MA60YP1gB,KAWlB5B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GACL2B,EAAK3B,IACLuB,EAAKihB,QACMx4B,IACT4X,EAAKJ,QACMxX,IACTka,EAAKsN,QACMxnB,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAWlBlE,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACTuX,EAAKC,QACMxX,IACT4X,EAAK8d,QACM11B,GACTiW,GAAeqB,EACfK,EAt3YK,SAAS2gB,GACd,MAAO,CAAEhe,GAAI,SAAUge,MAAOA,GAq3YzBG,CAAS7gB,GACdN,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,IAIT,OAAOsX,EA5OIohB,MACM14B,IACTsX,EAAKiL,QACMviB,IACTsX,EAqdZ,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAExBjB,EAAKtB,IACL2B,EA/GF,WACE,IAAIL,EAAIK,EAAQC,EAEhBN,EAAKtB,IACL2B,EAAK6P,QACMxnB,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,IACT4X,EAwqMN,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAxokBQ,WAyokBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5H,KAEpCoI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA3pkB6B,WA8pkB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA3sMEqhB,MACM34B,IACT4X,EAgoMR,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GArmkBQ,UAsmkBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7H,KAEpCqI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAxnkB6B,UA2nkB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAnqMIshB,IAEHhhB,IAAO5X,GACTiW,GAAeqB,EA5gZIgF,EA6gZD1E,EAClBN,EADAK,GA7gZgBnb,EA6gZFmb,GA5gZH,GAAGnb,KAAK8f,IAAMA,IA+gZzBtG,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAzhZM,IAASxD,EAAG8f,EA4hZzB,OAAOhF,EA+EFuhB,MACM74B,GACJwX,OACMxX,GAxuaA,WAyuaLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS5R,KAEpCqS,IAAO5X,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKugB,QACM94B,IACTuY,EAAKmW,QACM1uB,IACTuY,EAAKyB,MAGLzB,IAAOvY,GACTiW,GAAeqB,EAxnZHgD,EAynZE3C,EACdL,EADAK,EAxnZI,CAAE2C,IADUye,EAynZEnhB,GAxnZJ,GAAG0C,KAAMye,IAAOze,EAAIge,MAwnZZ/f,KAGtBvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GA7oZM,IAASsa,EAAIye,EA+oZtBzhB,IAAOtX,IACTsX,EAAKtB,GA7oZM,SA8oZPnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3O,KAEpCmP,IAAO3X,GACJwX,OACMxX,IACT4X,EAAK8W,QACM1uB,GACTiW,GAAeqB,EACfK,EAzpZK,SAASoB,GAChB,MAAO,CAAEuB,GAAI,OAAQge,MAAOvf,GAwpZrBigB,CAASphB,GACdN,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,IAIT,OAAOsX,EAxiBQ2hB,IAOf,OAAO3hB,EA5IE4hB,MACMl5B,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EA5jYCob,EA6jYF/a,EACdL,EADAK,EA5jYa,QADSsgB,EA6jYJrgB,GA5jYQ8a,EACH,eAAZuF,EAAG54B,KAA8BuI,GAAsB8qB,EAAMuF,EAAG13B,MAC7DoyB,GAAiBsF,EAAG3d,GAAIoY,EAAMuF,EAAGK,SA6jY/CtiB,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKoX,QACM1uB,IACTsX,EAAK0C,MAIF1C,EA+LT,SAAS4gB,KACP,IAAI5gB,EAyEJ,MA90Ya,OAuwYTzX,EAAMgY,OAAO7B,GAAa,IAC5BsB,EAxwYW,KAywYXtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASnP,KAEpCsP,IAAOtX,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnBsB,EA9wYS,IA+wYTtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASlP,KAEpCqP,IAAOtX,IAlxYA,OAmxYLH,EAAMgY,OAAO7B,GAAa,IAC5BsB,EApxYO,KAqxYPtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASjP,KAEpCoP,IAAOtX,IAxxYF,OAyxYHH,EAAMgY,OAAO7B,GAAa,IAC5BsB,EA1xYK,KA2xYLtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAShP,KAEpCmP,IAAOtX,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnBsB,EAhyYG,IAiyYHtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS/O,KAEpCkP,IAAOtX,IApyYN,OAqyYCH,EAAMgY,OAAO7B,GAAa,IAC5BsB,EAtyYC,KAuyYDtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS9O,KAEpCiP,IAAOtX,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnBsB,EA9hZD,IA+hZCtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS/P,KAEpCkQ,IAAOtX,IAlzYV,OAmzYKH,EAAMgY,OAAO7B,GAAa,IAC5BsB,EApzYH,KAqzYGtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS7O,YAU/CgP,EAiRT,SAAS6hB,KACP,IAAI7hB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAiCpB,OA/BA5C,EAAKtB,GACL2B,EAAK3B,IACLuB,EAAKiQ,QACMxnB,IACT4X,EAAKJ,QACMxX,IACTka,EAAKkf,QACMp5B,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAWlBlE,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAAK7P,GAAS6P,KAEhBL,EAAKK,KACM3X,IACTsX,EAAK8hB,MAGA9hB,EAyFT,SAASiL,KACP,IAAIjL,EAAIK,EAAQC,EAAQW,EA1qZF+B,EAAIge,EAAOe,EAqtZjC,OAzCA/hB,EAAKtB,IACL2B,EA1OF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAAIsC,EAiCpB,OA/BA5C,EAAKtB,GACL2B,EAAK3B,IACLuB,EAAKiQ,QACMxnB,IACT4X,EAAKJ,QACMxX,IACTka,EAAKof,QACMt5B,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAWlBlE,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAAK7P,GAAS6P,KAEhBL,EAAKK,KACM3X,IACTsX,EAAKgiB,MAGAhiB,EAwMFiiB,MACMv5B,GACJwX,OACMxX,IACT4X,EAAK8X,QACM1vB,IACT4X,EAAKkgB,MAEHlgB,IAAO5X,GACJwX,OACMxX,IACTuY,EA7KV,WACE,IAAIjB,EAAIK,EAAQC,EA+BhB,OA7BAN,EAAKtB,GA/hZQ,WAgiZTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5O,KAEpCoP,IAAO3X,GACJwX,OACMxX,IACT4X,EAAK8W,QACM1uB,GACTiW,GAAeqB,EAEfA,EADAK,EAziZO,CACLtY,KAAM,SACNrD,MAuiZgB4b,KAWtB5B,GAAcsB,EACdA,EAAKtX,GAGAsX,EA6IMkiB,MACMx5B,IACTuY,EAAK,MAEHA,IAAOvY,GACTiW,GAAeqB,EA7rZHgD,EA8rZE3C,EA9rZE2gB,EA8rZE1gB,GA9rZKyhB,EA8rZD9gB,KA7rZhB+f,EAAMmB,OAASJ,GA8rZrB/hB,EADAK,EA5rZK,CAAE2C,GAAIA,EAAIge,MAAOA,KA+rZtBtiB,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS2K,KACP,IAAI3K,EAAIK,EAAQC,EAAQW,EA+ExB,OA7EAjB,EAAKtB,IACL2B,EAAKwhB,QACMn5B,GACJwX,OACMxX,IACT4X,EAAKoD,QACMhb,GACJwX,OACMxX,IACTuY,EAAK+V,QACMtuB,GACJwX,OACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,EAEfA,EADAK,EAtuZC,CAAE2C,GAsuZW3C,EAtuZH2gB,MAsuZO/f,KA2B9BvC,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKwhB,QACMn5B,GACJwX,OACMxX,IACT4X,EAAK+c,QACM30B,IACT4X,EAAK8W,QACM1uB,IACT4X,EAAKkhB,MAGLlhB,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAjxZK,SAAS2C,EAAIvB,GAClB,MAAO,CAAEuB,GAAIA,EAAIge,MAAOvf,GAgxZnB2gB,CAAS/hB,EAAIC,KAGlB5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,IAIFsX,EAGT,SAASoe,KACP,IAAIpe,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKgiB,QACM35B,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKif,QACMx3B,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKmhB,QACM35B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKif,QACMx3B,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKmhB,QACM35B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAn2ZS,SAASrX,EAAMC,GACpB,GAAIA,GAAQA,EAAKlC,QAAwB,eAAdiC,EAAKjB,MAAyC,MAAhBiB,EAAK8V,OAAgB,MAAM,IAAI9Y,MAAMy1B,KAAKC,UAAU,CAC3G/1B,QAAS,oDACN28B,QAEL,OAAOhyB,GAAsBtH,EAAMC,GA81ZlCs5B,CAASliB,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASkgB,KACP,IAAIlgB,EAmBJ,OAjBsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EA92ZW,IA+2ZXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS1O,KAEpC6O,IAAOtX,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnBsB,EAp3ZS,IAq3ZTtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASzO,MAInC4O,EAGT,SAASqiB,KACP,IAAIriB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKmiB,QACM95B,EAAY,CAgCrB,IA/BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKwhB,QACM/5B,IACTuY,EAAK+Z,MAEH/Z,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKshB,QACM95B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKwhB,QACM/5B,IACTuY,EAAK+Z,MAEH/Z,IAAOvY,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKshB,QACM95B,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAWtBxC,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAp8ZW/P,GAo8ZG+P,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASyiB,KACP,IAAIziB,EAqCJ,OAnCsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EAp9ZW,IAq9ZXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASxO,KAEpC2O,IAAOtX,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnBsB,EA19ZS,IA29ZTtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASvO,KAEpC0O,IAAOtX,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnBsB,EAh+ZO,IAi+ZPtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAStO,KAEpCyO,IAAOtX,IAp+ZF,OAq+ZHH,EAAMgY,OAAO7B,GAAa,IAC5BsB,EAt+ZK,KAu+ZLtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASrO,QAMvCwO,EAGT,SAASmgB,KACP,IAAIngB,EAAQC,EAAIK,EAl/ZMoiB,EA0katB,OAtFA1iB,EAu2DF,WACE,IAAIA,EAAIK,EAAgBY,EAAgBE,EAASW,EAAUqB,EAAoBkD,EAE/ErG,EAAKtB,IACL2B,EAAKsiB,QACMj6B,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAAKK,QACM5Y,GACJwX,OACMxX,GACJ6Y,OACM7Y,GACJwX,OACMxX,IACTyY,EAAKkT,QACM3rB,GACHwX,OACMxX,IACVoZ,EAAM+B,QACMnb,GACViW,GAAeqB,EA/qdZyB,EAgrdeR,EAhrdZtc,EAgrdgBwc,EAAtBd,EA/qdT,CACLtY,KAAM,OACNsa,QA6qd4BhC,EA7qdjBxM,cACX+N,KAAMH,EACNwS,OAAQ,KACR2O,OAAQ,CAACj+B,IA2qdKqb,EAAKK,IA0CzB3B,GAAcsB,EACdA,EAAKtX,GA5tdM,IAAY+Y,EAAG9c,EA8tdxBqb,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKsiB,QACMj6B,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAAKK,QACM5Y,GACJwX,OACMxX,GACJ6Y,OACM7Y,GACJwX,OACMxX,IACTyY,EAAK0hB,QACMn6B,GACHwX,OACMxX,IACVoZ,EAAM4B,QACMhb,GACJwX,OACMxX,IACVya,EAAM2f,QACMp6B,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACV2d,EAAMxC,QACMnb,GACViW,GAAeqB,EACfK,EA1vdvB,SAASvc,EAAG2d,EAAGshB,GACtB,MAAO,CACLh7B,KAAM,OACNsa,QAASve,EAAE+P,cACX+N,KAAMH,EACNwS,OAAQ,KACR2O,OAAQ,CAAC,CACPrkB,SAAU,WAAawkB,EAAY,OAmvdJC,CAAS3iB,EAAIY,EAAIkC,GACtBnD,EAAKK,IAkErC3B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKsiB,QACMj6B,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAAKK,QACM5Y,GACJwX,OACMxX,GACJ6Y,OACM7Y,GACJwX,OACMxX,IACTyY,EAAK0hB,QACMn6B,GACHwX,OACMxX,IACVoZ,EAAM4B,QACMhb,GACJwX,OACMxX,IACVya,EAAM2f,QACMp6B,GACJwX,OACMxX,GACJkb,OACMlb,GACJwX,OACMxX,IACV2d,EAAMyc,QACMp6B,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,GACJmb,OACMnb,GACViW,GAAeqB,EACfK,EAl2djC,SAASvc,EAAG2d,EAAGshB,EAAWE,GAC/B,MAAO,CACLl7B,KAAM,OACNsa,QAASve,EAAE+P,cACX+N,KAAMH,EACNwS,OAAQ,KACR2O,OAAQ,CAAC,CACPrkB,SAAU,WAAawkB,EAAY,KAAOE,EAAQ,OA21dXC,CAAS7iB,EAAIY,EAAIkC,EAAKkD,GAC3BrG,EAAKK,IAkF7C3B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKsiB,QACMj6B,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAAKK,QACM5Y,GACJwX,OACMxX,GACJ6Y,OACM7Y,GACJwX,OACMxX,IACTyY,EA2ExB,WACE,IAAInB,GAEJA,EAwsIF,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA/4lBQ,WAg5lBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxG,KAEpCgH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAl6lB6B,WAq6lB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA3uIFmjB,MACMz6B,IACTsX,EAAKojB,MAGP,OAAOpjB,EAnFoBqjB,MACM36B,GACHwX,OACMxX,IACVoZ,EAAMwhB,QACM56B,IACVoZ,EAAM,MAEJA,IAAQpZ,GACJwX,OACMxX,IACVya,EAAMU,QACMnb,GACViW,GAAeqB,EACfK,EA78dnB,SAASvc,EAAG2d,EAAGjc,EAAGb,GACzB,MAAO,CACLoD,KAAM,OACNsa,QAASve,EAAE+P,cACX+N,KAAMH,EACNwS,OAAQ,KACR2O,OAAQ,CAAC,CACPrkB,SAAU/Y,GAAKb,EAAI,IAAMA,EAAG,OAs8dD4+B,CAASljB,EAAIY,EAAIE,EAAIW,GAC1B9B,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,KAuCzBgW,GAAcsB,EACdA,EAAKtX,MAMb,OAAOsX,EAxvEFwjB,MACM96B,IACTsX,EAAKoY,QACM1vB,IACTsX,EAmlCN,WACE,IAAIA,GAEJA,EAgTF,WACE,IAAIA,EAAIK,EAAgBY,EAAgBE,EAExCnB,EAAKtB,IACL2B,EAu7IF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA1zkBQ,UA2zkBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxH,KAEpCgI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA70kB6B,UAg1kB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA19IFyjB,MACM/6B,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAwDV,WACE,IAAIjB,EAAIK,EAAQC,EAAQW,EAAYwC,EAAItC,EAAIkV,EAAKvU,EAAK+F,EAAK1E,EAE3DnD,EAAKtB,IACL2B,EA2LF,WACE,IAAIL,EAAIK,EAERL,EAAKtB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB2B,EA9odW,IA+odX3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxO,KAEpCgP,IAAO3X,IACTiW,GAAeqB,EACfK,EAp+c+B,CAAEtY,KAAM,OAAQrD,MAAO,MAw+cxD,OAFAsb,EAAKK,EA1MAqjB,MACMh7B,IACTiW,GAAeqB,EACfK,EA9ycgC,CAAEuB,KA8ycpBvB,IAGhB,IADAL,EAAKK,KACM3X,EAAY,CAMrB,GALAsX,EAAKtB,IACL2B,EAAKuP,QACMlnB,IACT2X,EAAK,MAEHA,IAAO3X,EAET,GADKwX,OACMxX,EAET,IADA4X,EAAKoD,QACMhb,EAET,GADKwX,OACMxX,EAET,IADAuY,EAAKK,QACM5Y,EAET,GADKwX,OACMxX,EAET,GADKmb,OACMnb,EAAY,CAgCrB,IA/BA+a,EAAK,GACLtC,EAAKzC,IACL2X,EAAMnW,QACMxX,IACVoZ,EAAMiZ,QACMryB,IACVoZ,EAAM0E,MAEJ1E,IAAQpZ,IACVmf,EAAM3H,QACMxX,IACVya,EAAM7B,QACM5Y,EAEVyY,EADAkV,EAAM,CAACA,EAAKvU,EAAK+F,EAAK1E,IAW1BzE,GAAcyC,EACdA,EAAKzY,KAGPgW,GAAcyC,EACdA,EAAKzY,GAEAyY,IAAOzY,GACZ+a,EAAG3D,KAAKqB,GACRA,EAAKzC,IACL2X,EAAMnW,QACMxX,IACVoZ,EAAMiZ,QACMryB,IACVoZ,EAAM0E,MAEJ1E,IAAQpZ,IACVmf,EAAM3H,QACMxX,IACVya,EAAM7B,QACM5Y,EAEVyY,EADAkV,EAAM,CAACA,EAAKvU,EAAK+F,EAAK1E,IAW1BzE,GAAcyC,EACdA,EAAKzY,KAGPgW,GAAcyC,EACdA,EAAKzY,GAGL+a,IAAO/a,IACTyY,EAAKjB,QACMxX,IACT2tB,EAAM3J,QACMhkB,IACV2tB,EAAM,MAEJA,IAAQ3tB,GACViW,GAAeqB,EACfK,EA54cT,SAAStc,EAAGD,EAAGmF,EAAM2jB,GAC5B,MAAMsO,EAAMjyB,EAAKlC,OACjB,IAAIo0B,EAASr3B,EACbq3B,EAAOF,aAAc,EACrB,IAAK,IAAIx3B,EAAI,EAAGA,EAAIy3B,IAAOz3B,EACzB03B,EAASE,GAAiBpyB,EAAKxF,GAAG,GAAI03B,EAAQlyB,EAAKxF,GAAG,IAExD,MAAO,CACLq2B,SAAU/1B,EACV6d,KAAMuZ,EACN5N,QAASX,GAk4cU+W,CAAStjB,EAAIY,EAAIwC,EAAI4S,GAC1BrW,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKuP,QACMlnB,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,IACT4X,EAAKiT,QACM7qB,GACJwX,OACMxX,IACTuY,EAAKyL,QACMhkB,IACTuY,EAAK,MAEHA,IAAOvY,GACTiW,GAAeqB,EAEfA,EADAK,EA57c2B,CAAEyZ,SA47cfzZ,EA57c4BuB,KA47cxBtB,EA57ciCiN,QA47c7BtM,KAGtBvC,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,IAKX,OAAOsX,EApPM4jB,MACMl7B,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACTyY,EAAK0iB,QACMn7B,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EAEfA,EADAK,EApwcH,CACLtY,KAAM,YACN/D,KAkwcsBqc,EAjwctBsG,KAiwc0B1F,EAhwc1B6iB,KAgwc8B3iB,KAGtBzC,GAAcsB,EACdA,EAAKtX,KA+BrBgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAjXF+jB,MACMr7B,IACTsX,EAMJ,WACE,IAAIA,EAAIK,EAAgBY,EAAgBE,EAExCnB,EAAKtB,IACL2B,EAgEF,WACE,IAAIL,GAEJA,EA8wJF,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAn6kBQ,QAo6kBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrH,KAEpC6H,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAt7kB6B,QAy7kB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAjzJFgkB,MACMt7B,IACTsX,EAgsJJ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA71kBQ,QA81kBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvH,KAEpC+H,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAh3kB6B,QAm3kB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAnuJAikB,MACMv7B,IACTsX,EAouJN,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAh4kBQ,QAi4kBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStH,KAEpC8H,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAn5kB6B,QAs5kB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAvwJEkkB,MACMx7B,IACTsX,EA8yJR,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAt8kBQ,QAu8kBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpH,KAEpC4H,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAz9kB6B,QA49kB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAj1JImkB,IAKX,OAAOnkB,EA9EFokB,MACM17B,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAAKmd,QACM11B,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACTyY,EAAK0iB,QACMn7B,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EACfK,EA3/bH,CACLtY,KAAM,YACN/D,KAy/bsBqc,EAx/btBsG,KAAM,CACJ/E,KAu/bwBX,GAr/b1B6iB,KAq/b8B3iB,KAp/b3BmhB,MAq/bKtiB,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KA+BrBgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAvEAqkB,IAGP,OAAOrkB,EA3lCEskB,MACM57B,IACTsX,EAAKwhB,QACM94B,IACTsX,EAn0DV,WACE,IAAIA,EAAYM,EAAQW,EAAQC,EAAQC,EAASW,EA/1W3ByiB,EAAgBC,EAg/WtC,OA/IAxkB,EAAKtB,GACA+lB,OACM/7B,GACJwX,OACMxX,IACT4X,EAAKof,QACMh3B,GACJwX,OACMxX,IACTuY,EAAK4e,QACMn3B,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,IACTwY,EAAKwjB,QACMh8B,GACJwX,OACMxX,IACTyY,EAAKsjB,QACM/7B,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EA13WXukB,EA23WUjkB,GA33WMkkB,EA23WFvjB,IA13WbsjB,EAAezkB,KAAK0kB,GA23WzBxkB,EA13WH,CACLjY,KAAM,OACN6Z,KAAM,KACN+E,KAAM4d,KAy3WE7lB,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GACA+lB,OACM/7B,GACJwX,OACMxX,IACT4X,EAAKgB,QACM5Y,GACJwX,OACMxX,IACTuY,EAAKye,QACMh3B,GACJwX,OACMxX,IACTwY,EAAK2e,QACMn3B,IACTwY,EAAK,MAEHA,IAAOxY,GACJwX,OACMxX,IACTyY,EAAKujB,QACMh8B,GACHwX,OACMxX,IACVoZ,EAAM2iB,QACM/7B,IACVoZ,EAAM,MAEJA,IAAQpZ,GACViW,GAAeqB,EAEfA,EAz7WX,SAAS4B,EAAM2iB,EAAgBC,GAEpC,OADIA,GAAWD,EAAezkB,KAAK0kB,GAC5B,CACLz8B,KAAM,OACN6Z,KAAMA,EACN+E,KAAM4d,GAm7WaI,CAASrkB,EAAIW,EAAIC,KAGtBxC,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAuBjBgW,GAAcsB,EACdA,EAAKtX,IAIFsX,EAirDM4kB,MACMl8B,IACTsX,EAAKgf,QACMt2B,IACTsX,EAAK0C,QACMha,IACTsX,EAAK4d,QACMl1B,IACTsX,EAAKtB,GACAgF,OACMhb,IACTuX,EAAKC,QACMxX,IACT4X,EAAKoZ,QACMhxB,GACJwX,OACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,GA/ganB0iB,EAghakBpiB,GA/gazB2a,aAAc,EAghaHjb,EA/gaT0iB,IAiiaChkB,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKqd,QACM30B,IACTsX,EAAKtB,GACAwB,OACMxX,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnBuB,EAziaX,IA0iaWvB,OAEAuB,EAAKvX,EACmB,IAApBuW,IAAyBY,GAASpO,KAEpCwO,IAAOvX,GACTiW,GAAeqB,EAEfA,EA/iaX,CACLjY,KAAM,SACNrD,MA4ia8Bub,KAGdvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,KAapBsX,EAGT,SAASwiB,KACP,IAAIxiB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAoCpB,OAlCA5C,EA8EF,WACE,IAAIA,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAAIuC,EAIpC,GAFAzD,EAAKtB,IACL2B,EAAK8f,QACMz3B,EAET,GADKwX,OACMxX,EAAY,CAwGrB,IAvGA4X,EAAK,GACLsC,EAAKlE,IACLuC,EAAKf,QACMxX,GAvpaF,OAwpaHH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAzpaK,KA0paL9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASlO,KAEpC6R,IAAO9a,IA7paJ,OA8paDH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EA/paG,KAgqaH9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASjO,KAEpC4R,IAAO9a,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnB8E,EAvraC,IAwraD9E,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASpO,KAEpC+R,IAAO9a,IA3qaR,OA4qaGH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EA7qaD,KA8qaC9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAShO,KAEpC2R,IAAO9a,IAjraV,QAkraKH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAnraH,MAoraG9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS/N,KAEpC0R,IAAO9a,IAvraZ,OAwraOH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAzraL,KA0raK9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS9N,KAEpCyR,IAAO9a,IACT8a,EAAKqhB,QACMn8B,IACT8a,EAAKshB,QACMp8B,IAjsalB,OAksaaH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAnsaX,KAosaW9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS7N,KAEpCwR,IAAO9a,IAvsapB,OAwsaeH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAzsab,KA0saa9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS5N,YAWtDuR,IAAO9a,IACTwY,EAAKhB,QACMxX,IACT+a,EAAK0c,QACMz3B,EAETka,EADA3B,EAAK,CAACA,EAAIuC,EAAItC,EAAIuC,IAWtB/E,GAAckE,EACdA,EAAKla,KAGPgW,GAAckE,EACdA,EAAKla,GAEAka,IAAOla,GACZ4X,EAAGR,KAAK8C,GACRA,EAAKlE,IACLuC,EAAKf,QACMxX,GA/vaJ,OAgwaDH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAjwaG,KAkwaH9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASlO,KAEpC6R,IAAO9a,IArwaN,OAswaCH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAvwaC,KAwwaD9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASjO,KAEpC4R,IAAO9a,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnB8E,EA/xaD,IAgyaC9E,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASpO,KAEpC+R,IAAO9a,IAnxaV,OAoxaKH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EArxaH,KAsxaG9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAShO,KAEpC2R,IAAO9a,IAzxaZ,QA0xaOH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EA3xaL,MA4xaK9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS/N,KAEpC0R,IAAO9a,IA/xad,OAgyaSH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAjyaP,KAkyaO9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS9N,KAEpCyR,IAAO9a,IACT8a,EAAKqhB,QACMn8B,IACT8a,EAAKshB,QACMp8B,IAzyapB,OA0yaeH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EA3yab,KA4yaa9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS7N,KAEpCwR,IAAO9a,IA/yatB,OAgzaiBH,EAAMgY,OAAO7B,GAAa,IAC5B8E,EAjzaf,KAkzae9E,IAAe,IAEf8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAAS5N,YAWtDuR,IAAO9a,IACTwY,EAAKhB,QACMxX,IACT+a,EAAK0c,QACMz3B,EAETka,EADA3B,EAAK,CAACA,EAAIuC,EAAItC,EAAIuC,IAWtB/E,GAAckE,EACdA,EAAKla,KAGPgW,GAAckE,EACdA,EAAKla,GAGL4X,IAAO5X,GACTiW,GAAeqB,EAv1aChX,EAw1aFqX,EAAdA,GAx1asBpX,EAw1aJqX,IAt1aW,IAAhBrX,EAAKlC,OACXuJ,GAAsBtH,EAAMC,GADID,EAu1avCgX,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAp2aM,IAASM,EAAMC,EAu2a5B,OAAO+W,EAvTF+kB,MACMr8B,IACTsX,EAAKtB,IACL2B,EAkCJ,WACE,IAAIL,EAEkC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EA5taW,IA6taXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAStP,KAEpCyP,IAAOtX,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnBsB,EA9oaS,IA+oaTtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASzO,KAEpC4O,IAAOtX,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnBsB,EAxpaO,IAypaPtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS1O,KAEpC6O,IAAOtX,IAC6B,MAAlCH,EAAMd,WAAWiX,KACnBsB,EAjoaK,IAkoaLtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASnO,QAM9C,OAAOsO,EAxEAglB,MACMt8B,GACTuX,EAAKvB,IACL4B,EAAKJ,QACMxX,IACTka,EAAK4f,QACM95B,EAETuX,EADAK,EAAK,CAACA,EAAIsC,IAOZlE,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAxlaO+f,GAwlaO/f,EAAIJ,EAxlac,MA2lahCvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,IAIFsX,EAwRT,SAAS0C,KACP,IAAI1C,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAAIuC,EAt2adoX,EAAKlrB,EAAKs1B,EAq8ahC,OA7FAjlB,EAAKtB,IACL2B,EAAKmB,QACM9Y,IACTuX,EAAKC,QACMxX,IACT4X,EAAKsa,QACMlyB,IACTka,EAAK1C,QACMxX,IACTuY,EAAKmT,QACM1rB,GACT8a,EAAK9E,IACLwC,EAAKhB,QACMxX,IACT+a,EAAK8M,QACM7nB,EAET8a,EADAtC,EAAK,CAACA,EAAIuC,IAOZ/E,GAAc8E,EACdA,EAAK9a,GAEH8a,IAAO9a,IACT8a,EAAK,MAEHA,IAAO9a,GACTiW,GAAeqB,EAt4aL6a,EAu4aIxa,EAv4aC1Q,EAu4aGsR,EAv4aEgkB,EAu4aEzhB,EAt4a1BjU,GAAWK,IAAI,WAAWirB,MAAQlrB,KAu4a9BqQ,EADAK,EAr4aG,CACLtY,KAAM,aACNqH,MAAOyrB,EACP/b,OAAQnP,EACR8gB,QAASwU,GAAMA,EAAG,MAo4ahBvmB,GAAcsB,EACdA,EAAKtX,KAmBfgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK8Q,QACMzoB,GACTuX,EAAKvB,IACL4B,EAAKJ,QACMxX,IACTka,EAAK2N,QACM7nB,EAETuX,EADAK,EAAK,CAACA,EAAIsC,IAOZlE,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,IACTuX,EAAK,MAEHA,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAh7aO,SAAS1Q,EAAKs1B,GAEnB,OADA11B,GAAWK,IAAI,iBAAiBD,GACzB,CACL5H,KAAM,aACNqH,MAAO,KACP0P,OAAQnP,EACR8gB,QAASwU,GAAMA,EAAG,IA06ajBC,CAAS7kB,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,IAIFsX,EAGT,SAASgI,KACP,IAAIhI,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAK8Q,QACMzoB,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKiQ,QACMzoB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKiQ,QACMzoB,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAK/V,EAAQ+V,EAAIJ,KAGjBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAAS6S,KACP,IAAI7S,EAAIK,EAaR,OAXAL,EAAKtB,IACL2B,EAAKyU,QACMpsB,IACTiW,GAAeqB,EACfK,EA5gbW,CAAEtY,KAAM,UAAWrD,MA4gbhB2b,KAEhBL,EAAKK,KACM3X,IACTsX,EAAKmlB,MAGAnlB,EAmCT,SAASwB,KACP,IAAIxB,EAAIK,EAkCR,OAhCAL,EAAKtB,IACL2B,EAAKyU,QACMpsB,GACTiW,GAAeD,IACVxM,GAASmO,GAEP3X,OAEA,KAEIA,GACTiW,GAAeqB,EAEfA,EADAK,EAAcA,IAGd3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKub,QACMlzB,IACTiW,GAAeqB,EACfK,EAAcA,GAEhBL,EAAKK,GAGAL,EAyCT,SAASmlB,KACP,IAAInlB,EAUJ,OARAA,EAAKolB,QACM18B,IACTsX,EAAKqlB,QACM38B,IACTsX,EAAKslB,MAIFtlB,EAGT,SAAS4b,KACP,IAAI5b,EAAIK,EAgBR,OAdAL,EAAKtB,IACL2B,EAAK+kB,QACM18B,IACT2X,EAAKglB,QACM38B,IACT2X,EAAKilB,MAGLjlB,IAAO3X,IACTiW,GAAeqB,EACfK,EAAcA,EA/obD3b,OAipbfsb,EAAKK,EAKP,SAAS+kB,KACP,IAAIplB,EAAIK,EAAIJ,EAAIK,EAUhB,GARAN,EAAKtB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB2B,EAzpbW,IA0pbX3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzN,KAEpCiO,IAAO3X,EAAY,CASrB,GARAuX,EAAK,GACD5N,GAASkzB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B4B,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASvN,KAEpCgO,IAAO5X,EACT,KAAO4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACJjO,GAASkzB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B4B,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASvN,UAI1C2N,EAAKvX,EAEHuX,IAAOvX,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnB4B,EAxrbO,IAyrbP5B,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASzN,KAEpCkO,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EA3rbO,CACLtY,KAAM,sBACNrD,MAyrbYub,EAzrbC/X,KAAK,OA4rbpBwW,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASqlB,KACP,IAAIrlB,EAAIK,EAAIJ,EAAIK,EAUhB,GARAN,EAAKtB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB2B,EArkdW,IAskdX3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpC+S,IAAO3X,EAAY,CASrB,GARAuX,EAAK,GACDzN,GAAS+yB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B4B,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASpN,KAEpC6N,IAAO5X,EACT,KAAO4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACJ9N,GAAS+yB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B4B,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASpN,UAI1CwN,EAAKvX,EAEHuX,IAAOvX,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnB4B,EApmdO,IAqmdP5B,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpCgT,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAjvbO,CACLtY,KAAM,sBACNrD,MA+ubYub,EA/ubC/X,KAAK,OAkvbpBwW,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASslB,KACP,IAAItlB,EAAIK,EAAIJ,EAAIK,EAUhB,GARAN,EAAKtB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB2B,EAnwbW,IAowbX3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnN,KAEpC2N,IAAO3X,EAAY,CASrB,GARAuX,EAAK,GACDtN,GAAS4yB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B4B,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASjN,KAEpC0N,IAAO5X,EACT,KAAO4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACJ3N,GAAS4yB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B4B,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASjN,UAI1CqN,EAAKvX,EAEHuX,IAAOvX,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnB4B,EAlybO,IAmybP5B,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASnN,KAEpC4N,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EArybO,CACLtY,KAAM,yBACNrD,MAmybYub,EAnybC/X,KAAK,OAsybpBwW,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASoU,KACP,IAAIpU,EAAIK,EAaR,OAXAL,EAAKtB,IACL2B,EAAKolB,QACM/8B,IACTiW,GAAeqB,EACfK,EAAcA,IAEhBL,EAAKK,KACM3X,IACTsX,EAAK4b,MAGA5b,EAGT,SAASmR,KACP,IAAInR,EAAIK,EA4BR,OA1BAL,EAAKtB,IACL2B,EAAKolB,QACM/8B,GACTiW,GAAeD,IACVxM,GAASmO,GAEP3X,OAEA,KAEIA,GACTiW,GAAeqB,EAEfA,EADAK,EAAcA,IAGd3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAK4b,MAGA5b,EAGT,SAASylB,KACP,IAAIzlB,EAAIK,EAAIJ,EAAIK,EAIhB,GAFAN,EAAKtB,IACL2B,EAAKG,QACM9X,EAAY,CAGrB,IAFAuX,EAAK,GACLK,EAAKolB,KACEplB,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAKolB,KAEHzlB,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAKxN,GAASwN,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAAS8U,KACP,IAAI9U,EAAIK,EAAIJ,EAAIK,EAIhB,GAFAN,EAAKtB,IACL2B,EAAKG,QACM9X,EAAY,CAGrB,IAFAuX,EAAK,GACLK,EAAKqlB,KACErlB,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAKqlB,KAEH1lB,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAKxN,GAASwN,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASQ,KACP,IAAIR,EAUJ,OARIlN,GAASyyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BsB,EAAKzX,EAAMi9B,OAAO9mB,IAClBA,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS9M,KAGjCiN,EAGT,SAAS2lB,KACP,IAAI3lB,EAUJ,OARIhN,GAASuyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BsB,EAAKzX,EAAMi9B,OAAO9mB,IAClBA,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS5M,KAGjC+M,EAGT,SAAS0lB,KACP,IAAI1lB,EAUJ,OARI9M,GAASqyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BsB,EAAKzX,EAAMi9B,OAAO9mB,IAClBA,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS1M,KAGjC6M,EAGT,SAAS4d,KACP,IAAI5d,EAAIK,EAAIJ,EAAIK,EA8BhB,OA5BAN,EAAKtB,GACL2B,EAAK3B,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBuB,EAh8bW,IAi8bXvB,OAEAuB,EAAKvX,EACmB,IAApBuW,IAAyBY,GAASzM,KAEpC6M,IAAOvX,IACT4X,EAAKwU,QACMpsB,EAET2X,EADAJ,EAAK,CAACA,EAAIK,IAOZ5B,GAAc2B,EACdA,EAAK3X,GAEH2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAl9ba,CAAEtY,KAAM,QAASrD,MAk9bhB2b,EAl9byB,KAo9bzCL,EAAKK,EAqGP,SAASulB,KACP,IAAI5lB,EAAoBiB,EAAgBE,EAgHxC,OA9GAnB,EAAKtB,GACAiE,OACMja,GACJwX,OACMxX,GACJ6jB,OACM7jB,GACJwX,OACMxX,IACTuY,EAAK8V,QACMruB,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTyY,EAAK6V,QACMtuB,IACTyY,EAAK,MAEHA,IAAOzY,GACHwX,OACMxX,GACJmb,OACMnb,GACViW,GAAeqB,EAEfA,EA1kcT,CACLjY,KAAM,YACNsa,QAukc4BpB,EAtkc5Bga,aAAa,EACbrZ,KAqkcgCT,KAWtBzC,GAAcsB,EACdA,EAAKtX,KA+BrBgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GACAiE,OACMja,GACJwX,OACMxX,GACJ6jB,OACM7jB,GACJwX,OACMxX,IACTuY,EAAK8V,QACMruB,GACTiW,GAAeqB,EAEfA,EA9ncC,SAAS2F,GAChB,MAAO,CACL5d,KAAM,YACNsa,QAASsD,GA0ncAkgB,CAAS5kB,KAmBtBvC,GAAcsB,EACdA,EAAKtX,IAIFsX,EAGT,SAAS6jB,KACP,IAAI7jB,EAAoCmB,EAASW,EA2FjD,OAzFA9B,EAAKtB,GAgiHP,WACE,IAAIsB,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAp4iBQ,SAq4iBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjJ,KAEpCyJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAjkHF8lB,KACMp9B,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,GACJi2B,OACMj2B,GACJwX,OACMxX,GACJ6wB,OACM7wB,GACJwX,OACMxX,IACTyY,EAAKkY,QACM3wB,GACHwX,OACMxX,IACVoZ,EAAM4K,QACMhkB,IACVoZ,EAAM,MAEJA,IAAQpZ,GACJwX,OACMxX,GACJmb,OACMnb,GACViW,GAAeqB,EAEfA,EAprcb,CACL+lB,YAkrcgC5kB,EAjrchCoM,QAircoCzL,KAWtBpD,GAAcsB,EACdA,EAAKtX,KAuCzBgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAK4lB,MAGA5lB,EA0RT,SAASwhB,KACP,IAAIxhB,EAAIK,EAAQC,EAAQW,EAAgBE,EAgKxC,OA9JAnB,EAAKtB,IACL2B,EA8KF,WACE,IAAIL,GAEJA,EAAKgmB,QACMt9B,IACTsX,EA03LJ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GArjoBQ,iBAsjoBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvE,KAEpC+E,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAxkoB6B,iBA2koB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA75LAimB,MACMv9B,IACTsX,EAg7KN,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAjpnBQ,SAkpnBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlF,KAEpC0F,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EApqnB6B,SAuqnB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAn9KEkmB,MACMx9B,IACTsX,EA45LR,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAxloBQ,iBAyloBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStE,KAEpC8E,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA3moB6B,iBA8moB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA/7LImmB,MACMz9B,IACTsX,EAg8LV,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA3noBQ,gBA4noBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrE,KAEpC6E,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA9ooB6B,gBAipoB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAn+LMomB,IAMb,OAAOpmB,EA/LFqmB,MACM39B,GACJwX,OACMxX,IACT4X,EAAKoD,QACMhb,GACJwX,OACMxX,IACTuY,EAAK+V,QACMtuB,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACTyY,EAAK0iB,QACMn7B,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EAEfA,EADAK,EAtgdH,CACLtY,KAAM,WACN/D,KAAM,CAAEA,KAAM,CAAC,CAAE+D,KAAM,UAAWrD,MAogdZ2b,KAngdtBsG,KAmgd0B1F,GAngdb,CAAElZ,KAAM,YAAarD,MAAO,IACzCo/B,KAkgd8B3iB,KAjgd3BmhB,QAogdK5jB,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK2lB,QACMt9B,GACJwX,OACMxX,IACT4X,EAAKslB,QACMl9B,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EA/idK,CACHtY,KAAM,WACN/D,KAAM,CAAEA,KAAM,CAAC,CAAE+D,KAAM,SAAUrD,MA6idrB2b,KA5idZyjB,KA4idgBxjB,KA3idbgiB,QA8idL5jB,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKwE,QACMnc,GACJwX,OACMxX,IACT4X,EAAKoD,QACMhb,GACJwX,OACMxX,IACTuY,EAAKyY,QACMhxB,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACTyY,EAAK0iB,QACMn7B,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EAEfA,EADAK,EAjldT,SAASrc,EAAMN,EAAG4iC,GAEvB,OADE5iC,GAAgB,cAAXA,EAAEqE,OAAsBrE,EAAI,CAAEqE,KAAM,YAAarD,MAAO,CAAChB,KACzD,CACLqE,KAAM,WACN/D,KAAMA,EACN2iB,KAAMjjB,GAAO,CAAEqE,KAAM,YAAarD,MAAO,IACzCo/B,KAAMwC,KACHhE,MA0kdciE,CAASlmB,EAAIY,EAAIE,KAGtBzC,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAKJsX,EAGT,SAASgmB,KACP,IAAIhmB,EAUJ,OARAA,EAw+KF,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAprnBQ,iBAqrnBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjF,KAEpCyF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAvsnB6B,iBA0snB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA3gLFwmB,MACM99B,IACTsX,EA4zLJ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA/+nBQ,iBAg/nBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzE,KAEpCiF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAlgoB6B,iBAqgoB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA/1LAymB,MACM/9B,IACTsX,EAAK+W,MAIF/W,EAsbT,SAASoY,KACP,IAAIpY,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EA3geNie,EAAGj8B,EAAGoO,EAgle5B,OAnEAoM,EAAKtB,GA36fQ,WA46fTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5R,KAEpCoS,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,IACT4X,EAAK8W,QACM1uB,GACTka,EAAKlE,IACLuC,EAAKf,QACMxX,IACT8a,EAAK+M,QACM7nB,EAETka,EADA3B,EAAK,CAACA,EAAIuC,IAOZ9E,GAAckE,EACdA,EAAKla,GAEHka,IAAOla,IACTka,EAAK,MAEHA,IAAOla,GACTiW,GAAeqB,EAhjeExa,EAijeC8a,EAjjeE1M,EAijeEgP,GAjjeR6e,EAijeAphB,KAhjeT7a,EAAE8c,OAASmf,EAAE5tB,eAChBD,IAAIpO,EAAEwhB,OAAS,CAAEyJ,QAAS7c,EAAG,KAgje/BoM,EADAK,EA9ieK7a,IAijeLkZ,GAAcsB,EACdA,EAAKtX,KAWXgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKkX,QACMxuB,IACTsX,EAyHN,WACE,IAAIA,EAAIK,EAERL,EAAKtB,IACL2B,EA6iCF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GAzmgBQ,SA0mgBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/K,KAEpCuL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA/kCF0mB,MACMh+B,IACTiW,GAAeqB,EACfK,EAvrea,CAAEtY,KAAM,OAAQrD,OAAO,KAyretCsb,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EA+mCJ,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA/qgBQ,UAgrgBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7K,KAEpCqL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAjpCA2mB,MACMj+B,IACTiW,GAAeqB,EACfK,EA5reW,CAAEtY,KAAM,OAAQrD,OAAO,IA8repCsb,EAAKK,GAGP,OAAOL,EA7IE4mB,MACMl+B,IACTsX,EAAK+R,QACMrpB,IACTsX,EAueV,WACE,IAAIA,EAAIK,EAAQC,EAAIsC,EAAI3B,EAAIuC,EAE5BxD,EAAKtB,IACL2B,EAAKwmB,QACMn+B,IACT2X,EAAKymB,QACMp+B,IACT2X,EAAK0mB,QACMr+B,IACT2X,EAAK2mB,MAIX,GAAI3mB,IAAO3X,EAET,GADKwX,OACMxX,EAAY,CASrB,GARA4X,EAAK5B,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBkE,EA1lhBO,IA2lhBPlE,OAEAkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpCsV,IAAOla,EAAY,CAGrB,IAFAuY,EAAK,GACLuC,EAAKyjB,KACEzjB,IAAO9a,GACZuY,EAAGnB,KAAK0D,GACRA,EAAKyjB,KAEHhmB,IAAOvY,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnB8E,EAzmhBG,IA0mhBH9E,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpCkW,IAAO9a,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,IAGd9E,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,QAGPgW,GAAc4B,EACdA,EAAK5X,EAEH4X,IAAO5X,GACTiW,GAAeqB,EACfK,EAAK1M,GAAS0M,EAAIC,GAClBN,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAEP,GAAIsX,IAAOtX,EAYT,GAXAsX,EAAKtB,IACL2B,EAAKwmB,QACMn+B,IACT2X,EAAKymB,QACMp+B,IACT2X,EAAK0mB,QACMr+B,IACT2X,EAAK2mB,MAIP3mB,IAAO3X,EAET,GADKwX,OACMxX,EAAY,CASrB,GARA4X,EAAK5B,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBkE,EAjzfK,IAkzfLlE,OAEAkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAASzN,KAEpCwQ,IAAOla,EAAY,CAGrB,IAFAuY,EAAK,GACLuC,EAAK0jB,KACE1jB,IAAO9a,GACZuY,EAAGnB,KAAK0D,GACRA,EAAK0jB,KAEHjmB,IAAOvY,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnB8E,EAh0fC,IAi0fD9E,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASzN,KAEpCoR,IAAO9a,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,IAGd9E,GAAc4B,EACdA,EAAK5X,KAGPgW,GAAc4B,EACdA,EAAK5X,QAGPgW,GAAc4B,EACdA,EAAK5X,EAEH4X,IAAO5X,GACTiW,GAAeqB,EACfK,EAAK1M,GAAS0M,EAAIC,GAClBN,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAIT,OAAOsX,EArnBMmnB,IAMNnnB,EAmFT,SAAS+R,KACP,IAAI/R,EAAIK,EAUR,OARAL,EAAKtB,IACL2B,EA09BF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,GA9/fQ,SA+/fTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjL,KAEpCyL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA5/BFonB,MACM1+B,IACTiW,GAAeqB,EACfK,EApqea,CAAEtY,KAAM,OAAQrD,MAAO,OAsqetCsb,EAAKK,EA0CP,SAAS+W,KACP,IAAIpX,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAahC,GAXAlB,EAAKtB,GArseQ,YAsseTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxM,KAEpCgN,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,EAET,IADAuX,EAAKC,QACMxX,EAQT,GAxteS,MAiteLH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASvM,KAEpCgN,IAAO5X,EAAY,CASrB,GARAka,EAAKlE,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBuC,EAvwgBK,IAwwgBLvC,OAEAuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpC2T,IAAOvY,EAAY,CASrB,IARA8a,EAAK,GACDjQ,GAASgyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BwC,EAAK3Y,EAAMi9B,OAAO9mB,IAClBA,OAEAwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASrM,KAEjC0N,IAAOxY,GACZ8a,EAAG1D,KAAKoB,GACJ3N,GAASgyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BwC,EAAK3Y,EAAMi9B,OAAO9mB,IAClBA,OAEAwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASrM,KAGtCgQ,IAAO9a,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnBwC,EAlygBC,IAmygBDxC,OAEAwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpC4T,IAAOxY,EAETka,EADA3B,EAAK,CAACA,EAAIuC,EAAItC,IAGdxC,GAAckE,EACdA,EAAKla,KAGPgW,GAAckE,EACdA,EAAKla,QAGPgW,GAAckE,EACdA,EAAKla,EAEHka,IAAOla,GACTiW,GAAeqB,EAEfA,EADAK,EAxweO,CACLtY,KAAM,aACNua,OAsweYjC,EArweZ3b,MAqweoBke,EArweV,GAAG1a,KAAK,OAwwepBwW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAEP,GAAIsX,IAAOtX,EAAY,CAYrB,GAXAsX,EAAKtB,GAlyeM,YAmyePnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxM,KAEpCgN,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,EAET,IADAuX,EAAKC,QACMxX,EAQT,GA1yeO,MAmyeHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/ByM,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASpM,KAEpC6M,IAAO5X,EAAY,CASrB,GARAka,EAAKlE,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBuC,EAp2gBG,IAq2gBHvC,OAEAuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpC2T,IAAOvY,EAAY,CASrB,IARA8a,EAAK,GACDjQ,GAASgyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BwC,EAAK3Y,EAAMi9B,OAAO9mB,IAClBA,OAEAwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASrM,KAEjC0N,IAAOxY,GACZ8a,EAAG1D,KAAKoB,GACJ3N,GAASgyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BwC,EAAK3Y,EAAMi9B,OAAO9mB,IAClBA,OAEAwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASrM,KAGtCgQ,IAAO9a,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnBwC,EA/3gBD,IAg4gBCxC,OAEAwC,EAAKxY,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpC4T,IAAOxY,EAETka,EADA3B,EAAK,CAACA,EAAIuC,EAAItC,IAGdxC,GAAckE,EACdA,EAAKla,KAGPgW,GAAckE,EACdA,EAAKla,QAGPgW,GAAckE,EACdA,EAAKla,EAEHka,IAAOla,GACTiW,GAAeqB,EAEfA,EADAK,EA71eG,SAASohB,EAAGl9B,EAAGqP,GACpB,MAAO,CACL7L,KAAM,aACNua,OAAQmf,EACR/8B,MAAOkP,EAAG,GAAG1L,KAAK,KAy1ebm/B,CAAShnB,EAAIC,EAAIsC,KAGtBlE,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAEP,GAAIsX,IAAOtX,EAAY,CAYrB,GAXAsX,EAAKtB,GA/3eI,YAg4eLnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxM,KAEpCgN,IAAO3X,IACT2X,EAAK,MAEHA,IAAO3X,EAET,IADAuX,EAAKC,QACMxX,EAQT,GA93eK,OAu3eDH,EAAMgY,OAAO7B,GAAa,IAC5B4B,EAx3eG,KAy3eH5B,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASnM,KAEpC4M,IAAO5X,EAAY,CASrB,IARAka,EAAK,GACDrP,GAASgyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BuC,EAAK1Y,EAAMi9B,OAAO9mB,IAClBA,OAEAuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASrM,KAEjCyN,IAAOvY,GACZka,EAAG9C,KAAKmB,GACJ1N,GAASgyB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BuC,EAAK1Y,EAAMi9B,OAAO9mB,IAClBA,OAEAuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASrM,KAGtCoP,IAAOla,GACTiW,GAAeqB,EAEfA,EADAK,EAj5eC,SAASohB,EAAGl9B,EAAGqP,GACtB,MAAO,CACH7L,KAAM,kBACNua,OAAQmf,EACR/8B,MAAOkP,EAAG1L,KAAK,KA64eRo/B,CAASjnB,EAAIC,EAAIsC,KAGtBlE,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAEP,GAAIsX,IAAOtX,EAAY,CAUrB,GATAsX,EAAKtB,GACL2B,EAAK3B,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBuB,EAz+gBK,IA0+gBLvB,OAEAuB,EAAKvX,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpC2S,IAAOvX,EAAY,CAGrB,IAFA4X,EAAK,GACLsC,EAAKqkB,KACErkB,IAAOla,GACZ4X,EAAGR,KAAK8C,GACRA,EAAKqkB,KAEH3mB,IAAO5X,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnBkE,EAx/gBC,IAy/gBDlE,OAEAkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAASvS,KAEpCsV,IAAOla,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAGdlE,GAAc2B,EACdA,EAAK3X,KAGPgW,GAAc2B,EACdA,EAAK3X,QAGPgW,GAAc2B,EACdA,EAAK3X,EAOP,GALI2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAt8eK,SAASzM,GACd,MAAO,CACL7L,KAAM,sBACNrD,MAAOkP,EAAG,GAAG1L,KAAK,KAm8efq/B,CAASlnB,KAEhBL,EAAKK,KACM3X,EAAY,CAUrB,GATAsX,EAAKtB,GACL2B,EAAK3B,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnBuB,EAxqfG,IAyqfHvB,OAEAuB,EAAKvX,EACmB,IAApBuW,IAAyBY,GAASzN,KAEpC6N,IAAOvX,EAAY,CAGrB,IAFA4X,EAAK,GACLsC,EAAKskB,KACEtkB,IAAOla,GACZ4X,EAAGR,KAAK8C,GACRA,EAAKskB,KAEH5mB,IAAO5X,GAC6B,KAAlCH,EAAMd,WAAWiX,KACnBkE,EAvrfD,IAwrfClE,OAEAkE,EAAKla,EACmB,IAApBuW,IAAyBY,GAASzN,KAEpCwQ,IAAOla,EAET2X,EADAJ,EAAK,CAACA,EAAIK,EAAIsC,IAGdlE,GAAc2B,EACdA,EAAK3X,KAGPgW,GAAc2B,EACdA,EAAK3X,QAGPgW,GAAc2B,EACdA,EAAK3X,EAEH2X,IAAO3X,IACTiW,GAAeqB,EACfK,EA7+eG,SAASzM,GACd,MAAO,CACL7L,KAAM,sBACNrD,MAAOkP,EAAG,GAAG1L,KAAK,KA0+ebs/B,CAASnnB,IAEhBL,EAAKK,KAMb,OAAOL,EAoJT,SAASknB,KACP,IAAIlnB,EAaJ,OAXIlM,GAASyxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BsB,EAAKzX,EAAMi9B,OAAO9mB,IAClBA,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS9L,KAEpCiM,IAAOtX,IACTsX,EAAKynB,MAGAznB,EAGT,SAASinB,KACP,IAAIjnB,EAaJ,OAXIxN,GAAS+yB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BsB,EAAKzX,EAAMi9B,OAAO9mB,IAClBA,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASpN,KAEpCuN,IAAOtX,IACTsX,EAAKynB,MAGAznB,EAGT,SAASynB,KACP,IAAIznB,EAUJ,MAxqfa,OAgqfTzX,EAAMgY,OAAO7B,GAAa,IAC5BsB,EAjqfW,KAkqfXtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS7L,KAGjCgM,EAiBT,SAASkX,KACP,IAAIlX,EAAIK,EAtrfcnb,EAgsftB,OARA8a,EAAKtB,IACL2B,EAUF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAEhBN,EAAKtB,IACL2B,EAAKyiB,QACMp6B,IACTuX,EAAKynB,QACMh/B,IACT4X,EAAKqnB,QACMj/B,GACTiW,GAAeqB,EAEfA,EADAK,EAxsfO,CACLtY,KAAM,SACNrD,MAssfY2b,EAAIJ,EAAIK,KAW1B5B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKyiB,QACMp6B,IACTuX,EAAKynB,QACMh/B,GACTiW,GAAeqB,EACfK,EAxtfO,SAASunB,EAAMC,GACtB,MAAMC,EAASF,EAAOC,EACtB,GAAIE,GAASH,GAAO,MAAO,CACzB7/B,KAAM,SACNrD,MAAOojC,GAET,MAAME,EAAQH,EAAK9gC,QAAU,EAAI8gC,EAAK9gC,OAAS,EAAI,EACnD,OAAOkhC,WAAWH,GAAQI,QAAQF,GAitf7BG,CAAS9nB,EAAIJ,GAClBD,EAAKK,IAMP3B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKyiB,QACMp6B,IACTuX,EAAK0nB,QACMj/B,GACTiW,GAAeqB,EACfK,EAhufK,SAASunB,EAAMQ,GAEtB,MAAO,CACLrgC,KAAM,SACNrD,MAHakjC,EAAOQ,GA+tffC,CAAShoB,EAAIJ,GAClBD,EAAKK,IAMP3B,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKyiB,QACMp6B,IACTiW,GAAeqB,EACfK,EAxufK,SAASunB,GAChB,OAAIG,GAASH,GAAc,CACzB7/B,KAAM,SACNrD,MAAOkjC,GAEFK,WAAWL,GAmufXU,CAASjoB,IAEhBL,EAAKK,KAKX,OAAOL,EAjFFuoB,MACM7/B,IACTiW,GAAeqB,EACfK,GA5rfoBnb,EA4rfNmb,IA3rfY,WAAXnb,EAAE6C,KAA0B7C,EAC9B,CAAE6C,KAAM,SAAUrD,MAAOQ,IA4rfxC8a,EAAKK,EA+EP,SAASyiB,KACP,IAAI9iB,EAAIK,EAAIJ,EAyEZ,OAvEAD,EAAKwoB,QACM9/B,IACTsX,EAAKyoB,QACM//B,IACTsX,EAAKtB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB2B,EA9lgBO,IA+lgBP3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzO,KAEpCiP,IAAO3X,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnB2B,EAxmgBK,IAymgBL3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1O,MAGtCkP,IAAO3X,IACTuX,EAAKuoB,QACM9/B,GACTiW,GAAeqB,EAEfA,EADAK,EAAcA,EAAIJ,IAOpBvB,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB2B,EA9ngBK,IA+ngBL3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzO,KAEpCiP,IAAO3X,IAC6B,KAAlCH,EAAMd,WAAWiX,KACnB2B,EAxogBG,IAyogBH3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1O,MAGtCkP,IAAO3X,IACTuX,EAAKwoB,QACM//B,GACTiW,GAAeqB,EAEfA,EADAK,EAtyfG,SAAS2C,EAAI0lB,GAAS,OAAO1lB,EAAK0lB,EAsyfhCC,CAAStoB,EAAIJ,KAOpBvB,GAAcsB,EACdA,EAAKtX,KAMNsX,EAGT,SAAS0nB,KACP,IAAI1nB,EAAIK,EAAIJ,EArzfU2oB,EAi1ftB,OA1BA5oB,EAAKtB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB2B,EA3zfW,IA4zfX3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1L,KAEpCkM,IAAO3X,IACTuX,EAAKuoB,QACM9/B,IACTuX,EAAK,MAEHA,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,GAt0fkBuoB,EAs0fJ3oB,GAp0fL,IAAM2oB,EADO,KAw0ftBlqB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS2nB,KACP,IAAI3nB,EAAIK,EAAIJ,EAmBZ,OAjBAD,EAAKtB,IACL2B,EAsEF,WACE,IAAIL,EAAIK,EAAIJ,EAEZD,EAAKtB,GACDpK,GAASixB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B2B,EAAK9X,EAAMi9B,OAAO9mB,IAClBA,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStL,KAEpC8L,IAAO3X,GACL8L,GAAS+wB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BuB,EAAK1X,EAAMi9B,OAAO9mB,IAClBA,OAEAuB,EAAKvX,EACmB,IAApBuW,IAAyBY,GAASpL,KAEpCwL,IAAOvX,IACTuX,EAAK,MAEHA,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAcA,GAx6foC,QAA7BwoB,EAw6fH5oB,GAx6fuC4oB,EAAM,MA26f/DnqB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAh7fM,IAAYmgC,EAm7fzB,OAAO7oB,EAzGF8oB,MACMpgC,IACTuX,EAAKuoB,QACM9/B,GACTiW,GAAeqB,EAEfA,EADAK,EAAcA,EAAIJ,IAOpBvB,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASwoB,KACP,IAAIxoB,EAAIK,EAAIJ,EAKZ,GAHAD,EAAKtB,GACL2B,EAAK,IACLJ,EAAKwoB,QACM//B,EACT,KAAOuX,IAAOvX,GACZ2X,EAAGP,KAAKG,GACRA,EAAKwoB,UAGPpoB,EAAK3X,EAQP,OANI2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAAcA,EAt3f8BnY,KAAK,KAw3fnD8X,EAAKK,EAKP,SAASooB,KACP,IAAIzoB,EAUJ,OARI5L,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BsB,EAAKzX,EAAMi9B,OAAO9mB,IAClBA,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASxL,KAGjC2L,EAwKT,SAASiS,KACP,IAAIjS,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GAlpjBO,YAmpjBRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9U,IAEpCsV,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA6ET,SAAS0V,KACP,IAAI1V,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA5ogBQ,OA6ogBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9K,KAEpCsL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAwCT,SAAS0K,KACP,IAAI1K,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GAltgBQ,SAmtgBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5K,KAEpCoL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS+B,KACP,IAAI/B,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GArvgBQ,SAsvgBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3K,KAEpCmL,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAxwgB6B,SA2wgB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAkHT,SAASuM,KACP,IAAIvM,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GAj4gBQ,WAk4gBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvK,KAEpC+K,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASoD,KACP,IAAIpD,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GAp6gBQ,WAq6gBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStK,KAEpC8K,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASqD,KACP,IAAIrD,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GAv8gBQ,cAw8gBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrK,KAEpC6K,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASsD,KACP,IAAItD,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA1+gBQ,SA2+gBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpK,KAEpC4K,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS+O,KACP,IAAI/O,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA7ghBQ,WA8ghBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnK,KAEpC2K,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASoQ,KACP,IAAIpQ,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GAhjhBQ,WAijhBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlK,KAEpC0K,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA6ET,SAASyI,KACP,IAAIzI,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA3phBQ,WA4phBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShK,KAEpCwK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAmHT,SAAS2e,KACP,IAAI3e,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAzyhBQ,cA0yhBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9J,KAEpCsK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA5zhB6B,cA+zhB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS2N,KACP,IAAI3N,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA50hBQ,SA60hBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7J,KAEpCqK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAwCT,SAASwJ,KACP,IAAIxJ,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA3okBQ,QA4okBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjT,KAEpCyT,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAv6hB6B,QA06hB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA6ET,SAASuB,KACP,IAAIvB,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA//hBQ,OAggiBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1J,KAEpCkK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASgC,KACP,IAAIhC,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAliiBQ,UAmiiBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzJ,KAEpCiK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EArjiB6B,UAwjiB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASkK,KACP,IAAIlK,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GArkiBQ,WAskiBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxJ,KAEpCgK,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAxliB6B,WA2liB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASqB,KACP,IAAIrB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAxmiBQ,aAymiBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvJ,KAEpC+J,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA3niB6B,aA8niB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA+ET,SAAS2C,KACP,IAAI3C,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GAzpmBO,OA0pmBRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlW,IAEpC0W,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA6ET,SAASid,KACP,IAAIjd,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA9ziBQ,SA+ziBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnJ,KAEpC2J,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAkHT,SAASqe,KACP,IAAIre,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA18iBQ,WA28iBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/I,KAEpCuJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASqL,KACP,IAAIrL,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA7+iBQ,UA8+iBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9I,KAEpCsJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAwCT,SAAS+X,KACP,IAAI/X,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GAj/kBQ,SAk/kBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjR,KAEpCyR,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAwCT,SAASuZ,KACP,IAAIvZ,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA3njBQ,OA4njBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3I,KAEpCmJ,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAwJT,SAASwQ,KACP,IAAIxQ,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA1yjBQ,QA2yjBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStI,KAEpC8I,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA7zjB6B,QAg0jB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASkM,KACP,IAAIlM,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA70jBQ,SA80jBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrI,KAEpC6I,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAh2jB6B,SAm2jB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyCT,SAAS2P,KACP,IAAI3P,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAn5jBQ,QAo5jBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnI,KAEpC2I,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAt6jB6B,QAy6jB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS4P,KACP,IAAI5P,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAt7jBQ,aAu7jBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlI,KAEpC0I,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAz8jB6B,aA48jB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS8gB,KACP,IAAI9gB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAz9jBQ,YA09jBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjI,KAEpCyI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA5+jB6B,YA++jB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS8hB,KACP,IAAI9hB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA5/jBQ,OA6/jBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShI,KAEpCwI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA/gkB6B,OAkhkB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASkhB,KACP,IAAIlhB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA/hkBQ,OAgikBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/H,KAEpCuI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAljkB6B,OAqjkB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASgiB,KACP,IAAIhiB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAlkkBQ,SAmkkBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9H,KAEpCsI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EArlkB6B,SAwlkB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA+ET,SAASmQ,KACP,IAAInQ,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA9roBM,WA+roBPnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3H,KAEpCmI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA/rkB6B,WAkskB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASkQ,KACP,IAAIlQ,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAznnBQ,QA0nnBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9T,IAEpCsU,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EApukB6B,QAuukB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS+a,KACP,IAAI/a,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GApvkBQ,QAqvkBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1H,KAEpCkI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAvwkB6B,QA0wkB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASwG,KACP,IAAIxG,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAvxkBQ,OAwxkBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzH,KAEpCiI,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA1ykB6B,OA6ykB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAuOT,SAASykB,KACP,IAAIzkB,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA5glBQ,SA6glBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlH,KAEpC0H,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS6G,KACP,IAAI7G,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA/ilBQ,SAgjlBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjH,KAEpCyH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA6ET,SAAS0kB,KACP,IAAI1kB,EAAIK,EAAIJ,EAAIK,EAiChB,OA/BAN,EAAKtB,GA9ppBO,QA+ppBRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9V,IAEpCsW,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS2iB,KACP,IAAI3iB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA7rlBQ,SA8rlBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9G,KAEpCsH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAhtlB6B,SAmtlB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyCT,SAAS+oB,KACP,IAAI/oB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAnwlBQ,SAowlBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5G,KAEpCoH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAtxlB6B,SAyxlB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASgpB,KACP,IAAIhpB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAtylBQ,YAuylBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3G,KAEpCmH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAzzlB6B,YA4zlB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASipB,KACP,IAAIjpB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAz0lBQ,YA00lBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1G,KAEpCkH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA51lB6B,YA+1lB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS6iB,KACP,IAAI7iB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA52lBQ,YA62lBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzG,KAEpCiH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA/3lB6B,YAk4lB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyCT,SAASojB,KACP,IAAIpjB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAl7lBQ,aAm7lBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvG,KAEpC+G,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAr8lB6B,aAw8lB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASkpB,KACP,IAAIlpB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAr9lBQ,QAs9lBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStG,KAEpC8G,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAx+lB6B,QA2+lB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyCT,SAASsjB,KACP,IAAItjB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA3hmBQ,YA4hmBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpG,KAEpC4G,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA9imB6B,YAijmB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyCT,SAASmpB,KACP,IAAInpB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAjmmBQ,aAkmmBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlG,KAEpC0G,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EApnmB6B,aAunmB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASopB,KACP,IAAIppB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GApomBQ,YAqomBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjG,KAEpCyG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAvpmB6B,YA0pmB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA2JT,SAASqpB,KACP,IAAIrpB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAnzmBQ,WAozmBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5F,KAEpCoG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAt0mB6B,WAy0mB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyCT,SAASspB,KACP,IAAItpB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAz3mBQ,UA03mBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1F,KAEpCkG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA54mB6B,UA+4mB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASupB,KACP,IAAIvpB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA55mBQ,WA65mBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzF,KAEpCiG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA/6mB6B,WAk7mB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASwpB,KACP,IAAIxpB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA/7mBQ,SAg8mBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxF,KAEpCgG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAl9mB6B,SAq9mB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS8mB,KACP,IAAI9mB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAl+mBQ,SAm+mBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvF,KAEpC+F,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAr/mB6B,SAw/mB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASgnB,KACP,IAAIhnB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GArgnBQ,aAsgnBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAStF,KAEpC8F,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAxhnB6B,aA2hnB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS6mB,KACP,IAAI7mB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAxinBQ,SAyinBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrF,KAEpC6F,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA3jnB6B,SA8jnB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS+mB,KACP,IAAI/mB,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA3knBQ,cA4knBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpF,KAEpC4F,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA9lnB6B,cAimnB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA2cT,SAAS+W,KACP,IAAI/W,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAlhoBQ,sBAmhoBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxE,KAEpCgF,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EArioB6B,sBAwioB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAmTT,SAASuC,KACP,IAAIvC,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA/0oBQ,SAg1oBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShE,KAEpCwE,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAl2oB6B,SAq2oB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASoL,KACP,IAAIpL,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EAn3oBW,IAo3oBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS/D,KAGjCkE,EA+BT,SAASypB,KACP,IAAIzpB,EAUJ,OARAA,EA/BF,WACE,IAAIA,EAUJ,MAt4oBa,OA83oBTzX,EAAMgY,OAAO7B,GAAa,IAC5BsB,EA/3oBW,KAg4oBXtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS9D,KAGjCiE,EAoBF0pB,MACMhhC,IACTsX,EAAKoL,QACM1iB,IACTsX,EArBN,WACE,IAAIA,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EA34oBW,IA44oBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS7D,KAGjCgE,EAUE2pB,IAIF3pB,EA+BT,SAAS+T,KACP,IAAI/T,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EA36qBW,IA46qBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS/P,KAGjCkQ,EAiBT,SAAS4U,KACP,IAAI5U,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAt9oBQ,QAu9oBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzD,KAEpCiE,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAz+oB6B,QA4+oB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASkV,KACP,IAAIlV,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAz/oBQ,WA0/oBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxD,KAEpCgE,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA5gpB6B,WA+gpB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASyC,KACP,IAAIzC,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA5hpBQ,UA6hpBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASvD,KAEpC+D,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA/ipB6B,UAkjpB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyCT,SAASkR,KACP,IAAIlR,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA3mtBO,QA4mtBRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnV,IAEpC2V,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAvnpB6B,QA0npB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA+ET,SAASsF,KACP,IAAItF,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA/ttBO,WAgutBRnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASpV,IAEpC4V,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAlupB6B,WAqupB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAyCT,SAASmX,KACP,IAAInX,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAvxpBQ,YAwxpBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnD,KAEpC2D,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA1ypB6B,YA6ypB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS4S,KACP,IAAI5S,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA1zpBQ,eA2zpBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASlD,KAEpC0D,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA70pB6B,eAg1pB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA6HT,SAAS4a,KACP,IAAI5a,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EA70qBW,IA80qBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS1L,KAGjC6L,EAGT,SAAS4D,KACP,IAAI5D,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EAv9pBW,IAw9pBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS1C,KAGjC6C,EAGT,SAASwa,KACP,IAAIxa,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EAhtrBW,IAitrBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASxO,KAGjC2O,EAGT,SAAS0D,KACP,IAAI1D,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EAjzsBW,IAkzsBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASrR,KAGjCwR,EAGT,SAAS6D,KACP,IAAI7D,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EA7zsBW,IA8zsBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASpR,KAGjCuR,EA+BT,SAASqP,KACP,IAAIrP,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EAriqBW,IAsiqBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASvC,KAGjC0C,EAGT,SAAS8kB,KACP,IAAI9kB,EAUJ,MAxjqBa,OAgjqBTzX,EAAMgY,OAAO7B,GAAa,IAC5BsB,EAjjqBW,KAkjqBXtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAStC,KAGjCyC,EAGT,SAAS6kB,KACP,IAAI7kB,EAUJ,MApkqBa,QA4jqBTzX,EAAMgY,OAAO7B,GAAa,IAC5BsB,EA7jqBW,MA8jqBXtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASrC,KAGjCwC,EA+BT,SAASgb,KACP,IAAIhb,EAOJ,OALAA,EA/BF,WACE,IAAIA,EAUJ,MAj0rBa,OAyzrBTzX,EAAMgY,OAAO7B,GAAa,IAC5BsB,EA1zrBW,KA2zrBXtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASrO,KAGjCwO,EAoBF4pB,MACMlhC,IACTsX,EAnBJ,WACE,IAAIA,EAUJ,MA9lqBa,OAslqBTzX,EAAMgY,OAAO7B,GAAa,IAC5BsB,EAvlqBW,KAwlqBXtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASpC,KAGjCuC,EAQA6pB,IAGA7pB,EAGT,SAASE,KACP,IAAIF,EAAIK,EAOR,IALAL,EAAK,IACLK,EAAKypB,QACMphC,IACT2X,EAAK0pB,MAEA1pB,IAAO3X,GACZsX,EAAGF,KAAKO,IACRA,EAAKypB,QACMphC,IACT2X,EAAK0pB,MAIT,OAAO/pB,EAGT,SAASiZ,KACP,IAAIjZ,EAAIK,EAOR,GALAL,EAAK,IACLK,EAAKypB,QACMphC,IACT2X,EAAK0pB,MAEH1pB,IAAO3X,EACT,KAAO2X,IAAO3X,GACZsX,EAAGF,KAAKO,IACRA,EAAKypB,QACMphC,IACT2X,EAAK0pB,WAIT/pB,EAAKtX,EAGP,OAAOsX,EAGT,SAAS+pB,KACP,IAAI/pB,EAUJ,OARAA,EAWF,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAExBjB,EAAKtB,GArqqBQ,OAsqqBTnW,EAAMgY,OAAO7B,GAAa,IAC5B2B,EAvqqBW,KAwqqBX3B,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnC,KAExC,GAAI2C,IAAO3X,EAAY,CAgCrB,IA/BAuX,EAAK,GACLK,EAAK5B,GACLkE,EAAKlE,GACLO,KA/qqBW,OAgrqBP1W,EAAMgY,OAAO7B,GAAa,IAC5BuC,EAjrqBS,KAkrqBTvC,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASlC,KAExCsB,KACIgC,IAAOvY,EACTka,OAAK,GAELlE,GAAckE,EACdA,EAAKla,GAEHka,IAAOla,IACTuY,EAAK+oB,QACMthC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,GACLkE,EAAKlE,GACLO,KA/sqBS,OAgtqBL1W,EAAMgY,OAAO7B,GAAa,IAC5BuC,EAjtqBO,KAktqBPvC,IAAe,IAEfuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASlC,KAExCsB,KACIgC,IAAOvY,EACTka,OAAK,GAELlE,GAAckE,EACdA,EAAKla,GAEHka,IAAOla,IACTuY,EAAK+oB,QACMthC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GA5uqBA,OA6uqBLH,EAAMgY,OAAO7B,GAAa,IAC5B4B,EA9uqBO,KA+uqBP5B,IAAe,IAEf4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASlC,KAEpC2C,IAAO5X,EAETsX,EADAK,EAAK,CAACA,EAAIJ,EAAIK,IAGd5B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA/GFiqB,MACMvhC,IACTsX,EAgHJ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAExBjB,EAAKtB,GAxwqBQ,OAywqBTnW,EAAMgY,OAAO7B,GAAa,IAC5B2B,EA1wqBW,KA2wqBX3B,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASjC,KAExC,GAAIyC,IAAO3X,EAAY,CA0BrB,IAzBAuX,EAAK,GACLK,EAAK5B,GACLkE,EAAKlE,GACLO,KACAgC,EAAKipB,KACLjrB,KACIgC,IAAOvY,EACTka,OAAK,GAELlE,GAAckE,EACdA,EAAKla,GAEHka,IAAOla,IACTuY,EAAK+oB,QACMthC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,GACLkE,EAAKlE,GACLO,KACAgC,EAAKipB,KACLjrB,KACIgC,IAAOvY,EACTka,OAAK,GAELlE,GAAckE,EACdA,EAAKla,GAEHka,IAAOla,IACTuY,EAAK+oB,QACMthC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA5LAmqB,MACMzhC,IACTsX,EA6LN,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAExBjB,EAAKtB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB2B,EAv1qBW,IAw1qBX3B,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShC,KAExC,GAAIwC,IAAO3X,EAAY,CA0BrB,IAzBAuX,EAAK,GACLK,EAAK5B,GACLkE,EAAKlE,GACLO,KACAgC,EAAKipB,KACLjrB,KACIgC,IAAOvY,EACTka,OAAK,GAELlE,GAAckE,EACdA,EAAKla,GAEHka,IAAOla,IACTuY,EAAK+oB,QACMthC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,GACLkE,EAAKlE,GACLO,KACAgC,EAAKipB,KACLjrB,KACIgC,IAAOvY,EACTka,OAAK,GAELlE,GAAckE,EACdA,EAAKla,GAEHka,IAAOla,IACTuY,EAAK+oB,QACMthC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,IAOZvC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,EAETsX,EADAK,EAAK,CAACA,EAAIJ,IAGVvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAzQEoqB,IAIFpqB,EAwQT,SAAS0S,KACP,IAAI1S,EAAIK,EAAQC,EAAQW,EAh6qBF+D,EAAGxf,EAAG1B,EAw8qB5B,OAtCAkc,EAAKtB,IACL2B,EAAK8W,QACMzuB,GACJwX,OACMxX,IACT4X,EAAKyT,QACMrrB,IACT4X,EAAK,MAEHA,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKmW,QACM1uB,GACTiW,GAAeqB,EAh7qBAxa,EAi7qBG8a,EAj7qBAxc,EAi7qBImd,EACtBjB,EADAK,EAh7qBG,CACLtY,MAFcid,EAi7qBE3E,GA/6qBRxM,cACRwO,QAAS2C,EAAEnR,cACXogB,OAAQzuB,EACRd,MAAOZ,KAu7qBT4a,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASgqB,KACP,IAAIhqB,EAUJ,OARIzX,EAAMxB,OAAS2X,IACjBsB,EAAKzX,EAAMi9B,OAAO9mB,IAClBA,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS/B,KAGjCkC,EA0BT,SAAS8pB,KACP,IAAI9pB,EAUJ,OARIjC,GAASwnB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BsB,EAAKzX,EAAMi9B,OAAO9mB,IAClBA,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS7B,KAGjCgC,EAGT,SAASkqB,KACP,IAAIlqB,EAAIK,EAGR,IADAL,EA6BF,WACE,IAAIA,EAAIK,EAERL,EAAKtB,GACLO,KACI1W,EAAMxB,OAAS2X,IACjB2B,EAAK9X,EAAMi9B,OAAO9mB,IAClBA,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/B,KAExCmB,KACIoB,IAAO3X,EACTsX,OAAK,GAELtB,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EAjDFqqB,MACM3hC,EAST,GARAsX,EAAK,GACD/L,GAASsxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B2B,EAAK9X,EAAMi9B,OAAO9mB,IAClBA,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3L,KAEpCmM,IAAO3X,EACT,KAAO2X,IAAO3X,GACZsX,EAAGF,KAAKO,GACJpM,GAASsxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B2B,EAAK9X,EAAMi9B,OAAO9mB,IAClBA,OAEA2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3L,UAI1C8L,EAAKtX,EAIT,OAAOsX,EAuCT,SAASmP,KACP,IAAInP,EAAYM,EAkChB,OAhCAN,EAAKtB,GACLC,GAAeD,GA3jrBW4rB,GAAU,KAAW,OA8jrBxC,EAEA5hC,KAEIA,GACJwX,OACMxX,IACT4X,EAAKwJ,QACMphB,IACT4X,EAqJR,WACE,IAAIN,EAAYM,EAEhBN,EAAKtB,GA/4CP,WACE,IAAIsB,EAUJ,MA56oBa,WAo6oBTzX,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BmM,EAAKzX,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS5D,KAGjC+D,EAq4CFuqB,KACM7hC,GACJwX,OACMxX,IACT4X,EAAKkqB,QACM9hC,GACTiW,GAAeqB,EAEfA,EA3trBS,CAAEjY,KAAM,SAAU6Z,KA0trBbtB,KAWlB5B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA/KIyqB,IAEHnqB,IAAO5X,GACTiW,GAAeqB,EAEfA,EA1krBS,CAAEmY,KAykrBG7X,EAzkrBMoqB,KAAMJ,MA4krB1B5rB,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAmFT,SAAS8J,KACP,IAAI9J,EAAIK,EAAQC,EAAQW,EA2CxB,OAzCAjB,EAAKtB,IACL2B,EAAKgd,QACM30B,IACT2X,EAAKsqB,MAEHtqB,IAAO3X,GACJwX,OACMxX,IACT4X,EA11CN,WACE,IAAIN,EAUJ,MAx7oBa,OAg7oBTzX,EAAMgY,OAAO7B,GAAa,IAC5BsB,EAj7oBW,KAk7oBXtB,IAAe,IAEfsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAAS3D,KAGjC8D,EA+0CE4qB,MACMliC,IACT4X,EAAKyT,MAEHzT,IAAO5X,GACJwX,OACMxX,IACTuY,EAAKupB,QACM9hC,GACTiW,GAAeqB,EAEfA,EADAK,EA7rrBG,CACLtY,KAAM,SACNqzB,KA2rrBgB/a,EA1rrBhB4T,OA0rrBoB3T,EAzrrBpB0gB,MAyrrBwB/f,KAW1BvC,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAgCT,SAASwqB,KACP,IAAIxqB,EAaJ,OAXAA,EAAKuE,QACM7b,IACTsX,EA4KJ,WACE,IAAIA,EAAIK,EAAQC,EAAQW,EAAQC,EAEhClB,EAAKtB,IACL2B,EAAKgd,QACM30B,GACJwX,OACMxX,IACT4X,EAAK+b,QACM3zB,GACJwX,OACMxX,IACTuY,EAAKoc,QACM30B,GACJwX,OACMxX,IACTwY,EAAKqb,QACM7zB,GACTiW,GAAeqB,EAEfA,EADAK,EA76rBC,CACLtY,KAAM,OACN8iC,OA26rBkBxqB,EA16rBlByqB,OA06rB0B7pB,EAz6rB1B+B,GAy6rBsB1C,EAx6rBtBsF,GAw6rB8B1E,KA2BtCxC,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA9NA+qB,MACMriC,IACTsX,EAAKgrB,QACMtiC,IACTsX,EAudR,WACE,IAAIA,EAAYM,EAEhBN,EAAKtB,GAlvCP,WACE,IAAIsB,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EA7gqBW,IA8gqBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASzC,KAGjC4C,EAwuCFirB,KACMviC,GACJwX,OACMxX,IACT4X,EAAK4qB,QACMxiC,GACJwX,OACMxX,GA5uCnB,WACE,IAAIsX,EAUJ,OARsC,KAAlCzX,EAAMd,WAAWiX,KACnBsB,EAzhqBW,IA0hqBXtB,OAEAsB,EAAKtX,EACmB,IAApBuW,IAAyBY,GAASxC,KAGjC2C,EAkuCMmrB,KACMziC,GACTiW,GAAeqB,EAEfA,EAhrsBG,CAAEjY,KAAM,QAASrD,MA+qsBN4b,KAmBtB5B,GAAcsB,EACdA,EAAKtX,GAGP,OAAOsX,EA7fIorB,IAKJprB,EAGT,SAASgrB,KACP,IAAIhrB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKgrB,QACM3iC,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKif,QACMx3B,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKmqB,QACM3iC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKif,QACMx3B,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKmqB,QACM3iC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAKhQ,GAASgQ,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAGT,SAASqrB,KACP,IAAIrrB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKirB,QACM5iC,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKwhB,QACM/5B,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKoqB,QACM5iC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAKwhB,QACM/5B,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKoqB,QACM5iC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAKhQ,GAASgQ,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EAwDT,SAASsrB,KACP,IAAItrB,EAAYM,EAx8rBMmB,EAy/rBtB,OA/CAzB,EAAKoY,QACM1vB,IACTsX,EAAKqd,QACM30B,IACTsX,EAAKgJ,QACMtgB,IACTsX,EAAK4d,QACMl1B,IACTsX,EAAKtB,GACAgF,OACMhb,GACJwX,OACMxX,IACT4X,EAAK0qB,QACMtiC,GACJwX,OACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,GA79rBXyB,EA89rBUnB,GA79rBtB2a,aAAc,EA89rBNjb,EA79rBHyB,IA++rBL/C,GAAcsB,EACdA,EAAKtX,IAORsX,EAGT,SAAS6E,KACP,IAAI7E,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAgD5B,OA9CAxD,EAAKtB,IACL2B,EAAKwS,QACMnqB,GACTuX,EAAKvB,IACL4B,EAAKJ,QACMxX,IACTka,EAAKgY,QACMlyB,IACTuY,EAAKf,QACMxX,IACT8a,EAAKqP,QACMnqB,EAETuX,EADAK,EAAK,CAACA,EAAIsC,EAAI3B,EAAIuC,IAexB9E,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,IACTuX,EAAK,MAEHA,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA9hsBS,SAASwI,EAAI5f,GAClB,MAAMkyB,EAAS,CAAEn3B,KAAM,CAAC6kB,IAKxB,OAJa,OAAT5f,IACFkyB,EAAOzZ,OAASmH,EAChBsS,EAAOn3B,KAAO,CAACiF,EAAK,KAEfkyB,EAwhsBNoQ,CAASlrB,EAAIJ,KAGlBvB,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAASgJ,KACP,IAAIhJ,EAAIK,EAAgBY,EA6DxB,OA3DAjB,EAAKtB,IACL2B,EAAKwE,QACMnc,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,IACTuY,EAAKiqB,QACMxiC,IACTuY,EAAK,MAEHA,IAAOvY,GACJwX,OACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,EAEfA,EADAK,EAxjsBC,CACLtY,KAAM,WACN/D,KAsjsBkBqc,EArjsBlBsG,KAAM,CACJ5e,KAAM,YACNrD,MAmjsBoBuc,MAjjsBnBqhB,QA4jsBH5jB,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKwE,QACMnc,IACTiW,GAAeqB,EACfK,EAjlsBS,SAASrc,GAChB,MAAO,CACH+D,KAAM,WACN/D,KAAMA,EACN2iB,KAAM,QACH2b,MA4ksBJkJ,CAASnrB,IAEhBL,EAAKK,GAGAL,EAGT,SAASkrB,KACP,IAAIlrB,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAIhC,GAFAlB,EAAKtB,IACL2B,EAAKirB,QACM5iC,EAAY,CA6BrB,IA5BAuX,EAAK,GACLK,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKoqB,QACM5iC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAEA4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACRA,EAAK5B,IACLkE,EAAK1C,QACMxX,IACTuY,EAAK2C,QACMlb,IACT8a,EAAKtD,QACMxX,IACTwY,EAAKoqB,QACM5iC,EAET4X,EADAsC,EAAK,CAACA,EAAI3B,EAAIuC,EAAItC,IAexBxC,GAAc4B,EACdA,EAAK5X,GAGLuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAAK/V,EAAQ+V,EAAIJ,KAGjBvB,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAGP,OAAOsX,EA4CT,SAASqd,KACP,IAAIrd,EAAIK,EAAIJ,EAxssBU1a,EAAGxB,EA2tsBzB,OAjBAic,EAAKtB,IACL2B,EAAKopB,QACM/gC,IACTuX,EAAK0qB,QACMjiC,GACTiW,GAAeqB,EA/ssBGza,EAgtsBJ8a,EAhtsBOtc,EAgtsBHkc,EAClBD,EADAK,EA9ssBS,CACLtY,KAAM,SACHhE,EACHue,OAAQ/c,KAktsBdmZ,GAAcsB,EACdA,EAAKtX,GAGAsX,EAGT,SAAS2qB,KACP,IAAI3qB,EAAIK,EAAIJ,EAvtsBUjc,EAAMH,EAmvsB5B,OA1BAmc,EAAKtB,IACL2B,EAAKyU,QACMpsB,IACTuX,EA0BJ,WACE,IAAID,EAAIK,EAAIJ,EAAIK,EAAIsC,EAEpB5C,EAAKtB,GACL2B,EAAK,GACLJ,EAAKvB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB4B,EArutBW,IAsutBX5B,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS1L,KAEpCmM,IAAO5X,IACTka,EAAKkS,QACMpsB,EAETuX,EADAK,EAAK,CAACA,EAAIsC,IAOZlE,GAAcuB,EACdA,EAAKvX,GAEP,KAAOuX,IAAOvX,GACZ2X,EAAGP,KAAKG,GACRA,EAAKvB,GACiC,KAAlCnW,EAAMd,WAAWiX,KACnB4B,EA5vtBS,IA6vtBT5B,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAAS1L,KAEpCmM,IAAO5X,IACTka,EAAKkS,QACMpsB,EAETuX,EADAK,EAAK,CAACA,EAAIsC,IAOZlE,GAAcuB,EACdA,EAAKvX,GAGL2X,IAAO3X,IACTiW,GAAeqB,EACfK,EAvxsBW,SAAS3c,GAChB,MAAM8B,EAAI,GACV,IAAK,IAAI/B,EAAI,EAAGA,EAAIC,EAAEqD,OAAQtD,IAC5B+B,EAAEsa,KAAKpc,EAAED,GAAG,IAEd,OAAO+B,EAkxsBNimC,CAASprB,IAIhB,OAFAL,EAAKK,EAhFEqrB,MACMhjC,GACTiW,GAAeqB,EA9tsBGhc,EA+tsBJqc,EA/tsBUxc,EA+tsBNoc,EA7tsBhBqqB,GAAQxqB,KAAK9b,GA8tsBfgc,EADAK,EA5tsBS,CACLtY,KAAM,MACN/D,KAAMA,EACN2nC,QAAS9nC,EACTye,OAAQ,QA+tsBd5D,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK6W,QACMxuB,IACTiW,GAAeqB,EACfK,EAnusBS,CACLtY,KAAM,MACN/D,KAiusBUqc,EAjusBF3b,MACRinC,QAAS,GACTC,OAAQ,KACRtpB,OAAQ,OAgusBdtC,EAAKK,GAGAL,EA8DT,SAASqU,KACP,IAAIrU,EAyBJ,OAvBAA,EA6FF,WACE,IAAIA,EAAIK,EAAgBY,EAAIuC,EAE5BxD,EAAKtB,IACL2B,EAAK0oB,QACMrgC,IACT2X,EAAK2oB,MAEP,GAAI3oB,IAAO3X,EAET,GADKwX,OACMxX,EAET,GADKgb,OACMhb,EAET,GADKwX,OACMxX,EAAY,CASrB,GARAuY,EAAK,GACD7M,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B8E,EAAKjb,EAAMi9B,OAAO9mB,IAClBA,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASxL,KAEpCmP,IAAO9a,EACT,KAAO8a,IAAO9a,GACZuY,EAAGnB,KAAK0D,GACJpP,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B8E,EAAKjb,EAAMi9B,OAAO9mB,IAClBA,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASxL,UAI1C4M,EAAKvY,EAEHuY,IAAOvY,IACT8a,EAAKtD,QACMxX,GACJmb,OACMnb,GACTiW,GAAeqB,EACfK,EAr5sBD,CAAE9B,SAq5sBa8B,EAr5sBAtZ,OAAQ8kC,SAq5sBJ5qB,EAr5sBe/Y,KAAK,IAAK,IAAK+yB,aAAa,GAs5sB7Djb,EAAKK,IAUT3B,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK0oB,QACMrgC,IACTiW,GAAeqB,EACfK,EAAK/B,GAAS+B,KAEhBL,EAAKK,KACM3X,IACTsX,EAAKtB,IACL2B,EAAK2oB,QACMtgC,IACTiW,GAAeqB,EACfK,EAAK/B,GAAS+B,IAEhBL,EAAKK,IAIT,OAAOL,EAzLF8rB,MACMpjC,IACTsX,EA6NJ,WACE,IAAIA,EAAIK,EAAIJ,EAAIK,EAAIsC,EAAI3B,EAAIuC,EAAItC,EAAIuC,EAAItC,EAAIkV,EAAKvU,EAEjD9B,EAAKtB,IACL2B,EAAK4oB,QACMvgC,IACT2X,EAAKwiB,QACMn6B,IACT2X,EAAK6oB,QACMxgC,IACT2X,EAAKijB,QACM56B,IACT2X,EAAK8oB,QACMzgC,IACT2X,EAAK+oB,QACM1gC,IACT2X,EAAKgpB,QACM3gC,IACT2X,EAAKipB,QACM5gC,IACT2X,EAAKkpB,QACM7gC,IACT2X,EApnIpB,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAhulBQ,QAiulBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7G,KAEpCqH,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAnvlB6B,QAsvlB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAilIgB+rB,MACMrjC,IACT2X,EAAKmpB,MAWzB,GAAInpB,IAAO3X,EAET,IADAuX,EAAKC,QACMxX,EAET,IADA4X,EAAKoD,QACMhb,EAET,IADAka,EAAK1C,QACMxX,EAAY,CASrB,GARAuY,EAAK,GACD7M,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B8E,EAAKjb,EAAMi9B,OAAO9mB,IAClBA,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASxL,KAEpCmP,IAAO9a,EACT,KAAO8a,IAAO9a,GACZuY,EAAGnB,KAAK0D,GACJpP,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B8E,EAAKjb,EAAMi9B,OAAO9mB,IAClBA,OAEA8E,EAAK9a,EACmB,IAApBuW,IAAyBY,GAASxL,UAI1C4M,EAAKvY,EAEP,GAAIuY,IAAOvY,EAET,IADA8a,EAAKtD,QACMxX,EAAY,CAGrB,GAFAwY,EAAKxC,IACL+E,EAAKG,QACMlb,EAET,IADAyY,EAAKjB,QACMxX,EAAY,CASrB,GARA2tB,EAAM,GACFjiB,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BoD,EAAMvZ,EAAMi9B,OAAO9mB,IACnBA,OAEAoD,EAAMpZ,EACkB,IAApBuW,IAAyBY,GAASxL,KAEpCyN,IAAQpZ,EACV,KAAOoZ,IAAQpZ,GACb2tB,EAAIvW,KAAKgC,GACL1N,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BoD,EAAMvZ,EAAMi9B,OAAO9mB,IACnBA,OAEAoD,EAAMpZ,EACkB,IAApBuW,IAAyBY,GAASxL,UAI1CgiB,EAAM3tB,EAEJ2tB,IAAQ3tB,EAEVwY,EADAuC,EAAK,CAACA,EAAItC,EAAIkV,IAGd3X,GAAcwC,EACdA,EAAKxY,QAGPgW,GAAcwC,EACdA,EAAKxY,OAGPgW,GAAcwC,EACdA,EAAKxY,EAEHwY,IAAOxY,IACTwY,EAAK,MAEHA,IAAOxY,IACT+a,EAAKvD,QACMxX,IACTyY,EAAK0C,QACMnb,IACT2tB,EAAMnW,QACMxX,IACVoZ,EAAMkqB,QACMtjC,IACVoZ,EAAM,MAEJA,IAAQpZ,GACViW,GAAeqB,EA/ltBTzb,EAgmtBgB2c,EAhmtBb1b,EAgmtBiBsc,EAA1BzB,EAhmtBqB,CAAE9B,SAgmtBT8B,EAhmtBsBtZ,OAAQ8kC,SAgmtB1B5qB,EAhmtBqC/Y,KAAK,IAAK,IAAK+6B,MAAO1+B,GAAKsnC,SAAStnC,EAAE,GAAG2D,KAAK,IAAK,IAAK+yB,aAAa,EAAMjU,OAAQxhB,GAimtB1Iwa,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,OAGPgW,GAAcsB,EACdA,EAAKtX,EA5otBM,IAAenE,EAAGiB,EA8otB/B,GAAIwa,IAAOtX,EAAY,CA8BrB,GA7BAsX,EAAKtB,IACL2B,EAAK4oB,QACMvgC,IACT2X,EAAKwiB,QACMn6B,IACT2X,EAAK6oB,QACMxgC,IACT2X,EAAKijB,QACM56B,IACT2X,EAAK8oB,QACMzgC,IACT2X,EAAK+oB,QACM1gC,IACT2X,EAAKgpB,QACM3gC,IACT2X,EAAKipB,QACM5gC,IACT2X,EAAKkpB,QACM7gC,IACT2X,EAAKmpB,MAUnBnpB,IAAO3X,EAAY,CASrB,GARAuX,EAAK,GACD7L,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B4B,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASxL,KAEpCiM,IAAO5X,EACT,KAAO4X,IAAO5X,GACZuX,EAAGH,KAAKQ,GACJlM,GAASmxB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7B4B,EAAK/X,EAAMi9B,OAAO9mB,IAClBA,OAEA4B,EAAK5X,EACmB,IAApBuW,IAAyBY,GAASxL,UAI1C4L,EAAKvX,EAEHuX,IAAOvX,IACT4X,EAAKJ,QACMxX,IACTka,EAAKopB,QACMtjC,IACTka,EAAK,MAEHA,IAAOla,GACTiW,GAAeqB,EACfK,EA3stBG,SAAS1b,EAAGjB,EAAG8B,GAAK,MAAO,CAAE+Y,SAAU5Z,EAAGoC,OAAQ8kC,SAASnoC,EAAEwE,KAAK,IAAK,IAAK8e,OAAQxhB,GA2stBlFymC,CAAS5rB,EAAIJ,EAAI2C,GACtB5C,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,QAGPgW,GAAcsB,EACdA,EAAKtX,EAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAK4oB,QACMvgC,IACT2X,EAAKwiB,QACMn6B,IACT2X,EAAK6oB,QACMxgC,IACT2X,EAAKijB,QACM56B,IACT2X,EAAK8oB,QACMzgC,IACT2X,EAAK+oB,QACM1gC,IACT2X,EAAKgpB,QACM3gC,IACT2X,EAAKipB,QACM5gC,IACT2X,EAAKkpB,QACM7gC,IACT2X,EAAKmpB,MAUnBnpB,IAAO3X,IACTuX,EAAKC,QACMxX,IACT4X,EAAK0rB,QACMtjC,IACT4X,EAAK,MAEHA,IAAO5X,IACTka,EAAK1C,QACMxX,GACTiW,GAAeqB,EACfK,EArwtBC,SAAS1b,EAAGa,GAAK,MAAO,CAAE+Y,SAAU5Z,EAAGqiB,OAAQxhB,GAqwtB3C0mC,CAAS7rB,EAAIC,GAClBN,EAAKK,IAMP3B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,IAKX,OAAOsX,EAthBAmsB,MACMzjC,IACTsX,EAuhBN,WACE,IAAIA,EAAIK,EAAgBY,EAAgBE,EAExCnB,EAAKtB,IACL2B,EAAKymB,QACMp+B,IACT2X,EAAK2mB,QACMt+B,IACT2X,EAAKwmB,QACMn+B,IACT2X,EAAK0mB,MAIP1mB,IAAO3X,GACJwX,OACMxX,GACJgb,OACMhb,GACJwX,OACMxX,GACL8V,GAAS+mB,KAAKh9B,EAAMi9B,OAAO9mB,MAC7BuC,EAAK1Y,EAAMi9B,OAAO9mB,IAClBA,OAEAuC,EAAKvY,EACmB,IAApBuW,IAAyBY,GAASpB,KAEpCwC,IAAOvY,GACJwX,OACMxX,GACJmb,OACMnb,GACJwX,OACMxX,IACTyY,EAAK6qB,QACMtjC,IACTyY,EAAK,MAEHA,IAAOzY,GACTiW,GAAeqB,EACfK,EAn0tBsB,CAAE9B,SAm0tBV8B,EAn0tBuBtZ,OAAQ8kC,SAm0tB3B5qB,EAn0tBuC,IAAKga,aAAa,GAo0tB3Ejb,EAAKK,IAEL3B,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,KAebgW,GAAcsB,EACdA,EAAKtX,GAEHsX,IAAOtX,IACTsX,EAAKtB,IACL2B,EAAKymB,QACMp+B,IACT2X,EAAK2mB,QACMt+B,IACT2X,EAAKwmB,QACMn+B,IACT2X,EAAK0mB,MAIP1mB,IAAO3X,IACTiW,GAAeqB,EACfK,EAAK/B,GAAS+B,IAEhBL,EAAKK,GAGP,OAAOL,EAznBEosB,MACM1jC,IACTsX,EAupBR,WACE,IAAIA,EAAIK,EAERL,EAAKtB,IACL2B,EApqIF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA9jmBQ,SA+jmBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASnG,KAEpC2G,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAjlmB6B,SAolmB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAioIFqsB,MACM3jC,IACTiW,GAAeqB,EACfK,EAAK/B,GAAS+B,IAIhB,OAFAL,EAAKK,EAhqBMisB,MACM5jC,IACTsX,EAmqBV,WACE,IAAIA,EAAIK,EAERL,EAAKtB,IACL2B,EAhkIF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAvqmBQ,aAwqmBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAShG,KAEpCwG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA1rmB6B,aA6rmB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EA6hIFusB,MACM7jC,IACT2X,EA5hIJ,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA1smBQ,SA2smBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS/F,KAEpCuG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA7tmB6B,SAgumB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAy/HAwsB,MACM9jC,IACT2X,EAx/HN,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GA7umBQ,eA8umBTnW,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS9F,KAEpCsG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAhwmB6B,eAmwmB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAq9HEysB,MACM/jC,IACT2X,EAp9HR,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAhxmBQ,aAixmBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS7F,KAEpCqG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAnymB6B,aAsymB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAi7HI0sB,IAIPrsB,IAAO3X,IACTiW,GAAeqB,EACfK,EAl7tBgC,CAAE9B,SAk7tBpB8B,IAIhB,OAFAL,EAAKK,EArrBQssB,MACMjkC,IACTsX,EAsnBZ,WACE,IAAIA,EAAIK,EAAQC,EAEhBN,EAAKtB,IACL2B,EAv1HF,WACE,IAAIL,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAt1mBQ,SAu1mBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3F,KAEpCmG,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EAz2mB6B,SA42mB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAozHF4sB,MACMlkC,GACJwX,OACMxX,IACT4X,EAAKke,QACM91B,GACTiW,GAAeqB,EAx4tBCrb,EAy4tBF0b,GAz4tBKoB,EAy4tBDnB,GAx4tBhB2a,aAAc,EAy4tBhBjb,EADAK,EAv4tBO,CACL9B,SAAU5Z,EACVid,KAAMH,KAg5tBZ/C,GAAcsB,EACdA,EAAKtX,GAr5tBM,IAAS/D,EAAG8c,EAw5tBzB,OAAOzB,EAhpBQ6sB,MACMnkC,IACTsX,EA6Dd,WACE,IAAIA,EAAIK,EAERL,EAAKtB,GA71sBQ,YA81sBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASxB,KAEpCgC,IAAO3X,IACTiW,GAAeqB,EACfK,EAr2sB+B,CAAE9B,SAAU,YAy2sB7C,OAFAyB,EAAKK,EA5EYysB,MACMpkC,IACTsX,EAYhB,WACE,IAAIA,EAAIK,EAERL,EAAKtB,GAvzsBQ,SAwzsBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS5B,KAEpCoC,IAAO3X,IA7zsBE,aA8zsBPH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS3B,KAEpCmC,IAAO3X,IAn0sBA,eAo0sBLH,EAAMgY,OAAO7B,GAAa,IAAI7K,eAChCwM,EAAK9X,EAAMgY,OAAO7B,GAAa,IAC/BA,IAAe,KAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAAS1B,KAEpCkC,IAAO3X,IAz0sBF,aA00sBHH,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASzB,QAK1CiC,IAAO3X,IACTiW,GAAeqB,EACfK,EAp1sBgC,CAAE9B,SAo1sBpB8B,EAp1sBgC1Y,gBAw1sBhD,OAFAqY,EAAKK,EAtDc0sB,IASZ/sB,EAqKT,SAASgsB,KACP,IAAIhsB,EAAIK,EAAQC,EA+BhB,OA7BAN,EAAKtB,IACL2B,EAAK+iB,QACM16B,IACT2X,EAAK,MAEHA,IAAO3X,GACJwX,OACMxX,IACT4X,EAtxHN,WACE,IAAIN,EAAIK,EAAIJ,EAAIK,EAkChB,OAhCAN,EAAKtB,GAx/lBQ,aAy/lBTnW,EAAMgY,OAAO7B,GAAa,GAAG7K,eAC/BwM,EAAK9X,EAAMgY,OAAO7B,GAAa,GAC/BA,IAAe,IAEf2B,EAAK3X,EACmB,IAApBuW,IAAyBY,GAASrG,KAEpC6G,IAAO3X,GACTuX,EAAKvB,GACLO,KACAqB,EAAKE,KACLvB,KACIqB,IAAO5X,EACTuX,OAAK,GAELvB,GAAcuB,EACdA,EAAKvX,GAEHuX,IAAOvX,GACTiW,GAAeqB,EAEfA,EADAK,EA3gmB6B,aA8gmB7B3B,GAAcsB,EACdA,EAAKtX,KAGPgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAmvHEgtB,MACMtkC,IACT4X,EAAK,MAEHA,IAAO5X,GACTiW,GAAeqB,EAEfA,EADAK,EAv9sBO,SAAS4sB,EAAIC,GACpB,MAAM/R,EAAS,GAGf,OAFI8R,GAAI9R,EAAOrb,KAAKmtB,GAChBC,GAAI/R,EAAOrb,KAAKotB,GACb/R,EAm9sBFgS,CAAS9sB,EAAIC,KAGlB5B,GAAcsB,EACdA,EAAKtX,KAOTgW,GAAcsB,EACdA,EAAKtX,GAGAsX,EAueP,MAAM7N,GAAc,CAClB,OAAS,EACT,KAAO,EACP,KAAO,EACP,KAAO,EACP,IAAM,EACN,KAAO,EAEP,SAAW,EACX,IAAM,EAEN,MAAQ,EACR,MAAQ,EACR,QAAU,EACV,UAAY,EACZ,cAAgB,EAChB,cAAgB,EAChB,mBAAqB,EACrB,cAAgB,EAEhB,QAAU,EACV,MAAQ,EACR,UAAY,EACZ,MAAQ,EAER,MAAQ,EACR,KAAO,EACP,QAAU,EACV,SAAW,EAEX,OAAS,EACT,MAAQ,EACR,MAAQ,EAER,OAAS,EAET,QAAU,EAEV,IAAM,EACN,OAAS,EACT,QAAU,EACV,MAAQ,EACR,IAAM,EAEN,MAAQ,EAKR,MAAQ,EACR,MAAQ,EACR,OAAS,EACT,cAAgB,EAEhB,KAAO,EACP,MAAQ,EAER,IAAM,EACN,IAAM,EACN,OAAS,EACT,OAAS,EAET,WAAa,EACb,QAAU,EACV,MAAQ,EACR,OAAS,EAET,QAAU,EACV,cAAgB,EAChB,KAAO,EACP,MAAQ,EACR,aAAe,EAEf,OAAS,EACT,MAAQ,EACR,MAAQ,EACR,UAAY,EAGZ,OAAS,EACT,QAAU,EACV,OAAS,EAET,QAAU,EAEV,MAAQ,EACR,MAAQ,EACR,OAAS,EACT,OAAS,EAET,QAAU,EACV,SAAW,EACX,OAAS,EACT,SAAW,EACX,cAAgB,GAGlB,SAASmwB,KACP,OAAO95B,EAAQ4kC,iBAAmB,CAACC,IApguB9B9tB,GAAoBZ,GAAcD,KAoguBe,GAGxD,SAAS0hB,GAAgBpd,EAAIvB,GAC3B,MAAO,CACL1Z,KAAM,aACNulC,SAAUtqB,EACVpB,KAAMH,GAIV,SAAS4Z,GAAiBrY,EAAIoY,EAAM4F,GAClC,MAAO,CACLj5B,KAAM,cACNulC,SAAUtqB,EACVoY,KAAMA,EACN4F,MAAOA,GAIX,SAAS+G,GAASwF,GAChB,MAAMC,EAAkB/nC,EAAOgoC,OAAOC,kBAEtC,QADYjoC,EAAO8nC,GACTC,GAIZ,SAAStkC,GAAWF,EAAMC,EAAM0kC,EAAK,GACnC,MAAMxS,EAAS,CAACnyB,GAChB,IAAK,IAAIvF,EAAI,EAAGA,EAAIwF,EAAKlC,OAAQtD,WACxBwF,EAAKxF,GAAGkqC,GAAI/sB,iBACZ3X,EAAKxF,GAAGkqC,GAAIp+B,WACnB4rB,EAAOrb,KAAK7W,EAAKxF,GAAGkqC,IAEtB,OAAOxS,EAGT,SAAS7qB,GAAsBtH,EAAMC,GACnC,IAAIkyB,EAASnyB,EACb,IAAK,IAAIvF,EAAI,EAAGA,EAAIwF,EAAKlC,OAAQtD,IAC/B03B,EAASE,GAAiBpyB,EAAKxF,GAAG,GAAI03B,EAAQlyB,EAAKxF,GAAG,IAExD,OAAO03B,EAGT,SAAS/N,GAAgBwgB,GACvB,MAAMnR,EAAQntB,GAAWs+B,GACzB,OAAInR,IACAmR,GACG,MAGT,SAASn+B,GAAqBF,GAC5B,MAAMs+B,EAAiB,IAAIC,IAE3B,IAAI,IAAIhvB,KAAUvP,EAAWw+B,OAAQ,CACnC,MAAMC,EAAalvB,EAAOmvB,MAFT,MAGjB,IAAKD,EAAY,CACfH,EAAej+B,IAAIkP,GACnB,MAEEkvB,GAAcA,EAAW,KAAIA,EAAW,GAAK5gB,GAAgB4gB,EAAW,KAC5EH,EAAej+B,IAAIo+B,EAAW9lC,KARb,OAUnB,OAAOlB,MAAM8Z,KAAK+sB,GAkCpB,IAAIvD,GAAU,GAEd,MAAM1pB,GAAY,IAAIktB,IAChBv+B,GAAa,IAAIu+B,IACjBx+B,GAAa,GAKrB,IAFA7G,EAAaK,OAEMJ,GAAcgW,KAAgBnW,EAAMxB,OACrD,OAAO0B,EAMP,MAJIA,IAAeC,GAAcgW,GAAcnW,EAAMxB,QACnD8Y,GAnluBK,CAAE9X,KAAM,QAsluBTgY,GACJf,GACAD,GAAiBxW,EAAMxB,OAASwB,EAAMi9B,OAAOzmB,IAAkB,KAC/DA,GAAiBxW,EAAMxB,OACnBwY,GAAoBR,GAAgBA,GAAiB,GACrDQ,GAAoBR,GAAgBA,Q,8CC9uzB9Cvb,EAAOD,QAAU2qC,QAAQ,gB,+/CCezB,IAAMC,EAAc,CAClBxsB,SAAeysB,SACfrmC,KAAe,QACfsmC,WAAe,EACfC,aAAe,CACblB,kBAAmB,IAInBmB,EAAYJ,EAEhB,SAASK,EAAsBnsB,EAAS2K,EAAQsH,GAC9C,GAAKA,EACL,OAAKjS,EACE,GAAPosB,OAAUpsB,EAAQ1a,cAAa,KAAA8mC,OAAIzhB,EAAOsH,IADrBtH,EAAOsH,GAI9B,SAASoa,EAAUrsB,EAASssB,GAC1B,GAAKA,EACL,MAAO,GAAPF,OAAUpsB,EAAQ1a,cAAa,KAAA8mC,OAAIE,GAOrC,SAASC,EAAgBlqC,GACvB,IAAMqD,EAAI8mC,EAAUnqC,GACpB,GAAIsC,MAAMkkB,QAAQxmB,GAAQ,MAAO,CAAEqD,KAAM,YAAarD,MAAOA,EAAMiqB,IAAIigB,IACvE,GAAc,OAAVlqC,EAAgB,MAAO,CAAEqD,KAAM,OAAQrD,MAAO,MAClD,OAAQqD,GACN,IAAK,UACH,MAAO,CAAEA,KAAM,OAAQrD,SACzB,IAAK,SACH,MAAO,CAAEqD,KAAM,SAAUrD,SAC3B,IAAK,SACH,MAAO,CAAEqD,KAAM,SAAUrD,SAC3B,QACE,MAAM,IAAIsB,MAAM,yBAADyoC,OAA0B1mC,EAAI,cAUnD,SAASszB,EAAiBiS,EAAUlS,EAAM4F,GACxC,IAAMpf,EAAO,CAAE0rB,WAAUvlC,KAAM,eAE/B,OADA6Z,EAAKwZ,KAAOA,EAAKrzB,KAAOqzB,EAAOwT,EAAgBxT,GAC9B,YAAbkS,GAAuC,gBAAbA,GAC5B1rB,EAAKof,MAAQ,CACXj5B,KAAQ,YACRrD,MAAQ,CAACkqC,EAAgB5N,EAAM,IAAK4N,EAAgB5N,EAAM,MAErDpf,IAETA,EAAKof,MAAQA,EAAMj5B,KAAOi5B,EAAQ4N,EAAgB5N,GAC3Cpf,GA2BT,SAASugB,EAAOwM,GACd,OAAOA,EAWT,SAASG,IACP,OAAOP,EAGT,SAASQ,EAAaza,GACpBia,EAAYja,EAGd,SAAS0a,EAAS1a,GAChB,GAAKA,EAAL,CACA,IAAQ5vB,EAAgC4vB,EAAhC5vB,MAAOuqC,EAAyB3a,EAAzB2a,QACTC,EADkC5a,EAAhB2G,YACE,IAAHwT,OAAO/pC,EAAK,KAAMA,EACnC4d,EAAS,OAAHmsB,OAAUS,GACtB,OAAKD,EACE,GAAPR,OAAUnsB,EAAM,KAAAmsB,OAAIQ,EAAQtnC,eADP2a,GAIvB,SAAS6sB,EAAsBC,GAC7B,IAAQztB,EAAamtB,IAAbntB,SACR,GAAKytB,EACL,OAAQztB,GAAYA,EAAS9N,eAC3B,IAAK,SACL,IAAK,MACL,IAAK,aACL,IAAK,WACL,IAAK,YACL,IAAK,OACL,IAAK,QACL,IAAK,SACH,MAAO,IAAP46B,OAAWW,EAAK,KAClB,IAAK,cACH,MAAO,IAAPX,OAAWW,EAAK,KAClB,IAAK,QACL,IAAK,UACL,IAAK,WACL,QACE,MAAO,IAAPX,OAAYW,EAAK,MAIvB,SAASC,EAAgBD,EAAOE,GAC9B,IAAQ3tB,EAAamtB,IAAbntB,SACR,IAAe,IAAX2tB,EAAiB,MAAO,IAAPb,OAAWW,EAAK,KACrC,GAAKA,EAAL,CACA,GAAc,MAAVA,EAAe,OAAOA,EAC1B,OAAQztB,GAAYA,EAAS9N,eAC3B,IAAK,QACL,IAAK,UACH,MAAO,IAAP46B,OAAYW,EAAK,KACnB,IAAK,SACL,IAAK,aACL,IAAK,WACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACH,MAAO,IAAPX,OAAWW,EAAK,KAClB,IAAK,cACH,MAAO,IAAPX,OAAWW,EAAK,KAClB,IAAK,WACL,IAAK,MACH,OAAOA,EACT,QACE,MAAO,IAAPX,OAAYW,EAAK,OAIvB,SAASG,EAAQL,GACf,GAAKA,EACL,OAAOA,EAAIvnC,cAGb,SAAS6nC,EAAON,GACd,OAAOA,EAGT,SAASO,EAAahpC,GACpB,GAAKA,EAAL,CACA,IAAM6b,EAAW7b,EAAX6b,OACEva,EAAqCtB,EAArCsB,KAAMkzB,EAA+Bx0B,EAA/Bw0B,YAAajU,EAAkBvgB,EAAlBugB,OAAQtiB,EAAU+B,EAAV/B,MAC/BiqC,EAAyB,WAAnBE,EAAOpoC,GAAuB/B,EAAQ+B,EAChD,OAAQsB,GACN,IAAK,yBACH4mC,EAAM,IAAHF,OAAe/pC,EAAM,KACxB,MACF,IAAK,SACHiqC,EAAM,IAAHF,OAAc/pC,EAAM,KACvB,MACF,IAAK,eACHiqC,EAAM,KAAHF,OAAe/pC,EAAM,KACxB,MACF,IAAK,aACHiqC,EAAM,KAAHF,OAAe/pC,EAAM,KACxB,MACF,IAAK,kBACHiqC,EAAM,KAAHF,OAAe/pC,GAClB,MACF,IAAK,iBACHiqC,EAAM,KAAHF,OAAe/pC,EAAM,KACxB,MACF,IAAK,aACHiqC,EAAM,KAAHF,OAAe/pC,EAAM,KACxB,MACF,IAAK,sBACHiqC,EAAM,IAAHF,OAAc/pC,EAAM,KACvB,MACF,IAAK,sBACHiqC,EAAM,IAAHF,OAAO/pC,EAAK,KACf,MACF,IAAK,UACL,IAAK,OACHiqC,EAAMjqC,EAAQ,OAAS,QACvB,MACF,IAAK,OACHiqC,EAAM,OACN,MACF,IAAK,OACHA,EAAM,IACN,MACF,IAAK,QACHA,EAAM,GAAHF,OAAMnsB,GAAU,KAAGmsB,OAAG/pC,GACzB4d,EAAS,KACT,MACF,IAAK,SACHqsB,EAAMjqC,EAAMiD,cACZ,MACF,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,YACHgnC,EAAM,GAAHF,OAAM1mC,EAAKJ,cAAa,MAAA8mC,OAAK/pC,EAAK,KACrC,MACF,IAAK,aACHiqC,EAAM,KAAHF,OAAe/pC,EAAM,KACxB,MACF,IAAK,iBACHiqC,EAAM,MAAHF,OAAgB/pC,EAAM,KAK7B,IAAMy2B,EAAS,GAWf,OAVI7Y,GAAQ6Y,EAAOrb,KAAKyvB,EAAQjtB,IAChC6Y,EAAOrb,KAAK6uB,GACR3nB,IACoB,iBAAXA,GAAqBmU,EAAOrb,KAAKkH,GACtB,WAAlB6nB,EAAO7nB,KACLA,EAAOyJ,QAAS0K,EAAOrb,KAAK4vB,GAAa1oB,EAAOyJ,UAC/C0K,EAAOrb,KAAK2vB,EAAazoB,MAGlC2nB,EAAMxT,EAAOjzB,KAAK,KACX+yB,EAAc,IAAHwT,OAAOE,EAAG,KAAMA,GAGpC,SAASgB,EAAgBrb,GACvB,IAAKA,EAAK,MAAO,GACjB,IAAQvsB,EAAwBusB,EAAxBvsB,KAAMksB,EAAkBK,EAAlBL,OAAQvvB,EAAU4vB,EAAV5vB,MACtB,MAAO,CAACqD,EAAKJ,cAAessB,EAAyB,iBAAVvvB,EAAqBA,EAAMiD,cAAgB8nC,EAAa/qC,IAAQwoB,OAAOsiB,GAGpH,SAASI,EAAc7uB,EAAK8uB,GAC1B,OA/LF,SAASC,EAAmB/uB,EAAKgtB,GAc/B,OAbA5pC,OAAO4pC,KAAKhtB,GACTmM,QAAO,SAAAloB,GACN,IAAMN,EAAQqc,EAAI/b,GAClB,OAAOgC,MAAMkkB,QAAQxmB,IAA4B,WAAjBmqC,EAAOnqC,IAAgC,OAAVA,KAE9DwK,SAAQ,SAAAlK,GACP,IAAM4c,EAAOb,EAAI/b,GACjB,GAAsB,WAAhB6pC,EAAOjtB,IAAmC,UAAdA,EAAK7Z,KAAmB,OAAO+nC,EAAmBluB,EAAMmsB,GAC1F,QAAgC,IAArBA,EAAKnsB,EAAKld,OAAwB,MAAM,IAAIsB,MAAM,2BAADyoC,OAA4B7sB,EAAKld,MAAK,WAElG,OADAqc,EAAI/b,GAAO4pC,EAAgBb,EAAKnsB,EAAKld,QAC9B,QAGJqc,EAiLA+uB,CAAmBrU,KAAKnzB,MAAMmzB,KAAKC,UAAU3a,IAAO8uB,GAG7D,SAASE,EAAkBnuB,GACzB,IAAQ7Z,EAAqB6Z,EAArB7Z,KAAMioC,EAAepuB,EAAfouB,WAUd,MATe,CACbT,EAAQxnC,GAAK,IAAA0mC,OACTuB,EAAWrhB,KAAI,SAAAP,GAEjB,GAAwB,UADQA,EAAxBrmB,KAC0B,OAAO0nC,EAAarhB,GACtD,IAAQxlB,EAAuBwlB,EAAvBxlB,MAAOxB,EAAgBgnB,EAAhBhnB,IAAK6sB,EAAW7F,EAAX6F,OACpB,MAAO,GAAPwa,OAAUgB,EAAa7mC,GAAM,KAAA6lC,OAAIc,EAAQtb,GAAO,KAAAwa,OAAIgB,EAAaroC,OAChEc,KAAK,MAAK,MAEDA,KAAK,KAGrB,SAAS+nC,EAAcruB,GACrB,IAAQrD,EAAiDqD,EAAjDrD,SAAUxX,EAAuC6a,EAAvC7a,OAAQk0B,EAA+BrZ,EAA/BqZ,YAAagI,EAAkBrhB,EAAlBqhB,MAAOjc,EAAWpF,EAAXoF,OAC1C2nB,EAAM,GAIV,OAHc,MAAV5nC,IAAgB4nC,EAAM1L,EAAQ,GAAHwL,OAAM1nC,EAAM,MAAA0nC,OAAKxL,GAAUl8B,GACtDk0B,IAAa0T,EAAM,IAAHF,OAAOE,EAAG,MAC1B3nB,GAAUA,EAAOjgB,SAAQ4nC,GAAO,IAAJF,OAAQznB,EAAO9e,KAAK,OAC7C,GAAPumC,OAAUlwB,GAAQkwB,OAAGE,GAGvB,SAASuB,EAAqBtuB,GAC5B,GAAKA,EAAL,CACA,IAAQrD,EAAuCqD,EAAvCrD,SAAUgT,EAA6B3P,EAA7B2P,WAAY4e,EAAiBvuB,EAAjBuuB,aACxBC,EAAgBb,EAAQhxB,GAE9B,GAD6C,UAAlB6xB,GAA+C,WAAlBA,EAChC,OAAOA,EAC/B,IAAMjV,EAAS5J,GAAcA,EAAW5C,KAAI,SAAA0hB,GAK1C,MADoB,CADhBA,EADFC,WAE8BJ,EAD5BG,EADqBE,aAGNrjB,OAAOsiB,GAAQtnC,KAAK,QACtCA,KAAK,MACR,OAAOioC,EAAe,GAAH1B,OAAM2B,EAAa,KAAA3B,OAAItT,EAAM,QAAAsT,OAAS2B,EAAa,KAAA3B,OAAItT,IAG5E,SAASqV,EAAa7d,GACpB,GAAKA,EAAL,CACA,IAAMwI,EAAS,GACP9Y,EAA2BsQ,EAA3BtQ,QAAS4R,EAAkBtB,EAAlBsB,OAAQvvB,EAAUiuB,EAAVjuB,MAIzB,OAHAy2B,EAAOrb,KAAKuC,EAAQ1a,eAChBssB,GAAQkH,EAAOrb,KAAKmU,GACxBkH,EAAOrb,KAAK2vB,EAAa/qC,IAClBy2B,EAAOjzB,KAAK,MAGrB,SAASuoC,EAAkBlpB,GACzB,OAAOA,EAAOoH,KAAI,SAAA+hB,GAChB,IAAiBC,EAAkBD,EAA3BruB,QAAkBsE,EAAS+pB,EAAT/pB,KACpBwU,EAAS,CAACoU,EAAQoB,IACxB,GAAIhqB,EAAM,CACR,IAAiBiqB,EAAoBjqB,EAA7BtE,QAAiB7S,EAAYmX,EAAZnX,QACzB2rB,EAAOrb,KAAKyvB,EAAQqB,GAASphC,EAAQmf,IAAIkiB,IAAgB3oC,KAAK,OAEhE,OAAOizB,EAAOjzB,KAAK,QAClBA,KAAK,QAGV,SAAS4oC,EAAexjB,GACtB,OAAKA,EAEE,CACL,YAFkBA,EAAZ9d,QAGEmf,IAAIoiB,IAAa7jB,OAAOsiB,GAAQtnC,KAAK,OAC7CA,KAAK,KALgB,GAQzB,SAAS8oC,EAAuBJ,GAC9B,OAAKA,EACE,CAACrB,EAAQqB,EAAOvuB,SAAUktB,EAAQqB,EAAOjqB,OAD5B,GAItB,SAASsqB,EAAmBC,GAC1B,GAAKA,EAAL,CACA,GAA6B,iBAAlBA,EAA4B,CACrC,IAAQvvB,EAAamtB,IAAbntB,SACR,OAAQA,GAAYA,EAAS9N,eAC3B,IAAK,SACH,MAAO,gBACT,QACE,MAAO,kBAGb,IAAQwO,EAA0C6uB,EAA1C7uB,QAAS8uB,EAAiCD,EAAjCC,KAAMC,EAA2BF,EAA3BE,UAAWnW,EAAgBiW,EAAhBjW,YAC9BE,EAASoU,EAAQltB,GAErB,OADI4Y,IAAaE,GAAU,IAAJsT,OAAQgB,EAAa0B,GAAK,MAAA1C,OAAKgB,EAAa2B,GAAU,MACtEjW,GAGT,SAASkW,EAAqBC,GAC5B,GAAKA,EACL,OAAOA,EAAgB3iB,IAAI4iB,IAAkBrkB,OAAOsiB,GAAQtnC,KAAK,M,8tBC3WnE,SAASspC,EAAeC,GACtB,IAAKA,EAAW,MAAO,GACvB,IAAQpvB,EAAkBovB,EAAlBpvB,QAASta,EAAS0pC,EAAT1pC,KACjB,MAAO,CAACsa,EAAQ1a,cAAe4nC,EAAQxnC,IAGzC,SAAS2pC,EAAiBC,GACxB,GAAKA,EAAL,CACA,IAAQ5pC,EAAuB4pC,EAAvB5pC,KAAM6Z,EAAiB+vB,EAAjB/vB,KAAMqS,EAAW0d,EAAX1d,OACd2d,EAAY7pC,EAAKJ,cACjBkqC,EAAgB,GAEtB,OADAA,EAAc/xB,KAAK8xB,GACXA,GACN,IAAK,iBACC3d,GAAQ4d,EAAc/xB,KAAKmU,GAC/B4d,EAAc/xB,KAAK2vB,EAAa7tB,IAChC,MACF,IAAK,QACL,IAAK,OACHiwB,EAAc9qC,OAAS,EACvB8qC,EAAc/xB,KAAIgyB,MAAlBD,EAAaE,EAASP,EAAeG,KACrC,MACF,IAAK,cACHE,EAAc/xB,KAAK8B,GACnB,MACF,IAAK,UACL,IAAK,YACH,MACF,IAAK,UACHiwB,EAAcG,QACdH,EAAc/xB,KAAK0wB,EAAamB,IAChC,MACF,IAAK,mBACHE,EAAc/xB,KAAKmU,EAAQsb,EAAQ3tB,EAAKld,OAAQqrC,EAAkBnuB,EAAKgE,KACvE,MACF,QACEisB,EAAc/xB,KAAKmU,EAAQwb,EAAa7tB,IAG5C,OAAOiwB,EAAc3kB,OAAOsiB,GAAQtnC,KAAK,MAG3C,SAAS+pC,EAAqBC,GAC5B,OAAKA,EACEA,EAAavjB,IAAI+iB,GADE,GAI5B,SAASS,EAAwBC,GAC/B,IACmBC,EAKfD,EALF1e,gBACY+d,EAIVW,EAJFpsB,WAAUssB,EAIRF,EAHF3gB,cAAe8gB,OAAY,IAAAD,EAAG,GAAEA,EAChC/gB,EAEE6gB,EAFF7gB,WACA3L,EACEwsB,EADFxsB,GAAU4sB,EACRJ,EAAe,KACb7zB,EAAW,GAEjB,GADAA,EAASuB,KAAIgyB,MAAbvzB,EAAQwzB,EAASP,EAAeC,KAC5BlgB,GAAcA,EAAWxqB,OAAQ,CACnC,IAAM0rC,EAA4C,UAA5BlD,EAAQ8C,GAA8B,IAAH5D,OAAOiE,GAAUnhB,EAAW,IAAG,SAAAkd,OAAUld,EAAW5C,KAAI,SAAAhf,GAAG,OAAI+iC,GAAU/iC,MAAMzH,KAAK,MAAK,KAClJqW,EAASuB,KAAK2yB,GAKhB,OAHAl0B,EAASuB,KAAKmyB,EAAqBM,GAAcrqC,KAAK,MAClDsqC,GAAUj0B,EAASuB,KAAK,SAAD2uB,OAAUwD,EAAqBO,GAAUtqC,KAAK,MAAK,MAC1E0d,GAAIrH,EAASuB,KAAK,OAAD2uB,OAAQ7oB,EAAE,MACxBrH,ECtET,SAASo0B,EAAY/wB,GACnB,IAAI0rB,EAAW1rB,EAAK0rB,UAAY1rB,EAAKoB,GACjC4vB,EAAOF,GAAU9wB,EAAKof,OACtB6R,GAAY,EAChB,GAAI7rC,MAAMkkB,QAAQ0nB,GAAO,CACvB,OAAQtF,GACN,IAAK,IACHA,EAAW,KACX,MACF,IAAK,KACHA,EAAW,SACX,MACF,IAAK,UACL,IAAK,cACHuF,GAAY,EACZD,EAAO,GAAHnE,OAAMmE,EAAK,GAAE,SAAAnE,OAAQmE,EAAK,IAK7BC,IAAWD,EAAO,IAAHnE,OAAOmE,EAAK1qC,KAAK,MAAK,MAE5C,IAAMi6B,EAASvgB,EAAKof,MAAMmB,QAAU,GAE9BwM,EAAM,CADK3nC,MAAMkkB,QAAQtJ,EAAKwZ,MAAQxZ,EAAKwZ,KAAKzM,IAAI+jB,IAAWxqC,KAAK,MAAQwqC,GAAU9wB,EAAKwZ,MAC1EkS,EAAUsF,EAAMrD,EAAQpN,EAAOp6B,MAAO2qC,GAAUvQ,EAAOz9B,QAAQwoB,OAAOsiB,GAAQtnC,KAAK,KAE1G,MADe,CAAC0Z,EAAKqZ,YAAc,IAAHwT,OAAOE,EAAG,KAAMA,GAClCzmC,KAAK,K,8tBC1BrB,SAAS4qC,EAAuB3a,GAC9B,OAAKA,EACE,CAACA,EAAK7V,OAAOqM,IAAI8gB,GAAcvnC,KAAK,KAAMwqC,GAAUva,EAAKzzB,OAAQyzB,EAAKnR,OAAO2H,IAAI8gB,GAAcvnC,KAAK,MADzF,GAgBpB,SAAS6qC,EAAWhoB,GAClB,OAAKA,EACDA,EAAMioB,OAASjoB,EAAMnL,QAbjBozB,GADgB7a,EAciCpN,GAbjDioB,MAAOpzB,EAAWuY,EAAXvY,OACA,GAAH6uB,OAAAsD,EAAOe,EAAuBlzB,IAAOmyB,EAAKe,EAAuBE,KAC/D9lB,OAAOsiB,GAAQtnC,KAAK,MAGpC,SAA0B6iB,GACxB,IAAQkT,EAAqBlT,EAArBkT,UAAWv5B,EAAUqmB,EAAVrmB,MACnB,OAAqB,IAAjBA,EAAMqC,QAA8B,WAAdk3B,EAA+ByQ,EAAU,SAAUgE,GAAUhuC,EAAM,KACtFgqC,EAAU,QAAShqC,EAAMiqB,IAAI+jB,IAAWxqC,KAAK,GAADumC,OAAkB,WAAdxQ,EAAyB,IAAM,IAAEwQ,OAAGc,EAAQtR,GAAU,OAMtGgV,CAAiBloB,GAFL,GAbrB,IAA0BoN,EAChB6a,EAAOpzB,ECFjB,SAASszB,EAAUV,GACjB,GAAKA,GAAgC,IAApBA,EAASzrC,OAA1B,CACA,IAAMosC,EAAcX,EAAS,GAAGta,UAAY,aAAe,GACrDkb,EAAcZ,EAAS7jB,KAAI,SAAAmJ,GAC/B,IAAQ9zB,EAAwB8zB,EAAxB9zB,KAAMm0B,EAAkBL,EAAlBK,KAAM3oB,EAAYsoB,EAAZtoB,QACdsP,EAAS9X,MAAMkkB,QAAQ1b,GAAW,IAAHi/B,OAAOj/B,EAAQmf,IAAIkiB,IAAgB3oC,KAAK,MAAK,KAAM,GACxF,MAAO,GAAPumC,OAAwB,YAAdzqC,EAAK+D,KAAqBsnC,EAAgBrrC,EAAKU,OAAS+qC,EAAazrC,IAAKyqC,OAAG3vB,EAAM,SAAA2vB,OAAQiE,GAAUva,GAAK,QACnHjwB,KAAK,MAER,MAAO,QAAPumC,OAAe0E,GAAW1E,OAAG2E,ICC/B,SAASC,EAAgBC,GACvB,GAAKA,GACgBA,EAAbC,SACR,CACA,IAAQlxB,EAAkBixB,EAAlBjxB,QAAST,EAAS0xB,EAAT1xB,KACXuZ,EAAS,GACTqY,EAAWjE,EAAQltB,GACzB,OAAQmxB,GACN,IAAK,MACHrY,EAAOrb,KAAK8B,EAAK+M,IAAI8kB,IAAUvrC,KAAK,OACpC,MACF,QACEizB,EAAOrb,KAAK0zB,EAA0B,iBAAT5xB,EAAoBytB,EAAgBztB,GAAQ8wB,GAAU9wB,IAEvF,OAAOuZ,EAAOjO,OAAOsiB,GAAQtnC,KAAK,MAyBpC,SAASwrC,EAAYvb,GACnB,IACiBwb,EAqBbxb,EArBFyb,cACApkC,EAoBE2oB,EApBF3oB,QACAihB,EAmBE0H,EAnBF1H,QACAqJ,EAkBE3B,EAlBF2B,SACK+Z,EAiBH1b,EAAI,IAhBNrX,EAgBEqX,EAhBFrX,KAAIgzB,EAgBF3b,EAfF4b,mBAAoBC,OAAS,IAAAF,EAAG,GAAEA,EACpBG,EAcZ9b,EAdF+b,aACAna,EAaE5B,EAbF4B,QACAC,EAYE7B,EAZF6B,OAAMma,EAYJhc,EAXFmb,YAAI,IAAAa,EAAG,GAAEA,EACTC,EAUEjc,EAVFic,UACArpB,EASEoN,EATFpN,MACAviB,EAQE2vB,EARF3vB,QACA+kB,EAOE4K,EAPF5K,QACoB0N,EAMlB9C,EANFP,mBACAyc,EAKElc,EALFkc,QACAC,EAIEnc,EAJFmc,IACQC,EAGNpc,EAHFqc,OACMC,EAEJtc,EAAI,KADNpS,EACEoS,EADFpS,MAEI2uB,EAAU,CAACxB,EAAUuB,GAAW,SAAUlF,EAAQoE,IACpD3sC,MAAMkkB,QAAQ1iB,IAAUksC,EAAQ50B,KAAKtX,EAAQN,KAAK,MACtDwsC,EAAQ50B,KA1EV,SAAuBga,GACrB,GAAKA,EAAL,CACA,GAAwB,iBAAbA,EAAuB,OAAOA,EACzC,IAAQ/xB,EAAkB+xB,EAAlB/xB,KAAMyH,EAAYsqB,EAAZtqB,QACR2rB,EAAS,CAACoU,EAAQxnC,IAExB,OADIyH,GAAS2rB,EAAOrb,KAAK,IAAD2uB,OAAKj/B,EAAQmf,IAAI+jB,IAAWxqC,KAAK,MAAK,MACvDizB,EAAOjO,OAAOsiB,GAAQtnC,KAAK,MAoErBysC,CAAc7a,GAAWkV,EAASsF,GAAMM,GAAaplC,EAASsR,IAC3E,IAAQyyB,EAAaD,EAAbC,SACJsB,EAAU,GACVtB,IAAUsB,EAAUrG,EAAsB,OAAQ6E,EAAiBC,IACtD,WAAbC,GAAuBmB,EAAQ50B,KAAK+0B,GAExCH,EAAQ50B,KAAK0uB,EAAsB,OAAQsG,GAAah0B,IACvC,SAAbyyB,GAAqBmB,EAAQ50B,KAAK+0B,GACtC,IAAAE,EAA0Bf,GAAa,GAA/B3xB,EAAO0yB,EAAP1yB,QAAST,EAAImzB,EAAJnzB,KACjB8yB,EAAQ50B,KAAK0uB,EAAsBnsB,EAASqwB,GAAW9wB,IACvD8yB,EAAQ50B,KAAK0uB,EAAsB,QAASkE,GAAW3sB,IACnDgU,IACF2a,EAAQ50B,KAAK4uB,EAAU,WAAYsG,GAAejb,EAAQvqB,SAAStH,KAAK,QACxEwsC,EAAQ50B,KAAKk1B,GAAejb,EAAQkb,WAAW/sC,KAAK,QAEtDwsC,EAAQ50B,KAAK0uB,EAAsB,SAAUkE,GAAW1Y,IACxD0a,EAAQ50B,KAAK0uB,EAAsB,UAAWkE,GAAW2B,IACzDK,EAAQ50B,KAAK0uB,EAAsB,SAAUkE,GAAW6B,IACxDG,EAAQ50B,KAAKo1B,GAAwB3nB,EAAS,aAC9CmnB,EAAQ50B,KAAK4vB,GAAajf,IAC1BikB,EAAQ50B,KAAKizB,EAAWhoB,IACpBqpB,GAAWM,EAAQ50B,KAAK0uB,EAAsB4F,EAAU/xB,QAASotB,EAAc2E,EAAUxyB,OAC7F8yB,EAAQ50B,KAAKyvB,EAAQ0E,IACJ,QAAbV,GAAoBmB,EAAQ50B,KAAK+0B,GACrCH,EAAQ50B,KA1DV,SAAqBqY,GACnB,GAAKA,EAAL,CACA,IAAQvW,EAAwBuW,EAAxBvW,KAAMS,EAAkB8V,EAAlB9V,QACR8Y,EAAS,CAACoU,EADgBpX,EAATpwB,MACQwnC,EAAQltB,IACvC,OAAKT,EACE,GAAP6sB,OAAUtT,EAAOjzB,KAAK,KAAI,KAAAumC,OAAIiE,GAAU9wB,GAAK,KAD3BuZ,EAAOjzB,KAAK,MAsDjBitC,CAAYtB,IACzB,IAAMxhB,EAAMqiB,EAAQxnB,OAAOsiB,GAAQtnC,KAAK,KACxC,OAAO+yB,EAAc,IAAHwT,OAAOpc,EAAG,KAAMA,E,q/BCjGpC,SAAS+iB,EAASC,GAChB,IAAKA,GAAwB,IAAhBA,EAAKtuC,OAAc,MAAO,GACvC,IACsBuuC,EADhBZ,EAAU,GAAEa,EAAAC,EACAH,GAAI,IAAtB,IAAAE,EAAA/vC,MAAA8vC,EAAAC,EAAArwC,KAAAuwC,MAAwB,KAAbpoB,EAAGioB,EAAA5wC,MACNoa,EAAS,GACPpa,EAAU2oB,EAAV3oB,MACR,IAAK,IAAMM,KAAOqoB,EACJ,UAARroB,GAA2B,YAARA,IACvB8Z,EAAO9Z,GAAOqoB,EAAIroB,IAEpB,IACM0wC,EAAU,CADJ7E,GAAe/xB,IAEvBowB,EAAM,GACNxqC,IACFwqC,EAAMwD,GAAUhuC,GAChBgxC,EAAQ51B,KAAK,IAAKovB,IAEpBwF,EAAQ50B,KAAK41B,EAAQxoB,OAAOsiB,GAAQtnC,KAAK,OAC1C,MAAAytC,GAAAJ,EAAA9zB,EAAAk0B,GAAA,QAAAJ,EAAAzpB,IACD,OAAO4oB,EAAQxsC,KAAK,MCnBtB,SAAS0tC,EAAYznB,GACnB,GAAoB,WAAhBA,EAAOpmB,KAAmB,OAAO2rC,EAAYvlB,GACjD,IAAMumB,EAAUvmB,EAAOQ,IAAI+jB,IAC3B,MAAO,IAAPjE,OAAWiG,EAAQxsC,KAAK,QAAO,KAGjC,SAAS2tC,EAAeznB,GACtB,IAAKA,EAAW,MAAO,GACvB,IAAM0nB,EAAe,CAAC,YAAa,KACnC,GAAI9uC,MAAMkkB,QAAQkD,GAChB0nB,EAAah2B,KAAKsO,EAAUO,IAAI0gB,GAAiBnnC,KAAK,WACjD,CACL,IAAQxD,EAAU0pB,EAAV1pB,MACRoxC,EAAah2B,KAAKpb,EAAMiqB,IAAI+jB,IAAWxqC,KAAK,OAG9C,OADA4tC,EAAah2B,KAAK,KACXg2B,EAAa5oB,OAAOsiB,GAAQtnC,KAAK,IAG1C,SAAS6tC,EAAoBC,GAC3B,IAAKA,EAAgB,MAAO,GAE5B,OADiBA,EAATjuC,MAEN,IAAK,SACH,MAAO,IAAP0mC,OAAWuH,EAAep0B,KAAK+M,IAAIkiB,IAAgB3oC,KAAK,MAAK,MAInE,SAAS+tC,EAAoBC,GAC3B,IAAQt0B,EAAkBs0B,EAAlBt0B,KAAMS,EAAY6zB,EAAZ7zB,QACNta,EAAS6Z,EAAT7Z,KACFozB,EAAS,CAACoU,EAAQltB,IACxB,OAAQta,GACN,IAAK,SACHozB,EAAOrb,KAAK2vB,EAAa7tB,IACzB,MACF,IAAK,SACHuZ,EAAOrb,KAAK,SAAU0uB,EAAsB,MAAO4G,EAAUxzB,EAAKyL,KAAMmhB,EAAsB,QAASkE,GAAW9wB,EAAKmE,QAG3H,OAAOoV,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KAGpC,SAASiuC,EAAcC,GACrB,IAAKA,EAAU,MAAO,GACtB,IAAQppB,EAAmBopB,EAAnBppB,OAER,MADe,CAAC+oB,EADWK,EAAXxT,QAC6BqT,EAAoBjpB,IACnDE,OAAOsiB,GAAQtnC,KAAK,KAGpC,SAASmuC,EAAYle,GACnB,IACE/oB,EAYE+oB,EAZF/oB,MACArH,EAWEowB,EAXFpwB,KAAIuuC,EAWFne,EAVFvL,GAAI2pB,OAAM,IAAAD,EAAG,GAAEA,EAAAE,EAUbre,EATF7V,cAAM,IAAAk0B,EAAG,OAAMA,EACfhnC,EAQE2oB,EARF3oB,QACA4mC,EAOEje,EAPFie,SACAjoB,EAMEgK,EANFhK,OACApI,EAKEoS,EALFpS,MACqB0wB,EAInBte,EAJF9J,oBACAD,EAGE+J,EAHF/J,UACAd,EAEE6K,EAFF7K,UACAD,EACE8K,EADF9K,IAEF0nB,EAAuC0B,GAAqB,GAApDp0B,EAAO0yB,EAAP1yB,QAAcq0B,EAAY3B,EAAjB1nB,IACXqnB,EAAU,CAACnF,EAAQxnC,GAAOwuC,EAAO5nB,IAAI8gB,GAAcvnC,KAAK,KAAMqnC,EAAQjtB,GAASwyB,GAAY1lC,GAAQymC,EAAeznB,IAQxH,OAPIpnB,MAAMkkB,QAAQ1b,IAAUklC,EAAQ50B,KAAK,IAAD2uB,OAAKj/B,EAAQmf,IAAI8gB,GAAcvnC,KAAK,MAAK,MACjFwsC,EAAQ50B,KAAK0uB,EAAsBxnC,MAAMkkB,QAAQiD,GAAU,SAAW,GAAIynB,EAAaznB,IACvFumB,EAAQ50B,KAAK0uB,EAAsB,cAAe2H,EAAeC,IACjE1B,EAAQ50B,KAAK0uB,EAAsB,MAAO4G,EAAU/nB,IACpDqnB,EAAQ50B,KAAK0uB,EAAsB,QAASkE,GAAW3sB,IACvD2uB,EAAQ50B,KAAK0uB,EAAsBnsB,EAAS+yB,EAAUsB,IACtDhC,EAAQ50B,KAAKgxB,EAAexjB,IACrBonB,EAAQxnB,OAAOsiB,GAAQtnC,KAAK,KClFrC,SAASyuC,GAAcC,GACrB,IAAQh1B,EAAuBg1B,EAAvBh1B,KAAM6d,EAAiBmX,EAAjBnX,KAAMzY,EAAW4vB,EAAX5vB,OAEpB,MADe,CAAC,WAAY0rB,GAAU9wB,GAAO2tB,EAAQ9P,GAAOiT,GAAU1rB,IACxDkG,OAAOsiB,GAAQtnC,KAAK,K,muBCCpC,SAAS2uC,GAAYC,GACnB,IAAQ/uC,EAA4C+uC,EAA5C/uC,KAAMsH,EAAsCynC,EAAtCznC,GAAIuS,EAAkCk1B,EAAlCl1B,KAAmBm1B,EAAeD,EAA5BE,YAUxB,MATe,CAAC,GAADvI,OACVc,EAAQxnC,GAAK,KAAA0mC,OAAI7sB,GAAQ8wB,GAAU9wB,IAAS,GAAE,KACjD4sB,EAAsB,KAAoB,iBAAPn/B,EAAkBggC,EAAkBqD,GAAWrjC,GAClFm/B,EACEe,EAAQwH,GAAcA,EAAW10B,SACjCgtB,EACA0H,GAAcA,EAAW1nC,KAGf6d,OAAOsiB,GAAQtnC,KAAK,KAgBpC,SAAS+uC,GAAc3J,GACrB,GAAKA,EAEL,OADiBA,EAATvlC,MAEN,IAAK,QACL,IAAK,UACH,OAnBN,SAA4BulC,GAC1B,IAAQj+B,EAAoCi+B,EAApCj+B,GAAIyP,EAAgCwuB,EAAhCxuB,OAAQ8C,EAAwB0rB,EAAxB1rB,KAAMs1B,EAAkB5J,EAAlB4J,QAASnvC,EAASulC,EAATvlC,KAC7BozB,EAAS,CACbuX,GAAU9wB,GACV,MACAivB,GAAe/xB,GACf6zB,EAAYuE,IAER7kB,EAAM,CAAC,GAADoc,OAAIc,EAAQxnC,GAAK,KAAA0mC,OAAItT,EAAOjzB,KAAK,KAAI,MAEjD,OADImH,GAAIgjB,EAAIvS,KAAK,KAAMuvB,EAAgBhgC,IAChCgjB,EAAInqB,KAAK,KASLivC,CAAmB7J,GAC5B,QACE,MAAO,IAIb,SAAS8J,GAAeC,GACtB,GAAKA,EAAL,CACA,IAAQh1B,EAA6Dg1B,EAA7Dh1B,QAAST,EAAoDy1B,EAApDz1B,KAAMqE,EAA8CoxB,EAA9CpxB,MAAOE,EAAuCkxB,EAAvClxB,cAAe8U,EAAwBoc,EAAxBpc,YAAa3Y,EAAW+0B,EAAX/0B,OACpD6Y,EAAS,GACf,OAAQ9Y,EAAQxO,eACd,IAAK,YACHsnB,EAAOrb,KAAKyvB,EAAQltB,GAAU,IAAFosB,OAAMY,EAAgBppB,IAAM,IAAAwoB,OAAQtoB,EAAcwI,IAAI+jB,IAAWxlB,OAAOsiB,GAAQtnC,KAAK,MAAK,OACtH,MACF,IAAK,2BACHizB,EAAOrb,KAAKyvB,EAAQltB,GAAU,IAAKqwB,GAAU9wB,IAC7C,MACF,IAAK,QACHuZ,EAAOrb,KAAKyvB,EAAQjtB,GAASitB,EAAQltB,GAAU4Y,EAAc,IAAHwT,OAAO7sB,EAAK+M,IAAI0gB,GAAiBnnC,KAAK,MAAK,UAAAumC,OAAWY,EAAgBztB,KAChI,MACF,QACEuZ,EAAOrb,KAAK4yB,GAAU9wB,IAE1B,OAAOuZ,EAAOjO,OAAOsiB,GAAQtnC,KAAK,MAGpC,SAASovC,GAAqBC,EAAO31B,GACnC,IAAQ5d,EAAiBuzC,EAAjBvzC,KAAMiwB,EAAWsjB,EAAXtjB,OACd,MAAO,CAACsb,EAAQvrC,GAAOiwB,EAAQrS,GAAMsL,OAAOsiB,GAAQtnC,KAAK,KAc3D,SAASsvC,GAAyBrf,GAChC,IACMgD,EAAS,GACf,OAFoBhD,EAAZ9V,SAGN,IAAK,KACH8Y,EAAOrb,KAAK,KAAM,KAAM4yB,GAAUva,EAAKsf,KACvC,MACF,IAAK,UACHtc,EAAOrb,KAAK,OAAQ4yB,GAAUva,EAAKrX,MAAO,KAAM4xB,GAAUva,EAAKjU,KAC/D,MACF,IAAK,cACHiX,EAAOrb,KAAK,UAAW4yB,GAAUva,EAAKuf,SAAU,MAAOhF,GAAUva,EAAKwf,MACtE,MACF,IAAK,YACHxc,EAAOrb,KAAK,YAAa,KAAM4yB,GAAUva,EAAI,KAGjD,OAAOgD,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KAepC,SAAS0vC,GAAWzoC,GAClB,GAAgC,WAA5BogC,EAAQpgC,EAAUpH,MAAoB,OAAO8uC,GAAY1nC,GAC7D,IAR4BgpB,EACpB9V,EAASta,EACX8vC,EAMEzoC,EAAsHD,EAAtHC,MAAOyR,EAA+G1R,EAA/G0R,GAAIxR,EAA2GF,EAA3GE,GAAIuS,EAAuGzS,EAAvGyS,KAAM0rB,EAAiGn+B,EAAjGm+B,SAAkBwK,EAA+E3oC,EAAvFmT,OAAmBZ,EAAoEvS,EAApEuS,OAAQqL,EAA4D5d,EAA5D4d,OAAQ/F,EAAoD7X,EAApD6X,OAAQ+wB,EAA4C5oC,EAA5C4oC,YAAaC,EAA+B7oC,EAA/B6oC,eAAgBC,EAAe9oC,EAAf8oC,WACzGC,EAAa7I,EAAgBtiB,GAC7BpL,EAAW0tB,EAAgBxuB,GAC3Bs3B,EAAY9I,EAAgB3tB,GAC9BksB,EAAYx+B,GAASigC,EAAgBjgC,GACzC,GAAIwS,EAEF,OADiBA,EAAK7Z,MAEpB,IAAK,SACH,IAAQkzB,EAAgCrZ,EAAhCqZ,YAAa9M,EAAmBvM,EAAnBuM,OAAQ7L,EAAWV,EAAXU,OACvB81B,EAAW,CAACnd,GAAe,IAAK,GAAIA,GAAe,KACrDod,EAAazC,EAAYznB,GACzB7L,IAAQ+1B,EAAaA,EAAWpK,MAAM,KAAKhmC,MAAM,GAAG0mB,KAAI,SAAAugB,GAAG,SAAAT,OAAOc,EAAQjtB,GAAO,KAAAmsB,OAAIS,MAAOhnC,KAAK,KACrGkwC,EAAS,GAAK,UAAH3J,OAAa4J,GACxBzK,EAAYwK,EAASlrB,OAAOsiB,GAAQtnC,KAAK,IACzC,MACF,IAAK,SACH0lC,EA/DR,SAA0B0K,GACxB,IAAKA,EAAQ,MAAO,GACpB,IAAcnpC,EAAqCmpC,EAA3CC,KAAiBC,EAA0BF,EAA1BE,QAAS54B,EAAiB04B,EAAjB14B,OAAQ64B,EAASH,EAATG,KACpCC,EAAgB,CAACrJ,EAAgBlgC,EAAUyS,KAAKf,IAAKwuB,EAAgBlgC,EAAUyS,KAAKF,QAAS2tB,EAAgBlgC,EAAUyS,KAAKxS,QAAQ8d,OAAOsiB,GAAQtnC,KAAK,KACxJywC,EAAa,cAAHlK,OAAiBoC,GAAe2H,EAAQ52B,MAAK,KACvDuZ,EAAS,CAAC,sBAADsT,OAAuB6I,GAAqBnoC,EAAWupC,IAAkBpB,GAAqBkB,EAASG,IAChHC,EAAUtB,GAAqBmB,EAAM9B,GAAc8B,EAAK72B,OAG9D,OAFIhC,GAAUA,EAAOgC,KAAMuZ,EAAOrb,KAAK84B,EAAS,GAAFnK,OAAK6I,GAAqB13B,EAAQ+2B,GAAc/2B,EAAOgC,OAAM,OACtGuZ,EAAOrb,KAAK,GAAD2uB,OAAImK,EAAO,OACpBzd,EAAOjO,OAAOsiB,GAAQtnC,KAAK,MAsDhB2wC,CAAiBj3B,GAC7B,MACF,IAAK,YA1BDS,GADoB8V,EA4BWvW,GA3B/BS,QAASta,EAAqBowB,EAArBpwB,KACX8vC,EADgC1f,EAAf2gB,WACSnqB,KAAI,SAAAoqB,GAAS,OAAIpJ,EAAgBoJ,GAAW7wC,KAAK,QAAMA,KAAK,MA0BtF0lC,EAzBC,GAAPa,OAAUc,EAAQltB,GAAQ,KAAAosB,OAAIc,EAAQxnC,GAAK,KAAA0mC,OAAIoJ,EAAY,MA0BrD,MACF,QACEjK,EAAY8E,GAAU9wB,GAI5B,IACMuZ,EAAS,CADH,CAAC+c,EAAYv2B,EAAUw2B,EADnCvK,EAAY,CAAC2B,EAAQuI,GAAYlK,EAAW2B,EAAQvoB,IAASkG,OAAOsiB,GAAQtnC,KAAK,MACxBglB,OAAOsiB,GAAQtnC,KAAK,MAE7E,GAAI6vC,EAAa,CACf,IAAMiB,EAAiB,CAAC,cAAetG,GAAUqF,EAAYn2B,MAAO6tB,EAAasI,EAAYkB,aAAa/rB,OAAOsiB,GAAQtnC,KAAK,KAC9HizB,EAAOrb,KAAKk5B,GAEd7d,EAAOrb,KA/CT,SAA4BqY,GAC1B,GAAKA,EAAL,CACA,IAAQ9V,EAAkB8V,EAAlB9V,QAAST,EAASuW,EAATvW,KACjB,MAAO,CAAC2tB,EAAQltB,GAAUm1B,GAAyB51B,IAAOsL,OAAOsiB,GAAQtnC,KAAK,MA4ClEgxC,CAAmBlB,GAAiBxJ,EAAsB,KAAoB,iBAAPn/B,EAAkBggC,EAAkBqD,GAAWrjC,GAAK4nC,GAAc3J,IACjJ2K,GAAY9c,EAAOrb,KAAKyvB,EAAQ0I,EAAW51B,SAAU,IAAFosB,OAAMwJ,EAAWr2B,KAAK+M,IAAIyoB,IAAgBlqB,OAAOsiB,GAAQtnC,KAAK,MAAK,MAC1H,IAAMixC,EAAWhe,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KAC5C,OAAOiH,EAAU8rB,YAAc,IAAHwT,OAAO0K,EAAQ,KAAMA,EAOnD,SAASrE,GAAYxqB,GACnB,IAAKA,EAAQ,MAAO,GACpB,IAAKtjB,MAAMkkB,QAAQZ,GAAS,CAC1B,IAAQ1I,EAA6B0I,EAA7B1I,KAAMqZ,EAAuB3Q,EAAvB2Q,YAAame,EAAU9uB,EAAV8uB,MACrB/mB,EAAMyiB,GAAYlzB,GACxB,GAAIqZ,EAAa,CAKf,IAJA,IAAMoe,EAAkB,GAClBC,EAAmB,GACnBC,GAAoC,IAAhBte,EAAuB,EAAIA,EAAYl0B,OAC7DtD,EAAI,EACDA,IAAM81C,GACXF,EAAgBv5B,KAAK,KACrBw5B,EAAiBx5B,KAAK,KAExB,IAAM05B,EAAWJ,GAASA,EAAMryC,OAAS,EAAI+tC,GAAY,CAAC,IAAErG,OAAAsD,GAAKqH,KAAU,GAC3E,OAAOC,EAAgBnxC,KAAK,IAAMmqB,EAAMinB,EAAiBpxC,KAAK,IAAMsxC,EAEtE,OAAOnnB,EAET,IAAMonB,EAAYnvB,EAAO,GACnBoqB,EAAU,GAChB,GAAuB,SAAnB+E,EAAU1xC,KAAiB,MAAO,OACtC2sC,EAAQ50B,KAAK83B,GAAW6B,IACxB,IAAK,IAAIh2C,EAAI,EAAGA,EAAI6mB,EAAOvjB,SAAUtD,EAAG,CACtC,IAAMi2C,EAAWpvB,EAAO7mB,GAChBmiB,EAAoB8zB,EAApB9zB,GAAI0W,EAAgBod,EAAhBpd,MAAOp0B,EAASwxC,EAATxxC,KACbymC,EAAM,GACZA,EAAI7uB,KAAK5X,EAAO,IAAHumC,OAAOc,EAAQrnC,IAAU,KACtCymC,EAAI7uB,KAAK83B,GAAW8B,IACpB/K,EAAI7uB,KAAK0uB,EAAsB,KAAMkE,GAAW9sB,IAC5C0W,GAAOqS,EAAI7uB,KAAK,UAAD2uB,OAAWnS,EAAM3N,IAAI8gB,GAAcvnC,KAAK,MAAK,MAChEwsC,EAAQ50B,KAAK6uB,EAAIzhB,OAAOsiB,GAAQtnC,KAAK,MAEvC,OAAOwsC,EAAQxnB,OAAOsiB,GAAQtnC,KAAK,IAGrC,SAASyxC,GAAiBC,GACxB,IAAQv3B,EAA2Bu3B,EAA3Bv3B,QAAS4R,EAAkB2lB,EAAlB3lB,OAAQvvB,EAAUk1C,EAAVl1C,MACnB2tB,EAAM,CAAChQ,EAAQ1a,eACjBssB,GAAQ5B,EAAIvS,KAAKmU,GACrB,IAAIib,EAAMO,EAAa/qC,GACvB,OAAQ2d,GACN,IAAK,eACL,IAAK,kBACH6sB,EAAMwD,GAAUhuC,GAChB,MACF,IAAK,UACHwqC,EAAM,IAAHT,OAAO/pC,EAAMiqB,KAAI,SAAAkrB,GAAe,MAAI,CAACA,EAAgBx3B,QAASw3B,EAAgB5lB,OAAQye,GAAUmH,EAAgBn1C,QAAQwD,KAAK,QAAMA,KAAK,MAAK,KAChJ,MACF,IAAK,aACHgnC,EAAMxqC,EAAMiqB,IAAI+jB,IAAWxqC,KAAK,MAIpC,OADAmqB,EAAIvS,KAAKovB,GACF7c,EAAInF,OAAOsiB,GAAQtnC,KAAK,KClNjC,SAAS4xC,GAAmB3hB,GAC1B,IAAQn0B,EAAem0B,EAAfn0B,KAAM+D,EAASowB,EAATpwB,KACd,OAAQA,GACN,IAAK,QACL,IAAK,OACH,IAAM2wC,EAAgB,CAACrJ,EAAgBrrC,EAAK6c,IAAKwuB,EAAgBrrC,EAAKoL,QAAQ8d,OAAOsiB,GAAQtnC,KAAK,KAClG,MAAO,GAAPumC,OAAUc,EAAQxnC,GAAK,KAAA0mC,OAAIiK,GAC7B,IAAK,SACH,MAAO,UAAPjK,OAAiBoC,GAAe7sC,IAClC,QACE,MAAO,GAAPyqC,OAAUc,EAAQxnC,GAAK,KAAA0mC,OAAIgB,EAAazrC,KAI9C,SAAS+1C,GAAmB5hB,GAC1B,IAAQ9V,EAAkB8V,EAAlB9V,QAAST,EAASuW,EAATvW,KACjB,MAAO,CAAC2tB,EAAQltB,GAAUotB,EAAa7tB,IAAOsL,OAAOsiB,GAAQtnC,KAAK,KCfpE,SAAS8xC,GAAmB7hB,GAC1B,IAAQn0B,EAAgBm0B,EAAhBn0B,KAAMU,EAAUyzB,EAAVzzB,MAEd,MADe,CAAC,IAAD+pC,OAAKzqC,GAAQ,IAAK0uC,GAAUhuC,IAC7BwoB,OAAOsiB,GAAQtnC,KAAK,KCJpC,SAAS+xC,GAAYr4B,GAEnB,IAAQwZ,EAAiCxZ,EAAjCwZ,KAAM4F,EAA2Bpf,EAA3Bof,MAAO/M,EAAoBrS,EAApBqS,OAAQ5R,EAAYT,EAAZS,QAC7B+Y,EAAK/Y,QAAUA,EACf,IAAM63B,EAAUxH,GAAUtX,GACpB+e,EAAWzH,GAAU1R,GAC3B,MAAO,CAACkZ,EAAS3K,EAAQtb,GAASkmB,GAAUjtB,OAAOsiB,GAAQtnC,KAAK,KCsBlE,SAASkyC,GAAUC,GACjB,IA3BsBC,EACVC,EAAUz5B,EAAOiK,EA0BvB1I,EAAYg4B,EAAZh4B,QACE2E,EAAWqzB,EAAXrzB,OACJ2nB,EAAM,GACV,OAAQY,EAAQltB,IACd,IAAK,SA9BKk4B,GADUD,EAgCGD,GA/B2B,GAA9Bv5B,EAAiBw5B,EAAjBx5B,KAAOiK,EAAUuvB,EAAVvvB,MA+BzB4jB,EA9BG,CACLH,EAAsB,KAAMiB,EAAc8K,GAAYA,EAASvZ,OAC/DwN,EAAsB,OAAQsG,GAAah0B,GAC3CiyB,EAAWhoB,IACXmC,OAAOsiB,GAAQtnC,KAAK,KA2BlB,MACF,IAAK,YACL,IAAK,YACHymC,EA3BN,SAA+B6L,GAC7B,IAAQ54B,EAAS44B,EAAT54B,KACR,GAAKA,EAEL,MAAoB,SAAhB2tB,EADW3tB,EAAPoB,IAC2BwrB,EAAsB,OAAQiB,EAAc7tB,EAAKof,OAC7EwN,EAAsB,QAASkE,GAAW9wB,GAsBvC64B,CAAsBJ,GAC5B,MACF,IAAK,UACL,IAAK,UACL,IAAK,QACH1L,EAAMH,EAAsB,OAAQsG,GAAauF,EAASv5B,MAC1D,MACF,IAAK,SACH6tB,EA3BN,SAA2B+L,GACzB,IAAaC,EAAYD,EAAiB,IAC1C,GAAKC,EAAL,CACA,IAAQlvB,EAA0BkvB,EAA1BlvB,KAAMC,EAAoBivB,EAApBjvB,KAAME,EAAc+uB,EAAd/uB,UAChBgvB,EAAc,IAAHnM,OAAOhjB,EAAI,KAE1B,OADIC,IAAMkvB,GAAe,KAAJnM,OAAS/iB,EAAI,MAC3B,CAAC,MAAOkvB,EAAahvB,GAAa,QAASA,GAAaA,EAAU+C,KAAI,SAAAksB,GAAI,UAAApM,OAAQoM,EAAI,QAAK3yC,KAAK,OAAOglB,OAAOsiB,GAAQtnC,KAAK,MAqBxH4yC,CAAkBT,GACxB,MACF,IAAK,SACH1L,EAAMH,EAAsB,GAAIoJ,GAAYyC,EAASrzB,IACrD,MACF,IAAK,MACH2nB,EAAM8E,GAAS4G,EAAQ,KACvBh4B,EAAU,GAKd,MAAO,CAAC,OAAQktB,EAAQltB,GAAUktB,EAAQvoB,GAAS2nB,GAAKzhB,OAAOsiB,GAAQtnC,KAAK,KC5B9E,IAAM6yC,GAAc,CAClBC,MCmIF,SAAoB7iB,GAClB,IAAA8iB,EAA8B9iB,EAAtB9V,QACR,YADe,IAAA44B,EAAG,QAAOA,GAEvB,IAAK,YACH,OA5BN,SAA6B9iB,GAC3B,IAAQxR,EAAoCwR,EAApCxR,KAAM/E,EAA8BuW,EAA9BvW,KAAMS,EAAwB8V,EAAxB9V,QAASre,EAAem0B,EAAfn0B,KAAM+D,EAASowB,EAATpwB,KACrBmzC,EAAsBv0B,EAA5B/E,KAAgB2L,EAAY5G,EAAZ4G,QAUxB,MATe,CACbgiB,EAAQxnC,GACRwnC,EAAQltB,GACR,CACE,CAACgtB,EAAgBrrC,EAAK0d,QAAS2tB,EAAgBrrC,EAAKA,OAAOkpB,OAAOsiB,GAAQtnC,KAAK,KAAI,IAAAumC,OAC/EyM,EAASvsB,IAAIwsB,IAAgBjzC,KAAK,OAAKumC,OAAGlhB,EAAU,CAAC,SAAU,KAAMA,EAAQoB,IAAIwsB,IAAgBjzC,KAAK,OAAOA,KAAK,KAAO,GAAE,MAC/HglB,OAAOsiB,GAAQtnC,KAAK,IACtBkzC,GAAex5B,IAEHsL,OAAOsiB,GAAQtnC,KAAK,KAgBvBmzC,CAAoBljB,GAC7B,IAAK,QACH,OAtFN,SAAyBA,GACvB,IAAQpwB,EAA8CowB,EAA9CpwB,KAAMqH,EAAwC+oB,EAAxC/oB,MAAOksC,EAAiCnjB,EAAjCmjB,UAAWh5B,EAAsB6V,EAAtB7V,OAAMi5B,EAAgBpjB,EAAdvW,YAAI,IAAA25B,EAAG,GAAEA,EAC3CvuB,EAASuiB,EAAQxnC,GACjB6lC,EAAYkH,GAAY1lC,GACxBosC,EAAW55B,EAAK+M,IAAI+jB,IAE1B,MADe,CAAC1lB,EAAQ,QAASuiB,EAAQ+L,GAAY7L,EAAantB,GAASsrB,EAAW4N,EAAStzC,KAAK,OACtFglB,OAAOsiB,GAAQtnC,KAAK,KAgFvBuzC,CAAgBtjB,GACzB,IAAK,SACH,OA/DN,SAA0BA,GACxB,IAAQvW,EAAgCuW,EAAhCvW,KAAMS,EAA0B8V,EAA1B9V,QAASX,EAAiByW,EAAjBzW,OAEvB,MADe,CAAC6tB,EADwBpX,EAATpwB,MACAwnC,EAAQltB,GAAUgtB,EAAgB3tB,GAAS05B,GAAex5B,IAC3EsL,OAAOsiB,GAAQtnC,KAAK,KA4DvBwzC,CAAiBvjB,GAC1B,IAAK,WACH,OAnBN,SAA4BA,GAC1B,IAAQpwB,EAAkDowB,EAAlDpwB,KAAMsa,EAA4C8V,EAA5C9V,QAASs5B,EAAmCxjB,EAAnCwjB,SAAUL,EAAyBnjB,EAAzBmjB,UAASM,EAAgBzjB,EAAdvW,YAAI,IAAAg6B,EAAG,GAAEA,EAC/C5uB,EAASuiB,EAAQxnC,GACjB8zC,EAAe/G,GAAY6G,GAC3BH,EAAW55B,EAAK+M,IAAImtB,IAE1B,MADe,CAAC9uB,EAAQuiB,EAAQltB,GAAUktB,EAAQ+L,GAAYO,EAAcL,EAAStzC,KAAK,OAC5EglB,OAAOsiB,GAAQtnC,KAAK,KAavB6zC,CAAmB5jB,GAC5B,IAAK,SACL,IAAK,OACH,OA9DN,SAA8BA,GAC5B,IAAQvW,EAA8BuW,EAA9BvW,KAAMS,EAAwB8V,EAAxB9V,QAASre,EAAem0B,EAAfn0B,KAOvB,MANe,CACburC,EAFoCpX,EAATpwB,MAG3BwnC,EAAQltB,GACR,CAACgtB,EAAgBrrC,EAAK0d,QAAS2tB,EAAgBrrC,EAAKA,OAAOkpB,OAAOsiB,GAAQtnC,KAAK,KAC/EkzC,GAAex5B,IAEHsL,OAAOsiB,GAAQtnC,KAAK,KAsDvB8zC,CAAqB7jB,GAC9B,IAAK,WACH,OArDN,SAA4BA,GAC1B,IAAQxR,EAAoCwR,EAApCxR,KAAM/E,EAA8BuW,EAA9BvW,KAAMS,EAAwB8V,EAAxB9V,QAASre,EAAem0B,EAAfn0B,KAU7B,MATe,CACburC,EAF0CpX,EAATpwB,MAGjCwnC,EAAQltB,GACR,CACE,CAACgtB,EAAgBrrC,EAAK0d,QAAS2tB,EAAgBrrC,EAAKA,OAAOkpB,OAAOsiB,GAAQtnC,KAAK,KAC/Eye,GAAQ,IAAJ8nB,OAAQ9nB,EAAK/E,KAAO+E,EAAK/E,KAAK+M,IAAIwsB,IAAgBjzC,KAAK,MAAQ,GAAE,MACrEglB,OAAOsiB,GAAQtnC,KAAK,IACtBkzC,GAAex5B,IAEHsL,OAAOsiB,GAAQtnC,KAAK,KA0CvB+zC,CAAmB9jB,GAC5B,IAAK,OACH,OAxFN,SAAwBA,GACtB,IAAQpwB,EAA4DowB,EAA5DpwB,KAAMyH,EAAsD2oB,EAAtD3oB,QAAS0sC,EAA6C/jB,EAA7C+jB,WAAY9zB,EAAiC+P,EAAjC/P,OAAQD,EAAyBgQ,EAAzBhQ,KAAYqqB,EAAara,EAAI,KAClEnL,EAASuiB,EAAQxnC,GACjBo0C,EAAWvE,GAAWzvB,GACtBgT,EAAS,CAACnO,EAAQ,OAAQmvB,GAC5B3sC,GAAS2rB,EAAOrb,KAAK,IAAD2uB,OAAKj/B,EAAQmf,IAAIkiB,IAAgB3oC,KAAK,MAAK,MAC/Dg0C,GAAY/gB,EAAOrb,KAAK,QAAD2uB,OAASyN,EAAWvtB,IAAI4gB,GAASrnC,KAAK,QACjEizB,EAAOrb,KAAK,KAAM4zB,EAAYtrB,IAC1BoqB,GAAUrX,EAAOrb,KAAKyvB,EAAQiD,IAClC,OAAOrX,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KA+EvBk0C,CAAejkB,KDnJ1BkkB,QE/BF,SAAsBlkB,GACpB,IAAQpwB,EAAgBowB,EAAhBpwB,KAAMqH,EAAU+oB,EAAV/oB,MAGd,MAAO,CAFQmgC,EAAQxnC,GACL6vC,GAAWxoC,IACFlH,KAAK,MF4BhCo0C,OEzBF,SAAqBnkB,GACnB,IAAQpwB,EAAqCowB,EAArCpwB,KAAM4Z,EAA+BwW,EAA/BxW,SAAUC,EAAqBuW,EAArBvW,KAAMvS,EAAe8oB,EAAf9oB,GAAIqS,EAAWyW,EAAXzW,OAClC,MAAO,CAAC6tB,EAAQxnC,GAAOwnC,EAAQ5tB,GAAW+wB,GAAU9wB,GAAO2tB,EAAQlgC,GAAKggC,EAAgB3tB,IAASwL,OAAOsiB,GAAQtnC,KAAK,MFwBrHnD,OGuXF,SAAqBozB,GACnB,IAAQ9V,EAAY8V,EAAZ9V,QACJgQ,EAAM,GACV,OAAQhQ,EAAQxO,eACd,IAAK,YACHwe,EArCN,SAA8B8F,GAC5B,IAAQpwB,EAAgDowB,EAAhDpwB,KAAMH,EAA0CuwB,EAA1CvwB,QAASya,EAAiC8V,EAAjC9V,QAASre,EAAwBm0B,EAAxBn0B,KAAM2iB,EAAkBwR,EAAlBxR,KAAMne,EAAY2vB,EAAZ3vB,QACtC6pB,EAAM,CAACkd,EAAQxnC,GAAOwnC,EAAQ3nC,GAAU2nC,EAAQltB,IAChDk6B,EAAe,CAAClN,EAAgBrrC,EAAK0d,QAAS1d,EAAKA,MAAMkpB,OAAOsiB,GAAQtnC,KAAK,KAC7Es0C,EAAU,GAAH/N,OAAM9nB,EAAK/E,KAAK+M,IAAIwsB,IAAgBjzC,KAAK,OAAKumC,OAAG9nB,EAAK4G,QAAU,CAAC,SAAU,KAAM5G,EAAK4G,QAAQoB,IAAIwsB,IAAgBjzC,KAAK,OAAOA,KAAK,KAAO,IAEvJ,OADAmqB,EAAIvS,KAAK,GAAD2uB,OAAI8N,EAAY,KAAA9N,OAAI+N,EAAO,SAAA/N,OAASjmC,EAAQmmB,IAAI8tB,IAAsBv0C,KAAK,MAAK,MACjFmqB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KA+BrBw0C,CAAqBvkB,GAC3B,MACF,IAAK,QACH9F,EAjWN,SAA0B8F,GACxB,IACEpwB,EAUEowB,EAVFpwB,KAAMsa,EAUJ8V,EAVI9V,QAASjT,EAUb+oB,EAVa/oB,MAAOutC,EAUpBxkB,EAVoBwkB,KAAMttC,EAU1B8oB,EAV0B9oB,GAAI8U,EAU9BgU,EAV8BhU,UACjBy4B,EASbzkB,EATF/T,cACoBy4B,EAQlB1kB,EARF9T,mBACey4B,EAOb3kB,EAPF7T,cACgBy4B,EAMd5kB,EANF6kB,eACSC,EAKP9kB,EALFvwB,QACcs1C,EAIZ/kB,EAJFglB,aACYC,EAGVjlB,EAHF1T,WACU44B,EAERllB,EAFFmlB,SACM9K,EACJra,EAAI,KACF9F,EAAM,CAACkd,EAAQxnC,GAAOwnC,EAAQ0N,GAAY1N,EAAQprB,GAAYorB,EAAQ8N,GAAW9N,EAAQltB,GAAUktB,EAAQqN,GAAc9H,GAAY1lC,IAC3I,GAAIutC,EAAM,CACR,IAAcY,EAA+BZ,EAArC50C,KACFy1C,EAAgB1I,GADuB6H,EAArBvtC,OAGxB,OADAijB,EAAIvS,KAAKyvB,EAAQgO,GAAWC,GACrBnrB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAEjC,GAAIg1C,EAAa,OAAO7qB,EAAIoc,OAAO,CAACgP,GAA4BP,KAAehwB,OAAOsiB,GAAQtnC,KAAK,KAC/F20C,GAAkBxqB,EAAIvS,KAAK,IAAD2uB,OAAKoO,EAAiBluB,IAAImtB,IAAuB5zC,KAAK,MAAK,MACzF,GAAI40C,EAAc,CAChB,IAAQn7B,EAAamtB,IAAbntB,SACFsS,EAAStS,GAAuC,WAA3BA,EAAS9N,cAA6B,KAAO,IACxEwe,EAAIvS,KAAKg9B,EAAanuB,IAAIgrB,IAAkBzxC,KAAK+rB,IAEnD,GAAIue,EAAU,CACZ,IAAMkL,EAAUlL,EAAS7jB,KAAI,SAAAgvB,GAAY,MAAI,CAAClO,EAAakO,EAAat7B,SAAUktB,EAAQoO,EAAa1pB,QAASwb,EAAakO,EAAaj5C,QAAQwD,KAAK,QAAMA,KAAK,MAClKmqB,EAAIvS,KAAK,SAAD2uB,OAAUiP,EAAO,MAE3BrrB,EAAIvS,KAAKyvB,EAAQwN,GAAgBxN,EAAQlgC,IACrC+tC,GAAW/qB,EAAIvS,KAAK89B,GAAWR,IACnC,OAAO/qB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAgUrB21C,CAAiB1lB,GACvB,MACF,IAAK,UACH9F,EAAwB,eAAlB8F,EAAKzG,SA7RjB,SAAsCyG,GACpC,IACErF,EASEqF,EATFrF,WAA2BgrB,EASzB3lB,EATU4lB,cACZC,EAQE7lB,EARF6lB,WACAz2B,EAOE4Q,EAPF5Q,OAAQI,EAONwQ,EAPMxQ,QACEzY,EAMRipB,EANF1Q,SAAmB3G,EAMjBqX,EANiBrX,KACnBhb,EAKEqyB,EALFryB,SACAuc,EAIE8V,EAJF9V,QACAuK,EAGEuL,EAHFvL,GACA7kB,EAEEowB,EAFFpwB,KAAMqH,EAEJ+oB,EAFI/oB,MACNsY,EACEyQ,EADFzQ,KAEI2K,EAAM,CAACkd,EAAQxnC,GAAOwnC,EAAQ3iB,GAAK2iB,EAAQuO,GAAevO,EAAQltB,GAAUgtB,EAAgBvc,GAAayc,EAAQzpC,IACjH4qC,EAAQD,EAAkBlpB,GAChC8K,EAAIvS,KAAK4wB,EAAO,KAAMkH,GAAWxoC,IAC7B0R,GAAMuR,EAAIvS,KAAK,OAAQ83B,GAAW92B,IACtCuR,EAAIvS,KAAIgyB,MAARzf,EAAG0f,GAASf,EAAuBgN,IAAWvP,OAAAsD,GAAKf,EAAuB9hC,MACtEwY,GAAM2K,EAAIvS,KAAKyvB,EAAQ7nB,EAAK3f,MAAO2qC,GAAUhrB,EAAKZ,OAEtD,OADAuL,EAAIvS,KAAKyvB,EAAQ5nB,EAAQtF,SAAU47B,GAAUt2B,EAAQ/F,OAC9CyQ,EAAInF,OAAOsiB,GAAQtnC,KAAK,KA0QYg2C,CAA6B/lB,GAhU1E,SAA4BA,GAC1B,IACEgmB,EAKEhmB,EALFgmB,QAAmBjvC,EAKjBipB,EALO1Q,SAAmBpF,EAK1B8V,EAL0B9V,QACnB+7B,EAIPjmB,EAJFxQ,QACA5f,EAGEowB,EAHFpwB,KAAMqH,EAGJ+oB,EAHI/oB,MAAsB+S,EAG1BgW,EAHW/T,cACbD,EAEEgU,EAFFhU,UAAWqD,EAET2Q,EAFS3Q,QAAiB62B,EAE1BlmB,EAFkB5Q,OACb+2B,EACLnmB,EADFomB,MAA2BC,EACzBrmB,EADmB7Q,KAAmBI,EACtCyQ,EADsCzQ,KAEpC2K,EAAM,CACVkd,EAAQxnC,GAAOwnC,EAAQprB,GAAYuuB,GAAUyL,GAAU5O,EAAQltB,GAC/DktB,EAAQptB,GAAMy1B,GAAWpwB,GACzB+nB,EAAQiP,GACRH,EAAc1vB,KAAI,SAAA+hB,GAChB,IAAM+N,EAAW,CAAClP,EAAQmB,EAAMruB,UACxBsE,EAAS+pB,EAAT/pB,KAER,OADIA,GAAM83B,EAAS3+B,KAAKyvB,EAAQ5oB,EAAKtE,SAAUsE,EAAKnX,QAAQmf,IAAIkiB,IAAgB3oC,KAAK,OAC9Eu2C,EAASv2C,KAAK,QAEvB,KAAM0vC,GAAWxoC,GAAQmgC,EAAQrgC,GAAWA,EAAQmT,SAAUktB,EAAQrgC,GAAWA,EAAQyX,MACzF23B,GAAgB,GAAJ7P,OAAOc,EAAQ+O,EAAaj8B,SAAQ,KAAAosB,OAAIY,EAAgBiP,EAAa92B,UACjFgnB,EAAsB,OAAQkE,GAAWhrB,GACzC6nB,EAAQ6O,EAAY97B,SAEtB,OAAQ87B,EAAYr2C,MAClB,IAAK,MACHsqB,EAAIvS,KAAK0uB,EAAsB,MAAO4G,EAAUgJ,EAAYx8B,OAC5D,MACF,IAAK,WACHyQ,EAAIvS,KAAK4+B,GAAcN,EAAYx8B,KAAKb,MAI5C,OADAsR,EAAIvS,KAAKyvB,EAAQ6O,EAAYp3B,SACtBqL,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAgSiDy2C,CAAmBxmB,GAC/F,MACF,IAAK,YACH9F,EA1QN,SAA8B8F,GAC5B,IACEymB,EAEEzmB,EAFFymB,UAAW99B,EAETqX,EAFSrX,KAAqB87B,EAE9BzkB,EAFe/T,cACjB/B,EACE8V,EADF9V,QAASX,EACPyW,EADOzW,OAAQ3Z,EACfowB,EADepwB,KAAY82C,EAC3B1mB,EAAI,KADiC2mB,EACrC3mB,EADqC2mB,QAYzC,MAVY,CACVvP,EAAQxnC,GACRwnC,EAAQltB,GACRktB,EAAQqN,GACRnN,EAAamP,GACbrP,EAAQsP,GACRrQ,EAAsB,SAAUiB,EAAc/tB,GAC9C8sB,EAAsB,UAAWiB,EAAcqP,GAC/CtQ,EAAsB,OAAQiB,EAAc3uB,IAEnCoM,OAAOsiB,GAAQtnC,KAAK,KA2PrB62C,CAAqB5mB,GAC3B,MACF,IAAK,WACH9F,EA3EN,SAA6B8F,GAC3B,IAAQpwB,EAA+DowB,EAA/DpwB,KAAMH,EAAyDuwB,EAAzDvwB,QAASya,EAAgD8V,EAAhD9V,QAASre,EAAuCm0B,EAAvCn0B,KAAM2iB,EAAiCwR,EAAjCxR,KAAMq4B,EAA2B7mB,EAA3B6mB,QAASx2C,EAAkB2vB,EAAlB3vB,QAASy2C,EAAS9mB,EAAT8mB,KACxD5sB,EAAM,CAACkd,EAAQxnC,GAAOwnC,EAAQ3nC,GAAU2nC,EAAQltB,IAChDk6B,EAAe,CAAC9M,EAAazrC,EAAK0d,QAAS1d,EAAKA,KAAK2qB,IAAI8gB,GAAcvnC,KAAK,MAAMglB,OAAOsiB,GAAQtnC,KAAK,KACtGs0C,EAAU71B,EAAKgI,IAAIwsB,IAAgBjuB,OAAOsiB,GAAQtnC,KAAK,MAE7D,OADAmqB,EAAIvS,KAAK,GAAD2uB,OAAI8N,EAAY,KAAA9N,OAAI+N,EAAO,KA3BrC,SAAoCrkB,GAClC,IAAQpwB,EAAwBowB,EAAxBpwB,KAAMsa,EAAkB8V,EAAlB9V,QAAST,EAASuW,EAATvW,KAMvB,MALY,CACV2tB,EAAQxnC,GACRwnC,EAAQltB,GACRrb,MAAMkkB,QAAQtJ,GAAQ,IAAH6sB,OAAO7sB,EAAK+M,IAAIuwB,IAAuBh3C,KAAK,MAAK,KAAMi3C,GAA8Bv9B,IAE/FsL,OAAOsiB,GAAQtnC,KAAK,KAoBSk3C,CAA2BJ,GAAUx2C,EAAQmmB,IAAI0wB,IAA2Bn3C,KAAK,KAAM+2C,GACxH5sB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAqErBo3C,CAAoBnnB,GAC1B,MACF,IAAK,QACH9F,EA9PN,SAA0B8F,GACxB,IACEonB,EAGEpnB,EAHFonB,aAA6BC,EAG3BrnB,EAHYsnB,cAA2Bp9B,EAGvC8V,EAHuC9V,QAAwBu6B,EAG/DzkB,EAHgD/T,cAA4Bs7B,EAG5EvnB,EAH4EunB,QAAwBC,EAGpGxnB,EAHqFhS,cAC3EsrB,EAEVtZ,EAFFnS,WAAoC45B,EAElCznB,EAFqB0nB,YAAyB55B,EAE9CkS,EAF8ClS,MAAOL,EAErDuS,EAFqDvS,GAAmB+rB,EAExExZ,EAFyD1G,cAA2CquB,EAEpG3nB,EAFkF4nB,iBAA6CC,EAE/H7nB,EAFkH8nB,YAA6BC,EAE/I/nB,EAFwIjS,MAAa9W,EAErJ+oB,EAFqJ/oB,MAAO+wC,EAE5JhoB,EAF4JgoB,WAAYp4C,EAExKowB,EAFwKpwB,KAAMge,EAE9KoS,EAF8KpS,MAC1KysB,EACJra,EAAI,KAD6BioB,EACjCjoB,EADckoB,kBAEZC,EAAe9N,GAAY,SAAJ/D,OAAawD,EAAqBO,GAAUtqC,KAAK,MAAK,KAC7Eq4C,EAAiBb,GAAW,GAAJjR,OAAOc,EAAQmQ,EAAQr9B,SAAQ,MAAAosB,OAAKiR,EAAQlwC,QAAQmf,KAAI,SAAAhf,GAAG,MAAoB,iBAARA,EAAmB0/B,EAAgB1/B,GAAO+iC,GAAU/iC,MAAOzH,KAAK,MAAK,KACtKs4C,EAAYv6B,EACZA,IACFu6B,EAA6B,iBAAVv6B,EAAqBopB,EAAgBppB,GAAS,CAACopB,EAAgBppB,EAAMvE,QAAS2tB,EAAgBppB,EAAMjiB,OAAOkpB,OAAOsiB,GAAQtnC,KAAK,MAEpJ,IAAMmqB,EAAM,CACVkd,EAAQxnC,GAAOwnC,EAAQkC,GAAYlC,EAAQltB,GAAUktB,EAAQqN,GAAcrN,EAAQgQ,GACnFiB,EAAWjR,EAAQ2Q,GAAOtI,GAAWxoC,IAAMq/B,OAAAsD,GAAKP,EAAeoO,IAAW,KAAAnR,OACtE4C,EAAqBsO,GAAa,KAAKY,EAAgBtO,EAAqBN,GAAUzpC,KAAK,KAAMkzC,GAAe0E,GAAe1E,GAAe4E,GAClJxR,EAAsB,aAAciB,EAAc0Q,KAEhDC,EACF/tB,EAAIvS,KAAKwgC,EAAc9R,EAAsB,QAASkE,GAAW3sB,IAEjEsM,EAAIvS,KAAK0uB,EAAsB,QAASkE,GAAW3sB,GAAQu6B,GAG7D,OADAjuB,EAAIvS,KAAK0uB,EAAsB,KAAMkE,GAAW9sB,GAAK4oB,EAAsB,gBAAiBiB,EAAc+P,IACnGntB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAsOrBu4C,CAAiBtoB,GACvB,MACF,IAAK,WACH9F,EAtON,SAA6B8F,GAC3B,IACEpwB,EAGEowB,EAHFpwB,KAAMsa,EAGJ8V,EAHI9V,QAASs5B,EAGbxjB,EAHawjB,SAAUx3B,EAGvBgU,EAHuBhU,UACVy4B,EAEbzkB,EAFF/T,cACoBy4B,EAClB1kB,EADF9T,mBAEIgO,EAAM,CACVkd,EAAQxnC,GACRwnC,EAAQprB,GACRorB,EAAQltB,GACRktB,EAAQqN,GACR9H,GAAY6G,IAEVkB,GAAkBxqB,EAAIvS,KAAK+8B,EAAiBluB,IAAImtB,IAAuB5zC,KAAK,MAChF,OAAOmqB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAwNrBw4C,CAAoBvoB,GAC1B,MACF,IAAK,WACL,IAAK,SACH9F,EAzNN,SAAqC8F,GACnC,IACEpwB,EAGEowB,EAHFpwB,KAAMsa,EAGJ8V,EAHI9V,QAASza,EAGbuwB,EAHavwB,QACAg1C,EAEbzkB,EAFF/T,cACoBy4B,EAClB1kB,EADF9T,mBAEF42B,EAAuB9iB,EAAK9V,GAApBxB,EAAEo6B,EAAFp6B,GAAIa,EAAMu5B,EAANv5B,OACN1d,EAAO,CAACyrC,EAAa5uB,GAAKa,EAAOiN,IAAI8gB,GAAcvnC,KAAK,MAAMglB,OAAOsiB,GAAQtnC,KAAK,KAClFmqB,EAAM,CACVkd,EAAQxnC,GACRwnC,EAAQ3nC,GACR2nC,EAAQltB,GACRktB,EAAQqN,GACR54C,GAEE64C,GAAkBxqB,EAAIvS,KAAK+8B,EAAiBluB,IAAIgrB,IAAkBzxC,KAAK,MAC3E,OAAOmqB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAyMrBy4C,CAA4BxoB,GAClC,MACF,IAAK,OACH9F,EAzMN,SAAyB8F,GACvB,IACEpC,EAGEoC,EAHFpC,UAAWvmB,EAGT2oB,EAHS3oB,QAAS2uC,EAGlBhmB,EAHkBgmB,QAAwBvB,EAG1CzkB,EAH2B/T,cAA4B/B,EAGvD8V,EAHuD9V,QACzD6V,EAEEC,EAFFD,UAAWtwB,EAETuwB,EAFSvwB,QAASwgB,EAElB+P,EAFkB/P,OAAsBw4B,EAExCzoB,EAF0B0oB,aAC5B18B,EACEgU,EADFhU,UAAWpc,EACTowB,EADSpwB,KAAMogB,EACfgQ,EADehQ,KAAY24B,EAC3B3oB,EAAI,KADiD4oB,EACrD5oB,EADuC6oB,aAEnCngC,EAA2BsH,EAA3BtH,GAAIa,EAAuByG,EAAvBzG,OAAc1d,EAASmkB,EAAfA,KACdg0B,EAAW,CAAC9M,EAAgBxuB,GAAKwuB,EAAgB3tB,GAAS2tB,EAAgBrrC,IAAOkpB,OAAOsiB,GAAQtnC,KAAK,KAkB3G,MAjBY,CACVqnC,EAAQxnC,GACRwnC,EAAQ3nC,GACR2nC,EAAQprB,GACRorB,EAAQrX,GACRnC,GAAa,eAAJ0Y,OAAmBc,EAAQxZ,IACpC2c,GAAUyL,GACVyC,GAAe,gBAAJnS,OAAoBc,EAAQqR,IACvCrR,EAAQltB,GACRktB,EAAQqN,GACRT,EACA3sC,GAAW,IAAJi/B,OAAQj/B,EAAQmf,IAAIwgB,GAAuBjnC,KAAK,MAAK,KAC5D64C,GAAe,CAAC,OAAQ,IAAFtS,OAAMsS,EAAYpyB,KAAI,SAAAsyB,GAAO,OAAItR,EAAgBsR,GAAS/4C,KAAK,QAAMA,KAAK,MAAK,MAAKA,KAAK,KAC/G,KACA01C,GAAWx1B,GACXmnB,EAAQuR,IAEC5zB,OAAOsiB,GAAQtnC,KAAK,KAgLrBg5C,CAAgB/oB,GACtB,MACF,IAAK,SACH9F,EAhLN,SAA2B8F,GACzB,IACE9oB,EAEE8oB,EAFF9oB,GAAI8xC,EAEFhpB,EAFEgpB,OAAQp5C,EAEVowB,EAFUpwB,KAAMsa,EAEhB8V,EAFgB9V,QAASugB,EAEzBzK,EAFyByK,OACPia,EAClB1kB,EADF9T,mBAEIgO,EAAM,CACVkd,EAAQxnC,GACRwnC,EAAQltB,GACR,CAACgtB,EAAgB8R,EAAOz/B,QAAS2tB,EAAgB8R,EAAOn9C,OAAOkpB,OAAOsiB,GAAQtnC,KAAK,KACnFqnC,EAAQlgC,GACR4gC,EAAcrN,IAEhB,GAAIia,GAAoBA,EAAiB91C,OAAS,EAAG,CACnD,IACyCuuC,EADnC7C,EAAgB,GAAE8C,E,ioBAAAC,CACCqH,GAAgB,IAAzC,IAAAtH,EAAA/vC,MAAA8vC,EAAAC,EAAArwC,KAAAuwC,MAA2C,KAAhClkB,EAAU+jB,EAAA5wC,MACb08C,EAAiB7vB,EAAWxpB,KAClC,OAAQq5C,GACN,IAAK,UACH3O,EAAc3yB,KAAK4yB,GAAUnhB,IAC7B,MACF,IAAK,UACHkhB,EAAc3yB,KAAKyvB,EAAQ6R,GAAiB1O,GAAUnhB,EAAW7sB,QACjE,MACF,IAAK,aACH+tC,EAAc3yB,KAAKuhC,GAA0B9vB,MAGlD,MAAAokB,GAAAJ,EAAA9zB,EAAAk0B,GAAA,QAAAJ,EAAAzpB,IACDuG,EAAIvS,KAAK2yB,EAAcvlB,OAAOsiB,GAAQtnC,KAAK,MAE7C,OAAOmqB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAkJrBo5C,CAAkBnpB,GACxB,MACF,IAAK,OACH9F,EAlJN,SAAyB8F,GACvB,IAAQ9oB,EAA4E8oB,EAA5E9oB,GAAwBwtC,EAAoD1kB,EAAxE9T,mBAAsChC,EAAkC8V,EAAlC9V,QAASre,EAAyBm0B,EAAzBn0B,KAAM0tB,EAAmByG,EAAnBzG,SAC3DW,EAAM,CACVkd,EAFkFpX,EAATpwB,MAGzEwnC,EAAQltB,GACR,CAACgtB,EAAgBrrC,EAAK0d,QAAS2tB,EAAgBrrC,EAAKA,OAAOkpB,OAAOsiB,GAAQtnC,KAAK,KAC/EqnC,EAAQlgC,GACRkgC,EAAQ7d,IAEV,GAAImrB,EAAkB,CACpB,IAAMpK,EAAgB,GACtB,OAAQ/gB,GACN,IAAK,OACL,IAAK,QACH+gB,EAAc3yB,KAAK4yB,GAAUmK,IAC7B,MACF,QACEpK,EAAc3yB,KAAK,IAAD2uB,OAAKoO,EAAiBluB,IAAImtB,IAAuB5zC,KAAK,MAAK,MAGjFmqB,EAAIvS,KAAK2yB,EAAcvlB,OAAOsiB,GAAQtnC,KAAK,MAE7C,OAAOmqB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KA4HrBq5C,CAAgBppB,GACtB,MACF,IAAK,OACH9F,EA/DN,SAAyB8F,GACvB,IACEqpB,EAEErpB,EAFFqpB,UAAW7uB,EAETwF,EAFSxF,QAAuB8uB,EAEhCtpB,EAFkBupB,aAA0C9E,EAE5DzkB,EAF6C/T,cAA4B/B,EAEzE8V,EAFyE9V,QAAsBs/B,EAE/FxpB,EAFkF8nB,YAClE2B,EAChBzpB,EADF0pB,iBAA4CC,EAC1C3pB,EADiC+V,QAA0C6T,EAC3E5pB,EADyD6pB,iBAAmCj6C,EAC5FowB,EAD4FpwB,KAE1Fk6C,EADF9pB,EADkG1M,KAEzEkD,KAAI,SAAAuzB,GAC/B,IAAcC,EAA0BD,EAAhCz2B,KAAgB22B,EAAgBF,EAAhBE,YAClBjnB,EAAS,CAACknB,GAAqBF,IAErC,OADIC,GAAajnB,EAAOrb,KAAKyvB,EAAQ6S,EAAY//B,SAAU+/B,EAAYE,YAAa7S,EAAa2S,EAAY19C,QACtGy2B,EAAOjO,OAAOsiB,GAAQtnC,KAAK,QACjCA,KAAK,MACFmqB,EAAM,CACVkd,EAAQxnC,GACRwnC,EAAQltB,GACRktB,EAAQqN,GACRqF,GAEER,GAAapvB,EAAIvS,KAAKyvB,EAAQkS,EAAYp/B,SAAUo/B,EAAY/8C,MAAMiqB,IAAI0zB,IAAsBn6C,KAAK,OACzGmqB,EAAIvS,KAAK0uB,EAAsBsT,GAAiBA,EAAcz/B,QAASqwB,GAAWoP,GAAiBA,EAAcp9C,QAC7Gq9C,GAAiB1vB,EAAIvS,KAAKyvB,EAAQwS,EAAgB1/B,SAAU0/B,EAAgBr9C,MAAMiqB,KAAI,SAAA4zB,GAAc,OAAI7P,GAAU6P,MAAiBr6C,KAAK,MACxI05C,GAAiBA,EAAgB1yC,SAAQ,SAAAszC,GAAc,OAAInwB,EAAIvS,KAAK0uB,EAAsBgU,EAAengC,QAASqwB,GAAW8P,EAAe99C,WAEhJ,OADA2tB,EAAIvS,KAAK2vB,EAAakS,GAAanR,EAAa7d,GAAU8c,EAAa+R,IAChEnvB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KAyCrBu6C,CAAgBtqB,GACtB,MACF,QACE,MAAM,IAAInyB,MAAM,2BAADyoC,OAA4BpsB,IAE/C,OAAOgQ,GHlaPM,QJhBF,SAAwBwF,GACtB,IAAQvW,EAAgCuW,EAAhCvW,KAAMS,EAA0B8V,EAA1B9V,QAASugB,EAAiBzK,EAAjByK,OAOvB,MANe,CACb2M,EAFsCpX,EAATpwB,MAG7BwnC,EAAQltB,GACRy3B,GAAmBlX,GACnBmX,GAAmBn4B,IAEPsL,OAAOsiB,GAAQtnC,KAAK,MISlCkgB,OAAcsrB,EACdgP,WI0FF,SAAyBvqB,GACvB,IAAQpwB,EAAwBowB,EAAxBpwB,KAAMsa,EAAkB8V,EAAlB9V,QAAST,EAASuW,EAATvW,KACvB,MAAO,CAAC2tB,EAAQxnC,GAAOwnC,EAAQltB,GAAUqwB,GAAU9wB,IAAOsL,OAAOsiB,GAAQtnC,KAAK,MJ3F9Ey6C,OKlCF,SAAqBxqB,GACnB,IAAQ3oB,EAA2E2oB,EAA3E3oB,QAASsR,EAAkEqX,EAAlErX,KAAM1R,EAA4D+oB,EAA5D/oB,MAAO2W,EAAqDoS,EAArDpS,MAAOwH,EAA8C4K,EAA9C5K,QAAeknB,EAA+Btc,EAAI,KAAzBpN,EAAqBoN,EAArBpN,MAAOuC,EAAc6K,EAAd7K,UAC/DonB,EAAU,CAACxB,EAAUuB,GAAW,UAChCzG,EAAa4G,GAAaplC,EAASsR,GAUzC,OATA4zB,EAAQ50B,KAAKkuB,GACThnC,MAAMkkB,QAAQ9b,KACO,IAAjBA,EAAMrI,SAAsC,IAAtBqI,EAAM,GAAG4f,UAAoB0lB,EAAQ50B,KAAKg1B,GAAY1lC,KAEpFslC,EAAQ50B,KAAK0uB,EAAsB,OAAQsG,GAAah0B,IACxD4zB,EAAQ50B,KAAK0uB,EAAsB,QAASkE,GAAW3sB,IACvD2uB,EAAQ50B,KAAKo1B,GAAwB3nB,EAAS,aAC9CmnB,EAAQ50B,KAAKizB,EAAWhoB,IACxB2pB,EAAQ50B,KAAKgxB,EAAexjB,IACrBonB,EAAQxnB,OAAOsiB,GAAQtnC,KAAK,MLsBnC06C,KHhCF,SAAmBzqB,GACjB,IAAQ9V,EAAgC8V,EAAhC9V,QAAS7e,EAAuB20B,EAAvB30B,OAAQq/C,EAAe1qB,EAAf0qB,WAMzB,MALe,CACbtT,EAAQltB,GACRu1B,GAAWp0C,IACVq/C,GAAc,IAAIl0B,IAAIqrB,IAAoB9sB,OAAOsiB,GAAQtnC,KAAK,OAEnDglB,OAAOsiB,GAAQtnC,KAAK,MG0BlCyf,QIQF,SAAsBwQ,GACpB,IAAQpwB,EAAqBowB,EAArBpwB,KAAM/D,EAAem0B,EAAfn0B,KAAM2iB,EAASwR,EAATxR,KACd0L,EAAM,CAACkd,EAAQxnC,IACf+6C,EAAe,CAAC9+C,GAClB2iB,GAAMm8B,EAAahjC,KAAK,IAAD2uB,OAAKiE,GAAU/rB,GAAMze,KAAK,MAAK,MAE1D,OADAmqB,EAAIvS,KAAKgjC,EAAa56C,KAAK,KACpBmqB,EAAInF,OAAOsiB,GAAQtnC,KAAK,MJb/B66C,QMzCF,SAAsB5qB,GACpB,IAAQpwB,EAAeowB,EAAfpwB,KAAM6Z,EAASuW,EAATvW,KACd,MAAO,CAAC2tB,EAAQxnC,GAAO2rC,EAAY9xB,IAAO1Z,KAAK,MNwC/C6jB,IIeF,SAAsBoM,GACpB,IAAQpwB,EAAsCowB,EAAtCpwB,KAAMi7C,EAAgC7qB,EAAhC6qB,MAAOpgB,EAAyBzK,EAAzByK,OAAQqgB,EAAiB9qB,EAAjB8qB,MAAOC,EAAU/qB,EAAV+qB,MAEpC,MADY,CAACF,EAAOzT,EAAQxnC,GAAO66B,EAAQ,KAAM8b,GAAc,CAACuE,IAAS,OAAQvE,GAAcwE,GAAQ,WAAYF,GACxG91B,OAAOsiB,GAAQtnC,KAAK,MJjB/Bi7C,ORbF,SAAqBhrB,GACnB,IAAQrX,EAAuEqX,EAAvErX,KAAM1R,EAAiE+oB,EAAjE/oB,MAAOie,EAA0D8K,EAA1D9K,IAAKtH,EAAqDoS,EAArDpS,MAAOwH,EAA8C4K,EAA9C5K,QAAeknB,EAA+Btc,EAAI,KAAzBpN,EAAqBoN,EAArBpN,MAAOuC,EAAc6K,EAAd7K,UAYjE,MAXgB,CACd4lB,EAAUuB,GACV,SACAK,GAAY1lC,GACZo/B,EAAsB,MAAO4G,EAAU/nB,GACvCmhB,EAAsB,OAAQsG,GAAah0B,GAC3C0tB,EAAsB,QAASkE,GAAW3sB,GAC1CmvB,GAAwB3nB,EAAS,YACjCwlB,EAAWhoB,GACX+lB,EAAexjB,IAEFJ,OAAOsiB,GAAQtnC,KAAK,MQCnCk7C,GIkHF,SAAiBjrB,GACf,IACgBkrB,EASZlrB,EATFmrB,aACWC,EAQTprB,EARFqrB,UACaC,EAOXtrB,EAPFurB,YACSC,EAMPxrB,EANFyrB,QACAthC,EAKE6V,EALF7V,OACAuhC,EAIE1rB,EAJF0rB,GACAC,EAGE3rB,EAHF2rB,WACA98B,EAEEmR,EAFFnR,OAGImU,EAAS,CAACoU,EADZpX,EADFpwB,MAE6B2qC,GAAU2Q,GAAW5T,EAAantB,GAAS,GAAFmsB,OAAKsV,GAASJ,EAAO5iC,KAAO4iC,IAAOlV,OAAGqV,EAAW,IAAMvU,EAAQsU,IACnIJ,GACFtoB,EAAOrb,KACL2jC,EAAW90B,KACT,SAAAq1B,GAAM,MAAI,CAACzU,EAAQyU,EAAOj8C,MAAO2qC,GAAUsR,EAAOV,cAAe,OAAQS,GAASC,EAAOC,KAAKljC,KAAOijC,EAAOC,MAAOD,EAAOE,WAAWh3B,OAAOsiB,GAAQtnC,KAAK,QACzJA,KAAK,MAGPq7C,GAAUpoB,EAAOrb,KAAK,OAAQ,GAAF2uB,OAAKsV,GAASR,EAASxiC,KAAOwiC,IAAS9U,OAAGqV,EAAW,KAErF,OADA3oB,EAAOrb,KAAK2vB,EAAazoB,IAClBmU,EAAOjO,OAAOsiB,GAAQtnC,KAAK,MJvIlCi8C,OAAc9N,EACd+N,KAAcC,GACdC,SAAcD,GACdz8C,QAAcyuC,EACdkO,QImFF,SAAsBpsB,GACpB,IAAQpwB,EAA0BowB,EAA1BpwB,KAAMw8C,EAAoBpsB,EAApBosB,QAAStwB,EAAWkE,EAAXlE,OACjBkH,EAAS,CAACoU,EAAQxnC,IAClB6xB,EAAO2qB,EAAQ51B,KAAI,SAAA61B,GACvB,IAAQC,EAA4ED,EAA5EC,GAAIzgD,EAAwEwgD,EAAxExgD,KAAMqL,EAAkEm1C,EAAlEn1C,GAAIq1C,EAA8DF,EAA9DE,SAAUC,EAAoDH,EAApDG,SAAUC,EAA0CJ,EAA1CI,SAAUtiC,EAAgCkiC,EAAhCliC,OAAQiP,EAAwBizB,EAAxBjzB,WAAYlP,EAAYmiC,EAAZniC,QAClEwiC,EAAc,CAAC,CAACJ,EAAIzgD,GAAMkpB,OAAOsiB,GAAQtnC,KAAK,IAAKqnC,EAAQlgC,GAAKkgC,EAAQmV,IAC9E,OAAQriC,GACN,IAAK,WACHwiC,EAAY/kC,KAAKglC,GAAeH,GAAWjS,GAAU8R,EAAI/zB,SAAU8e,EAAQqV,IACvErzB,GAAYszB,EAAY/kC,KAAKyvB,EAAQhe,EAAWlP,SAAUqwB,GAAUnhB,EAAW7sB,QACnF,MACF,IAAK,SACHmgD,EAAY/kC,KAAKyvB,EAAQjtB,IACzB,MACF,IAAK,QACHuiC,EAAY/kC,KAAKyvB,EAAQjtB,GAAS,IAAFmsB,OAAMld,EAAW5C,IAAImtB,IAAuB5zC,KAAK,MAAK,MAK1F,OAAO28C,EAAY33B,OAAOsiB,GAAQtnC,KAAK,QACtCA,KAAK,GAADumC,OAAIxa,EAAM,MAEjB,OADAkH,EAAOrb,KAAK8Z,GACLuB,EAAOjzB,KAAK,MJzGnB68C,IIkCF,SAAkB5sB,GAChB,IAAQpwB,EAAaowB,EAAbpwB,KAAM8Y,EAAOsX,EAAPtX,GACRmM,EAASuiB,EAAQxnC,GACjB4Z,EAAW0tB,EAAgBxuB,GACjC,MAAO,GAAP4tB,OAAUzhB,EAAM,KAAAyhB,OAAI9sB,IJrCpBqjC,OIoBF,SAAqB7sB,GACnB,IAAQpwB,EAAgBowB,EAAhBpwB,KAAMqH,EAAU+oB,EAAV/oB,MACRslC,EAAU,GACVpyB,EAAS,GAAHmsB,OAAM1mC,GAAQA,EAAKJ,cAAa,UAC5C,GAAIyH,EAAO,KACiBkmC,EADjBC,EAAAC,GACYpmC,GAAK,IAA1B,IAAAmmC,EAAA/vC,MAAA8vC,EAAAC,EAAArwC,KAAAuwC,MAA4B,KACpBwP,EADS3P,EAAA5wC,MACWiqB,IAAIipB,IAC9BlD,EAAQ50B,KAAKmlC,EAAW/8C,KAAK,UAC9B,MAAAytC,GAAAJ,EAAA9zB,EAAAk0B,GAAA,QAAAJ,EAAAzpB,KAEH,MAAO,GAAP2iB,OAAUnsB,EAAM,KAAAmsB,OAAIiG,EAAQxsC,KAAK,QJ7BjCtE,KI/CF,SAAmBu0B,GACjB,IACM+sB,EAAmBxS,GAAUva,EAAKvW,MACxC,MAAO,GAAP6sB,OAFa,OAEC,KAAAA,OAAIyW,IJ6ClBC,KIXF,SAAmBhtB,GACjB,IAAQpwB,EAAgBowB,EAAhBpwB,KAAMqH,EAAU+oB,EAAV/oB,MACR4d,EAASuiB,EAAQxnC,GACvB,MAAO,GAAP0mC,OAAUzhB,EAAM,KAAAyhB,OAAIY,EAAgBjgC,KJSpCie,IIqCF,SAAqB8K,GACnB,IAAQpwB,EAAwBowB,EAAxBpwB,KAAM6Z,EAAkBuW,EAAlBvW,KAAMS,EAAY8V,EAAZ9V,QACd2K,EAASuiB,EAAQxnC,GACjBq9C,EAAWxjC,EAAK+M,IAAI+jB,IAAWxqC,KAAK,MAC1C,MAAO,CAAC8kB,EAAQuiB,EAAQltB,GAAU+iC,GAAUl4B,OAAOsiB,GAAQtnC,KAAK,MJxChE8tB,KAAcqvB,GACdC,OAAcD,GACdE,KAAcnL,GACdoL,MAAcC,GACdC,OAAcD,GACdE,KOtDF,SAAmB/jC,GACjB,IAAQuW,EAASvW,EAATuW,KACR,OAAQA,EAAKpwB,MACX,IAAK,SACH,OAAOkyC,GAAY9hB,GACrB,IAAK,SACH,OAXN,SAAqBA,GACnB,IAAQpwB,EAAeowB,EAAfpwB,KAAM6Z,EAASuW,EAATvW,KACd,MAAO,CAAC2tB,EAAQxnC,GAAO2qC,GAAU9wB,IAAO1Z,KAAK,KASlC09C,CAAYztB,KPiDvB0tB,MIEF,SAAoB1tB,GAClB,IAAQpwB,EAA8BowB,EAA9BpwB,KAAM+9C,EAAwB3tB,EAAxB2tB,MAAOD,EAAiB1tB,EAAjB0tB,MAAOvpB,EAAUnE,EAAVmE,MACtBjK,EAAM,CAACkd,EAAQxnC,GAAOwnC,EAAQuW,IAChCD,GAAOxzB,EAAIvS,KAAK,CAAC2vB,EAAaoW,EAAMxjC,SAAyB,WAAfwjC,EAAM99C,MAAqB89C,EAAMjkC,KAAK7a,OAAS,GAAK,KAAKmmB,OAAOsiB,GAAQtnC,KAAK,IAAK29C,EAAMjkC,KAAK+M,KAAI,SAAAo3B,GAAQ,OAAIrT,GAAUqT,MAAW79C,KAAK,OACrLo0B,GAAOjK,EAAIvS,KAAKyvB,EAAQjT,EAAMv0B,MAAOwnC,EAAQjT,EAAM0pB,QAAS1pB,EAAMrI,OAAQqI,EAAM1a,KAAK+M,KAAI,SAAAo3B,GAAQ,OAAIrT,GAAUqT,MAAW79C,KAAK,OACnI,OAAOmqB,EAAInF,OAAOsiB,GAAQtnC,KAAK,MJN/B+9C,YQ/DF,SAA0B9tB,GACxB,IAAAojB,EAA6CpjB,EAArCvW,KAAQoL,EAAMuuB,EAANvuB,OAAQ3K,EAAOk5B,EAAPl5B,QAAS6jC,EAAK3K,EAAL2K,MAC3B/qB,EAAS,CAACsU,EAAaziB,GAASuiB,EAAQltB,IAE9C,OADI6jC,GAAO/qB,EAAOrb,KAAKomC,EAAMv3B,IAAI8gB,GAAcvnC,KAAK,OAC7CizB,EAAOjO,OAAOsiB,GAAQtnC,KAAK,OR8DpC,SAAS01C,GAAWzlB,GAClB,IAAKA,EAAM,MAAO,GAIlB,IAHA,IAAMguB,EAAMpL,GAAY5iB,EAAKpwB,MAC7Bq+C,EAA2CjuB,EAAnCkuB,EAAYD,EAAZC,aAAct2B,EAAQq2B,EAARr2B,SAAUC,EAAMo2B,EAANp2B,OAC1BgO,EAAM,CAACqoB,GAAgB,IAAKF,EAAIhuB,IAC/BA,EAAKtI,OAAO,CACjB,IAAMy2B,EAAUvL,GAAY5iB,EAAKtI,MAAM9nB,MACjCw+C,EAAehX,EAAQpX,EAAKrI,QAClCkO,EAAIle,KAAKymC,EAAcD,EAAQnuB,EAAKtI,QACpCsI,EAAOA,EAAKtI,MAGd,OADAmO,EAAIle,KAAKumC,GAAgB,IAAKnR,GAAwBnlB,EAAU,YAAagjB,EAAW/iB,IACjFgO,EAAI9Q,OAAOsiB,GAAQtnC,KAAK,KAGjC,SAASw2C,GAAcvmB,GAErB,IADA,IAAM6F,EAAM,GACHv6B,EAAI,EAAGy3B,EAAM/C,EAAKpxB,OAAQtD,EAAIy3B,IAAOz3B,EAAG,CAC/C,IAAM+iD,EAAUruB,EAAK10B,IAAM00B,EAAK10B,GAAGsd,IAAMoX,EAAK10B,GAAGsd,IAAMoX,EAAK10B,GACxD4uB,EAAMurB,GAAW4I,GACjB/iD,IAAMy3B,EAAM,GAAsB,gBAAjBsrB,EAAQz+C,OAAwBsqB,EAAM,GAAHoc,OAAMpc,EAAG,OACjE2L,EAAIle,KAAKuS,GAEX,OAAO2L,EAAI91B,KAAK,OSzFlB,IAAMu+C,GAAiB,CAAC,UAAW,SAAU,SAAU,aAAc,SAAU,OAAQ,SAAU,SAAU,OAAQ,SAAU,WAAY,OAAQ,OAAQ,MAAO,QAAS,MAAO,SAAU,OAAQ,SAAU,UAAW,OAAQ,UAAW,KAAM,QAAS,SAAU,OAAQ,QAAS,UAAW,cAAe,UAAW,WAEzT,SAASC,GAAe9kC,GACtB,IAAMb,EAAMa,GAAQA,EAAKb,IAAMa,EAAKb,IAAMa,EAC1C,IAAK6kC,GAAeE,SAAS5lC,EAAIhZ,MAAO,MAAM,IAAI/B,MAAM,GAADyoC,OAAI1tB,EAAIhZ,KAAI,4CAGrE,SAAS6+C,GAAM7lC,GACb,OAAI/Z,MAAMkkB,QAAQnK,IAChBA,EAAI7R,QAAQw3C,IACLhI,GAAc39B,KAEvB2lC,GAAe3lC,GACR68B,GAAW78B,IAUL,SAASgjC,GAAShjC,GAE/B,MADuB,OAAXA,EAAI8iC,GARlB,SAASgD,EAAQ1uB,GACf,IAAKA,GAAwB,IAAhBA,EAAKpxB,OAAc,MAAO,GACvC,IAAMi3B,EAAM,CAAC4oB,GAAMzuB,EAAKpX,MAExB,OADIoX,EAAK2uB,SAAS9oB,EAAIle,KAAKqY,EAAK0rB,GAAGl8C,cAAek/C,EAAQ1uB,EAAK2uB,UACxD9oB,EAAI9Q,QAAO,SAAA65B,GAAO,OAAIA,KAAS7+C,KAAK,KAIb2+C,CAAQ9lC,GAAO6lC,GAAM7lC,G,42CLZrD,SAASsjC,GAAelsB,GACtB,IAAQpwB,EAAwCowB,EAAxCpwB,KAAMsa,EAAkC8V,EAAlC9V,QAASre,EAAyBm0B,EAAzBn0B,KAAMse,EAAmB6V,EAAnB7V,OAAQ0E,EAAWmR,EAAXnR,OAC/B0tB,EAAU,CAACnF,EAAQxnC,GAAOwnC,EAAQltB,GAAUktB,EAAQjtB,IAC1D,OAAQD,GACN,IAAK,QACHqyB,EAAQ50B,KAAKg1B,GAAY9wC,IACzB,MACF,IAAK,UACH0wC,EAAQ50B,KAAK,CAAC9b,EAAK,GAAG0d,OAAS,GAAH+sB,OAAMY,EAAgBrrC,EAAK,GAAG0d,QAAO,KAAM,GAAI2tB,EAAgBrrC,EAAK,GAAGwjB,UAAU0F,OAAOsiB,GAAQtnC,KAAK,KACjI,MACF,IAAK,WACL,IAAK,SACL,IAAK,YACHwsC,EAAQ50B,KAAKuvB,EAAgBrrC,IAC7B,MACF,IAAK,OACH0wC,EAAQ50B,KAAKg1B,GAAY9wC,GAAOm0B,EAAK3vB,SAAW2vB,EAAK3vB,QAAQmmB,IAAI+jB,IAAWxlB,OAAOsiB,GAAQtnC,KAAK,MAChG,MACF,IAAK,QACHwsC,EAAQ50B,KAAIgyB,MAAZ4C,EAAO,CAAM7D,GAAe7sC,IAAKyqC,OAAAsD,GAAK5Z,EAAK/oB,MAAQ,CAAC,KAAMwoC,GAAWzf,EAAK/oB,QAAU,IAAE,CAAE+oB,EAAK3vB,SAAW2vB,EAAK3vB,QAAQmmB,IAAI+jB,IAAWxlB,OAAOsiB,GAAQtnC,KAAK,QACxJ,MACF,IAAK,OACHwsC,EAAQ50B,KAAK9b,EAAK2qB,IAAIkiB,IAAgB3oC,KAAK,MAAOiwB,EAAK3vB,SAAW2vB,EAAK3vB,QAAQmmB,IAAI+jB,IAAWxlB,OAAOsiB,GAAQtnC,KAAK,MAMtH,OADI8e,GAAQ0tB,EAAQ50B,KAAKkH,EAAO2H,IAAI+jB,IAAWxlB,OAAOsiB,GAAQtnC,KAAK,MAC5DwsC,EAAQxnB,OAAOsiB,GAAQtnC,KAAK,KAsErC,SAASm9C,GAAgBltB,GACvB,IAAQpwB,EAA0BowB,EAA1BpwB,KAAMsa,EAAoB8V,EAApB9V,QAASiI,EAAW6N,EAAX7N,OACjB6Q,EAAS,CAACpzB,EAAKJ,cAAe4nC,EAAQltB,IAC5C,GAA2B,WAAvBta,EAAKJ,cAA4B,OAAOwzB,EAAOjzB,KAAK,KACxD,IAC8B8+C,EADxBC,EAAY,GAAEC,EAAA1R,GACIlrB,GAAM,QAAA68B,EAAA,WAAE,IAArBh4C,EAAS63C,EAAAtiD,MACV0K,EAA+BD,EAA/BC,MAAkBg4C,EAAaj4C,EAAxBwoB,UACT0vB,EAAgB,CAACzP,GAAWxoC,IAClC,GAAIg4C,EAAU,CAEZC,EAAcvnC,KADM,CAAC,SAAU,OAAQ,UACR6O,KAAI,SAAA3pB,GAAG,OAAIuqC,EAAQ6X,EAASpiD,OAAOkoB,OAAOsiB,GAAQtnC,KAAK,MAExF++C,EAAUnnC,KAAKunC,EAAcn/C,KAAK,OAPpC,IAAAg/C,EAAA1hD,MAAAwhD,EAAAE,EAAAhiD,KAAAuwC,MAAA0R,IAQC,MAAAxR,GAAAuR,EAAAzlC,EAAAk0B,GAAA,QAAAuR,EAAAp7B,IAED,OADAqP,EAAOrb,KAAIgyB,MAAX3W,EAAM,CAAM8rB,EAAU/+C,KAAK,OAAKumC,OAAAsD,GAzBlC,SAAgB5Z,GACd,IAAmBmvB,EAAqBnvB,EAAhCovB,UAAqBC,EAAWrvB,EAAXqvB,OACvBC,EAAW,GACjB,GAAIH,EAAU,CACZ,IAAQ1iD,EAAS0iD,EAAT1iD,KACR6iD,EAAS3nC,KAAKlb,EAAK+C,eAGrB,OADI6/C,GAAQC,EAAS3nC,KAAK0nC,EAAO7/C,eAC1B8/C,EAiB8BC,CAAOvvB,MACrCgD,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KA2DpC,SAASm6C,GAAqBlqB,GAC5B,IAAQn0B,EAAem0B,EAAfn0B,KAAM0nB,EAASyM,EAATzM,KACRyP,EAAS,CAACsU,EAAazrC,IAE7B,OADI0nB,GAAMyP,EAAOrb,KAAK,IAAK2vB,EAAa/jB,IACjCyP,EAAOjzB,KAAK,IAGrB,SAASu9C,GAAoBttB,GAC3B,IAAQpwB,EAAwFowB,EAAxFpwB,KAAM4/C,EAAkFxvB,EAAlFwvB,iBAAkBtlC,EAAgE8V,EAAhE9V,QAASulC,EAAuDzvB,EAAvDyvB,QAAShiC,EAA8CuS,EAA9CvS,GAAIiiC,EAA0C1vB,EAA1C0vB,QAASC,EAAiC3vB,EAAjC2vB,cAAqB7G,EAAY9oB,EAAI,KAC9FgD,EAAS,CAACoU,EAAQxnC,GAAO0nC,EAAakY,IACtCI,EAASH,EAAQj5B,KAAI,SAAAwO,GACzB,IAAQ6qB,EAAkB7qB,EAAlB6qB,KAAMx4C,EAAY2tB,EAAZ3tB,QACRy4C,EAAU,CAACvV,GAAUsV,IAE3B,OADIx4C,GAASy4C,EAAQnoC,KAAK,IAAD2uB,OAAKj/B,EAAQmf,IAAIkiB,IAAgB3oC,KAAK,MAAK,MAC7D+/C,EAAQ//C,KAAK,QACnBA,KAAK,MAER,GADAizB,EAAOrb,KAAKioC,GACRniC,EAEF,OADAuV,EAAOrb,KAAK,MACJuC,GACN,IAAK,OACH8Y,EAAOrb,KACL2vB,EAAa7pB,EAAGsiC,aAChBtiC,EAAGuiC,WAAWx5B,KAAI,SAAAy5B,GAAS,MAAI,CAAC/Y,EAAgB+Y,EAAU9lC,QAAS+sB,EAAgB+Y,EAAUpkD,OAAOkpB,OAAOsiB,GAAQtnC,KAAK,QAAMA,KAAK,OAErI,MACF,IAAK,QACHizB,EAAOrb,KAAKuiC,GAAqBz8B,IAMvC,OAFAuV,EAAOrb,KAAKyvB,EAAQsY,GAAUC,EAAcn5B,IAAI0zB,IAAsBn6C,KAAK,OAC3EizB,EAAOrb,KAAK2vB,EAAawR,IAClB9lB,EAAOjO,OAAOsiB,GAAQtnC,KAAK,K,muBMhNpC,SAASm5C,GAA0BgH,GACjC,GAAKA,EAAL,CACA,IACEv1B,EAQEu1B,EARFv1B,WACiBuf,EAOfgW,EAPF30B,gBACAD,EAME40B,EANF50B,SACAxN,EAKEoiC,EALFpiC,MACA5D,EAIEgmC,EAJFhmC,QACsBimC,EAGpBD,EAHFh1B,qBACKk1B,EAEHF,EAAoB,IADTG,EACXH,EADFI,YAEIC,EAAgB,GACd/mC,EAAamtB,IAAbntB,SACR+mC,EAAc5oC,KAAKyvB,EAAQltB,IAC3BqmC,EAAc5oC,KAAKuvB,EAAgBvc,IACnC,IAAI61B,EAAoBpZ,EAAQ8C,GAShC,MAR+B,WAA3B1wB,EAAS9N,eAAoD,eAAtB80C,IAAoCA,EAAoB,UACnGD,EAAc5oC,KAAK6oC,GACnBD,EAAc5oC,KAAgC,WAA3B6B,EAAS9N,eAA8Bw7B,EAAgBppB,IAC1EyiC,EAAc5oC,KAAIgyB,MAAlB4W,EAAa3W,GAASI,EAAwBkW,KAC9CK,EAAc5oC,KAAIgyB,MAAlB4W,EAAa3W,GAAS6W,GAA+BN,KACrDI,EAAc5oC,KAAKyvB,EAAQ9b,IAC3Bi1B,EAAc5oC,KAAK0uB,EAAsB,MAAOa,EAAiBkZ,IACjEG,EAAc5oC,KAAK2vB,EAAa+Y,IACzBE,EAAcx7B,OAAOsiB,GAAQtnC,KAAK,MChC3C,SAAS2gD,GAAqBC,GAC5B,GAAKA,EAAL,CACA,IAAQ/gD,EAAS+gD,EAAT/gD,KACR,MAAa,SAATA,EACK,CAACwnC,EAAQxnC,GAAO2qC,GAAUoW,EAAgBlnC,OAAOsL,OAAOsiB,GAAQtnC,KAAK,KAEvEwqC,GAAUoW,IAkBnB,SAASC,GAAkBC,GACzB,GAA4B,iBAAjBA,EAA2B,OAAOA,EAC7C,IAA8BC,EAAeD,EAArCE,qBACR,MAAO,IAAPza,OAnBF,SAAkCwa,GAChC,IACEjlD,EAIEilD,EAJFjlD,KACA+hC,EAGEkjB,EAHFljB,YACAxY,EAEE07B,EAFF17B,QACqB47B,EACnBF,EADFG,oBAQF,MANe,CACbplD,EACAkxC,GAAwBnP,EAAa,gBACrCmP,GAAwB3nB,EAAS,YACjCs7B,GAAqBM,IAETj8B,OAAOsiB,GAAQtnC,KAAK,KAMvBmhD,CAAyBJ,GAAW,KAGjD,SAASK,GAAqBC,GAC5B,IAAQvlD,EAAgDulD,EAAhDvlD,KAA+BglD,EAAiBO,EAA1CC,wBACd,MAAO,GAAP/a,OAAUzqC,EAAI,QAAAyqC,OAAOsa,GAAkBC,IChCzC,SAASS,GAAU3lB,GACjB,GAAKA,EAAL,CACA,IAAiCklB,EAAmDllB,EAA5E0lB,wBAAuC5nC,EAAqCkiB,EAArCliB,KAAMS,EAA+ByhB,EAA/BzhB,QAASta,EAAsB+7B,EAAtB/7B,KAAMkzB,EAAgB6I,EAAhB7I,YAC9D2W,EAAYrC,EAAQxnC,GAC1B,GAAkB,WAAd6pC,EAAwB,MAAO,QAAPnD,OAAesa,GAAkBC,IAC7D,GAAkB,cAAdpX,EAA2B,CAC7B,IAAI8X,EAAW,GAAHjb,OAAMc,EAAQxnC,GAAK,KAAA0mC,OAAIc,EAAQltB,IACrCsE,EAAO+rB,GAAU9wB,IAAS,GAEhC,OADIqZ,IAAayuB,EAAW,GAAHjb,OAAMib,EAAQ,KAAAjb,OAAI9nB,EAAKze,KAAK,MAAK,MACnDwhD,EAET,MAAM,IAAI1jD,MAAM,sBCAlB,SAAS2jD,GAAuB/mB,GAC9B,IAAKA,IAAWA,EAAOgnB,MAAO,MAAO,GACrC,IAAQvnC,EAAYugB,EAAOgnB,MAAnBvnC,QACR,GAAIA,EAAS,OAAOktB,EAAQltB,GAG5B,IAFA,IAAAwnC,EAA8BjnB,EAAOgnB,MAA7BE,EAASD,EAATC,UAAW/iD,EAAM8iD,EAAN9iD,OACbo0B,EAAS,GACN13B,EAAI,EAAGA,EAAIqmD,EAAWrmD,IAC7B03B,EAAOrb,KAAK,KACR/Y,GAAUA,EAAOtD,IAAI03B,EAAOrb,KAAK2vB,EAAa1oC,EAAOtD,KACzD03B,EAAOrb,KAAK,KAEd,OAAOqb,EAAOjzB,KAAK,IAGrB,SAAS6hD,GAAUnoC,GAIjB,IAHA,IAAgBooC,EAA+FpoC,EAAvGghB,OAAuBqnB,EAAgFroC,EAAtFA,KAAkBS,EAAoET,EAApES,QAAS4R,EAA2DrS,EAA3DqS,OAAYwI,EAA+C7a,EAAnDvS,GAAWuQ,EAAwCgC,EAAxChC,OAAqBsqC,EAAmBtoC,EAAhCqZ,YAC3E3Y,EAAS6nC,GAAkB,CAAEvoC,KAAMqoC,EAAYrqC,WAC7Cub,EAAS,GACN13B,EAAI,EAAGy3B,EAAM8uB,EAAQjjD,OAAQtD,EAAIy3B,IAAOz3B,EAAG,CAClD,IAAMm/B,EAASonB,EAAQvmD,GACC2mD,EAA0GxnB,EAA1HynB,eAA+BtjD,EAA2F67B,EAA3F77B,OAAQwX,EAAmFqkB,EAAnFrkB,SAAU0c,EAAyE2H,EAAzE3H,YAAa2Q,EAA4DhJ,EAA5DgJ,OAAQ3I,EAAoDL,EAApDK,MAAeqnB,EAAqC1nB,EAA7C5b,OAA8BujC,EAAe3nB,EAArBhhB,KACzG+sB,EAAM4b,EAAa7X,GAAU6X,GAAc,GACjC,MAAVxjD,IAAgB4nC,EAAM1L,EAAQ,GAAHwL,OAAM1nC,EAAM,MAAA0nC,OAAKxL,GAAUl8B,GACtDk0B,IAAa0T,EAAM,IAAHF,OAAOE,EAAG,MAC1Byb,IAAezb,EAAM,IAAHF,OAAOE,EAAG,MAC5B2b,GAAkBA,EAAevjD,SAAQ4nC,GAAO,IAAJF,OAAQ6b,EAAe37B,IAAI8gB,GAAcvnC,KAAK,OAC9F,IAAIsiD,EAAa,KACbxjC,EAAS,GACPyjC,EAAe,GACN,OAAXx2B,IACQ,IAANxwB,IAAS6e,EAAS,GAAHmsB,OAAMc,EAAQltB,GAAQ,KAAAosB,OAAInsB,IAC7C0E,EAAS,IACTwjC,EAAa,IAAH/b,OAAOxa,EAAOtsB,cAAa,MAE7B,IAANlE,GAASgnD,EAAa3qC,KAAKwC,GAC/B,IAAMooC,EAAiBf,GAAuB/mB,GAC9C6nB,EAAa3qC,KAAK0qC,EAAY5e,EAAQrtB,EAAUqtB,EAAQ8e,EAAgB/b,EAAK3nB,GAC7EmU,EAAOrb,KAAK2qC,EAAav9B,OAAOsiB,GAAQtnC,KAAK,KAE3Cu0B,GAAOtB,EAAOrb,KAAK,OAAD2uB,OAAQY,EAAgB5S,KAC9C,IAAMpK,EAAM8I,EAAOjO,OAAOsiB,GAAQtnC,KAAK,IACvC,OAAOgiD,EAAiB,IAAHzb,OAAOpc,EAAG,KAAMA,EA2CvC,SAAS4rB,GAAUr8B,GACjB,IAAQ+E,EAAoG/E,EAApG+E,KAAMgkC,EAA8F/oC,EAA9F+oC,YAAa3mD,EAAiF4d,EAAjF5d,KAAM4mD,EAA2EhpC,EAA3EgpC,iBAAkB3vB,EAAyDrZ,EAAzDqZ,YAA2B4vB,EAA8BjpC,EAA5CkpC,aAA2BhnB,EAAiBliB,EAAjBkiB,KAAM9c,EAAWpF,EAAXoF,OAC3F+jC,EAAUtB,GAAU3lB,GACpBknB,EATR,SAA0B7yB,GACxB,IAAKA,EAAM,MAAO,GAClB,IAAQpwB,EAA2BowB,EAA3BpwB,KAAMsa,EAAqB8V,EAArB9V,QAASkL,EAAY4K,EAAZ5K,QACvB,MAAO,CAACgiB,EAAQxnC,GAAOwnC,EAAQltB,GAAU,IAAFosB,OAAMyG,GAAwB3nB,EAAS,YAAW,MAAKL,OAAOsiB,GAAQtnC,KAAK,KAM3F+iD,CAAiBJ,GAClCK,EAAYxY,GAAU1rB,GACtBmkC,EAAW,CAAC1b,EAAazrC,EAAK0d,QAAS1d,EAAKA,KAAK2qB,IAAI8gB,GAAcvnC,KAAK,MAAMglB,OAAOsiB,GAAQtnC,KAAK,KACxG,IAAKye,EAAM,MAAO,CAACwkC,EAAUH,EAAgBD,GAAS79B,OAAOsiB,GAAQtnC,KAAK,KAC1E,IAAIkjD,EAAYxpC,EAAKwpC,WAAa,KACR,SAAtB7b,EAAQ4b,KAAsBC,EAAY,KAC9C,IAAIzc,EAAM,CAACwc,GACXxc,EAAI7uB,MAA0B,IAArB8qC,EAA6B,IAAM,KAC5C,IAAMS,EAAW3Y,GAAU/rB,GAC3B,GAAI3f,MAAMkkB,QAAQkgC,GAAY,CAE5B,IADA,IAAI5O,EAAU6O,EAAS,GACd5nD,EAAI,EAAGy3B,EAAMmwB,EAAStkD,OAAQtD,EAAIy3B,IAAOz3B,EAChD+4C,EAAU,CAACA,EAAS6O,EAAS5nD,IAAIyE,KAAK,IAADumC,OAAKiE,GAAU0Y,EAAU3nD,EAAI,IAAG,MAEvEkrC,EAAI7uB,KAAK08B,QAET7N,EAAI7uB,KAAKurC,EAASnjD,KAAKkjD,IAKzB,OAHyB,IAArBR,GAA4Bjc,EAAI7uB,KAAK,KACzC6uB,EAAI7uB,KAAKwrC,GAAgBX,IACzBhc,EAAM,CAACA,EAAIzmC,KAAK,IAAKgjD,GAAWh+B,OAAOsiB,GAAQtnC,KAAK,KAC7C,CAAC+yB,EAAc,IAAHwT,OAAOE,EAAG,KAAMA,EAAKqc,EAAgBD,GAAS79B,OAAOsiB,GAAQtnC,KAAK,K,wuBVjGvF,SAAS4zC,GAAsBvqB,GAC7B,IAAKA,EAAY,MAAO,GACxB,IhBgD4B6gB,EACtBmZ,EACElpC,EAAS4D,EgBlDTyL,EAAaH,EAAbG,SACR,OAAQA,GACN,IAAK,SACH,OAAOwtB,GAAsB3tB,GAC/B,IAAK,QACH,OhB4CEg6B,EAAW,GACTlpC,GAFoB+vB,EgB3CI7gB,GhB6CxBlP,QAAS4D,EAAUmsB,EAAVnsB,MACjBslC,EAASzrC,KAAKyvB,EAAQltB,IACtBkpC,EAASzrC,KAAKmG,GACdslC,EAASzrC,KAAIgyB,MAAbyZ,EAAQxZ,EAASI,EAAwBC,KAClCmZ,EAASr+B,OAAOsiB,GAAQtnC,KAAK,KgBhDlC,IAAK,aACH,OAAOm5C,GAA0B9vB,GACnC,IAAK,WACH,MAAO,CAACge,EAAQhe,EAAWjP,QAASowB,GAAUnhB,EAAW7sB,QAAQwoB,OAAOsiB,GAAQtnC,KAAK,KACvF,QACE,MAAM,IAAIlC,MAAM,sBAADyoC,OAAuB/c,EAAQ,WAIpD,SAAS85B,GAAkBrzB,GACzB,IACMgD,EAAS,GACf,OAFoBhD,EAAZ9V,SAGN,IAAK,OACH8Y,EAAOrb,KAAK,OAAQ,IAAF2uB,OAAMgB,EAAatX,EAAKrX,MAAK,KAAK,KAAM,IAAF2tB,OAAMgB,EAAatX,EAAKjU,IAAG,MACnF,MACF,IAAK,KACHiX,EAAOrb,KAAK,KAAM,IAAF2uB,OAAMiE,GAAUva,EAAI,IAAI,MACxC,MACF,IAAK,OACHgD,EAAOrb,KAAK,OAAQ,YAAF2uB,OAAcgB,EAAatX,EAAKszB,SAAQ,gBAAAhd,OAAegB,EAAatX,EAAKuzB,WAAU,MAGzG,OAAOvwB,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KAGpC,SAASu1C,GAA4BtlB,GACnC,IAAQ9V,EAAsD8V,EAAtD9V,QAASjT,EAA6C+oB,EAA7C/oB,MAAmBu8C,EAA0BxzB,EAAtCyzB,WAAuBzL,EAAehoB,EAAfgoB,WACzChlB,EAAS,CAACoU,EAAQltB,GAAUu1B,GAAWxoC,GAAQmgC,EAAQoc,EAAUtpC,SAAUmpC,GAAkBG,EAAU/pC,OAE7G,OADIu+B,GAAYhlB,EAAOrb,KAAK,aAAc2vB,EAAa0Q,IAChDhlB,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KAuQpC,SAASi3C,GAA8BhnB,GACrC,OAAIA,EAAK5Z,SAAiB0xB,EAAc9X,GACjC,CAACkX,EAAgBlX,EAAKtX,IAAKwuB,EAAgBlX,EAAKzW,QAAS2tB,EAAgBlX,EAAK/oB,QAAQ8d,OAAOsiB,GAAQtnC,KAAK,KAYnH,SAASm3C,GAA0BlnB,GACjC,IAAQpwB,EAASowB,EAATpwB,KACR,OAAQA,GACN,IAAK,KACH,MAAO,CAACwnC,EAAQxnC,GAAOowB,EAAKlE,OAAQ2pB,GAAWzlB,EAAKosB,SAAUhV,EAAQpX,EAAK0zB,OAAQnN,GAAcvmB,EAAKvW,MAAO2tB,EAAQpX,EAAK/wB,KAAM+wB,EAAKlE,QAAQ/G,OAAOsiB,GAAQtnC,KAAK,KACnK,IAAK,MACH,MAAO,CAACqnC,EAAQxnC,GAAOowB,EAAK2zB,UAAWvc,EAAQpX,EAAKzzB,OAASyzB,EAAKzzB,MAAM4d,QAAS6V,EAAKzzB,OAASyzB,EAAKzzB,MAAMkd,KAAK+M,IAAI+jB,IAAWxqC,KAAK,OAAOglB,OAAOsiB,GAAQtnC,KAAK,KAChK,IAAK,SACH,MAAO,CAACqnC,EAAQxnC,GAAO2qC,GAAUva,EAAKvW,OAAOsL,OAAOsiB,GAAQtnC,KAAK,KACnE,QACE,OAAOwqC,GAAUva,IAYvB,SAASskB,GAAqBtkB,GAC5B,IAAQpwB,EAAwBowB,EAAxBpwB,KAAMksB,EAAkBkE,EAAlBlE,OAAQvvB,EAAUyzB,EAAVzzB,MAChB2tB,EAAM,CAACkd,EAAQxnC,GAAOksB,GAC5B,OAAQsb,EAAQxnC,IACd,IAAK,QACHsqB,EAAIvS,KAAK,CAACuvB,EAAgB3qC,EAAMgd,QAAShd,EAAMV,MAAMkpB,OAAOsiB,GAAQtnC,KAAK,MACzE,MACF,IAAK,QACL,IAAK,SACHmqB,EAAIvS,KAAKmwB,EAAcvrC,IACvB,MACF,QACE2tB,EAAIvS,KAAK4yB,GAAUhuC,IAGvB,OAAO2tB,EAAInF,OAAOsiB,GAAQtnC,KAAK,KFlXjC,SAAS6jD,GAAmB/+B,EAAQpL,GAClC,OAAQoL,GACN,IAAK,MACH,IAAMqF,EAAMzQ,EAAK+M,KAAI,SAAAomB,GAAA,IAAG/wC,EAAI+wC,EAAJ/wC,KAAMU,EAAKqwC,EAALrwC,MAAK,MAAO,CAAC,YAAa+qC,EAAazrC,GAAO,SAAUurC,EAAQ7qC,EAAMqD,MAAO,IAAF0mC,OAAMgB,EAAa/qC,EAAMkd,MAAK,MAAK1Z,KAAK,QAAMA,KAAK,MAC5J,MAAO,IAAPumC,OAAWpc,EAAG,KAChB,QACE,OAAOuiB,GAAahzB,IAG1B,SAASw5B,GAAex5B,GACtB,IAAKA,EAAM,MAAO,GAClB,IACEoL,EASEpL,EATFoL,OACoB6vB,EAQlBj7B,EARFyC,mBACeu4B,EAObh7B,EAPFwC,cAA4B/B,EAO1BT,EAP0BS,QACjB2pC,EAMTpqC,EANF05B,UACY2Q,EAKVrqC,EALF+T,WACArT,EAIEV,EAJFU,OACAoP,EAGE9P,EAHF8P,SACAuC,EAEErS,EAFFqS,OACAjN,EACEpF,EADFoF,OAEEhjB,EAAO,GACPua,EAAW,GACf,OAAQmT,GACN,IAAK,SACHnT,EAAW,CAAC2gC,GAAsBt9B,IAClC,MACF,IAAK,QACHrD,EAAW4zB,EAAwBvwB,GACnC5d,EAAO4d,EAAK8P,GACZ,MACF,IAAK,QACL,IAAK,SACH1tB,EAAOqrC,EAAgBztB,EAAK8P,IAC5B,MACF,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,OACH1tB,EAAOqrC,EAAgBztB,EAAK8P,IAC5B,MACF,IAAK,YACL,IAAK,OACL,IAAK,eACH1tB,EAAO,CAACiwB,EAAQsb,EAAQ3tB,EAAK8P,KAAYxE,OAAOsiB,GAAQtnC,KAAK,KAC7D,MACF,IAAK,aACHlE,EAAOqrC,EAAgBztB,EAAK8P,IAC5BnT,EAAW,CAACu9B,GAAsBe,IAClC,MACF,IAAK,YACHt+B,EAAW,CAACwtC,GAAmB/+B,EAAQpL,EAAKouB,aAC5C,MACF,IAAK,MACHhsC,EAAOqrC,EAAgBztB,EAAK8P,IAC5B,MACF,QACE1tB,EAAO,CAACiwB,EAAQrS,EAAK8P,IAAWxE,QAAO,SAAAgiB,GAAG,OAAY,OAARA,KAAchnC,KAAK,KAGrE,IAAMgkD,EAAa,CACjB3c,EAAQviB,GACRuiB,EAAQltB,GACRktB,EAAQqN,GACRrN,EAAQyc,GACRC,GAAapb,GAAeob,GAC5B1c,EAAQjtB,GACRte,GAAQA,EAAKmoD,OACb5tC,EAAS2O,OAAOsiB,GAAQtnC,KAAK,MAK/B,OAHI8e,GACFklC,EAAWpsC,KAAKyvB,EAAQvoB,EAAO3E,SAAU2E,EAAOpF,MAAQivB,GAAe7pB,EAAOpF,OAEzEsqC,EAAWh/B,OAAOsiB,GAAQtnC,KAAK,KAuBxC,SAASizC,GAAeiR,GACtB,IAAMC,EAAaD,EAAG,SAAY,CAAC7c,EAAQ6c,EAAG,QAAS/pC,SAAUqwB,GAAU0Z,EAAG,QAAS1nD,QAAQwD,KAAK,KACpG,MAAO,CAACqnC,EAAQ6c,EAAIxnD,MAAOwnD,EAAIpoD,KAAMisC,EAAcmc,EAAIrkD,MAAOskD,GAAYn/B,OAAOsiB,GAAQtnC,KAAK,K,uOa1FhG,SAASokD,GAAsB1qC,GAC7B,IACa45B,EAET55B,EAFF2qC,UAGF,OAAQhd,EADJ3tB,EADF7Z,OAGA,IAAK,SACH,MAAO,IAAP0mC,OAAWmG,GAAa4G,GAAS,KACnC,IAAK,QACH,OAtBN,SAA4B55B,GAC1B,IACc4qC,EAIV5qC,EAJF6qC,WACAC,EAGE9qC,EAHF8qC,SACWlR,EAET55B,EAFF2qC,UACAtxB,EACErZ,EADFqZ,YAEF,IAAKugB,EAAU,MAAO,IAAP/M,OAAWmG,GAAa4X,GAAU,KACjD,IAAMrxB,EAASn0B,MAAMkkB,QAAQswB,GAAYA,EAAS7sB,KAAI,SAAAhf,GAAG,UAAA8+B,OAAQmG,GAAajlC,GAAI,QAAKud,OAAOsiB,GAAQtnC,KAAK,MAAQwqC,GAAU8I,GAC7H,OAAIkR,EAAiB,IAAPje,OAAWtT,EAAM,KACxBF,EAAc,IAAHwT,OAAOtT,EAAM,KAAMA,EAY1BwxB,CAAmB/qC,GAC5B,QACE,MAAO,IAIb,SAASgrC,GAAqBhrC,GAC5B,IAAQ2P,EAAwB3P,EAAxB2P,WACF4J,EAAS,CAACoU,EADgB3tB,EAAZS,UAOpB,OALIkP,GAAoC,WAAtBsd,GAAOtd,KACvB4J,EAAOp0B,OAAS,EAChBo0B,EAAOrb,KAAKowB,EAAqB3e,KAEnC4J,EAAOrb,KAAKwsC,GAAsB1qC,IAC3BuZ,EAAOjO,OAAOsiB,GAAQtnC,KAAK,I,uOCtBpC,IAAM2kD,GAAqB,CACzB7R,MAAoBI,GACpB0R,UChBF,SAAmBlrC,GAEjB,IAAQ+E,EAA6C/E,EAA7C+E,KAAMuG,EAAuCtL,EAAvCsL,OAAQ4W,EAA+BliB,EAA/BkiB,KAAMipB,EAAyBnrC,EAAzBmrC,qBACxBpe,EAAM+D,GAAU/rB,EAAK/E,MACzB+sB,EAAM3nC,MAAMkkB,QAAQyjB,GAAOA,EAAIzmC,KAAK,MAAQymC,EAC5C,IAAMqe,EAASprC,EAAK5d,KACd+mD,EAAUtB,GAAU3lB,GAEtBnd,EAAKmT,WAAU6U,EAAM,CAAC,WAAYA,GAAKzmC,KADzB,MAEdye,EAAKykC,WAAazkC,EAAKykC,UAAU6B,YAAWte,EAAM,CAACA,EAAKc,EAAa9oB,EAAKykC,UAAU6B,YAAY/kD,KAAK,GAADumC,OAAI9nB,EAAKykC,UAAUn3B,OAAM,OAC7HtN,EAAKykC,WAAazkC,EAAKykC,UAAUxpC,OAAM+sB,EAAM,CAACA,EAAK+D,GAAU/rB,EAAKykC,UAAUxpC,OAAO1Z,KAAK,MACxFye,EAAK4G,UAASohB,EAAM,CAACA,EAAKuG,GAAwBvuB,EAAK4G,QAAS,aAAarlB,KAAK,MAClFye,EAAKykC,WAAazkC,EAAKykC,UAAU1mD,QAAOiqC,EAAM,CAACA,EAAKY,EAAQ5oB,EAAKykC,UAAU/oC,SAAUotB,EAAa9oB,EAAKykC,UAAU1mD,QAAQwoB,OAAOsiB,GAAQtnC,KAAK,MACjJ,IAAM2iD,EAAckC,EAAuB,iBAAHte,OAAoByG,GAAwB6X,EAAsB,YAAW,KAAM,GACrHG,EAAYhgC,EAAS,iBAAHuhB,OAAoBiE,GAAUxlB,EAAOnH,OAAM,KAAM,GACzE,MAAO,CAAC,GAAD0oB,OAAIue,EAAM,KAAAve,OAAIE,EAAG,KAAKkc,EAAaE,EAASmC,GAAWhgC,OAAOsiB,GAAQtnC,KAAK,MDElFilD,UFhBF,SAA2Bh1B,GACzB,IAAQxR,EAAqBwR,EAArBxR,KAAM5e,EAAeowB,EAAfpwB,KAAM+7B,EAAS3L,EAAT2L,KACZliB,EAAiB+E,EAAjB/E,KAAMoY,EAAWrT,EAAXqT,OACV3H,EAAM,GAAHoc,OAAMc,EAAQxnC,GAAK,KAAA0mC,OAAIiE,GAAU9wB,IAIxC,OAHIoY,IAAQ3H,EAAM,GAAHoc,OAAMpc,EAAG,YAAAoc,OAAWc,EAAQvV,EAAO1X,QAAO,KAAAmsB,OAAIiE,GAAU1Y,EAAOpY,QAGvE,CAFPyQ,EAAM,GAAHoc,OAAMpc,EAAG,KACIo3B,GAAU3lB,IACJ5W,OAAOsiB,GAAQtnC,KAAK,MEU1CklD,YJ8BF,SAAyBxrC,GACvB,IAAQkiB,EAASliB,EAATkiB,KAGR,MAAO,CAZT,SAA2BliB,GACzB,IAAQ+E,EAAsD/E,EAAtD+E,KAAM3iB,EAAgD4d,EAAhD5d,KAAIqpD,EAA4CzrC,EAA1C0rC,sBAAc,IAAAD,EAAG,GAAEA,EAAAE,EAAuB3rC,EAArBwpC,iBAAS,IAAAmC,EAAG,KAAIA,EAIzD,MADe,CAACvpD,EAAM,IAFL2iB,EAAO+rB,GAAU/rB,GAAMze,KAAKkjD,GAAa,GAErB,IAAKkC,GAAkB,IAAKA,GACnDpgC,OAAOsiB,GAAQtnC,KAAK,IAKtBslD,CAAkB5rC,GACd6nC,GAAU3lB,IACJ5W,OAAOsiB,GAAQtnC,KAAK,MIjC1C,MAAoB0kD,GACpBa,OAAoBxT,GACpByT,YAAoB/a,EACpBgb,KExBF,SAAmB/rC,GACjB,IAAMoc,EAAM,CAAC,QACC4vB,EAA4ChsC,EAAlD+E,KAAwBknC,EAA0BjsC,EAAhCA,KAAgBqZ,EAAgBrZ,EAAhBqZ,YACtC4yB,GAAU7vB,EAAIle,KAAK4yB,GAAUmb,IACjC,IAAK,IAAIpqD,EAAI,EAAGy3B,EAAM0yB,EAAW7mD,OAAQtD,EAAIy3B,IAAOz3B,EAClDu6B,EAAIle,KAAK8tC,EAAWnqD,GAAGsE,KAAKJ,eACxBimD,EAAWnqD,GAAGqjB,OAChBkX,EAAIle,KAAK4yB,GAAUkb,EAAWnqD,GAAGqjB,OACjCkX,EAAIle,KAAK,SAEXke,EAAIle,KAAK4yB,GAAUkb,EAAWnqD,GAAG03B,SAGnC,OADA6C,EAAIle,KAAK,OACFmb,EAAc,IAAHwT,OAAOzQ,EAAI91B,KAAK,KAAI,KAAM81B,EAAI91B,KAAK,MFYrD4lD,KAAoB/D,GACpBt5B,QAAoBif,GACpBqe,WAAoBld,GACpBmd,kBAAoB9O,GACpByF,SAAoB1U,EACpBge,QF2BF,SAAyB91B,GACvB,IAAQxR,EAAewR,EAAfxR,KAAM5e,EAASowB,EAATpwB,KACNsoC,EAAuC1pB,EAAvC0pB,MAAkB6d,EAAqBvnC,EAAhCwnC,UAAqBC,EAAWznC,EAAXynC,OAC9BjzB,EAAS,CAAC,GAADsT,OAAIc,EAAQxnC,GAAK,KAAA0mC,OAAIc,EAAQc,IAAU,OAAQd,EAAQ2e,GAAWxb,GAAU0b,IAC3F,MAAO,GAAP3f,OAAUtT,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KAAI,ME9BzCmmD,QFgDF,SAAyBl2B,GACvB,IAAQxR,EAAewR,EAAfxR,KAAM5e,EAASowB,EAATpwB,KAERumD,EADO,CAAC,QAAS,OAAQ,QAAS,YAAa,QAChC3/B,KAAI,SAAA3pB,GAAG,OAlB9B,SAAyBonD,GACvB,IAAKA,EAAK,MAAO,GACjB,IAAQrkD,EAAwBqkD,EAAxBrkD,KAAMksB,EAAkBm4B,EAAlBn4B,OAAQvvB,EAAU0nD,EAAV1nD,MAEtB,MADe,CAAC6qC,EAAQxnC,GAAOksB,EAAQye,GAAUhuC,IACnCwoB,OAAOsiB,GAAQtnC,KAAK,KAcFqmD,CAAgB5nC,EAAK3hB,OAAOkoB,OAAOsiB,GAAQtnC,KAAK,MAChF,MAAO,GAAPumC,OAAUc,EAAQxnC,GAAK,KAAA0mC,OAAI6f,EAAO,MEnDlCE,gBGmIF,SAA6B5sC,GAC3B,IAAQ6sC,EAAsC7sC,EAAtC6sC,QAASp/C,EAA6BuS,EAA7BvS,GAAIG,EAAyBoS,EAAzBpS,QAASonB,EAAgBhV,EAAhBgV,MAAOhyB,EAASgd,EAAThd,KAC/B8pD,EAAY,CAACnf,EAAQ3Y,GAAQ,IAAF6X,OAAMj/B,EAAQmf,KAAI,SAAAhf,GAAG,OAAIkhC,GAAelhC,MAAMzH,KAAK,MAAK,MAAKA,KAAK,KAC7FymD,EAAc,CAACpf,EAAQkf,GAAU,CAAC,IAAK/b,GAAU9wB,EAAKA,MAAOhd,GAAQ,IAAJ6pC,OAAQgB,EAAa7qC,IAAS,KAAKsoB,OAAOsiB,GAAQtnC,KAAK,KAAKA,KAAK,KACxI,MAAO,CAACwmD,EAAWC,EAAaC,GAAQv/C,IAAK6d,OAAOsiB,GAAQtnC,KAAK,MHtIjE2mD,SAAoB5Q,GACpB6Q,OFiGF,SAAqB32B,GACnB,IAAQxR,EAAewR,EAAfxR,KAAM/E,EAASuW,EAATvW,KACNld,EAAuBiiB,EAAvBjiB,MAAOu2B,EAAgBtU,EAAhBsU,YACTowB,EAAW3mD,EAAMiqB,IAAI+jB,IAAWxqC,KAAK,MAC3C,MAAO,CAAC+yB,EAAc,IAAHwT,OAAO4c,EAAQ,KAAMA,EAAU,KAAM3Y,GAAU9wB,IAAO1Z,KAAK,MEpG9Ei8C,OAAoBvG,GACpBmR,SAAoBpY,GACpBqY,KIpCF,SAAuBptC,GACrB,IAAQS,EAAiCT,EAAjCS,QAAoBm5B,EAAa55B,EAAxB2qC,UAEjB,MADe,CAAChd,EAAQltB,GAAUm5B,EAAS7sB,KAAI,SAAAk/B,GAAQ,OAAInb,GAAUmb,MAAW3lD,KAAK,OAAOA,KAAK,MJmCjG+mD,gBFiCF,SAA4BC,GAC1B,IAAQttC,EAASstC,EAATttC,KACA5c,EAAmB4c,EAAnB5c,IAAKN,EAAckd,EAAdld,MAAOkhB,EAAOhE,EAAPgE,GACduV,EAAS,CAACuX,GAAU1tC,GAAM,QAAS0tC,GAAUhuC,IAEnD,OADIkhB,GAAIuV,EAAOrb,KAAK,KAAM,OAAQ4yB,GAAU9sB,IACrCuV,EAAOjO,OAAOsiB,GAAQtnC,KAAK,MErClCinD,aIhCF,SAA8Bh3B,GAE5B,MAAO,CADkBA,EAAjBlE,OACQye,GADSva,EAATvW,OACiB1Z,KAAK,KJ+BtCknD,SF8CF,SAAsBF,GACpB,IAAAG,EAA+BH,EAAQxqD,MACvC,MAAO,CADK2qD,EAAJrrD,KAAYqrD,EAANp7B,OACQye,GADI2c,EAAJztC,OACiBsL,OAAOsiB,GAAQtnC,KAAK,ME/C3Dq9C,KAAoBnL,GACpBkV,OAAoB1C,GACpB2C,UFiFF,SAA2B3tC,GACzB,IAAQvS,EAAmBuS,EAAnBvS,GAAIrL,EAAe4d,EAAf5d,KAAM2iB,EAAS/E,EAAT+E,KACZwkC,EAAW,CAAC1b,EAAazrC,EAAK0d,QAAS1d,EAAKA,KAAK2qB,IAAI8gB,GAAcvnC,KAAK,MAAMglB,OAAOsiB,GAAQtnC,KAAK,KAExG,MADe,CAAC,GAADumC,OAAI0c,EAAQ,KAAA1c,OAAIiE,GAAU/rB,GAAMze,KAAK,MAAK,KAAK,KAAM+1C,GAAU5uC,IAChEnH,KAAK,MEpFnBoiB,OAAoBwqB,GACpB0a,OAAoB3Y,GACpB,OJTF,SAAkC4Y,GAEhC,OADiBA,EAAT7tC,KACI+M,IAAI26B,IAAsBphD,KAAK,QIU7C,SAASurC,GAAS7xB,GAChB,IAAA8tC,EAAwD9tC,EAAhDU,cAAM,IAAAotC,EAAG,IAAGA,EAAE1rD,EAAkC4d,EAAlC5d,KAAM2nC,EAA4B/pB,EAA5B+pB,QAASC,EAAmBhqB,EAAnBgqB,OAAQ5kB,EAAWpF,EAAXoF,OACvCkoB,EAAM,GACNygB,EAAUhkB,GAAWA,EAAQ5kC,OAAS,EAAI,GAAH0nC,OAAMzqC,EAAI,KAAAyqC,OAAI9C,EAAQzjC,KAAK,MAASlE,EAC7Em3B,EAAS,GAAHsT,OAAMnsB,GAAU,IAAEmsB,OAAGkhB,GAG/B,OAFI3oC,IAAQmU,GAAUnU,GACtBkoB,EAAIpvB,KAAKqb,GACF,CAACyQ,EAAQsD,EAAIhnC,KAAK,KAAM0jC,GAAQ1e,OAAOsiB,GAAQtnC,KAAK,IAK7D,SAASwqC,GAAUkd,GACjB,GAAKA,EAAL,CACA,IAAMhuC,EAAOguC,EACb,GAAIA,EAAW7uC,IAAK,CAClB,IAAQA,EAAQa,EAARb,IACR8uC,QAAQC,eAAeluC,EAAMb,GAC7B,IAAK,IAALgvC,EAAA,EAAAC,EAAkB7rD,OAAO4pC,KAAKhtB,GAAIgvC,EAAAC,EAAAjpD,OAAAgpD,IAAE,CAA/B,IAAM/qD,EAAGgrD,EAAAD,GACZnuC,EAAK5c,GAAO+b,EAAI/b,IAGpB,IAAQ+C,EAAS6Z,EAAT7Z,KACR,MAAa,SAATA,EAAwB2qC,GAAU9wB,EAAKA,MACpCirC,GAAmB9kD,GAAQ8kD,GAAmB9kD,GAAM6Z,GAAQ6tB,EAAa7tB,IAUlF,SAASozB,GAAewG,GACtB,OAAKA,GACAx0C,MAAMkkB,QAAQswB,KAAWA,EAAW,CAACA,IACnCA,EAAS7sB,IAAI+jB,KAFE,GA6BxB,SAASwC,GAAwBtzB,EAAMU,GACrC,IAAKtb,MAAMkkB,QAAQtJ,GAAO,MAAO,GACjC,IAAIquC,EAAc,GACZC,EAAc3gB,EAAQjtB,GAC5B,OAAQ4tC,GACN,IAAK,WACHD,EAAcruC,EAAK+M,KAAI,SAAAiL,GAAI,MAAI,CAAC8Y,GAAU9Y,EAAKhY,MAAOgY,EAAK7xB,MAAQ,MAAOwnC,EAAQ3V,EAAKu2B,QAAQjjC,OAAOsiB,GAAQtnC,KAAK,QACnH,MACF,IAAK,eAGL,QACE+nD,EAAcruC,EAAK+M,KAAI,SAAAiL,GAAI,OAAI8Y,GAAU9Y,EAAKhY,SAGlD,OAAO8sB,EAAUwhB,EAAaD,EAAY/nD,KAAK,OK/HjD,SAASwnC,GAAavX,GACpB,GAAKA,EAAL,CACA,IAAQ9V,EAA8C8V,EAA9C9V,QAAO+tC,EAAuCj4B,EAArC1H,QAAWzsB,EAAIosD,EAAJpsD,KAAMiwB,EAAMm8B,EAANn8B,OAAQvvB,EAAK0rD,EAAL1rD,MACpCy2B,EAAS,CAACoU,EAAQltB,IAKxB,OAJK3d,GAAOy2B,EAAOrb,KAAKmU,GACxBkH,EAAOrb,KAAK9Y,MAAMkkB,QAAQlnB,GAAQA,EAAK2qB,IAAI8gB,GAAcvnC,KAAK,KAAOunC,EAAazrC,IAC9EU,GAAOy2B,EAAOrb,KAAKmU,GACvBkH,EAAOrb,KAAK4yB,GAAUhuC,IACfy2B,EAAOjO,OAAOsiB,GAAQtnC,KAAK,M,+8BFQpC,SAASiiD,GAAkBrrC,EAAQwwB,GACjC,GAAsB,iBAAXxwB,EAAqB,OAAOuwB,EAAgBvwB,EAAQwwB,GAC/D,IAAQ1tB,EAAyB9C,EAAzB8C,KAAMhC,EAAmBd,EAAnBc,OAAQoH,EAAWlI,EAAXkI,OAChBqpC,EAAazwC,GAAUA,EAAO+O,KAAI,SAAA2hC,GAAU,MAAI,CAAC,IAAKA,EAAWtsD,KAAM,GAAFyqC,OAAK6hB,EAAWtsD,KAAO,IAAM,IAAMyrC,EAAa6gB,EAAW5rD,OAAQ,GAAF+pC,OAAK6hB,EAAWtsD,KAAO,IAAM,IAAM,KAAKkpB,OAAOsiB,GAAQtnC,KAAK,OAAKA,KAAK,IAElN,MADe,CAACwqC,GAAU9wB,GAAOyuC,EAAYrpC,GAAQkG,OAAOsiB,GAAQtnC,KAAK,IAI3E,SAASojD,GAAgBiF,GACvB,IAAKA,GAA4C,IAA1BA,EAAexpD,OAAc,MAAO,GAC3D,IACuCuuC,EADjCna,EAAS,GAAEoa,E,ioBAAAC,CACQ+a,GAAc,IAAvC,IAAAhb,EAAA/vC,MAAA8vC,EAAAC,EAAArwC,KAAAuwC,MAAyC,KAA9B+a,EAAUlb,EAAA5wC,MACf+rD,EAAgBD,EAAW9D,SAAW,IAAHje,OAAOgB,EAAa+gB,EAAWvqC,OAAM,QAAAwoB,OAAS+hB,EAAWE,UAAQjiB,OAAGgB,EAAa+gB,EAAWvqC,QAC/HuqC,EAAWprD,WAAUqrD,EAAgB,GAAHhiB,OAAMgiB,EAAa,KAAAhiB,OAAIgB,EAAa+gB,EAAWprD,YACrF+1B,EAAOrb,KAAK2wC,IACb,MAAA9a,GAAAJ,EAAA9zB,EAAAk0B,GAAA,QAAAJ,EAAAzpB,IACD,OAAOqP,EAAOjzB,KAAK,IAErB,SAAS2oC,GAAejvB,GACtB,IACE+oC,EAEE/oC,EAFF+oC,YAAat7C,EAEXuS,EAFWvS,GAAIyP,EAEf8C,EAFe9C,OAAQ2R,EAEvB7O,EAFuB6O,QAAS5P,EAEhCe,EAFgCf,GAAIyuB,EAEpC1tB,EAFoC0tB,OAAMqhB,EAE1C/uC,EAF4CgvC,iBAAS,IAAAD,EAAG,GAAEA,EAAEnoD,EAE5DoZ,EAF4DpZ,QAASkZ,EAErEE,EAFqEF,OAAQtS,EAE7EwS,EAF6ExS,MAAO6rB,EAEpFrZ,EAFoFqZ,YACtFjU,EACEpF,EADFoF,OAAQ0J,EACN9O,EADM8O,SAAQmgC,EACdjvC,EADgBkvC,iBAAS,IAAAD,EAAG,GAAEA,EAE9BliB,EAAiB,MAAX7vB,EAAiB,IAAMqrC,GAAkBrrC,EAAQwwB,GACrDhtB,EAAS,CAACzB,EAAIa,EAAQtS,GAAO8d,OAAOsiB,GAAQ7gB,KAAI,SAAAugB,GAAG,SAAAT,OAAsB,iBAARS,EAAmBG,EAAgBH,GAAOwD,GAAUxD,OACvH4I,EAAYx1B,EAAO,GACvB,GAAIw1B,EAAW,CAEb,IADA,IAAIr0C,EAAI,EACDA,EAAI6e,EAAOvb,SAAUtD,EAC1Bq0C,EAAY,GAAHrJ,OAAMqJ,GAASrJ,OAAGmiB,EAAUntD,IAAM,KAAGgrC,OAAGnsB,EAAO7e,IAE1DkrC,EAAM,GAAHF,OAAMqJ,GAASrJ,OAAGmiB,EAAUntD,IAAM,KAAGgrC,OAAGE,GAG7C,IAAMxT,EAAS,CADfwT,EAAM,CAAC,GAADF,OAAIE,GAAGF,OAAG6c,GAAgBX,KAAYlc,OAAAsD,GAAO+e,IAAW5oD,KAAK,KAGjEwnC,GAAajf,GACbiiB,GAAUlqC,GACVgmC,EAAsB,KAAMkE,GAAWrjC,IAEzC8rB,EAAOrb,KAAuB,iBAAXkH,EAAsBuoB,EAAQvoB,GAAU0rB,GAAU1rB,IACrEmU,EAAOrb,KAAKyvB,EAAQ7e,IACpB,IAAM2B,EAAM8I,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KACvC,OAAO+yB,EAAc,IAAHwT,OAAOpc,EAAG,KAAMA,EAGpC,SAASyyB,GAAevzB,GACtB,GAAKA,EAAL,CACA,IAAQhT,EAA0CgT,EAA1ChT,SAAUxX,EAAgCwqB,EAAhCxqB,OAAQigB,EAAwBuK,EAAxBvK,OAAQic,EAAgB1R,EAAhB0R,MAAOrhB,EAAS2P,EAAT3P,KAErCuZ,EAAS8U,EAAc,CAAE1xB,WAAUxX,SAAQigB,SAAQic,QAAOhI,YADhC,MAAVl0B,IAGpB,GADI6a,IAAMuZ,GAAUuX,GAAU9wB,IAC1B2P,EAAWq4B,MAAO,CACpB,IAAMmH,EAAYpH,GAAuBp4B,GAEzC4J,GAAU,CADI,WAAWoK,KAAKwrB,GAAa,GAAK,IAC9BA,GAAW7oD,KAAK,IAEpC,OAAOizB,GAGT,SAASytB,GAA+BN,GACtC,IAAM0I,EAAY,GAClB,IAAK1I,EAAqB,OAAO0I,EACjC,IACEz/B,EAKE+2B,EALF/2B,WACAlP,EAIEimC,EAJFjmC,QACAuU,EAGE0xB,EAHF1xB,MACAxnB,EAEEk5C,EAFFl5C,MACW6hD,EACT3I,EADFzxB,UAOF,OALAm6B,EAAUlxC,KAAKyvB,EAAQltB,IACvB2uC,EAAUlxC,KAAKg1B,GAAY1lC,IAC3B4hD,EAAUlxC,KAAKyR,GAAc,IAAJkd,OAAQld,EAAW5C,KAAI,SAAAhf,GAAG,OAAI+iC,GAAU/iC,MAAMzH,KAAK,MAAK,MACjF8oD,EAAUlxC,KAAKyvB,EAAQ3Y,IACvBq6B,EAAStiC,KAAI,SAAAuiC,GAAK,OAAIF,EAAUlxC,KAAKyvB,EAAQ2hB,EAAMnpD,MAAO2qC,GAAUwe,EAAMxsD,WACnEssD,EAAU9jC,OAAOsiB,GAS1B,SAAS2hB,GAAa5/B,GACpB,IAAM6/B,EAAY,GAEhBp/B,EAOET,EAPFS,SAAyBq/B,EAOvB9/B,EAPQyC,cAA6BH,EAOrCtC,EAPqCsC,MAAOlB,EAO5CpB,EAP4CoB,QAASG,EAOrDvB,EAPqDuB,WAAYrC,EAOjEc,EAPiEd,QAAS0C,EAO1E5B,EAP0E4B,QAASmJ,EAOnF/K,EAPmF+K,MACxEg1B,EAMX//B,EANFY,YAAyBo/B,EAMvBhgC,EANuBggC,UACTrgB,EAKd3f,EALFa,eACQo/B,EAINjgC,EAJFe,OACam/B,EAGXlgC,EAHFiB,YACek/B,EAEbngC,EAFF0B,cACsBq1B,EACpB/2B,EADF8B,qBAEIs+B,EAAU,CAACpiB,EAAQvd,GAAYA,EAAShF,QAASuiB,EAAQvd,GAAYA,EAASttB,QAAQwoB,OAAOsiB,GAAQtnC,KAAK,KAEhH,GADKqpD,GAAWH,EAAUtxC,KAAK6xC,GAC3BL,EAAY,CACd,IAAQvpD,EAAgBupD,EAAhBvpD,KAAMrD,EAAU4sD,EAAV5sD,MACd0sD,EAAUtxC,KAAK/X,EAAKJ,cAAe+qC,GAAUhuC,IAE/C,IAAQid,EAAamtB,IAAbntB,SAYR,OAXImR,GAAYs+B,EAAUtxC,KAAKyvB,EAAQzc,EAAWzQ,SAAUotB,EAAa3c,EAAWA,aACpFs+B,EAAUtxC,KAAKuhC,GAA0BxtB,IACzCu9B,EAAUtxC,KA1BZ,SAAkCyxC,GAChC,GAAKA,EAEL,MADe,CAAChiB,EAAQgiB,EAAU7sD,OAAQ,IAAF+pC,OAAMiE,GAAU6e,EAAU3vC,MAAK,KAAK2tB,EAAQgiB,EAAUK,eAChF1kC,OAAOsiB,GAAQtnC,KAAK,KAuBnB2pD,CAAyBN,IACpCA,GAAWH,EAAUtxC,KAAK6xC,GAC9BP,EAAUtxC,KAAKmxB,EAAmBC,GAAgB3B,EAAQkiB,GAAaliB,EAAQiiB,GAAYhhB,EAAa7d,IACxGy+B,EAAUtxC,KAAIgyB,MAAdsf,EAASrf,GAASpC,EAAgB0hB,KACH,WAA3B1vC,EAAS9N,eAA4Bu9C,EAAUtxC,KAAK4yB,GAAUjiB,IAClE2gC,EAAUtxC,KAAIgyB,MAAdsf,EAASrf,GAASpC,EAAgB+hB,KAClCN,EAAUtxC,KAAIgyB,MAAdsf,EAASrf,GAASpC,EAAgBxc,KAClCi+B,EAAUtxC,KAAIgyB,MAAdsf,EAASrf,GAAS6W,GAA+BN,KACjD8I,EAAUtxC,KAAK0uB,EAAsB,QAASkE,GAAWpW,IAClD80B,EAAUlkC,OAAOsiB,GAAQtnC,KAAK,KAGvC,SAASqpC,GAAiBugB,GACxB,IAAQhzC,EAA8CgzC,EAA9ChzC,OAAQ2R,EAAsCqhC,EAAtCrhC,QAAS0/B,EAA6B2B,EAA7B3B,MAAO4B,EAAsBD,EAAtBC,QAASrhC,EAAaohC,EAAbphC,SACnCshC,EAA+B,iBAAXlzC,EAAsB,CAAE/W,KAAM,aAAcqH,MAAO0iD,EAAY1iD,MAAO0P,UAAWgzC,EAS3G,OARAE,EAAWvhC,QAAU,KACN,CACbiiB,GAAUsf,GACVtf,GAAUjiB,GACVshC,EACAxiB,EAAQ7e,GACR6e,EAAQ4gB,IAEIjjC,OAAOsiB,GAAQtnC,KAAK,KAGpC,SAASg3C,GAAsB+S,GAC7B,IAAMnzC,EAAS,GACT9a,EAAO6sC,GAAeohB,EAAiBnzC,QACvCP,EAAWumC,GAAemN,EAAiB1gC,YAIjD,OAHAzS,EAAOgB,KAAK9b,GACZ8a,EAAOgB,KAAKvB,GACZO,EAAOgB,KAAKqxC,GAAac,IAClBnzC,EAAOoO,OAAOsiB,GAAQtnC,KAAK,KAGpC,SAAS0mD,GAAQsD,GACf,OAAKA,EACgB,WAAjBrjB,GAAOqjB,GAA2B,CAAC,KAAMxf,GAAUwf,IAAQhqD,KAAK,KAC7D,CAAC,KAAM,8BAA8Bq9B,KAAK2sB,GAAS7iB,EAAgB6iB,GAAS/iB,EAAsB+iB,IAAQhqD,KAAK,KAFnG,GAYrB,SAAS6oC,GAAYjyB,EAAQwwB,GAC3B,IAAQ1tB,EAAe9C,EAAf8C,KAAM7Z,EAAS+W,EAAT/W,KACd,GAAa,SAATA,EAAiB,OAAOgiD,GAAUjrC,GAClCwwB,IAAQ1tB,EAAK0tB,OAASA,GAC1B,IAAIX,EAAM+D,GAAU9wB,GACD45B,EAAa18B,EAAxBytC,UACR,GAAI/Q,EAAU,CACZ,IAAMrgB,EAAS,CAACwT,GACVwjB,EAAa3W,EAAS7sB,KAAI,SAAAhf,GAAG,OAAIohC,GAAYphC,EAAK2/B,MAASpnC,KAAK,MAEtE,OADAizB,EAAOrb,KAAK,CAACyvB,EAAQxnC,GAAOA,GAAQ,IAAKoqD,EAAYpqD,GAAQ,KAAKmlB,OAAOsiB,GAAQtnC,KAAK,KAC/EizB,EAAOjO,OAAOsiB,GAAQtnC,KAAK,KAMpC,OAJI0Z,EAAKqZ,aAAe40B,QAAQuC,IAAIxwC,EAAM,gBAAgC,SAAdA,EAAK7Z,OAAiB4mC,EAAM,IAAHF,OAAOE,EAAG,MAC3F/sB,EAAK+oC,aAA6B,eAAd/oC,EAAK7Z,OAC3B4mC,EAAM,GAAHF,OAAME,GAAGF,OAAG6c,GAAgB1pC,EAAK+oC,eAE/B,CAAChc,EAAKigB,GAAQ9vC,EAAOzP,KAAK6d,OAAOsiB,GAAQtnC,KAAK,KAGvD,SAASmqD,GAAQ/nC,GACf,IAAMmvB,EAAYzyC,MAAMkkB,QAAQZ,IAAWA,EAAO,GAClD,SAAImvB,GAAgC,SAAnBA,EAAU1xC,MAS7B,SAAS6sC,GAAaplC,EAAS8a,GAC7B,IAAK9a,GAAuB,MAAZA,EAAiB,OAAOA,EACxC,IAAM8/B,EAAS+iB,GAAQ/nC,GACvB,OAAO9a,EAAQmf,KAAI,SAAAhf,GAAG,OAAIohC,GAAYphC,EAAK2/B,MAASpnC,KAAK,MHhJ3D2kD,GAAkB,IAAOpZ,GA8BzBoZ,GAAmBN,UAAY,SAAA3qC,GAC7B,IAAMuZ,EAAS6Z,GAAepzB,EAAKld,OAC3Bu2B,EAA2BrZ,EAA3BqZ,YAAamwB,EAAcxpC,EAAdwpC,UACrB,IAAKnwB,IAAgBmwB,EAAW,OAAOjwB,EACvC,IAAMm3B,EAAalH,GAAa,KAC1Bzc,EAAMxT,EAAOjzB,KAAKoqD,GACxB,OAAOr3B,EAAc,IAAHwT,OAAOE,EAAG,KAAMA,GAGpCke,GAAmBzkC,OAAS,SAAAxG,GAC1B,IAAM+sB,EAA4B,WAAtBE,GAAOjtB,EAAKiO,OAAqB+tB,GAAWh8B,GAAQ8xB,EAAY9xB,GAC5E,OAAOA,EAAKqZ,YAAc,IAAHwT,OAAOE,EAAG,KAAMA,GAGzCke,GAAmB0F,WA3BnB,SAAoBC,GAClB,IAAQllB,EAAgCklB,EAAhCllB,SAAUrS,EAAsBu3B,EAAtBv3B,YAAarZ,EAAS4wC,EAAT5wC,KACzB6wC,EAAsB,MAAbnlB,GAAiC,MAAbA,GAAiC,MAAbA,GAAiC,MAAbA,EAAoB,GAAK,IAC9FqB,EAAM,GAAHF,OAAMnB,GAAQmB,OAAGgkB,GAAKhkB,OAAGiE,GAAU9wB,IAC5C,OAAOqZ,EAAc,IAAHwT,OAAOE,EAAG,KAAMA,GA+BpCke,GAAmB6F,WANnB,SAAwBC,GACtB,IAAQtwC,EAAkBswC,EAAlBtwC,QACFuwC,EADoBD,EAAT/wC,KACI+M,KAAI,SAAAk/B,GAAQ,MAAI,CAACpe,EAAaoe,EAAS7oD,KAAMyqC,EAAaoe,EAASnpD,QAAQwD,KAAK,SAAOA,KAAK,MACjH,MAAO,CAACqnC,EAAQltB,GAAU,IAAFosB,OAAMmkB,EAAO,MAAK1qD,KAAK,K,mPM5GjD2qD,I,SAAAA,I,GAAA,G,GACGzkB,S,GAAe9lC,U,4mECCgC,IAsEnCwqD,GApEH,kB,4GAAAC,EAAA,SAAAD,K,4FAAAE,CAAA,KAAAF,KAAA,EAAA9tD,IAAA,SAAAN,MACV,SAAO2tB,GAAwB,IAAnBiC,EAAG2+B,UAAAlsD,OAAA,QAAAmsD,IAAAD,UAAA,GAAAA,UAAA,GAAG9kB,EACVqY,EAAUzgD,KAAKuC,MAAM+pB,EAAKiC,GAChC,OAAOkyB,GAAWA,EAAQzlC,MAC3B,CAAA/b,IAAA,SAAAN,MAED,SAAOqc,GAAwB,IAAnBuT,EAAG2+B,UAAAlsD,OAAA,QAAAmsD,IAAAD,UAAA,GAAAA,UAAA,GAAG9kB,EAEhB,OADAY,EAAaza,GACNyvB,GAAShjC,KACjB,CAAA/b,IAAA,YAAAN,MAED,SAAUkd,GAAyB,IAAnB0S,EAAG2+B,UAAAlsD,OAAA,QAAAmsD,IAAAD,UAAA,GAAAA,UAAA,GAAG9kB,EAEpB,OADAY,EAAaza,GACNoe,GAAU9wB,KAClB,CAAA5c,IAAA,eAAAN,MAED,SAAa8K,EAAS8a,GAA2B,IAAnBgK,EAAG2+B,UAAAlsD,OAAA,QAAAmsD,IAAAD,UAAA,GAAAA,UAAA,GAAG9kB,EAElC,GADAY,EAAaza,IACR9kB,GAAuB,MAAZA,EAAiB,MAAO,GACxC,IAAM8/B,EAAS+iB,GAAQ/nC,GACvB,OAAO9a,EAAQmf,KAAI,SAAAhf,GAAG,OAAIohC,GAAYphC,EAAK2/B,QAC5C,CAAAtqC,IAAA,QAAAN,MAED,SAAM2tB,GAAwB,IAAnBiC,EAAG2+B,UAAAlsD,OAAA,QAAAmsD,IAAAD,UAAA,GAAAA,UAAA,GAAG9kB,EACfglB,EAAgD7+B,EAAxC3S,gBAAQ,IAAAwxC,EAAI/kB,SAAsB+kB,EAC1CpkB,EAAaza,GACb,IAAM8+B,EAAWzxC,EAAS9N,cAC1B,GAAIw/C,GAAQD,GAAW,OAAOC,GAAQD,IAA4B,IAAlB9+B,EAAI+Z,UAAsBhc,EAAMA,EAAI85B,OAAQ73B,EAAIga,cAAgBH,EAAYG,cAC5H,MAAM,IAAItoC,MAAM,GAADyoC,OAAI9sB,EAAQ,kCAC5B,CAAA3c,IAAA,iBAAAN,MAED,SAAe2tB,EAAKihC,GAA8B,IAAnBh/B,EAAG2+B,UAAAlsD,OAAA,QAAAmsD,IAAAD,UAAA,GAAAA,UAAA,GAAG9kB,EACnC,GAAKmlB,GAAkC,IAArBA,EAAUvsD,OAA5B,CACA,IAAAwsD,EAA2Bj/B,EAAnBvsB,YAAI,IAAAwrD,EAAG,QAAOA,EACtB,IAAKxtD,KAAK,GAAD0oC,OAAI1mC,EAAI,UAA0C,mBAAxBhC,KAAK,GAAD0oC,OAAI1mC,EAAI,SAAwB,MAAM,IAAI/B,MAAM,GAADyoC,OAAI1mC,EAAI,6BAC9F,IAIqCutC,EAJ/Bke,EAAWztD,KAAK,GAAD0oC,OAAI1mC,EAAI,SAAQ9C,KAAKc,MACpC0tD,EAAgBD,EAASnhC,EAAKiC,GAChCo/B,GAAe,EACfC,EAAW,GAAEpe,EAAAC,GACOie,GAAa,IAArC,IAAAle,EAAA/vC,MAAA8vC,EAAAC,EAAArwC,KAAAuwC,MAAuC,KAECuR,EAF7B4M,EAASte,EAAA5wC,MACdmvD,GAA4B,EAAK3M,EAAA1R,GACR8d,GAAS,IAAtC,IAAApM,EAAA1hD,MAAAwhD,EAAAE,EAAAhiD,KAAAuwC,MAAwC,KAA7Bqe,EAAc9M,EAAAtiD,MACjBqvD,EAAQ,IAAIC,OAAO,IAADvlB,OAAKqlB,EAAc,KAAK,KAChD,GAAIC,EAAMxuB,KAAKquB,GAAY,CACzBC,GAA4B,EAC5B,QAEH,MAAAle,GAAAuR,EAAAzlC,EAAAk0B,GAAA,QAAAuR,EAAAp7B,IACD,IAAK+nC,EAA2B,CAC9BF,EAAWC,EACXF,GAAe,EACf,QAEH,MAAA/d,GAAAJ,EAAA9zB,EAAAk0B,GAAA,QAAAJ,EAAAzpB,IACD,IAAK4nC,EAAc,MAAM,IAAI1tD,MAAM,gBAADyoC,OAAiBklB,EAAQ,qBAAAllB,OAAoB1mC,EAAI,iCAAA0mC,OAAgCpc,EAAG,SACvH,CAAArtB,IAAA,YAAAN,MAED,SAAU2tB,EAAKiC,GACb,IAAMkyB,EAAUzgD,KAAKuC,MAAM+pB,EAAKiC,GAChC,OAAOkyB,GAAWA,EAAQ5lC,YAC3B,CAAA5b,IAAA,aAAAN,MAED,SAAW2tB,EAAKiC,GACd,IAAMkyB,EAAUzgD,KAAKuC,MAAM+pB,EAAKiC,GAChC,OAAOkyB,GAAWA,EAAQj3C,eAhElB,G,uOCGQ,gCAAT0kD,KAAI,YAAAplB,GAAJolB,QAAqBA,OAC9BA,KAAKC,cAAgB,CACnBpB,UACAqB,SAIkB,oBAAXC,QAA4C,gCAAX5f,OAAM,YAAA3F,GAAN2F,UAAuBA,SAAQA,OAAO4f,OAAS5f,QAErE,gCAAX4f,OAAM,YAAAvlB,GAANulB,UAAuBA,QAAUA,OAAO5f,SACjD4f,OAAO5f,OAAO0f,cAAgB,CAC5BpB,UACAqB","file":"sqlite.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nvar BigInt = require(\"big-integer\");\n\nfunction peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n \"class\": function(expectation) {\n var escapedParts = \"\",\n i;\n\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array\n ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n : classEscape(expectation.parts[i]);\n }\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n\n any: function(expectation) {\n return \"any character\";\n },\n\n end: function(expectation) {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i, j;\n\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n\n var peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = function(n) {\n return n\n },\n peg$c1 = function(head, tail) {\n const headAst = head && head.ast || head\n const cur = tail && tail.length && tail[0].length >= 4 ? [headAst] : headAst;\n if (!tail) tail = []\n for (let i = 0; i < tail.length; i++) {\n if(!tail[i][3] || tail[i][3].length === 0) continue;\n cur.push(tail[i][3] && tail[i][3].ast || tail[i][3]);\n }\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: cur\n }\n },\n peg$c2 = function(s) {\n return s ? `union ${s.toLowerCase()}` : 'union'\n },\n peg$c3 = function(head, tail, ob, l) {\n let cur = head\n for (let i = 0; i < tail.length; i++) {\n cur._next = tail[i][3]\n cur.set_op = tail[i][1]\n cur = cur._next\n }\n if(ob) head._orderby = ob\n if(l) head._limit = l\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: head\n }\n },\n peg$c4 = function(head, tail) {\n return createList(head, tail, 1)\n },\n peg$c5 = \"if\",\n peg$c6 = peg$literalExpectation(\"IF\", true),\n peg$c7 = function() {\n return 'IF NOT EXISTS'\n },\n peg$c8 = peg$literalExpectation(\"if\", true),\n peg$c9 = \"exists\",\n peg$c10 = peg$literalExpectation(\"exists\", true),\n peg$c11 = function() {\n return 'if exists'\n },\n peg$c12 = \"trigger\",\n peg$c13 = peg$literalExpectation(\"TRIGGER\", true),\n peg$c14 = \"before\",\n peg$c15 = peg$literalExpectation(\"BEFORE\", true),\n peg$c16 = \"after\",\n peg$c17 = peg$literalExpectation(\"AFTER\", true),\n peg$c18 = \"instead of\",\n peg$c19 = peg$literalExpectation(\"INSTEAD OF\", true),\n peg$c20 = \"on\",\n peg$c21 = peg$literalExpectation(\"ON\", true),\n peg$c22 = function(kw, tp, t, ife, c, p, te, on, tn, fe, tw, ta) {\n return {\n type: 'create',\n temporary: tp && tp[0].toLowerCase(),\n time: p && p.toLowerCase(),\n events: te,\n trigger: c,\n table: tn,\n for_each: fe,\n if_not_exists: ife,\n when: tw,\n execute: ta,\n keyword: t && t.toLowerCase(),\n }\n },\n peg$c23 = function(kw) {\n return {\n keyword: kw[0].toLowerCase(),\n }\n },\n peg$c24 = \"of\",\n peg$c25 = peg$literalExpectation(\"OF\", true),\n peg$c26 = function(kw, a) {\n return {\n keyword: kw[0].toLowerCase(),\n args: a && { keyword: a[0], columns: a[2] } || null\n }\n },\n peg$c27 = function(head, tail) {\n return createList(head, tail)\n },\n peg$c28 = \"begin\",\n peg$c29 = peg$literalExpectation(\"BEGIN\", true),\n peg$c30 = \"end\",\n peg$c31 = peg$literalExpectation(\"END\", true),\n peg$c32 = function(b, ms, e) {\n return {\n type: 'multiple',\n prefix: b,\n expr: ms,\n suffix: e,\n }\n },\n peg$c33 = \"for\",\n peg$c34 = peg$literalExpectation(\"FOR\", true),\n peg$c35 = \"each\",\n peg$c36 = peg$literalExpectation(\"EACH\", true),\n peg$c37 = \"row\",\n peg$c38 = peg$literalExpectation(\"ROW\", true),\n peg$c39 = \"statement\",\n peg$c40 = peg$literalExpectation(\"STATEMENT\", true),\n peg$c41 = function(kw, e, ob) {\n return {\n keyword: e ? `${kw.toLowerCase()} ${e.toLowerCase()}` : kw.toLowerCase(),\n args: ob.toLowerCase()\n }\n },\n peg$c42 = function(condition) {\n return {\n type: 'when',\n cond: condition,\n }\n },\n peg$c43 = function(a, k, ife, t, c) {\n const keyword = k.toLowerCase()\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a[0].toLowerCase(),\n keyword,\n if_not_exists:ife,\n [keyword]: { db: t.schema, schema: t.name },\n create_definitions: c,\n }\n }\n },\n peg$c44 = function(c, ce, o) {\n return {\n collate: ce,\n ...c,\n order_by: o && o.toLowerCase(),\n }\n },\n peg$c45 = function(c, o) {\n return {\n ...c,\n order_by: o && o.toLowerCase(),\n }\n },\n peg$c46 = function(a, kw, t, ife, n, um, on, ta, cols, where) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a[0].toLowerCase(),\n index_type: kw && kw.toLowerCase(),\n keyword: t.toLowerCase(),\n if_not_exists: ife,\n index: { schema: n.db, name: n.table },\n on_kw: on[0].toLowerCase(),\n table: ta,\n index_columns: cols,\n where,\n }\n }\n },\n peg$c47 = \"cascaded\",\n peg$c48 = peg$literalExpectation(\"CASCADED\", true),\n peg$c49 = \"local\",\n peg$c50 = peg$literalExpectation(\"LOCAL\", true),\n peg$c51 = \"check\",\n peg$c52 = peg$literalExpectation(\"CHECK\", true),\n peg$c53 = \"OPTION\",\n peg$c54 = peg$literalExpectation(\"OPTION\", false),\n peg$c55 = function(c) {\n return `with ${c.toLowerCase()} check option`\n },\n peg$c56 = function() {\n return 'with check option'\n },\n peg$c57 = function(a, tp, ife, v, c, s) {\n v.view = v.table\n delete v.table\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a[0].toLowerCase(),\n keyword: 'view',\n if_not_exists: ife,\n temporary: tp && tp[0].toLowerCase(),\n columns: c && c[2],\n select: s,\n view: v,\n }\n }\n },\n peg$c58 = function(a, tp, ife, t, c, to) {\n if(t) tableList.add(`create::${t.db}::${t.table}`)\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a[0].toLowerCase(),\n keyword: 'table',\n temporary: tp && tp[0].toLowerCase(),\n if_not_exists:ife,\n table: [t],\n create_definitions: c,\n table_options: to\n }\n }\n },\n peg$c59 = function(a, tp, ife, t, as, qe) {\n if(t) tableList.add(`create::${t.db}::${t.table}`)\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a[0].toLowerCase(),\n keyword: 'table',\n temporary: tp && tp[0].toLowerCase(),\n if_not_exists: ife,\n table: [t],\n as: 'as',\n query_expr: qe,\n }\n }\n },\n peg$c60 = function(t) {\n return {\n type: 'like',\n table: t\n }\n },\n peg$c61 = function(e) {\n e.parentheses = true;\n return e;\n },\n peg$c62 = function(head, tail) {\n return createList(head, tail);\n },\n peg$c63 = function(n) {\n if (n && !n.value) n.value = 'null'\n return { nullable: n }\n },\n peg$c64 = function(d) {\n return { default_val: d }\n },\n peg$c65 = \"auto_increment\",\n peg$c66 = peg$literalExpectation(\"AUTO_INCREMENT\", true),\n peg$c67 = \"autoincrement\",\n peg$c68 = peg$literalExpectation(\"AUTOINCREMENT\", true),\n peg$c69 = function(a) {\n return { auto_increment: a.toLowerCase() }\n },\n peg$c70 = \"unique\",\n peg$c71 = peg$literalExpectation(\"UNIQUE\", true),\n peg$c72 = \"key\",\n peg$c73 = peg$literalExpectation(\"KEY\", true),\n peg$c74 = function(k) {\n const sql = ['unique']\n if (k) sql.push(k)\n return { unique: sql.join(' ').toLowerCase('') }\n },\n peg$c75 = \"primary\",\n peg$c76 = peg$literalExpectation(\"PRIMARY\", true),\n peg$c77 = function(p) {\n const sql = []\n if (p) sql.push('primary')\n sql.push('key')\n return { primary_key: sql.join(' ').toLowerCase('') }\n },\n peg$c78 = function(co) {\n return { comment: co }\n },\n peg$c79 = function(kc, n) {\n return { constraint: { keyword: kc.toLowerCase(), constraint: n } }\n },\n peg$c80 = function(ca) {\n return { collate: ca }\n },\n peg$c81 = function(cf) {\n return { column_format: cf }\n },\n peg$c82 = function(s) {\n return { storage: s }\n },\n peg$c83 = function(re) {\n return { reference_definition: re }\n },\n peg$c84 = function(ck) {\n return { check: ck }\n },\n peg$c85 = function(t, s, v) {\n return { character_set: { type: t, value: v, symbol: s }}\n },\n peg$c86 = function(head, tail) {\n let opt = head\n for (let i = 0; i < tail.length; i++) {\n opt = { ...opt, ...tail[i][1] }\n }\n return opt\n },\n peg$c87 = function(c, d, cdo) {\n columnList.add(`create::${c.table}::${c.value || c}`)\n return {\n column: {\n type: 'column_ref',\n table: null,\n column: c\n },\n definition: d,\n resource: 'column',\n ...(cdo || {})\n }\n },\n peg$c88 = function(s, ca) {\n return {\n type: 'collate',\n keyword: 'collate',\n collate: {\n name: ca,\n symbol: s,\n }\n }\n },\n peg$c89 = \"column_format\",\n peg$c90 = peg$literalExpectation(\"COLUMN_FORMAT\", true),\n peg$c91 = \"fixed\",\n peg$c92 = peg$literalExpectation(\"FIXED\", true),\n peg$c93 = \"dynamic\",\n peg$c94 = peg$literalExpectation(\"DYNAMIC\", true),\n peg$c95 = \"default\",\n peg$c96 = peg$literalExpectation(\"DEFAULT\", true),\n peg$c97 = function(k, f) {\n return {\n type: 'column_format',\n value: f.toLowerCase()\n }\n },\n peg$c98 = \"storage\",\n peg$c99 = peg$literalExpectation(\"STORAGE\", true),\n peg$c100 = \"disk\",\n peg$c101 = peg$literalExpectation(\"DISK\", true),\n peg$c102 = \"memory\",\n peg$c103 = peg$literalExpectation(\"MEMORY\", true),\n peg$c104 = function(k, s) {\n return {\n type: 'storage',\n value: s.toLowerCase()\n }\n },\n peg$c105 = function(ce) {\n return {\n type: 'default',\n value: ce\n }\n },\n peg$c106 = function(a, t) {\n tableList.add(`${a}::${t.db}::${t.table}`);\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a.toLowerCase(),\n table: t\n }\n };\n },\n peg$c107 = function(a, db, e, as, schema) {\n // tableList.add(`${a}::${t.db}::${t.table}`);\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a.toLowerCase(),\n database: db,\n expr: e,\n as: as && as[0].toLowerCase(),\n schema,\n }\n };\n },\n peg$c108 = function(a, r, ife, t) {\n if(t) t.forEach(tt => tableList.add(`${a}::${tt.db}::${tt.table}`));\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a.toLowerCase(),\n keyword: r.toLowerCase(),\n prefix: ife,\n name: t\n }\n };\n },\n peg$c109 = function(a, r, ife, t) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a.toLowerCase(),\n keyword: r.toLowerCase(),\n prefix: ife,\n name: t,\n }\n };\n },\n peg$c110 = function(a, r, i, t, op) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a.toLowerCase(),\n keyword: r.toLowerCase(),\n name: i,\n table: t,\n options: op\n }\n };\n },\n peg$c111 = function(a, kw, t) {\n if(t) t.forEach(tt => tableList.add(`${a}::${tt.db}::${tt.table}`));\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: a.toLowerCase(),\n keyword: kw && kw.toLowerCase() || 'table',\n name: t\n }\n };\n },\n peg$c112 = function(d) {\n tableList.add(`use::${d}::null`);\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'use',\n db: d\n }\n };\n },\n peg$c113 = function(t, e) {\n if (t && t.length > 0) t.forEach(table => tableList.add(`alter::${table.db}::${table.table}`));\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'alter',\n table: t,\n expr: e\n }\n };\n },\n peg$c114 = \"first\",\n peg$c115 = peg$literalExpectation(\"first\", true),\n peg$c116 = function(k) {\n return { keyword: k };\n },\n peg$c117 = peg$literalExpectation(\"after\", true),\n peg$c118 = function(k, i) {\n return { keyword: k, expr: i };\n },\n peg$c119 = function(t) {\n t.resource = t.keyword\n t[t.keyword] = t.value\n delete t.value\n return {\n type: 'alter',\n ...t,\n }\n },\n peg$c120 = function(c) {\n return {\n action: 'add',\n create_definitions: c,\n resource: 'constraint',\n type: 'alter',\n }\n },\n peg$c121 = function(kc, c) {\n return {\n action: 'drop',\n constraint: c,\n keyword: kc.toLowerCase(),\n resource: 'constraint',\n type: 'alter',\n }\n },\n peg$c122 = function() {\n return {\n action: 'drop',\n key: '',\n keyword: 'primary key',\n resource: 'key',\n type: 'alter',\n }\n },\n peg$c123 = \"foreign\",\n peg$c124 = peg$literalExpectation(\"FOREIGN\", true),\n peg$c125 = function(k, c) {\n const resource = Array.isArray(k) ? 'key' : 'index'\n return {\n action: 'drop',\n [resource]: c,\n keyword: Array.isArray(k) ? `${[k[0], k[2]].filter(v => v).join(' ').toLowerCase()}` : k.toLowerCase(),\n resource,\n type: 'alter',\n }\n },\n peg$c126 = function(kc, cd) {\n return {\n action: 'add',\n ...cd,\n keyword: kc,\n resource: 'column',\n type: 'alter',\n }\n },\n peg$c127 = function(kc, c) {\n return {\n action: 'drop',\n column: c,\n keyword: kc,\n resource: 'column',\n type: 'alter',\n }\n },\n peg$c128 = function(kc, cd, af) {\n return {\n action: 'modify',\n keyword: kc,\n ...cd,\n suffix: af,\n resource: 'column',\n type: 'alter',\n }\n },\n peg$c129 = function(id) {\n return {\n action: 'add',\n type: 'alter',\n ...id,\n }\n },\n peg$c130 = function(c, kw, tn) {\n return {\n action: 'rename',\n type: 'alter',\n resource: 'column',\n keyword: 'column',\n old_column: c,\n prefix: kw && kw[0].toLowerCase(),\n column: tn\n }\n },\n peg$c131 = function(kw, tn) {\n return {\n action: 'rename',\n type: 'alter',\n resource: 'table',\n keyword: kw && kw[0].toLowerCase(),\n table: tn\n }\n },\n peg$c132 = \"change\",\n peg$c133 = peg$literalExpectation(\"CHANGE\", true),\n peg$c134 = function(kc, od, cd, af) {\n return {\n action: 'change',\n old_column: od,\n ...cd,\n keyword: kc,\n resource: 'column',\n type: 'alter',\n suffix: af,\n }\n },\n peg$c135 = \"algorithm\",\n peg$c136 = peg$literalExpectation(\"ALGORITHM\", true),\n peg$c137 = \"instant\",\n peg$c138 = peg$literalExpectation(\"INSTANT\", true),\n peg$c139 = \"inplace\",\n peg$c140 = peg$literalExpectation(\"INPLACE\", true),\n peg$c141 = \"copy\",\n peg$c142 = peg$literalExpectation(\"COPY\", true),\n peg$c143 = function(s, val) {\n return {\n type: 'alter',\n keyword: 'algorithm',\n resource: 'algorithm',\n symbol: s,\n algorithm: val\n }\n },\n peg$c144 = \"lock\",\n peg$c145 = peg$literalExpectation(\"LOCK\", true),\n peg$c146 = \"none\",\n peg$c147 = peg$literalExpectation(\"NONE\", true),\n peg$c148 = \"shared\",\n peg$c149 = peg$literalExpectation(\"SHARED\", true),\n peg$c150 = \"exclusive\",\n peg$c151 = peg$literalExpectation(\"EXCLUSIVE\", true),\n peg$c152 = function(s, val) {\n return {\n type: 'alter',\n keyword: 'lock',\n resource: 'lock',\n symbol: s,\n lock: val\n }\n },\n peg$c153 = function(kc, c, t, de, id) {\n return {\n index: c,\n definition: de,\n keyword: kc.toLowerCase(),\n index_type: t,\n resource: 'index',\n index_options: id,\n }\n },\n peg$c154 = function(p, kc, c, de, id) {\n return {\n index: c,\n definition: de,\n keyword: kc && `${p.toLowerCase()} ${kc.toLowerCase()}` || p.toLowerCase(),\n index_options: id,\n resource: 'index',\n }\n },\n peg$c155 = function(kc, c) {\n return {\n keyword: kc.toLowerCase(),\n constraint: c\n }\n },\n peg$c156 = function(kc, p, t, de, id) {\n return {\n constraint: kc && kc.constraint,\n definition: de,\n constraint_type: `${p[0].toLowerCase()} ${p[2].toLowerCase()}`,\n keyword: kc && kc.keyword,\n index_type: t,\n resource: 'constraint',\n index_options: id,\n }\n },\n peg$c157 = function(kc, u, p, i, t, de, id) {\n return {\n constraint: kc && kc.constraint,\n definition: de,\n constraint_type: p && `${u.toLowerCase()} ${p.toLowerCase()}` || u.toLowerCase(),\n keyword: kc && kc.keyword,\n index_type: t,\n index: i,\n resource: 'constraint',\n index_options: id\n }\n },\n peg$c158 = \"not\",\n peg$c159 = peg$literalExpectation(\"NOT\", true),\n peg$c160 = \"replication\",\n peg$c161 = peg$literalExpectation(\"REPLICATION\", true),\n peg$c162 = function(kc, u, nfr, c) {\n return {\n constraint_type: u.toLowerCase(),\n keyword: kc && kc.keyword,\n constraint: kc && kc.constraint,\n index_type: nfr && { keyword: 'not for replication' },\n definition: [c],\n resource: 'constraint',\n }\n },\n peg$c163 = \"foreign key\",\n peg$c164 = peg$literalExpectation(\"FOREIGN KEY\", true),\n peg$c165 = function(kc, p, i, de, id) {\n return {\n constraint: kc && kc.constraint,\n definition: de,\n constraint_type: p,\n keyword: kc && kc.keyword,\n index: i,\n resource: 'constraint',\n reference_definition: id\n }\n },\n peg$c166 = \"enforced\",\n peg$c167 = peg$literalExpectation(\"ENFORCED\", true),\n peg$c168 = function(kc, u, c, ne) {\n const enforced = []\n if (ne) enforced.push(ne[0], ne[2])\n return {\n constraint_type: u.toLowerCase(),\n keyword: kc && kc.keyword,\n constraint: kc && kc.constraint,\n definition: [c],\n enforced: enforced.filter(v => v).join(' ').toLowerCase(),\n resource: 'constraint',\n }\n },\n peg$c169 = \"match full\",\n peg$c170 = peg$literalExpectation(\"MATCH FULL\", true),\n peg$c171 = \"match partial\",\n peg$c172 = peg$literalExpectation(\"MATCH PARTIAL\", true),\n peg$c173 = \"match simple\",\n peg$c174 = peg$literalExpectation(\"MATCH SIMPLE\", true),\n peg$c175 = function(kc, t, de, m, od, ou) {\n return {\n definition: de,\n table: [t],\n keyword: kc.toLowerCase(),\n match: m && m.toLowerCase(),\n on_action: [od, ou].filter(v => v)\n }\n },\n peg$c176 = function(oa) {\n return {\n on_action: [oa]\n }\n },\n peg$c177 = function(kw, ro) {\n // => { type: 'on delete' | 'on update'; value: reference_option; }\n return {\n type: `on ${kw[0].toLowerCase()}`,\n value: ro\n }\n },\n peg$c178 = function(kw, l) {\n return {\n type: 'function',\n name: { name: [{ type: 'origin', value: kw }] },\n args: l\n }\n },\n peg$c179 = \"restrict\",\n peg$c180 = peg$literalExpectation(\"RESTRICT\", true),\n peg$c181 = \"cascade\",\n peg$c182 = peg$literalExpectation(\"CASCADE\", true),\n peg$c183 = \"set null\",\n peg$c184 = peg$literalExpectation(\"SET NULL\", true),\n peg$c185 = \"no action\",\n peg$c186 = peg$literalExpectation(\"NO ACTION\", true),\n peg$c187 = \"set default\",\n peg$c188 = peg$literalExpectation(\"SET DEFAULT\", true),\n peg$c189 = function(kc) {\n return {\n type: 'origin',\n value: kc.toLowerCase()\n }\n },\n peg$c190 = \"character\",\n peg$c191 = peg$literalExpectation(\"CHARACTER\", true),\n peg$c192 = \"set\",\n peg$c193 = peg$literalExpectation(\"SET\", true),\n peg$c194 = function() {\n return 'CHARACTER SET'\n },\n peg$c195 = \"charset\",\n peg$c196 = peg$literalExpectation(\"CHARSET\", true),\n peg$c197 = \"collate\",\n peg$c198 = peg$literalExpectation(\"COLLATE\", true),\n peg$c199 = function(kw, t, s, v) {\n return {\n keyword: kw && `${kw[0].toLowerCase()} ${t.toLowerCase()}` || t.toLowerCase(),\n symbol: s,\n value: v\n }\n },\n peg$c200 = \"avg_row_length\",\n peg$c201 = peg$literalExpectation(\"AVG_ROW_LENGTH\", true),\n peg$c202 = \"key_block_size\",\n peg$c203 = peg$literalExpectation(\"KEY_BLOCK_SIZE\", true),\n peg$c204 = \"max_rows\",\n peg$c205 = peg$literalExpectation(\"MAX_ROWS\", true),\n peg$c206 = \"min_rows\",\n peg$c207 = peg$literalExpectation(\"MIN_ROWS\", true),\n peg$c208 = \"stats_sample_pages\",\n peg$c209 = peg$literalExpectation(\"STATS_SAMPLE_PAGES\", true),\n peg$c210 = function(kw, s, v) {\n return {\n keyword: kw.toLowerCase(),\n symbol: s,\n value: v.value\n }\n },\n peg$c211 = \"connection\",\n peg$c212 = peg$literalExpectation(\"CONNECTION\", true),\n peg$c213 = function(kw, s, c) {\n return {\n keyword: kw.toLowerCase(),\n symbol: s,\n value: `'${c.value}'`\n }\n },\n peg$c214 = \"compression\",\n peg$c215 = peg$literalExpectation(\"COMPRESSION\", true),\n peg$c216 = \"'\",\n peg$c217 = peg$literalExpectation(\"'\", false),\n peg$c218 = \"zlib\",\n peg$c219 = peg$literalExpectation(\"ZLIB\", true),\n peg$c220 = \"lz4\",\n peg$c221 = peg$literalExpectation(\"LZ4\", true),\n peg$c222 = function(kw, s, v) {\n return {\n keyword: kw.toLowerCase(),\n symbol: s,\n value: v.join('').toUpperCase()\n }\n },\n peg$c223 = \"engine\",\n peg$c224 = peg$literalExpectation(\"ENGINE\", true),\n peg$c225 = function(kw, s, c) {\n return {\n keyword: kw.toLowerCase(),\n symbol: s,\n value: c.toUpperCase()\n }\n },\n peg$c226 = \"without\",\n peg$c227 = peg$literalExpectation(\"WITHOUT\", true),\n peg$c228 = \"rowid\",\n peg$c229 = peg$literalExpectation(\"ROWID\", true),\n peg$c230 = function() {\n return {\n keyword: 'without rowid'\n }\n },\n peg$c231 = \"strict\",\n peg$c232 = peg$literalExpectation(\"STRICT\", true),\n peg$c233 = function() {\n return {\n keyword: 'strict'\n }\n },\n peg$c234 = function(t) {\n t.forEach(tg => tg.forEach(dt => dt.table && tableList.add(`rename::${dt.db}::${dt.table}`)))\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'rename',\n table: t\n }\n };\n },\n peg$c235 = function(kw, a) {\n a.keyword = kw\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'set',\n keyword: kw,\n expr: a\n }\n }\n },\n peg$c236 = function() {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'unlock',\n keyword: 'tables'\n }\n }\n },\n peg$c237 = \"read\",\n peg$c238 = peg$literalExpectation(\"READ\", true),\n peg$c239 = function(s) {\n return {\n type: 'read',\n suffix: s && 'local'\n }\n },\n peg$c240 = \"low_priority\",\n peg$c241 = peg$literalExpectation(\"LOW_PRIORITY\", true),\n peg$c242 = \"write\",\n peg$c243 = peg$literalExpectation(\"WRITE\", true),\n peg$c244 = function(p) {\n return {\n type: 'write',\n prefix: p && 'low_priority'\n }\n },\n peg$c245 = function(t, lt) {\n tableList.add(`lock::${t.db}::${t.table}`)\n return {\n table: t,\n lock_type: lt\n }\n },\n peg$c246 = function(head, tail) {\n return createList(head, tail);\n },\n peg$c247 = function(ltl) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'lock',\n keyword: 'tables',\n tables: ltl\n }\n }\n },\n peg$c248 = function(e) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'call',\n expr: e\n }\n }\n },\n peg$c249 = \"binary\",\n peg$c250 = peg$literalExpectation(\"BINARY\", true),\n peg$c251 = \"master\",\n peg$c252 = peg$literalExpectation(\"MASTER\", true),\n peg$c253 = \"logs\",\n peg$c254 = peg$literalExpectation(\"LOGS\", true),\n peg$c255 = function(t) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'show',\n suffix: 'logs',\n keyword: t.toLowerCase()\n }\n }\n },\n peg$c256 = \"binlog\",\n peg$c257 = peg$literalExpectation(\"BINLOG\", true),\n peg$c258 = \"events\",\n peg$c259 = peg$literalExpectation(\"EVENTS\", true),\n peg$c260 = function(ins, from, limit) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'show',\n suffix: 'events',\n keyword: 'binlog',\n in: ins,\n from,\n limit,\n }\n }\n },\n peg$c261 = \"collation\",\n peg$c262 = peg$literalExpectation(\"COLLATION\", true),\n peg$c263 = function(k, e) {\n let keyword = Array.isArray(k) && k || [k]\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'show',\n suffix: keyword[2] && keyword[2].toLowerCase(),\n keyword: keyword[0].toLowerCase(),\n expr: e\n }\n }\n },\n peg$c264 = \"grants\",\n peg$c265 = peg$literalExpectation(\"GRANTS\", true),\n peg$c266 = function(f) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'show',\n keyword: 'grants',\n for: f,\n }\n }\n },\n peg$c267 = function(n, h, u) {\n return {\n user: n,\n host: h && h[2],\n role_list: u\n }\n },\n peg$c268 = function(l) {\n return l\n },\n peg$c269 = function(t) {\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'desc',\n table: t\n }\n };\n },\n peg$c270 = \"(\",\n peg$c271 = peg$literalExpectation(\"(\", false),\n peg$c272 = \")\",\n peg$c273 = peg$literalExpectation(\")\", false),\n peg$c274 = function(s) {\n return {\n ...s[2],\n parentheses_symbol: true,\n }\n },\n peg$c275 = function(cte) {\n cte.recursive = true;\n return [cte]\n },\n peg$c276 = function(name, columns, stmt) {\n if (typeof name === 'string') name = { type: 'default', value: name }\n if (name.table) name = { type: 'default', value: name.table }\n return { name, stmt, columns };\n },\n peg$c277 = function(l) {\n return l\n },\n peg$c278 = function(cte, opts, d, c, f, w, g, h, o, l, fu) {\n if(f) f.forEach(info => info.table && tableList.add(`select::${info.db}::${info.table}`));\n return {\n with: cte,\n type: 'select',\n options: opts,\n distinct: d,\n columns: c,\n from: f,\n where: w,\n groupby: g,\n having: h,\n orderby: o,\n limit: l,\n for_update: fu && `${fu[0]} ${fu[2][0]}`,\n };\n },\n peg$c279 = function(head, tail) {\n const opts = [head];\n for (let i = 0, l = tail.length; i < l; ++i) {\n opts.push(tail[i][1]);\n }\n return opts;\n },\n peg$c280 = function(option) { return option; },\n peg$c281 = function(head, tail) {\n columnList.add('select::null::(.*)')\n const item = {\n expr: {\n type: 'column_ref',\n table: null,\n column: '*'\n },\n as: null\n }\n if (tail && tail.length > 0) return createList(item, tail)\n return [item]\n },\n peg$c282 = function(tbl) {\n const table = tbl && tbl[0] || null\n columnList.add(`select::${table}::(.*)`);\n return {\n expr: {\n type: 'column_ref',\n table: table,\n column: '*'\n },\n as: null\n };\n },\n peg$c283 = function(e, alias) {\n return { expr: e, as: alias };\n },\n peg$c284 = function(i) { return i; },\n peg$c285 = function(l) { return l; },\n peg$c286 = function(head, tail) {\n return [head, tail]\n },\n peg$c287 = \"btree\",\n peg$c288 = peg$literalExpectation(\"BTREE\", true),\n peg$c289 = \"hash\",\n peg$c290 = peg$literalExpectation(\"HASH\", true),\n peg$c291 = function(t) {\n return {\n keyword: 'using',\n type: t.toLowerCase(),\n }\n },\n peg$c292 = function(head, tail) {\n const result = [head];\n for (let i = 0; i < tail.length; i++) {\n result.push(tail[i][1]);\n }\n return result;\n },\n peg$c293 = function(k, e, kbs) {\n return {\n type: k.toLowerCase(),\n symbol: e,\n expr: kbs\n };\n },\n peg$c294 = \"with\",\n peg$c295 = peg$literalExpectation(\"WITH\", true),\n peg$c296 = \"parser\",\n peg$c297 = peg$literalExpectation(\"PARSER\", true),\n peg$c298 = function(pn) {\n return {\n type: 'with parser',\n expr: pn\n }\n },\n peg$c299 = \"visible\",\n peg$c300 = peg$literalExpectation(\"VISIBLE\", true),\n peg$c301 = \"invisible\",\n peg$c302 = peg$literalExpectation(\"INVISIBLE\", true),\n peg$c303 = function(k) {\n return {\n type: k.toLowerCase(),\n expr: k.toLowerCase()\n }\n },\n peg$c304 = function(head, tail) {\n tail.unshift(head);\n tail.forEach(tableInfo => {\n const { table, as } = tableInfo\n tableAlias[table] = table\n if (as) tableAlias[as] = table\n refreshColumnList(columnList)\n })\n return tail;\n },\n peg$c305 = function(t) { return t; },\n peg$c306 = function(op, t, head, tail) {\n t.join = op;\n t.using = createList(head, tail);\n return t;\n },\n peg$c307 = function(op, t, expr) {\n t.join = op;\n t.on = expr;\n return t;\n },\n peg$c308 = function(op, stmt, alias, expr) {\n stmt.parentheses = true;\n return {\n expr: stmt,\n as: alias,\n join: op,\n on: expr\n };\n },\n peg$c309 = function() {\n return {\n type: 'dual'\n };\n },\n peg$c310 = function(name, l, alias) {\n return {\n expr: {\n type: 'function',\n name: { name: [{ type: 'default', value: name }]},\n args: l,\n },\n as: alias,\n }\n },\n peg$c311 = function(t, alias) {\n if (t.type === 'var') {\n t.as = alias;\n return t;\n } else {\n return {\n db: t.db,\n table: t.table,\n as: alias\n };\n }\n },\n peg$c312 = function(stmt, alias) {\n stmt.parentheses = true;\n return {\n expr: stmt,\n as: alias\n };\n },\n peg$c313 = function() { return 'LEFT JOIN'; },\n peg$c314 = function() { return 'INNER JOIN'; },\n peg$c315 = function(dt, tail) {\n const obj = { db: null, table: dt };\n if (tail !== null) {\n obj.db = dt;\n obj.table = tail[3];\n }\n return obj;\n },\n peg$c316 = function(v) {\n v.db = null;\n v.table = v.name;\n return v;\n },\n peg$c317 = function(head, tail) {\n const len = tail.length\n let result = head\n for (let i = 0; i < len; ++i) {\n result = createBinaryExpr(tail[i][1], result, tail[i][3])\n }\n return result\n },\n peg$c318 = function(e) { return e; },\n peg$c319 = function(e) {\n return {\n columns: e.value\n }\n },\n peg$c320 = function(e, d) {\n const obj = { expr: e, type: d };\n return obj;\n },\n peg$c321 = function(i1, tail) {\n const res = [i1];\n if (tail) res.push(tail[2]);\n return {\n seperator: tail && tail[0] && tail[0].toLowerCase() || '',\n value: res\n };\n },\n peg$c322 = function(t, l, w, r, or, lc) {\n const dbObj = {}\n const addTableFun = (tableInfo) => {\n const { server, db, schema, as, table, join } = tableInfo\n const action = join ? 'select' : 'update'\n const fullName = [server, db, schema].filter(Boolean).join('.') || null\n if (db) dbObj[table] = fullName\n if (table) tableList.add(`${action}::${fullName}::${table}`)\n }\n if (t) t.forEach(addTableFun);\n if(l) {\n l.forEach(col => {\n if (col.table) {\n const table = queryTableAlias(col.table)\n tableList.add(`update::${dbObj[table] || null}::${table}`)\n }\n columnList.add(`update::${col.table}::${col.column}`)\n });\n }\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'update',\n table: t,\n set: l,\n where: w,\n returning: r,\n orderby: or,\n limit: lc,\n }\n };\n },\n peg$c323 = function(t, f, w, r, or, l) {\n if(f) f.forEach(tableInfo => {\n const { db, as, table, join } = tableInfo\n const action = join ? 'select' : 'delete'\n if (table) tableList.add(`${action}::${db}::${table}`)\n if (!join) columnList.add(`delete::${table}::(.*)`);\n });\n if (t === null && f.length === 1) {\n const tableInfo = f[0]\n t = [{\n db: tableInfo.db,\n table: tableInfo.table,\n as: tableInfo.as,\n addition: true\n }]\n }\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n type: 'delete',\n table: t,\n from: f,\n where: w,\n returning: r,\n orderby: or,\n limit: l,\n }\n };\n },\n peg$c324 = \"=\",\n peg$c325 = peg$literalExpectation(\"=\", false),\n peg$c326 = function(tbl, c, v) {\n return { column: c, value: v, table: tbl && tbl[0] };\n },\n peg$c327 = function(tbl, c, v) {\n return { column: c, value: v, table: tbl && tbl[0], keyword: 'values' };\n },\n peg$c328 = function(k, c) {\n // => { type: 'returning'; columns: column_clause | select_stmt; }\n return {\n type: k && k.toLowerCase() || 'returning',\n columns: c === '*' && [{ type: 'expr', expr: { type: 'column_ref', table: null, column: '*' }, as: null }] || c\n }\n },\n peg$c329 = function(head, tail) {\n return createList(head, tail)\n },\n peg$c330 = function(v) {\n return v\n },\n peg$c331 = function(ri, t, p, c, v, odp, r) {\n if (t) {\n tableList.add(`insert::${t.db}::${t.table}`)\n t.as = null\n }\n if (c) {\n let table = t && t.table || null\n if(Array.isArray(v)) {\n v.forEach((row, idx) => {\n if(row.value.length != c.length) {\n throw new Error(`Error: column count doesn't match value count at row ${idx+1}`)\n }\n })\n }\n c.forEach(c => columnList.add(`insert::${table}::${c}`));\n }\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n ...ri,\n table: [t],\n columns: c,\n values: v,\n partition: p,\n on_duplicate_update: odp,\n returning: r,\n }\n };\n },\n peg$c332 = function(ri, ig, it, t, p, v, odp) {\n if (t) {\n tableList.add(`insert::${t.db}::${t.table}`)\n columnList.add(`insert::${t.table}::(.*)`);\n t.as = null\n }\n const prefix = [ig, it].filter(v => v).map(v => v[0] && v[0].toLowerCase()).join(' ')\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n ...ri,\n table: [t],\n columns: null,\n values: v,\n partition: p,\n prefix,\n on_duplicate_update: odp,\n }\n };\n },\n peg$c333 = function(ri, t, p, l, odp) {\n if (t) {\n tableList.add(`insert::${t.db}::${t.table}`)\n columnList.add(`insert::${t.table}::(.*)`);\n t.as = null\n }\n return {\n tableList: Array.from(tableList),\n columnList: columnListTableAlias(columnList),\n ast: {\n ...ri,\n table: [t],\n columns: null,\n partition: p,\n set: l,\n on_duplicate_update: odp,\n }\n };\n },\n peg$c334 = \"duplicate\",\n peg$c335 = peg$literalExpectation(\"DUPLICATE\", true),\n peg$c336 = function(s) {\n return {\n keyword: 'on duplicate key update',\n set: s\n }\n },\n peg$c337 = \"abort\",\n peg$c338 = peg$literalExpectation(\"ABORT\", true),\n peg$c339 = \"fail\",\n peg$c340 = peg$literalExpectation(\"FAIL\", true),\n peg$c341 = \"ignore\",\n peg$c342 = peg$literalExpectation(\"IGNORE\", true),\n peg$c343 = \"replace\",\n peg$c344 = peg$literalExpectation(\"REPLACE\", true),\n peg$c345 = \"rollback\",\n peg$c346 = peg$literalExpectation(\"ROLLBACK\", true),\n peg$c347 = function(tail) {\n const result = {\n type: 'insert',\n }\n if (!tail || tail.length === 0) {\n return result;\n }\n result.or = [\n {\n type: 'origin',\n value: 'or',\n },\n {\n type: 'origin',\n value: tail[3],\n }\n ]\n return result\n },\n peg$c348 = function() {\n return { type: 'replace' }\n },\n peg$c349 = function(l) {\n return l;\n },\n peg$c350 = function(head, tail) {\n const el = { type: 'expr_list' };\n el.value = createList(head, tail);\n return el;\n },\n peg$c351 = function(e, u) {\n return {\n type: 'interval',\n expr: e,\n unit: u.toLowerCase(),\n }\n },\n peg$c352 = function(condition_list, otherwise) {\n if (otherwise) condition_list.push(otherwise);\n return {\n type: 'case',\n expr: null,\n args: condition_list\n };\n },\n peg$c353 = function(expr, condition_list, otherwise) {\n if (otherwise) condition_list.push(otherwise);\n return {\n type: 'case',\n expr: expr,\n args: condition_list\n };\n },\n peg$c354 = function(condition, result) {\n return {\n type: 'when',\n cond: condition,\n result: result\n };\n },\n peg$c355 = function(result) {\n return { type: 'else', result: result };\n },\n peg$c356 = function(op, tail) {\n return createUnaryExpr(op, tail[0][1]);\n },\n peg$c357 = function(head, tail) {\n const ast = head.ast\n if (ast && ast.type === 'select') {\n if (!(head.parentheses_symbol || head.parentheses || head.ast.parentheses || head.ast.parentheses_symbol) || ast.columns.length !== 1 || ast.columns[0].expr.column === '*') throw new Error('invalid column clause with select statement')\n }\n if (!tail || tail.length === 0) return head\n const len = tail.length\n let result = tail[len - 1][3]\n for (let i = len - 1; i >= 0; i--) {\n const left = i === 0 ? head : tail[i - 1][3]\n result = createBinaryExpr(tail[i][1], left, result)\n }\n return result\n },\n peg$c358 = function(head, tail) {\n const len = tail.length\n let result = head;\n let seperator = ''\n for (let i = 0; i < len; ++i) {\n if (tail[i][1] === ',') {\n seperator = ','\n if (!Array.isArray(result)) result = [result]\n result.push(tail[i][3])\n } else {\n result = createBinaryExpr(tail[i][1], result, tail[i][3]);\n }\n }\n if (seperator === ',') {\n const el = { type: 'expr_list' }\n el.value = result\n return el\n }\n return result\n },\n peg$c359 = function(head, tail) {\n return createBinaryExprChain(head, tail);\n },\n peg$c360 = \"!\",\n peg$c361 = peg$literalExpectation(\"!\", false),\n peg$c362 = function(expr) {\n return createUnaryExpr('NOT', expr);\n },\n peg$c363 = function(left, rh) {\n if (rh === null) return left;\n else if (rh.type === 'arithmetic') return createBinaryExprChain(left, rh.tail);\n else return createBinaryExpr(rh.op, left, rh.right);\n },\n peg$c364 = function(op, stmt) {\n stmt.parentheses = true;\n return createUnaryExpr(op, stmt);\n },\n peg$c365 = function(nk) { return nk[0] + ' ' + nk[2]; },\n peg$c366 = function(l) {\n return { type: 'arithmetic', tail: l };\n },\n peg$c367 = \">=\",\n peg$c368 = peg$literalExpectation(\">=\", false),\n peg$c369 = \">\",\n peg$c370 = peg$literalExpectation(\">\", false),\n peg$c371 = \"<=\",\n peg$c372 = peg$literalExpectation(\"<=\", false),\n peg$c373 = \"<>\",\n peg$c374 = peg$literalExpectation(\"<>\", false),\n peg$c375 = \"<\",\n peg$c376 = peg$literalExpectation(\"<\", false),\n peg$c377 = \"==\",\n peg$c378 = peg$literalExpectation(\"==\", false),\n peg$c379 = \"!=\",\n peg$c380 = peg$literalExpectation(\"!=\", false),\n peg$c381 = function(right) {\n return { op: 'IS', right: right };\n },\n peg$c382 = function(right) {\n return { op: 'IS NOT', right: right };\n },\n peg$c383 = function(op, begin, end) {\n return {\n op: op,\n right: {\n type: 'expr_list',\n value: [begin, end]\n }\n };\n },\n peg$c384 = function(n, k) {\n return n ? `${n} ${k}` : k\n },\n peg$c385 = \"escape\",\n peg$c386 = peg$literalExpectation(\"ESCAPE\", true),\n peg$c387 = function(kw, c) {\n // => { type: 'ESCAPE'; value: literal_string }\n return {\n type: 'ESCAPE',\n value: c,\n }\n },\n peg$c388 = function(op, b, e) {\n return { op: b ? `${op} ${b}` : op, right: e };\n },\n peg$c389 = \"glob\",\n peg$c390 = peg$literalExpectation(\"glob\", true),\n peg$c391 = function(e) {\n return { op: 'GLOB', right: e }\n },\n peg$c392 = function(op, right, es) {\n if (es) right.escape = es\n return { op: op, right: right };\n },\n peg$c393 = function(op, l) {\n return { op: op, right: l };\n },\n peg$c394 = function(op, e) {\n return { op: op, right: e };\n },\n peg$c395 = function(head, tail) {\n if (tail && tail.length && head.type === 'column_ref' && head.column === '*') throw new Error(JSON.stringify({\n message: 'args could not be star column in additive expr',\n ...getLocationObject(),\n }))\n return createBinaryExprChain(head, tail);\n },\n peg$c396 = \"+\",\n peg$c397 = peg$literalExpectation(\"+\", false),\n peg$c398 = \"-\",\n peg$c399 = peg$literalExpectation(\"-\", false),\n peg$c400 = function(head, tail) {\n return createBinaryExprChain(head, tail)\n },\n peg$c401 = \"*\",\n peg$c402 = peg$literalExpectation(\"*\", false),\n peg$c403 = \"/\",\n peg$c404 = peg$literalExpectation(\"/\", false),\n peg$c405 = \"%\",\n peg$c406 = peg$literalExpectation(\"%\", false),\n peg$c407 = \"||\",\n peg$c408 = peg$literalExpectation(\"||\", false),\n peg$c409 = function(list) {\n list.parentheses = true;\n return list;\n },\n peg$c410 = \"?\",\n peg$c411 = peg$literalExpectation(\"?\", false),\n peg$c412 = function(prepared_symbol) {\n return {\n type: 'origin',\n value: prepared_symbol\n }\n },\n peg$c413 = function(op, tail) {\n // if (op === '!') op = 'NOT'\n return createUnaryExpr(op, tail[1])\n },\n peg$c414 = \"~\",\n peg$c415 = peg$literalExpectation(\"~\", false),\n peg$c416 = \"?|\",\n peg$c417 = peg$literalExpectation(\"?|\", false),\n peg$c418 = \"?&\",\n peg$c419 = peg$literalExpectation(\"?&\", false),\n peg$c420 = \"#-\",\n peg$c421 = peg$literalExpectation(\"#-\", false),\n peg$c422 = \"#>>\",\n peg$c423 = peg$literalExpectation(\"#>>\", false),\n peg$c424 = \"#>\",\n peg$c425 = peg$literalExpectation(\"#>\", false),\n peg$c426 = \"@>\",\n peg$c427 = peg$literalExpectation(\"@>\", false),\n peg$c428 = \"<@\",\n peg$c429 = peg$literalExpectation(\"<@\", false),\n peg$c430 = function(head, tail) {\n // => primary | binary_expr\n if (!tail || tail.length === 0) return head\n return createBinaryExprChain(head, tail)\n },\n peg$c431 = function(tbl, col, ce) {\n columnList.add(`select::${tbl}::${col}`);\n return {\n type: 'column_ref',\n table: tbl,\n column: col,\n collate: ce && ce[1],\n };\n },\n peg$c432 = function(col, ce) {\n columnList.add(`select::null::${col}`);\n return {\n type: 'column_ref',\n table: null,\n column: col,\n collate: ce && ce[1],\n };\n },\n peg$c433 = function(n) {\n return { type: 'default', value: n }\n },\n peg$c434 = function(name) { return reservedMap[name.toUpperCase()] === true; },\n peg$c435 = function(name) {\n return { type: 'default', value: name }\n },\n peg$c436 = function(name) {\n return name;\n },\n peg$c437 = function(name) {\n if (reservedMap[name.toUpperCase()] === true) throw new Error(\"Error: \"+ JSON.stringify(name)+\" is a reserved word, can not as alias clause\");\n return false\n },\n peg$c438 = function(v) {\n return v.value\n },\n peg$c439 = \"\\\"\",\n peg$c440 = peg$literalExpectation(\"\\\"\", false),\n peg$c441 = /^[^\"]/,\n peg$c442 = peg$classExpectation([\"\\\"\"], true, false),\n peg$c443 = function(chars) {\n return {\n type: 'double_quote_string',\n value: chars.join('')\n }\n },\n peg$c444 = /^[^']/,\n peg$c445 = peg$classExpectation([\"'\"], true, false),\n peg$c446 = function(chars) {\n return {\n type: 'single_quote_string',\n value: chars.join('')\n }\n },\n peg$c447 = \"`\",\n peg$c448 = peg$literalExpectation(\"`\", false),\n peg$c449 = /^[^`]/,\n peg$c450 = peg$classExpectation([\"`\"], true, false),\n peg$c451 = function(chars) {\n return {\n type: 'backticks_quote_string',\n value: chars.join('')\n }\n },\n peg$c452 = function(name) {\n return name;\n },\n peg$c453 = function(name) { return name; },\n peg$c454 = function(start, parts) { return start + parts.join(''); },\n peg$c455 = /^[A-Za-z_]/,\n peg$c456 = peg$classExpectation([[\"A\", \"Z\"], [\"a\", \"z\"], \"_\"], false, false),\n peg$c457 = /^[A-Za-z0-9_]/,\n peg$c458 = peg$classExpectation([[\"A\", \"Z\"], [\"a\", \"z\"], [\"0\", \"9\"], \"_\"], false, false),\n peg$c459 = /^[A-Za-z0-9_:]/,\n peg$c460 = peg$classExpectation([[\"A\", \"Z\"], [\"a\", \"z\"], [\"0\", \"9\"], \"_\", \":\"], false, false),\n peg$c461 = \":\",\n peg$c462 = peg$literalExpectation(\":\", false),\n peg$c463 = function(l) {\n return { type: 'param', value: l[1] };\n },\n peg$c464 = function(name, e, bc) {\n return {\n type: 'aggr_func',\n name: name,\n args: {\n expr: e\n },\n over: bc,\n ...getLocationObject(),\n };\n },\n peg$c465 = function(kw, l) {\n return {\n type: 'on update',\n keyword: kw,\n parentheses: true,\n expr: l\n }\n },\n peg$c466 = function(kw) {\n return {\n type: 'on update',\n keyword: kw,\n }\n },\n peg$c467 = function(bc, l) {\n return {\n partitionby: bc,\n orderby: l\n }\n },\n peg$c468 = function(name, arg, bc) {\n return {\n type: 'aggr_func',\n name: name,\n args: arg,\n over: bc\n };\n },\n peg$c469 = function(e) { return { expr: e }; },\n peg$c470 = function(d, c, tail, or) {\n const len = tail.length\n let result = c\n result.parentheses = true\n for (let i = 0; i < len; ++i) {\n result = createBinaryExpr(tail[i][1], result, tail[i][3])\n }\n return {\n distinct: d,\n expr: result,\n orderby: or,\n };\n },\n peg$c471 = function(d, c, or) { return { distinct: d, expr: c, orderby: or }; },\n peg$c472 = function() { return { type: 'star', value: '*' }; },\n peg$c473 = function(name, l, bc) {\n return {\n type: 'function',\n name: { name: [{ type: 'default', value: name }] },\n args: l ? l: { type: 'expr_list', value: [] },\n over: bc,\n ...getLocationObject(),\n };\n },\n peg$c474 = function(f, up) {\n return {\n type: 'function',\n name: { name: [{ type: 'origin', value: f }] },\n over: up,\n ...getLocationObject(),\n }\n },\n peg$c475 = function(name, l, bc) {\n if (l && l.type !== 'expr_list') l = { type: 'expr_list', value: [l] }\n return {\n type: 'function',\n name: name,\n args: l ? l: { type: 'expr_list', value: [] },\n over: bc,\n ...getLocationObject(),\n };\n },\n peg$c476 = function(c, e, t) {\n return {\n type: 'cast',\n keyword: c.toLowerCase(),\n expr: e,\n symbol: 'as',\n target: [t]\n };\n },\n peg$c477 = function(c, e, precision) {\n return {\n type: 'cast',\n keyword: c.toLowerCase(),\n expr: e,\n symbol: 'as',\n target: [{\n dataType: 'DECIMAL(' + precision + ')'\n }]\n };\n },\n peg$c478 = function(c, e, precision, scale) {\n return {\n type: 'cast',\n keyword: c.toLowerCase(),\n expr: e,\n symbol: 'as',\n target: [{\n dataType: 'DECIMAL(' + precision + ', ' + scale + ')'\n }]\n };\n },\n peg$c479 = function(c, e, s, t) { /* MySQL cast to un-/signed integer */\n return {\n type: 'cast',\n keyword: c.toLowerCase(),\n expr: e,\n symbol: 'as',\n target: [{\n dataType: s + (t ? ' ' + t: '')\n }]\n };\n },\n peg$c480 = function(b, s, ca) {\n if (b) s.prefix = b.toLowerCase()\n if (ca) s.suffix = { collate: ca[1] }\n return s\n },\n peg$c481 = function() {\n return { type: 'null', value: null };\n },\n peg$c482 = function() {\n return {\n type: 'not null',\n value: 'not null',\n }\n },\n peg$c483 = function() {\n return { type: 'bool', value: true };\n },\n peg$c484 = function() {\n return { type: 'bool', value: false };\n },\n peg$c485 = \"_binary\",\n peg$c486 = peg$literalExpectation(\"_binary\", true),\n peg$c487 = \"x\",\n peg$c488 = peg$literalExpectation(\"X\", true),\n peg$c489 = /^[0-9A-Fa-f]/,\n peg$c490 = peg$classExpectation([[\"0\", \"9\"], [\"A\", \"F\"], [\"a\", \"f\"]], false, false),\n peg$c491 = function(b, r, ca) {\n return {\n type: 'hex_string',\n prefix: b,\n value: ca[1].join('')\n };\n },\n peg$c492 = \"b\",\n peg$c493 = peg$literalExpectation(\"b\", true),\n peg$c494 = function(b, r, ca) {\n return {\n type: 'bit_string',\n prefix: b,\n value: ca[1].join('')\n };\n },\n peg$c495 = \"0x\",\n peg$c496 = peg$literalExpectation(\"0x\", false),\n peg$c497 = function(b, r, ca) {\n return {\n type: 'full_hex_string',\n prefix: b,\n value: ca.join('')\n };\n },\n peg$c498 = function(ca) {\n return {\n type: 'single_quote_string',\n value: ca[1].join('')\n };\n },\n peg$c499 = function(ca) {\n return {\n type: 'double_quote_string',\n value: ca[1].join('')\n };\n },\n peg$c500 = function(type, ca) {\n return {\n type: type.toLowerCase(),\n value: ca[1].join('')\n };\n },\n peg$c501 = /^[^\"\\\\\\0-\\x1F\\x7F]/,\n peg$c502 = peg$classExpectation([\"\\\"\", \"\\\\\", [\"\\0\", \"\\x1F\"], \"\\x7F\"], true, false),\n peg$c503 = \"''\",\n peg$c504 = peg$literalExpectation(\"''\", false),\n peg$c505 = /^[\\n\\r]/,\n peg$c506 = peg$classExpectation([\"\\n\", \"\\r\"], false, false),\n peg$c507 = function(n) {\n if (n && n.type === 'bigint') return n\n return { type: 'number', value: n };\n },\n peg$c508 = function(int_, frac, exp) {\n const numStr = int_ + frac + exp\n return {\n type: 'bigint',\n value: numStr\n }\n },\n peg$c509 = function(int_, frac) {\n const numStr = int_ + frac\n if (isBigInt(int_)) return {\n type: 'bigint',\n value: numStr\n }\n const fixed = frac.length >= 1 ? frac.length - 1 : 0\n return parseFloat(numStr).toFixed(fixed);\n },\n peg$c510 = function(int_, exp) {\n const numStr = int_ + exp\n return {\n type: 'bigint',\n value: numStr\n }\n },\n peg$c511 = function(int_) {\n if (isBigInt(int_)) return {\n type: 'bigint',\n value: int_\n }\n return parseFloat(int_);\n },\n peg$c512 = function(op, digits) { return op + digits; },\n peg$c513 = function(op, digit) { return op + digit; },\n peg$c514 = \".\",\n peg$c515 = peg$literalExpectation(\".\", false),\n peg$c516 = function(digits) {\n if (!digits) return ''\n return \".\" + digits;\n },\n peg$c517 = function(e, digits) { return e + digits; },\n peg$c518 = function(digits) { return digits.join(\"\"); },\n peg$c519 = /^[0-9]/,\n peg$c520 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n peg$c521 = /^[0-9a-fA-F]/,\n peg$c522 = peg$classExpectation([[\"0\", \"9\"], [\"a\", \"f\"], [\"A\", \"F\"]], false, false),\n peg$c523 = /^[eE]/,\n peg$c524 = peg$classExpectation([\"e\", \"E\"], false, false),\n peg$c525 = /^[+\\-]/,\n peg$c526 = peg$classExpectation([\"+\", \"-\"], false, false),\n peg$c527 = function(e, sign) { return e + (sign !== null ? sign: ''); },\n peg$c528 = \"analyze\",\n peg$c529 = peg$literalExpectation(\"ANALYZE\", true),\n peg$c530 = function() { return 'ANALYZE'; },\n peg$c531 = \"attach\",\n peg$c532 = peg$literalExpectation(\"ATTACH\", true),\n peg$c533 = function() { return 'ATTACH'; },\n peg$c534 = \"null\",\n peg$c535 = peg$literalExpectation(\"NULL\", true),\n peg$c536 = \"not null\",\n peg$c537 = peg$literalExpectation(\"NOT NULL\", true),\n peg$c538 = \"true\",\n peg$c539 = peg$literalExpectation(\"TRUE\", true),\n peg$c540 = \"to\",\n peg$c541 = peg$literalExpectation(\"TO\", true),\n peg$c542 = \"false\",\n peg$c543 = peg$literalExpectation(\"FALSE\", true),\n peg$c544 = \"show\",\n peg$c545 = peg$literalExpectation(\"SHOW\", true),\n peg$c546 = \"drop\",\n peg$c547 = peg$literalExpectation(\"DROP\", true),\n peg$c548 = function() { return 'DROP'; },\n peg$c549 = \"use\",\n peg$c550 = peg$literalExpectation(\"USE\", true),\n peg$c551 = \"alter\",\n peg$c552 = peg$literalExpectation(\"ALTER\", true),\n peg$c553 = \"select\",\n peg$c554 = peg$literalExpectation(\"SELECT\", true),\n peg$c555 = \"update\",\n peg$c556 = peg$literalExpectation(\"UPDATE\", true),\n peg$c557 = \"create\",\n peg$c558 = peg$literalExpectation(\"CREATE\", true),\n peg$c559 = \"temporary\",\n peg$c560 = peg$literalExpectation(\"TEMPORARY\", true),\n peg$c561 = \"temp\",\n peg$c562 = peg$literalExpectation(\"TEMP\", true),\n peg$c563 = \"delete\",\n peg$c564 = peg$literalExpectation(\"DELETE\", true),\n peg$c565 = \"insert\",\n peg$c566 = peg$literalExpectation(\"INSERT\", true),\n peg$c567 = \"recursive\",\n peg$c568 = peg$literalExpectation(\"RECURSIVE\", true),\n peg$c569 = \"rename\",\n peg$c570 = peg$literalExpectation(\"RENAME\", true),\n peg$c571 = \"returning\",\n peg$c572 = peg$literalExpectation(\"RETURNING\", true),\n peg$c573 = function() { return 'RETURNING' },\n peg$c574 = \"explain\",\n peg$c575 = peg$literalExpectation(\"EXPLAIN\", true),\n peg$c576 = \"partition\",\n peg$c577 = peg$literalExpectation(\"PARTITION\", true),\n peg$c578 = function() { return 'PARTITION' },\n peg$c579 = \"into\",\n peg$c580 = peg$literalExpectation(\"INTO\", true),\n peg$c581 = \"from\",\n peg$c582 = peg$literalExpectation(\"FROM\", true),\n peg$c583 = function() { return 'SET' },\n peg$c584 = \"unlock\",\n peg$c585 = peg$literalExpectation(\"UNLOCK\", true),\n peg$c586 = \"as\",\n peg$c587 = peg$literalExpectation(\"AS\", true),\n peg$c588 = \"table\",\n peg$c589 = peg$literalExpectation(\"TABLE\", true),\n peg$c590 = function() { return 'TABLE'; },\n peg$c591 = \"tables\",\n peg$c592 = peg$literalExpectation(\"TABLES\", true),\n peg$c593 = function() { return 'TABLES'; },\n peg$c594 = \"database\",\n peg$c595 = peg$literalExpectation(\"DATABASE\", true),\n peg$c596 = function() { return 'DATABASE'; },\n peg$c597 = \"schema\",\n peg$c598 = peg$literalExpectation(\"SCHEMA\", true),\n peg$c599 = function() { return 'SCHEMA'; },\n peg$c600 = function() { return 'COLLATE'; },\n peg$c601 = \"left\",\n peg$c602 = peg$literalExpectation(\"LEFT\", true),\n peg$c603 = \"inner\",\n peg$c604 = peg$literalExpectation(\"INNER\", true),\n peg$c605 = \"join\",\n peg$c606 = peg$literalExpectation(\"JOIN\", true),\n peg$c607 = \"outer\",\n peg$c608 = peg$literalExpectation(\"OUTER\", true),\n peg$c609 = \"over\",\n peg$c610 = peg$literalExpectation(\"OVER\", true),\n peg$c611 = \"union\",\n peg$c612 = peg$literalExpectation(\"UNION\", true),\n peg$c613 = \"values\",\n peg$c614 = peg$literalExpectation(\"VALUES\", true),\n peg$c615 = \"using\",\n peg$c616 = peg$literalExpectation(\"USING\", true),\n peg$c617 = \"where\",\n peg$c618 = peg$literalExpectation(\"WHERE\", true),\n peg$c619 = \"group\",\n peg$c620 = peg$literalExpectation(\"GROUP\", true),\n peg$c621 = \"by\",\n peg$c622 = peg$literalExpectation(\"BY\", true),\n peg$c623 = \"order\",\n peg$c624 = peg$literalExpectation(\"ORDER\", true),\n peg$c625 = \"having\",\n peg$c626 = peg$literalExpectation(\"HAVING\", true),\n peg$c627 = \"limit\",\n peg$c628 = peg$literalExpectation(\"LIMIT\", true),\n peg$c629 = \"offset\",\n peg$c630 = peg$literalExpectation(\"OFFSET\", true),\n peg$c631 = function() { return 'OFFSET'; },\n peg$c632 = \"asc\",\n peg$c633 = peg$literalExpectation(\"ASC\", true),\n peg$c634 = function() { return 'ASC'; },\n peg$c635 = \"desc\",\n peg$c636 = peg$literalExpectation(\"DESC\", true),\n peg$c637 = function() { return 'DESC'; },\n peg$c638 = \"describe\",\n peg$c639 = peg$literalExpectation(\"DESCRIBE\", true),\n peg$c640 = function() { return 'DESCRIBE'; },\n peg$c641 = \"all\",\n peg$c642 = peg$literalExpectation(\"ALL\", true),\n peg$c643 = function() { return 'ALL'; },\n peg$c644 = \"distinct\",\n peg$c645 = peg$literalExpectation(\"DISTINCT\", true),\n peg$c646 = function() { return 'DISTINCT';},\n peg$c647 = \"between\",\n peg$c648 = peg$literalExpectation(\"BETWEEN\", true),\n peg$c649 = function() { return 'BETWEEN'; },\n peg$c650 = \"in\",\n peg$c651 = peg$literalExpectation(\"IN\", true),\n peg$c652 = function() { return 'IN'; },\n peg$c653 = \"is\",\n peg$c654 = peg$literalExpectation(\"IS\", true),\n peg$c655 = function() { return 'IS'; },\n peg$c656 = \"like\",\n peg$c657 = peg$literalExpectation(\"LIKE\", true),\n peg$c658 = function() { return 'LIKE'; },\n peg$c659 = \"rlike\",\n peg$c660 = peg$literalExpectation(\"RLIKE\", true),\n peg$c661 = function() { return 'RLIKE'; },\n peg$c662 = \"regexp\",\n peg$c663 = peg$literalExpectation(\"REGEXP\", true),\n peg$c664 = function() { return 'REGEXP'; },\n peg$c665 = peg$literalExpectation(\"EXISTS\", true),\n peg$c666 = function() { return 'EXISTS'; },\n peg$c667 = function() { return 'NOT'; },\n peg$c668 = \"and\",\n peg$c669 = peg$literalExpectation(\"AND\", true),\n peg$c670 = function() { return 'AND'; },\n peg$c671 = \"or\",\n peg$c672 = peg$literalExpectation(\"OR\", true),\n peg$c673 = function() { return 'OR'; },\n peg$c674 = \"count\",\n peg$c675 = peg$literalExpectation(\"COUNT\", true),\n peg$c676 = function() { return 'COUNT'; },\n peg$c677 = \"max\",\n peg$c678 = peg$literalExpectation(\"MAX\", true),\n peg$c679 = function() { return 'MAX'; },\n peg$c680 = \"min\",\n peg$c681 = peg$literalExpectation(\"MIN\", true),\n peg$c682 = function() { return 'MIN'; },\n peg$c683 = \"sum\",\n peg$c684 = peg$literalExpectation(\"SUM\", true),\n peg$c685 = function() { return 'SUM'; },\n peg$c686 = \"avg\",\n peg$c687 = peg$literalExpectation(\"AVG\", true),\n peg$c688 = function() { return 'AVG'; },\n peg$c689 = \"call\",\n peg$c690 = peg$literalExpectation(\"CALL\", true),\n peg$c691 = function() { return 'CALL'; },\n peg$c692 = \"case\",\n peg$c693 = peg$literalExpectation(\"CASE\", true),\n peg$c694 = \"when\",\n peg$c695 = peg$literalExpectation(\"WHEN\", true),\n peg$c696 = \"then\",\n peg$c697 = peg$literalExpectation(\"THEN\", true),\n peg$c698 = \"else\",\n peg$c699 = peg$literalExpectation(\"ELSE\", true),\n peg$c700 = \"cast\",\n peg$c701 = peg$literalExpectation(\"CAST\", true),\n peg$c702 = function() { return 'CAST' },\n peg$c703 = \"bit\",\n peg$c704 = peg$literalExpectation(\"BIT\", true),\n peg$c705 = function() { return 'BIT'; },\n peg$c706 = \"char\",\n peg$c707 = peg$literalExpectation(\"CHAR\", true),\n peg$c708 = function() { return 'CHAR'; },\n peg$c709 = \"varchar\",\n peg$c710 = peg$literalExpectation(\"VARCHAR\", true),\n peg$c711 = function() { return 'VARCHAR';},\n peg$c712 = \"numeric\",\n peg$c713 = peg$literalExpectation(\"NUMERIC\", true),\n peg$c714 = function() { return 'NUMERIC'; },\n peg$c715 = \"decimal\",\n peg$c716 = peg$literalExpectation(\"DECIMAL\", true),\n peg$c717 = function() { return 'DECIMAL'; },\n peg$c718 = \"signed\",\n peg$c719 = peg$literalExpectation(\"SIGNED\", true),\n peg$c720 = function() { return 'SIGNED'; },\n peg$c721 = \"unsigned\",\n peg$c722 = peg$literalExpectation(\"UNSIGNED\", true),\n peg$c723 = function() { return 'UNSIGNED'; },\n peg$c724 = \"int\",\n peg$c725 = peg$literalExpectation(\"INT\", true),\n peg$c726 = function() { return 'INT'; },\n peg$c727 = \"zerofill\",\n peg$c728 = peg$literalExpectation(\"ZEROFILL\", true),\n peg$c729 = function() { return 'ZEROFILL'; },\n peg$c730 = \"integer\",\n peg$c731 = peg$literalExpectation(\"INTEGER\", true),\n peg$c732 = function() { return 'INTEGER'; },\n peg$c733 = \"json\",\n peg$c734 = peg$literalExpectation(\"JSON\", true),\n peg$c735 = function() { return 'JSON'; },\n peg$c736 = \"smallint\",\n peg$c737 = peg$literalExpectation(\"SMALLINT\", true),\n peg$c738 = function() { return 'SMALLINT'; },\n peg$c739 = \"tinyint\",\n peg$c740 = peg$literalExpectation(\"TINYINT\", true),\n peg$c741 = function() { return 'TINYINT'; },\n peg$c742 = \"tinytext\",\n peg$c743 = peg$literalExpectation(\"TINYTEXT\", true),\n peg$c744 = function() { return 'TINYTEXT'; },\n peg$c745 = \"text\",\n peg$c746 = peg$literalExpectation(\"TEXT\", true),\n peg$c747 = function() { return 'TEXT'; },\n peg$c748 = \"mediumtext\",\n peg$c749 = peg$literalExpectation(\"MEDIUMTEXT\", true),\n peg$c750 = function() { return 'MEDIUMTEXT'; },\n peg$c751 = \"longtext\",\n peg$c752 = peg$literalExpectation(\"LONGTEXT\", true),\n peg$c753 = function() { return 'LONGTEXT'; },\n peg$c754 = \"bigint\",\n peg$c755 = peg$literalExpectation(\"BIGINT\", true),\n peg$c756 = function() { return 'BIGINT'; },\n peg$c757 = \"enum\",\n peg$c758 = peg$literalExpectation(\"ENUM\", true),\n peg$c759 = function() { return 'ENUM'; },\n peg$c760 = \"float\",\n peg$c761 = peg$literalExpectation(\"FLOAT\", true),\n peg$c762 = function() { return 'FLOAT'; },\n peg$c763 = \"double\",\n peg$c764 = peg$literalExpectation(\"DOUBLE\", true),\n peg$c765 = function() { return 'DOUBLE'; },\n peg$c766 = \"real\",\n peg$c767 = peg$literalExpectation(\"REAL\", true),\n peg$c768 = function() { return 'REAL'; },\n peg$c769 = \"date\",\n peg$c770 = peg$literalExpectation(\"DATE\", true),\n peg$c771 = function() { return 'DATE'; },\n peg$c772 = \"datetime\",\n peg$c773 = peg$literalExpectation(\"DATETIME\", true),\n peg$c774 = function() { return 'DATETIME'; },\n peg$c775 = \"time\",\n peg$c776 = peg$literalExpectation(\"TIME\", true),\n peg$c777 = function() { return 'TIME'; },\n peg$c778 = \"timestamp\",\n peg$c779 = peg$literalExpectation(\"TIMESTAMP\", true),\n peg$c780 = function() { return 'TIMESTAMP'; },\n peg$c781 = \"truncate\",\n peg$c782 = peg$literalExpectation(\"TRUNCATE\", true),\n peg$c783 = function() { return 'TRUNCATE'; },\n peg$c784 = \"user\",\n peg$c785 = peg$literalExpectation(\"USER\", true),\n peg$c786 = function() { return 'USER'; },\n peg$c787 = \"current_date\",\n peg$c788 = peg$literalExpectation(\"CURRENT_DATE\", true),\n peg$c789 = function() { return 'CURRENT_DATE'; },\n peg$c790 = \"adddate\",\n peg$c791 = peg$literalExpectation(\"ADDDATE\", true),\n peg$c792 = function() { return 'ADDDATE'; },\n peg$c793 = \"interval\",\n peg$c794 = peg$literalExpectation(\"INTERVAL\", true),\n peg$c795 = function() { return 'INTERVAL'; },\n peg$c796 = \"year\",\n peg$c797 = peg$literalExpectation(\"YEAR\", true),\n peg$c798 = function() { return 'YEAR'; },\n peg$c799 = \"month\",\n peg$c800 = peg$literalExpectation(\"MONTH\", true),\n peg$c801 = function() { return 'MONTH'; },\n peg$c802 = \"day\",\n peg$c803 = peg$literalExpectation(\"DAY\", true),\n peg$c804 = function() { return 'DAY'; },\n peg$c805 = \"hour\",\n peg$c806 = peg$literalExpectation(\"HOUR\", true),\n peg$c807 = function() { return 'HOUR'; },\n peg$c808 = \"minute\",\n peg$c809 = peg$literalExpectation(\"MINUTE\", true),\n peg$c810 = function() { return 'MINUTE'; },\n peg$c811 = \"second\",\n peg$c812 = peg$literalExpectation(\"SECOND\", true),\n peg$c813 = function() { return 'SECOND'; },\n peg$c814 = \"current_time\",\n peg$c815 = peg$literalExpectation(\"CURRENT_TIME\", true),\n peg$c816 = function() { return 'CURRENT_TIME'; },\n peg$c817 = \"current_timestamp\",\n peg$c818 = peg$literalExpectation(\"CURRENT_TIMESTAMP\", true),\n peg$c819 = function() { return 'CURRENT_TIMESTAMP'; },\n peg$c820 = \"current_user\",\n peg$c821 = peg$literalExpectation(\"CURRENT_USER\", true),\n peg$c822 = function() { return 'CURRENT_USER'; },\n peg$c823 = \"session_user\",\n peg$c824 = peg$literalExpectation(\"SESSION_USER\", true),\n peg$c825 = function() { return 'SESSION_USER'; },\n peg$c826 = \"system_user\",\n peg$c827 = peg$literalExpectation(\"SYSTEM_USER\", true),\n peg$c828 = function() { return 'SYSTEM_USER'; },\n peg$c829 = \"global\",\n peg$c830 = peg$literalExpectation(\"GLOBAL\", true),\n peg$c831 = function() { return 'GLOBAL'; },\n peg$c832 = \"session\",\n peg$c833 = peg$literalExpectation(\"SESSION\", true),\n peg$c834 = function() { return 'SESSION'; },\n peg$c835 = function() { return 'LOCAL'; },\n peg$c836 = \"persist\",\n peg$c837 = peg$literalExpectation(\"PERSIST\", true),\n peg$c838 = function() { return 'PERSIST'; },\n peg$c839 = \"persist_only\",\n peg$c840 = peg$literalExpectation(\"PERSIST_ONLY\", true),\n peg$c841 = function() { return 'PERSIST_ONLY'; },\n peg$c842 = \"view\",\n peg$c843 = peg$literalExpectation(\"VIEW\", true),\n peg$c844 = function() { return 'VIEW'; },\n peg$c845 = \"@\",\n peg$c846 = peg$literalExpectation(\"@\", false),\n peg$c847 = \"@@\",\n peg$c848 = peg$literalExpectation(\"@@\", false),\n peg$c849 = \"$\",\n peg$c850 = peg$literalExpectation(\"$\", false),\n peg$c851 = \"return\",\n peg$c852 = peg$literalExpectation(\"return\", true),\n peg$c853 = \":=\",\n peg$c854 = peg$literalExpectation(\":=\", false),\n peg$c855 = \"dual\",\n peg$c856 = peg$literalExpectation(\"DUAL\", true),\n peg$c857 = \"add\",\n peg$c858 = peg$literalExpectation(\"ADD\", true),\n peg$c859 = function() { return 'ADD'; },\n peg$c860 = \"column\",\n peg$c861 = peg$literalExpectation(\"COLUMN\", true),\n peg$c862 = function() { return 'COLUMN'; },\n peg$c863 = \"index\",\n peg$c864 = peg$literalExpectation(\"INDEX\", true),\n peg$c865 = function() { return 'INDEX'; },\n peg$c866 = \"modify\",\n peg$c867 = peg$literalExpectation(\"MODIFY\", true),\n peg$c868 = function() { return 'MODIFY'; },\n peg$c869 = function() { return 'KEY'; },\n peg$c870 = \"fulltext\",\n peg$c871 = peg$literalExpectation(\"FULLTEXT\", true),\n peg$c872 = function() { return 'FULLTEXT'; },\n peg$c873 = \"spatial\",\n peg$c874 = peg$literalExpectation(\"SPATIAL\", true),\n peg$c875 = function() { return 'SPATIAL'; },\n peg$c876 = function() { return 'UNIQUE'; },\n peg$c877 = function() { return 'KEY_BLOCK_SIZE'; },\n peg$c878 = \"comment\",\n peg$c879 = peg$literalExpectation(\"COMMENT\", true),\n peg$c880 = function() { return 'COMMENT'; },\n peg$c881 = \"constraint\",\n peg$c882 = peg$literalExpectation(\"CONSTRAINT\", true),\n peg$c883 = function() { return 'CONSTRAINT'; },\n peg$c884 = \"references\",\n peg$c885 = peg$literalExpectation(\"REFERENCES\", true),\n peg$c886 = function() { return 'REFERENCES'; },\n peg$c887 = \"sql_calc_found_rows\",\n peg$c888 = peg$literalExpectation(\"SQL_CALC_FOUND_ROWS\", true),\n peg$c889 = \"sql_cache\",\n peg$c890 = peg$literalExpectation(\"SQL_CACHE\", true),\n peg$c891 = \"sql_no_cache\",\n peg$c892 = peg$literalExpectation(\"SQL_NO_CACHE\", true),\n peg$c893 = \"sql_small_result\",\n peg$c894 = peg$literalExpectation(\"SQL_SMALL_RESULT\", true),\n peg$c895 = \"sql_big_result\",\n peg$c896 = peg$literalExpectation(\"SQL_BIG_RESULT\", true),\n peg$c897 = \"sql_buffer_result\",\n peg$c898 = peg$literalExpectation(\"SQL_BUFFER_RESULT\", true),\n peg$c899 = \",\",\n peg$c900 = peg$literalExpectation(\",\", false),\n peg$c901 = \"[\",\n peg$c902 = peg$literalExpectation(\"[\", false),\n peg$c903 = \"]\",\n peg$c904 = peg$literalExpectation(\"]\", false),\n peg$c905 = \";\",\n peg$c906 = peg$literalExpectation(\";\", false),\n peg$c907 = \"->\",\n peg$c908 = peg$literalExpectation(\"->\", false),\n peg$c909 = \"->>\",\n peg$c910 = peg$literalExpectation(\"->>\", false),\n peg$c911 = \"&&\",\n peg$c912 = peg$literalExpectation(\"&&\", false),\n peg$c913 = \"/*\",\n peg$c914 = peg$literalExpectation(\"/*\", false),\n peg$c915 = \"*/\",\n peg$c916 = peg$literalExpectation(\"*/\", false),\n peg$c917 = \"--\",\n peg$c918 = peg$literalExpectation(\"--\", false),\n peg$c919 = \"#\",\n peg$c920 = peg$literalExpectation(\"#\", false),\n peg$c921 = function(k, s, c) {\n return {\n type: k.toLowerCase(),\n keyword: k.toLowerCase(),\n symbol: s,\n value: c,\n }\n },\n peg$c922 = peg$anyExpectation(),\n peg$c923 = /^[ \\t\\n\\r]/,\n peg$c924 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false),\n peg$c925 = function() { varList = []; return true; },\n peg$c926 = function(s) {\n return { stmt: s, vars: varList };\n },\n peg$c927 = function(va, s, e) {\n return {\n type: 'assign',\n left: va,\n symbol: s,\n right: e\n };\n },\n peg$c928 = function(e) {\n return { type: 'return', expr: e };\n },\n peg$c929 = function(lt, op, rt, expr) {\n return {\n type: 'join',\n ltable: lt,\n rtable: rt,\n op: op,\n on: expr\n };\n },\n peg$c930 = function(e) {\n e.parentheses = true;\n return e;\n },\n peg$c931 = function(dt, tail) {\n const result = { name: [dt] }\n if (tail !== null) {\n result.schema = dt\n result.name = [tail[3]]\n }\n return result\n },\n peg$c932 = function(name, l) {\n //compatible with original func_call\n return {\n type: 'function',\n name: name,\n args: {\n type: 'expr_list',\n value: l\n },\n ...getLocationObject(),\n };\n },\n peg$c933 = function(name) {\n return {\n type: 'function',\n name: name,\n args: null,\n ...getLocationObject(),\n };\n },\n peg$c934 = function(l) {\n return { type: 'array', value: l };\n },\n peg$c935 = function(p, d) {\n //push for analysis\n return {\n type: 'var',\n ...d,\n prefix: p\n };\n },\n peg$c936 = function(name, m) {\n //push for analysis\n varList.push(name);\n return {\n type: 'var',\n name: name,\n members: m,\n prefix: null,\n };\n },\n peg$c937 = function(n) {\n return {\n type: 'var',\n name: n.value,\n members: [],\n quoted: null,\n prefix: null,\n }\n },\n peg$c938 = function(l) {\n const s = [];\n for (let i = 0; i < l.length; i++) {\n s.push(l[i][1]);\n }\n return s;\n },\n peg$c939 = \"blob\",\n peg$c940 = peg$literalExpectation(\"blob\", true),\n peg$c941 = \"tinyblob\",\n peg$c942 = peg$literalExpectation(\"tinyblob\", true),\n peg$c943 = \"mediumblob\",\n peg$c944 = peg$literalExpectation(\"mediumblob\", true),\n peg$c945 = \"longblob\",\n peg$c946 = peg$literalExpectation(\"longblob\", true),\n peg$c947 = function(b) { return { dataType: b.toUpperCase() }; },\n peg$c948 = \"boolean\",\n peg$c949 = peg$literalExpectation(\"boolean\", true),\n peg$c950 = function() { return { dataType: 'BOOLEAN' }; },\n peg$c951 = function(t, l) {\n return { dataType: t, length: parseInt(l.join(''), 10), parentheses: true };\n },\n peg$c952 = function(t) { return { dataType: t }; },\n peg$c953 = function(un, ze) {\n const result = []\n if (un) result.push(un)\n if (ze) result.push(ze)\n return result\n },\n peg$c954 = function(t, l, r, s) { return { dataType: t, length: parseInt(l.join(''), 10), scale: r && parseInt(r[2].join(''), 10), parentheses: true, suffix: s }; },\n peg$c955 = function(t, l, s) { return { dataType: t, length: parseInt(l.join(''), 10), suffix: s }; },\n peg$c956 = function(t, s) { return { dataType: t, suffix: s }; },\n peg$c957 = /^[0-6]/,\n peg$c958 = peg$classExpectation([[\"0\", \"6\"]], false, false),\n peg$c959 = function(t, l, s) { return { dataType: t, length: parseInt(l, 10), parentheses: true }; },\n peg$c960 = function(t, e) {\n e.parentheses = true\n return {\n dataType: t,\n expr: e\n }\n },\n peg$c961 = function(t) { return { dataType: t }},\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1 }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos], p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemultiple_stmt();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecmd_stmt() {\n var s0;\n\n s0 = peg$parseanalyze_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseattach_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedrop_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetruncate_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parserename_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecall_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseuse_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsealter_table_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseset_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parselock_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunlock_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseshow_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedesc_stmt();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsecreate_stmt() {\n var s0;\n\n s0 = peg$parsecreate_table_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_db_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_index_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_trigger_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_view_stmt();\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsecrud_stmt() {\n var s0;\n\n s0 = peg$parseunion_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseupdate_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsereplace_insert_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseinsert_no_columns_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseinsert_into_set();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedelete_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecmd_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseproc_stmts();\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsemultiple_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsecrud_stmt();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseSEMICOLON();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecrud_stmt();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseSEMICOLON();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecrud_stmt();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseset_op() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_UNION();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ALL();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_DISTINCT();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseunion_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseselect_stmt();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseset_op();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseselect_stmt();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseset_op();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseselect_stmt();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseorder_by_clause();\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parselimit_clause();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c3(s1, s2, s4, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_db_definition() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parsecreate_option_character_set();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecreate_option_character_set();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecreate_option_character_set();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseif_not_exists_stmt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c5) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_NOT();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_EXISTS();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c7();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseif_exists() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c5) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c9) {\n s3 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_trigger_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CREATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TEMPORARY();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_TEMP();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c12) {\n s5 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseif_not_exists_stmt();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsetable_name();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c14) {\n s11 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s11 === peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c16) {\n s11 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s11 === peg$FAILED) {\n if (input.substr(peg$currPos, 10).toLowerCase() === peg$c18) {\n s11 = input.substr(peg$currPos, 10);\n peg$currPos += 10;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n }\n }\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parsetrigger_event_list();\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c20) {\n s15 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s15 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s15 !== peg$FAILED) {\n s16 = peg$parse__();\n if (s16 !== peg$FAILED) {\n s17 = peg$parsetable_name();\n if (s17 !== peg$FAILED) {\n s18 = peg$parse__();\n if (s18 !== peg$FAILED) {\n s19 = peg$parsetrigger_for_row();\n if (s19 === peg$FAILED) {\n s19 = null;\n }\n if (s19 !== peg$FAILED) {\n s20 = peg$parse__();\n if (s20 !== peg$FAILED) {\n s21 = peg$parsetrigger_when();\n if (s21 === peg$FAILED) {\n s21 = null;\n }\n if (s21 !== peg$FAILED) {\n s22 = peg$parse__();\n if (s22 !== peg$FAILED) {\n s23 = peg$parsetrigger_action();\n if (s23 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c22(s1, s3, s5, s7, s9, s11, s13, s15, s17, s19, s21, s23);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetrigger_event() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_INSERT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DELETE();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c23(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_UPDATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c24) {\n s4 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecolumn_ref_list();\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsetrigger_event_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsetrigger_event();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetrigger_event();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetrigger_event();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetrigger_action() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c28) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsemultiple_stmt();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c30) {\n s5 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c32(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetrigger_for_row() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c33) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c35) {\n s3 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c37) {\n s5 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n if (s5 === peg$FAILED) {\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c39) {\n s5 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c41(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetrigger_when() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_WHEN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexpr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c42(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_db_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CREATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_DATABASE();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_SCHEMA();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseif_not_exists_stmt();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseproc_func_name();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsecreate_db_definition();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c43(s1, s3, s5, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecolumn_order_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsecolumn_order_item();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn_order_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn_order_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecolumn_order_item() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseexpr();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecollate_expr();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_ASC();\n if (s5 === peg$FAILED) {\n s5 = peg$parseKW_DESC();\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c44(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsecolumn_order();\n }\n\n return s0;\n }\n\n function peg$parsecolumn_order() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsecolumn_ref();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASC();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_DESC();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c45(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_index_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CREATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_UNIQUE();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_INDEX();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseif_not_exists_stmt();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsetable_name();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseindex_type();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseKW_ON();\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsetable_name();\n if (s15 !== peg$FAILED) {\n s16 = peg$parse__();\n if (s16 !== peg$FAILED) {\n s17 = peg$parseLPAREN();\n if (s17 !== peg$FAILED) {\n s18 = peg$parse__();\n if (s18 !== peg$FAILED) {\n s19 = peg$parsecolumn_order_list();\n if (s19 !== peg$FAILED) {\n s20 = peg$parse__();\n if (s20 !== peg$FAILED) {\n s21 = peg$parseRPAREN();\n if (s21 !== peg$FAILED) {\n s22 = peg$parse__();\n if (s22 !== peg$FAILED) {\n s23 = peg$parsewhere_clause();\n if (s23 === peg$FAILED) {\n s23 = null;\n }\n if (s23 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c46(s1, s3, s5, s7, s9, s11, s13, s15, s19, s23);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseview_with() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_WITH();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c47) {\n s3 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c49) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c51) {\n s5 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c53) {\n s7 = peg$c53;\n peg$currPos += 6;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c55(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_WITH();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c51) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c53) {\n s5 = peg$c53;\n peg$currPos += 6;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c56();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecreate_view_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CREATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TEMP();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_TEMPORARY();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_VIEW();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseif_not_exists_stmt();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsetable_name();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$currPos;\n s12 = peg$parseLPAREN();\n if (s12 !== peg$FAILED) {\n s13 = peg$parse__();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsecolumn_list();\n if (s14 !== peg$FAILED) {\n s15 = peg$parse__();\n if (s15 !== peg$FAILED) {\n s16 = peg$parseRPAREN();\n if (s16 !== peg$FAILED) {\n s12 = [s12, s13, s14, s15, s16];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseKW_AS();\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n s15 = peg$parseselect_stmt_nake();\n if (s15 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c57(s1, s3, s7, s9, s11, s15);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_table_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CREATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TEMPORARY();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_TEMP();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_TABLE();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseif_not_exists_stmt();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsetable_name();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsecreate_table_definition();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parsetable_options();\n if (s13 === peg$FAILED) {\n s13 = null;\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c58(s1, s3, s7, s9, s11, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_CREATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TEMPORARY();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_TEMP();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_TABLE();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseif_not_exists_stmt();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsetable_name();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseKW_AS();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseselect_stmt();\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c59(s1, s3, s7, s9, s11, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecreate_like_table_simple() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_LIKE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_ref_list();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c60(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_like_table() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$parsecreate_like_table_simple();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseLPAREN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecreate_like_table();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseRPAREN();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c61(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecreate_table_definition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseLPAREN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecreate_definition();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseCOMMA();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsecreate_definition();\n if (s9 !== peg$FAILED) {\n s6 = [s6, s7, s8, s9];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseCOMMA();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsecreate_definition();\n if (s9 !== peg$FAILED) {\n s6 = [s6, s7, s8, s9];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseRPAREN();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_definition() {\n var s0;\n\n s0 = peg$parsecreate_constraint_definition();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_column_definition();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_index_definition();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_fulltext_spatial_index_definition();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsecolumn_definition_opt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseliteral_not_null();\n if (s1 === peg$FAILED) {\n s1 = peg$parseliteral_null();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c63(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedefault_expr();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c64(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 14).toLowerCase() === peg$c65) {\n s1 = input.substr(peg$currPos, 14);\n peg$currPos += 14;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 13).toLowerCase() === peg$c67) {\n s1 = input.substr(peg$currPos, 13);\n peg$currPos += 13;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c68); }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c69(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c70) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c71); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) {\n s3 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c74(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c75) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) {\n s3 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c77(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsekeyword_comment();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c78(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_CONSTRAINT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseident_without_kw_type();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c79(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecollate_expr();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c80(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecolumn_format();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c81(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsestorage();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c82(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsereference_definition();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c83(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecheck_constraint_definition();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c84(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecreate_option_character_set_kw();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseident_without_kw_type();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c85(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsecolumn_definition_opt_list() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parsecolumn_definition_opt();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecolumn_definition_opt();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecolumn_definition_opt();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c86(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_column_definition() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parsecolumn_without_kw();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsedata_type();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecolumn_definition_opt_list();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c87(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecollate_expr() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_COLLATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseident();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c88(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecolumn_format() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 13).toLowerCase() === peg$c89) {\n s1 = input.substr(peg$currPos, 13);\n peg$currPos += 13;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c91) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c93) {\n s3 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c94); }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c95) {\n s3 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c97(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsestorage() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c98) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c99); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c100) {\n s3 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c101); }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c102) {\n s3 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c103); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c104(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedefault_expr() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DEFAULT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexpr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c105(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseanalyze_stmt() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ANALYZE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_name();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c106(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseattach_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ATTACH();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_DATABASE();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_AS();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseident();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c107(s1, s3, s5, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedrop_index_opt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseALTER_ALGORITHM();\n if (s1 === peg$FAILED) {\n s1 = peg$parseALTER_LOCK();\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseALTER_ALGORITHM();\n if (s5 === peg$FAILED) {\n s5 = peg$parseALTER_LOCK();\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseALTER_ALGORITHM();\n if (s5 === peg$FAILED) {\n s5 = peg$parseALTER_LOCK();\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedrop_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DROP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TABLE();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseif_exists();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetable_ref_list();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c108(s1, s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_DROP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_VIEW();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseif_exists();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetable_ref_list();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c109(s1, s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_DROP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_INDEX();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecolumn_ref();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_ON();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsetable_name();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsedrop_index_opt();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c110(s1, s3, s5, s9, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsetruncate_stmt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_TRUNCATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TABLE();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetable_ref_list();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c111(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseuse_stmt() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_USE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseident();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c112(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsealter_table_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ALTER();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TABLE();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetable_ref_list();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsealter_action_list();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c113(s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsealter_column_suffix() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c114) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c115); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c116(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c16) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c117); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecolumn_ref();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c118(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsealter_action_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsealter_action();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsealter_action();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsealter_action();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsealter_action() {\n var s0, s1;\n\n s0 = peg$parseALTER_ADD_CONSTRAINT();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_DROP_CONSTRAINT();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_DROP_KEY_INDEX();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_ADD_COLUMN();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_DROP_COLUMN();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_MODIFY_COLUMN();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_ADD_INDEX_OR_KEY();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_RENAME_COLUMN();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_RENAME_TABLE();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_ALGORITHM();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_LOCK();\n if (s0 === peg$FAILED) {\n s0 = peg$parseALTER_CHANGE_COLUMN();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsetable_option();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c119(s1);\n }\n s0 = s1;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseALTER_ADD_CONSTRAINT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ADD();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecreate_constraint_definition();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c120(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_DROP_CONSTRAINT() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DROP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c51) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseident_name();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c121(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_DROP_KEY_INDEX() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DROP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c75) {\n s3 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_KEY();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c122();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_DROP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c123) {\n s4 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c124); }\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseKW_KEY();\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_INDEX();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseident();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c125(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseALTER_ADD_COLUMN() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ADD();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_COLUMN();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecreate_column_definition();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c126(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_DROP_COLUMN() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DROP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_COLUMN();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecolumn_ref();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c127(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_MODIFY_COLUMN() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_MODIFY();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_COLUMN();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecreate_column_definition();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsealter_column_suffix();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c128(s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_ADD_INDEX_OR_KEY() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ADD();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecreate_index_definition();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c129(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_RENAME_COLUMN() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_RENAME();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_COLUMN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecolumn_ref();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_TO();\n if (s7 === peg$FAILED) {\n s7 = peg$parseKW_AS();\n }\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsecolumn_ref();\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c130(s5, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_RENAME_TABLE() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_RENAME();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TO();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_AS();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseident();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c131(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_CHANGE_COLUMN() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c132) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c133); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_COLUMN();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecolumn_ref();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecreate_column_definition();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsealter_column_suffix();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c134(s3, s5, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_ALGORITHM() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c135) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c136); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c95) {\n s5 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n if (s5 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c137) {\n s5 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c138); }\n }\n if (s5 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c139) {\n s5 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c140); }\n }\n if (s5 === peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c141) {\n s5 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c142); }\n }\n }\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c143(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseALTER_LOCK() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c144) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c145); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c95) {\n s5 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n if (s5 === peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c146) {\n s5 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c147); }\n }\n if (s5 === peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c148) {\n s5 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c149); }\n }\n if (s5 === peg$FAILED) {\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c150) {\n s5 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c151); }\n }\n }\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c152(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_index_definition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_INDEX();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_KEY();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecolumn();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseindex_type();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecte_column_definition();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseindex_options();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c153(s1, s3, s5, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_fulltext_spatial_index_definition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_FULLTEXT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_SPATIAL();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_INDEX();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_KEY();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecolumn();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecte_column_definition();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseindex_options();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c154(s1, s3, s5, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_constraint_definition() {\n var s0;\n\n s0 = peg$parsecreate_constraint_primary();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_constraint_unique();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_constraint_foreign();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_constraint_check();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseconstraint_name() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CONSTRAINT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseident();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c155(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_constraint_primary() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseconstraint_name();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c75) {\n s4 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) {\n s6 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseindex_type();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecte_column_definition();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseindex_options();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c156(s1, s3, s5, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_constraint_unique() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n s1 = peg$parseconstraint_name();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_UNIQUE();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_INDEX();\n if (s5 === peg$FAILED) {\n s5 = peg$parseKW_KEY();\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseindex_type();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsecte_column_definition();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseindex_options();\n if (s13 === peg$FAILED) {\n s13 = null;\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c157(s1, s3, s5, s7, s9, s11, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_constraint_check() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$parseconstraint_name();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c51) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c158) {\n s6 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c159); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c33) {\n s8 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse__();\n if (s9 !== peg$FAILED) {\n if (input.substr(peg$currPos, 11).toLowerCase() === peg$c160) {\n s10 = input.substr(peg$currPos, 11);\n peg$currPos += 11;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c161); }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse__();\n if (s11 !== peg$FAILED) {\n s6 = [s6, s7, s8, s9, s10, s11];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseLPAREN();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseor_and_expr();\n if (s8 !== peg$FAILED) {\n s9 = peg$parse__();\n if (s9 !== peg$FAILED) {\n s10 = peg$parseRPAREN();\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c162(s1, s3, s5, s8);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_constraint_foreign() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseconstraint_name();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 11).toLowerCase() === peg$c163) {\n s3 = input.substr(peg$currPos, 11);\n peg$currPos += 11;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c164); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecolumn();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecte_column_definition();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsereference_definition();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c165(s1, s3, s5, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecheck_constraint_definition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n s0 = peg$currPos;\n s1 = peg$parseconstraint_name();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c51) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseLPAREN();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseor_and_expr();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseRPAREN();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$currPos;\n s12 = peg$parseKW_NOT();\n if (s12 === peg$FAILED) {\n s12 = null;\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parse__();\n if (s13 !== peg$FAILED) {\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c166) {\n s14 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s14 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c167); }\n }\n if (s14 !== peg$FAILED) {\n s12 = [s12, s13, s14];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c168(s1, s3, s7, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsereference_definition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_REFERENCES();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_name();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecte_column_definition();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 10).toLowerCase() === peg$c169) {\n s7 = input.substr(peg$currPos, 10);\n peg$currPos += 10;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c170); }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 13).toLowerCase() === peg$c171) {\n s7 = input.substr(peg$currPos, 13);\n peg$currPos += 13;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c172); }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 12).toLowerCase() === peg$c173) {\n s7 = input.substr(peg$currPos, 12);\n peg$currPos += 12;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c174); }\n }\n }\n }\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseon_reference();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseon_reference();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c175(s1, s3, s5, s7, s9, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseon_reference();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c176(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseon_reference() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ON();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_DELETE();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_UPDATE();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsereference_option();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c177(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsereference_option() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CURRENT_TIMESTAMP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr_list();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c178(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c179) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c180); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c181) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c182); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c183) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c184); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c185) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c186); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 11).toLowerCase() === peg$c187) {\n s1 = input.substr(peg$currPos, 11);\n peg$currPos += 11;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c188); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_CURRENT_TIMESTAMP();\n }\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c189(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsetable_options() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsetable_option();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetable_option();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetable_option();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_option_character_set_kw() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c190) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c191); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c192) {\n s3 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c193); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c194();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecreate_option_character_set() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DEFAULT();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecreate_option_character_set_kw();\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c195) {\n s3 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c196); }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c197) {\n s3 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c198); }\n }\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_ASSIGIN_EQUAL();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseident_without_kw_type();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c199(s1, s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetable_option() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 14).toLowerCase() === peg$c65) {\n s1 = input.substr(peg$currPos, 14);\n peg$currPos += 14;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 14).toLowerCase() === peg$c200) {\n s1 = input.substr(peg$currPos, 14);\n peg$currPos += 14;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c201); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 14).toLowerCase() === peg$c202) {\n s1 = input.substr(peg$currPos, 14);\n peg$currPos += 14;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c203); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c204) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c205); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c206) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c207); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 18).toLowerCase() === peg$c208) {\n s1 = input.substr(peg$currPos, 18);\n peg$currPos += 18;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c209); }\n }\n }\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseliteral_numeric();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c210(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsecreate_option_character_set();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_COMMENT();\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 10).toLowerCase() === peg$c211) {\n s1 = input.substr(peg$currPos, 10);\n peg$currPos += 10;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c212); }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseliteral_string();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c213(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 11).toLowerCase() === peg$c214) {\n s1 = input.substr(peg$currPos, 11);\n peg$currPos += 11;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c215); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s6 = peg$c216;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c218) {\n s7 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c219); }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c220) {\n s7 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c221); }\n }\n if (s7 === peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c146) {\n s7 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c147); }\n }\n }\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s8 = peg$c216;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s8 !== peg$FAILED) {\n s6 = [s6, s7, s8];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c222(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c223) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c224); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseident_name();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c225(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c226) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c227); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c228) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c229); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c230();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c231) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c232); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c233();\n }\n s0 = s1;\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parserename_stmt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_RENAME();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TABLE();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetable_to_list();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c234(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseset_stmt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_SET();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_GLOBAL();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_SESSION();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_LOCAL();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_PERSIST();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_PERSIST_ONLY();\n }\n }\n }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseassign_stmt_list();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c235(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseunlock_stmt() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_UNLOCK();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TABLES();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c236();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parselock_type() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c237) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c238); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c49) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c239(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 12).toLowerCase() === peg$c240) {\n s1 = input.substr(peg$currPos, 12);\n peg$currPos += 12;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c241); }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c242) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c243); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c244(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parselock_table() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsetable_base();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parselock_type();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c245(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parselock_table_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parselock_table();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parselock_table();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parselock_table();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c246(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parselock_stmt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_LOCK();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TABLES();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parselock_table_list();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c247(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecall_stmt() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CALL();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseproc_func_call();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c248(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseshow_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_SHOW();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c249) {\n s3 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c250); }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c251) {\n s3 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c252); }\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c253) {\n s5 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c254); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c255(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_SHOW();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c256) {\n s3 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c257); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c258) {\n s5 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c259); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsein_op_right();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsefrom_clause();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parselimit_clause();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c260(s7, s9, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_SHOW();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c190) {\n s4 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c191); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c192) {\n s6 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c193); }\n }\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c261) {\n s3 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c262); }\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parselike_op_right();\n if (s5 === peg$FAILED) {\n s5 = peg$parsewhere_clause();\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c263(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseshow_grant_stmt();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseshow_grant_stmt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_SHOW();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c264) {\n s3 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c265); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseshow_grant_for();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c266(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseshow_grant_for() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c33) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseident();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$parseKW_VAR__PRE_AT();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseident();\n if (s8 !== peg$FAILED) {\n s6 = [s6, s7, s8];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseshow_grant_for_using();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c267(s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseshow_grant_for_using() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_USING();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseshow_grant_for_using_list();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c268(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseshow_grant_for_using_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseident();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseident();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseident();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c246(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedesc_stmt() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DESC();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DESCRIBE();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseident();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c269(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselect_stmt() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$parseselect_stmt_nake();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s2 = peg$c270;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c271); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseselect_stmt();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s6 = peg$c272;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c273); }\n }\n if (s6 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5, s6];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c274(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsewith_clause() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_WITH();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecte_definition();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseCOMMA();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsecte_definition();\n if (s9 !== peg$FAILED) {\n s6 = [s6, s7, s8, s9];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseCOMMA();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsecte_definition();\n if (s9 !== peg$FAILED) {\n s6 = [s6, s7, s8, s9];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseKW_WITH();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseKW_RECURSIVE();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecte_definition();\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c275(s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecte_definition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$parseliteral_string();\n if (s1 === peg$FAILED) {\n s1 = peg$parseident_name();\n if (s1 === peg$FAILED) {\n s1 = peg$parsetable_name();\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecte_column_definition();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AS();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseLPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseunion_stmt();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseRPAREN();\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c276(s1, s3, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecte_column_definition() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseLPAREN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecolumn_ref_index();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseRPAREN();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c277(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselect_stmt_nake() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26;\n\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsewith_clause();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseKW_SELECT();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse___();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseoption_clause();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseKW_DISTINCT();\n if (s8 === peg$FAILED) {\n s8 = null;\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse__();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsecolumn_clause();\n if (s10 !== peg$FAILED) {\n s11 = peg$parse__();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsefrom_clause();\n if (s12 === peg$FAILED) {\n s12 = null;\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parse__();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsewhere_clause();\n if (s14 === peg$FAILED) {\n s14 = null;\n }\n if (s14 !== peg$FAILED) {\n s15 = peg$parse__();\n if (s15 !== peg$FAILED) {\n s16 = peg$parsegroup_by_clause();\n if (s16 === peg$FAILED) {\n s16 = null;\n }\n if (s16 !== peg$FAILED) {\n s17 = peg$parse__();\n if (s17 !== peg$FAILED) {\n s18 = peg$parsehaving_clause();\n if (s18 === peg$FAILED) {\n s18 = null;\n }\n if (s18 !== peg$FAILED) {\n s19 = peg$parse__();\n if (s19 !== peg$FAILED) {\n s20 = peg$parseorder_by_clause();\n if (s20 === peg$FAILED) {\n s20 = null;\n }\n if (s20 !== peg$FAILED) {\n s21 = peg$parse__();\n if (s21 !== peg$FAILED) {\n s22 = peg$parselimit_clause();\n if (s22 === peg$FAILED) {\n s22 = null;\n }\n if (s22 !== peg$FAILED) {\n s23 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c33) {\n s24 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s24 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s24 !== peg$FAILED) {\n s25 = peg$parse__();\n if (s25 !== peg$FAILED) {\n s26 = peg$parseKW_UPDATE();\n if (s26 !== peg$FAILED) {\n s24 = [s24, s25, s26];\n s23 = s24;\n } else {\n peg$currPos = s23;\n s23 = peg$FAILED;\n }\n } else {\n peg$currPos = s23;\n s23 = peg$FAILED;\n }\n } else {\n peg$currPos = s23;\n s23 = peg$FAILED;\n }\n if (s23 === peg$FAILED) {\n s23 = null;\n }\n if (s23 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c278(s2, s6, s8, s10, s12, s14, s16, s18, s20, s22, s23);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseoption_clause() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parsequery_option();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsequery_option();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsequery_option();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c279(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsequery_option() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseOPT_SQL_CALC_FOUND_ROWS();\n if (s1 === peg$FAILED) {\n s1 = peg$parseOPT_SQL_CACHE();\n if (s1 === peg$FAILED) {\n s1 = peg$parseOPT_SQL_NO_CACHE();\n }\n if (s1 === peg$FAILED) {\n s1 = peg$parseOPT_SQL_BIG_RESULT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseOPT_SQL_SMALL_RESULT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseOPT_SQL_BUFFER_RESULT();\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c280(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsecolumn_clause() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ALL();\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n s2 = peg$parseSTAR();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseident_start();\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n s1 = peg$parseSTAR();\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn_list_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn_list_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c281(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecolumn_list_item();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn_list_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn_list_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecolumn_list_item() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseident();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseDOT();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseSTAR();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c282(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsebinary_column_expr();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsealias_clause();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c283(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsealias_clause() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_AS();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse___();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsealias_ident();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c284(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_AS();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseident();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c284(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsefrom_clause() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_FROM();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_ref_list();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c285(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetable_to_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsetable_to_item();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetable_to_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetable_to_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetable_to_item() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parsetable_name();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_TO();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetable_name();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c286(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseindex_type() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_USING();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c287) {\n s3 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c288); }\n }\n if (s3 === peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c289) {\n s3 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c290); }\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c291(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseindex_options() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseindex_option();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseindex_option();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseindex_option();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c292(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseindex_option() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_KEY_BLOCK_SIZE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseliteral_numeric();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c293(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseindex_type();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c294) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c295); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c296) {\n s3 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c297); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseident_name();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c298(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c299) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c300); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c301) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c302); }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c303(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parsekeyword_comment();\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsetable_ref_list() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsetable_base();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsetable_ref();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsetable_ref();\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c304(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetable_ref() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseCOMMA();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsetable_base();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c305(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsetable_join();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c305(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsetable_join() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15;\n\n s0 = peg$currPos;\n s1 = peg$parsejoin_op();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_base();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_USING();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseLPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseident_without_kw_type();\n if (s9 !== peg$FAILED) {\n s10 = [];\n s11 = peg$currPos;\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseCOMMA();\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n s15 = peg$parseident_without_kw_type();\n if (s15 !== peg$FAILED) {\n s12 = [s12, s13, s14, s15];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n while (s11 !== peg$FAILED) {\n s10.push(s11);\n s11 = peg$currPos;\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseCOMMA();\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n s15 = peg$parseident_without_kw_type();\n if (s15 !== peg$FAILED) {\n s12 = [s12, s13, s14, s15];\n s11 = s12;\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n } else {\n peg$currPos = s11;\n s11 = peg$FAILED;\n }\n }\n if (s10 !== peg$FAILED) {\n s11 = peg$parse__();\n if (s11 !== peg$FAILED) {\n s12 = peg$parseRPAREN();\n if (s12 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c306(s1, s3, s9, s10);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsejoin_op();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_base();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseon_clause();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c307(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsejoin_op();\n if (s1 === peg$FAILED) {\n s1 = peg$parseset_op();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseunion_stmt();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsealias_clause();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseon_clause();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c308(s1, s5, s9, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsetable_base() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DUAL();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c309();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseident_name();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr_list();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsealias_clause();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c310(s1, s5, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsetable_name();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsealias_clause();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c311(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseLPAREN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseunion_stmt();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseRPAREN();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsealias_clause();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c312(s3, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsejoin_op() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_LEFT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_OUTER();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_JOIN();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c313();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseKW_INNER();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseKW_JOIN();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c314();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsetable_name() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseident();\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseDOT();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseident();\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c315(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsevar_decl();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c316(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseor_and_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseexpr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 === peg$FAILED) {\n s5 = peg$parseKW_OR();\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 === peg$FAILED) {\n s5 = peg$parseKW_OR();\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c317(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseon_clause() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ON();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseor_and_where_expr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c318(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsewhere_clause() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_WHERE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseor_and_where_expr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c318(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsegroup_by_clause() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_GROUP();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_BY();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr_list();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c319(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecolumn_ref_index() {\n var s0;\n\n s0 = peg$parsecolumn_ref_list();\n if (s0 === peg$FAILED) {\n s0 = peg$parseliteral_list();\n }\n\n return s0;\n }\n\n function peg$parsecolumn_ref_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsecolumn_ref();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn_ref();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn_ref();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsehaving_clause() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_HAVING();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseor_and_where_expr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c318(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseorder_by_clause() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ORDER();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_BY();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseorder_by_list();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c285(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseorder_by_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseorder_by_element();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseorder_by_element();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseorder_by_element();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseorder_by_element() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseexpr();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_DESC();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_ASC();\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c320(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenumber_or_param() {\n var s0;\n\n s0 = peg$parseliteral_numeric();\n if (s0 === peg$FAILED) {\n s0 = peg$parseparam();\n }\n\n return s0;\n }\n\n function peg$parselimit_clause() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_LIMIT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber_or_param();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$parseCOMMA();\n if (s6 === peg$FAILED) {\n s6 = peg$parseKW_OFFSET();\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsenumber_or_param();\n if (s8 !== peg$FAILED) {\n s6 = [s6, s7, s8];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c321(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseupdate_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_UPDATE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_ref_list();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_SET();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseset_list();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsewhere_clause();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsereturning_stmt();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseorder_by_clause();\n if (s13 === peg$FAILED) {\n s13 = null;\n }\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n s15 = peg$parselimit_clause();\n if (s15 === peg$FAILED) {\n s15 = null;\n }\n if (s15 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c322(s3, s7, s9, s11, s13, s15);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedelete_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DELETE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_ref_list();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsefrom_clause();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsewhere_clause();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsereturning_stmt();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseorder_by_clause();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parselimit_clause();\n if (s13 === peg$FAILED) {\n s13 = null;\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c323(s3, s5, s7, s9, s11, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseset_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseset_item();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseset_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseset_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseset_item() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseident();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseDOT();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecolumn_without_kw();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s5 = peg$c324;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c325); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseadditive_expr();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c326(s1, s3, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseident();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseDOT();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecolumn_without_kw();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s5 = peg$c324;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c325); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_VALUES();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseLPAREN();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsecolumn_ref();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseRPAREN();\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c327(s1, s3, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsereturning_stmt() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_RETURNING();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecolumn_clause();\n if (s3 === peg$FAILED) {\n s3 = peg$parseselect_stmt();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c328(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseinsert_value_clause() {\n var s0;\n\n s0 = peg$parsevalue_clause();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselect_stmt_nake();\n }\n\n return s0;\n }\n\n function peg$parseinsert_partition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_PARTITION();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseident_name();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$currPos;\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseCOMMA();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseident_name();\n if (s11 !== peg$FAILED) {\n s8 = [s8, s9, s10, s11];\n s7 = s8;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$currPos;\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseCOMMA();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseident_name();\n if (s11 !== peg$FAILED) {\n s8 = [s8, s9, s10, s11];\n s7 = s8;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseRPAREN();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c329(s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_PARTITION();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsevalue_item();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c330(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsereplace_insert_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19;\n\n s0 = peg$currPos;\n s1 = peg$parsereplace_insert();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_INTO();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetable_name();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseinsert_partition();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseLPAREN();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsecolumn_list();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseRPAREN();\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n s15 = peg$parseinsert_value_clause();\n if (s15 !== peg$FAILED) {\n s16 = peg$parse__();\n if (s16 !== peg$FAILED) {\n s17 = peg$parseon_duplicate_update_stmt();\n if (s17 === peg$FAILED) {\n s17 = null;\n }\n if (s17 !== peg$FAILED) {\n s18 = peg$parse__();\n if (s18 !== peg$FAILED) {\n s19 = peg$parsereturning_stmt();\n if (s19 === peg$FAILED) {\n s19 = null;\n }\n if (s19 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c331(s1, s5, s7, s11, s15, s17, s19);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseinsert_no_columns_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n s1 = peg$parsereplace_insert();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_IGNORE();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_INTO();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsetable_name();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseinsert_partition();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseinsert_value_clause();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseon_duplicate_update_stmt();\n if (s13 === peg$FAILED) {\n s13 = null;\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c332(s1, s3, s5, s7, s9, s11, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseinsert_into_set() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n s1 = peg$parsereplace_insert();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_INTO();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsetable_name();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseinsert_partition();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseKW_SET();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseset_list();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseon_duplicate_update_stmt();\n if (s13 === peg$FAILED) {\n s13 = null;\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c333(s1, s5, s7, s11, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseon_duplicate_update_stmt() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ON();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c334) {\n s3 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c335); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_KEY();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_UPDATE();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseset_list();\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c336(s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsereplace_insert() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_INSERT();\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseKW_OR();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c337) {\n s6 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c338); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c339) {\n s6 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c340); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c341) {\n s6 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c342); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c343) {\n s6 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c344); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c345) {\n s6 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c346); }\n }\n }\n }\n }\n }\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c347(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_REPLACE();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c348();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsevalue_clause() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_VALUES();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsevalue_list();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c285(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsevalue_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsevalue_item();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsevalue_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsevalue_item();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsevalue_item() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseLPAREN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexpr_list();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseRPAREN();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c349(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseexpr_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseexpr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c350(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseinterval_expr() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_INTERVAL();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexpr();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseinterval_unit();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c351(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecase_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CASE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecase_when_then_list();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecase_else();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_END();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseKW_CASE();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c352(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_CASE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexpr();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecase_when_then_list();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecase_else();\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseKW_END();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseKW_CASE();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c353(s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecase_when_then_list() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parsecase_when_then();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecase_when_then();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecase_when_then();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecase_when_then() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_WHEN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseor_and_where_expr();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_THEN();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c354(s3, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecase_else() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ELSE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexpr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c355(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parse_expr() {\n var s0;\n\n s0 = peg$parseor_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunary_expr();\n }\n\n return s0;\n }\n\n function peg$parseexpr() {\n var s0;\n\n s0 = peg$parse_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseunion_stmt();\n }\n\n return s0;\n }\n\n function peg$parseunary_expr() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseadditive_operator();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseprimary();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseprimary();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c356(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsebinary_column_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseexpr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 === peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 === peg$FAILED) {\n s5 = peg$parseLOGIC_OPERATOR();\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 === peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 === peg$FAILED) {\n s5 = peg$parseLOGIC_OPERATOR();\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c357(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseor_and_where_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseexpr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 === peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 === peg$FAILED) {\n s5 = peg$parseCOMMA();\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 === peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 === peg$FAILED) {\n s5 = peg$parseCOMMA();\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseexpr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c358(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseor_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseand_expr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse___();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseand_expr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse___();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_OR();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseand_expr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c359(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseand_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsenot_expr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse___();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsenot_expr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse___();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsenot_expr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c359(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenot_expr() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$parsecomparison_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseexists_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_NOT();\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 33) {\n s2 = peg$c360;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c361); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c324;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c325); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenot_expr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c362(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsecomparison_expr() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseadditive_expr();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecomparison_op_right();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c363(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseliteral_string();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecolumn_ref();\n }\n }\n\n return s0;\n }\n\n function peg$parseexists_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseexists_op();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseunion_stmt();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c364(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseexists_op() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseKW_NOT();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseKW_EXISTS();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c365(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_EXISTS();\n }\n\n return s0;\n }\n\n function peg$parsecomparison_op_right() {\n var s0;\n\n s0 = peg$parsearithmetic_op_right();\n if (s0 === peg$FAILED) {\n s0 = peg$parsein_op_right();\n if (s0 === peg$FAILED) {\n s0 = peg$parsebetween_op_right();\n if (s0 === peg$FAILED) {\n s0 = peg$parseis_op_right();\n if (s0 === peg$FAILED) {\n s0 = peg$parselike_op_right();\n if (s0 === peg$FAILED) {\n s0 = peg$parseregexp_op_right();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsearithmetic_op_right() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsearithmetic_comparison_operator();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseadditive_expr();\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsearithmetic_comparison_operator();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseadditive_expr();\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c366(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsearithmetic_comparison_operator() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c367) {\n s0 = peg$c367;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c368); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 62) {\n s0 = peg$c369;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c370); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c371) {\n s0 = peg$c371;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c372); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c373) {\n s0 = peg$c373;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c374); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 60) {\n s0 = peg$c375;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c376); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c377) {\n s0 = peg$c377;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c378); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s0 = peg$c324;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c325); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c379) {\n s0 = peg$c379;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c380); }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseis_op_right() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_IS();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseadditive_expr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c381(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseKW_IS();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseKW_NOT();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseadditive_expr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c382(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsebetween_op_right() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsebetween_or_not_between_op();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseadditive_expr();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_AND();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseadditive_expr();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c383(s1, s3, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsebetween_or_not_between_op() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseKW_NOT();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseKW_BETWEEN();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c365(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_BETWEEN();\n }\n\n return s0;\n }\n\n function peg$parselike_op() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseKW_NOT();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseKW_LIKE();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c365(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_LIKE();\n }\n\n return s0;\n }\n\n function peg$parseregexp_op() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_NOT();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_REGEXP();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_RLIKE();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c384(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseescape_op() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c385) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c386); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseliteral_string();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c387(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsein_op() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseKW_NOT();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseKW_IN();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c365(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_IN();\n }\n\n return s0;\n }\n\n function peg$parseregexp_op_right() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseregexp_op();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c249) {\n s3 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c250); }\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsefunc_call();\n if (s5 === peg$FAILED) {\n s5 = peg$parseliteral_string();\n if (s5 === peg$FAILED) {\n s5 = peg$parsecolumn_ref();\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c388(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c389) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c390); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseliteral_string();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c391(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parselike_op_right() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parselike_op();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseliteral();\n if (s3 === peg$FAILED) {\n s3 = peg$parsecomparison_expr();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseescape_op();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c392(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsein_op_right() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsein_op();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr_list();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c393(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsein_op();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsevar_decl();\n if (s3 === peg$FAILED) {\n s3 = peg$parseliteral_string();\n if (s3 === peg$FAILED) {\n s3 = peg$parsefunc_call();\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c394(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseadditive_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsemultiplicative_expr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseadditive_operator();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsemultiplicative_expr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseadditive_operator();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsemultiplicative_expr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c395(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseadditive_operator() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 43) {\n s0 = peg$c396;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c397); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s0 = peg$c398;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c399); }\n }\n }\n\n return s0;\n }\n\n function peg$parsemultiplicative_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseunary_expr_or_primary();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsemultiplicative_operator();\n if (s5 === peg$FAILED) {\n s5 = peg$parseLOGIC_OPERATOR();\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseunary_expr_or_primary();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsemultiplicative_operator();\n if (s5 === peg$FAILED) {\n s5 = peg$parseLOGIC_OPERATOR();\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseunary_expr_or_primary();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c400(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsemultiplicative_operator() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 42) {\n s0 = peg$c401;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c402); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s0 = peg$c403;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c404); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 37) {\n s0 = peg$c405;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c406); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c407) {\n s0 = peg$c407;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c408); }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseprimary() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$parsecast_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseliteral();\n if (s0 === peg$FAILED) {\n s0 = peg$parseaggr_func();\n if (s0 === peg$FAILED) {\n s0 = peg$parsefunc_call();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecase_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseinterval_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecolumn_ref();\n if (s0 === peg$FAILED) {\n s0 = peg$parseparam();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseLPAREN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseor_and_where_expr();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseRPAREN();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c409(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsevar_decl();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse__();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 63) {\n s2 = peg$c410;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c411); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c412(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseunary_expr_or_primary() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$parsejsonb_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseunary_operator();\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseunary_expr_or_primary();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c413(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseunary_operator() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 33) {\n s0 = peg$c360;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c361); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s0 = peg$c398;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c399); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 43) {\n s0 = peg$c396;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c397); }\n }\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s0 = peg$c414;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c415); }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsejsonb_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parseprimary();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c416) {\n s6 = peg$c416;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c417); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c418) {\n s6 = peg$c418;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c419); }\n }\n if (s6 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 63) {\n s6 = peg$c410;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c411); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c420) {\n s6 = peg$c420;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c421); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c422) {\n s6 = peg$c422;\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c423); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c424) {\n s6 = peg$c424;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c425); }\n }\n if (s6 === peg$FAILED) {\n s6 = peg$parseDOUBLE_ARROW();\n if (s6 === peg$FAILED) {\n s6 = peg$parseSINGLE_ARROW();\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c426) {\n s6 = peg$c426;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c427); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c428) {\n s6 = peg$c428;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c429); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseprimary();\n if (s8 !== peg$FAILED) {\n s5 = [s5, s6, s7, s8];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c416) {\n s6 = peg$c416;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c417); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c418) {\n s6 = peg$c418;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c419); }\n }\n if (s6 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 63) {\n s6 = peg$c410;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c411); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c420) {\n s6 = peg$c420;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c421); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c422) {\n s6 = peg$c422;\n peg$currPos += 3;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c423); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c424) {\n s6 = peg$c424;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c425); }\n }\n if (s6 === peg$FAILED) {\n s6 = peg$parseDOUBLE_ARROW();\n if (s6 === peg$FAILED) {\n s6 = peg$parseSINGLE_ARROW();\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c426) {\n s6 = peg$c426;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c427); }\n }\n if (s6 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c428) {\n s6 = peg$c428;\n peg$currPos += 2;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c429); }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseprimary();\n if (s8 !== peg$FAILED) {\n s5 = [s5, s6, s7, s8];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c430(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecolumn_ref() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parseident();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDOT();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecolumn_without_kw();\n if (s5 !== peg$FAILED) {\n s6 = peg$currPos;\n s7 = peg$parse__();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsecollate_expr();\n if (s8 !== peg$FAILED) {\n s7 = [s7, s8];\n s6 = s7;\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n } else {\n peg$currPos = s6;\n s6 = peg$FAILED;\n }\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c431(s1, s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecolumn();\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsecollate_expr();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c432(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecolumn_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsecolumn();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsecolumn();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseident_without_kw_type() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseident_name();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c433(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parsequoted_ident_type();\n }\n\n return s0;\n }\n\n function peg$parseident_type() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseident_name();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c434(s1);\n if (s2) {\n s2 = peg$FAILED;\n } else {\n s2 = void 0;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c435(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsequoted_ident_type();\n }\n\n return s0;\n }\n\n function peg$parseident() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseident_name();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c434(s1);\n if (s2) {\n s2 = peg$FAILED;\n } else {\n s2 = void 0;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c436(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsequoted_ident();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c436(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsealias_ident() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseident_name();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c437(s1);\n if (s2) {\n s2 = peg$FAILED;\n } else {\n s2 = void 0;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c436(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsequoted_ident();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c436(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsequoted_ident_type() {\n var s0;\n\n s0 = peg$parsedouble_quoted_ident();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesingle_quoted_ident();\n if (s0 === peg$FAILED) {\n s0 = peg$parsebackticks_quoted_ident();\n }\n }\n\n return s0;\n }\n\n function peg$parsequoted_ident() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsedouble_quoted_ident();\n if (s1 === peg$FAILED) {\n s1 = peg$parsesingle_quoted_ident();\n if (s1 === peg$FAILED) {\n s1 = peg$parsebackticks_quoted_ident();\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c438(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsedouble_quoted_ident() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c439;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c440); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c441.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c442); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c441.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c442); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c439;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c440); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c443(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsesingle_quoted_ident() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c216;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c444.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c445); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c444.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c445); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c216;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c446(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsebackticks_quoted_ident() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 96) {\n s1 = peg$c447;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c448); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c449.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c450); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c449.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c450); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 96) {\n s3 = peg$c447;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c448); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c451(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecolumn_without_kw() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsecolumn_name();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c452(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parsequoted_ident();\n }\n\n return s0;\n }\n\n function peg$parsecolumn() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsecolumn_name();\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c434(s1);\n if (s2) {\n s2 = peg$FAILED;\n } else {\n s2 = void 0;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c453(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsequoted_ident();\n }\n\n return s0;\n }\n\n function peg$parsecolumn_name() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseident_start();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsecolumn_part();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsecolumn_part();\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c454(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseident_name() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseident_start();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseident_part();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseident_part();\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c454(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseident_start() {\n var s0;\n\n if (peg$c455.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c456); }\n }\n\n return s0;\n }\n\n function peg$parseident_part() {\n var s0;\n\n if (peg$c457.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c458); }\n }\n\n return s0;\n }\n\n function peg$parsecolumn_part() {\n var s0;\n\n if (peg$c459.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c460); }\n }\n\n return s0;\n }\n\n function peg$parseparam() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c461;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c462); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseident_name();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c463(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseaggr_func() {\n var s0;\n\n s0 = peg$parseaggr_fun_count();\n if (s0 === peg$FAILED) {\n s0 = peg$parseaggr_fun_smma();\n }\n\n return s0;\n }\n\n function peg$parseaggr_fun_smma() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_SUM_MAX_MIN_AVG();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseadditive_expr();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseover_partition();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c464(s1, s5, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SUM_MAX_MIN_AVG() {\n var s0;\n\n s0 = peg$parseKW_SUM();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_MAX();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_MIN();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_AVG();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseon_update_current_timestamp() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ON();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_UPDATE();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_CURRENT_TIMESTAMP();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseLPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseexpr_list();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseRPAREN();\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c465(s5, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_ON();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_UPDATE();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_CURRENT_TIMESTAMP();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c466(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseover_partition() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_OVER();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseKW_PARTITION();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_BY();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsecolumn_clause();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseorder_by_clause();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseRPAREN();\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c467(s9, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseon_update_current_timestamp();\n }\n\n return s0;\n }\n\n function peg$parseaggr_fun_count() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_COUNT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsecount_arg();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseover_partition();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c468(s1, s5, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecount_arg() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n s1 = peg$parsestar_expr();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c469(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_DISTINCT();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n s8 = [];\n s9 = peg$currPos;\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseKW_AND();\n if (s11 === peg$FAILED) {\n s11 = peg$parseKW_OR();\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseexpr();\n if (s13 !== peg$FAILED) {\n s10 = [s10, s11, s12, s13];\n s9 = s10;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n while (s9 !== peg$FAILED) {\n s8.push(s9);\n s9 = peg$currPos;\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseKW_AND();\n if (s11 === peg$FAILED) {\n s11 = peg$parseKW_OR();\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseexpr();\n if (s13 !== peg$FAILED) {\n s10 = [s10, s11, s12, s13];\n s9 = s10;\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n } else {\n peg$currPos = s9;\n s9 = peg$FAILED;\n }\n }\n if (s8 !== peg$FAILED) {\n s9 = peg$parse__();\n if (s9 !== peg$FAILED) {\n s10 = peg$parseorder_by_clause();\n if (s10 === peg$FAILED) {\n s10 = null;\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c470(s1, s5, s8, s10);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_DISTINCT();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseor_and_expr();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseorder_by_clause();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c471(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsestar_expr() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 42) {\n s1 = peg$c401;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c402); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c472();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsefunc_call() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parsescalar_func();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr_list();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseover_partition();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c473(s1, s5, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsescalar_time_func();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseon_update_current_timestamp();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c474(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseproc_func_name();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseor_and_where_expr();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseover_partition();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c475(s1, s5, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsescalar_time_func() {\n var s0;\n\n s0 = peg$parseKW_CURRENT_DATE();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_CURRENT_TIME();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_CURRENT_TIMESTAMP();\n }\n }\n\n return s0;\n }\n\n function peg$parsescalar_func() {\n var s0;\n\n s0 = peg$parsescalar_time_func();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_CURRENT_USER();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_USER();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_SESSION_USER();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_SYSTEM_USER();\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsecast_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CAST();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_AS();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsedata_type();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseRPAREN();\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c476(s1, s5, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_CAST();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_AS();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseKW_DECIMAL();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseLPAREN();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseint();\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n s15 = peg$parseRPAREN();\n if (s15 !== peg$FAILED) {\n s16 = peg$parse__();\n if (s16 !== peg$FAILED) {\n s17 = peg$parseRPAREN();\n if (s17 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c477(s1, s5, s13);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_CAST();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_AS();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseKW_DECIMAL();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseLPAREN();\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseint();\n if (s13 !== peg$FAILED) {\n s14 = peg$parse__();\n if (s14 !== peg$FAILED) {\n s15 = peg$parseCOMMA();\n if (s15 !== peg$FAILED) {\n s16 = peg$parse__();\n if (s16 !== peg$FAILED) {\n s17 = peg$parseint();\n if (s17 !== peg$FAILED) {\n s18 = peg$parse__();\n if (s18 !== peg$FAILED) {\n s19 = peg$parseRPAREN();\n if (s19 !== peg$FAILED) {\n s20 = peg$parse__();\n if (s20 !== peg$FAILED) {\n s21 = peg$parseRPAREN();\n if (s21 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c478(s1, s5, s13, s17);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_CAST();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseexpr();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseKW_AS();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsesignedness();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseKW_INTEGER();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse__();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseRPAREN();\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c479(s1, s5, s9, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsesignedness() {\n var s0;\n\n s0 = peg$parseKW_SIGNED();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_UNSIGNED();\n }\n\n return s0;\n }\n\n function peg$parseliteral() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c249) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c250); }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseliteral_string();\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecollate_expr();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c480(s1, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseliteral_numeric();\n if (s0 === peg$FAILED) {\n s0 = peg$parseliteral_bool();\n if (s0 === peg$FAILED) {\n s0 = peg$parseliteral_null();\n if (s0 === peg$FAILED) {\n s0 = peg$parseliteral_datetime();\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseliteral_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseliteral();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseliteral();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseliteral();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseliteral_null() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_NULL();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c481();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseliteral_not_null() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_NOT_NULL();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c482();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseliteral_bool() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_TRUE();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c483();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_FALSE();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c484();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseliteral_string() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c485) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c486); }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 1).toLowerCase() === peg$c487) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c488); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s5 = peg$c216;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s5 !== peg$FAILED) {\n s6 = [];\n if (peg$c489.test(input.charAt(peg$currPos))) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c490); }\n }\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n if (peg$c489.test(input.charAt(peg$currPos))) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c490); }\n }\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s7 = peg$c216;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s7 !== peg$FAILED) {\n s5 = [s5, s6, s7];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c491(s1, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c485) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c486); }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 1).toLowerCase() === peg$c492) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c493); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s5 = peg$c216;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s5 !== peg$FAILED) {\n s6 = [];\n if (peg$c489.test(input.charAt(peg$currPos))) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c490); }\n }\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n if (peg$c489.test(input.charAt(peg$currPos))) {\n s7 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c490); }\n }\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s7 = peg$c216;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s7 !== peg$FAILED) {\n s5 = [s5, s6, s7];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c494(s1, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c485) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c486); }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c495) {\n s3 = peg$c495;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c496); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n if (peg$c489.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c490); }\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (peg$c489.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c490); }\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c497(s1, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s2 = peg$c216;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsesingle_char();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsesingle_char();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s4 = peg$c216;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c498(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s2 = peg$c439;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c440); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsesingle_quote_char();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsesingle_quote_char();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s4 = peg$c439;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c440); }\n }\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c499(s1);\n }\n s0 = s1;\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseliteral_datetime() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_TIME();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DATE();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TIMESTAMP();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DATETIME();\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s4 = peg$c216;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parsesingle_char();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parsesingle_char();\n }\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s6 = peg$c216;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c217); }\n }\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c500(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_TIME();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DATE();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TIMESTAMP();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DATETIME();\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s4 = peg$c439;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c440); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parsesingle_quote_char();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parsesingle_quote_char();\n }\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s6 = peg$c439;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c440); }\n }\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c500(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsesingle_quote_char() {\n var s0;\n\n if (peg$c501.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c502); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseescape_char();\n }\n\n return s0;\n }\n\n function peg$parsesingle_char() {\n var s0;\n\n if (peg$c444.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c445); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseescape_char();\n }\n\n return s0;\n }\n\n function peg$parseescape_char() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c503) {\n s0 = peg$c503;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c504); }\n }\n\n return s0;\n }\n\n function peg$parseline_terminator() {\n var s0;\n\n if (peg$c505.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c506); }\n }\n\n return s0;\n }\n\n function peg$parseliteral_numeric() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c507(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseint();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsefrac();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexp();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c508(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseint();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsefrac();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c509(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseint();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexp();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c510(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseint();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c511(s1);\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseint() {\n var s0, s1, s2;\n\n s0 = peg$parsedigits();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedigit();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c398;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c399); }\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c396;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c397); }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedigits();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c512(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c398;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c399); }\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c396;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c397); }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedigit();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c513(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsefrac() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s1 = peg$c514;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c515); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedigits();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c516(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseexp() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsee();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedigits();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c517(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedigits() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsedigit();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsedigit();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c518(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n\n return s0;\n }\n\n function peg$parsehexDigit() {\n var s0;\n\n if (peg$c521.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c522); }\n }\n\n return s0;\n }\n\n function peg$parsee() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (peg$c523.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c524); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c525.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c526); }\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c527(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ANALYZE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c528) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c529); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c530();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ATTACH() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c531) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c532); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c533();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_NULL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c534) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c535); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DEFAULT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c95) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_NOT_NULL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c536) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c537); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TRUE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c538) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c539); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TO() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c540) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c541); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_FALSE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c542) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c543); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SHOW() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c544) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c545); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DROP() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c546) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c547); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c548();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_USE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c549) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c550); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ALTER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c551) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c552); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SELECT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c553) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c554); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UPDATE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c555) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c556); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CREATE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c557) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c558); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TEMPORARY() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c559) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c560); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TEMP() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c561) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c562); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DELETE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c563) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c564); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_INSERT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c565) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c566); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_RECURSIVE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c567) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c568); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_REPLACE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c343) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c344); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_RENAME() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c569) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c570); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_RETURNING() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c571) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c572); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c573();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_IGNORE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c341) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c342); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_EXPLAIN() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c574) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c575); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_PARTITION() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c576) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c577); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c578();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_INTO() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c579) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c580); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_FROM() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c581) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c582); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SET() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c192) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c193); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c583();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNLOCK() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c584) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c585); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_LOCK() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c144) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c145); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_AS() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c586) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c587); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TABLE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c588) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c589); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c590();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TABLES() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c591) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c592); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c593();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DATABASE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c594) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c595); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c596();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SCHEMA() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c597) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c598); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c599();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_COLLATE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c197) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c198); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c600();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ON() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c20) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_LEFT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c601) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c602); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_INNER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c603) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c604); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_JOIN() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c605) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c606); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_OUTER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c607) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c608); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_OVER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c609) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c610); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNION() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c611) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c612); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_VALUES() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c613) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c614); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_USING() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c615) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c616); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_WHERE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c617) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c618); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_WITH() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c294) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c295); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_GROUP() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c619) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c620); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_BY() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c621) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c622); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ORDER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c623) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c624); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_HAVING() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c625) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c626); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_LIMIT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c627) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c628); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_OFFSET() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c629) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c630); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c631();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ASC() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c632) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c633); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c634();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DESC() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c635) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c636); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c637();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DESCRIBE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c638) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c639); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c640();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ALL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c641) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c642); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c643();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DISTINCT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c644) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c645); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c646();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_BETWEEN() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c647) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c648); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c649();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_IN() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c650) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c651); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c652();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_IS() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c653) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c654); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c655();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_LIKE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c656) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c657); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c658();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_RLIKE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c659) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c660); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c661();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_REGEXP() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c662) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c663); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c664();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_EXISTS() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c9) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c665); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c666();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_NOT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c158) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c159); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c667();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_AND() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c668) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c669); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c670();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_OR() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2).toLowerCase() === peg$c671) {\n s1 = input.substr(peg$currPos, 2);\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c672); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c673();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_COUNT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c674) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c675); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c676();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_MAX() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c677) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c678); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c679();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_MIN() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c680) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c681); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c682();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SUM() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c683) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c684); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c685();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_AVG() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c686) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c687); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c688();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CALL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c689) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c690); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c691();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CASE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c692) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c693); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_WHEN() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c694) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c695); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_THEN() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c696) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c697); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ELSE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c698) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c699); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_END() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c30) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CAST() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c700) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c701); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c702();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_BIT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c703) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c704); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c705();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CHAR() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c706) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c707); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c708();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_VARCHAR() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c709) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c710); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c711();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_NUMERIC() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c712) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c713); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c714();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DECIMAL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c715) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c716); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c717();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SIGNED() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c718) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c719); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c720();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNSIGNED() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c721) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c722); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c723();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_INT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c724) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c725); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c726();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ZEROFILL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c727) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c728); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c729();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_INTEGER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c730) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c731); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c732();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_JSON() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c733) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c734); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c735();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SMALLINT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c736) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c737); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c738();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TINYINT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c739) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c740); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c741();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TINYTEXT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c742) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c743); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c744();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TEXT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c745) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c746); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c747();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_MEDIUMTEXT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 10).toLowerCase() === peg$c748) {\n s1 = input.substr(peg$currPos, 10);\n peg$currPos += 10;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c749); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c750();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_LONGTEXT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c751) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c752); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c753();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_BIGINT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c754) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c755); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c756();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ENUM() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c757) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c758); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c759();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_FLOAT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c760) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c761); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c762();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DOUBLE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c763) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c764); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c765();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_REAL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c766) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c767); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c768();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DATE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c769) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c770); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c771();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_DATETIME() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c772) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c773); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c774();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TIME() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c775) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c776); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c777();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TIMESTAMP() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c778) {\n s1 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c779); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c780();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_TRUNCATE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c781) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c782); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c783();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_USER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c784) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c785); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c786();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CURRENT_DATE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 12).toLowerCase() === peg$c787) {\n s1 = input.substr(peg$currPos, 12);\n peg$currPos += 12;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c788); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c789();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_ADD_DATE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c790) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c791); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c792();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_INTERVAL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c793) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c794); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c795();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNIT_YEAR() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c796) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c797); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c798();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNIT_MONTH() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c799) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c800); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c801();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNIT_DAY() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c802) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c803); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c804();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNIT_HOUR() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c805) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c806); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c807();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNIT_MINUTE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c808) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c809); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c810();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNIT_SECOND() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c811) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c812); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c813();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CURRENT_TIME() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 12).toLowerCase() === peg$c814) {\n s1 = input.substr(peg$currPos, 12);\n peg$currPos += 12;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c815); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c816();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CURRENT_TIMESTAMP() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 17).toLowerCase() === peg$c817) {\n s1 = input.substr(peg$currPos, 17);\n peg$currPos += 17;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c818); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c819();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CURRENT_USER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 12).toLowerCase() === peg$c820) {\n s1 = input.substr(peg$currPos, 12);\n peg$currPos += 12;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c821); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c822();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SESSION_USER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 12).toLowerCase() === peg$c823) {\n s1 = input.substr(peg$currPos, 12);\n peg$currPos += 12;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c824); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c825();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SYSTEM_USER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 11).toLowerCase() === peg$c826) {\n s1 = input.substr(peg$currPos, 11);\n peg$currPos += 11;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c827); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c828();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_GLOBAL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c829) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c830); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c831();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SESSION() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c832) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c833); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c834();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_LOCAL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c49) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c835();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_PERSIST() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c836) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c837); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c838();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_PERSIST_ONLY() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 12).toLowerCase() === peg$c839) {\n s1 = input.substr(peg$currPos, 12);\n peg$currPos += 12;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c840); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c841();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_VIEW() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c842) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c843); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c844();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_VAR__PRE_AT() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 64) {\n s0 = peg$c845;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c846); }\n }\n\n return s0;\n }\n\n function peg$parseKW_VAR__PRE_AT_AT() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c847) {\n s0 = peg$c847;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c848); }\n }\n\n return s0;\n }\n\n function peg$parseKW_VAR_PRE_DOLLAR() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 36) {\n s0 = peg$c849;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c850); }\n }\n\n return s0;\n }\n\n function peg$parseKW_VAR_PRE() {\n var s0;\n\n s0 = peg$parseKW_VAR__PRE_AT_AT();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_VAR__PRE_AT();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_VAR_PRE_DOLLAR();\n }\n }\n\n return s0;\n }\n\n function peg$parseKW_RETURN() {\n var s0;\n\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c851) {\n s0 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c852); }\n }\n\n return s0;\n }\n\n function peg$parseKW_ASSIGN() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c853) {\n s0 = peg$c853;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c854); }\n }\n\n return s0;\n }\n\n function peg$parseKW_ASSIGIN_EQUAL() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 61) {\n s0 = peg$c324;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c325); }\n }\n\n return s0;\n }\n\n function peg$parseKW_DUAL() {\n var s0;\n\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c855) {\n s0 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c856); }\n }\n\n return s0;\n }\n\n function peg$parseKW_ADD() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c857) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c858); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c859();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_COLUMN() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c860) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c861); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c862();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_INDEX() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c863) {\n s1 = input.substr(peg$currPos, 5);\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c864); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c865();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_MODIFY() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c866) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c867); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c868();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_KEY() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) {\n s1 = input.substr(peg$currPos, 3);\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c869();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_FULLTEXT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c870) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c871); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c872();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_SPATIAL() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c873) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c874); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c875();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_UNIQUE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c70) {\n s1 = input.substr(peg$currPos, 6);\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c71); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c876();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_KEY_BLOCK_SIZE() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 14).toLowerCase() === peg$c202) {\n s1 = input.substr(peg$currPos, 14);\n peg$currPos += 14;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c203); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c877();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_COMMENT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c878) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c879); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c880();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_CONSTRAINT() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 10).toLowerCase() === peg$c881) {\n s1 = input.substr(peg$currPos, 10);\n peg$currPos += 10;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c882); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c883();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseKW_REFERENCES() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 10).toLowerCase() === peg$c884) {\n s1 = input.substr(peg$currPos, 10);\n peg$currPos += 10;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c885); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n s3 = peg$parseident_start();\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c886();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseOPT_SQL_CALC_FOUND_ROWS() {\n var s0;\n\n if (input.substr(peg$currPos, 19).toLowerCase() === peg$c887) {\n s0 = input.substr(peg$currPos, 19);\n peg$currPos += 19;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c888); }\n }\n\n return s0;\n }\n\n function peg$parseOPT_SQL_CACHE() {\n var s0;\n\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c889) {\n s0 = input.substr(peg$currPos, 9);\n peg$currPos += 9;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c890); }\n }\n\n return s0;\n }\n\n function peg$parseOPT_SQL_NO_CACHE() {\n var s0;\n\n if (input.substr(peg$currPos, 12).toLowerCase() === peg$c891) {\n s0 = input.substr(peg$currPos, 12);\n peg$currPos += 12;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c892); }\n }\n\n return s0;\n }\n\n function peg$parseOPT_SQL_SMALL_RESULT() {\n var s0;\n\n if (input.substr(peg$currPos, 16).toLowerCase() === peg$c893) {\n s0 = input.substr(peg$currPos, 16);\n peg$currPos += 16;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c894); }\n }\n\n return s0;\n }\n\n function peg$parseOPT_SQL_BIG_RESULT() {\n var s0;\n\n if (input.substr(peg$currPos, 14).toLowerCase() === peg$c895) {\n s0 = input.substr(peg$currPos, 14);\n peg$currPos += 14;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c896); }\n }\n\n return s0;\n }\n\n function peg$parseOPT_SQL_BUFFER_RESULT() {\n var s0;\n\n if (input.substr(peg$currPos, 17).toLowerCase() === peg$c897) {\n s0 = input.substr(peg$currPos, 17);\n peg$currPos += 17;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c898); }\n }\n\n return s0;\n }\n\n function peg$parseDOT() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 46) {\n s0 = peg$c514;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c515); }\n }\n\n return s0;\n }\n\n function peg$parseCOMMA() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 44) {\n s0 = peg$c899;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c900); }\n }\n\n return s0;\n }\n\n function peg$parseSTAR() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 42) {\n s0 = peg$c401;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c402); }\n }\n\n return s0;\n }\n\n function peg$parseLPAREN() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 40) {\n s0 = peg$c270;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c271); }\n }\n\n return s0;\n }\n\n function peg$parseRPAREN() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 41) {\n s0 = peg$c272;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c273); }\n }\n\n return s0;\n }\n\n function peg$parseLBRAKE() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 91) {\n s0 = peg$c901;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c902); }\n }\n\n return s0;\n }\n\n function peg$parseRBRAKE() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 93) {\n s0 = peg$c903;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c904); }\n }\n\n return s0;\n }\n\n function peg$parseSEMICOLON() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 59) {\n s0 = peg$c905;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c906); }\n }\n\n return s0;\n }\n\n function peg$parseSINGLE_ARROW() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c907) {\n s0 = peg$c907;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c908); }\n }\n\n return s0;\n }\n\n function peg$parseDOUBLE_ARROW() {\n var s0;\n\n if (input.substr(peg$currPos, 3) === peg$c909) {\n s0 = peg$c909;\n peg$currPos += 3;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c910); }\n }\n\n return s0;\n }\n\n function peg$parseOPERATOR_CONCATENATION() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c407) {\n s0 = peg$c407;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c408); }\n }\n\n return s0;\n }\n\n function peg$parseOPERATOR_AND() {\n var s0;\n\n if (input.substr(peg$currPos, 2) === peg$c911) {\n s0 = peg$c911;\n peg$currPos += 2;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c912); }\n }\n\n return s0;\n }\n\n function peg$parseLOGIC_OPERATOR() {\n var s0;\n\n s0 = peg$parseOPERATOR_CONCATENATION();\n if (s0 === peg$FAILED) {\n s0 = peg$parseOPERATOR_AND();\n }\n\n return s0;\n }\n\n function peg$parse__() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsewhitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecomment();\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsewhitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecomment();\n }\n }\n\n return s0;\n }\n\n function peg$parse___() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsewhitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecomment();\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsewhitespace();\n if (s1 === peg$FAILED) {\n s1 = peg$parsecomment();\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecomment() {\n var s0;\n\n s0 = peg$parseblock_comment();\n if (s0 === peg$FAILED) {\n s0 = peg$parseline_comment();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepound_sign_comment();\n }\n }\n\n return s0;\n }\n\n function peg$parseblock_comment() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c913) {\n s1 = peg$c913;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c914); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c915) {\n s5 = peg$c915;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c916); }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsechar();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 2) === peg$c915) {\n s5 = peg$c915;\n peg$currPos += 2;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c916); }\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsechar();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c915) {\n s3 = peg$c915;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c916); }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseline_comment() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c917) {\n s1 = peg$c917;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c918); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseEOL();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsechar();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseEOL();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsechar();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepound_sign_comment() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c919;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c920); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseEOL();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsechar();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseEOL();\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = void 0;\n } else {\n peg$currPos = s4;\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsechar();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsekeyword_comment() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_COMMENT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseliteral_string();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c921(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0;\n\n if (input.length > peg$currPos) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c922); }\n }\n\n return s0;\n }\n\n function peg$parseinterval_unit() {\n var s0;\n\n s0 = peg$parseKW_UNIT_YEAR();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_UNIT_MONTH();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_UNIT_DAY();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_UNIT_HOUR();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_UNIT_MINUTE();\n if (s0 === peg$FAILED) {\n s0 = peg$parseKW_UNIT_SECOND();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsewhitespace() {\n var s0;\n\n if (peg$c923.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c924); }\n }\n\n return s0;\n }\n\n function peg$parseEOL() {\n var s0, s1;\n\n s0 = peg$parseEOF();\n if (s0 === peg$FAILED) {\n s0 = [];\n if (peg$c505.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c506); }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c505.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c506); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseEOF() {\n var s0, s1;\n\n s0 = peg$currPos;\n peg$silentFails++;\n if (input.length > peg$currPos) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c922); }\n }\n peg$silentFails--;\n if (s1 === peg$FAILED) {\n s0 = void 0;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseproc_stmts() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parseproc_stmt();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseproc_stmt();\n }\n\n return s0;\n }\n\n function peg$parseproc_stmt() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n peg$savedPos = peg$currPos;\n s1 = peg$c925();\n if (s1) {\n s1 = void 0;\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseassign_stmt();\n if (s3 === peg$FAILED) {\n s3 = peg$parsereturn_stmt();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c926(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseassign_stmt_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseassign_stmt();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseassign_stmt();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseassign_stmt();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c246(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseassign_stmt() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parsevar_decl();\n if (s1 === peg$FAILED) {\n s1 = peg$parsewithout_prefix_var_decl();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ASSIGN();\n if (s3 === peg$FAILED) {\n s3 = peg$parseKW_ASSIGIN_EQUAL();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseproc_expr();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c927(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsereturn_stmt() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_RETURN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseproc_expr();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c928(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseproc_expr() {\n var s0;\n\n s0 = peg$parseselect_stmt();\n if (s0 === peg$FAILED) {\n s0 = peg$parseproc_join();\n if (s0 === peg$FAILED) {\n s0 = peg$parseproc_additive_expr();\n if (s0 === peg$FAILED) {\n s0 = peg$parseproc_array();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseproc_additive_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseproc_multiplicative_expr();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseadditive_operator();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseproc_multiplicative_expr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseadditive_operator();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseproc_multiplicative_expr();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c359(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseproc_multiplicative_expr() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseproc_primary();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsemultiplicative_operator();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseproc_primary();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsemultiplicative_operator();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseproc_primary();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c359(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseproc_join() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parsevar_decl();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsejoin_op();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsevar_decl();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseon_clause();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c929(s1, s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseproc_primary() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$parseliteral();\n if (s0 === peg$FAILED) {\n s0 = peg$parsevar_decl();\n if (s0 === peg$FAILED) {\n s0 = peg$parseproc_func_call();\n if (s0 === peg$FAILED) {\n s0 = peg$parseparam();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseLPAREN();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseproc_additive_expr();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseRPAREN();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c930(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseproc_func_name() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseident_without_kw_type();\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseDOT();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse__();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseident_without_kw_type();\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c931(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseproc_func_call() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseproc_func_name();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseproc_primary_list();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c932(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseproc_func_name();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c933(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseproc_primary_list() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseproc_primary();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseproc_primary();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseCOMMA();\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseproc_primary();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c62(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseproc_array() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseLBRAKE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseproc_primary_list();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseRBRAKE();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c934(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsevar_decl() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_VAR_PRE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsewithout_prefix_var_decl();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c935(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsewithout_prefix_var_decl() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parseident_name();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsemem_chain();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c936(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseliteral_numeric();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c937(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsemem_chain() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s3 = peg$c514;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c515); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseident_name();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s3 = peg$c514;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c515); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseident_name();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c938(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsedata_type() {\n var s0;\n\n s0 = peg$parsecharacter_string_type();\n if (s0 === peg$FAILED) {\n s0 = peg$parsenumeric_type();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedatetime_type();\n if (s0 === peg$FAILED) {\n s0 = peg$parsejson_type();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetext_type();\n if (s0 === peg$FAILED) {\n s0 = peg$parseenum_type();\n if (s0 === peg$FAILED) {\n s0 = peg$parseboolean_type();\n if (s0 === peg$FAILED) {\n s0 = peg$parseblob_type();\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseblob_type() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c939) {\n s1 = input.substr(peg$currPos, 4);\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c940); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c941) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c942); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 10).toLowerCase() === peg$c943) {\n s1 = input.substr(peg$currPos, 10);\n peg$currPos += 10;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c944); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c945) {\n s1 = input.substr(peg$currPos, 8);\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c946); }\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c947(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseboolean_type() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c948) {\n s1 = input.substr(peg$currPos, 7);\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c949); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c950();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsecharacter_string_type() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_CHAR();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_VARCHAR();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = [];\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c951(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_CHAR();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c952(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_VARCHAR();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c952(s1);\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parsenumeric_type_suffix() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_UNSIGNED();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseKW_ZEROFILL();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c953(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenumeric_type() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_NUMERIC();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DECIMAL();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_INT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_INTEGER();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_SMALLINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TINYINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_BIGINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_FLOAT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DOUBLE();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_BIT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_REAL();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n s5 = [];\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s6 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n s8 = peg$parseCOMMA();\n if (s8 !== peg$FAILED) {\n s9 = peg$parse__();\n if (s9 !== peg$FAILED) {\n s10 = [];\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s11 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n if (s11 !== peg$FAILED) {\n while (s11 !== peg$FAILED) {\n s10.push(s11);\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s11 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n }\n } else {\n s10 = peg$FAILED;\n }\n if (s10 !== peg$FAILED) {\n s8 = [s8, s9, s10];\n s7 = s8;\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n } else {\n peg$currPos = s7;\n s7 = peg$FAILED;\n }\n if (s7 === peg$FAILED) {\n s7 = null;\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseRPAREN();\n if (s9 !== peg$FAILED) {\n s10 = peg$parse__();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsenumeric_type_suffix();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c954(s1, s5, s7, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_NUMERIC();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DECIMAL();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_INT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_INTEGER();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_SMALLINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TINYINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_BIGINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_FLOAT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DOUBLE();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_REAL();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c519.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c520); }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse__();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsenumeric_type_suffix();\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c955(s1, s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_NUMERIC();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DECIMAL();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_INT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_INTEGER();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_SMALLINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TINYINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_BIGINT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_FLOAT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DOUBLE();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_REAL();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumeric_type_suffix();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c956(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsedatetime_type() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_DATE();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DATETIME();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TIME();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TIMESTAMP();\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseLPAREN();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse__();\n if (s4 !== peg$FAILED) {\n if (peg$c957.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c958); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse__();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseRPAREN();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse__();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsenumeric_type_suffix();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c959(s1, s5, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseKW_DATE();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_DATETIME();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TIME();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TIMESTAMP();\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c952(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseenum_type() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_ENUM();\n if (s1 !== peg$FAILED) {\n s2 = peg$parse__();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsevalue_item();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c960(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsejson_type() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_JSON();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c952(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsetext_type() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseKW_TINYTEXT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_TEXT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_MEDIUMTEXT();\n if (s1 === peg$FAILED) {\n s1 = peg$parseKW_LONGTEXT();\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c961(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n\n const reservedMap = {\n 'ALTER': true,\n 'ALL': true,\n 'ADD': true,\n 'AND': true,\n 'AS': true,\n 'ASC': true,\n\n 'BETWEEN': true,\n 'BY': true,\n\n 'CALL': true,\n 'CASE': true,\n 'CREATE': true,\n 'CONTAINS': true,\n 'CURRENT_DATE': true,\n 'CURRENT_TIME': true,\n 'CURRENT_TIMESTAMP': true,\n 'CURRENT_USER': true,\n\n 'DELETE': true,\n 'DESC': true,\n 'DISTINCT': true,\n 'DROP': true,\n\n 'ELSE': true,\n 'END': true,\n 'EXISTS': true,\n 'EXPLAIN': true,\n\n 'FALSE': true,\n 'FROM': true,\n 'FULL': true,\n\n 'GROUP': true,\n\n 'HAVING': true,\n\n 'IN': true,\n 'INNER': true,\n 'INSERT': true,\n 'INTO': true,\n 'IS': true,\n\n 'JOIN': true,\n // 'JSON': true,\n\n // 'KEY': true,\n\n 'LEFT': true,\n 'LIKE': true,\n 'LIMIT': true,\n 'LOW_PRIORITY': true, // for lock table\n\n 'NOT': true,\n 'NULL': true,\n\n 'ON': true,\n 'OR': true,\n 'ORDER': true,\n 'OUTER': true,\n\n 'RECURSIVE': true,\n 'RENAME': true,\n 'READ': true, // for lock table\n 'RIGHT': true,\n\n 'SELECT': true,\n 'SESSION_USER': true,\n 'SET': true,\n 'SHOW': true,\n 'SYSTEM_USER': true,\n\n 'TABLE': true,\n 'THEN': true,\n 'TRUE': true,\n 'TRUNCATE': true,\n // 'TYPE': true, // reserved (MySQL)\n\n 'UNION': true,\n 'UPDATE': true,\n 'USING': true,\n\n 'VALUES': true,\n\n 'WITH': true,\n 'WHEN': true,\n 'WHERE': true,\n 'WRITE': true, // for lock table\n\n 'GLOBAL': true,\n 'SESSION': true,\n 'LOCAL': true,\n 'PERSIST': true,\n 'PERSIST_ONLY': true,\n };\n\n function getLocationObject() {\n return options.includeLocations ? {loc: location()} : {}\n }\n\n function createUnaryExpr(op, e) {\n return {\n type: 'unary_expr',\n operator: op,\n expr: e\n };\n }\n\n function createBinaryExpr(op, left, right) {\n return {\n type: 'binary_expr',\n operator: op,\n left: left,\n right: right\n };\n }\n\n function isBigInt(numberStr) {\n const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER)\n const num = BigInt(numberStr)\n if (num < previousMaxSafe) return false\n return true\n }\n\n function createList(head, tail, po = 3) {\n const result = [head];\n for (let i = 0; i < tail.length; i++) {\n delete tail[i][po].tableList\n delete tail[i][po].columnList\n result.push(tail[i][po]);\n }\n return result;\n }\n\n function createBinaryExprChain(head, tail) {\n let result = head;\n for (let i = 0; i < tail.length; i++) {\n result = createBinaryExpr(tail[i][1], result, tail[i][3]);\n }\n return result;\n }\n\n function queryTableAlias(tableName) {\n const alias = tableAlias[tableName]\n if (alias) return alias\n if (tableName) return tableName\n return null\n }\n\n function columnListTableAlias(columnList) {\n const newColumnsList = new Set()\n const symbolChar = '::'\n for(let column of columnList.keys()) {\n const columnInfo = column.split(symbolChar)\n if (!columnInfo) {\n newColumnsList.add(column)\n break\n }\n if (columnInfo && columnInfo[1]) columnInfo[1] = queryTableAlias(columnInfo[1])\n newColumnsList.add(columnInfo.join(symbolChar))\n }\n return Array.from(newColumnsList)\n }\n\n function refreshColumnList(columnList) {\n const columns = columnListTableAlias(columnList)\n columnList.clear()\n columns.forEach(col => columnList.add(col))\n }\n\n const cmpPrefixMap = {\n '+': true,\n '-': true,\n '*': true,\n '/': true,\n '>': true,\n '<': true,\n '!': true,\n '=': true,\n\n //between\n 'B': true,\n 'b': true,\n //for is or in\n 'I': true,\n 'i': true,\n //for like\n 'L': true,\n 'l': true,\n //for not\n 'N': true,\n 'n': true\n };\n\n // used for dependency analysis\n let varList = [];\n\n const tableList = new Set();\n const columnList = new Set();\n const tableAlias = {};\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nmodule.exports = {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n","module.exports = require(\"big-integer\");","import { columnToSQL, columnRefToSQL, columnOrderToSQL } from './column'\nimport { collateToSQL } from './collate'\n\n// const escapeMap = {\n// '\\0' : '\\\\0',\n// '\\'' : '\\\\\\'',\n// '\"' : '\\\\\"',\n// '\\b' : '\\\\b',\n// '\\n' : '\\\\n',\n// '\\r' : '\\\\r',\n// '\\t' : '\\\\t',\n// '\\x1a' : '\\\\Z',\n// // '\\\\' : '\\\\\\\\',\n// }\n\nconst DEFAULT_OPT = {\n database : PARSER_NAME || 'mysql',\n type : 'table',\n trimQuery : true,\n parseOptions : {\n includeLocations : false,\n },\n}\n\nlet parserOpt = DEFAULT_OPT\n\nfunction commonOptionConnector(keyword, action, opt) {\n if (!opt) return\n if (!keyword) return action(opt)\n return `${keyword.toUpperCase()} ${action(opt)}`\n}\n\nfunction connector(keyword, str) {\n if (!str) return\n return `${keyword.toUpperCase()} ${str}`\n}\n\n/**\n * @param {(Array|boolean|string|number|null)} value\n * @return {Object}\n */\nfunction createValueExpr(value) {\n const type = typeof value\n if (Array.isArray(value)) return { type: 'expr_list', value: value.map(createValueExpr) }\n if (value === null) return { type: 'null', value: null }\n switch (type) {\n case 'boolean':\n return { type: 'bool', value }\n case 'string':\n return { type: 'string', value }\n case 'number':\n return { type: 'number', value }\n default:\n throw new Error(`Cannot convert value \"${type}\" to SQL`)\n }\n}\n\n/**\n * @param operator\n * @param left\n * @param right\n * @return {Object}\n */\nfunction createBinaryExpr(operator, left, right) {\n const expr = { operator, type: 'binary_expr' }\n expr.left = left.type ? left : createValueExpr(left)\n if (operator === 'BETWEEN' || operator === 'NOT BETWEEN') {\n expr.right = {\n type : 'expr_list',\n value : [createValueExpr(right[0]), createValueExpr(right[1])],\n }\n return expr\n }\n expr.right = right.type ? right : createValueExpr(right)\n return expr\n}\n\n/**\n * Replace param expressions\n *\n * @param {Object} ast - AST object\n * @param {Object} keys - Keys = parameter names, values = parameter values\n * @return {Object} - Newly created AST object\n */\nfunction replaceParamsInner(ast, keys) {\n Object.keys(ast)\n .filter(key => {\n const value = ast[key]\n return Array.isArray(value) || (typeof value === 'object' && value !== null)\n })\n .forEach(key => {\n const expr = ast[key]\n if (!(typeof expr === 'object' && expr.type === 'param')) return replaceParamsInner(expr, keys)\n if (typeof keys[expr.value] === 'undefined') throw new Error(`no value for parameter :${expr.value} found`)\n ast[key] = createValueExpr(keys[expr.value])\n return null\n })\n\n return ast\n}\n\nfunction escape(str) {\n return str\n // const res = []\n // for (let i = 0, len = str.length; i < len; ++i) {\n // let char = str[i]\n // const escaped = escapeMap[char]\n // if (escaped) char = escaped\n // res.push(char)\n // }\n // return res.join('')\n}\n\nfunction getParserOpt() {\n return parserOpt\n}\n\nfunction setParserOpt(opt) {\n parserOpt = opt\n}\n\nfunction topToSQL(opt) {\n if (!opt) return\n const { value, percent, parentheses } = opt\n const val = parentheses ? `(${value})` : value\n const prefix = `TOP ${val}`\n if (!percent) return prefix\n return `${prefix} ${percent.toUpperCase()}`\n}\n\nfunction columnIdentifierToSql(ident) {\n const { database } = getParserOpt()\n if (!ident) return\n switch (database && database.toLowerCase()) {\n case 'athena':\n case 'db2':\n case 'postgresql':\n case 'redshift':\n case 'snowflake':\n case 'noql':\n case 'trino':\n case 'sqlite':\n return `\"${ident}\"`\n case 'transactsql':\n return `[${ident}]`\n case 'mysql':\n case 'mariadb':\n case 'bigquery':\n default:\n return `\\`${ident}\\``\n }\n}\n\nfunction identifierToSql(ident, isDual) {\n const { database } = getParserOpt()\n if (isDual === true) return `'${ident}'`\n if (!ident) return\n if (ident === '*') return ident\n switch (database && database.toLowerCase()) {\n case 'mysql':\n case 'mariadb':\n return `\\`${ident}\\``\n case 'athena':\n case 'postgresql':\n case 'redshift':\n case 'snowflake':\n case 'trino':\n case 'noql':\n case 'sqlite':\n return `\"${ident}\"`\n case 'transactsql':\n return `[${ident}]`\n case 'bigquery':\n case 'db2':\n return ident\n default:\n return `\\`${ident}\\``\n }\n}\n\nfunction toUpper(val) {\n if (!val) return\n return val.toUpperCase()\n}\n\nfunction hasVal(val) {\n return val\n}\n\nfunction literalToSQL(literal) {\n if (!literal) return\n let { prefix } = literal\n const { type, parentheses, suffix, value } = literal\n let str = typeof literal === 'object' ? value : literal\n switch (type) {\n case 'backticks_quote_string':\n str = `\\`${escape(value)}\\``\n break\n case 'string':\n str = `'${escape(value)}'`\n break\n case 'regex_string':\n str = `r\"${escape(value)}\"`\n break\n case 'hex_string':\n str = `X'${escape(value)}'`\n break\n case 'full_hex_string':\n str = `0x${escape(value)}`\n break\n case 'natural_string':\n str = `N'${escape(value)}'`\n break\n case 'bit_string':\n str = `b'${escape(value)}'`\n break\n case 'double_quote_string':\n str = `\"${escape(value)}\"`\n break\n case 'single_quote_string':\n str = `'${value}'`\n break\n case 'boolean':\n case 'bool':\n str = value ? 'TRUE' : 'FALSE'\n break\n case 'null':\n str = 'NULL'\n break\n case 'star':\n str = '*'\n break\n case 'param':\n str = `${prefix || ':'}${value}`\n prefix = null\n break\n case 'origin':\n str = value.toUpperCase()\n break\n case 'date':\n case 'datetime':\n case 'time':\n case 'timestamp':\n str = `${type.toUpperCase()} '${value}'`\n break\n case 'var_string':\n str = `N'${escape(value)}'`\n break\n case 'unicode_string':\n str = `U&'${escape(value)}'`\n break\n default:\n break\n }\n const result = []\n if (prefix) result.push(toUpper(prefix))\n result.push(str)\n if (suffix) {\n if (typeof suffix === 'string') result.push(suffix)\n if (typeof suffix === 'object') {\n if (suffix.collate) result.push(collateToSQL(suffix.collate))\n else result.push(literalToSQL(suffix))\n }\n }\n str = result.join(' ')\n return parentheses ? `(${str})` : str\n}\n\nfunction commonTypeValue(opt) {\n if (!opt) return []\n const { type, symbol, value } = opt\n return [type.toUpperCase(), symbol, typeof value === 'string' ? value.toUpperCase() : literalToSQL(value)].filter(hasVal)\n}\n\nfunction replaceParams(ast, params) {\n return replaceParamsInner(JSON.parse(JSON.stringify(ast)), params)\n}\n\nfunction onPartitionsToSQL(expr) {\n const { type, partitions } = expr\n const result = [\n toUpper(type),\n `(${partitions.map(partition => {\n const { type: partitionType } = partition\n if (!(partitionType === 'range')) return literalToSQL(partition)\n const { start, end, symbol } = partition\n return `${literalToSQL(start)} ${toUpper(symbol)} ${literalToSQL(end)}`\n }).join(', ')})`,\n ]\n return result.join(' ')\n}\n\nfunction dataTypeToSQL(expr) {\n const { dataType, length, parentheses, scale, suffix } = expr\n let str = ''\n if (length != null) str = scale ? `${length}, ${scale}` : length\n if (parentheses) str = `(${str})`\n if (suffix && suffix.length) str += ` ${suffix.join(' ')}`\n return `${dataType}${str}`\n}\n\nfunction arrayStructTypeToSQL(expr) {\n if (!expr) return\n const { dataType, definition, anglebracket } = expr\n const dataTypeUpper = toUpper(dataType)\n const isNotArrayOrStruct = dataTypeUpper !== 'ARRAY' && dataTypeUpper !== 'STRUCT'\n if (isNotArrayOrStruct) return dataTypeUpper\n const result = definition && definition.map(field => {\n const {\n field_name: fieldName, field_type: fieldType,\n } = field\n const fieldResult = [fieldName, arrayStructTypeToSQL(fieldType)]\n return fieldResult.filter(hasVal).join(' ')\n }).join(', ')\n return anglebracket ? `${dataTypeUpper}<${result}>` : `${dataTypeUpper} ${result}`\n}\n\nfunction commentToSQL(comment) {\n if (!comment) return\n const result = []\n const { keyword, symbol, value } = comment\n result.push(keyword.toUpperCase())\n if (symbol) result.push(symbol)\n result.push(literalToSQL(value))\n return result.join(' ')\n}\n\nfunction triggerEventToSQL(events) {\n return events.map(event => {\n const { keyword: eventKw, args } = event\n const result = [toUpper(eventKw)]\n if (args) {\n const { keyword: kwArgs, columns } = args\n result.push(toUpper(kwArgs), columns.map(columnRefToSQL).join(', '))\n }\n return result.join(' ')\n }).join(' OR ')\n}\n\nfunction returningToSQL(returning) {\n if (!returning) return ''\n const { columns } = returning\n return [\n 'RETURNING',\n columns.map(columnToSQL).filter(hasVal).join(', '),\n ].join(' ')\n}\n\nfunction commonKeywordArgsToSQL(kwArgs) {\n if (!kwArgs) return []\n return [toUpper(kwArgs.keyword), toUpper(kwArgs.args)]\n}\n\nfunction autoIncrementToSQL(autoIncrement) {\n if (!autoIncrement) return\n if (typeof autoIncrement === 'string') {\n const { database } = getParserOpt()\n switch (database && database.toLowerCase()) {\n case 'sqlite':\n return 'AUTOINCREMENT'\n default:\n return 'AUTO_INCREMENT'\n }\n }\n const { keyword, seed, increment, parentheses } = autoIncrement\n let result = toUpper(keyword)\n if (parentheses) result += `(${literalToSQL(seed)}, ${literalToSQL(increment)})`\n return result\n}\n\nfunction columnOrderListToSQL(columnOrderList) {\n if (!columnOrderList) return\n return columnOrderList.map(columnOrderToSQL).filter(hasVal).join(', ')\n}\n\nexport {\n arrayStructTypeToSQL, autoIncrementToSQL,\n columnOrderListToSQL, commonKeywordArgsToSQL, commonOptionConnector,\n connector, commonTypeValue,commentToSQL, createBinaryExpr,\n createValueExpr, dataTypeToSQL, DEFAULT_OPT, escape, literalToSQL, columnIdentifierToSql,\n getParserOpt, identifierToSql, onPartitionsToSQL, replaceParams, returningToSQL,\n hasVal, setParserOpt, toUpper, topToSQL, triggerEventToSQL,\n}\n","import {\n literalToSQL,\n toUpper,\n hasVal,\n commentToSQL,\n onPartitionsToSQL,\n} from './util'\nimport { exprToSQL } from './expr'\n\nfunction indexTypeToSQL(indexType) {\n if (!indexType) return []\n const { keyword, type } = indexType\n return [keyword.toUpperCase(), toUpper(type)]\n}\n\nfunction indexOptionToSQL(indexOpt) {\n if (!indexOpt) return\n const { type, expr, symbol } = indexOpt\n const upperType = type.toUpperCase()\n const indexOptArray = []\n indexOptArray.push(upperType)\n switch (upperType) {\n case 'KEY_BLOCK_SIZE':\n if (symbol) indexOptArray.push(symbol)\n indexOptArray.push(literalToSQL(expr))\n break\n case 'BTREE':\n case 'HASH':\n indexOptArray.length = 0\n indexOptArray.push(...indexTypeToSQL(indexOpt))\n break\n case 'WITH PARSER':\n indexOptArray.push(expr)\n break\n case 'VISIBLE':\n case 'INVISIBLE':\n break\n case 'COMMENT':\n indexOptArray.shift()\n indexOptArray.push(commentToSQL(indexOpt))\n break\n case 'DATA_COMPRESSION':\n indexOptArray.push(symbol, toUpper(expr.value), onPartitionsToSQL(expr.on))\n break\n default:\n indexOptArray.push(symbol, literalToSQL(expr))\n break\n }\n return indexOptArray.filter(hasVal).join(' ')\n}\n\nfunction indexOptionListToSQL(indexOptList) {\n if (!indexOptList) return []\n return indexOptList.map(indexOptionToSQL)\n}\n\nfunction indexTypeAndOptionToSQL(indexDefinition) {\n const {\n constraint_type: constraintType,\n index_type: indexType,\n index_options: indexOptions = [],\n definition,\n on, with: withExpr,\n } = indexDefinition\n const dataType = []\n dataType.push(...indexTypeToSQL(indexType))\n if (definition && definition.length) {\n const definitionSQL = toUpper(constraintType) === 'CHECK' ? `(${exprToSQL(definition[0])})` : `(${definition.map(col => exprToSQL(col)).join(', ')})`\n dataType.push(definitionSQL)\n }\n dataType.push(indexOptionListToSQL(indexOptions).join(' '))\n if (withExpr) dataType.push(`WITH (${indexOptionListToSQL(withExpr).join(', ')})`)\n if (on) dataType.push(`ON [${on}]`)\n return dataType\n}\n\nfunction indexDefinitionToSQL(indexDefinition) {\n const indexSQL = []\n const { keyword, index } = indexDefinition\n indexSQL.push(toUpper(keyword))\n indexSQL.push(index)\n indexSQL.push(...indexTypeAndOptionToSQL(indexDefinition))\n return indexSQL.filter(hasVal).join(' ')\n}\n\nexport {\n indexDefinitionToSQL,\n indexTypeToSQL,\n indexOptionToSQL,\n indexOptionListToSQL,\n indexTypeAndOptionToSQL,\n}\n","import { exprToSQL } from './expr'\nimport { hasVal, toUpper } from './util'\n\nfunction binaryToSQL(expr) {\n let operator = expr.operator || expr.op\n let rstr = exprToSQL(expr.right)\n let isBetween = false\n if (Array.isArray(rstr)) {\n switch (operator) {\n case '=':\n operator = 'IN'\n break\n case '!=':\n operator = 'NOT IN'\n break\n case 'BETWEEN':\n case 'NOT BETWEEN':\n isBetween = true\n rstr = `${rstr[0]} AND ${rstr[1]}`\n break\n default:\n break\n }\n if (!isBetween) rstr = `(${rstr.join(', ')})`\n }\n const escape = expr.right.escape || {}\n const leftPart = Array.isArray(expr.left) ? expr.left.map(exprToSQL).join(', ') : exprToSQL(expr.left)\n const str = [leftPart, operator, rstr, toUpper(escape.type), exprToSQL(escape.value)].filter(hasVal).join(' ')\n const result = [expr.parentheses ? `(${str})` : str]\n return result.join(' ')\n}\n\nexport {\n binaryToSQL,\n}\n","import { connector, toUpper, hasVal, literalToSQL } from './util'\nimport { exprToSQL } from './expr'\n\nfunction composePrefixValSuffix(stmt) {\n if (!stmt) return []\n return [stmt.prefix.map(literalToSQL).join(' '), exprToSQL(stmt.value), stmt.suffix.map(literalToSQL).join(' ')]\n}\n\nfunction fetchOffsetToSQL(stmt) {\n const { fetch, offset } = stmt\n const result = [...composePrefixValSuffix(offset), ...composePrefixValSuffix(fetch)]\n return result.filter(hasVal).join(' ')\n}\n\nfunction limitOffsetToSQL(limit) {\n const { seperator, value } = limit\n if (value.length === 1 && seperator === 'offset') return connector('OFFSET', exprToSQL(value[0]))\n return connector('LIMIT', value.map(exprToSQL).join(`${seperator === 'offset' ? ' ' : ''}${toUpper(seperator)} `))\n}\n\nfunction limitToSQL(limit) {\n if (!limit) return ''\n if (limit.fetch || limit.offset) return fetchOffsetToSQL(limit)\n return limitOffsetToSQL(limit)\n}\n\nexport {\n limitToSQL,\n}\n","import { columnRefToSQL } from './column'\nimport { exprToSQL } from './expr'\nimport { identifierToSql, literalToSQL } from './util'\n\n/**\n * @param {Array} withExpr\n */\nfunction withToSQL(withExpr) {\n if (!withExpr || withExpr.length === 0) return\n const isRecursive = withExpr[0].recursive ? 'RECURSIVE ' : ''\n const withExprStr = withExpr.map(cte => {\n const { name, stmt, columns } = cte\n const column = Array.isArray(columns) ? `(${columns.map(columnRefToSQL).join(', ')})` : ''\n return `${name.type === 'default' ? identifierToSql(name.value) : literalToSQL(name)}${column} AS (${exprToSQL(stmt)})`\n }).join(', ')\n\n return `WITH ${isRecursive}${withExprStr}`\n}\n\nexport {\n withToSQL,\n}\n","import { exprToSQL, getExprListSQL, orderOrPartitionByToSQL, varToSQL } from './expr'\nimport { columnsToSQL } from './column'\nimport { limitToSQL } from './limit'\nimport { withToSQL } from './with'\nimport { tablesToSQL } from './tables'\nimport { hasVal, commonOptionConnector, connector, identifierToSql, topToSQL, toUpper, literalToSQL } from './util'\nimport { collateToSQL } from './collate'\n\nfunction distinctToSQL(distinct) {\n if (!distinct) return\n if (typeof distinct === 'string') return distinct\n const { type, columns } = distinct\n const result = [toUpper(type)]\n if (columns) result.push(`(${columns.map(exprToSQL).join(', ')})`)\n return result.filter(hasVal).join(' ')\n}\n\nfunction selectIntoToSQL(into) {\n if (!into) return\n const { position } = into\n if (!position) return\n const { keyword, expr } = into\n const result = []\n const intoType = toUpper(keyword)\n switch (intoType) {\n case 'VAR':\n result.push(expr.map(varToSQL).join(', '))\n break\n default:\n result.push(intoType, typeof expr === 'string' ? identifierToSql(expr) : exprToSQL(expr))\n }\n return result.filter(hasVal).join(' ')\n}\n/**\n * @param {Object} stmt\n * @param {?Array} stmt.with\n * @param {?Array} stmt.options\n * @param {?string} stmt.distinct\n * @param {?Array|string} stmt.columns\n * @param {?Array} stmt.from\n * @param {?Object} stmt.where\n * @param {?Array} stmt.groupby\n * @param {?Object} stmt.having\n * @param {?Array} stmt.orderby\n * @param {?Array} stmt.limit\n * @return {string}\n */\n\nfunction forXmlToSQL(stmt) {\n if (!stmt) return\n const { expr, keyword, type } = stmt\n const result = [toUpper(type), toUpper(keyword)]\n if (!expr) return result.join(' ')\n return `${result.join(' ')}(${exprToSQL(expr)})`\n}\n\nfunction selectToSQL(stmt) {\n const {\n as_struct_val: asStructVal,\n columns,\n collate,\n distinct,\n for: forXml,\n from,\n for_sys_time_as_of: forSystem = {},\n locking_read: lockingRead,\n groupby,\n having,\n into = {},\n isolation,\n limit,\n options,\n orderby,\n parentheses_symbol: parentheses,\n qualify,\n top,\n window: windowInfo,\n with: withInfo,\n where,\n } = stmt\n const clauses = [withToSQL(withInfo), 'SELECT', toUpper(asStructVal)]\n if (Array.isArray(options)) clauses.push(options.join(' '))\n clauses.push(distinctToSQL(distinct), topToSQL(top), columnsToSQL(columns, from))\n const { position } = into\n let intoSQL = ''\n if (position) intoSQL = commonOptionConnector('INTO', selectIntoToSQL, into)\n if (position === 'column') clauses.push(intoSQL)\n // FROM + joins\n clauses.push(commonOptionConnector('FROM', tablesToSQL, from))\n if (position === 'from') clauses.push(intoSQL)\n const { keyword, expr } = forSystem || {}\n clauses.push(commonOptionConnector(keyword, exprToSQL, expr))\n clauses.push(commonOptionConnector('WHERE', exprToSQL, where))\n if (groupby) {\n clauses.push(connector('GROUP BY', getExprListSQL(groupby.columns).join(', ')))\n clauses.push(getExprListSQL(groupby.modifiers).join(', '))\n }\n clauses.push(commonOptionConnector('HAVING', exprToSQL, having))\n clauses.push(commonOptionConnector('QUALIFY', exprToSQL, qualify))\n clauses.push(commonOptionConnector('WINDOW', exprToSQL, windowInfo))\n clauses.push(orderOrPartitionByToSQL(orderby, 'order by'))\n clauses.push(collateToSQL(collate))\n clauses.push(limitToSQL(limit))\n if (isolation) clauses.push(commonOptionConnector(isolation.keyword, literalToSQL, isolation.expr))\n clauses.push(toUpper(lockingRead))\n if (position === 'end') clauses.push(intoSQL)\n clauses.push(forXmlToSQL(forXml))\n const sql = clauses.filter(hasVal).join(' ')\n return parentheses ? `(${sql})` : sql\n}\n\nexport {\n selectIntoToSQL,\n selectToSQL,\n}\n","import { tablesToSQL } from './tables'\nimport { exprToSQL, orderOrPartitionByToSQL } from './expr'\nimport { columnRefToSQL } from './column'\nimport { limitToSQL } from './limit'\nimport { hasVal, commonOptionConnector, returningToSQL } from './util'\nimport { withToSQL } from './with'\n\n/**\n * @param {Array} sets\n * @return {string}\n */\nfunction setToSQL(sets) {\n if (!sets || sets.length === 0) return ''\n const clauses = []\n for (const set of sets) {\n const column = {}\n const { value } = set\n for (const key in set) {\n if (key === 'value' || key === 'keyword') continue\n column[key] = set[key]\n }\n const str = columnRefToSQL(column)\n const setItem = [str]\n let val = ''\n if (value) {\n val = exprToSQL(value)\n setItem.push('=', val)\n }\n clauses.push(setItem.filter(hasVal).join(' '))\n }\n return clauses.join(', ')\n}\n\nfunction updateToSQL(stmt) {\n const { from, table, set, where, orderby, with: withInfo, limit, returning } = stmt\n const clauses = [\n withToSQL(withInfo),\n 'UPDATE',\n tablesToSQL(table),\n commonOptionConnector('SET', setToSQL, set),\n commonOptionConnector('FROM', tablesToSQL, from),\n commonOptionConnector('WHERE', exprToSQL, where),\n orderOrPartitionByToSQL(orderby, 'order by'),\n limitToSQL(limit),\n returningToSQL(returning),\n ]\n return clauses.filter(hasVal).join(' ')\n}\n\nexport {\n updateToSQL,\n setToSQL,\n}\n","import { tablesToSQL } from './tables'\nimport { exprToSQL } from './expr'\nimport { columnRefToSQL } from './column'\nimport { identifierToSql, commonOptionConnector, hasVal, toUpper, returningToSQL, literalToSQL } from './util'\nimport { selectToSQL } from './select'\nimport { setToSQL } from './update'\n\n/**\n * @param {Array} values\n * @return {string}\n */\nfunction valuesToSQL(values) {\n if (values.type === 'select') return selectToSQL(values)\n const clauses = values.map(exprToSQL)\n return `(${clauses.join('), (')})`\n}\n\nfunction partitionToSQL(partition) {\n if (!partition) return ''\n const partitionArr = ['PARTITION', '(']\n if (Array.isArray(partition)) {\n partitionArr.push(partition.map(identifierToSql).join(', '))\n } else {\n const { value } = partition\n partitionArr.push(value.map(exprToSQL).join(', '))\n }\n partitionArr.push(')')\n return partitionArr.filter(hasVal).join('')\n}\n\nfunction conflictTargetToSQL(conflictTarget) {\n if (!conflictTarget) return ''\n const { type } = conflictTarget\n switch (type) {\n case 'column':\n return `(${conflictTarget.expr.map(columnRefToSQL).join(', ')})`\n }\n}\n\nfunction conflictActionToSQL(conflictAction) {\n const { expr, keyword } = conflictAction\n const { type } = expr\n const result = [toUpper(keyword)]\n switch (type) {\n case 'origin':\n result.push(literalToSQL(expr))\n break\n case 'update':\n result.push('UPDATE', commonOptionConnector('SET', setToSQL, expr.set), commonOptionConnector('WHERE', exprToSQL, expr.where))\n break\n }\n return result.filter(hasVal).join(' ')\n}\n\nfunction conflictToSQL(conflict) {\n if (!conflict) return ''\n const { action, target } = conflict\n const result = [conflictTargetToSQL(target), conflictActionToSQL(action)]\n return result.filter(hasVal).join(' ')\n}\n\nfunction insertToSQL(stmt) {\n const {\n table,\n type,\n or: orExpr = [],\n prefix = 'into',\n columns,\n conflict,\n values,\n where,\n on_duplicate_update: onDuplicateUpdate,\n partition,\n returning,\n set,\n } = stmt\n const { keyword, set: duplicateSet } = onDuplicateUpdate || {}\n const clauses = [toUpper(type), orExpr.map(literalToSQL).join(' '), toUpper(prefix), tablesToSQL(table), partitionToSQL(partition)]\n if (Array.isArray(columns)) clauses.push(`(${columns.map(literalToSQL).join(', ')})`)\n clauses.push(commonOptionConnector(Array.isArray(values) ? 'VALUES' : '', valuesToSQL, values))\n clauses.push(commonOptionConnector('ON CONFLICT', conflictToSQL, conflict))\n clauses.push(commonOptionConnector('SET', setToSQL, set))\n clauses.push(commonOptionConnector('WHERE', exprToSQL, where))\n clauses.push(commonOptionConnector(keyword, setToSQL, duplicateSet))\n clauses.push(returningToSQL(returning))\n return clauses.filter(hasVal).join(' ')\n}\n\nexport {\n conflictToSQL,\n insertToSQL,\n valuesToSQL,\n}\n","import { toUpper, hasVal } from './util'\nimport { exprToSQL } from './expr'\n\nfunction intervalToSQL(intervalExpr) {\n const { expr, unit, suffix } = intervalExpr\n const result = ['INTERVAL', exprToSQL(expr), toUpper(unit), exprToSQL(suffix)]\n return result.filter(hasVal).join(' ')\n}\n\nexport {\n intervalToSQL,\n}\n","import { binaryToSQL } from './binary'\nimport { columnRefToSQL } from './column'\nimport { exprToSQL } from './expr'\nimport { valuesToSQL } from './insert'\nimport { intervalToSQL } from './interval'\nimport { commonOptionConnector, commonTypeValue, hasVal, identifierToSql, literalToSQL, toUpper } from './util'\n\nfunction unnestToSQL(unnestExpr) {\n const { type, as, expr, with_offset: withOffset } = unnestExpr\n const result = [\n `${toUpper(type)}(${expr && exprToSQL(expr) || ''})`,\n commonOptionConnector('AS', typeof as === 'string' ? identifierToSql : exprToSQL, as),\n commonOptionConnector(\n toUpper(withOffset && withOffset.keyword),\n identifierToSql,\n withOffset && withOffset.as\n ),\n ]\n return result.filter(hasVal).join(' ')\n}\n\nfunction pivotOperatorToSQL(operator) {\n const { as, column, expr, in_expr, type } = operator\n const result = [\n exprToSQL(expr),\n 'FOR',\n columnRefToSQL(column),\n binaryToSQL(in_expr),\n ]\n const sql = [`${toUpper(type)}(${result.join(' ')})`]\n if (as) sql.push('AS', identifierToSql(as))\n return sql.join(' ')\n}\n\nfunction operatorToSQL(operator) {\n if (!operator) return\n const { type } = operator\n switch (type) {\n case 'pivot':\n case 'unpivot':\n return pivotOperatorToSQL(operator)\n default:\n return ''\n }\n}\n\nfunction tableHintToSQL(tableHintExpr) {\n if (!tableHintExpr) return\n const { keyword, expr, index, index_columns, parentheses, prefix } = tableHintExpr\n const result = []\n switch (keyword.toLowerCase()) {\n case 'forceseek':\n result.push(toUpper(keyword), `(${identifierToSql(index)}`, `(${index_columns.map(exprToSQL).filter(hasVal).join(', ')}))`)\n break\n case 'spatial_window_max_cells':\n result.push(toUpper(keyword), '=', exprToSQL(expr))\n break\n case 'index':\n result.push(toUpper(prefix), toUpper(keyword), parentheses ? `(${expr.map(identifierToSql).join(', ')})` : `= ${identifierToSql(expr)}`)\n break\n default:\n result.push(exprToSQL(expr))\n }\n return result.filter(hasVal).join(' ')\n}\n\nfunction tableTumbleArgsToSQL(param, expr) {\n const { name, symbol } = param\n return [toUpper(name), symbol, expr].filter(hasVal).join(' ')\n}\nfunction tableTumbleToSQL(tumble) {\n if (!tumble) return ''\n const { data: tableInfo, timecol, offset, size } = tumble\n const fullTableName = [identifierToSql(tableInfo.expr.db), identifierToSql(tableInfo.expr.schema), identifierToSql(tableInfo.expr.table)].filter(hasVal).join('.')\n const timeColSQL = `DESCRIPTOR(${columnRefToSQL(timecol.expr)})`\n const result = [`TABLE(TUMBLE(TABLE ${tableTumbleArgsToSQL(tableInfo, fullTableName)}`, tableTumbleArgsToSQL(timecol, timeColSQL)]\n const sizeSQL = tableTumbleArgsToSQL(size, intervalToSQL(size.expr))\n if (offset && offset.expr) result.push(sizeSQL, `${tableTumbleArgsToSQL(offset, intervalToSQL(offset.expr))}))`)\n else result.push(`${sizeSQL}))`)\n return result.filter(hasVal).join(', ')\n}\n\nfunction temporalTableOptionToSQL(stmt) {\n const { keyword } = stmt\n const result = []\n switch (keyword) {\n case 'as':\n result.push('AS', 'OF', exprToSQL(stmt.of))\n break\n case 'from_to':\n result.push('FROM', exprToSQL(stmt.from), 'TO', exprToSQL(stmt.to))\n break\n case 'between_and':\n result.push('BETWEEN', exprToSQL(stmt.between), 'AND', exprToSQL(stmt.and))\n break\n case 'contained':\n result.push('CONTAINED', 'IN', exprToSQL(stmt.in))\n break\n }\n return result.filter(hasVal).join(' ')\n}\n\nfunction temporalTableToSQL(stmt) {\n if (!stmt) return\n const { keyword, expr } = stmt\n return [toUpper(keyword), temporalTableOptionToSQL(expr)].filter(hasVal).join(' ')\n}\n\nfunction generateVirtualTable(stmt) {\n const { keyword, type, generators } = stmt\n const generatorSQL = generators.map(generator => commonTypeValue(generator).join(' ')).join(', ')\n return `${toUpper(keyword)}(${toUpper(type)}(${generatorSQL}))`\n}\n\nfunction tableToSQL(tableInfo) {\n if (toUpper(tableInfo.type) === 'UNNEST') return unnestToSQL(tableInfo)\n const { table, db, as, expr, operator, prefix: prefixStr, schema, server, suffix, tablesample, temporal_table, table_hint } = tableInfo\n const serverName = identifierToSql(server)\n const database = identifierToSql(db)\n const schemaStr = identifierToSql(schema)\n let tableName = table && identifierToSql(table)\n if (expr) {\n const exprType = expr.type\n switch (exprType) {\n case 'values':\n const { parentheses, values, prefix } = expr\n const valueSQL = [parentheses && '(', '', parentheses && ')']\n let valuesExpr = valuesToSQL(values)\n if (prefix) valuesExpr = valuesExpr.split('(').slice(1).map(val => `${toUpper(prefix)}(${val}`).join('')\n valueSQL[1] = `VALUES ${valuesExpr}`\n tableName = valueSQL.filter(hasVal).join('')\n break\n case 'tumble':\n tableName = tableTumbleToSQL(expr)\n break\n case 'generator':\n tableName = generateVirtualTable(expr)\n break\n default:\n tableName = exprToSQL(expr)\n }\n }\n tableName = [toUpper(prefixStr), tableName, toUpper(suffix)].filter(hasVal).join(' ')\n const str = [serverName, database, schemaStr, tableName].filter(hasVal).join('.')\n const result = [str]\n if (tablesample) {\n const tableSampleSQL = ['TABLESAMPLE', exprToSQL(tablesample.expr), literalToSQL(tablesample.repeatable)].filter(hasVal).join(' ')\n result.push(tableSampleSQL)\n }\n result.push(temporalTableToSQL(temporal_table), commonOptionConnector('AS', typeof as === 'string' ? identifierToSql : exprToSQL, as), operatorToSQL(operator))\n if (table_hint) result.push(toUpper(table_hint.keyword), `(${table_hint.expr.map(tableHintToSQL).filter(hasVal).join(', ')})`)\n const tableSQL = result.filter(hasVal).join(' ')\n return tableInfo.parentheses ? `(${tableSQL})` : tableSQL\n}\n\n/**\n * @param {Array} tables\n * @return {string}\n */\nfunction tablesToSQL(tables) {\n if (!tables) return ''\n if (!Array.isArray(tables)) {\n const { expr, parentheses, joins } = tables\n const sql = tablesToSQL(expr)\n if (parentheses) {\n const leftParentheses = []\n const rightParentheses = []\n const parenthesesNumber = parentheses === true ? 1 : parentheses.length\n let i = 0\n while (i++ < parenthesesNumber) {\n leftParentheses.push('(')\n rightParentheses.push(')')\n }\n const joinsSQL = joins && joins.length > 0 ? tablesToSQL(['', ...joins]) : ''\n return leftParentheses.join('') + sql + rightParentheses.join('') + joinsSQL\n }\n return sql\n }\n const baseTable = tables[0]\n const clauses = []\n if (baseTable.type === 'dual') return 'DUAL'\n clauses.push(tableToSQL(baseTable))\n for (let i = 1; i < tables.length; ++i) {\n const joinExpr = tables[i]\n const { on, using, join } = joinExpr\n const str = []\n str.push(join ? ` ${toUpper(join)}` : ',')\n str.push(tableToSQL(joinExpr))\n str.push(commonOptionConnector('ON', exprToSQL, on))\n if (using) str.push(`USING (${using.map(literalToSQL).join(', ')})`)\n clauses.push(str.filter(hasVal).join(' '))\n }\n return clauses.filter(hasVal).join('')\n}\n\nfunction tableOptionToSQL(tableOption) {\n const { keyword, symbol, value } = tableOption\n const sql = [keyword.toUpperCase()]\n if (symbol) sql.push(symbol)\n let val = literalToSQL(value)\n switch (keyword) {\n case 'partition by':\n case 'default collate':\n val = exprToSQL(value)\n break\n case 'options':\n val = `(${value.map(tableOptionItem => [tableOptionItem.keyword, tableOptionItem.symbol, exprToSQL(tableOptionItem.value)].join(' ')).join(', ')})`\n break\n case 'cluster by':\n val = value.map(exprToSQL).join(', ')\n break\n }\n sql.push(val)\n return sql.filter(hasVal).join(' ')\n}\n\nexport {\n operatorToSQL,\n tableHintToSQL,\n tableTumbleToSQL,\n tablesToSQL,\n tableOptionToSQL,\n tableToSQL,\n unnestToSQL,\n}\n","import { columnRefToSQL } from './column'\nimport { hasVal, identifierToSql, literalToSQL, toUpper } from './util'\n\nfunction commentOptionToSQL(stmt) {\n const { name, type } = stmt\n switch (type) {\n case 'table':\n case 'view':\n const fullTableName = [identifierToSql(name.db), identifierToSql(name.table)].filter(hasVal).join('.')\n return `${toUpper(type)} ${fullTableName}`\n case 'column':\n return `COLUMN ${columnRefToSQL(name)}`\n default:\n return `${toUpper(type)} ${literalToSQL(name)}`\n }\n}\n\nfunction commentIsExprToSQL(stmt) {\n const { keyword, expr } = stmt\n return [toUpper(keyword), literalToSQL(expr)].filter(hasVal).join(' ')\n}\n\nfunction commentOnToSQL(stmt) {\n const { expr, keyword, target, type } = stmt\n const result = [\n toUpper(type),\n toUpper(keyword),\n commentOptionToSQL(target),\n commentIsExprToSQL(expr),\n ]\n return result.filter(hasVal).join(' ')\n}\n\nexport {\n commentOnToSQL,\n}\n","import { exprToSQL } from './expr'\nimport { tableToSQL } from './tables'\nimport { hasVal, toUpper } from './util'\n\nfunction execVariablesToSQL(stmt) {\n const { name, value } = stmt\n const result = [`@${name}`, '=', exprToSQL(value)]\n return result.filter(hasVal).join(' ')\n}\n\nfunction execToSQL(stmt) {\n const { keyword, module, parameters } = stmt\n const result = [\n toUpper(keyword),\n tableToSQL(module),\n (parameters || []).map(execVariablesToSQL).filter(hasVal).join(', '),\n ]\n return result.filter(hasVal).join(' ')\n}\n\nexport {\n execToSQL,\n}\n","import { exprToSQL } from './expr'\nimport { hasVal, toUpper } from './util'\n\nfunction assignToSQL(expr) {\n /** @type {Object} */\n const { left, right, symbol, keyword } = expr\n left.keyword = keyword\n const leftVar = exprToSQL(left)\n const rightVal = exprToSQL(right)\n return [leftVar, toUpper(symbol), rightVal].filter(hasVal).join(' ')\n}\n\nexport {\n assignToSQL,\n}\n","import { exprToSQL, varToSQL } from './expr'\nimport { limitToSQL } from './limit'\nimport { tableToSQL, tablesToSQL } from './tables'\nimport { commonOptionConnector, hasVal, literalToSQL, toUpper } from './util'\n\nfunction showEventToSQL(showEventExpr) {\n const { in: inClause, from , limit } = showEventExpr\n return [\n commonOptionConnector('IN', literalToSQL, inClause && inClause.right),\n commonOptionConnector('FROM', tablesToSQL, from),\n limitToSQL(limit),\n ].filter(hasVal).join(' ')\n}\n\nfunction showLikeAndWhereToSQL(showCharacterSetExpr) {\n const { expr } = showCharacterSetExpr\n if (!expr) return\n const { op } = expr\n if (toUpper(op) === 'LIKE') return commonOptionConnector('LIKE', literalToSQL, expr.right)\n return commonOptionConnector('WHERE', exprToSQL, expr)\n}\n\nfunction showGrantsForUser(showGrantsForExpr) {\n const { for: forExpr } = showGrantsForExpr\n if (!forExpr) return\n const { user, host, role_list } = forExpr\n let userAndHost = `'${user}'`\n if (host) userAndHost += `@'${host}'`\n return ['FOR', userAndHost, role_list && 'USING', role_list && role_list.map(role => `'${role}'`).join(', ')].filter(hasVal).join(' ')\n}\n\nfunction showToSQL(showExpr) {\n let { keyword } = showExpr\n const { suffix } = showExpr\n let str = ''\n switch (toUpper(keyword)) {\n case 'BINLOG':\n str = showEventToSQL(showExpr)\n break\n case 'CHARACTER':\n case 'COLLATION':\n str = showLikeAndWhereToSQL(showExpr)\n break\n case 'COLUMNS':\n case 'INDEXES':\n case 'INDEX':\n str = commonOptionConnector('FROM', tablesToSQL, showExpr.from)\n break\n case 'GRANTS':\n str = showGrantsForUser(showExpr)\n break\n case 'CREATE':\n str = commonOptionConnector('', tableToSQL, showExpr[suffix])\n break\n case 'VAR':\n str = varToSQL(showExpr.var)\n keyword = ''\n break\n default:\n break\n }\n return ['SHOW', toUpper(keyword), toUpper(suffix), str].filter(hasVal).join(' ')\n}\n\nexport {\n showToSQL,\n}\n","import { alterToSQL } from './alter'\nimport { analyzeToSQL, attachToSQL } from './analyze'\nimport { createToSQL } from './create'\nimport { commentOnToSQL } from './comment'\nimport { explainToSQL } from './explain'\nimport { selectToSQL } from './select'\nimport { deleteToSQL } from './delete'\nimport { updateToSQL } from './update'\nimport { insertToSQL } from './insert'\nimport {\n callToSQL,\n commonCmdToSQL,\n deallocateToSQL,\n declareToSQL,\n descToSQL,\n executeToSQL,\n forLoopToSQL,\n grantAndRevokeToSQL,\n ifToSQL,\n useToSQL,\n raiseToSQL,\n renameToSQL,\n setVarToSQL,\n lockUnlockToSQL,\n} from './command'\nimport { execToSQL } from './exec'\nimport { orderOrPartitionByToSQL } from './expr'\nimport { limitToSQL } from './limit'\nimport { procToSQL } from './proc'\nimport { transactionToSQL } from './transaction'\nimport { showToSQL } from './show'\nimport { hasVal, toUpper } from './util'\n\nconst typeToSQLFn = {\n alter : alterToSQL,\n analyze : analyzeToSQL,\n attach : attachToSQL,\n create : createToSQL,\n comment : commentOnToSQL,\n select : selectToSQL,\n deallocate : deallocateToSQL,\n delete : deleteToSQL,\n exec : execToSQL,\n execute : executeToSQL,\n explain : explainToSQL,\n for : forLoopToSQL,\n update : updateToSQL,\n if : ifToSQL,\n insert : insertToSQL,\n drop : commonCmdToSQL,\n truncate : commonCmdToSQL,\n replace : insertToSQL,\n declare : declareToSQL,\n use : useToSQL,\n rename : renameToSQL,\n call : callToSQL,\n desc : descToSQL,\n set : setVarToSQL,\n lock : lockUnlockToSQL,\n unlock : lockUnlockToSQL,\n show : showToSQL,\n grant : grantAndRevokeToSQL,\n revoke : grantAndRevokeToSQL,\n proc : procToSQL,\n raise : raiseToSQL,\n transaction : transactionToSQL,\n}\n\nfunction unionToSQL(stmt) {\n if (!stmt) return ''\n const fun = typeToSQLFn[stmt.type]\n const { _parentheses, _orderby, _limit } = stmt\n const res = [_parentheses && '(', fun(stmt)]\n while (stmt._next) {\n const nextFun = typeToSQLFn[stmt._next.type]\n const unionKeyword = toUpper(stmt.set_op)\n res.push(unionKeyword, nextFun(stmt._next))\n stmt = stmt._next\n }\n res.push(_parentheses && ')', orderOrPartitionByToSQL(_orderby, 'order by'), limitToSQL(_limit))\n return res.filter(hasVal).join(' ')\n}\n\nfunction multipleToSQL(stmt) {\n const res = []\n for (let i = 0, len = stmt.length; i < len; ++i) {\n const astInfo = stmt[i] && stmt[i].ast ? stmt[i].ast : stmt[i]\n let sql = unionToSQL(astInfo)\n if (i === len - 1 && astInfo.type === 'transaction') sql = `${sql} ;`\n res.push(sql)\n }\n return res.join(' ; ')\n}\n\nexport {\n unionToSQL,\n multipleToSQL,\n}\n","import { columnDefinitionToSQL, columnRefToSQL, columnsToSQL } from './column'\nimport { createDefinitionToSQL } from './create'\nimport { indexTypeAndOptionToSQL } from './index-definition'\nimport { tablesToSQL, tableToSQL } from './tables'\nimport { exprToSQL } from './expr'\nimport { selectToSQL } from './select'\nimport { dataTypeToSQL, hasVal, toUpper, identifierToSql, literalToSQL } from './util'\n\nfunction alterExprPartition(action, expr) {\n switch (action) {\n case 'add':\n const sql = expr.map(({ name, value }) => ['PARTITION', literalToSQL(name), 'VALUES', toUpper(value.type), `(${literalToSQL(value.expr)})`].join(' ')).join(', ')\n return `(${sql})`\n default:\n return columnsToSQL(expr)\n }\n}\nfunction alterExprToSQL(expr) {\n if (!expr) return ''\n const {\n action,\n create_definitions: createDefinition,\n if_not_exists: ifNotExists, keyword,\n if_exists: ifExists,\n old_column: oldColumn,\n prefix,\n resource,\n symbol,\n suffix,\n } = expr\n let name = ''\n let dataType = []\n switch (resource) {\n case 'column':\n dataType = [columnDefinitionToSQL(expr)]\n break\n case 'index':\n dataType = indexTypeAndOptionToSQL(expr)\n name = expr[resource]\n break\n case 'table':\n case 'schema':\n name = identifierToSql(expr[resource])\n break\n case 'aggregate':\n case 'function':\n case 'domain':\n case 'type':\n name = identifierToSql(expr[resource])\n break\n case 'algorithm':\n case 'lock':\n case 'table-option':\n name = [symbol, toUpper(expr[resource])].filter(hasVal).join(' ')\n break\n case 'constraint':\n name = identifierToSql(expr[resource])\n dataType = [createDefinitionToSQL(createDefinition)]\n break\n case 'partition':\n dataType = [alterExprPartition(action, expr.partitions)]\n break\n case 'key':\n name = identifierToSql(expr[resource])\n break\n default:\n name = [symbol, expr[resource]].filter(val => val !== null).join(' ')\n break\n }\n const alterArray = [\n toUpper(action),\n toUpper(keyword),\n toUpper(ifNotExists),\n toUpper(ifExists),\n oldColumn && columnRefToSQL(oldColumn),\n toUpper(prefix),\n name && name.trim(),\n dataType.filter(hasVal).join(' '),\n ]\n if (suffix) {\n alterArray.push(toUpper(suffix.keyword), suffix.expr && columnRefToSQL(suffix.expr))\n }\n return alterArray.filter(hasVal).join(' ')\n}\n\nfunction alterTableToSQL(stmt) {\n const { type, table, if_exists, prefix, expr = [] } = stmt\n const action = toUpper(type)\n const tableName = tablesToSQL(table)\n const exprList = expr.map(exprToSQL)\n const result = [action, 'TABLE', toUpper(if_exists), literalToSQL(prefix), tableName, exprList.join(', ')]\n return result.filter(hasVal).join(' ')\n}\n\nfunction alterViewToSQL(stmt) {\n const { type, columns, attributes, select, view, with: withExpr } = stmt\n const action = toUpper(type)\n const viewName = tableToSQL(view)\n const result = [action, 'VIEW', viewName]\n if (columns) result.push(`(${columns.map(columnRefToSQL).join(', ')})`)\n if (attributes) result.push(`WITH ${attributes.map(toUpper).join(', ')}`)\n result.push('AS', selectToSQL(select))\n if (withExpr) result.push(toUpper(withExpr))\n return result.filter(hasVal).join(' ')\n}\nfunction alterArgsToSQL(arg) {\n const defaultSQL = arg.default && [toUpper(arg.default.keyword), exprToSQL(arg.default.value)].join(' ')\n return [toUpper(arg.mode), arg.name, dataTypeToSQL(arg.type), defaultSQL].filter(hasVal).join(' ')\n}\n\nfunction alterSchemaToSQL(stmt) {\n const { expr, keyword, schema, type } = stmt\n const result = [toUpper(type), toUpper(keyword), identifierToSql(schema), alterExprToSQL(expr)]\n return result.filter(hasVal).join(' ')\n}\n\nfunction alterDomainTypeToSQL(stmt) {\n const { expr, keyword, name, type } = stmt\n const result = [\n toUpper(type),\n toUpper(keyword),\n [identifierToSql(name.schema), identifierToSql(name.name)].filter(hasVal).join('.'),\n alterExprToSQL(expr),\n ]\n return result.filter(hasVal).join(' ')\n}\n\nfunction alterFunctionToSQL(stmt) {\n const { args, expr, keyword, name, type } = stmt\n const result = [\n toUpper(type),\n toUpper(keyword),\n [\n [identifierToSql(name.schema), identifierToSql(name.name)].filter(hasVal).join('.'),\n args && `(${args.expr ? args.expr.map(alterArgsToSQL).join(', ') : ''})`,\n ].filter(hasVal).join(''),\n alterExprToSQL(expr),\n ]\n return result.filter(hasVal).join(' ')\n}\n\nfunction alterAggregateToSQL(stmt) {\n const { args, expr, keyword, name, type } = stmt\n const { expr: argsExpr, orderby } = args\n const result = [\n toUpper(type),\n toUpper(keyword),\n [\n [identifierToSql(name.schema), identifierToSql(name.name)].filter(hasVal).join('.'),\n `(${argsExpr.map(alterArgsToSQL).join(', ')}${orderby ? [' ORDER', 'BY', orderby.map(alterArgsToSQL).join(', ')].join(' ') : ''})`,\n ].filter(hasVal).join(''),\n alterExprToSQL(expr),\n ]\n return result.filter(hasVal).join(' ')\n}\n\nfunction alterSequenceToSQL(stmt) {\n const { type, keyword, sequence, if_exists, expr = [] } = stmt\n const action = toUpper(type)\n const sequenceName = tablesToSQL(sequence)\n const exprList = expr.map(createDefinitionToSQL)\n const result = [action, toUpper(keyword), toUpper(if_exists), sequenceName, exprList.join(', ')]\n return result.filter(hasVal).join(' ')\n}\n\nfunction alterToSQL(stmt) {\n const { keyword = 'table' } = stmt\n switch (keyword) {\n case 'aggregate':\n return alterAggregateToSQL(stmt)\n case 'table':\n return alterTableToSQL(stmt)\n case 'schema':\n return alterSchemaToSQL(stmt)\n case 'sequence':\n return alterSequenceToSQL(stmt)\n case 'domain':\n case 'type':\n return alterDomainTypeToSQL(stmt)\n case 'function':\n return alterFunctionToSQL(stmt)\n case 'view':\n return alterViewToSQL(stmt)\n }\n}\n\nexport {\n alterArgsToSQL,\n alterToSQL,\n alterExprToSQL,\n}\n","import { exprToSQL } from './expr'\nimport { tableToSQL } from './tables'\nimport { hasVal, identifierToSql, toUpper } from './util'\n\nfunction analyzeToSQL(stmt) {\n const { type, table } = stmt\n const action = toUpper(type)\n const tableName = tableToSQL(table)\n return [action, tableName].join(' ')\n}\n\nfunction attachToSQL(stmt) {\n const { type, database, expr, as, schema } = stmt\n return [toUpper(type), toUpper(database), exprToSQL(expr), toUpper(as), identifierToSql(schema)].filter(hasVal).join(' ')\n}\n\nexport {\n attachToSQL,\n analyzeToSQL,\n}\n","import { alterArgsToSQL, alterExprToSQL } from './alter'\nimport { exprToSQL } from './expr'\nimport { indexDefinitionToSQL, indexOptionListToSQL, indexTypeToSQL } from './index-definition'\nimport { columnDefinitionToSQL, columnRefToSQL } from './column'\nimport { grantUserOrRoleToSQL } from './command'\nimport { constraintDefinitionToSQL } from './constrain'\nimport { funcToSQL } from './func'\nimport { tablesToSQL, tableOptionToSQL, tableToSQL } from './tables'\nimport { setToSQL } from './update'\nimport { multipleToSQL, unionToSQL } from './union'\nimport {\n columnIdentifierToSql,\n columnOrderListToSQL,\n commonOptionConnector,\n commonKeywordArgsToSQL,\n commentToSQL,\n commonTypeValue,\n dataTypeToSQL,\n getParserOpt,\n toUpper,\n hasVal,\n identifierToSql,\n triggerEventToSQL,\n literalToSQL,\n} from './util'\n\nfunction createDefinitionToSQL(definition) {\n if (!definition) return []\n const { resource } = definition\n switch (resource) {\n case 'column':\n return columnDefinitionToSQL(definition)\n case 'index':\n return indexDefinitionToSQL(definition)\n case 'constraint':\n return constraintDefinitionToSQL(definition)\n case 'sequence':\n return [toUpper(definition.prefix), exprToSQL(definition.value)].filter(hasVal).join(' ')\n default:\n throw new Error(`unknown resource = ${resource} type`)\n }\n}\n\nfunction forValueItemToSQL(stmt) {\n const { keyword } = stmt\n const result = []\n switch (keyword) {\n case 'from':\n result.push('FROM', `(${literalToSQL(stmt.from)})`, 'TO', `(${literalToSQL(stmt.to)})`)\n break\n case 'in':\n result.push('IN', `(${exprToSQL(stmt.in)})`)\n break\n case 'with':\n result.push('WITH', `(MODULUS ${literalToSQL(stmt.modulus)}, REMAINDER ${literalToSQL(stmt.remainder)})`)\n break\n }\n return result.filter(hasVal).join(' ')\n}\n\nfunction createTablePartitionOfToSQL(stmt) {\n const { keyword, table, for_values: forValues, tablespace } = stmt\n const result = [toUpper(keyword), tableToSQL(table), toUpper(forValues.keyword), forValueItemToSQL(forValues.expr)]\n if (tablespace) result.push('TABLESPACE', literalToSQL(tablespace))\n return result.filter(hasVal).join(' ')\n}\n\nfunction createTableToSQL(stmt) {\n const {\n type, keyword, table, like, as, temporary,\n if_not_exists: ifNotExists,\n create_definitions: createDefinition,\n table_options: tableOptions,\n ignore_replace: ignoreReplace,\n replace: orReplace,\n partition_of: partitionOf,\n query_expr: queryExpr,\n unlogged: unLogged,\n with: withExpr,\n } = stmt\n const sql = [toUpper(type), toUpper(orReplace), toUpper(temporary), toUpper(unLogged), toUpper(keyword), toUpper(ifNotExists), tablesToSQL(table)]\n if (like) {\n const { type: likeType, table: likeTable } = like\n const likeTableName = tablesToSQL(likeTable)\n sql.push(toUpper(likeType), likeTableName)\n return sql.filter(hasVal).join(' ')\n }\n if (partitionOf) return sql.concat([createTablePartitionOfToSQL(partitionOf)]).filter(hasVal).join(' ')\n if (createDefinition) sql.push(`(${createDefinition.map(createDefinitionToSQL).join(', ')})`)\n if (tableOptions) {\n const { database } = getParserOpt()\n const symbol = database && database.toLowerCase() === 'sqlite' ? ', ' : ' '\n sql.push(tableOptions.map(tableOptionToSQL).join(symbol))\n }\n if (withExpr) {\n const withSQL = withExpr.map(withExprItem => [literalToSQL(withExprItem.keyword), toUpper(withExprItem.symbol), literalToSQL(withExprItem.value)].join(' ')).join(', ')\n sql.push(`WITH (${withSQL})`)\n }\n sql.push(toUpper(ignoreReplace), toUpper(as))\n if (queryExpr) sql.push(unionToSQL(queryExpr))\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createTriggerToSQL(stmt) {\n const {\n definer, for_each: forEach, keyword,\n execute: triggerBody,\n type, table, if_not_exists: ife,\n temporary, trigger, events: triggerEvents,\n order: triggerOrder, time: triggerTime, when,\n } = stmt\n const sql = [\n toUpper(type), toUpper(temporary), exprToSQL(definer), toUpper(keyword),\n toUpper(ife), tableToSQL(trigger),\n toUpper(triggerTime),\n triggerEvents.map(event => {\n const eventStr = [toUpper(event.keyword)]\n const { args } = event\n if (args) eventStr.push(toUpper(args.keyword), args.columns.map(columnRefToSQL).join(', '))\n return eventStr.join(' ')\n }),\n 'ON', tableToSQL(table), toUpper(forEach && forEach.keyword), toUpper(forEach && forEach.args),\n triggerOrder && `${toUpper(triggerOrder.keyword)} ${identifierToSql(triggerOrder.trigger)}`,\n commonOptionConnector('WHEN', exprToSQL, when),\n toUpper(triggerBody.prefix),\n ]\n switch (triggerBody.type) {\n case 'set':\n sql.push(commonOptionConnector('SET', setToSQL, triggerBody.expr))\n break\n case 'multiple':\n sql.push(multipleToSQL(triggerBody.expr.ast))\n break\n }\n sql.push(toUpper(triggerBody.suffix))\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createConstraintTriggerToSQL(stmt) {\n const {\n constraint, constraint_kw: constraintKw,\n deferrable,\n events, execute,\n for_each: forEach, from,\n location,\n keyword,\n or,\n type, table,\n when,\n } = stmt\n const sql = [toUpper(type), toUpper(or), toUpper(constraintKw), toUpper(keyword), identifierToSql(constraint), toUpper(location)]\n const event = triggerEventToSQL(events)\n sql.push(event, 'ON', tableToSQL(table))\n if (from) sql.push('FROM', tableToSQL(from))\n sql.push(...commonKeywordArgsToSQL(deferrable), ...commonKeywordArgsToSQL(forEach))\n if (when) sql.push(toUpper(when.type), exprToSQL(when.cond))\n sql.push(toUpper(execute.keyword), funcToSQL(execute.expr))\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createExtensionToSQL(stmt) {\n const {\n extension, from, if_not_exists: ifNotExists,\n keyword, schema, type, with: withName, version,\n } = stmt\n const sql = [\n toUpper(type),\n toUpper(keyword),\n toUpper(ifNotExists),\n literalToSQL(extension),\n toUpper(withName),\n commonOptionConnector('SCHEMA', literalToSQL, schema),\n commonOptionConnector('VERSION', literalToSQL, version),\n commonOptionConnector('FROM', literalToSQL, from),\n ]\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createIndexToSQL(stmt) {\n const {\n concurrently, filestream_on: fileStream, keyword, if_not_exists: ifNotExists, include, index_columns: indexColumns,\n index_type: indexType, index_using: indexUsing, index, on, index_options: indexOpt, algorithm_option: algorithmOpt, lock_option: lockOpt, on_kw: onKw, table, tablespace, type, where,\n with: withExpr, with_before_where: withBeforeWhere,\n } = stmt\n const withIndexOpt = withExpr && `WITH (${indexOptionListToSQL(withExpr).join(', ')})`\n const includeColumns = include && `${toUpper(include.keyword)} (${include.columns.map(col => (typeof col === 'string' ? identifierToSql(col) : exprToSQL(col))).join(', ')})`\n let indexName = index\n if (index) {\n indexName = typeof index === 'string' ? identifierToSql(index) : [identifierToSql(index.schema), identifierToSql(index.name)].filter(hasVal).join('.')\n }\n const sql = [\n toUpper(type), toUpper(indexType), toUpper(keyword), toUpper(ifNotExists), toUpper(concurrently),\n indexName, toUpper(onKw), tableToSQL(table), ...indexTypeToSQL(indexUsing),\n `(${columnOrderListToSQL(indexColumns)})`, includeColumns, indexOptionListToSQL(indexOpt).join(' '), alterExprToSQL(algorithmOpt), alterExprToSQL(lockOpt),\n commonOptionConnector('TABLESPACE', literalToSQL, tablespace),\n ]\n if (withBeforeWhere) {\n sql.push(withIndexOpt, commonOptionConnector('WHERE', exprToSQL, where))\n } else {\n sql.push(commonOptionConnector('WHERE', exprToSQL, where), withIndexOpt)\n }\n sql.push(commonOptionConnector('ON', exprToSQL, on), commonOptionConnector('FILESTREAM_ON', literalToSQL, fileStream))\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createSequenceToSQL(stmt) {\n const {\n type, keyword, sequence, temporary,\n if_not_exists: ifNotExists,\n create_definitions: createDefinition,\n } = stmt\n const sql = [\n toUpper(type),\n toUpper(temporary),\n toUpper(keyword),\n toUpper(ifNotExists),\n tablesToSQL(sequence),\n ]\n if (createDefinition) sql.push(createDefinition.map(createDefinitionToSQL).join(' '))\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createDatabaseOrSchemaToSQL(stmt) {\n const {\n type, keyword, replace,\n if_not_exists: ifNotExists,\n create_definitions: createDefinition,\n } = stmt\n const { db, schema } = stmt[keyword]\n const name = [literalToSQL(db), schema.map(literalToSQL).join('.')].filter(hasVal).join('.')\n const sql = [\n toUpper(type),\n toUpper(replace),\n toUpper(keyword),\n toUpper(ifNotExists),\n name,\n ]\n if (createDefinition) sql.push(createDefinition.map(tableOptionToSQL).join(' '))\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createViewToSQL(stmt) {\n const {\n algorithm, columns, definer, if_not_exists: ifNotExists, keyword,\n recursive, replace, select, sql_security: sqlSecurity,\n temporary, type, view, with: withClause, with_options: withOptions,\n } = stmt\n const { db, schema, view: name } = view\n const viewName = [identifierToSql(db), identifierToSql(schema), identifierToSql(name)].filter(hasVal).join('.')\n const sql = [\n toUpper(type),\n toUpper(replace),\n toUpper(temporary),\n toUpper(recursive),\n algorithm && `ALGORITHM = ${toUpper(algorithm)}`,\n exprToSQL(definer),\n sqlSecurity && `SQL SECURITY ${toUpper(sqlSecurity)}`,\n toUpper(keyword),\n toUpper(ifNotExists),\n viewName,\n columns && `(${columns.map(columnIdentifierToSql).join(', ')})`,\n withOptions && ['WITH', `(${withOptions.map(withOpt => commonTypeValue(withOpt).join(' ')).join(', ')})`].join(' '),\n 'AS',\n unionToSQL(select),\n toUpper(withClause),\n ]\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createDomainToSQL(stmt) {\n const {\n as, domain, type, keyword, target,\n create_definitions: createDefinition,\n } = stmt\n const sql = [\n toUpper(type),\n toUpper(keyword),\n [identifierToSql(domain.schema), identifierToSql(domain.name)].filter(hasVal).join('.'),\n toUpper(as),\n dataTypeToSQL(target),\n ]\n if (createDefinition && createDefinition.length > 0) {\n const definitionSQL = []\n for (const definition of createDefinition) {\n const definitionType = definition.type\n switch (definitionType) {\n case 'collate':\n definitionSQL.push(exprToSQL(definition))\n break\n case 'default':\n definitionSQL.push(toUpper(definitionType), exprToSQL(definition.value))\n break\n case 'constraint':\n definitionSQL.push(constraintDefinitionToSQL(definition))\n break\n }\n }\n sql.push(definitionSQL.filter(hasVal).join(' '))\n }\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createTypeToSQL(stmt) {\n const { as, create_definitions: createDefinition, keyword, name, resource, type } = stmt\n const sql = [\n toUpper(type),\n toUpper(keyword),\n [identifierToSql(name.schema), identifierToSql(name.name)].filter(hasVal).join('.'),\n toUpper(as),\n toUpper(resource),\n ]\n if (createDefinition) {\n const definitionSQL = []\n switch (resource) {\n case 'enum':\n case 'range':\n definitionSQL.push(exprToSQL(createDefinition))\n break\n default:\n definitionSQL.push(`(${createDefinition.map(createDefinitionToSQL).join(', ')})`)\n break\n }\n sql.push(definitionSQL.filter(hasVal).join(' '))\n }\n return sql.filter(hasVal).join(' ')\n}\n\nfunction createFunctionReturnsOptToSQL(stmt) {\n if (stmt.dataType) return dataTypeToSQL(stmt)\n return [identifierToSql(stmt.db), identifierToSql(stmt.schema), identifierToSql(stmt.table)].filter(hasVal).join('.')\n}\n\nfunction createFunctionReturnsToSQL(stmt) {\n const { type, keyword, expr } = stmt\n const sql = [\n toUpper(type),\n toUpper(keyword),\n Array.isArray(expr) ? `(${expr.map(columnDefinitionToSQL).join(', ')})` : createFunctionReturnsOptToSQL(expr),\n ]\n return sql.filter(hasVal).join(' ')\n}\nfunction createFunctionOptionToSQL(stmt) {\n const { type } = stmt\n switch (type) {\n case 'as':\n return [toUpper(type), stmt.symbol, unionToSQL(stmt.declare), toUpper(stmt.begin), multipleToSQL(stmt.expr), toUpper(stmt.end), stmt.symbol].filter(hasVal).join(' ')\n case 'set':\n return [toUpper(type), stmt.parameter, toUpper(stmt.value && stmt.value.prefix), stmt.value && stmt.value.expr.map(exprToSQL).join(', ')].filter(hasVal).join(' ')\n case 'return':\n return [toUpper(type), exprToSQL(stmt.expr)].filter(hasVal).join(' ')\n default:\n return exprToSQL(stmt)\n }\n}\nfunction createFunctionToSQL(stmt) {\n const { type, replace, keyword, name, args, returns, options, last } = stmt\n const sql = [toUpper(type), toUpper(replace), toUpper(keyword)]\n const functionName = [literalToSQL(name.schema), name.name.map(literalToSQL).join('.')].filter(hasVal).join('.')\n const argsSQL = args.map(alterArgsToSQL).filter(hasVal).join(', ')\n sql.push(`${functionName}(${argsSQL})`, createFunctionReturnsToSQL(returns), options.map(createFunctionOptionToSQL).join(' '), last)\n return sql.filter(hasVal).join(' ')\n}\n\nfunction aggregateOptionToSQL(stmt) {\n const { type, symbol, value } = stmt\n const sql = [toUpper(type), symbol]\n switch (toUpper(type)) {\n case 'SFUNC':\n sql.push([identifierToSql(value.schema), value.name].filter(hasVal).join('.'))\n break\n case 'STYPE':\n case 'MSTYPE':\n sql.push(dataTypeToSQL(value))\n break\n default:\n sql.push(exprToSQL(value))\n break\n }\n return sql.filter(hasVal).join(' ')\n}\nfunction createAggregateToSQL(stmt) {\n const { type, replace, keyword, name, args, options } = stmt\n const sql = [toUpper(type), toUpper(replace), toUpper(keyword)]\n const functionName = [identifierToSql(name.schema), name.name].filter(hasVal).join('.')\n const argsSQL = `${args.expr.map(alterArgsToSQL).join(', ')}${args.orderby ? [' ORDER', 'BY', args.orderby.map(alterArgsToSQL).join(', ')].join(' ') : ''}`\n sql.push(`${functionName}(${argsSQL})`, `(${options.map(aggregateOptionToSQL).join(', ')})`)\n return sql.filter(hasVal).join(' ')\n}\nfunction createUserToSQL(stmt) {\n const {\n attribute, comment, default_role: defaultRole, if_not_exists: ifNotExists, keyword, lock_option: lockOption,\n password_options: passwordOptions, require: requireOption, resource_options: resourceOptions, type, user,\n } = stmt\n const userAuthOptions = user.map(userAuthOption => {\n const { user: userInfo, auth_option } = userAuthOption\n const result = [grantUserOrRoleToSQL(userInfo)]\n if (auth_option) result.push(toUpper(auth_option.keyword), auth_option.auth_plugin, literalToSQL(auth_option.value))\n return result.filter(hasVal).join(' ')\n }).join(', ')\n const sql = [\n toUpper(type),\n toUpper(keyword),\n toUpper(ifNotExists),\n userAuthOptions,\n ]\n if (defaultRole) sql.push(toUpper(defaultRole.keyword), defaultRole.value.map(grantUserOrRoleToSQL).join(', '))\n sql.push(commonOptionConnector(requireOption && requireOption.keyword, exprToSQL, requireOption && requireOption.value))\n if (resourceOptions) sql.push(toUpper(resourceOptions.keyword), resourceOptions.value.map(resourceOption => exprToSQL(resourceOption)).join(' '))\n if (passwordOptions) passwordOptions.forEach(passwordOption => sql.push(commonOptionConnector(passwordOption.keyword, exprToSQL, passwordOption.value)))\n sql.push(literalToSQL(lockOption), commentToSQL(comment), literalToSQL(attribute))\n return sql.filter(hasVal).join(' ')\n}\nfunction createToSQL(stmt) {\n const { keyword } = stmt\n let sql = ''\n switch (keyword.toLowerCase()) {\n case 'aggregate':\n sql = createAggregateToSQL(stmt)\n break\n case 'table':\n sql = createTableToSQL(stmt)\n break\n case 'trigger':\n sql = stmt.resource === 'constraint' ? createConstraintTriggerToSQL(stmt) : createTriggerToSQL(stmt)\n break\n case 'extension':\n sql = createExtensionToSQL(stmt)\n break\n case 'function':\n sql = createFunctionToSQL(stmt)\n break\n case 'index':\n sql = createIndexToSQL(stmt)\n break\n case 'sequence':\n sql = createSequenceToSQL(stmt)\n break\n case 'database':\n case 'schema':\n sql = createDatabaseOrSchemaToSQL(stmt)\n break\n case 'view':\n sql = createViewToSQL(stmt)\n break\n case 'domain':\n sql = createDomainToSQL(stmt)\n break\n case 'type':\n sql = createTypeToSQL(stmt)\n break\n case 'user':\n sql = createUserToSQL(stmt)\n break\n default:\n throw new Error(`unknown create resource ${keyword}`)\n }\n return sql\n}\n\nexport {\n createToSQL,\n createDefinitionToSQL,\n}\n","import { columnDataType, columnRefToSQL } from './column'\nimport { createDefinitionToSQL } from './create'\nimport { identifierToSql, hasVal, toUpper, literalToSQL } from './util'\nimport { exprToSQL } from './expr'\nimport { tablesToSQL, tableToSQL } from './tables'\nimport astToSQL from './sql'\nimport { multipleToSQL } from './union'\n\nfunction callToSQL(stmt) {\n const type = 'CALL'\n const storeProcessCall = exprToSQL(stmt.expr)\n return `${type} ${storeProcessCall}`\n}\n\nfunction commonCmdToSQL(stmt) {\n const { type, keyword, name, prefix, suffix } = stmt\n const clauses = [toUpper(type), toUpper(keyword), toUpper(prefix)]\n switch (keyword) {\n case 'table':\n clauses.push(tablesToSQL(name))\n break\n case 'trigger':\n clauses.push([name[0].schema ? `${identifierToSql(name[0].schema)}.` : '', identifierToSql(name[0].trigger)].filter(hasVal).join(''))\n break\n case 'database':\n case 'schema':\n case 'procedure':\n clauses.push(identifierToSql(name))\n break\n case 'view':\n clauses.push(tablesToSQL(name), stmt.options && stmt.options.map(exprToSQL).filter(hasVal).join(' '))\n break\n case 'index':\n clauses.push(columnRefToSQL(name), ...stmt.table ? ['ON', tableToSQL(stmt.table)] : [], stmt.options && stmt.options.map(exprToSQL).filter(hasVal).join(' '))\n break\n case 'type':\n clauses.push(name.map(columnRefToSQL).join(', '), stmt.options && stmt.options.map(exprToSQL).filter(hasVal).join(' '))\n break\n default:\n break\n }\n if (suffix) clauses.push(suffix.map(exprToSQL).filter(hasVal).join(' '))\n return clauses.filter(hasVal).join(' ')\n}\n\nfunction descToSQL(stmt) {\n const { type, table } = stmt\n const action = toUpper(type)\n return `${action} ${identifierToSql(table)}`\n}\n\nfunction executeToSQL(stmt) {\n const { type, name, args } = stmt\n const sql = [toUpper(type)]\n const nameWithArgs = [name]\n if (args) nameWithArgs.push(`(${exprToSQL(args).join(', ')})`)\n sql.push(nameWithArgs.join(''))\n return sql.filter(hasVal).join(' ')\n}\n\nfunction forLoopToSQL(stmt) {\n const { type, label, target, query, stmts } = stmt\n const sql = [label, toUpper(type), target, 'IN', multipleToSQL([query]), 'LOOP', multipleToSQL(stmts), 'END LOOP', label]\n return sql.filter(hasVal).join(' ')\n}\n\nfunction raiseToSQL(stmt) {\n const { type, level, raise, using } = stmt\n const sql = [toUpper(type), toUpper(level)]\n if (raise) sql.push([literalToSQL(raise.keyword), raise.type === 'format' && raise.expr.length > 0 && ','].filter(hasVal).join(''), raise.expr.map(exprInfo => exprToSQL(exprInfo)).join(', '))\n if (using) sql.push(toUpper(using.type), toUpper(using.option), using.symbol, using.expr.map(exprInfo => exprToSQL(exprInfo)).join(', '))\n return sql.filter(hasVal).join(' ')\n}\n\nfunction renameToSQL(stmt) {\n const { type, table } = stmt\n const clauses = []\n const prefix = `${type && type.toUpperCase()} TABLE`\n if (table) {\n for (const tables of table) {\n const renameInfo = tables.map(tableToSQL)\n clauses.push(renameInfo.join(' TO '))\n }\n }\n return `${prefix} ${clauses.join(', ')}`\n}\n\nfunction useToSQL(stmt) {\n const { type, db } = stmt\n const action = toUpper(type)\n const database = identifierToSql(db)\n return `${action} ${database}`\n}\n\nfunction setVarToSQL(stmt) {\n const { type, expr, keyword } = stmt\n const action = toUpper(type)\n const setItems = expr.map(exprToSQL).join(', ')\n return [action, toUpper(keyword), setItems].filter(hasVal).join(' ')\n}\n\nfunction pgLock(stmt) {\n const { lock_mode: lockMode, nowait } = stmt\n const lockInfo = []\n if (lockMode) {\n const { mode } = lockMode\n lockInfo.push(mode.toUpperCase())\n }\n if (nowait) lockInfo.push(nowait.toUpperCase())\n return lockInfo\n}\n\nfunction lockUnlockToSQL(stmt) {\n const { type, keyword, tables } = stmt\n const result = [type.toUpperCase(), toUpper(keyword)]\n if (type.toUpperCase() === 'UNLOCK') return result.join(' ')\n const tableStmt = []\n for (const tableInfo of tables) {\n const { table, lock_type: lockType } = tableInfo\n const tableInfoTemp = [tableToSQL(table)]\n if (lockType) {\n const lockKeyList = ['prefix', 'type', 'suffix']\n tableInfoTemp.push(lockKeyList.map(key => toUpper(lockType[key])).filter(hasVal).join(' '))\n }\n tableStmt.push(tableInfoTemp.join(' '))\n }\n result.push(tableStmt.join(', '), ...pgLock(stmt))\n return result.filter(hasVal).join(' ')\n}\n\nfunction deallocateToSQL(stmt) {\n const { type, keyword, expr } = stmt\n return [toUpper(type), toUpper(keyword), exprToSQL(expr)].filter(hasVal).join(' ')\n}\n\nfunction declareToSQL(stmt) {\n const { type, declare, symbol } = stmt\n const result = [toUpper(type)]\n const info = declare.map(dec => {\n const { at, name, as, constant, datatype, not_null, prefix, definition, keyword } = dec\n const declareInfo = [[at, name].filter(hasVal).join(''), toUpper(as), toUpper(constant)]\n switch (keyword) {\n case 'variable':\n declareInfo.push(columnDataType(datatype), exprToSQL(dec.collate), toUpper(not_null))\n if (definition) declareInfo.push(toUpper(definition.keyword), exprToSQL(definition.value))\n break\n case 'cursor':\n declareInfo.push(toUpper(prefix))\n break\n case 'table':\n declareInfo.push(toUpper(prefix), `(${definition.map(createDefinitionToSQL).join(', ')})`)\n break\n default:\n break\n }\n return declareInfo.filter(hasVal).join(' ')\n }).join(`${symbol} `)\n result.push(info)\n return result.join(' ')\n}\n\nfunction ifToSQL(stmt) {\n const {\n boolean_expr: boolExpr,\n else_expr: elseExpr,\n elseif_expr: elseifExpr,\n if_expr: ifExpr,\n prefix,\n go,\n semicolons,\n suffix,\n type,\n } = stmt\n const result = [toUpper(type), exprToSQL(boolExpr), literalToSQL(prefix), `${astToSQL(ifExpr.ast || ifExpr)}${semicolons[0]}`, toUpper(go)]\n if (elseifExpr) {\n result.push(\n elseifExpr.map(\n elseif => [toUpper(elseif.type), exprToSQL(elseif.boolean_expr), 'THEN', astToSQL(elseif.then.ast || elseif.then), elseif.semicolon].filter(hasVal).join(' ')\n ).join(' ')\n )\n }\n if (elseExpr) result.push('ELSE', `${astToSQL(elseExpr.ast || elseExpr)}${semicolons[1]}`)\n result.push(literalToSQL(suffix))\n return result.filter(hasVal).join(' ')\n}\n\nfunction grantUserOrRoleToSQL(stmt) {\n const { name, host } = stmt\n const result = [literalToSQL(name)]\n if (host) result.push('@', literalToSQL(host))\n return result.join('')\n}\n\nfunction grantAndRevokeToSQL(stmt) {\n const { type, grant_option_for, keyword, objects, on, to_from, user_or_roles, with: withOpt } = stmt\n const result = [toUpper(type), literalToSQL(grant_option_for)]\n const objStr = objects.map(obj => {\n const { priv, columns } = obj\n const privSQL = [exprToSQL(priv)]\n if (columns) privSQL.push(`(${columns.map(columnRefToSQL).join(', ')})`)\n return privSQL.join(' ')\n }).join(', ')\n result.push(objStr)\n if (on) {\n result.push('ON')\n switch (keyword) {\n case 'priv':\n result.push(\n literalToSQL(on.object_type),\n on.priv_level.map(privLevel => [identifierToSql(privLevel.prefix), identifierToSql(privLevel.name)].filter(hasVal).join('.')).join(', ')\n )\n break\n case 'proxy':\n result.push(grantUserOrRoleToSQL(on))\n break\n }\n }\n result.push(toUpper(to_from), user_or_roles.map(grantUserOrRoleToSQL).join(', '))\n result.push(literalToSQL(withOpt))\n return result.filter(hasVal).join(' ')\n}\n\nexport {\n callToSQL,\n commonCmdToSQL,\n deallocateToSQL,\n declareToSQL,\n descToSQL,\n executeToSQL,\n forLoopToSQL,\n grantAndRevokeToSQL,\n grantUserOrRoleToSQL,\n ifToSQL,\n raiseToSQL,\n renameToSQL,\n useToSQL,\n setVarToSQL,\n lockUnlockToSQL,\n}\n","import { columnsToSQL } from './column'\nimport { exprToSQL, orderOrPartitionByToSQL } from './expr'\nimport { limitToSQL } from './limit'\nimport { tablesToSQL } from './tables'\nimport { commonOptionConnector, hasVal, returningToSQL } from './util'\nimport { withToSQL } from './with'\n\nfunction deleteToSQL(stmt) {\n const { columns, from, table, where, orderby, with: withInfo, limit, returning } = stmt\n const clauses = [withToSQL(withInfo), 'DELETE']\n const columnInfo = columnsToSQL(columns, from)\n clauses.push(columnInfo)\n if (Array.isArray(table)) {\n if (!(table.length === 1 && table[0].addition === true)) clauses.push(tablesToSQL(table))\n }\n clauses.push(commonOptionConnector('FROM', tablesToSQL, from))\n clauses.push(commonOptionConnector('WHERE', exprToSQL, where))\n clauses.push(orderOrPartitionByToSQL(orderby, 'order by'))\n clauses.push(limitToSQL(limit))\n clauses.push(returningToSQL(returning))\n return clauses.filter(hasVal).join(' ')\n}\n\nexport {\n deleteToSQL,\n}\n","import { selectToSQL } from './select'\nimport { toUpper } from './util'\n\nfunction explainToSQL(stmt) {\n const { type, expr } = stmt\n return [toUpper(type), selectToSQL(expr)].join(' ')\n}\n\nexport {\n explainToSQL,\n}\n","import { assignToSQL } from './assign'\nimport { exprToSQL } from './expr'\nimport { toUpper } from './util'\n\nfunction returnToSQL(stmt) {\n const { type, expr } = stmt\n return [toUpper(type), exprToSQL(expr)].join(' ')\n}\n\nfunction procToSQL(expr) {\n const { stmt } = expr\n switch (stmt.type) {\n case 'assign':\n return assignToSQL(stmt)\n case 'return':\n return returnToSQL(stmt)\n }\n}\n\nexport {\n procToSQL,\n returnToSQL,\n}\n","import { hasVal, literalToSQL, toUpper } from './util'\n\nfunction transactionToSQL(stmt) {\n const { expr: { action, keyword, modes } } = stmt\n const result = [literalToSQL(action), toUpper(keyword)]\n if (modes) result.push(modes.map(literalToSQL).join(', '))\n return result.filter(hasVal).join(' ')\n}\n\nexport {\n transactionToSQL,\n}\n","import { unionToSQL, multipleToSQL } from './union'\n\nconst supportedTypes = ['analyze', 'attach', 'select', 'deallocate', 'delete', 'exec', 'update', 'insert', 'drop', 'rename', 'truncate', 'call', 'desc', 'use', 'alter', 'set', 'create', 'lock', 'unlock', 'declare', 'show', 'replace', 'if', 'grant', 'revoke', 'proc', 'raise', 'execute', 'transaction', 'explain', 'comment']\n\nfunction checkSupported(expr) {\n const ast = expr && expr.ast ? expr.ast : expr\n if (!supportedTypes.includes(ast.type)) throw new Error(`${ast.type} statements not supported at the moment`)\n}\n\nfunction toSQL(ast) {\n if (Array.isArray(ast)) {\n ast.forEach(checkSupported)\n return multipleToSQL(ast)\n }\n checkSupported(ast)\n return unionToSQL(ast)\n}\n\nfunction goToSQL(stmt) {\n if (!stmt || stmt.length === 0) return ''\n const res = [toSQL(stmt.ast)]\n if (stmt.go_next) res.push(stmt.go.toUpperCase(), goToSQL(stmt.go_next))\n return res.filter(sqlItem => sqlItem).join(' ')\n}\n\nexport default function astToSQL(ast) {\n const sql = ast.go === 'go' ? goToSQL(ast) : toSQL(ast)\n return sql\n}\n","import {\n commonOptionConnector,\n identifierToSql,\n literalToSQL,\n getParserOpt,\n hasVal,\n toUpper,\n} from './util'\nimport { indexTypeAndOptionToSQL } from './index-definition'\nimport { columnReferenceDefinitionToSQL } from './column'\n\nfunction constraintDefinitionToSQL(constraintDefinition) {\n if (!constraintDefinition) return\n const {\n constraint,\n constraint_type: constraintType,\n enforced,\n index,\n keyword,\n reference_definition: referenceDefinition,\n for: forColumn,\n with_values: withValues,\n } = constraintDefinition\n const constraintSQL = []\n const { database } = getParserOpt()\n constraintSQL.push(toUpper(keyword))\n constraintSQL.push(identifierToSql(constraint))\n let constraintTypeStr = toUpper(constraintType)\n if (database.toLowerCase() === 'sqlite' && constraintTypeStr === 'UNIQUE KEY') constraintTypeStr = 'UNIQUE'\n constraintSQL.push(constraintTypeStr)\n constraintSQL.push(database.toLowerCase() !== 'sqlite' && identifierToSql(index))\n constraintSQL.push(...indexTypeAndOptionToSQL(constraintDefinition))\n constraintSQL.push(...columnReferenceDefinitionToSQL(referenceDefinition))\n constraintSQL.push(toUpper(enforced))\n constraintSQL.push(commonOptionConnector('FOR', identifierToSql, forColumn))\n constraintSQL.push(literalToSQL(withValues))\n return constraintSQL.filter(hasVal).join(' ')\n}\n\nexport {\n constraintDefinitionToSQL,\n}\n","import { hasVal, toUpper } from './util'\nimport { exprToSQL, orderOrPartitionByToSQL } from './expr'\nimport { overToSQL } from './over'\n\nfunction windowFrameExprToSQL(windowFrameExpr) {\n if (!windowFrameExpr) return\n const { type } = windowFrameExpr\n if (type === 'rows') {\n return [toUpper(type), exprToSQL(windowFrameExpr.expr)].filter(hasVal).join(' ')\n }\n return exprToSQL(windowFrameExpr)\n}\nfunction windowSpecificationToSQL(windowSpec) {\n const {\n name,\n partitionby,\n orderby,\n window_frame_clause: windowFrame,\n } = windowSpec\n const result = [\n name,\n orderOrPartitionByToSQL(partitionby, 'partition by'),\n orderOrPartitionByToSQL(orderby, 'order by'),\n windowFrameExprToSQL(windowFrame),\n ]\n return result.filter(hasVal).join(' ')\n}\n\nfunction asWindowSpecToSQL(asWindowSpec) {\n if (typeof asWindowSpec === 'string') return asWindowSpec\n const { window_specification: windowSpec } = asWindowSpec\n return `(${windowSpecificationToSQL(windowSpec)})`\n}\n\nfunction namedWindowExprToSQL(namedWindowExpr) {\n const { name, as_window_specification: asWindowSpec } = namedWindowExpr\n return `${name} AS ${asWindowSpecToSQL(asWindowSpec)}`\n}\n\nfunction namedWindowExprListToSQL(namedWindowExprInfo) {\n const { expr } = namedWindowExprInfo\n return expr.map(namedWindowExprToSQL).join(', ')\n}\n\nfunction constructArgsList(expr) {\n const { args, name, consider_nulls = '', separator = ', ' } = expr\n const argsList = args ? exprToSQL(args).join(separator) : ''\n // cover Syntax from FN_NAME(...args [RESPECT NULLS]) [RESPECT NULLS]\n const result = [name, '(', argsList, ')', consider_nulls && ' ', consider_nulls]\n return result.filter(hasVal).join('')\n}\n\nfunction windowFuncToSQL(expr) {\n const { over } = expr\n const str = constructArgsList(expr)\n const overStr = overToSQL(over)\n return [str, overStr].filter(hasVal).join(' ')\n}\n\nexport {\n asWindowSpecToSQL,\n namedWindowExprToSQL,\n namedWindowExprListToSQL,\n windowFuncToSQL,\n windowSpecificationToSQL,\n}\n","import { toUpper } from './util'\nimport { exprToSQL } from './expr'\nimport { asWindowSpecToSQL } from './window'\n\nfunction overToSQL(over) {\n if (!over) return\n const { as_window_specification: asWindowSpec, expr, keyword, type, parentheses } = over\n const upperType = toUpper(type)\n if (upperType === 'WINDOW') return `OVER ${asWindowSpecToSQL(asWindowSpec)}`\n if (upperType === 'ON UPDATE') {\n let onUpdate = `${toUpper(type)} ${toUpper(keyword)}`\n const args = exprToSQL(expr) || []\n if (parentheses) onUpdate = `${onUpdate}(${args.join(', ')})`\n return onUpdate\n }\n throw new Error('unknown over type')\n}\n\nexport {\n overToSQL,\n}\n","import { arrayIndexToSQL, columnOffsetToSQL } from './column'\nimport { exprToSQL, orderOrPartitionByToSQL } from './expr'\nimport { hasVal, identifierToSql, literalToSQL, toUpper } from './util'\nimport { overToSQL } from './over'\n\nfunction anyValueFuncToSQL(stmt) {\n const { args, type, over } = stmt\n const { expr, having } = args\n let sql = `${toUpper(type)}(${exprToSQL(expr)}`\n if (having) sql = `${sql} HAVING ${toUpper(having.prefix)} ${exprToSQL(having.expr)}`\n sql = `${sql})`\n const overStr = overToSQL(over)\n return [sql, overStr].filter(hasVal).join(' ')\n}\n\nfunction arrayDimensionToSymbol(target) {\n if (!target || !target.array) return ''\n const { keyword } = target.array\n if (keyword) return toUpper(keyword)\n const { dimension, length } = target.array\n const result = []\n for (let i = 0; i < dimension; i++) {\n result.push('[')\n if (length && length[i]) result.push(literalToSQL(length[i]))\n result.push(']')\n }\n return result.join('')\n}\n\nfunction castToSQL(expr) {\n const { target: targets, expr: expression, keyword, symbol, as: alias, offset, parentheses: outParentheses } = expr\n let prefix = columnOffsetToSQL({ expr: expression, offset })\n const result = []\n for (let i = 0, len = targets.length; i < len; ++i) {\n const target = targets[i]\n const { angle_brackets: angleBrackets, length, dataType, parentheses, quoted, scale, suffix: dataTypeSuffix, expr: targetExpr } = target\n let str = targetExpr ? exprToSQL(targetExpr) : ''\n if (length != null) str = scale ? `${length}, ${scale}` : length\n if (parentheses) str = `(${str})`\n if (angleBrackets) str = `<${str}>`\n if (dataTypeSuffix && dataTypeSuffix.length) str += ` ${dataTypeSuffix.map(literalToSQL).join(' ')}`\n let symbolChar = '::'\n let suffix = ''\n const targetResult = []\n if (symbol === 'as') {\n if (i === 0) prefix = `${toUpper(keyword)}(${prefix}`\n suffix = ')'\n symbolChar = ` ${symbol.toUpperCase()} `\n }\n if (i === 0) targetResult.push(prefix)\n const arrayDimension = arrayDimensionToSymbol(target)\n targetResult.push(symbolChar, quoted, dataType, quoted, arrayDimension, str, suffix)\n result.push(targetResult.filter(hasVal).join(''))\n }\n if (alias) result.push(` AS ${identifierToSql(alias)}`)\n const sql = result.filter(hasVal).join('')\n return outParentheses ? `(${sql})` : sql\n}\n\nfunction extractFunToSQL(stmt) {\n const { args, type } = stmt\n const { field, cast_type: castType, source } = args\n const result = [`${toUpper(type)}(${toUpper(field)}`, 'FROM', toUpper(castType), exprToSQL(source)]\n return `${result.filter(hasVal).join(' ')})`\n}\n\nfunction flattenArgToSQL(arg) {\n if (!arg) return ''\n const { type, symbol, value } = arg\n const result = [toUpper(type), symbol, exprToSQL(value)]\n return result.filter(hasVal).join(' ')\n}\n\nfunction jsonObjectArgToSQL(argExpr) {\n const { expr } = argExpr\n const { key, value, on } = expr\n const result = [exprToSQL(key), 'VALUE', exprToSQL(value)]\n if (on) result.push('ON', 'NULL', exprToSQL(on))\n return result.filter(hasVal).join(' ')\n}\n\nfunction flattenFunToSQL(stmt) {\n const { args, type } = stmt\n const keys = ['input', 'path', 'outer', 'recursive', 'mode']\n const argsStr = keys.map(key => flattenArgToSQL(args[key])).filter(hasVal).join(', ')\n return `${toUpper(type)}(${argsStr})`\n}\n\nfunction funcArgToSQL(argExpr) {\n const { name, symbol, expr } = argExpr.value\n return [name, symbol, exprToSQL(expr)].filter(hasVal).join(' ')\n}\n\nfunction withinGroupToSQL(stmt) {\n if (!stmt) return ''\n const { type, keyword, orderby } = stmt\n return [toUpper(type), toUpper(keyword), `(${orderOrPartitionByToSQL(orderby, 'order by')})`].filter(hasVal).join(' ')\n}\n\nfunction funcToSQL(expr) {\n const { args, array_index, name, args_parentheses, parentheses, within_group: withinGroup, over, suffix } = expr\n const overStr = overToSQL(over)\n const withinGroupStr = withinGroupToSQL(withinGroup)\n const suffixStr = exprToSQL(suffix)\n const funcName = [literalToSQL(name.schema), name.name.map(literalToSQL).join('.')].filter(hasVal).join('.')\n if (!args) return [funcName, withinGroupStr, overStr].filter(hasVal).join(' ')\n let separator = expr.separator || ', '\n if (toUpper(funcName) === 'TRIM') separator = ' '\n let str = [funcName]\n str.push(args_parentheses === false ? ' ' : '(')\n const argsList = exprToSQL(args)\n if (Array.isArray(separator)) {\n let argsSQL = argsList[0]\n for (let i = 1, len = argsList.length; i < len; ++i) {\n argsSQL = [argsSQL, argsList[i]].join(` ${exprToSQL(separator[i - 1])} `)\n }\n str.push(argsSQL)\n } else {\n str.push(argsList.join(separator))\n }\n if (args_parentheses !== false) str.push(')')\n str.push(arrayIndexToSQL(array_index))\n str = [str.join(''), suffixStr].filter(hasVal).join(' ')\n return [parentheses ? `(${str})` : str, withinGroupStr, overStr].filter(hasVal).join(' ')\n}\n\nfunction tablefuncFunToSQL(expr) {\n const { as, name, args } = expr\n const funcName = [literalToSQL(name.schema), name.name.map(literalToSQL).join('.')].filter(hasVal).join('.')\n const result = [`${funcName}(${exprToSQL(args).join(', ')})`, 'AS', funcToSQL(as)]\n return result.join(' ')\n}\n\nfunction lambdaToSQL(stmt) {\n const { args, expr } = stmt\n const { value, parentheses } = args\n const argsList = value.map(exprToSQL).join(', ')\n return [parentheses ? `(${argsList})` : argsList, '->', exprToSQL(expr)].join(' ')\n}\n\nexport {\n anyValueFuncToSQL,\n arrayDimensionToSymbol,\n castToSQL,\n extractFunToSQL,\n flattenFunToSQL,\n funcArgToSQL,\n funcToSQL,\n jsonObjectArgToSQL,\n lambdaToSQL,\n tablefuncFunToSQL,\n}\n","import { columnsToSQL } from './column'\nimport { exprToSQL } from './expr'\nimport { arrayStructTypeToSQL, hasVal, toUpper } from './util'\n\nfunction arrayExprListToSQL(expr) {\n const {\n array_path: arrayPath,\n brackets,\n expr_list: exprList,\n parentheses,\n } = expr\n if (!exprList) return `[${columnsToSQL(arrayPath)}]`\n const result = Array.isArray(exprList) ? exprList.map(col => `(${columnsToSQL(col)})`).filter(hasVal).join(', ') : exprToSQL(exprList)\n if (brackets) return `[${result}]`\n return parentheses ? `(${result})` : result\n}\n\nfunction arrayStructValueToSQL(expr) {\n const {\n expr_list: exprList,\n type,\n } = expr\n switch (toUpper(type)) {\n case 'STRUCT':\n return `(${columnsToSQL(exprList)})`\n case 'ARRAY':\n return arrayExprListToSQL(expr)\n default:\n return ''\n }\n}\n\nfunction arrayStructExprToSQL(expr) {\n const { definition, keyword } = expr\n const result = [toUpper(keyword)]\n if (definition && typeof definition === 'object') {\n result.length = 0\n result.push(arrayStructTypeToSQL(definition))\n }\n result.push(arrayStructValueToSQL(expr))\n return result.filter(hasVal).join('')\n}\n\nexport {\n arrayStructExprToSQL,\n arrayStructValueToSQL,\n}\n","import { literalToSQL, toUpper, connector, dataTypeToSQL, hasVal } from './util'\nimport { alterExprToSQL } from './alter'\nimport { aggrToSQL } from './aggregation'\nimport { assignToSQL } from './assign'\nimport { binaryToSQL } from './binary'\nimport { caseToSQL } from './case'\nimport { collateToSQL } from './collate'\nimport { columnDefinitionToSQL, columnRefToSQL, fullTextSearchToSQL } from './column'\nimport { anyValueFuncToSQL, castToSQL, extractFunToSQL, flattenFunToSQL, funcArgToSQL, funcToSQL, jsonObjectArgToSQL, lambdaToSQL, tablefuncFunToSQL } from './func'\nimport { intervalToSQL } from './interval'\nimport { jsonExprToSQL, jsonVisitorExprToSQL } from './json'\nimport { selectToSQL } from './select'\nimport { showToSQL } from './show'\nimport { arrayStructExprToSQL } from './array-struct'\nimport { tablesToSQL, unnestToSQL } from './tables'\nimport { unionToSQL } from './union'\nimport { namedWindowExprListToSQL, windowFuncToSQL } from './window'\n\nconst exprToSQLConvertFn = {\n alter : alterExprToSQL,\n aggr_func : aggrToSQL,\n any_value : anyValueFuncToSQL,\n window_func : windowFuncToSQL,\n 'array' : arrayStructExprToSQL,\n assign : assignToSQL,\n binary_expr : binaryToSQL,\n case : caseToSQL,\n cast : castToSQL,\n collate : collateToSQL,\n column_ref : columnRefToSQL,\n column_definition : columnDefinitionToSQL,\n datatype : dataTypeToSQL,\n extract : extractFunToSQL,\n flatten : flattenFunToSQL,\n fulltext_search : fullTextSearchToSQL,\n function : funcToSQL,\n lambda : lambdaToSQL,\n insert : unionToSQL,\n interval : intervalToSQL,\n json : jsonExprToSQL,\n json_object_arg : jsonObjectArgToSQL,\n json_visitor : jsonVisitorExprToSQL,\n func_arg : funcArgToSQL,\n show : showToSQL,\n struct : arrayStructExprToSQL,\n tablefunc : tablefuncFunToSQL,\n tables : tablesToSQL,\n unnest : unnestToSQL,\n 'window' : namedWindowExprListToSQL,\n}\n\nfunction varToSQL(expr) {\n const { prefix = '@', name, members, quoted, suffix } = expr\n const val = []\n const varName = members && members.length > 0 ? `${name}.${members.join('.')}` : name\n let result = `${prefix || ''}${varName}`\n if (suffix) result += suffix\n val.push(result)\n return [quoted, val.join(' '), quoted].filter(hasVal).join('')\n}\n\nexprToSQLConvertFn.var = varToSQL\n\nfunction exprToSQL(exprOrigin) {\n if (!exprOrigin) return\n const expr = exprOrigin\n if (exprOrigin.ast) {\n const { ast } = expr\n Reflect.deleteProperty(expr, ast)\n for (const key of Object.keys(ast)) {\n expr[key] = ast[key]\n }\n }\n const { type } = expr\n if (type === 'expr') return exprToSQL(expr.expr)\n return exprToSQLConvertFn[type] ? exprToSQLConvertFn[type](expr) : literalToSQL(expr)\n}\n\nfunction unaryToSQL(unarExpr) {\n const { operator, parentheses, expr } = unarExpr\n const space = (operator === '-' || operator === '+' || operator === '~' || operator === '!') ? '' : ' '\n const str = `${operator}${space}${exprToSQL(expr)}`\n return parentheses ? `(${str})` : str\n}\n\nfunction getExprListSQL(exprList) {\n if (!exprList) return []\n if (!Array.isArray(exprList)) exprList = [exprList]\n return exprList.map(exprToSQL)\n}\n\nexprToSQLConvertFn.expr_list = expr => {\n const result = getExprListSQL(expr.value)\n const { parentheses, separator } = expr\n if (!parentheses && !separator) return result\n const joinSymbol = separator || ', '\n const str = result.join(joinSymbol)\n return parentheses ? `(${str})` : str\n}\n\nexprToSQLConvertFn.select = expr => {\n const str = typeof expr._next === 'object' ? unionToSQL(expr) : selectToSQL(expr)\n return expr.parentheses ? `(${str})` : str\n}\n\nexprToSQLConvertFn.unary_expr = unaryToSQL\n\nfunction mapObjectToSQL(mapExpr) {\n const { keyword, expr } = mapExpr\n const exprStr = expr.map(exprItem => [literalToSQL(exprItem.key), literalToSQL(exprItem.value)].join(', ')).join(', ')\n return [toUpper(keyword), `[${exprStr}]`].join('')\n}\n\nexprToSQLConvertFn.map_object = mapObjectToSQL\n\nfunction orderOrPartitionByToSQL(expr, prefix) {\n if (!Array.isArray(expr)) return ''\n let expressions = []\n const upperPrefix = toUpper(prefix)\n switch (upperPrefix) {\n case 'ORDER BY':\n expressions = expr.map(info => [exprToSQL(info.expr), info.type || 'ASC', toUpper(info.nulls)].filter(hasVal).join(' '))\n break\n case 'PARTITION BY':\n expressions = expr.map(info => exprToSQL(info.expr))\n break\n default:\n expressions = expr.map(info => exprToSQL(info.expr))\n break\n }\n return connector(upperPrefix, expressions.join(', '))\n}\n\nexport {\n exprToSQLConvertFn,\n exprToSQL,\n getExprListSQL,\n varToSQL,\n orderOrPartitionByToSQL,\n}\n","import { exprToSQL, orderOrPartitionByToSQL } from './expr'\nimport { hasVal, literalToSQL, toUpper } from './util'\nimport { overToSQL } from './over'\n\nfunction aggrToSQL(expr) {\n /** @type {Object} */\n const { args, filter, over, within_group_orderby } = expr\n let str = exprToSQL(args.expr)\n str = Array.isArray(str) ? str.join(', ') : str\n const fnName = expr.name\n const overStr = overToSQL(over)\n const separator = ' '\n if (args.distinct) str = ['DISTINCT', str].join(separator)\n if (args.separator && args.separator.delimiter) str = [str, literalToSQL(args.separator.delimiter)].join(`${args.separator.symbol} `)\n if (args.separator && args.separator.expr) str = [str, exprToSQL(args.separator.expr)].join(' ')\n if (args.orderby) str = [str, orderOrPartitionByToSQL(args.orderby, 'order by')].join(' ')\n if (args.separator && args.separator.value) str = [str, toUpper(args.separator.keyword), literalToSQL(args.separator.value)].filter(hasVal).join(' ')\n const withinGroup = within_group_orderby ? `WITHIN GROUP (${orderOrPartitionByToSQL(within_group_orderby, 'order by')})` : ''\n const filterStr = filter ? `FILTER (WHERE ${exprToSQL(filter.where)})` : ''\n return [`${fnName}(${str})`, withinGroup, overStr, filterStr].filter(hasVal).join(' ')\n}\n\nexport {\n aggrToSQL,\n}\n","import { exprToSQL } from './expr'\n\nfunction caseToSQL(expr) {\n const res = ['CASE']\n const { args: conditions, expr: exprItem, parentheses } = expr\n if (exprItem) res.push(exprToSQL(exprItem))\n for (let i = 0, len = conditions.length; i < len; ++i) {\n res.push(conditions[i].type.toUpperCase())\n if (conditions[i].cond) {\n res.push(exprToSQL(conditions[i].cond))\n res.push('THEN')\n }\n res.push(exprToSQL(conditions[i].result))\n }\n res.push('END')\n return parentheses ? `(${res.join(' ')})` : res.join(' ')\n}\n\nexport {\n caseToSQL,\n}\n","import { collateToSQL } from './collate'\nimport { constraintDefinitionToSQL } from './constrain'\nimport { exprToSQL } from './expr'\nimport { arrayDimensionToSymbol, castToSQL } from './func'\nimport { tablesToSQL } from './tables'\nimport {\n autoIncrementToSQL,\n columnIdentifierToSql,\n commonOptionConnector,\n commonTypeValue,\n commentToSQL,\n dataTypeToSQL,\n getParserOpt,\n hasVal,\n identifierToSql,\n literalToSQL,\n toUpper,\n} from './util'\n\nfunction columnOffsetToSQL(column, isDual) {\n if (typeof column === 'string') return identifierToSql(column, isDual)\n const { expr, offset, suffix } = column\n const offsetExpr = offset && offset.map(offsetItem => ['[', offsetItem.name, `${offsetItem.name ? '(' : ''}`, literalToSQL(offsetItem.value), `${offsetItem.name ? ')' : ''}`, ']'].filter(hasVal).join('')).join('')\n const result = [exprToSQL(expr), offsetExpr, suffix].filter(hasVal).join('')\n return result\n}\n\nfunction arrayIndexToSQL(arrayIndexList) {\n if (!arrayIndexList || arrayIndexList.length === 0) return ''\n const result = []\n for (const arrayIndex of arrayIndexList) {\n let arrayIndexStr = arrayIndex.brackets ? `[${literalToSQL(arrayIndex.index)}]` : `${arrayIndex.notation}${literalToSQL(arrayIndex.index)}`\n if (arrayIndex.property) arrayIndexStr = `${arrayIndexStr}.${literalToSQL(arrayIndex.property)}`\n result.push(arrayIndexStr)\n }\n return result.join('')\n}\nfunction columnRefToSQL(expr) {\n const {\n array_index, as, column, collate, db, isDual, notations = [], options, schema, table, parentheses,\n suffix, order_by, subFields = [],\n } = expr\n let str = column === '*' ? '*' : columnOffsetToSQL(column, isDual)\n const prefix = [db, schema, table].filter(hasVal).map(val => `${typeof val === 'string' ? identifierToSql(val) : exprToSQL(val)}`)\n let prefixStr = prefix[0]\n if (prefixStr) {\n let i = 1\n for (; i < prefix.length; ++i) {\n prefixStr = `${prefixStr}${notations[i] || '.'}${prefix[i]}`\n }\n str = `${prefixStr}${notations[i] || '.'}${str}`\n }\n str = [`${str}${arrayIndexToSQL(array_index)}`, ...subFields].join('.')\n const result = [\n str,\n collateToSQL(collate),\n exprToSQL(options),\n commonOptionConnector('AS', exprToSQL, as),\n ]\n result.push(typeof suffix === 'string' ? toUpper(suffix) : exprToSQL(suffix))\n result.push(toUpper(order_by))\n const sql = result.filter(hasVal).join(' ')\n return parentheses ? `(${sql})` : sql\n}\n\nfunction columnDataType(definition) {\n if (!definition) return\n const { dataType, length, suffix, scale, expr } = definition\n const parentheses = length != null && true || false\n let result = dataTypeToSQL({ dataType, length, suffix, scale, parentheses })\n if (expr) result += exprToSQL(expr)\n if (definition.array) {\n const arrayExpr = arrayDimensionToSymbol(definition)\n const space = /^\\[.*\\]$/.test(arrayExpr) ? '' : ' '\n result += [space, arrayExpr].join('')\n }\n return result\n}\n\nfunction columnReferenceDefinitionToSQL(referenceDefinition) {\n const reference = []\n if (!referenceDefinition) return reference\n const {\n definition,\n keyword,\n match,\n table,\n on_action: onAction,\n } = referenceDefinition\n reference.push(toUpper(keyword))\n reference.push(tablesToSQL(table))\n reference.push(definition && `(${definition.map(col => exprToSQL(col)).join(', ')})`)\n reference.push(toUpper(match))\n onAction.map(onRef => reference.push(toUpper(onRef.type), exprToSQL(onRef.value)))\n return reference.filter(hasVal)\n}\n\nfunction generatedExpressionToSQL(generated) {\n if (!generated) return\n const result = [toUpper(generated.value), `(${exprToSQL(generated.expr)})`, toUpper(generated.storage_type)]\n return result.filter(hasVal).join(' ')\n}\n\nfunction columnOption(definition) {\n const columnOpt = []\n const {\n nullable, character_set: characterSet, check, comment, constraint, collate, storage, using,\n default_val: defaultOpt, generated,\n auto_increment: autoIncrement,\n unique: uniqueKey,\n primary_key: primaryKey,\n column_format: columnFormat,\n reference_definition: referenceDefinition,\n } = definition\n const nullSQL = [toUpper(nullable && nullable.action), toUpper(nullable && nullable.value)].filter(hasVal).join(' ')\n if (!generated) columnOpt.push(nullSQL)\n if (defaultOpt) {\n const { type, value } = defaultOpt\n columnOpt.push(type.toUpperCase(), exprToSQL(value))\n }\n const { database } = getParserOpt()\n if (constraint) columnOpt.push(toUpper(constraint.keyword), literalToSQL(constraint.constraint))\n columnOpt.push(constraintDefinitionToSQL(check))\n columnOpt.push(generatedExpressionToSQL(generated))\n if (generated) columnOpt.push(nullSQL)\n columnOpt.push(autoIncrementToSQL(autoIncrement), toUpper(primaryKey), toUpper(uniqueKey), commentToSQL(comment))\n columnOpt.push(...commonTypeValue(characterSet))\n if (database.toLowerCase() !== 'sqlite') columnOpt.push(exprToSQL(collate))\n columnOpt.push(...commonTypeValue(columnFormat))\n columnOpt.push(...commonTypeValue(storage))\n columnOpt.push(...columnReferenceDefinitionToSQL(referenceDefinition))\n columnOpt.push(commonOptionConnector('USING', exprToSQL, using))\n return columnOpt.filter(hasVal).join(' ')\n}\n\nfunction columnOrderToSQL(columnOrder) {\n const { column, collate, nulls, opclass, order_by } = columnOrder\n const columnExpr = typeof column === 'string' ? { type: 'column_ref', table: columnOrder.table, column } : columnOrder\n columnExpr.collate = null\n const result = [\n exprToSQL(columnExpr),\n exprToSQL(collate),\n opclass,\n toUpper(order_by),\n toUpper(nulls),\n ]\n return result.filter(hasVal).join(' ')\n}\n\nfunction columnDefinitionToSQL(columnDefinition) {\n const column = []\n const name = columnRefToSQL(columnDefinition.column)\n const dataType = columnDataType(columnDefinition.definition)\n column.push(name)\n column.push(dataType)\n column.push(columnOption(columnDefinition))\n return column.filter(hasVal).join(' ')\n}\n\nfunction asToSQL(asStr) {\n if (!asStr) return ''\n if (typeof asStr === 'object') return ['AS', exprToSQL(asStr)].join(' ')\n return ['AS', /^(`?)[a-z_][0-9a-z_]*(`?)$/i.test(asStr) ? identifierToSql(asStr) : columnIdentifierToSql(asStr)].join(' ')\n}\n\nfunction fullTextSearchToSQL(expr) {\n const { against, as, columns, match, mode } = expr\n const matchExpr = [toUpper(match), `(${columns.map(col => columnRefToSQL(col)).join(', ')})`].join(' ')\n const againstExpr = [toUpper(against), ['(', exprToSQL(expr.expr), mode && ` ${literalToSQL(mode)}`, ')'].filter(hasVal).join('')].join(' ')\n return [matchExpr, againstExpr, asToSQL(as)].filter(hasVal).join(' ')\n}\n\nfunction columnToSQL(column, isDual) {\n const { expr, type } = column\n if (type === 'cast') return castToSQL(column)\n if (isDual) expr.isDual = isDual\n let str = exprToSQL(expr)\n const { expr_list: exprList } = column\n if (exprList) {\n const result = [str]\n const columnsStr = exprList.map(col => columnToSQL(col, isDual)).join(', ')\n result.push([toUpper(type), type && '(', columnsStr, type && ')'].filter(hasVal).join(''))\n return result.filter(hasVal).join(' ')\n }\n if (expr.parentheses && Reflect.has(expr, 'array_index') && expr.type !== 'cast') str = `(${str})`\n if (expr.array_index && expr.type !== 'column_ref') {\n str = `${str}${arrayIndexToSQL(expr.array_index)}`\n }\n return [str, asToSQL(column.as)].filter(hasVal).join(' ')\n}\n\nfunction getDual(tables) {\n const baseTable = Array.isArray(tables) && tables[0]\n if (baseTable && baseTable.type === 'dual') return true\n return false\n}\n/**\n * Stringify column expressions\n *\n * @param {Array} columns\n * @return {string}\n */\nfunction columnsToSQL(columns, tables) {\n if (!columns || columns === '*') return columns\n const isDual = getDual(tables)\n return columns.map(col => columnToSQL(col, isDual)).join(', ')\n}\n\nexport {\n arrayIndexToSQL,\n asToSQL,\n columnDefinitionToSQL,\n columnRefToSQL,\n columnToSQL,\n columnsToSQL,\n columnDataType,\n columnOffsetToSQL,\n columnOrderToSQL,\n columnReferenceDefinitionToSQL,\n fullTextSearchToSQL,\n getDual,\n}\n","import { exprToSQL } from './expr'\nimport { toUpper } from './util'\n\nfunction jsonExprToSQL(expr) {\n const { keyword, expr_list: exprList } = expr\n const result = [toUpper(keyword), exprList.map(exprItem => exprToSQL(exprItem)).join(', ')].join(' ')\n return result\n}\n\nfunction jsonVisitorExprToSQL(stmt) {\n const { symbol, expr } = stmt\n return [symbol, exprToSQL(expr)].join('')\n}\n\nexport {\n jsonExprToSQL,\n jsonVisitorExprToSQL,\n}\n","import { exprToSQL } from './expr'\nimport { hasVal, literalToSQL, toUpper } from './util'\n\nfunction collateToSQL(stmt) {\n if (!stmt) return\n const { keyword, collate: { name, symbol, value } } = stmt\n const result = [toUpper(keyword)]\n if (!value) result.push(symbol)\n result.push(Array.isArray(name) ? name.map(literalToSQL).join('.') : literalToSQL(name))\n if (value) result.push(symbol)\n result.push(exprToSQL(value))\n return result.filter(hasVal).join(' ')\n}\n\nexport {\n collateToSQL,\n}\n","import { parse } from '../pegjs/mysql.pegjs'\n\nexport default {\n [PARSER_NAME] : parse,\n}\n","import { columnToSQL, getDual } from './column'\nimport { exprToSQL } from './expr'\nimport parsers from './parser.all'\nimport astToSQL from './sql'\nimport { DEFAULT_OPT, setParserOpt } from './util'\n\nclass Parser {\n astify(sql, opt = DEFAULT_OPT) {\n const astInfo = this.parse(sql, opt)\n return astInfo && astInfo.ast\n }\n\n sqlify(ast, opt = DEFAULT_OPT) {\n setParserOpt(opt)\n return astToSQL(ast, opt)\n }\n\n exprToSQL(expr, opt = DEFAULT_OPT) {\n setParserOpt(opt)\n return exprToSQL(expr)\n }\n\n columnsToSQL(columns, tables, opt = DEFAULT_OPT) {\n setParserOpt(opt)\n if (!columns || columns === '*') return []\n const isDual = getDual(tables)\n return columns.map(col => columnToSQL(col, isDual))\n }\n\n parse(sql, opt = DEFAULT_OPT) {\n const { database = (PARSER_NAME || 'mysql') } = opt\n setParserOpt(opt)\n const typeCase = database.toLowerCase()\n if (parsers[typeCase]) return parsers[typeCase](opt.trimQuery === false ? sql : sql.trim(), opt.parseOptions || DEFAULT_OPT.parseOptions)\n throw new Error(`${database} is not supported currently`)\n }\n\n whiteListCheck(sql, whiteList, opt = DEFAULT_OPT) {\n if (!whiteList || whiteList.length === 0) return\n const { type = 'table' } = opt\n if (!this[`${type}List`] || typeof this[`${type}List`] !== 'function') throw new Error(`${type} is not valid check mode`)\n const checkFun = this[`${type}List`].bind(this)\n const authorityList = checkFun(sql, opt)\n let hasAuthority = true\n let denyInfo = ''\n for (const authority of authorityList) {\n let hasCorrespondingAuthority = false\n for (const whiteAuthority of whiteList) {\n const regex = new RegExp(`^${whiteAuthority}$`, 'i')\n if (regex.test(authority)) {\n hasCorrespondingAuthority = true\n break\n }\n }\n if (!hasCorrespondingAuthority) {\n denyInfo = authority\n hasAuthority = false\n break\n }\n }\n if (!hasAuthority) throw new Error(`authority = '${denyInfo}' is required in ${type} whiteList to execute SQL = '${sql}'`)\n }\n\n tableList(sql, opt) {\n const astInfo = this.parse(sql, opt)\n return astInfo && astInfo.tableList\n }\n\n columnList(sql, opt) {\n const astInfo = this.parse(sql, opt)\n return astInfo && astInfo.columnList\n }\n}\n\nexport default Parser\n","import Parser from './src/parser'\nimport * as util from './src/util'\n\nexport {\n Parser,\n util,\n}\n\n// for web worker\nif (typeof self === \"object\" && self) {\n self.NodeSQLParser = {\n Parser,\n util,\n }\n}\n\nif (typeof global === \"undefined\" && typeof window === \"object\" && window) window.global = window\n\nif (typeof global === \"object\" && global && global.window) {\n global.window.NodeSQLParser = {\n Parser,\n util,\n }\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/frontend/utilities/sql_tools.tests.ts b/frontend/utilities/sql_tools.tests.ts index b94ebe5f5a..6df7ae29bd 100644 --- a/frontend/utilities/sql_tools.tests.ts +++ b/frontend/utilities/sql_tools.tests.ts @@ -2,6 +2,7 @@ import { checkTable } from "./sql_tools"; describe("checkTable", () => { // from https://github.com/fleetdm/fleet/issues/26366 + // and https://github.com/fleetdm/fleet/issues/30109 const SQL = ` WITH extension_safety_hub_menu_notifications AS ( SELECT @@ -42,7 +43,7 @@ SELECT path, timestamp, triggering_extension FROM problematic_extensions -WHERE triggering_extension IS NOT NULL; +WHERE triggering_extension IS NOT NULL AND username NOT LIKE '\\_%' ESCAPE '\\'; `; it("should return only real tables by default", () => { const { tables, error } = checkTable(SQL); diff --git a/frontend/utilities/sql_tools.ts b/frontend/utilities/sql_tools.ts index 7a503b3c2f..b484f19c3e 100644 --- a/frontend/utilities/sql_tools.ts +++ b/frontend/utilities/sql_tools.ts @@ -1,5 +1,5 @@ // @ts-ignore -import { Parser } from "node-sql-parser"; +import { Parser } from "utilities/node-sql-parser/sqlite"; import { intersection, isPlainObject, uniq } from "lodash"; import { osqueryTablesAvailable } from "utilities/osquery_tables"; import { diff --git a/package.json b/package.json index 381f7fd4bf..3fd832e99b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,6 @@ "js-yaml": "3.14.1", "lodash": "4.17.21", "memoize-one": "5.2.1", - "node-sql-parser": "5.3.8", "normalizr": "3.6.2", "prop-types": "15.8.1", "proxy-middleware": "0.15.0", diff --git a/yarn.lock b/yarn.lock index caac65840c..ee46fda641 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3677,11 +3677,6 @@ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/pegjs@^0.10.0": - version "0.10.6" - resolved "https://registry.yarnpkg.com/@types/pegjs/-/pegjs-0.10.6.tgz#bc20fc4809fed4cddab8d0dbee0e568803741a82" - integrity sha512-eLYXDbZWXh2uxf+w8sXS8d6KSoXTswfps6fvCUuVAGN8eRpfe7h9eSRydxiSJvo9Bf+GzifsDOr9TMQlmJdmkw== - "@types/prettier@^2.1.5": version "2.7.1" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" @@ -4884,11 +4879,6 @@ big-integer@^1.6.16: resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== -big-integer@^1.6.48: - version "1.6.52" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" - integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -10858,14 +10848,6 @@ node-sass-magic-importer@^5.3.3: postcss-scss "^3.0.2" resolve "^1.17.0" -node-sql-parser@5.3.8: - version "5.3.8" - resolved "https://registry.yarnpkg.com/node-sql-parser/-/node-sql-parser-5.3.8.tgz#b71db4cb80dc5302fc77d7b6ca3bcb269b2124bf" - integrity sha512-aqGTzK8kPJAwQ6tqdS0l+vX358LXMmZDw902ePfiPn3PSDsg2HeR2tHFioXNHJW00YHoic6VVYY80waFb/zdxw== - dependencies: - "@types/pegjs" "^0.10.0" - big-integer "^1.6.48" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"