From 221720384926dc9a73253bac4f985ecb80d59824 Mon Sep 17 00:00:00 2001 From: Michael Rampl Date: Wed, 23 Sep 2020 17:51:17 +0200 Subject: [PATCH] updated translations --- .editorconfig | 28 ------------------ .gitignore | 10 ------- ...40f6c.css => calc.5f5c7fd49bb7b3aea41e.css | 0 ...css.gz => calc.5f5c7fd49bb7b3aea41e.css.gz | Bin index.html | 4 +-- index.html.gz | Bin 1821 -> 1820 bytes ...js => calc.5f5c7fd49bb7b3aea41e.bundle.js} | 2 +- ...=> calc.5f5c7fd49bb7b3aea41e.bundle.js.gz} | Bin 729131 -> 729165 bytes ...s => tests.5f5c7fd49bb7b3aea41e.bundle.js} | 8 ++--- js/tests.5f5c7fd49bb7b3aea41e.bundle.js.gz | Bin 0 -> 144017 bytes js/tests.e900012b8e502c240f6c.bundle.js.gz | Bin 143979 -> 0 bytes test.html | 4 +-- test.html.gz | Bin 420 -> 421 bytes ...0f6c.css => tests.5f5c7fd49bb7b3aea41e.css | 0 ...ss.gz => tests.5f5c7fd49bb7b3aea41e.css.gz | Bin 15 files changed, 9 insertions(+), 47 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .gitignore rename calc.e900012b8e502c240f6c.css => calc.5f5c7fd49bb7b3aea41e.css (100%) rename calc.e900012b8e502c240f6c.css.gz => calc.5f5c7fd49bb7b3aea41e.css.gz (100%) rename js/{calc.e900012b8e502c240f6c.bundle.js => calc.5f5c7fd49bb7b3aea41e.bundle.js} (82%) rename js/{calc.e900012b8e502c240f6c.bundle.js.gz => calc.5f5c7fd49bb7b3aea41e.bundle.js.gz} (84%) rename js/{tests.e900012b8e502c240f6c.bundle.js => tests.5f5c7fd49bb7b3aea41e.bundle.js} (84%) create mode 100644 js/tests.5f5c7fd49bb7b3aea41e.bundle.js.gz delete mode 100644 js/tests.e900012b8e502c240f6c.bundle.js.gz rename tests.e900012b8e502c240f6c.css => tests.5f5c7fd49bb7b3aea41e.css (100%) rename tests.e900012b8e502c240f6c.css.gz => tests.5f5c7fd49bb7b3aea41e.css.gz (100%) diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 907aa24ea..000000000 --- a/.editorconfig +++ /dev/null @@ -1,28 +0,0 @@ -root = true - -[*] -indent_style = tab -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = false -insert_final_newline = false - -[*.md] -trim_trailing_whitespace = false - -[*.js] -indent_style = tab -trim_trailing_whitespace = false -insert_final_newline = false - -[*.ts,*.tsx] -indent_style = space -indent_size = 2 -trim_trailing_whitespace = false -insert_final_newline = true - -[*.pegjs] -indent_style = tab -trim_trailing_whitespace = false -insert_final_newline = false \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 70861e8b6..000000000 --- a/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -/nbproject/private/ -/node_modules -.brackets.json -.idea -dist -build -/bower_components -/tmp -/yarn-error.log -/reports/ \ No newline at end of file diff --git a/calc.e900012b8e502c240f6c.css b/calc.5f5c7fd49bb7b3aea41e.css similarity index 100% rename from calc.e900012b8e502c240f6c.css rename to calc.5f5c7fd49bb7b3aea41e.css diff --git a/calc.e900012b8e502c240f6c.css.gz b/calc.5f5c7fd49bb7b3aea41e.css.gz similarity index 100% rename from calc.e900012b8e502c240f6c.css.gz rename to calc.5f5c7fd49bb7b3aea41e.css.gz diff --git a/index.html b/index.html index 4442527c0..26090d898 100644 --- a/index.html +++ b/index.html @@ -116,7 +116,7 @@ } } - +
@@ -125,6 +125,6 @@
- + \ No newline at end of file diff --git a/index.html.gz b/index.html.gz index e641203a7406fe7a8161780b9379838625a66588..bcf9e66a5a39057cbbe83dc46e87b47ab5aa4a72 100644 GIT binary patch literal 1820 zcmV+%2jlo3iwFP!000021FctWbK5o&{%rq>jWRt+cOog-vD3O%+SK*6>Ge`i*8T1G0HAEeNt|n^8e1e5yAO63`=;YZU;l7&{`1)>Rd!K7+dU2s zJXz$=c6W{!Yz1YN(1z`N(AgsTbZ|?rtZgH{>f~}h_$m6&^XNn^T47~c^MEqdSZ*Nn z;&je=2}QNNY?#|AMYS&tp zm8HGu?2x`wm1r6^^e;B1W(^MfombM(E7j?Y=|tsB|5SQGpqVbc;LMU$WGg1idSOTv ze(`Vhi>zxwXI)y$3@G2rj2pufTE?^&Ph)yf5R`)gw<2fX(@Gd>l%-r6t7Y0*&S@oW z1qNw=Qpg$*KdTOAHKbB2BpwZuu-?YxSv(!w!^zoXTDH#Z1E_clb`F~!ybr3lZVjzr zP0d0#@8cffW}nyPn9?=zHD{fbO-a(m{q=9@amnkI(z$s{iFY9GT@^ z1FAF^;4{b^lN4giJhCE<&9Zd2RVzIo zJf2RUrbTf-%ooP_T4p{FqH`qTiR0h8J3;!ATFbD|*xt&qb zHJLksMsh-CLTW-K0&qfz(Z!g41<#IrJ^V(gvgYTA$hDQ3`N3DB;TxKh{yeZ~xA2eO zexp0o9%5(Yw&JUv2QT1y{bn4uovB7bm)!ztnz7@(nFO91%rp8sHN2v)h2_!MA0`qd(Cg@))$ zl-^jPglhX07fSQUdju>uNW?wOYlc_gEx0E{ij@NbXh_ z#<7-S2%~^miqSBb3;MWY9_|71<@Y`!=2_?U6cNdrpz(o-1qzgjA~)0&!>vYN3;@sWYxGg)oeJVywBX zMaH;zBugB}J}Dr+s$^EtN;N|mBRa$W;2zW+B&_8{>(8u}$o;mb;VtlENJZg4!1t4zy{z&zwDK3A^=N{=g#;tuvg$;LBnZf%tOj_dzDLG^Wq1=*Ya z=~TapTY5B~`wS>B3*@(FKNJQ{SJxBr-+>t>V#cjpujsXzPAHm<=^x<;)aBt2tDYOQ zEBb;)!!L&5z+y~CZ!y$yB}^3-8?ATyubaM5#*&4fG=tsZlke!RujFdqfA*PyC|h!rrZ{7LCCfizD){wR2U3UAO|@-i{kr zmvNh}YwH)7O2c6;drO2|lZPIAM349P_dTkgV2|kVNqg4NXbQJrVqqBc2-~5D{aHzG<(C@;Fw+(q zkzw9N@y1U->0@pqu;ob4KAMIW?ofA}eIMh8a(&dOR%Ftyk7)Y&ZTxuU{tBhS5g*$4 zGwS|POI+NC=na!&m=qH?>R%`BM@oE99Ar<6{K;o&`ZV1aES}6b&J2ckKV^DpQ!%3- zA1C1l?(T7_^0mv1TrMfAF?hZV)1$b4g|T=*GM^7zfkuM8!hpezZ{~OG^FhcYPkxKO z75VN!?0Cuk<@V_$+#y=2JHCg<3BtT}Yx;$G!1@$vRx^erhuoKq<0RO;3n#c=`~L&O KpLMtd5C8xgT8oMR literal 1821 zcmV+&2jci2iwFP!000021FctWbKAxd{!IOfH9aZGmHL_aJHgzxChe z`^CT2PqL~6owxH!ra<{trd%5y(=w+0coNgAoS+;OxEDG9mR7=0tt@5ISS{zR<&0L+ zmSB(uD7mZv@uO;CR!wSdg~X#~64ra~I7t@aE*vEW&MDS6c> zZFgL|l9?@M884x1y$==d!7gFbqxV52SB;@H ztf^S&`a|49-0aJ$7}0!9e9LKTWnGZ8ad-VYdR+5*rF3TAQR02b@y;>)C=s-@tXYpg zq?oEJ3BOyVs`ph9tu2+_acmb*_YvkrAOnnRhYpdZsW`H#P0L6^u1`k(#Aeo?KA+s; zzfYy+9DD|uW0G7f9ar*DEN<$;U(gmgpxJc;#pFU1oH(8h{K5Y1!Tv|UyJzHielzm) z=yrPa31rXn0px|KWzNQaMBGTr@rvj7Y!9W)b?3wni;G-n88s4DkwsR_W3w#WZB-RRpR(|K1>0`Je6_w5#cTKlEN>=n13)ayx=tN>w>H|X3cp&!jnEK% zjnW%Slu&KI;#_GSdXIqRZZurUI#a7LWh(WGk7*EmI>1|!tX8YI@E(iA#$|D;7Rh#X zWgKfE1~3Ykg%}QkNsf$Gba-(1?C|r0qiE^~NN_dq<~v5ib>^rIQovPJzjKmoZnf(- z7glIX7pPw-G3Q{Vmkr7vOrdY2{YN|ZL_?ua2jMQcEZ^GXN-Ra7x(Mqf$)~Xbn`;aP zouNP@Y3JTs8O@!-*&}eItrcfdt?k(bk3Pf(GbQ|g?5%vTW6?izJI;C zq^`>aoahhv1T5c#JD;Q_r`N`{UBgV$^-&GQwCly-YBb|Q@LGGdZd%rBa_zJ(0+y&V zmxoJ4l0hq>xk#_U-L>&lX^+(E%5#b=^ITy&Ak4K|ArJ?KpcXpWnp)%fQV7GiBgUGW zN~Da7N3z6m?2`iGt5T*VtyDdLF`_l>5AHzSLBd*IH2%y=iOg@itbndOR~Q>;&X_@DXtMRLT06EP%C-m(&xgud zVQwLj0z7lO>-gQmR&B~yj`!H0^{3^gEG>m5SCoFf^U2@a?8nAM+;BRI4T`WG4*oP4 z#Zcr-q~#9ua)aZ6TxD8r1ZE*$@ws^;P6kFIUC2P;LxwT>PE3W_71l89a7G&?b zr&IkVZs^Hu<})D2ERfxw{a6^(ZB>oQe+Oomh#9wZy`s}*GNx!cqQ8VAP?rY-tU7Mc zZsSr58tBI)=0;VB2Cs)z%`qKLKJ$x;bGuzxEoy@^7RTgYE9a^RyKn`*y&ZS1 zF5@;`*VeBvm4?Gy_7(`aItxAan4TUS9C%be!5-7mv*y;XOLkRlhcHKkvW~RKWNVIT zI_cDjFk4(pi)MkbCRl=r!cV}6?Z}P9gh?26q0ZfciG^X%BW#Br_IoA0m4DkPfSESe zhz#>SiZ_1pSr>B~fgMMB_TeP7aEID+_I-*U%5_nr8j(u7KBmbR_wnPE`y-SJM|^DK z_o(|@Epc%lqBl&AVNy)osDGQdA1N_^KAB9W`}5~~IN4A4pH1?kG)@hMcRyu%X;U(z zAD<-Q2kzdY=_$&=rq z??k>k5IbJ7d%1r)33rHAYRmWdI6;`V?oGckk61rPnpKQp$su=T<0J_-@4*S~*Z%(i L@8@NE1P}lKF2s@d diff --git a/js/calc.e900012b8e502c240f6c.bundle.js b/js/calc.5f5c7fd49bb7b3aea41e.bundle.js similarity index 82% rename from js/calc.e900012b8e502c240f6c.bundle.js rename to js/calc.5f5c7fd49bb7b3aea41e.bundle.js index 1907f02c0..392c52c3d 100644 --- a/js/calc.e900012b8e502c240f6c.bundle.js +++ b/js/calc.5f5c7fd49bb7b3aea41e.bundle.js @@ -109,4 +109,4 @@ var n="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var r,o,i,a,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var l=null,u=null,c=function(){if(null!==l)try{var e=t.unstable_now();l(!0,e),l=null}catch(e){throw setTimeout(c,0),e}},d=Date.now();t.unstable_now=function(){return Date.now()-d},r=function(e){null!==l?setTimeout(r,0,e):(l=e,setTimeout(c,0))},o=function(e,t){u=setTimeout(e,t)},i=function(){clearTimeout(u)},a=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var h=window.performance,f=window.Date,m=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var g=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof g&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof h&&"function"==typeof h.now)t.unstable_now=function(){return h.now()};else{var y=f.now();t.unstable_now=function(){return f.now()-y}}var b=!1,v=null,_=-1,w=5,E=0;a=function(){return t.unstable_now()>=E},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125>>1,o=e[r];if(!(void 0!==o&&0T(a,n))void 0!==l&&0>T(l,a)?(e[r]=l,e[s]=n,r=s):(e[r]=a,e[i]=n,r=i);else{if(!(void 0!==l&&0>T(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function T(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var M=[],x=[],R=1,L=null,A=3,D=!1,N=!1,P=!1;function I(e){for(var t=O(x);null!==t;){if(null===t.callback)k(x);else{if(!(t.startTime<=e))break;k(x),t.sortIndex=t.expirationTime,S(M,t)}t=O(x)}}function H(e){if(P=!1,I(e),!N)if(null!==O(M))N=!0,r(Y);else{var t=O(x);null!==t&&o(H,t.startTime-e)}}function Y(e,n){N=!1,P&&(P=!1,i()),D=!0;var r=A;try{for(I(n),L=O(M);null!==L&&(!(L.expirationTime>n)||e&&!a());){var s=L.callback;if(null!==s){L.callback=null,A=L.priorityLevel;var l=s(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===O(M)&&k(M),I(n)}else k(M);L=O(M)}if(null!==L)var u=!0;else{var c=O(x);null!==c&&o(H,c.startTime-n),u=!1}return u}finally{L=null,A=r,D=!1}}function F(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var W=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){N||D||(N=!0,r(Y))},t.unstable_getCurrentPriorityLevel=function(){return A},t.unstable_getFirstCallbackNode=function(){return O(M)},t.unstable_next=function(e){switch(A){case 1:case 2:case 3:var t=3;break;default:t=A}var n=A;A=t;try{return e()}finally{A=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=W,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=A;A=e;try{return t()}finally{A=n}},t.unstable_scheduleCallback=function(e,n,a){var s=t.unstable_now();if("object"==typeof a&&null!==a){var l=a.delay;l="number"==typeof l&&0s?(e.sortIndex=l,S(x,e),null===O(M)&&e===O(x)&&(P?i():P=!0,o(H,l-s))):(e.sortIndex=a,S(M,e),N||D||(N=!0,r(Y))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();I(e);var n=O(M);return n!==L&&null!==L&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime{if("string"!=typeof e||"string"!=typeof t)throw new TypeError("Expected the arguments to be of type `string`");if(""===t)return[e];const n=e.indexOf(t);return-1===n?[e]:[e.slice(0,n),e.slice(n+t.length)]}},"./node_modules/strict-uri-encode/index.js":function(e,t,n){"use strict";e.exports=e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)},"./node_modules/symbol-observable/es/index.js":function(e,t,n){"use strict";(function(e,r){var o,i=n("./node_modules/symbol-observable/es/ponyfill.js");o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:r;var a=Object(i.a)(o);t.a=a}).call(this,n("./node_modules/webpack/buildin/global.js"),n("./node_modules/webpack/buildin/harmony-module.js")(e))},"./node_modules/symbol-observable/es/ponyfill.js":function(e,t,n){"use strict";function r(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}n.d(t,"a",(function(){return r}))},"./node_modules/timers-browserify/main.js":function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n("./node_modules/setimmediate/setImmediate.js"),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n("./node_modules/webpack/buildin/global.js"))},"./node_modules/warning/warning.js":function(e,t,n){"use strict";var r=function(){};e.exports=r},"./node_modules/webpack/buildin/global.js":function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},"./node_modules/webpack/buildin/harmony-module.js":function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},"./node_modules/webpack/buildin/module.js":function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},"./src/calc2/calculator.entry.tsx":function(e,t,n){"use strict";n.r(t);var r=n("./src/calc2/i18n.tsx"),o=n("./src/calc2/utils/groupUtils.ts"),i=n("./node_modules/immutable/dist/immutable.es.js"),a=function(e){return"@@redux-saga/"+e},s=a("CANCEL_PROMISE"),l=a("CHANNEL_END"),u=a("IO"),c=a("MATCH"),d=a("MULTICAST"),h=a("SAGA_ACTION"),f=a("SELF_CANCELLATION"),m=a("TASK"),p=a("TASK_CANCEL"),g=a("TERMINATE"),y=a("LOCATION"),b=n("./node_modules/@babel/runtime/helpers/esm/extends.js"),v=function(e){return null==e},_=function(e){return null!=e},w=function(e){return"function"==typeof e},E=function(e){return"string"==typeof e},j=Array.isArray,C=function(e){return e&&w(e.then)},S=function(e){return e&&w(e.next)&&w(e.throw)},O=function e(t){return t&&(E(t)||M(t)||w(t)||j(t)&&t.every(e))},k=function(e){return e&&w(e.take)&&w(e.close)},T=function(e){return w(e)&&e.hasOwnProperty("toString")},M=function(e){return Boolean(e)&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype};var x=function(e){return function(){return e}}(!0),R=function(){};var L=function(e){return e};"function"==typeof Symbol&&Symbol.asyncIterator&&Symbol.asyncIterator;var A=function(e,t){Object(b.a)(e,t),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach((function(n){e[n]=t[n]}))};function D(e,t){var n=e.indexOf(t);n>=0&&e.splice(n,1)}function N(e){var t=!1;return function(){t||(t=!0,e())}}var P=function(e){throw e},I=function(e){return{value:e,done:!0}};function H(e,t,n){void 0===t&&(t=P),void 0===n&&(n="iterator");var r={meta:{name:n},next:e,throw:t,return:I,isSagaIterator:!0};return"undefined"!=typeof Symbol&&(r[Symbol.iterator]=function(){return r}),r}function Y(e,t){var n=t.sagaStack;console.error(e),console.error(n)}var F=function(e){return Array.apply(null,new Array(e))},W=function(e){return function(t){return e(Object.defineProperty(t,h,{value:!0}))}},B=function(e){return e===g},U=function(e){return e===p},z=function(e){return B(e)||U(e)};function V(e,t){var n=Object.keys(e),r=n.length;var o,i=0,a=j(e)?F(r):{},s={};return n.forEach((function(e){var n=function(n,s){o||(s||z(n)?(t.cancel(),t(n,s)):(a[e]=n,++i===r&&(o=!0,t(a))))};n.cancel=R,s[e]=n})),t.cancel=function(){o||(o=!0,n.forEach((function(e){return s[e].cancel()})))},s}function q(e){return{name:e.name||"anonymous",location:G(e)}}function G(e){return e[y]}function K(e,t){void 0===e&&(e=10);var n=new Array(e),r=0,o=0,i=0,a=function(t){n[o]=t,o=(o+1)%e,r++},s=function(){if(0!=r){var t=n[i];return n[i]=null,r--,i=(i+1)%e,t}},l=function(){for(var e=[];r;)e.push(s());return e};return{isEmpty:function(){return 0==r},put:function(s){var u;if(r1?t-1:0),r=1;r1?t-1:0),r=1;r2?n-2:0),o=2;oe.groupInfo.source===n&&e.groupInfo.id===r&&e.groupInfo.filename===o&&e.groupInfo.index===i);return a?Object.assign(Object.assign({},e),{current:Object.assign(Object.assign({},e.current),{group:a})}):(console.error("could not find group ",a),e)}case"GROUPS_LOAD_SUCCESS":{const{loadedGroups:n}=t;let r=e;for(const e of n)r=Object.assign(Object.assign({},r),{groups:r.groups.set(le(e),e)});return r}case"GROUP_SET_DRAFT":{let{draft:n}=t;n=Object.assign(Object.assign({},n),{isDraft:!0}),e=Object.assign(Object.assign({},e),{groups:e.groups.set(le(n),n),current:Object.assign(Object.assign({},e.current),{group:n})})}default:return e}}function le(e){const{source:t,id:n,filename:r,index:o}=e.groupInfo;return`${t}/${n}/${r}/${o}`}n("./node_modules/custom-event-polyfill/polyfill.js");var ue=n("./node_modules/react/index.js"),ce=n("./node_modules/react-dom/index.js"),de=n("./node_modules/react-hot-loader/index.js"),he=(n.p,n("./src/calc2/main.hot.tsx")),fe=n("./node_modules/redux/es/redux.js"),me=n("./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js");function pe(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e}var ge=pe,ye=[],be=0;function ve(e){try{Ee(),e()}finally{je()}}function _e(e){ye.push(e),be||(Ee(),Ce())}function we(e){try{return Ee(),e()}finally{Ce()}}function Ee(){be++}function je(){be--}function Ce(){var e;for(je();!be&&void 0!==(e=ye.shift());)ve(e)}var Se=function(e){return function(t){return e.some((function(e){return xe(e)(t)}))}},Oe=function(e){return function(t){return e(t)}},ke=function(e){return function(t){return t.type===String(e)}},Te=function(e){return function(t){return t.type===e}},Me=function(){return x};function xe(e){var t="*"===e?Me:E(e)?ke:j(e)?Se:T(e)?ke:w(e)?Oe:M(e)?Te:null;if(null===t)throw new Error("invalid pattern: "+e);return t(e)}var Re={type:l},Le=function(e){return e&&e.type===l};function Ae(e){void 0===e&&(e=X());var t=!1,n=[];return{take:function(r){t&&e.isEmpty()?r(Re):e.isEmpty()?(n.push(r),r.cancel=function(){D(n,r)}):r(e.take())},put:function(r){if(!t){if(0===n.length)return e.put(r);n.shift()(r)}},flush:function(n){t&&e.isEmpty()?n(Re):n(e.flush())},close:function(){if(!t){t=!0;var e=n;n=[];for(var r=0,o=e.length;r2?h-2:0),m=2;m2?n-2:0),o=2;o1?t-1:0),r=1;r!(e.groupInfo.source!==t||e.groupInfo.id!==n||!r||"first"!==r&&r.filename!==e.groupInfo.filename||!r||"first"!==r&&r.index!==e.groupInfo.index));if(s){const{source:e,id:t,filename:n,index:r}=s.groupInfo,o={type:"GROUP_SET_CURRENT",source:e,id:t,filename:n,index:r};yield Q(o)}else try{if("local"!==t&&"gist"!==t)throw new Error(`unsupported source-type ${t}`);const e=yield ee(o.b,t,n,i,a),s={type:"GROUPS_LOAD_SUCCESS",loadedGroups:e};if(yield Q(s),void 0!==r&&e.length>0){const{source:t,id:n,filename:r}=e[0].groupInfo,o={type:"GROUP_SET_CURRENT",source:t,id:n,filename:r,index:0};yield Q(o)}}catch(e){console.error("could not fetch group",e),window.alert("Could not fetch group!\nDefault group loaded.\n"+e)}}))})),ce.render(ue.createElement(de.AppContainer,null,ue.createElement(he.a,{store:et})),document.getElementById("root"));{const e={type:"SET_LOCALE",locale:r.c.language};et.dispatch(e)}for(const e of function(){const e=[{maintainerGroup:Object(r.d)("calc.maintainer-groups.misc"),maintainer:"",source:"local",id:"uibk"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.uibk"),maintainer:'mtschu',source:"gist",id:"2923a30a474fdcb46bee"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.uibk"),maintainer:'Wolfgang Gassler',source:"gist",id:"7d1871f79a8bcb4788de"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.uibk"),maintainer:'Michael Rampl',source:"gist",id:"b58108eacc9c5916726b2327789204ab"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.uibk"),maintainer:'Michael Rampl',source:"gist",id:"963d8b886fb468d742c71d34ba0dbbed"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.saarland"),maintainer:'Jens Dittrich',source:"gist",id:"41cf5ce652756d9331eec7562644e074"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.saarland"),maintainer:'Jens Dittrich',source:"gist",id:"c306ecf21c6e6d175508d3ac6b4355e7"}];let t=!0;return e.map(({source:e,id:n,maintainer:r,maintainerGroup:o})=>{const i={type:"GROUPS_LOAD_REQUEST",source:e,id:n,setCurrent:t?"first":void 0,maintainer:r,maintainerGroup:o};return t=!1,i})}())et.dispatch(e)},"./src/calc2/components/calculator.scss":function(e,t,n){},"./src/calc2/components/dropdownList.tsx":function(e,t,n){"use strict";n.d(t,"a",(function(){return h}));var r=n("./node_modules/react/index.js"),o=n("./node_modules/reactstrap/lib/Dropdown.js"),i=n.n(o),a=n("./node_modules/reactstrap/lib/DropdownItem.js"),s=n.n(a),l=n("./node_modules/reactstrap/lib/DropdownMenu.js"),u=n.n(l),c=n("./node_modules/reactstrap/lib/DropdownToggle.js"),d=n.n(c);class h extends r.Component{constructor(e){super(e),this.id=`dropdown-${Math.random().toString(36).substr(2,10)}`,this.state={isOpen:!1},this.toggle=this.toggle.bind(this)}toggle(){this.setState({isOpen:!this.state.isOpen})}render(){const{label:e,elements:t,value:n,onChange:o,disabled:a=!1}=this.props,{isOpen:l}=this.state;return r.createElement(i.a,{isOpen:l,toggle:this.toggle},r.createElement(d.a,{color:"",disabled:a||0===t.length},e),r.createElement(u.a,null,t.map((e,t)=>"separator"===e.type?r.createElement(s.a,{key:t,divider:!0}):"header"===e.type?r.createElement(s.a,{key:t,header:!0},e.label):r.createElement(s.a,{key:t,onClick:t=>{t.preventDefault(),o&&o(e.value)},active:e.active||e.value===n},e.label))))}}},"./src/calc2/components/editorBase.tsx":function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return k})),n.d(t,"c",(function(){return T}));var r=n("./node_modules/@fortawesome/free-solid-svg-icons/index.es.js"),o=n("./node_modules/@fortawesome/react-fontawesome/index.es.js"),i=n("./src/calc2/components/dropdownList.tsx"),a=n("./src/calc2/components/toolbar.tsx"),s=n("./src/calc2/i18n.tsx"),l=n("./node_modules/classnames/index.js"),u=n("./node_modules/codemirror/lib/codemirror.js"),c=(n("./node_modules/codemirror/addon/hint/show-hint.js"),n("./src/db/exec/RANode.ts")),d=n("./src/db/translate/utils.ts"),h=n("./node_modules/react/index.js"),f=n("./node_modules/react-dom/index.js"),m=n("./node_modules/react-toastify/esm/react-toastify.js"),p=n("./node_modules/reactstrap/es/Button.js"),g=n("./node_modules/reactstrap/es/Modal.js"),y=n("./node_modules/reactstrap/es/ModalHeader.js"),b=n("./node_modules/reactstrap/es/ModalBody.js"),v=n("./node_modules/reactstrap/es/ModalFooter.js"),_=n("./node_modules/reactstrap/es/Input.js"),w=n("./node_modules/@handsontable/react/es/react-handsontable.js");n("./node_modules/codemirror/lib/codemirror.css"),n("./node_modules/codemirror/theme/eclipse.css"),n("./node_modules/codemirror/addon/hint/show-hint.css"),n("./node_modules/codemirror/addon/lint/lint.js"),n("./node_modules/codemirror/addon/lint/lint.css"),n("./node_modules/codemirror/addon/display/placeholder.js"),n("./node_modules/codemirror/addon/display/autorefresh.js"),n("./node_modules/codemirror/mode/sql/sql.js"),n("./node_modules/handsontable/dist/handsontable.full.css"),u.defineMode("relalg",(function(){const e=["pi","sigma","rho","tau","<-","->","intersect","union","except","/","-","\\\\","x","cross join","join","inner join","natural join","left join","right join","left outer join","right outer join","left semi join","right semi join","anti join","anti semi join","and","or","xor"],t=["π","σ","ρ","τ","←","→","∩","∪","÷","-","⨯","⨝","⟕","⟖","⟗","⋉","⋊","▷"],n=["<-","->",">=","<=","=","∧","∨","⊻","⊕","≠","=","¬",">","<","≥","≤"],r=(e,t,n,r="")=>{for(let o=0;o({inBlockComment:!1}),token:(o,i)=>i.inBlockComment?(o.match(/.*?\*\//,!0)?i.inBlockComment=!1:o.match(/.*/,!0),"comment"):o.match(/\/\*.*?\*\//,!0)?"comment":!i.inBlockComment&&o.match(/^\/\*.*/,!0)?(i.inBlockComment=!0,"comment"):i.inInlineRelation?(o.match(/.*?}/,!0)?i.inInlineRelation=!1:o.match(/.*/,!0),"inlineRelation"):o.match(/^{/,!0)?(i.inInlineRelation=!0,"inlineRelation"):o.match(/^--[\t ]/,!0)?(o.skipToEnd(),"comment"):o.match(/^\/\*.*?$/,!0)?"comment":r(o,t,!0)?"keyword math":r(o,e,!0,"([\\(\\)[\\]{\\}, \\.\\t]|$)")?"keyword":r(o,n,!0)?"operator math":o.match(/^\[[0-9]+]/,!0)?"attribute":o.match(/^[0-9]+(\.[0-9]+)?/,!0)?"number":o.match(/\^'[^']*'/i,!0)?"string":o.match(/\^[a-z]+\.[a-z]*/i,!0)?"qualified-column":o.match(/^[\(\)\[]\{},]/i,!0)?"bracket":o.match(/^[a-z][a-z0-9\.]*/i,!0)?"word":(o.next(),"else")}}));const E=e=>{const{editor:t}=e,{type:n,message:r,position:o}=e.alert,i={error:Object(s.d)("editor.alert-message-headers.error"),warning:Object(s.d)("editor.alert-message-headers.warning")}[n];return h.createElement("div",{className:l("alert ",{"alert-danger":"error"===n,"alert-warning":"warning"===n})},o?h.createElement("strong",null,i,": ",h.createElement("a",{onClick:e=>{if(t)return t.focus(),t.getDoc().setCursor(o),t.scrollIntoView(null,42),e.preventDefault(),!1;console.warn("editor not initialized yet")},href:"#"},Object(s.d)("editor.error-at-line-x",{line:o.line+1})),": ",r):h.createElement("strong",null,i,": ",r))};class j{constructor(){this.name="",this.type="",this.data=[]}}class C{constructor(){this.name="",this.attributes=[]}toString(e){let t="";t=!1===e?this.name+" = {\n":"{ ";const n=new Array;for(let e=0;e<1+this.attributes[0].data.length;e++)n.push("");return this.attributes.forEach((e,t)=>{t>0&&(n[0]+=", "),n[0]+=e.name,e.data.forEach((r,o)=>{t>0&&(n[o+1]+=", "),"number"===e.type?n[o+1]+=r:n[o+1]+="'"+r+"'"})}),t+=n.join("\n"),t+="\n}\n",t}fromTableData(e){if(null==e)return;const t=new Array;t.push([]),t.push([]),e.columns.forEach(e=>{t[0].push(e.name),t[1].push(e.type)}),e.rows.forEach(e=>{t.push(e)}),this.fromData(t)}toData(){const e=new Array;if(0===this.attributes.length)return[[]];for(let t=0;t<2+this.attributes[0].data.length;t++)e.push([]);return this.attributes.forEach(t=>{e[0].push(t.name),e[1].push(t.type),t.data.forEach((t,n)=>{e[n+2].push(t)})}),e}fromData(e){for(let t=0;t{const r=new Array,i=e.split(t);-1===o&&(o=i.length),i.length===o&&(i.forEach(e=>{r.push(e)}),n.push(r))}),this.fromData(n)}toCSV(e=";"){let t="";return this.toData().forEach(n=>{t+=n.join(e)+"\n"}),t}}const S="CodeMirror-table-edit-markers";class O extends h.Component{constructor(e){super(e);const t=Object.assign({theme:"eclipse",smartdent:!0,tabSize:2,indentWithTabs:!0,lineNumbers:!0,lineWrapping:!0,matchBrackets:!0,autoCloseBrackets:!0,smartIndent:!0,autofocus:!1,autoRefresh:!0,enableInlineRelationEditor:!0,gutters:["CodeMirror-lint-markers",S],mode:e.mode,viewportMargin:1/0,extraKeys:{"Shift-Tab":"indentLess","Ctrl-Enter":e=>{this.exec(!1)},"Shift-Ctrl-Enter":e=>{const{editor:t}=this.state;t&&t.getDoc().somethingSelected()&&this.exec(!0)},"Ctrl-S":e=>{this.downloadEditorText()},"Ctrl-Space":e=>{u.showHint(e,e=>this.genericHint(e),{closeOnUnfocus:!0})}},placeholder:Object(s.d)("editor.codemirror-placeholder"),textChange:null},e.codeMirrorOptions);this.hotTableSettings={colHeaders:!1,rowHeaders:function(e){return 0===e?Object(s.d)("calc.editors.ra.inline-editor.row-name"):1===e?Object(s.d)("calc.editors.ra.inline-editor.row-type"):e-1},height:function(){return.7*document.body.clientHeight},fixedRowsTop:2,minRows:2,minCols:1,minSpareRows:1,minSpareCols:1,colWidths:"100px",contextMenu:!0,cells:function(e,t){return 1===e?{type:"dropdown",source:["number","string","date"]}:{}}},this.state={editor:null,codeMirrorOptions:t,history:[],isSelectionSelected:!1,execSuccessful:!1,execErrors:[],isExecutionDisabled:!1,execResult:null,modal:!1,inlineRelationModal:!1,relationEditorName:"",replSelStart:null,replSelEnd:null},this.toggle=this.toggle.bind(this),this.inlineRelationEditorOk=this.inlineRelationEditorOk.bind(this),this.toggleInlineRelationEditor=this.toggleInlineRelationEditor.bind(this),this.inlineRelationEditorClose=this.inlineRelationEditorClose.bind(this),this.inlineRelationEditorUpload=this.inlineRelationEditorUpload.bind(this),this.inlineRelationEditorDownload=this.inlineRelationEditorDownload.bind(this),this.hinterCache={hints:[],hintsFromLinter:[],changed:!0},this.linter=this.linter.bind(this),this.exec=this.exec.bind(this),this.applyHistory=this.applyHistory.bind(this),this.downloadEditorText=this.downloadEditorText.bind(this),this.uploadCSVRef=h.createRef()}getInlineRelationData(){return this.hotTableSettings.data}setInlineRelationData(e){this.hotTableSettings.datta=e}inlineRelationEditorOpen(e){const t=new C,{editor:n}=this.state;if(n){let r=n.getDoc().getCursor(),o=n.getDoc().getCursor();e?(t.name=e.assignmentName,t.fromTableData(e.content),r=u.Pos(e.line-1,0),o=u.Pos(e.end.line,e.end.column)):(t.attributes.push(new j),t.attributes.push(new j)),this.setState({inlineRelationModal:!0,relationEditorName:t.name,replSelStart:r,replSelEnd:o},()=>{this.hotTableSettings.data=t.toData()})}}inlineRelationEditorOk(){const e=new C;e.name=this.state.relationEditorName,e.fromData(this.getInlineRelationData());const{editor:t,replSelStart:n,replSelEnd:r}=this.state;t&&t.getDoc().replaceRange(e.toString("relalg"===this.props.tab),n,r),this.inlineRelationEditorClose()}inlineRelationEditorClose(){this.setState({inlineRelationModal:!1})}inlineRelationEditorUpload(e){const t=e.target.files;if(t.length>0){const e=new FileReader;e.onload=e=>{const n=e.target.result,r=new C;r.fromCSV(n),r.name=t[0].name.replace(".csv",""),this.setInlineRelationData(r.toData())},e.readAsText(t[0])}}inlineRelationEditorDownload(){const e=new C;e.fromData(this.getInlineRelationData());const t=e.toCSV(),n=(document.createElement("a"),document.createElement("a"));n.href=window.URL.createObjectURL(new Blob([t],{type:"text/csv"})),n.download=this.state.relationEditorName+".csv",n.click()}componentDidMount(){const e=Object(f.findDOMNode)(this).querySelector("textarea");if(!e)throw new Error("could not fid textarea");const t=u.fromTextArea(e,this.state.codeMirrorOptions);this.setState({editor:t,relationEditorName:""}),null!=this.props.linterFunction&&t.setOption("lint",{getAnnotations:this.linter}),t.on("cursorActivity",e=>{this.setState({isSelectionSelected:e.getDoc().somethingSelected()})}),t.on("change",e=>{this.props.textChange(e)})}render(){const{execErrors:e,isSelectionSelected:t,editor:n,history:u,execSuccessful:c,isExecutionDisabled:d,execResult:f}=this.state,{toolbar:m,disableHistory:j=!1,execButtonLabel:C}=this.props;return h.createElement("div",null,h.createElement("div",{className:"editor-base"},h.createElement(a.a,{groups:m}),h.createElement("textarea",null),h.createElement("div",{className:"exec-errors"},e.map((e,t)=>h.createElement(E,{key:t,alert:e,editor:n}))),h.createElement("div",{className:"input-buttons"},h.createElement("button",{type:"button",disabled:d,className:l("btn btn-primary exec-button selection",{"selection-selected":t,"btn-danger":e.length>0,"btn-success":c,disabled:d}),onClick:()=>{n?this.exec(n.getDoc().somethingSelected()):console.warn("editor not initialized yet")}},C?h.createElement("span",null,h.createElement(o.a,{icon:r.o})," ",h.createElement(s.b,{id:C})):h.createElement(h.Fragment,null,h.createElement("span",{className:"glyphicon glyphicon-play"})," ",h.createElement("span",{className:"query"},h.createElement(o.a,{icon:r.n})," ",h.createElement(s.b,{id:"calc.editors.ra.button-execute-query"})),h.createElement("span",{className:"selection"},h.createElement(s.b,{id:"calc.editors.ra.button-execute-selection"})))),h.createElement("div",{style:{float:"right"}},h.createElement(p.a,{color:"Link",type:"button",className:"hideOnSM",onClick:this.downloadEditorText},h.createElement(o.a,{icon:r.h})," ",h.createElement("span",{className:"hideOnSM"},h.createElement(s.b,{id:"calc.editors.ra.button-download"}))),j?null:h.createElement("div",{className:"btn-group history-container"},h.createElement(i.a,{label:h.createElement("span",null,h.createElement(o.a,{icon:r.k})," ",h.createElement("span",{className:"hideOnSM"},h.createElement(s.b,{id:"calc.editors.button-history"}))),elements:u.map(e=>({label:h.createElement(h.Fragment,null,h.createElement("small",{className:"muted text-muted"},e.time.toLocaleTimeString()),h.createElement("div",null,e.code)),value:e})),onChange:this.applyHistory})))),h.createElement("div",{className:"exec-result"},f),h.createElement(g.a,{isOpen:this.state.modal,toggle:this.toggle,className:"showOnSM"},h.createElement(y.a,{toggle:this.toggle},Object(s.d)("calc.result.modal.title")),h.createElement(b.a,null,h.createElement("div",null,f)),h.createElement(v.a,null,h.createElement("span",null),h.createElement(p.a,{color:"secondary",onClick:this.toggle},Object(s.d)("calc.result.modal.close")))),h.createElement(g.a,{isOpen:this.state.inlineRelationModal,toggle:this.toggleInlineRelationEditor},h.createElement(y.a,{toggle:this.toggleInlineRelationEditor},Object(s.d)("calc.editors.ra.inline-editor.title")),h.createElement(b.a,null,h.createElement("div",null,"group"===this.props.tab?h.createElement("div",null,h.createElement(_.a,{placeholder:Object(s.d)("calc.editors.ra.inline-editor.input-relation-name"),value:this.state.relationEditorName,onChange:e=>{this.setState({relationEditorName:e.target.value})}}),h.createElement("br",null)):null,h.createElement(w.a,{settings:this.hotTableSettings,licenseKey:"non-commercial-and-evaluation"}))),h.createElement(v.a,null,h.createElement(p.a,{color:"light",onClick:this.inlineRelationEditorDownload},h.createElement(o.a,{icon:r.h})," ",Object(s.d)("calc.editors.ra.inline-editor.button-download-csv")),h.createElement(p.a,{color:"light",onClick:()=>{var e;null===(e=this.uploadCSVRef.current)||void 0===e||e.click()}},h.createElement(o.a,{icon:r.s})," ",Object(s.d)("calc.editors.ra.inline-editor.button-upload-csv")),h.createElement("input",{className:"hidden",ref:this.uploadCSVRef,onChange:this.inlineRelationEditorUpload,type:"file"}),h.createElement("span",{className:"flexSpan"}),h.createElement(p.a,{color:"primary",onClick:this.inlineRelationEditorOk},h.createElement(o.a,{icon:r.e})," ",Object(s.d)("calc.editors.ra.inline-editor.button-ok")),h.createElement(p.a,{color:"secondary",onClick:this.inlineRelationEditorClose},h.createElement(o.a,{icon:r.r})," ",Object(s.d)("calc.editors.ra.inline-editor.button-cancel"))))))}isMobile(){return window.innerWidth<=992}toggleInlineRelationEditor(){this.setState({inlineRelationModal:!this.state.inlineRelationModal})}toggle(){this.isMobile()&&this.setState({modal:!this.state.modal})}applyHistory(e){this.replaceAll(e.code)}forceLinterRun(){const{editor:e}=this.state;if(!e)return void console.warn("editor not initialized yet");const t=e.getValue();e.setValue(""),e.setValue(t)}historyAddEntry(e){const{historyMaxEntries:t=10,historyMaxLabelLength:n=20}=this.props,r={time:new Date,label:e.length>n?e.substr(0,n-4)+" ...":e,code:e};this.setState({history:[r,...this.state.history].slice(-t)})}clearExecutionAlerts(){this.state.execErrors.splice(0,this.state.execErrors.length),m.b.dismiss()}addExecutionWarning(e,t){this._addExecutionAlert(e,t,"warning"),this.isMobile()&&m.b.warn(e,{className:"fancyToastWarning"})}addExecutionError(e,t){this._addExecutionAlert(e,t,"error"),this.isMobile()&&m.b.error(e,{className:"fancyToastError"})}_addExecutionAlert(e,t,n){this.isMobile();const{editor:r}=this.state,o={type:n,message:e,position:t},i=this.state.execErrors;i.push(o),this.setState({execErrors:i})}setText(e,t){const{editor:n}=this.state;n?("selection"===t?n.getDoc().replaceSelection(e,"end"):n.setValue(e),this.clearExecutionAlerts(),this.setState({execSuccessful:!1})):console.warn("editor not initialized yet")}getText(){const{editor:e}=this.state;if(e)return e.getValue();console.warn("editor not initialized yet")}focus(){const{editor:e}=this.state;e?e.focus():console.warn("editor not initialized yet")}refresh(){const{editor:e}=this.state;e?e.refresh():console.warn("editor not initialized yet")}downloadEditorText(){let e="query";const{editor:t}=this.state;if(!t)return void console.warn("editor not initialized yet");switch(t.getOption("mode")){case"sql":case"text/x-mysql":e+=".sql";break;case"ra":default:e+=".txt"}((e,t)=>{const n=document.createElement("a");n.href=window.URL.createObjectURL(new Blob([t],{type:"text/plain"})),n.download=e,n.click()})(e,t.getValue())}resetHinter(){this.hinterCache={hints:[],hintsFromLinter:[],changed:!0}}linter(t){const{editor:n}=this.state;if(!n)return console.warn("editor not initialized yet"),[];if(0===t.length||!this.props.linterFunction)return[];try{const e=this.props.linterFunction(this,n,t);return 0===e.length&&0===this.hinterCache.hintsFromLinter.length||(this.hinterCache.hintsFromLinter=e,this.hinterCache.changed=!0),[]}catch(t){const r=[];console.log(t);const o=O._generateErrorFromException(t,0,0),i=e("").append(o.message).text();if(!o.codemirrorPositions)return this.clearExecutionAlerts(),this.addExecutionError(i),[];const a=o.codemirrorPositions.from;let s=o.codemirrorPositions.to;const l=n.getTokenAt({line:a.line,ch:a.ch+1},!0),u=n.getDoc().getRange(a,s);return void 0!==l.string&&l.string.length>u.length&&(s=n.getDoc().posFromIndex(n.getDoc().indexFromPos(a)+l.string.length)),r.push({from:a,to:s,message:i,severity:"error"}),this.props.enableInlineRelationEditor&&this.clearInlineRelationMarkers(),r}}genericHint(e){const{getHintsFunction:t}=this.props,n=e.getDoc().getCursor(),r=e.getTokenAt(n),o=(e,t="unknown")=>({text:e,displayText:e,className:`hint-${t}`});let i=[];if(!0===this.hinterCache.changed){const e={},n=t?t():[];for(let t=0;t0)for(let e=0;es.length&&0===t.indexOf(s)&&a.push(i[e])}else a=i;return{list:a,from:u.Pos(n.line,r.start),to:u.Pos(n.line,r.end)}}exec(e){const{editor:t}=this.state;if(!t)throw new Error("editor not initialized yet");this.setState({execResult:h.createElement("div",{className:"spinner"},h.createElement("div",{className:"rect1"}),h.createElement("div",{className:"rect2"}),h.createElement("div",{className:"rect3"}),h.createElement("div",{className:"rect4"}),h.createElement("div",{className:"rect5"}))},()=>{this.clearExecutionAlerts();let n="",r={line:0,ch:0};!0!==e?n=t.getValue():(n=t.getDoc().getSelection(),r=t.getDoc().getCursor("from")),0===n.length&&(this.clearExecutionAlerts(),this.addExecutionError(Object(s.d)("editor.error-no-query-found"))),this.clearExecutionAlerts();try{const{result:e}=this.props.execFunction(this,n,r);this.setState({execResult:e});const t=new CustomEvent("editor.execSuccessful",{detail:{editor:this}});return document.dispatchEvent(t),this.toggle(),!0}catch(e){console.error(e,e.stack);const t=O._generateErrorFromException(e,r.line,r.ch);this.addExecutionError(t.message,t.codemirrorPositions?t.codemirrorPositions.from:void 0),this.props.enableInlineRelationEditor&&this.clearInlineRelationMarkers()}})}static _generateErrorFromException(e,t,n){let r=void 0!==e.message?e.message:e;r=r.replace(/(\\(u|x)[0-9A-F]+)/g,(e,t)=>`${String.fromCharCode(parseInt(t.substr(2),16))}`);let o=null;void 0!==e.codeInfo&&void 0!==e.codeInfo.location?o=e.codeInfo.location:void 0!==e.location&&(o=e.location);let i=null;return null!==o&&(i={from:{line:o.start.line+(t||0)-1,ch:o.start.column+(n||0)-1},to:{line:o.end.line+(t||0)-1,ch:o.end.column+(n||0)-1}}),{message:r,location:o,codemirrorPositions:i}}static buildTranslatedPegJsMessage(e,t){return null!==e&&function(e){let t=1;for(e.sort((e,t)=>e.descriptiont.description?1:0);t1?`${n.slice(0,-1).join(", ")} ${Object(s.d)("editor.pegjs-error.or")} ${n[e.length-1]}`:n[0],o=t?`"${function(e){function t(e){return e.charCodeAt(0).toString(16).toUpperCase()}return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,(function(e){return"\\x0"+t(e)})).replace(/[\x10-\x1F\x80-\xFF]/g,(function(e){return"\\x"+t(e)})).replace(/[\u0180-\u0FFF]/g,(function(e){return"\\u0"+t(e)})).replace(/[\u1080-\uFFFF]/g,(function(e){return"\\u"+t(e)}))}(t)}"`:Object(s.d)("editor.pegjs-error.end-of-input");return Object(s.d)("editor.pegjs-error.expected-found",{expected:r,found:o})}(e,t)}setExecutionDisabled(e){this.setState({isExecutionDisabled:e})}replaceText(e,t){const n="string"==typeof e.label?e.label:"";this.replaceSelection(n,t)}replaceSelection(e,t){this.setText(t||e,"selection"),this.focus()}replaceAll(e,t){this.setText(t||e,"all"),this.focus()}setReadOnly(t){const{editor:n}=this.state;if(!n)throw new Error("editor not initialized yet");const r=e(n.getWrapperElement());!1===t?(n.setOption("readOnly",!1),r.removeClass("readonly")):(n.setOption("readOnly","nocursor"),r.addClass("readonly"))}addInlineRelationMarkers(e){const{editor:t}=this.state;if(!t)return void console.warn("editor not initialized yet");const n=function(e){const t=[];return Object(d.a)(e,e=>{const n=e;if(n&&"table"===n.type){const e={name:n.name,line:n.codeInfo.location.start.line-1,column:n.codeInfo.location.start.column-1,length:n.codeInfo.text.length,assignmentName:n.assignmentName?n.assignmentName:"",content:{columns:n.columns,rows:n.rows},start:n.codeInfo.location.start,end:n.codeInfo.location.end};t.push(e)}}),t}(e);this.clearInlineRelationMarkers();for(let e=0;e{this.inlineRelationEditorOpen(n[e])},f.render(h.createElement(o.a,{icon:r.q}),i,()=>{i.style.marginLeft="-15px",t.setGutterMarker(n[e].line++,S,i)})}}clearInlineRelationMarkers(){const{editor:e}=this.state;e?e.clearGutter(S):console.warn("editor not initialized yet")}}function k(e){const t=[],n=function(e){const r=e.getSchema();for(let e=0;e-1&&!this.props.autohide&&(this._hideTimeout&&this.clearHideTimeout(),this.state.isOpen&&!this.props.isOpen&&this.toggle())},n.onMouseLeaveTooltipContent=function(e){this.props.trigger.indexOf("hover")>-1&&!this.props.autohide&&(this._showTimeout&&this.clearShowTimeout(),e.persist(),this._hideTimeout=setTimeout(this.hide.bind(this,e),this.getDelay("hide")))},n.onEscKeyDown=function(e){"Escape"===e.key&&this.hide(e)},n.getRef=function(e){var t=this.props.innerRef;t&&("function"==typeof t?t(e):"object"==typeof t&&(t.current=e)),this._popover=e},n.getDelay=function(e){var t=this.props.delay;return"object"==typeof t?isNaN(t[e])?S[e]:t[e]:t},n.show=function(e){if(!this.props.isOpen){if(this.clearShowTimeout(),this.currentTargetElement=e?e.currentTarget||e.target:null,e&&e.composedPath&&"function"==typeof e.composedPath){var t=e.composedPath();this.currentTargetElement=t&&t[0]||this.currentTargetElement}this.toggle(e)}},n.showWithDelay=function(e){this._hideTimeout&&this.clearHideTimeout(),this._showTimeout=setTimeout(this.show.bind(this,e),this.getDelay("show"))},n.hide=function(e){this.props.isOpen&&(this.clearHideTimeout(),this.currentTargetElement=null,this.toggle(e))},n.hideWithDelay=function(e){this._showTimeout&&this.clearShowTimeout(),this._hideTimeout=setTimeout(this.hide.bind(this,e),this.getDelay("hide"))},n.clearShowTimeout=function(){clearTimeout(this._showTimeout),this._showTimeout=void 0},n.clearHideTimeout=function(){clearTimeout(this._hideTimeout),this._hideTimeout=void 0},n.handleDocumentClick=function(e){var t=this.props.trigger.split(" ");t.indexOf("legacy")>-1&&(this.props.isOpen||T(e.target,this._targets))?(this._hideTimeout&&this.clearHideTimeout(),this.props.isOpen&&!k(e.target,this._popover)?this.hideWithDelay(e):this.props.isOpen||this.showWithDelay(e)):t.indexOf("click")>-1&&T(e.target,this._targets)&&(this._hideTimeout&&this.clearHideTimeout(),this.props.isOpen?this.hideWithDelay(e):this.showWithDelay(e))},n.addEventOnTargets=function(e,t,n){this._targets.forEach((function(r){r.addEventListener(e,t,n)}))},n.removeEventOnTargets=function(e,t,n){this._targets.forEach((function(r){r.removeEventListener(e,t,n)}))},n.addTargetEvents=function(){if(this.props.trigger){var e=this.props.trigger.split(" ");-1===e.indexOf("manual")&&((e.indexOf("click")>-1||e.indexOf("legacy")>-1)&&document.addEventListener("click",this.handleDocumentClick,!0),this._targets&&this._targets.length&&(e.indexOf("hover")>-1&&(this.addEventOnTargets("mouseover",this.showWithDelay,!0),this.addEventOnTargets("mouseout",this.hideWithDelay,!0)),e.indexOf("focus")>-1&&(this.addEventOnTargets("focusin",this.show,!0),this.addEventOnTargets("focusout",this.hide,!0)),this.addEventOnTargets("keydown",this.onEscKeyDown,!0)))}},n.removeTargetEvents=function(){this._targets&&(this.removeEventOnTargets("mouseover",this.showWithDelay,!0),this.removeEventOnTargets("mouseout",this.hideWithDelay,!0),this.removeEventOnTargets("keydown",this.onEscKeyDown,!0),this.removeEventOnTargets("focusin",this.show,!0),this.removeEventOnTargets("focusout",this.hide,!0)),document.removeEventListener("click",this.handleDocumentClick,!0)},n.updateTarget=function(){var e=Object(b.i)(this.props.target,!0);e!==this._targets&&(this.removeTargetEvents(),this._targets=e?Array.from(e):[],this.currentTargetElement=this.currentTargetElement||this._targets[0],this.addTargetEvents())},n.toggle=function(e){return this.props.disabled||!this._isMounted?e&&e.preventDefault():this.props.toggle(e)},n.render=function(){if(!this.props.isOpen)return null;this.updateTarget();var e=this.props,t=e.className,n=e.cssModule,r=e.innerClassName,o=e.isOpen,s=e.hideArrow,l=e.boundariesElement,u=e.placement,c=e.placementPrefix,d=e.arrowClassName,h=e.popperClassName,f=e.container,m=e.modifiers,p=e.offset,g=e.fade,y=e.flip,v=Object(b.l)(this.props,Object.keys(C)),_=Object(b.k)(h,n),w=Object(b.k)(r,n);return i.a.createElement(j,{className:t,target:this.currentTargetElement||this._targets[0],isOpen:o,hideArrow:s,boundariesElement:l,placement:u,placementPrefix:c,arrowClassName:d,popperClassName:_,container:f,modifiers:m,offset:p,cssModule:n,fade:g,flip:y},i.a.createElement("div",Object(a.a)({},v,{ref:this.getRef,className:w,role:"tooltip",onMouseOver:this.onMouseOverTooltipContent,onMouseLeave:this.onMouseLeaveTooltipContent,onKeyDown:this.onEscKeyDown})))},t}(i.a.Component);M.propTypes=C,M.defaultProps=O;var x=M,R=function(e){var t=l()("popover","show",e.popperClassName),n=l()("popover-inner",e.innerClassName);return i.a.createElement(x,Object(a.a)({},e,{popperClassName:t,innerClassName:n}))};R.propTypes=C,R.defaultProps={placement:"right",placementPrefix:"bs-popover",trigger:"click"};var L=R,A={tag:b.o,className:h.a.string,cssModule:h.a.object},D=function(e){var t=e.className,n=e.cssModule,r=e.tag,o=Object(f.a)(e,["className","cssModule","tag"]),s=Object(b.k)(l()(t,"popover-header"),n);return i.a.createElement(r,Object(a.a)({},o,{className:s}))};D.propTypes=A,D.defaultProps={tag:"h3"};var N=D,P={tag:b.o,className:h.a.string,cssModule:h.a.object},I=function(e){var t=e.className,n=e.cssModule,r=e.tag,o=Object(f.a)(e,["className","cssModule","tag"]),s=Object(b.k)(l()(t,"popover-body"),n);return i.a.createElement(r,Object(a.a)({},o,{className:s}))};I.propTypes=P,I.defaultProps={tag:"div"};var H=I;class Y extends o.Component{constructor(e){super(e),this.body=Object(r.a)((e,t)=>!1===t?null:"function"==typeof e?e():e),this.state={id:"popWrapper_"+Math.random().toString(36).substr(2),isOpen:!1},this.hoverOpen=this.hoverOpen.bind(this),this.hoverClose=this.hoverClose.bind(this),this.handleClick=this.handleClick.bind(this),this.open=this.open.bind(this),this.close=this.close.bind(this)}componentWillUnmount(){this.close()}open(){this.setState({isOpen:!0}),document.addEventListener("click",this.close)}close(e){if(e){const{target:t}=e;if(t instanceof Element&&null!==t.closest(".popover__inside"))return}this.setState({isOpen:!1}),document.removeEventListener("click",this.close)}hoverOpen(){const{trigger:e}=this.props;("hover"===e||Array.isArray(e)&&e.includes("hover"))&&this.open()}hoverClose(){const{trigger:e}=this.props;("hover"===e||Array.isArray(e)&&e.includes("hover"))&&this.close()}handleClick(e){const{trigger:t,onClick:n}=this.props;if(n&&n(e),"click"===t||Array.isArray(t)&&t.includes("click")){const{isOpen:e}=this.state;e?this.close():this.open()}}render(){const{id:e,isOpen:t}=this.state,{title:n,className:r=""}=this.props,i=this.body(this.props.body,t);return o.createElement(o.Fragment,null,o.createElement("div",{onMouseEnter:this.hoverOpen,onMouseLeave:this.hoverClose,onFocus:this.hoverOpen,onBlur:this.hoverClose,onClick:this.handleClick,id:e,className:`popover__outside ${r}`},o.Children.only(this.props.children),o.createElement(L,{target:`#${e}`,isOpen:t,className:`popover__inside ${r}`},o.createElement(N,null,n),o.createElement(H,null,i))))}}},"./src/calc2/components/raTree.scss":function(e,t,n){},"./src/calc2/components/result.scss":function(e,t,n){},"./src/calc2/components/toolbar.scss":function(e,t,n){},"./src/calc2/components/toolbar.tsx":function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n("./src/calc2/components/dropdownList.tsx"),o=n("./src/calc2/components/popover.tsx"),i=n("./src/calc2/i18n.tsx"),a=n("./node_modules/react/index.js");n("./src/calc2/components/toolbar.scss");class s extends a.Component{render(){const{groups:e}=this.props;return a.createElement("div",{className:"toolbar codemirror-toolbar"},e.map((e,t)=>e.items.map((e,t)=>a.createElement(o.a,{key:t,trigger:["hover","focus"],placement:"dropdown"===e.type?"top":"bottom",title:e.tooltipTitle?String(Object(i.d)(e.tooltipTitle)):"",body:a.createElement(i.b,{id:e.tooltip,html:!0}),className:("dropdown"===e.type?"toolbar__popover__dropdown":"toolbar__popover")+" "+(void 0===e.className?"":e.className)},"dropdown"===e.type?a.createElement(r.a,{label:e.label,elements:e.elements,onChange:e.onChange,value:e.value}):a.createElement("span",{onClick:t=>{t.preventDefault(),t.stopPropagation(),e.onClick(e)}},e.label)))))}}},"./src/calc2/data/uibk.txt":function(e,t,n){"use strict";n.r(t),t.default="group: UIBK - R, S, T\ndescription: Tables from and for the lecture [Databases: Foundations, Data Models and System Concepts - University of Innsbruck](http://dbis-informatik.uibk.ac.at/249-0-VO-Datenbanksysteme.html) chapter 3 \ncategory@de:Universität Innsbruck\ncategory@en:University of Innsbruck\n\nR = {\na, b, c\n\n1, 'a', 'd'\n3, 'c', 'c'\n4, 'd', 'f'\n5, 'd', 'b'\n6, 'e', 'f'\n}\n\nS = {\nb, d\n\n'a', 100\n'b', 300\n'c', 400\n'd', 200\n'e', 150\n}\n\nT = {\nb, d\n\n'a', 100\n'd', 200\n'f', 400\n'g', 120\n}\n\ngroup: Kemper Datenbanksysteme\ndescription: Source: [Alfons Kemper, André Eickler: Datenbanksysteme: Eine Einführung 8. Auflage](http://www3.in.tum.de/teaching/bookDBMSeinf/), Seite 84, Abbildung 3.8\n\nProfessoren = {\nPersNr:number\tName:string\tRang:string\tRaum:number\n2125\tSokrates\tC4\t226\n2126\tRussel\tC4\t232\n2127\tKopernikus\tC3\t310\n2133\tPopper\tC3\t52\n2134\tAugustinus\tC3\t309\n2136\tCurie\tC4\t36\n2137\tKant\tC4\t7\n}\n\nStudenten = {\nMatrNr:number\tName:string\tSemester:number\n24002\tXenokrates\t18\n25403\tJonas\t12\n26120\tFichte\t10\n26830\tAristoxenos\t8\n27550\tSchopenhauer\t6\n28106\tCarnap\t3\n29120\tTheophrastos\t2\n29555\tFeuerbach\t2\n}\n\n\nVorlesungen = {\nVorlNr:number\tTitel:string\tSWS:number\tgelesenVon:number\n5001\tGrundzuege\t4\t2137\n5041\tEthik\t4\t2125\n5043\tErkenntnistheorie\t3\t2126\n5049\tMaeeutik\t2\t2125\n4052\tLogik\t4\t2125\n5052\tWissenschaftstheorie\t3\t2126\n5216\tBioethik\t2\t2126\n5259\t'Der Wiener Kreis'\t2\t2133\n5022\t'Glaube und wissen'\t2\t2134\n4630\t'Glaube und wissen'\t4\t2137\n}\n\nvoraussetzen = {\nVorgaenger:number\tNachfolger:number\n5001\t5041\n5001\t5043\n5001\t5049\n5041\t5216\n5043\t5052\n5041\t5052\n5052\t5259\n}\n\nhoeren = {\nMatrNr:number\tVorlNr:number\n26120\t5001\n27550\t5001\n27550\t4052\n28106\t5041\n28106\t5052\n28106\t5216\n28106\t5259\n29120\t5001\n29120\t5041\n29120\t5049\n29555\t5022\n25403\t5022\n29555\t5001\n}\n\nAssistenten = {\nPersNr:number\tName:string\tFachgebiet:string\tBoss:number\n3002\tPlaton\tIdeenlehre\t2125\n3003\tAristoteles\tSyllogistik\t2125\n3004\tWittgenstein\tSprachtheorie\t2126\n3005\tRhetikus\tPlanetenbewegung\t2127\n3006\tNewton\t'Keplersche Gesetze'\t2127\n3007\tSpinoza\t'Gott und Natur'\t2134\n}\n\npruefen = {\nMatrNr:number\tVorlNr:number\tPersNr:number\tNote:number\n28106\t5001\t2126\t1\n25403\t5041\t2125\t2\n27550\t4630\t2137\t2\n}\n\n\n\ngroup: UIBK - KursDB\ndescription: Tables from and for the lecture [Databases: Foundations, Data Models and System Concepts - University of Innsbruck](http://dbis-informatik.uibk.ac.at/249-0-VO-Datenbanksysteme.html) chapter 3 \n\nKurs = {\nKursNr, Titel\n\nG08, 'Grundlagen I'\nG10, 'Grundlagen II'\nP13, 'C-Programmierung'\nI09, Datenbanken\n}\n\nKursleiter = {\nPersNr, Name, Gehalt\n\n27183, 'Meier, I.', 4300.50\n29594, 'Schulze, H.', 3890.20\n38197, 'Huber, L.', 4200.10\n43325, 'Müller, K.', 3400.80\n}\n\nVorauss = {\nVorNr, KursNr\nG08, P13\nG10, P13\nG08, I09\nG10, I09\nP13, I09\n}\n\nFuehrt_durch = {\nAngNr\tKursNr\tPersNr\n1\tG08\t38197\n2\tG08\t38197\n1\tG10\t43325\n2\tG10\t29594\n1\tP13\t27183\n2\tP13\t27183\n1\tI09\t29594\n2\tI09\t29594\n3\tI09\t29594\n}\n\nTeilnehmer = {\nTnNr, Name, Ort \n143, 'Schmidt, M.', Bremen \n145, 'Huber, Chr.', Augsburg \n146, 'Abele, I.', Senden \n149, 'Kircher, B.', Bochum \n155, 'Meier, W.', Stuttgart \n171, 'Möller, H.', Innsbruck \n173, 'Schulze, B.', Stuttgart \n177, 'Mons, F.', Essen \n185, 'Meier, K.', Heidelberg \n187, 'Karstens, L.', Hamburg \n194, 'Gerstner, M.', Innsbruck \n}\n\nNimmt_teil = {\nAngNr\tKursNr\tTnNr\n2\tG08\t143\n2\tP13\t143\n1\tG08\t145\n1\tP13\t146\n1\tI09\t146\n2\tP13\t149\n1\tI09\t155\n1\tI09\t171\n1\tI09\t173\n2\tP13\t177\n1\tI09\t185\n2\tI09\t187\n1\tP13\t194\n}\n\nAngebot = {\nAngNr\tKursNr\tDatum\tOrt\n1\tG08\t2000-10-13\t'München'\n2\tG08\t2000-11-24\tBremen\n1\tG10\t2000-12-01\t'München'\n2\tG10\t2001-02-15\tHamburg\n1\tP13\t2001-05-28\tInnsbruck\n2\tP13\t2001-07-01\tEssen\n1\tI09\t2001-03-27\tStuttgart\n2\tI09\t2001-04-23\tHamburg\n3\tI09\t2001-05-29\t'München'\n}\n\n\n\ngroup:Database Systems The Complete Book - Exercise 2.4.1\ndescription[[ Sample Data from [Database Systems The Complete Book 2nd Edition](http://infolab.stanford.edu/~ullman/dscb.html) Exercise 2.4.1 Page 52-55 ]]\n\nProduct = {\nmaker\tmodel\ttype\nA\t1001\tpc\nA\t1002\tpc\nA\t1003\tpc\nA\t2004\tlaptop\nA\t2005\tlaptop\nA\t2006\tlaptop\nB\t1004\tpc\nB\t1005\tpc\nB\t1006\tpc\nB\t2007\tlaptop\nC\t1007\tpc\nD\t1008\tpc\nD\t1009\tpc\nD\t1010\tpc\nD\t3004\tprinter\nD\t3005\tprinter\nE\t1011\tpc\nE\t1012\tpc\nE\t1013\tpc\nE\t2001\tlaptop\nE\t2002\tlaptop\nE\t2003\tlaptop\nE\t3001\tprinter\nE\t3002\tprinter\nE\t3003\tprinter\nF\t2008\tlaptop\nF\t2009\tlaptop\nG\t2010\tlaptop\nH\t3006\tprinter\nH\t3007\tprinter\n}\n\nPC = {\nmodel\tspeed\tram\thd\tprice\n1001\t2.66\t1024\t250\t2114\n1002\t2.1\t512\t250\t995\n1003\t1.42\t512\t80\t478\n1004\t2.8\t1024\t250\t649\n1005\t3.2\t512\t250\t630\n1006\t3.2\t1024\t320\t1049\n1007\t2.2\t1024\t200\t510\n1008\t2.2\t2048\t250\t770\n1009\t2\t1024\t250\t650\n1010\t2.8\t2048\t300\t770\n1011\t1.86\t2048\t160\t959\n1012\t2.8\t1024\t160\t649\n1013\t3.06\t512\t80\t529\n}\n\nLaptop = {\nmodel\tspeed\tram\thd\tscreen\tprice\n2001\t2\t2048\t240\t20.1\t3673\n2002\t1.73\t1024\t80\t17\t949\n2003\t1.8\t512\t60\t15.4\t549\n2004\t2\t512\t60\t13.3\t1150\n2005\t2.16\t1024\t120\t17\t2500\n2006\t2\t2048\t80\t15.4\t1700\n2007\t1.83\t1024\t120\t13.3\t1429\n2008\t1.6\t1024\t100\t15.4\t900\n2009\t1.6\t512\t80\t14.1\t680\n2010\t2\t2048\t160\t15.4\t2300\n}\n\nPrinter = {\nmodel\tcolor\ttype\tprice\n3001\ttrue\tink-jet\t99\n3002\tfalse\tlaser\t239\n3003\ttrue\tlaser\t899\n3004\ttrue\tink-jet\t120\n3005\tfalse\tlaser\t120\n3006\ttrue\tink-jet\t100\n3007\ttrue\tlaser\t200\n}\n\ngroup:Database Systems The Complete Book - Exercise 2.4.3\ndescription[[ Sample Data from [Database Systems The Complete Book 2nd Edition](http://infolab.stanford.edu/~ullman/dscb.html) Exercise 2.4.1 Page 55-57 ]]\n\nClasses = {\nclass\ttype\tcountry\tnumGuns\tbore\tdisplacement\nBismarck\tbb\tGermany\t8\t15\t42000\nIowa\tbb\tUSA\t9\t16\t46000\nKongo\tbc\tJapan\t8\t14\t32000\n'North Carolina'\tbb\tUSA\t9\t16\t37000\nRenown\tbc\t'Gt. Britan'\t6\t15\t23000\nRevenge\tbb\t'Gt. Britan'\t8\t15\t29000\nTennessee\tbb\tUSA\t12\t14\t32000\nYamato\tbb\tJapan\t9\t18\t65000\n}\n\nBattles = {\nname\tdate\n'Denmark Strait'\t1941-05-24\nGuadalcanal\t1942-11-15\n'North Cape'\t1943-12-26\n'Surigao Strait'\t1944-10-25\n}\n\nOutcomes = {\nship\tbattle\tresult\nArizona\t'Pearl Harbor'\tsunk\nBismarck\t'Denmark Strait'\tsunk\nCalifornia\t'Surigao Strait'\tok\n'Duke of York'\t'North Cape'\tok\nFuso\t'Surigao Strait'\tsunk\nHood\t'Denmark Strait'\tsunk\n'King George V'\t'Denmark Strait'\tok\nKirishima\tGuadalcanal\tsunk\n'Prince of Wales'\t'Denmark Strait'\tdamaged\nRodney\t'Denmark Strait'\tok\nScharnhorst\t'North Cape'\tsunk\n'South Dakota'\tGuadalcanal\tdamaged\nTennessee\t'Surigao Strait'\tok\nWashington\tGuadalcanal\tok\n'West Virginia'\t'Surigao Strait'\tok\nYamashiro\t'Surigao Strait'\tsunk\n}\n\nShips = {\nname\tclass\tlaunched\nCalifornia\tTennessee\t1921\nHaruna\tKongo\t1915\nHiei\tKongo\t1914\nIowa\tIowa\t1943\nKirishima\tKongo\t1915\nKongo\tKongo\t1913\nMissouri\tIowa\t1944\nMusashi\tYamato\t1942\n'New Jersey'\tIowa\t1943\n'North Carolina'\t'North Carolina'\t1941\nRamillies\tRevenge\t1917\nRenown\tRenown\t1916\nRepulse\tRenown\t1916\nResolution\tRevenge\t1916\nRevenge\tRevenge\t1916\n'Royal Oak'\tRevenge\t1916\n'Royal Sovereign'\tRevenge\t1916\nTennessee\tTennessee\t1920\nWashington\t'North Carolina'\t1941\nWisconsin\tIowa\t1944\nYamato\tYamato\t1941\n}\n\n\ngroup:Wikipedia - Relational algebra (en)\ndescription[[This are the tables from [Relational algebra - Wikipedia The Free Encyclopedia](http://en.wikipedia.org/wiki/Relational_algebra)\n\nlicense: [CC BY-SA](http://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License)]]\n\nEmployee = {\n\tName:string, EmpId:number, DeptName:string\n\t'Harry' , 3415 , 'Finance' \n\t'Sally' , 2241 , 'Sales' \n\t'George' , 3401 , 'Finance' \n\t'Harriet' , 2202 , 'Sales' \n\t'Tim' , 1123 , 'Executive' \n}\n\nDept = {\n\tDeptName:string, Manager:string\n\t'Sales' , 'Harriet' \n\t'Production' , 'Charles' \n}\n\nCompleted = {\n\tStudent:string, Task:string\n\t'Fred' , 'Database1'\n\t'Fred' , 'Database2'\n\t'Fred' , 'Compiler1'\n\t'Eugene' , 'Database1'\n\t'Eugene' , 'Compiler1'\n\t'Sarah' , 'Database1'\n\t'Sarah' , 'Database2'\n}\n\nDBProject = {\n\tTask:string\n\t'Database1'\n\t'Database2'\n}\n\nCar = {\n\tCarModel:string, CarPrice:number\n\t'CarA' , 20000 \n\t'CarB' , 30000 \n\t'CarC' , 50000 \n}\n\nBoat = {\n\tBoatModel:string, BoatPrice:number\n\t'Boat1' , 10000 \n\t'Boat2' , 40000 \n\t'Boat3' , 60000 \n}"},"./src/calc2/i18n.tsx":function(e,t,n){"use strict";n.d(t,"c",(function(){return d})),n.d(t,"d",(function(){return h})),n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return g}));var r=n("./node_modules/i18next/dist/es/index.js"),o=n("./node_modules/i18next-browser-languagedetector/index.js"),i=n("./node_modules/react/index.js"),a=n("./src/locales/de.json"),s=n("./src/locales/en.json"),l=n("./src/locales/es.json"),u=n("./src/locales/kr.json"),c=n("./src/locales/pt.json");const d=r.b(o).init({resources:{en:{translations:s},de:{translations:a},es:{translations:l},kr:{translations:u},pt:{translations:c}},fallbackLng:"en",nsSeparator:":",keySeparator:!1,defaultNS:"translations",debug:!0});function h(e,t){return String(d.t(e,t))}const{Provider:f,Consumer:m}=i.createContext(d),p=e=>i.createElement(f,{value:d},e.children),g=({id:e,html:t=!1})=>i.createElement(m,null,n=>t?i.createElement("span",{dangerouslySetInnerHTML:{__html:String(n.t(e,{interpolation:{escapeValue:!1}}))}}):i.createElement("span",null,String(n.t(e))))},"./src/calc2/main.hot.tsx":function(e,t,n){"use strict";(function(e){var r=n("./src/calc2/main.tsx"),o=n("./node_modules/react-hot-loader/index.js");t.a=Object(o.hot)(e)(r.a)}).call(this,n("./node_modules/webpack/buildin/harmony-module.js")(e))},"./src/calc2/main.tsx":function(e,t,n){"use strict";n.d(t,"a",(function(){return Gn}));n("./node_modules/bootstrap/dist/css/bootstrap.css");var r=n("./src/calc2/i18n.tsx"),o=n("./node_modules/react/index.js"),i=n.n(o),a=n("./node_modules/prop-types/index.js"),s=n.n(a),l=i.a.createContext(null);var u=function(e){e()},c={notify:function(){}};function d(){var e=u,t=null,n=null;return{clear:function(){t=null,n=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],n=t;n;)e.push(n),n=n.next;return e},subscribe:function(e){var r=!0,o=n={callback:e,next:null,prev:n};return o.prev?o.prev.next=o:t=o,function(){r&&null!==t&&(r=!1,o.next?o.next.prev=o.prev:n=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}var h=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=c,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=d())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=c)},e}();var f=function(e){var t=e.store,n=e.context,r=e.children,a=Object(o.useMemo)((function(){var e=new h(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),s=Object(o.useMemo)((function(){return t.getState()}),[t]);Object(o.useEffect)((function(){var e=a.subscription;return e.trySubscribe(),s!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[a,s]);var u=n||l;return i.a.createElement(u.Provider,{value:a},r)},m=n("./node_modules/@babel/runtime/helpers/esm/extends.js"),p=n("./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"),g=n("./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),y=n.n(g),b=n("./node_modules/react-is/index.js"),v="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?o.useLayoutEffect:o.useEffect,_=[],w=[null,null];function E(e,t){var n=e[1];return[t.payload,n+1]}function j(e,t,n){v((function(){return e.apply(void 0,t)}),n)}function C(e,t,n,r,o,i,a){e.current=r,t.current=o,n.current=!1,i.current&&(i.current=null,a())}function S(e,t,n,r,o,i,a,s,l,u){if(e){var c=!1,d=null,h=function(){if(!c){var e,n,h=t.getState();try{e=r(h,o.current)}catch(e){n=e,d=e}n||(d=null),e===i.current?a.current||l():(i.current=e,s.current=e,a.current=!0,u({type:"STORE_UPDATED",payload:{error:n}}))}};n.onStateChange=h,n.trySubscribe(),h();return function(){if(c=!0,n.tryUnsubscribe(),n.onStateChange=null,d)throw d}}}var O=function(){return[null,0]};function k(e,t){void 0===t&&(t={});var n=t,r=n.getDisplayName,a=void 0===r?function(e){return"ConnectAdvanced("+e+")"}:r,s=n.methodName,u=void 0===s?"connectAdvanced":s,c=n.renderCountProp,d=void 0===c?void 0:c,f=n.shouldHandleStateChanges,g=void 0===f||f,v=n.storeKey,k=void 0===v?"store":v,T=(n.withRef,n.forwardRef),M=void 0!==T&&T,x=n.context,R=void 0===x?l:x,L=Object(p.a)(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]),A=R;return function(t){var n=t.displayName||t.name||"Component",r=a(n),s=Object(m.a)({},L,{getDisplayName:a,methodName:u,renderCountProp:d,shouldHandleStateChanges:g,storeKey:k,displayName:r,wrappedComponentName:n,WrappedComponent:t}),l=L.pure;var c=l?o.useMemo:function(e){return e()};function f(n){var r=Object(o.useMemo)((function(){var e=n.forwardedRef,t=Object(p.a)(n,["forwardedRef"]);return[n.context,e,t]}),[n]),a=r[0],l=r[1],u=r[2],d=Object(o.useMemo)((function(){return a&&a.Consumer&&Object(b.isContextConsumer)(i.a.createElement(a.Consumer,null))?a:A}),[a,A]),f=Object(o.useContext)(d),y=Boolean(n.store)&&Boolean(n.store.getState)&&Boolean(n.store.dispatch);Boolean(f)&&Boolean(f.store);var v=y?n.store:f.store,k=Object(o.useMemo)((function(){return function(t){return e(t.dispatch,s)}(v)}),[v]),T=Object(o.useMemo)((function(){if(!g)return w;var e=new h(v,y?null:f.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[v,y,f]),M=T[0],x=T[1],R=Object(o.useMemo)((function(){return y?f:Object(m.a)({},f,{subscription:M})}),[y,f,M]),L=Object(o.useReducer)(E,_,O),D=L[0][0],N=L[1];if(D&&D.error)throw D.error;var P=Object(o.useRef)(),I=Object(o.useRef)(u),H=Object(o.useRef)(),Y=Object(o.useRef)(!1),F=c((function(){return H.current&&u===I.current?H.current:k(v.getState(),u)}),[v,D,u]);j(C,[I,P,Y,u,F,H,x]),j(S,[g,v,M,k,I,P,Y,H,x,N],[v,M,k]);var W=Object(o.useMemo)((function(){return i.a.createElement(t,Object(m.a)({},F,{ref:l}))}),[l,t,F]);return Object(o.useMemo)((function(){return g?i.a.createElement(d.Provider,{value:R},W):W}),[d,W,R])}var v=l?i.a.memo(f):f;if(v.WrappedComponent=t,v.displayName=r,M){var T=i.a.forwardRef((function(e,t){return i.a.createElement(v,Object(m.a)({},e,{forwardedRef:t}))}));return T.displayName=r,T.WrappedComponent=t,y()(T,t)}return y()(v,t)}}function T(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function M(e,t){if(T(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function B(e,t){return e===t}function U(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?k:n,o=t.mapStateToPropsFactories,i=void 0===o?N:o,a=t.mapDispatchToPropsFactories,s=void 0===a?D:a,l=t.mergePropsFactories,u=void 0===l?I:l,c=t.selectorFactory,d=void 0===c?F:c;return function(e,t,n,o){void 0===o&&(o={});var a=o,l=a.pure,c=void 0===l||l,h=a.areStatesEqual,f=void 0===h?B:h,g=a.areOwnPropsEqual,y=void 0===g?M:g,b=a.areStatePropsEqual,v=void 0===b?M:b,_=a.areMergedPropsEqual,w=void 0===_?M:_,E=Object(p.a)(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),j=W(e,i,"mapStateToProps"),C=W(t,s,"mapDispatchToProps"),S=W(n,u,"mergeProps");return r(d,Object(m.a)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:j,initMapDispatchToProps:C,initMergeProps:S,pure:c,areStatesEqual:f,areOwnPropsEqual:y,areStatePropsEqual:v,areMergedPropsEqual:w},E))}}var z=U();var V,q=n("./node_modules/react-dom/index.js");V=q.unstable_batchedUpdates,u=V;var G=n("./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js");function K(e){return"/"===e.charAt(0)}function X(e,t){for(var n=t,r=n+1,o=e.length;r=0;c--){var d=o[c];"."===d?X(o,c):".."===d?(X(o,c),u++):u&&(X(o,c),u--)}if(!s)for(;u--;u)o.unshift("..");!s||""===o[0]||o[0]&&K(o[0])||o.unshift("");var h=o.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function J(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var Q=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=J(t),o=J(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var Z=function(e,t){if(!e)throw new Error("Invariant failed")};function ee(e){return"/"===e.charAt(0)?e:"/"+e}function te(e){return"/"===e.charAt(0)?e.substr(1):e}function ne(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function re(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function oe(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function ie(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(m.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=$(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function ae(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,r):n.push(r),c({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=ie(e,t,d(),y.location);u.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(y.entries[y.index]=r,c({action:"REPLACE",location:r}))}))},go:g,goBack:function(){g(-1)},goForward:function(){g(1)},canGo:function(e){var t=y.index+e;return t>=0&&t=0&&t<=r),active:e===t},o.createElement(ct,{onClick:()=>this.setPage(t)},t+1)));return o.createElement("ul",{className:"pagination"},o.createElement(st,{disabled:0===e},o.createElement(ct,{previous:!0,onClick:()=>this.setPage(e-1)})),i,o.createElement(st,{disabled:e+1>=r},o.createElement(ct,{next:!0,onClick:()=>this.setPage(e+1)})))}}var ht=n("./src/db/exec/ValueExpr.ts");n("./src/calc2/components/pagedTable.scss");class ft extends o.Component{constructor(e){super(e),this.state={page:0}}render(){const{table:e,maxLinesPerPage:t,showPagination:n=!0,className:r=""}=this.props,{page:i}=this.state,a=e.getSchema();return o.createElement("div",{className:"result-table pagedTable"},o.createElement("table",{className:r},o.createElement("thead",null,o.createElement("tr",null,a.getColumns().map((e,t)=>o.createElement("th",{key:t},e.toString())))),o.createElement("tbody",null,e.getRows(i*t,t).map((e,t)=>o.createElement("tr",{key:`row ${t}`},e.map((e,t)=>{const n=a.getType(t);return o.createElement("td",{key:`value ${t}`,className:`${n} ${null===e?"null":""}`},Object(ht.d)(e,n))}))))),n?o.createElement("div",{className:"pagination"},o.createElement(dt,{total:e.getNumRows(),maxLinesPerPage:t,pageChanged:e=>this.setState({page:e}),currentPage:i})):null)}}var mt=n("./src/calc2/components/popover.tsx"),pt=n("./src/db/exec/RANode.ts");n("./src/calc2/components/raTree.scss");class gt extends o.Component{constructor(e){super(e)}render(){const{root:e,numTreeLabelColors:t=0,activeNode:n,setActiveNode:r}=this.props;let i=0;const a=new Map,s=e=>{const l=e instanceof pt.c||e instanceof pt.a?s(e.getChild()):null,u=e instanceof pt.a?s(e.getChild2()):null;let c="";if(e.hasMetaData("fromVariable")){const n=e.getMetaData("fromVariable");!1===a.has(n)&&a.set(n,i++);const r=a.get(n)%t;c=o.createElement("span",null," ",o.createElement("span",{className:`label label-info label-info-${r}`},n," =")," ")}return o.createElement("li",null,o.createElement("div",{className:nt({node:!0,active:e===n}),onClick:()=>r&&r(e)},o.createElement(mt.a,{title:o.createElement("div",null,c,o.createElement("div",{dangerouslySetInnerHTML:{__html:e.getFormulaHtml(!0,!1)}})),body:()=>{e.check(),e.getResult();const t=e.getSchema(),n=e.getResultNumRows();return o.createElement("div",null,"columns:",o.createElement("ul",null,t.getColumns().map((e,n)=>o.createElement("li",{key:n},e.toString()," ",o.createElement("small",{className:"muted text-muted"},t.getType(n))))),e.hasMetaData("naturalJoinConditions")?o.createElement("div",null,"natural join conditions:",o.createElement("ul",null,e.getMetaData("naturalJoinConditions").map(e=>o.createElement("li",{dangerouslySetInnerHTML:{__html:e.getFormulaHtml()}})))):null,o.createElement("p",null,`${n} row${1===n?"":"s"}`),!0===e.getMetaData("isInlineRelation")&&e.hasMetaData("inlineRelationDefinition")?o.createElement("pre",null,e.getMetaData("inlineRelationDefinition")):null)},placement:"right",trigger:"hover"},o.createElement("a",{className:"formula"},c,o.createElement("span",{dangerouslySetInnerHTML:{__html:e.getFormulaHtml(!1,!1)}}),o.createElement("br",null),o.createElement("span",{className:"resultCountLabel"},`${e.getResultNumRows()} row${1===e.getResultNumRows()?"":"s"}`)))),l||u?o.createElement("ul",null,l,u):null)};return o.createElement("div",{className:"ra-tree"},o.createElement("div",{className:"tree"},o.createElement("ul",null,s(e))))}}var yt=n("./node_modules/memoize-one/dist/memoize-one.esm.js");n("./src/calc2/components/result.scss");class bt extends o.Component{constructor(e){super(e),this.result=Object(yt.a)(e=>{try{return e.check(),e.getResult()}catch(e){return console.error(e),null}}),this.state={activeNode:e.root,result:null},this.setActiveNode=this.setActiveNode.bind(this)}setActiveNode(e){this.setState({activeNode:e})}render(){const{root:e,numTreeLabelColors:t}=this.props,{activeNode:n}=this.state,r=this.result(n);return o.createElement("div",{className:"ra-result clearfix"},o.createElement("div",null,o.createElement(gt,{root:e,activeNode:n,numTreeLabelColors:t,setActiveNode:this.setActiveNode})),o.createElement("div",{className:"result"},o.createElement("div",null,o.createElement("h4",{className:"result-formula",dangerouslySetInnerHTML:{__html:n.getFormulaHtml(!0,!1)}}),o.createElement("div",{className:"result-table"},r?o.createElement(ft,{className:"table table-condensed",maxLinesPerPage:10,table:r,showPagination:!0}):null))))}}var vt=n("./src/db/relalg.ts");const _t=["pi","sigma","rho","tau","<-","intersect","union","/","-","\\","x","cross join","join","inner join","natural join","left join","right join","left outer join","right outer join","full outer join","left semi join","right semi join","anti join","and","or","xor","||"];class wt extends o.Component{constructor(e){super(e),this.editorBase=null,this.state={autoreplaceOperatorsMode:"none"},this.replaceText=this.replaceText.bind(this)}render(){const{group:e}=this.props,{autoreplaceOperatorsMode:t}=this.state,n={};return e.tables.forEach(e=>{n[e.tableName]=e.relation}),o.createElement(tt.a,{textChange:e=>{},ref:e=>{e&&(this.editorBase=e)},mode:"relalg",execFunction:(e,t,i)=>{const a=Object(vt.b)(t,Object.keys(n));if(Object(vt.j)(a,n),null===a.child)throw a.assignments.length>0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const s=Object(vt.h)(a,n);return s.check(),e.historyAddEntry(t),e.props.enableInlineRelationEditor&&e.addInlineRelationMarkers(a),{result:o.createElement(bt,{root:s,numTreeLabelColors:6})}},tab:"relalg",linterFunction:(e,o,i)=>{const a=[],s=Object(vt.b)(i,Object.keys(n));Object(vt.j)(s,n);for(let e=0;e0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const l=Object(vt.h)(s,n);if(l.check(),!1===o.getDoc().somethingSelected()){const e=o.getDoc().getCursor(),{query:n,cursor:r}=Object(vt.f)(i,s.operatorPositions,{line:e.line+1,column:e.ch+1},t);n!==i&&(o.setValue(n),o.getDoc().setCursor({line:r.line-1,ch:r.column-1}))}return e.props.enableInlineRelationEditor&&e.addInlineRelationMarkers(s),a.concat(Object(tt.b)(l))},getHintsFunction:()=>[..._t,...Object(tt.c)(e)],enableInlineRelationEditor:!0,toolbar:[{math:!0,items:[{label:"π",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.projection",tooltip:"calc.editors.ra.toolbar.projection-content"},{label:"σ",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.selection",tooltip:"calc.editors.ra.toolbar.selection-content"},{label:"ρ",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.rename",tooltip:"calc.editors.ra.toolbar.rename-content"},{label:"←",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.rename-columns-operator",tooltip:"calc.editors.ra.toolbar.rename-columns-operator-content"},{label:"→",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.right-arrow",tooltip:"calc.editors.ra.toolbar.right-arrow"},{label:"τ",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.orderBy",tooltip:"calc.editors.ra.toolbar.orderBy-content"},{label:"γ",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.groupBy",tooltip:"calc.editors.ra.toolbar.groupBy-content"}]},{math:!0,items:[{label:"∧",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.and",tooltip:"calc.editors.ra.toolbar.and-content"},{label:"∨",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.or",tooltip:"calc.editors.ra.toolbar.or-content"},{label:"¬",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.not",tooltip:"calc.editors.ra.toolbar.not-content"},{label:"=",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.equals",tooltip:"calc.editors.ra.toolbar.equals-content"},{label:"≠",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.not-equals",tooltip:"calc.editors.ra.toolbar.not-equals-content"},{label:"≥",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.greater-or-equals",tooltip:"calc.editors.ra.toolbar.greater-or-equals-content"},{label:"≤",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.lesser-or-equals",tooltip:"calc.editors.ra.toolbar.lesser-or-equals-content"}]},{math:!0,items:[{label:"∩",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.intersect",tooltip:"calc.editors.ra.toolbar.intersect-content"},{label:"∪",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.union",tooltip:"calc.editors.ra.toolbar.union-content"},{label:"÷",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.division",tooltip:"calc.editors.ra.toolbar.division-content"},{label:"-",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.subtraction",tooltip:"calc.editors.ra.toolbar.subtraction-content"}]},{math:!0,items:[{label:"⨯",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.cross-join",tooltip:"calc.editors.ra.toolbar.cross-join-content"},{label:"⨝",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.natural-join",tooltip:"calc.editors.ra.toolbar.natural-join-content"},{label:"⟕",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.left-outer-join",tooltip:"calc.editors.ra.toolbar.left-outer-join-content"},{label:"⟖",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.right-outer-join",tooltip:"calc.editors.ra.toolbar.right-outer-join-content"},{label:"⟗",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.full-outer-join",tooltip:"calc.editors.ra.toolbar.full-outer-join-content"},{label:"⋉",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.left-semi-join",tooltip:"calc.editors.ra.toolbar.left-semi-join-content"},{label:"⋊",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.right-semi-join",tooltip:"calc.editors.ra.toolbar.right-semi-join-content"},{label:"▷",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.anti-join",tooltip:"calc.editors.ra.toolbar.anti-join-content"}]},{math:!0,items:[{label:"=",onClick:e=>this.replaceText(e,"= "),tooltipTitle:"calc.editors.ra.toolbar.assignment",tooltip:"calc.editors.ra.toolbar.assignment-content"},{label:"--",onClick:e=>this.replaceText(e,"-- "),tooltipTitle:"calc.editors.ra.toolbar.single-line-comment",tooltip:"calc.editors.ra.toolbar.single-line-comment-content"},{label:"/*",onClick:e=>this.replaceText(e,"/* */"),tooltipTitle:"calc.editors.ra.toolbar.multi-line-comment",tooltip:"calc.editors.ra.toolbar.multi-line-comment-content"},{label:"{}",onClick:e=>this.replaceText(e,"{a:string, b:number, X.c:date\n\ta, 1, 1970-01-01\n}"),tooltipTitle:"calc.editors.ra.toolbar.inline-relation",tooltip:"calc.editors.ra.toolbar.inline-relation-content"}]},{items:[{label:o.createElement(et.a,{icon:Ze.q}),onClick:()=>{this.editorBase&&this.editorBase.inlineRelationEditorOpen(null)},tooltipTitle:"calc.editors.ra.toolbar.inline-relation-editor",tooltip:"calc.editors.ra.toolbar.inline-relation-editor-content"},{label:o.createElement(et.a,{icon:Ze.d}),onClick:e=>this.replaceText(e,"date('1970-01-01')"),tooltipTitle:"calc.editors.ra.toolbar.insert-date",tooltip:"calc.editors.ra.toolbar.insert-date-content"},{className:"showOnSM",label:o.createElement(et.a,{className:"editorButtonOnSM",icon:Ze.m}),onClick:()=>{this.props.relInsertModalToggle()},tooltipTitle:"calc.editors.insert-relation-title",tooltip:"calc.editors.insert-relation-tooltip"}]},{items:[{className:"dropdownToolbarButton",type:"dropdown",label:o.createElement(et.a,{className:"editorButtonOnSM",icon:Ze.l}),tooltipTitle:"calc.editors.ra.toolbar.autoreplace-operators.title",tooltip:"calc.editors.ra.toolbar.autoreplace-operators.header",elements:[{type:"header",label:o.createElement(r.b,{id:"calc.editors.ra.toolbar.autoreplace-operators.header"})},{type:"separator"},{label:o.createElement(r.b,{id:"calc.editors.ra.toolbar.autoreplace-operators.none"}),value:"none"},{label:o.createElement(r.b,{id:"calc.editors.ra.toolbar.autoreplace-operators.plain2math"}),value:"plain2math"},{label:o.createElement(r.b,{id:"calc.editors.ra.toolbar.autoreplace-operators.math2plain"}),value:"math2plain"}],value:t,onChange:e=>{this.setState({autoreplaceOperatorsMode:e},()=>{this.editorBase&&this.editorBase.forceLinterRun()})}}]}]})}replaceText(e,t){this.editorBase&&this.editorBase.replaceText(e,t)}replaceSelection(e,t){this.editorBase&&this.editorBase.replaceSelection(e,t)}}var Et=n("./src/calc2/utils/groupUtils.ts"),jt=n("./node_modules/reactstrap/lib/Button.js"),Ct=n.n(jt);class St extends o.Component{constructor(e){super(e),this.editorBase=null,this.autoParsingTimeout=null,this.replaceSelection=this.replaceSelection.bind(this)}static generateInfo(e){return{groupInfo:{source:"local",id:"draft",filename:"draft",index:0,maintainer:"",maintainerGroup:""},sourceInfo:{}}}render(){const{group:e}=this.props,t={};return e.tables.forEach(e=>{t[e.tableName]=e.relation}),o.createElement(tt.a,{textChange:e=>{},ref:e=>{e&&(this.editorBase=e)},mode:"relalg",disableHistory:!0,execButtonLabel:"calc.editors.group.button-exec",execFunction:(e,t,n)=>{const i=Object(vt.c)(t),{groupInfo:a,sourceInfo:s}=St.generateInfo(i),l=Object(Et.a)(i,a,s),u=o.createElement(o.Fragment,null,l.map((e,t)=>o.createElement("div",{key:t},o.createElement("h4",null,e.groupName.fallback," ",o.createElement(Ct.a,{color:"link",onClick:()=>{this.props.setDraft(e)}},o.createElement(r.b,{id:"calc.editors.group.button-use"}))),o.createElement("ul",{className:"table-list"},e.tables.map((e,n)=>{const r=l[t].tables[n].relation.getResult().getHtml();return o.createElement("li",{key:n},o.createElement("h5",null,e.tableName),o.createElement("div",{dangerouslySetInnerHTML:{__html:r}}))})))));return i.groups.forEach(t=>{e.addInlineRelationMarkers(t)}),{result:u}},tab:"group",linterFunction:(e,t,n)=>{const r=Object(vt.c)(n);r.groups.forEach(t=>{e.addInlineRelationMarkers(t)});const{groupInfo:o,sourceInfo:i}=St.generateInfo(r);return Object(Et.a)(r,o,i),[]},getHintsFunction:()=>[..._t,"group","group@de","group@en","group@es","description","description@de","description@en","description@es","category","category@de","category@en","category@es",...Object(tt.c)(e)],enableInlineRelationEditor:!0,toolbar:[{math:!1,items:[{label:o.createElement("span",null,o.createElement(et.a,{icon:Ze.q})," ",o.createElement(r.b,{id:"calc.editors.group.toolbar.add-new-relation"})),onClick:()=>{this.editorBase&&this.editorBase.inlineRelationEditorOpen(null)},tooltipTitle:"calc.editors.group.toolbar.add-new-relation",tooltip:"calc.editors.group.toolbar.add-new-relation-content"}]}]})}replaceSelection(e,t){this.editorBase&&this.editorBase.replaceSelection(e,t)}}const Ot=["distinct","select distinct","from","where","order by","asc","desc","inner join","inner","join","natural","union","intersect","outer join","natural join","left join","right join","left outer join","right outer join","full outer join","group by","having","limit","offset","and","or","xor","||"];class kt extends o.Component{constructor(e){super(e),this.editorBase=null,this.replaceText=this.replaceText.bind(this)}render(){const{group:e}=this.props,t={};return e.tables.forEach(e=>{t[e.tableName]=e.relation}),o.createElement(tt.a,{textChange:e=>{},ref:e=>{e&&(this.editorBase=e)},mode:"text/x-mysql",execFunction:(e,n,i)=>{const a=Object(vt.e)(n);if(Object(vt.j)(a,t),null===a.child)throw a.assignments.length>0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const s=Object(vt.i)(a,t);return s.check(),e.historyAddEntry(n),{result:o.createElement(bt,{root:s,numTreeLabelColors:6})}},tab:"sql",linterFunction:(e,n,o)=>{const i=[],a=Object(vt.e)(o);Object(vt.j)(a,t);for(let e=0;e0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const s=Object(vt.i)(a,t);return s.check(),i.concat(Object(tt.b)(s))},getHintsFunction:()=>[...Ot,...Object(tt.c)(e)],enableInlineRelationEditor:!0,toolbar:[{math:!1,items:[{label:"select",tooltipTitle:"calc.editors.sql.toolbar.select",tooltip:"calc.editors.sql.toolbar.select",onClick:e=>this.replaceText(e,"select distinct")},{label:"from",onClick:this.replaceText,tooltipTitle:"calc.editors.sql.toolbar.from",tooltip:"calc.editors.sql.toolbar.from"},{label:"where",onClick:this.replaceText,tooltipTitle:"calc.editors.sql.toolbar.where",tooltip:"calc.editors.sql.toolbar.where"},{label:"group",tooltipTitle:"calc.editors.sql.toolbar.group-by",tooltip:"calc.editors.sql.toolbar.group-by",onClick:e=>this.replaceText(e,"group by")},{label:"having",onClick:this.replaceText,tooltipTitle:"calc.editors.sql.toolbar.having",tooltip:"calc.editors.sql.toolbar.having"},{label:"order",tooltipTitle:"calc.editors.sql.toolbar.order-by",tooltip:"calc.editors.sql.toolbar.order-by",onClick:e=>this.replaceText(e,"order by")},{label:"limit",onClick:this.replaceText,tooltipTitle:"calc.editors.sql.toolbar.limit",tooltip:"calc.editors.sql.toolbar.limit"},{label:o.createElement(et.a,{className:"showOnSM",icon:Ze.i}),onClick:e=>this.props.relInsertModalToggle,tooltipTitle:"calc.editors.insert-relation-title",tooltip:"calc.editors.insert-relation-tooltip"}]},{math:!0,items:[{label:o.createElement("i",{className:"fa fa-calendar"}),onClick:e=>this.replaceText(e,"date('1970-01-01')"),tooltipTitle:"calc.editors.sql.toolbar.insert-date",tooltip:"calc.editors.sql.toolbar.insert-date-content"}]}]})}replaceText(e,t){this.editorBase&&this.editorBase.replaceText(e,t)}replaceSelection(e,t){this.editorBase&&this.editorBase.replaceSelection(e,t)}}function Tt(e,t){return e[t]?e[t]:e.fallback}var Mt=n("./node_modules/react-toastify/esm/react-toastify.js"),xt=(n("./node_modules/react-toastify/dist/ReactToastify.css"),{tabs:s.a.bool,pills:s.a.bool,vertical:s.a.oneOfType([s.a.bool,s.a.string]),horizontal:s.a.string,justified:s.a.bool,fill:s.a.bool,navbar:s.a.bool,card:s.a.bool,tag:ot.o,className:s.a.string,cssModule:s.a.object}),Rt=function(e){var t=e.className,n=e.cssModule,r=e.tabs,o=e.pills,a=e.vertical,s=e.horizontal,l=e.justified,u=e.fill,c=e.navbar,d=e.card,h=e.tag,f=Object(p.a)(e,["className","cssModule","tabs","pills","vertical","horizontal","justified","fill","navbar","card","tag"]),g=Object(ot.k)(rt()(t,c?"navbar-nav":"nav",!!s&&"justify-content-"+s,function(e){return!1!==e&&(!0===e||"xs"===e?"flex-column":"flex-"+e+"-column")}(a),{"nav-tabs":r,"card-header-tabs":d&&r,"nav-pills":o,"card-header-pills":d&&o,"nav-justified":l,"nav-fill":u}),n);return i.a.createElement(h,Object(m.a)({},f,{className:g}))};Rt.propTypes=xt,Rt.defaultProps={tag:"ul",vertical:!1};var Lt=Rt,At=n("./node_modules/@babel/runtime/helpers/esm/objectSpread.js"),Dt=n("./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js"),Nt=n("./node_modules/react-popper/lib/esm/Manager.js"),Pt=i.a.createContext({}),It={a11y:s.a.bool,disabled:s.a.bool,direction:s.a.oneOf(["up","down","left","right"]),group:s.a.bool,isOpen:s.a.bool,nav:s.a.bool,active:s.a.bool,addonType:s.a.oneOfType([s.a.bool,s.a.oneOf(["prepend","append"])]),size:s.a.string,tag:ot.o,toggle:s.a.func,children:s.a.node,className:s.a.string,cssModule:s.a.object,inNavbar:s.a.bool,setActiveFromChild:s.a.bool},Ht=[ot.j.space,ot.j.enter,ot.j.up,ot.j.down,ot.j.end,ot.j.home],Yt=function(e){function t(t){var n;return(n=e.call(this,t)||this).addEvents=n.addEvents.bind(Object(Dt.a)(n)),n.handleDocumentClick=n.handleDocumentClick.bind(Object(Dt.a)(n)),n.handleKeyDown=n.handleKeyDown.bind(Object(Dt.a)(n)),n.removeEvents=n.removeEvents.bind(Object(Dt.a)(n)),n.toggle=n.toggle.bind(Object(Dt.a)(n)),n.containerRef=i.a.createRef(),n}Object(G.a)(t,e);var n=t.prototype;return n.getContextValue=function(){return{toggle:this.toggle,isOpen:this.props.isOpen,direction:"down"===this.props.direction&&this.props.dropup?"up":this.props.direction,inNavbar:this.props.inNavbar,disabled:this.props.disabled}},n.componentDidMount=function(){this.handleProps()},n.componentDidUpdate=function(e){this.props.isOpen!==e.isOpen&&this.handleProps()},n.componentWillUnmount=function(){this.removeEvents()},n.getContainer=function(){return this.containerRef.current},n.getMenuCtrl=function(){return this._$menuCtrl||(this._$menuCtrl=this.getContainer().querySelector("[aria-expanded]")),this._$menuCtrl},n.getMenuItems=function(){return[].slice.call(this.getContainer().querySelectorAll('[role="menuitem"]'))},n.addEvents=function(){var e=this;["click","touchstart","keyup"].forEach((function(t){return document.addEventListener(t,e.handleDocumentClick,!0)}))},n.removeEvents=function(){var e=this;["click","touchstart","keyup"].forEach((function(t){return document.removeEventListener(t,e.handleDocumentClick,!0)}))},n.handleDocumentClick=function(e){if(!e||3!==e.which&&("keyup"!==e.type||e.which===ot.j.tab)){var t=this.getContainer();(!t.contains(e.target)||t===e.target||"keyup"===e.type&&e.which!==ot.j.tab)&&this.toggle(e)}},n.handleKeyDown=function(e){var t=this;if(!/input|textarea/i.test(e.target.tagName)&&(ot.j.tab!==e.which||"menuitem"===e.target.getAttribute("role")&&this.props.a11y)&&((-1!==Ht.indexOf(e.which)||e.which>=48&&e.which<=90)&&e.preventDefault(),!this.props.disabled&&(this.getMenuCtrl()===e.target&&(!this.props.isOpen&&[ot.j.space,ot.j.enter,ot.j.up,ot.j.down].indexOf(e.which)>-1?(this.toggle(e),setTimeout((function(){return t.getMenuItems()[0].focus()}))):this.props.isOpen&&e.which===ot.j.esc&&this.toggle(e)),this.props.isOpen&&"menuitem"===e.target.getAttribute("role"))))if([ot.j.tab,ot.j.esc].indexOf(e.which)>-1)this.toggle(e),this.getMenuCtrl().focus();else if([ot.j.space,ot.j.enter].indexOf(e.which)>-1)e.target.click(),this.getMenuCtrl().focus();else if([ot.j.down,ot.j.up].indexOf(e.which)>-1||[ot.j.n,ot.j.p].indexOf(e.which)>-1&&e.ctrlKey){var n=this.getMenuItems(),r=n.indexOf(e.target);ot.j.up===e.which||ot.j.p===e.which&&e.ctrlKey?r=0!==r?r-1:n.length-1:(ot.j.down===e.which||ot.j.n===e.which&&e.ctrlKey)&&(r=r===n.length-1?0:r+1),n[r].focus()}else if(ot.j.end===e.which){var o=this.getMenuItems();o[o.length-1].focus()}else if(ot.j.home===e.which){this.getMenuItems()[0].focus()}else if(e.which>=48&&e.which<=90)for(var i=this.getMenuItems(),a=String.fromCharCode(e.which).toLowerCase(),s=0;s-1?"menuitem":void 0,n=Object(ot.l)(this.props,["toggle"]),r=n.className,o=n.cssModule,a=n.divider,s=n.tag,l=n.header,u=n.active,c=Object(p.a)(n,["className","cssModule","divider","tag","header","active"]),d=Object(ot.k)(rt()(r,{disabled:c.disabled,"dropdown-item":!a&&!l,active:u,"dropdown-header":l,"dropdown-divider":a}),o);return"button"===s&&(l?s="h6":a?s="div":c.href&&(s="a")),i.a.createElement(s,Object(m.a)({type:"button"===s&&(c.onClick||this.props.toggle)?"button":void 0},c,{tabIndex:e,role:t,className:d,onClick:this.onClick}))},t}(i.a.Component);tn.propTypes=en,tn.defaultProps={tag:"button",toggle:!0},tn.contextType=Pt;var nn=tn,rn={tag:ot.o,active:s.a.bool,className:s.a.string,cssModule:s.a.object},on=function(e){var t=e.className,n=e.cssModule,r=e.active,o=e.tag,a=Object(p.a)(e,["className","cssModule","active","tag"]),s=Object(ot.k)(rt()(t,"nav-item",!!r&&"active"),n);return i.a.createElement(o,Object(m.a)({},a,{className:s}))};on.propTypes=rn,on.defaultProps={tag:"li"};var an=on,sn={tag:ot.o,innerRef:s.a.oneOfType([s.a.object,s.a.func,s.a.string]),disabled:s.a.bool,active:s.a.bool,className:s.a.string,cssModule:s.a.object,onClick:s.a.func,href:s.a.any},ln=function(e){function t(t){var n;return(n=e.call(this,t)||this).onClick=n.onClick.bind(Object(Dt.a)(n)),n}Object(G.a)(t,e);var n=t.prototype;return n.onClick=function(e){this.props.disabled?e.preventDefault():("#"===this.props.href&&e.preventDefault(),this.props.onClick&&this.props.onClick(e))},n.render=function(){var e=this.props,t=e.className,n=e.cssModule,r=e.active,o=e.tag,a=e.innerRef,s=Object(p.a)(e,["className","cssModule","active","tag","innerRef"]),l=Object(ot.k)(rt()(t,"nav-link",{disabled:s.disabled,active:r}),n);return i.a.createElement(o,Object(m.a)({},s,{ref:a,onClick:this.onClick,className:l}))},t}(i.a.Component);ln.propTypes=sn,ln.defaultProps={tag:"a"};var un=ln,cn=n("./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js"),dn=i.a.createContext({}),hn={tag:ot.o,activeTab:s.a.any,className:s.a.string,cssModule:s.a.object},fn=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={activeTab:n.props.activeTab},n}return Object(G.a)(t,e),t.getDerivedStateFromProps=function(e,t){return t.activeTab!==e.activeTab?{activeTab:e.activeTab}:null},t.prototype.render=function(){var e=this.props,t=e.className,n=e.cssModule,r=e.tag,o=Object(ot.l)(this.props,Object.keys(hn)),a=Object(ot.k)(rt()("tab-content",t),n);return i.a.createElement(dn.Provider,{value:{activeTabId:this.state.activeTab}},i.a.createElement(r,Object(m.a)({},o,{className:a})))},t}(o.Component);Object(cn.polyfill)(fn);var mn=fn;fn.propTypes=hn,fn.defaultProps={tag:"div"};var pn={tag:ot.o,className:s.a.string,cssModule:s.a.object,tabId:s.a.any};function gn(e){var t=e.className,n=e.cssModule,r=e.tabId,o=e.tag,a=Object(p.a)(e,["className","cssModule","tabId","tag"]),s=function(e){return Object(ot.k)(rt()("tab-pane",t,{active:r===e}),n)};return i.a.createElement(dn.Consumer,null,(function(e){var t=e.activeTabId;return i.a.createElement(o,Object(m.a)({},a,{className:s(t)}))}))}gn.propTypes=pn,gn.defaultProps={tag:"div"};var yn=n("./node_modules/reactstrap/es/Modal.js"),bn=n("./node_modules/reactstrap/es/ModalHeader.js"),vn=n("./node_modules/reactstrap/es/ModalBody.js"),_n=n("./node_modules/reactstrap/es/ModalFooter.js");n("./src/calc2/components/groupRelationList.scss");const wn=({tables:e,replace:t,onElementClick:n})=>o.createElement("div",{className:"groupRelationList"},o.createElement("ul",null,e.map(e=>{const{columnNames:r,columnTypes:i,tableName:a}=e;return o.createElement("li",{key:a},o.createElement("span",{className:"clickable",onClick:()=>{t&&t(a),n&&n()}},a),o.createElement("ul",null,e.columnNames.map((e,r)=>o.createElement("li",{key:e},o.createElement("span",{className:"clickable",onClick:()=>{t&&t(e),n&&n()}},e," ",o.createElement("small",{className:"muted text-muted"},i[r]))," "))))})));var En=n("./node_modules/immutable/dist/immutable.es.js");class jn extends o.Component{constructor(e){super(e),this.getGroupsByHeadlineName=Object(yt.a)((e,t)=>{let n=En.b();const o=e=>Tt(e,t);for(const t of e.values()){let e=null;!0===t.isDraft?e=r.c.t("calc.maintainer-groups.temp"):t.category&&(e=o({lang:"",fallback:t.groupInfo.maintainerGroup}));const i=[...n.get(e)||[],t];i.sort((e,t)=>o(e.groupName).localeCompare(o(t.groupName))),n=n.set(e,i)}return n}),this.gistLink=""}render(){const{current:e,locale:t}=this.props,n=this.getGroupsByHeadlineName(this.props.groups,t);return o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col-md-6"},o.createElement("h4",null,o.createElement(r.b,{id:"calc.menu.headline"})),o.createElement("ul",{id:"groups-selector-list"},n.map((n,i)=>o.createElement("li",{key:`${i}`},i||o.createElement(r.b,{id:"calc.maintainer-groups.misc"}),o.createElement("ul",null,n.map((n,r)=>{const{groupName:i,groupInfo:a}=n,s=`/relax/calc/${a.source}/${a.id}/${a.filename}/${a.index}`;return o.createElement("li",{key:s,className:nt({active:e&&e.group.groupInfo===n.groupInfo})},o.createElement(Qe,{to:s,onClick:()=>{this.props.datasetLoaded()}},Tt(i,t)))})))).valueSeq().toArray())),o.createElement("div",{className:"col-md-6 align-text-top align-top"},o.createElement("h4",null,o.createElement(r.b,{id:"calc.menu.load-gist-headline"})),o.createElement("input",{type:"text",className:"form-control gist-load-input",placeholder:"","data-i18n":"[placeholder]calc.menu.load-gist-insert-placeholder",size:32,onChange:e=>{this.gistLink="/relax/calc/gist/"+e.target.value}}),o.createElement("button",{onClick:()=>{document.location.href=this.gistLink,this.props.datasetLoaded()},type:"button",className:"fullWidthBtn btn btn-secondary gist-load-btn"},o.createElement(r.b,{id:"calc.menu.load-gist-button"})),o.createElement("hr",null),o.createElement("h4",null,o.createElement(r.b,{id:"calc.menu.create-own-dataset-headline"})),o.createElement("p",null,o.createElement(r.b,{id:"calc.menu.create-own-dataset-text"})," ",o.createElement(Xe,{to:"/help#tutorial-maintainer"},o.createElement(r.b,{id:"calc.menu.create-own-dataset-text-link"}))),o.createElement("button",{type:"button",className:"fullWidthBtn btn btn-secondary open-group-new-btn",onClick:()=>{this.props.loadGroupTab(!1)}},o.createElement("i",{className:"fa fa-plus-square-o fa-lg"})," ",o.createElement("span",null,o.createElement(r.b,{id:"calc.menu.create-own-dataset-button-new"}))),o.createElement("button",{type:"button",className:"fullWidthBtn btn btn-secondary open-group-current-btn",onClick:()=>{this.props.loadGroupTab(!0)}},o.createElement("i",{className:"fa fa-pencil-square-o fa-lg"})," ",o.createElement("span",null,o.createElement(r.b,{id:"calc.menu.create-own-dataset-button-modify"}))))))}}const Cn=z(e=>({groups:e.groups.groups,current:e.groups.current,locale:e.session.locale}))(jn);var Sn={light:s.a.bool,dark:s.a.bool,full:s.a.bool,fixed:s.a.string,sticky:s.a.string,color:s.a.string,role:s.a.string,tag:ot.o,className:s.a.string,cssModule:s.a.object,expand:s.a.oneOfType([s.a.bool,s.a.string])},On=function(e){var t,n=e.expand,r=e.className,o=e.cssModule,a=e.light,s=e.dark,l=e.fixed,u=e.sticky,c=e.color,d=e.tag,h=Object(p.a)(e,["expand","className","cssModule","light","dark","fixed","sticky","color","tag"]),f=Object(ot.k)(rt()(r,"navbar",function(e){return!1!==e&&(!0===e||"xs"===e?"navbar-expand":"navbar-expand-"+e)}(n),((t={"navbar-light":a,"navbar-dark":s})["bg-"+c]=c,t["fixed-"+l]=l,t["sticky-"+u]=u,t)),o);return i.a.createElement(d,Object(m.a)({},h,{className:f}))};On.propTypes=Sn,On.defaultProps={tag:"nav",expand:!1};var kn=On,Tn={tag:ot.o,className:s.a.string,cssModule:s.a.object},Mn=function(e){var t=e.className,n=e.cssModule,r=e.tag,o=Object(p.a)(e,["className","cssModule","tag"]),a=Object(ot.k)(rt()(t,"navbar-brand"),n);return i.a.createElement(r,Object(m.a)({},o,{className:a}))};Mn.propTypes=Tn,Mn.defaultProps={tag:"a"};var xn=Mn,Rn=n("./node_modules/reactstrap/lib/NavLink.js"),Ln=n.n(Rn);class An extends o.Component{constructor(e){super(e),this.state={},this.changeLocale=this.changeLocale.bind(this)}changeLocale(e){r.c.language!==e&&window.confirm("Reload page to change language?")&&(r.c.changeLanguage(e),window.location.reload())}render(){return o.createElement(kn,{color:"light",light:!0,expand:"md",className:"desktopNavbar"},o.createElement(xn,{href:"/"},"RelaX"),o.createElement(Lt,{className:"ml-auto",navbar:!0},o.createElement(an,{className:"navItemSpace"},o.createElement(Ln.a,{href:"/relax/calc"},o.createElement(et.a,{icon:Ze.c})," Calculator")),o.createElement(Bt,{nav:!0,inNavbar:!0,className:"navItemSpace"},o.createElement(Gt,{nav:!0,caret:!0},o.createElement(et.a,{icon:Ze.j})," ",o.createElement(r.b,{id:"calc.navigation.language"})),o.createElement(Zt,{right:!0},o.createElement(nn,{onClick:()=>this.changeLocale("en")},"en"),o.createElement(nn,{onClick:()=>this.changeLocale("de")},"de"),o.createElement(nn,{onClick:()=>this.changeLocale("es")},"es"),o.createElement(nn,{onClick:()=>this.changeLocale("kr")},"kr"),o.createElement(nn,{onClick:()=>this.changeLocale("pt")},"pt"))),o.createElement(an,{className:"navItemSpace"},o.createElement(Ln.a,{href:"https://github.com/dbis-uibk/relax/issues"},o.createElement(et.a,{icon:Ze.f})," ",o.createElement(r.b,{id:"calc.navigation.feedback"}))),o.createElement(an,{className:"navItemSpace"},o.createElement(Ln.a,{href:"/relax/help"},o.createElement(et.a,{icon:Ze.p})," ",o.createElement(r.b,{id:"calc.navigation.help"}))),o.createElement(an,{className:"navItemSpace"},o.createElement(Ln.a,{href:"/relax/imprint"},o.createElement(et.a,{icon:Ze.a})," ",o.createElement(r.b,{id:"calc.navigation.imprint"})))))}}n("./src/calc2/components/calculator.scss");class Dn extends o.Component{constructor(e){super(e),this.refEditorRelalg=o.createRef(),this.refEditorSql=o.createRef(),this.refEditorGroup=o.createRef(),Mt.b.configure(),this.state={activeTab:"relalg",datasetModal:!1,relationModal:!1},this.getCurrentEditor=this.getCurrentEditor.bind(this),this.toggleDatasetModal=this.toggleDatasetModal.bind(this),this.insertRelationToggle=this.insertRelationToggle.bind(this),this.loadGroupEditor=this.loadGroupEditor.bind(this)}toggleDatasetModal(){this.setState({datasetModal:!this.state.datasetModal})}insertRelationToggle(){this.setState({relationModal:!this.state.relationModal})}changeLocale(e){r.c.language!==e&&window.confirm("Reload page to change language?")&&(r.c.changeLanguage(e),window.location.reload())}getCurrentEditor(){switch(this.state.activeTab){case"sql":return this.refEditorSql;case"relalg":return this.refEditorRelalg;case"group":return this.refEditorGroup}}loadGroupEditor(e){let t="-- this is an example\ngroup: nameOfTheNewGroup \n\nA = {\na:string, b:number\nexample, 42\n}";!0===e&&(t=this.props.group.definition),this.setState({activeTab:"group"},()=>{const e=this.getCurrentEditor().current;e&&e.editorBase.state.editor.setValue(t),this.toggleDatasetModal()})}render(){const{group:e,locale:t}=this.props,{activeTab:n}=this.state;return o.createElement("div",{className:"view-max"},o.createElement(An,null),o.createElement("div",{className:"calculator"},o.createElement(Mt.a,{enableMultiContainer:!0,position:Mt.b.POSITION.TOP_RIGHT}),o.createElement("div",{className:"row"},o.createElement("div",{className:"d-none d-xs-block d-sm-block d-md-block col-lg-1 col-xl-2"}),o.createElement("div",{className:"groups-container col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xl-2"},o.createElement("button",{className:"btn btn-default dropdown-toggle",type:"button",id:"dropdownMenu1",onClick:this.toggleDatasetModal,style:{width:"100%",textAlign:"left",textOverflow:"ellipsis",overflow:"hidden"}},o.createElement("span",null,"Select DB (",Tt(e.groupName,t),")"),o.createElement("span",{className:"caret",style:{display:"block",position:"absolute",top:"50%",right:"10px"}})),o.createElement("div",null,o.createElement(wn,{tables:e.tables,replace:e=>{const t=this.getCurrentEditor();t&&t.current&&t.current.replaceSelection(e)},onElementClick:null}))),o.createElement("div",{className:"calculator-container col-xs-12 col-sm-12 col-md-12 col-lg-8 col-xl-6"},o.createElement(Lt,{tabs:!0},o.createElement(Bt,{nav:!0,inNavbar:!0,className:"showOnSM"},o.createElement(Gt,{nav:!0},o.createElement(et.a,{icon:Ze.b})),o.createElement(Zt,null,o.createElement(nn,{href:"/relax/calc"},o.createElement(et.a,{icon:Ze.c})," ",o.createElement(r.b,{id:"calc.navigation.calc"})),o.createElement(nn,{href:"/relax/help"},o.createElement(et.a,{icon:Ze.f})," ",o.createElement(r.b,{id:"calc.navigation.help"})),o.createElement(nn,{href:"https://github.com/dbis-uibk/relax/issues"},o.createElement(et.a,{icon:Ze.p})," ",o.createElement(r.b,{id:"calc.navigation.feedback"})),o.createElement(nn,{onClick:this.toggleDatasetModal},o.createElement(et.a,{icon:Ze.g})," ",o.createElement(r.b,{id:"calc.menu.datasets"})),o.createElement(nn,{divider:!0}),o.createElement(nn,{onClick:()=>this.changeLocale("en")},"en"),o.createElement(nn,{onClick:()=>this.changeLocale("de")},"de"),o.createElement(nn,{onClick:()=>this.changeLocale("es")},"es"),o.createElement(nn,{onClick:()=>this.changeLocale("kr")},"kr"))),o.createElement(an,null,o.createElement(un,{className:nt({active:"relalg"===n}),onClick:()=>{this.setState({activeTab:"relalg"})}},o.createElement("span",{className:"hideOnSM"},o.createElement(r.b,{id:"calc.editors.ra.tab-name"})),o.createElement("span",{className:"showOnSM"},o.createElement(r.b,{id:"calc.editors.ra.tab-name-short"})))),o.createElement(an,null,o.createElement(un,{className:nt({active:"sql"===n}),onClick:()=>{this.setState({activeTab:"sql"})}},o.createElement("span",{className:"hideOnSM"},o.createElement(r.b,{id:"calc.editors.sql.tab-name"})),o.createElement("span",{className:"showOnSM"},o.createElement(r.b,{id:"calc.editors.sql.tab-name-short"})))),o.createElement(an,null,o.createElement(un,{className:nt({active:"group"===n}),onClick:()=>{this.setState({activeTab:"group"})}},o.createElement("span",{className:"hideOnSM"},o.createElement(r.b,{id:"calc.editors.group.tab-name"})),o.createElement("span",{className:"showOnSM"},o.createElement(r.b,{id:"calc.editors.group.tab-name-short"}))))),o.createElement(mn,{activeTab:this.state.activeTab,className:"tab-content-border"},o.createElement(gn,{tabId:"relalg"},o.createElement(wt,{group:e,ref:this.refEditorRelalg,relInsertModalToggle:this.insertRelationToggle})),o.createElement(gn,{tabId:"sql"},o.createElement(kt,{group:e,ref:this.refEditorSql,relInsertModalToggle:this.insertRelationToggle})),o.createElement(gn,{tabId:"group"},o.createElement(St,{group:e,ref:this.refEditorGroup,setDraft:this.props.setDraft}))))),o.createElement(yn.a,{isOpen:this.state.datasetModal,toggle:this.toggleDatasetModal},o.createElement(bn.a,{toggle:this.toggleDatasetModal},Tt(e.groupName,t)),o.createElement(vn.a,null,o.createElement("div",null,o.createElement(Cn,{datasetLoaded:()=>{this.setState({datasetModal:!1})},loadGroupTab:e=>{this.loadGroupEditor(e)}}))),o.createElement(_n.a,null,o.createElement(zt.a,{color:"secondary",onClick:this.toggleDatasetModal},Object(r.d)("calc.result.modal.close")))),o.createElement(yn.a,{isOpen:this.state.relationModal,toggle:this.insertRelationToggle},o.createElement(bn.a,{toggle:this.insertRelationToggle},Tt(e.groupName,t)),o.createElement(vn.a,null,o.createElement(wn,{tables:e.tables,replace:e=>{const t=this.getCurrentEditor();t&&t.current&&t.current.replaceSelection(e)},onElementClick:this.insertRelationToggle})),o.createElement(_n.a,null,o.createElement(zt.a,{color:"secondary",onClick:this.insertRelationToggle},Object(r.d)("calc.result.modal.close"))))))}}class Nn extends o.Component{constructor(e){super(e),this.query="",this.success="",this.result="",this.state={},this.query=atob(e.params.query)}componentDidMount(){this.runQuery(this.query)}runQuery(e){try{const{group:t}=this.props,n={};t.tables.forEach(e=>{n[e.tableName]=e.relation});const o=Object(vt.b)(e,Object.keys(n));if(Object(vt.j)(o,n),null===o.child)throw o.assignments.length>0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const i=Object(vt.h)(o,n);i.check(),this.result=JSON.stringify(i.getResult()),this.success="true"}catch(e){this.success="false",this.result=e.toString()}}render(){return o.createElement("div",{id:"apiContainer"},o.createElement("div",{id:"success"},this.success),o.createElement("div",{id:"query"},this.query),o.createElement("div",{id:"result"},this.result))}}var Pn=n("./node_modules/query-string/index.js"),In=n.n(Pn);class Hn extends o.Component{constructor(e){super(e),this.apiView=!1,this.params={},this.init=!1}componentDidMount(){this.apiView="api"==this.props.location.pathname.split("/")[2],this.params=In.a.parse(this.props.location.search)}componentDidUpdate(e){const{params:t}=this.props.match,{params:n}=e.match;!1!==this.init&&t.source===n.source&&t.id===n.id&&t.filename===n.filename&&t.index===n.index||(this.init=!0,this.loadGroup(this.props))}loadGroup(e){const{source:t,id:n,filename:r,index:o}=e.match.params;this.props.loadGroup(t,n,r,Number.parseInt(o,10),"","")}componentWillReceiveProps(e){const{params:t}=this.props.match,{params:n}=e.match;n.source!==t.source||n.id!==t.id||n.filename!==t.filename||(n.index,t.index)}render(){const{locale:e}=this.props,{current:t}=this.props.groups;return null!==t?1==this.apiView?o.createElement(Nn,{group:t.group,locale:e,params:this.params}):o.createElement(Dn,{group:t.group,locale:e,setDraft:this.props.setDraft}):o.createElement("div",null,"loading ...")}}const Yn=z(e=>({groups:e.groups,locale:e.session.locale}),e=>({loadGroup:(t,n,r,o,i,a)=>{e({type:"GROUPS_LOAD_REQUEST",source:t,id:n,maintainer:i,maintainerGroup:a,setCurrent:{filename:r,index:o}})},setDraft:t=>{e({type:"GROUP_SET_DRAFT",draft:t})}}))(Hn);var Fn=n("./node_modules/jquery/dist/jquery.js"),Wn=n("./node_modules/railroad-diagrams/railroad-diagrams.js");n("./node_modules/railroad-diagrams/railroad-diagrams.css");class Bn extends o.Component{componentDidMount(){const e=q.findDOMNode(this);if(!e)throw new Error("could not find node");this.props.diagram.addTo(e)}shouldComponentUpdate(e){return this.props.diagram!==e.diagram}render(){return o.createElement("div",null)}}n("./src/calc2/views/help.css");class Un extends o.Component{constructor(e){super(e),this.state={},this.changeLocale=this.changeLocale.bind(this)}changeLocale(e){r.c.language!==e&&window.confirm("Reload page to change language?")&&(r.c.changeLanguage(e),window.location.reload())}render(){return o.createElement(kn,{color:"light",light:!0,expand:"md",className:"mobileNavbar"},o.createElement(Bt,null,o.createElement(Gt,{nav:!0},o.createElement(et.a,{icon:Ze.b})),o.createElement(Zt,null,o.createElement(nn,{href:"/relax/calc"},o.createElement(et.a,{icon:Ze.c})," ",o.createElement(r.b,{id:"calc.navigation.calc"})),o.createElement(nn,{href:"/relax/help"},o.createElement(et.a,{icon:Ze.f})," ",o.createElement(r.b,{id:"calc.navigation.help"})),o.createElement(nn,{href:"/relax/imprint"},o.createElement(et.a,{icon:Ze.a})," ",o.createElement(r.b,{id:"calc.navigation.imprint"})),o.createElement(nn,{href:"https://github.com/dbis-uibk/relax/issues"},o.createElement(et.a,{icon:Ze.p})," ",o.createElement(r.b,{id:"calc.navigation.feedback"})),o.createElement(nn,{divider:!0}),o.createElement(nn,{onClick:()=>this.changeLocale("en")},"en"),o.createElement(nn,{onClick:()=>this.changeLocale("de")},"de"),o.createElement(nn,{onClick:()=>this.changeLocale("es")},"es"),o.createElement(nn,{onClick:()=>this.changeLocale("kr")},"kr"))),o.createElement(xn,{href:"/"},"RelaX"))}}class zn extends o.Component{componentDidMount(){const e=Fn("#toc");let t=0,n=null,r=null,o=null;Fn("h2, h3, h4, h5, h6").each((function(){const i=Fn(this),a=i.attr("name")||i.attr("id")||"tocId"+t++;i.attr("name",a),i.attr("id",a);const s=''+i.text()+"";if(i.is("h2"))e.append(Fn(`
${s}
    `)),n=e.find("ul:last");else if(i.is("h3")){if(!n)throw new Error("malformed headings");n.append(Fn(`
  • ${s}
    • `)),r=n.find("ul:last")}else if(i.is("h4")){if(!r)throw new Error("malformed headings");r.append(Fn(`
    • ${s}
      • `)),o=r.find("ul:last")}else{if(!o)throw new Error("malformed headings");o.append(`
      • ${s}
      • `)}})),Fn("h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((function(){Fn(this).append(` `)}))}render(){return o.createElement("div",{className:"view-max"},o.createElement(An,null),o.createElement(Un,null),o.createElement("div",{className:"view-content"},o.createElement("div",{className:"container"},o.createElement("h1",{id:"help"},"RelaX - Help"),o.createElement("div",{id:"toc"}),o.createElement("h2",{id:"tutorial-user"},"Tutorial - user"),o.createElement("h3",{id:"tutorial-user-coreconcepts"},"The core concepts"),o.createElement("p",null,"The goal of this tutorial is to give a quick introduction how to use the relational algebra calculator and its concepts. It assumes that you already know the relational algebra or are learning it from other sources."),o.createElement("p",null,"There is no real standard for the relational algebra like there is for SQL. So every book or teacher might have its slightly different interpretation and notation.",o.createElement("br",null),'The goal of this progam was to support the most commonly used "mathematical" notation used by ',o.createElement("a",{href:"http://infolab.stanford.edu/~ullman/dscb.html"},"Database Systems The Complete Book 2nd Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom"),", ",o.createElement("a",{href:"http://www3.in.tum.de/teaching/bookDBMSeinf/",lang:"de"},"Datenbanksysteme: Eine Einführung by Alfons Kemper and André Eickler")," and ",o.createElement("a",{href:"http://en.wikipedia.org/wiki/Relational_algebra"},"Wikipedia - Relational Algebra")," and others."),o.createElement("h4",{id:"tutorial-user-relations"},"relations"),o.createElement("p",null,"The core element of the calculator is the relation (or table) which consists of a fixed number of attributes (or columns) in a fixed order (this is called the schema of the relation) and a set of tuples or rows containing the specific values."),o.createElement("p",null,"Each attribute has three distinct properties: its type, its position and its name."),o.createElement("p",null,"The type or domain of an attribute is either ",o.createElement("i",null,"string"),", ",o.createElement("i",null,"number"),", ",o.createElement("i",null,"date")," or ",o.createElement("i",null,"boolean"),".",o.createElement("br",null),"The type is used for example to determine if two values can be compared in a boolean expression or if two schemas are union compatible. In most cases the type of the attributes are obvious if you look at the values."),o.createElement("p",null,"The position of each attribute in a schema is fixed and can be used to adress the attributes.",o.createElement("br",null),"An example would be the projection of the first and third attribute or column of an arbitrary relation R: ",o.createElement("code",{className:"example block"},"π [1], [3] ( R )")),o.createElement("p",null,"The full qualified name of the attribute is a unique identifier of the attribute within the schema of its relation. It consists of the name itself and a relation qualifier and are written like in SQL as ",o.createElement("code",null,"R.a"),"where a is the name and R is the relation qualifier.",o.createElement("br",null),"An example would be the projectoin of the attributes a, b from a relation R: ",o.createElement("code",{className:"example block"},"π R.a, R.b ( R )"),o.createElement("br",null),"The default relation qualifier of each attribute is the name of its relation.",o.createElement("br",null),"If the attributes name without the qualifier is unique within the relation's schema, it also can be used to address a specific attribute.",o.createElement("br",null),"The previous example could also be written as ",o.createElement("code",null,"π a, b ( R )"),"."),o.createElement("p",null,"Each relation has a set of tuples (or rows). This means that there are no duplicate tuples within one relation and the duplicate-elimination is implicitly executed after every single step of the calculation.",o.createElement("br",null),"The tuples in the calculator have a defined order and unlike a normal database system all operations are implemented to preserve that order. This should help the users to see what has changed from one step to the next."),o.createElement("p",null,"so far we covered that"),o.createElement("ul",null,o.createElement("li",null,"relations are the core elements,"),o.createElement("li",null,"relations have a schema and a set of tuples,"),o.createElement("li",null,"each attribute in the schema has",o.createElement("ul",null,o.createElement("li",null,"data-type"),o.createElement("li",null,"a position"),o.createElement("li",null,"a fully qualified name (RELATION.attributename)"))),o.createElement("li",null,"and that each attribute can be addressed within an operation using",o.createElement("ul",null,o.createElement("li",null,"its position e.g. ",o.createElement("code",{className:""},"π [1], [2] ( R )"),","),o.createElement("li",null,"the attribute name e.g. ",o.createElement("code",{className:""},"π a, b ( R )")),o.createElement("li",null,"or its full quallified name if the unqualified is not unique e.g. ",o.createElement("code",{className:""},"π R.a, S.a ( R x S )"))))),o.createElement("h3",{id:"tutorial-user-plain-text-notation"},"Alternative plain text notation"),o.createElement("p",null,"Before we introduce how to use the operators this should be a quick introduction of a very handy feature of the relational algebra calculator: the alternative plain text notation"),o.createElement("p",null,'The "classNameic" mathematical notation uses greek letters like π, σ for the unary operations and special symbols like the join symbol ',o.createElement("span",{className:"math"},"⋈")," or the union symbol ",o.createElement("span",{className:"math"},"∪"),"for some binary operations.",o.createElement("br",null),"This symbols can be entered using the toolbar at the top of the editor."),o.createElement("p",null,'This calculator also supports a alternative syntax for all this symbols that follows two very simple rules: Every greek letter can be substituted with its name spelled out ("pi" for π, "gamma" for γ) and every other symbol has an equivalent name that is borrowed from SQL, programming languages like C and ',o.createElement("a",{href:"http://en.wikipedia.org/wiki/Set_theory"},"Set theory"),"."),o.createElement("p",null,"This substitutions should be easy to read and much more important very easy to write because you don't need any toolbar or mouse. The calculator also supports autocomplete: just press [CTRL]+[SPACE] to complete the current keyword.",o.createElement("br",null),"This feature should help you to write your statements more quickly and fluently."),o.createElement("code",{className:"example block"},"π R.a, S.a, S.b σ R.a = S.a ∧ ( R.a > 5 ∨ R.a ","<"," 0 ) ( R ⨯ S )"),"is equivalent to:",o.createElement("code",{className:"example block"},"pi R.a, S.a, S.b sigma R.a = S.a and ( R.a > 5 or R.a ","<"," 0 ) ( R cross join S )"),"In the following table you can see a list of all supported substitutions:",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"classNameical notation"),o.createElement("th",null,"alternative notation"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",{className:"math"},"π"),o.createElement("td",null,"pi")),o.createElement("tr",null,o.createElement("td",{className:"math"},"σ"),o.createElement("td",null,"sigma")),o.createElement("tr",null,o.createElement("td",{className:"math"},"ρ"),o.createElement("td",null,"rho")),o.createElement("tr",null,o.createElement("td",{className:"math"},"τ"),o.createElement("td",null,"tau")),o.createElement("tr",null,o.createElement("td",{className:"math"},"γ"),o.createElement("td",null,"gamma")),o.createElement("tr",null,o.createElement("td",{className:"math"},"∩"),o.createElement("td",null,"intersect")),o.createElement("tr",null,o.createElement("td",{className:"math"},"∪"),o.createElement("td",null,"union")),o.createElement("tr",null,o.createElement("td",{className:"math"},"-"),o.createElement("td",null,"\\")),o.createElement("tr",null,o.createElement("td",{className:"math"},"÷"),o.createElement("td",null,"/")),o.createElement("tr",null,o.createElement("td",{className:"math"},"⨯"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"x"),o.createElement("li",null,"cross join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"⋈"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"join"),o.createElement("li",null,"inner join"),o.createElement("li",null,"natural join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"⟕"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"left join"),o.createElement("li",null,"left outer join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"⟖"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"right join"),o.createElement("li",null,"right outer join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"⟗"),o.createElement("td",null,"full outer join")),o.createElement("tr",null,o.createElement("td",{className:"math"},"⋉"),o.createElement("td",null,"left semi join")),o.createElement("tr",null,o.createElement("td",{className:"math"},"⋊"),o.createElement("td",null,"right semi join")),o.createElement("tr",null,o.createElement("td",{className:"math"},"▷"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"anti semi join"),o.createElement("li",null,"anti join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"←"),o.createElement("td",null,"<","-",o.createElement("code",{className:"example block"},"pi new_name ","<","- a ( R )"))),o.createElement("tr",null,o.createElement("td",{className:"math"},"→"),o.createElement("td",null,"->",o.createElement("code",{className:"example block"},"pi a -> new_name ( R )")))))),o.createElement("ul",null,o.createElement("li",null,"schema preserving operations - operations where the resulting relation has the same schema as its first argument-relation:",o.createElement("ul",null,o.createElement("li",null,"selection"),o.createElement("li",null,"union"),o.createElement("li",null,"intersection"),o.createElement("li",null,"subtraction"),o.createElement("li",null,"orderby"),o.createElement("li",null,"left outer join"),o.createElement("li",null,"left semi join"),o.createElement("li",null,"anti join")))),o.createElement("h3",{id:"tutorial-user-relalg"},"Relational algebra"),o.createElement("p",null,"For this Part we use the ",o.createElement("a",{href:"calc.htm?data=gist:2cfb981fbc5676182d64"},'"bank example" Dataset')," with 3 relations: ",o.createElement("i",null,"Customers"),", ",o.createElement("i",null,"Accounts")," and ",o.createElement("i",null,"PremiumCustomers"),". By convention relations start with a uppercase letter and attributes with a lower case letter."),o.createElement("h4",null,"Open and inspect dataset"),o.createElement("p",null,"Open the dataset used in this tutorial using the following link to the ",o.createElement("a",{href:"calc.htm?data=gist:2cfb981fbc5676182d64"},'"bank example" Dataset'),"."),o.createElement("p",null,"You find the relations and their attributes listed on the side and if you hover a relations name a preview of the first view tuples is displayed."),o.createElement("h4",{id:"tutorial-user-basic-query"},"The most basic query"),o.createElement("p",null,"After you have found the Dataset you can formulate the very first and most basic query in relational algebra: a relation without any further manipulation."),o.createElement("p",null,"Just enter the name of a relation into the code editor or click on the relation/attribute names to insert them into the code editor.",o.createElement("br",null),"Note that the editor supports auto completing the relation/attribute names of the current dataset and the operators with [CTRL]+[SPACE]"),o.createElement("p",null,"So if you want all tuples of the relation ",o.createElement("i",null,"Customer")," you should have the following statement: ",o.createElement("code",null,"Customer"),". And get all the tuples if you press the execute button or press [CTRL]+[RETURN]."),o.createElement("h4",{id:"tutorial-user-unary-operations"},"Unary operations"),o.createElement("p",null,"All unary operations have the same basic syntax ",o.createElement("code",null,o.createElement("i",null,"FUNCTION")," ARGUMENT ",o.createElement("strong",null,"("),"CHILD_EXPRESSION ",o.createElement("strong",null,")")),"."),o.createElement("p",{className:"hint"},"The braces around the ",o.createElement("code",null,"CHILD_EXPRESSION")," can be omitted. In this case the predefined ",o.createElement("a",{href:"#relalg-operator-precedence"},"operator precedence for relational algebra")," applies."),o.createElement("p",null,"A complete list of the supported relalg operations can be found here: ",o.createElement("a",{href:"#relalg-syntax"},"general syntax"),", ",o.createElement("a",{href:"#relalg-unary-operations"},"unary operations")," and ",o.createElement("a",{href:"#relalg-binary-operations"},"binary operations"),"."),o.createElement("p",null,"The projection is one of the basic operations that allow to choose which of the attributes of the parent relations should be included in the new one and in which order they should be."),o.createElement("p",null,"Renaming a relation (ρ) changes the qualifiers of all the relations attributes but does not touch the tuples."),o.createElement("p",null,"Renaming an attribute (ρ) only changes the name of a specific attribute (and leaves his relation-qualifier unchanged)."),o.createElement("p",null,"The statement ",o.createElement("code",null,"pi balance ( Accounts )")," returns a new relation with only the balance attribute."),o.createElement("p",null,"The next statement gets the balance with the account-id after renaming the relation to ",o.createElement("i",null,"A")," and renames one of the attributes."),o.createElement("code",{className:"example block"},"rho account_number ","<","- aid ( pi aid, A.balance ( rho A ( Accounts ) ) )"),o.createElement("p",{className:"hint"},"Like in SQL or most programming languages you can format your statement and use SQL like comments (with ",o.createElement("code",null,"-- ...")," or ",o.createElement("code",null,"/* ... */"),") to increase the readability."),o.createElement("p",null,"The next statement uses a selection to filter the tuples of a relation based on a boolean expression. The calculator supports complex boolean expression with functions and built in operator precedence.",o.createElement("br",null),"The attributes in the boolean expression can be given as name or numeric position like with the projection."),o.createElement("p",null,"The next statement selects all customers-ids of customers who have the same value for their firstname and lastname."),o.createElement("code",{className:"example block"},"-- this should return an relation with no tuples: pi cid ( sigma firstname=lastname ( Customers ) )"),o.createElement("p",null,"The next example uses a more complex expression to get all accounts with a balance over 100 or under -100."),o.createElement("code",{className:"example block"},"sigma balance > 100 or (balance*-1 > 100) ( Accounts ) -- (balance ","<"," -100) would also be correct"),o.createElement("p",null,"As a shorter alternative you can use a ",o.createElement("a",{href:"#relalg-valueexpr"},"function in your expression")," to get the same result:"),o.createElement("code",{className:"example block"},"sigma abs(balance) > 100 ( Accounts )"),o.createElement("h2",{id:"tutorial-maintainer"},"Tutorial - maintainer"),o.createElement("p",null,"Everybody can provide datasets that can be used in the relational algebra calculator and share them with others.",o.createElement("br",null),"We assume the scenario of a teacher wanting to provide a dataset for his/her students for this short tutorial."),o.createElement("p",null,"The datasets are specified in a simple text format and can be shared with others via ",o.createElement("a",{href:"https://gist.github.com/"},"GitHub Gists")," (a simple and free platform to share snippets).",o.createElement("br",null),"The shared gist gets an unique ID and the relational algebra calculator can load the dataset directly using this ID."),o.createElement("h3",{id:"tutorial-maintainer-create-dataset"},"Creating a dataset"),o.createElement("p",null,"The fist step is the creation of the dataset which is actually only a group of relation definitions with some additional information and is therefore refered as group in the specified format.",o.createElement("br",null),"The relations can then be used by the students to formulate the there statements.",o.createElement("br",null),"Lets assume we want to create a dataset of employees of a company."),"Every group definition starts with a simple header which (at least) contains the name of the group:",o.createElement("code",{className:"example block"},"group: bank example"),"every header field starts with the name of the field and is followed by a colon for single line values. The next (optional) header field we should specify is the description. It should contain information like who is maintaining this dataset or where to find additional information.",o.createElement("br",null),"In the description ",o.createElement("a",{href:"http://en.wikipedia.org/wiki/Markdown"},"Markdown")," can be used to format the text or set links to external resources.",o.createElement("p",null,"In our example we add a description that takes more than a single line and therefore we enclose the value in double brackets instead of using the colon."),o.createElement("code",{className:"example block"},"group: bank example description[[ the data for this dataset was generated using ","<","http://www.generatedata.com/> * the relation _Customers_ contains basic information about the customers of the bank. The relation _Accounts_ contains the basic information of a single account. Note that a customer can have any number of accounts. * the relation _PremiumCustomers_ contains the customer-ids of all customers with a total balance over 1000 ]]"),o.createElement("p",null,"The next step is to actually add the relations the students can use for their queries.",o.createElement("br",null),"The relation definitions are use the relational algebra syntax that can be used in this tool.",o.createElement("br",null),"Every relation is defined by a single variable assignment where the name of the variable is used as the relations name and the result of the expression defines the relation.",o.createElement("br",null),"The relalg expression can use all features that can be used in the tool and can also use other relations defined within the same dataset.",o.createElement("br",null),"Note that the name of the relation is used as the qualifier of each attribute/column."),o.createElement("p",null,"For the relation ",o.createElement("code",null,"Customers")," relation we use the ",o.createElement("a",{href:"#relalg-inline-relation"},"inline relation")," syntax as the most basic method to define the relation and can also be edited using the relation editor ",o.createElement("i",{className:"fa fa-table",title:"relation editor"})," which is a simple spread-sheet like editor. ",o.createElement("br",null),"The inline relations in combination with the editor should be very easy to use if you enter the data directly or if you have them as a csv/spread-sheet file."),o.createElement("code",{className:"example block"},"group: bank example\n\t\t\t\tdescription[[ the data for this dataset was generated using {'<'}http://www.generatedata.com/>\n\n\t\t\t\t* the relation _Customers_ contains basic information about the customers of the bank.\n\t\t\t\t* the relation _Accounts_ contains the basic information of a single account. Note that a customer can\n\t\t\t\thave any number of accounts.\n\t\t\t\t* the relation _PremiumCustomers_ contains the customer-ids of all customers with a total balance over\n\t\t\t\t1000\n\t\t\t\t]]\n\n\t\t\t\tCustomers = { cid firstname lastname\n\t\t\t\t1 Dexter Simpson\n\t\t\t\t2 Kaseem Gallagher\n\t\t\t\t3 Kuame Hamilton\n\t\t\t\t4 Robert Thompson\n\t\t\t\t5 Rhiannon Valentine\n\t\t\t\t6 Calvin Mays\n\t\t\t\t}\n\n\t\t\t\tAccounts = {\n\t\t\t\taid, cid, balance:number\n\t\t\t\t1, 1, 66\n\t\t\t\t2, 1, -304\n\t\t\t\t3, 2, 272\n\t\t\t\t4, 3, 3472\n\t\t\t\t5, 4, 975.7\n\t\t\t\t6, 4, 93\n\t\t\t\t7, 5, 534\n\t\t\t\t8, 5, -75.5\n\t\t\t\t}\n\t\t\t\t"),o.createElement("p",null,"As we can see the name of the relations are defined by the assignments.",o.createElement("br",null),"The inline-relations are enclosed by curly braces and contain the names of the attributes/columns in the first line and then a tuple/row per line where the values are simply separated by whitespace. You can also other seperators and can define the types explicitly as we can see at the Accounts relation. For further information can be found at ",o.createElement("a",{href:"#relalg-inline-relation"},"inline relation description"),"."),o.createElement("p",null,"Note that, unlike the variables used in a query, the definition of a new relation implicitly sets the attribute qualifier to the name of the relation. So the schema of the account relation is ",o.createElement("code",null,"(Accounts.aid, Accounts.cid, Accounts.balance)"),". This allows each attribute to be accessible with this name."),o.createElement("p",null,"The last relation we need to add in this example is the relation containing the banks premium Customers.",o.createElement("br",null),"They are specified by using the other two relations in a simple relational algebra statement that selects all customers with a total balance over 1000."),o.createElement("code",{className:"example block"},"group: bank example\n\t\t\t\tdescription[[ the data for this dataset was generated using {'<'}http://www.generatedata.com/>\n\n\t\t\t\t* the relation _Customers_ contains basic information about the customers of the bank.\n\t\t\t\t* the relation _Accounts_ contains the basic information of a single account. Note that a customer can\n\t\t\t\thave any number of accounts.\n\t\t\t\t* the relation _PremiumCustomers_ contains the customer-ids of all customers with a total balance over\n\t\t\t\t1000\n\t\t\t\t]]\n\n\t\t\t\tCustomers = { cid firstname lastname\n\t\t\t\t1 Dexter Simpson\n\t\t\t\t2 Kaseem Gallagher\n\t\t\t\t3 Kuame Hamilton\n\t\t\t\t4 Robert Thompson\n\t\t\t\t5 Rhiannon Valentine\n\t\t\t\t6 Calvin Mays\n\t\t\t\t}\n\n\t\t\t\tAccounts = {\n\t\t\t\taid, cid, balance:number\n\t\t\t\t1, 1, 66\n\t\t\t\t2, 1, -304\n\t\t\t\t3, 2, 272\n\t\t\t\t4, 3, 3472\n\t\t\t\t5, 4, 975.7\n\t\t\t\t6, 4, 93\n\t\t\t\t7, 5, 534\n\t\t\t\t8, 5, -75.5\n\t\t\t\t}\n\n\t\t\t\tPremiumCustomers =\n\t\t\t\t\tpi cid (\n\t\t\t\t\t\tsigma sum > 1000 (\n\t\t\t\t\t\t\tgamma cid; sum(balance)->sum (\n\t\t\t\t\t\t\t\tAccounts\n\t\t\t\t\t\t\t\tjoin Customers\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t"),o.createElement("p",null,"We have now seen how to define a dataset with its header containing the name and the description followed by relational algebra assignments defining the relations of the dataset."),o.createElement("p",null,"We can paste this definition directly in the ",o.createElement("i",null,"Group Editor")," to load and use it.",o.createElement("br",null),"In the next section we want to look at how we can publish this definition so that we give our students a single url or id to directly load the dataset."),o.createElement("h3",{id:"tutorial-maintainer-share-dataset"},"Share a dataset"),o.createElement("p",null,"If we want to share the definition of a dataset with other people we could simply give them the definition and they load it using the ",o.createElement("i",null,"group editor"),", but that would not be that practical for most cases."),o.createElement("p",null,"The simpler solution (for the users) is to publish the definition as a ",o.createElement("a",{href:"https://gist.github.com/"},"GitHub Gist")," and share the ID of the gist with others."),o.createElement("p",null,"Just create a gist with the definition as its content (the filename does not matter) and publish it. The ID of the Gist can now be found at the top of the page as ",o.createElement("i",null,"gist:xxxxxxxxxxxx")," or in the url after the last slash."),o.createElement("p",null,"This ID can then be shared and loaded in the interface or the calculator can be called directly with a specific ID by using using the parameter ",o.createElement("code",null,"?data=gist:xxxxxxxxxxxxxx"),"."),o.createElement("p",null,"For example the simple bank definition of this tutorial has been published as a ",o.createElement("a",{href:"https://gist.github.com/ragtime/2cfb981fbc5676182d64"},"Gist with the ID 2cfb981fbc5676182d64")," and can therefore be loaded directly with modifying the url by replacing all after ",o.createElement("code",null,"DOMAIN/relax/calc/")," with ",o.createElement("code",null,"/gist/2cfb981fbc5676182d64"),"."),o.createElement("h2",{id:"relalg-reference"},"Reference - relational algebra"),o.createElement("h3",{id:"relalg-syntax"},"General syntax"),o.createElement("div",null,o.createElement("h4",{id:"relalg-assignment"},"assignment"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("i",null,"NAME")," ",o.createElement("strong",null,"=")," ",o.createElement("i",null,"EXPRESSION"))))))),o.createElement("div",null,o.createElement("p",null,"Defines a new local variable with the name ",o.createElement("i",null,"NAME"),"; its content is defined by",o.createElement("i",null,"EXPRESSION")),o.createElement("p",null,"The name of the new relation must be unique."),o.createElement("p",null,"The definition has to be executed with the statement."),o.createElement("div",{className:"example"},o.createElement("code",null,"TestA = π a,b R TestB = σ d > 0 S -- statement using the variable TestA join TestB")),o.createElement("p",null,"An assignment (= definition of a variable) is no valid relational algebra expression on its own. If you miss the acutal query a error is thrown (",o.createElement("i",null,"Error: only assignments found; query is missing"),")."),o.createElement("div",{className:"example"},o.createElement("code",null,"-- this is the definition of the variable Test = π Customer.firstname, surname ( Customer ) -- this is the actual query/statement using the variable Test")),o.createElement("p",null,"The defined variable can be used like the assigned expression could be used because every usage of the variable gets replaced with its definition before the query gets executed.",o.createElement("br",null),"This also means that the variable-name has no influence on the schema of the expression and the names of the attributes/columns are not affected by assignment:",o.createElement("code",{className:"block example"},"X = R X join S"),"The attributes of the relation R are only accessible with its original names (R.a, R.b, ..), and are not affected by the assignment."),o.createElement("p",null,"There is a known problem when the last assignment ends with a natural join and the query consists of a single relation:"),o.createElement("code",null,"A = S join R A -- this is the query"),o.createElement("p",null,"The statement is ambiguous and the parser interprets it as ",o.createElement("code",null,"A = (S join R A)"),"where R is interpreted as a column argument for the theta-join and therefore detects a cyclic usage of the variable A."),o.createElement("p",null,"Solution: To get the expected behaviour you have to set braces around the assigned expression like ",o.createElement("code",null,"A = (S join R) A")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-comment-sl"},"single-line comment"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("strong",null,"-- "),o.createElement("i",null,"COMMENT_TEXT"),o.createElement("i",null,"EXPRESSION"))))))),o.createElement("div",null,o.createElement("p",null,"the '--' must be followed by at least one whitespace charater! inserts a comment; its text goes until the end of the line"),o.createElement("p",null,"comments are recognized as whitespace"),o.createElement("div",{className:"example"},o.createElement("code",null,"Test =",o.createElement("b",null,"-- This is the expression that is assigned to Test:"),"π Customer.firstname, surname ( Customer )")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-relation-name"},"pre defined relation"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("i",null,"RELATION_NAME"))))))),o.createElement("div",null,o.createElement("p",null,"Uses a pre defined relation with the name ",o.createElement("i",null,"RELATION_NAME")),o.createElement("p",null,"The code completion only works for this relations."),o.createElement("div",{className:"example"},o.createElement("code",null,"( Customers ) cross join ( Accounts )")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-comment-ml"},"multi-line comment"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("strong",null,"/* "),o.createElement("i",null,"COMMENT_TEXT"),o.createElement("strong",null," */"),o.createElement("i",null,"EXPRESSION"))))))),o.createElement("div",null,o.createElement("p",null,"inserts a comment that can span multiple lines"),o.createElement("p",null,"comments are recognized as whitespace"),o.createElement("div",{className:"example"},o.createElement("code",null,o.createElement("b",null,"/* This is a very very long comment */"),"Test = π Customer.firstname, surname ( Customer )")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-inline-relation"},"inline-relation"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("b",null,"{"),o.createElement("i",null,"COLUMN_NAME_1"),":",o.createElement("i",null,"COLUMN_TYPE_1")," ...",o.createElement("i",null,"ROW_1"),o.createElement("i",null,"ROW_2"),"...",o.createElement("b",null,"}"))))))),o.createElement("div",null,o.createElement("p",null,"The inline-relation is a temporary relation that can be defined directly in the statement. It is only valid in the defining statement"),o.createElement("p",null,"Every inline-relation is a valid expression and thus can be used at any position a",o.createElement("i",null,"EXPRESSION")," is expected."),o.createElement("p",null,"The inline-relation is defined by a header, that specifies the schema of the relation and the rows containing the values and is surrounded by curly braces."),o.createElement("div",null,"The header is defined by a sequence of",o.createElement("code",null,o.createElement("i",null,"QUALIFIER.COLUMN_NAME"),":",o.createElement("i",null,"COLUMN_TYPE"))," ",o.createElement("b",null,"separated by any whitespace, comma or semicolon."),"The ",o.createElement("i",null,"QUALIFIER")," is optional. Also the ",o.createElement("i",null,"COLUMN_TYPE")," can be omitted if the type is well defined by the values of that column. The first non null value of a column defines its type.",o.createElement("br",null),"True and false (case insensitive without quotes) are reserved for a boolean type. They can be used as a simple string but they do not define the type of the column as string.",o.createElement("br",null),"The ",o.createElement("i",null,"COLUMN_TYPE")," can be one of the following",o.createElement("ul",null,o.createElement("li",null,"string"),o.createElement("li",null,"number"),o.createElement("li",null,"date"),o.createElement("li",null,"boolean")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("qualifier"),".")),Object(Wn.NonTerminal)("column-name"),Object(Wn.Optional)(Object(Wn.Sequence)(":",Object(Wn.Choice)(0,"string","number","date","boolean"))))}))),o.createElement("p",null,"The rows of the relation are defined by a list of values per row with the type of the corresponding column. The values are ",o.createElement("b",null,"separated by whitespace comma or semicolon."),o.createElement("br",null),"Simple strings only containing letters, numbers, hyphens, underlines, dots or periods ([0-9a-zA-Z\\-_\\.]+) can be written without single quotes. ",o.createElement("i",null,"NULL")," and ",o.createElement("i",null,"null")," are constant values. If null, true or false should be used as string they have te be quoted.",o.createElement("br",null),"More complex strings must be surrounded by single quotes: ",o.createElement("i",null,"'content'")," or ",o.createElement("i",null,"content"),"but '' or 'long content containing spaces and special characters like !' or 'null'.",o.createElement("br",null),"Dates are written in ISO-format: YYYY-MM-DD without single quotes",o.createElement("br",null),"A null-value can be written as ",o.createElement("i",null,"null")," or ",o.createElement("i",null,"NULL")," (without single quotes).",o.createElement("br",null),"Numbers could be integers in the form (-?[0-9]+) or floats in the form (-?[0-9]+\\.[0-9]+).",o.createElement("br",null),"Numbers in single quotes are recognized as numbers if the column type is defined as number or has been detected to be number from a previous value; otherwise it will be a string value..",o.createElement("br",null),"A boolean value is denoted as either ",o.createElement("i",null,"true")," or ",o.createElement("i",null,"false")," (case insensitive)."),o.createElement("p",null,"The header and rows can be indented if needed."),o.createElement("div",{className:"example"},o.createElement("code",null,"-- type for column b is defined by the first value\n\t\t\t\trho A {\n\t\t\t\t\ta:number, b\n\t\t\t\t\t1, 2\n\t\t\t\t\t3, 4\n\t\t\t\t}\n\t\t\t\tcross join\n\t\t\t\t{\n\t\t\t\t\ta:string X.b:date c:number\n\t\t\t\t\tAlpha 1970-01-01 1\n\t\t\t\t\t'Beta 2' 1970-01-02 3\n\t\t\t\t\t'' 1970-01-03 4\n\t\t\t\t}")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-relalgexpr"},"relational algebra expression"),o.createElement("div",null,o.createElement("p",null,"A valid relational algebra expression is built by connecting ",o.createElement("i",null,"relation-name")," or ",o.createElement("i",null,"inline-relation"),"as atoms with the defined unary and binary operators."),"So a relational algebra expression is recursively defined as follows:",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Choice)(0,Object(Wn.Sequence)("(",Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),")"),Object(Wn.NonTerminal)("relation-name","#relalg-relation-name"),Object(Wn.NonTerminal)("inline-relation","#relalg-inline-relation"),Object(Wn.Sequence)(Object(Wn.Choice)(0,Object(Wn.NonTerminal)("projection","#relalg-operations-projection"),Object(Wn.NonTerminal)("selection","#relalg-operations-selection"),Object(Wn.NonTerminal)("rename relation","#relalg-operations-renamerelation"),Object(Wn.NonTerminal)("rename column","#relalg-operations-renamecolumn"),Object(Wn.NonTerminal)("order by","#relalg-operations-orderby"),Object(Wn.NonTerminal)("group by","#relalg-operations-groupby")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))),Object(Wn.Choice)(1,Object(Wn.Skip)(),Object(Wn.Sequence)(Object(Wn.Choice)(0,Object(Wn.NonTerminal)("intersection","#relalg-operations-intersection"),Object(Wn.NonTerminal)("union","#relalg-operations-union"),Object(Wn.NonTerminal)("division","#relalg-operations-division"),Object(Wn.NonTerminal)("subtraction","#relalg-operations-subtraction"),Object(Wn.NonTerminal)("cross product","#relalg-operations-crossjoin"),Object(Wn.NonTerminal)("θ-join","#relalg-operations-innerjoin"),Object(Wn.NonTerminal)("natural join","#relalg-operations-naturaljoin"),Object(Wn.NonTerminal)("left outer join","#relalg-operations-leftjoin"),Object(Wn.NonTerminal)("right outer join","#relalg-operations-rightjoin"),Object(Wn.NonTerminal)("full outer join","#relalg-operations-fulljoin"),Object(Wn.NonTerminal)("left semi join","#relalg-operations-leftsemijoin"),Object(Wn.NonTerminal)("right semi join","#relalg-operations-rightsemijoin"),Object(Wn.NonTerminal)("anti semi join","#relalg-operations-antijoin")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))))})))),o.createElement("h3",{id:"relalg-unary-operations"},"Unary operations"),"Each unary operation follows the following syntax:",o.createElement("div",{className:"b-syntax"},o.createElement("code",null,o.createElement("i",null,"FUNCTION")," ARGUMENT ",o.createElement("strong",null,"(")," CHILD_EXPRESSION ",o.createElement("strong",null,")"))),"The parentheses are Optional.",o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-projection"},"projection"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"π")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"pi")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"pi a, b ( R )")))))),o.createElement("p",null,"The argument is a subset of columns of the schema of the ",o.createElement("i",null,"CHILD_EXPRESSION")," or a ",o.createElement("a",{href:"#relalg-valueexpr"},"value expression")),o.createElement("div",{className:"example"},o.createElement("code",null,"π Customer.firstname, surname ( Customer )")),o.createElement("div",{className:"example"},o.createElement("code",null,"pi c.id, [1] ( ρ c ( Customer ) )")),"Expressions can be used to create more complex statements using one or more columns of a single row.",o.createElement("div",{className:"example"},o.createElement("code",null,"pi c.id, lower(username)->user, concat(firstname, concat(' ', lastname))->fullname ( ρ c ( Customer ) )")),"The virtual column ",o.createElement("i",null,"ROWNUM")," used in previous versions is not supported any more but the ",o.createElement("code",null,"rownum()")," expression can be used to get the same information. And it can also be used directly in the boolean condition of a selection or join.",o.createElement("div",{className:"example"},"In this example the top 5 customers with the most orders are selected, where countOrders could be the result of a previous aggregation.",o.createElement("code",null,"pi firstname, lastname sigma rownum() ","<","= 5 tau countOrders desc Customer")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"π","pi"),Object(Wn.OneOrMore)(Object(Wn.NonTerminal)("column","#relalg-column"),",")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))}))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-selection"},"selection"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"σ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"pi")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"sigma a > 2 ( R )")))))),o.createElement("p",null,"The argument is a ",o.createElement("a",{href:"#relalg-valueexpr"},"boolean expression")," that each row of ",o.createElement("i",null,"CHILD_EXPRESSION"),"is checked on"),o.createElement("div",{className:"example"},o.createElement("code",null,"σ firstname = 'Bob' or firstname = 'Alice' ( Customer )")),o.createElement("div",{className:"example"},o.createElement("code",null,"σ (id > 10 and id ","<"," 100) or id = 42 ( Customer )")),o.createElement("div",{className:"example"},"Selecting all customers with a firstname that has an even length.",o.createElement("code",null,"σ mod(length(firstname),2) = 0 ( Customer )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"σ","sigma"),Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))}))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-renamerelation"},"rename relation"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"ρ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"rho")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"( R ) join R.a = X.b (rho X ( R ))")))))),o.createElement("div",null,"The argument is the new name for the Relation returned by ",o.createElement("i",null,"CHILD_EXPRESSION"),o.createElement("div",{className:"example"},'rename the Relation from "Customer" to "a":',o.createElement("code",null,"π a.id, a.firstname ( ρ a ( Customer ) )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"ρ","rho"),Object(Wn.NonTerminal)("new relation name")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-renamecolumn"},"rename column"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"ρ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"rho")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,"the old and the new column names in a list (see example) ",o.createElement("br",null),'"←" can be substituted with "',"<",'-"',o.createElement("code",{className:"relalg block"},"pi x, b rho a->x {a, b\n\t\t\t\t\t\t1, 2\n\t\t\t\t\t\t3, 4\n\t\t\t\t\t}")))))),o.createElement("div",null,"The argument is the old and the new column names in a list (see example) ",o.createElement("br",null),'"←" can be substituted with "',"<",'-"',o.createElement("div",{className:"example"},"rename the columns id and firstname to myId and foobar:",o.createElement("code",null,"ρ myId←id, foobar←firstname (π id, firstname ( Customer ) )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"ρ","rho"),Object(Wn.OneOrMore)(Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.NonTerminal)("new name"),Object(Wn.Choice)(0,"←","<-"),Object(Wn.NonTerminal)("column","#relalg-column")),Object(Wn.Sequence)(Object(Wn.NonTerminal)("column","#relalg-column"),Object(Wn.Choice)(0,"→","->"),Object(Wn.NonTerminal)("new name"))),",")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-orderby"},"order by"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"τ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"tau")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"tau a asc, b desc ( R )")))))),o.createElement("div",null,"The argument is a list of columns by which the relation should be ordered (see examples)",o.createElement("div",{className:"example"},"order the result by the first column (default is ascending) and the second column descending:",o.createElement("code",null,"τ [1], firstname desc (π id, firstname ( Customer ) )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"τ","tau"),Object(Wn.OneOrMore)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("column","#relalg-column"),Object(Wn.Choice)(0,Object(Wn.Skip)(),"asc","desc")),",")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-groupby"},"group by"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"γ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"gamma")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"gamma a, count(*)->x ( R )")))))),o.createElement("div",null,"The argument is a list of columns to group by, separated by commas followed by a semicolon",o.createElement("br",null),"and a list of aggregate functions to apply with their new name in form ",o.createElement("span",null,"AGG( COLUMN ) -> NEW_NAME"),o.createElement("div",{className:"example"},"order the result by the first column (default is ascending) and the second column descending:",o.createElement("code",null,"γ a, b ; sum(c)->x ( Customer )")),o.createElement("p",null,"If no grouping columns are provided the entire relation is the group."),o.createElement("div",null,"supported aggregate functions by type:",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("td",null," "),o.createElement("th",null,"number"),o.createElement("th",null,"string"),o.createElement("th",null,"date"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"COUNT( * )"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes")),o.createElement("tr",null,o.createElement("th",null,"COUNT( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes")),o.createElement("tr",null,o.createElement("th",null,"MIN( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes")),o.createElement("tr",null,o.createElement("th",null,"MAX( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes")),o.createElement("tr",null,o.createElement("th",null,"SUM( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"no"),o.createElement("td",null,"no")),o.createElement("tr",null,o.createElement("th",null,"AVG( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"no"),o.createElement("td",null,"no")))))),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"γ","gamma"),Object(Wn.Sequence)(Object(Wn.ZeroOrMore)(Object(Wn.NonTerminal)("column","#relalg-column"),","),";",Object(Wn.OneOrMore)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"COUNT(*)",Object(Wn.Sequence)(Object(Wn.Choice)(0,"COUNT","MIN","MAX","SUM","AVG"),"(",Object(Wn.NonTerminal)("column","#relalg-column"),")")),Object(Wn.Choice)(0,"→","->"),Object(Wn.NonTerminal)("new name")),","))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("h3",{id:"relalg-binary-operations"},"Binary operations"),"Each binary operation follows the following syntax:",o.createElement("div",{className:"b-syntax"},o.createElement("code",null,o.createElement("strong",null,"(")," CHILD_EXPRESSION ",o.createElement("strong",null,")")," ",o.createElement("strong",null,"FUNCTION")," ARGUMENT ",o.createElement("strong",null,"("),"CHILD_EXPRESSION ",o.createElement("strong",null,")"))),"The parentheses are Optional.",o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-intersection"},"intersection - ∩"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"∩")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"intersect"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",null,"( Customer ) ∩ ( Customer )")),"the schemas must be unifiable",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"∩","intersect")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-union"},"union - ∪"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"∪")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"union"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",null,"( Customer ) ∪ ( Customer )")),"the schemas must be unifiable",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"∪","union")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-division"},"division"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"÷")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"/"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",null,"( Customer ) ÷ ( Customer )")),"the schemas must be unifiable",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"÷","/")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-subtraction"},"subtraction / set-difference"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"-"),o.createElement("td",{className:"math"},"∪")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"\\",o.createElement("br",null),"except"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",null,"( pi firstname ( Customer ) ) - ( rho test","<","-lastname ( pi lastname ( Customer ) ) )")),"the schemas must be unifiable",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"-","\\","except")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-crossjoin"},"cross product"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⨯")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"cross join"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⨯",Object(Wn.Sequence)("cross","join"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-innerjoin"},"Theta-join / θ-join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⋈")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"join",o.createElement("br",null),"inner join"))))),o.createElement("div",null,"join condition",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⋈",Object(Wn.Sequence)(Object(Wn.Optional)("inner"),"join")),Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))}))),o.createElement("p",null,"Special case:",o.createElement("br",null),"The name of a single boolean column (like ",o.createElement("code",null,"R join a S"),") can not be used directly as a join condition due to ambiguities in the relational algebra syntax.",o.createElement("br",null),"The column must either be specified with its qualifier (",o.createElement("code",null,"R join R.a S"),") or wrapped in parentheses (",o.createElement("code",null,"R join (a) S"),").",o.createElement("br",null),"This is not necessary for more complex boolean expressions. The problem is only that the single column name can not be distinguished from a relation name: the expression ",o.createElement("code",null,"X=R join S X")," could be interpreted as ",o.createElement("code",null,"A=(R join S A)")," instead of ",o.createElement("code",null,"A=(R join S) A"),".")),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-naturaljoin"},"natural join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⋈")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"join",o.createElement("br",null),"natural join"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",{className:"block"},"ρ a ( Customer )",o.createElement("span",{className:"math"},"⋈")," a.name ","<"," b.name ( ρ b ( Customer ) )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⋈",Object(Wn.Sequence)("natural","join"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-leftjoin"},"left outer join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⟕")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"left outer join",o.createElement("br",null),"left join"))))),o.createElement("div",null,"optional join condition; if no join condition is given it acts as a natural left outer join",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⟕",Object(Wn.Sequence)("left",Object(Wn.Optional)("outer"),"join")),Object(Wn.Optional)(Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr")))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-rightjoin"},"right outer join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⟖")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"right outer join",o.createElement("br",null),"right join"))))),o.createElement("div",null,"optional join condition; if no join condition is given it acts as a natural right outer join",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⟖",Object(Wn.Sequence)("right",Object(Wn.Optional)("outer"),"join")),Object(Wn.Optional)(Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr")))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-fulljoin"},"full outer join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⟗")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"full outer join"))))),o.createElement("div",null,"optional join condition; if no join condition is given it acts as a natural full outer join",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⟗",Object(Wn.Sequence)("full","outer","join")),Object(Wn.Optional)(Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr")))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-leftsemijoin"},"left semi join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⋉")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"left semi join"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⋉",Object(Wn.Sequence)("left","semi","join"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))}))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-rightsemijoin"},"right semi join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⋊")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"right semi join"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⋊",Object(Wn.Sequence)("right","semi","join"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-antijoin"},"anti semi join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"▷")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"anti semi join",o.createElement("br",null),"anti join"))))),o.createElement("div",null,"no argument",o.createElement("br",null),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"▷",Object(Wn.Sequence)("anti",Object(Wn.Optional)("semi"),"join")))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("h3",{id:"relalg-operator-precedence"},"Operator precedence"),o.createElement("p",null,"The operator precedence allows to obmit most of braces.",o.createElement("br",null),"The used precedence is shown in the table below.",o.createElement("br",null),"All operators are left associative."),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"order of precedence"),o.createElement("th",null,"Operator"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,"0"),o.createElement("td",null,o.createElement("a",{href:"#relalg-relation-name"},"relation-name"),",",o.createElement("a",{href:"#relalg-inline-relation"},"inline-relation"))),o.createElement("tr",null,o.createElement("td",null,"1"),o.createElement("td",null,o.createElement("a",{href:"#relalg-operations-projection"},"projection"),",",o.createElement("a",{href:"#relalg-operations-selection"},"selection"),",",o.createElement("a",{href:"#relalg-operations-renamecolumn"},"rename (columns)"),",",o.createElement("a",{href:"#relalg-operations-renamerelation"},"rename (relations)"),",",o.createElement("a",{href:"#relalg-operations-groupby"},"group"),",",o.createElement("a",{href:"#relalg-operations-orderby"},"order by"))),o.createElement("tr",null,o.createElement("td",null,"2"),o.createElement("td",null,o.createElement("a",{href:"#relalg-operations-crossjoin"},"cross product"),",",o.createElement("a",{href:"#relalg-operations-innerjoin"},"theta join"),",",o.createElement("a",{href:"#relalg-operations-naturaljoin"},"natural join"),",",o.createElement("a",{href:"#relalg-operations-leftjoin"},"left outer join"),",",o.createElement("a",{href:"#relalg-operations-rightjoin"},"right outer join"),",",o.createElement("a",{href:"#relalg-operations-fulljoin"},"full outer join"),",",o.createElement("a",{href:"#relalg-operations-leftsemijoin"},"left semi-join"),",",o.createElement("a",{href:"#relalg-operations-rightsemijoin"},"right semi-join"),",",o.createElement("a",{href:"#relalg-operations-antijoin"},"anti semi-join"),",",o.createElement("a",{href:"#relalg-operations-division"},"division"))),o.createElement("tr",null,o.createElement("td",null,"3"),o.createElement("td",null,o.createElement("a",{href:"#relalg-operations-intersection"},"intersection"))),o.createElement("tr",null,o.createElement("td",null,"4"),o.createElement("td",null,o.createElement("a",{href:"#relalg-operations-union"},"union"),",",o.createElement("a",{href:"#relalg-operations-subtraction"},"subtraction")))))),o.createElement("div",{className:"example"},o.createElement("code",null,"A join B x C"),o.createElement("br",null),"is equal to",o.createElement("br",null),o.createElement("code",null,"((A join B) x C)"),o.createElement("br",null),"because the cross product and the natural join are in the same precedence className."),o.createElement("div",{className:"example"},o.createElement("code",null,"sigma true A join sigma true B"),o.createElement("br",null),"is equal to",o.createElement("br",null),o.createElement("code",null,"(sigma true (A)) join (sigma true (B))"),o.createElement("br",null),"because the unary operators have a higher precedence than the binary operators."),o.createElement("h3",{id:"relalg-misc"},"Misc"),o.createElement("h4",{id:"relalg-column"},"Column"),"column is either",o.createElement("ul",null,o.createElement("li",null,'the name of a column: "columnName"'),o.createElement("li",null,'the number of the column (starting with 1): "[column-number]"'),o.createElement("li",null,'a full qualified column: "qualifier.columnName"'),o.createElement("li",null,"a value expression (if allowed for the specific operation)")),"the qualifier is optional if the column is unique in its schema.",o.createElement("h4",{id:"relalg-valueexpr"},"Value expressions"),"With most operators you can use a value-expression which connects one or more columns of a single row to calculate a new value. This is possible for:",o.createElement("ul",null,o.createElement("li",null,"the projection creating a new column (make sure to give the column a name)"),o.createElement("li",null,"the selection any expression evaluating to boolean can be used"),o.createElement("li",null,"for the joins any expression evaluating to boolean can be used; note that the ",o.createElement("code",null,"rownum()")," expression always represents the index of the lefthand relation")),"The expressions always operate on a single row/tuple of a table/relation.",o.createElement("br",null),"If you want to calculate values vertically over all values of a specific column/attribute you need to use group by with an aggregate function. The following table lists all functions and operators that can be used in an expression. They can be combined and nested in any arbitrary order but note that they do evaluate to a single type defined by the outer most expression. The following operators can be used:",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("th",null,"returns type"),o.createElement("th",null,"description"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a AND b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"logical and")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a OR b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"logical or")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a XOR b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"logical exclusive or")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"NOT b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"logical not")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a = b a != b a ","<"," b a > b a ","<","= b a >= b a != b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"compares two values of the same type")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a:string LIKE 'PATTERN'")),o.createElement("td",null,"boolean"),o.createElement("td",null,"returns true if expression evaluating to a string ",o.createElement("code",null,"a")," matches the pattern given as the second operand.",o.createElement("br",null),"The pattern has to be given as a string literal;",o.createElement("p",null,"An underscore (",o.createElement("code",null,"_"),") in the pattern stands for any single character and any percent sign (",o.createElement("code",null,"%"),") stands for any sequence of zero or more characters."))),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a:string ILIKE 'PATTERN'")),o.createElement("td",null,"boolean"),o.createElement("td",null,"same as ",o.createElement("code",null,"LIKE")," but matches case-insensitive.",o.createElement("br",null),"This is not in the SQL standard but is a PostgreSQL extension.")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a + b a - b a * b a / b a % b")),o.createElement("td",null,"number"),o.createElement("td",null,"arithmetic addition, subtraction, multiplication, division, modulo")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"rand()")),o.createElement("td",null,"number"),o.createElement("td",null,"returns a random number in the interval [0, 1]")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"rownum()")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the index of the current row (starting with 0).",o.createElement("br",null),"If the function is used in a binary relational algebra expression (e.g. a join) it always represents the index of the left operand.")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"length(a:string)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the length of the string")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"date(a:string)")),o.createElement("td",null,"date"),o.createElement("td",null,"parses the given string to a date object. The string must be in the form YYYY-MM-DD")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"adddate(a:date, b:number)")),o.createElement("td",null,"date"),o.createElement("td",null,"adds the given number of days to date ",o.createElement("code",null,"a"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"subdate(a:date, b:number)")),o.createElement("td",null,"date"),o.createElement("td",null,"subtracts the given number of days from date ",o.createElement("code",null,"a"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"now() transaction_timestamp() statement_timestamp()")),o.createElement("td",null,"date"),o.createElement("td",null,"returns a timestamp representing the start of the query execution",o.createElement("br",null),"transaction- and statement start are the very same value due to the lack of a transaction concept")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"clock_timestamp()")),o.createElement("td",null,"date"),o.createElement("td",null,"returns the current timestamp while executing the query")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"year(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the year component of a given date")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"month(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the month component of a given date as a number. (1 = Sunday, 2 = Monday, ..., 7 = Saturday)")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"day(a:date) dayofmonth(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the day component of a given date as a number in the range 1 to 31")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"hour(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the hour component of a given date as a number in the range 0 to 23")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"minute(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the minute component of a given date as a number in the range 0 to 59")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"second(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the second component of a given date as a number in the range 0 to 59")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"concat(a:string [, ...])")),o.createElement("td",null,"string"),o.createElement("td",null,"concatenates the given strings")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"upper(a:string) ucase(a:string)")),o.createElement("td",null,"string"),o.createElement("td",null,"converts the given string to upper-case")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"lower(a:string) lcase(a:string)")),o.createElement("td",null,"string"),o.createElement("td",null,"converts the given string to lower-case")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"strlen(a:string)")),o.createElement("td",null,"number"),o.createElement("td",null,"number of characters of the string")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"abs(a:number)")),o.createElement("td",null,"number"),o.createElement("td",null,"the absolute value of the given number")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"add(a, b) sub(a, b) mul(a, b) div(a, b) mod(a, b)")),o.createElement("td",null,"number"),o.createElement("td",null,"arithmetic addition, ",o.createElement("br",null),"subtraction, ",o.createElement("br",null),"multiplication, ",o.createElement("br",null),"division or ",o.createElement("br",null),"modulo of the given numbers")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"round(a) floor(a) ceil(a)")),o.createElement("td",null,"number"),o.createElement("td",null,"round to nearest integer, ",o.createElement("br",null),"largest integer not greater than the argument or",o.createElement("br",null),"smallest integer not less than the argument")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",{className:"sql"},"coalesce(",o.createElement("strong",null,"value")," [, ...])")),o.createElement("td",null,"type of ",o.createElement("strong",null,"value")),o.createElement("td",null,"returns the first of its arguments that is not null or null if all arguments are null. Note that all arguments must have the same datatype.")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",{className:"sql"},"CASE WHEN ",o.createElement("strong",null,"condition")," THEN result [WHEN ...] [ELSE ",o.createElement("strong",null,"result"),"] END")),o.createElement("td",null,"type of ",o.createElement("strong",null,"result")),o.createElement("td",null,"returns the first result where the condition evaluates to true. If all conditions are false the else part is executed or null is returnt if the else part is missing. Note that all results must have the same datatype."))))),"The operator precedence is the same as used in ",o.createElement("a",{href:"https://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html"},"MySQL")," (from strong to weak):",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"order of precedence"),o.createElement("th",null,"Operators"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,"0"),o.createElement("td",null,"functions, constants, columns")),o.createElement("tr",null,o.createElement("td",null,"1"),o.createElement("td",null,"! (boolean not)")),o.createElement("tr",null,o.createElement("td",null,"2"),o.createElement("td",null,"- (unary minus)")),o.createElement("tr",null,o.createElement("td",null,"3"),o.createElement("td",null,"*, /, %")),o.createElement("tr",null,o.createElement("td",null,"4"),o.createElement("td",null,"-, +")),o.createElement("tr",null,o.createElement("td",null,"5"),o.createElement("td",null,"= (comparison), >=, >, ","<","=, ","<",", ","<",">, !=, LIKE, ILIKE")),o.createElement("tr",null,o.createElement("td",null,"6"),o.createElement("td",null,"CASE, WHEN, THEN, ELSE")),o.createElement("tr",null,o.createElement("td",null,"7"),o.createElement("td",null,"AND")),o.createElement("tr",null,o.createElement("td",null,"8"),o.createElement("td",null,"XOR")),o.createElement("tr",null,o.createElement("td",null,"9"),o.createElement("td",null,"OR, ||"))))),o.createElement("h2",{id:"sql-reference"},"Reference - SQL"),o.createElement("p",null,"The goal of the SQL mode of the relational algebra calculator is to provide a translation from SQL to relational algebra to show how they are related. It does not support all features a real database system like ",o.createElement("a",{href:"http://www.postgresql.org",target:"_blank"},"PostgreSQL")," or ",o.createElement("a",{href:"https://www.mysql.com/",target:"_blank"},"MySQL"),' does because the goal is to provide a translation into relational algebra. This means that many features like correlated-substatements are not supported because the translation into relational algebra is not trivial and modern database systems use an extended set of operators internally that do not require a one-to-one translation into "classNameical" relational algebra. Therefore the learning effect for users of this tool would not be that big.'),o.createElement("h3",{id:"sql-syntax"},"General syntax"),o.createElement("p",null,"All keywords are case insensitv."),o.createElement("p",null,"The following Synopsis is a adapted version of ",o.createElement("a",{href:"http://www.postgresql.org/docs/9.4/static/sql-select.html",target:"_blank"},"PostgreSQL")," and shows the general syntax of the supported SQL. Brackets indicate optional parts. Braces and vertical lines indicate that one of the alternatives has to be chosen. Dots mean that the preceding element can be repeated."),o.createElement("code",{className:"block sql"},"[ ",o.createElement("a",{href:"#sql-with"},"WITH")," ",o.createElement("strong",null,"with_query")," [, ...] ]",o.createElement("a",{href:"#sql-select"},"SELECT")," [ DISTINCT ] * | ",o.createElement("strong",null,"expression")," [ [ AS ] ",o.createElement("strong",null,"output_name")," ] [, ...]",o.createElement("a",{href:"#sql-from"},"FROM")," ",o.createElement("strong",null,"from_item")," [, ...] [ ",o.createElement("a",{href:"#sql-where"},"WHERE")," ",o.createElement("strong",null,"condition")," ] [ ",o.createElement("a",{href:"#sql-groupby"},"GROUP BY")," ",o.createElement("strong",null,"column")," [, ...] ] [ ",o.createElement("a",{href:"#sql-having"},"HAVING")," ",o.createElement("strong",null,"condition")," ] [ ","{"," ",o.createElement("a",{href:"#sql-setoperators"},"UNION")," | ",o.createElement("a",{href:"#sql-setoperators"},"INTERSECT")," | ",o.createElement("a",{href:"#sql-setoperators"},"EXCEPT")," } [ ALL | DISTINCT ] ",o.createElement("strong",null,"select")," ] [ ",o.createElement("a",{href:"#sql-orderby"},"ORDER BY")," ",o.createElement("strong",null,"column")," [ ASC | DESC ] [, ...] ] [ ",o.createElement("a",{href:"#sql-limit"},"LIMIT")," ","{"," ",o.createElement("strong",null,"count")," | ALL } ] [ ",o.createElement("a",{href:"#sql-limit"},"OFFSET")," ",o.createElement("strong",null,"start")," [ ROW | ROWS ] ] [ ",o.createElement("a",{href:"#sql-limit"},"FETCH")," ","{"," FIRST | NEXT } [ ",o.createElement("strong",null,"count")," ] ","{"," ROW | ROWS } ONLY ] where ",o.createElement("strong",null,"from_item")," can be one of:",o.createElement("strong",null,"table_name")," [ AS ",o.createElement("strong",null,"alias")," ]",o.createElement("strong",null,"with_query_name")," [ AS ",o.createElement("strong",null,"alias")," ] ( ",o.createElement("strong",null,"select")," ) AS ",o.createElement("strong",null,"alias"),o.createElement("strong",null,"from_item")," CROSS JOIN ",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," NATURAL JOIN ",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," [ INNER ] JOIN ",o.createElement("strong",null,"from_item")," ON join_condition",o.createElement("strong",null,"from_item")," [ INNER ] JOIN ",o.createElement("strong",null,"from_item")," NATURAL",o.createElement("strong",null,"from_item")," [ INNER ] JOIN ",o.createElement("strong",null,"from_item")," USING ( join_column [, ...] )",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," ","{"," LEFT | RIGHT | FULL } [ OUTER ] JOIN ON join_condition",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," ","{"," LEFT | RIGHT | FULL } [ OUTER ] JOIN NATURAL ",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," ","{"," LEFT | RIGHT | FULL } [ OUTER ] JOIN USING ( join_column [, ...] ) ",o.createElement("strong",null,"from_item"),"and ",o.createElement("strong",null,"with_query")," is:",o.createElement("strong",null,"with_query_name")," AS ( ",o.createElement("strong",null,"select")," )"),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("WITH","#sql-with"),Object(Wn.OneOrMore)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("name"),"AS","(",Object(Wn.NonTerminal)("select","#sql-select"),")"),",")),"skip"),Object(Wn.Sequence)(Object(Wn.Terminal)("SELECT","#sql-select"),Object(Wn.Optional)("DISTINCT","skip"),Object(Wn.Choice)(0,"*",Object(Wn.OneOrMore)(Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.NonTerminal)("column"),Object(Wn.Optional)(Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("output_name")))),Object(Wn.Sequence)(Object(Wn.NonTerminal)("expression","#sql-valueexpr"),Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("output_name")))),",")),Object(Wn.Terminal)("FROM","#sql-from"),Object(Wn.OneOrMore)(Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.NonTerminal)("table_name"),Object(Wn.Optional)(Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("alias")))),Object(Wn.Sequence)("(",Object(Wn.NonTerminal)("select"),")",Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("alias")))),",")),Object(Wn.OneOrMore)(Object(Wn.Choice)(0,Object(Wn.Skip)(),Object(Wn.Sequence)(Object(Wn.Choice)(0,Object(Wn.Sequence)(",",Object(Wn.Comment)("old syntax for cross join")),Object(Wn.Sequence)(Object(Wn.Choice)(0,"CROSS","NATURAL"),"JOIN"),Object(Wn.Sequence)(Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.Optional)("INNER"),"JOIN"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"LEFT","RIGHT","FULL"),Object(Wn.Optional)("OUTER"),"JOIN")),Object(Wn.Choice)(0,Object(Wn.Sequence)("ON",Object(Wn.NonTerminal)("condition")),Object(Wn.Sequence)("USING","(",Object(Wn.OneOrMore)(Object(Wn.NonTerminal)("join_column"),","),")"),Object(Wn.Sequence)("NATURAL")))),Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.NonTerminal)("table_name"),Object(Wn.Optional)(Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("alias")))),Object(Wn.Sequence)("(",Object(Wn.NonTerminal)("select"),")",Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("alias"))))))),Object(Wn.Sequence)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("WHERE","#sql-where"),Object(Wn.NonTerminal)("condition")),"skip"),Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("GROUP BY","#sql-groupby"),Object(Wn.NonTerminal)("expression","#sql-valueexpr")),"skip"),Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("HAVING","#sql-having"),Object(Wn.NonTerminal)("condition")),"skip")),Object(Wn.Sequence)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"UNION","INTERSECT","EXCEPT"),Object(Wn.Choice)(0,Object(Wn.Skip)(),"DISTINCT","ALL"),Object(Wn.NonTerminal)("select")),"skip"),Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("ORDER BY","#sql-orderby"),Object(Wn.OneOrMore)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("expression","#sql-valueexpr"),Object(Wn.Choice)(0,"ASC","DESC")),",")),"skip")),Object(Wn.Sequence)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("LIMIT","#sql-limit"),Object(Wn.Choice)(0,Object(Wn.NonTerminal)("count"),"ALL")),"skip"),Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("OFFSET","#sql-limit"),Object(Wn.NonTerminal)("start"),Object(Wn.Optional)("ROWS")),"skip")),Object(Wn.Sequence)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("FETCH FIRST","#sql-limit"),Object(Wn.NonTerminal)("count"),Object(Wn.Optional)("ROWS"),"ONLY"),"skip"))))})),o.createElement("h3",{id:"sql-translation"},"Semantic and Translation to relational algebra"),o.createElement("h4",{id:"sql-translation-sequence"},"Sequence of execution"),o.createElement("p",null,'The SQL statement is translated directly into relational algebra. To understand some of the effects of the tool it might be helpful to understand the steps of the translation process. As mentioned before, real database systems might take a different (more complex) aproach but this should help to get an idea of how SQL could be translated into "classNameical" relational algebra.'),o.createElement("p",null,"The following list shows the translation from SQL into relational algebra starting with the inner most relational algebra expression at the top."),o.createElement("ol",null,o.createElement("li",null,"replace all usages of the temporary-tables defined in the WITH-clause with their definitions"),o.createElement("li",null,"FROM-clause is translated left associative with all joins having the same precedence (",o.createElement("code",null,","),"is a cross join)"),o.createElement("li",null,"selection with condition from where-clause is added"),o.createElement("li",null,"group by"),o.createElement("li",null,"selection with condition from having-clause"),o.createElement("li",null,"union/intersect/except"),o.createElement("li",null,"projection is added to choose the requested columns of the SELECT-clause"),o.createElement("li",null,"the columns are renamed to get the requested output-name specified in the SELECT-clause"),o.createElement("li",null,"order by"),o.createElement("li",null,"limit/offset is mapped to a selection")),o.createElement("h4",{id:"sql-select"},"SELECT"),o.createElement("p",null,"The direct translation into relational algebra with implicit duplication elimination requires the ",o.createElement("code",null,"distinct"),"keyword to be equivalent. A warning is shown if you omit it."),o.createElement("p",null,"The select-clause is translated into up to two relalg operators."),o.createElement("ul",null,o.createElement("li",null,"The most basic case is ",o.createElement("code",null,"select ",o.createElement("strong",null,"*")," ...")," where no changes are made to the schema of the result. Therefore no projection is needed. You can use the optional table-alias-prefix if the columns of a single table/relation should be returned only: ",o.createElement("code",{className:"sql"},"select distinct R.* from R inner join S")),o.createElement("li",null,"When a subset of the columns are selected and/or reordered (",o.createElement("code",null," select a, b from ..."),") then a single ",o.createElement("a",{href:"#relalg-operations-projection"},"projection")," is used."),o.createElement("li",null,"Additionally to the previous case a ",o.createElement("a",{href:"#relalg-operations-renamecolumn"},"rename-column operator")," is added after the projection if new output-names are given with ",o.createElement("code",null,"as foo"),". e.g. ",o.createElement("code",null,"select a ",o.createElement("strong",null,"as foo")," from ..."))),o.createElement("p",null,"The allowed expressions are the same as for the ",o.createElement("a",{href:"#relalg-operations-projection"},"projection"),". So it can be either the name of the column (with optional renaming using ",o.createElement("code",null,"as"),") or a complex",o.createElement("a",{href:"#sql-valueexpr"},"value expression"),". In the latter case a output-name must be given using",o.createElement("code",null,"as")," because the tool requires every column to have a name."),o.createElement("h4",{id:"sql-from"},"FROM"),o.createElement("p",null,"In its simplest form the from-clause holds a single table/relation name that is used directly in the relalg statement. If the optional table-alias is specified with ",o.createElement("code",null,"table as foo")," this is reflected by wrapping the relation in a ",o.createElement("a",{href:"#relalg-operations-renamerelation"},"rename-relation operator")," with the given output-name."),o.createElement("code",{className:"example sql"},"select distinct x.a, x.b from R as x"),o.createElement("p",null,"Joins can be expressed using the ANSI join syntax"),o.createElement("code",{className:"example sql"},"select distinct * from A, B inner join C on ... inner join D natural natural join E left outer join F on ... left outer join G natural right outer join H on ... right outer join I natural full outer join J on ... full outer join K natural where ..."),o.createElement("p",null,"The comma is part of the old join syntax and is translated into a ",o.createElement("a",{href:"#relalg-operations-crossjoin"},"cross join"),"."),o.createElement("code",{className:"example sql"},"select distinct * from R, S as s, T where s.a = R.a"),o.createElement("p",null,"Instead of the name of relation a non-correlated substatement can be used. A table alias must be provided with ",o.createElement("code",null,"(...) as foo"),".",o.createElement("br",null),"A non-correlated substatement can be directly translated into relational algebra by just translate the sub-statement into relational algebra and use the resulting operator tree instead of the relation."),o.createElement("p",null,"Non-correlated means that it must not reference/use any columns of tables defined in the outer scope.",o.createElement("br",null),'This limitation is intentionally because the translation into relational algebra is not trivial and modern database systems use an extended set of operators internally that do not require a one-to-one translation into "classNameical" relational algebra. Therefore the learning effect for users of this tool would not be that big.'),o.createElement("code",{className:"example sql"},"select distinct * from R, (select * from S where a > 0) as x where x.a = R.a"),o.createElement("h4",{id:"sql-where"},"WHERE"),o.createElement("p",null,"The boolean condition in the where-clause can be any ",o.createElement("a",{href:"#sql-valueexpr"},"expression")," evaluating to boolean."),o.createElement("p",null,"The where clause is directly translated to an ",o.createElement("a",{href:"#relalg-operations-selection"},"relational algebra selection")," with the very same condition. This selection is applied after joining relations of the from-clause therefore has to use the original column names."),o.createElement("p",null,"Subquery Expressions like ",o.createElement("code",null,"EXISTS"),", ",o.createElement("code",null,"IN"),", ",o.createElement("code",null,"ANY/SOME")," or ",o.createElement("code",null,"ALL"),"are ",o.createElement("strong",null,"not supported"),' because their translation into relational algebra is not trivial and modern database systems use an extended set of operators internally that do not require a one-to-one translation into "classNameical" relational algebra. Therefore the learning effect for users of this tool would not be that big.'),o.createElement("h4",{id:"sql-groupby"},"GROUP BY"),o.createElement("p",null,"The GROUP-BY-clause takes a list of column names only argument."),o.createElement("p",null,"The GROUP-BY-clause is directly translated to the ",o.createElement("a",{href:"#relalg-operations-groupby"},"relational algebra group-by operation")," and is executed directly after the selection built from the WHERE-clause and before the projection/renaming build from the SELECT-clause. Therefore the column names that can be used are the ones available after all joining all tables."),o.createElement("p",null,"The aggregations used in the ",o.createElement("a",{href:"#relalg-operations-groupby"},"relational algebra group-by operation")," are taken from the SELECT-clause and an output-name must be given using ",o.createElement("code",null,"as"),"because the tool requires every column to have a name."),o.createElement("p",null,"If no aggregations are present in the SELECT-clause a projection is used instead of the group-by operation because ",o.createElement("a",{href:"#relalg-operations-groupby"},"sigma")," without aggregation has the very same effect."),o.createElement("p",null,"Every non-aggregation-column in the SELECT-clause must be present in the group by clause because the would not be available after the grouping."),o.createElement("h4",{id:"sql-having"},"HAVING"),o.createElement("p",null,"The HAVING-Clause represents an optional ",o.createElement("a",{href:"#relalg-operations-selection"},"relational algebra selection"),". The boolean condition can be any ",o.createElement("a",{href:"#sql-valueexpr"},"expression")," evaluating to boolean."),o.createElement("p",null,"The resulting selection is executed directly after the ",o.createElement("a",{href:"#relalg-operations-groupby"},"relational algebra group-by operation"),"."),o.createElement("p",null,"Unlike ",o.createElement("a",{href:"http://www.postgresql.org/docs/9.4/static/sql-select.html#SQL-HAVING",target:"_blank"},"PostgreSQL"),"the HAVING-clause is only allowed when either a aggregation or grouping is present."),o.createElement("h4",{id:"sql-orderby"},"ORDER BY"),o.createElement("p",null,"Order by takes a list of column names or indices of columns (starting with 1) as its argument."),o.createElement("p",null,"It is directly translated to the ",o.createElement("a",{href:"#relalg-operations-orderby"},"extended relational algebra operation order by (tau)"),"."),o.createElement("h4",{id:"sql-limit"},"LIMIT"),o.createElement("p",null,"The LIMIT-clause can be either specified with the LIMIT-OFFSET syntax used by PostgreSQL and MySQL or the FETCH-FIRST syntax introduced in SQL:2008."),o.createElement("p",null,"It is translated into a ",o.createElement("a",{href:"#relalg-operations-selection"},"relational algebra selection")," using the",o.createElement("code",null,"rownum()"),"-function to limit the number of rows returned."),o.createElement("h4",{id:"sql-setoperators"},"UNION / INTERSECT / EXCEPT"),o.createElement("p",null,"The Set-Operators UNION, INTERSECT and EXCEPT directly map to the relational algebra operators ",o.createElement("a",{href:"#relalg-operations-union"},"union"),", ",o.createElement("a",{href:"#relalg-operations-intersection"},"intersection")," and ",o.createElement("a",{href:"#relalg-operations-subtraction"},"subtraction"),"."),o.createElement("p",null,"The keyword ",o.createElement("code",null,"DISTINCT")," is optional because it represents the default behavior. The keyword",o.createElement("code",null,"ALL")," is ignored and a warning is shown because the targeted relational algebra has a implicit elimination duplicate rows."),o.createElement("p",null,"Parentheses can be used to create more complex statements:",o.createElement("br",null),o.createElement("code",{className:"example sql"},"( select distinct * from S union select distinct * from T ) except select distinct * from T order by 1 limit 1")),o.createElement("h4",{id:"sql-with"},"WITH"),o.createElement("p",null,"The WITH-clause (also known as ",o.createElement("i",null,"common table expressions"),") provides a way to define subqueries for single or multiple use in a statement. This can be thought as defining a temporary table for that query in SQL terminology or ",o.createElement("a",{href:"#relalg-assignment"},"creating variables in relational algebra"),". Recursive evaluation is not supported."),o.createElement("p",null,"Each subquery can be referenced by the name from the WITH-clause. The subquery is automatically renamed to the name used in the WITH-clause."),o.createElement("h4",{id:"sql-valueexpr"},"Value expressions"),o.createElement("p",null,"Value expressions are used for boolean expressions for WHERE- and HAVING-clause, the boolean conditions of joins and calculated values in the SELECT-clause. The type of a expression is either ",o.createElement("i",null,"string"),", ",o.createElement("i",null,"number"),", ",o.createElement("i",null,"date")," or ",o.createElement("i",null,"boolean")," and is determined by the used operations and columns."),o.createElement("p",null,"The supported functions and operations are the same for SQL and relational algebra: ",o.createElement("a",{href:"#relalg-valueexpr"},"value expression")),o.createElement("h2",{id:"license-help"},"Licence"),o.createElement("p",null,o.createElement("a",{rel:"license",href:"http://creativecommons.org/licenses/by-sa/4.0/"},o.createElement("img",{alt:"Creative Commons License",style:{borderWidth:0},src:"https://i.creativecommons.org/l/by-sa/4.0/88x31.png"})),o.createElement("br",null),"This document by Johannes Kessler is licensed under a ",o.createElement("a",{rel:"license",href:"http://creativecommons.org/licenses/by-sa/4.0/"},"Creative Commons Attribution-ShareAlike 4.0 International License"),".")))))}}n("./src/calc2/views/landing.css");class Vn extends o.Component{componentDidMount(){Fn("#exec1").click((function(){Fn(this).addClass("hidden"),Fn(this).next().removeClass("hidden")}))}render(){return o.createElement("div",{className:"view-max"},o.createElement(An,null),o.createElement(Un,null),o.createElement("div",{className:"view-content"},o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col-md-12"},o.createElement("div",{className:"jumbotron",id:"landing-header-bar"},o.createElement("div",{className:"col-md-12 ct",id:"logos"},o.createElement("a",{href:"http://dbis-informatik.uibk.ac.at/",target:"_blank"},o.createElement("img",{src:"assets/logos/Logos_blue_large.png",alt:"Databases and Information Systems (DBIS)",width:"159",height:"120"})),o.createElement("a",{href:"http://www.uibk.ac.at/",target:"_blank"},o.createElement("img",{src:"assets/logos/Logos_uni_uni_2017_rgb_transparent.png",alt:"University of Innsbruck",width:"300",height:"120"}))),o.createElement("div",{className:"col-md-12 ct"},o.createElement("h1",{id:"heading"},"RelaX - relational algebra calculator"),o.createElement("p",null,"calculates any relational algebra statement like ",o.createElement("code",null,o.createElement("span",null,"( σ ",o.createElement("sub",null,"a > 42")," ( A ) ) ",o.createElement("span",{className:"math"},"⋈")," ( π ",o.createElement("sub",null,"a,b")," ( B ) )"))," on a set of relations.")),o.createElement("div",{className:"col-md-12 ct"},o.createElement(Xe,{className:"btn btn-primary btn-lg getStartedBtn",role:"button",to:"/relax/calc"},"Get Started"))),o.createElement("h2",null,"What is the relational algebra calculator?"),o.createElement("p",null,"If you want to learn SQL you take a database system and try some queries.",o.createElement("br",null),"But if you want to learn relational algebra what do you use? Pen and paper?"),o.createElement("p",null,"The relational algebra calculator helps you learn relational algebra (RelAlg) by executing it."),o.createElement("div",{className:"example"},"Subjects =",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed table-inline"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"suId"),o.createElement("th",null,"name"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"string"},"Computing"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"1")),o.createElement("td",null,o.createElement("span",{className:"string"},"Maths"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"English"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"3")),o.createElement("td",null,o.createElement("span",{className:"string"},"History")))))),"Students =",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed table-inline"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"stId"),o.createElement("th",null,"name"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"1")),o.createElement("td",null,o.createElement("span",{className:"string"},"John"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"Mike"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"3")),o.createElement("td",null,o.createElement("span",{className:"string"},"Lisa"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"4")),o.createElement("td",null,o.createElement("span",{className:"string"},"Julia")))))),"Marks =",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed table-inline"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"suId"),o.createElement("th",null,"stId"),o.createElement("th",null,"mark"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"number"},"1")),o.createElement("td",null,o.createElement("span",{className:"string"},"A"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"B"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"number"},"3")),o.createElement("td",null,o.createElement("span",{className:"string"},"C"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"number"},"4")),o.createElement("td",null,o.createElement("span",{className:"string"},"A"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"A"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"3")),o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"F"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"4")),o.createElement("td",null,o.createElement("span",{className:"number"},"1")),o.createElement("td",null,o.createElement("span",{className:"string"},"C")))))),o.createElement("br",null),o.createElement("div",null,o.createElement("span",null,o.createElement("span",{className:"math"}," π "),o.createElement("sub",null," studentName, subjectName, mark "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," ρ "),o.createElement("sub",null," studentName←st.name, subjectName←su.name "),"( ",o.createElement("span",null,"( ",o.createElement("span",null,"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," ρ "),o.createElement("sub",null," su "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"},"Subjects"))," )")," )",o.createElement("span",{className:"math"}," ⨝ "),o.createElement("sub",null," "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," σ "),o.createElement("sub",null,"mark≥'C' "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," ρ "),o.createElement("sub",null," m "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"},"Marks"))," )")," )")," )")," )",o.createElement("span",{className:"math"}," ⨝ "),o.createElement("sub",null," m.stId=st.stId "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," ρ "),o.createElement("sub",null,"st "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"},"Students"))," )")," )")," )")," )")),"=",o.createElement("button",{type:"button",className:"btn",id:"exec1"},"execute"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed table-inline hidden"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"st.studentName"),o.createElement("th",null,"su.subjectName"),o.createElement("th",null,"m.mark"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"string"},"Lisa")),o.createElement("td",null,o.createElement("span",{className:"string"},"Computing")),o.createElement("td",null,o.createElement("span",{className:"string"},"C"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"string"},"Mike")),o.createElement("td",null,o.createElement("span",{className:"string"},"History")),o.createElement("td",null,o.createElement("span",{className:"string"},"F"))))))),o.createElement("h2",null,"Calculator features:"),o.createElement("ul",null,o.createElement("li",null,"supports most common operators",o.createElement("ul",null,o.createElement("li",null,"projection"),o.createElement("li",null,"selection"),o.createElement("li",null,"rename relations"),o.createElement("li",null,"rename columns"),o.createElement("li",null,"group by"),o.createElement("li",null,"intersect"),o.createElement("li",null,"union"),o.createElement("li",null,"set difference"),o.createElement("li",null,"cross join"),o.createElement("li",null,"theta join"),o.createElement("li",null,"natural join"),o.createElement("li",null,"natural left outer join"),o.createElement("li",null,"natural right outer join"),o.createElement("li",null,"natural full outer join"),o.createElement("li",null,"theta left outer join"),o.createElement("li",null,"theta right outer join"),o.createElement("li",null,"theta full outer join"),o.createElement("li",null,"left semi join"),o.createElement("li",null,"right semi join"),o.createElement("li",null,"anti join join"),o.createElement("li",null,"order by"))),o.createElement("li",null,"runs in any modern browser. no plugins needed"),o.createElement("li",null,"text based approach. lets you write RelAlg as easy as SQL"),o.createElement("li",null,"code editor with syntax highlighting and code completion"),o.createElement("li",null,"pre defined sets of relations"),o.createElement("li",null,"visualize statement in a operator tree"),o.createElement("li",null,"plain text alternatives for special symbols like σ or ",o.createElement("span",{className:"math"},"⋈")),o.createElement("li",null,"variables can be used to simplify expressions"),o.createElement("li",null,"new temporal relations can be declared in the statement"),o.createElement("li",null,"sql like comments"),o.createElement("li",null,"arbitrary boolean expressions in conditions"),o.createElement("li",null,"operations keep original order for better traceability"),o.createElement("li",null,"translates simple SQL-statements to RelAlg",o.createElement("ul",null,o.createElement("li",null,"no support for correlated sub-statements")))),o.createElement("h2",null,"Available data"),"You can either use one of the following datasets or create a new one.",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"Name"),o.createElement("th",null,"Source"),o.createElement("th",null,"Language"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,"Kemper Datenbanksysteme"),o.createElement("td",null,o.createElement("a",{href:"http://www3.in.tum.de/teaching/bookDBMSeinf/"},"Alfons Kemper, André Eickler: Datenbanksysteme: Eine Einführung 8. Auflage"),", Seite 84, Abbildung 3.8"),o.createElement("td",null,"de")),o.createElement("tr",null,o.createElement("td",null,"UIBK - KursDB"),o.createElement("td",null,"Tables from and for the lecture ",o.createElement("a",{href:"http://dbis-informatik.uibk.ac.at/249-0-VO-Datenbanksysteme.html",target:"_blank"},"Databases: Foundations, Data Models and System Concepts - University of Innsbruck")," chapter 3"),o.createElement("td",null,"de")),o.createElement("tr",null,o.createElement("td",null,"UIBK - R, S, T"),o.createElement("td",null,"Tables from and for the lecture ",o.createElement("a",{href:"http://dbis-informatik.uibk.ac.at/249-0-VO-Datenbanksysteme.html",target:"_blank"},"Databases: Foundations, Data Models and System Concepts - University of Innsbruck")," chapter 3"),o.createElement("td",null,"de")),o.createElement("tr",null,o.createElement("td",null,"The Complete Book - Exercise 2.4.1"),o.createElement("td",null,"Sample Data from",o.createElement("a",{href:"http://infolab.stanford.edu/~ullman/dscb.html"},"Database Systems The Complete Book 2nd Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom"),": Exercise 2.4.1 Page 52-55"),o.createElement("td",null,"en")),o.createElement("tr",null,o.createElement("td",null,"The Complete Book - Exercise 2.4.3"),o.createElement("td",null,"Sample Data from",o.createElement("a",{href:"http://infolab.stanford.edu/~ullman/dscb.html"},"Database Systems The Complete Book 2nd Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom"),": Exercise 2.4.1 Page 55-57"),o.createElement("td",null,"en"))))),o.createElement("h2",null,"What it is not:"),o.createElement("p",null,"The tool is not meant to be a full database system. The goal of the implementation was to create a tool to support people to learn RelAlg."),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null," "),o.createElement("th",null,"Pen and Paper"),o.createElement("th",null,"relational algebra calculator"),o.createElement("th",null,"MySQL"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"SQL support"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes :-)"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," basic SQL"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes")),o.createElement("tr",null,o.createElement("th",null,"relational algebra"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no")),o.createElement("tr",null,o.createElement("th",null,"use variables for RelAlg"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no")),o.createElement("tr",null,o.createElement("th",null,"large datasets"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes")),o.createElement("tr",null,o.createElement("th",null,"query plan"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no")),o.createElement("tr",null,o.createElement("th",null,"intermediate results"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no")),o.createElement("tr",null,o.createElement("th",null,"iterative working"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"))))),o.createElement("h2",{id:"changelog"},"Changelog"),o.createElement("ul",null,o.createElement("li",null,"0.20",o.createElement("ul",null,o.createElement("li",null,"added option to automatically replace operators in relational algebra: all plaintext-syntax operators get replaced with the equivalent mathematical symbol or vice versa."))),o.createElement("li",null,"0.19",o.createElement("ul",null,o.createElement("li",null,"added datepicker to quickly insert a date literal"))),o.createElement("li",null,"0.18",o.createElement("ul",null,o.createElement("li",null,"added support for the ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"LIKE-operator")," for SQL and relational algebra",o.createElement("br",null),"e.g. ",o.createElement("code",null,"pi 'abc' like 'a%'->x R")),o.createElement("li",null,"added translation support for the calculator using ",o.createElement("a",{href:"http://i18next.com/",target:"_blank"},"i18next"),". This allows easy translation of the main calculator into other languages."),o.createElement("li",null,"calculator is now available in ",o.createElement("a",{href:"calc.htm?lang=de"},"german")),o.createElement("li",null,"ported project to ES2015 (it now gets transpiled to ES5 and packed using ",o.createElement("a",{target:"_blank",href:"https://babeljs.io/"},"Babel.js"),"and ",o.createElement("a",{target:"_blank",href:"http://browserify.org/"},"Browserify"),")"))),o.createElement("li",null,"0.17",o.createElement("ul",null,o.createElement("li",null,"fixed bug: inline-table-editor not working"),o.createElement("li",null,"fixed bug: formula for !a was not working"))),o.createElement("li",null,"0.16",o.createElement("ul",null,o.createElement("li",null,"disallow relational algebra keywords as column-/relation-names"),o.createElement("li",null,"fixed precedence for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"CASE-WHEN-expressions")),o.createElement("li",null,"added support for the SQL-92 ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},o.createElement("code",null,"||"),"-concat operator")),o.createElement("li",null,"added ",o.createElement("code",null,"except")," as alternative syntax for the ",o.createElement("a",{href:"/relax/help#relalg-operations-subtraction"},"relational algebra set-difference operator")),o.createElement("li",null,"fixed bug where ",o.createElement("code",null,"A=R join S A")," was interpreted as",o.createElement("code",null,"A=(R join S A)")," instead of ",o.createElement("code",null,"A=(R join S) A"),".",o.createElement("br",null),"see ",o.createElement("a",{href:"/relax/help#relalg-operations-innerjoin"},"help page")," for more information"))),o.createElement("li",null,"0.15",o.createElement("ul",null,o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"hour(), minute() and second()")),o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"now()"),o.createElement("br",null),"e.g. ",o.createElement("code",null,"pi hour(now())->x, minute(now())->y, second(now())->z ( R )")),o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"n-ary concat"),o.createElement("br",null),"e.g. ",o.createElement("code",null,"pi concat(b, '_', c)->x R")),o.createElement("li",null,"added support for WITH-clauses for SQL"))),o.createElement("li",null,"0.14",o.createElement("ul",null,o.createElement("li",null,"improve error message for theta-joins with conflicting columns"),o.createElement("li",null,"improve error message and added example for assignments without query error"),o.createElement("li",null,"bugfix: calculator-tour did not work correctly for Edge on Windows 10"))),o.createElement("li",null,"0.13",o.createElement("ul",null,o.createElement("li",null,'updated to CodeMirror version 5.1 with "experimental mobile support"'),o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"COALESCE()"),o.createElement("br",null),"e.g. ",o.createElement("code",null,"pi coalesce(a, b, 1)->x R"),", ",o.createElement("code",null,"select coalesce(a, b, 1) as x from R")),o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"CASE WHEN"),o.createElement("br",null),"e.g. ",o.createElement("code",null,"select case when a > 3 then a+1 else a end as x from R")),o.createElement("li",null,"added support for complex union/intersect/except statements for SQL",o.createElement("br",null),"e.g. ",o.createElement("code",null,"(select * from S union ( select * from T except select * from T )) order by 1")))),o.createElement("li",null,"0.12",o.createElement("ul",null,o.createElement("li",null,"added support for more complex FROM-clauses for SQL",o.createElement("br",null),"e.g. ",o.createElement("code",null,"select distinct * from R, (S natural join T)")),o.createElement("li",null,"simplify and link the syntax diagrams at the help page"))),o.createElement("li",null,"0.11",o.createElement("ul",null,o.createElement("li",null,"added a tour to explain the main features of the tool to new users (using ",o.createElement("a",{href:"http://bootstraptour.com/",target:"_blank"},"Bootstrap Tour"),")"),o.createElement("li",null,"added ",o.createElement("a",{href:"/relax/help#sql-reference"},"reference for SQL in the help section")),o.createElement("li",null,"added support for USING clause for joins for SQL"),o.createElement("li",null,"added support FETCH FIRST syntax (SQL:2008) for SQL",o.createElement("br",null),"e.g. ",o.createElement("code",null,"select * from R offset 2 rows fetch first 10 rows only")),o.createElement("li",null,"allow DISTINCT on set operators for SQL"),o.createElement("li",null,"bugfix: having should be allowed without group by if aggregation is used"))),o.createElement("li",null,"0.10",o.createElement("ul",null,o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"arithmetic expressions and functions")," for SQL",o.createElement("br",null),"e.g. ",o.createElement("code",null,"select distinct a+2 as x from R where length(b) > 2")),o.createElement("li",null,"show warnings instead of errors when not using distinct or using all on set operators in SQL"))),o.createElement("li",null,"0.9",o.createElement("ul",null,o.createElement("li",null,"added support for arithmetic operators and functions in ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"(e.g boolean) expressions")," for relational algebra"),o.createElement("li",null,"projection supports ",o.createElement("a",{href:"/relax/help#relalg-operations-projection"},"expressions")),o.createElement("li",null,"removed magic ",o.createElement("a",{href:"/relax/help#relalg-operations-projection"},"ROWNUM")," column; ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"ROWNUM()")," is now a function"),o.createElement("li",null,"tutorials for ",o.createElement("a",{href:"/relax/help#tutorial-user"},"users")," and ",o.createElement("a",{href:"/relax/help#tutorial-maintainer"},"maintainers")),o.createElement("li",null,"new braces handling in formula generation (braces are only placed if necessary)"),o.createElement("li",null,"bugfix: rename not existent column was silently ignored"),o.createElement("li",null,"syntax of dates has changed ",o.createElement("code",null,"1970-01-01")," could not be used any more because it is ambiguous (arithmetic operaton or date). The SQL notation (",o.createElement("code",null,"date('1970-01-01')"),") is now used for the relational algebra mode."))),o.createElement("li",null,"0.8",o.createElement("ul",null,o.createElement("li",null,"grid editor for inline relations"),o.createElement("li",null,"sql-dump import (beta)"),o.createElement("li",null,"group editor"),o.createElement("li",null,"changed the basic structure of the editors (internally)"),o.createElement("li",null,"duplicate rows are removed in every step")))),o.createElement("h2",null,"Who?"),o.createElement("p",null,"The relational algebra calculator was created by Johannes Kessler BSc at ",o.createElement("a",{href:"https://dbis-informatik.uibk.ac.at/1-1-Home.html"},"Databases and Information Systems Group")," at the ",o.createElement("a",{href:"http://informatik.uibk.ac.at/"},"Institute of Computer Science")," at the ",o.createElement("a",{href:"http://www.uibk.ac.at/index.html.en"},"University of Innsbruck")," under supervision of Michael Tschuggnall PhD and Prof. Dr. Günther Specht"),o.createElement("h2",null,"External resources"),o.createElement("p",null,"This tool was not written from scratch but many different external resources/frameworks/projects/libs are used."),o.createElement("p",null,"This is a list of resources/frameworks/projects/libs used for this tool (in alphabetical order) to give credit where credit is due and guide anyone interested to them without having to look through the code."),o.createElement("ul",null,o.createElement("li",null,o.createElement("a",{target:"_blank",href:"https://babeljs.io/"},"Babel JavaScript compiler")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://blanketjs.org/"},"blanket.js")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://botmonster.com/jquery-bootpag/"},"bootpag")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://getbootstrap.com/"},"Bootstrap")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"https://bootstrap-datepicker.readthedocs.org"},"bootstrap-datepicker")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://bootstraptour.com/"},"Bootstrap Tour")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://browserify.org/"},"Browserify")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://codemirror.net/"},"CodeMirror")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://codepen.io/Pestov/pen/BLpgm"},"CSS3 family tree by Ilya Pestov")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://www.gnu.org/software/freefont/"},"FreeSans by GNU FreeFont")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://gruntjs.com/"},"Grunt")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://handlebarsjs.com/"},"handlebars")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://handsontable.com/"},"Handsontable")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://i18next.com/"},"i18next")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://jquery.com/"},"jQuery")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"https://github.com/chjj/marked"},"marked - a markdown parser")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://pegjs.org/"},"PEG.js - Parser Generator for JavaScript")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://qunitjs.com/"},"QUnit - js unit testing")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"https://github.com/tabatkins/railroad-diagrams"},"tabatkins/railroad-diagrams"))))))))}}class qn extends o.Component{componentDidMount(){}render(){return o.createElement("div",{className:"view-max"},o.createElement(An,null),o.createElement(Un,null),o.createElement("div",{className:"view-min"},"Databases and Information System",o.createElement("br",null),"Universität Innsbruck",o.createElement("br",null),"ICT - building, second floor",o.createElement("br",null),"Technikerstrasse 21a",o.createElement("br",null),"A-6020 Innsbruck",o.createElement("br",null)))}}n("./src/calc2/style/index.scss");class Gn extends o.Component{constructor(e){super(e),this.state={isNavbarOpen:!0}}componentDidMount(){var e;const t=document.getElementById("loadingScreen");null===(e=null==t?void 0:t.parentNode)||void 0===e||e.removeChild(t)}render(){const{store:e}=this.props,{isNavbarOpen:t}=this.state;return o.createElement(Ue,null,o.createElement(f,{store:e},o.createElement(r.a,null,o.createElement(Be,null,o.createElement(Le,{exact:!0,from:"/",to:"/relax/landing"}),o.createElement(Le,{exact:!0,from:"/relax",to:"/relax/landing"}),o.createElement(Pe,{path:"/relax/landing",component:Vn}),o.createElement(Pe,{path:"/relax/help",component:zn}),o.createElement(Pe,{path:"/relax/imprint",component:qn}),o.createElement(Le,{from:"/relax/calc",to:"/relax/calc/local/uibk/local/0",exact:!0,strict:!0}),o.createElement(Pe,{path:"/relax/calc/:source/:id/:filename/:index",component:Yn}),o.createElement(Pe,{path:"/relax/calc/:source/:id",component:Yn}),o.createElement(Pe,{path:"/relax/calc/:source/:id/:filename/:index",component:Yn}),o.createElement(Pe,{path:"/relax/api/:source/:id",component:Yn}),o.createElement(Pe,{render:e=>o.createElement("div",{className:"view-min"},o.createElement("h1",null,"404"),o.createElement("p",null,"This route doesn't exist"),o.createElement("span",null,JSON.stringify(e)))})))))}}},"./src/calc2/style/index.scss":function(e,t,n){},"./src/calc2/utils/groupUtils.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return c}));var r=n("./src/db/relalg.ts"),o=n("./node_modules/jquery/dist/jquery.js");const i=n("./src/calc2/data/uibk.txt"),a={uibk:i.default?i.default:""};function s(e,t,n){return u(Object(r.c)(e),t,n)}function l(e,t,n){if(0===(e=e.filter(({name:e})=>e===t)).length)return{fallback:n};let r=null;const o={};for(let t=0;t{switch(e){case"gist":o.ajax({url:`https://api.github.com/gists/${t}`,dataType:"json",success:function(o){const a=[];for(const u in o.files){if(!o.files.hasOwnProperty(u))continue;const c=null===o.owner?"anonymous":o.owner.login,d=null===o.owner?void 0:o.owner.html_url,h={source:e,id:o.id,filename:u,index:-1,maintainer:n,maintainerGroup:r},f={author:c,authorUrl:d,lastModified:new Date(o.updated_at),url:o.url};try{a.push(...s(o.files[u].content,h,f)),i(a)}catch(e){const n='could not parse given group from gist with id "'+t+'": '+e;console.error(n,t,e,u,o),l(new Error(n))}}},crossDomain:!0,statusCode:{404:function(){l(new Error("gist "+t+" not found"))}},async:!0});break;case"local":try{const o=s(a[t],{source:e,id:t,filename:"local",index:-1,maintainer:n,maintainerGroup:r},{});i(o)}catch(e){let t="cannot parse groups file: "+e.message;t+="
        see log for more information",console.error(t,e),l(new Error(t))}break;case"http":{const e="parsing groups from arbitrary urls is no longer supported; use github gists instead.";window.alert(e),l(new Error(e));break}default:l(new Error("unknown source "+e))}})}},"./src/calc2/views/help.css":function(e,t,n){},"./src/calc2/views/landing.css":function(e,t,n){},"./src/db/exec/Column.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));class r{constructor(e,t,n="null"){this._type="null",this._name=e,this._relAlias=t,this._type=n}getName(){return this._name}getRelAlias(){return this._relAlias}getType(){return this._type}setRelAlias(e){this._relAlias=e}toString(){return r.printColumn(this._name,this._relAlias)}equals(e){return this._name===e._name&&this._relAlias===e._relAlias}static printColumn(e,t){let n;return n="number"==typeof e?`[${e}]`:e,null===t?n:`${t}.${n}`}}},"./src/db/exec/ExecutionError.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));class r extends Error{constructor(e,t){super(e),this.codeInfo=t||void 0}}},"./src/db/exec/RANode.ts":function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return s}));var r=n("./src/db/exec/ExecutionError.ts");class o{constructor(e=""){this._codeInfo=null,this._metaData={},this._resultNumRows=-1,this._wrappedInParentheses=!1,this._warnings=[],this._functionName=e}setCodeInfoObject(e){return this._codeInfo=e,this}addWarning(e,t){const n={message:e,codeInfo:void 0};t&&(n.codeInfo=t),this._warnings||(this._warnings=[]),this._warnings.push(n)}setWrappedInParentheses(e=!0){this._wrappedInParentheses=e}throwExecutionError(e){throw new r.a(e,this._codeInfo)}setMetaData(e,t){this._metaData[e]=t}hasMetaData(e){return void 0!==this._metaData[e]}getMetaData(e){return this._metaData[e]}getResultNumRows(){if(void 0===this._resultNumRows||-1===this._resultNumRows)throw new Error("result num rows not set! call only after getResult");return this._resultNumRows}setResultNumRows(e){this._resultNumRows=e}_returnOrCreateSession(e){return void 0===e?{statement_timestamp:new Date}:e}getArgumentHtml(){return""}static foreachRecursive(e,t){t(e),e instanceof a?t(e.getChild()):e instanceof s&&(t(e.getChild()),t(e.getChild2()))}}class i extends o{getWarnings(e){return this._warnings}getFormulaHtml(e=!0,t=!0){const n=!0===this._wrappedInParentheses&&!0===t;return`${n?"(":""}\n\t\t\t\t\n\t\t\t\t\t${this._functionName}\n\t\t\t\t\n\t\t\t${n?")":""}`}}class a extends o{constructor(e,t){super(e),this._child=t}getChild(){return this._child}getWarnings(e){return!0===e?[...this._warnings,...this.getChild().getWarnings(!0)]:[...this._warnings]}getFormulaHtml(e=!0,t=!0){const n=!0===this._wrappedInParentheses&&!0===t;return`${n?"(":""}\n\n\t\t\t\t\n\t\t\t\t\t${this._functionName}\n\t\t\t\t\t${this.getArgumentHtml()}\n\t\t\t\t\t${!0===e?this.getChild().getFormulaHtml(e,!0):""}\n\t\t\t\t\n\t\t\t${n?")":""}`}}class s extends o{constructor(e,t,n){super(e),this._child=t,this._child2=n}getChild(){return this._child}getChild2(){return this._child2}getWarnings(e){return!0===e?[...this._warnings,...this.getChild().getWarnings(!0),...this.getChild2().getWarnings(!0)]:[...this._warnings]}getFormulaHtml(e=!0,t=!0){const n=!0===this._wrappedInParentheses||!0===t;return`${n?"(":""}\n\n\t\t\t\t\n\t\t\t\t\t${!0===e?this.getChild().getFormulaHtml(e,!0):""}\n\t\t\t\t\t${this._functionName}\n\t\t\t\t\t${this.getArgumentHtml()}\n\t\t\t\t\t${!0===e?this.getChild2().getFormulaHtml(e,!0):""}\n\t\t\t\t\n\t\t\t${n?")":""}`}}},"./src/db/exec/Relation.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n("./src/db/exec/RANode.ts"),o=n("./src/db/exec/Table.ts");class i extends r.b{constructor(e,t){super(e),this._schema=null,void 0===t?this._table=new o.a:(t.check(),this._schema=t.getSchema(),this._table=t.getResult())}setSchema(e,t=!1){return this._schema=e.copy(),!0!==t&&this._schema.setRelAlias(this._functionName),this._table.setSchema(this._schema),this}addRow(e){this._table.addRow(e)}addRows(e){this._table.addRows(e)}getResultNumRows(){return this._resultNumRows}getResult(e){this._returnOrCreateSession(e);const t=this._table.copy();return t.eliminateDuplicateRows(),this.setResultNumRows(t.getNumRows()),t}getSchema(){return this._table.getSchema()}getName(){return this._functionName}check(){}hasChild(){return!1}copy(){if(null===this._schema)throw new Error("check not called");const e=new i(this._functionName);return e.setSchema(this._schema),e._table=this._table.copy(),e}}},"./src/db/exec/Schema.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n("./node_modules/i18next/dist/es/index.js"),o=n("./src/db/exec/Column.ts");class i{constructor(){this._names=[],this._relAliases=[],this._types=[],this._size=0,this._colIndexPerName={}}getSize(){return this._size}addColumn(e,t,n){if("string"!==n&&"date"!==n&&"number"!==n&&"boolean"!==n)throw new Error("unknown type! "+n);this._names.push(e),this._relAliases.push(t),this._types.push(n);const o=this._size;if(!1===this.isUnique(o))throw new Error(r.a("db.messages.exec.error-column-not-unique",{column:t+"."+e}));return this._addColToIndex(e,o),this._size++,this}addColumn2(e){return this.addColumn(e.getName(),e.getRelAlias(),e.getType())}_addColToIndex(e,t){void 0===this._colIndexPerName[e]?this._colIndexPerName[e]=[t]:this._colIndexPerName[e].push(t)}_removeColFromIndex(e){const t=this._names[e],n=this._colIndexPerName[t];n.splice(n.indexOf(e,0),1),0===n.length&&delete this._colIndexPerName[t]}removeColumn(e){this._names.splice(e,1),this._relAliases.splice(e,1),this._types.splice(e,1),this._size--;for(let t=e;tthis._size)throw new Error(r.a("db.messages.exec.error-column-index-out-of-range",{column:o.a.printColumn(e,t),schema:this.toString()}));if(null===t)return[n];if(this._relAliases[n]===t)return[n]}return[]}getType(e){return this._types[e]}equals(e){if(!1===this.equalsTypeOnly(e))return!1;for(let t=0;t1}getName(e){return this._names[e]}getFullName(e){return(this._relAliases[e]?this._relAliases[e]+".":"")+this._names[e]}toString(){const e=[];for(let t=0;t'+Object(r.d)(n,o)+"
        "}getRows(e=0,t){if(0===e&&void 0===t)return this._rows;{const n=this._rows.length;let r=n;t&&t>0&&(r=Math.min(n,e+t)),this._rows.slice(e,r);const o=[];for(let t=e;t"+n.getName()+"":""+n.toString()+""}o+="";let i="";const a=this.getNumRows();let s=a;t&&t>0&&(s=Math.min(a,n+t));for(let e=n;e"+this.getValueHtmlAt(e,n)+"";i+=t+""}return""+o+i+"
        "}equals(e){if(e instanceof a==!1)throw new Error("can not compare");if(!1===this._schema.equals(e._schema))return!1;if(this._rows.length!==e._rows.length)return!1;for(let t=0;tn)throw new Error("invalid sort cols");for(let e=0;e=n||r[e]<0)throw new Error("invalid sort cols");const i=r.length;if(i!==o.length)throw new Error("invalid sort cols");const a=r.map(e=>this._schema.getType(e)),s=function(e,t,n,r,o){const i=e[n],a=t[n];if(null===i&&null===a)return 0;if(null===i&&null!==a)return 1*r;if(null!==i&&null===a)return-1*r;switch(o){case"number":case"date":case"boolean":return r*(i-a);case"string":return r*i.localeCompare(a);case"null":return 0}};this._rows.sort((function(e,t){let n=0;for(let l=0;l=e.length?t[this._index-e.length]:e[this._index]}toString(){return o.a.printColumn(this._name,this._relAlias)}getFormulaHtml(){const e=o.a.printColumn(this._name,this._relAlias);return!0===this._wrappedInParentheses?"("+e+")":e}static _getColumnIndex(e,t,n,r){if(!t||null===t)return e.getColumnIndex(n,r,!0);const o=e.getColumnIndex(n,r,!1);return-1===o?t.getColumnIndex(n,r,!0)+e.getSize():(t.getColumnIndex(n,r,!1),o)}static _getType(e,t,n){return n>=e.getSize()?t.getType(n-e.getSize()):e.getType(n)}}class u extends s{constructor(e,t,n){super(),this._func=t,this._dataType=e,this._dataTypeCalculated=null,this._args=n||[]}evaluate(e,t,n,r){switch(this._dataType){case"string":return this._evaluateString(e,t,n,r);case"number":return this._evaluateNumber(e,t,n,r);case"boolean":return this._evaluateBoolean(e,t,n,r);case"date":return this._evaluateDate(e,t,n,r);case"null":return this._evaluateNull(e,t,n,r);default:throw new Error("this should not happen!")}}_parseIsoDate(e){const t=/^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$/.exec(e);if(null===t)throw new r.a(i.a("db.messages.exec.error-invalid-date-format",{str:e}),this._codeInfo);const n=parseInt(t[1],10),o=parseInt(t[2],10)-1,a=parseInt(t[3],10),s=new Date(n,o,a);return s.getFullYear()===n&&s.getMonth()===o&&s.getDate()===a||this.throwExecutionError(i.a("db.messages.exec.error-invalid-date-format",{str:e})),s}_evaluateNull(e,t,n,r){switch(this._func){case"constant":return null;case"coalesce":for(let o=0;o1&&this._args[1].evaluate(e,t,n,r),null===o||this._args.length>1&&null===i)return null;switch(this._func){case"date":return this._parseIsoDate(o);case"adddate":return new Date(o.getTime()+864e5*i);case"subdate":return new Date(o.getTime()-864e5*i);default:throw new Error("this should not happen!")}}_checkDate(e,t){switch(this._func){case"transaction_timestamp":case"statement_timestamp":case"clock_timestamp":case"now":return!0;case"date":return this._checkArgsDataType(e,t,["string"]);case"adddate":case"subdate":return this._checkArgsDataType(e,t,["date","number"]);default:throw new Error("this should not happen!")}}_evaluateBoolean(e,t,n,r){let o,i,a;if("constant"===this._func)return this._args[0];switch(o=this._args[0].evaluate(e,t,n,r),i=this._args.length>1&&this._args[1].evaluate(e,t,n,r),this._func){case"not":return"unknown"===o?o:!o;case"and":return!1!==o&&!1!==i&&(!0===o&&!0===i||"unknown");case"or":return!0===o||!0===i||(!1!==o||!1!==i)&&"unknown";case"xor":return"unknown"===o||"unknown"===i?"unknown":o!==i;case"=":case">=":case"<=":case">":case"<":case"!=":return a=this._args[0].getDataType(),u._condition_compare(o,i,a,this._func);case"like":case"ilike":if(!this._regex)throw new Error("regex should have been set by check");return this._regex.test(o);default:throw new Error("this should not happen!")}}static _condition_compare(e,t,n,r){if(null===e||null===t)switch(r){case"=":case">=":case"<=":return e===t||"unknown";case"<":case">":return e!==t&&"unknown";case"!=":return e!==t;default:throw new Error("unknown operator")}switch(n){case"number":case"string":switch(r){case"=":return e===t;case">":return e>t;case"<":return e=":return e>=t;case"<=":return e<=t;case"!=":return e!==t;default:throw new Error("unknown operator")}case"date":switch(r){case"=":return e.getTime()===t.getTime();case">":return e>t;case"<":return e=":return e>=t;case"<=":return e<=t;case"!=":return e.getTime()!==t.getTime();default:throw new Error("unknown operator")}case"boolean":if("boolean"!=typeof e||"boolean"!=typeof t)throw new Error("operands have different type");switch(r){case"=":return e===t;case">":return e>t;case"<":return e=":return e>=t;case"<=":return e<=t;case"!=":return e!==t;default:throw new Error("unknown operator")}default:throw new Error("unknown type "+n)}}_checkBoolean(e,t){let n,r;switch(this._func){case"constant":return!0;case"not":return this._checkArgsDataType(e,t,["boolean"]);case"and":case"or":case"xor":return this._checkArgsDataType(e,t,["boolean","boolean"]);case"=":case">=":case"<=":case">":case"<":case"!=":return this._args[0].check(e,t),this._args[1].check(e,t),n=this._args[0].getDataType(),r=this._args[1].getDataType(),"null"===n||"null"===r?!0:n===r||(this.throwExecutionError(i.a("db.messages.exec.error-could-not-compare-different-types",{typeA:n,typeB:r})),this._checkArgsDataType(e,t,["boolean","boolean"]));case"like":case"ilike":if(this._args[0].check(e,t),"string"!==this._args[1].getDataType()||"constant"!==this._args[1]._func)return!1;const o=this._args[1]._args[0];let a=String(o).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&");a=a.replace(/([^\\]?)_/g,"$1."),a=a.replace(/([^\\]?)%/g,"$1.*");const s="ilike"===this._func?"i":"";this._regex=new RegExp("^"+a+"$",s);break;default:throw new Error("this should not happen!")}}_evaluateString(e,t,n,r){switch(this._func){case"constant":return this._args[0];case"lower":case"upper":const o=this._args[0].evaluate(e,t,n,r);return null===o?null:"lower"===this._func?o.toLowerCase():o.toUpperCase();case"concat":let i="";for(let o=0;o0?this._args[0].evaluate(e,t,n,r):void 0,i=this._args.length>1?this._args[1].evaluate(e,t,n,r):void 0;switch(this._func){case"add":return null===o||null===i?null:o+i;case"sub":return null===o||null===i?null:o-i;case"mul":return null===o||null===i?null:o*i;case"div":return null===o||null===i?null:o/i;case"mod":return null===o||null===i?null:o%i;case"abs":return null===o?null:Math.abs(o);case"floor":return null===o?null:Math.floor(o);case"ceil":return null===o?null:Math.ceil(o);case"round":return null===o?null:Math.round(o);case"minus":return null===o?null:-o;case"rand":return Math.random();case"rownum":return n+1;case"strlen":return null===o?null:o.length;case"year":return null===o?null:o.getFullYear();case"month":return null===o?null:o.getMonth()+1;case"dayofmonth":return null===o?null:o.getDate();case"hour":return null===o?null:o.getHours();case"minute":return null===o?null:o.getMinutes();case"second":return null===o?null:o.getSeconds();default:throw new Error("this should not happen!")}}_checkArgsDataType(e,t,n){const r=[];if(this._args.length!==n.length)throw new Error("this should not happen: #args != #types");for(let o=0;o{let t=(e||this._func)+"(";for(let e=0;e{let t="CASE";for(let n=0;n{let t="";return t+=` ${e||this._func} `,t=this._args[0].getFormulaHtml()+t,t+=this._args[1].getFormulaHtml(),`${t}`};function r(){const{_func:r}=this;switch(r){case"constant":return a(this._args[0],this._dataTypeCalculated||this._dataType);case"rand":case"rownum":case"abs":case"ceil":case"floor":case"round":case"year":case"month":case"dayofmonth":case"hour":case"minute":case"second":case"adddate":case"subdate":case"concat":case"upper":case"lower":case"date":case"strlen":return e.call(this,"length");case"minus":return e.call(this,"-");case"not":return e.call(this,"!");case"caseWhen":case"caseWhenElse":return t.call(this,"caseWhenElse"===this._func);case"add":return n.call(this,"+");case"sub":return n.call(this,"-");case"mul":return n.call(this,"*");case"div":return n.call(this,"/");case"mod":return n.call(this,"%");case"and":case"or":case"xor":case"like":case"ilike":case"=":return n.call(this,r);case">=":return n.call(this,"≥");case"<=":return n.call(this,"≤");case">":return n.call(this,">");case"<":return n.call(this,"<");case"!=":return n.call(this,"≠")}return this.toString()}return!0===this._wrappedInParentheses?`(${r.call(this)})`:r.call(this).toString()}}},"./src/db/parser/grammar_ra.pegjs":function(e,t,n){"use strict";function r(e,t,n,o){this.message=e,this.expected=t,this.found=n,this.location=o,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,r)}!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(r,Error),r.buildMessage=function(e,t){var n={literal:function(e){return'"'+o(e.text)+'"'},class:function(e){var t,n="";for(t=0;t0){for(t=1,r=1;t",!1),re=(pr("ψ",!1),pr("psi",!0),pr("τ",!1)),oe=function(){return ri("tau")},ie=pr("tau",!0),ae=pr("γ",!1),se=function(){return ri("gamma")},le=pr("gamma",!0),ue=pr("∪",!1),ce=function(){return ri("unionOperator")},de=pr("union",!0),he=pr("∩",!1),fe=function(){return ri("intersectOperator")},me=pr("intersect",!0),pe=pr("÷",!1),ge=pr("/",!1),ye=pr("\\",!1),be=function(){return ri("differenceOperator")},ve=pr("except",!0),_e=pr("⨯",!1),we=pr("x",!1),Ee=function(){return ri("crossJoinOperator")},je=pr("cross",!0),Ce=pr("join",!0),Se=pr("⨝",!1),Oe=pr("⋈",!1),ke=function(){return ri("innerJoinOperator")},Te=pr("inner",!0),Me=function(){return ri("naturalJoinOperator")},xe=pr("natural",!0),Re=pr("⋉",!1),Le=function(){return ri("leftSemiJoinOperator")},Ae=pr("left",!0),De=pr("semi",!0),Ne=pr("⋊",!1),Pe=function(){return ri("rightSemiJoinOperator")},Ie=pr("right",!0),He=pr("▷",!1),Ye=function(){return ri("antiJoinOperator")},Fe=pr("anti",!0),We=pr("⟕",!1),Be=function(){return ri("leftOuterJoinOperator")},Ue=pr("outer",!0),ze=pr("⟖",!1),Ve=function(){return ri("rightOuterJoinOperator")},qe=pr("⟗",!1),Ge=function(){return ri("fullOuterJoinOperator")},Ke=pr("full",!0),Xe=pr(",",!1),$e=function(e,t){var n=[e];if(null!==t)for(var r in t)n.push(t[r][3]);return n},Je=function(e,t){var n=[e];if(null!==t)for(var r in t)n.push(t[r][3]);return n},Qe=pr("asc",!0),Ze=pr("desc",!0),et=pr("sum",!0),tt=pr("count",!0),nt=pr("avg",!0),rt=pr("min",!0),ot=pr("max",!0),it=pr("(",!1),at=pr(")",!1),st=pr("count(*)",!0),lt=function(e){for(var t=[],n=0;n"group"===e.name);if(!r)continue;const o=r.text;t[o]&&mr(ei("db.messages.parser.error-group-non-unique-group-name",{name:o})),t[o]=!0}}(t),{type:"groupRoot",groups:t,codeInfo:ti()}},ut=pr("en",!1),ct=pr("de",!1),dt=pr("es",!1),ht=/^[a-z@]/,ft=gr([["a","z"],"@"],!1,!1),mt=pr(":",!1),pt=/^[a-z]/,gt=gr([["a","z"]],!1,!1),yt=pr("@",!1),bt=pr("[[",!1),vt=pr("\\]]",!1),_t=pr("]]",!1),wt=function(e,t){return function(e,t){var n,r=t[0];r.child=e,r.codeInfo=ni(r.child.codeInfo,r.codeInfo);for(var o=1;o",!1),kt=pr(">=",!1),Tt=pr("≥",!1),Mt=pr(">",!1),xt=pr("<=",!1),Rt=pr("≤",!1),Lt=pr("<",!1),At=yr("logical AND"),Dt=pr("and",!0),Nt=pr("∧",!1),Pt=yr("logical XOR"),It=pr("xor",!0),Ht=pr("⊻",!1),Yt=pr("⊕",!1),Ft=yr("logical OR"),Wt=pr("or",!0),Bt=pr("∨",!1),Ut=yr("logical NOT"),zt=pr("!",!1),Vt=pr("¬",!1),qt=yr("delimiter"),Gt=pr("string",!0),Kt=pr("number",!0),Xt=pr("date",!0),$t=pr("boolean",!0),Jt=pr("null",!1),Qt=pr("NULL",!1),Zt=pr("}",!1),en=/^[\-_a-z0-9.]/i,tn=gr(["-","_",["a","z"],["0","9"],"."],!1,!0),nn=function(e){return{type:"string",value:e,quoted:!0}},rn=pr('"',!1),on=/^[^"\n]/,an=gr(['"',"\n"],!0,!1),sn=pr("{",!1),ln=yr("boolean expression"),un=pr("||",!1),cn=function(e,t){return{type:"valueExpr",datatype:"boolean",func:e,args:[void 0,t],codeInfo:ti()}},dn=pr("like",!0),hn=pr("ilike",!0),fn=pr("+",!1),mn=pr("*",!1),pn=pr("%",!1),gn=pr("coalesce",!0),yn=pr("concat",!0),bn=pr("adddate",!0),vn=pr("subdate",!0),_n=pr("mod",!0),wn=pr("add",!0),En=pr("sub",!0),jn=pr("mul",!0),Cn=pr("div",!0),Sn=pr("upper",!0),On=pr("ucase",!0),kn=pr("lower",!0),Tn=pr("lcase",!0),Mn=pr("length",!0),xn=pr("abs",!0),Rn=pr("floor",!0),Ln=pr("ceil",!0),An=pr("round",!0),Dn=pr("year",!0),Nn=pr("month",!0),Pn=pr("day",!0),In=pr("hour",!0),Hn=pr("minute",!0),Yn=pr("second",!0),Fn=pr("dayofmonth",!0),Wn=pr("rand",!0),Bn=pr("rownum",!0),Un=pr("now",!0),zn=pr("current_timestamp",!0),Vn=pr("transaction_timestamp",!0),qn=pr("statement_timestamp",!0),Gn=pr("clock_timestamp",!0),Kn=pr("sysdate",!0),Xn=pr("null",!0),$n=pr("case",!0),Jn=pr("when",!0),Qn=pr("then",!0),Zn=function(e,t){return{w:e,t:t}},er=pr("else",!0),tr=pr("end",!0),nr=function(e,t){return function(e,t){var n,r=t[0];r.args[0]=e,r.codeInfo=ti();for(var o=1;olr&&(lr=ir,ur=[]),ur.push(e))}function wr(e,t,n){return new r(r.buildMessage(e,t),e,t,n)}function Er(){var e,t,n=135*ir+0,r=dr[n];return r?(ir=r.nextPos,r.result):(e=ir,(t=function(){var e,t,n,r,i,a,s=135*ir+57,l=dr[s];if(l)return ir=l.nextPos,l.result;if(e=ir,(t=kr())!==o){for(n=[],r=ir,(i=Br())!==o&&(a=Or())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=Br())!==o&&(a=Or())!==o?r=i=[i,a]:(ir=r,r=o);n!==o&&(r=Br())!==o&&(i=kr())!==o?(ar=e,t=function(e,t){var n=[t];for(var r in e)n.push(e[r][0]);return oi(n),{type:"relalgRoot",assignments:n,child:null,operatorPositions:si,codeInfo:ti()}}(n,r),e=t):(ir=e,e=o)}else ir=e,e=o;if(e===o)if(e=ir,(t=kr())!==o){for(n=[],r=ir,(i=Br())!==o&&(a=Or())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=Br())!==o&&(a=Or())!==o?r=i=[i,a]:(ir=r,r=o);n!==o?((r=eo())===o&&(r=null),r!==o&&(i=kr())!==o?(ar=e,t=function(e,t){for(var n=[],r=0;rir?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(s)),cr--,n===o?t=void 0:(ir=t,t=o),dr[r]={nextPos:ir,result:t},t)}function Cr(){var t,n=135*ir+3,r=dr[n];return r?(ir=r.nextPos,r.result):("\r\n"===e.substr(ir,2)?(t="\r\n",ir+=2):(t=o,0===cr&&_r(l)),t===o&&(10===e.charCodeAt(ir)?(t="\n",ir++):(t=o,0===cr&&_r(u))),dr[n]={nextPos:ir,result:t},t)}function Sr(){var t,n=135*ir+4,r=dr[n];return r?(ir=r.nextPos,r.result):((t=function(){var t,n,r,i,a,l,u,m,p=135*ir+5,g=dr[p];if(g)return ir=g.nextPos,g.result;cr++,t=ir,"--"===e.substr(ir,2)?(n="--",ir+=2):(n=o,0===cr&&_r(d));n!==o?(h.test(e.charAt(ir))?(r=e.charAt(ir),ir++):(r=o,0===cr&&_r(f)),r!==o?(i=ir,cr++,(a=Cr())===o&&(a=jr()),cr--,a!==o?(ir=i,i=void 0):i=o,i!==o?(ar=t,t=n=""):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o);if(t===o&&(t=ir,"--"===e.substr(ir,2)?(n="--",ir+=2):(n=o,0===cr&&_r(d)),n!==o?(r=ir,cr++,(i=Cr())===o&&(i=jr()),cr--,i!==o?(ir=r,r=void 0):r=o,r!==o?(ar=t,t=n=""):(ir=t,t=o)):(ir=t,t=o),t===o))if(t=ir,"--"===e.substr(ir,2)?(n="--",ir+=2):(n=o,0===cr&&_r(d)),n!==o)if(h.test(e.charAt(ir))?(r=e.charAt(ir),ir++):(r=o,0===cr&&_r(f)),r!==o){for(i=ir,a=[],l=ir,u=ir,cr++,m=Cr(),cr--,m===o?u=void 0:(ir=u,u=o),u!==o?(e.length>ir?(m=e.charAt(ir),ir++):(m=o,0===cr&&_r(s)),m!==o?l=u=[u,m]:(ir=l,l=o)):(ir=l,l=o);l!==o;)a.push(l),l=ir,u=ir,cr++,m=Cr(),cr--,m===o?u=void 0:(ir=u,u=o),u!==o?(e.length>ir?(m=e.charAt(ir),ir++):(m=o,0===cr&&_r(s)),m!==o?l=u=[u,m]:(ir=l,l=o)):(ir=l,l=o);(i=a!==o?e.substring(i,ir):a)!==o?(a=ir,cr++,(l=Cr())===o&&(l=jr()),cr--,l!==o?(ir=a,a=void 0):a=o,a!==o?(ar=t,t=n=i):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;else ir=t,t=o;cr--,t===o&&(n=o,0===cr&&_r(c));return dr[p]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a,l,u,c=135*ir+6,d=dr[c];if(d)return ir=d.nextPos,d.result;t=ir,"/*"===e.substr(ir,2)?(n="/*",ir+=2):(n=o,0===cr&&_r(m));if(n!==o){for(r=ir,i=[],a=ir,l=ir,cr++,"*/"===e.substr(ir,2)?(u="*/",ir+=2):(u=o,0===cr&&_r(p)),cr--,u===o?l=void 0:(ir=l,l=o),l!==o?(e.length>ir?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(s)),u!==o?a=l=[l,u]:(ir=a,a=o)):(ir=a,a=o);a!==o;)i.push(a),a=ir,l=ir,cr++,"*/"===e.substr(ir,2)?(u="*/",ir+=2):(u=o,0===cr&&_r(p)),cr--,u===o?l=void 0:(ir=l,l=o),l!==o?(e.length>ir?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(s)),u!==o?a=l=[l,u]:(ir=a,a=o)):(ir=a,a=o);(r=i!==o?e.substring(r,ir):i)!==o?("*/"===e.substr(ir,2)?(i="*/",ir+=2):(i=o,0===cr&&_r(p)),i!==o?(ar=t,t=n=r):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}()),dr[n]={nextPos:ir,result:t},t)}function Or(){var t,n,r,i,a,s,l,u=135*ir+7,c=dr[u];if(c)return ir=c.nextPos,c.result;for(cr++,t=ir,n=[],r=ir,i=[],a=Sr();a!==o;)i.push(a),a=Sr();if(i!==o){if(a=[],y.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(b)),s!==o)for(;s!==o;)a.push(s),y.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(b));else a=o;if(a!==o){for(s=[],l=Sr();l!==o;)s.push(l),l=Sr();s!==o?r=i=[i,a,s]:(ir=r,r=o)}else ir=r,r=o}else ir=r,r=o;if(r!==o)for(;r!==o;){for(n.push(r),r=ir,i=[],a=Sr();a!==o;)i.push(a),a=Sr();if(i!==o){if(a=[],y.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(b)),s!==o)for(;s!==o;)a.push(s),y.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(b));else a=o;if(a!==o){for(s=[],l=Sr();l!==o;)s.push(l),l=Sr();s!==o?r=i=[i,a,s]:(ir=r,r=o)}else ir=r,r=o}else ir=r,r=o}else n=o;return n!==o&&(ar=t,n=""),cr--,(t=n)===o&&(n=o,0===cr&&_r(g)),dr[u]={nextPos:ir,result:t},t}function kr(){var t,n,r=135*ir+8,i=dr[r];if(i)return ir=i.nextPos,i.result;for(cr++,t=[],(n=Sr())===o&&(y.test(e.charAt(ir))?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(b)));n!==o;)t.push(n),(n=Sr())===o&&(y.test(e.charAt(ir))?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(b)));return cr--,t===o&&(n=o,0===cr&&_r(v)),dr[r]={nextPos:ir,result:t},t}function Tr(){var t,n,r=135*ir+10,i=dr[r];if(i)return ir=i.nextPos,i.result;for(cr++,t=[],_.test(e.charAt(ir))?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(w));n!==o;)t.push(n),_.test(e.charAt(ir))?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(w));return cr--,t===o&&(n=o,0===cr&&_r(E)),dr[r]={nextPos:ir,result:t},t}function Mr(){var t,n,r,i=135*ir+12,a=dr[i];if(a)return ir=a.nextPos,a.result;for(t=ir,n=[],(r=Sr())===o&&(h.test(e.charAt(ir))?(r=e.charAt(ir),ir++):(r=o,0===cr&&_r(f)));r!==o;)n.push(r),(r=Sr())===o&&(h.test(e.charAt(ir))?(r=e.charAt(ir),ir++):(r=o,0===cr&&_r(f)));return n!==o&&(ar=t,n=""),t=n,dr[i]={nextPos:ir,result:t},t}function xr(){var t,n,r,i,a,s,l=135*ir+14,u=dr[l];if(u)return ir=u.nextPos,u.result;if(t=ir,n=ir,r=ir,45===e.charCodeAt(ir)?(i="-",ir++):(i=o,0===cr&&_r(k)),i===o&&(i=null),i!==o){if(a=[],T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o)for(;s!==o;)a.push(s),T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M));else a=o;a!==o?r=i=[i,a]:(ir=r,r=o)}else ir=r,r=o;return(n=r!==o?e.substring(n,ir):r)!==o&&(ar=t,n=parseInt(n,10)),t=n,dr[l]={nextPos:ir,result:t},t}function Rr(){var t,n,r,i,a,s,l,u,c=135*ir+15,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,n=ir,r=ir,45===e.charCodeAt(ir)?(i="-",ir++):(i=o,0===cr&&_r(k)),i===o&&(i=null),i!==o){if(a=[],T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o)for(;s!==o;)a.push(s),T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M));else a=o;if(a!==o)if(46===e.charCodeAt(ir)?(s=".",ir++):(s=o,0===cr&&_r(x)),s!==o){if(l=[],T.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(M)),u!==o)for(;u!==o;)l.push(u),T.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(M));else l=o;l!==o?r=i=[i,a,s,l]:(ir=r,r=o)}else ir=r,r=o;else ir=r,r=o}else ir=r,r=o;return(n=r!==o?e.substring(n,ir):r)!==o&&(ar=t,n=parseFloat(n)),t=n,dr[c]={nextPos:ir,result:t},t}function Lr(){var t,n,r,i,a,s,l,u,c,d=135*ir+17,h=dr[d];return h?(ir=h.nextPos,h.result):(cr++,t=ir,n=ir,r=ir,T.test(e.charAt(ir))?(i=e.charAt(ir),ir++):(i=o,0===cr&&_r(M)),i!==o?(T.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(M)),a!==o?(T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o?(T.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(M)),l!==o?r=i=[i,a,s,l]:(ir=r,r=o)):(ir=r,r=o)):(ir=r,r=o)):(ir=r,r=o),(n=r!==o?e.substring(n,ir):r)!==o?(45===e.charCodeAt(ir)?(r="-",ir++):(r=o,0===cr&&_r(k)),r!==o?(i=ir,a=ir,T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o?(T.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(M)),l!==o?a=s=[s,l]:(ir=a,a=o)):(ir=a,a=o),(i=a!==o?e.substring(i,ir):a)!==o?(45===e.charCodeAt(ir)?(a="-",ir++):(a=o,0===cr&&_r(k)),a!==o?(s=ir,l=ir,T.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(M)),u!==o?(T.test(e.charAt(ir))?(c=e.charAt(ir),ir++):(c=o,0===cr&&_r(M)),c!==o?l=u=[u,c]:(ir=l,l=o)):(ir=l,l=o),(s=l!==o?e.substring(s,ir):l)!==o?(ar=t,t=n=function(e,t,n){e=parseInt(e,10),t=parseInt(t,10)-1,n=parseInt(n,10);var r=new Date(e,t,n);return r.getFullYear()==e&&r.getMonth()==t&&r.getDate()==n||mr(ei("db.messages.parser.error-invalid-date-format",{str:hr()})),r}(n,i,s)):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o),cr--,t===o&&(n=o,0===cr&&_r(R)),dr[d]={nextPos:ir,result:t},t)}function Ar(){var t,n,r=135*ir+18,i=dr[r];return i?(ir=i.nextPos,i.result):(t=ir,"true"===e.substr(ir,4).toLowerCase()?(n=e.substr(ir,4),ir+=4):(n=o,0===cr&&_r(L)),n!==o&&(ar=t,n=!0),(t=n)===o&&(t=ir,"false"===e.substr(ir,5).toLowerCase()?(n=e.substr(ir,5),ir+=5):(n=o,0===cr&&_r(A)),n!==o&&(ar=t,n=!1),t=n),dr[r]={nextPos:ir,result:t},t)}function Dr(){var t,n,r,i,a,s,l,u,c=135*ir+20,d=dr[c];if(d)return ir=d.nextPos,d.result;if(cr++,t=ir,n=ir,cr++,r=ir,(i=Zo())!==o){if(a=ir,cr++,s=[],P.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(I)),l!==o)for(;l!==o;)s.push(l),P.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(I));else s=o;cr--,s===o?a=void 0:(ir=a,a=o),a!==o?r=i=[i,a]:(ir=r,r=o)}else ir=r,r=o;if(cr--,r===o?n=void 0:(ir=n,n=o),n!==o){if(r=ir,i=ir,a=[],H.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(Y)),s!==o)for(;s!==o;)a.push(s),H.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(Y));else a=o;if(a!==o){for(s=ir,l=[],P.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(I));u!==o;)l.push(u),P.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(I));(s=l!==o?e.substring(s,ir):l)!==o?i=a=[a,s]:(ir=i,i=o)}else ir=i,i=o;(r=i!==o?e.substring(r,ir):i)!==o?(ar=t,t=n=r):(ir=t,t=o)}else ir=t,t=o;return cr--,t===o&&(n=o,0===cr&&_r(N)),dr[c]={nextPos:ir,result:t},t}function Nr(){var t,n,r,i,a,s,l,u,c=135*ir+21,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,n=ir,cr++,r=ir,(i=Zo())!==o){if(a=ir,cr++,s=[],P.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(I)),l!==o)for(;l!==o;)s.push(l),P.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(I));else s=o;cr--,s===o?a=void 0:(ir=a,a=o),a!==o?r=i=[i,a]:(ir=r,r=o)}else ir=r,r=o;if(cr--,r===o?n=void 0:(ir=n,n=o),n!==o){if(r=ir,i=ir,a=[],H.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(Y)),s!==o)for(;s!==o;)a.push(s),H.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(Y));else a=o;if(a!==o){for(s=ir,l=[],P.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(I));u!==o;)l.push(u),P.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(I));(s=l!==o?e.substring(s,ir):l)!==o?i=a=[a,s]:(ir=i,i=o)}else ir=i,i=o;(r=i!==o?e.substring(r,ir):i)!==o?(ar=t,t=n=r):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}function Pr(){var t,n,r,i,a,s,l,u,c=135*ir+22,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,n=ir,(r=Dr())!==o?(46===e.charCodeAt(ir)?(i=".",ir++):(i=o,0===cr&&_r(x)),i!==o?n=r=[r,i]:(ir=n,n=o)):(ir=n,n=o),n===o&&(n=null),n!==o&&(r=Nr())!==o?(ar=t,u=r,null!=(l=n)&&(l=l[0]),t=n={type:"columnName",name:u,relAlias:l}):(ir=t,t=o),t===o)if(t=ir,n=ir,(r=Dr())!==o?(46===e.charCodeAt(ir)?(i=".",ir++):(i=o,0===cr&&_r(x)),i!==o?n=r=[r,i]:(ir=n,n=o)):(ir=n,n=o),n===o&&(n=null),n!==o)if(91===e.charCodeAt(ir)?(r="[",ir++):(r=o,0===cr&&_r(F)),r!==o){if(i=ir,a=[],T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o)for(;s!==o;)a.push(s),T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M));else a=o;(i=a!==o?e.substring(i,ir):a)!==o?(93===e.charCodeAt(ir)?(a="]",ir++):(a=o,0===cr&&_r(W)),a!==o?(ar=t,t=n=function(e,t){return null!=e&&(e=e[0]),{type:"columnName",name:parseInt(t,10),relAlias:e}}(n,i)):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}function Ir(){var t,n,r,i=135*ir+25,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,961===e.charCodeAt(ir)?(r="ρ",ir++):(r=o,0===cr&&_r(K)),r!==o&&(ar=n,r=X()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"rho"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r($)),r!==o&&(ar=n,r=X()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}function Hr(){var t,n,r,i=135*ir+26,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,8592===e.charCodeAt(ir)?(r="←",ir++):(r=o,0===cr&&_r(J)),r!==o&&(ar=n,r=Q()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"<-"===e.substr(ir,2)?(r="<-",ir+=2):(r=o,0===cr&&_r(Z)),r!==o&&(ar=n,r=Q()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}function Yr(){var t,n,r,i=135*ir+27,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,8594===e.charCodeAt(ir)?(r="→",ir++):(r=o,0===cr&&_r(ee)),r!==o&&(ar=n,r=te()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"->"===e.substr(ir,2)?(r="->",ir+=2):(r=o,0===cr&&_r(ne)),r!==o&&(ar=n,r=te()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}function Fr(){var t,n,r,i=135*ir+30,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,947===e.charCodeAt(ir)?(r="γ",ir++):(r=o,0===cr&&_r(ae)),r!==o&&(ar=n,r=se()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"gamma"===e.substr(ir,5).toLowerCase()?(r=e.substr(ir,5),ir+=5):(r=o,0===cr&&_r(le)),r!==o&&(ar=n,r=se()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}function Wr(){var t,n,r,i=135*ir+33,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,247===e.charCodeAt(ir)?(r="÷",ir++):(r=o,0===cr&&_r(pe)),r===o&&(47===e.charCodeAt(ir)?(r="/",ir++):(r=o,0===cr&&_r(ge))),r!==o&&(ar=n,r=ri("divisionOperator")),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),dr[i]={nextPos:ir,result:t},t)}function Br(){var t,n,r,i,a=135*ir+44,s=dr[a];return s?(ir=s.nextPos,s.result):(t=ir,(n=Dr())!==o?(ar=ir,i=n,(void ai.push(i)?o:void 0)!==o&&function(){var t,n,r,i,a=135*ir+19,s=dr[a];return s?(ir=s.nextPos,s.result):(t=ir,(n=kr())!==o?(61===e.charCodeAt(ir)?(r="=",ir++):(r=o,0===cr&&_r(D)),r!==o&&(i=kr())!==o?t=n=[n,r,i]:(ir=t,t=o)):(ir=t,t=o),dr[a]={nextPos:ir,result:t},t)}()!==o&&(r=eo())!==o?(ar=t,t=n=function(e,t){return t.assignmentName=e,{type:"assignment",name:e,child:t,codeInfo:ti()}}(n,r)):(ir=t,t=o)):(ir=t,t=o),dr[a]={nextPos:ir,result:t},t)}function Ur(){var e,t,n,r=135*ir+45,i=dr[r];return i?(ir=i.nextPos,i.result):(e=ir,(t=Uo())!==o&&Yr()!==o&&(n=Nr())!==o?(ar=e,e=t={type:"namedColumnExpr",name:n,relAlias:null,child:t,codeInfo:ti()}):(ir=e,e=o),e===o&&(e=ir,(t=Nr())!==o&&Hr()!==o&&(n=Uo())!==o?(ar=e,e=t=function(e,t){return{type:"namedColumnExpr",name:e,relAlias:null,child:t,codeInfo:ti()}}(t,n)):(ir=e,e=o),e===o&&(e=ir,(t=Pr())!==o&&(ar=e,t=t),e=t)),dr[r]={nextPos:ir,result:e},e)}function zr(){var e,t,n,r=135*ir+48,i=dr[r];return i?(ir=i.nextPos,i.result):(e=ir,(t=Nr())!==o&&Hr()!==o&&(n=Pr())!==o?(ar=e,e=t={type:"colAssignment",src:n,dst:t,codeInfo:ti()}):(ir=e,e=o),e===o&&(e=ir,(t=Pr())!==o&&Yr()!==o&&(n=Nr())!==o?(ar=e,e=t=function(e,t){return{type:"colAssignment",src:e,dst:t,codeInfo:ti()}}(t,n)):(ir=e,e=o)),dr[r]={nextPos:ir,result:e},e)}function Vr(){var t,n,r,i,a,s,l=135*ir+51,u=dr[l];return u?(ir=u.nextPos,u.result):(t=ir,(n=Pr())!==o?(r=ir,(i=Or())!==o&&(a=function(){var t,n,r=135*ir+50,i=dr[r];return i?(ir=i.nextPos,i.result):(t=ir,"asc"===e.substr(ir,3).toLowerCase()?(n=e.substr(ir,3),ir+=3):(n=o,0===cr&&_r(Qe)),n!==o&&(ar=t,n=!0),(t=n)===o&&(t=ir,"desc"===e.substr(ir,4).toLowerCase()?(n=e.substr(ir,4),ir+=4):(n=o,0===cr&&_r(Ze)),n!==o&&(ar=t,n=!1),t=n),dr[r]={nextPos:ir,result:t},t)}())!==o?r=i=[i,a]:(ir=r,r=o),r===o&&(r=null),r!==o?(ar=t,t=n={col:n,asc:s=null==(s=r)||s[1]}):(ir=t,t=o)):(ir=t,t=o),dr[l]={nextPos:ir,result:t},t)}function qr(){var t,n,r,i,a,s,l=135*ir+53,u=dr[l];return u?(ir=u.nextPos,u.result):(t=ir,n=ir,"sum"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(et)),r===o&&("count"===e.substr(ir,5).toLowerCase()?(r=e.substr(ir,5),ir+=5):(r=o,0===cr&&_r(tt)),r===o&&("avg"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(nt)),r===o&&("min"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(rt)),r===o&&("max"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(ot)))))),(n=r!==o?e.substring(n,ir):r)!==o?(40===e.charCodeAt(ir)?(r="(",ir++):(r=o,0===cr&&_r(it)),r!==o&&kr()!==o&&(i=Pr())!==o&&kr()!==o?(41===e.charCodeAt(ir)?(a=")",ir++):(a=o,0===cr&&_r(at)),a!==o?(ar=t,s=i,t=n={aggFunction:n.toUpperCase(),col:s}):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,"count(*)"===e.substr(ir,8).toLowerCase()?(n=e.substr(ir,8),ir+=8):(n=o,0===cr&&_r(st)),n!==o&&(ar=t,n={aggFunction:"COUNT_ALL",col:null}),t=n),dr[l]={nextPos:ir,result:t},t)}function Gr(){var e,t,n,r,i,a=135*ir+54,s=dr[a];return s?(ir=s.nextPos,s.result):(e=ir,(t=qr())!==o&&Yr()!==o&&(n=Nr())!==o?(ar=e,i=n,(r=t).name=i,e=t=r):(ir=e,e=o),e===o&&(e=ir,(t=Nr())!==o&&Hr()!==o&&(n=qr())!==o?(ar=e,e=t=function(e,t){return t.name=e,t}(t,n)):(ir=e,e=o)),dr[a]={nextPos:ir,result:e},e)}function Kr(){var t,n,r,i,a,s,l,u,c=135*ir+55,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=Gr())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Gr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Gr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=$e(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}function Xr(){var e,t,n=135*ir+56,r=dr[n];return r?(ir=r.nextPos,r.result):(e=ir,(t=So())!==o&&Or()!==o?(ar=ir,(function(e){if("valueExpr"===e.type&&"columnValue"===e.func&&!e.wrappedInParentheses&&null===e.args[1]){for(var t=0;tir?(h=e.charAt(ir),ir++):(h=o,0===cr&&_r(s)),h!==o?c=d=[d,h]:(ir=c,c=o)):(ir=c,c=o);c!==o;)u.push(c),c=ir,d=ir,cr++,h=Cr(),cr--,h===o?d=void 0:(ir=d,d=o),d!==o?(e.length>ir?(h=e.charAt(ir),ir++):(h=o,0===cr&&_r(s)),h!==o?c=d=[d,h]:(ir=c,c=o)):(ir=c,c=o);(l=u!==o?e.substring(l,ir):u)!==o?(ar=t,t=n=function(e,t,n){return{name:e,lang:t?t[1]:null,text:n}}(r,i,l)):(ir=t,t=o)}else ir=t,t=o;else ir=t,t=o;else ir=t,t=o}else ir=t,t=o;if(t===o){if(t=ir,n=ir,cr++,r=ir,i=[],ht.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(ft)),a!==o)for(;a!==o;)i.push(a),ht.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(ft));else i=o;if(i!==o?("[["===e.substr(ir,2)?(a="[[",ir+=2):(a=o,0===cr&&_r(bt)),a!==o?r=i=[i,a]:(ir=r,r=o)):(ir=r,r=o),cr--,r!==o?(ir=n,n=void 0):n=o,n!==o){if(r=ir,i=[],pt.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(gt)),a!==o)for(;a!==o;)i.push(a),pt.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(gt));else i=o;if((r=i!==o?e.substring(r,ir):i)!==o)if(i=ir,64===e.charCodeAt(ir)?(a="@",ir++):(a=o,0===cr&&_r(yt)),a!==o&&(l=Jr())!==o?i=a=[a,l]:(ir=i,i=o),i===o&&(i=null),i!==o)if("[["===e.substr(ir,2)?(a="[[",ir+=2):(a=o,0===cr&&_r(bt)),a!==o){for(l=ir,u=[],"\\]]"===e.substr(ir,3)?(c="\\]]",ir+=3):(c=o,0===cr&&_r(vt)),c===o&&(c=ir,d=ir,cr++,"]]"===e.substr(ir,2)?(h="]]",ir+=2):(h=o,0===cr&&_r(_t)),cr--,h===o?d=void 0:(ir=d,d=o),d!==o?(e.length>ir?(h=e.charAt(ir),ir++):(h=o,0===cr&&_r(s)),h!==o?c=d=[d,h]:(ir=c,c=o)):(ir=c,c=o));c!==o;)u.push(c),"\\]]"===e.substr(ir,3)?(c="\\]]",ir+=3):(c=o,0===cr&&_r(vt)),c===o&&(c=ir,d=ir,cr++,"]]"===e.substr(ir,2)?(h="]]",ir+=2):(h=o,0===cr&&_r(_t)),cr--,h===o?d=void 0:(ir=d,d=o),d!==o?(e.length>ir?(h=e.charAt(ir),ir++):(h=o,0===cr&&_r(s)),h!==o?c=d=[d,h]:(ir=c,c=o)):(ir=c,c=o));(l=u!==o?e.substring(l,ir):u)!==o?("]]"===e.substr(ir,2)?(u="]]",ir+=2):(u=o,0===cr&&_r(_t)),u!==o?(ar=t,t=n=function(e,t,n){return n=(n=n.replace(/\\]]/g,"]]")).replace(/\\\\]]/g,"\\]]"),{name:e,lang:t?t[1]:null,text:n}}(r,i,l)):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;else ir=t,t=o;else ir=t,t=o}else ir=t,t=o}return dr[f]={nextPos:ir,result:t},t}function Zr(){var e,t,n,r,i,a,s=135*ir+62,l=dr[s];if(l)return ir=l.nextPos,l.result;if(e=ir,kr()!==o)if((t=function(){var e,t,n,r,i,a,s,l,u=135*ir+59,c=dr[u];if(c)return ir=c.nextPos,c.result;if(e=ir,(t=Qr())!==o){for(n=[],r=ir,(i=Or())!==o&&(a=Qr())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=Or())!==o&&(a=Qr())!==o?r=i=[i,a]:(ir=r,r=o);n!==o?(ar=e,s=n,(l=[]).push(t),s.map((function(e){var t=e[1];l.push(t)})),e=t=l):(ir=e,e=o)}else ir=e,e=o;return dr[u]={nextPos:ir,result:e},e}())!==o){if(n=[],r=ir,(i=Or())!==o&&(a=Br())!==o?r=i=[i,a]:(ir=r,r=o),r!==o)for(;r!==o;)n.push(r),r=ir,(i=Or())!==o&&(a=Br())!==o?r=i=[i,a]:(ir=r,r=o);else n=o;n!==o?(ar=e,e=function(e,t){for(var n=[],r=0;r"group"===e.name);return void 0===o?mr(ei("db.messages.parser.error-group-header-name-missing")+': "group: ..........\\n"'):0===o.text.trim().length&&mr(ei("error-group-header-name-empty")),{type:"tableGroup",headers:e,assignments:n,codeInfo:ti()}}(t,n)):(ir=e,e=o)}else ir=e,e=o;else ir=e,e=o;return dr[s]={nextPos:ir,result:e},e}function eo(){var e,t,n,r,i=135*ir+63,a=dr[i];if(a)return ir=a.nextPos,a.result;if(e=ir,(t=to())!==o){if(n=[],(r=io())===o&&(r=ao()),r!==o)for(;r!==o;)n.push(r),(r=io())===o&&(r=ao());else n=o;n!==o?(ar=e,e=t=wt(t,n)):(ir=e,e=o)}else ir=e,e=o;return e===o&&(e=to()),dr[i]={nextPos:ir,result:e},e}function to(){var e,t,n,r,i=135*ir+64,a=dr[i];if(a)return ir=a.nextPos,a.result;if(e=ir,(t=no())!==o){if(n=[],(r=oo())!==o)for(;r!==o;)n.push(r),r=oo();else n=o;n!==o?(ar=e,e=t=wt(t,n)):(ir=e,e=o)}else ir=e,e=o;return e===o&&(e=no()),dr[i]={nextPos:ir,result:e},e}function no(){var e,t,n,r,i=135*ir+65,a=dr[i];if(a)return ir=a.nextPos,a.result;if(e=ir,(t=ro())!==o){if(n=[],(r=so())===o&&(r=lo())===o&&(r=uo())===o&&(r=co())===o&&(r=ho())===o&&(r=fo())===o&&(r=mo())===o&&(r=po())===o&&(r=go())===o&&(r=yo()),r!==o)for(;r!==o;)n.push(r),(r=so())===o&&(r=lo())===o&&(r=uo())===o&&(r=co())===o&&(r=ho())===o&&(r=fo())===o&&(r=mo())===o&&(r=po())===o&&(r=go())===o&&(r=yo());else n=o;n!==o?(ar=e,e=t=wt(t,n)):(ir=e,e=o)}else ir=e,e=o;return e===o&&(e=ro()),dr[i]={nextPos:ir,result:e},e}function ro(){var t,n=135*ir+66,r=dr[n];return r?(ir=r.nextPos,r.result):((t=function(){var t,n,r,i,a=135*ir+86,s=dr[a];if(s)return ir=s.nextPos,s.result;t=ir,(n=function(){var t,n,r,i=135*ir+29,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,964===e.charCodeAt(ir)?(r="τ",ir++):(r=o,0===cr&&_r(re)),r!==o&&(ar=n,r=oe()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"tau"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(ie)),r!==o&&(ar=n,r=oe()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}())!==o&&(r=function(){var t,n,r,i,a,s,l,u,c=135*ir+52,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=Vr())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Vr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Vr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=Je(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}())!==o&&Or()!==o&&(i=ro())!==o?(ar=t,l=n,u=r,c=i,si.push(l),n={type:"orderBy",child:c,arg:u,codeInfo:ti()},t=n):(ir=t,t=o);var l,u,c;return dr[a]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a,s,l,u=135*ir+85,c=dr[u];if(c)return ir=c.nextPos,c.result;t=ir,(n=Fr())!==o&&(r=function(){var t,n,r,i,a,s,l,u,c=135*ir+47,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=Pr())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Pr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Pr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=$e(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}())!==o&&(i=kr())!==o?(59===e.charCodeAt(ir)?(a=";",ir++):(a=o,0===cr&&_r(jt)),a!==o&&kr()!==o&&(s=Kr())!==o&&Or()!==o&&(l=ro())!==o?(ar=t,d=n,h=r,f=s,m=l,si.push(d),n={type:"groupBy",child:m,group:h,aggregate:f,codeInfo:ti()},t=n):(ir=t,t=o)):(ir=t,t=o);var d,h,f,m;t===o&&(t=ir,(n=Fr())!==o?(r=ir,(i=kr())!==o?(59===e.charCodeAt(ir)?(a=";",ir++):(a=o,0===cr&&_r(jt)),a!==o?r=i=[i,a]:(ir=r,r=o)):(ir=r,r=o),r===o&&(r=null),r!==o&&(i=kr())!==o&&(a=Kr())!==o&&Or()!==o&&(s=ro())!==o?(ar=t,n=function(e,t,n){return si.push(e),{type:"groupBy",child:n,group:[],aggregate:t,codeInfo:ti()}}(n,a,s),t=n):(ir=t,t=o)):(ir=t,t=o));return dr[u]={nextPos:ir,result:t},t}())===o&&(t=function(){var e,t,n,r,i=135*ir+84,a=dr[i];if(a)return ir=a.nextPos,a.result;e=ir,(t=Ir())!==o&&(n=Dr())!==o&&Or()!==o&&(r=ro())!==o?(ar=e,s=t,l=n,u=r,si.push(s),t={type:"renameRelation",child:u,newRelAlias:l,codeInfo:ti()},e=t):(ir=e,e=o);var s,l,u;return dr[i]={nextPos:ir,result:e},e}())===o&&(t=function(){var t,n,r,i,a=135*ir+83,s=dr[a];if(s)return ir=s.nextPos,s.result;t=ir,(n=Ir())!==o&&(r=function(){var t,n,r,i,a,s,l,u,c=135*ir+49,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=zr())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=zr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=zr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=Je(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}())!==o&&Or()!==o&&(i=ro())!==o?(ar=t,l=n,u=r,c=i,si.push(l),n={type:"renameColumns",child:c,arg:u,codeInfo:ti()},t=n):(ir=t,t=o);var l,u,c;return dr[a]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a=135*ir+82,s=dr[a];if(s)return ir=s.nextPos,s.result;t=ir,(n=function(){var t,n,r,i=135*ir+24,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,963===e.charCodeAt(ir)?(r="σ",ir++):(r=o,0===cr&&_r(V)),r!==o&&(ar=n,r=q()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"sigma"===e.substr(ir,5).toLowerCase()?(r=e.substr(ir,5),ir+=5):(r=o,0===cr&&_r(G)),r!==o&&(ar=n,r=q()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}())!==o&&(r=So())!==o&&Or()!==o&&(i=ro())!==o?(ar=t,l=n,u=r,c=i,si.push(l),n={type:"selection",child:c,arg:u,codeInfo:ti()},t=n):(ir=t,t=o);var l,u,c;return dr[a]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a=135*ir+81,s=dr[a];if(s)return ir=s.nextPos,s.result;t=ir,(n=function(){var t,n,r,i=135*ir+23,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,960===e.charCodeAt(ir)?(r="π",ir++):(r=o,0===cr&&_r(B)),r!==o&&(ar=n,r=U()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"pi"===e.substr(ir,2).toLowerCase()?(r=e.substr(ir,2),ir+=2):(r=o,0===cr&&_r(z)),r!==o&&(ar=n,r=U()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}())!==o&&(r=function(){var t,n,r,i,a,s,l,u,c=135*ir+46,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=Ur())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Ur())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Ur())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=$e(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}())!==o&&Or()!==o&&(i=ro())!==o?(ar=t,l=n,u=r,c=i,si.push(l),n={type:"projection",child:c,arg:u,codeInfo:ti()},t=n):(ir=t,t=o);var l,u,c;return dr[a]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a=135*ir+67,s=dr[a];if(s)return ir=s.nextPos,s.result;(t=function(){var t,n,r,i,a,s,l,u,c,d=135*ir+105,h=dr[d];if(h)return ir=h.nextPos,h.result;t=ir,123===e.charCodeAt(ir)?(n="{",ir++):(n=o,0===cr&&_r(sn));if(n!==o)if(kr()!==o)if((r=function(){var e,t,n,r,i,a,s=135*ir+103,l=dr[s];if(l)return ir=l.nextPos,l.result;if(e=ir,(t=Eo())!==o){for(n=[],r=ir,(i=wo())!==o&&(a=Eo())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=wo())!==o&&(a=Eo())!==o?r=i=[i,a]:(ir=r,r=o);n!==o?(ar=e,t=function(e,t){for(var n,r=[e],o=0;o="===e.substr(ir,2)?(n=">=",ir+=2):(n=o,0===cr&&_r(kt));n===o&&(8805===e.charCodeAt(ir)?(n="≥",ir++):(n=o,0===cr&&_r(Tt)));n!==o&&(ar=t,n=">=");return t=n,dr[r]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r=135*ir+94,i=dr[r];if(i)return ir=i.nextPos,i.result;t=ir,"<="===e.substr(ir,2)?(n="<=",ir+=2):(n=o,0===cr&&_r(xt));n===o&&(8804===e.charCodeAt(ir)?(n="≤",ir++):(n=o,0===cr&&_r(Rt)));n!==o&&(ar=t,n="<=");return t=n,dr[r]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n=135*ir+93,r=dr[n];if(r)return ir=r.nextPos,r.result;62===e.charCodeAt(ir)?(t=">",ir++):(t=o,0===cr&&_r(Mt));return dr[n]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n=135*ir+95,r=dr[n];if(r)return ir=r.nextPos,r.result;60===e.charCodeAt(ir)?(t="<",ir++):(t=o,0===cr&&_r(Lt));return dr[n]={nextPos:ir,result:t},t}()),dr[n]={nextPos:ir,result:t},t)}function vo(){var t,n=135*ir+90,r=dr[n];return r?(ir=r.nextPos,r.result):(61===e.charCodeAt(ir)?(t="=",ir++):(t=o,0===cr&&_r(D)),dr[n]={nextPos:ir,result:t},t)}function _o(){var t,n,r=135*ir+91,i=dr[r];return i?(ir=i.nextPos,i.result):(t=ir,"!="===e.substr(ir,2)?(n="!=",ir+=2):(n=o,0===cr&&_r(Ct)),n===o&&(8800===e.charCodeAt(ir)?(n="≠",ir++):(n=o,0===cr&&_r(St)),n===o&&("<>"===e.substr(ir,2)?(n="<>",ir+=2):(n=o,0===cr&&_r(Ot)))),n!==o&&(ar=t,n="!="),t=n,dr[r]={nextPos:ir,result:t},t)}function wo(){var t,n,r,i,a=135*ir+100,s=dr[a];return s?(ir=s.nextPos,s.result):(cr++,t=ir,(n=Mr())!==o?(44===e.charCodeAt(ir)?(r=",",ir++):(r=o,0===cr&&_r(Xe)),r!==o&&(i=Mr())!==o?t=n=[n,r,i]:(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,(n=Mr())!==o?(59===e.charCodeAt(ir)?(r=";",ir++):(r=o,0===cr&&_r(jt)),r!==o&&(i=Mr())!==o?t=n=[n,r,i]:(ir=t,t=o)):(ir=t,t=o),t===o&&(t=function(){var t,n,r,i,a,s,l,u=135*ir+11,c=dr[u];if(c)return ir=c.nextPos,c.result;for(t=ir,n=[],r=ir,i=[],a=Sr();a!==o;)i.push(a),a=Sr();if(i!==o){if(a=[],h.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(f)),s!==o)for(;s!==o;)a.push(s),h.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(f));else a=o;if(a!==o){for(s=[],l=Sr();l!==o;)s.push(l),l=Sr();s!==o?r=i=[i,a,s]:(ir=r,r=o)}else ir=r,r=o}else ir=r,r=o;if(r!==o)for(;r!==o;){for(n.push(r),r=ir,i=[],a=Sr();a!==o;)i.push(a),a=Sr();if(i!==o){if(a=[],h.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(f)),s!==o)for(;s!==o;)a.push(s),h.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(f));else a=o;if(a!==o){for(s=[],l=Sr();l!==o;)s.push(l),l=Sr();s!==o?r=i=[i,a,s]:(ir=r,r=o)}else ir=r,r=o}else ir=r,r=o}else n=o;return n!==o&&(ar=t,n=""),t=n,dr[u]={nextPos:ir,result:t},t}())),cr--,t===o&&(n=o,0===cr&&_r(qt)),dr[a]={nextPos:ir,result:t},t)}function Eo(){var t,n,r,i,a,s,l,u=135*ir+101,c=dr[u];return c?(ir=c.nextPos,c.result):(t=ir,(n=Pr())!==o?(r=ir,58===e.charCodeAt(ir)?(i=":",ir++):(i=o,0===cr&&_r(mt)),i!==o?("string"===e.substr(ir,6).toLowerCase()?(a=e.substr(ir,6),ir+=6):(a=o,0===cr&&_r(Gt)),a===o&&("number"===e.substr(ir,6).toLowerCase()?(a=e.substr(ir,6),ir+=6):(a=o,0===cr&&_r(Kt)),a===o&&("date"===e.substr(ir,4).toLowerCase()?(a=e.substr(ir,4),ir+=4):(a=o,0===cr&&_r(Xt)),a===o&&("boolean"===e.substr(ir,7).toLowerCase()?(a=e.substr(ir,7),ir+=7):(a=o,0===cr&&_r($t))))),a!==o?r=i=[i,a]:(ir=r,r=o)):(ir=r,r=o),r===o&&(r=null),r!==o?(ar=t,l=r,t=n={name:(s=n).name,relAlias:s.relAlias,type:null===l?null:l[1].toLowerCase()}):(ir=t,t=o)):(ir=t,t=o),dr[u]={nextPos:ir,result:t},t)}function jo(){var t,n,r,i,a,s=135*ir+102,l=dr[s];if(l)return ir=l.nextPos,l.result;if(t=ir,(n=Lr())!==o&&(ar=t,n={type:"date",value:n}),(t=n)===o&&(t=ir,"null"===e.substr(ir,4)?(n="null",ir+=4):(n=o,0===cr&&_r(Jt)),n===o&&("NULL"===e.substr(ir,4)?(n="NULL",ir+=4):(n=o,0===cr&&_r(Qt))),n!==o&&(ar=t,n={type:"null",value:null}),(t=n)===o&&(t=ir,(n=Ar())!==o?(r=ir,cr++,(i=wo())===o&&(i=Cr())===o&&(125===e.charCodeAt(ir)?(i="}",ir++):(i=o,0===cr&&_r(Zt))),cr--,i!==o?(ir=r,r=void 0):r=o,r!==o?(ar=t,t=n={type:"boolean",value:n,quoted:!1}):(ir=t,t=o)):(ir=t,t=o),t===o))){if(t=ir,n=ir,r=[],en.test(e.charAt(ir))?(i=e.charAt(ir),ir++):(i=o,0===cr&&_r(tn)),i!==o)for(;i!==o;)r.push(i),en.test(e.charAt(ir))?(i=e.charAt(ir),ir++):(i=o,0===cr&&_r(tn));else r=o;if((n=r!==o?e.substring(n,ir):r)!==o&&(ar=t,n=function(e){return{type:"string",value:e,quoted:!1}}(n)),(t=n)===o){if(t=ir,39===e.charCodeAt(ir)?(n="'",ir++):(n=o,0===cr&&_r(C)),n!==o){for(r=ir,i=[],S.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(O));a!==o;)i.push(a),S.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(O));(r=i!==o?e.substring(r,ir):i)!==o?(39===e.charCodeAt(ir)?(i="'",ir++):(i=o,0===cr&&_r(C)),i!==o?(ar=t,t=n=nn(r)):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;if(t===o)if(t=ir,34===e.charCodeAt(ir)?(n='"',ir++):(n=o,0===cr&&_r(rn)),n!==o){for(r=ir,i=[],on.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(an));a!==o;)i.push(a),on.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(an));(r=i!==o?e.substring(r,ir):i)!==o?(34===e.charCodeAt(ir)?(i='"',ir++):(i=o,0===cr&&_r(rn)),i!==o?(ar=t,t=n=nn(r)):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o}}return dr[s]={nextPos:ir,result:t},t}function Co(){var e,t,n,r,i,a,s=135*ir+104,l=dr[s];if(l)return ir=l.nextPos,l.result;if(e=ir,(t=jo())!==o){for(n=[],r=ir,(i=wo())!==o&&(a=jo())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=wo())!==o&&(a=jo())!==o?r=i=[i,a]:(ir=r,r=o);n!==o?(ar=e,e=t=function(e,t){for(var n=[e],r=0;r0){for(t=1,r=1;t",!1),qe=Qn("!=",!1),Ge=Qn(">=",!1),Ke=Qn(">",!1),Xe=Qn("<=",!1),$e=Qn("<",!1),Je=er("logical AND"),Qe=Qn("and",!0),Ze=er("logical XOR"),et=Qn("xor",!0),tt=er("logical OR"),nt=Qn("or",!0),rt=er("logical NOT"),ot=Qn("!",!1),it=(Qn("not",!1),Qn("exists",!0)),at=Qn("#",!1),st=/^[^\n]/,lt=Zn(["\n"],!0,!1),ut=Qn("`",!1),ct=Qn("drop",!0),dt=Qn("table",!0),ht=Qn("if",!0),ft=Qn("lock",!0),mt=Qn("tables",!0),pt=Qn("unlock",!0),gt=Qn("use",!0),yt=/^[a-zA-Z_0-9\-]/,bt=Zn([["a","z"],["A","Z"],"_",["0","9"],"-"],!1,!1),vt=Qn("decimal",!0),_t=Qn("tinyint",!0),wt=Qn("smallint",!0),Et=Qn("mediumint",!0),jt=Qn("bigint",!0),Ct=Qn("integer",!0),St=Qn("int",!0),Ot=Qn("float",!0),kt=Qn("double",!0),Tt=Qn("varchar",!0),Mt=Qn("char",!0),xt=Qn("text",!0),Rt=Qn("datetime",!0),Lt=/^[a-zA-Z0-9_=]/,At=Zn([["a","z"],["A","Z"],["0","9"],"_","="],!1,!1),Dt=Qn("create",!0),Nt=Qn("exists",!1),Pt=Qn("null",!0),It=Qn("insert",!0),Ht=Qn("into",!0),Yt=Qn("values",!0),Ft=er("boolean expression"),Wt=Qn("||",!1),Bt=function(e,t){return{type:"valueExpr",datatype:"boolean",func:e,args:[void 0,t],codeInfo:No()}},Ut=Qn("like",!0),zt=Qn("ilike",!0),Vt=Qn("+",!1),qt=Qn("/",!1),Gt=Qn("%",!1),Kt=Qn("coalesce",!0),Xt=Qn("concat",!0),$t=Qn("adddate",!0),Jt=Qn("subdate",!0),Qt=Qn("mod",!0),Zt=Qn("add",!0),en=Qn("sub",!0),tn=Qn("mul",!0),nn=Qn("div",!0),rn=Qn("upper",!0),on=Qn("ucase",!0),an=Qn("lower",!0),sn=Qn("lcase",!0),ln=Qn("length",!0),un=Qn("abs",!0),cn=Qn("floor",!0),dn=Qn("ceil",!0),hn=Qn("round",!0),fn=Qn("year",!0),mn=Qn("month",!0),pn=Qn("day",!0),gn=Qn("hour",!0),yn=Qn("minute",!0),bn=Qn("second",!0),vn=Qn("dayofmonth",!0),_n=Qn("rand",!0),wn=Qn("rownum",!0),En=Qn("now",!0),jn=Qn("current_timestamp",!0),Cn=Qn("transaction_timestamp",!0),Sn=Qn("statement_timestamp",!0),On=Qn("clock_timestamp",!0),kn=Qn("sysdate",!0),Tn=Qn("case",!0),Mn=Qn("when",!0),xn=Qn("then",!0),Rn=function(e,t){return{w:e,t:t}},Ln=Qn("else",!0),An=Qn("end",!0),Dn=function(e,t){return function(e,t){var n,r=t[0];r.args[0]=e,r.codeInfo=No();for(var o=1;oqn&&(qn=Un,Gn=[]),Gn.push(e))}function or(e,t,n){return new r(r.buildMessage(e,t),e,t,n)}function ir(){var e,t,n,r=113*Un+0,i=Xn[r];return i?(Un=i.nextPos,i.result):(e=Un,(t=kr())!==o&&(zn=e,t=t),(e=t)===o&&(e=Un,(t=kr())!==o&&(n=ur())!==o?(zn=e,e=t=t):(Un=e,e=o),e===o&&(e=Un,(t=ur())!==o&&(n=kr())!==o?(zn=e,e=t=n):(Un=e,e=o))),Xn[r]={nextPos:Un,result:e},e)}function ar(){var t,n,r=113*Un+2,i=Xn[r];return i?(Un=i.nextPos,i.result):(t=Un,Kn++,e.length>Un?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(s)),Kn--,n===o?t=void 0:(Un=t,t=o),Xn[r]={nextPos:Un,result:t},t)}function sr(){var t,n=113*Un+3,r=Xn[n];return r?(Un=r.nextPos,r.result):("\r\n"===e.substr(Un,2)?(t="\r\n",Un+=2):(t=o,0===Kn&&rr(l)),t===o&&(10===e.charCodeAt(Un)?(t="\n",Un++):(t=o,0===Kn&&rr(u))),Xn[n]={nextPos:Un,result:t},t)}function lr(){var t,n=113*Un+4,r=Xn[n];return r?(Un=r.nextPos,r.result):((t=function(){var t,n,r,i,a,l,u,m,p=113*Un+5,g=Xn[p];if(g)return Un=g.nextPos,g.result;Kn++,t=Un,"--"===e.substr(Un,2)?(n="--",Un+=2):(n=o,0===Kn&&rr(d));n!==o?(h.test(e.charAt(Un))?(r=e.charAt(Un),Un++):(r=o,0===Kn&&rr(f)),r!==o?(i=Un,Kn++,(a=sr())===o&&(a=ar()),Kn--,a!==o?(Un=i,i=void 0):i=o,i!==o?t=n=[n,r,i]:(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o);if(t===o&&(t=Un,"--"===e.substr(Un,2)?(n="--",Un+=2):(n=o,0===Kn&&rr(d)),n!==o?(r=Un,Kn++,(i=sr())===o&&(i=ar()),Kn--,i!==o?(Un=r,r=void 0):r=o,r!==o?t=n=[n,r]:(Un=t,t=o)):(Un=t,t=o),t===o))if(t=Un,"--"===e.substr(Un,2)?(n="--",Un+=2):(n=o,0===Kn&&rr(d)),n!==o)if(h.test(e.charAt(Un))?(r=e.charAt(Un),Un++):(r=o,0===Kn&&rr(f)),r!==o){for(i=Un,a=[],l=Un,u=Un,Kn++,m=sr(),Kn--,m===o?u=void 0:(Un=u,u=o),u!==o?(e.length>Un?(m=e.charAt(Un),Un++):(m=o,0===Kn&&rr(s)),m!==o?l=u=[u,m]:(Un=l,l=o)):(Un=l,l=o);l!==o;)a.push(l),l=Un,u=Un,Kn++,m=sr(),Kn--,m===o?u=void 0:(Un=u,u=o),u!==o?(e.length>Un?(m=e.charAt(Un),Un++):(m=o,0===Kn&&rr(s)),m!==o?l=u=[u,m]:(Un=l,l=o)):(Un=l,l=o);(i=a!==o?e.substring(i,Un):a)!==o?(a=Un,Kn++,(l=sr())===o&&(l=ar()),Kn--,l!==o?(Un=a,a=void 0):a=o,a!==o?t=n=[n,r,i,a]:(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;else Un=t,t=o;Kn--,t===o&&(n=o,0===Kn&&rr(c));return Xn[p]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n,r,i,a,l,u=113*Un+6,c=Xn[u];if(c)return Un=c.nextPos,c.result;t=Un,"/*"===e.substr(Un,2)?(n="/*",Un+=2):(n=o,0===Kn&&rr(m));if(n!==o){for(r=[],i=Un,a=Un,Kn++,"*/"===e.substr(Un,2)?(l="*/",Un+=2):(l=o,0===Kn&&rr(p)),Kn--,l===o?a=void 0:(Un=a,a=o),a!==o?(e.length>Un?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(s)),l!==o?i=a=[a,l]:(Un=i,i=o)):(Un=i,i=o);i!==o;)r.push(i),i=Un,a=Un,Kn++,"*/"===e.substr(Un,2)?(l="*/",Un+=2):(l=o,0===Kn&&rr(p)),Kn--,l===o?a=void 0:(Un=a,a=o),a!==o?(e.length>Un?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(s)),l!==o?i=a=[a,l]:(Un=i,i=o)):(Un=i,i=o);r!==o?("*/"===e.substr(Un,2)?(i="*/",Un+=2):(i=o,0===Kn&&rr(p)),i!==o?t=n=[n,r,i]:(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;return Xn[u]={nextPos:Un,result:t},t}()),Xn[n]={nextPos:Un,result:t},t)}function ur(){var t,n,r,i,a,s,l,u=113*Un+7,c=Xn[u];if(c)return Un=c.nextPos,c.result;for(Kn++,t=Un,n=[],r=Un,i=[],a=lr();a!==o;)i.push(a),a=lr();if(i!==o){if(a=[],y.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(b)),s!==o)for(;s!==o;)a.push(s),y.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(b));else a=o;if(a!==o){for(s=[],l=lr();l!==o;)s.push(l),l=lr();s!==o?r=i=[i,a,s]:(Un=r,r=o)}else Un=r,r=o}else Un=r,r=o;if(r!==o)for(;r!==o;){for(n.push(r),r=Un,i=[],a=lr();a!==o;)i.push(a),a=lr();if(i!==o){if(a=[],y.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(b)),s!==o)for(;s!==o;)a.push(s),y.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(b));else a=o;if(a!==o){for(s=[],l=lr();l!==o;)s.push(l),l=lr();s!==o?r=i=[i,a,s]:(Un=r,r=o)}else Un=r,r=o}else Un=r,r=o}else n=o;return n!==o&&(zn=t,n=""),Kn--,(t=n)===o&&(n=o,0===Kn&&rr(g)),Xn[u]={nextPos:Un,result:t},t}function cr(){var t,n,r=113*Un+8,i=Xn[r];if(i)return Un=i.nextPos,i.result;for(Kn++,t=[],(n=lr())===o&&(y.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(b)));n!==o;)t.push(n),(n=lr())===o&&(y.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(b)));return Kn--,t===o&&(n=o,0===Kn&&rr(v)),Xn[r]={nextPos:Un,result:t},t}function dr(){var t,n,r=113*Un+9,i=Xn[r];if(i)return Un=i.nextPos,i.result;if(Kn++,t=[],w.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(E)),n!==o)for(;n!==o;)t.push(n),w.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(E));else t=o;return Kn--,t===o&&(n=o,0===Kn&&rr(_)),Xn[r]={nextPos:Un,result:t},t}function hr(){var t,n,r=113*Un+10,i=Xn[r];if(i)return Un=i.nextPos,i.result;for(Kn++,t=[],w.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(E));n!==o;)t.push(n),w.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(E));return Kn--,t===o&&(n=o,0===Kn&&rr(j)),Xn[r]={nextPos:Un,result:t},t}function fr(){var t,n,r,i,a,s=113*Un+11,l=Xn[s];if(l)return Un=l.nextPos,l.result;if(Kn++,t=Un,34===e.charCodeAt(Un)?(n='"',Un++):(n=o,0===Kn&&rr(S)),n!==o){for(r=[],O.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(k));i!==o;)r.push(i),O.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(k));r!==o?(34===e.charCodeAt(Un)?(i='"',Un++):(i=o,0===Kn&&rr(S)),i!==o?(zn=t,t=n=void Jn(i18n.t("db.messages.parser.error-sql-string-use-single-quotes"))):(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;if(t===o)if(t=Un,39===e.charCodeAt(Un)?(n="'",Un++):(n=o,0===Kn&&rr(T)),n!==o){for(r=Un,i=[],M.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(x));a!==o;)i.push(a),M.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(x));(r=i!==o?e.substring(r,Un):i)!==o?(39===e.charCodeAt(Un)?(i="'",Un++):(i=o,0===Kn&&rr(T)),i!==o?(zn=t,t=n=r):(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;return Kn--,t===o&&(n=o,0===Kn&&rr(C)),Xn[s]={nextPos:Un,result:t},t}function mr(){var t,n,r,i,a,s,l=113*Un+12,u=Xn[l];if(u)return Un=u.nextPos,u.result;if(t=Un,n=Un,r=Un,45===e.charCodeAt(Un)?(i="-",Un++):(i=o,0===Kn&&rr(R)),i===o&&(i=null),i!==o){if(a=[],L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A)),s!==o)for(;s!==o;)a.push(s),L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A));else a=o;a!==o?r=i=[i,a]:(Un=r,r=o)}else Un=r,r=o;return(n=r!==o?e.substring(n,Un):r)!==o&&(zn=t,n=parseInt(n,10)),t=n,Xn[l]={nextPos:Un,result:t},t}function pr(){var t,n,r,i,a,s,l,u,c=113*Un+13,d=Xn[c];if(d)return Un=d.nextPos,d.result;if(t=Un,n=Un,r=Un,45===e.charCodeAt(Un)?(i="-",Un++):(i=o,0===Kn&&rr(R)),i===o&&(i=null),i!==o){if(a=[],L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A)),s!==o)for(;s!==o;)a.push(s),L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A));else a=o;if(a!==o)if(46===e.charCodeAt(Un)?(s=".",Un++):(s=o,0===Kn&&rr(D)),s!==o){if(l=[],L.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(A)),u!==o)for(;u!==o;)l.push(u),L.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(A));else l=o;l!==o?r=i=[i,a,s,l]:(Un=r,r=o)}else Un=r,r=o;else Un=r,r=o}else Un=r,r=o;return(n=r!==o?e.substring(n,Un):r)!==o&&(zn=t,n=parseFloat(n)),t=n,Xn[c]={nextPos:Un,result:t},t}function gr(){var e,t=113*Un+14,n=Xn[t];return n?(Un=n.nextPos,n.result):((e=pr())===o&&(e=mr()),Xn[t]={nextPos:Un,result:e},e)}function yr(){var t,n,r,i,a,s,l,u,c,d,h=113*Un+16,f=Xn[h];if(f)return Un=f.nextPos,f.result;if(Kn++,t=Un,n=Un,Kn++,r=Un,(i=Do())!==o){if(a=Un,Kn++,s=[],H.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(Y)),l!==o)for(;l!==o;)s.push(l),H.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(Y));else s=o;Kn--,s===o?a=void 0:(Un=a,a=o),a!==o?r=i=[i,a]:(Un=r,r=o)}else Un=r,r=o;if(Kn--,r===o?n=void 0:(Un=n,n=o),n!==o){if(r=Un,i=Un,a=[],F.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(W)),s!==o)for(;s!==o;)a.push(s),F.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(W));else a=o;if(a!==o){for(s=Un,l=[],H.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(Y));u!==o;)l.push(u),H.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(Y));(s=l!==o?e.substring(s,Un):l)!==o?i=a=[a,s]:(Un=i,i=o)}else Un=i,i=o;(r=i!==o?e.substring(r,Un):i)!==o?(zn=t,"true"!==(d=(c=r).toLowerCase())&&"false"!==d||Jn(i18n.t("db.messages.parser.error-sql-invalid-relation-name",{str:c})),t=n=c):(Un=t,t=o)}else Un=t,t=o;return Kn--,t===o&&(n=o,0===Kn&&rr(I)),Xn[h]={nextPos:Un,result:t},t}function br(){var t,n,r,i,a,s,l,u,c,d,h=113*Un+17,f=Xn[h];if(f)return Un=f.nextPos,f.result;if(t=Un,n=Un,Kn++,r=Un,(i=Do())!==o){if(a=Un,Kn++,s=[],H.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(Y)),l!==o)for(;l!==o;)s.push(l),H.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(Y));else s=o;Kn--,s===o?a=void 0:(Un=a,a=o),a!==o?r=i=[i,a]:(Un=r,r=o)}else Un=r,r=o;if(Kn--,r===o?n=void 0:(Un=n,n=o),n!==o){if(r=Un,i=Un,a=[],F.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(W)),s!==o)for(;s!==o;)a.push(s),F.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(W));else a=o;if(a!==o){for(s=Un,l=[],H.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(Y));u!==o;)l.push(u),H.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(Y));(s=l!==o?e.substring(s,Un):l)!==o?i=a=[a,s]:(Un=i,i=o)}else Un=i,i=o;(r=i!==o?e.substring(r,Un):i)!==o?(zn=t,"true"!==(d=(c=r).toLowerCase())&&"false"!==d||Jn(i18n.t("db.messages.parser.error-sql-invalid-column-name",{str:c})),t=n=c):(Un=t,t=o)}else Un=t,t=o;return Xn[h]={nextPos:Un,result:t},t}function vr(){var t,n,r,i,a,s=113*Un+19,l=Xn[s];return l?(Un=l.nextPos,l.result):(t=Un,"date"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(B)),n!==o?("('"===e.substr(Un,2)?(r="('",Un+=2):(r=o,0===Kn&&rr(U)),r!==o&&(i=function(){var t,n,r,i,a,s,l,u,c,d=113*Un+20,h=Xn[d];if(h)return Un=h.nextPos,h.result;Kn++,t=Un,n=Un,r=Un,L.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(A));i!==o?(L.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(A)),a!==o?(L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A)),s!==o?(L.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(A)),l!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o);n=r!==o?e.substring(n,Un):r;n!==o?(45===e.charCodeAt(Un)?(r="-",Un++):(r=o,0===Kn&&rr(R)),r!==o?(i=Un,a=Un,L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A)),s!==o?(L.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(A)),l!==o?a=s=[s,l]:(Un=a,a=o)):(Un=a,a=o),(i=a!==o?e.substring(i,Un):a)!==o?(45===e.charCodeAt(Un)?(a="-",Un++):(a=o,0===Kn&&rr(R)),a!==o?(s=Un,l=Un,L.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(A)),u!==o?(L.test(e.charAt(Un))?(c=e.charAt(Un),Un++):(c=o,0===Kn&&rr(A)),c!==o?l=u=[u,c]:(Un=l,l=o)):(Un=l,l=o),(s=l!==o?e.substring(s,Un):l)!==o?(zn=t,n=function(e,t,n){e=parseInt(e,10),t=parseInt(t,10)-1,n=parseInt(n,10);var r=new Date(e,t,n);return r.getFullYear()==e&&r.getMonth()==t&&r.getDate()==n||Jn(i18n.t("db.messages.parser.error-invalid-date-format",{str:$n()})),r}(n,i,s),t=n):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o);Kn--,t===o&&(n=o,0===Kn&&rr(V));return Xn[d]={nextPos:Un,result:t},t}())!==o?("')"===e.substr(Un,2)?(a="')",Un+=2):(a=o,0===Kn&&rr(z)),a!==o?(zn=t,t=n=i):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[s]={nextPos:Un,result:t},t)}function _r(){var t,n,r,i,a,s=113*Un+21,l=Xn[s];return l?(Un=l.nextPos,l.result):(t=Un,n=Un,(r=yr())!==o?(46===e.charCodeAt(Un)?(i=".",Un++):(i=o,0===Kn&&rr(D)),i!==o?n=r=[r,i]:(Un=n,n=o)):(Un=n,n=o),n===o&&(n=null),n!==o&&(r=br())!==o?(zn=t,t=n={type:"column",name:r,relAlias:(a=n)?a[0]:null}):(Un=t,t=o),Xn[s]={nextPos:Un,result:t},t)}function wr(){var t,n,r,i,a=113*Un+23,s=Xn[a];if(s)return Un=s.nextPos,s.result;if(t=Un,n=Un,r=[],L.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(A)),i!==o)for(;i!==o;)r.push(i),L.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(A));else r=o;return(n=r!==o?e.substring(n,Un):r)!==o&&(zn=t,n={type:"column",name:parseInt(n,10),relAlias:null}),t=n,Xn[a]={nextPos:Un,result:t},t}function Er(){var t,n,r,i,a,s,l,u,c=113*Un+24,d=Xn[c];return d?(Un=d.nextPos,d.result):(t=Un,n=Un,"sum"===e.substr(Un,3).toLowerCase()?(r=e.substr(Un,3),Un+=3):(r=o,0===Kn&&rr(G)),r===o&&("count"===e.substr(Un,5).toLowerCase()?(r=e.substr(Un,5),Un+=5):(r=o,0===Kn&&rr(K)),r===o&&("avg"===e.substr(Un,3).toLowerCase()?(r=e.substr(Un,3),Un+=3):(r=o,0===Kn&&rr(X)),r===o&&("min"===e.substr(Un,3).toLowerCase()?(r=e.substr(Un,3),Un+=3):(r=o,0===Kn&&rr($)),r===o&&("max"===e.substr(Un,3).toLowerCase()?(r=e.substr(Un,3),Un+=3):(r=o,0===Kn&&rr(J)))))),(n=r!==o?e.substring(n,Un):r)!==o?(40===e.charCodeAt(Un)?(r="(",Un++):(r=o,0===Kn&&rr(Q)),r!==o&&cr()!==o?(i=Un,"all"===e.substr(Un,3).toLowerCase()?(a=e.substr(Un,3),Un+=3):(a=o,0===Kn&&rr(Z)),a!==o&&(s=ur())!==o?i=a=[a,s]:(Un=i,i=o),i===o&&(i=null),i!==o&&(a=_r())!==o&&(s=cr())!==o?(41===e.charCodeAt(Un)?(l=")",Un++):(l=o,0===Kn&&rr(ee)),l!==o?(zn=t,u=a,t=n={type:"aggFunction",aggFunction:n.toUpperCase(),col:u}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,"count(*)"===e.substr(Un,8).toLowerCase()?(n=e.substr(Un,8),Un+=8):(n=o,0===Kn&&rr(te)),n!==o&&(zn=t,n={type:"aggFunction",aggFunction:"COUNT_ALL",col:null}),t=n),Xn[c]={nextPos:Un,result:t},t)}function jr(){var t,n,r,i,a,s,l,u,c=113*Un+25,d=Xn[c];return d?(Un=d.nextPos,d.result):(t=Un,(n=Er())!==o&&ur()!==o?("as"===e.substr(Un,2).toLowerCase()?(r=e.substr(Un,2),Un+=2):(r=o,0===Kn&&rr(ne)),r!==o&&ur()!==o&&(i=br())!==o?(zn=t,s=i,(a=n).name=s,t=n=a):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,(n=Er())!==o&&cr()!==o?(zn=t,t=n=void Jn("aggregation columns must be named")):(Un=t,t=o),t===o&&(t=Un,(n=function(){var t,n,r,i,a,s=113*Un+22,l=Xn[s];return l?(Un=l.nextPos,l.result):(t=Un,n=Un,(r=yr())!==o?(46===e.charCodeAt(Un)?(i=".",Un++):(i=o,0===Kn&&rr(D)),i!==o?n=r=[r,i]:(Un=n,n=o)):(Un=n,n=o),n===o&&(n=null),n!==o?(42===e.charCodeAt(Un)?(r="*",Un++):(r=o,0===Kn&&rr(q)),r!==o?(zn=t,t=n={type:"column",name:"*",relAlias:(a=n)?a[0]:null}):(Un=t,t=o)):(Un=t,t=o),Xn[s]={nextPos:Un,result:t},t)}())!==o&&(zn=t,n=re(n)),(t=n)===o&&(t=Un,(n=_r())!==o&&ur()!==o?("as"===e.substr(Un,2).toLowerCase()?(r=e.substr(Un,2),Un+=2):(r=o,0===Kn&&rr(ne)),r!==o&&ur()!==o&&(i=br())!==o?(zn=t,u=i,(l=n).alias=u,t=n=l):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,(n=Co())!==o&&ur()!==o?("as"===e.substr(Un,2).toLowerCase()?(r=e.substr(Un,2),Un+=2):(r=o,0===Kn&&rr(ne)),r!==o&&ur()!==o&&(i=br())!==o?(zn=t,t=n=function(e,t){return{type:"namedColumnExpr",name:t,relAlias:null,child:e,codeInfo:No()}}(n,i)):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,(n=_r())!==o&&(zn=t,n=re(n)),t=n))))),Xn[c]={nextPos:Un,result:t},t)}function Cr(){var t,n,r,i,a,s,l=113*Un+29,u=Xn[l];return u?(Un=u.nextPos,u.result):(t=Un,(n=_r())===o&&(n=wr()),n!==o?(r=Un,(i=ur())!==o&&(a=function(){var t,n,r=113*Un+28,i=Xn[r];return i?(Un=i.nextPos,i.result):(t=Un,"asc"===e.substr(Un,3).toLowerCase()?(n=e.substr(Un,3),Un+=3):(n=o,0===Kn&&rr(ie)),n!==o&&(zn=t,n=!0),(t=n)===o&&(t=Un,"desc"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(ae)),n!==o&&(zn=t,n=!1),t=n),Xn[r]={nextPos:Un,result:t},t)}())!==o?r=i=[i,a]:(Un=r,r=o),r===o&&(r=null),r!==o?(zn=t,t=n={col:n,asc:s=null==(s=r)||s[1]}):(Un=t,t=o)):(Un=t,t=o),Xn[l]={nextPos:Un,result:t},t)}function Sr(){var t,n,r,i,a,s,l,u,c=113*Un+30,d=Xn[c];if(d)return Un=d.nextPos,d.result;if(t=Un,(n=Cr())!==o){for(r=[],i=Un,(a=cr())!==o?(44===e.charCodeAt(Un)?(s=",",Un++):(s=o,0===Kn&&rr(oe)),s!==o&&(l=cr())!==o&&(u=Cr())!==o?i=a=[a,s,l,u]:(Un=i,i=o)):(Un=i,i=o);i!==o;)r.push(i),i=Un,(a=cr())!==o?(44===e.charCodeAt(Un)?(s=",",Un++):(s=o,0===Kn&&rr(oe)),s!==o&&(l=cr())!==o&&(u=Cr())!==o?i=a=[a,s,l,u]:(Un=i,i=o)):(Un=i,i=o);r!==o?(zn=t,t=n=function(e,t){var n=[e];if(null!=t)for(var r in t)n.push(t[r][3]);return{value:n,codeInfo:No()}}(n,r)):(Un=t,t=o)}else Un=t,t=o;return Xn[c]={nextPos:Un,result:t},t}function Or(){var t,n,r,i,a,s,l,u,c=113*Un+32,d=Xn[c];return d?(Un=d.nextPos,d.result):(t=Un,(n=yr())!==o&&ur()!==o?("as"===e.substr(Un,2).toLowerCase()?(r=e.substr(Un,2),Un+=2):(r=o,0===Kn&&rr(ne)),r!==o&&cr()!==o?(40===e.charCodeAt(Un)?(i="(",Un++):(i=o,0===Kn&&rr(Q)),i!==o&&(a=xr())!==o?(41===e.charCodeAt(Un)?(s=")",Un++):(s=o,0===Kn&&rr(ee)),s!==o?(zn=t,l=n,(u=a).wrappedInParentheses=!0,t=n={type:"assignment",name:l,child:{type:"relationFromSubstatement",statement:u,relAlias:l,codeInfo:No()},codeInfo:No()}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[c]={nextPos:Un,result:t},t)}function kr(){var t,n,r,i,a=113*Un+33,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,(n=function(){var t,n,r,i,a,s,l,u,c,d=113*Un+34,h=Xn[d];if(h)return Un=h.nextPos,h.result;t=Un,"with"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(ue));if(n!==o)if(ur()!==o)if((r=Or())!==o){for(i=[],a=Un,(s=cr())!==o?(44===e.charCodeAt(Un)?(l=",",Un++):(l=o,0===Kn&&rr(oe)),l!==o&&(u=cr())!==o&&(c=Or())!==o?a=s=[s,l,u,c]:(Un=a,a=o)):(Un=a,a=o);a!==o;)i.push(a),a=Un,(s=cr())!==o?(44===e.charCodeAt(Un)?(l=",",Un++):(l=o,0===Kn&&rr(oe)),l!==o&&(u=cr())!==o&&(c=Or())!==o?a=s=[s,l,u,c]:(Un=a,a=o)):(Un=a,a=o);i!==o?(zn=t,n=function(e,t){for(var n=[e],r=0;r0&&i!=e.arg.length&&null===r&&Jn(i18n.t("db.messages.parser.error-sql-group-by-missing")),o&&!r&&0===i&&Jn(i18n.t("db.messages.parser.error-sql-having-without-group-by")),{type:"statement",select:e,from:t,where:n?n[1]:null,groupBy:r?r[5]:null,having:o?o[1]:null,numAggregationColumns:i,wrappedInParentheses:!1,codeInfo:No()}}(n,i,a,s,l)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,40===e.charCodeAt(Un)?(n="(",Un++):(n=o,0===Kn&&rr(Q)),n!==o&&cr()!==o&&(r=xr())!==o&&cr()!==o?(41===e.charCodeAt(Un)?(i=")",Un++):(i=o,0===Kn&&rr(ee)),i!==o?(zn=t,t=n=ye(r)):(Un=t,t=o)):(Un=t,t=o)),Xn[m]={nextPos:Un,result:t},t)}function Dr(){var t,n,r,i,a=113*Un+41,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,ur()!==o?("union"===e.substr(Un,5).toLowerCase()?(n=e.substr(Un,5),Un+=5):(n=o,0===Kn&&rr(be)),n!==o&&ur()!==o?(r=Un,"all"===e.substr(Un,3).toLowerCase()?(i=e.substr(Un,3),Un+=3):(i=o,0===Kn&&rr(ve)),i!==o&&ur()!==o?(zn=r,r=i=!0):(Un=r,r=o),r===o&&(r=Un,"distinct"===e.substr(Un,8).toLowerCase()?(i=e.substr(Un,8),Un+=8):(i=o,0===Kn&&rr(de)),i!==o&&ur()!==o?(zn=r,r=i=!1):(Un=r,r=o)),r===o&&(r=null),r!==o&&(i=Lr())!==o?(zn=t,t={type:"union",child2:i,all:r}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Nr(){var t,n,r,i,a=113*Un+42,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,ur()!==o?("except"===e.substr(Un,6).toLowerCase()?(n=e.substr(Un,6),Un+=6):(n=o,0===Kn&&rr(_e)),n!==o&&ur()!==o?(r=Un,"all"===e.substr(Un,3).toLowerCase()?(i=e.substr(Un,3),Un+=3):(i=o,0===Kn&&rr(ve)),i!==o&&ur()!==o?(zn=r,r=i=!0):(Un=r,r=o),r===o&&(r=Un,"distinct"===e.substr(Un,8).toLowerCase()?(i=e.substr(Un,8),Un+=8):(i=o,0===Kn&&rr(de)),i!==o&&ur()!==o?(zn=r,r=i=!1):(Un=r,r=o)),r===o&&(r=null),r!==o&&(i=Lr())!==o?(zn=t,t={type:"except",child2:i,all:r}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Pr(){var t,n,r,i,a=113*Un+43,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,ur()!==o?("intersect"===e.substr(Un,9).toLowerCase()?(n=e.substr(Un,9),Un+=9):(n=o,0===Kn&&rr(we)),n!==o&&ur()!==o?(r=Un,"all"===e.substr(Un,3).toLowerCase()?(i=e.substr(Un,3),Un+=3):(i=o,0===Kn&&rr(ve)),i!==o&&ur()!==o?(zn=r,r=i=!0):(Un=r,r=o),r===o&&(r=Un,"distinct"===e.substr(Un,8).toLowerCase()?(i=e.substr(Un,8),Un+=8):(i=o,0===Kn&&rr(de)),i!==o&&ur()!==o?(zn=r,r=i=!1):(Un=r,r=o)),r===o&&(r=null),r!==o&&(i=Lr())!==o?(zn=t,t={type:"intersect",child2:i,all:r}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Ir(){var e,t,n,r,i=113*Un+44,a=Xn[i];if(a)return Un=a.nextPos,a.result;if(e=Un,(t=Hr())!==o){if(n=[],(r=Yr())===o&&(r=Fr())===o&&(r=Wr()),r!==o)for(;r!==o;)n.push(r),(r=Yr())===o&&(r=Fr())===o&&(r=Wr());else n=o;n!==o?(zn=e,e=t=me(t,n)):(Un=e,e=o)}else Un=e,e=o;return e===o&&(e=Hr()),Xn[i]={nextPos:Un,result:e},e}function Hr(){var t,n,r,i,a,s,l,u,c,d,h,f=113*Un+45,m=Xn[f];return m?(Un=m.nextPos,m.result):(t=Un,(n=yr())!==o?(r=Un,(i=ur())!==o?("as"===e.substr(Un,2).toLowerCase()?(a=e.substr(Un,2),Un+=2):(a=o,0===Kn&&rr(ne)),a!==o&&(s=ur())!==o&&(l=yr())!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o),r===o&&(r=null),r!==o?(zn=t,d=r,h={type:"relation",name:n,relAlias:null,codeInfo:No()},t=n=null!==d?{type:"renameRelation",child:h,newRelAlias:d[3],codeInfo:No()}:h):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,40===e.charCodeAt(Un)?(n="(",Un++):(n=o,0===Kn&&rr(Q)),n!==o&&(r=cr())!==o&&(i=xr())!==o&&(a=cr())!==o?(41===e.charCodeAt(Un)?(s=")",Un++):(s=o,0===Kn&&rr(ee)),s!==o&&(l=ur())!==o?("as"===e.substr(Un,2).toLowerCase()?(u=e.substr(Un,2),Un+=2):(u=o,0===Kn&&rr(ne)),u!==o&&ur()!==o&&(c=yr())!==o?(zn=t,t=n=function(e,t){return e.wrappedInParentheses=!0,{type:"relationFromSubstatement",statement:e,relAlias:t,codeInfo:No()}}(i,c)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,40===e.charCodeAt(Un)?(n="(",Un++):(n=o,0===Kn&&rr(Q)),n!==o&&(r=cr())!==o&&(i=Ir())!==o&&(a=cr())!==o?(41===e.charCodeAt(Un)?(s=")",Un++):(s=o,0===Kn&&rr(ee)),s!==o?(zn=t,t=n=ye(i)):(Un=t,t=o)):(Un=t,t=o))),Xn[f]={nextPos:Un,result:t},t)}function Yr(){var t,n,r,i,a,s,l,u=113*Un+46,c=Xn[u];return c?(Un=c.nextPos,c.result):(t=Un,n=Un,(r=ur())!==o?("cross"===e.substr(Un,5).toLowerCase()?(i=e.substr(Un,5),Un+=5):(i=o,0===Kn&&rr(Ee)),i!==o&&(a=ur())!==o?("join"===e.substr(Un,4).toLowerCase()?(s=e.substr(Un,4),Un+=4):(s=o,0===Kn&&rr(je)),s!==o&&(l=ur())!==o?n=r=[r,i,a,s,l]:(Un=n,n=o)):(Un=n,n=o)):(Un=n,n=o),n===o&&(n=Un,(r=cr())!==o?(44===e.charCodeAt(Un)?(i=",",Un++):(i=o,0===Kn&&rr(oe)),i!==o&&(a=cr())!==o?n=r=[r,i,a]:(Un=n,n=o)):(Un=n,n=o)),n!==o&&(r=Hr())!==o?(zn=t,t=n={type:"crossJoin",child2:r,cond:null}):(Un=t,t=o),Xn[u]={nextPos:Un,result:t},t)}function Fr(){var t,n,r,i,a=113*Un+47,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,ur()!==o?("natural"===e.substr(Un,7).toLowerCase()?(n=e.substr(Un,7),Un+=7):(n=o,0===Kn&&rr(Ce)),n!==o&&ur()!==o?("join"===e.substr(Un,4).toLowerCase()?(r=e.substr(Un,4),Un+=4):(r=o,0===Kn&&rr(je)),r!==o&&ur()!==o&&(i=Hr())!==o?(zn=t,t={type:"naturalJoin",child2:i,cond:null}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Wr(){var t,n,r,i,a,s,l,u,c,d,h,f,m,p,g,y=113*Un+48,b=Xn[y];if(b)return Un=b.nextPos,b.result;if(t=Un,ur()!==o)if(n=Un,r=Un,"inner"===e.substr(Un,5).toLowerCase()?(i=e.substr(Un,5),Un+=5):(i=o,0===Kn&&rr(Se)),i!==o&&(a=ur())!==o?r=i=[i,a]:(Un=r,r=o),r===o&&(r=null),r!==o?("join"===e.substr(Un,4).toLowerCase()?(i=e.substr(Un,4),Un+=4):(i=o,0===Kn&&rr(je)),i!==o?(zn=n,n=r="innerJoin"):(Un=n,n=o)):(Un=n,n=o),n===o&&(n=Un,r=Un,"left"===e.substr(Un,4).toLowerCase()?(i=e.substr(Un,4),Un+=4):(i=o,0===Kn&&rr(Oe)),i!==o?(a=Un,(s=ur())!==o?("outer"===e.substr(Un,5).toLowerCase()?(l=e.substr(Un,5),Un+=5):(l=o,0===Kn&&rr(ke)),l!==o?a=s=[s,l]:(Un=a,a=o)):(Un=a,a=o),a===o&&(a=null),a!==o&&(s=ur())!==o?("join"===e.substr(Un,4).toLowerCase()?(l=e.substr(Un,4),Un+=4):(l=o,0===Kn&&rr(je)),l!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o),r!==o&&(zn=n,r="leftOuterJoin"),(n=r)===o&&(n=Un,r=Un,"right"===e.substr(Un,5).toLowerCase()?(i=e.substr(Un,5),Un+=5):(i=o,0===Kn&&rr(Te)),i!==o?(a=Un,(s=ur())!==o?("outer"===e.substr(Un,5).toLowerCase()?(l=e.substr(Un,5),Un+=5):(l=o,0===Kn&&rr(ke)),l!==o?a=s=[s,l]:(Un=a,a=o)):(Un=a,a=o),a===o&&(a=null),a!==o&&(s=ur())!==o?("join"===e.substr(Un,4).toLowerCase()?(l=e.substr(Un,4),Un+=4):(l=o,0===Kn&&rr(je)),l!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o),r!==o&&(zn=n,r="rightOuterJoin"),(n=r)===o&&(n=Un,r=Un,"full"===e.substr(Un,4).toLowerCase()?(i=e.substr(Un,4),Un+=4):(i=o,0===Kn&&rr(Me)),i!==o?(a=Un,(s=ur())!==o?("outer"===e.substr(Un,5).toLowerCase()?(l=e.substr(Un,5),Un+=5):(l=o,0===Kn&&rr(ke)),l!==o?a=s=[s,l]:(Un=a,a=o)):(Un=a,a=o),a===o&&(a=null),a!==o&&(s=ur())!==o?("join"===e.substr(Un,4).toLowerCase()?(l=e.substr(Un,4),Un+=4):(l=o,0===Kn&&rr(je)),l!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o),r!==o&&(zn=n,r="fullOuterJoin"),n=r))),n!==o)if((r=ur())!==o)if((i=Hr())!==o)if((a=ur())!==o){if(s=Un,"on"===e.substr(Un,2).toLowerCase()?(l=e.substr(Un,2),Un+=2):(l=o,0===Kn&&rr(xe)),l!==o&&ur()!==o&&(u=io())!==o?(zn=s,s=l=u):(Un=s,s=o),s===o){if(s=Un,"using"===e.substr(Un,5).toLowerCase()?(l=e.substr(Un,5),Un+=5):(l=o,0===Kn&&rr(Re)),l!==o)if(cr()!==o)if(40===e.charCodeAt(Un)?(u="(",Un++):(u=o,0===Kn&&rr(Q)),u!==o)if(cr()!==o)if((c=br())!==o){for(d=[],h=Un,(f=cr())!==o?(44===e.charCodeAt(Un)?(m=",",Un++):(m=o,0===Kn&&rr(oe)),m!==o&&(p=cr())!==o&&(g=br())!==o?h=f=[f,m,p,g]:(Un=h,h=o)):(Un=h,h=o);h!==o;)d.push(h),h=Un,(f=cr())!==o?(44===e.charCodeAt(Un)?(m=",",Un++):(m=o,0===Kn&&rr(oe)),m!==o&&(p=cr())!==o&&(g=br())!==o?h=f=[f,m,p,g]:(Un=h,h=o)):(Un=h,h=o);d!==o&&(h=cr())!==o?(41===e.charCodeAt(Un)?(f=")",Un++):(f=o,0===Kn&&rr(ee)),f!==o?(zn=s,s=l=function(e,t,n,r){for(var o=[n],i=0;i"===e.substr(Un,2)?(n="<>",Un+=2):(n=o,0===Kn&&rr(Ve));n===o&&("!="===e.substr(Un,2)?(n="!=",Un+=2):(n=o,0===Kn&&rr(qe)));n!==o&&(zn=t,n="!=");return t=n,Xn[r]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n,r=113*Un+60,i=Xn[r];if(i)return Un=i.nextPos,i.result;t=Un,">="===e.substr(Un,2)?(n=">=",Un+=2):(n=o,0===Kn&&rr(Ge));n!==o&&(zn=t,n=">=");return t=n,Xn[r]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n,r=113*Un+62,i=Xn[r];if(i)return Un=i.nextPos,i.result;t=Un,"<="===e.substr(Un,2)?(n="<=",Un+=2):(n=o,0===Kn&&rr(Xe));n!==o&&(zn=t,n="<=");return t=n,Xn[r]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n=113*Un+61,r=Xn[n];if(r)return Un=r.nextPos,r.result;62===e.charCodeAt(Un)?(t=">",Un++):(t=o,0===Kn&&rr(Ke));return Xn[n]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n=113*Un+63,r=Xn[n];if(r)return Un=r.nextPos,r.result;60===e.charCodeAt(Un)?(t="<",Un++):(t=o,0===Kn&&rr($e));return Xn[n]={nextPos:Un,result:t},t}()),Xn[n]={nextPos:Un,result:t},t)}function qr(){var t,n,r,i,a=113*Un+69,s=Xn[a];if(s)return Un=s.nextPos,s.result;if(t=Un,(n=hr())!==o&&lr()!==o&&(r=hr())!==o?(59===e.charCodeAt(Un)?(i=";",Un++):(i=o,0===Kn&&rr(se)),i===o&&(i=null),i!==o?(zn=t,t=n={type:"comment"}):(Un=t,t=o)):(Un=t,t=o),t===o)if(t=Un,35===e.charCodeAt(Un)?(n="#",Un++):(n=o,0===Kn&&rr(at)),n!==o)if(hr()!==o){for(r=[],st.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(lt));i!==o;)r.push(i),st.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(lt));r!==o?(10===e.charCodeAt(Un)?(i="\n",Un++):(i=o,0===Kn&&rr(u)),i!==o?(zn=t,t=n={type:"comment"}):(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;else Un=t,t=o;return Xn[a]={nextPos:Un,result:t},t}function Gr(){var t,n,r,i,a=113*Un+70,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,96===e.charCodeAt(Un)?(n="`",Un++):(n=o,0===Kn&&rr(ut)),n!==o&&(r=yr())!==o?(96===e.charCodeAt(Un)?(i="`",Un++):(i=o,0===Kn&&rr(ut)),i!==o?(zn=t,t=n=r):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,(n=yr())!==o&&(zn=t,n=n),t=n),Xn[a]={nextPos:Un,result:t},t)}function Kr(){var t,n,r,i,a,s,l,u,c=113*Un+71,d=Xn[c];return d?(Un=d.nextPos,d.result):(t=Un,"drop"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(ct)),n!==o&&dr()!==o?("table"===e.substr(Un,5).toLowerCase()?(r=e.substr(Un,5),Un+=5):(r=o,0===Kn&&rr(dt)),r!==o&&dr()!==o?(i=Un,"if"===e.substr(Un,2).toLowerCase()?(a=e.substr(Un,2),Un+=2):(a=o,0===Kn&&rr(ht)),a!==o&&(s=dr())!==o?("exists"===e.substr(Un,6).toLowerCase()?(l=e.substr(Un,6),Un+=6):(l=o,0===Kn&&rr(it)),l!==o&&(u=dr())!==o?i=a=[a,s,l,u]:(Un=i,i=o)):(Un=i,i=o),i===o&&(i=null),i!==o&&(a=Gr())!==o&&(s=hr())!==o?(59===e.charCodeAt(Un)?(l=";",Un++):(l=o,0===Kn&&rr(se)),l!==o?(zn=t,t=n={type:"dropTable"}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[c]={nextPos:Un,result:t},t)}function Xr(){var t,n,r,i,a,s,l=113*Un+72,u=Xn[l];if(u)return Un=u.nextPos,u.result;if(t=Un,"lock"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(ft)),n!==o)if(dr()!==o)if("tables"===e.substr(Un,6).toLowerCase()?(r=e.substr(Un,6),Un+=6):(r=o,0===Kn&&rr(mt)),r!==o)if(dr()!==o)if(Gr()!==o)if(dr()!==o){if(i=[],F.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(W)),a!==o)for(;a!==o;)i.push(a),F.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(W));else i=o;i!==o&&(a=hr())!==o?(59===e.charCodeAt(Un)?(s=";",Un++):(s=o,0===Kn&&rr(se)),s!==o?(zn=t,t=n={type:"lockTable"}):(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;else Un=t,t=o;else Un=t,t=o;else Un=t,t=o;else Un=t,t=o;else Un=t,t=o;return Xn[l]={nextPos:Un,result:t},t}function $r(){var t,n,r,i,a=113*Un+73,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,"unlock"===e.substr(Un,6).toLowerCase()?(n=e.substr(Un,6),Un+=6):(n=o,0===Kn&&rr(pt)),n!==o&&dr()!==o?("tables"===e.substr(Un,6).toLowerCase()?(r=e.substr(Un,6),Un+=6):(r=o,0===Kn&&rr(mt)),r!==o&&hr()!==o?(59===e.charCodeAt(Un)?(i=";",Un++):(i=o,0===Kn&&rr(se)),i!==o?(zn=t,t=n={type:"unlockTable"}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Jr(){var e,t,n,r,i,a=113*Un+74,s=Xn[a];if(s)return Un=s.nextPos,s.result;if(e=Un,hr()!==o){if(t=[],n=Un,(r=Qr())===o&&(r=Xr())===o&&(r=$r())===o&&(r=qr())===o&&(r=Kr())===o&&(r=to())===o&&(r=oo()),r!==o&&(i=hr())!==o?n=r=[r,i]:(Un=n,n=o),n!==o)for(;n!==o;)t.push(n),n=Un,(r=Qr())===o&&(r=Xr())===o&&(r=$r())===o&&(r=qr())===o&&(r=Kr())===o&&(r=to())===o&&(r=oo()),r!==o&&(i=hr())!==o?n=r=[r,i]:(Un=n,n=o);else t=o;t!==o&&(n=hr())!==o?(zn=e,e=function(e){var t,n,r,o,i,a,s={},l={},u="";for(n=0;n!0===n.evaluate(e,t,r,o),this._checkSchema(e,t)}_getResult(e,t){if(e=this._returnOrCreateSession(e),null===this._joinConditionEvaluator)throw new Error("check not called");const n=new c.a;return n.setSchema(this.getSchema()),p.calcNestedLoopJoin(e,this.getChild(),this.getChild2(),n,this._isRightJoin,this._isAntiJoin,this._joinConditionEvaluator,this._rowCreatorMatched,this._rowCreatorNotMatched),!0===t&&n.eliminateDuplicateRows(),this.setResultNumRows(n.getNumRows()),n}static createNullArray(e){return new Array(e).fill(null)}static getCheckedEvaluatorBooleanExpression(e,t,n,r){if(n.check(e,t),"boolean"!==n.getDataType())throw new m.a("db.messages.exec.error-condition-must-be-boolean",r);return function(e,t,r,o){return!0===n.evaluate(e,t,r,o)}}static getCheckedEvaluatorNaturalJoin(e,t,n,r){}static calcNestedLoopJoin(e,t,n,r,o,i,a,s,l){const u=t.getResult(e),c=n.getResult(e),d=u.getNumRows(),h=c.getNumRows(),f=u.getNumCols();c.getNumCols();if(!1===o){let t;null!==l&&(t=p.createNullArray(r.getSchema().getSize()-f));const n={};for(let o=0;o0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)},this._rowCreatorNotMatched=null}catch(e){this.throwExecutionError(e.message)}}getResult(e){return super._getResult(e,!0)}getArgumentHtml(){return""}}class y extends u.c{constructor(e,t){super("π",e),this._checked=null,this._columns=t}getSchema(){if(null===this._columns)return this._child.getSchema();if(null===this._checked)throw new Error("check has not been called");return this._checked._projectedSchema}getResult(e){if(e=this._returnOrCreateSession(e),null===this._checked)throw new Error("check has not been called");const{_indices:t}=this._checked;if(null===this._columns)return this._child.getResult(e);const n=this._child.getResult(e),r=new c.a;r.setSchema(this.getSchema());const o=r.getNumCols(),i=n.getNumRows();let a,s,l,u;for(a=0;a-1&&o.removeColumn(n)}o.getSize()===n&&this.throwExecutionError(i18n.t("db.messages.exec.error-schema-a-not-part-of-schema-b",{schemaA:t,schemaB:e})),this._delegate=new d(new y(this._child,o.getColumns()).setCodeInfoObject(this._codeInfo),new y(new d(new g(new y(this._child,o.getColumns()).setCodeInfoObject(this._codeInfo),this._child2).setCodeInfoObject(this._codeInfo),this._child).setCodeInfoObject(this._codeInfo),o.getColumns()).setCodeInfoObject(this._codeInfo)),this._delegate.check()}}class v extends u.c{constructor(e,t,n){super("γ",e),this.checked=null,this.groupByCols=t,this.aggregateFunctions=n}getSchema(){if(null===this.checked)throw new Error("check not called");return this.checked.schema}check(){this._child.check();const e=this._child.getSchema(),t=new Array(this.groupByCols.length),n=Array(this.aggregateFunctions.length);for(let n=0;nl.a.printColumn(e.name,e.relAlias)),t=this.aggregateFunctions.map(e=>`${"COUNT_ALL"===e.aggFunction?"COUNT(*)":`${e.aggFunction}(${l.a.printColumn(e.col.name,e.col.relAlias)})`}→${e.name}`);return`${e.join(", ")}; ${t.join(", ")}`}getResult(e){if(e=this._returnOrCreateSession(e),null===this.checked)throw new Error("check not called");const t=this.getChild().getResult(e),n=new c.a;n.setSchema(this.checked.schema);let r,o=0;if(this.groupByCols.length>0){const e={};for(let n=0;nt?e:t};let s,l,u,d;for(let e=0;e0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)},this._rowCreatorNotMatched=function(e,t){return e.concat(t)}}catch(e){this.throwExecutionError(e.message)}}getResult(e){if(e=this._returnOrCreateSession(e),null===this._joinConditionEvaluator||null===this._rowCreatorMatched||null===this._rowCreatorNotMatched)throw new Error("check not called");const t=new c.a;return t.setSchema(this.getSchema()),p.calcNestedLoopJoin(e,this.getChild(),this.getChild2(),t,!1,!1,this._joinConditionEvaluator,this._rowCreatorMatched,this._rowCreatorNotMatched),p.calcNestedLoopJoin(e,this.getChild(),this.getChild2(),t,!0,!1,this._joinConditionEvaluator,this._rowCreatorMatched,this._rowCreatorNotMatched),t.eliminateDuplicateRows(),this.setResultNumRows(t.getNumRows()),t}}class j extends p{constructor(e,t,n){super(e,t,"⨝",n,!1)}_checkSchema(e,t){try{if("natural"===this._joinConditionOptions.type){const n=h.a.concatNatural(e,t,!0,this._joinConditionOptions.restrictToColumns),r=n.keep;this._schema=n.schema,this._rowCreatorMatched=function(e,t){return p.createNaturalRowArray(e,t,r.size,r.keepIndicesA,r.keepIndicesB)}}else{const n=e.getConflictingColumnsArray(t);n.length>0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)}}this._rowCreatorNotMatched=null}catch(e){this.throwExecutionError(e.message)}}getResult(e){return super._getResult(e,!0)}}class C extends p{constructor(e,t,n){super(e,t,"⟕",n,!1)}_checkSchema(e,t){try{if("natural"===this._joinConditionOptions.type){const n=h.a.concatNatural(e,t,!0,this._joinConditionOptions.restrictToColumns),r=n.keep;this._schema=n.schema,this._rowCreatorMatched=function(e,t){return p.createNaturalRowArray(e,t,r.size,r.keepIndicesA,r.keepIndicesB)}}else{const n=e.getConflictingColumnsArray(t);n.length>0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)}}this._rowCreatorNotMatched=function(e,t){return e.concat(t)}}catch(e){this.throwExecutionError(e.message)}}getResult(e){return super._getResult(e,!0)}}class S extends p{constructor(e,t,n){super(e,t,"⟖",n,!0)}_checkSchema(e,t){try{if("natural"===this._joinConditionOptions.type){const n=h.a.concatNatural(e,t,!1,this._joinConditionOptions.restrictToColumns),r=n.keep;this._schema=n.schema,this._rowCreatorMatched=function(e,t){return p.createNaturalRowArray(e,t,r.size,r.keepIndicesA,r.keepIndicesB)}}else{const n=e.getConflictingColumnsArray(t);n.length>0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)}}this._rowCreatorNotMatched=function(e,t){return e.concat(t)}}catch(e){this.throwExecutionError(e.message)}}getResult(e){return super._getResult(e,!0)}}class O extends p{constructor(e,t,n){super(e,t,n?"⋉":"⋊",{type:"natural",restrictToColumns:null},!n)}_checkSchema(e,t){this._isRightJoin?(this._schema=t.copy(),this._rowCreatorMatched=function(e,t){return t}):(this._schema=e.copy(),this._rowCreatorMatched=function(e,t){return e}),this._rowCreatorNotMatched=null}getResult(e){return super._getResult(e,!0)}}class k extends u.c{constructor(e,t,n){if(super("τ",e),this._orderCols=t,this._orderAsc=n,this._orderAsc.length!==this._orderCols.length)throw new Error("order cols not correct");this._orderIndices=null}getSchema(){return this._child.getSchema()}getResult(e){if(e=this._returnOrCreateSession(e),null===this._orderIndices)throw new Error("check not called");const t=this.getChild().getResult(e).copy();return t.eliminateDuplicateRows(),this.setResultNumRows(t.getNumRows()),t.sort(this._orderIndices,this._orderAsc),t}check(){this._child.check();const e=this._child.getSchema();this._orderIndices=[];for(let t=0;t0){const n=[],r=e.groupBy||[];for(let e=0;e0)a=new v(a,r,n);else{const e=[];for(let t=0;t",[new f.c("number","rownum",[]),new f.c("number","constant",[o])]);if(-1===n)a=new R(r(t.child),i);else{const e=new f.c("boolean","<=",[new f.c("number","rownum",[]),new f.c("number","constant",[n+o])]);a=new R(r(t.child),new f.c("boolean","and",[i,e]))}break}default:throw new Error(`type ${e.type} not implemented`)}if(!a)throw new Error("should not happen");return!0===e.wrappedInParentheses&&a.setWrappedInParentheses(!0),n(a,e),a}function o(e,t,n){e.check();const r=new R(e,N(t));return r.setCodeInfoObject(n),r}function i(e){return"column"===e.type&&e.alias}return r(e.child)}function N(e){let t;if("null"===e.datatype&&"columnValue"===e.func)t=new f.b(e.args[0],e.args[1]);else switch(e.datatype){case"string":case"number":case"boolean":case"date":case"null":const n=[];for(let t=0;t{"relation"!==e.type||void 0!==t&&!1!==t.has(e.name)||n.push({name:e.name,line:e.codeInfo.location.start.line,column:e.codeInfo.location.start.column})}),n}function B(e,t){const n=Y.a.isMap(t)?t:Y.a().withMutations(e=>{for(const n of Object.keys(t))e.set(n,t[n])}).asImmutable();if(0===e.assignments.length)return;const r=new Map;Y.c().withMutations(t=>{for(let n=0;n{if(!0===i.get(e))return;if(!0===o.get(e))throw new Error(s.a("db.messages.translate.error-variable-cyclic-usage",{name:e}));o.set(e,!0);const t=r.get(e);if(void 0!==t){const{childRelations:e}=t;for(let t=0;t{if("relation"===e.type&&e.name===t.name){return Object.assign(Object.assign({},t.child),{metaData:Object.assign(Object.assign({},t.child.metaData),{fromVariable:t.name})})}return e});e=Object.assign(Object.assign({},e),{child:n})}r.set(e.name,e)}for(const[,t]of r)e.assignments[t.assignmentIndex].child=t.child;if(("relalgRoot"===e.type||"sqlRoot"===e.type)&&null!==e.child&&void 0!==e.child)for(const[t,n]of r)e.child=Object(F.b)(e.child,e=>"relation"===e.type&&e.name===t?Object.assign(Object.assign({},n.child),{metaData:Object.assign(Object.assign({},n.child.metaData),{fromVariable:t})}):e)}var U=n("./src/db/translate/textFromAst.ts");function z(e,t,n,r){if("none"===r)return{query:e,cursor:n};const o={math2plain:{pi:"pi",sigma:"sigma",rho:"rho",arrowLeft:"<-",arrowRight:"->",psi:"psi",tau:"tau",gamma:"gamma",unionOperator:"union",intersectOperator:"intersect",divisionOperator:"/",differenceOperator:"-",crossJoinOperator:"cross join",innerJoinOperator:"inner join",naturalJoinOperator:"natural join",leftSemiJoinOperator:"left semi join",rightSemiJoinOperator:"right semi join",antiJoinOperator:"anti join",leftOuterJoinOperator:"left outer join",rightOuterJoinOperator:"right outer join",fullOuterJoinOperator:"full outer join"},plain2math:{pi:"π",sigma:"σ",rho:"ρ",arrowLeft:"←",arrowRight:"→",psi:"ψ",tau:"τ",gamma:"γ",unionOperator:"∪",intersectOperator:"∩",divisionOperator:"÷",differenceOperator:"-",crossJoinOperator:"⨯",innerJoinOperator:"⨝",naturalJoinOperator:"⨝",leftSemiJoinOperator:"⋉",rightSemiJoinOperator:"⋊",antiJoinOperator:"▷",leftOuterJoinOperator:"⟕",rightOuterJoinOperator:"⟖",fullOuterJoinOperator:"⟗"}};for(let i=t.length-1;i>=0;i--){const a=t[i],s=a.location,l=e.substr(0,s.start.offset),u=e.substring(s.end.offset),c=o[r][a.name];if(e.substring(s.start.offset,s.end.offset)!==c){if(n)if(n.line>=s.start.line&&n.line<=s.end.line){if(n.column>s.start.column&&n.column=s.end.column){n.line-=s.end.line-s.start.line;const e=a.location.end.offset-a.location.start.offset,t=c.length;n.column-=e-t}}else n.lines.end.line&&(n.line-=s.end.line-s.start.line);e=l+c+u}}return{query:e,cursor:n}}const V=n("./src/db/parser/grammar_sql.pegjs");function q(e){return V.parse(e,{startRule:"start",tracer:void 0,i18n:r.c})}function G(e){return V.parse(e,{startRule:"dbDumpStart",tracer:void 0})}function K(e,t={}){t=t||{};const n=i(e,Object.keys(t));B(n,t);const r=I(n,t);return r.check(),r}},"./src/db/translate/textFromAst.ts":function(e,t,n){"use strict";(function(e){function r(e){if("groupRoot"!==e.type)throw new Error("wrong ast!?");let t="";function n(e){let t="";const{headers:n}=e;for(const e of n){const{name:n,lang:r,text:o}=e;t+=n,null!==r&&(t+="@"+r),t+=":",-1!==e.text.indexOf("\n")?t+=`[[${e.text}]]\n`:t+=e.text+"\n"}t+="\n";for(let n=0;n");if(null!==t&&i.addClass(t),null!==n&&i.append(n),null!==r){const t=e("");t.append(r),i.append(" ").append(t)}return null!==o&&i.append(" ( ").append(o).append(" ) "),i.text()}function r(t,n,r,o,i){const a=e("");if(null!==t&&a.addClass(t),a.append("( ").append(o).append(" ) "),a.append(n),null!==r){const t=e("");t.append(r),a.append(t)}return a.append(" ( ").append(i).append(" ) "),a.text()}function o(e,t){return"number"==typeof e&&(e=`[${e}]`),null===t?e:`${t}.${e}`}function i(e,t){if(null===e||"null"===t)return"null";if(e instanceof Date)return function(e){const t=e.getMonth()+1<10?"0"+(e.getMonth()+1):e.getMonth()+1,n=e.getDate()<10?"0"+e.getDate():e.getDate();return`${e.getFullYear()}-${t}-${n}`}(e);if("string"==typeof e)return`'${e}'`;if("number"==typeof e)return e.toString();throw new Error("unknown type "+t)}return function e(t){switch(t.type){case"relation":return n(t.type,t.name,null,null);case"table":{const e=[];let n=[];for(let e=0;er[n])&&(r[n]=o)}let o="{\n";for(let i=0;i0){for(let e=0;e{const o=r(e.child,t);return o!==e.child?(n=!0,Object.assign(Object.assign({},e),{child:o})):e});n&&(e=Object.assign({},e,{assignments:o}))}else if("sqlRoot"===e.type){let n=!1;const o=e.assignments.map(e=>{const o=r(e.child,t);return o!==e.child?(n=!0,Object.assign(Object.assign({},e),{child:o})):e});n&&(e=Object.assign({},e,{assignments:o}))}return t(e)}function o(e,t,n=!0){if(t(e),"statement"===e.type?o(e.from,t,n):"relationFromSubstatement"===e.type&&o(e.statement,t,n),void 0!==e.child&&o(e.child,t,n),void 0!==e.child2&&o(e.child2,t,n),void 0!==e.assignments&&!0===n)for(const r of e.assignments)o(r,t,n)}n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o}))},"./src/locales/de.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"Variablenname wurde mehrfach definiert: {{name}}","db.messages.parser.error-invalid-date-format":"\\"{{str}}\\" ist kein gültiges Datum; erwartetes Format: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":"mehrfacher header {{name}}","db.messages.parser.error-group-unknown-header":"unbekannter header {{name}}","db.messages.parser.error-group-header-name-missing":"der Name des Datensatzes fehlt (group: ....)","db.messages.parser.error-group-header-name-empty":"der Name des Datensatzes ist leer","db.messages.parser.error-group-non-unique-attribute":"nicht eindeutiges Attribut {{name}} in Spalte {{index}}","db.messages.parser.error-group-non-unique-group-name":"Der Name der Gruppe {{name}} ist nicht eindeutig.","db.messages.parser.error-sql-string-use-single-quotes":"verwenden Sie einfache Anführungszeichen für Zeichenketten","db.messages.parser.error-sql-invalid-relation-name":"\\"{{str}}\\" darf nicht als name einer Relation verwendet werden","db.messages.parser.error-sql-invalid-column-name":"\\"{{str}}\\" darf nicht als name einer Spalte verwendet werden","db.messages.parser.error-sql-group-by-missing":"group-by-Klausel fehlt","db.messages.parser.error-sql-having-without-group-by":"having-Klausel gefunden doch \\"group by\\" or Aggregation fehlt","db.messages.parser.error-sql-negative-limit":"das Limit muss größer oder gleich 0 sein","db.messages.parser.error-sqldump-invalid-column-number":"ungültige Spaltenanzahl in Zeile {{line}}","db.messages.parser.error-sqldump-invalid-type":"ungültiger Typ in Zeile {{line}}","db.messages.parser.error-sqldump-insert-wrong-number-columns":"Anzahl der Werte != Anzahl der Spalten","db.messages.parser.error-valueexpr-like-operand-no-string":"der rechte Operand von LIKE muss ein Zeichenkettenliteral sein","db.messages.exec.error-column-not-unique":"Spalte \\"{{column}}\\" kann wegen mehrdeutigkeit nicht hinzugefügt werden","db.messages.exec.error-column-not-found-name":"Spalte \\"{{column}} wurde im Schema {{schema}} nicht gefunden","db.messages.exec.error-column-not-found-index":"Spaltenindex \\"{{column}}\\" ist ausserhalb des Gültigkeitsbereichs für Schema {{schema}}; Indizes starten mit 1","db.messages.exec.error-column-ambiguous":"Spalte \\"{{column}}\\" ist mehrdeutig im Schema {{schema}}","db.messages.exec.error-column-index-out-of-range":"Spaltenindex \\"{{column}}\\" ist ausserhalb des Gültigkeitsbereichs für Schema {{schema}}; Indizes starten mit 1","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"Relations alias \\"{{alias}}\\" kann wegen Mehrdeutigkeit nicht gesetzt werden","db.messages.exec.error-could-not-rename-ambiguity":"neuer Name \\"{{newName}}\\" für \\"{{oldName}}\\" kann wegen Mehrdeutigkeit nicht gesetzt werden im Schema {{schema}}","db.messages.exec.error-schema-a-not-part-of-schema-b":"Schema {{schemaA}} ist nicht Teil von {{schemaB}}","db.messages.exec.error-schemas-not-unifiable":"Schemas sind nicht unifiable: Typen oder Anzahl der Attribute ist unterschiedlich: {{schemaA}} and {{schemaB}}","db.messages.exec.error-column-not-in-both-schemas":"Spalte \\"{{column}}\\" kann nicht in beiden Schemas des Joins gefunden werden","db.messages.exec.error-condition-must-be-boolean":"Bedingung muss ein boolscher Ausdruck sein","db.messages.exec.error-func-not-defined-for-column-type":"{{func}} ist nicht für Datentyp {{colType}} definiert","db.messages.exec.error-join-would-produce-non-unique-columns":" the following columns appear in both relations: {{conflicts}}","db.messages.exec.error-no-columns-match-alias-star":"Keine Spalten gefunden für \\"{{alias}}.*\\"","db.messages.exec.error-datatype-not-specified-for-col":"Datentype für Spalte {{index}} (\\"{{column}}\\") wurde nicht spezifiziert","db.messages.exec.error-invalid-projection-error":"ungültige Projektion \\"{{argument}}\\": {{error}}","db.messages.exec.error-function-expects-type":"Funktion \\"{{func}}\\" erwartet Argumente vom Typ \\"{{expected}}\\" aber \\"{{given}}\\" gefunden","db.messages.exec.error-could-not-compare-different-types":"Werte mit unterschiedlichen Datentypen können nicht verglichen werden: {{typeA}} != {{typeB}}","db.messages.exec.error-function-expects-arguments-of-same-type":"Funktion {{func}} erwartet, dass alle Argumente den selben Datentyp haben.","db.messages.exec.error-case-when-condition-must-be-boolean":"Die Bedingung für ein CASE WHEN muss ein boolscher Ausdruck sein","db.messages.exec.error-case-when-expects-results-of-same-type":"CASE WHEN condition THEN result END erwartet dass alle results vom selben Typ sind","db.messages.exec.error-invalid-date-format":"\\"{{str}}\\" ist kein gültiges Datum; erwartetes Format: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"Relation \\"{{name}}\\" nicht gefunden","db.messages.translate.warning-distinct-missing":" relational algebra uses implicit duplicate elimination","db.messages.translate.warning-ignored-all-on-set-operators":" relational algebra uses implicit duplicate elimination","db.messages.translate.error-variable-name-conflict":"Namenskonflikt: eine Relation mit Namen \\"{{name}}\\" existiert bereits","db.messages.translate.error-variable-cyclic-usage":"Zyklische Verwendung von Variable \\"{{name}}\\" erkannt","editor.codemirror-placeholder":"Abfrage ...\\nTastatürkürzel\\n\\tAbfrage ausführen: [CTRL]+[RETURN]\\n\\tMarkierten teil der Abfrage ausführen: [CTRL]+[SHIFT]+[RETURN]\\tAutovervollständigung: [CTRL]+[SPACE]","editor.alert-message-headers.success":"Erfolg","editor.alert-message-headers.info":"Info","editor.alert-message-headers.warning":"Warnung","editor.alert-message-headers.error":"Fehler","editor.inline-relation-editor.button-ok":"ok","editor.inline-relation-editor.button-cancel":"abbrechen","editor.inline-relation-editor.placeholder-column-name-and-types":"spaltenName:datenTyp","editor.inline-relation-editor.enter-your-data":"bitte Daten eingeben","editor.inline-relation-editor.error-column-name-missing":"Spaltenname fehlt in Spalte {{index}}","editor.inline-relation-editor.error-wrong-quoted-string":"Zeichenketten dürfen keine doppelten oder einfache Anführungszeichen enthalten","editor.error-no-query-found":"keine Abfrage gefunden","editor.pegjs-error.or":"oder","editor.pegjs-error.no-input-found":"keine Eingabe gefunden","editor.pegjs-error.end-of-input":"Ende der Eingabe","editor.pegjs-error.expected-found":"Erwarte {{expected}} aber {{found}} gefunden.","editor.error-at-line-x":"in Zeile {{line}}","calc.messages.error-query-missing":"keine Abfrage gefunden","calc.messages.error-query-missing-assignments-found":"nur Zuweisungen gefunden; die eigentliche Abfrage fehlt Help - Assignments (en)","calc.messages.gist-load-success":"gist erfolgreich geladen","calc.menu.headline":"Datensätze","calc.menu.datasets":"Datensätze","calc.menu.load-gist-headline":"Datensatz aus gist laden","calc.menu.load-gist-button":"laden","calc.menu.load-gist-insert-placeholder":"gist ID","calc.menu.create-own-dataset-headline":"Eigenen Datensatz erstellen","calc.menu.create-own-dataset-text":"Sie können Ihren eigenen Datensatz erstellen und ihn mit anderen teilen. Lernen Sie mehr darüber im Maintainer Tutorial","calc.menu.create-own-dataset-text-link":"Maintainer Tutorial (en)","calc.menu.create-own-dataset-button-new":"neuen Datensatz erstellen","calc.menu.create-own-dataset-button-modify":"aktuellen Datensatz abändern","calc.navigation.take-a-tour":"Tour starten","calc.navigation.feedback":"Feedback","calc.navigation.help":"Hilfe (en)","calc.navigation.calc":"Rechner","calc.navigation.language":"Sprache","calc.maintainer-groups.misc":"Diverse","calc.maintainer-groups.temp":"Ungespeichert","calc.maintainer-groups.uibk":"Universität Innsbruck","calc.maintainer-groups.saarland":"Universität Saarland","calc.editors.button-history":"Verlauf","calc.editors.insert-relation-title":"Einfügen","calc.editors.insert-relation-tooltip":"Beziehungs- oder Spaltennamen einfügen","calc.editors.group.tab-name":"Datensatz Editor","calc.editors.group.tab-name-short":"DS","calc.editors.group.toolbar.import-sql":"SQL-dump importieren","calc.editors.group.toolbar.import-sql-content":"SQL-dump importieren","calc.editors.group.toolbar.add-new-relation":"neue Relation hinzufügen","calc.editors.group.toolbar.add-new-relation-content":"Relationseditor öffnen","calc.editors.group.button-download":"download","calc.editors.group.button-exec":"Vorschau","calc.editors.group.button-use":"Datensatz im Editor verwenden","calc.editors.group.button-use_plural":"Datensatz im Editor verwenden","calc.editors.group.sql-import-group-name-placeholder":"Name des Datensatzes (importiert)","calc.editors.group.new-group-example-group":"-- dies ist ein Beispiel\\n\\ngroup: nameDesDatensatzes \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\tbeispiel, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"SQL-Dump importieren","calc.editors.group.modal-sqldump.button-close":"schließen","calc.editors.group.modal-sqldump.button-cancel":"abbrechen","calc.editors.group.modal-sqldump.button-import-sql":"importieren","calc.editors.group.modal-sqldump.description":"Kopieren Sie den SQL-Dump hier her um einen Datensatz daraus zu erstellen.","calc.editors.ra.tab-name":"Relationale Algebra","calc.editors.ra.tab-name-short":"RelAlg","calc.editors.ra.button-execute-query":"Query ausführen","calc.editors.ra.button-execute-selection":"Markierung ausführen","calc.editors.ra.button-download":"download","calc.editors.ra.toolbar.projection":"Projektion","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
        pi a, b A","calc.editors.ra.toolbar.selection":"Selektion","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
        sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"Umbenennen (Relationen/Spalten)","calc.editors.ra.toolbar.rename-content":"
        σ x.a > 1 ( ρ x ( A ) )
        \\n
        σ A.y > 2 ( rho ya ( A ) )
        ","calc.editors.ra.toolbar.right-arrow":"Pfeil nach Rechts","calc.editors.ra.toolbar.rename-columns-operator":"Umbenennung von Spalten","calc.editors.ra.toolbar.rename-columns-operator-content":"
        σ A.y > 2 ( ρ ya ( A ) )
        ","calc.editors.ra.toolbar.orderBy":"Sortieren","calc.editors.ra.toolbar.orderBy-content":"","calc.editors.ra.toolbar.groupBy":"Gruppieren","calc.editors.ra.toolbar.groupBy-content":"
        γ a, b; count(c)→c ( A )
        \\n
        gamma count(a)->x, sum(b)->y ( A )
        ","calc.editors.ra.toolbar.and":"Und","calc.editors.ra.toolbar.and-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.xor":"Xor","calc.editors.ra.toolbar.xor-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.or":"Oder","calc.editors.ra.toolbar.or-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.not":"Verneinung","calc.editors.ra.toolbar.not-content":" ¬(a < b) ( A )","calc.editors.ra.toolbar.equals":"Gleich","calc.editors.ra.toolbar.equals-content":" a = b ( A )","calc.editors.ra.toolbar.not-equals":"Ungleich","calc.editors.ra.toolbar.not-equals-content":" a \'text\' ( A )","calc.editors.ra.toolbar.greater-or-equals":"Größer-Gleich","calc.editors.ra.toolbar.greater-or-equals-content":" a 42 ( A )","calc.editors.ra.toolbar.lesser-or-equals":"Kleiner-Gleich","calc.editors.ra.toolbar.lesser-or-equals-content":" a 42 ( A )","calc.editors.ra.toolbar.intersect":"Schnittmenge","calc.editors.ra.toolbar.intersect-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.union":"Vereinigung","calc.editors.ra.toolbar.union-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.division":"Division (Relationen)","calc.editors.ra.toolbar.division-content":"
        ( A ) ÷ ( B )
        ","calc.editors.ra.toolbar.subtraction":"Mengendifferenz","calc.editors.ra.toolbar.subtraction-content":"
        ( A ) - ( B )
        \\n
        ( A ) \\n ( B )
        ","calc.editors.ra.toolbar.cross-join":"cross join (Kreuzprodukt)","calc.editors.ra.toolbar.cross-join-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.natural-join":"natural join / θ-join","calc.editors.ra.toolbar.natural-join-content":"
        ( A ) ( B )
        \\n
        ( A ) ⋈ A.a ≥ B.a ( B )
        ","calc.editors.ra.toolbar.left-outer-join":"left outer join","calc.editors.ra.toolbar.left-outer-join-content":"
        ( A ) ⟕ ( B )
        \\n
        ( A ) ⟕ A.a < B.a ( B )
        \\n","calc.editors.ra.toolbar.right-outer-join":"right outer join","calc.editors.ra.toolbar.right-outer-join-content":"
        ( A ) ⟖ ( B )
        \\n
        ( A ) ⟖ A.a < B.a ( B )
        \\n","calc.editors.ra.toolbar.full-outer-join":"full outer join","calc.editors.ra.toolbar.full-outer-join-content":"
        ( A ) ⟗ ( B )
        \\n
        ( A ) ⟗ A.a != B.a ( B )
        ","calc.editors.ra.toolbar.left-semi-join":"left semi join","calc.editors.ra.toolbar.left-semi-join-content":"
        ( A ) ⋉ ( B )
        ","calc.editors.ra.toolbar.right-semi-join":"right semi join","calc.editors.ra.toolbar.right-semi-join-content":"
        ( A ) ⋊ ( B )
        ","calc.editors.ra.toolbar.anti-join":"anti join","calc.editors.ra.toolbar.anti-join-content":"
        ( A ) ▷ ( B )
        ","calc.editors.ra.toolbar.assignment":"Zuweisung","calc.editors.ra.toolbar.assignment-content":"
        X = pi a ( A )\\n
        Y = pi b ( b )\\n
        ( X ) ( Y )
        ","calc.editors.ra.toolbar.single-line-comment":"Kommentar einzeilig","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- useful comment","calc.editors.ra.toolbar.multi-line-comment":"Kommentar mehrzeilig","calc.editors.ra.toolbar.multi-line-comment-content":"/* this is a very,
        very long comment */

        π a, b A","calc.editors.ra.toolbar.inline-relation":"inline-Relation","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
        a:string, b:number, X.c:date
        a, 1, 1970-01-01
        }
        )","calc.editors.ra.toolbar.inline-relation-editor":"inline-Relation (Editor)","calc.editors.ra.toolbar.inline-relation-editor-content":"eine neue inline-Relation mit dem Editor erstellen","calc.editors.ra.toolbar.insert-date":"Datum einfügen","calc.editors.ra.toolbar.insert-date-content":"σ a < date(\'1970-01-01\') ( A )","calc.editors.ra.toolbar.autoreplace-operators.title":"Operatoren ersetzen","calc.editors.ra.toolbar.autoreplace-operators.header":"Operatoren automatisch ersetzen","calc.editors.ra.toolbar.autoreplace-operators.none":"keine Ersetzung","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"pi => π","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"π => pi","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"Query ausführen","calc.editors.sql.button-execute-selection":"Markierung ausführen","calc.editors.sql.button-download":"download","calc.editors.sql.toolbar.select":"select-Klausel","calc.editors.sql.toolbar.select-content":"

        SELECT * FROM A

        SELECT a, A.b, A.c FROM A
        ","calc.editors.sql.toolbar.from":"from-Klausel","calc.editors.sql.toolbar.from-content":"
        SELECT *
        FROM A, B as b
        INNER JOIN C NATURAL
        ","calc.editors.sql.toolbar.where":"where-Klausel","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
        where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"group-b-Klausel","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
        FROM A
        GROUP BY a","calc.editors.sql.toolbar.having":"having-Klausel","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
        FROM A
        GROUP BY a
        having sum > 10","calc.editors.sql.toolbar.order-by":"order-by-Klausel","calc.editors.sql.toolbar.order-by-content":"

        SELECT * FROM A ORDER BY a asc, b desc

        SELECT * FROM A ORDER BY 1, 2, 3
        ","calc.editors.sql.toolbar.limit":"limit-Klausel","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
        LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"Datum einfügen","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Ergebnis","calc.result.modal.close":"Schließen","calc.editors.ra.inline-editor.title":"Relation Editor","calc.editors.ra.inline-editor.button-download-csv":"CSV downloaden","calc.editors.ra.inline-editor.button-upload-csv":"CSV uploaden","calc.editors.ra.inline-editor.button-cancel":"Abbrechen","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Name","calc.editors.ra.inline-editor.row-type":"Typ","calc.editors.ra.inline-editor.input-relation-name":"Relations Name","calc.navigation.imprint":"Impressum"}')},"./src/locales/en.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"duplicate variable name: {{name}}","db.messages.parser.error-invalid-date-format":"\\"{{str}}\\" is not a valid date; expected format: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":"duplicate header {{name}}","db.messages.parser.error-group-unknown-header":"unknown header {{name}}","db.messages.parser.error-group-header-name-missing":"the name of the group is missing (group: ....)","db.messages.parser.error-group-header-name-empty":"the name of the group must not be empty","db.messages.parser.error-group-non-unique-attribute":"non unique attribute {{name{{ in column }}index}}","db.messages.parser.error-group-non-unique-group-name":"duplicate group name: {{name}}","db.messages.parser.error-sql-string-use-single-quotes":"use single quotes for strings","db.messages.parser.error-sql-invalid-relation-name":"\\"{{str}}\\" must not be used as a relation-name","db.messages.parser.error-sql-invalid-column-name":"\\"{{str}}\\" must not be used as a column-name","db.messages.parser.error-sql-group-by-missing":"group by is missing","db.messages.parser.error-sql-having-without-group-by":"having found but missing \\"group by\\" or aggregation","db.messages.parser.error-sql-negative-limit":"the limit given must be >= 0","db.messages.parser.error-sqldump-invalid-column-number":"invalid number of columns in line {{line}}","db.messages.parser.error-sqldump-invalid-type":"invalid type in line {{line}}","db.messages.parser.error-sqldump-insert-wrong-number-columns":"number of values != number of columns","db.messages.parser.error-valueexpr-like-operand-no-string":"right operand of LIKE must be a string literal","db.messages.exec.error-column-not-unique":"could not add column \\"{{column}}\\" because of ambiguity","db.messages.exec.error-column-not-found-name":"could not find column \\"{{column}}\\" in schema {{schema}}","db.messages.exec.error-column-not-found-index":"column index \\"{{column}}\\" is out of range in schema {{schema}}; index starts at 1","db.messages.exec.error-column-ambiguous":"column \\"{{column}}\\" is ambiguous in {{schema}}","db.messages.exec.error-column-index-out-of-range":"column index \\"{{column}}\\" is out of range in {{schema}}; index starts at 1","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"could not set relation alias \\"{{alias}}\\" because of ambiguity","db.messages.exec.error-could-not-rename-ambiguity":"could not set new name \\"{{newName}}\\" for \\"{{oldName}}\\" because of ambiguity in {{schema}}","db.messages.exec.error-schema-a-not-part-of-schema-b":"schema {{schemaA}} is not part of {{schemaB}}","db.messages.exec.error-schemas-not-unifiable":"schemas are not unifiable: types are different or size is different: {{schemaA}} and {{schemaB}}","db.messages.exec.error-column-not-in-both-schemas":"column \\"{{column}}\\" can not be found in both schemas of join","db.messages.exec.error-condition-must-be-boolean":"condition must be a boolean expression","db.messages.exec.error-func-not-defined-for-column-type":"{{func}} not defined for type {{colType}}","db.messages.exec.error-join-would-produce-non-unique-columns":"join would result in non unique column names","db.messages.exec.error-no-columns-match-alias-star":"no columns match \\"{{alias}}.*\\"","db.messages.exec.error-datatype-not-specified-for-col":"datatype for column {{index}} (\\"{{column}}\\") is not specified","db.messages.exec.error-invalid-projection-error":"invalid projection \\"{{argument}}\\": {{error}}","db.messages.exec.error-function-expects-type":"function \\"{{func}}\\" expects arguments of type \\"{{expected}}\\" but \\"{{given}}\\" given","db.messages.exec.error-could-not-compare-different-types":"could not compare value if types are different: {{typeA}} != {{typeB}}","db.messages.exec.error-function-expects-arguments-of-same-type":"{{func}} expects all arguments to be of the same type","db.messages.exec.error-case-when-condition-must-be-boolean":"the condition of a CASE WHEN must be of type boolean","db.messages.exec.error-case-when-expects-results-of-same-type":"CASE WHEN condition THEN result END expects all results to be of the same type","db.messages.exec.error-invalid-date-format":"\\"{{str}}\\" is not a valid date; expected format: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"could not find relation \\"{{name}}\\"","db.messages.translate.warning-distinct-missing":"DISTINCT is missing","db.messages.translate.warning-ignored-all-on-set-operators":"ignored ALL on set operation","db.messages.translate.error-variable-name-conflict":"name conflict: relation name \\"{{name}}\\" already exists","db.messages.translate.error-variable-cyclic-usage":"cyclic usage of variable \\"{{name}}\\" detected","editor.codemirror-placeholder":"your query goes here ...\\n\\nkeyboard shortcuts:\\n\\texecute statement: [CTRL]+[RETURN]\\n\\texecute selection: [CTRL]+[SHIFT]+[RETURN]\\n\\tautocomplete: [CTRL]+[SPACE]\\n","editor.alert-message-headers.success":"Success","editor.alert-message-headers.info":"Info","editor.alert-message-headers.warning":"Warning","editor.alert-message-headers.error":"Error","editor.inline-relation-editor.button-ok":"ok","editor.inline-relation-editor.button-cancel":"cancel","editor.inline-relation-editor.placeholder-column-name-and-types":"columnName:type","editor.inline-relation-editor.enter-your-data":"please enter your data","editor.inline-relation-editor.error-column-name-missing":"column name missing in column {{index}}","editor.inline-relation-editor.error-wrong-quoted-string":"string must not contain single and double quotes","editor.error-no-query-found":"no query found","editor.pegjs-error.or":"or","editor.pegjs-error.no-input-found":"no input found","editor.pegjs-error.end-of-input":"end of input","editor.pegjs-error.expected-found":"Expected {{expected}} but {{found}} found.","editor.error-at-line-x":"at line {{line}}","calc.messages.error-query-missing":"no query found","calc.messages.error-query-missing-assignments-found":"only assignments found; query is missing Help - Assignments","calc.messages.gist-load-success":"gist loaded successfully","calc.menu.headline":"load a Dataset","calc.menu.datasets":"Datasets","calc.menu.load-gist-headline":"Load dataset stored in a gist","calc.menu.load-gist-button":"load","calc.menu.load-gist-insert-placeholder":"gist ID","calc.menu.create-own-dataset-headline":"Create your own Dataset","calc.menu.create-own-dataset-text":"You can create your own dataset and share it with others. Learn more about it in the Maintainer Tutorial","calc.menu.create-own-dataset-text-link":"Maintainer Tutorial","calc.menu.create-own-dataset-button-new":"create new Dataset","calc.menu.create-own-dataset-button-modify":"modify current Dataset","calc.navigation.take-a-tour":"Take a Tour","calc.navigation.feedback":"Feedback","calc.navigation.help":"Help","calc.navigation.calc":"Calculate","calc.navigation.language":"Language","calc.maintainer-groups.misc":"Miscellaneous","calc.maintainer-groups.temp":"Temporary","calc.maintainer-groups.uibk":"University of Innsbruck","calc.maintainer-groups.saarland":"University of Saarland","calc.editors.button-history":"history","calc.editors.insert-relation-title":"Insert","calc.editors.insert-relation-tooltip":"Insert relation or column names","calc.editors.group.tab-name":"Group Editor","calc.editors.group.tab-name-short":"GE","calc.editors.group.toolbar.import-sql":"import SQL-dump","calc.editors.group.toolbar.import-sql-content":"import SQL-dump","calc.editors.group.toolbar.add-new-relation":"add new relation","calc.editors.group.toolbar.add-new-relation-content":"open relation editor","calc.editors.group.button-download":"download","calc.editors.group.button-exec":"preview","calc.editors.group.button-use":"use Group in editor","calc.editors.group.button-use_plural":"use first Group in editor","calc.editors.group.sql-import-group-name-placeholder":"Name of the group (imported from SQL)","calc.editors.group.new-group-example-group":"-- this is an example\\n\\ngroup: nameOfTheNewGroup \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\texample, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"Import SQL-Dump","calc.editors.group.modal-sqldump.button-close":"Close","calc.editors.group.modal-sqldump.button-cancel":"cancel","calc.editors.group.modal-sqldump.button-import-sql":"import SQL","calc.editors.group.modal-sqldump.description":"Put your SQL-Dump here to create a group.","calc.editors.ra.tab-name":"Relational Algebra","calc.editors.ra.tab-name-short":"RelAlg","calc.editors.ra.button-execute-query":"execute query","calc.editors.ra.button-execute-selection":"execute selection","calc.editors.ra.button-download":"download","calc.editors.ra.toolbar.projection":"projection","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
        pi a, b A","calc.editors.ra.toolbar.selection":"selection","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
        sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"rename relation / rename columns","calc.editors.ra.toolbar.rename-content":"
        σ x.a > 1 ( ρ x ( A ) )
        \\n
        σ A.y > 2 ( rho ya ( A ) )
        ","calc.editors.ra.toolbar.right-arrow":"Right arrow","calc.editors.ra.toolbar.rename-columns-operator":"rename columns operator","calc.editors.ra.toolbar.rename-columns-operator-content":"
        σ A.y > 2 ( ρ ya ( A ) )
        ","calc.editors.ra.toolbar.orderBy":"order by","calc.editors.ra.toolbar.orderBy-content":"
        τ a asc, [2] desc ( A )
        tau a asc, [2] desc ( A )
        ","calc.editors.ra.toolbar.groupBy":"group by","calc.editors.ra.toolbar.groupBy-content":"
        γ a, b; count(c)→c ( A )
        \\n
        gamma count(a)->x, sum(b)->y ( A )
        ","calc.editors.ra.toolbar.and":"and","calc.editors.ra.toolbar.and-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.xor":"xor","calc.editors.ra.toolbar.xor-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.or":"or","calc.editors.ra.toolbar.or-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.not":"not","calc.editors.ra.toolbar.not-content":"
        &sigma","calc.editors.ra.toolbar.equals":"equals","calc.editors.ra.toolbar.equals-content":"
        &sigma","calc.editors.ra.toolbar.not-equals":"not equals","calc.editors.ra.toolbar.not-equals-content":"
        &sigma","calc.editors.ra.toolbar.greater-or-equals":"greater or equals","calc.editors.ra.toolbar.greater-or-equals-content":"
        &sigma","calc.editors.ra.toolbar.lesser-or-equals":"lesser or equals","calc.editors.ra.toolbar.lesser-or-equals-content":"
        &sigma","calc.editors.ra.toolbar.intersect":"intersect","calc.editors.ra.toolbar.intersect-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.union":"union","calc.editors.ra.toolbar.union-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.division":"division","calc.editors.ra.toolbar.division-content":"
        ( A ) ÷ ( B )
        ","calc.editors.ra.toolbar.subtraction":"subtraction","calc.editors.ra.toolbar.subtraction-content":"
        ( A ) - ( B )
        \\n
        ( A ) \\n ( B )
        ","calc.editors.ra.toolbar.cross-join":"cross join","calc.editors.ra.toolbar.cross-join-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.natural-join":"natural join / θ-join","calc.editors.ra.toolbar.natural-join-content":"
        ( A ) ( B )
        \\n
        ( A ) ⋈ A.a ≥ B.a ( B )
        ","calc.editors.ra.toolbar.left-outer-join":"left outer join","calc.editors.ra.toolbar.left-outer-join-content":"
        ( A ) ⟕ ( B )
        \\n
        ( A ) ⟕ A.a < B.a ( B )
        \\n","calc.editors.ra.toolbar.right-outer-join":"right outer join","calc.editors.ra.toolbar.right-outer-join-content":"
        ( A ) ⟖ ( B )
        \\n
        ( A ) ⟖ A.a < B.a ( B )
        \\n","calc.editors.ra.toolbar.full-outer-join":"full outer join","calc.editors.ra.toolbar.full-outer-join-content":"
        ( A ) ⟗ ( B )
        \\n
        ( A ) ⟗ A.a != B.a ( B )
        ","calc.editors.ra.toolbar.left-semi-join":"left semi join","calc.editors.ra.toolbar.left-semi-join-content":"
        ( A ) ⋉ ( B )
        ","calc.editors.ra.toolbar.right-semi-join":"right semi join","calc.editors.ra.toolbar.right-semi-join-content":"
        ( A ) ⋊ ( B )
        ","calc.editors.ra.toolbar.anti-join":"anti join","calc.editors.ra.toolbar.anti-join-content":"
        ( A ) ▷ ( B )
        ","calc.editors.ra.toolbar.assignment":"assignment","calc.editors.ra.toolbar.assignment-content":"
        X = pi a ( A )\\n
        Y = pi b ( b )\\n
        ( X ) ( Y )
        ","calc.editors.ra.toolbar.single-line-comment":"single-line comment","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- useful comment","calc.editors.ra.toolbar.multi-line-comment":"multi-line comment","calc.editors.ra.toolbar.multi-line-comment-content":"/* this is a very,
        very long comment */

        π a, b A","calc.editors.ra.toolbar.inline-relation":"inline-relation","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
        a:string, b:number, X.c:date
        a, 1, 1970-01-01
        }
        )","calc.editors.ra.toolbar.inline-relation-editor":"inline-relation (editor)","calc.editors.ra.toolbar.inline-relation-editor-content":"create a new inline-relation using a built in editor","calc.editors.ra.toolbar.insert-date":"insert date","calc.editors.ra.toolbar.insert-date-content":"σ a < date(\'1970-01-01\') ( A )","calc.editors.ra.toolbar.autoreplace-operators.title":"operator replacement","calc.editors.ra.toolbar.autoreplace-operators.header":"automatically replace operators","calc.editors.ra.toolbar.autoreplace-operators.none":"no replacement","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"pi => π","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"π => pi","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"execute query","calc.editors.sql.button-execute-selection":"execute selection","calc.editors.sql.button-download":"download","calc.editors.sql.toolbar.select":"select clause","calc.editors.sql.toolbar.select-content":"

        SELECT * FROM A

        SELECT a, A.b, A.c FROM A
        ","calc.editors.sql.toolbar.from":"from clause","calc.editors.sql.toolbar.from-content":"
        SELECT *
        FROM A, B as b
        INNER JOIN C NATURAL
        ","calc.editors.sql.toolbar.where":"where clause","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
        where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"group by clause","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
        FROM A
        GROUP BY a","calc.editors.sql.toolbar.having":"having clause","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
        FROM A
        GROUP BY a
        having sum > 10","calc.editors.sql.toolbar.order-by":"order by clause","calc.editors.sql.toolbar.order-by-content":"

        SELECT * FROM A ORDER BY a asc, b desc

        SELECT * FROM A ORDER BY 1, 2, 3
        ","calc.editors.sql.toolbar.limit":"limit clause","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
        LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"insert date","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Result","calc.result.modal.close":"Close","calc.editors.ra.inline-editor.title":"Relation Editor","calc.editors.ra.inline-editor.button-download-csv":"Download CSV","calc.editors.ra.inline-editor.button-upload-csv":"Upload CSV","calc.editors.ra.inline-editor.button-cancel":"Cancel","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Name","calc.editors.ra.inline-editor.row-type":"Type","calc.editors.ra.inline-editor.input-relation-name":"Relation Name","calc.navigation.imprint":"Imprint"}')},"./src/locales/es.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"nombre de variable duplicado: {{name}}","db.messages.parser.error-invalid-date-format":"\\"{{str}}\\" no es una fecha válida; formato esperado: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":"header duplicado {{name}}","db.messages.parser.error-group-unknown-header":"header desconocido {{name}}","db.messages.parser.error-group-header-name-missing":"el nombre del grupo no se ha encontrado (group: ....)","db.messages.parser.error-group-header-name-empty":"el nombre del grupo debe ser rellenado","db.messages.parser.error-group-non-unique-attribute":"atributo no único {{name}} en columna {{index}}","db.messages.parser.error-group-non-unique-group-name":"El nombre del grupo no es único.","db.messages.parser.error-sql-string-use-single-quotes":"utiliza comillas simples para cadenas de caracteres","db.messages.parser.error-sql-invalid-relation-name":"\\"{{str}}\\" no debe ser utilizado como nombre de relacion","db.messages.parser.error-sql-invalid-column-name":"\\"{{str}}\\" no debe ser utilizado como nombre de columna","db.messages.parser.error-sql-group-by-missing":"group by no se encuentra","db.messages.parser.error-sql-having-without-group-by":"se ha encontrado pero no se encuentra \\"group by\\" ó agregación","db.messages.parser.error-sql-negative-limit":"el límite dado debe ser >= 0","db.messages.parser.error-sqldump-invalid-column-number":"número inválido de columnas en línea {{line}}","db.messages.parser.error-sqldump-invalid-type":"tipo inválido en línea {{line}}","db.messages.parser.error-sqldump-insert-wrong-number-columns":"número de valores != número de columnas","db.messages.parser.error-valueexpr-like-operand-no-string":"operando derecho de LIKE debe ser una cadena literal","db.messages.exec.error-column-not-unique":"no se pude agregar columna \\"{{column}}\\" por ambiguedad","db.messages.exec.error-column-not-found-name":"no se pude encontrar columna \\"{{column}}\\" en esquema {{schema}}","db.messages.exec.error-column-not-found-index":"índice de columna \\"{{column}}\\" está fuera de rango en equema {{schema}}; index starts at 1","db.messages.exec.error-column-ambiguous":"columna \\"{{column}}\\" es ambigua en esquema {{schema}}","db.messages.exec.error-column-index-out-of-range":"índice de columna \\"{{column}}\\" está fuera de rango en equema {{schema}}; índice comienza en 1","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"no se pudo establecer relación alias \\"{{alias}}\\" por ambiguedad","db.messages.exec.error-could-not-rename-ambiguity":"no se pudo establecer nuevo nombre \\"{{newName}}\\" para \\"{{oldName}}\\" por ambiguedad en el equema {{schema}}","db.messages.exec.error-schema-a-not-part-of-schema-b":"esquema {{schemaA}} no es parte de {{schemaB}}","db.messages.exec.error-schemas-not-unifiable":"esquemas no son unificables: los tipos son diferentes ó los tamaño son diferentes: {{schemaA}} y {{schemaB}}","db.messages.exec.error-column-not-in-both-schemas":"columna \\"{{column}}\\" no se puede encontrar en ambos esquemas del join","db.messages.exec.error-condition-must-be-boolean":"condición debe ser una expresión booleana","db.messages.exec.error-func-not-defined-for-column-type":"{{func}} no está definido para {{colType}}","db.messages.exec.error-join-would-produce-non-unique-columns":"Join würde nicht eindeutige Spaltennamen erzeugen","db.messages.exec.error-no-columns-match-alias-star":"las columnas no coinciden \\"{{alias}}.*\\"","db.messages.exec.error-datatype-not-specified-for-col":"tipo de dato para columna {{index}} (\\"{{column}}\\") no está especificado","db.messages.exec.error-invalid-projection-error":"proyección inválida \\"{{argument}}\\": {{error}}","db.messages.exec.error-function-expects-type":"función \\"{{func}}\\" espera argumentos de tipo \\"{{expected}}\\" pero \\"{{given}}\\" fue dado","db.messages.exec.error-could-not-compare-different-types":"no se pudo comparar valor si tipos son diferentes: {{typeA}} != {{typeB}}","db.messages.exec.error-function-expects-arguments-of-same-type":"{{func}} espera que todos los argumentos sean del mismo tipo","db.messages.exec.error-case-when-condition-must-be-boolean":"la condición de un CASE WHEN debe ser de tipo booleano","db.messages.exec.error-case-when-expects-results-of-same-type":"CASE WHEN condition THEN result END espera todos results ser del mismo tipo","db.messages.exec.error-invalid-date-format":"\\"{{str}}\\" no es una fecha válido; formato esperado: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"no se pudo encontrar relación \\"{{name}}\\"","db.messages.translate.warning-distinct-missing":"DISTINCT fehlt","db.messages.translate.warning-ignored-all-on-set-operators":"ALL bei Mengenoperatoren wurde ignoriert","db.messages.translate.error-variable-name-conflict":"conflicto de nombre: nombre de relación \\"{{name}}\\" ya existe","db.messages.translate.error-variable-cyclic-usage":"uso de variable cíclico \\"{{name}}\\" detectado","editor.codemirror-placeholder":"tu consulta va aquí ...\\n\\natajos de teclado:\\n\\tejecutar declaración: [CTRL]+[RETURN]\\n\\ttejecutar selección: [CTRL]+[SHIFT]+[RETURN]\\n\\tautocompletar: [CTRL]+[SPACE]\\n","editor.alert-message-headers.success":"Éxito","editor.alert-message-headers.info":"Info","editor.alert-message-headers.warning":"Advertencia","editor.alert-message-headers.error":"Error","editor.inline-relation-editor.button-ok":"ok","editor.inline-relation-editor.button-cancel":"cancelar","editor.inline-relation-editor.placeholder-column-name-and-types":"nombreColumna:tipo","editor.inline-relation-editor.enter-your-data":"por favor ingrese los datos","editor.inline-relation-editor.error-column-name-missing":"nombre de columna ausente en columna {{index}}","editor.inline-relation-editor.error-wrong-quoted-string":"cadena de caracteres no debe contener comillas simples y dobles","editor.error-no-query-found":"no se encontró la consulta","editor.pegjs-error.or":"ó","editor.pegjs-error.no-input-found":"no se encontró la entrada","editor.pegjs-error.end-of-input":"fin de entrada","editor.pegjs-error.expected-found":"Se esperaba {{expected}} pero se encontró {{found}} .","editor.error-at-line-x":"en la línea {{line}}","calc.messages.error-query-missing":"no se encontró la consulta","calc.messages.error-query-missing-assignments-found":"solo se encontraron asignaciones; a la consulta le falta Help - Assignments","calc.messages.gist-load-success":"gist fue cargado con éxito","calc.menu.headline":"cargar un Dataset","calc.menu.datasets":"Datasets","calc.menu.load-gist-headline":"cargar dataset guardado en un gist","calc.menu.load-gist-button":"cargar","calc.menu.load-gist-insert-placeholder":"ID de gist","calc.menu.create-own-dataset-headline":"Crear tu propio Dataset","calc.menu.create-own-dataset-text":"Puedes crear tu propio dataset y compartirlo con otras personas. \\nAprende más acerca de ésto en Maintainer Tutorial","calc.menu.create-own-dataset-text-link":"Tutorial de mantenimiento (en)","calc.menu.create-own-dataset-button-new":"crear nuevo Dataset","calc.menu.create-own-dataset-button-modify":"modificar Dataset actual","calc.navigation.take-a-tour":"Haz un recorrido","calc.navigation.feedback":"Feedback","calc.navigation.help":"Ayuda (en)","calc.navigation.calc":"Calculadora","calc.navigation.language":"Lenguaje","calc.maintainer-groups.misc":"Misceláneo","calc.maintainer-groups.temp":"Temporal","calc.maintainer-groups.uibk":"Universidad de Innsbruck","calc.maintainer-groups.saarland":"Universidad de Saarland","calc.editors.button-history":"historia","calc.editors.insert-relation-title":"Insertar","calc.editors.insert-relation-tooltip":"Insertar nombres de relaciones o columnas","calc.editors.group.tab-name":"Editor de Grupo","calc.editors.group.tab-name-short":"EG","calc.editors.group.toolbar.import-sql":"importar SQL-dump","calc.editors.group.toolbar.import-sql-content":"importar SQL-dump","calc.editors.group.toolbar.add-new-relation":"agregar nueva relación","calc.editors.group.toolbar.add-new-relation-content":"abrir editor de relaciones","calc.editors.group.button-download":"descargar","calc.editors.group.button-exec":"vista previa","calc.editors.group.button-use":"utilizar Grupo en editor","calc.editors.group.button-use_plural":"utilizar Grupos en editor","calc.editors.group.sql-import-group-name-placeholder":"Nombre del grupo (importado de SQL)","calc.editors.group.new-group-example-group":"-- éste es un ejemplo\\n\\ngroup: nombreDeNuevoGrupo \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\tejemplo, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"Importar SQL-Dump","calc.editors.group.modal-sqldump.button-close":"Cerrar","calc.editors.group.modal-sqldump.button-cancel":"cancelar","calc.editors.group.modal-sqldump.button-import-sql":"importar SQL","calc.editors.group.modal-sqldump.description":"Ponga su SQL-Dump aquí para crear un grupo.","calc.editors.ra.tab-name":"Álgebra Relacional","calc.editors.ra.tab-name-short":"ÁlgRel","calc.editors.ra.button-execute-query":"executar consulta","calc.editors.ra.button-execute-selection":"executar selección","calc.editors.ra.button-download":"descargar","calc.editors.ra.toolbar.projection":"proyección","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
        pi a, b A","calc.editors.ra.toolbar.selection":"selección","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
        sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"renombrar relación / renombrar columnas","calc.editors.ra.toolbar.rename-content":"
        σ x.a > 1 ( ρ x ( A ) )
        \\n
        σ A.y > 2 ( rho ya ( A ) )
        ","calc.editors.ra.toolbar.right-arrow":"flecha derecha","calc.editors.ra.toolbar.rename-columns-operator":"renombrar operador de columnas","calc.editors.ra.toolbar.rename-columns-operator-content":"
        σ A.y > 2 ( ρ ya ( A ) )
        ","calc.editors.ra.toolbar.orderBy":"ordenar por","calc.editors.ra.toolbar.orderBy-content":"
        τ a asc, [2] desc ( A )
        tau a asc, [2] desc ( A )
        ","calc.editors.ra.toolbar.groupBy":"agrupar por","calc.editors.ra.toolbar.groupBy-content":"
        γ a, b; count(c)→c ( A )
        \\n
        gamma count(a)->x, sum(b)->y ( A )
        ","calc.editors.ra.toolbar.and":"y","calc.editors.ra.toolbar.and-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.xor":"xor","calc.editors.ra.toolbar.xor-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.or":"ó","calc.editors.ra.toolbar.or-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.not":"no","calc.editors.ra.toolbar.not-content":"
        &sigma","calc.editors.ra.toolbar.equals":"igual","calc.editors.ra.toolbar.equals-content":"
        &sigma","calc.editors.ra.toolbar.not-equals":"no es igual","calc.editors.ra.toolbar.not-equals-content":"
        &sigma","calc.editors.ra.toolbar.greater-or-equals":"mayor ó igual","calc.editors.ra.toolbar.greater-or-equals-content":"
        &sigma","calc.editors.ra.toolbar.lesser-or-equals":"menor ó igual","calc.editors.ra.toolbar.lesser-or-equals-content":"
        &sigma","calc.editors.ra.toolbar.intersect":"intersecta","calc.editors.ra.toolbar.intersect-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.union":"unión","calc.editors.ra.toolbar.union-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.division":"división","calc.editors.ra.toolbar.division-content":"
        ( A ) ÷ ( B )
        ","calc.editors.ra.toolbar.subtraction":"resta","calc.editors.ra.toolbar.subtraction-content":"
        ( A ) - ( B )
        \\n
        ( A ) \\\\ ( B )
        \\n","calc.editors.ra.toolbar.cross-join":"cross join (cruzado)","calc.editors.ra.toolbar.cross-join-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.natural-join":"natural join / θ-join","calc.editors.ra.toolbar.natural-join-content":"
        ( A ) ( B )
        \\n
        ( A ) ⋈ A.a ≥ B.a ( B )
        ","calc.editors.ra.toolbar.left-outer-join":"left outer join","calc.editors.ra.toolbar.left-outer-join-content":"
        ( A ) ⟕ ( B )
        \\n
        ( A ) ⟕ A.a < B.a ( B )
        ","calc.editors.ra.toolbar.right-outer-join":"right outer join","calc.editors.ra.toolbar.right-outer-join-content":"
        ( A ) ⟖ ( B )
        \\n
        ( A ) ⟖ A.a < B.a ( B )
        ","calc.editors.ra.toolbar.full-outer-join":"full outer join","calc.editors.ra.toolbar.full-outer-join-content":"
        ( A ) ⟗ ( B )
        \\n
        ( A ) ⟗ A.a != B.a ( B )
        ","calc.editors.ra.toolbar.left-semi-join":"left semi join","calc.editors.ra.toolbar.left-semi-join-content":"
        ( A ) ⋉ ( B )
        ","calc.editors.ra.toolbar.right-semi-join":"right semi join","calc.editors.ra.toolbar.right-semi-join-content":"
        ( A ) ⋊ ( B )
        ","calc.editors.ra.toolbar.anti-join":"anti join","calc.editors.ra.toolbar.anti-join-content":"
        ( A ) ▷ ( B )
        ","calc.editors.ra.toolbar.assignment":"asignación","calc.editors.ra.toolbar.assignment-content":"
        X = pi a ( A )\\n
        Y = pi b ( b )\\n
        ( X ) ( Y )
        ","calc.editors.ra.toolbar.single-line-comment":"comentario de una línea","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- useful comment","calc.editors.ra.toolbar.multi-line-comment":"comentario de múltiples líneas","calc.editors.ra.toolbar.multi-line-comment-content":"/* this is a very,
        very long comment */

        π a, b A","calc.editors.ra.toolbar.inline-relation":"inline-relation","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
        a:string, b:number, X.c:date
        a, 1, 1970-01-01
        }
        )","calc.editors.ra.toolbar.inline-relation-editor":"inline-relation (editor)","calc.editors.ra.toolbar.inline-relation-editor-content":"crear nuevo inline-relation utilizando editor incorporado","calc.editors.ra.toolbar.insert-date":"insertar fecha","calc.editors.ra.toolbar.insert-date-content":"","calc.editors.ra.toolbar.autoreplace-operators.title":"","calc.editors.ra.toolbar.autoreplace-operators.header":"","calc.editors.ra.toolbar.autoreplace-operators.none":"","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"ejecutar consulta","calc.editors.sql.button-execute-selection":"ejecutar selección","calc.editors.sql.button-download":"descargar","calc.editors.sql.toolbar.select":"seleccionar cláusula","calc.editors.sql.toolbar.select-content":"

        SELECT * FROM A

        SELECT a, A.b, A.c FROM A
        ","calc.editors.sql.toolbar.from":"cláusula from (desde)","calc.editors.sql.toolbar.from-content":"
        SELECT *
        FROM A, B as b
        INNER JOIN C NATURAL
        ","calc.editors.sql.toolbar.where":"cláusula where (donde)","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
        where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"cláusula agrupar por","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
        FROM A
        GROUP BY a","calc.editors.sql.toolbar.having":"teniendo cláusula","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
        FROM A
        GROUP BY a
        having sum > 10","calc.editors.sql.toolbar.order-by":"cláusula ordenar por","calc.editors.sql.toolbar.order-by-content":"

        SELECT * FROM A ORDER BY a asc, b desc

        SELECT * FROM A ORDER BY 1, 2, 3
        ","calc.editors.sql.toolbar.limit":"cláusula límite","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
        LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"insertar fecha","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Resultado","calc.result.modal.close":"Cerrar","calc.editors.ra.inline-editor.title":"Editor de relaciones","calc.editors.ra.inline-editor.button-download-csv":"Descargar CSV","calc.editors.ra.inline-editor.button-upload-csv":"Subir CSV","calc.editors.ra.inline-editor.button-cancel":"Cancelar","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Nombre","calc.editors.ra.inline-editor.row-type":"Escriba","calc.editors.ra.inline-editor.input-relation-name":"Nombre de la relación","calc.navigation.imprint":"Imprimir"}')},"./src/locales/kr.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"변수 이름 중복: {{name}}","db.messages.parser.error-invalid-date-format":"\\"__str__\\" 유효하지 않은 날짜; 형식: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":" 헤더 중복: {{name}}","db.messages.parser.error-group-unknown-header":"알 수 없는 헤더: {{name}}","db.messages.parser.error-group-header-name-missing":"그룹 이름이 없음(group: ....)","db.messages.parser.error-group-header-name-empty":"그룹 이름은 비어있으면 안됨","db.messages.parser.error-group-non-unique-attribute":"__index__ 열에서 고유하지 않은 속성 {{name}}","db.messages.parser.error-group-non-unique-group-name":"duplicate group name: {{name}}","db.messages.parser.error-sql-string-use-single-quotes":"문자열에 작은 따음표 사용","db.messages.parser.error-sql-invalid-relation-name":"\\"__str__\\"은 관계 이름으로 사용 할 수 없음","db.messages.parser.error-sql-invalid-column-name":"\\"__str__\\"은 열 이름으로 사용할 수 없음","db.messages.parser.error-sql-group-by-missing":"group by 없음","db.messages.parser.error-sql-having-without-group-by":"\\"group by\\" 또는 집계 없음","db.messages.parser.error-sql-negative-limit":"0 이상이어야 함","db.messages.parser.error-sqldump-invalid-column-number":"__line__ 에서 유효하지 않은 열","db.messages.parser.error-sqldump-invalid-type":"__line__ 에서 유효하지 않은 타입","db.messages.parser.error-sqldump-insert-wrong-number-columns":"값의 숫자 != 열의 숫자","db.messages.parser.error-valueexpr-like-operand-no-string":"LIKE의 오른쪽 피연산자는 문자열 리터럴이어야 함","db.messages.exec.error-column-not-unique":"모호성 때문에 열 \\"__column__\\" 을 추가할 수 없음","db.messages.exec.error-column-not-found-name":"스키마 __schema__ 에서 열 \\"__column__\\" 을 찾을 수 없음","db.messages.exec.error-column-not-found-index":"열 인덱스 \\"__column__\\" 는 범위를 벗어남; 인덱스는 1에서 시작","db.messages.exec.error-column-ambiguous":"열 \\"__column__\\" 는 스키마 __schema__ 에서 모호함","db.messages.exec.error-column-index-out-of-range":"열 인덱스 \\"__column__\\" 는 범위를 벗어남; 인덱스는 1에서 시작","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"모호성 때문에 릴레이션 가명 \\"__alias__\\"을 사용할 수 없음 ","db.messages.exec.error-could-not-rename-ambiguity":"스키마 __schema__ 에서의 모호성 때문에 \\"__oldName__\\"을 위한 새로운 이름 \\"__newName__\\" 을 설정 할 수 없음","db.messages.exec.error-schema-a-not-part-of-schema-b":"스키마 __schemaA__ 는 __schemaB__ 의 부분이 아님","db.messages.exec.error-schemas-not-unifiable":"스키마들은 통합될 수 없음: 타입들은 다르거나 사이즈들이 다르다: __schemaA__ 와 __schemaB__","db.messages.exec.error-column-not-in-both-schemas":"열 \\"__column__\\"은 두 스키마의 조인에서 찾을 수 없음","db.messages.exec.error-condition-must-be-boolean":"조건은 불린 대수여야만 함","db.messages.exec.error-func-not-defined-for-column-type":"__func_ _은 타입 __colType__ 을 위해 정의될 수 없음","db.messages.exec.error-join-would-produce-non-unique-columns":" Die folgenden Spalten sind teil beider Relationen: {{conflicts}}","db.messages.exec.error-no-columns-match-alias-star":"\\"__alias__.*\\"와 일치하는 열이 없음","db.messages.exec.error-datatype-not-specified-for-col":"열 __index__의 데이터 타입 (\\"__column__\\")이 구체화되지 않음","db.messages.exec.error-invalid-projection-error":"유효하지 않은 프로젝션 \\"__argument__\\": __error__","db.messages.exec.error-function-expects-type":"함수 \\"__func__\\"는 인자 타입 \\"__expected__\\" 으로 기대하지만 \\"__given__\\" 이 주어짐","db.messages.exec.error-could-not-compare-different-types":"타입이 다르면 비교할 수 없음: __typeA__ != __typeB__","db.messages.exec.error-function-expects-arguments-of-same-type":"__func__ 는 모든 인자가 같은 타입으로 기대함","db.messages.exec.error-case-when-condition-must-be-boolean":"CASE WHEN 조건은 불린 타입이어야 함","db.messages.exec.error-case-when-expects-results-of-same-type":"CASE WHEN condition THEN result END는 모든 결과가 같은 타입으로 기대함","db.messages.exec.error-invalid-date-format":"\\"__str__\\" 는 유효하지 않은 날짜; 형식: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"릴레이션 \\"{{name}}\\"을 찾을 수 없음","db.messages.translate.warning-distinct-missing":" Duplikate werden in relationaler Algebra automatisch entfernt","db.messages.translate.warning-ignored-all-on-set-operators":" Duplikate werden in relationaler Algebra automatisch entfernt","db.messages.translate.error-variable-name-conflict":"이름 충돌: 릴레이션 이름 \\"{{name}}\\" 은 이미 존재함","db.messages.translate.error-variable-cyclic-usage":"변수 \\"{{name}}\\"의 순환 사용이 감지됨","editor.codemirror-placeholder":"쿼리는 이곳에 표시된다 ...\\n\\n키보드 단축키:\\n\\tstatement 실행: [CTRL]+[RETURN]\\n\\tselection 실행: [CTRL]+[SHIFT]+[RETURN]\\n\\t자동 완성: [CTRL]+[SPACE]","editor.alert-message-headers.success":"성공","editor.alert-message-headers.info":"정보","editor.alert-message-headers.warning":"경고","editor.alert-message-headers.error":" 에러 ","editor.inline-relation-editor.button-ok":"ok","editor.inline-relation-editor.button-cancel":"취소","editor.inline-relation-editor.placeholder-column-name-and-types":"열 이름:타입","editor.inline-relation-editor.enter-your-data":"데이터를 입력하라","editor.inline-relation-editor.error-column-name-missing":"열 이름이 열 __index__에 없다","editor.inline-relation-editor.error-wrong-quoted-string":"문자열은 작은따음표와 큰따음표를 포함할 수 없다.","editor.error-no-query-found":"쿼리를 찾을 수 없다","editor.pegjs-error.or":"또는","editor.pegjs-error.no-input-found":"입력을 찾을 수 없음","editor.pegjs-error.end-of-input":"입력의 끝","editor.pegjs-error.expected-found":"예상 된 __expected__이지만 __found__이 발견됨.","editor.error-at-line-x":"__line__ 줄에서","calc.messages.error-query-missing":"쿼리를 찾을 수 없음","calc.messages.error-query-missing-assignments-found":"쿼리를 찾을 수 없음 Help - Assignments","calc.messages.gist-load-success":"gist 불러오기 완료","calc.menu.headline":"데이터셋 불러오기","calc.menu.datasets":"데이터셋 불러오기","calc.menu.load-gist-headline":"gist에 저장된 데이터셋 불러오기","calc.menu.load-gist-button":"불러오기","calc.menu.load-gist-insert-placeholder":"gist 아이디","calc.menu.create-own-dataset-headline":"데이터셋 생성하기","calc.menu.create-own-dataset-text":"You can create your own dataset and share it with others. Learn more about it in the Maintainer Tutorial","calc.menu.create-own-dataset-text-link":"Maintainer Tutorial","calc.menu.create-own-dataset-button-new":"새로운 데이터셋 생성","calc.menu.create-own-dataset-button-modify":"현재 데이터셋 수정","calc.navigation.take-a-tour":"둘러보기","calc.navigation.feedback":"피드백","calc.navigation.help":"도움말","calc.navigation.calc":"Calculate","calc.navigation.language":"언어","calc.maintainer-groups.misc":"다른 종류","calc.maintainer-groups.temp":"임시","calc.maintainer-groups.uibk":"Innsbruck 대학교","calc.maintainer-groups.saarland":"Saarland 대학교","calc.editors.button-history":"기록","calc.editors.insert-relation-title":"Insert","calc.editors.insert-relation-tooltip":"Insert relation or column names","calc.editors.group.tab-name":"그룹 에디터","calc.editors.group.tab-name-short":"그룹 에디터","calc.editors.group.toolbar.import-sql":"SQL-덤프 가져오기","calc.editors.group.toolbar.import-sql-content":"SQL-컨텐트 가져오기","calc.editors.group.toolbar.add-new-relation":"새로운 릴레이션 추가","calc.editors.group.toolbar.add-new-relation-content":"릴레이션 에디터 열기","calc.editors.group.button-download":"다운로드","calc.editors.group.button-exec":"preview","calc.editors.group.button-use":"에디터에서 그룹 사용하기","calc.editors.group.button-use_plural":"에디터에서 여러 그룹 사용하기","calc.editors.group.sql-import-group-name-placeholder":"그룹 이름(SQL로부터 불러옴)","calc.editors.group.new-group-example-group":"-- 예시입니다\\n\\n그룹: nameOfTheNewGroup \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\texample, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"SQL-Dump 가져오기","calc.editors.group.modal-sqldump.button-close":"닫기","calc.editors.group.modal-sqldump.button-cancel":"취소","calc.editors.group.modal-sqldump.button-import-sql":"SQL 가져오기","calc.editors.group.modal-sqldump.description":"그룹을 생성하려면 SQL-Dump 이곳에 가져와라","calc.editors.ra.tab-name":"관계 대수","calc.editors.ra.tab-name-short":"관계 대수","calc.editors.ra.button-execute-query":"쿼리 실행","calc.editors.ra.button-execute-selection":"셀렉션 실행","calc.editors.ra.button-download":"다운로드","calc.editors.ra.toolbar.projection":"프로젝션","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
        pi a, b A","calc.editors.ra.toolbar.selection":"셀렉션","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
        sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"릴레이션 이름 변경 / 열 이름 변경","calc.editors.ra.toolbar.rename-content":"
        σ x.a > 1 ( ρ x ( A ) )
        \\n
        σ A.y > 2 ( rho ya ( A ) )
        ","calc.editors.ra.toolbar.right-arrow":"오른쪽 화살표","calc.editors.ra.toolbar.rename-columns-operator":"열 연산자 변경","calc.editors.ra.toolbar.rename-columns-operator-content":"
        σ A.y > 2 ( ρ ya ( A ) )
        ","calc.editors.ra.toolbar.orderBy":"정렬","calc.editors.ra.toolbar.orderBy-content":"
        τ a asc, [2] desc ( A )
        tau a asc, [2] desc ( A )
        ","calc.editors.ra.toolbar.groupBy":"그룹화","calc.editors.ra.toolbar.groupBy-content":"
        γ a, b; count(c)→c ( A )
        \\n
        gamma count(a)->x, sum(b)->y ( A )
        ","calc.editors.ra.toolbar.and":"논리곱","calc.editors.ra.toolbar.and-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.xor":"배타적 논리","calc.editors.ra.toolbar.xor-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.or":"논리합","calc.editors.ra.toolbar.or-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.not":"논리적 부정","calc.editors.ra.toolbar.not-content":" ¬(a < b) ( A )
        ","calc.editors.ra.toolbar.equals":"등호","calc.editors.ra.toolbar.equals-content":" a = b ( A )
        ","calc.editors.ra.toolbar.not-equals":"부등호","calc.editors.ra.toolbar.not-equals-content":" a \'text\' ( A )
        ","calc.editors.ra.toolbar.greater-or-equals":"크거나 같다","calc.editors.ra.toolbar.greater-or-equals-content":" a 42 ( A )
        ","calc.editors.ra.toolbar.lesser-or-equals":"작거나 같다","calc.editors.ra.toolbar.lesser-or-equals-content":" a 42 ( A )
        ","calc.editors.ra.toolbar.intersect":"교집합","calc.editors.ra.toolbar.intersect-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.union":"합집합","calc.editors.ra.toolbar.union-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.division":"디비전","calc.editors.ra.toolbar.division-content":"
        ( A ) ÷ ( B )
        ","calc.editors.ra.toolbar.subtraction":"차집합","calc.editors.ra.toolbar.subtraction-content":"
        ( A ) - ( B )
        \\n
        ( A ) \\\\ ( B )
        \\n","calc.editors.ra.toolbar.cross-join":"카디션 프로덕트","calc.editors.ra.toolbar.cross-join-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.natural-join":"자연 조인 / θ-조인","calc.editors.ra.toolbar.natural-join-content":"
        ( A ) ( B )
        \\n
        ( A ) ⋈ A.a ≥ B.a ( B )
        ","calc.editors.ra.toolbar.left-outer-join":"왼쪽 외부 조인","calc.editors.ra.toolbar.left-outer-join-content":"
        ( A ) ⟕ ( B )
        \\n
        ( A ) ⟕ A.a < B.a ( B )
        ","calc.editors.ra.toolbar.right-outer-join":"오른쪽 외부 조인","calc.editors.ra.toolbar.right-outer-join-content":"
        ( A ) ⟖ ( B )
        \\n
        ( A ) ⟖ A.a < B.a ( B )
        ","calc.editors.ra.toolbar.full-outer-join":"완전 외부 조인","calc.editors.ra.toolbar.full-outer-join-content":"
        ( A ) ⟗ ( B )
        \\n
        ( A ) ⟗ A.a != B.a ( B )
        ","calc.editors.ra.toolbar.left-semi-join":"왼쪽 세미 조인","calc.editors.ra.toolbar.left-semi-join-content":"
        ( A ) ⋉ ( B )
        ","calc.editors.ra.toolbar.right-semi-join":"오른쪽 세미 조인","calc.editors.ra.toolbar.right-semi-join-content":"
        ( A ) ⋊ ( B )
        ","calc.editors.ra.toolbar.anti-join":"안티 조인","calc.editors.ra.toolbar.anti-join-content":"
        ( A ) ▷ ( B )
        ","calc.editors.ra.toolbar.assignment":"할당","calc.editors.ra.toolbar.assignment-content":"
        X = pi a ( A )\\n
        Y = pi b ( b )\\n
        ( X ) ( Y )
        ","calc.editors.ra.toolbar.single-line-comment":"한 줄 주석","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- useful comment","calc.editors.ra.toolbar.multi-line-comment":"여러 줄 주석","calc.editors.ra.toolbar.multi-line-comment-content":"/* this is a very,
        very long comment */

        π a, b A","calc.editors.ra.toolbar.inline-relation":"인라인-릴레이션","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
        a:string, b:number, X.c:date
        a, 1, 1970-01-01
        }
        )","calc.editors.ra.toolbar.inline-relation-editor":"인라인-릴레이션 (에디터)","calc.editors.ra.toolbar.inline-relation-editor-content":"create a new inline-relation using a built in editor","calc.editors.ra.toolbar.insert-date":"날짜 삽입","calc.editors.ra.toolbar.insert-date-content":"σ a < date(\'1970-01-01\') ( A )","calc.editors.ra.toolbar.autoreplace-operators.title":"operator replacement","calc.editors.ra.toolbar.autoreplace-operators.header":"automatically replace operators","calc.editors.ra.toolbar.autoreplace-operators.none":"no replacement","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"pi => π","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"π => pi","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"쿼리 실행","calc.editors.sql.button-execute-selection":"셀렉션 실행","calc.editors.sql.button-download":"다운로드","calc.editors.sql.toolbar.select":"select 문","calc.editors.sql.toolbar.select-content":"

        SELECT * FROM A

        SELECT a, A.b, A.c FROM A
        ","calc.editors.sql.toolbar.from":"from 문","calc.editors.sql.toolbar.from-content":"
        SELECT *
        FROM A, B as b
        INNER JOIN C NATURAL
        ","calc.editors.sql.toolbar.where":"where 문","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
        where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"group by 문","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
        FROM A
        GROUP BY a","calc.editors.sql.toolbar.having":"having 문","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
        FROM A
        GROUP BY a
        having sum > 10","calc.editors.sql.toolbar.order-by":"order by 문","calc.editors.sql.toolbar.order-by-content":"

        SELECT * FROM A ORDER BY a asc, b desc

        SELECT * FROM A ORDER BY 1, 2, 3
        ","calc.editors.sql.toolbar.limit":"limit 문","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
        LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"insert date","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Result","calc.result.modal.close":"Close","calc.editors.ra.inline-editor.title":"Relation Editor","calc.editors.ra.inline-editor.button-download-csv":"Download CSV","calc.editors.ra.inline-editor.button-upload-csv":"upload CSV","calc.editors.ra.inline-editor.button-cancel":"Cancel","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Name","calc.editors.ra.inline-editor.row-type":"Type","calc.editors.ra.inline-editor.input-relation-name":"Relation Name","calc.navigation.imprint":"Imprint"}')},"./src/locales/pt.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"nome de variável duplicado: {{name}}","db.messages.parser.error-invalid-date-format":"\\"{{str}}\\" não é uma data válida; formato esperado: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":"cabeçalho duplicado {{name}}","db.messages.parser.error-group-unknown-header":"cabeçalho desconhecido {{name}}","db.messages.parser.error-group-header-name-missing":"o nome do grupo está faltando (group: ....)","db.messages.parser.error-group-header-name-empty":"o nome do grupo não pode ser vazio","db.messages.parser.error-group-non-unique-attribute":"atributo não único {{name}} na coluna {{index}}","db.messages.parser.error-group-non-unique-group-name":"nome de grupo duplicado: {{name}}","db.messages.parser.error-sql-string-use-single-quotes":"use aspas simples para strings (caracteres/texto)","db.messages.parser.error-sql-invalid-relation-name":"\\"{{str}}\\" não pode ser usado como nome de relação","db.messages.parser.error-sql-invalid-column-name":"\\"{{str}}\\" não pode ser usado como nome de coluna","db.messages.parser.error-sql-group-by-missing":"group by está faltando","db.messages.parser.error-sql-having-without-group-by":"“having” encontrado, mas sem \\"group by\\" ou agregação","db.messages.parser.error-sql-negative-limit":"o limite dado precisa ser >= 0","db.messages.parser.error-sqldump-invalid-column-number":"número inválido de colunas na linha {{line}}","db.messages.parser.error-sqldump-invalid-type":"tipo inválido na linha {{line}}","db.messages.parser.error-sqldump-insert-wrong-number-columns":"número de valores != número de colunas","db.messages.parser.error-valueexpr-like-operand-no-string":"operando direito de LIKE deve ser uma string literal","db.messages.exec.error-column-not-unique":"não foi possível adicionar a coluna \\"{{column}}\\" devido a ambiguidade","db.messages.exec.error-column-not-found-name":"não foi possível encontrar a coluna \\"{{column}}\\" no esquema {{schema}}","db.messages.exec.error-column-not-found-index":"índice da coluna \\"{{column}}\\" está fora do intervalo no esquema {{schema}}; índice começa em 1","db.messages.exec.error-column-ambiguous":"coluna\\"{{column}}\\" é ambígua em {{schema}}","db.messages.exec.error-column-index-out-of-range":"índice da coluna \\"{{column}}\\" está fora do intervalo no esquema {{schema}}; índice começa em 1","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"não foi possível definir o ”alias” da relação “{{alias}}” por causa da ambiguidade","db.messages.exec.error-could-not-rename-ambiguity":"não foi possível definir o novo nome \\"{{newName}}\\" para \\"{{oldName}}\\" devido a ambiguidade em {{schema}}","db.messages.exec.error-schema-a-not-part-of-schema-b":"esquema {{schemaA}} não é parte de {{schemaB}}","db.messages.exec.error-schemas-not-unifiable":"os esquemas não são unificáveis: os tipos ou o tamanho diferem: {{schemaA}} e {{schemaB}}","db.messages.exec.error-column-not-in-both-schemas":"coluna \\"{{column}}\\" não pode ser encontrada em ambos os esquemas de junção","db.messages.exec.error-condition-must-be-boolean":"condição deve ser uma expressão booleana","db.messages.exec.error-func-not-defined-for-column-type":"{{func}} não definida para o tipo {{colType}}","db.messages.exec.error-join-would-produce-non-unique-columns":"a junção resultaria em nomes de coluna não únicos","db.messages.exec.error-no-columns-match-alias-star":"nenhuma coluna corresponde a \\"{{alias}}.*\\"","db.messages.exec.error-datatype-not-specified-for-col":"tipo de dados para a coluna {{index}} (\\"{{column}}\\") não foi especificado","db.messages.exec.error-invalid-projection-error":"projeção inválida \\"{{argument}}\\": {{erro}}","db.messages.exec.error-function-expects-type":"a função \\"{{func}}\\" espera argumentos do tipo \\"{{expected}}\\" mas \\"{{given}}\\" foi dado","db.messages.exec.error-could-not-compare-different-types":"não foi possível comparar o valor se os tipos forem diferentes: {{typeA}}! = {{typeB}}","db.messages.exec.error-function-expects-arguments-of-same-type":"{{func}} espera que todos os argumentos sejam do mesmo tipo","db.messages.exec.error-case-when-condition-must-be-boolean":"a condição de um CASE WHEN deve ser do tipo booleano","db.messages.exec.error-case-when-expects-results-of-same-type":" CASE WHEN condição THEN resultado END espera que todos os resultados sejam do mesmo tipo","db.messages.exec.error-invalid-date-format":"\\"{{str}}\\" não é uma data válida; formato esperado: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"não foi possível encontrar relação \\"{{name}}\\"","db.messages.translate.warning-distinct-missing":"DISTINCT está faltando","db.messages.translate.warning-ignored-all-on-set-operators":"ignorou ALL na operação definida","db.messages.translate.error-variable-name-conflict":"conflito de nomes: o nome da relação \\"{{name}}\\" já existe","db.messages.translate.error-variable-cyclic-usage":"uso cíclico da variável \\"{{name}}\\" detectado","editor.codemirror-placeholder":"Digite sua consulta aqui\\n\\nAtalhos do teclado:\\n\\texecutar declaraçãot: [CTRL]+[RETURN]\\n\\texecutar seleção: [CTRL]+[SHIFT]+[RETURN]\\n\\tautocompletar: [CTRL]+[SPACE]\\n","editor.alert-message-headers.success":"Sucesso","editor.alert-message-headers.info":"Info","editor.alert-message-headers.warning":"Perigo","editor.alert-message-headers.error":"Erro","editor.inline-relation-editor.button-ok":"Ok","editor.inline-relation-editor.button-cancel":"Cancelar","editor.inline-relation-editor.placeholder-column-name-and-types":"columnName:type","editor.inline-relation-editor.enter-your-data":"por favor, insira seus dados","editor.inline-relation-editor.error-column-name-missing":"nome da coluna ausente na coluna {{index}}","editor.inline-relation-editor.error-wrong-quoted-string":"string não deve conter aspas simples e duplas","editor.error-no-query-found":"nenhuma consulta encontrada","editor.pegjs-error.or":"ou","editor.pegjs-error.no-input-found":"nenhuma entrada encontrada","editor.pegjs-error.end-of-input":"fim da entrada","editor.pegjs-error.expected-found":"esperado {{expected}}, mas {{found}} encontrado.","editor.error-at-line-x":"na linha {{line}}","calc.messages.error-query-missing":"nenhuma consulta encontrada","calc.messages.error-query-missing-assignments-found":"apenas atribuições encontradas; falta a consulta Ajuda - Tarefas ","calc.messages.gist-load-success":"gist carregado com sucesso","calc.menu.headline":"Carregue um Dataset","calc.menu.datasets":"Datasets","calc.menu.load-gist-headline":"Carregar Dataset armazenado em um gist","calc.menu.load-gist-button":"Carregar","calc.menu.load-gist-insert-placeholder":"gist ID","calc.menu.create-own-dataset-headline":"Crie seu próprio Dataset","calc.menu.create-own-dataset-text":"Você pode criar seu próprio conjunto de dados e compartilhá-lo com outras pessoas. Saiba mais sobre isso no ","calc.menu.create-own-dataset-text-link":"Tutorial de manutenção","calc.menu.create-own-dataset-button-new":"Criar novo Dataset","calc.menu.create-own-dataset-button-modify":"Modificar Dataset","calc.navigation.take-a-tour":"Faça um Tour","calc.navigation.feedback":"Feedback","calc.navigation.help":"Ajuda","calc.navigation.calc":"Calcular","calc.navigation.language":"Linguagem","calc.maintainer-groups.misc":"Diversos","calc.maintainer-groups.temp":"Temporário","calc.maintainer-groups.uibk":"University of Innsbruck","calc.maintainer-groups.saarland":"University of Saarland","calc.editors.button-history":"Histórico","calc.editors.insert-relation-title":"Inserir","calc.editors.insert-relation-tooltip":"Inserir relação ou nomes de coluna","calc.editors.group.tab-name":"Editor de Grupo","calc.editors.group.tab-name-short":"EG","calc.editors.group.toolbar.import-sql":"Importar SQL-dump","calc.editors.group.toolbar.import-sql-content":"Importar SQL-dump","calc.editors.group.toolbar.add-new-relation":"+ nova relação","calc.editors.group.toolbar.add-new-relation-content":"Abrir editor de relações","calc.editors.group.button-download":"Download","calc.editors.group.button-exec":"Visualizar","calc.editors.group.button-use":"Use Grupo no Editor","calc.editors.group.button-use_plural":"Use o primeiro Grupo no Editor","calc.editors.group.sql-import-group-name-placeholder":"Nome do grupo (importado de SQL)","calc.editors.group.new-group-example-group":"– este é um exemplo\\n\\ngroup: nomeDoNovoGrupo \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\texemplo, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"Importar SQL-dump","calc.editors.group.modal-sqldump.button-close":"Fechar","calc.editors.group.modal-sqldump.button-cancel":"Cancelar","calc.editors.group.modal-sqldump.button-import-sql":"Importar SQL","calc.editors.group.modal-sqldump.description":"Coloque seu SQL-Dump aqui para criar um grupo.","calc.editors.ra.tab-name":"Álgebra Relacional","calc.editors.ra.tab-name-short":"AlgRel","calc.editors.ra.button-execute-query":"Executar consulta","calc.editors.ra.button-execute-selection":"Executar seleção","calc.editors.ra.button-download":"Download","calc.editors.ra.toolbar.projection":"Projeção","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
        pi a, b A","calc.editors.ra.toolbar.selection":"Seleção","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
        sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"renomear relação / renomear colunas","calc.editors.ra.toolbar.rename-content":"
        σ x.a > 1 ( ρ x ( A ) )
        \\n
        σ A.y > 2 ( rho ya ( A ) )
        ","calc.editors.ra.toolbar.right-arrow":"flecha derecha","calc.editors.ra.toolbar.rename-columns-operator":"operador renomear colunas","calc.editors.ra.toolbar.rename-columns-operator-content":"
        σ A.y > 2 ( ρ ya ( A ) )
        ","calc.editors.ra.toolbar.orderBy":"ordenar (order by)","calc.editors.ra.toolbar.orderBy-content":"
        τ a asc, [2] desc ( A )
        tau a asc, [2] desc ( A )
        ","calc.editors.ra.toolbar.groupBy":"agrupar (group by)","calc.editors.ra.toolbar.groupBy-content":"
        γ a, b; count(c)→c ( A )
        \\n
        gamma count(a)->x, sum(b)->y ( A )
        ","calc.editors.ra.toolbar.and":"e","calc.editors.ra.toolbar.and-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.xor":"ou exclusivo (xor)","calc.editors.ra.toolbar.xor-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.or":"ou","calc.editors.ra.toolbar.or-content":"
        σ a < b b c ( A )
        ","calc.editors.ra.toolbar.not":"não","calc.editors.ra.toolbar.not-content":"
        &sigma","calc.editors.ra.toolbar.equals":"igual","calc.editors.ra.toolbar.equals-content":"
        &sigma","calc.editors.ra.toolbar.not-equals":"não igual","calc.editors.ra.toolbar.not-equals-content":"
        &sigma","calc.editors.ra.toolbar.greater-or-equals":"maior ou igual","calc.editors.ra.toolbar.greater-or-equals-content":"
        &sigma","calc.editors.ra.toolbar.lesser-or-equals":"menor ou igual","calc.editors.ra.toolbar.lesser-or-equals-content":"
        &sigma","calc.editors.ra.toolbar.intersect":"intersecção","calc.editors.ra.toolbar.intersect-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.union":"união","calc.editors.ra.toolbar.union-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.division":"divisão","calc.editors.ra.toolbar.division-content":"
        ( A ) ÷ ( B )
        ","calc.editors.ra.toolbar.subtraction":"subtração","calc.editors.ra.toolbar.subtraction-content":"
        ( A ) - ( B )
        \\n
        ( A ) \\n ( B )
        ","calc.editors.ra.toolbar.cross-join":"junção cruzada (cross join)","calc.editors.ra.toolbar.cross-join-content":"
        ( A ) ( B )
        ","calc.editors.ra.toolbar.natural-join":"natural join / θ-join","calc.editors.ra.toolbar.natural-join-content":"
        ( A ) ( B )
        \\n
        ( A ) ⋈ A.a ≥ B.a ( B )
        ","calc.editors.ra.toolbar.left-outer-join":"left outer join","calc.editors.ra.toolbar.left-outer-join-content":"
        ( A ) ⟕ ( B )
        \\n
        ( A ) ⟕ A.a < B.a ( B )
        \\n","calc.editors.ra.toolbar.right-outer-join":"right outer join","calc.editors.ra.toolbar.right-outer-join-content":"
        ( A ) ⟖ ( B )
        \\n
        ( A ) ⟖ A.a < B.a ( B )
        \\n","calc.editors.ra.toolbar.full-outer-join":"full outer join","calc.editors.ra.toolbar.full-outer-join-content":"
        ( A ) ⟗ ( B )
        \\n
        ( A ) ⟗ A.a != B.a ( B )
        ","calc.editors.ra.toolbar.left-semi-join":"left semi join","calc.editors.ra.toolbar.left-semi-join-content":"
        ( A ) ⋉ ( B )
        ","calc.editors.ra.toolbar.right-semi-join":"right semi join","calc.editors.ra.toolbar.right-semi-join-content":"
        ( A ) ⋊ ( B )
        ","calc.editors.ra.toolbar.anti-join":"anti join","calc.editors.ra.toolbar.anti-join-content":"
        ( A ) ▷ ( B )
        ","calc.editors.ra.toolbar.assignment":"atribuição","calc.editors.ra.toolbar.assignment-content":"
        X = pi a ( A )\\n
        Y = pi b ( b )\\n
        ( X ) ( Y )
        ","calc.editors.ra.toolbar.single-line-comment":"comentário em linha","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- comentário útil","calc.editors.ra.toolbar.multi-line-comment":"comentário multilinha","calc.editors.ra.toolbar.multi-line-comment-content":"/* este é um comentário longo,
        muito longo*/

        π a, b A","calc.editors.ra.toolbar.inline-relation":"relação aninhada","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
        a:string, b:number, X.c:date
        a, 1, 1970-01-01
        }
        )","calc.editors.ra.toolbar.inline-relation-editor":"relação aninhada (editor)","calc.editors.ra.toolbar.inline-relation-editor-content":"criar uma nova relação aninhada usando o editor","calc.editors.ra.toolbar.insert-date":"inserir data","calc.editors.ra.toolbar.insert-date-content":"σ a < date(\'1970-01-01\') ( A )","calc.editors.ra.toolbar.autoreplace-operators.title":"substituição de operador","calc.editors.ra.toolbar.autoreplace-operators.header":"substituir operadores automaticamente","calc.editors.ra.toolbar.autoreplace-operators.none":"sem substituição","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"pi => π","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"π => pi","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"Executar consulta","calc.editors.sql.button-execute-selection":"Executar seleção","calc.editors.sql.button-download":"Download","calc.editors.sql.toolbar.select":"cláusula select","calc.editors.sql.toolbar.select-content":"

        SELECT * FROM A

        SELECT a, A.b, A.c FROM A
        ","calc.editors.sql.toolbar.from":"cláusula from","calc.editors.sql.toolbar.from-content":"
        SELECT *
        FROM A, B as b
        INNER JOIN C NATURAL
        ","calc.editors.sql.toolbar.where":"cláusula where","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
        where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"cláusula group by","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
        FROM A
        GROUP BY a","calc.editors.sql.toolbar.having":"cáusula having clause","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
        FROM A
        GROUP BY a
        having sum > 10","calc.editors.sql.toolbar.order-by":"cláusula order by","calc.editors.sql.toolbar.order-by-content":"

        SELECT * FROM A ORDER BY a asc, b desc

        SELECT * FROM A ORDER BY 1, 2, 3
        ","calc.editors.sql.toolbar.limit":"cláusula limit","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
        LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"inserir data","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Resultado","calc.result.modal.close":"Fechar","calc.editors.ra.inline-editor.title":"Editor de Relação","calc.editors.ra.inline-editor.button-download-csv":"Download CSV","calc.editors.ra.inline-editor.button-upload-csv":"Upload CSV","calc.editors.ra.inline-editor.button-cancel":"Cancelar","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Nome","calc.editors.ra.inline-editor.row-type":"Tipo","calc.editors.ra.inline-editor.input-relation-name":"Nome da Relação","calc.navigation.imprint":"Impressão"}')},0:function(e,t,n){e.exports=n("./src/calc2/calculator.entry.tsx")}}); \ No newline at end of file + */var r,o,i,a,s;if("undefined"==typeof window||"function"!=typeof MessageChannel){var l=null,u=null,c=function(){if(null!==l)try{var e=t.unstable_now();l(!0,e),l=null}catch(e){throw setTimeout(c,0),e}},d=Date.now();t.unstable_now=function(){return Date.now()-d},r=function(e){null!==l?setTimeout(r,0,e):(l=e,setTimeout(c,0))},o=function(e,t){u=setTimeout(e,t)},i=function(){clearTimeout(u)},a=function(){return!1},s=t.unstable_forceFrameRate=function(){}}else{var h=window.performance,f=window.Date,m=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var g=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof g&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof h&&"function"==typeof h.now)t.unstable_now=function(){return h.now()};else{var y=f.now();t.unstable_now=function(){return f.now()-y}}var b=!1,v=null,_=-1,w=5,E=0;a=function(){return t.unstable_now()>=E},s=function(){},t.unstable_forceFrameRate=function(e){0>e||125>>1,o=e[r];if(!(void 0!==o&&0T(a,n))void 0!==l&&0>T(l,a)?(e[r]=l,e[s]=n,r=s):(e[r]=a,e[i]=n,r=i);else{if(!(void 0!==l&&0>T(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function T(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var M=[],x=[],R=1,L=null,A=3,D=!1,N=!1,P=!1;function I(e){for(var t=O(x);null!==t;){if(null===t.callback)k(x);else{if(!(t.startTime<=e))break;k(x),t.sortIndex=t.expirationTime,S(M,t)}t=O(x)}}function H(e){if(P=!1,I(e),!N)if(null!==O(M))N=!0,r(Y);else{var t=O(x);null!==t&&o(H,t.startTime-e)}}function Y(e,n){N=!1,P&&(P=!1,i()),D=!0;var r=A;try{for(I(n),L=O(M);null!==L&&(!(L.expirationTime>n)||e&&!a());){var s=L.callback;if(null!==s){L.callback=null,A=L.priorityLevel;var l=s(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===O(M)&&k(M),I(n)}else k(M);L=O(M)}if(null!==L)var u=!0;else{var c=O(x);null!==c&&o(H,c.startTime-n),u=!1}return u}finally{L=null,A=r,D=!1}}function F(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var W=s;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){N||D||(N=!0,r(Y))},t.unstable_getCurrentPriorityLevel=function(){return A},t.unstable_getFirstCallbackNode=function(){return O(M)},t.unstable_next=function(e){switch(A){case 1:case 2:case 3:var t=3;break;default:t=A}var n=A;A=t;try{return e()}finally{A=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=W,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=A;A=e;try{return t()}finally{A=n}},t.unstable_scheduleCallback=function(e,n,a){var s=t.unstable_now();if("object"==typeof a&&null!==a){var l=a.delay;l="number"==typeof l&&0s?(e.sortIndex=l,S(x,e),null===O(M)&&e===O(x)&&(P?i():P=!0,o(H,l-s))):(e.sortIndex=a,S(M,e),N||D||(N=!0,r(Y))),e},t.unstable_shouldYield=function(){var e=t.unstable_now();I(e);var n=O(M);return n!==L&&null!==L&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime{if("string"!=typeof e||"string"!=typeof t)throw new TypeError("Expected the arguments to be of type `string`");if(""===t)return[e];const n=e.indexOf(t);return-1===n?[e]:[e.slice(0,n),e.slice(n+t.length)]}},"./node_modules/strict-uri-encode/index.js":function(e,t,n){"use strict";e.exports=e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)},"./node_modules/symbol-observable/es/index.js":function(e,t,n){"use strict";(function(e,r){var o,i=n("./node_modules/symbol-observable/es/ponyfill.js");o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:r;var a=Object(i.a)(o);t.a=a}).call(this,n("./node_modules/webpack/buildin/global.js"),n("./node_modules/webpack/buildin/harmony-module.js")(e))},"./node_modules/symbol-observable/es/ponyfill.js":function(e,t,n){"use strict";function r(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}n.d(t,"a",(function(){return r}))},"./node_modules/timers-browserify/main.js":function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n("./node_modules/setimmediate/setImmediate.js"),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n("./node_modules/webpack/buildin/global.js"))},"./node_modules/warning/warning.js":function(e,t,n){"use strict";var r=function(){};e.exports=r},"./node_modules/webpack/buildin/global.js":function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},"./node_modules/webpack/buildin/harmony-module.js":function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},"./node_modules/webpack/buildin/module.js":function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},"./src/calc2/calculator.entry.tsx":function(e,t,n){"use strict";n.r(t);var r=n("./src/calc2/i18n.tsx"),o=n("./src/calc2/utils/groupUtils.ts"),i=n("./node_modules/immutable/dist/immutable.es.js"),a=function(e){return"@@redux-saga/"+e},s=a("CANCEL_PROMISE"),l=a("CHANNEL_END"),u=a("IO"),c=a("MATCH"),d=a("MULTICAST"),h=a("SAGA_ACTION"),f=a("SELF_CANCELLATION"),m=a("TASK"),p=a("TASK_CANCEL"),g=a("TERMINATE"),y=a("LOCATION"),b=n("./node_modules/@babel/runtime/helpers/esm/extends.js"),v=function(e){return null==e},_=function(e){return null!=e},w=function(e){return"function"==typeof e},E=function(e){return"string"==typeof e},j=Array.isArray,C=function(e){return e&&w(e.then)},S=function(e){return e&&w(e.next)&&w(e.throw)},O=function e(t){return t&&(E(t)||M(t)||w(t)||j(t)&&t.every(e))},k=function(e){return e&&w(e.take)&&w(e.close)},T=function(e){return w(e)&&e.hasOwnProperty("toString")},M=function(e){return Boolean(e)&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype};var x=function(e){return function(){return e}}(!0),R=function(){};var L=function(e){return e};"function"==typeof Symbol&&Symbol.asyncIterator&&Symbol.asyncIterator;var A=function(e,t){Object(b.a)(e,t),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach((function(n){e[n]=t[n]}))};function D(e,t){var n=e.indexOf(t);n>=0&&e.splice(n,1)}function N(e){var t=!1;return function(){t||(t=!0,e())}}var P=function(e){throw e},I=function(e){return{value:e,done:!0}};function H(e,t,n){void 0===t&&(t=P),void 0===n&&(n="iterator");var r={meta:{name:n},next:e,throw:t,return:I,isSagaIterator:!0};return"undefined"!=typeof Symbol&&(r[Symbol.iterator]=function(){return r}),r}function Y(e,t){var n=t.sagaStack;console.error(e),console.error(n)}var F=function(e){return Array.apply(null,new Array(e))},W=function(e){return function(t){return e(Object.defineProperty(t,h,{value:!0}))}},B=function(e){return e===g},U=function(e){return e===p},z=function(e){return B(e)||U(e)};function V(e,t){var n=Object.keys(e),r=n.length;var o,i=0,a=j(e)?F(r):{},s={};return n.forEach((function(e){var n=function(n,s){o||(s||z(n)?(t.cancel(),t(n,s)):(a[e]=n,++i===r&&(o=!0,t(a))))};n.cancel=R,s[e]=n})),t.cancel=function(){o||(o=!0,n.forEach((function(e){return s[e].cancel()})))},s}function q(e){return{name:e.name||"anonymous",location:G(e)}}function G(e){return e[y]}function K(e,t){void 0===e&&(e=10);var n=new Array(e),r=0,o=0,i=0,a=function(t){n[o]=t,o=(o+1)%e,r++},s=function(){if(0!=r){var t=n[i];return n[i]=null,r--,i=(i+1)%e,t}},l=function(){for(var e=[];r;)e.push(s());return e};return{isEmpty:function(){return 0==r},put:function(s){var u;if(r1?t-1:0),r=1;r1?t-1:0),r=1;r2?n-2:0),o=2;oe.groupInfo.source===n&&e.groupInfo.id===r&&e.groupInfo.filename===o&&e.groupInfo.index===i);return a?Object.assign(Object.assign({},e),{current:Object.assign(Object.assign({},e.current),{group:a})}):(console.error("could not find group ",a),e)}case"GROUPS_LOAD_SUCCESS":{const{loadedGroups:n}=t;let r=e;for(const e of n)r=Object.assign(Object.assign({},r),{groups:r.groups.set(le(e),e)});return r}case"GROUP_SET_DRAFT":{let{draft:n}=t;n=Object.assign(Object.assign({},n),{isDraft:!0}),e=Object.assign(Object.assign({},e),{groups:e.groups.set(le(n),n),current:Object.assign(Object.assign({},e.current),{group:n})})}default:return e}}function le(e){const{source:t,id:n,filename:r,index:o}=e.groupInfo;return`${t}/${n}/${r}/${o}`}n("./node_modules/custom-event-polyfill/polyfill.js");var ue=n("./node_modules/react/index.js"),ce=n("./node_modules/react-dom/index.js"),de=n("./node_modules/react-hot-loader/index.js"),he=(n.p,n("./src/calc2/main.hot.tsx")),fe=n("./node_modules/redux/es/redux.js"),me=n("./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js");function pe(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e}var ge=pe,ye=[],be=0;function ve(e){try{Ee(),e()}finally{je()}}function _e(e){ye.push(e),be||(Ee(),Ce())}function we(e){try{return Ee(),e()}finally{Ce()}}function Ee(){be++}function je(){be--}function Ce(){var e;for(je();!be&&void 0!==(e=ye.shift());)ve(e)}var Se=function(e){return function(t){return e.some((function(e){return xe(e)(t)}))}},Oe=function(e){return function(t){return e(t)}},ke=function(e){return function(t){return t.type===String(e)}},Te=function(e){return function(t){return t.type===e}},Me=function(){return x};function xe(e){var t="*"===e?Me:E(e)?ke:j(e)?Se:T(e)?ke:w(e)?Oe:M(e)?Te:null;if(null===t)throw new Error("invalid pattern: "+e);return t(e)}var Re={type:l},Le=function(e){return e&&e.type===l};function Ae(e){void 0===e&&(e=X());var t=!1,n=[];return{take:function(r){t&&e.isEmpty()?r(Re):e.isEmpty()?(n.push(r),r.cancel=function(){D(n,r)}):r(e.take())},put:function(r){if(!t){if(0===n.length)return e.put(r);n.shift()(r)}},flush:function(n){t&&e.isEmpty()?n(Re):n(e.flush())},close:function(){if(!t){t=!0;var e=n;n=[];for(var r=0,o=e.length;r2?h-2:0),m=2;m2?n-2:0),o=2;o1?t-1:0),r=1;r!(e.groupInfo.source!==t||e.groupInfo.id!==n||!r||"first"!==r&&r.filename!==e.groupInfo.filename||!r||"first"!==r&&r.index!==e.groupInfo.index));if(s){const{source:e,id:t,filename:n,index:r}=s.groupInfo,o={type:"GROUP_SET_CURRENT",source:e,id:t,filename:n,index:r};yield Q(o)}else try{if("local"!==t&&"gist"!==t)throw new Error(`unsupported source-type ${t}`);const e=yield ee(o.b,t,n,i,a),s={type:"GROUPS_LOAD_SUCCESS",loadedGroups:e};if(yield Q(s),void 0!==r&&e.length>0){const{source:t,id:n,filename:r}=e[0].groupInfo,o={type:"GROUP_SET_CURRENT",source:t,id:n,filename:r,index:0};yield Q(o)}}catch(e){console.error("could not fetch group",e),window.alert("Could not fetch group!\nDefault group loaded.\n"+e)}}))})),ce.render(ue.createElement(de.AppContainer,null,ue.createElement(he.a,{store:et})),document.getElementById("root"));{const e={type:"SET_LOCALE",locale:r.c.language};et.dispatch(e)}for(const e of function(){const e=[{maintainerGroup:Object(r.d)("calc.maintainer-groups.misc"),maintainer:"",source:"local",id:"uibk"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.uibk"),maintainer:'mtschu',source:"gist",id:"2923a30a474fdcb46bee"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.uibk"),maintainer:'Wolfgang Gassler',source:"gist",id:"7d1871f79a8bcb4788de"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.karlsruhe"),maintainer:'Jan Stoess',source:"gist",id:"4f7866c17624ca9dfa85ed2482078be8"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.karlsruhe"),maintainer:'Jan Stoess',source:"gist",id:"a287f5ad991c08a74f55c06789c95508"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.saarland"),maintainer:'Jens Dittrich',source:"gist",id:"41cf5ce652756d9331eec7562644e074"},{maintainerGroup:Object(r.d)("calc.maintainer-groups.saarland"),maintainer:'Jens Dittrich',source:"gist",id:"c306ecf21c6e6d175508d3ac6b4355e7"}];let t=!0;return e.map(({source:e,id:n,maintainer:r,maintainerGroup:o})=>{const i={type:"GROUPS_LOAD_REQUEST",source:e,id:n,setCurrent:t?"first":void 0,maintainer:r,maintainerGroup:o};return t=!1,i})}())et.dispatch(e)},"./src/calc2/components/calculator.scss":function(e,t,n){},"./src/calc2/components/dropdownList.tsx":function(e,t,n){"use strict";n.d(t,"a",(function(){return h}));var r=n("./node_modules/react/index.js"),o=n("./node_modules/reactstrap/lib/Dropdown.js"),i=n.n(o),a=n("./node_modules/reactstrap/lib/DropdownItem.js"),s=n.n(a),l=n("./node_modules/reactstrap/lib/DropdownMenu.js"),u=n.n(l),c=n("./node_modules/reactstrap/lib/DropdownToggle.js"),d=n.n(c);class h extends r.Component{constructor(e){super(e),this.id=`dropdown-${Math.random().toString(36).substr(2,10)}`,this.state={isOpen:!1},this.toggle=this.toggle.bind(this)}toggle(){this.setState({isOpen:!this.state.isOpen})}render(){const{label:e,elements:t,value:n,onChange:o,disabled:a=!1}=this.props,{isOpen:l}=this.state;return r.createElement(i.a,{isOpen:l,toggle:this.toggle},r.createElement(d.a,{color:"",disabled:a||0===t.length},e),r.createElement(u.a,null,t.map((e,t)=>"separator"===e.type?r.createElement(s.a,{key:t,divider:!0}):"header"===e.type?r.createElement(s.a,{key:t,header:!0},e.label):r.createElement(s.a,{key:t,onClick:t=>{t.preventDefault(),o&&o(e.value)},active:e.active||e.value===n},e.label))))}}},"./src/calc2/components/editorBase.tsx":function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return k})),n.d(t,"c",(function(){return T}));var r=n("./node_modules/@fortawesome/free-solid-svg-icons/index.es.js"),o=n("./node_modules/@fortawesome/react-fontawesome/index.es.js"),i=n("./src/calc2/components/dropdownList.tsx"),a=n("./src/calc2/components/toolbar.tsx"),s=n("./src/calc2/i18n.tsx"),l=n("./node_modules/classnames/index.js"),u=n("./node_modules/codemirror/lib/codemirror.js"),c=(n("./node_modules/codemirror/addon/hint/show-hint.js"),n("./src/db/exec/RANode.ts")),d=n("./src/db/translate/utils.ts"),h=n("./node_modules/react/index.js"),f=n("./node_modules/react-dom/index.js"),m=n("./node_modules/react-toastify/esm/react-toastify.js"),p=n("./node_modules/reactstrap/es/Button.js"),g=n("./node_modules/reactstrap/es/Modal.js"),y=n("./node_modules/reactstrap/es/ModalHeader.js"),b=n("./node_modules/reactstrap/es/ModalBody.js"),v=n("./node_modules/reactstrap/es/ModalFooter.js"),_=n("./node_modules/reactstrap/es/Input.js"),w=n("./node_modules/@handsontable/react/es/react-handsontable.js");n("./node_modules/codemirror/lib/codemirror.css"),n("./node_modules/codemirror/theme/eclipse.css"),n("./node_modules/codemirror/addon/hint/show-hint.css"),n("./node_modules/codemirror/addon/lint/lint.js"),n("./node_modules/codemirror/addon/lint/lint.css"),n("./node_modules/codemirror/addon/display/placeholder.js"),n("./node_modules/codemirror/addon/display/autorefresh.js"),n("./node_modules/codemirror/mode/sql/sql.js"),n("./node_modules/handsontable/dist/handsontable.full.css"),u.defineMode("relalg",(function(){const e=["pi","sigma","rho","tau","<-","->","intersect","union","except","/","-","\\\\","x","cross join","join","inner join","natural join","left join","right join","left outer join","right outer join","left semi join","right semi join","anti join","anti semi join","and","or","xor"],t=["π","σ","ρ","τ","←","→","∩","∪","÷","-","⨯","⨝","⟕","⟖","⟗","⋉","⋊","▷"],n=["<-","->",">=","<=","=","∧","∨","⊻","⊕","≠","=","¬",">","<","≥","≤"],r=(e,t,n,r="")=>{for(let o=0;o({inBlockComment:!1}),token:(o,i)=>i.inBlockComment?(o.match(/.*?\*\//,!0)?i.inBlockComment=!1:o.match(/.*/,!0),"comment"):o.match(/\/\*.*?\*\//,!0)?"comment":!i.inBlockComment&&o.match(/^\/\*.*/,!0)?(i.inBlockComment=!0,"comment"):i.inInlineRelation?(o.match(/.*?}/,!0)?i.inInlineRelation=!1:o.match(/.*/,!0),"inlineRelation"):o.match(/^{/,!0)?(i.inInlineRelation=!0,"inlineRelation"):o.match(/^--[\t ]/,!0)?(o.skipToEnd(),"comment"):o.match(/^\/\*.*?$/,!0)?"comment":r(o,t,!0)?"keyword math":r(o,e,!0,"([\\(\\)[\\]{\\}, \\.\\t]|$)")?"keyword":r(o,n,!0)?"operator math":o.match(/^\[[0-9]+]/,!0)?"attribute":o.match(/^[0-9]+(\.[0-9]+)?/,!0)?"number":o.match(/\^'[^']*'/i,!0)?"string":o.match(/\^[a-z]+\.[a-z]*/i,!0)?"qualified-column":o.match(/^[\(\)\[]\{},]/i,!0)?"bracket":o.match(/^[a-z][a-z0-9\.]*/i,!0)?"word":(o.next(),"else")}}));const E=e=>{const{editor:t}=e,{type:n,message:r,position:o}=e.alert,i={error:Object(s.d)("editor.alert-message-headers.error"),warning:Object(s.d)("editor.alert-message-headers.warning")}[n];return h.createElement("div",{className:l("alert ",{"alert-danger":"error"===n,"alert-warning":"warning"===n})},o?h.createElement("strong",null,i,": ",h.createElement("a",{onClick:e=>{if(t)return t.focus(),t.getDoc().setCursor(o),t.scrollIntoView(null,42),e.preventDefault(),!1;console.warn("editor not initialized yet")},href:"#"},Object(s.d)("editor.error-at-line-x",{line:o.line+1})),": ",r):h.createElement("strong",null,i,": ",r))};class j{constructor(){this.name="",this.type="",this.data=[]}}class C{constructor(){this.name="",this.attributes=[]}toString(e){let t="";t=!1===e?this.name+" = {\n":"{ ";const n=new Array;for(let e=0;e<1+this.attributes[0].data.length;e++)n.push("");return this.attributes.forEach((e,t)=>{t>0&&(n[0]+=", "),n[0]+=e.name,e.data.forEach((r,o)=>{t>0&&(n[o+1]+=", "),"number"===e.type?n[o+1]+=r:n[o+1]+="'"+r+"'"})}),t+=n.join("\n"),t+="\n}\n",t}fromTableData(e){if(null==e)return;const t=new Array;t.push([]),t.push([]),e.columns.forEach(e=>{t[0].push(e.name),t[1].push(e.type)}),e.rows.forEach(e=>{t.push(e)}),this.fromData(t)}toData(){const e=new Array;if(0===this.attributes.length)return[[]];for(let t=0;t<2+this.attributes[0].data.length;t++)e.push([]);return this.attributes.forEach(t=>{e[0].push(t.name),e[1].push(t.type),t.data.forEach((t,n)=>{e[n+2].push(t)})}),e}fromData(e){for(let t=0;t{const r=new Array,i=e.split(t);-1===o&&(o=i.length),i.length===o&&(i.forEach(e=>{r.push(e)}),n.push(r))}),this.fromData(n)}toCSV(e=";"){let t="";return this.toData().forEach(n=>{t+=n.join(e)+"\n"}),t}}const S="CodeMirror-table-edit-markers";class O extends h.Component{constructor(e){super(e);const t=Object.assign({theme:"eclipse",smartdent:!0,tabSize:2,indentWithTabs:!0,lineNumbers:!0,lineWrapping:!0,matchBrackets:!0,autoCloseBrackets:!0,smartIndent:!0,autofocus:!1,autoRefresh:!0,enableInlineRelationEditor:!0,gutters:["CodeMirror-lint-markers",S],mode:e.mode,viewportMargin:1/0,extraKeys:{"Shift-Tab":"indentLess","Ctrl-Enter":e=>{this.exec(!1)},"Shift-Ctrl-Enter":e=>{const{editor:t}=this.state;t&&t.getDoc().somethingSelected()&&this.exec(!0)},"Ctrl-S":e=>{this.downloadEditorText()},"Ctrl-Space":e=>{u.showHint(e,e=>this.genericHint(e),{closeOnUnfocus:!0})}},placeholder:Object(s.d)("editor.codemirror-placeholder"),textChange:null},e.codeMirrorOptions);this.hotTableSettings={colHeaders:!1,rowHeaders:function(e){return 0===e?Object(s.d)("calc.editors.ra.inline-editor.row-name"):1===e?Object(s.d)("calc.editors.ra.inline-editor.row-type"):e-1},height:function(){return.7*document.body.clientHeight},fixedRowsTop:2,minRows:2,minCols:1,minSpareRows:1,minSpareCols:1,colWidths:"100px",contextMenu:!0,cells:function(e,t){return 1===e?{type:"dropdown",source:["number","string","date"]}:{}}},this.state={editor:null,codeMirrorOptions:t,history:[],isSelectionSelected:!1,execSuccessful:!1,execErrors:[],isExecutionDisabled:!1,execResult:null,modal:!1,inlineRelationModal:!1,relationEditorName:"",replSelStart:null,replSelEnd:null},this.toggle=this.toggle.bind(this),this.inlineRelationEditorOk=this.inlineRelationEditorOk.bind(this),this.toggleInlineRelationEditor=this.toggleInlineRelationEditor.bind(this),this.inlineRelationEditorClose=this.inlineRelationEditorClose.bind(this),this.inlineRelationEditorUpload=this.inlineRelationEditorUpload.bind(this),this.inlineRelationEditorDownload=this.inlineRelationEditorDownload.bind(this),this.hinterCache={hints:[],hintsFromLinter:[],changed:!0},this.linter=this.linter.bind(this),this.exec=this.exec.bind(this),this.applyHistory=this.applyHistory.bind(this),this.downloadEditorText=this.downloadEditorText.bind(this),this.uploadCSVRef=h.createRef()}getInlineRelationData(){return this.hotTableSettings.data}setInlineRelationData(e){this.hotTableSettings.datta=e}inlineRelationEditorOpen(e){const t=new C,{editor:n}=this.state;if(n){let r=n.getDoc().getCursor(),o=n.getDoc().getCursor();e?(t.name=e.assignmentName,t.fromTableData(e.content),r=u.Pos(e.line-1,0),o=u.Pos(e.end.line,e.end.column)):(t.attributes.push(new j),t.attributes.push(new j)),this.setState({inlineRelationModal:!0,relationEditorName:t.name,replSelStart:r,replSelEnd:o},()=>{this.hotTableSettings.data=t.toData()})}}inlineRelationEditorOk(){const e=new C;e.name=this.state.relationEditorName,e.fromData(this.getInlineRelationData());const{editor:t,replSelStart:n,replSelEnd:r}=this.state;t&&t.getDoc().replaceRange(e.toString("relalg"===this.props.tab),n,r),this.inlineRelationEditorClose()}inlineRelationEditorClose(){this.setState({inlineRelationModal:!1})}inlineRelationEditorUpload(e){const t=e.target.files;if(t.length>0){const e=new FileReader;e.onload=e=>{const n=e.target.result,r=new C;r.fromCSV(n),r.name=t[0].name.replace(".csv",""),this.setInlineRelationData(r.toData())},e.readAsText(t[0])}}inlineRelationEditorDownload(){const e=new C;e.fromData(this.getInlineRelationData());const t=e.toCSV(),n=(document.createElement("a"),document.createElement("a"));n.href=window.URL.createObjectURL(new Blob([t],{type:"text/csv"})),n.download=this.state.relationEditorName+".csv",n.click()}componentDidMount(){const e=Object(f.findDOMNode)(this).querySelector("textarea");if(!e)throw new Error("could not fid textarea");const t=u.fromTextArea(e,this.state.codeMirrorOptions);this.setState({editor:t,relationEditorName:""}),null!=this.props.linterFunction&&t.setOption("lint",{getAnnotations:this.linter}),t.on("cursorActivity",e=>{this.setState({isSelectionSelected:e.getDoc().somethingSelected()})}),t.on("change",e=>{this.props.textChange(e)})}render(){const{execErrors:e,isSelectionSelected:t,editor:n,history:u,execSuccessful:c,isExecutionDisabled:d,execResult:f}=this.state,{toolbar:m,disableHistory:j=!1,execButtonLabel:C}=this.props;return h.createElement("div",null,h.createElement("div",{className:"editor-base"},h.createElement(a.a,{groups:m}),h.createElement("textarea",null),h.createElement("div",{className:"exec-errors"},e.map((e,t)=>h.createElement(E,{key:t,alert:e,editor:n}))),h.createElement("div",{className:"input-buttons"},h.createElement("button",{type:"button",disabled:d,className:l("btn btn-primary exec-button selection",{"selection-selected":t,"btn-danger":e.length>0,"btn-success":c,disabled:d}),onClick:()=>{n?this.exec(n.getDoc().somethingSelected()):console.warn("editor not initialized yet")}},C?h.createElement("span",null,h.createElement(o.a,{icon:r.o})," ",h.createElement(s.b,{id:C})):h.createElement(h.Fragment,null,h.createElement("span",{className:"glyphicon glyphicon-play"})," ",h.createElement("span",{className:"query"},h.createElement(o.a,{icon:r.n})," ",h.createElement(s.b,{id:"calc.editors.ra.button-execute-query"})),h.createElement("span",{className:"selection"},h.createElement(s.b,{id:"calc.editors.ra.button-execute-selection"})))),h.createElement("div",{style:{float:"right"}},h.createElement(p.a,{color:"Link",type:"button",className:"hideOnSM",onClick:this.downloadEditorText},h.createElement(o.a,{icon:r.h})," ",h.createElement("span",{className:"hideOnSM"},h.createElement(s.b,{id:"calc.editors.ra.button-download"}))),j?null:h.createElement("div",{className:"btn-group history-container"},h.createElement(i.a,{label:h.createElement("span",null,h.createElement(o.a,{icon:r.k})," ",h.createElement("span",{className:"hideOnSM"},h.createElement(s.b,{id:"calc.editors.button-history"}))),elements:u.map(e=>({label:h.createElement(h.Fragment,null,h.createElement("small",{className:"muted text-muted"},e.time.toLocaleTimeString()),h.createElement("div",null,e.code)),value:e})),onChange:this.applyHistory})))),h.createElement("div",{className:"exec-result"},f),h.createElement(g.a,{isOpen:this.state.modal,toggle:this.toggle,className:"showOnSM"},h.createElement(y.a,{toggle:this.toggle},Object(s.d)("calc.result.modal.title")),h.createElement(b.a,null,h.createElement("div",null,f)),h.createElement(v.a,null,h.createElement("span",null),h.createElement(p.a,{color:"secondary",onClick:this.toggle},Object(s.d)("calc.result.modal.close")))),h.createElement(g.a,{isOpen:this.state.inlineRelationModal,toggle:this.toggleInlineRelationEditor},h.createElement(y.a,{toggle:this.toggleInlineRelationEditor},Object(s.d)("calc.editors.ra.inline-editor.title")),h.createElement(b.a,null,h.createElement("div",null,"group"===this.props.tab?h.createElement("div",null,h.createElement(_.a,{placeholder:Object(s.d)("calc.editors.ra.inline-editor.input-relation-name"),value:this.state.relationEditorName,onChange:e=>{this.setState({relationEditorName:e.target.value})}}),h.createElement("br",null)):null,h.createElement(w.a,{settings:this.hotTableSettings,licenseKey:"non-commercial-and-evaluation"}))),h.createElement(v.a,null,h.createElement(p.a,{color:"light",onClick:this.inlineRelationEditorDownload},h.createElement(o.a,{icon:r.h})," ",Object(s.d)("calc.editors.ra.inline-editor.button-download-csv")),h.createElement(p.a,{color:"light",onClick:()=>{var e;null===(e=this.uploadCSVRef.current)||void 0===e||e.click()}},h.createElement(o.a,{icon:r.s})," ",Object(s.d)("calc.editors.ra.inline-editor.button-upload-csv")),h.createElement("input",{className:"hidden",ref:this.uploadCSVRef,onChange:this.inlineRelationEditorUpload,type:"file"}),h.createElement("span",{className:"flexSpan"}),h.createElement(p.a,{color:"primary",onClick:this.inlineRelationEditorOk},h.createElement(o.a,{icon:r.e})," ",Object(s.d)("calc.editors.ra.inline-editor.button-ok")),h.createElement(p.a,{color:"secondary",onClick:this.inlineRelationEditorClose},h.createElement(o.a,{icon:r.r})," ",Object(s.d)("calc.editors.ra.inline-editor.button-cancel"))))))}isMobile(){return window.innerWidth<=992}toggleInlineRelationEditor(){this.setState({inlineRelationModal:!this.state.inlineRelationModal})}toggle(){this.isMobile()&&this.setState({modal:!this.state.modal})}applyHistory(e){this.replaceAll(e.code)}forceLinterRun(){const{editor:e}=this.state;if(!e)return void console.warn("editor not initialized yet");const t=e.getValue();e.setValue(""),e.setValue(t)}historyAddEntry(e){const{historyMaxEntries:t=10,historyMaxLabelLength:n=20}=this.props,r={time:new Date,label:e.length>n?e.substr(0,n-4)+" ...":e,code:e};this.setState({history:[r,...this.state.history].slice(-t)})}clearExecutionAlerts(){this.state.execErrors.splice(0,this.state.execErrors.length),m.b.dismiss()}addExecutionWarning(e,t){this._addExecutionAlert(e,t,"warning"),this.isMobile()&&m.b.warn(e,{className:"fancyToastWarning"})}addExecutionError(e,t){this._addExecutionAlert(e,t,"error"),this.isMobile()&&m.b.error(e,{className:"fancyToastError"})}_addExecutionAlert(e,t,n){this.isMobile();const{editor:r}=this.state,o={type:n,message:e,position:t},i=this.state.execErrors;i.push(o),this.setState({execErrors:i})}setText(e,t){const{editor:n}=this.state;n?("selection"===t?n.getDoc().replaceSelection(e,"end"):n.setValue(e),this.clearExecutionAlerts(),this.setState({execSuccessful:!1})):console.warn("editor not initialized yet")}getText(){const{editor:e}=this.state;if(e)return e.getValue();console.warn("editor not initialized yet")}focus(){const{editor:e}=this.state;e?e.focus():console.warn("editor not initialized yet")}refresh(){const{editor:e}=this.state;e?e.refresh():console.warn("editor not initialized yet")}downloadEditorText(){let e="query";const{editor:t}=this.state;if(!t)return void console.warn("editor not initialized yet");switch(t.getOption("mode")){case"sql":case"text/x-mysql":e+=".sql";break;case"ra":default:e+=".txt"}((e,t)=>{const n=document.createElement("a");n.href=window.URL.createObjectURL(new Blob([t],{type:"text/plain"})),n.download=e,n.click()})(e,t.getValue())}resetHinter(){this.hinterCache={hints:[],hintsFromLinter:[],changed:!0}}linter(t){const{editor:n}=this.state;if(!n)return console.warn("editor not initialized yet"),[];if(0===t.length||!this.props.linterFunction)return[];try{const e=this.props.linterFunction(this,n,t);return 0===e.length&&0===this.hinterCache.hintsFromLinter.length||(this.hinterCache.hintsFromLinter=e,this.hinterCache.changed=!0),[]}catch(t){const r=[];console.log(t);const o=O._generateErrorFromException(t,0,0),i=e("").append(o.message).text();if(!o.codemirrorPositions)return this.clearExecutionAlerts(),this.addExecutionError(i),[];const a=o.codemirrorPositions.from;let s=o.codemirrorPositions.to;const l=n.getTokenAt({line:a.line,ch:a.ch+1},!0),u=n.getDoc().getRange(a,s);return void 0!==l.string&&l.string.length>u.length&&(s=n.getDoc().posFromIndex(n.getDoc().indexFromPos(a)+l.string.length)),r.push({from:a,to:s,message:i,severity:"error"}),this.props.enableInlineRelationEditor&&this.clearInlineRelationMarkers(),r}}genericHint(e){const{getHintsFunction:t}=this.props,n=e.getDoc().getCursor(),r=e.getTokenAt(n),o=(e,t="unknown")=>({text:e,displayText:e,className:`hint-${t}`});let i=[];if(!0===this.hinterCache.changed){const e={},n=t?t():[];for(let t=0;t0)for(let e=0;es.length&&0===t.indexOf(s)&&a.push(i[e])}else a=i;return{list:a,from:u.Pos(n.line,r.start),to:u.Pos(n.line,r.end)}}exec(e){const{editor:t}=this.state;if(!t)throw new Error("editor not initialized yet");this.setState({execResult:h.createElement("div",{className:"spinner"},h.createElement("div",{className:"rect1"}),h.createElement("div",{className:"rect2"}),h.createElement("div",{className:"rect3"}),h.createElement("div",{className:"rect4"}),h.createElement("div",{className:"rect5"}))},()=>{this.clearExecutionAlerts();let n="",r={line:0,ch:0};!0!==e?n=t.getValue():(n=t.getDoc().getSelection(),r=t.getDoc().getCursor("from")),0===n.length&&(this.clearExecutionAlerts(),this.addExecutionError(Object(s.d)("editor.error-no-query-found"))),this.clearExecutionAlerts();try{const{result:e}=this.props.execFunction(this,n,r);this.setState({execResult:e});const t=new CustomEvent("editor.execSuccessful",{detail:{editor:this}});return document.dispatchEvent(t),this.toggle(),!0}catch(e){console.error(e,e.stack);const t=O._generateErrorFromException(e,r.line,r.ch);this.addExecutionError(t.message,t.codemirrorPositions?t.codemirrorPositions.from:void 0),this.props.enableInlineRelationEditor&&this.clearInlineRelationMarkers()}})}static _generateErrorFromException(e,t,n){let r=void 0!==e.message?e.message:e;r=r.replace(/(\\(u|x)[0-9A-F]+)/g,(e,t)=>`${String.fromCharCode(parseInt(t.substr(2),16))}`);let o=null;void 0!==e.codeInfo&&void 0!==e.codeInfo.location?o=e.codeInfo.location:void 0!==e.location&&(o=e.location);let i=null;return null!==o&&(i={from:{line:o.start.line+(t||0)-1,ch:o.start.column+(n||0)-1},to:{line:o.end.line+(t||0)-1,ch:o.end.column+(n||0)-1}}),{message:r,location:o,codemirrorPositions:i}}static buildTranslatedPegJsMessage(e,t){return null!==e&&function(e){let t=1;for(e.sort((e,t)=>e.descriptiont.description?1:0);t1?`${n.slice(0,-1).join(", ")} ${Object(s.d)("editor.pegjs-error.or")} ${n[e.length-1]}`:n[0],o=t?`"${function(e){function t(e){return e.charCodeAt(0).toString(16).toUpperCase()}return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,(function(e){return"\\x0"+t(e)})).replace(/[\x10-\x1F\x80-\xFF]/g,(function(e){return"\\x"+t(e)})).replace(/[\u0180-\u0FFF]/g,(function(e){return"\\u0"+t(e)})).replace(/[\u1080-\uFFFF]/g,(function(e){return"\\u"+t(e)}))}(t)}"`:Object(s.d)("editor.pegjs-error.end-of-input");return Object(s.d)("editor.pegjs-error.expected-found",{expected:r,found:o})}(e,t)}setExecutionDisabled(e){this.setState({isExecutionDisabled:e})}replaceText(e,t){const n="string"==typeof e.label?e.label:"";this.replaceSelection(n,t)}replaceSelection(e,t){this.setText(t||e,"selection"),this.focus()}replaceAll(e,t){this.setText(t||e,"all"),this.focus()}setReadOnly(t){const{editor:n}=this.state;if(!n)throw new Error("editor not initialized yet");const r=e(n.getWrapperElement());!1===t?(n.setOption("readOnly",!1),r.removeClass("readonly")):(n.setOption("readOnly","nocursor"),r.addClass("readonly"))}addInlineRelationMarkers(e){const{editor:t}=this.state;if(!t)return void console.warn("editor not initialized yet");const n=function(e){const t=[];return Object(d.a)(e,e=>{const n=e;if(n&&"table"===n.type){const e={name:n.name,line:n.codeInfo.location.start.line-1,column:n.codeInfo.location.start.column-1,length:n.codeInfo.text.length,assignmentName:n.assignmentName?n.assignmentName:"",content:{columns:n.columns,rows:n.rows},start:n.codeInfo.location.start,end:n.codeInfo.location.end};t.push(e)}}),t}(e);this.clearInlineRelationMarkers();for(let e=0;e{this.inlineRelationEditorOpen(n[e])},f.render(h.createElement(o.a,{icon:r.q}),i,()=>{i.style.marginLeft="-15px",t.setGutterMarker(n[e].line++,S,i)})}}clearInlineRelationMarkers(){const{editor:e}=this.state;e?e.clearGutter(S):console.warn("editor not initialized yet")}}function k(e){const t=[],n=function(e){const r=e.getSchema();for(let e=0;e-1&&!this.props.autohide&&(this._hideTimeout&&this.clearHideTimeout(),this.state.isOpen&&!this.props.isOpen&&this.toggle())},n.onMouseLeaveTooltipContent=function(e){this.props.trigger.indexOf("hover")>-1&&!this.props.autohide&&(this._showTimeout&&this.clearShowTimeout(),e.persist(),this._hideTimeout=setTimeout(this.hide.bind(this,e),this.getDelay("hide")))},n.onEscKeyDown=function(e){"Escape"===e.key&&this.hide(e)},n.getRef=function(e){var t=this.props.innerRef;t&&("function"==typeof t?t(e):"object"==typeof t&&(t.current=e)),this._popover=e},n.getDelay=function(e){var t=this.props.delay;return"object"==typeof t?isNaN(t[e])?S[e]:t[e]:t},n.show=function(e){if(!this.props.isOpen){if(this.clearShowTimeout(),this.currentTargetElement=e?e.currentTarget||e.target:null,e&&e.composedPath&&"function"==typeof e.composedPath){var t=e.composedPath();this.currentTargetElement=t&&t[0]||this.currentTargetElement}this.toggle(e)}},n.showWithDelay=function(e){this._hideTimeout&&this.clearHideTimeout(),this._showTimeout=setTimeout(this.show.bind(this,e),this.getDelay("show"))},n.hide=function(e){this.props.isOpen&&(this.clearHideTimeout(),this.currentTargetElement=null,this.toggle(e))},n.hideWithDelay=function(e){this._showTimeout&&this.clearShowTimeout(),this._hideTimeout=setTimeout(this.hide.bind(this,e),this.getDelay("hide"))},n.clearShowTimeout=function(){clearTimeout(this._showTimeout),this._showTimeout=void 0},n.clearHideTimeout=function(){clearTimeout(this._hideTimeout),this._hideTimeout=void 0},n.handleDocumentClick=function(e){var t=this.props.trigger.split(" ");t.indexOf("legacy")>-1&&(this.props.isOpen||T(e.target,this._targets))?(this._hideTimeout&&this.clearHideTimeout(),this.props.isOpen&&!k(e.target,this._popover)?this.hideWithDelay(e):this.props.isOpen||this.showWithDelay(e)):t.indexOf("click")>-1&&T(e.target,this._targets)&&(this._hideTimeout&&this.clearHideTimeout(),this.props.isOpen?this.hideWithDelay(e):this.showWithDelay(e))},n.addEventOnTargets=function(e,t,n){this._targets.forEach((function(r){r.addEventListener(e,t,n)}))},n.removeEventOnTargets=function(e,t,n){this._targets.forEach((function(r){r.removeEventListener(e,t,n)}))},n.addTargetEvents=function(){if(this.props.trigger){var e=this.props.trigger.split(" ");-1===e.indexOf("manual")&&((e.indexOf("click")>-1||e.indexOf("legacy")>-1)&&document.addEventListener("click",this.handleDocumentClick,!0),this._targets&&this._targets.length&&(e.indexOf("hover")>-1&&(this.addEventOnTargets("mouseover",this.showWithDelay,!0),this.addEventOnTargets("mouseout",this.hideWithDelay,!0)),e.indexOf("focus")>-1&&(this.addEventOnTargets("focusin",this.show,!0),this.addEventOnTargets("focusout",this.hide,!0)),this.addEventOnTargets("keydown",this.onEscKeyDown,!0)))}},n.removeTargetEvents=function(){this._targets&&(this.removeEventOnTargets("mouseover",this.showWithDelay,!0),this.removeEventOnTargets("mouseout",this.hideWithDelay,!0),this.removeEventOnTargets("keydown",this.onEscKeyDown,!0),this.removeEventOnTargets("focusin",this.show,!0),this.removeEventOnTargets("focusout",this.hide,!0)),document.removeEventListener("click",this.handleDocumentClick,!0)},n.updateTarget=function(){var e=Object(b.i)(this.props.target,!0);e!==this._targets&&(this.removeTargetEvents(),this._targets=e?Array.from(e):[],this.currentTargetElement=this.currentTargetElement||this._targets[0],this.addTargetEvents())},n.toggle=function(e){return this.props.disabled||!this._isMounted?e&&e.preventDefault():this.props.toggle(e)},n.render=function(){if(!this.props.isOpen)return null;this.updateTarget();var e=this.props,t=e.className,n=e.cssModule,r=e.innerClassName,o=e.isOpen,s=e.hideArrow,l=e.boundariesElement,u=e.placement,c=e.placementPrefix,d=e.arrowClassName,h=e.popperClassName,f=e.container,m=e.modifiers,p=e.offset,g=e.fade,y=e.flip,v=Object(b.l)(this.props,Object.keys(C)),_=Object(b.k)(h,n),w=Object(b.k)(r,n);return i.a.createElement(j,{className:t,target:this.currentTargetElement||this._targets[0],isOpen:o,hideArrow:s,boundariesElement:l,placement:u,placementPrefix:c,arrowClassName:d,popperClassName:_,container:f,modifiers:m,offset:p,cssModule:n,fade:g,flip:y},i.a.createElement("div",Object(a.a)({},v,{ref:this.getRef,className:w,role:"tooltip",onMouseOver:this.onMouseOverTooltipContent,onMouseLeave:this.onMouseLeaveTooltipContent,onKeyDown:this.onEscKeyDown})))},t}(i.a.Component);M.propTypes=C,M.defaultProps=O;var x=M,R=function(e){var t=l()("popover","show",e.popperClassName),n=l()("popover-inner",e.innerClassName);return i.a.createElement(x,Object(a.a)({},e,{popperClassName:t,innerClassName:n}))};R.propTypes=C,R.defaultProps={placement:"right",placementPrefix:"bs-popover",trigger:"click"};var L=R,A={tag:b.o,className:h.a.string,cssModule:h.a.object},D=function(e){var t=e.className,n=e.cssModule,r=e.tag,o=Object(f.a)(e,["className","cssModule","tag"]),s=Object(b.k)(l()(t,"popover-header"),n);return i.a.createElement(r,Object(a.a)({},o,{className:s}))};D.propTypes=A,D.defaultProps={tag:"h3"};var N=D,P={tag:b.o,className:h.a.string,cssModule:h.a.object},I=function(e){var t=e.className,n=e.cssModule,r=e.tag,o=Object(f.a)(e,["className","cssModule","tag"]),s=Object(b.k)(l()(t,"popover-body"),n);return i.a.createElement(r,Object(a.a)({},o,{className:s}))};I.propTypes=P,I.defaultProps={tag:"div"};var H=I;class Y extends o.Component{constructor(e){super(e),this.body=Object(r.a)((e,t)=>!1===t?null:"function"==typeof e?e():e),this.state={id:"popWrapper_"+Math.random().toString(36).substr(2),isOpen:!1},this.hoverOpen=this.hoverOpen.bind(this),this.hoverClose=this.hoverClose.bind(this),this.handleClick=this.handleClick.bind(this),this.open=this.open.bind(this),this.close=this.close.bind(this)}componentWillUnmount(){this.close()}open(){this.setState({isOpen:!0}),document.addEventListener("click",this.close)}close(e){if(e){const{target:t}=e;if(t instanceof Element&&null!==t.closest(".popover__inside"))return}this.setState({isOpen:!1}),document.removeEventListener("click",this.close)}hoverOpen(){const{trigger:e}=this.props;("hover"===e||Array.isArray(e)&&e.includes("hover"))&&this.open()}hoverClose(){const{trigger:e}=this.props;("hover"===e||Array.isArray(e)&&e.includes("hover"))&&this.close()}handleClick(e){const{trigger:t,onClick:n}=this.props;if(n&&n(e),"click"===t||Array.isArray(t)&&t.includes("click")){const{isOpen:e}=this.state;e?this.close():this.open()}}render(){const{id:e,isOpen:t}=this.state,{title:n,className:r=""}=this.props,i=this.body(this.props.body,t);return o.createElement(o.Fragment,null,o.createElement("div",{onMouseEnter:this.hoverOpen,onMouseLeave:this.hoverClose,onFocus:this.hoverOpen,onBlur:this.hoverClose,onClick:this.handleClick,id:e,className:`popover__outside ${r}`},o.Children.only(this.props.children),o.createElement(L,{target:`#${e}`,isOpen:t,className:`popover__inside ${r}`},o.createElement(N,null,n),o.createElement(H,null,i))))}}},"./src/calc2/components/raTree.scss":function(e,t,n){},"./src/calc2/components/result.scss":function(e,t,n){},"./src/calc2/components/toolbar.scss":function(e,t,n){},"./src/calc2/components/toolbar.tsx":function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n("./src/calc2/components/dropdownList.tsx"),o=n("./src/calc2/components/popover.tsx"),i=n("./src/calc2/i18n.tsx"),a=n("./node_modules/react/index.js");n("./src/calc2/components/toolbar.scss");class s extends a.Component{render(){const{groups:e}=this.props;return a.createElement("div",{className:"toolbar codemirror-toolbar"},e.map((e,t)=>e.items.map((e,t)=>a.createElement(o.a,{key:t,trigger:["hover","focus"],placement:"dropdown"===e.type?"top":"bottom",title:e.tooltipTitle?String(Object(i.d)(e.tooltipTitle)):"",body:a.createElement(i.b,{id:e.tooltip,html:!0}),className:("dropdown"===e.type?"toolbar__popover__dropdown":"toolbar__popover")+" "+(void 0===e.className?"":e.className)},"dropdown"===e.type?a.createElement(r.a,{label:e.label,elements:e.elements,onChange:e.onChange,value:e.value}):a.createElement("span",{onClick:t=>{t.preventDefault(),t.stopPropagation(),e.onClick(e)}},e.label)))))}}},"./src/calc2/data/uibk.txt":function(e,t,n){"use strict";n.r(t),t.default="group: UIBK - R, S, T\ndescription: Tables from and for the lecture [Databases: Foundations, Data Models and System Concepts - University of Innsbruck](http://dbis-informatik.uibk.ac.at/249-0-VO-Datenbanksysteme.html) chapter 3 \ncategory@de:Universität Innsbruck\ncategory@en:University of Innsbruck\n\nR = {\na, b, c\n\n1, 'a', 'd'\n3, 'c', 'c'\n4, 'd', 'f'\n5, 'd', 'b'\n6, 'e', 'f'\n}\n\nS = {\nb, d\n\n'a', 100\n'b', 300\n'c', 400\n'd', 200\n'e', 150\n}\n\nT = {\nb, d\n\n'a', 100\n'd', 200\n'f', 400\n'g', 120\n}\n\ngroup: Kemper Datenbanksysteme\ndescription: Source: [Alfons Kemper, André Eickler: Datenbanksysteme: Eine Einführung 8. Auflage](http://www3.in.tum.de/teaching/bookDBMSeinf/), Seite 84, Abbildung 3.8\n\nProfessoren = {\nPersNr:number\tName:string\tRang:string\tRaum:number\n2125\tSokrates\tC4\t226\n2126\tRussel\tC4\t232\n2127\tKopernikus\tC3\t310\n2133\tPopper\tC3\t52\n2134\tAugustinus\tC3\t309\n2136\tCurie\tC4\t36\n2137\tKant\tC4\t7\n}\n\nStudenten = {\nMatrNr:number\tName:string\tSemester:number\n24002\tXenokrates\t18\n25403\tJonas\t12\n26120\tFichte\t10\n26830\tAristoxenos\t8\n27550\tSchopenhauer\t6\n28106\tCarnap\t3\n29120\tTheophrastos\t2\n29555\tFeuerbach\t2\n}\n\n\nVorlesungen = {\nVorlNr:number\tTitel:string\tSWS:number\tgelesenVon:number\n5001\tGrundzuege\t4\t2137\n5041\tEthik\t4\t2125\n5043\tErkenntnistheorie\t3\t2126\n5049\tMaeeutik\t2\t2125\n4052\tLogik\t4\t2125\n5052\tWissenschaftstheorie\t3\t2126\n5216\tBioethik\t2\t2126\n5259\t'Der Wiener Kreis'\t2\t2133\n5022\t'Glaube und wissen'\t2\t2134\n4630\t'Glaube und wissen'\t4\t2137\n}\n\nvoraussetzen = {\nVorgaenger:number\tNachfolger:number\n5001\t5041\n5001\t5043\n5001\t5049\n5041\t5216\n5043\t5052\n5041\t5052\n5052\t5259\n}\n\nhoeren = {\nMatrNr:number\tVorlNr:number\n26120\t5001\n27550\t5001\n27550\t4052\n28106\t5041\n28106\t5052\n28106\t5216\n28106\t5259\n29120\t5001\n29120\t5041\n29120\t5049\n29555\t5022\n25403\t5022\n29555\t5001\n}\n\nAssistenten = {\nPersNr:number\tName:string\tFachgebiet:string\tBoss:number\n3002\tPlaton\tIdeenlehre\t2125\n3003\tAristoteles\tSyllogistik\t2125\n3004\tWittgenstein\tSprachtheorie\t2126\n3005\tRhetikus\tPlanetenbewegung\t2127\n3006\tNewton\t'Keplersche Gesetze'\t2127\n3007\tSpinoza\t'Gott und Natur'\t2134\n}\n\npruefen = {\nMatrNr:number\tVorlNr:number\tPersNr:number\tNote:number\n28106\t5001\t2126\t1\n25403\t5041\t2125\t2\n27550\t4630\t2137\t2\n}\n\n\n\ngroup: UIBK - KursDB\ndescription: Tables from and for the lecture [Databases: Foundations, Data Models and System Concepts - University of Innsbruck](http://dbis-informatik.uibk.ac.at/249-0-VO-Datenbanksysteme.html) chapter 3 \n\nKurs = {\nKursNr, Titel\n\nG08, 'Grundlagen I'\nG10, 'Grundlagen II'\nP13, 'C-Programmierung'\nI09, Datenbanken\n}\n\nKursleiter = {\nPersNr, Name, Gehalt\n\n27183, 'Meier, I.', 4300.50\n29594, 'Schulze, H.', 3890.20\n38197, 'Huber, L.', 4200.10\n43325, 'Müller, K.', 3400.80\n}\n\nVorauss = {\nVorNr, KursNr\nG08, P13\nG10, P13\nG08, I09\nG10, I09\nP13, I09\n}\n\nFuehrt_durch = {\nAngNr\tKursNr\tPersNr\n1\tG08\t38197\n2\tG08\t38197\n1\tG10\t43325\n2\tG10\t29594\n1\tP13\t27183\n2\tP13\t27183\n1\tI09\t29594\n2\tI09\t29594\n3\tI09\t29594\n}\n\nTeilnehmer = {\nTnNr, Name, Ort \n143, 'Schmidt, M.', Bremen \n145, 'Huber, Chr.', Augsburg \n146, 'Abele, I.', Senden \n149, 'Kircher, B.', Bochum \n155, 'Meier, W.', Stuttgart \n171, 'Möller, H.', Innsbruck \n173, 'Schulze, B.', Stuttgart \n177, 'Mons, F.', Essen \n185, 'Meier, K.', Heidelberg \n187, 'Karstens, L.', Hamburg \n194, 'Gerstner, M.', Innsbruck \n}\n\nNimmt_teil = {\nAngNr\tKursNr\tTnNr\n2\tG08\t143\n2\tP13\t143\n1\tG08\t145\n1\tP13\t146\n1\tI09\t146\n2\tP13\t149\n1\tI09\t155\n1\tI09\t171\n1\tI09\t173\n2\tP13\t177\n1\tI09\t185\n2\tI09\t187\n1\tP13\t194\n}\n\nAngebot = {\nAngNr\tKursNr\tDatum\tOrt\n1\tG08\t2000-10-13\t'München'\n2\tG08\t2000-11-24\tBremen\n1\tG10\t2000-12-01\t'München'\n2\tG10\t2001-02-15\tHamburg\n1\tP13\t2001-05-28\tInnsbruck\n2\tP13\t2001-07-01\tEssen\n1\tI09\t2001-03-27\tStuttgart\n2\tI09\t2001-04-23\tHamburg\n3\tI09\t2001-05-29\t'München'\n}\n\n\n\ngroup:Database Systems The Complete Book - Exercise 2.4.1\ndescription[[ Sample Data from [Database Systems The Complete Book 2nd Edition](http://infolab.stanford.edu/~ullman/dscb.html) Exercise 2.4.1 Page 52-55 ]]\n\nProduct = {\nmaker\tmodel\ttype\nA\t1001\tpc\nA\t1002\tpc\nA\t1003\tpc\nA\t2004\tlaptop\nA\t2005\tlaptop\nA\t2006\tlaptop\nB\t1004\tpc\nB\t1005\tpc\nB\t1006\tpc\nB\t2007\tlaptop\nC\t1007\tpc\nD\t1008\tpc\nD\t1009\tpc\nD\t1010\tpc\nD\t3004\tprinter\nD\t3005\tprinter\nE\t1011\tpc\nE\t1012\tpc\nE\t1013\tpc\nE\t2001\tlaptop\nE\t2002\tlaptop\nE\t2003\tlaptop\nE\t3001\tprinter\nE\t3002\tprinter\nE\t3003\tprinter\nF\t2008\tlaptop\nF\t2009\tlaptop\nG\t2010\tlaptop\nH\t3006\tprinter\nH\t3007\tprinter\n}\n\nPC = {\nmodel\tspeed\tram\thd\tprice\n1001\t2.66\t1024\t250\t2114\n1002\t2.1\t512\t250\t995\n1003\t1.42\t512\t80\t478\n1004\t2.8\t1024\t250\t649\n1005\t3.2\t512\t250\t630\n1006\t3.2\t1024\t320\t1049\n1007\t2.2\t1024\t200\t510\n1008\t2.2\t2048\t250\t770\n1009\t2\t1024\t250\t650\n1010\t2.8\t2048\t300\t770\n1011\t1.86\t2048\t160\t959\n1012\t2.8\t1024\t160\t649\n1013\t3.06\t512\t80\t529\n}\n\nLaptop = {\nmodel\tspeed\tram\thd\tscreen\tprice\n2001\t2\t2048\t240\t20.1\t3673\n2002\t1.73\t1024\t80\t17\t949\n2003\t1.8\t512\t60\t15.4\t549\n2004\t2\t512\t60\t13.3\t1150\n2005\t2.16\t1024\t120\t17\t2500\n2006\t2\t2048\t80\t15.4\t1700\n2007\t1.83\t1024\t120\t13.3\t1429\n2008\t1.6\t1024\t100\t15.4\t900\n2009\t1.6\t512\t80\t14.1\t680\n2010\t2\t2048\t160\t15.4\t2300\n}\n\nPrinter = {\nmodel\tcolor\ttype\tprice\n3001\ttrue\tink-jet\t99\n3002\tfalse\tlaser\t239\n3003\ttrue\tlaser\t899\n3004\ttrue\tink-jet\t120\n3005\tfalse\tlaser\t120\n3006\ttrue\tink-jet\t100\n3007\ttrue\tlaser\t200\n}\n\ngroup:Database Systems The Complete Book - Exercise 2.4.3\ndescription[[ Sample Data from [Database Systems The Complete Book 2nd Edition](http://infolab.stanford.edu/~ullman/dscb.html) Exercise 2.4.1 Page 55-57 ]]\n\nClasses = {\nclass\ttype\tcountry\tnumGuns\tbore\tdisplacement\nBismarck\tbb\tGermany\t8\t15\t42000\nIowa\tbb\tUSA\t9\t16\t46000\nKongo\tbc\tJapan\t8\t14\t32000\n'North Carolina'\tbb\tUSA\t9\t16\t37000\nRenown\tbc\t'Gt. Britan'\t6\t15\t23000\nRevenge\tbb\t'Gt. Britan'\t8\t15\t29000\nTennessee\tbb\tUSA\t12\t14\t32000\nYamato\tbb\tJapan\t9\t18\t65000\n}\n\nBattles = {\nname\tdate\n'Denmark Strait'\t1941-05-24\nGuadalcanal\t1942-11-15\n'North Cape'\t1943-12-26\n'Surigao Strait'\t1944-10-25\n}\n\nOutcomes = {\nship\tbattle\tresult\nArizona\t'Pearl Harbor'\tsunk\nBismarck\t'Denmark Strait'\tsunk\nCalifornia\t'Surigao Strait'\tok\n'Duke of York'\t'North Cape'\tok\nFuso\t'Surigao Strait'\tsunk\nHood\t'Denmark Strait'\tsunk\n'King George V'\t'Denmark Strait'\tok\nKirishima\tGuadalcanal\tsunk\n'Prince of Wales'\t'Denmark Strait'\tdamaged\nRodney\t'Denmark Strait'\tok\nScharnhorst\t'North Cape'\tsunk\n'South Dakota'\tGuadalcanal\tdamaged\nTennessee\t'Surigao Strait'\tok\nWashington\tGuadalcanal\tok\n'West Virginia'\t'Surigao Strait'\tok\nYamashiro\t'Surigao Strait'\tsunk\n}\n\nShips = {\nname\tclass\tlaunched\nCalifornia\tTennessee\t1921\nHaruna\tKongo\t1915\nHiei\tKongo\t1914\nIowa\tIowa\t1943\nKirishima\tKongo\t1915\nKongo\tKongo\t1913\nMissouri\tIowa\t1944\nMusashi\tYamato\t1942\n'New Jersey'\tIowa\t1943\n'North Carolina'\t'North Carolina'\t1941\nRamillies\tRevenge\t1917\nRenown\tRenown\t1916\nRepulse\tRenown\t1916\nResolution\tRevenge\t1916\nRevenge\tRevenge\t1916\n'Royal Oak'\tRevenge\t1916\n'Royal Sovereign'\tRevenge\t1916\nTennessee\tTennessee\t1920\nWashington\t'North Carolina'\t1941\nWisconsin\tIowa\t1944\nYamato\tYamato\t1941\n}\n\n\ngroup:Wikipedia - Relational algebra (en)\ndescription[[This are the tables from [Relational algebra - Wikipedia The Free Encyclopedia](http://en.wikipedia.org/wiki/Relational_algebra)\n\nlicense: [CC BY-SA](http://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License)]]\n\nEmployee = {\n\tName:string, EmpId:number, DeptName:string\n\t'Harry' , 3415 , 'Finance' \n\t'Sally' , 2241 , 'Sales' \n\t'George' , 3401 , 'Finance' \n\t'Harriet' , 2202 , 'Sales' \n\t'Tim' , 1123 , 'Executive' \n}\n\nDept = {\n\tDeptName:string, Manager:string\n\t'Sales' , 'Harriet' \n\t'Production' , 'Charles' \n}\n\nCompleted = {\n\tStudent:string, Task:string\n\t'Fred' , 'Database1'\n\t'Fred' , 'Database2'\n\t'Fred' , 'Compiler1'\n\t'Eugene' , 'Database1'\n\t'Eugene' , 'Compiler1'\n\t'Sarah' , 'Database1'\n\t'Sarah' , 'Database2'\n}\n\nDBProject = {\n\tTask:string\n\t'Database1'\n\t'Database2'\n}\n\nCar = {\n\tCarModel:string, CarPrice:number\n\t'CarA' , 20000 \n\t'CarB' , 30000 \n\t'CarC' , 50000 \n}\n\nBoat = {\n\tBoatModel:string, BoatPrice:number\n\t'Boat1' , 10000 \n\t'Boat2' , 40000 \n\t'Boat3' , 60000 \n}"},"./src/calc2/i18n.tsx":function(e,t,n){"use strict";n.d(t,"c",(function(){return d})),n.d(t,"d",(function(){return h})),n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return g}));var r=n("./node_modules/i18next/dist/es/index.js"),o=n("./node_modules/i18next-browser-languagedetector/index.js"),i=n("./node_modules/react/index.js"),a=n("./src/locales/de.json"),s=n("./src/locales/en.json"),l=n("./src/locales/es.json"),u=n("./src/locales/kr.json"),c=n("./src/locales/pt.json");const d=r.b(o).init({resources:{en:{translations:s},de:{translations:a},es:{translations:l},kr:{translations:u},pt:{translations:c}},fallbackLng:"en",nsSeparator:":",keySeparator:!1,defaultNS:"translations",debug:!0});function h(e,t){return String(d.t(e,t))}const{Provider:f,Consumer:m}=i.createContext(d),p=e=>i.createElement(f,{value:d},e.children),g=({id:e,html:t=!1})=>i.createElement(m,null,n=>t?i.createElement("span",{dangerouslySetInnerHTML:{__html:String(n.t(e,{interpolation:{escapeValue:!1}}))}}):i.createElement("span",null,String(n.t(e))))},"./src/calc2/main.hot.tsx":function(e,t,n){"use strict";(function(e){var r=n("./src/calc2/main.tsx"),o=n("./node_modules/react-hot-loader/index.js");t.a=Object(o.hot)(e)(r.a)}).call(this,n("./node_modules/webpack/buildin/harmony-module.js")(e))},"./src/calc2/main.tsx":function(e,t,n){"use strict";n.d(t,"a",(function(){return Gn}));n("./node_modules/bootstrap/dist/css/bootstrap.css");var r=n("./src/calc2/i18n.tsx"),o=n("./node_modules/react/index.js"),i=n.n(o),a=n("./node_modules/prop-types/index.js"),s=n.n(a),l=i.a.createContext(null);var u=function(e){e()},c={notify:function(){}};function d(){var e=u,t=null,n=null;return{clear:function(){t=null,n=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],n=t;n;)e.push(n),n=n.next;return e},subscribe:function(e){var r=!0,o=n={callback:e,next:null,prev:n};return o.prev?o.prev.next=o:t=o,function(){r&&null!==t&&(r=!1,o.next?o.next.prev=o.prev:n=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}var h=function(){function e(e,t){this.store=e,this.parentSub=t,this.unsubscribe=null,this.listeners=c,this.handleChangeWrapper=this.handleChangeWrapper.bind(this)}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.handleChangeWrapper=function(){this.onStateChange&&this.onStateChange()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.handleChangeWrapper):this.store.subscribe(this.handleChangeWrapper),this.listeners=d())},t.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null,this.listeners.clear(),this.listeners=c)},e}();var f=function(e){var t=e.store,n=e.context,r=e.children,a=Object(o.useMemo)((function(){var e=new h(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),s=Object(o.useMemo)((function(){return t.getState()}),[t]);Object(o.useEffect)((function(){var e=a.subscription;return e.trySubscribe(),s!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[a,s]);var u=n||l;return i.a.createElement(u.Provider,{value:a},r)},m=n("./node_modules/@babel/runtime/helpers/esm/extends.js"),p=n("./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"),g=n("./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js"),y=n.n(g),b=n("./node_modules/react-is/index.js"),v="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?o.useLayoutEffect:o.useEffect,_=[],w=[null,null];function E(e,t){var n=e[1];return[t.payload,n+1]}function j(e,t,n){v((function(){return e.apply(void 0,t)}),n)}function C(e,t,n,r,o,i,a){e.current=r,t.current=o,n.current=!1,i.current&&(i.current=null,a())}function S(e,t,n,r,o,i,a,s,l,u){if(e){var c=!1,d=null,h=function(){if(!c){var e,n,h=t.getState();try{e=r(h,o.current)}catch(e){n=e,d=e}n||(d=null),e===i.current?a.current||l():(i.current=e,s.current=e,a.current=!0,u({type:"STORE_UPDATED",payload:{error:n}}))}};n.onStateChange=h,n.trySubscribe(),h();return function(){if(c=!0,n.tryUnsubscribe(),n.onStateChange=null,d)throw d}}}var O=function(){return[null,0]};function k(e,t){void 0===t&&(t={});var n=t,r=n.getDisplayName,a=void 0===r?function(e){return"ConnectAdvanced("+e+")"}:r,s=n.methodName,u=void 0===s?"connectAdvanced":s,c=n.renderCountProp,d=void 0===c?void 0:c,f=n.shouldHandleStateChanges,g=void 0===f||f,v=n.storeKey,k=void 0===v?"store":v,T=(n.withRef,n.forwardRef),M=void 0!==T&&T,x=n.context,R=void 0===x?l:x,L=Object(p.a)(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]),A=R;return function(t){var n=t.displayName||t.name||"Component",r=a(n),s=Object(m.a)({},L,{getDisplayName:a,methodName:u,renderCountProp:d,shouldHandleStateChanges:g,storeKey:k,displayName:r,wrappedComponentName:n,WrappedComponent:t}),l=L.pure;var c=l?o.useMemo:function(e){return e()};function f(n){var r=Object(o.useMemo)((function(){var e=n.forwardedRef,t=Object(p.a)(n,["forwardedRef"]);return[n.context,e,t]}),[n]),a=r[0],l=r[1],u=r[2],d=Object(o.useMemo)((function(){return a&&a.Consumer&&Object(b.isContextConsumer)(i.a.createElement(a.Consumer,null))?a:A}),[a,A]),f=Object(o.useContext)(d),y=Boolean(n.store)&&Boolean(n.store.getState)&&Boolean(n.store.dispatch);Boolean(f)&&Boolean(f.store);var v=y?n.store:f.store,k=Object(o.useMemo)((function(){return function(t){return e(t.dispatch,s)}(v)}),[v]),T=Object(o.useMemo)((function(){if(!g)return w;var e=new h(v,y?null:f.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[v,y,f]),M=T[0],x=T[1],R=Object(o.useMemo)((function(){return y?f:Object(m.a)({},f,{subscription:M})}),[y,f,M]),L=Object(o.useReducer)(E,_,O),D=L[0][0],N=L[1];if(D&&D.error)throw D.error;var P=Object(o.useRef)(),I=Object(o.useRef)(u),H=Object(o.useRef)(),Y=Object(o.useRef)(!1),F=c((function(){return H.current&&u===I.current?H.current:k(v.getState(),u)}),[v,D,u]);j(C,[I,P,Y,u,F,H,x]),j(S,[g,v,M,k,I,P,Y,H,x,N],[v,M,k]);var W=Object(o.useMemo)((function(){return i.a.createElement(t,Object(m.a)({},F,{ref:l}))}),[l,t,F]);return Object(o.useMemo)((function(){return g?i.a.createElement(d.Provider,{value:R},W):W}),[d,W,R])}var v=l?i.a.memo(f):f;if(v.WrappedComponent=t,v.displayName=r,M){var T=i.a.forwardRef((function(e,t){return i.a.createElement(v,Object(m.a)({},e,{forwardedRef:t}))}));return T.displayName=r,T.WrappedComponent=t,y()(T,t)}return y()(v,t)}}function T(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!=e&&t!=t}function M(e,t){if(T(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function B(e,t){return e===t}function U(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?k:n,o=t.mapStateToPropsFactories,i=void 0===o?N:o,a=t.mapDispatchToPropsFactories,s=void 0===a?D:a,l=t.mergePropsFactories,u=void 0===l?I:l,c=t.selectorFactory,d=void 0===c?F:c;return function(e,t,n,o){void 0===o&&(o={});var a=o,l=a.pure,c=void 0===l||l,h=a.areStatesEqual,f=void 0===h?B:h,g=a.areOwnPropsEqual,y=void 0===g?M:g,b=a.areStatePropsEqual,v=void 0===b?M:b,_=a.areMergedPropsEqual,w=void 0===_?M:_,E=Object(p.a)(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),j=W(e,i,"mapStateToProps"),C=W(t,s,"mapDispatchToProps"),S=W(n,u,"mergeProps");return r(d,Object(m.a)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:j,initMapDispatchToProps:C,initMergeProps:S,pure:c,areStatesEqual:f,areOwnPropsEqual:y,areStatePropsEqual:v,areMergedPropsEqual:w},E))}}var z=U();var V,q=n("./node_modules/react-dom/index.js");V=q.unstable_batchedUpdates,u=V;var G=n("./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js");function K(e){return"/"===e.charAt(0)}function X(e,t){for(var n=t,r=n+1,o=e.length;r=0;c--){var d=o[c];"."===d?X(o,c):".."===d?(X(o,c),u++):u&&(X(o,c),u--)}if(!s)for(;u--;u)o.unshift("..");!s||""===o[0]||o[0]&&K(o[0])||o.unshift("");var h=o.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function J(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var Q=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=J(t),o=J(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var Z=function(e,t){if(!e)throw new Error("Invariant failed")};function ee(e){return"/"===e.charAt(0)?e:"/"+e}function te(e){return"/"===e.charAt(0)?e.substr(1):e}function ne(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function re(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function oe(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function ie(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(m.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=$(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function ae(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,r):n.push(r),c({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=ie(e,t,d(),y.location);u.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(y.entries[y.index]=r,c({action:"REPLACE",location:r}))}))},go:g,goBack:function(){g(-1)},goForward:function(){g(1)},canGo:function(e){var t=y.index+e;return t>=0&&t=0&&t<=r),active:e===t},o.createElement(ct,{onClick:()=>this.setPage(t)},t+1)));return o.createElement("ul",{className:"pagination"},o.createElement(st,{disabled:0===e},o.createElement(ct,{previous:!0,onClick:()=>this.setPage(e-1)})),i,o.createElement(st,{disabled:e+1>=r},o.createElement(ct,{next:!0,onClick:()=>this.setPage(e+1)})))}}var ht=n("./src/db/exec/ValueExpr.ts");n("./src/calc2/components/pagedTable.scss");class ft extends o.Component{constructor(e){super(e),this.state={page:0}}render(){const{table:e,maxLinesPerPage:t,showPagination:n=!0,className:r=""}=this.props,{page:i}=this.state,a=e.getSchema();return o.createElement("div",{className:"result-table pagedTable"},o.createElement("table",{className:r},o.createElement("thead",null,o.createElement("tr",null,a.getColumns().map((e,t)=>o.createElement("th",{key:t},e.toString())))),o.createElement("tbody",null,e.getRows(i*t,t).map((e,t)=>o.createElement("tr",{key:`row ${t}`},e.map((e,t)=>{const n=a.getType(t);return o.createElement("td",{key:`value ${t}`,className:`${n} ${null===e?"null":""}`},Object(ht.d)(e,n))}))))),n?o.createElement("div",{className:"pagination"},o.createElement(dt,{total:e.getNumRows(),maxLinesPerPage:t,pageChanged:e=>this.setState({page:e}),currentPage:i})):null)}}var mt=n("./src/calc2/components/popover.tsx"),pt=n("./src/db/exec/RANode.ts");n("./src/calc2/components/raTree.scss");class gt extends o.Component{constructor(e){super(e)}render(){const{root:e,numTreeLabelColors:t=0,activeNode:n,setActiveNode:r}=this.props;let i=0;const a=new Map,s=e=>{const l=e instanceof pt.c||e instanceof pt.a?s(e.getChild()):null,u=e instanceof pt.a?s(e.getChild2()):null;let c="";if(e.hasMetaData("fromVariable")){const n=e.getMetaData("fromVariable");!1===a.has(n)&&a.set(n,i++);const r=a.get(n)%t;c=o.createElement("span",null," ",o.createElement("span",{className:`label label-info label-info-${r}`},n," =")," ")}return o.createElement("li",null,o.createElement("div",{className:nt({node:!0,active:e===n}),onClick:()=>r&&r(e)},o.createElement(mt.a,{title:o.createElement("div",null,c,o.createElement("div",{dangerouslySetInnerHTML:{__html:e.getFormulaHtml(!0,!1)}})),body:()=>{e.check(),e.getResult();const t=e.getSchema(),n=e.getResultNumRows();return o.createElement("div",null,"columns:",o.createElement("ul",null,t.getColumns().map((e,n)=>o.createElement("li",{key:n},e.toString()," ",o.createElement("small",{className:"muted text-muted"},t.getType(n))))),e.hasMetaData("naturalJoinConditions")?o.createElement("div",null,"natural join conditions:",o.createElement("ul",null,e.getMetaData("naturalJoinConditions").map(e=>o.createElement("li",{dangerouslySetInnerHTML:{__html:e.getFormulaHtml()}})))):null,o.createElement("p",null,`${n} row${1===n?"":"s"}`),!0===e.getMetaData("isInlineRelation")&&e.hasMetaData("inlineRelationDefinition")?o.createElement("pre",null,e.getMetaData("inlineRelationDefinition")):null)},placement:"right",trigger:"hover"},o.createElement("a",{className:"formula"},c,o.createElement("span",{dangerouslySetInnerHTML:{__html:e.getFormulaHtml(!1,!1)}}),o.createElement("br",null),o.createElement("span",{className:"resultCountLabel"},`${e.getResultNumRows()} row${1===e.getResultNumRows()?"":"s"}`)))),l||u?o.createElement("ul",null,l,u):null)};return o.createElement("div",{className:"ra-tree"},o.createElement("div",{className:"tree"},o.createElement("ul",null,s(e))))}}var yt=n("./node_modules/memoize-one/dist/memoize-one.esm.js");n("./src/calc2/components/result.scss");class bt extends o.Component{constructor(e){super(e),this.result=Object(yt.a)(e=>{try{return e.check(),e.getResult()}catch(e){return console.error(e),null}}),this.state={activeNode:e.root,result:null},this.setActiveNode=this.setActiveNode.bind(this)}setActiveNode(e){this.setState({activeNode:e})}render(){const{root:e,numTreeLabelColors:t}=this.props,{activeNode:n}=this.state,r=this.result(n);return o.createElement("div",{className:"ra-result clearfix"},o.createElement("div",null,o.createElement(gt,{root:e,activeNode:n,numTreeLabelColors:t,setActiveNode:this.setActiveNode})),o.createElement("div",{className:"result"},o.createElement("div",null,o.createElement("h4",{className:"result-formula",dangerouslySetInnerHTML:{__html:n.getFormulaHtml(!0,!1)}}),o.createElement("div",{className:"result-table"},r?o.createElement(ft,{className:"table table-condensed",maxLinesPerPage:10,table:r,showPagination:!0}):null))))}}var vt=n("./src/db/relalg.ts");const _t=["pi","sigma","rho","tau","<-","intersect","union","/","-","\\","x","cross join","join","inner join","natural join","left join","right join","left outer join","right outer join","full outer join","left semi join","right semi join","anti join","and","or","xor","||"];class wt extends o.Component{constructor(e){super(e),this.editorBase=null,this.state={autoreplaceOperatorsMode:"none"},this.replaceText=this.replaceText.bind(this)}render(){const{group:e}=this.props,{autoreplaceOperatorsMode:t}=this.state,n={};return e.tables.forEach(e=>{n[e.tableName]=e.relation}),o.createElement(tt.a,{textChange:e=>{},ref:e=>{e&&(this.editorBase=e)},mode:"relalg",execFunction:(e,t,i)=>{const a=Object(vt.b)(t,Object.keys(n));if(Object(vt.j)(a,n),null===a.child)throw a.assignments.length>0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const s=Object(vt.h)(a,n);return s.check(),e.historyAddEntry(t),e.props.enableInlineRelationEditor&&e.addInlineRelationMarkers(a),{result:o.createElement(bt,{root:s,numTreeLabelColors:6})}},tab:"relalg",linterFunction:(e,o,i)=>{const a=[],s=Object(vt.b)(i,Object.keys(n));Object(vt.j)(s,n);for(let e=0;e0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const l=Object(vt.h)(s,n);if(l.check(),!1===o.getDoc().somethingSelected()){const e=o.getDoc().getCursor(),{query:n,cursor:r}=Object(vt.f)(i,s.operatorPositions,{line:e.line+1,column:e.ch+1},t);n!==i&&(o.setValue(n),o.getDoc().setCursor({line:r.line-1,ch:r.column-1}))}return e.props.enableInlineRelationEditor&&e.addInlineRelationMarkers(s),a.concat(Object(tt.b)(l))},getHintsFunction:()=>[..._t,...Object(tt.c)(e)],enableInlineRelationEditor:!0,toolbar:[{math:!0,items:[{label:"π",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.projection",tooltip:"calc.editors.ra.toolbar.projection-content"},{label:"σ",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.selection",tooltip:"calc.editors.ra.toolbar.selection-content"},{label:"ρ",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.rename",tooltip:"calc.editors.ra.toolbar.rename-content"},{label:"←",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.rename-columns-operator",tooltip:"calc.editors.ra.toolbar.rename-columns-operator-content"},{label:"→",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.right-arrow",tooltip:"calc.editors.ra.toolbar.right-arrow"},{label:"τ",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.orderBy",tooltip:"calc.editors.ra.toolbar.orderBy-content"},{label:"γ",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.groupBy",tooltip:"calc.editors.ra.toolbar.groupBy-content"}]},{math:!0,items:[{label:"∧",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.and",tooltip:"calc.editors.ra.toolbar.and-content"},{label:"∨",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.or",tooltip:"calc.editors.ra.toolbar.or-content"},{label:"¬",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.not",tooltip:"calc.editors.ra.toolbar.not-content"},{label:"=",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.equals",tooltip:"calc.editors.ra.toolbar.equals-content"},{label:"≠",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.not-equals",tooltip:"calc.editors.ra.toolbar.not-equals-content"},{label:"≥",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.greater-or-equals",tooltip:"calc.editors.ra.toolbar.greater-or-equals-content"},{label:"≤",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.lesser-or-equals",tooltip:"calc.editors.ra.toolbar.lesser-or-equals-content"}]},{math:!0,items:[{label:"∩",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.intersect",tooltip:"calc.editors.ra.toolbar.intersect-content"},{label:"∪",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.union",tooltip:"calc.editors.ra.toolbar.union-content"},{label:"÷",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.division",tooltip:"calc.editors.ra.toolbar.division-content"},{label:"-",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.subtraction",tooltip:"calc.editors.ra.toolbar.subtraction-content"}]},{math:!0,items:[{label:"⨯",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.cross-join",tooltip:"calc.editors.ra.toolbar.cross-join-content"},{label:"⨝",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.natural-join",tooltip:"calc.editors.ra.toolbar.natural-join-content"},{label:"⟕",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.left-outer-join",tooltip:"calc.editors.ra.toolbar.left-outer-join-content"},{label:"⟖",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.right-outer-join",tooltip:"calc.editors.ra.toolbar.right-outer-join-content"},{label:"⟗",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.full-outer-join",tooltip:"calc.editors.ra.toolbar.full-outer-join-content"},{label:"⋉",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.left-semi-join",tooltip:"calc.editors.ra.toolbar.left-semi-join-content"},{label:"⋊",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.right-semi-join",tooltip:"calc.editors.ra.toolbar.right-semi-join-content"},{label:"▷",onClick:this.replaceText,tooltipTitle:"calc.editors.ra.toolbar.anti-join",tooltip:"calc.editors.ra.toolbar.anti-join-content"}]},{math:!0,items:[{label:"=",onClick:e=>this.replaceText(e,"= "),tooltipTitle:"calc.editors.ra.toolbar.assignment",tooltip:"calc.editors.ra.toolbar.assignment-content"},{label:"--",onClick:e=>this.replaceText(e,"-- "),tooltipTitle:"calc.editors.ra.toolbar.single-line-comment",tooltip:"calc.editors.ra.toolbar.single-line-comment-content"},{label:"/*",onClick:e=>this.replaceText(e,"/* */"),tooltipTitle:"calc.editors.ra.toolbar.multi-line-comment",tooltip:"calc.editors.ra.toolbar.multi-line-comment-content"},{label:"{}",onClick:e=>this.replaceText(e,"{a:string, b:number, X.c:date\n\ta, 1, 1970-01-01\n}"),tooltipTitle:"calc.editors.ra.toolbar.inline-relation",tooltip:"calc.editors.ra.toolbar.inline-relation-content"}]},{items:[{label:o.createElement(et.a,{icon:Ze.q}),onClick:()=>{this.editorBase&&this.editorBase.inlineRelationEditorOpen(null)},tooltipTitle:"calc.editors.ra.toolbar.inline-relation-editor",tooltip:"calc.editors.ra.toolbar.inline-relation-editor-content"},{label:o.createElement(et.a,{icon:Ze.d}),onClick:e=>this.replaceText(e,"date('1970-01-01')"),tooltipTitle:"calc.editors.ra.toolbar.insert-date",tooltip:"calc.editors.ra.toolbar.insert-date-content"},{className:"showOnSM",label:o.createElement(et.a,{className:"editorButtonOnSM",icon:Ze.m}),onClick:()=>{this.props.relInsertModalToggle()},tooltipTitle:"calc.editors.insert-relation-title",tooltip:"calc.editors.insert-relation-tooltip"}]},{items:[{className:"dropdownToolbarButton",type:"dropdown",label:o.createElement(et.a,{className:"editorButtonOnSM",icon:Ze.l}),tooltipTitle:"calc.editors.ra.toolbar.autoreplace-operators.title",tooltip:"calc.editors.ra.toolbar.autoreplace-operators.header",elements:[{type:"header",label:o.createElement(r.b,{id:"calc.editors.ra.toolbar.autoreplace-operators.header"})},{type:"separator"},{label:o.createElement(r.b,{id:"calc.editors.ra.toolbar.autoreplace-operators.none"}),value:"none"},{label:o.createElement(r.b,{id:"calc.editors.ra.toolbar.autoreplace-operators.plain2math"}),value:"plain2math"},{label:o.createElement(r.b,{id:"calc.editors.ra.toolbar.autoreplace-operators.math2plain"}),value:"math2plain"}],value:t,onChange:e=>{this.setState({autoreplaceOperatorsMode:e},()=>{this.editorBase&&this.editorBase.forceLinterRun()})}}]}]})}replaceText(e,t){this.editorBase&&this.editorBase.replaceText(e,t)}replaceSelection(e,t){this.editorBase&&this.editorBase.replaceSelection(e,t)}}var Et=n("./src/calc2/utils/groupUtils.ts"),jt=n("./node_modules/reactstrap/lib/Button.js"),Ct=n.n(jt);class St extends o.Component{constructor(e){super(e),this.editorBase=null,this.autoParsingTimeout=null,this.replaceSelection=this.replaceSelection.bind(this)}static generateInfo(e){return{groupInfo:{source:"local",id:"draft",filename:"draft",index:0,maintainer:"",maintainerGroup:""},sourceInfo:{}}}render(){const{group:e}=this.props,t={};return e.tables.forEach(e=>{t[e.tableName]=e.relation}),o.createElement(tt.a,{textChange:e=>{},ref:e=>{e&&(this.editorBase=e)},mode:"relalg",disableHistory:!0,execButtonLabel:"calc.editors.group.button-exec",execFunction:(e,t,n)=>{const i=Object(vt.c)(t),{groupInfo:a,sourceInfo:s}=St.generateInfo(i),l=Object(Et.a)(i,a,s),u=o.createElement(o.Fragment,null,l.map((e,t)=>o.createElement("div",{key:t},o.createElement("h4",null,e.groupName.fallback," ",o.createElement(Ct.a,{color:"link",onClick:()=>{this.props.setDraft(e)}},o.createElement(r.b,{id:"calc.editors.group.button-use"}))),o.createElement("ul",{className:"table-list"},e.tables.map((e,n)=>{const r=l[t].tables[n].relation.getResult().getHtml();return o.createElement("li",{key:n},o.createElement("h5",null,e.tableName),o.createElement("div",{dangerouslySetInnerHTML:{__html:r}}))})))));return i.groups.forEach(t=>{e.addInlineRelationMarkers(t)}),{result:u}},tab:"group",linterFunction:(e,t,n)=>{const r=Object(vt.c)(n);r.groups.forEach(t=>{e.addInlineRelationMarkers(t)});const{groupInfo:o,sourceInfo:i}=St.generateInfo(r);return Object(Et.a)(r,o,i),[]},getHintsFunction:()=>[..._t,"group","group@de","group@en","group@es","description","description@de","description@en","description@es","category","category@de","category@en","category@es",...Object(tt.c)(e)],enableInlineRelationEditor:!0,toolbar:[{math:!1,items:[{label:o.createElement("span",null,o.createElement(et.a,{icon:Ze.q})," ",o.createElement(r.b,{id:"calc.editors.group.toolbar.add-new-relation"})),onClick:()=>{this.editorBase&&this.editorBase.inlineRelationEditorOpen(null)},tooltipTitle:"calc.editors.group.toolbar.add-new-relation",tooltip:"calc.editors.group.toolbar.add-new-relation-content"}]}]})}replaceSelection(e,t){this.editorBase&&this.editorBase.replaceSelection(e,t)}}const Ot=["distinct","select distinct","from","where","order by","asc","desc","inner join","inner","join","natural","union","intersect","outer join","natural join","left join","right join","left outer join","right outer join","full outer join","group by","having","limit","offset","and","or","xor","||"];class kt extends o.Component{constructor(e){super(e),this.editorBase=null,this.replaceText=this.replaceText.bind(this)}render(){const{group:e}=this.props,t={};return e.tables.forEach(e=>{t[e.tableName]=e.relation}),o.createElement(tt.a,{textChange:e=>{},ref:e=>{e&&(this.editorBase=e)},mode:"text/x-mysql",execFunction:(e,n,i)=>{const a=Object(vt.e)(n);if(Object(vt.j)(a,t),null===a.child)throw a.assignments.length>0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const s=Object(vt.i)(a,t);return s.check(),e.historyAddEntry(n),{result:o.createElement(bt,{root:s,numTreeLabelColors:6})}},tab:"sql",linterFunction:(e,n,o)=>{const i=[],a=Object(vt.e)(o);Object(vt.j)(a,t);for(let e=0;e0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const s=Object(vt.i)(a,t);return s.check(),i.concat(Object(tt.b)(s))},getHintsFunction:()=>[...Ot,...Object(tt.c)(e)],enableInlineRelationEditor:!0,toolbar:[{math:!1,items:[{label:"select",tooltipTitle:"calc.editors.sql.toolbar.select",tooltip:"calc.editors.sql.toolbar.select",onClick:e=>this.replaceText(e,"select distinct")},{label:"from",onClick:this.replaceText,tooltipTitle:"calc.editors.sql.toolbar.from",tooltip:"calc.editors.sql.toolbar.from"},{label:"where",onClick:this.replaceText,tooltipTitle:"calc.editors.sql.toolbar.where",tooltip:"calc.editors.sql.toolbar.where"},{label:"group",tooltipTitle:"calc.editors.sql.toolbar.group-by",tooltip:"calc.editors.sql.toolbar.group-by",onClick:e=>this.replaceText(e,"group by")},{label:"having",onClick:this.replaceText,tooltipTitle:"calc.editors.sql.toolbar.having",tooltip:"calc.editors.sql.toolbar.having"},{label:"order",tooltipTitle:"calc.editors.sql.toolbar.order-by",tooltip:"calc.editors.sql.toolbar.order-by",onClick:e=>this.replaceText(e,"order by")},{label:"limit",onClick:this.replaceText,tooltipTitle:"calc.editors.sql.toolbar.limit",tooltip:"calc.editors.sql.toolbar.limit"},{label:o.createElement(et.a,{className:"showOnSM",icon:Ze.i}),onClick:e=>this.props.relInsertModalToggle,tooltipTitle:"calc.editors.insert-relation-title",tooltip:"calc.editors.insert-relation-tooltip"}]},{math:!0,items:[{label:o.createElement("i",{className:"fa fa-calendar"}),onClick:e=>this.replaceText(e,"date('1970-01-01')"),tooltipTitle:"calc.editors.sql.toolbar.insert-date",tooltip:"calc.editors.sql.toolbar.insert-date-content"}]}]})}replaceText(e,t){this.editorBase&&this.editorBase.replaceText(e,t)}replaceSelection(e,t){this.editorBase&&this.editorBase.replaceSelection(e,t)}}function Tt(e,t){return e[t]?e[t]:e.fallback}var Mt=n("./node_modules/react-toastify/esm/react-toastify.js"),xt=(n("./node_modules/react-toastify/dist/ReactToastify.css"),{tabs:s.a.bool,pills:s.a.bool,vertical:s.a.oneOfType([s.a.bool,s.a.string]),horizontal:s.a.string,justified:s.a.bool,fill:s.a.bool,navbar:s.a.bool,card:s.a.bool,tag:ot.o,className:s.a.string,cssModule:s.a.object}),Rt=function(e){var t=e.className,n=e.cssModule,r=e.tabs,o=e.pills,a=e.vertical,s=e.horizontal,l=e.justified,u=e.fill,c=e.navbar,d=e.card,h=e.tag,f=Object(p.a)(e,["className","cssModule","tabs","pills","vertical","horizontal","justified","fill","navbar","card","tag"]),g=Object(ot.k)(rt()(t,c?"navbar-nav":"nav",!!s&&"justify-content-"+s,function(e){return!1!==e&&(!0===e||"xs"===e?"flex-column":"flex-"+e+"-column")}(a),{"nav-tabs":r,"card-header-tabs":d&&r,"nav-pills":o,"card-header-pills":d&&o,"nav-justified":l,"nav-fill":u}),n);return i.a.createElement(h,Object(m.a)({},f,{className:g}))};Rt.propTypes=xt,Rt.defaultProps={tag:"ul",vertical:!1};var Lt=Rt,At=n("./node_modules/@babel/runtime/helpers/esm/objectSpread.js"),Dt=n("./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js"),Nt=n("./node_modules/react-popper/lib/esm/Manager.js"),Pt=i.a.createContext({}),It={a11y:s.a.bool,disabled:s.a.bool,direction:s.a.oneOf(["up","down","left","right"]),group:s.a.bool,isOpen:s.a.bool,nav:s.a.bool,active:s.a.bool,addonType:s.a.oneOfType([s.a.bool,s.a.oneOf(["prepend","append"])]),size:s.a.string,tag:ot.o,toggle:s.a.func,children:s.a.node,className:s.a.string,cssModule:s.a.object,inNavbar:s.a.bool,setActiveFromChild:s.a.bool},Ht=[ot.j.space,ot.j.enter,ot.j.up,ot.j.down,ot.j.end,ot.j.home],Yt=function(e){function t(t){var n;return(n=e.call(this,t)||this).addEvents=n.addEvents.bind(Object(Dt.a)(n)),n.handleDocumentClick=n.handleDocumentClick.bind(Object(Dt.a)(n)),n.handleKeyDown=n.handleKeyDown.bind(Object(Dt.a)(n)),n.removeEvents=n.removeEvents.bind(Object(Dt.a)(n)),n.toggle=n.toggle.bind(Object(Dt.a)(n)),n.containerRef=i.a.createRef(),n}Object(G.a)(t,e);var n=t.prototype;return n.getContextValue=function(){return{toggle:this.toggle,isOpen:this.props.isOpen,direction:"down"===this.props.direction&&this.props.dropup?"up":this.props.direction,inNavbar:this.props.inNavbar,disabled:this.props.disabled}},n.componentDidMount=function(){this.handleProps()},n.componentDidUpdate=function(e){this.props.isOpen!==e.isOpen&&this.handleProps()},n.componentWillUnmount=function(){this.removeEvents()},n.getContainer=function(){return this.containerRef.current},n.getMenuCtrl=function(){return this._$menuCtrl||(this._$menuCtrl=this.getContainer().querySelector("[aria-expanded]")),this._$menuCtrl},n.getMenuItems=function(){return[].slice.call(this.getContainer().querySelectorAll('[role="menuitem"]'))},n.addEvents=function(){var e=this;["click","touchstart","keyup"].forEach((function(t){return document.addEventListener(t,e.handleDocumentClick,!0)}))},n.removeEvents=function(){var e=this;["click","touchstart","keyup"].forEach((function(t){return document.removeEventListener(t,e.handleDocumentClick,!0)}))},n.handleDocumentClick=function(e){if(!e||3!==e.which&&("keyup"!==e.type||e.which===ot.j.tab)){var t=this.getContainer();(!t.contains(e.target)||t===e.target||"keyup"===e.type&&e.which!==ot.j.tab)&&this.toggle(e)}},n.handleKeyDown=function(e){var t=this;if(!/input|textarea/i.test(e.target.tagName)&&(ot.j.tab!==e.which||"menuitem"===e.target.getAttribute("role")&&this.props.a11y)&&((-1!==Ht.indexOf(e.which)||e.which>=48&&e.which<=90)&&e.preventDefault(),!this.props.disabled&&(this.getMenuCtrl()===e.target&&(!this.props.isOpen&&[ot.j.space,ot.j.enter,ot.j.up,ot.j.down].indexOf(e.which)>-1?(this.toggle(e),setTimeout((function(){return t.getMenuItems()[0].focus()}))):this.props.isOpen&&e.which===ot.j.esc&&this.toggle(e)),this.props.isOpen&&"menuitem"===e.target.getAttribute("role"))))if([ot.j.tab,ot.j.esc].indexOf(e.which)>-1)this.toggle(e),this.getMenuCtrl().focus();else if([ot.j.space,ot.j.enter].indexOf(e.which)>-1)e.target.click(),this.getMenuCtrl().focus();else if([ot.j.down,ot.j.up].indexOf(e.which)>-1||[ot.j.n,ot.j.p].indexOf(e.which)>-1&&e.ctrlKey){var n=this.getMenuItems(),r=n.indexOf(e.target);ot.j.up===e.which||ot.j.p===e.which&&e.ctrlKey?r=0!==r?r-1:n.length-1:(ot.j.down===e.which||ot.j.n===e.which&&e.ctrlKey)&&(r=r===n.length-1?0:r+1),n[r].focus()}else if(ot.j.end===e.which){var o=this.getMenuItems();o[o.length-1].focus()}else if(ot.j.home===e.which){this.getMenuItems()[0].focus()}else if(e.which>=48&&e.which<=90)for(var i=this.getMenuItems(),a=String.fromCharCode(e.which).toLowerCase(),s=0;s-1?"menuitem":void 0,n=Object(ot.l)(this.props,["toggle"]),r=n.className,o=n.cssModule,a=n.divider,s=n.tag,l=n.header,u=n.active,c=Object(p.a)(n,["className","cssModule","divider","tag","header","active"]),d=Object(ot.k)(rt()(r,{disabled:c.disabled,"dropdown-item":!a&&!l,active:u,"dropdown-header":l,"dropdown-divider":a}),o);return"button"===s&&(l?s="h6":a?s="div":c.href&&(s="a")),i.a.createElement(s,Object(m.a)({type:"button"===s&&(c.onClick||this.props.toggle)?"button":void 0},c,{tabIndex:e,role:t,className:d,onClick:this.onClick}))},t}(i.a.Component);tn.propTypes=en,tn.defaultProps={tag:"button",toggle:!0},tn.contextType=Pt;var nn=tn,rn={tag:ot.o,active:s.a.bool,className:s.a.string,cssModule:s.a.object},on=function(e){var t=e.className,n=e.cssModule,r=e.active,o=e.tag,a=Object(p.a)(e,["className","cssModule","active","tag"]),s=Object(ot.k)(rt()(t,"nav-item",!!r&&"active"),n);return i.a.createElement(o,Object(m.a)({},a,{className:s}))};on.propTypes=rn,on.defaultProps={tag:"li"};var an=on,sn={tag:ot.o,innerRef:s.a.oneOfType([s.a.object,s.a.func,s.a.string]),disabled:s.a.bool,active:s.a.bool,className:s.a.string,cssModule:s.a.object,onClick:s.a.func,href:s.a.any},ln=function(e){function t(t){var n;return(n=e.call(this,t)||this).onClick=n.onClick.bind(Object(Dt.a)(n)),n}Object(G.a)(t,e);var n=t.prototype;return n.onClick=function(e){this.props.disabled?e.preventDefault():("#"===this.props.href&&e.preventDefault(),this.props.onClick&&this.props.onClick(e))},n.render=function(){var e=this.props,t=e.className,n=e.cssModule,r=e.active,o=e.tag,a=e.innerRef,s=Object(p.a)(e,["className","cssModule","active","tag","innerRef"]),l=Object(ot.k)(rt()(t,"nav-link",{disabled:s.disabled,active:r}),n);return i.a.createElement(o,Object(m.a)({},s,{ref:a,onClick:this.onClick,className:l}))},t}(i.a.Component);ln.propTypes=sn,ln.defaultProps={tag:"a"};var un=ln,cn=n("./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js"),dn=i.a.createContext({}),hn={tag:ot.o,activeTab:s.a.any,className:s.a.string,cssModule:s.a.object},fn=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={activeTab:n.props.activeTab},n}return Object(G.a)(t,e),t.getDerivedStateFromProps=function(e,t){return t.activeTab!==e.activeTab?{activeTab:e.activeTab}:null},t.prototype.render=function(){var e=this.props,t=e.className,n=e.cssModule,r=e.tag,o=Object(ot.l)(this.props,Object.keys(hn)),a=Object(ot.k)(rt()("tab-content",t),n);return i.a.createElement(dn.Provider,{value:{activeTabId:this.state.activeTab}},i.a.createElement(r,Object(m.a)({},o,{className:a})))},t}(o.Component);Object(cn.polyfill)(fn);var mn=fn;fn.propTypes=hn,fn.defaultProps={tag:"div"};var pn={tag:ot.o,className:s.a.string,cssModule:s.a.object,tabId:s.a.any};function gn(e){var t=e.className,n=e.cssModule,r=e.tabId,o=e.tag,a=Object(p.a)(e,["className","cssModule","tabId","tag"]),s=function(e){return Object(ot.k)(rt()("tab-pane",t,{active:r===e}),n)};return i.a.createElement(dn.Consumer,null,(function(e){var t=e.activeTabId;return i.a.createElement(o,Object(m.a)({},a,{className:s(t)}))}))}gn.propTypes=pn,gn.defaultProps={tag:"div"};var yn=n("./node_modules/reactstrap/es/Modal.js"),bn=n("./node_modules/reactstrap/es/ModalHeader.js"),vn=n("./node_modules/reactstrap/es/ModalBody.js"),_n=n("./node_modules/reactstrap/es/ModalFooter.js");n("./src/calc2/components/groupRelationList.scss");const wn=({tables:e,replace:t,onElementClick:n})=>o.createElement("div",{className:"groupRelationList"},o.createElement("ul",null,e.map(e=>{const{columnNames:r,columnTypes:i,tableName:a}=e;return o.createElement("li",{key:a},o.createElement("span",{className:"clickable",onClick:()=>{t&&t(a),n&&n()}},a),o.createElement("ul",null,e.columnNames.map((e,r)=>o.createElement("li",{key:e},o.createElement("span",{className:"clickable",onClick:()=>{t&&t(e),n&&n()}},e," ",o.createElement("small",{className:"muted text-muted"},i[r]))," "))))})));var En=n("./node_modules/immutable/dist/immutable.es.js");class jn extends o.Component{constructor(e){super(e),this.getGroupsByHeadlineName=Object(yt.a)((e,t)=>{let n=En.b();const o=e=>Tt(e,t);for(const t of e.values()){let e=null;!0===t.isDraft?e=r.c.t("calc.maintainer-groups.temp"):t.category&&(e=o({lang:"",fallback:t.groupInfo.maintainerGroup}));const i=[...n.get(e)||[],t];i.sort((e,t)=>o(e.groupName).localeCompare(o(t.groupName))),n=n.set(e,i)}return n}),this.gistLink=""}render(){const{current:e,locale:t}=this.props,n=this.getGroupsByHeadlineName(this.props.groups,t);return o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col-md-6"},o.createElement("h4",null,o.createElement(r.b,{id:"calc.menu.headline"})),o.createElement("ul",{id:"groups-selector-list"},n.map((n,i)=>o.createElement("li",{key:`${i}`},i||o.createElement(r.b,{id:"calc.maintainer-groups.misc"}),o.createElement("ul",null,n.map((n,r)=>{const{groupName:i,groupInfo:a}=n,s=`/relax/calc/${a.source}/${a.id}/${a.filename}/${a.index}`;return o.createElement("li",{key:s,className:nt({active:e&&e.group.groupInfo===n.groupInfo})},o.createElement(Qe,{to:s,onClick:()=>{this.props.datasetLoaded()}},Tt(i,t)))})))).valueSeq().toArray())),o.createElement("div",{className:"col-md-6 align-text-top align-top"},o.createElement("h4",null,o.createElement(r.b,{id:"calc.menu.load-gist-headline"})),o.createElement("input",{type:"text",className:"form-control gist-load-input",placeholder:"","data-i18n":"[placeholder]calc.menu.load-gist-insert-placeholder",size:32,onChange:e=>{this.gistLink="/relax/calc/gist/"+e.target.value}}),o.createElement("button",{onClick:()=>{document.location.href=this.gistLink,this.props.datasetLoaded()},type:"button",className:"fullWidthBtn btn btn-secondary gist-load-btn"},o.createElement(r.b,{id:"calc.menu.load-gist-button"})),o.createElement("hr",null),o.createElement("h4",null,o.createElement(r.b,{id:"calc.menu.create-own-dataset-headline"})),o.createElement("p",null,o.createElement(r.b,{id:"calc.menu.create-own-dataset-text"})," ",o.createElement(Xe,{to:"/help#tutorial-maintainer"},o.createElement(r.b,{id:"calc.menu.create-own-dataset-text-link"}))),o.createElement("button",{type:"button",className:"fullWidthBtn btn btn-secondary open-group-new-btn",onClick:()=>{this.props.loadGroupTab(!1)}},o.createElement("i",{className:"fa fa-plus-square-o fa-lg"})," ",o.createElement("span",null,o.createElement(r.b,{id:"calc.menu.create-own-dataset-button-new"}))),o.createElement("button",{type:"button",className:"fullWidthBtn btn btn-secondary open-group-current-btn",onClick:()=>{this.props.loadGroupTab(!0)}},o.createElement("i",{className:"fa fa-pencil-square-o fa-lg"})," ",o.createElement("span",null,o.createElement(r.b,{id:"calc.menu.create-own-dataset-button-modify"}))))))}}const Cn=z(e=>({groups:e.groups.groups,current:e.groups.current,locale:e.session.locale}))(jn);var Sn={light:s.a.bool,dark:s.a.bool,full:s.a.bool,fixed:s.a.string,sticky:s.a.string,color:s.a.string,role:s.a.string,tag:ot.o,className:s.a.string,cssModule:s.a.object,expand:s.a.oneOfType([s.a.bool,s.a.string])},On=function(e){var t,n=e.expand,r=e.className,o=e.cssModule,a=e.light,s=e.dark,l=e.fixed,u=e.sticky,c=e.color,d=e.tag,h=Object(p.a)(e,["expand","className","cssModule","light","dark","fixed","sticky","color","tag"]),f=Object(ot.k)(rt()(r,"navbar",function(e){return!1!==e&&(!0===e||"xs"===e?"navbar-expand":"navbar-expand-"+e)}(n),((t={"navbar-light":a,"navbar-dark":s})["bg-"+c]=c,t["fixed-"+l]=l,t["sticky-"+u]=u,t)),o);return i.a.createElement(d,Object(m.a)({},h,{className:f}))};On.propTypes=Sn,On.defaultProps={tag:"nav",expand:!1};var kn=On,Tn={tag:ot.o,className:s.a.string,cssModule:s.a.object},Mn=function(e){var t=e.className,n=e.cssModule,r=e.tag,o=Object(p.a)(e,["className","cssModule","tag"]),a=Object(ot.k)(rt()(t,"navbar-brand"),n);return i.a.createElement(r,Object(m.a)({},o,{className:a}))};Mn.propTypes=Tn,Mn.defaultProps={tag:"a"};var xn=Mn,Rn=n("./node_modules/reactstrap/lib/NavLink.js"),Ln=n.n(Rn);class An extends o.Component{constructor(e){super(e),this.state={},this.changeLocale=this.changeLocale.bind(this)}changeLocale(e){r.c.language!==e&&window.confirm("Reload page to change language?")&&(r.c.changeLanguage(e),window.location.reload())}render(){return o.createElement(kn,{color:"light",light:!0,expand:"md",className:"desktopNavbar"},o.createElement(xn,{href:"/"},"RelaX"),o.createElement(Lt,{className:"ml-auto",navbar:!0},o.createElement(an,{className:"navItemSpace"},o.createElement(Ln.a,{href:"/relax/calc"},o.createElement(et.a,{icon:Ze.c})," Calculator")),o.createElement(Bt,{nav:!0,inNavbar:!0,className:"navItemSpace"},o.createElement(Gt,{nav:!0,caret:!0},o.createElement(et.a,{icon:Ze.j})," ",o.createElement(r.b,{id:"calc.navigation.language"})),o.createElement(Zt,{right:!0},o.createElement(nn,{onClick:()=>this.changeLocale("en")},"en"),o.createElement(nn,{onClick:()=>this.changeLocale("de")},"de"),o.createElement(nn,{onClick:()=>this.changeLocale("es")},"es"),o.createElement(nn,{onClick:()=>this.changeLocale("kr")},"kr"),o.createElement(nn,{onClick:()=>this.changeLocale("pt")},"pt"))),o.createElement(an,{className:"navItemSpace"},o.createElement(Ln.a,{href:"https://github.com/dbis-uibk/relax/issues"},o.createElement(et.a,{icon:Ze.f})," ",o.createElement(r.b,{id:"calc.navigation.feedback"}))),o.createElement(an,{className:"navItemSpace"},o.createElement(Ln.a,{href:"/relax/help"},o.createElement(et.a,{icon:Ze.p})," ",o.createElement(r.b,{id:"calc.navigation.help"}))),o.createElement(an,{className:"navItemSpace"},o.createElement(Ln.a,{href:"/relax/imprint"},o.createElement(et.a,{icon:Ze.a})," ",o.createElement(r.b,{id:"calc.navigation.imprint"})))))}}n("./src/calc2/components/calculator.scss");class Dn extends o.Component{constructor(e){super(e),this.refEditorRelalg=o.createRef(),this.refEditorSql=o.createRef(),this.refEditorGroup=o.createRef(),Mt.b.configure(),this.state={activeTab:"relalg",datasetModal:!1,relationModal:!1},this.getCurrentEditor=this.getCurrentEditor.bind(this),this.toggleDatasetModal=this.toggleDatasetModal.bind(this),this.insertRelationToggle=this.insertRelationToggle.bind(this),this.loadGroupEditor=this.loadGroupEditor.bind(this)}toggleDatasetModal(){this.setState({datasetModal:!this.state.datasetModal})}insertRelationToggle(){this.setState({relationModal:!this.state.relationModal})}changeLocale(e){r.c.language!==e&&window.confirm("Reload page to change language?")&&(r.c.changeLanguage(e),window.location.reload())}getCurrentEditor(){switch(this.state.activeTab){case"sql":return this.refEditorSql;case"relalg":return this.refEditorRelalg;case"group":return this.refEditorGroup}}loadGroupEditor(e){let t="-- this is an example\ngroup: nameOfTheNewGroup \n\nA = {\na:string, b:number\nexample, 42\n}";!0===e&&(t=this.props.group.definition),this.setState({activeTab:"group"},()=>{const e=this.getCurrentEditor().current;e&&e.editorBase.state.editor.setValue(t),this.toggleDatasetModal()})}render(){const{group:e,locale:t}=this.props,{activeTab:n}=this.state;return o.createElement("div",{className:"view-max"},o.createElement(An,null),o.createElement("div",{className:"calculator"},o.createElement(Mt.a,{enableMultiContainer:!0,position:Mt.b.POSITION.TOP_RIGHT}),o.createElement("div",{className:"row"},o.createElement("div",{className:"d-none d-xs-block d-sm-block d-md-block col-lg-1 col-xl-2"}),o.createElement("div",{className:"groups-container col-xs-2 col-sm-2 col-md-2 col-lg-2 col-xl-2"},o.createElement("button",{className:"btn btn-default dropdown-toggle",type:"button",id:"dropdownMenu1",onClick:this.toggleDatasetModal,style:{width:"100%",textAlign:"left",textOverflow:"ellipsis",overflow:"hidden"}},o.createElement("span",null,"Select DB (",Tt(e.groupName,t),")"),o.createElement("span",{className:"caret",style:{display:"block",position:"absolute",top:"50%",right:"10px"}})),o.createElement("div",null,o.createElement(wn,{tables:e.tables,replace:e=>{const t=this.getCurrentEditor();t&&t.current&&t.current.replaceSelection(e)},onElementClick:null}))),o.createElement("div",{className:"calculator-container col-xs-12 col-sm-12 col-md-12 col-lg-8 col-xl-6"},o.createElement(Lt,{tabs:!0},o.createElement(Bt,{nav:!0,inNavbar:!0,className:"showOnSM"},o.createElement(Gt,{nav:!0},o.createElement(et.a,{icon:Ze.b})),o.createElement(Zt,null,o.createElement(nn,{href:"/relax/calc"},o.createElement(et.a,{icon:Ze.c})," ",o.createElement(r.b,{id:"calc.navigation.calc"})),o.createElement(nn,{href:"/relax/help"},o.createElement(et.a,{icon:Ze.f})," ",o.createElement(r.b,{id:"calc.navigation.help"})),o.createElement(nn,{href:"https://github.com/dbis-uibk/relax/issues"},o.createElement(et.a,{icon:Ze.p})," ",o.createElement(r.b,{id:"calc.navigation.feedback"})),o.createElement(nn,{onClick:this.toggleDatasetModal},o.createElement(et.a,{icon:Ze.g})," ",o.createElement(r.b,{id:"calc.menu.datasets"})),o.createElement(nn,{divider:!0}),o.createElement(nn,{onClick:()=>this.changeLocale("en")},"en"),o.createElement(nn,{onClick:()=>this.changeLocale("de")},"de"),o.createElement(nn,{onClick:()=>this.changeLocale("es")},"es"),o.createElement(nn,{onClick:()=>this.changeLocale("kr")},"kr"))),o.createElement(an,null,o.createElement(un,{className:nt({active:"relalg"===n}),onClick:()=>{this.setState({activeTab:"relalg"})}},o.createElement("span",{className:"hideOnSM"},o.createElement(r.b,{id:"calc.editors.ra.tab-name"})),o.createElement("span",{className:"showOnSM"},o.createElement(r.b,{id:"calc.editors.ra.tab-name-short"})))),o.createElement(an,null,o.createElement(un,{className:nt({active:"sql"===n}),onClick:()=>{this.setState({activeTab:"sql"})}},o.createElement("span",{className:"hideOnSM"},o.createElement(r.b,{id:"calc.editors.sql.tab-name"})),o.createElement("span",{className:"showOnSM"},o.createElement(r.b,{id:"calc.editors.sql.tab-name-short"})))),o.createElement(an,null,o.createElement(un,{className:nt({active:"group"===n}),onClick:()=>{this.setState({activeTab:"group"})}},o.createElement("span",{className:"hideOnSM"},o.createElement(r.b,{id:"calc.editors.group.tab-name"})),o.createElement("span",{className:"showOnSM"},o.createElement(r.b,{id:"calc.editors.group.tab-name-short"}))))),o.createElement(mn,{activeTab:this.state.activeTab,className:"tab-content-border"},o.createElement(gn,{tabId:"relalg"},o.createElement(wt,{group:e,ref:this.refEditorRelalg,relInsertModalToggle:this.insertRelationToggle})),o.createElement(gn,{tabId:"sql"},o.createElement(kt,{group:e,ref:this.refEditorSql,relInsertModalToggle:this.insertRelationToggle})),o.createElement(gn,{tabId:"group"},o.createElement(St,{group:e,ref:this.refEditorGroup,setDraft:this.props.setDraft}))))),o.createElement(yn.a,{isOpen:this.state.datasetModal,toggle:this.toggleDatasetModal},o.createElement(bn.a,{toggle:this.toggleDatasetModal},Tt(e.groupName,t)),o.createElement(vn.a,null,o.createElement("div",null,o.createElement(Cn,{datasetLoaded:()=>{this.setState({datasetModal:!1})},loadGroupTab:e=>{this.loadGroupEditor(e)}}))),o.createElement(_n.a,null,o.createElement(zt.a,{color:"secondary",onClick:this.toggleDatasetModal},Object(r.d)("calc.result.modal.close")))),o.createElement(yn.a,{isOpen:this.state.relationModal,toggle:this.insertRelationToggle},o.createElement(bn.a,{toggle:this.insertRelationToggle},Tt(e.groupName,t)),o.createElement(vn.a,null,o.createElement(wn,{tables:e.tables,replace:e=>{const t=this.getCurrentEditor();t&&t.current&&t.current.replaceSelection(e)},onElementClick:this.insertRelationToggle})),o.createElement(_n.a,null,o.createElement(zt.a,{color:"secondary",onClick:this.insertRelationToggle},Object(r.d)("calc.result.modal.close"))))))}}class Nn extends o.Component{constructor(e){super(e),this.query="",this.success="",this.result="",this.state={},this.query=atob(e.params.query)}componentDidMount(){this.runQuery(this.query)}runQuery(e){try{const{group:t}=this.props,n={};t.tables.forEach(e=>{n[e.tableName]=e.relation});const o=Object(vt.b)(e,Object.keys(n));if(Object(vt.j)(o,n),null===o.child)throw o.assignments.length>0?new Error(Object(r.d)("calc.messages.error-query-missing-assignments-found")):new Error(Object(r.d)("calc.messages.error-query-missing"));const i=Object(vt.h)(o,n);i.check(),this.result=JSON.stringify(i.getResult()),this.success="true"}catch(e){this.success="false",this.result=e.toString()}}render(){return o.createElement("div",{id:"apiContainer"},o.createElement("div",{id:"success"},this.success),o.createElement("div",{id:"query"},this.query),o.createElement("div",{id:"result"},this.result))}}var Pn=n("./node_modules/query-string/index.js"),In=n.n(Pn);class Hn extends o.Component{constructor(e){super(e),this.apiView=!1,this.params={},this.init=!1}componentDidMount(){this.apiView="api"==this.props.location.pathname.split("/")[2],this.params=In.a.parse(this.props.location.search)}componentDidUpdate(e){const{params:t}=this.props.match,{params:n}=e.match;!1!==this.init&&t.source===n.source&&t.id===n.id&&t.filename===n.filename&&t.index===n.index||(this.init=!0,this.loadGroup(this.props))}loadGroup(e){const{source:t,id:n,filename:r,index:o}=e.match.params;this.props.loadGroup(t,n,r,Number.parseInt(o,10),"","")}componentWillReceiveProps(e){const{params:t}=this.props.match,{params:n}=e.match;n.source!==t.source||n.id!==t.id||n.filename!==t.filename||(n.index,t.index)}render(){const{locale:e}=this.props,{current:t}=this.props.groups;return null!==t?1==this.apiView?o.createElement(Nn,{group:t.group,locale:e,params:this.params}):o.createElement(Dn,{group:t.group,locale:e,setDraft:this.props.setDraft}):o.createElement("div",null,"loading ...")}}const Yn=z(e=>({groups:e.groups,locale:e.session.locale}),e=>({loadGroup:(t,n,r,o,i,a)=>{e({type:"GROUPS_LOAD_REQUEST",source:t,id:n,maintainer:i,maintainerGroup:a,setCurrent:{filename:r,index:o}})},setDraft:t=>{e({type:"GROUP_SET_DRAFT",draft:t})}}))(Hn);var Fn=n("./node_modules/jquery/dist/jquery.js"),Wn=n("./node_modules/railroad-diagrams/railroad-diagrams.js");n("./node_modules/railroad-diagrams/railroad-diagrams.css");class Bn extends o.Component{componentDidMount(){const e=q.findDOMNode(this);if(!e)throw new Error("could not find node");this.props.diagram.addTo(e)}shouldComponentUpdate(e){return this.props.diagram!==e.diagram}render(){return o.createElement("div",null)}}n("./src/calc2/views/help.css");class Un extends o.Component{constructor(e){super(e),this.state={},this.changeLocale=this.changeLocale.bind(this)}changeLocale(e){r.c.language!==e&&window.confirm("Reload page to change language?")&&(r.c.changeLanguage(e),window.location.reload())}render(){return o.createElement(kn,{color:"light",light:!0,expand:"md",className:"mobileNavbar"},o.createElement(Bt,null,o.createElement(Gt,{nav:!0},o.createElement(et.a,{icon:Ze.b})),o.createElement(Zt,null,o.createElement(nn,{href:"/relax/calc"},o.createElement(et.a,{icon:Ze.c})," ",o.createElement(r.b,{id:"calc.navigation.calc"})),o.createElement(nn,{href:"/relax/help"},o.createElement(et.a,{icon:Ze.f})," ",o.createElement(r.b,{id:"calc.navigation.help"})),o.createElement(nn,{href:"/relax/imprint"},o.createElement(et.a,{icon:Ze.a})," ",o.createElement(r.b,{id:"calc.navigation.imprint"})),o.createElement(nn,{href:"https://github.com/dbis-uibk/relax/issues"},o.createElement(et.a,{icon:Ze.p})," ",o.createElement(r.b,{id:"calc.navigation.feedback"})),o.createElement(nn,{divider:!0}),o.createElement(nn,{onClick:()=>this.changeLocale("en")},"en"),o.createElement(nn,{onClick:()=>this.changeLocale("de")},"de"),o.createElement(nn,{onClick:()=>this.changeLocale("es")},"es"),o.createElement(nn,{onClick:()=>this.changeLocale("kr")},"kr"))),o.createElement(xn,{href:"/"},"RelaX"))}}class zn extends o.Component{componentDidMount(){const e=Fn("#toc");let t=0,n=null,r=null,o=null;Fn("h2, h3, h4, h5, h6").each((function(){const i=Fn(this),a=i.attr("name")||i.attr("id")||"tocId"+t++;i.attr("name",a),i.attr("id",a);const s=''+i.text()+"";if(i.is("h2"))e.append(Fn(`
        ${s}
          `)),n=e.find("ul:last");else if(i.is("h3")){if(!n)throw new Error("malformed headings");n.append(Fn(`
        • ${s}
          • `)),r=n.find("ul:last")}else if(i.is("h4")){if(!r)throw new Error("malformed headings");r.append(Fn(`
          • ${s}
            • `)),o=r.find("ul:last")}else{if(!o)throw new Error("malformed headings");o.append(`
            • ${s}
            • `)}})),Fn("h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((function(){Fn(this).append(` `)}))}render(){return o.createElement("div",{className:"view-max"},o.createElement(An,null),o.createElement(Un,null),o.createElement("div",{className:"view-content"},o.createElement("div",{className:"container"},o.createElement("h1",{id:"help"},"RelaX - Help"),o.createElement("div",{id:"toc"}),o.createElement("h2",{id:"tutorial-user"},"Tutorial - user"),o.createElement("h3",{id:"tutorial-user-coreconcepts"},"The core concepts"),o.createElement("p",null,"The goal of this tutorial is to give a quick introduction how to use the relational algebra calculator and its concepts. It assumes that you already know the relational algebra or are learning it from other sources."),o.createElement("p",null,"There is no real standard for the relational algebra like there is for SQL. So every book or teacher might have its slightly different interpretation and notation.",o.createElement("br",null),'The goal of this progam was to support the most commonly used "mathematical" notation used by ',o.createElement("a",{href:"http://infolab.stanford.edu/~ullman/dscb.html"},"Database Systems The Complete Book 2nd Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom"),", ",o.createElement("a",{href:"http://www3.in.tum.de/teaching/bookDBMSeinf/",lang:"de"},"Datenbanksysteme: Eine Einführung by Alfons Kemper and André Eickler")," and ",o.createElement("a",{href:"http://en.wikipedia.org/wiki/Relational_algebra"},"Wikipedia - Relational Algebra")," and others."),o.createElement("h4",{id:"tutorial-user-relations"},"relations"),o.createElement("p",null,"The core element of the calculator is the relation (or table) which consists of a fixed number of attributes (or columns) in a fixed order (this is called the schema of the relation) and a set of tuples or rows containing the specific values."),o.createElement("p",null,"Each attribute has three distinct properties: its type, its position and its name."),o.createElement("p",null,"The type or domain of an attribute is either ",o.createElement("i",null,"string"),", ",o.createElement("i",null,"number"),", ",o.createElement("i",null,"date")," or ",o.createElement("i",null,"boolean"),".",o.createElement("br",null),"The type is used for example to determine if two values can be compared in a boolean expression or if two schemas are union compatible. In most cases the type of the attributes are obvious if you look at the values."),o.createElement("p",null,"The position of each attribute in a schema is fixed and can be used to adress the attributes.",o.createElement("br",null),"An example would be the projection of the first and third attribute or column of an arbitrary relation R: ",o.createElement("code",{className:"example block"},"π [1], [3] ( R )")),o.createElement("p",null,"The full qualified name of the attribute is a unique identifier of the attribute within the schema of its relation. It consists of the name itself and a relation qualifier and are written like in SQL as ",o.createElement("code",null,"R.a"),"where a is the name and R is the relation qualifier.",o.createElement("br",null),"An example would be the projectoin of the attributes a, b from a relation R: ",o.createElement("code",{className:"example block"},"π R.a, R.b ( R )"),o.createElement("br",null),"The default relation qualifier of each attribute is the name of its relation.",o.createElement("br",null),"If the attributes name without the qualifier is unique within the relation's schema, it also can be used to address a specific attribute.",o.createElement("br",null),"The previous example could also be written as ",o.createElement("code",null,"π a, b ( R )"),"."),o.createElement("p",null,"Each relation has a set of tuples (or rows). This means that there are no duplicate tuples within one relation and the duplicate-elimination is implicitly executed after every single step of the calculation.",o.createElement("br",null),"The tuples in the calculator have a defined order and unlike a normal database system all operations are implemented to preserve that order. This should help the users to see what has changed from one step to the next."),o.createElement("p",null,"so far we covered that"),o.createElement("ul",null,o.createElement("li",null,"relations are the core elements,"),o.createElement("li",null,"relations have a schema and a set of tuples,"),o.createElement("li",null,"each attribute in the schema has",o.createElement("ul",null,o.createElement("li",null,"data-type"),o.createElement("li",null,"a position"),o.createElement("li",null,"a fully qualified name (RELATION.attributename)"))),o.createElement("li",null,"and that each attribute can be addressed within an operation using",o.createElement("ul",null,o.createElement("li",null,"its position e.g. ",o.createElement("code",{className:""},"π [1], [2] ( R )"),","),o.createElement("li",null,"the attribute name e.g. ",o.createElement("code",{className:""},"π a, b ( R )")),o.createElement("li",null,"or its full quallified name if the unqualified is not unique e.g. ",o.createElement("code",{className:""},"π R.a, S.a ( R x S )"))))),o.createElement("h3",{id:"tutorial-user-plain-text-notation"},"Alternative plain text notation"),o.createElement("p",null,"Before we introduce how to use the operators this should be a quick introduction of a very handy feature of the relational algebra calculator: the alternative plain text notation"),o.createElement("p",null,'The "classNameic" mathematical notation uses greek letters like π, σ for the unary operations and special symbols like the join symbol ',o.createElement("span",{className:"math"},"⋈")," or the union symbol ",o.createElement("span",{className:"math"},"∪"),"for some binary operations.",o.createElement("br",null),"This symbols can be entered using the toolbar at the top of the editor."),o.createElement("p",null,'This calculator also supports a alternative syntax for all this symbols that follows two very simple rules: Every greek letter can be substituted with its name spelled out ("pi" for π, "gamma" for γ) and every other symbol has an equivalent name that is borrowed from SQL, programming languages like C and ',o.createElement("a",{href:"http://en.wikipedia.org/wiki/Set_theory"},"Set theory"),"."),o.createElement("p",null,"This substitutions should be easy to read and much more important very easy to write because you don't need any toolbar or mouse. The calculator also supports autocomplete: just press [CTRL]+[SPACE] to complete the current keyword.",o.createElement("br",null),"This feature should help you to write your statements more quickly and fluently."),o.createElement("code",{className:"example block"},"π R.a, S.a, S.b σ R.a = S.a ∧ ( R.a > 5 ∨ R.a ","<"," 0 ) ( R ⨯ S )"),"is equivalent to:",o.createElement("code",{className:"example block"},"pi R.a, S.a, S.b sigma R.a = S.a and ( R.a > 5 or R.a ","<"," 0 ) ( R cross join S )"),"In the following table you can see a list of all supported substitutions:",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"classNameical notation"),o.createElement("th",null,"alternative notation"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",{className:"math"},"π"),o.createElement("td",null,"pi")),o.createElement("tr",null,o.createElement("td",{className:"math"},"σ"),o.createElement("td",null,"sigma")),o.createElement("tr",null,o.createElement("td",{className:"math"},"ρ"),o.createElement("td",null,"rho")),o.createElement("tr",null,o.createElement("td",{className:"math"},"τ"),o.createElement("td",null,"tau")),o.createElement("tr",null,o.createElement("td",{className:"math"},"γ"),o.createElement("td",null,"gamma")),o.createElement("tr",null,o.createElement("td",{className:"math"},"∩"),o.createElement("td",null,"intersect")),o.createElement("tr",null,o.createElement("td",{className:"math"},"∪"),o.createElement("td",null,"union")),o.createElement("tr",null,o.createElement("td",{className:"math"},"-"),o.createElement("td",null,"\\")),o.createElement("tr",null,o.createElement("td",{className:"math"},"÷"),o.createElement("td",null,"/")),o.createElement("tr",null,o.createElement("td",{className:"math"},"⨯"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"x"),o.createElement("li",null,"cross join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"⋈"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"join"),o.createElement("li",null,"inner join"),o.createElement("li",null,"natural join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"⟕"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"left join"),o.createElement("li",null,"left outer join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"⟖"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"right join"),o.createElement("li",null,"right outer join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"⟗"),o.createElement("td",null,"full outer join")),o.createElement("tr",null,o.createElement("td",{className:"math"},"⋉"),o.createElement("td",null,"left semi join")),o.createElement("tr",null,o.createElement("td",{className:"math"},"⋊"),o.createElement("td",null,"right semi join")),o.createElement("tr",null,o.createElement("td",{className:"math"},"▷"),o.createElement("td",null,o.createElement("ul",null,o.createElement("li",null,"anti semi join"),o.createElement("li",null,"anti join")))),o.createElement("tr",null,o.createElement("td",{className:"math"},"←"),o.createElement("td",null,"<","-",o.createElement("code",{className:"example block"},"pi new_name ","<","- a ( R )"))),o.createElement("tr",null,o.createElement("td",{className:"math"},"→"),o.createElement("td",null,"->",o.createElement("code",{className:"example block"},"pi a -> new_name ( R )")))))),o.createElement("ul",null,o.createElement("li",null,"schema preserving operations - operations where the resulting relation has the same schema as its first argument-relation:",o.createElement("ul",null,o.createElement("li",null,"selection"),o.createElement("li",null,"union"),o.createElement("li",null,"intersection"),o.createElement("li",null,"subtraction"),o.createElement("li",null,"orderby"),o.createElement("li",null,"left outer join"),o.createElement("li",null,"left semi join"),o.createElement("li",null,"anti join")))),o.createElement("h3",{id:"tutorial-user-relalg"},"Relational algebra"),o.createElement("p",null,"For this Part we use the ",o.createElement("a",{href:"calc.htm?data=gist:2cfb981fbc5676182d64"},'"bank example" Dataset')," with 3 relations: ",o.createElement("i",null,"Customers"),", ",o.createElement("i",null,"Accounts")," and ",o.createElement("i",null,"PremiumCustomers"),". By convention relations start with a uppercase letter and attributes with a lower case letter."),o.createElement("h4",null,"Open and inspect dataset"),o.createElement("p",null,"Open the dataset used in this tutorial using the following link to the ",o.createElement("a",{href:"calc.htm?data=gist:2cfb981fbc5676182d64"},'"bank example" Dataset'),"."),o.createElement("p",null,"You find the relations and their attributes listed on the side and if you hover a relations name a preview of the first view tuples is displayed."),o.createElement("h4",{id:"tutorial-user-basic-query"},"The most basic query"),o.createElement("p",null,"After you have found the Dataset you can formulate the very first and most basic query in relational algebra: a relation without any further manipulation."),o.createElement("p",null,"Just enter the name of a relation into the code editor or click on the relation/attribute names to insert them into the code editor.",o.createElement("br",null),"Note that the editor supports auto completing the relation/attribute names of the current dataset and the operators with [CTRL]+[SPACE]"),o.createElement("p",null,"So if you want all tuples of the relation ",o.createElement("i",null,"Customer")," you should have the following statement: ",o.createElement("code",null,"Customer"),". And get all the tuples if you press the execute button or press [CTRL]+[RETURN]."),o.createElement("h4",{id:"tutorial-user-unary-operations"},"Unary operations"),o.createElement("p",null,"All unary operations have the same basic syntax ",o.createElement("code",null,o.createElement("i",null,"FUNCTION")," ARGUMENT ",o.createElement("strong",null,"("),"CHILD_EXPRESSION ",o.createElement("strong",null,")")),"."),o.createElement("p",{className:"hint"},"The braces around the ",o.createElement("code",null,"CHILD_EXPRESSION")," can be omitted. In this case the predefined ",o.createElement("a",{href:"#relalg-operator-precedence"},"operator precedence for relational algebra")," applies."),o.createElement("p",null,"A complete list of the supported relalg operations can be found here: ",o.createElement("a",{href:"#relalg-syntax"},"general syntax"),", ",o.createElement("a",{href:"#relalg-unary-operations"},"unary operations")," and ",o.createElement("a",{href:"#relalg-binary-operations"},"binary operations"),"."),o.createElement("p",null,"The projection is one of the basic operations that allow to choose which of the attributes of the parent relations should be included in the new one and in which order they should be."),o.createElement("p",null,"Renaming a relation (ρ) changes the qualifiers of all the relations attributes but does not touch the tuples."),o.createElement("p",null,"Renaming an attribute (ρ) only changes the name of a specific attribute (and leaves his relation-qualifier unchanged)."),o.createElement("p",null,"The statement ",o.createElement("code",null,"pi balance ( Accounts )")," returns a new relation with only the balance attribute."),o.createElement("p",null,"The next statement gets the balance with the account-id after renaming the relation to ",o.createElement("i",null,"A")," and renames one of the attributes."),o.createElement("code",{className:"example block"},"rho account_number ","<","- aid ( pi aid, A.balance ( rho A ( Accounts ) ) )"),o.createElement("p",{className:"hint"},"Like in SQL or most programming languages you can format your statement and use SQL like comments (with ",o.createElement("code",null,"-- ...")," or ",o.createElement("code",null,"/* ... */"),") to increase the readability."),o.createElement("p",null,"The next statement uses a selection to filter the tuples of a relation based on a boolean expression. The calculator supports complex boolean expression with functions and built in operator precedence.",o.createElement("br",null),"The attributes in the boolean expression can be given as name or numeric position like with the projection."),o.createElement("p",null,"The next statement selects all customers-ids of customers who have the same value for their firstname and lastname."),o.createElement("code",{className:"example block"},"-- this should return an relation with no tuples: pi cid ( sigma firstname=lastname ( Customers ) )"),o.createElement("p",null,"The next example uses a more complex expression to get all accounts with a balance over 100 or under -100."),o.createElement("code",{className:"example block"},"sigma balance > 100 or (balance*-1 > 100) ( Accounts ) -- (balance ","<"," -100) would also be correct"),o.createElement("p",null,"As a shorter alternative you can use a ",o.createElement("a",{href:"#relalg-valueexpr"},"function in your expression")," to get the same result:"),o.createElement("code",{className:"example block"},"sigma abs(balance) > 100 ( Accounts )"),o.createElement("h2",{id:"tutorial-maintainer"},"Tutorial - maintainer"),o.createElement("p",null,"Everybody can provide datasets that can be used in the relational algebra calculator and share them with others.",o.createElement("br",null),"We assume the scenario of a teacher wanting to provide a dataset for his/her students for this short tutorial."),o.createElement("p",null,"The datasets are specified in a simple text format and can be shared with others via ",o.createElement("a",{href:"https://gist.github.com/"},"GitHub Gists")," (a simple and free platform to share snippets).",o.createElement("br",null),"The shared gist gets an unique ID and the relational algebra calculator can load the dataset directly using this ID."),o.createElement("h3",{id:"tutorial-maintainer-create-dataset"},"Creating a dataset"),o.createElement("p",null,"The fist step is the creation of the dataset which is actually only a group of relation definitions with some additional information and is therefore refered as group in the specified format.",o.createElement("br",null),"The relations can then be used by the students to formulate the there statements.",o.createElement("br",null),"Lets assume we want to create a dataset of employees of a company."),"Every group definition starts with a simple header which (at least) contains the name of the group:",o.createElement("code",{className:"example block"},"group: bank example"),"every header field starts with the name of the field and is followed by a colon for single line values. The next (optional) header field we should specify is the description. It should contain information like who is maintaining this dataset or where to find additional information.",o.createElement("br",null),"In the description ",o.createElement("a",{href:"http://en.wikipedia.org/wiki/Markdown"},"Markdown")," can be used to format the text or set links to external resources.",o.createElement("p",null,"In our example we add a description that takes more than a single line and therefore we enclose the value in double brackets instead of using the colon."),o.createElement("code",{className:"example block"},"group: bank example description[[ the data for this dataset was generated using ","<","http://www.generatedata.com/> * the relation _Customers_ contains basic information about the customers of the bank. The relation _Accounts_ contains the basic information of a single account. Note that a customer can have any number of accounts. * the relation _PremiumCustomers_ contains the customer-ids of all customers with a total balance over 1000 ]]"),o.createElement("p",null,"The next step is to actually add the relations the students can use for their queries.",o.createElement("br",null),"The relation definitions are use the relational algebra syntax that can be used in this tool.",o.createElement("br",null),"Every relation is defined by a single variable assignment where the name of the variable is used as the relations name and the result of the expression defines the relation.",o.createElement("br",null),"The relalg expression can use all features that can be used in the tool and can also use other relations defined within the same dataset.",o.createElement("br",null),"Note that the name of the relation is used as the qualifier of each attribute/column."),o.createElement("p",null,"For the relation ",o.createElement("code",null,"Customers")," relation we use the ",o.createElement("a",{href:"#relalg-inline-relation"},"inline relation")," syntax as the most basic method to define the relation and can also be edited using the relation editor ",o.createElement("i",{className:"fa fa-table",title:"relation editor"})," which is a simple spread-sheet like editor. ",o.createElement("br",null),"The inline relations in combination with the editor should be very easy to use if you enter the data directly or if you have them as a csv/spread-sheet file."),o.createElement("code",{className:"example block"},"group: bank example\n\t\t\t\tdescription[[ the data for this dataset was generated using {'<'}http://www.generatedata.com/>\n\n\t\t\t\t* the relation _Customers_ contains basic information about the customers of the bank.\n\t\t\t\t* the relation _Accounts_ contains the basic information of a single account. Note that a customer can\n\t\t\t\thave any number of accounts.\n\t\t\t\t* the relation _PremiumCustomers_ contains the customer-ids of all customers with a total balance over\n\t\t\t\t1000\n\t\t\t\t]]\n\n\t\t\t\tCustomers = { cid firstname lastname\n\t\t\t\t1 Dexter Simpson\n\t\t\t\t2 Kaseem Gallagher\n\t\t\t\t3 Kuame Hamilton\n\t\t\t\t4 Robert Thompson\n\t\t\t\t5 Rhiannon Valentine\n\t\t\t\t6 Calvin Mays\n\t\t\t\t}\n\n\t\t\t\tAccounts = {\n\t\t\t\taid, cid, balance:number\n\t\t\t\t1, 1, 66\n\t\t\t\t2, 1, -304\n\t\t\t\t3, 2, 272\n\t\t\t\t4, 3, 3472\n\t\t\t\t5, 4, 975.7\n\t\t\t\t6, 4, 93\n\t\t\t\t7, 5, 534\n\t\t\t\t8, 5, -75.5\n\t\t\t\t}\n\t\t\t\t"),o.createElement("p",null,"As we can see the name of the relations are defined by the assignments.",o.createElement("br",null),"The inline-relations are enclosed by curly braces and contain the names of the attributes/columns in the first line and then a tuple/row per line where the values are simply separated by whitespace. You can also other seperators and can define the types explicitly as we can see at the Accounts relation. For further information can be found at ",o.createElement("a",{href:"#relalg-inline-relation"},"inline relation description"),"."),o.createElement("p",null,"Note that, unlike the variables used in a query, the definition of a new relation implicitly sets the attribute qualifier to the name of the relation. So the schema of the account relation is ",o.createElement("code",null,"(Accounts.aid, Accounts.cid, Accounts.balance)"),". This allows each attribute to be accessible with this name."),o.createElement("p",null,"The last relation we need to add in this example is the relation containing the banks premium Customers.",o.createElement("br",null),"They are specified by using the other two relations in a simple relational algebra statement that selects all customers with a total balance over 1000."),o.createElement("code",{className:"example block"},"group: bank example\n\t\t\t\tdescription[[ the data for this dataset was generated using {'<'}http://www.generatedata.com/>\n\n\t\t\t\t* the relation _Customers_ contains basic information about the customers of the bank.\n\t\t\t\t* the relation _Accounts_ contains the basic information of a single account. Note that a customer can\n\t\t\t\thave any number of accounts.\n\t\t\t\t* the relation _PremiumCustomers_ contains the customer-ids of all customers with a total balance over\n\t\t\t\t1000\n\t\t\t\t]]\n\n\t\t\t\tCustomers = { cid firstname lastname\n\t\t\t\t1 Dexter Simpson\n\t\t\t\t2 Kaseem Gallagher\n\t\t\t\t3 Kuame Hamilton\n\t\t\t\t4 Robert Thompson\n\t\t\t\t5 Rhiannon Valentine\n\t\t\t\t6 Calvin Mays\n\t\t\t\t}\n\n\t\t\t\tAccounts = {\n\t\t\t\taid, cid, balance:number\n\t\t\t\t1, 1, 66\n\t\t\t\t2, 1, -304\n\t\t\t\t3, 2, 272\n\t\t\t\t4, 3, 3472\n\t\t\t\t5, 4, 975.7\n\t\t\t\t6, 4, 93\n\t\t\t\t7, 5, 534\n\t\t\t\t8, 5, -75.5\n\t\t\t\t}\n\n\t\t\t\tPremiumCustomers =\n\t\t\t\t\tpi cid (\n\t\t\t\t\t\tsigma sum > 1000 (\n\t\t\t\t\t\t\tgamma cid; sum(balance)->sum (\n\t\t\t\t\t\t\t\tAccounts\n\t\t\t\t\t\t\t\tjoin Customers\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t"),o.createElement("p",null,"We have now seen how to define a dataset with its header containing the name and the description followed by relational algebra assignments defining the relations of the dataset."),o.createElement("p",null,"We can paste this definition directly in the ",o.createElement("i",null,"Group Editor")," to load and use it.",o.createElement("br",null),"In the next section we want to look at how we can publish this definition so that we give our students a single url or id to directly load the dataset."),o.createElement("h3",{id:"tutorial-maintainer-share-dataset"},"Share a dataset"),o.createElement("p",null,"If we want to share the definition of a dataset with other people we could simply give them the definition and they load it using the ",o.createElement("i",null,"group editor"),", but that would not be that practical for most cases."),o.createElement("p",null,"The simpler solution (for the users) is to publish the definition as a ",o.createElement("a",{href:"https://gist.github.com/"},"GitHub Gist")," and share the ID of the gist with others."),o.createElement("p",null,"Just create a gist with the definition as its content (the filename does not matter) and publish it. The ID of the Gist can now be found at the top of the page as ",o.createElement("i",null,"gist:xxxxxxxxxxxx")," or in the url after the last slash."),o.createElement("p",null,"This ID can then be shared and loaded in the interface or the calculator can be called directly with a specific ID by using using the parameter ",o.createElement("code",null,"?data=gist:xxxxxxxxxxxxxx"),"."),o.createElement("p",null,"For example the simple bank definition of this tutorial has been published as a ",o.createElement("a",{href:"https://gist.github.com/ragtime/2cfb981fbc5676182d64"},"Gist with the ID 2cfb981fbc5676182d64")," and can therefore be loaded directly with modifying the url by replacing all after ",o.createElement("code",null,"DOMAIN/relax/calc/")," with ",o.createElement("code",null,"/gist/2cfb981fbc5676182d64"),"."),o.createElement("h2",{id:"relalg-reference"},"Reference - relational algebra"),o.createElement("h3",{id:"relalg-syntax"},"General syntax"),o.createElement("div",null,o.createElement("h4",{id:"relalg-assignment"},"assignment"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("i",null,"NAME")," ",o.createElement("strong",null,"=")," ",o.createElement("i",null,"EXPRESSION"))))))),o.createElement("div",null,o.createElement("p",null,"Defines a new local variable with the name ",o.createElement("i",null,"NAME"),"; its content is defined by",o.createElement("i",null,"EXPRESSION")),o.createElement("p",null,"The name of the new relation must be unique."),o.createElement("p",null,"The definition has to be executed with the statement."),o.createElement("div",{className:"example"},o.createElement("code",null,"TestA = π a,b R TestB = σ d > 0 S -- statement using the variable TestA join TestB")),o.createElement("p",null,"An assignment (= definition of a variable) is no valid relational algebra expression on its own. If you miss the acutal query a error is thrown (",o.createElement("i",null,"Error: only assignments found; query is missing"),")."),o.createElement("div",{className:"example"},o.createElement("code",null,"-- this is the definition of the variable Test = π Customer.firstname, surname ( Customer ) -- this is the actual query/statement using the variable Test")),o.createElement("p",null,"The defined variable can be used like the assigned expression could be used because every usage of the variable gets replaced with its definition before the query gets executed.",o.createElement("br",null),"This also means that the variable-name has no influence on the schema of the expression and the names of the attributes/columns are not affected by assignment:",o.createElement("code",{className:"block example"},"X = R X join S"),"The attributes of the relation R are only accessible with its original names (R.a, R.b, ..), and are not affected by the assignment."),o.createElement("p",null,"There is a known problem when the last assignment ends with a natural join and the query consists of a single relation:"),o.createElement("code",null,"A = S join R A -- this is the query"),o.createElement("p",null,"The statement is ambiguous and the parser interprets it as ",o.createElement("code",null,"A = (S join R A)"),"where R is interpreted as a column argument for the theta-join and therefore detects a cyclic usage of the variable A."),o.createElement("p",null,"Solution: To get the expected behaviour you have to set braces around the assigned expression like ",o.createElement("code",null,"A = (S join R) A")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-comment-sl"},"single-line comment"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("strong",null,"-- "),o.createElement("i",null,"COMMENT_TEXT"),o.createElement("i",null,"EXPRESSION"))))))),o.createElement("div",null,o.createElement("p",null,"the '--' must be followed by at least one whitespace charater! inserts a comment; its text goes until the end of the line"),o.createElement("p",null,"comments are recognized as whitespace"),o.createElement("div",{className:"example"},o.createElement("code",null,"Test =",o.createElement("b",null,"-- This is the expression that is assigned to Test:"),"π Customer.firstname, surname ( Customer )")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-relation-name"},"pre defined relation"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("i",null,"RELATION_NAME"))))))),o.createElement("div",null,o.createElement("p",null,"Uses a pre defined relation with the name ",o.createElement("i",null,"RELATION_NAME")),o.createElement("p",null,"The code completion only works for this relations."),o.createElement("div",{className:"example"},o.createElement("code",null,"( Customers ) cross join ( Accounts )")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-comment-ml"},"multi-line comment"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("strong",null,"/* "),o.createElement("i",null,"COMMENT_TEXT"),o.createElement("strong",null," */"),o.createElement("i",null,"EXPRESSION"))))))),o.createElement("div",null,o.createElement("p",null,"inserts a comment that can span multiple lines"),o.createElement("p",null,"comments are recognized as whitespace"),o.createElement("div",{className:"example"},o.createElement("code",null,o.createElement("b",null,"/* This is a very very long comment */"),"Test = π Customer.firstname, surname ( Customer )")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-inline-relation"},"inline-relation"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("td",null,o.createElement("code",null,o.createElement("b",null,"{"),o.createElement("i",null,"COLUMN_NAME_1"),":",o.createElement("i",null,"COLUMN_TYPE_1")," ...",o.createElement("i",null,"ROW_1"),o.createElement("i",null,"ROW_2"),"...",o.createElement("b",null,"}"))))))),o.createElement("div",null,o.createElement("p",null,"The inline-relation is a temporary relation that can be defined directly in the statement. It is only valid in the defining statement"),o.createElement("p",null,"Every inline-relation is a valid expression and thus can be used at any position a",o.createElement("i",null,"EXPRESSION")," is expected."),o.createElement("p",null,"The inline-relation is defined by a header, that specifies the schema of the relation and the rows containing the values and is surrounded by curly braces."),o.createElement("div",null,"The header is defined by a sequence of",o.createElement("code",null,o.createElement("i",null,"QUALIFIER.COLUMN_NAME"),":",o.createElement("i",null,"COLUMN_TYPE"))," ",o.createElement("b",null,"separated by any whitespace, comma or semicolon."),"The ",o.createElement("i",null,"QUALIFIER")," is optional. Also the ",o.createElement("i",null,"COLUMN_TYPE")," can be omitted if the type is well defined by the values of that column. The first non null value of a column defines its type.",o.createElement("br",null),"True and false (case insensitive without quotes) are reserved for a boolean type. They can be used as a simple string but they do not define the type of the column as string.",o.createElement("br",null),"The ",o.createElement("i",null,"COLUMN_TYPE")," can be one of the following",o.createElement("ul",null,o.createElement("li",null,"string"),o.createElement("li",null,"number"),o.createElement("li",null,"date"),o.createElement("li",null,"boolean")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("qualifier"),".")),Object(Wn.NonTerminal)("column-name"),Object(Wn.Optional)(Object(Wn.Sequence)(":",Object(Wn.Choice)(0,"string","number","date","boolean"))))}))),o.createElement("p",null,"The rows of the relation are defined by a list of values per row with the type of the corresponding column. The values are ",o.createElement("b",null,"separated by whitespace comma or semicolon."),o.createElement("br",null),"Simple strings only containing letters, numbers, hyphens, underlines, dots or periods ([0-9a-zA-Z\\-_\\.]+) can be written without single quotes. ",o.createElement("i",null,"NULL")," and ",o.createElement("i",null,"null")," are constant values. If null, true or false should be used as string they have te be quoted.",o.createElement("br",null),"More complex strings must be surrounded by single quotes: ",o.createElement("i",null,"'content'")," or ",o.createElement("i",null,"content"),"but '' or 'long content containing spaces and special characters like !' or 'null'.",o.createElement("br",null),"Dates are written in ISO-format: YYYY-MM-DD without single quotes",o.createElement("br",null),"A null-value can be written as ",o.createElement("i",null,"null")," or ",o.createElement("i",null,"NULL")," (without single quotes).",o.createElement("br",null),"Numbers could be integers in the form (-?[0-9]+) or floats in the form (-?[0-9]+\\.[0-9]+).",o.createElement("br",null),"Numbers in single quotes are recognized as numbers if the column type is defined as number or has been detected to be number from a previous value; otherwise it will be a string value..",o.createElement("br",null),"A boolean value is denoted as either ",o.createElement("i",null,"true")," or ",o.createElement("i",null,"false")," (case insensitive)."),o.createElement("p",null,"The header and rows can be indented if needed."),o.createElement("div",{className:"example"},o.createElement("code",null,"-- type for column b is defined by the first value\n\t\t\t\trho A {\n\t\t\t\t\ta:number, b\n\t\t\t\t\t1, 2\n\t\t\t\t\t3, 4\n\t\t\t\t}\n\t\t\t\tcross join\n\t\t\t\t{\n\t\t\t\t\ta:string X.b:date c:number\n\t\t\t\t\tAlpha 1970-01-01 1\n\t\t\t\t\t'Beta 2' 1970-01-02 3\n\t\t\t\t\t'' 1970-01-03 4\n\t\t\t\t}")))),o.createElement("div",null,o.createElement("h4",{id:"relalg-relalgexpr"},"relational algebra expression"),o.createElement("div",null,o.createElement("p",null,"A valid relational algebra expression is built by connecting ",o.createElement("i",null,"relation-name")," or ",o.createElement("i",null,"inline-relation"),"as atoms with the defined unary and binary operators."),"So a relational algebra expression is recursively defined as follows:",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Choice)(0,Object(Wn.Sequence)("(",Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),")"),Object(Wn.NonTerminal)("relation-name","#relalg-relation-name"),Object(Wn.NonTerminal)("inline-relation","#relalg-inline-relation"),Object(Wn.Sequence)(Object(Wn.Choice)(0,Object(Wn.NonTerminal)("projection","#relalg-operations-projection"),Object(Wn.NonTerminal)("selection","#relalg-operations-selection"),Object(Wn.NonTerminal)("rename relation","#relalg-operations-renamerelation"),Object(Wn.NonTerminal)("rename column","#relalg-operations-renamecolumn"),Object(Wn.NonTerminal)("order by","#relalg-operations-orderby"),Object(Wn.NonTerminal)("group by","#relalg-operations-groupby")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))),Object(Wn.Choice)(1,Object(Wn.Skip)(),Object(Wn.Sequence)(Object(Wn.Choice)(0,Object(Wn.NonTerminal)("intersection","#relalg-operations-intersection"),Object(Wn.NonTerminal)("union","#relalg-operations-union"),Object(Wn.NonTerminal)("division","#relalg-operations-division"),Object(Wn.NonTerminal)("subtraction","#relalg-operations-subtraction"),Object(Wn.NonTerminal)("cross product","#relalg-operations-crossjoin"),Object(Wn.NonTerminal)("θ-join","#relalg-operations-innerjoin"),Object(Wn.NonTerminal)("natural join","#relalg-operations-naturaljoin"),Object(Wn.NonTerminal)("left outer join","#relalg-operations-leftjoin"),Object(Wn.NonTerminal)("right outer join","#relalg-operations-rightjoin"),Object(Wn.NonTerminal)("full outer join","#relalg-operations-fulljoin"),Object(Wn.NonTerminal)("left semi join","#relalg-operations-leftsemijoin"),Object(Wn.NonTerminal)("right semi join","#relalg-operations-rightsemijoin"),Object(Wn.NonTerminal)("anti semi join","#relalg-operations-antijoin")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))))})))),o.createElement("h3",{id:"relalg-unary-operations"},"Unary operations"),"Each unary operation follows the following syntax:",o.createElement("div",{className:"b-syntax"},o.createElement("code",null,o.createElement("i",null,"FUNCTION")," ARGUMENT ",o.createElement("strong",null,"(")," CHILD_EXPRESSION ",o.createElement("strong",null,")"))),"The parentheses are Optional.",o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-projection"},"projection"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"π")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"pi")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"pi a, b ( R )")))))),o.createElement("p",null,"The argument is a subset of columns of the schema of the ",o.createElement("i",null,"CHILD_EXPRESSION")," or a ",o.createElement("a",{href:"#relalg-valueexpr"},"value expression")),o.createElement("div",{className:"example"},o.createElement("code",null,"π Customer.firstname, surname ( Customer )")),o.createElement("div",{className:"example"},o.createElement("code",null,"pi c.id, [1] ( ρ c ( Customer ) )")),"Expressions can be used to create more complex statements using one or more columns of a single row.",o.createElement("div",{className:"example"},o.createElement("code",null,"pi c.id, lower(username)->user, concat(firstname, concat(' ', lastname))->fullname ( ρ c ( Customer ) )")),"The virtual column ",o.createElement("i",null,"ROWNUM")," used in previous versions is not supported any more but the ",o.createElement("code",null,"rownum()")," expression can be used to get the same information. And it can also be used directly in the boolean condition of a selection or join.",o.createElement("div",{className:"example"},"In this example the top 5 customers with the most orders are selected, where countOrders could be the result of a previous aggregation.",o.createElement("code",null,"pi firstname, lastname sigma rownum() ","<","= 5 tau countOrders desc Customer")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"π","pi"),Object(Wn.OneOrMore)(Object(Wn.NonTerminal)("column","#relalg-column"),",")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))}))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-selection"},"selection"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"σ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"pi")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"sigma a > 2 ( R )")))))),o.createElement("p",null,"The argument is a ",o.createElement("a",{href:"#relalg-valueexpr"},"boolean expression")," that each row of ",o.createElement("i",null,"CHILD_EXPRESSION"),"is checked on"),o.createElement("div",{className:"example"},o.createElement("code",null,"σ firstname = 'Bob' or firstname = 'Alice' ( Customer )")),o.createElement("div",{className:"example"},o.createElement("code",null,"σ (id > 10 and id ","<"," 100) or id = 42 ( Customer )")),o.createElement("div",{className:"example"},"Selecting all customers with a firstname that has an even length.",o.createElement("code",null,"σ mod(length(firstname),2) = 0 ( Customer )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"σ","sigma"),Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))}))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-renamerelation"},"rename relation"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"ρ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"rho")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"( R ) join R.a = X.b (rho X ( R ))")))))),o.createElement("div",null,"The argument is the new name for the Relation returned by ",o.createElement("i",null,"CHILD_EXPRESSION"),o.createElement("div",{className:"example"},'rename the Relation from "Customer" to "a":',o.createElement("code",null,"π a.id, a.firstname ( ρ a ( Customer ) )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"ρ","rho"),Object(Wn.NonTerminal)("new relation name")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-renamecolumn"},"rename column"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"ρ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"rho")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,"the old and the new column names in a list (see example) ",o.createElement("br",null),'"←" can be substituted with "',"<",'-"',o.createElement("code",{className:"relalg block"},"pi x, b rho a->x {a, b\n\t\t\t\t\t\t1, 2\n\t\t\t\t\t\t3, 4\n\t\t\t\t\t}")))))),o.createElement("div",null,"The argument is the old and the new column names in a list (see example) ",o.createElement("br",null),'"←" can be substituted with "',"<",'-"',o.createElement("div",{className:"example"},"rename the columns id and firstname to myId and foobar:",o.createElement("code",null,"ρ myId←id, foobar←firstname (π id, firstname ( Customer ) )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"ρ","rho"),Object(Wn.OneOrMore)(Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.NonTerminal)("new name"),Object(Wn.Choice)(0,"←","<-"),Object(Wn.NonTerminal)("column","#relalg-column")),Object(Wn.Sequence)(Object(Wn.NonTerminal)("column","#relalg-column"),Object(Wn.Choice)(0,"→","->"),Object(Wn.NonTerminal)("new name"))),",")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-orderby"},"order by"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"τ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"tau")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"tau a asc, b desc ( R )")))))),o.createElement("div",null,"The argument is a list of columns by which the relation should be ordered (see examples)",o.createElement("div",{className:"example"},"order the result by the first column (default is ascending) and the second column descending:",o.createElement("code",null,"τ [1], firstname desc (π id, firstname ( Customer ) )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"τ","tau"),Object(Wn.OneOrMore)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("column","#relalg-column"),Object(Wn.Choice)(0,Object(Wn.Skip)(),"asc","desc")),",")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-groupby"},"group by"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"γ")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"gamma")),o.createElement("tr",null,o.createElement("th",null,"example"),o.createElement("td",null,o.createElement("code",{className:"relalg"},"gamma a, count(*)->x ( R )")))))),o.createElement("div",null,"The argument is a list of columns to group by, separated by commas followed by a semicolon",o.createElement("br",null),"and a list of aggregate functions to apply with their new name in form ",o.createElement("span",null,"AGG( COLUMN ) -> NEW_NAME"),o.createElement("div",{className:"example"},"order the result by the first column (default is ascending) and the second column descending:",o.createElement("code",null,"γ a, b ; sum(c)->x ( Customer )")),o.createElement("p",null,"If no grouping columns are provided the entire relation is the group."),o.createElement("div",null,"supported aggregate functions by type:",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("td",null," "),o.createElement("th",null,"number"),o.createElement("th",null,"string"),o.createElement("th",null,"date"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"COUNT( * )"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes")),o.createElement("tr",null,o.createElement("th",null,"COUNT( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes")),o.createElement("tr",null,o.createElement("th",null,"MIN( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes")),o.createElement("tr",null,o.createElement("th",null,"MAX( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes"),o.createElement("td",null,"yes")),o.createElement("tr",null,o.createElement("th",null,"SUM( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"no"),o.createElement("td",null,"no")),o.createElement("tr",null,o.createElement("th",null,"AVG( column )"),o.createElement("td",null,"yes"),o.createElement("td",null,"no"),o.createElement("td",null,"no")))))),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"γ","gamma"),Object(Wn.Sequence)(Object(Wn.ZeroOrMore)(Object(Wn.NonTerminal)("column","#relalg-column"),","),";",Object(Wn.OneOrMore)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"COUNT(*)",Object(Wn.Sequence)(Object(Wn.Choice)(0,"COUNT","MIN","MAX","SUM","AVG"),"(",Object(Wn.NonTerminal)("column","#relalg-column"),")")),Object(Wn.Choice)(0,"→","->"),Object(Wn.NonTerminal)("new name")),","))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("h3",{id:"relalg-binary-operations"},"Binary operations"),"Each binary operation follows the following syntax:",o.createElement("div",{className:"b-syntax"},o.createElement("code",null,o.createElement("strong",null,"(")," CHILD_EXPRESSION ",o.createElement("strong",null,")")," ",o.createElement("strong",null,"FUNCTION")," ARGUMENT ",o.createElement("strong",null,"("),"CHILD_EXPRESSION ",o.createElement("strong",null,")"))),"The parentheses are Optional.",o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-intersection"},"intersection - ∩"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"∩")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"intersect"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",null,"( Customer ) ∩ ( Customer )")),"the schemas must be unifiable",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"∩","intersect")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-union"},"union - ∪"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"∪")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"union"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",null,"( Customer ) ∪ ( Customer )")),"the schemas must be unifiable",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"∪","union")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-division"},"division"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"÷")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"/"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",null,"( Customer ) ÷ ( Customer )")),"the schemas must be unifiable",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"÷","/")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-subtraction"},"subtraction / set-difference"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"-"),o.createElement("td",{className:"math"},"∪")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"\\",o.createElement("br",null),"except"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",null,"( pi firstname ( Customer ) ) - ( rho test","<","-lastname ( pi lastname ( Customer ) ) )")),"the schemas must be unifiable",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"-","\\","except")),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-crossjoin"},"cross product"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⨯")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"cross join"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⨯",Object(Wn.Sequence)("cross","join"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-innerjoin"},"Theta-join / θ-join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⋈")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"join",o.createElement("br",null),"inner join"))))),o.createElement("div",null,"join condition",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⋈",Object(Wn.Sequence)(Object(Wn.Optional)("inner"),"join")),Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))}))),o.createElement("p",null,"Special case:",o.createElement("br",null),"The name of a single boolean column (like ",o.createElement("code",null,"R join a S"),") can not be used directly as a join condition due to ambiguities in the relational algebra syntax.",o.createElement("br",null),"The column must either be specified with its qualifier (",o.createElement("code",null,"R join R.a S"),") or wrapped in parentheses (",o.createElement("code",null,"R join (a) S"),").",o.createElement("br",null),"This is not necessary for more complex boolean expressions. The problem is only that the single column name can not be distinguished from a relation name: the expression ",o.createElement("code",null,"X=R join S X")," could be interpreted as ",o.createElement("code",null,"A=(R join S A)")," instead of ",o.createElement("code",null,"A=(R join S) A"),".")),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-naturaljoin"},"natural join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⋈")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"join",o.createElement("br",null),"natural join"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"example"},o.createElement("code",{className:"block"},"ρ a ( Customer )",o.createElement("span",{className:"math"},"⋈")," a.name ","<"," b.name ( ρ b ( Customer ) )")),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⋈",Object(Wn.Sequence)("natural","join"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-leftjoin"},"left outer join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⟕")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"left outer join",o.createElement("br",null),"left join"))))),o.createElement("div",null,"optional join condition; if no join condition is given it acts as a natural left outer join",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⟕",Object(Wn.Sequence)("left",Object(Wn.Optional)("outer"),"join")),Object(Wn.Optional)(Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr")))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-rightjoin"},"right outer join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⟖")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"right outer join",o.createElement("br",null),"right join"))))),o.createElement("div",null,"optional join condition; if no join condition is given it acts as a natural right outer join",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⟖",Object(Wn.Sequence)("right",Object(Wn.Optional)("outer"),"join")),Object(Wn.Optional)(Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr")))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-fulljoin"},"full outer join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⟗")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"full outer join"))))),o.createElement("div",null,"optional join condition; if no join condition is given it acts as a natural full outer join",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⟗",Object(Wn.Sequence)("full","outer","join")),Object(Wn.Optional)(Object(Wn.NonTerminal)("boolean-expression","#relalg-valueexpr")))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-leftsemijoin"},"left semi join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⋉")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"left semi join"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⋉",Object(Wn.Sequence)("left","semi","join"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))}))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-rightsemijoin"},"right semi join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"⋊")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"right semi join"))))),o.createElement("div",null,"no argument",o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"⋊",Object(Wn.Sequence)("right","semi","join"))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"))})))),o.createElement("div",null,o.createElement("h4",{id:"relalg-operations-antijoin"},"anti semi join"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-nonfluid"},o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"symbol"),o.createElement("td",{className:"math"},"▷")),o.createElement("tr",null,o.createElement("th",null,"alternative syntax"),o.createElement("td",null,"anti semi join",o.createElement("br",null),"anti join"))))),o.createElement("div",null,"no argument",o.createElement("br",null),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"▷",Object(Wn.Sequence)("anti",Object(Wn.Optional)("semi"),"join")))),Object(Wn.NonTerminal)("RA-expression","#relalg-relalgexpr")))})))),o.createElement("h3",{id:"relalg-operator-precedence"},"Operator precedence"),o.createElement("p",null,"The operator precedence allows to obmit most of braces.",o.createElement("br",null),"The used precedence is shown in the table below.",o.createElement("br",null),"All operators are left associative."),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"order of precedence"),o.createElement("th",null,"Operator"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,"0"),o.createElement("td",null,o.createElement("a",{href:"#relalg-relation-name"},"relation-name"),",",o.createElement("a",{href:"#relalg-inline-relation"},"inline-relation"))),o.createElement("tr",null,o.createElement("td",null,"1"),o.createElement("td",null,o.createElement("a",{href:"#relalg-operations-projection"},"projection"),",",o.createElement("a",{href:"#relalg-operations-selection"},"selection"),",",o.createElement("a",{href:"#relalg-operations-renamecolumn"},"rename (columns)"),",",o.createElement("a",{href:"#relalg-operations-renamerelation"},"rename (relations)"),",",o.createElement("a",{href:"#relalg-operations-groupby"},"group"),",",o.createElement("a",{href:"#relalg-operations-orderby"},"order by"))),o.createElement("tr",null,o.createElement("td",null,"2"),o.createElement("td",null,o.createElement("a",{href:"#relalg-operations-crossjoin"},"cross product"),",",o.createElement("a",{href:"#relalg-operations-innerjoin"},"theta join"),",",o.createElement("a",{href:"#relalg-operations-naturaljoin"},"natural join"),",",o.createElement("a",{href:"#relalg-operations-leftjoin"},"left outer join"),",",o.createElement("a",{href:"#relalg-operations-rightjoin"},"right outer join"),",",o.createElement("a",{href:"#relalg-operations-fulljoin"},"full outer join"),",",o.createElement("a",{href:"#relalg-operations-leftsemijoin"},"left semi-join"),",",o.createElement("a",{href:"#relalg-operations-rightsemijoin"},"right semi-join"),",",o.createElement("a",{href:"#relalg-operations-antijoin"},"anti semi-join"),",",o.createElement("a",{href:"#relalg-operations-division"},"division"))),o.createElement("tr",null,o.createElement("td",null,"3"),o.createElement("td",null,o.createElement("a",{href:"#relalg-operations-intersection"},"intersection"))),o.createElement("tr",null,o.createElement("td",null,"4"),o.createElement("td",null,o.createElement("a",{href:"#relalg-operations-union"},"union"),",",o.createElement("a",{href:"#relalg-operations-subtraction"},"subtraction")))))),o.createElement("div",{className:"example"},o.createElement("code",null,"A join B x C"),o.createElement("br",null),"is equal to",o.createElement("br",null),o.createElement("code",null,"((A join B) x C)"),o.createElement("br",null),"because the cross product and the natural join are in the same precedence className."),o.createElement("div",{className:"example"},o.createElement("code",null,"sigma true A join sigma true B"),o.createElement("br",null),"is equal to",o.createElement("br",null),o.createElement("code",null,"(sigma true (A)) join (sigma true (B))"),o.createElement("br",null),"because the unary operators have a higher precedence than the binary operators."),o.createElement("h3",{id:"relalg-misc"},"Misc"),o.createElement("h4",{id:"relalg-column"},"Column"),"column is either",o.createElement("ul",null,o.createElement("li",null,'the name of a column: "columnName"'),o.createElement("li",null,'the number of the column (starting with 1): "[column-number]"'),o.createElement("li",null,'a full qualified column: "qualifier.columnName"'),o.createElement("li",null,"a value expression (if allowed for the specific operation)")),"the qualifier is optional if the column is unique in its schema.",o.createElement("h4",{id:"relalg-valueexpr"},"Value expressions"),"With most operators you can use a value-expression which connects one or more columns of a single row to calculate a new value. This is possible for:",o.createElement("ul",null,o.createElement("li",null,"the projection creating a new column (make sure to give the column a name)"),o.createElement("li",null,"the selection any expression evaluating to boolean can be used"),o.createElement("li",null,"for the joins any expression evaluating to boolean can be used; note that the ",o.createElement("code",null,"rownum()")," expression always represents the index of the lefthand relation")),"The expressions always operate on a single row/tuple of a table/relation.",o.createElement("br",null),"If you want to calculate values vertically over all values of a specific column/attribute you need to use group by with an aggregate function. The following table lists all functions and operators that can be used in an expression. They can be combined and nested in any arbitrary order but note that they do evaluate to a single type defined by the outer most expression. The following operators can be used:",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"syntax"),o.createElement("th",null,"returns type"),o.createElement("th",null,"description"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a AND b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"logical and")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a OR b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"logical or")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a XOR b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"logical exclusive or")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"NOT b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"logical not")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a = b a != b a ","<"," b a > b a ","<","= b a >= b a != b")),o.createElement("td",null,"boolean"),o.createElement("td",null,"compares two values of the same type")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a:string LIKE 'PATTERN'")),o.createElement("td",null,"boolean"),o.createElement("td",null,"returns true if expression evaluating to a string ",o.createElement("code",null,"a")," matches the pattern given as the second operand.",o.createElement("br",null),"The pattern has to be given as a string literal;",o.createElement("p",null,"An underscore (",o.createElement("code",null,"_"),") in the pattern stands for any single character and any percent sign (",o.createElement("code",null,"%"),") stands for any sequence of zero or more characters."))),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a:string ILIKE 'PATTERN'")),o.createElement("td",null,"boolean"),o.createElement("td",null,"same as ",o.createElement("code",null,"LIKE")," but matches case-insensitive.",o.createElement("br",null),"This is not in the SQL standard but is a PostgreSQL extension.")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"a + b a - b a * b a / b a % b")),o.createElement("td",null,"number"),o.createElement("td",null,"arithmetic addition, subtraction, multiplication, division, modulo")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"rand()")),o.createElement("td",null,"number"),o.createElement("td",null,"returns a random number in the interval [0, 1]")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"rownum()")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the index of the current row (starting with 0).",o.createElement("br",null),"If the function is used in a binary relational algebra expression (e.g. a join) it always represents the index of the left operand.")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"length(a:string)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the length of the string")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"date(a:string)")),o.createElement("td",null,"date"),o.createElement("td",null,"parses the given string to a date object. The string must be in the form YYYY-MM-DD")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"adddate(a:date, b:number)")),o.createElement("td",null,"date"),o.createElement("td",null,"adds the given number of days to date ",o.createElement("code",null,"a"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"subdate(a:date, b:number)")),o.createElement("td",null,"date"),o.createElement("td",null,"subtracts the given number of days from date ",o.createElement("code",null,"a"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"now() transaction_timestamp() statement_timestamp()")),o.createElement("td",null,"date"),o.createElement("td",null,"returns a timestamp representing the start of the query execution",o.createElement("br",null),"transaction- and statement start are the very same value due to the lack of a transaction concept")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"clock_timestamp()")),o.createElement("td",null,"date"),o.createElement("td",null,"returns the current timestamp while executing the query")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"year(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the year component of a given date")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"month(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the month component of a given date as a number. (1 = Sunday, 2 = Monday, ..., 7 = Saturday)")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"day(a:date) dayofmonth(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the day component of a given date as a number in the range 1 to 31")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"hour(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the hour component of a given date as a number in the range 0 to 23")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"minute(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the minute component of a given date as a number in the range 0 to 59")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"second(a:date)")),o.createElement("td",null,"number"),o.createElement("td",null,"returns the second component of a given date as a number in the range 0 to 59")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"concat(a:string [, ...])")),o.createElement("td",null,"string"),o.createElement("td",null,"concatenates the given strings")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"upper(a:string) ucase(a:string)")),o.createElement("td",null,"string"),o.createElement("td",null,"converts the given string to upper-case")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"lower(a:string) lcase(a:string)")),o.createElement("td",null,"string"),o.createElement("td",null,"converts the given string to lower-case")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"strlen(a:string)")),o.createElement("td",null,"number"),o.createElement("td",null,"number of characters of the string")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"abs(a:number)")),o.createElement("td",null,"number"),o.createElement("td",null,"the absolute value of the given number")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"add(a, b) sub(a, b) mul(a, b) div(a, b) mod(a, b)")),o.createElement("td",null,"number"),o.createElement("td",null,"arithmetic addition, ",o.createElement("br",null),"subtraction, ",o.createElement("br",null),"multiplication, ",o.createElement("br",null),"division or ",o.createElement("br",null),"modulo of the given numbers")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",null,"round(a) floor(a) ceil(a)")),o.createElement("td",null,"number"),o.createElement("td",null,"round to nearest integer, ",o.createElement("br",null),"largest integer not greater than the argument or",o.createElement("br",null),"smallest integer not less than the argument")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",{className:"sql"},"coalesce(",o.createElement("strong",null,"value")," [, ...])")),o.createElement("td",null,"type of ",o.createElement("strong",null,"value")),o.createElement("td",null,"returns the first of its arguments that is not null or null if all arguments are null. Note that all arguments must have the same datatype.")),o.createElement("tr",null,o.createElement("td",null,o.createElement("code",{className:"sql"},"CASE WHEN ",o.createElement("strong",null,"condition")," THEN result [WHEN ...] [ELSE ",o.createElement("strong",null,"result"),"] END")),o.createElement("td",null,"type of ",o.createElement("strong",null,"result")),o.createElement("td",null,"returns the first result where the condition evaluates to true. If all conditions are false the else part is executed or null is returnt if the else part is missing. Note that all results must have the same datatype."))))),"The operator precedence is the same as used in ",o.createElement("a",{href:"https://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html"},"MySQL")," (from strong to weak):",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"order of precedence"),o.createElement("th",null,"Operators"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,"0"),o.createElement("td",null,"functions, constants, columns")),o.createElement("tr",null,o.createElement("td",null,"1"),o.createElement("td",null,"! (boolean not)")),o.createElement("tr",null,o.createElement("td",null,"2"),o.createElement("td",null,"- (unary minus)")),o.createElement("tr",null,o.createElement("td",null,"3"),o.createElement("td",null,"*, /, %")),o.createElement("tr",null,o.createElement("td",null,"4"),o.createElement("td",null,"-, +")),o.createElement("tr",null,o.createElement("td",null,"5"),o.createElement("td",null,"= (comparison), >=, >, ","<","=, ","<",", ","<",">, !=, LIKE, ILIKE")),o.createElement("tr",null,o.createElement("td",null,"6"),o.createElement("td",null,"CASE, WHEN, THEN, ELSE")),o.createElement("tr",null,o.createElement("td",null,"7"),o.createElement("td",null,"AND")),o.createElement("tr",null,o.createElement("td",null,"8"),o.createElement("td",null,"XOR")),o.createElement("tr",null,o.createElement("td",null,"9"),o.createElement("td",null,"OR, ||"))))),o.createElement("h2",{id:"sql-reference"},"Reference - SQL"),o.createElement("p",null,"The goal of the SQL mode of the relational algebra calculator is to provide a translation from SQL to relational algebra to show how they are related. It does not support all features a real database system like ",o.createElement("a",{href:"http://www.postgresql.org",target:"_blank"},"PostgreSQL")," or ",o.createElement("a",{href:"https://www.mysql.com/",target:"_blank"},"MySQL"),' does because the goal is to provide a translation into relational algebra. This means that many features like correlated-substatements are not supported because the translation into relational algebra is not trivial and modern database systems use an extended set of operators internally that do not require a one-to-one translation into "classNameical" relational algebra. Therefore the learning effect for users of this tool would not be that big.'),o.createElement("h3",{id:"sql-syntax"},"General syntax"),o.createElement("p",null,"All keywords are case insensitv."),o.createElement("p",null,"The following Synopsis is a adapted version of ",o.createElement("a",{href:"http://www.postgresql.org/docs/9.4/static/sql-select.html",target:"_blank"},"PostgreSQL")," and shows the general syntax of the supported SQL. Brackets indicate optional parts. Braces and vertical lines indicate that one of the alternatives has to be chosen. Dots mean that the preceding element can be repeated."),o.createElement("code",{className:"block sql"},"[ ",o.createElement("a",{href:"#sql-with"},"WITH")," ",o.createElement("strong",null,"with_query")," [, ...] ]",o.createElement("a",{href:"#sql-select"},"SELECT")," [ DISTINCT ] * | ",o.createElement("strong",null,"expression")," [ [ AS ] ",o.createElement("strong",null,"output_name")," ] [, ...]",o.createElement("a",{href:"#sql-from"},"FROM")," ",o.createElement("strong",null,"from_item")," [, ...] [ ",o.createElement("a",{href:"#sql-where"},"WHERE")," ",o.createElement("strong",null,"condition")," ] [ ",o.createElement("a",{href:"#sql-groupby"},"GROUP BY")," ",o.createElement("strong",null,"column")," [, ...] ] [ ",o.createElement("a",{href:"#sql-having"},"HAVING")," ",o.createElement("strong",null,"condition")," ] [ ","{"," ",o.createElement("a",{href:"#sql-setoperators"},"UNION")," | ",o.createElement("a",{href:"#sql-setoperators"},"INTERSECT")," | ",o.createElement("a",{href:"#sql-setoperators"},"EXCEPT")," } [ ALL | DISTINCT ] ",o.createElement("strong",null,"select")," ] [ ",o.createElement("a",{href:"#sql-orderby"},"ORDER BY")," ",o.createElement("strong",null,"column")," [ ASC | DESC ] [, ...] ] [ ",o.createElement("a",{href:"#sql-limit"},"LIMIT")," ","{"," ",o.createElement("strong",null,"count")," | ALL } ] [ ",o.createElement("a",{href:"#sql-limit"},"OFFSET")," ",o.createElement("strong",null,"start")," [ ROW | ROWS ] ] [ ",o.createElement("a",{href:"#sql-limit"},"FETCH")," ","{"," FIRST | NEXT } [ ",o.createElement("strong",null,"count")," ] ","{"," ROW | ROWS } ONLY ] where ",o.createElement("strong",null,"from_item")," can be one of:",o.createElement("strong",null,"table_name")," [ AS ",o.createElement("strong",null,"alias")," ]",o.createElement("strong",null,"with_query_name")," [ AS ",o.createElement("strong",null,"alias")," ] ( ",o.createElement("strong",null,"select")," ) AS ",o.createElement("strong",null,"alias"),o.createElement("strong",null,"from_item")," CROSS JOIN ",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," NATURAL JOIN ",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," [ INNER ] JOIN ",o.createElement("strong",null,"from_item")," ON join_condition",o.createElement("strong",null,"from_item")," [ INNER ] JOIN ",o.createElement("strong",null,"from_item")," NATURAL",o.createElement("strong",null,"from_item")," [ INNER ] JOIN ",o.createElement("strong",null,"from_item")," USING ( join_column [, ...] )",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," ","{"," LEFT | RIGHT | FULL } [ OUTER ] JOIN ON join_condition",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," ","{"," LEFT | RIGHT | FULL } [ OUTER ] JOIN NATURAL ",o.createElement("strong",null,"from_item"),o.createElement("strong",null,"from_item")," ","{"," LEFT | RIGHT | FULL } [ OUTER ] JOIN USING ( join_column [, ...] ) ",o.createElement("strong",null,"from_item"),"and ",o.createElement("strong",null,"with_query")," is:",o.createElement("strong",null,"with_query_name")," AS ( ",o.createElement("strong",null,"select")," )"),o.createElement("div",{className:"too-wide"},o.createElement(Bn,{diagram:Object(Wn.Diagram)(Object(Wn.Stack)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("WITH","#sql-with"),Object(Wn.OneOrMore)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("name"),"AS","(",Object(Wn.NonTerminal)("select","#sql-select"),")"),",")),"skip"),Object(Wn.Sequence)(Object(Wn.Terminal)("SELECT","#sql-select"),Object(Wn.Optional)("DISTINCT","skip"),Object(Wn.Choice)(0,"*",Object(Wn.OneOrMore)(Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.NonTerminal)("column"),Object(Wn.Optional)(Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("output_name")))),Object(Wn.Sequence)(Object(Wn.NonTerminal)("expression","#sql-valueexpr"),Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("output_name")))),",")),Object(Wn.Terminal)("FROM","#sql-from"),Object(Wn.OneOrMore)(Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.NonTerminal)("table_name"),Object(Wn.Optional)(Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("alias")))),Object(Wn.Sequence)("(",Object(Wn.NonTerminal)("select"),")",Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("alias")))),",")),Object(Wn.OneOrMore)(Object(Wn.Choice)(0,Object(Wn.Skip)(),Object(Wn.Sequence)(Object(Wn.Choice)(0,Object(Wn.Sequence)(",",Object(Wn.Comment)("old syntax for cross join")),Object(Wn.Sequence)(Object(Wn.Choice)(0,"CROSS","NATURAL"),"JOIN"),Object(Wn.Sequence)(Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.Optional)("INNER"),"JOIN"),Object(Wn.Sequence)(Object(Wn.Choice)(0,"LEFT","RIGHT","FULL"),Object(Wn.Optional)("OUTER"),"JOIN")),Object(Wn.Choice)(0,Object(Wn.Sequence)("ON",Object(Wn.NonTerminal)("condition")),Object(Wn.Sequence)("USING","(",Object(Wn.OneOrMore)(Object(Wn.NonTerminal)("join_column"),","),")"),Object(Wn.Sequence)("NATURAL")))),Object(Wn.Choice)(0,Object(Wn.Sequence)(Object(Wn.NonTerminal)("table_name"),Object(Wn.Optional)(Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("alias")))),Object(Wn.Sequence)("(",Object(Wn.NonTerminal)("select"),")",Object(Wn.Sequence)("AS",Object(Wn.NonTerminal)("alias"))))))),Object(Wn.Sequence)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("WHERE","#sql-where"),Object(Wn.NonTerminal)("condition")),"skip"),Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("GROUP BY","#sql-groupby"),Object(Wn.NonTerminal)("expression","#sql-valueexpr")),"skip"),Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("HAVING","#sql-having"),Object(Wn.NonTerminal)("condition")),"skip")),Object(Wn.Sequence)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Choice)(0,"UNION","INTERSECT","EXCEPT"),Object(Wn.Choice)(0,Object(Wn.Skip)(),"DISTINCT","ALL"),Object(Wn.NonTerminal)("select")),"skip"),Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("ORDER BY","#sql-orderby"),Object(Wn.OneOrMore)(Object(Wn.Sequence)(Object(Wn.NonTerminal)("expression","#sql-valueexpr"),Object(Wn.Choice)(0,"ASC","DESC")),",")),"skip")),Object(Wn.Sequence)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("LIMIT","#sql-limit"),Object(Wn.Choice)(0,Object(Wn.NonTerminal)("count"),"ALL")),"skip"),Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("OFFSET","#sql-limit"),Object(Wn.NonTerminal)("start"),Object(Wn.Optional)("ROWS")),"skip")),Object(Wn.Sequence)(Object(Wn.Optional)(Object(Wn.Sequence)(Object(Wn.Terminal)("FETCH FIRST","#sql-limit"),Object(Wn.NonTerminal)("count"),Object(Wn.Optional)("ROWS"),"ONLY"),"skip"))))})),o.createElement("h3",{id:"sql-translation"},"Semantic and Translation to relational algebra"),o.createElement("h4",{id:"sql-translation-sequence"},"Sequence of execution"),o.createElement("p",null,'The SQL statement is translated directly into relational algebra. To understand some of the effects of the tool it might be helpful to understand the steps of the translation process. As mentioned before, real database systems might take a different (more complex) aproach but this should help to get an idea of how SQL could be translated into "classNameical" relational algebra.'),o.createElement("p",null,"The following list shows the translation from SQL into relational algebra starting with the inner most relational algebra expression at the top."),o.createElement("ol",null,o.createElement("li",null,"replace all usages of the temporary-tables defined in the WITH-clause with their definitions"),o.createElement("li",null,"FROM-clause is translated left associative with all joins having the same precedence (",o.createElement("code",null,","),"is a cross join)"),o.createElement("li",null,"selection with condition from where-clause is added"),o.createElement("li",null,"group by"),o.createElement("li",null,"selection with condition from having-clause"),o.createElement("li",null,"union/intersect/except"),o.createElement("li",null,"projection is added to choose the requested columns of the SELECT-clause"),o.createElement("li",null,"the columns are renamed to get the requested output-name specified in the SELECT-clause"),o.createElement("li",null,"order by"),o.createElement("li",null,"limit/offset is mapped to a selection")),o.createElement("h4",{id:"sql-select"},"SELECT"),o.createElement("p",null,"The direct translation into relational algebra with implicit duplication elimination requires the ",o.createElement("code",null,"distinct"),"keyword to be equivalent. A warning is shown if you omit it."),o.createElement("p",null,"The select-clause is translated into up to two relalg operators."),o.createElement("ul",null,o.createElement("li",null,"The most basic case is ",o.createElement("code",null,"select ",o.createElement("strong",null,"*")," ...")," where no changes are made to the schema of the result. Therefore no projection is needed. You can use the optional table-alias-prefix if the columns of a single table/relation should be returned only: ",o.createElement("code",{className:"sql"},"select distinct R.* from R inner join S")),o.createElement("li",null,"When a subset of the columns are selected and/or reordered (",o.createElement("code",null," select a, b from ..."),") then a single ",o.createElement("a",{href:"#relalg-operations-projection"},"projection")," is used."),o.createElement("li",null,"Additionally to the previous case a ",o.createElement("a",{href:"#relalg-operations-renamecolumn"},"rename-column operator")," is added after the projection if new output-names are given with ",o.createElement("code",null,"as foo"),". e.g. ",o.createElement("code",null,"select a ",o.createElement("strong",null,"as foo")," from ..."))),o.createElement("p",null,"The allowed expressions are the same as for the ",o.createElement("a",{href:"#relalg-operations-projection"},"projection"),". So it can be either the name of the column (with optional renaming using ",o.createElement("code",null,"as"),") or a complex",o.createElement("a",{href:"#sql-valueexpr"},"value expression"),". In the latter case a output-name must be given using",o.createElement("code",null,"as")," because the tool requires every column to have a name."),o.createElement("h4",{id:"sql-from"},"FROM"),o.createElement("p",null,"In its simplest form the from-clause holds a single table/relation name that is used directly in the relalg statement. If the optional table-alias is specified with ",o.createElement("code",null,"table as foo")," this is reflected by wrapping the relation in a ",o.createElement("a",{href:"#relalg-operations-renamerelation"},"rename-relation operator")," with the given output-name."),o.createElement("code",{className:"example sql"},"select distinct x.a, x.b from R as x"),o.createElement("p",null,"Joins can be expressed using the ANSI join syntax"),o.createElement("code",{className:"example sql"},"select distinct * from A, B inner join C on ... inner join D natural natural join E left outer join F on ... left outer join G natural right outer join H on ... right outer join I natural full outer join J on ... full outer join K natural where ..."),o.createElement("p",null,"The comma is part of the old join syntax and is translated into a ",o.createElement("a",{href:"#relalg-operations-crossjoin"},"cross join"),"."),o.createElement("code",{className:"example sql"},"select distinct * from R, S as s, T where s.a = R.a"),o.createElement("p",null,"Instead of the name of relation a non-correlated substatement can be used. A table alias must be provided with ",o.createElement("code",null,"(...) as foo"),".",o.createElement("br",null),"A non-correlated substatement can be directly translated into relational algebra by just translate the sub-statement into relational algebra and use the resulting operator tree instead of the relation."),o.createElement("p",null,"Non-correlated means that it must not reference/use any columns of tables defined in the outer scope.",o.createElement("br",null),'This limitation is intentionally because the translation into relational algebra is not trivial and modern database systems use an extended set of operators internally that do not require a one-to-one translation into "classNameical" relational algebra. Therefore the learning effect for users of this tool would not be that big.'),o.createElement("code",{className:"example sql"},"select distinct * from R, (select * from S where a > 0) as x where x.a = R.a"),o.createElement("h4",{id:"sql-where"},"WHERE"),o.createElement("p",null,"The boolean condition in the where-clause can be any ",o.createElement("a",{href:"#sql-valueexpr"},"expression")," evaluating to boolean."),o.createElement("p",null,"The where clause is directly translated to an ",o.createElement("a",{href:"#relalg-operations-selection"},"relational algebra selection")," with the very same condition. This selection is applied after joining relations of the from-clause therefore has to use the original column names."),o.createElement("p",null,"Subquery Expressions like ",o.createElement("code",null,"EXISTS"),", ",o.createElement("code",null,"IN"),", ",o.createElement("code",null,"ANY/SOME")," or ",o.createElement("code",null,"ALL"),"are ",o.createElement("strong",null,"not supported"),' because their translation into relational algebra is not trivial and modern database systems use an extended set of operators internally that do not require a one-to-one translation into "classNameical" relational algebra. Therefore the learning effect for users of this tool would not be that big.'),o.createElement("h4",{id:"sql-groupby"},"GROUP BY"),o.createElement("p",null,"The GROUP-BY-clause takes a list of column names only argument."),o.createElement("p",null,"The GROUP-BY-clause is directly translated to the ",o.createElement("a",{href:"#relalg-operations-groupby"},"relational algebra group-by operation")," and is executed directly after the selection built from the WHERE-clause and before the projection/renaming build from the SELECT-clause. Therefore the column names that can be used are the ones available after all joining all tables."),o.createElement("p",null,"The aggregations used in the ",o.createElement("a",{href:"#relalg-operations-groupby"},"relational algebra group-by operation")," are taken from the SELECT-clause and an output-name must be given using ",o.createElement("code",null,"as"),"because the tool requires every column to have a name."),o.createElement("p",null,"If no aggregations are present in the SELECT-clause a projection is used instead of the group-by operation because ",o.createElement("a",{href:"#relalg-operations-groupby"},"sigma")," without aggregation has the very same effect."),o.createElement("p",null,"Every non-aggregation-column in the SELECT-clause must be present in the group by clause because the would not be available after the grouping."),o.createElement("h4",{id:"sql-having"},"HAVING"),o.createElement("p",null,"The HAVING-Clause represents an optional ",o.createElement("a",{href:"#relalg-operations-selection"},"relational algebra selection"),". The boolean condition can be any ",o.createElement("a",{href:"#sql-valueexpr"},"expression")," evaluating to boolean."),o.createElement("p",null,"The resulting selection is executed directly after the ",o.createElement("a",{href:"#relalg-operations-groupby"},"relational algebra group-by operation"),"."),o.createElement("p",null,"Unlike ",o.createElement("a",{href:"http://www.postgresql.org/docs/9.4/static/sql-select.html#SQL-HAVING",target:"_blank"},"PostgreSQL"),"the HAVING-clause is only allowed when either a aggregation or grouping is present."),o.createElement("h4",{id:"sql-orderby"},"ORDER BY"),o.createElement("p",null,"Order by takes a list of column names or indices of columns (starting with 1) as its argument."),o.createElement("p",null,"It is directly translated to the ",o.createElement("a",{href:"#relalg-operations-orderby"},"extended relational algebra operation order by (tau)"),"."),o.createElement("h4",{id:"sql-limit"},"LIMIT"),o.createElement("p",null,"The LIMIT-clause can be either specified with the LIMIT-OFFSET syntax used by PostgreSQL and MySQL or the FETCH-FIRST syntax introduced in SQL:2008."),o.createElement("p",null,"It is translated into a ",o.createElement("a",{href:"#relalg-operations-selection"},"relational algebra selection")," using the",o.createElement("code",null,"rownum()"),"-function to limit the number of rows returned."),o.createElement("h4",{id:"sql-setoperators"},"UNION / INTERSECT / EXCEPT"),o.createElement("p",null,"The Set-Operators UNION, INTERSECT and EXCEPT directly map to the relational algebra operators ",o.createElement("a",{href:"#relalg-operations-union"},"union"),", ",o.createElement("a",{href:"#relalg-operations-intersection"},"intersection")," and ",o.createElement("a",{href:"#relalg-operations-subtraction"},"subtraction"),"."),o.createElement("p",null,"The keyword ",o.createElement("code",null,"DISTINCT")," is optional because it represents the default behavior. The keyword",o.createElement("code",null,"ALL")," is ignored and a warning is shown because the targeted relational algebra has a implicit elimination duplicate rows."),o.createElement("p",null,"Parentheses can be used to create more complex statements:",o.createElement("br",null),o.createElement("code",{className:"example sql"},"( select distinct * from S union select distinct * from T ) except select distinct * from T order by 1 limit 1")),o.createElement("h4",{id:"sql-with"},"WITH"),o.createElement("p",null,"The WITH-clause (also known as ",o.createElement("i",null,"common table expressions"),") provides a way to define subqueries for single or multiple use in a statement. This can be thought as defining a temporary table for that query in SQL terminology or ",o.createElement("a",{href:"#relalg-assignment"},"creating variables in relational algebra"),". Recursive evaluation is not supported."),o.createElement("p",null,"Each subquery can be referenced by the name from the WITH-clause. The subquery is automatically renamed to the name used in the WITH-clause."),o.createElement("h4",{id:"sql-valueexpr"},"Value expressions"),o.createElement("p",null,"Value expressions are used for boolean expressions for WHERE- and HAVING-clause, the boolean conditions of joins and calculated values in the SELECT-clause. The type of a expression is either ",o.createElement("i",null,"string"),", ",o.createElement("i",null,"number"),", ",o.createElement("i",null,"date")," or ",o.createElement("i",null,"boolean")," and is determined by the used operations and columns."),o.createElement("p",null,"The supported functions and operations are the same for SQL and relational algebra: ",o.createElement("a",{href:"#relalg-valueexpr"},"value expression")),o.createElement("h2",{id:"license-help"},"Licence"),o.createElement("p",null,o.createElement("a",{rel:"license",href:"http://creativecommons.org/licenses/by-sa/4.0/"},o.createElement("img",{alt:"Creative Commons License",style:{borderWidth:0},src:"https://i.creativecommons.org/l/by-sa/4.0/88x31.png"})),o.createElement("br",null),"This document by Johannes Kessler is licensed under a ",o.createElement("a",{rel:"license",href:"http://creativecommons.org/licenses/by-sa/4.0/"},"Creative Commons Attribution-ShareAlike 4.0 International License"),".")))))}}n("./src/calc2/views/landing.css");class Vn extends o.Component{componentDidMount(){Fn("#exec1").click((function(){Fn(this).addClass("hidden"),Fn(this).next().removeClass("hidden")}))}render(){return o.createElement("div",{className:"view-max"},o.createElement(An,null),o.createElement(Un,null),o.createElement("div",{className:"view-content"},o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},o.createElement("div",{className:"col-md-12"},o.createElement("div",{className:"jumbotron",id:"landing-header-bar"},o.createElement("div",{className:"col-md-12 ct",id:"logos"},o.createElement("a",{href:"http://dbis-informatik.uibk.ac.at/",target:"_blank"},o.createElement("img",{src:"assets/logos/Logos_blue_large.png",alt:"Databases and Information Systems (DBIS)",width:"159",height:"120"})),o.createElement("a",{href:"http://www.uibk.ac.at/",target:"_blank"},o.createElement("img",{src:"assets/logos/Logos_uni_uni_2017_rgb_transparent.png",alt:"University of Innsbruck",width:"300",height:"120"}))),o.createElement("div",{className:"col-md-12 ct"},o.createElement("h1",{id:"heading"},"RelaX - relational algebra calculator"),o.createElement("p",null,"calculates any relational algebra statement like ",o.createElement("code",null,o.createElement("span",null,"( σ ",o.createElement("sub",null,"a > 42")," ( A ) ) ",o.createElement("span",{className:"math"},"⋈")," ( π ",o.createElement("sub",null,"a,b")," ( B ) )"))," on a set of relations.")),o.createElement("div",{className:"col-md-12 ct"},o.createElement(Xe,{className:"btn btn-primary btn-lg getStartedBtn",role:"button",to:"/relax/calc"},"Get Started"))),o.createElement("h2",null,"What is the relational algebra calculator?"),o.createElement("p",null,"If you want to learn SQL you take a database system and try some queries.",o.createElement("br",null),"But if you want to learn relational algebra what do you use? Pen and paper?"),o.createElement("p",null,"The relational algebra calculator helps you learn relational algebra (RelAlg) by executing it."),o.createElement("div",{className:"example"},"Subjects =",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed table-inline"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"suId"),o.createElement("th",null,"name"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"string"},"Computing"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"1")),o.createElement("td",null,o.createElement("span",{className:"string"},"Maths"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"English"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"3")),o.createElement("td",null,o.createElement("span",{className:"string"},"History")))))),"Students =",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed table-inline"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"stId"),o.createElement("th",null,"name"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"1")),o.createElement("td",null,o.createElement("span",{className:"string"},"John"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"Mike"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"3")),o.createElement("td",null,o.createElement("span",{className:"string"},"Lisa"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"4")),o.createElement("td",null,o.createElement("span",{className:"string"},"Julia")))))),"Marks =",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed table-inline"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"suId"),o.createElement("th",null,"stId"),o.createElement("th",null,"mark"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"number"},"1")),o.createElement("td",null,o.createElement("span",{className:"string"},"A"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"B"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"number"},"3")),o.createElement("td",null,o.createElement("span",{className:"string"},"C"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"0")),o.createElement("td",null,o.createElement("span",{className:"number"},"4")),o.createElement("td",null,o.createElement("span",{className:"string"},"A"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"A"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"3")),o.createElement("td",null,o.createElement("span",{className:"number"},"2")),o.createElement("td",null,o.createElement("span",{className:"string"},"F"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"number"},"4")),o.createElement("td",null,o.createElement("span",{className:"number"},"1")),o.createElement("td",null,o.createElement("span",{className:"string"},"C")))))),o.createElement("br",null),o.createElement("div",null,o.createElement("span",null,o.createElement("span",{className:"math"}," π "),o.createElement("sub",null," studentName, subjectName, mark "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," ρ "),o.createElement("sub",null," studentName←st.name, subjectName←su.name "),"( ",o.createElement("span",null,"( ",o.createElement("span",null,"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," ρ "),o.createElement("sub",null," su "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"},"Subjects"))," )")," )",o.createElement("span",{className:"math"}," ⨝ "),o.createElement("sub",null," "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," σ "),o.createElement("sub",null,"mark≥'C' "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," ρ "),o.createElement("sub",null," m "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"},"Marks"))," )")," )")," )")," )",o.createElement("span",{className:"math"}," ⨝ "),o.createElement("sub",null," m.stId=st.stId "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"}," ρ "),o.createElement("sub",null,"st "),"( ",o.createElement("span",null,o.createElement("span",{className:"math"},"Students"))," )")," )")," )")," )")),"=",o.createElement("button",{type:"button",className:"btn",id:"exec1"},"execute"),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed table-inline hidden"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"st.studentName"),o.createElement("th",null,"su.subjectName"),o.createElement("th",null,"m.mark"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"string"},"Lisa")),o.createElement("td",null,o.createElement("span",{className:"string"},"Computing")),o.createElement("td",null,o.createElement("span",{className:"string"},"C"))),o.createElement("tr",null,o.createElement("td",null,o.createElement("span",{className:"string"},"Mike")),o.createElement("td",null,o.createElement("span",{className:"string"},"History")),o.createElement("td",null,o.createElement("span",{className:"string"},"F"))))))),o.createElement("h2",null,"Calculator features:"),o.createElement("ul",null,o.createElement("li",null,"supports most common operators",o.createElement("ul",null,o.createElement("li",null,"projection"),o.createElement("li",null,"selection"),o.createElement("li",null,"rename relations"),o.createElement("li",null,"rename columns"),o.createElement("li",null,"group by"),o.createElement("li",null,"intersect"),o.createElement("li",null,"union"),o.createElement("li",null,"set difference"),o.createElement("li",null,"cross join"),o.createElement("li",null,"theta join"),o.createElement("li",null,"natural join"),o.createElement("li",null,"natural left outer join"),o.createElement("li",null,"natural right outer join"),o.createElement("li",null,"natural full outer join"),o.createElement("li",null,"theta left outer join"),o.createElement("li",null,"theta right outer join"),o.createElement("li",null,"theta full outer join"),o.createElement("li",null,"left semi join"),o.createElement("li",null,"right semi join"),o.createElement("li",null,"anti join join"),o.createElement("li",null,"order by"))),o.createElement("li",null,"runs in any modern browser. no plugins needed"),o.createElement("li",null,"text based approach. lets you write RelAlg as easy as SQL"),o.createElement("li",null,"code editor with syntax highlighting and code completion"),o.createElement("li",null,"pre defined sets of relations"),o.createElement("li",null,"visualize statement in a operator tree"),o.createElement("li",null,"plain text alternatives for special symbols like σ or ",o.createElement("span",{className:"math"},"⋈")),o.createElement("li",null,"variables can be used to simplify expressions"),o.createElement("li",null,"new temporal relations can be declared in the statement"),o.createElement("li",null,"sql like comments"),o.createElement("li",null,"arbitrary boolean expressions in conditions"),o.createElement("li",null,"operations keep original order for better traceability"),o.createElement("li",null,"translates simple SQL-statements to RelAlg",o.createElement("ul",null,o.createElement("li",null,"no support for correlated sub-statements")))),o.createElement("h2",null,"Available data"),"You can either use one of the following datasets or create a new one.",o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null,"Name"),o.createElement("th",null,"Source"),o.createElement("th",null,"Language"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,"Kemper Datenbanksysteme"),o.createElement("td",null,o.createElement("a",{href:"http://www3.in.tum.de/teaching/bookDBMSeinf/"},"Alfons Kemper, André Eickler: Datenbanksysteme: Eine Einführung 8. Auflage"),", Seite 84, Abbildung 3.8"),o.createElement("td",null,"de")),o.createElement("tr",null,o.createElement("td",null,"UIBK - KursDB"),o.createElement("td",null,"Tables from and for the lecture ",o.createElement("a",{href:"http://dbis-informatik.uibk.ac.at/249-0-VO-Datenbanksysteme.html",target:"_blank"},"Databases: Foundations, Data Models and System Concepts - University of Innsbruck")," chapter 3"),o.createElement("td",null,"de")),o.createElement("tr",null,o.createElement("td",null,"UIBK - R, S, T"),o.createElement("td",null,"Tables from and for the lecture ",o.createElement("a",{href:"http://dbis-informatik.uibk.ac.at/249-0-VO-Datenbanksysteme.html",target:"_blank"},"Databases: Foundations, Data Models and System Concepts - University of Innsbruck")," chapter 3"),o.createElement("td",null,"de")),o.createElement("tr",null,o.createElement("td",null,"The Complete Book - Exercise 2.4.1"),o.createElement("td",null,"Sample Data from",o.createElement("a",{href:"http://infolab.stanford.edu/~ullman/dscb.html"},"Database Systems The Complete Book 2nd Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom"),": Exercise 2.4.1 Page 52-55"),o.createElement("td",null,"en")),o.createElement("tr",null,o.createElement("td",null,"The Complete Book - Exercise 2.4.3"),o.createElement("td",null,"Sample Data from",o.createElement("a",{href:"http://infolab.stanford.edu/~ullman/dscb.html"},"Database Systems The Complete Book 2nd Edition by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom"),": Exercise 2.4.1 Page 55-57"),o.createElement("td",null,"en"))))),o.createElement("h2",null,"What it is not:"),o.createElement("p",null,"The tool is not meant to be a full database system. The goal of the implementation was to create a tool to support people to learn RelAlg."),o.createElement("div",{className:"scroll-x"},o.createElement("table",{className:"table table-condensed"},o.createElement("thead",null,o.createElement("tr",null,o.createElement("th",null," "),o.createElement("th",null,"Pen and Paper"),o.createElement("th",null,"relational algebra calculator"),o.createElement("th",null,"MySQL"))),o.createElement("tbody",null,o.createElement("tr",null,o.createElement("th",null,"SQL support"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes :-)"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," basic SQL"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes")),o.createElement("tr",null,o.createElement("th",null,"relational algebra"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no")),o.createElement("tr",null,o.createElement("th",null,"use variables for RelAlg"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no")),o.createElement("tr",null,o.createElement("th",null,"large datasets"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes")),o.createElement("tr",null,o.createElement("th",null,"query plan"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no")),o.createElement("tr",null,o.createElement("th",null,"intermediate results"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no")),o.createElement("tr",null,o.createElement("th",null,"iterative working"),o.createElement("td",null,o.createElement("span",{className:"fa fa-times"})," no"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"),o.createElement("td",null,o.createElement("span",{className:"fa fa-check"})," yes"))))),o.createElement("h2",{id:"changelog"},"Changelog"),o.createElement("ul",null,o.createElement("li",null,"0.20",o.createElement("ul",null,o.createElement("li",null,"added option to automatically replace operators in relational algebra: all plaintext-syntax operators get replaced with the equivalent mathematical symbol or vice versa."))),o.createElement("li",null,"0.19",o.createElement("ul",null,o.createElement("li",null,"added datepicker to quickly insert a date literal"))),o.createElement("li",null,"0.18",o.createElement("ul",null,o.createElement("li",null,"added support for the ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"LIKE-operator")," for SQL and relational algebra",o.createElement("br",null),"e.g. ",o.createElement("code",null,"pi 'abc' like 'a%'->x R")),o.createElement("li",null,"added translation support for the calculator using ",o.createElement("a",{href:"http://i18next.com/",target:"_blank"},"i18next"),". This allows easy translation of the main calculator into other languages."),o.createElement("li",null,"calculator is now available in ",o.createElement("a",{href:"calc.htm?lang=de"},"german")),o.createElement("li",null,"ported project to ES2015 (it now gets transpiled to ES5 and packed using ",o.createElement("a",{target:"_blank",href:"https://babeljs.io/"},"Babel.js"),"and ",o.createElement("a",{target:"_blank",href:"http://browserify.org/"},"Browserify"),")"))),o.createElement("li",null,"0.17",o.createElement("ul",null,o.createElement("li",null,"fixed bug: inline-table-editor not working"),o.createElement("li",null,"fixed bug: formula for !a was not working"))),o.createElement("li",null,"0.16",o.createElement("ul",null,o.createElement("li",null,"disallow relational algebra keywords as column-/relation-names"),o.createElement("li",null,"fixed precedence for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"CASE-WHEN-expressions")),o.createElement("li",null,"added support for the SQL-92 ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},o.createElement("code",null,"||"),"-concat operator")),o.createElement("li",null,"added ",o.createElement("code",null,"except")," as alternative syntax for the ",o.createElement("a",{href:"/relax/help#relalg-operations-subtraction"},"relational algebra set-difference operator")),o.createElement("li",null,"fixed bug where ",o.createElement("code",null,"A=R join S A")," was interpreted as",o.createElement("code",null,"A=(R join S A)")," instead of ",o.createElement("code",null,"A=(R join S) A"),".",o.createElement("br",null),"see ",o.createElement("a",{href:"/relax/help#relalg-operations-innerjoin"},"help page")," for more information"))),o.createElement("li",null,"0.15",o.createElement("ul",null,o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"hour(), minute() and second()")),o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"now()"),o.createElement("br",null),"e.g. ",o.createElement("code",null,"pi hour(now())->x, minute(now())->y, second(now())->z ( R )")),o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"n-ary concat"),o.createElement("br",null),"e.g. ",o.createElement("code",null,"pi concat(b, '_', c)->x R")),o.createElement("li",null,"added support for WITH-clauses for SQL"))),o.createElement("li",null,"0.14",o.createElement("ul",null,o.createElement("li",null,"improve error message for theta-joins with conflicting columns"),o.createElement("li",null,"improve error message and added example for assignments without query error"),o.createElement("li",null,"bugfix: calculator-tour did not work correctly for Edge on Windows 10"))),o.createElement("li",null,"0.13",o.createElement("ul",null,o.createElement("li",null,'updated to CodeMirror version 5.1 with "experimental mobile support"'),o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"COALESCE()"),o.createElement("br",null),"e.g. ",o.createElement("code",null,"pi coalesce(a, b, 1)->x R"),", ",o.createElement("code",null,"select coalesce(a, b, 1) as x from R")),o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"CASE WHEN"),o.createElement("br",null),"e.g. ",o.createElement("code",null,"select case when a > 3 then a+1 else a end as x from R")),o.createElement("li",null,"added support for complex union/intersect/except statements for SQL",o.createElement("br",null),"e.g. ",o.createElement("code",null,"(select * from S union ( select * from T except select * from T )) order by 1")))),o.createElement("li",null,"0.12",o.createElement("ul",null,o.createElement("li",null,"added support for more complex FROM-clauses for SQL",o.createElement("br",null),"e.g. ",o.createElement("code",null,"select distinct * from R, (S natural join T)")),o.createElement("li",null,"simplify and link the syntax diagrams at the help page"))),o.createElement("li",null,"0.11",o.createElement("ul",null,o.createElement("li",null,"added a tour to explain the main features of the tool to new users (using ",o.createElement("a",{href:"http://bootstraptour.com/",target:"_blank"},"Bootstrap Tour"),")"),o.createElement("li",null,"added ",o.createElement("a",{href:"/relax/help#sql-reference"},"reference for SQL in the help section")),o.createElement("li",null,"added support for USING clause for joins for SQL"),o.createElement("li",null,"added support FETCH FIRST syntax (SQL:2008) for SQL",o.createElement("br",null),"e.g. ",o.createElement("code",null,"select * from R offset 2 rows fetch first 10 rows only")),o.createElement("li",null,"allow DISTINCT on set operators for SQL"),o.createElement("li",null,"bugfix: having should be allowed without group by if aggregation is used"))),o.createElement("li",null,"0.10",o.createElement("ul",null,o.createElement("li",null,"added support for ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"arithmetic expressions and functions")," for SQL",o.createElement("br",null),"e.g. ",o.createElement("code",null,"select distinct a+2 as x from R where length(b) > 2")),o.createElement("li",null,"show warnings instead of errors when not using distinct or using all on set operators in SQL"))),o.createElement("li",null,"0.9",o.createElement("ul",null,o.createElement("li",null,"added support for arithmetic operators and functions in ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"(e.g boolean) expressions")," for relational algebra"),o.createElement("li",null,"projection supports ",o.createElement("a",{href:"/relax/help#relalg-operations-projection"},"expressions")),o.createElement("li",null,"removed magic ",o.createElement("a",{href:"/relax/help#relalg-operations-projection"},"ROWNUM")," column; ",o.createElement("a",{href:"/relax/help#relalg-valueexpr"},"ROWNUM()")," is now a function"),o.createElement("li",null,"tutorials for ",o.createElement("a",{href:"/relax/help#tutorial-user"},"users")," and ",o.createElement("a",{href:"/relax/help#tutorial-maintainer"},"maintainers")),o.createElement("li",null,"new braces handling in formula generation (braces are only placed if necessary)"),o.createElement("li",null,"bugfix: rename not existent column was silently ignored"),o.createElement("li",null,"syntax of dates has changed ",o.createElement("code",null,"1970-01-01")," could not be used any more because it is ambiguous (arithmetic operaton or date). The SQL notation (",o.createElement("code",null,"date('1970-01-01')"),") is now used for the relational algebra mode."))),o.createElement("li",null,"0.8",o.createElement("ul",null,o.createElement("li",null,"grid editor for inline relations"),o.createElement("li",null,"sql-dump import (beta)"),o.createElement("li",null,"group editor"),o.createElement("li",null,"changed the basic structure of the editors (internally)"),o.createElement("li",null,"duplicate rows are removed in every step")))),o.createElement("h2",null,"Who?"),o.createElement("p",null,"The relational algebra calculator was created by Johannes Kessler BSc at ",o.createElement("a",{href:"https://dbis-informatik.uibk.ac.at/1-1-Home.html"},"Databases and Information Systems Group")," at the ",o.createElement("a",{href:"http://informatik.uibk.ac.at/"},"Institute of Computer Science")," at the ",o.createElement("a",{href:"http://www.uibk.ac.at/index.html.en"},"University of Innsbruck")," under supervision of Michael Tschuggnall PhD and Prof. Dr. Günther Specht"),o.createElement("h2",null,"External resources"),o.createElement("p",null,"This tool was not written from scratch but many different external resources/frameworks/projects/libs are used."),o.createElement("p",null,"This is a list of resources/frameworks/projects/libs used for this tool (in alphabetical order) to give credit where credit is due and guide anyone interested to them without having to look through the code."),o.createElement("ul",null,o.createElement("li",null,o.createElement("a",{target:"_blank",href:"https://babeljs.io/"},"Babel JavaScript compiler")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://blanketjs.org/"},"blanket.js")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://botmonster.com/jquery-bootpag/"},"bootpag")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://getbootstrap.com/"},"Bootstrap")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"https://bootstrap-datepicker.readthedocs.org"},"bootstrap-datepicker")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://bootstraptour.com/"},"Bootstrap Tour")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://browserify.org/"},"Browserify")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://codemirror.net/"},"CodeMirror")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://codepen.io/Pestov/pen/BLpgm"},"CSS3 family tree by Ilya Pestov")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://www.gnu.org/software/freefont/"},"FreeSans by GNU FreeFont")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://gruntjs.com/"},"Grunt")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://handlebarsjs.com/"},"handlebars")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://handsontable.com/"},"Handsontable")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://i18next.com/"},"i18next")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://jquery.com/"},"jQuery")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"https://github.com/chjj/marked"},"marked - a markdown parser")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://pegjs.org/"},"PEG.js - Parser Generator for JavaScript")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"http://qunitjs.com/"},"QUnit - js unit testing")),o.createElement("li",null,o.createElement("a",{target:"_blank",href:"https://github.com/tabatkins/railroad-diagrams"},"tabatkins/railroad-diagrams"))))))))}}class qn extends o.Component{componentDidMount(){}render(){return o.createElement("div",{className:"view-max"},o.createElement(An,null),o.createElement(Un,null),o.createElement("div",{className:"view-min"},"Databases and Information System",o.createElement("br",null),"Universität Innsbruck",o.createElement("br",null),"ICT - building, second floor",o.createElement("br",null),"Technikerstrasse 21a",o.createElement("br",null),"A-6020 Innsbruck",o.createElement("br",null)))}}n("./src/calc2/style/index.scss");class Gn extends o.Component{constructor(e){super(e),this.state={isNavbarOpen:!0}}componentDidMount(){var e;const t=document.getElementById("loadingScreen");null===(e=null==t?void 0:t.parentNode)||void 0===e||e.removeChild(t)}render(){const{store:e}=this.props,{isNavbarOpen:t}=this.state;return o.createElement(Ue,null,o.createElement(f,{store:e},o.createElement(r.a,null,o.createElement(Be,null,o.createElement(Le,{exact:!0,from:"/",to:"/relax/landing"}),o.createElement(Le,{exact:!0,from:"/relax",to:"/relax/landing"}),o.createElement(Pe,{path:"/relax/landing",component:Vn}),o.createElement(Pe,{path:"/relax/help",component:zn}),o.createElement(Pe,{path:"/relax/imprint",component:qn}),o.createElement(Le,{from:"/relax/calc",to:"/relax/calc/local/uibk/local/0",exact:!0,strict:!0}),o.createElement(Pe,{path:"/relax/calc/:source/:id/:filename/:index",component:Yn}),o.createElement(Pe,{path:"/relax/calc/:source/:id",component:Yn}),o.createElement(Pe,{path:"/relax/calc/:source/:id/:filename/:index",component:Yn}),o.createElement(Pe,{path:"/relax/api/:source/:id",component:Yn}),o.createElement(Pe,{render:e=>o.createElement("div",{className:"view-min"},o.createElement("h1",null,"404"),o.createElement("p",null,"This route doesn't exist"),o.createElement("span",null,JSON.stringify(e)))})))))}}},"./src/calc2/style/index.scss":function(e,t,n){},"./src/calc2/utils/groupUtils.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return c}));var r=n("./src/db/relalg.ts"),o=n("./node_modules/jquery/dist/jquery.js");const i=n("./src/calc2/data/uibk.txt"),a={uibk:i.default?i.default:""};function s(e,t,n){return u(Object(r.c)(e),t,n)}function l(e,t,n){if(0===(e=e.filter(({name:e})=>e===t)).length)return{fallback:n};let r=null;const o={};for(let t=0;t{switch(e){case"gist":o.ajax({url:`https://api.github.com/gists/${t}`,dataType:"json",success:function(o){const a=[];for(const u in o.files){if(!o.files.hasOwnProperty(u))continue;const c=null===o.owner?"anonymous":o.owner.login,d=null===o.owner?void 0:o.owner.html_url,h={source:e,id:o.id,filename:u,index:-1,maintainer:n,maintainerGroup:r},f={author:c,authorUrl:d,lastModified:new Date(o.updated_at),url:o.url};try{a.push(...s(o.files[u].content,h,f)),i(a)}catch(e){const n='could not parse given group from gist with id "'+t+'": '+e;console.error(n,t,e,u,o),l(new Error(n))}}},crossDomain:!0,statusCode:{404:function(){l(new Error("gist "+t+" not found"))}},async:!0});break;case"local":try{const o=s(a[t],{source:e,id:t,filename:"local",index:-1,maintainer:n,maintainerGroup:r},{});i(o)}catch(e){let t="cannot parse groups file: "+e.message;t+="
              see log for more information",console.error(t,e),l(new Error(t))}break;case"http":{const e="parsing groups from arbitrary urls is no longer supported; use github gists instead.";window.alert(e),l(new Error(e));break}default:l(new Error("unknown source "+e))}})}},"./src/calc2/views/help.css":function(e,t,n){},"./src/calc2/views/landing.css":function(e,t,n){},"./src/db/exec/Column.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));class r{constructor(e,t,n="null"){this._type="null",this._name=e,this._relAlias=t,this._type=n}getName(){return this._name}getRelAlias(){return this._relAlias}getType(){return this._type}setRelAlias(e){this._relAlias=e}toString(){return r.printColumn(this._name,this._relAlias)}equals(e){return this._name===e._name&&this._relAlias===e._relAlias}static printColumn(e,t){let n;return n="number"==typeof e?`[${e}]`:e,null===t?n:`${t}.${n}`}}},"./src/db/exec/ExecutionError.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));class r extends Error{constructor(e,t){super(e),this.codeInfo=t||void 0}}},"./src/db/exec/RANode.ts":function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return a})),n.d(t,"a",(function(){return s}));var r=n("./src/db/exec/ExecutionError.ts");class o{constructor(e=""){this._codeInfo=null,this._metaData={},this._resultNumRows=-1,this._wrappedInParentheses=!1,this._warnings=[],this._functionName=e}setCodeInfoObject(e){return this._codeInfo=e,this}addWarning(e,t){const n={message:e,codeInfo:void 0};t&&(n.codeInfo=t),this._warnings||(this._warnings=[]),this._warnings.push(n)}setWrappedInParentheses(e=!0){this._wrappedInParentheses=e}throwExecutionError(e){throw new r.a(e,this._codeInfo)}setMetaData(e,t){this._metaData[e]=t}hasMetaData(e){return void 0!==this._metaData[e]}getMetaData(e){return this._metaData[e]}getResultNumRows(){if(void 0===this._resultNumRows||-1===this._resultNumRows)throw new Error("result num rows not set! call only after getResult");return this._resultNumRows}setResultNumRows(e){this._resultNumRows=e}_returnOrCreateSession(e){return void 0===e?{statement_timestamp:new Date}:e}getArgumentHtml(){return""}static foreachRecursive(e,t){t(e),e instanceof a?t(e.getChild()):e instanceof s&&(t(e.getChild()),t(e.getChild2()))}}class i extends o{getWarnings(e){return this._warnings}getFormulaHtml(e=!0,t=!0){const n=!0===this._wrappedInParentheses&&!0===t;return`${n?"(":""}\n\t\t\t\t\n\t\t\t\t\t${this._functionName}\n\t\t\t\t\n\t\t\t${n?")":""}`}}class a extends o{constructor(e,t){super(e),this._child=t}getChild(){return this._child}getWarnings(e){return!0===e?[...this._warnings,...this.getChild().getWarnings(!0)]:[...this._warnings]}getFormulaHtml(e=!0,t=!0){const n=!0===this._wrappedInParentheses&&!0===t;return`${n?"(":""}\n\n\t\t\t\t\n\t\t\t\t\t${this._functionName}\n\t\t\t\t\t${this.getArgumentHtml()}\n\t\t\t\t\t${!0===e?this.getChild().getFormulaHtml(e,!0):""}\n\t\t\t\t\n\t\t\t${n?")":""}`}}class s extends o{constructor(e,t,n){super(e),this._child=t,this._child2=n}getChild(){return this._child}getChild2(){return this._child2}getWarnings(e){return!0===e?[...this._warnings,...this.getChild().getWarnings(!0),...this.getChild2().getWarnings(!0)]:[...this._warnings]}getFormulaHtml(e=!0,t=!0){const n=!0===this._wrappedInParentheses||!0===t;return`${n?"(":""}\n\n\t\t\t\t\n\t\t\t\t\t${!0===e?this.getChild().getFormulaHtml(e,!0):""}\n\t\t\t\t\t${this._functionName}\n\t\t\t\t\t${this.getArgumentHtml()}\n\t\t\t\t\t${!0===e?this.getChild2().getFormulaHtml(e,!0):""}\n\t\t\t\t\n\t\t\t${n?")":""}`}}},"./src/db/exec/Relation.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n("./src/db/exec/RANode.ts"),o=n("./src/db/exec/Table.ts");class i extends r.b{constructor(e,t){super(e),this._schema=null,void 0===t?this._table=new o.a:(t.check(),this._schema=t.getSchema(),this._table=t.getResult())}setSchema(e,t=!1){return this._schema=e.copy(),!0!==t&&this._schema.setRelAlias(this._functionName),this._table.setSchema(this._schema),this}addRow(e){this._table.addRow(e)}addRows(e){this._table.addRows(e)}getResultNumRows(){return this._resultNumRows}getResult(e){this._returnOrCreateSession(e);const t=this._table.copy();return t.eliminateDuplicateRows(),this.setResultNumRows(t.getNumRows()),t}getSchema(){return this._table.getSchema()}getName(){return this._functionName}check(){}hasChild(){return!1}copy(){if(null===this._schema)throw new Error("check not called");const e=new i(this._functionName);return e.setSchema(this._schema),e._table=this._table.copy(),e}}},"./src/db/exec/Schema.ts":function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n("./node_modules/i18next/dist/es/index.js"),o=n("./src/db/exec/Column.ts");class i{constructor(){this._names=[],this._relAliases=[],this._types=[],this._size=0,this._colIndexPerName={}}getSize(){return this._size}addColumn(e,t,n){if("string"!==n&&"date"!==n&&"number"!==n&&"boolean"!==n)throw new Error("unknown type! "+n);this._names.push(e),this._relAliases.push(t),this._types.push(n);const o=this._size;if(!1===this.isUnique(o))throw new Error(r.a("db.messages.exec.error-column-not-unique",{column:t+"."+e}));return this._addColToIndex(e,o),this._size++,this}addColumn2(e){return this.addColumn(e.getName(),e.getRelAlias(),e.getType())}_addColToIndex(e,t){void 0===this._colIndexPerName[e]?this._colIndexPerName[e]=[t]:this._colIndexPerName[e].push(t)}_removeColFromIndex(e){const t=this._names[e],n=this._colIndexPerName[t];n.splice(n.indexOf(e,0),1),0===n.length&&delete this._colIndexPerName[t]}removeColumn(e){this._names.splice(e,1),this._relAliases.splice(e,1),this._types.splice(e,1),this._size--;for(let t=e;tthis._size)throw new Error(r.a("db.messages.exec.error-column-index-out-of-range",{column:o.a.printColumn(e,t),schema:this.toString()}));if(null===t)return[n];if(this._relAliases[n]===t)return[n]}return[]}getType(e){return this._types[e]}equals(e){if(!1===this.equalsTypeOnly(e))return!1;for(let t=0;t1}getName(e){return this._names[e]}getFullName(e){return(this._relAliases[e]?this._relAliases[e]+".":"")+this._names[e]}toString(){const e=[];for(let t=0;t'+Object(r.d)(n,o)+"
              "}getRows(e=0,t){if(0===e&&void 0===t)return this._rows;{const n=this._rows.length;let r=n;t&&t>0&&(r=Math.min(n,e+t)),this._rows.slice(e,r);const o=[];for(let t=e;t"+n.getName()+"":""+n.toString()+""}o+="";let i="";const a=this.getNumRows();let s=a;t&&t>0&&(s=Math.min(a,n+t));for(let e=n;e"+this.getValueHtmlAt(e,n)+"";i+=t+""}return""+o+i+"
              "}equals(e){if(e instanceof a==!1)throw new Error("can not compare");if(!1===this._schema.equals(e._schema))return!1;if(this._rows.length!==e._rows.length)return!1;for(let t=0;tn)throw new Error("invalid sort cols");for(let e=0;e=n||r[e]<0)throw new Error("invalid sort cols");const i=r.length;if(i!==o.length)throw new Error("invalid sort cols");const a=r.map(e=>this._schema.getType(e)),s=function(e,t,n,r,o){const i=e[n],a=t[n];if(null===i&&null===a)return 0;if(null===i&&null!==a)return 1*r;if(null!==i&&null===a)return-1*r;switch(o){case"number":case"date":case"boolean":return r*(i-a);case"string":return r*i.localeCompare(a);case"null":return 0}};this._rows.sort((function(e,t){let n=0;for(let l=0;l=e.length?t[this._index-e.length]:e[this._index]}toString(){return o.a.printColumn(this._name,this._relAlias)}getFormulaHtml(){const e=o.a.printColumn(this._name,this._relAlias);return!0===this._wrappedInParentheses?"("+e+")":e}static _getColumnIndex(e,t,n,r){if(!t||null===t)return e.getColumnIndex(n,r,!0);const o=e.getColumnIndex(n,r,!1);return-1===o?t.getColumnIndex(n,r,!0)+e.getSize():(t.getColumnIndex(n,r,!1),o)}static _getType(e,t,n){return n>=e.getSize()?t.getType(n-e.getSize()):e.getType(n)}}class u extends s{constructor(e,t,n){super(),this._func=t,this._dataType=e,this._dataTypeCalculated=null,this._args=n||[]}evaluate(e,t,n,r){switch(this._dataType){case"string":return this._evaluateString(e,t,n,r);case"number":return this._evaluateNumber(e,t,n,r);case"boolean":return this._evaluateBoolean(e,t,n,r);case"date":return this._evaluateDate(e,t,n,r);case"null":return this._evaluateNull(e,t,n,r);default:throw new Error("this should not happen!")}}_parseIsoDate(e){const t=/^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$/.exec(e);if(null===t)throw new r.a(i.a("db.messages.exec.error-invalid-date-format",{str:e}),this._codeInfo);const n=parseInt(t[1],10),o=parseInt(t[2],10)-1,a=parseInt(t[3],10),s=new Date(n,o,a);return s.getFullYear()===n&&s.getMonth()===o&&s.getDate()===a||this.throwExecutionError(i.a("db.messages.exec.error-invalid-date-format",{str:e})),s}_evaluateNull(e,t,n,r){switch(this._func){case"constant":return null;case"coalesce":for(let o=0;o1&&this._args[1].evaluate(e,t,n,r),null===o||this._args.length>1&&null===i)return null;switch(this._func){case"date":return this._parseIsoDate(o);case"adddate":return new Date(o.getTime()+864e5*i);case"subdate":return new Date(o.getTime()-864e5*i);default:throw new Error("this should not happen!")}}_checkDate(e,t){switch(this._func){case"transaction_timestamp":case"statement_timestamp":case"clock_timestamp":case"now":return!0;case"date":return this._checkArgsDataType(e,t,["string"]);case"adddate":case"subdate":return this._checkArgsDataType(e,t,["date","number"]);default:throw new Error("this should not happen!")}}_evaluateBoolean(e,t,n,r){let o,i,a;if("constant"===this._func)return this._args[0];switch(o=this._args[0].evaluate(e,t,n,r),i=this._args.length>1&&this._args[1].evaluate(e,t,n,r),this._func){case"not":return"unknown"===o?o:!o;case"and":return!1!==o&&!1!==i&&(!0===o&&!0===i||"unknown");case"or":return!0===o||!0===i||(!1!==o||!1!==i)&&"unknown";case"xor":return"unknown"===o||"unknown"===i?"unknown":o!==i;case"=":case">=":case"<=":case">":case"<":case"!=":return a=this._args[0].getDataType(),u._condition_compare(o,i,a,this._func);case"like":case"ilike":if(!this._regex)throw new Error("regex should have been set by check");return this._regex.test(o);default:throw new Error("this should not happen!")}}static _condition_compare(e,t,n,r){if(null===e||null===t)switch(r){case"=":case">=":case"<=":return e===t||"unknown";case"<":case">":return e!==t&&"unknown";case"!=":return e!==t;default:throw new Error("unknown operator")}switch(n){case"number":case"string":switch(r){case"=":return e===t;case">":return e>t;case"<":return e=":return e>=t;case"<=":return e<=t;case"!=":return e!==t;default:throw new Error("unknown operator")}case"date":switch(r){case"=":return e.getTime()===t.getTime();case">":return e>t;case"<":return e=":return e>=t;case"<=":return e<=t;case"!=":return e.getTime()!==t.getTime();default:throw new Error("unknown operator")}case"boolean":if("boolean"!=typeof e||"boolean"!=typeof t)throw new Error("operands have different type");switch(r){case"=":return e===t;case">":return e>t;case"<":return e=":return e>=t;case"<=":return e<=t;case"!=":return e!==t;default:throw new Error("unknown operator")}default:throw new Error("unknown type "+n)}}_checkBoolean(e,t){let n,r;switch(this._func){case"constant":return!0;case"not":return this._checkArgsDataType(e,t,["boolean"]);case"and":case"or":case"xor":return this._checkArgsDataType(e,t,["boolean","boolean"]);case"=":case">=":case"<=":case">":case"<":case"!=":return this._args[0].check(e,t),this._args[1].check(e,t),n=this._args[0].getDataType(),r=this._args[1].getDataType(),"null"===n||"null"===r?!0:n===r||(this.throwExecutionError(i.a("db.messages.exec.error-could-not-compare-different-types",{typeA:n,typeB:r})),this._checkArgsDataType(e,t,["boolean","boolean"]));case"like":case"ilike":if(this._args[0].check(e,t),"string"!==this._args[1].getDataType()||"constant"!==this._args[1]._func)return!1;const o=this._args[1]._args[0];let a=String(o).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&");a=a.replace(/([^\\]?)_/g,"$1."),a=a.replace(/([^\\]?)%/g,"$1.*");const s="ilike"===this._func?"i":"";this._regex=new RegExp("^"+a+"$",s);break;default:throw new Error("this should not happen!")}}_evaluateString(e,t,n,r){switch(this._func){case"constant":return this._args[0];case"lower":case"upper":const o=this._args[0].evaluate(e,t,n,r);return null===o?null:"lower"===this._func?o.toLowerCase():o.toUpperCase();case"concat":let i="";for(let o=0;o0?this._args[0].evaluate(e,t,n,r):void 0,i=this._args.length>1?this._args[1].evaluate(e,t,n,r):void 0;switch(this._func){case"add":return null===o||null===i?null:o+i;case"sub":return null===o||null===i?null:o-i;case"mul":return null===o||null===i?null:o*i;case"div":return null===o||null===i?null:o/i;case"mod":return null===o||null===i?null:o%i;case"abs":return null===o?null:Math.abs(o);case"floor":return null===o?null:Math.floor(o);case"ceil":return null===o?null:Math.ceil(o);case"round":return null===o?null:Math.round(o);case"minus":return null===o?null:-o;case"rand":return Math.random();case"rownum":return n+1;case"strlen":return null===o?null:o.length;case"year":return null===o?null:o.getFullYear();case"month":return null===o?null:o.getMonth()+1;case"dayofmonth":return null===o?null:o.getDate();case"hour":return null===o?null:o.getHours();case"minute":return null===o?null:o.getMinutes();case"second":return null===o?null:o.getSeconds();default:throw new Error("this should not happen!")}}_checkArgsDataType(e,t,n){const r=[];if(this._args.length!==n.length)throw new Error("this should not happen: #args != #types");for(let o=0;o{let t=(e||this._func)+"(";for(let e=0;e{let t="CASE";for(let n=0;n{let t="";return t+=` ${e||this._func} `,t=this._args[0].getFormulaHtml()+t,t+=this._args[1].getFormulaHtml(),`${t}`};function r(){const{_func:r}=this;switch(r){case"constant":return a(this._args[0],this._dataTypeCalculated||this._dataType);case"rand":case"rownum":case"abs":case"ceil":case"floor":case"round":case"year":case"month":case"dayofmonth":case"hour":case"minute":case"second":case"adddate":case"subdate":case"concat":case"upper":case"lower":case"date":case"strlen":return e.call(this,"length");case"minus":return e.call(this,"-");case"not":return e.call(this,"!");case"caseWhen":case"caseWhenElse":return t.call(this,"caseWhenElse"===this._func);case"add":return n.call(this,"+");case"sub":return n.call(this,"-");case"mul":return n.call(this,"*");case"div":return n.call(this,"/");case"mod":return n.call(this,"%");case"and":case"or":case"xor":case"like":case"ilike":case"=":return n.call(this,r);case">=":return n.call(this,"≥");case"<=":return n.call(this,"≤");case">":return n.call(this,">");case"<":return n.call(this,"<");case"!=":return n.call(this,"≠")}return this.toString()}return!0===this._wrappedInParentheses?`(${r.call(this)})`:r.call(this).toString()}}},"./src/db/parser/grammar_ra.pegjs":function(e,t,n){"use strict";function r(e,t,n,o){this.message=e,this.expected=t,this.found=n,this.location=o,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,r)}!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(r,Error),r.buildMessage=function(e,t){var n={literal:function(e){return'"'+o(e.text)+'"'},class:function(e){var t,n="";for(t=0;t0){for(t=1,r=1;t",!1),re=(pr("ψ",!1),pr("psi",!0),pr("τ",!1)),oe=function(){return ri("tau")},ie=pr("tau",!0),ae=pr("γ",!1),se=function(){return ri("gamma")},le=pr("gamma",!0),ue=pr("∪",!1),ce=function(){return ri("unionOperator")},de=pr("union",!0),he=pr("∩",!1),fe=function(){return ri("intersectOperator")},me=pr("intersect",!0),pe=pr("÷",!1),ge=pr("/",!1),ye=pr("\\",!1),be=function(){return ri("differenceOperator")},ve=pr("except",!0),_e=pr("⨯",!1),we=pr("x",!1),Ee=function(){return ri("crossJoinOperator")},je=pr("cross",!0),Ce=pr("join",!0),Se=pr("⨝",!1),Oe=pr("⋈",!1),ke=function(){return ri("innerJoinOperator")},Te=pr("inner",!0),Me=function(){return ri("naturalJoinOperator")},xe=pr("natural",!0),Re=pr("⋉",!1),Le=function(){return ri("leftSemiJoinOperator")},Ae=pr("left",!0),De=pr("semi",!0),Ne=pr("⋊",!1),Pe=function(){return ri("rightSemiJoinOperator")},Ie=pr("right",!0),He=pr("▷",!1),Ye=function(){return ri("antiJoinOperator")},Fe=pr("anti",!0),We=pr("⟕",!1),Be=function(){return ri("leftOuterJoinOperator")},Ue=pr("outer",!0),ze=pr("⟖",!1),Ve=function(){return ri("rightOuterJoinOperator")},qe=pr("⟗",!1),Ge=function(){return ri("fullOuterJoinOperator")},Ke=pr("full",!0),Xe=pr(",",!1),$e=function(e,t){var n=[e];if(null!==t)for(var r in t)n.push(t[r][3]);return n},Je=function(e,t){var n=[e];if(null!==t)for(var r in t)n.push(t[r][3]);return n},Qe=pr("asc",!0),Ze=pr("desc",!0),et=pr("sum",!0),tt=pr("count",!0),nt=pr("avg",!0),rt=pr("min",!0),ot=pr("max",!0),it=pr("(",!1),at=pr(")",!1),st=pr("count(*)",!0),lt=function(e){for(var t=[],n=0;n"group"===e.name);if(!r)continue;const o=r.text;t[o]&&mr(ei("db.messages.parser.error-group-non-unique-group-name",{name:o})),t[o]=!0}}(t),{type:"groupRoot",groups:t,codeInfo:ti()}},ut=pr("en",!1),ct=pr("de",!1),dt=pr("es",!1),ht=/^[a-z@]/,ft=gr([["a","z"],"@"],!1,!1),mt=pr(":",!1),pt=/^[a-z]/,gt=gr([["a","z"]],!1,!1),yt=pr("@",!1),bt=pr("[[",!1),vt=pr("\\]]",!1),_t=pr("]]",!1),wt=function(e,t){return function(e,t){var n,r=t[0];r.child=e,r.codeInfo=ni(r.child.codeInfo,r.codeInfo);for(var o=1;o",!1),kt=pr(">=",!1),Tt=pr("≥",!1),Mt=pr(">",!1),xt=pr("<=",!1),Rt=pr("≤",!1),Lt=pr("<",!1),At=yr("logical AND"),Dt=pr("and",!0),Nt=pr("∧",!1),Pt=yr("logical XOR"),It=pr("xor",!0),Ht=pr("⊻",!1),Yt=pr("⊕",!1),Ft=yr("logical OR"),Wt=pr("or",!0),Bt=pr("∨",!1),Ut=yr("logical NOT"),zt=pr("!",!1),Vt=pr("¬",!1),qt=yr("delimiter"),Gt=pr("string",!0),Kt=pr("number",!0),Xt=pr("date",!0),$t=pr("boolean",!0),Jt=pr("null",!1),Qt=pr("NULL",!1),Zt=pr("}",!1),en=/^[\-_a-z0-9.]/i,tn=gr(["-","_",["a","z"],["0","9"],"."],!1,!0),nn=function(e){return{type:"string",value:e,quoted:!0}},rn=pr('"',!1),on=/^[^"\n]/,an=gr(['"',"\n"],!0,!1),sn=pr("{",!1),ln=yr("boolean expression"),un=pr("||",!1),cn=function(e,t){return{type:"valueExpr",datatype:"boolean",func:e,args:[void 0,t],codeInfo:ti()}},dn=pr("like",!0),hn=pr("ilike",!0),fn=pr("+",!1),mn=pr("*",!1),pn=pr("%",!1),gn=pr("coalesce",!0),yn=pr("concat",!0),bn=pr("adddate",!0),vn=pr("subdate",!0),_n=pr("mod",!0),wn=pr("add",!0),En=pr("sub",!0),jn=pr("mul",!0),Cn=pr("div",!0),Sn=pr("upper",!0),On=pr("ucase",!0),kn=pr("lower",!0),Tn=pr("lcase",!0),Mn=pr("length",!0),xn=pr("abs",!0),Rn=pr("floor",!0),Ln=pr("ceil",!0),An=pr("round",!0),Dn=pr("year",!0),Nn=pr("month",!0),Pn=pr("day",!0),In=pr("hour",!0),Hn=pr("minute",!0),Yn=pr("second",!0),Fn=pr("dayofmonth",!0),Wn=pr("rand",!0),Bn=pr("rownum",!0),Un=pr("now",!0),zn=pr("current_timestamp",!0),Vn=pr("transaction_timestamp",!0),qn=pr("statement_timestamp",!0),Gn=pr("clock_timestamp",!0),Kn=pr("sysdate",!0),Xn=pr("null",!0),$n=pr("case",!0),Jn=pr("when",!0),Qn=pr("then",!0),Zn=function(e,t){return{w:e,t:t}},er=pr("else",!0),tr=pr("end",!0),nr=function(e,t){return function(e,t){var n,r=t[0];r.args[0]=e,r.codeInfo=ti();for(var o=1;olr&&(lr=ir,ur=[]),ur.push(e))}function wr(e,t,n){return new r(r.buildMessage(e,t),e,t,n)}function Er(){var e,t,n=135*ir+0,r=dr[n];return r?(ir=r.nextPos,r.result):(e=ir,(t=function(){var e,t,n,r,i,a,s=135*ir+57,l=dr[s];if(l)return ir=l.nextPos,l.result;if(e=ir,(t=kr())!==o){for(n=[],r=ir,(i=Br())!==o&&(a=Or())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=Br())!==o&&(a=Or())!==o?r=i=[i,a]:(ir=r,r=o);n!==o&&(r=Br())!==o&&(i=kr())!==o?(ar=e,t=function(e,t){var n=[t];for(var r in e)n.push(e[r][0]);return oi(n),{type:"relalgRoot",assignments:n,child:null,operatorPositions:si,codeInfo:ti()}}(n,r),e=t):(ir=e,e=o)}else ir=e,e=o;if(e===o)if(e=ir,(t=kr())!==o){for(n=[],r=ir,(i=Br())!==o&&(a=Or())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=Br())!==o&&(a=Or())!==o?r=i=[i,a]:(ir=r,r=o);n!==o?((r=eo())===o&&(r=null),r!==o&&(i=kr())!==o?(ar=e,t=function(e,t){for(var n=[],r=0;rir?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(s)),cr--,n===o?t=void 0:(ir=t,t=o),dr[r]={nextPos:ir,result:t},t)}function Cr(){var t,n=135*ir+3,r=dr[n];return r?(ir=r.nextPos,r.result):("\r\n"===e.substr(ir,2)?(t="\r\n",ir+=2):(t=o,0===cr&&_r(l)),t===o&&(10===e.charCodeAt(ir)?(t="\n",ir++):(t=o,0===cr&&_r(u))),dr[n]={nextPos:ir,result:t},t)}function Sr(){var t,n=135*ir+4,r=dr[n];return r?(ir=r.nextPos,r.result):((t=function(){var t,n,r,i,a,l,u,m,p=135*ir+5,g=dr[p];if(g)return ir=g.nextPos,g.result;cr++,t=ir,"--"===e.substr(ir,2)?(n="--",ir+=2):(n=o,0===cr&&_r(d));n!==o?(h.test(e.charAt(ir))?(r=e.charAt(ir),ir++):(r=o,0===cr&&_r(f)),r!==o?(i=ir,cr++,(a=Cr())===o&&(a=jr()),cr--,a!==o?(ir=i,i=void 0):i=o,i!==o?(ar=t,t=n=""):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o);if(t===o&&(t=ir,"--"===e.substr(ir,2)?(n="--",ir+=2):(n=o,0===cr&&_r(d)),n!==o?(r=ir,cr++,(i=Cr())===o&&(i=jr()),cr--,i!==o?(ir=r,r=void 0):r=o,r!==o?(ar=t,t=n=""):(ir=t,t=o)):(ir=t,t=o),t===o))if(t=ir,"--"===e.substr(ir,2)?(n="--",ir+=2):(n=o,0===cr&&_r(d)),n!==o)if(h.test(e.charAt(ir))?(r=e.charAt(ir),ir++):(r=o,0===cr&&_r(f)),r!==o){for(i=ir,a=[],l=ir,u=ir,cr++,m=Cr(),cr--,m===o?u=void 0:(ir=u,u=o),u!==o?(e.length>ir?(m=e.charAt(ir),ir++):(m=o,0===cr&&_r(s)),m!==o?l=u=[u,m]:(ir=l,l=o)):(ir=l,l=o);l!==o;)a.push(l),l=ir,u=ir,cr++,m=Cr(),cr--,m===o?u=void 0:(ir=u,u=o),u!==o?(e.length>ir?(m=e.charAt(ir),ir++):(m=o,0===cr&&_r(s)),m!==o?l=u=[u,m]:(ir=l,l=o)):(ir=l,l=o);(i=a!==o?e.substring(i,ir):a)!==o?(a=ir,cr++,(l=Cr())===o&&(l=jr()),cr--,l!==o?(ir=a,a=void 0):a=o,a!==o?(ar=t,t=n=i):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;else ir=t,t=o;cr--,t===o&&(n=o,0===cr&&_r(c));return dr[p]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a,l,u,c=135*ir+6,d=dr[c];if(d)return ir=d.nextPos,d.result;t=ir,"/*"===e.substr(ir,2)?(n="/*",ir+=2):(n=o,0===cr&&_r(m));if(n!==o){for(r=ir,i=[],a=ir,l=ir,cr++,"*/"===e.substr(ir,2)?(u="*/",ir+=2):(u=o,0===cr&&_r(p)),cr--,u===o?l=void 0:(ir=l,l=o),l!==o?(e.length>ir?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(s)),u!==o?a=l=[l,u]:(ir=a,a=o)):(ir=a,a=o);a!==o;)i.push(a),a=ir,l=ir,cr++,"*/"===e.substr(ir,2)?(u="*/",ir+=2):(u=o,0===cr&&_r(p)),cr--,u===o?l=void 0:(ir=l,l=o),l!==o?(e.length>ir?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(s)),u!==o?a=l=[l,u]:(ir=a,a=o)):(ir=a,a=o);(r=i!==o?e.substring(r,ir):i)!==o?("*/"===e.substr(ir,2)?(i="*/",ir+=2):(i=o,0===cr&&_r(p)),i!==o?(ar=t,t=n=r):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}()),dr[n]={nextPos:ir,result:t},t)}function Or(){var t,n,r,i,a,s,l,u=135*ir+7,c=dr[u];if(c)return ir=c.nextPos,c.result;for(cr++,t=ir,n=[],r=ir,i=[],a=Sr();a!==o;)i.push(a),a=Sr();if(i!==o){if(a=[],y.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(b)),s!==o)for(;s!==o;)a.push(s),y.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(b));else a=o;if(a!==o){for(s=[],l=Sr();l!==o;)s.push(l),l=Sr();s!==o?r=i=[i,a,s]:(ir=r,r=o)}else ir=r,r=o}else ir=r,r=o;if(r!==o)for(;r!==o;){for(n.push(r),r=ir,i=[],a=Sr();a!==o;)i.push(a),a=Sr();if(i!==o){if(a=[],y.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(b)),s!==o)for(;s!==o;)a.push(s),y.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(b));else a=o;if(a!==o){for(s=[],l=Sr();l!==o;)s.push(l),l=Sr();s!==o?r=i=[i,a,s]:(ir=r,r=o)}else ir=r,r=o}else ir=r,r=o}else n=o;return n!==o&&(ar=t,n=""),cr--,(t=n)===o&&(n=o,0===cr&&_r(g)),dr[u]={nextPos:ir,result:t},t}function kr(){var t,n,r=135*ir+8,i=dr[r];if(i)return ir=i.nextPos,i.result;for(cr++,t=[],(n=Sr())===o&&(y.test(e.charAt(ir))?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(b)));n!==o;)t.push(n),(n=Sr())===o&&(y.test(e.charAt(ir))?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(b)));return cr--,t===o&&(n=o,0===cr&&_r(v)),dr[r]={nextPos:ir,result:t},t}function Tr(){var t,n,r=135*ir+10,i=dr[r];if(i)return ir=i.nextPos,i.result;for(cr++,t=[],_.test(e.charAt(ir))?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(w));n!==o;)t.push(n),_.test(e.charAt(ir))?(n=e.charAt(ir),ir++):(n=o,0===cr&&_r(w));return cr--,t===o&&(n=o,0===cr&&_r(E)),dr[r]={nextPos:ir,result:t},t}function Mr(){var t,n,r,i=135*ir+12,a=dr[i];if(a)return ir=a.nextPos,a.result;for(t=ir,n=[],(r=Sr())===o&&(h.test(e.charAt(ir))?(r=e.charAt(ir),ir++):(r=o,0===cr&&_r(f)));r!==o;)n.push(r),(r=Sr())===o&&(h.test(e.charAt(ir))?(r=e.charAt(ir),ir++):(r=o,0===cr&&_r(f)));return n!==o&&(ar=t,n=""),t=n,dr[i]={nextPos:ir,result:t},t}function xr(){var t,n,r,i,a,s,l=135*ir+14,u=dr[l];if(u)return ir=u.nextPos,u.result;if(t=ir,n=ir,r=ir,45===e.charCodeAt(ir)?(i="-",ir++):(i=o,0===cr&&_r(k)),i===o&&(i=null),i!==o){if(a=[],T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o)for(;s!==o;)a.push(s),T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M));else a=o;a!==o?r=i=[i,a]:(ir=r,r=o)}else ir=r,r=o;return(n=r!==o?e.substring(n,ir):r)!==o&&(ar=t,n=parseInt(n,10)),t=n,dr[l]={nextPos:ir,result:t},t}function Rr(){var t,n,r,i,a,s,l,u,c=135*ir+15,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,n=ir,r=ir,45===e.charCodeAt(ir)?(i="-",ir++):(i=o,0===cr&&_r(k)),i===o&&(i=null),i!==o){if(a=[],T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o)for(;s!==o;)a.push(s),T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M));else a=o;if(a!==o)if(46===e.charCodeAt(ir)?(s=".",ir++):(s=o,0===cr&&_r(x)),s!==o){if(l=[],T.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(M)),u!==o)for(;u!==o;)l.push(u),T.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(M));else l=o;l!==o?r=i=[i,a,s,l]:(ir=r,r=o)}else ir=r,r=o;else ir=r,r=o}else ir=r,r=o;return(n=r!==o?e.substring(n,ir):r)!==o&&(ar=t,n=parseFloat(n)),t=n,dr[c]={nextPos:ir,result:t},t}function Lr(){var t,n,r,i,a,s,l,u,c,d=135*ir+17,h=dr[d];return h?(ir=h.nextPos,h.result):(cr++,t=ir,n=ir,r=ir,T.test(e.charAt(ir))?(i=e.charAt(ir),ir++):(i=o,0===cr&&_r(M)),i!==o?(T.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(M)),a!==o?(T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o?(T.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(M)),l!==o?r=i=[i,a,s,l]:(ir=r,r=o)):(ir=r,r=o)):(ir=r,r=o)):(ir=r,r=o),(n=r!==o?e.substring(n,ir):r)!==o?(45===e.charCodeAt(ir)?(r="-",ir++):(r=o,0===cr&&_r(k)),r!==o?(i=ir,a=ir,T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o?(T.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(M)),l!==o?a=s=[s,l]:(ir=a,a=o)):(ir=a,a=o),(i=a!==o?e.substring(i,ir):a)!==o?(45===e.charCodeAt(ir)?(a="-",ir++):(a=o,0===cr&&_r(k)),a!==o?(s=ir,l=ir,T.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(M)),u!==o?(T.test(e.charAt(ir))?(c=e.charAt(ir),ir++):(c=o,0===cr&&_r(M)),c!==o?l=u=[u,c]:(ir=l,l=o)):(ir=l,l=o),(s=l!==o?e.substring(s,ir):l)!==o?(ar=t,t=n=function(e,t,n){e=parseInt(e,10),t=parseInt(t,10)-1,n=parseInt(n,10);var r=new Date(e,t,n);return r.getFullYear()==e&&r.getMonth()==t&&r.getDate()==n||mr(ei("db.messages.parser.error-invalid-date-format",{str:hr()})),r}(n,i,s)):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o),cr--,t===o&&(n=o,0===cr&&_r(R)),dr[d]={nextPos:ir,result:t},t)}function Ar(){var t,n,r=135*ir+18,i=dr[r];return i?(ir=i.nextPos,i.result):(t=ir,"true"===e.substr(ir,4).toLowerCase()?(n=e.substr(ir,4),ir+=4):(n=o,0===cr&&_r(L)),n!==o&&(ar=t,n=!0),(t=n)===o&&(t=ir,"false"===e.substr(ir,5).toLowerCase()?(n=e.substr(ir,5),ir+=5):(n=o,0===cr&&_r(A)),n!==o&&(ar=t,n=!1),t=n),dr[r]={nextPos:ir,result:t},t)}function Dr(){var t,n,r,i,a,s,l,u,c=135*ir+20,d=dr[c];if(d)return ir=d.nextPos,d.result;if(cr++,t=ir,n=ir,cr++,r=ir,(i=Zo())!==o){if(a=ir,cr++,s=[],P.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(I)),l!==o)for(;l!==o;)s.push(l),P.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(I));else s=o;cr--,s===o?a=void 0:(ir=a,a=o),a!==o?r=i=[i,a]:(ir=r,r=o)}else ir=r,r=o;if(cr--,r===o?n=void 0:(ir=n,n=o),n!==o){if(r=ir,i=ir,a=[],H.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(Y)),s!==o)for(;s!==o;)a.push(s),H.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(Y));else a=o;if(a!==o){for(s=ir,l=[],P.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(I));u!==o;)l.push(u),P.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(I));(s=l!==o?e.substring(s,ir):l)!==o?i=a=[a,s]:(ir=i,i=o)}else ir=i,i=o;(r=i!==o?e.substring(r,ir):i)!==o?(ar=t,t=n=r):(ir=t,t=o)}else ir=t,t=o;return cr--,t===o&&(n=o,0===cr&&_r(N)),dr[c]={nextPos:ir,result:t},t}function Nr(){var t,n,r,i,a,s,l,u,c=135*ir+21,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,n=ir,cr++,r=ir,(i=Zo())!==o){if(a=ir,cr++,s=[],P.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(I)),l!==o)for(;l!==o;)s.push(l),P.test(e.charAt(ir))?(l=e.charAt(ir),ir++):(l=o,0===cr&&_r(I));else s=o;cr--,s===o?a=void 0:(ir=a,a=o),a!==o?r=i=[i,a]:(ir=r,r=o)}else ir=r,r=o;if(cr--,r===o?n=void 0:(ir=n,n=o),n!==o){if(r=ir,i=ir,a=[],H.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(Y)),s!==o)for(;s!==o;)a.push(s),H.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(Y));else a=o;if(a!==o){for(s=ir,l=[],P.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(I));u!==o;)l.push(u),P.test(e.charAt(ir))?(u=e.charAt(ir),ir++):(u=o,0===cr&&_r(I));(s=l!==o?e.substring(s,ir):l)!==o?i=a=[a,s]:(ir=i,i=o)}else ir=i,i=o;(r=i!==o?e.substring(r,ir):i)!==o?(ar=t,t=n=r):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}function Pr(){var t,n,r,i,a,s,l,u,c=135*ir+22,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,n=ir,(r=Dr())!==o?(46===e.charCodeAt(ir)?(i=".",ir++):(i=o,0===cr&&_r(x)),i!==o?n=r=[r,i]:(ir=n,n=o)):(ir=n,n=o),n===o&&(n=null),n!==o&&(r=Nr())!==o?(ar=t,u=r,null!=(l=n)&&(l=l[0]),t=n={type:"columnName",name:u,relAlias:l}):(ir=t,t=o),t===o)if(t=ir,n=ir,(r=Dr())!==o?(46===e.charCodeAt(ir)?(i=".",ir++):(i=o,0===cr&&_r(x)),i!==o?n=r=[r,i]:(ir=n,n=o)):(ir=n,n=o),n===o&&(n=null),n!==o)if(91===e.charCodeAt(ir)?(r="[",ir++):(r=o,0===cr&&_r(F)),r!==o){if(i=ir,a=[],T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M)),s!==o)for(;s!==o;)a.push(s),T.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(M));else a=o;(i=a!==o?e.substring(i,ir):a)!==o?(93===e.charCodeAt(ir)?(a="]",ir++):(a=o,0===cr&&_r(W)),a!==o?(ar=t,t=n=function(e,t){return null!=e&&(e=e[0]),{type:"columnName",name:parseInt(t,10),relAlias:e}}(n,i)):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}function Ir(){var t,n,r,i=135*ir+25,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,961===e.charCodeAt(ir)?(r="ρ",ir++):(r=o,0===cr&&_r(K)),r!==o&&(ar=n,r=X()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"rho"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r($)),r!==o&&(ar=n,r=X()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}function Hr(){var t,n,r,i=135*ir+26,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,8592===e.charCodeAt(ir)?(r="←",ir++):(r=o,0===cr&&_r(J)),r!==o&&(ar=n,r=Q()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"<-"===e.substr(ir,2)?(r="<-",ir+=2):(r=o,0===cr&&_r(Z)),r!==o&&(ar=n,r=Q()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}function Yr(){var t,n,r,i=135*ir+27,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,8594===e.charCodeAt(ir)?(r="→",ir++):(r=o,0===cr&&_r(ee)),r!==o&&(ar=n,r=te()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"->"===e.substr(ir,2)?(r="->",ir+=2):(r=o,0===cr&&_r(ne)),r!==o&&(ar=n,r=te()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}function Fr(){var t,n,r,i=135*ir+30,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,947===e.charCodeAt(ir)?(r="γ",ir++):(r=o,0===cr&&_r(ae)),r!==o&&(ar=n,r=se()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"gamma"===e.substr(ir,5).toLowerCase()?(r=e.substr(ir,5),ir+=5):(r=o,0===cr&&_r(le)),r!==o&&(ar=n,r=se()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}function Wr(){var t,n,r,i=135*ir+33,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,247===e.charCodeAt(ir)?(r="÷",ir++):(r=o,0===cr&&_r(pe)),r===o&&(47===e.charCodeAt(ir)?(r="/",ir++):(r=o,0===cr&&_r(ge))),r!==o&&(ar=n,r=ri("divisionOperator")),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),dr[i]={nextPos:ir,result:t},t)}function Br(){var t,n,r,i,a=135*ir+44,s=dr[a];return s?(ir=s.nextPos,s.result):(t=ir,(n=Dr())!==o?(ar=ir,i=n,(void ai.push(i)?o:void 0)!==o&&function(){var t,n,r,i,a=135*ir+19,s=dr[a];return s?(ir=s.nextPos,s.result):(t=ir,(n=kr())!==o?(61===e.charCodeAt(ir)?(r="=",ir++):(r=o,0===cr&&_r(D)),r!==o&&(i=kr())!==o?t=n=[n,r,i]:(ir=t,t=o)):(ir=t,t=o),dr[a]={nextPos:ir,result:t},t)}()!==o&&(r=eo())!==o?(ar=t,t=n=function(e,t){return t.assignmentName=e,{type:"assignment",name:e,child:t,codeInfo:ti()}}(n,r)):(ir=t,t=o)):(ir=t,t=o),dr[a]={nextPos:ir,result:t},t)}function Ur(){var e,t,n,r=135*ir+45,i=dr[r];return i?(ir=i.nextPos,i.result):(e=ir,(t=Uo())!==o&&Yr()!==o&&(n=Nr())!==o?(ar=e,e=t={type:"namedColumnExpr",name:n,relAlias:null,child:t,codeInfo:ti()}):(ir=e,e=o),e===o&&(e=ir,(t=Nr())!==o&&Hr()!==o&&(n=Uo())!==o?(ar=e,e=t=function(e,t){return{type:"namedColumnExpr",name:e,relAlias:null,child:t,codeInfo:ti()}}(t,n)):(ir=e,e=o),e===o&&(e=ir,(t=Pr())!==o&&(ar=e,t=t),e=t)),dr[r]={nextPos:ir,result:e},e)}function zr(){var e,t,n,r=135*ir+48,i=dr[r];return i?(ir=i.nextPos,i.result):(e=ir,(t=Nr())!==o&&Hr()!==o&&(n=Pr())!==o?(ar=e,e=t={type:"colAssignment",src:n,dst:t,codeInfo:ti()}):(ir=e,e=o),e===o&&(e=ir,(t=Pr())!==o&&Yr()!==o&&(n=Nr())!==o?(ar=e,e=t=function(e,t){return{type:"colAssignment",src:e,dst:t,codeInfo:ti()}}(t,n)):(ir=e,e=o)),dr[r]={nextPos:ir,result:e},e)}function Vr(){var t,n,r,i,a,s,l=135*ir+51,u=dr[l];return u?(ir=u.nextPos,u.result):(t=ir,(n=Pr())!==o?(r=ir,(i=Or())!==o&&(a=function(){var t,n,r=135*ir+50,i=dr[r];return i?(ir=i.nextPos,i.result):(t=ir,"asc"===e.substr(ir,3).toLowerCase()?(n=e.substr(ir,3),ir+=3):(n=o,0===cr&&_r(Qe)),n!==o&&(ar=t,n=!0),(t=n)===o&&(t=ir,"desc"===e.substr(ir,4).toLowerCase()?(n=e.substr(ir,4),ir+=4):(n=o,0===cr&&_r(Ze)),n!==o&&(ar=t,n=!1),t=n),dr[r]={nextPos:ir,result:t},t)}())!==o?r=i=[i,a]:(ir=r,r=o),r===o&&(r=null),r!==o?(ar=t,t=n={col:n,asc:s=null==(s=r)||s[1]}):(ir=t,t=o)):(ir=t,t=o),dr[l]={nextPos:ir,result:t},t)}function qr(){var t,n,r,i,a,s,l=135*ir+53,u=dr[l];return u?(ir=u.nextPos,u.result):(t=ir,n=ir,"sum"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(et)),r===o&&("count"===e.substr(ir,5).toLowerCase()?(r=e.substr(ir,5),ir+=5):(r=o,0===cr&&_r(tt)),r===o&&("avg"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(nt)),r===o&&("min"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(rt)),r===o&&("max"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(ot)))))),(n=r!==o?e.substring(n,ir):r)!==o?(40===e.charCodeAt(ir)?(r="(",ir++):(r=o,0===cr&&_r(it)),r!==o&&kr()!==o&&(i=Pr())!==o&&kr()!==o?(41===e.charCodeAt(ir)?(a=")",ir++):(a=o,0===cr&&_r(at)),a!==o?(ar=t,s=i,t=n={aggFunction:n.toUpperCase(),col:s}):(ir=t,t=o)):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,"count(*)"===e.substr(ir,8).toLowerCase()?(n=e.substr(ir,8),ir+=8):(n=o,0===cr&&_r(st)),n!==o&&(ar=t,n={aggFunction:"COUNT_ALL",col:null}),t=n),dr[l]={nextPos:ir,result:t},t)}function Gr(){var e,t,n,r,i,a=135*ir+54,s=dr[a];return s?(ir=s.nextPos,s.result):(e=ir,(t=qr())!==o&&Yr()!==o&&(n=Nr())!==o?(ar=e,i=n,(r=t).name=i,e=t=r):(ir=e,e=o),e===o&&(e=ir,(t=Nr())!==o&&Hr()!==o&&(n=qr())!==o?(ar=e,e=t=function(e,t){return t.name=e,t}(t,n)):(ir=e,e=o)),dr[a]={nextPos:ir,result:e},e)}function Kr(){var t,n,r,i,a,s,l,u,c=135*ir+55,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=Gr())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Gr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Gr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=$e(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}function Xr(){var e,t,n=135*ir+56,r=dr[n];return r?(ir=r.nextPos,r.result):(e=ir,(t=So())!==o&&Or()!==o?(ar=ir,(function(e){if("valueExpr"===e.type&&"columnValue"===e.func&&!e.wrappedInParentheses&&null===e.args[1]){for(var t=0;tir?(h=e.charAt(ir),ir++):(h=o,0===cr&&_r(s)),h!==o?c=d=[d,h]:(ir=c,c=o)):(ir=c,c=o);c!==o;)u.push(c),c=ir,d=ir,cr++,h=Cr(),cr--,h===o?d=void 0:(ir=d,d=o),d!==o?(e.length>ir?(h=e.charAt(ir),ir++):(h=o,0===cr&&_r(s)),h!==o?c=d=[d,h]:(ir=c,c=o)):(ir=c,c=o);(l=u!==o?e.substring(l,ir):u)!==o?(ar=t,t=n=function(e,t,n){return{name:e,lang:t?t[1]:null,text:n}}(r,i,l)):(ir=t,t=o)}else ir=t,t=o;else ir=t,t=o;else ir=t,t=o}else ir=t,t=o;if(t===o){if(t=ir,n=ir,cr++,r=ir,i=[],ht.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(ft)),a!==o)for(;a!==o;)i.push(a),ht.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(ft));else i=o;if(i!==o?("[["===e.substr(ir,2)?(a="[[",ir+=2):(a=o,0===cr&&_r(bt)),a!==o?r=i=[i,a]:(ir=r,r=o)):(ir=r,r=o),cr--,r!==o?(ir=n,n=void 0):n=o,n!==o){if(r=ir,i=[],pt.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(gt)),a!==o)for(;a!==o;)i.push(a),pt.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(gt));else i=o;if((r=i!==o?e.substring(r,ir):i)!==o)if(i=ir,64===e.charCodeAt(ir)?(a="@",ir++):(a=o,0===cr&&_r(yt)),a!==o&&(l=Jr())!==o?i=a=[a,l]:(ir=i,i=o),i===o&&(i=null),i!==o)if("[["===e.substr(ir,2)?(a="[[",ir+=2):(a=o,0===cr&&_r(bt)),a!==o){for(l=ir,u=[],"\\]]"===e.substr(ir,3)?(c="\\]]",ir+=3):(c=o,0===cr&&_r(vt)),c===o&&(c=ir,d=ir,cr++,"]]"===e.substr(ir,2)?(h="]]",ir+=2):(h=o,0===cr&&_r(_t)),cr--,h===o?d=void 0:(ir=d,d=o),d!==o?(e.length>ir?(h=e.charAt(ir),ir++):(h=o,0===cr&&_r(s)),h!==o?c=d=[d,h]:(ir=c,c=o)):(ir=c,c=o));c!==o;)u.push(c),"\\]]"===e.substr(ir,3)?(c="\\]]",ir+=3):(c=o,0===cr&&_r(vt)),c===o&&(c=ir,d=ir,cr++,"]]"===e.substr(ir,2)?(h="]]",ir+=2):(h=o,0===cr&&_r(_t)),cr--,h===o?d=void 0:(ir=d,d=o),d!==o?(e.length>ir?(h=e.charAt(ir),ir++):(h=o,0===cr&&_r(s)),h!==o?c=d=[d,h]:(ir=c,c=o)):(ir=c,c=o));(l=u!==o?e.substring(l,ir):u)!==o?("]]"===e.substr(ir,2)?(u="]]",ir+=2):(u=o,0===cr&&_r(_t)),u!==o?(ar=t,t=n=function(e,t,n){return n=(n=n.replace(/\\]]/g,"]]")).replace(/\\\\]]/g,"\\]]"),{name:e,lang:t?t[1]:null,text:n}}(r,i,l)):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;else ir=t,t=o;else ir=t,t=o}else ir=t,t=o}return dr[f]={nextPos:ir,result:t},t}function Zr(){var e,t,n,r,i,a,s=135*ir+62,l=dr[s];if(l)return ir=l.nextPos,l.result;if(e=ir,kr()!==o)if((t=function(){var e,t,n,r,i,a,s,l,u=135*ir+59,c=dr[u];if(c)return ir=c.nextPos,c.result;if(e=ir,(t=Qr())!==o){for(n=[],r=ir,(i=Or())!==o&&(a=Qr())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=Or())!==o&&(a=Qr())!==o?r=i=[i,a]:(ir=r,r=o);n!==o?(ar=e,s=n,(l=[]).push(t),s.map((function(e){var t=e[1];l.push(t)})),e=t=l):(ir=e,e=o)}else ir=e,e=o;return dr[u]={nextPos:ir,result:e},e}())!==o){if(n=[],r=ir,(i=Or())!==o&&(a=Br())!==o?r=i=[i,a]:(ir=r,r=o),r!==o)for(;r!==o;)n.push(r),r=ir,(i=Or())!==o&&(a=Br())!==o?r=i=[i,a]:(ir=r,r=o);else n=o;n!==o?(ar=e,e=function(e,t){for(var n=[],r=0;r"group"===e.name);return void 0===o?mr(ei("db.messages.parser.error-group-header-name-missing")+': "group: ..........\\n"'):0===o.text.trim().length&&mr(ei("error-group-header-name-empty")),{type:"tableGroup",headers:e,assignments:n,codeInfo:ti()}}(t,n)):(ir=e,e=o)}else ir=e,e=o;else ir=e,e=o;return dr[s]={nextPos:ir,result:e},e}function eo(){var e,t,n,r,i=135*ir+63,a=dr[i];if(a)return ir=a.nextPos,a.result;if(e=ir,(t=to())!==o){if(n=[],(r=io())===o&&(r=ao()),r!==o)for(;r!==o;)n.push(r),(r=io())===o&&(r=ao());else n=o;n!==o?(ar=e,e=t=wt(t,n)):(ir=e,e=o)}else ir=e,e=o;return e===o&&(e=to()),dr[i]={nextPos:ir,result:e},e}function to(){var e,t,n,r,i=135*ir+64,a=dr[i];if(a)return ir=a.nextPos,a.result;if(e=ir,(t=no())!==o){if(n=[],(r=oo())!==o)for(;r!==o;)n.push(r),r=oo();else n=o;n!==o?(ar=e,e=t=wt(t,n)):(ir=e,e=o)}else ir=e,e=o;return e===o&&(e=no()),dr[i]={nextPos:ir,result:e},e}function no(){var e,t,n,r,i=135*ir+65,a=dr[i];if(a)return ir=a.nextPos,a.result;if(e=ir,(t=ro())!==o){if(n=[],(r=so())===o&&(r=lo())===o&&(r=uo())===o&&(r=co())===o&&(r=ho())===o&&(r=fo())===o&&(r=mo())===o&&(r=po())===o&&(r=go())===o&&(r=yo()),r!==o)for(;r!==o;)n.push(r),(r=so())===o&&(r=lo())===o&&(r=uo())===o&&(r=co())===o&&(r=ho())===o&&(r=fo())===o&&(r=mo())===o&&(r=po())===o&&(r=go())===o&&(r=yo());else n=o;n!==o?(ar=e,e=t=wt(t,n)):(ir=e,e=o)}else ir=e,e=o;return e===o&&(e=ro()),dr[i]={nextPos:ir,result:e},e}function ro(){var t,n=135*ir+66,r=dr[n];return r?(ir=r.nextPos,r.result):((t=function(){var t,n,r,i,a=135*ir+86,s=dr[a];if(s)return ir=s.nextPos,s.result;t=ir,(n=function(){var t,n,r,i=135*ir+29,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,964===e.charCodeAt(ir)?(r="τ",ir++):(r=o,0===cr&&_r(re)),r!==o&&(ar=n,r=oe()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"tau"===e.substr(ir,3).toLowerCase()?(r=e.substr(ir,3),ir+=3):(r=o,0===cr&&_r(ie)),r!==o&&(ar=n,r=oe()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}())!==o&&(r=function(){var t,n,r,i,a,s,l,u,c=135*ir+52,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=Vr())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Vr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Vr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=Je(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}())!==o&&Or()!==o&&(i=ro())!==o?(ar=t,l=n,u=r,c=i,si.push(l),n={type:"orderBy",child:c,arg:u,codeInfo:ti()},t=n):(ir=t,t=o);var l,u,c;return dr[a]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a,s,l,u=135*ir+85,c=dr[u];if(c)return ir=c.nextPos,c.result;t=ir,(n=Fr())!==o&&(r=function(){var t,n,r,i,a,s,l,u,c=135*ir+47,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=Pr())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Pr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Pr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=$e(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}())!==o&&(i=kr())!==o?(59===e.charCodeAt(ir)?(a=";",ir++):(a=o,0===cr&&_r(jt)),a!==o&&kr()!==o&&(s=Kr())!==o&&Or()!==o&&(l=ro())!==o?(ar=t,d=n,h=r,f=s,m=l,si.push(d),n={type:"groupBy",child:m,group:h,aggregate:f,codeInfo:ti()},t=n):(ir=t,t=o)):(ir=t,t=o);var d,h,f,m;t===o&&(t=ir,(n=Fr())!==o?(r=ir,(i=kr())!==o?(59===e.charCodeAt(ir)?(a=";",ir++):(a=o,0===cr&&_r(jt)),a!==o?r=i=[i,a]:(ir=r,r=o)):(ir=r,r=o),r===o&&(r=null),r!==o&&(i=kr())!==o&&(a=Kr())!==o&&Or()!==o&&(s=ro())!==o?(ar=t,n=function(e,t,n){return si.push(e),{type:"groupBy",child:n,group:[],aggregate:t,codeInfo:ti()}}(n,a,s),t=n):(ir=t,t=o)):(ir=t,t=o));return dr[u]={nextPos:ir,result:t},t}())===o&&(t=function(){var e,t,n,r,i=135*ir+84,a=dr[i];if(a)return ir=a.nextPos,a.result;e=ir,(t=Ir())!==o&&(n=Dr())!==o&&Or()!==o&&(r=ro())!==o?(ar=e,s=t,l=n,u=r,si.push(s),t={type:"renameRelation",child:u,newRelAlias:l,codeInfo:ti()},e=t):(ir=e,e=o);var s,l,u;return dr[i]={nextPos:ir,result:e},e}())===o&&(t=function(){var t,n,r,i,a=135*ir+83,s=dr[a];if(s)return ir=s.nextPos,s.result;t=ir,(n=Ir())!==o&&(r=function(){var t,n,r,i,a,s,l,u,c=135*ir+49,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=zr())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=zr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=zr())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=Je(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}())!==o&&Or()!==o&&(i=ro())!==o?(ar=t,l=n,u=r,c=i,si.push(l),n={type:"renameColumns",child:c,arg:u,codeInfo:ti()},t=n):(ir=t,t=o);var l,u,c;return dr[a]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a=135*ir+82,s=dr[a];if(s)return ir=s.nextPos,s.result;t=ir,(n=function(){var t,n,r,i=135*ir+24,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,963===e.charCodeAt(ir)?(r="σ",ir++):(r=o,0===cr&&_r(V)),r!==o&&(ar=n,r=q()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"sigma"===e.substr(ir,5).toLowerCase()?(r=e.substr(ir,5),ir+=5):(r=o,0===cr&&_r(G)),r!==o&&(ar=n,r=q()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}())!==o&&(r=So())!==o&&Or()!==o&&(i=ro())!==o?(ar=t,l=n,u=r,c=i,si.push(l),n={type:"selection",child:c,arg:u,codeInfo:ti()},t=n):(ir=t,t=o);var l,u,c;return dr[a]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a=135*ir+81,s=dr[a];if(s)return ir=s.nextPos,s.result;t=ir,(n=function(){var t,n,r,i=135*ir+23,a=dr[i];return a?(ir=a.nextPos,a.result):(t=ir,kr()!==o?(n=ir,960===e.charCodeAt(ir)?(r="π",ir++):(r=o,0===cr&&_r(B)),r!==o&&(ar=n,r=U()),(n=r)!==o&&(r=kr())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,kr()!==o?(n=ir,"pi"===e.substr(ir,2).toLowerCase()?(r=e.substr(ir,2),ir+=2):(r=o,0===cr&&_r(z)),r!==o&&(ar=n,r=U()),(n=r)!==o&&(r=Or())!==o?(ar=t,t=n):(ir=t,t=o)):(ir=t,t=o)),dr[i]={nextPos:ir,result:t},t)}())!==o&&(r=function(){var t,n,r,i,a,s,l,u,c=135*ir+46,d=dr[c];if(d)return ir=d.nextPos,d.result;if(t=ir,(n=Ur())!==o){for(r=[],i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Ur())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);i!==o;)r.push(i),i=ir,(a=kr())!==o?(44===e.charCodeAt(ir)?(s=",",ir++):(s=o,0===cr&&_r(Xe)),s!==o&&(l=kr())!==o&&(u=Ur())!==o?i=a=[a,s,l,u]:(ir=i,i=o)):(ir=i,i=o);r!==o?(ar=t,t=n=$e(n,r)):(ir=t,t=o)}else ir=t,t=o;return dr[c]={nextPos:ir,result:t},t}())!==o&&Or()!==o&&(i=ro())!==o?(ar=t,l=n,u=r,c=i,si.push(l),n={type:"projection",child:c,arg:u,codeInfo:ti()},t=n):(ir=t,t=o);var l,u,c;return dr[a]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r,i,a=135*ir+67,s=dr[a];if(s)return ir=s.nextPos,s.result;(t=function(){var t,n,r,i,a,s,l,u,c,d=135*ir+105,h=dr[d];if(h)return ir=h.nextPos,h.result;t=ir,123===e.charCodeAt(ir)?(n="{",ir++):(n=o,0===cr&&_r(sn));if(n!==o)if(kr()!==o)if((r=function(){var e,t,n,r,i,a,s=135*ir+103,l=dr[s];if(l)return ir=l.nextPos,l.result;if(e=ir,(t=Eo())!==o){for(n=[],r=ir,(i=wo())!==o&&(a=Eo())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=wo())!==o&&(a=Eo())!==o?r=i=[i,a]:(ir=r,r=o);n!==o?(ar=e,t=function(e,t){for(var n,r=[e],o=0;o="===e.substr(ir,2)?(n=">=",ir+=2):(n=o,0===cr&&_r(kt));n===o&&(8805===e.charCodeAt(ir)?(n="≥",ir++):(n=o,0===cr&&_r(Tt)));n!==o&&(ar=t,n=">=");return t=n,dr[r]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n,r=135*ir+94,i=dr[r];if(i)return ir=i.nextPos,i.result;t=ir,"<="===e.substr(ir,2)?(n="<=",ir+=2):(n=o,0===cr&&_r(xt));n===o&&(8804===e.charCodeAt(ir)?(n="≤",ir++):(n=o,0===cr&&_r(Rt)));n!==o&&(ar=t,n="<=");return t=n,dr[r]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n=135*ir+93,r=dr[n];if(r)return ir=r.nextPos,r.result;62===e.charCodeAt(ir)?(t=">",ir++):(t=o,0===cr&&_r(Mt));return dr[n]={nextPos:ir,result:t},t}())===o&&(t=function(){var t,n=135*ir+95,r=dr[n];if(r)return ir=r.nextPos,r.result;60===e.charCodeAt(ir)?(t="<",ir++):(t=o,0===cr&&_r(Lt));return dr[n]={nextPos:ir,result:t},t}()),dr[n]={nextPos:ir,result:t},t)}function vo(){var t,n=135*ir+90,r=dr[n];return r?(ir=r.nextPos,r.result):(61===e.charCodeAt(ir)?(t="=",ir++):(t=o,0===cr&&_r(D)),dr[n]={nextPos:ir,result:t},t)}function _o(){var t,n,r=135*ir+91,i=dr[r];return i?(ir=i.nextPos,i.result):(t=ir,"!="===e.substr(ir,2)?(n="!=",ir+=2):(n=o,0===cr&&_r(Ct)),n===o&&(8800===e.charCodeAt(ir)?(n="≠",ir++):(n=o,0===cr&&_r(St)),n===o&&("<>"===e.substr(ir,2)?(n="<>",ir+=2):(n=o,0===cr&&_r(Ot)))),n!==o&&(ar=t,n="!="),t=n,dr[r]={nextPos:ir,result:t},t)}function wo(){var t,n,r,i,a=135*ir+100,s=dr[a];return s?(ir=s.nextPos,s.result):(cr++,t=ir,(n=Mr())!==o?(44===e.charCodeAt(ir)?(r=",",ir++):(r=o,0===cr&&_r(Xe)),r!==o&&(i=Mr())!==o?t=n=[n,r,i]:(ir=t,t=o)):(ir=t,t=o),t===o&&(t=ir,(n=Mr())!==o?(59===e.charCodeAt(ir)?(r=";",ir++):(r=o,0===cr&&_r(jt)),r!==o&&(i=Mr())!==o?t=n=[n,r,i]:(ir=t,t=o)):(ir=t,t=o),t===o&&(t=function(){var t,n,r,i,a,s,l,u=135*ir+11,c=dr[u];if(c)return ir=c.nextPos,c.result;for(t=ir,n=[],r=ir,i=[],a=Sr();a!==o;)i.push(a),a=Sr();if(i!==o){if(a=[],h.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(f)),s!==o)for(;s!==o;)a.push(s),h.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(f));else a=o;if(a!==o){for(s=[],l=Sr();l!==o;)s.push(l),l=Sr();s!==o?r=i=[i,a,s]:(ir=r,r=o)}else ir=r,r=o}else ir=r,r=o;if(r!==o)for(;r!==o;){for(n.push(r),r=ir,i=[],a=Sr();a!==o;)i.push(a),a=Sr();if(i!==o){if(a=[],h.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(f)),s!==o)for(;s!==o;)a.push(s),h.test(e.charAt(ir))?(s=e.charAt(ir),ir++):(s=o,0===cr&&_r(f));else a=o;if(a!==o){for(s=[],l=Sr();l!==o;)s.push(l),l=Sr();s!==o?r=i=[i,a,s]:(ir=r,r=o)}else ir=r,r=o}else ir=r,r=o}else n=o;return n!==o&&(ar=t,n=""),t=n,dr[u]={nextPos:ir,result:t},t}())),cr--,t===o&&(n=o,0===cr&&_r(qt)),dr[a]={nextPos:ir,result:t},t)}function Eo(){var t,n,r,i,a,s,l,u=135*ir+101,c=dr[u];return c?(ir=c.nextPos,c.result):(t=ir,(n=Pr())!==o?(r=ir,58===e.charCodeAt(ir)?(i=":",ir++):(i=o,0===cr&&_r(mt)),i!==o?("string"===e.substr(ir,6).toLowerCase()?(a=e.substr(ir,6),ir+=6):(a=o,0===cr&&_r(Gt)),a===o&&("number"===e.substr(ir,6).toLowerCase()?(a=e.substr(ir,6),ir+=6):(a=o,0===cr&&_r(Kt)),a===o&&("date"===e.substr(ir,4).toLowerCase()?(a=e.substr(ir,4),ir+=4):(a=o,0===cr&&_r(Xt)),a===o&&("boolean"===e.substr(ir,7).toLowerCase()?(a=e.substr(ir,7),ir+=7):(a=o,0===cr&&_r($t))))),a!==o?r=i=[i,a]:(ir=r,r=o)):(ir=r,r=o),r===o&&(r=null),r!==o?(ar=t,l=r,t=n={name:(s=n).name,relAlias:s.relAlias,type:null===l?null:l[1].toLowerCase()}):(ir=t,t=o)):(ir=t,t=o),dr[u]={nextPos:ir,result:t},t)}function jo(){var t,n,r,i,a,s=135*ir+102,l=dr[s];if(l)return ir=l.nextPos,l.result;if(t=ir,(n=Lr())!==o&&(ar=t,n={type:"date",value:n}),(t=n)===o&&(t=ir,"null"===e.substr(ir,4)?(n="null",ir+=4):(n=o,0===cr&&_r(Jt)),n===o&&("NULL"===e.substr(ir,4)?(n="NULL",ir+=4):(n=o,0===cr&&_r(Qt))),n!==o&&(ar=t,n={type:"null",value:null}),(t=n)===o&&(t=ir,(n=Ar())!==o?(r=ir,cr++,(i=wo())===o&&(i=Cr())===o&&(125===e.charCodeAt(ir)?(i="}",ir++):(i=o,0===cr&&_r(Zt))),cr--,i!==o?(ir=r,r=void 0):r=o,r!==o?(ar=t,t=n={type:"boolean",value:n,quoted:!1}):(ir=t,t=o)):(ir=t,t=o),t===o))){if(t=ir,n=ir,r=[],en.test(e.charAt(ir))?(i=e.charAt(ir),ir++):(i=o,0===cr&&_r(tn)),i!==o)for(;i!==o;)r.push(i),en.test(e.charAt(ir))?(i=e.charAt(ir),ir++):(i=o,0===cr&&_r(tn));else r=o;if((n=r!==o?e.substring(n,ir):r)!==o&&(ar=t,n=function(e){return{type:"string",value:e,quoted:!1}}(n)),(t=n)===o){if(t=ir,39===e.charCodeAt(ir)?(n="'",ir++):(n=o,0===cr&&_r(C)),n!==o){for(r=ir,i=[],S.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(O));a!==o;)i.push(a),S.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(O));(r=i!==o?e.substring(r,ir):i)!==o?(39===e.charCodeAt(ir)?(i="'",ir++):(i=o,0===cr&&_r(C)),i!==o?(ar=t,t=n=nn(r)):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o;if(t===o)if(t=ir,34===e.charCodeAt(ir)?(n='"',ir++):(n=o,0===cr&&_r(rn)),n!==o){for(r=ir,i=[],on.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(an));a!==o;)i.push(a),on.test(e.charAt(ir))?(a=e.charAt(ir),ir++):(a=o,0===cr&&_r(an));(r=i!==o?e.substring(r,ir):i)!==o?(34===e.charCodeAt(ir)?(i='"',ir++):(i=o,0===cr&&_r(rn)),i!==o?(ar=t,t=n=nn(r)):(ir=t,t=o)):(ir=t,t=o)}else ir=t,t=o}}return dr[s]={nextPos:ir,result:t},t}function Co(){var e,t,n,r,i,a,s=135*ir+104,l=dr[s];if(l)return ir=l.nextPos,l.result;if(e=ir,(t=jo())!==o){for(n=[],r=ir,(i=wo())!==o&&(a=jo())!==o?r=i=[i,a]:(ir=r,r=o);r!==o;)n.push(r),r=ir,(i=wo())!==o&&(a=jo())!==o?r=i=[i,a]:(ir=r,r=o);n!==o?(ar=e,e=t=function(e,t){for(var n=[e],r=0;r0){for(t=1,r=1;t",!1),qe=Qn("!=",!1),Ge=Qn(">=",!1),Ke=Qn(">",!1),Xe=Qn("<=",!1),$e=Qn("<",!1),Je=er("logical AND"),Qe=Qn("and",!0),Ze=er("logical XOR"),et=Qn("xor",!0),tt=er("logical OR"),nt=Qn("or",!0),rt=er("logical NOT"),ot=Qn("!",!1),it=(Qn("not",!1),Qn("exists",!0)),at=Qn("#",!1),st=/^[^\n]/,lt=Zn(["\n"],!0,!1),ut=Qn("`",!1),ct=Qn("drop",!0),dt=Qn("table",!0),ht=Qn("if",!0),ft=Qn("lock",!0),mt=Qn("tables",!0),pt=Qn("unlock",!0),gt=Qn("use",!0),yt=/^[a-zA-Z_0-9\-]/,bt=Zn([["a","z"],["A","Z"],"_",["0","9"],"-"],!1,!1),vt=Qn("decimal",!0),_t=Qn("tinyint",!0),wt=Qn("smallint",!0),Et=Qn("mediumint",!0),jt=Qn("bigint",!0),Ct=Qn("integer",!0),St=Qn("int",!0),Ot=Qn("float",!0),kt=Qn("double",!0),Tt=Qn("varchar",!0),Mt=Qn("char",!0),xt=Qn("text",!0),Rt=Qn("datetime",!0),Lt=/^[a-zA-Z0-9_=]/,At=Zn([["a","z"],["A","Z"],["0","9"],"_","="],!1,!1),Dt=Qn("create",!0),Nt=Qn("exists",!1),Pt=Qn("null",!0),It=Qn("insert",!0),Ht=Qn("into",!0),Yt=Qn("values",!0),Ft=er("boolean expression"),Wt=Qn("||",!1),Bt=function(e,t){return{type:"valueExpr",datatype:"boolean",func:e,args:[void 0,t],codeInfo:No()}},Ut=Qn("like",!0),zt=Qn("ilike",!0),Vt=Qn("+",!1),qt=Qn("/",!1),Gt=Qn("%",!1),Kt=Qn("coalesce",!0),Xt=Qn("concat",!0),$t=Qn("adddate",!0),Jt=Qn("subdate",!0),Qt=Qn("mod",!0),Zt=Qn("add",!0),en=Qn("sub",!0),tn=Qn("mul",!0),nn=Qn("div",!0),rn=Qn("upper",!0),on=Qn("ucase",!0),an=Qn("lower",!0),sn=Qn("lcase",!0),ln=Qn("length",!0),un=Qn("abs",!0),cn=Qn("floor",!0),dn=Qn("ceil",!0),hn=Qn("round",!0),fn=Qn("year",!0),mn=Qn("month",!0),pn=Qn("day",!0),gn=Qn("hour",!0),yn=Qn("minute",!0),bn=Qn("second",!0),vn=Qn("dayofmonth",!0),_n=Qn("rand",!0),wn=Qn("rownum",!0),En=Qn("now",!0),jn=Qn("current_timestamp",!0),Cn=Qn("transaction_timestamp",!0),Sn=Qn("statement_timestamp",!0),On=Qn("clock_timestamp",!0),kn=Qn("sysdate",!0),Tn=Qn("case",!0),Mn=Qn("when",!0),xn=Qn("then",!0),Rn=function(e,t){return{w:e,t:t}},Ln=Qn("else",!0),An=Qn("end",!0),Dn=function(e,t){return function(e,t){var n,r=t[0];r.args[0]=e,r.codeInfo=No();for(var o=1;oqn&&(qn=Un,Gn=[]),Gn.push(e))}function or(e,t,n){return new r(r.buildMessage(e,t),e,t,n)}function ir(){var e,t,n,r=113*Un+0,i=Xn[r];return i?(Un=i.nextPos,i.result):(e=Un,(t=kr())!==o&&(zn=e,t=t),(e=t)===o&&(e=Un,(t=kr())!==o&&(n=ur())!==o?(zn=e,e=t=t):(Un=e,e=o),e===o&&(e=Un,(t=ur())!==o&&(n=kr())!==o?(zn=e,e=t=n):(Un=e,e=o))),Xn[r]={nextPos:Un,result:e},e)}function ar(){var t,n,r=113*Un+2,i=Xn[r];return i?(Un=i.nextPos,i.result):(t=Un,Kn++,e.length>Un?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(s)),Kn--,n===o?t=void 0:(Un=t,t=o),Xn[r]={nextPos:Un,result:t},t)}function sr(){var t,n=113*Un+3,r=Xn[n];return r?(Un=r.nextPos,r.result):("\r\n"===e.substr(Un,2)?(t="\r\n",Un+=2):(t=o,0===Kn&&rr(l)),t===o&&(10===e.charCodeAt(Un)?(t="\n",Un++):(t=o,0===Kn&&rr(u))),Xn[n]={nextPos:Un,result:t},t)}function lr(){var t,n=113*Un+4,r=Xn[n];return r?(Un=r.nextPos,r.result):((t=function(){var t,n,r,i,a,l,u,m,p=113*Un+5,g=Xn[p];if(g)return Un=g.nextPos,g.result;Kn++,t=Un,"--"===e.substr(Un,2)?(n="--",Un+=2):(n=o,0===Kn&&rr(d));n!==o?(h.test(e.charAt(Un))?(r=e.charAt(Un),Un++):(r=o,0===Kn&&rr(f)),r!==o?(i=Un,Kn++,(a=sr())===o&&(a=ar()),Kn--,a!==o?(Un=i,i=void 0):i=o,i!==o?t=n=[n,r,i]:(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o);if(t===o&&(t=Un,"--"===e.substr(Un,2)?(n="--",Un+=2):(n=o,0===Kn&&rr(d)),n!==o?(r=Un,Kn++,(i=sr())===o&&(i=ar()),Kn--,i!==o?(Un=r,r=void 0):r=o,r!==o?t=n=[n,r]:(Un=t,t=o)):(Un=t,t=o),t===o))if(t=Un,"--"===e.substr(Un,2)?(n="--",Un+=2):(n=o,0===Kn&&rr(d)),n!==o)if(h.test(e.charAt(Un))?(r=e.charAt(Un),Un++):(r=o,0===Kn&&rr(f)),r!==o){for(i=Un,a=[],l=Un,u=Un,Kn++,m=sr(),Kn--,m===o?u=void 0:(Un=u,u=o),u!==o?(e.length>Un?(m=e.charAt(Un),Un++):(m=o,0===Kn&&rr(s)),m!==o?l=u=[u,m]:(Un=l,l=o)):(Un=l,l=o);l!==o;)a.push(l),l=Un,u=Un,Kn++,m=sr(),Kn--,m===o?u=void 0:(Un=u,u=o),u!==o?(e.length>Un?(m=e.charAt(Un),Un++):(m=o,0===Kn&&rr(s)),m!==o?l=u=[u,m]:(Un=l,l=o)):(Un=l,l=o);(i=a!==o?e.substring(i,Un):a)!==o?(a=Un,Kn++,(l=sr())===o&&(l=ar()),Kn--,l!==o?(Un=a,a=void 0):a=o,a!==o?t=n=[n,r,i,a]:(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;else Un=t,t=o;Kn--,t===o&&(n=o,0===Kn&&rr(c));return Xn[p]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n,r,i,a,l,u=113*Un+6,c=Xn[u];if(c)return Un=c.nextPos,c.result;t=Un,"/*"===e.substr(Un,2)?(n="/*",Un+=2):(n=o,0===Kn&&rr(m));if(n!==o){for(r=[],i=Un,a=Un,Kn++,"*/"===e.substr(Un,2)?(l="*/",Un+=2):(l=o,0===Kn&&rr(p)),Kn--,l===o?a=void 0:(Un=a,a=o),a!==o?(e.length>Un?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(s)),l!==o?i=a=[a,l]:(Un=i,i=o)):(Un=i,i=o);i!==o;)r.push(i),i=Un,a=Un,Kn++,"*/"===e.substr(Un,2)?(l="*/",Un+=2):(l=o,0===Kn&&rr(p)),Kn--,l===o?a=void 0:(Un=a,a=o),a!==o?(e.length>Un?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(s)),l!==o?i=a=[a,l]:(Un=i,i=o)):(Un=i,i=o);r!==o?("*/"===e.substr(Un,2)?(i="*/",Un+=2):(i=o,0===Kn&&rr(p)),i!==o?t=n=[n,r,i]:(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;return Xn[u]={nextPos:Un,result:t},t}()),Xn[n]={nextPos:Un,result:t},t)}function ur(){var t,n,r,i,a,s,l,u=113*Un+7,c=Xn[u];if(c)return Un=c.nextPos,c.result;for(Kn++,t=Un,n=[],r=Un,i=[],a=lr();a!==o;)i.push(a),a=lr();if(i!==o){if(a=[],y.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(b)),s!==o)for(;s!==o;)a.push(s),y.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(b));else a=o;if(a!==o){for(s=[],l=lr();l!==o;)s.push(l),l=lr();s!==o?r=i=[i,a,s]:(Un=r,r=o)}else Un=r,r=o}else Un=r,r=o;if(r!==o)for(;r!==o;){for(n.push(r),r=Un,i=[],a=lr();a!==o;)i.push(a),a=lr();if(i!==o){if(a=[],y.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(b)),s!==o)for(;s!==o;)a.push(s),y.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(b));else a=o;if(a!==o){for(s=[],l=lr();l!==o;)s.push(l),l=lr();s!==o?r=i=[i,a,s]:(Un=r,r=o)}else Un=r,r=o}else Un=r,r=o}else n=o;return n!==o&&(zn=t,n=""),Kn--,(t=n)===o&&(n=o,0===Kn&&rr(g)),Xn[u]={nextPos:Un,result:t},t}function cr(){var t,n,r=113*Un+8,i=Xn[r];if(i)return Un=i.nextPos,i.result;for(Kn++,t=[],(n=lr())===o&&(y.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(b)));n!==o;)t.push(n),(n=lr())===o&&(y.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(b)));return Kn--,t===o&&(n=o,0===Kn&&rr(v)),Xn[r]={nextPos:Un,result:t},t}function dr(){var t,n,r=113*Un+9,i=Xn[r];if(i)return Un=i.nextPos,i.result;if(Kn++,t=[],w.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(E)),n!==o)for(;n!==o;)t.push(n),w.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(E));else t=o;return Kn--,t===o&&(n=o,0===Kn&&rr(_)),Xn[r]={nextPos:Un,result:t},t}function hr(){var t,n,r=113*Un+10,i=Xn[r];if(i)return Un=i.nextPos,i.result;for(Kn++,t=[],w.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(E));n!==o;)t.push(n),w.test(e.charAt(Un))?(n=e.charAt(Un),Un++):(n=o,0===Kn&&rr(E));return Kn--,t===o&&(n=o,0===Kn&&rr(j)),Xn[r]={nextPos:Un,result:t},t}function fr(){var t,n,r,i,a,s=113*Un+11,l=Xn[s];if(l)return Un=l.nextPos,l.result;if(Kn++,t=Un,34===e.charCodeAt(Un)?(n='"',Un++):(n=o,0===Kn&&rr(S)),n!==o){for(r=[],O.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(k));i!==o;)r.push(i),O.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(k));r!==o?(34===e.charCodeAt(Un)?(i='"',Un++):(i=o,0===Kn&&rr(S)),i!==o?(zn=t,t=n=void Jn(i18n.t("db.messages.parser.error-sql-string-use-single-quotes"))):(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;if(t===o)if(t=Un,39===e.charCodeAt(Un)?(n="'",Un++):(n=o,0===Kn&&rr(T)),n!==o){for(r=Un,i=[],M.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(x));a!==o;)i.push(a),M.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(x));(r=i!==o?e.substring(r,Un):i)!==o?(39===e.charCodeAt(Un)?(i="'",Un++):(i=o,0===Kn&&rr(T)),i!==o?(zn=t,t=n=r):(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;return Kn--,t===o&&(n=o,0===Kn&&rr(C)),Xn[s]={nextPos:Un,result:t},t}function mr(){var t,n,r,i,a,s,l=113*Un+12,u=Xn[l];if(u)return Un=u.nextPos,u.result;if(t=Un,n=Un,r=Un,45===e.charCodeAt(Un)?(i="-",Un++):(i=o,0===Kn&&rr(R)),i===o&&(i=null),i!==o){if(a=[],L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A)),s!==o)for(;s!==o;)a.push(s),L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A));else a=o;a!==o?r=i=[i,a]:(Un=r,r=o)}else Un=r,r=o;return(n=r!==o?e.substring(n,Un):r)!==o&&(zn=t,n=parseInt(n,10)),t=n,Xn[l]={nextPos:Un,result:t},t}function pr(){var t,n,r,i,a,s,l,u,c=113*Un+13,d=Xn[c];if(d)return Un=d.nextPos,d.result;if(t=Un,n=Un,r=Un,45===e.charCodeAt(Un)?(i="-",Un++):(i=o,0===Kn&&rr(R)),i===o&&(i=null),i!==o){if(a=[],L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A)),s!==o)for(;s!==o;)a.push(s),L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A));else a=o;if(a!==o)if(46===e.charCodeAt(Un)?(s=".",Un++):(s=o,0===Kn&&rr(D)),s!==o){if(l=[],L.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(A)),u!==o)for(;u!==o;)l.push(u),L.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(A));else l=o;l!==o?r=i=[i,a,s,l]:(Un=r,r=o)}else Un=r,r=o;else Un=r,r=o}else Un=r,r=o;return(n=r!==o?e.substring(n,Un):r)!==o&&(zn=t,n=parseFloat(n)),t=n,Xn[c]={nextPos:Un,result:t},t}function gr(){var e,t=113*Un+14,n=Xn[t];return n?(Un=n.nextPos,n.result):((e=pr())===o&&(e=mr()),Xn[t]={nextPos:Un,result:e},e)}function yr(){var t,n,r,i,a,s,l,u,c,d,h=113*Un+16,f=Xn[h];if(f)return Un=f.nextPos,f.result;if(Kn++,t=Un,n=Un,Kn++,r=Un,(i=Do())!==o){if(a=Un,Kn++,s=[],H.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(Y)),l!==o)for(;l!==o;)s.push(l),H.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(Y));else s=o;Kn--,s===o?a=void 0:(Un=a,a=o),a!==o?r=i=[i,a]:(Un=r,r=o)}else Un=r,r=o;if(Kn--,r===o?n=void 0:(Un=n,n=o),n!==o){if(r=Un,i=Un,a=[],F.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(W)),s!==o)for(;s!==o;)a.push(s),F.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(W));else a=o;if(a!==o){for(s=Un,l=[],H.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(Y));u!==o;)l.push(u),H.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(Y));(s=l!==o?e.substring(s,Un):l)!==o?i=a=[a,s]:(Un=i,i=o)}else Un=i,i=o;(r=i!==o?e.substring(r,Un):i)!==o?(zn=t,"true"!==(d=(c=r).toLowerCase())&&"false"!==d||Jn(i18n.t("db.messages.parser.error-sql-invalid-relation-name",{str:c})),t=n=c):(Un=t,t=o)}else Un=t,t=o;return Kn--,t===o&&(n=o,0===Kn&&rr(I)),Xn[h]={nextPos:Un,result:t},t}function br(){var t,n,r,i,a,s,l,u,c,d,h=113*Un+17,f=Xn[h];if(f)return Un=f.nextPos,f.result;if(t=Un,n=Un,Kn++,r=Un,(i=Do())!==o){if(a=Un,Kn++,s=[],H.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(Y)),l!==o)for(;l!==o;)s.push(l),H.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(Y));else s=o;Kn--,s===o?a=void 0:(Un=a,a=o),a!==o?r=i=[i,a]:(Un=r,r=o)}else Un=r,r=o;if(Kn--,r===o?n=void 0:(Un=n,n=o),n!==o){if(r=Un,i=Un,a=[],F.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(W)),s!==o)for(;s!==o;)a.push(s),F.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(W));else a=o;if(a!==o){for(s=Un,l=[],H.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(Y));u!==o;)l.push(u),H.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(Y));(s=l!==o?e.substring(s,Un):l)!==o?i=a=[a,s]:(Un=i,i=o)}else Un=i,i=o;(r=i!==o?e.substring(r,Un):i)!==o?(zn=t,"true"!==(d=(c=r).toLowerCase())&&"false"!==d||Jn(i18n.t("db.messages.parser.error-sql-invalid-column-name",{str:c})),t=n=c):(Un=t,t=o)}else Un=t,t=o;return Xn[h]={nextPos:Un,result:t},t}function vr(){var t,n,r,i,a,s=113*Un+19,l=Xn[s];return l?(Un=l.nextPos,l.result):(t=Un,"date"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(B)),n!==o?("('"===e.substr(Un,2)?(r="('",Un+=2):(r=o,0===Kn&&rr(U)),r!==o&&(i=function(){var t,n,r,i,a,s,l,u,c,d=113*Un+20,h=Xn[d];if(h)return Un=h.nextPos,h.result;Kn++,t=Un,n=Un,r=Un,L.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(A));i!==o?(L.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(A)),a!==o?(L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A)),s!==o?(L.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(A)),l!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o);n=r!==o?e.substring(n,Un):r;n!==o?(45===e.charCodeAt(Un)?(r="-",Un++):(r=o,0===Kn&&rr(R)),r!==o?(i=Un,a=Un,L.test(e.charAt(Un))?(s=e.charAt(Un),Un++):(s=o,0===Kn&&rr(A)),s!==o?(L.test(e.charAt(Un))?(l=e.charAt(Un),Un++):(l=o,0===Kn&&rr(A)),l!==o?a=s=[s,l]:(Un=a,a=o)):(Un=a,a=o),(i=a!==o?e.substring(i,Un):a)!==o?(45===e.charCodeAt(Un)?(a="-",Un++):(a=o,0===Kn&&rr(R)),a!==o?(s=Un,l=Un,L.test(e.charAt(Un))?(u=e.charAt(Un),Un++):(u=o,0===Kn&&rr(A)),u!==o?(L.test(e.charAt(Un))?(c=e.charAt(Un),Un++):(c=o,0===Kn&&rr(A)),c!==o?l=u=[u,c]:(Un=l,l=o)):(Un=l,l=o),(s=l!==o?e.substring(s,Un):l)!==o?(zn=t,n=function(e,t,n){e=parseInt(e,10),t=parseInt(t,10)-1,n=parseInt(n,10);var r=new Date(e,t,n);return r.getFullYear()==e&&r.getMonth()==t&&r.getDate()==n||Jn(i18n.t("db.messages.parser.error-invalid-date-format",{str:$n()})),r}(n,i,s),t=n):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o);Kn--,t===o&&(n=o,0===Kn&&rr(V));return Xn[d]={nextPos:Un,result:t},t}())!==o?("')"===e.substr(Un,2)?(a="')",Un+=2):(a=o,0===Kn&&rr(z)),a!==o?(zn=t,t=n=i):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[s]={nextPos:Un,result:t},t)}function _r(){var t,n,r,i,a,s=113*Un+21,l=Xn[s];return l?(Un=l.nextPos,l.result):(t=Un,n=Un,(r=yr())!==o?(46===e.charCodeAt(Un)?(i=".",Un++):(i=o,0===Kn&&rr(D)),i!==o?n=r=[r,i]:(Un=n,n=o)):(Un=n,n=o),n===o&&(n=null),n!==o&&(r=br())!==o?(zn=t,t=n={type:"column",name:r,relAlias:(a=n)?a[0]:null}):(Un=t,t=o),Xn[s]={nextPos:Un,result:t},t)}function wr(){var t,n,r,i,a=113*Un+23,s=Xn[a];if(s)return Un=s.nextPos,s.result;if(t=Un,n=Un,r=[],L.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(A)),i!==o)for(;i!==o;)r.push(i),L.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(A));else r=o;return(n=r!==o?e.substring(n,Un):r)!==o&&(zn=t,n={type:"column",name:parseInt(n,10),relAlias:null}),t=n,Xn[a]={nextPos:Un,result:t},t}function Er(){var t,n,r,i,a,s,l,u,c=113*Un+24,d=Xn[c];return d?(Un=d.nextPos,d.result):(t=Un,n=Un,"sum"===e.substr(Un,3).toLowerCase()?(r=e.substr(Un,3),Un+=3):(r=o,0===Kn&&rr(G)),r===o&&("count"===e.substr(Un,5).toLowerCase()?(r=e.substr(Un,5),Un+=5):(r=o,0===Kn&&rr(K)),r===o&&("avg"===e.substr(Un,3).toLowerCase()?(r=e.substr(Un,3),Un+=3):(r=o,0===Kn&&rr(X)),r===o&&("min"===e.substr(Un,3).toLowerCase()?(r=e.substr(Un,3),Un+=3):(r=o,0===Kn&&rr($)),r===o&&("max"===e.substr(Un,3).toLowerCase()?(r=e.substr(Un,3),Un+=3):(r=o,0===Kn&&rr(J)))))),(n=r!==o?e.substring(n,Un):r)!==o?(40===e.charCodeAt(Un)?(r="(",Un++):(r=o,0===Kn&&rr(Q)),r!==o&&cr()!==o?(i=Un,"all"===e.substr(Un,3).toLowerCase()?(a=e.substr(Un,3),Un+=3):(a=o,0===Kn&&rr(Z)),a!==o&&(s=ur())!==o?i=a=[a,s]:(Un=i,i=o),i===o&&(i=null),i!==o&&(a=_r())!==o&&(s=cr())!==o?(41===e.charCodeAt(Un)?(l=")",Un++):(l=o,0===Kn&&rr(ee)),l!==o?(zn=t,u=a,t=n={type:"aggFunction",aggFunction:n.toUpperCase(),col:u}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,"count(*)"===e.substr(Un,8).toLowerCase()?(n=e.substr(Un,8),Un+=8):(n=o,0===Kn&&rr(te)),n!==o&&(zn=t,n={type:"aggFunction",aggFunction:"COUNT_ALL",col:null}),t=n),Xn[c]={nextPos:Un,result:t},t)}function jr(){var t,n,r,i,a,s,l,u,c=113*Un+25,d=Xn[c];return d?(Un=d.nextPos,d.result):(t=Un,(n=Er())!==o&&ur()!==o?("as"===e.substr(Un,2).toLowerCase()?(r=e.substr(Un,2),Un+=2):(r=o,0===Kn&&rr(ne)),r!==o&&ur()!==o&&(i=br())!==o?(zn=t,s=i,(a=n).name=s,t=n=a):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,(n=Er())!==o&&cr()!==o?(zn=t,t=n=void Jn("aggregation columns must be named")):(Un=t,t=o),t===o&&(t=Un,(n=function(){var t,n,r,i,a,s=113*Un+22,l=Xn[s];return l?(Un=l.nextPos,l.result):(t=Un,n=Un,(r=yr())!==o?(46===e.charCodeAt(Un)?(i=".",Un++):(i=o,0===Kn&&rr(D)),i!==o?n=r=[r,i]:(Un=n,n=o)):(Un=n,n=o),n===o&&(n=null),n!==o?(42===e.charCodeAt(Un)?(r="*",Un++):(r=o,0===Kn&&rr(q)),r!==o?(zn=t,t=n={type:"column",name:"*",relAlias:(a=n)?a[0]:null}):(Un=t,t=o)):(Un=t,t=o),Xn[s]={nextPos:Un,result:t},t)}())!==o&&(zn=t,n=re(n)),(t=n)===o&&(t=Un,(n=_r())!==o&&ur()!==o?("as"===e.substr(Un,2).toLowerCase()?(r=e.substr(Un,2),Un+=2):(r=o,0===Kn&&rr(ne)),r!==o&&ur()!==o&&(i=br())!==o?(zn=t,u=i,(l=n).alias=u,t=n=l):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,(n=Co())!==o&&ur()!==o?("as"===e.substr(Un,2).toLowerCase()?(r=e.substr(Un,2),Un+=2):(r=o,0===Kn&&rr(ne)),r!==o&&ur()!==o&&(i=br())!==o?(zn=t,t=n=function(e,t){return{type:"namedColumnExpr",name:t,relAlias:null,child:e,codeInfo:No()}}(n,i)):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,(n=_r())!==o&&(zn=t,n=re(n)),t=n))))),Xn[c]={nextPos:Un,result:t},t)}function Cr(){var t,n,r,i,a,s,l=113*Un+29,u=Xn[l];return u?(Un=u.nextPos,u.result):(t=Un,(n=_r())===o&&(n=wr()),n!==o?(r=Un,(i=ur())!==o&&(a=function(){var t,n,r=113*Un+28,i=Xn[r];return i?(Un=i.nextPos,i.result):(t=Un,"asc"===e.substr(Un,3).toLowerCase()?(n=e.substr(Un,3),Un+=3):(n=o,0===Kn&&rr(ie)),n!==o&&(zn=t,n=!0),(t=n)===o&&(t=Un,"desc"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(ae)),n!==o&&(zn=t,n=!1),t=n),Xn[r]={nextPos:Un,result:t},t)}())!==o?r=i=[i,a]:(Un=r,r=o),r===o&&(r=null),r!==o?(zn=t,t=n={col:n,asc:s=null==(s=r)||s[1]}):(Un=t,t=o)):(Un=t,t=o),Xn[l]={nextPos:Un,result:t},t)}function Sr(){var t,n,r,i,a,s,l,u,c=113*Un+30,d=Xn[c];if(d)return Un=d.nextPos,d.result;if(t=Un,(n=Cr())!==o){for(r=[],i=Un,(a=cr())!==o?(44===e.charCodeAt(Un)?(s=",",Un++):(s=o,0===Kn&&rr(oe)),s!==o&&(l=cr())!==o&&(u=Cr())!==o?i=a=[a,s,l,u]:(Un=i,i=o)):(Un=i,i=o);i!==o;)r.push(i),i=Un,(a=cr())!==o?(44===e.charCodeAt(Un)?(s=",",Un++):(s=o,0===Kn&&rr(oe)),s!==o&&(l=cr())!==o&&(u=Cr())!==o?i=a=[a,s,l,u]:(Un=i,i=o)):(Un=i,i=o);r!==o?(zn=t,t=n=function(e,t){var n=[e];if(null!=t)for(var r in t)n.push(t[r][3]);return{value:n,codeInfo:No()}}(n,r)):(Un=t,t=o)}else Un=t,t=o;return Xn[c]={nextPos:Un,result:t},t}function Or(){var t,n,r,i,a,s,l,u,c=113*Un+32,d=Xn[c];return d?(Un=d.nextPos,d.result):(t=Un,(n=yr())!==o&&ur()!==o?("as"===e.substr(Un,2).toLowerCase()?(r=e.substr(Un,2),Un+=2):(r=o,0===Kn&&rr(ne)),r!==o&&cr()!==o?(40===e.charCodeAt(Un)?(i="(",Un++):(i=o,0===Kn&&rr(Q)),i!==o&&(a=xr())!==o?(41===e.charCodeAt(Un)?(s=")",Un++):(s=o,0===Kn&&rr(ee)),s!==o?(zn=t,l=n,(u=a).wrappedInParentheses=!0,t=n={type:"assignment",name:l,child:{type:"relationFromSubstatement",statement:u,relAlias:l,codeInfo:No()},codeInfo:No()}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[c]={nextPos:Un,result:t},t)}function kr(){var t,n,r,i,a=113*Un+33,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,(n=function(){var t,n,r,i,a,s,l,u,c,d=113*Un+34,h=Xn[d];if(h)return Un=h.nextPos,h.result;t=Un,"with"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(ue));if(n!==o)if(ur()!==o)if((r=Or())!==o){for(i=[],a=Un,(s=cr())!==o?(44===e.charCodeAt(Un)?(l=",",Un++):(l=o,0===Kn&&rr(oe)),l!==o&&(u=cr())!==o&&(c=Or())!==o?a=s=[s,l,u,c]:(Un=a,a=o)):(Un=a,a=o);a!==o;)i.push(a),a=Un,(s=cr())!==o?(44===e.charCodeAt(Un)?(l=",",Un++):(l=o,0===Kn&&rr(oe)),l!==o&&(u=cr())!==o&&(c=Or())!==o?a=s=[s,l,u,c]:(Un=a,a=o)):(Un=a,a=o);i!==o?(zn=t,n=function(e,t){for(var n=[e],r=0;r0&&i!=e.arg.length&&null===r&&Jn(i18n.t("db.messages.parser.error-sql-group-by-missing")),o&&!r&&0===i&&Jn(i18n.t("db.messages.parser.error-sql-having-without-group-by")),{type:"statement",select:e,from:t,where:n?n[1]:null,groupBy:r?r[5]:null,having:o?o[1]:null,numAggregationColumns:i,wrappedInParentheses:!1,codeInfo:No()}}(n,i,a,s,l)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,40===e.charCodeAt(Un)?(n="(",Un++):(n=o,0===Kn&&rr(Q)),n!==o&&cr()!==o&&(r=xr())!==o&&cr()!==o?(41===e.charCodeAt(Un)?(i=")",Un++):(i=o,0===Kn&&rr(ee)),i!==o?(zn=t,t=n=ye(r)):(Un=t,t=o)):(Un=t,t=o)),Xn[m]={nextPos:Un,result:t},t)}function Dr(){var t,n,r,i,a=113*Un+41,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,ur()!==o?("union"===e.substr(Un,5).toLowerCase()?(n=e.substr(Un,5),Un+=5):(n=o,0===Kn&&rr(be)),n!==o&&ur()!==o?(r=Un,"all"===e.substr(Un,3).toLowerCase()?(i=e.substr(Un,3),Un+=3):(i=o,0===Kn&&rr(ve)),i!==o&&ur()!==o?(zn=r,r=i=!0):(Un=r,r=o),r===o&&(r=Un,"distinct"===e.substr(Un,8).toLowerCase()?(i=e.substr(Un,8),Un+=8):(i=o,0===Kn&&rr(de)),i!==o&&ur()!==o?(zn=r,r=i=!1):(Un=r,r=o)),r===o&&(r=null),r!==o&&(i=Lr())!==o?(zn=t,t={type:"union",child2:i,all:r}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Nr(){var t,n,r,i,a=113*Un+42,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,ur()!==o?("except"===e.substr(Un,6).toLowerCase()?(n=e.substr(Un,6),Un+=6):(n=o,0===Kn&&rr(_e)),n!==o&&ur()!==o?(r=Un,"all"===e.substr(Un,3).toLowerCase()?(i=e.substr(Un,3),Un+=3):(i=o,0===Kn&&rr(ve)),i!==o&&ur()!==o?(zn=r,r=i=!0):(Un=r,r=o),r===o&&(r=Un,"distinct"===e.substr(Un,8).toLowerCase()?(i=e.substr(Un,8),Un+=8):(i=o,0===Kn&&rr(de)),i!==o&&ur()!==o?(zn=r,r=i=!1):(Un=r,r=o)),r===o&&(r=null),r!==o&&(i=Lr())!==o?(zn=t,t={type:"except",child2:i,all:r}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Pr(){var t,n,r,i,a=113*Un+43,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,ur()!==o?("intersect"===e.substr(Un,9).toLowerCase()?(n=e.substr(Un,9),Un+=9):(n=o,0===Kn&&rr(we)),n!==o&&ur()!==o?(r=Un,"all"===e.substr(Un,3).toLowerCase()?(i=e.substr(Un,3),Un+=3):(i=o,0===Kn&&rr(ve)),i!==o&&ur()!==o?(zn=r,r=i=!0):(Un=r,r=o),r===o&&(r=Un,"distinct"===e.substr(Un,8).toLowerCase()?(i=e.substr(Un,8),Un+=8):(i=o,0===Kn&&rr(de)),i!==o&&ur()!==o?(zn=r,r=i=!1):(Un=r,r=o)),r===o&&(r=null),r!==o&&(i=Lr())!==o?(zn=t,t={type:"intersect",child2:i,all:r}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Ir(){var e,t,n,r,i=113*Un+44,a=Xn[i];if(a)return Un=a.nextPos,a.result;if(e=Un,(t=Hr())!==o){if(n=[],(r=Yr())===o&&(r=Fr())===o&&(r=Wr()),r!==o)for(;r!==o;)n.push(r),(r=Yr())===o&&(r=Fr())===o&&(r=Wr());else n=o;n!==o?(zn=e,e=t=me(t,n)):(Un=e,e=o)}else Un=e,e=o;return e===o&&(e=Hr()),Xn[i]={nextPos:Un,result:e},e}function Hr(){var t,n,r,i,a,s,l,u,c,d,h,f=113*Un+45,m=Xn[f];return m?(Un=m.nextPos,m.result):(t=Un,(n=yr())!==o?(r=Un,(i=ur())!==o?("as"===e.substr(Un,2).toLowerCase()?(a=e.substr(Un,2),Un+=2):(a=o,0===Kn&&rr(ne)),a!==o&&(s=ur())!==o&&(l=yr())!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o),r===o&&(r=null),r!==o?(zn=t,d=r,h={type:"relation",name:n,relAlias:null,codeInfo:No()},t=n=null!==d?{type:"renameRelation",child:h,newRelAlias:d[3],codeInfo:No()}:h):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,40===e.charCodeAt(Un)?(n="(",Un++):(n=o,0===Kn&&rr(Q)),n!==o&&(r=cr())!==o&&(i=xr())!==o&&(a=cr())!==o?(41===e.charCodeAt(Un)?(s=")",Un++):(s=o,0===Kn&&rr(ee)),s!==o&&(l=ur())!==o?("as"===e.substr(Un,2).toLowerCase()?(u=e.substr(Un,2),Un+=2):(u=o,0===Kn&&rr(ne)),u!==o&&ur()!==o&&(c=yr())!==o?(zn=t,t=n=function(e,t){return e.wrappedInParentheses=!0,{type:"relationFromSubstatement",statement:e,relAlias:t,codeInfo:No()}}(i,c)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,40===e.charCodeAt(Un)?(n="(",Un++):(n=o,0===Kn&&rr(Q)),n!==o&&(r=cr())!==o&&(i=Ir())!==o&&(a=cr())!==o?(41===e.charCodeAt(Un)?(s=")",Un++):(s=o,0===Kn&&rr(ee)),s!==o?(zn=t,t=n=ye(i)):(Un=t,t=o)):(Un=t,t=o))),Xn[f]={nextPos:Un,result:t},t)}function Yr(){var t,n,r,i,a,s,l,u=113*Un+46,c=Xn[u];return c?(Un=c.nextPos,c.result):(t=Un,n=Un,(r=ur())!==o?("cross"===e.substr(Un,5).toLowerCase()?(i=e.substr(Un,5),Un+=5):(i=o,0===Kn&&rr(Ee)),i!==o&&(a=ur())!==o?("join"===e.substr(Un,4).toLowerCase()?(s=e.substr(Un,4),Un+=4):(s=o,0===Kn&&rr(je)),s!==o&&(l=ur())!==o?n=r=[r,i,a,s,l]:(Un=n,n=o)):(Un=n,n=o)):(Un=n,n=o),n===o&&(n=Un,(r=cr())!==o?(44===e.charCodeAt(Un)?(i=",",Un++):(i=o,0===Kn&&rr(oe)),i!==o&&(a=cr())!==o?n=r=[r,i,a]:(Un=n,n=o)):(Un=n,n=o)),n!==o&&(r=Hr())!==o?(zn=t,t=n={type:"crossJoin",child2:r,cond:null}):(Un=t,t=o),Xn[u]={nextPos:Un,result:t},t)}function Fr(){var t,n,r,i,a=113*Un+47,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,ur()!==o?("natural"===e.substr(Un,7).toLowerCase()?(n=e.substr(Un,7),Un+=7):(n=o,0===Kn&&rr(Ce)),n!==o&&ur()!==o?("join"===e.substr(Un,4).toLowerCase()?(r=e.substr(Un,4),Un+=4):(r=o,0===Kn&&rr(je)),r!==o&&ur()!==o&&(i=Hr())!==o?(zn=t,t={type:"naturalJoin",child2:i,cond:null}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Wr(){var t,n,r,i,a,s,l,u,c,d,h,f,m,p,g,y=113*Un+48,b=Xn[y];if(b)return Un=b.nextPos,b.result;if(t=Un,ur()!==o)if(n=Un,r=Un,"inner"===e.substr(Un,5).toLowerCase()?(i=e.substr(Un,5),Un+=5):(i=o,0===Kn&&rr(Se)),i!==o&&(a=ur())!==o?r=i=[i,a]:(Un=r,r=o),r===o&&(r=null),r!==o?("join"===e.substr(Un,4).toLowerCase()?(i=e.substr(Un,4),Un+=4):(i=o,0===Kn&&rr(je)),i!==o?(zn=n,n=r="innerJoin"):(Un=n,n=o)):(Un=n,n=o),n===o&&(n=Un,r=Un,"left"===e.substr(Un,4).toLowerCase()?(i=e.substr(Un,4),Un+=4):(i=o,0===Kn&&rr(Oe)),i!==o?(a=Un,(s=ur())!==o?("outer"===e.substr(Un,5).toLowerCase()?(l=e.substr(Un,5),Un+=5):(l=o,0===Kn&&rr(ke)),l!==o?a=s=[s,l]:(Un=a,a=o)):(Un=a,a=o),a===o&&(a=null),a!==o&&(s=ur())!==o?("join"===e.substr(Un,4).toLowerCase()?(l=e.substr(Un,4),Un+=4):(l=o,0===Kn&&rr(je)),l!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o),r!==o&&(zn=n,r="leftOuterJoin"),(n=r)===o&&(n=Un,r=Un,"right"===e.substr(Un,5).toLowerCase()?(i=e.substr(Un,5),Un+=5):(i=o,0===Kn&&rr(Te)),i!==o?(a=Un,(s=ur())!==o?("outer"===e.substr(Un,5).toLowerCase()?(l=e.substr(Un,5),Un+=5):(l=o,0===Kn&&rr(ke)),l!==o?a=s=[s,l]:(Un=a,a=o)):(Un=a,a=o),a===o&&(a=null),a!==o&&(s=ur())!==o?("join"===e.substr(Un,4).toLowerCase()?(l=e.substr(Un,4),Un+=4):(l=o,0===Kn&&rr(je)),l!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o),r!==o&&(zn=n,r="rightOuterJoin"),(n=r)===o&&(n=Un,r=Un,"full"===e.substr(Un,4).toLowerCase()?(i=e.substr(Un,4),Un+=4):(i=o,0===Kn&&rr(Me)),i!==o?(a=Un,(s=ur())!==o?("outer"===e.substr(Un,5).toLowerCase()?(l=e.substr(Un,5),Un+=5):(l=o,0===Kn&&rr(ke)),l!==o?a=s=[s,l]:(Un=a,a=o)):(Un=a,a=o),a===o&&(a=null),a!==o&&(s=ur())!==o?("join"===e.substr(Un,4).toLowerCase()?(l=e.substr(Un,4),Un+=4):(l=o,0===Kn&&rr(je)),l!==o?r=i=[i,a,s,l]:(Un=r,r=o)):(Un=r,r=o)):(Un=r,r=o),r!==o&&(zn=n,r="fullOuterJoin"),n=r))),n!==o)if((r=ur())!==o)if((i=Hr())!==o)if((a=ur())!==o){if(s=Un,"on"===e.substr(Un,2).toLowerCase()?(l=e.substr(Un,2),Un+=2):(l=o,0===Kn&&rr(xe)),l!==o&&ur()!==o&&(u=io())!==o?(zn=s,s=l=u):(Un=s,s=o),s===o){if(s=Un,"using"===e.substr(Un,5).toLowerCase()?(l=e.substr(Un,5),Un+=5):(l=o,0===Kn&&rr(Re)),l!==o)if(cr()!==o)if(40===e.charCodeAt(Un)?(u="(",Un++):(u=o,0===Kn&&rr(Q)),u!==o)if(cr()!==o)if((c=br())!==o){for(d=[],h=Un,(f=cr())!==o?(44===e.charCodeAt(Un)?(m=",",Un++):(m=o,0===Kn&&rr(oe)),m!==o&&(p=cr())!==o&&(g=br())!==o?h=f=[f,m,p,g]:(Un=h,h=o)):(Un=h,h=o);h!==o;)d.push(h),h=Un,(f=cr())!==o?(44===e.charCodeAt(Un)?(m=",",Un++):(m=o,0===Kn&&rr(oe)),m!==o&&(p=cr())!==o&&(g=br())!==o?h=f=[f,m,p,g]:(Un=h,h=o)):(Un=h,h=o);d!==o&&(h=cr())!==o?(41===e.charCodeAt(Un)?(f=")",Un++):(f=o,0===Kn&&rr(ee)),f!==o?(zn=s,s=l=function(e,t,n,r){for(var o=[n],i=0;i"===e.substr(Un,2)?(n="<>",Un+=2):(n=o,0===Kn&&rr(Ve));n===o&&("!="===e.substr(Un,2)?(n="!=",Un+=2):(n=o,0===Kn&&rr(qe)));n!==o&&(zn=t,n="!=");return t=n,Xn[r]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n,r=113*Un+60,i=Xn[r];if(i)return Un=i.nextPos,i.result;t=Un,">="===e.substr(Un,2)?(n=">=",Un+=2):(n=o,0===Kn&&rr(Ge));n!==o&&(zn=t,n=">=");return t=n,Xn[r]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n,r=113*Un+62,i=Xn[r];if(i)return Un=i.nextPos,i.result;t=Un,"<="===e.substr(Un,2)?(n="<=",Un+=2):(n=o,0===Kn&&rr(Xe));n!==o&&(zn=t,n="<=");return t=n,Xn[r]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n=113*Un+61,r=Xn[n];if(r)return Un=r.nextPos,r.result;62===e.charCodeAt(Un)?(t=">",Un++):(t=o,0===Kn&&rr(Ke));return Xn[n]={nextPos:Un,result:t},t}())===o&&(t=function(){var t,n=113*Un+63,r=Xn[n];if(r)return Un=r.nextPos,r.result;60===e.charCodeAt(Un)?(t="<",Un++):(t=o,0===Kn&&rr($e));return Xn[n]={nextPos:Un,result:t},t}()),Xn[n]={nextPos:Un,result:t},t)}function qr(){var t,n,r,i,a=113*Un+69,s=Xn[a];if(s)return Un=s.nextPos,s.result;if(t=Un,(n=hr())!==o&&lr()!==o&&(r=hr())!==o?(59===e.charCodeAt(Un)?(i=";",Un++):(i=o,0===Kn&&rr(se)),i===o&&(i=null),i!==o?(zn=t,t=n={type:"comment"}):(Un=t,t=o)):(Un=t,t=o),t===o)if(t=Un,35===e.charCodeAt(Un)?(n="#",Un++):(n=o,0===Kn&&rr(at)),n!==o)if(hr()!==o){for(r=[],st.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(lt));i!==o;)r.push(i),st.test(e.charAt(Un))?(i=e.charAt(Un),Un++):(i=o,0===Kn&&rr(lt));r!==o?(10===e.charCodeAt(Un)?(i="\n",Un++):(i=o,0===Kn&&rr(u)),i!==o?(zn=t,t=n={type:"comment"}):(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;else Un=t,t=o;return Xn[a]={nextPos:Un,result:t},t}function Gr(){var t,n,r,i,a=113*Un+70,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,96===e.charCodeAt(Un)?(n="`",Un++):(n=o,0===Kn&&rr(ut)),n!==o&&(r=yr())!==o?(96===e.charCodeAt(Un)?(i="`",Un++):(i=o,0===Kn&&rr(ut)),i!==o?(zn=t,t=n=r):(Un=t,t=o)):(Un=t,t=o),t===o&&(t=Un,(n=yr())!==o&&(zn=t,n=n),t=n),Xn[a]={nextPos:Un,result:t},t)}function Kr(){var t,n,r,i,a,s,l,u,c=113*Un+71,d=Xn[c];return d?(Un=d.nextPos,d.result):(t=Un,"drop"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(ct)),n!==o&&dr()!==o?("table"===e.substr(Un,5).toLowerCase()?(r=e.substr(Un,5),Un+=5):(r=o,0===Kn&&rr(dt)),r!==o&&dr()!==o?(i=Un,"if"===e.substr(Un,2).toLowerCase()?(a=e.substr(Un,2),Un+=2):(a=o,0===Kn&&rr(ht)),a!==o&&(s=dr())!==o?("exists"===e.substr(Un,6).toLowerCase()?(l=e.substr(Un,6),Un+=6):(l=o,0===Kn&&rr(it)),l!==o&&(u=dr())!==o?i=a=[a,s,l,u]:(Un=i,i=o)):(Un=i,i=o),i===o&&(i=null),i!==o&&(a=Gr())!==o&&(s=hr())!==o?(59===e.charCodeAt(Un)?(l=";",Un++):(l=o,0===Kn&&rr(se)),l!==o?(zn=t,t=n={type:"dropTable"}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[c]={nextPos:Un,result:t},t)}function Xr(){var t,n,r,i,a,s,l=113*Un+72,u=Xn[l];if(u)return Un=u.nextPos,u.result;if(t=Un,"lock"===e.substr(Un,4).toLowerCase()?(n=e.substr(Un,4),Un+=4):(n=o,0===Kn&&rr(ft)),n!==o)if(dr()!==o)if("tables"===e.substr(Un,6).toLowerCase()?(r=e.substr(Un,6),Un+=6):(r=o,0===Kn&&rr(mt)),r!==o)if(dr()!==o)if(Gr()!==o)if(dr()!==o){if(i=[],F.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(W)),a!==o)for(;a!==o;)i.push(a),F.test(e.charAt(Un))?(a=e.charAt(Un),Un++):(a=o,0===Kn&&rr(W));else i=o;i!==o&&(a=hr())!==o?(59===e.charCodeAt(Un)?(s=";",Un++):(s=o,0===Kn&&rr(se)),s!==o?(zn=t,t=n={type:"lockTable"}):(Un=t,t=o)):(Un=t,t=o)}else Un=t,t=o;else Un=t,t=o;else Un=t,t=o;else Un=t,t=o;else Un=t,t=o;else Un=t,t=o;return Xn[l]={nextPos:Un,result:t},t}function $r(){var t,n,r,i,a=113*Un+73,s=Xn[a];return s?(Un=s.nextPos,s.result):(t=Un,"unlock"===e.substr(Un,6).toLowerCase()?(n=e.substr(Un,6),Un+=6):(n=o,0===Kn&&rr(pt)),n!==o&&dr()!==o?("tables"===e.substr(Un,6).toLowerCase()?(r=e.substr(Un,6),Un+=6):(r=o,0===Kn&&rr(mt)),r!==o&&hr()!==o?(59===e.charCodeAt(Un)?(i=";",Un++):(i=o,0===Kn&&rr(se)),i!==o?(zn=t,t=n={type:"unlockTable"}):(Un=t,t=o)):(Un=t,t=o)):(Un=t,t=o),Xn[a]={nextPos:Un,result:t},t)}function Jr(){var e,t,n,r,i,a=113*Un+74,s=Xn[a];if(s)return Un=s.nextPos,s.result;if(e=Un,hr()!==o){if(t=[],n=Un,(r=Qr())===o&&(r=Xr())===o&&(r=$r())===o&&(r=qr())===o&&(r=Kr())===o&&(r=to())===o&&(r=oo()),r!==o&&(i=hr())!==o?n=r=[r,i]:(Un=n,n=o),n!==o)for(;n!==o;)t.push(n),n=Un,(r=Qr())===o&&(r=Xr())===o&&(r=$r())===o&&(r=qr())===o&&(r=Kr())===o&&(r=to())===o&&(r=oo()),r!==o&&(i=hr())!==o?n=r=[r,i]:(Un=n,n=o);else t=o;t!==o&&(n=hr())!==o?(zn=e,e=function(e){var t,n,r,o,i,a,s={},l={},u="";for(n=0;n!0===n.evaluate(e,t,r,o),this._checkSchema(e,t)}_getResult(e,t){if(e=this._returnOrCreateSession(e),null===this._joinConditionEvaluator)throw new Error("check not called");const n=new c.a;return n.setSchema(this.getSchema()),p.calcNestedLoopJoin(e,this.getChild(),this.getChild2(),n,this._isRightJoin,this._isAntiJoin,this._joinConditionEvaluator,this._rowCreatorMatched,this._rowCreatorNotMatched),!0===t&&n.eliminateDuplicateRows(),this.setResultNumRows(n.getNumRows()),n}static createNullArray(e){return new Array(e).fill(null)}static getCheckedEvaluatorBooleanExpression(e,t,n,r){if(n.check(e,t),"boolean"!==n.getDataType())throw new m.a("db.messages.exec.error-condition-must-be-boolean",r);return function(e,t,r,o){return!0===n.evaluate(e,t,r,o)}}static getCheckedEvaluatorNaturalJoin(e,t,n,r){}static calcNestedLoopJoin(e,t,n,r,o,i,a,s,l){const u=t.getResult(e),c=n.getResult(e),d=u.getNumRows(),h=c.getNumRows(),f=u.getNumCols();c.getNumCols();if(!1===o){let t;null!==l&&(t=p.createNullArray(r.getSchema().getSize()-f));const n={};for(let o=0;o0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)},this._rowCreatorNotMatched=null}catch(e){this.throwExecutionError(e.message)}}getResult(e){return super._getResult(e,!0)}getArgumentHtml(){return""}}class y extends u.c{constructor(e,t){super("π",e),this._checked=null,this._columns=t}getSchema(){if(null===this._columns)return this._child.getSchema();if(null===this._checked)throw new Error("check has not been called");return this._checked._projectedSchema}getResult(e){if(e=this._returnOrCreateSession(e),null===this._checked)throw new Error("check has not been called");const{_indices:t}=this._checked;if(null===this._columns)return this._child.getResult(e);const n=this._child.getResult(e),r=new c.a;r.setSchema(this.getSchema());const o=r.getNumCols(),i=n.getNumRows();let a,s,l,u;for(a=0;a-1&&o.removeColumn(n)}o.getSize()===n&&this.throwExecutionError(i18n.t("db.messages.exec.error-schema-a-not-part-of-schema-b",{schemaA:t,schemaB:e})),this._delegate=new d(new y(this._child,o.getColumns()).setCodeInfoObject(this._codeInfo),new y(new d(new g(new y(this._child,o.getColumns()).setCodeInfoObject(this._codeInfo),this._child2).setCodeInfoObject(this._codeInfo),this._child).setCodeInfoObject(this._codeInfo),o.getColumns()).setCodeInfoObject(this._codeInfo)),this._delegate.check()}}class v extends u.c{constructor(e,t,n){super("γ",e),this.checked=null,this.groupByCols=t,this.aggregateFunctions=n}getSchema(){if(null===this.checked)throw new Error("check not called");return this.checked.schema}check(){this._child.check();const e=this._child.getSchema(),t=new Array(this.groupByCols.length),n=Array(this.aggregateFunctions.length);for(let n=0;nl.a.printColumn(e.name,e.relAlias)),t=this.aggregateFunctions.map(e=>`${"COUNT_ALL"===e.aggFunction?"COUNT(*)":`${e.aggFunction}(${l.a.printColumn(e.col.name,e.col.relAlias)})`}→${e.name}`);return`${e.join(", ")}; ${t.join(", ")}`}getResult(e){if(e=this._returnOrCreateSession(e),null===this.checked)throw new Error("check not called");const t=this.getChild().getResult(e),n=new c.a;n.setSchema(this.checked.schema);let r,o=0;if(this.groupByCols.length>0){const e={};for(let n=0;nt?e:t};let s,l,u,d;for(let e=0;e0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)},this._rowCreatorNotMatched=function(e,t){return e.concat(t)}}catch(e){this.throwExecutionError(e.message)}}getResult(e){if(e=this._returnOrCreateSession(e),null===this._joinConditionEvaluator||null===this._rowCreatorMatched||null===this._rowCreatorNotMatched)throw new Error("check not called");const t=new c.a;return t.setSchema(this.getSchema()),p.calcNestedLoopJoin(e,this.getChild(),this.getChild2(),t,!1,!1,this._joinConditionEvaluator,this._rowCreatorMatched,this._rowCreatorNotMatched),p.calcNestedLoopJoin(e,this.getChild(),this.getChild2(),t,!0,!1,this._joinConditionEvaluator,this._rowCreatorMatched,this._rowCreatorNotMatched),t.eliminateDuplicateRows(),this.setResultNumRows(t.getNumRows()),t}}class j extends p{constructor(e,t,n){super(e,t,"⨝",n,!1)}_checkSchema(e,t){try{if("natural"===this._joinConditionOptions.type){const n=h.a.concatNatural(e,t,!0,this._joinConditionOptions.restrictToColumns),r=n.keep;this._schema=n.schema,this._rowCreatorMatched=function(e,t){return p.createNaturalRowArray(e,t,r.size,r.keepIndicesA,r.keepIndicesB)}}else{const n=e.getConflictingColumnsArray(t);n.length>0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)}}this._rowCreatorNotMatched=null}catch(e){this.throwExecutionError(e.message)}}getResult(e){return super._getResult(e,!0)}}class C extends p{constructor(e,t,n){super(e,t,"⟕",n,!1)}_checkSchema(e,t){try{if("natural"===this._joinConditionOptions.type){const n=h.a.concatNatural(e,t,!0,this._joinConditionOptions.restrictToColumns),r=n.keep;this._schema=n.schema,this._rowCreatorMatched=function(e,t){return p.createNaturalRowArray(e,t,r.size,r.keepIndicesA,r.keepIndicesB)}}else{const n=e.getConflictingColumnsArray(t);n.length>0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)}}this._rowCreatorNotMatched=function(e,t){return e.concat(t)}}catch(e){this.throwExecutionError(e.message)}}getResult(e){return super._getResult(e,!0)}}class S extends p{constructor(e,t,n){super(e,t,"⟖",n,!0)}_checkSchema(e,t){try{if("natural"===this._joinConditionOptions.type){const n=h.a.concatNatural(e,t,!1,this._joinConditionOptions.restrictToColumns),r=n.keep;this._schema=n.schema,this._rowCreatorMatched=function(e,t){return p.createNaturalRowArray(e,t,r.size,r.keepIndicesA,r.keepIndicesB)}}else{const n=e.getConflictingColumnsArray(t);n.length>0&&this.throwExecutionError(s.a("db.messages.exec.error-join-would-produce-non-unique-columns",{conflicts:n.join(", ")})),this._schema=h.a.concat(this._child.getSchema(),this._child2.getSchema()),this._rowCreatorMatched=function(e,t){return e.concat(t)}}this._rowCreatorNotMatched=function(e,t){return e.concat(t)}}catch(e){this.throwExecutionError(e.message)}}getResult(e){return super._getResult(e,!0)}}class O extends p{constructor(e,t,n){super(e,t,n?"⋉":"⋊",{type:"natural",restrictToColumns:null},!n)}_checkSchema(e,t){this._isRightJoin?(this._schema=t.copy(),this._rowCreatorMatched=function(e,t){return t}):(this._schema=e.copy(),this._rowCreatorMatched=function(e,t){return e}),this._rowCreatorNotMatched=null}getResult(e){return super._getResult(e,!0)}}class k extends u.c{constructor(e,t,n){if(super("τ",e),this._orderCols=t,this._orderAsc=n,this._orderAsc.length!==this._orderCols.length)throw new Error("order cols not correct");this._orderIndices=null}getSchema(){return this._child.getSchema()}getResult(e){if(e=this._returnOrCreateSession(e),null===this._orderIndices)throw new Error("check not called");const t=this.getChild().getResult(e).copy();return t.eliminateDuplicateRows(),this.setResultNumRows(t.getNumRows()),t.sort(this._orderIndices,this._orderAsc),t}check(){this._child.check();const e=this._child.getSchema();this._orderIndices=[];for(let t=0;t0){const n=[],r=e.groupBy||[];for(let e=0;e0)a=new v(a,r,n);else{const e=[];for(let t=0;t",[new f.c("number","rownum",[]),new f.c("number","constant",[o])]);if(-1===n)a=new R(r(t.child),i);else{const e=new f.c("boolean","<=",[new f.c("number","rownum",[]),new f.c("number","constant",[n+o])]);a=new R(r(t.child),new f.c("boolean","and",[i,e]))}break}default:throw new Error(`type ${e.type} not implemented`)}if(!a)throw new Error("should not happen");return!0===e.wrappedInParentheses&&a.setWrappedInParentheses(!0),n(a,e),a}function o(e,t,n){e.check();const r=new R(e,N(t));return r.setCodeInfoObject(n),r}function i(e){return"column"===e.type&&e.alias}return r(e.child)}function N(e){let t;if("null"===e.datatype&&"columnValue"===e.func)t=new f.b(e.args[0],e.args[1]);else switch(e.datatype){case"string":case"number":case"boolean":case"date":case"null":const n=[];for(let t=0;t{"relation"!==e.type||void 0!==t&&!1!==t.has(e.name)||n.push({name:e.name,line:e.codeInfo.location.start.line,column:e.codeInfo.location.start.column})}),n}function B(e,t){const n=Y.a.isMap(t)?t:Y.a().withMutations(e=>{for(const n of Object.keys(t))e.set(n,t[n])}).asImmutable();if(0===e.assignments.length)return;const r=new Map;Y.c().withMutations(t=>{for(let n=0;n{if(!0===i.get(e))return;if(!0===o.get(e))throw new Error(s.a("db.messages.translate.error-variable-cyclic-usage",{name:e}));o.set(e,!0);const t=r.get(e);if(void 0!==t){const{childRelations:e}=t;for(let t=0;t{if("relation"===e.type&&e.name===t.name){return Object.assign(Object.assign({},t.child),{metaData:Object.assign(Object.assign({},t.child.metaData),{fromVariable:t.name})})}return e});e=Object.assign(Object.assign({},e),{child:n})}r.set(e.name,e)}for(const[,t]of r)e.assignments[t.assignmentIndex].child=t.child;if(("relalgRoot"===e.type||"sqlRoot"===e.type)&&null!==e.child&&void 0!==e.child)for(const[t,n]of r)e.child=Object(F.b)(e.child,e=>"relation"===e.type&&e.name===t?Object.assign(Object.assign({},n.child),{metaData:Object.assign(Object.assign({},n.child.metaData),{fromVariable:t})}):e)}var U=n("./src/db/translate/textFromAst.ts");function z(e,t,n,r){if("none"===r)return{query:e,cursor:n};const o={math2plain:{pi:"pi",sigma:"sigma",rho:"rho",arrowLeft:"<-",arrowRight:"->",psi:"psi",tau:"tau",gamma:"gamma",unionOperator:"union",intersectOperator:"intersect",divisionOperator:"/",differenceOperator:"-",crossJoinOperator:"cross join",innerJoinOperator:"inner join",naturalJoinOperator:"natural join",leftSemiJoinOperator:"left semi join",rightSemiJoinOperator:"right semi join",antiJoinOperator:"anti join",leftOuterJoinOperator:"left outer join",rightOuterJoinOperator:"right outer join",fullOuterJoinOperator:"full outer join"},plain2math:{pi:"π",sigma:"σ",rho:"ρ",arrowLeft:"←",arrowRight:"→",psi:"ψ",tau:"τ",gamma:"γ",unionOperator:"∪",intersectOperator:"∩",divisionOperator:"÷",differenceOperator:"-",crossJoinOperator:"⨯",innerJoinOperator:"⨝",naturalJoinOperator:"⨝",leftSemiJoinOperator:"⋉",rightSemiJoinOperator:"⋊",antiJoinOperator:"▷",leftOuterJoinOperator:"⟕",rightOuterJoinOperator:"⟖",fullOuterJoinOperator:"⟗"}};for(let i=t.length-1;i>=0;i--){const a=t[i],s=a.location,l=e.substr(0,s.start.offset),u=e.substring(s.end.offset),c=o[r][a.name];if(e.substring(s.start.offset,s.end.offset)!==c){if(n)if(n.line>=s.start.line&&n.line<=s.end.line){if(n.column>s.start.column&&n.column=s.end.column){n.line-=s.end.line-s.start.line;const e=a.location.end.offset-a.location.start.offset,t=c.length;n.column-=e-t}}else n.lines.end.line&&(n.line-=s.end.line-s.start.line);e=l+c+u}}return{query:e,cursor:n}}const V=n("./src/db/parser/grammar_sql.pegjs");function q(e){return V.parse(e,{startRule:"start",tracer:void 0,i18n:r.c})}function G(e){return V.parse(e,{startRule:"dbDumpStart",tracer:void 0})}function K(e,t={}){t=t||{};const n=i(e,Object.keys(t));B(n,t);const r=I(n,t);return r.check(),r}},"./src/db/translate/textFromAst.ts":function(e,t,n){"use strict";(function(e){function r(e){if("groupRoot"!==e.type)throw new Error("wrong ast!?");let t="";function n(e){let t="";const{headers:n}=e;for(const e of n){const{name:n,lang:r,text:o}=e;t+=n,null!==r&&(t+="@"+r),t+=":",-1!==e.text.indexOf("\n")?t+=`[[${e.text}]]\n`:t+=e.text+"\n"}t+="\n";for(let n=0;n");if(null!==t&&i.addClass(t),null!==n&&i.append(n),null!==r){const t=e("");t.append(r),i.append(" ").append(t)}return null!==o&&i.append(" ( ").append(o).append(" ) "),i.text()}function r(t,n,r,o,i){const a=e("");if(null!==t&&a.addClass(t),a.append("( ").append(o).append(" ) "),a.append(n),null!==r){const t=e("");t.append(r),a.append(t)}return a.append(" ( ").append(i).append(" ) "),a.text()}function o(e,t){return"number"==typeof e&&(e=`[${e}]`),null===t?e:`${t}.${e}`}function i(e,t){if(null===e||"null"===t)return"null";if(e instanceof Date)return function(e){const t=e.getMonth()+1<10?"0"+(e.getMonth()+1):e.getMonth()+1,n=e.getDate()<10?"0"+e.getDate():e.getDate();return`${e.getFullYear()}-${t}-${n}`}(e);if("string"==typeof e)return`'${e}'`;if("number"==typeof e)return e.toString();throw new Error("unknown type "+t)}return function e(t){switch(t.type){case"relation":return n(t.type,t.name,null,null);case"table":{const e=[];let n=[];for(let e=0;er[n])&&(r[n]=o)}let o="{\n";for(let i=0;i0){for(let e=0;e{const o=r(e.child,t);return o!==e.child?(n=!0,Object.assign(Object.assign({},e),{child:o})):e});n&&(e=Object.assign({},e,{assignments:o}))}else if("sqlRoot"===e.type){let n=!1;const o=e.assignments.map(e=>{const o=r(e.child,t);return o!==e.child?(n=!0,Object.assign(Object.assign({},e),{child:o})):e});n&&(e=Object.assign({},e,{assignments:o}))}return t(e)}function o(e,t,n=!0){if(t(e),"statement"===e.type?o(e.from,t,n):"relationFromSubstatement"===e.type&&o(e.statement,t,n),void 0!==e.child&&o(e.child,t,n),void 0!==e.child2&&o(e.child2,t,n),void 0!==e.assignments&&!0===n)for(const r of e.assignments)o(r,t,n)}n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o}))},"./src/locales/de.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"Variablenname wurde mehrfach definiert: {{name}}","db.messages.parser.error-invalid-date-format":"\\"{{str}}\\" ist kein gültiges Datum; erwartetes Format: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":"mehrfacher header {{name}}","db.messages.parser.error-group-unknown-header":"unbekannter header {{name}}","db.messages.parser.error-group-header-name-missing":"der Name des Datensatzes fehlt (group: ....)","db.messages.parser.error-group-header-name-empty":"der Name des Datensatzes ist leer","db.messages.parser.error-group-non-unique-attribute":"nicht eindeutiges Attribut {{name}} in Spalte {{index}}","db.messages.parser.error-group-non-unique-group-name":"Der Name der Gruppe {{name}} ist nicht eindeutig.","db.messages.parser.error-sql-string-use-single-quotes":"verwenden Sie einfache Anführungszeichen für Zeichenketten","db.messages.parser.error-sql-invalid-relation-name":"\\"{{str}}\\" darf nicht als name einer Relation verwendet werden","db.messages.parser.error-sql-invalid-column-name":"\\"{{str}}\\" darf nicht als name einer Spalte verwendet werden","db.messages.parser.error-sql-group-by-missing":"group-by-Klausel fehlt","db.messages.parser.error-sql-having-without-group-by":"having-Klausel gefunden doch \\"group by\\" or Aggregation fehlt","db.messages.parser.error-sql-negative-limit":"das Limit muss größer oder gleich 0 sein","db.messages.parser.error-sqldump-invalid-column-number":"ungültige Spaltenanzahl in Zeile {{line}}","db.messages.parser.error-sqldump-invalid-type":"ungültiger Typ in Zeile {{line}}","db.messages.parser.error-sqldump-insert-wrong-number-columns":"Anzahl der Werte != Anzahl der Spalten","db.messages.parser.error-valueexpr-like-operand-no-string":"der rechte Operand von LIKE muss ein Zeichenkettenliteral sein","db.messages.exec.error-column-not-unique":"Spalte \\"{{column}}\\" kann wegen mehrdeutigkeit nicht hinzugefügt werden","db.messages.exec.error-column-not-found-name":"Spalte \\"{{column}} wurde im Schema {{schema}} nicht gefunden","db.messages.exec.error-column-not-found-index":"Spaltenindex \\"{{column}}\\" ist ausserhalb des Gültigkeitsbereichs für Schema {{schema}}; Indizes starten mit 1","db.messages.exec.error-column-ambiguous":"Spalte \\"{{column}}\\" ist mehrdeutig im Schema {{schema}}","db.messages.exec.error-column-index-out-of-range":"Spaltenindex \\"{{column}}\\" ist ausserhalb des Gültigkeitsbereichs für Schema {{schema}}; Indizes starten mit 1","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"Relations alias \\"{{alias}}\\" kann wegen Mehrdeutigkeit nicht gesetzt werden","db.messages.exec.error-could-not-rename-ambiguity":"neuer Name \\"{{newName}}\\" für \\"{{oldName}}\\" kann wegen Mehrdeutigkeit nicht gesetzt werden im Schema {{schema}}","db.messages.exec.error-schema-a-not-part-of-schema-b":"Schema {{schemaA}} ist nicht Teil von {{schemaB}}","db.messages.exec.error-schemas-not-unifiable":"Schemas sind nicht unifiable: Typen oder Anzahl der Attribute ist unterschiedlich: {{schemaA}} and {{schemaB}}","db.messages.exec.error-column-not-in-both-schemas":"Spalte \\"{{column}}\\" kann nicht in beiden Schemas des Joins gefunden werden","db.messages.exec.error-condition-must-be-boolean":"Bedingung muss ein boolscher Ausdruck sein","db.messages.exec.error-func-not-defined-for-column-type":"{{func}} ist nicht für Datentyp {{colType}} definiert","db.messages.exec.error-join-would-produce-non-unique-columns":"Die folgenden Spalten sind teil beider Relationen: {{conflicts}}","db.messages.exec.error-no-columns-match-alias-star":"Keine Spalten gefunden für \\"{{alias}}.*\\"","db.messages.exec.error-datatype-not-specified-for-col":"Datentype für Spalte {{index}} (\\"{{column}}\\") wurde nicht spezifiziert","db.messages.exec.error-invalid-projection-error":"ungültige Projektion \\"{{argument}}\\": {{error}}","db.messages.exec.error-function-expects-type":"Funktion \\"{{func}}\\" erwartet Argumente vom Typ \\"{{expected}}\\" aber \\"{{given}}\\" gefunden","db.messages.exec.error-could-not-compare-different-types":"Werte mit unterschiedlichen Datentypen können nicht verglichen werden: {{typeA}} != {{typeB}}","db.messages.exec.error-function-expects-arguments-of-same-type":"Funktion {{func}} erwartet, dass alle Argumente den selben Datentyp haben.","db.messages.exec.error-case-when-condition-must-be-boolean":"Die Bedingung für ein CASE WHEN muss ein boolscher Ausdruck sein","db.messages.exec.error-case-when-expects-results-of-same-type":"CASE WHEN condition THEN result END erwartet dass alle results vom selben Typ sind","db.messages.exec.error-invalid-date-format":"\\"{{str}}\\" ist kein gültiges Datum; erwartetes Format: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"Relation \\"{{name}}\\" nicht gefunden","db.messages.translate.warning-distinct-missing":"Distinct fehlt","db.messages.translate.warning-ignored-all-on-set-operators":"ALL bei Mengenoperatoren wurde ignoriert","db.messages.translate.error-variable-name-conflict":"Namenskonflikt: eine Relation mit Namen \\"{{name}}\\" existiert bereits","db.messages.translate.error-variable-cyclic-usage":"Zyklische Verwendung von Variable \\"{{name}}\\" erkannt","editor.codemirror-placeholder":"Abfrage ...\\nTastatürkürzel\\n\\tAbfrage ausführen: [CTRL]+[RETURN]\\n\\tMarkierten teil der Abfrage ausführen: [CTRL]+[SHIFT]+[RETURN]\\tAutovervollständigung: [CTRL]+[SPACE]","editor.alert-message-headers.success":"Erfolg","editor.alert-message-headers.info":"Info","editor.alert-message-headers.warning":"Warnung","editor.alert-message-headers.error":"Fehler","editor.inline-relation-editor.button-ok":"ok","editor.inline-relation-editor.button-cancel":"abbrechen","editor.inline-relation-editor.placeholder-column-name-and-types":"spaltenName:datenTyp","editor.inline-relation-editor.enter-your-data":"bitte Daten eingeben","editor.inline-relation-editor.error-column-name-missing":"Spaltenname fehlt in Spalte {{index}}","editor.inline-relation-editor.error-wrong-quoted-string":"Zeichenketten dürfen keine doppelten oder einfache Anführungszeichen enthalten","editor.error-no-query-found":"keine Abfrage gefunden","editor.pegjs-error.or":"oder","editor.pegjs-error.no-input-found":"keine Eingabe gefunden","editor.pegjs-error.end-of-input":"Ende der Eingabe","editor.pegjs-error.expected-found":"Erwarte {{expected}} aber {{found}} gefunden.","editor.error-at-line-x":"in Zeile {{line}}","calc.messages.error-query-missing":"keine Abfrage gefunden","calc.messages.error-query-missing-assignments-found":"nur Zuweisungen gefunden; die eigentliche Abfrage fehlt Help - Assignments (en)","calc.messages.gist-load-success":"gist erfolgreich geladen","calc.menu.headline":"Datensätze","calc.menu.datasets":"Datensätze","calc.menu.load-gist-headline":"Datensatz aus gist laden","calc.menu.load-gist-button":"laden","calc.menu.load-gist-insert-placeholder":"gist ID","calc.menu.create-own-dataset-headline":"Eigenen Datensatz erstellen","calc.menu.create-own-dataset-text":"Sie können Ihren eigenen Datensatz erstellen und ihn mit anderen teilen. Lernen Sie mehr darüber im Maintainer Tutorial","calc.menu.create-own-dataset-text-link":"Maintainer Tutorial (en)","calc.menu.create-own-dataset-button-new":"neuen Datensatz erstellen","calc.menu.create-own-dataset-button-modify":"aktuellen Datensatz abändern","calc.navigation.take-a-tour":"Tour starten","calc.navigation.feedback":"Feedback","calc.navigation.help":"Hilfe (en)","calc.navigation.calc":"Rechner","calc.navigation.language":"Sprache","calc.maintainer-groups.misc":"Diverse","calc.maintainer-groups.temp":"Ungespeichert","calc.maintainer-groups.uibk":"Universität Innsbruck","calc.maintainer-groups.karlsruhe":"Universität Karlsruhe","calc.maintainer-groups.saarland":"Universität Saarland","calc.editors.button-history":"Verlauf","calc.editors.insert-relation-title":"Einfügen","calc.editors.insert-relation-tooltip":"Beziehungs- oder Spaltennamen einfügen","calc.editors.group.tab-name":"Datensatz Editor","calc.editors.group.tab-name-short":"DS","calc.editors.group.toolbar.import-sql":"SQL-dump importieren","calc.editors.group.toolbar.import-sql-content":"SQL-dump importieren","calc.editors.group.toolbar.add-new-relation":"neue Relation hinzufügen","calc.editors.group.toolbar.add-new-relation-content":"Relationseditor öffnen","calc.editors.group.button-download":"download","calc.editors.group.button-exec":"Vorschau","calc.editors.group.button-use":"Datensatz im Editor verwenden","calc.editors.group.button-use_plural":"Datensatz im Editor verwenden","calc.editors.group.sql-import-group-name-placeholder":"Name des Datensatzes (importiert)","calc.editors.group.new-group-example-group":"-- dies ist ein Beispiel\\n\\ngroup: nameDesDatensatzes \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\tbeispiel, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"SQL-Dump importieren","calc.editors.group.modal-sqldump.button-close":"schließen","calc.editors.group.modal-sqldump.button-cancel":"abbrechen","calc.editors.group.modal-sqldump.button-import-sql":"importieren","calc.editors.group.modal-sqldump.description":"Kopieren Sie den SQL-Dump hier her um einen Datensatz daraus zu erstellen.","calc.editors.ra.tab-name":"Relationale Algebra","calc.editors.ra.tab-name-short":"RelAlg","calc.editors.ra.button-execute-query":"Query ausführen","calc.editors.ra.button-execute-selection":"Markierung ausführen","calc.editors.ra.button-download":"download","calc.editors.ra.toolbar.projection":"Projektion","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
              pi a, b A","calc.editors.ra.toolbar.selection":"Selektion","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
              sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"Umbenennen (Relationen/Spalten)","calc.editors.ra.toolbar.rename-content":"
              σ x.a > 1 ( ρ x ( A ) )
              \\n
              σ A.y > 2 ( rho ya ( A ) )
              ","calc.editors.ra.toolbar.right-arrow":"Pfeil nach Rechts","calc.editors.ra.toolbar.rename-columns-operator":"Umbenennung von Spalten","calc.editors.ra.toolbar.rename-columns-operator-content":"
              σ A.y > 2 ( ρ ya ( A ) )
              ","calc.editors.ra.toolbar.orderBy":"Sortieren","calc.editors.ra.toolbar.orderBy-content":"","calc.editors.ra.toolbar.groupBy":"Gruppieren","calc.editors.ra.toolbar.groupBy-content":"
              γ a, b; count(c)→c ( A )
              \\n
              gamma count(a)->x, sum(b)->y ( A )
              ","calc.editors.ra.toolbar.and":"Und","calc.editors.ra.toolbar.and-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.xor":"Xor","calc.editors.ra.toolbar.xor-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.or":"Oder","calc.editors.ra.toolbar.or-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.not":"Verneinung","calc.editors.ra.toolbar.not-content":" ¬(a < b) ( A )
              ","calc.editors.ra.toolbar.equals":"Gleich","calc.editors.ra.toolbar.equals-content":" a = b ( A )
              ","calc.editors.ra.toolbar.not-equals":"Ungleich","calc.editors.ra.toolbar.not-equals-content":" a \'text\' ( A )
              ","calc.editors.ra.toolbar.greater-or-equals":"Größer-Gleich","calc.editors.ra.toolbar.greater-or-equals-content":" a 42 ( A )
              ","calc.editors.ra.toolbar.lesser-or-equals":"Kleiner-Gleich","calc.editors.ra.toolbar.lesser-or-equals-content":" a 42 ( A )
              ","calc.editors.ra.toolbar.intersect":"Schnittmenge","calc.editors.ra.toolbar.intersect-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.union":"Vereinigung","calc.editors.ra.toolbar.union-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.division":"Division (Relationen)","calc.editors.ra.toolbar.division-content":"
              ( A ) ÷ ( B )
              ","calc.editors.ra.toolbar.subtraction":"Mengendifferenz","calc.editors.ra.toolbar.subtraction-content":"
              ( A ) - ( B )
              \\n
              ( A ) \\n ( B )
              ","calc.editors.ra.toolbar.cross-join":"cross join (Kreuzprodukt)","calc.editors.ra.toolbar.cross-join-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.natural-join":"natural join / θ-join","calc.editors.ra.toolbar.natural-join-content":"
              ( A ) ( B )
              \\n
              ( A ) ⋈ A.a ≥ B.a ( B )
              ","calc.editors.ra.toolbar.left-outer-join":"left outer join","calc.editors.ra.toolbar.left-outer-join-content":"
              ( A ) ⟕ ( B )
              \\n
              ( A ) ⟕ A.a < B.a ( B )
              \\n","calc.editors.ra.toolbar.right-outer-join":"right outer join","calc.editors.ra.toolbar.right-outer-join-content":"
              ( A ) ⟖ ( B )
              \\n
              ( A ) ⟖ A.a < B.a ( B )
              \\n","calc.editors.ra.toolbar.full-outer-join":"full outer join","calc.editors.ra.toolbar.full-outer-join-content":"
              ( A ) ⟗ ( B )
              \\n
              ( A ) ⟗ A.a != B.a ( B )
              ","calc.editors.ra.toolbar.left-semi-join":"left semi join","calc.editors.ra.toolbar.left-semi-join-content":"
              ( A ) ⋉ ( B )
              ","calc.editors.ra.toolbar.right-semi-join":"right semi join","calc.editors.ra.toolbar.right-semi-join-content":"
              ( A ) ⋊ ( B )
              ","calc.editors.ra.toolbar.anti-join":"anti join","calc.editors.ra.toolbar.anti-join-content":"
              ( A ) ▷ ( B )
              ","calc.editors.ra.toolbar.assignment":"Zuweisung","calc.editors.ra.toolbar.assignment-content":"
              X = pi a ( A )\\n
              Y = pi b ( b )\\n
              ( X ) ( Y )
              ","calc.editors.ra.toolbar.single-line-comment":"Kommentar einzeilig","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- useful comment","calc.editors.ra.toolbar.multi-line-comment":"Kommentar mehrzeilig","calc.editors.ra.toolbar.multi-line-comment-content":"/* this is a very,
              very long comment */

              π a, b A","calc.editors.ra.toolbar.inline-relation":"inline-Relation","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
              a:string, b:number, X.c:date
              a, 1, 1970-01-01
              }
              )","calc.editors.ra.toolbar.inline-relation-editor":"inline-Relation (Editor)","calc.editors.ra.toolbar.inline-relation-editor-content":"eine neue inline-Relation mit dem Editor erstellen","calc.editors.ra.toolbar.insert-date":"Datum einfügen","calc.editors.ra.toolbar.insert-date-content":"σ a < date(\'1970-01-01\') ( A )","calc.editors.ra.toolbar.autoreplace-operators.title":"Operatoren ersetzen","calc.editors.ra.toolbar.autoreplace-operators.header":"Operatoren automatisch ersetzen","calc.editors.ra.toolbar.autoreplace-operators.none":"keine Ersetzung","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"pi => π","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"π => pi","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"Query ausführen","calc.editors.sql.button-execute-selection":"Markierung ausführen","calc.editors.sql.button-download":"download","calc.editors.sql.toolbar.select":"select-Klausel","calc.editors.sql.toolbar.select-content":"

              SELECT * FROM A

              SELECT a, A.b, A.c FROM A
              ","calc.editors.sql.toolbar.from":"from-Klausel","calc.editors.sql.toolbar.from-content":"
              SELECT *
              FROM A, B as b
              INNER JOIN C NATURAL
              ","calc.editors.sql.toolbar.where":"where-Klausel","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
              where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"group-b-Klausel","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
              FROM A
              GROUP BY a","calc.editors.sql.toolbar.having":"having-Klausel","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
              FROM A
              GROUP BY a
              having sum > 10","calc.editors.sql.toolbar.order-by":"order-by-Klausel","calc.editors.sql.toolbar.order-by-content":"

              SELECT * FROM A ORDER BY a asc, b desc

              SELECT * FROM A ORDER BY 1, 2, 3
              ","calc.editors.sql.toolbar.limit":"limit-Klausel","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
              LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"Datum einfügen","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Ergebnis","calc.result.modal.close":"Schließen","calc.editors.ra.inline-editor.title":"Relation Editor","calc.editors.ra.inline-editor.button-download-csv":"CSV downloaden","calc.editors.ra.inline-editor.button-upload-csv":"CSV uploaden","calc.editors.ra.inline-editor.button-cancel":"Abbrechen","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Name","calc.editors.ra.inline-editor.row-type":"Typ","calc.editors.ra.inline-editor.input-relation-name":"Relations Name","calc.navigation.imprint":"Impressum"}')},"./src/locales/en.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"duplicate variable name: {{name}}","db.messages.parser.error-invalid-date-format":"\\"{{str}}\\" is not a valid date; expected format: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":"duplicate header {{name}}","db.messages.parser.error-group-unknown-header":"unknown header {{name}}","db.messages.parser.error-group-header-name-missing":"the name of the group is missing (group: ....)","db.messages.parser.error-group-header-name-empty":"the name of the group must not be empty","db.messages.parser.error-group-non-unique-attribute":"non unique attribute {{name{{ in column }}index}}","db.messages.parser.error-group-non-unique-group-name":"duplicate group name: {{name}}","db.messages.parser.error-sql-string-use-single-quotes":"use single quotes for strings","db.messages.parser.error-sql-invalid-relation-name":"\\"{{str}}\\" must not be used as a relation-name","db.messages.parser.error-sql-invalid-column-name":"\\"{{str}}\\" must not be used as a column-name","db.messages.parser.error-sql-group-by-missing":"group by is missing","db.messages.parser.error-sql-having-without-group-by":"having found but missing \\"group by\\" or aggregation","db.messages.parser.error-sql-negative-limit":"the limit given must be >= 0","db.messages.parser.error-sqldump-invalid-column-number":"invalid number of columns in line {{line}}","db.messages.parser.error-sqldump-invalid-type":"invalid type in line {{line}}","db.messages.parser.error-sqldump-insert-wrong-number-columns":"number of values != number of columns","db.messages.parser.error-valueexpr-like-operand-no-string":"right operand of LIKE must be a string literal","db.messages.exec.error-column-not-unique":"could not add column \\"{{column}}\\" because of ambiguity","db.messages.exec.error-column-not-found-name":"could not find column \\"{{column}}\\" in schema {{schema}}","db.messages.exec.error-column-not-found-index":"column index \\"{{column}}\\" is out of range in schema {{schema}}; index starts at 1","db.messages.exec.error-column-ambiguous":"column \\"{{column}}\\" is ambiguous in {{schema}}","db.messages.exec.error-column-index-out-of-range":"column index \\"{{column}}\\" is out of range in {{schema}}; index starts at 1","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"could not set relation alias \\"{{alias}}\\" because of ambiguity","db.messages.exec.error-could-not-rename-ambiguity":"could not set new name \\"{{newName}}\\" for \\"{{oldName}}\\" because of ambiguity in {{schema}}","db.messages.exec.error-schema-a-not-part-of-schema-b":"schema {{schemaA}} is not part of {{schemaB}}","db.messages.exec.error-schemas-not-unifiable":"schemas are not unifiable: types are different or size is different: {{schemaA}} and {{schemaB}}","db.messages.exec.error-column-not-in-both-schemas":"column \\"{{column}}\\" can not be found in both schemas of join","db.messages.exec.error-condition-must-be-boolean":"condition must be a boolean expression","db.messages.exec.error-func-not-defined-for-column-type":"{{func}} not defined for type {{colType}}","db.messages.exec.error-join-would-produce-non-unique-columns":"join would result in non unique column names {{conflicts}}","db.messages.exec.error-no-columns-match-alias-star":"no columns match \\"{{alias}}.*\\"","db.messages.exec.error-datatype-not-specified-for-col":"datatype for column {{index}} (\\"{{column}}\\") is not specified","db.messages.exec.error-invalid-projection-error":"invalid projection \\"{{argument}}\\": {{error}}","db.messages.exec.error-function-expects-type":"function \\"{{func}}\\" expects arguments of type \\"{{expected}}\\" but \\"{{given}}\\" given","db.messages.exec.error-could-not-compare-different-types":"could not compare value if types are different: {{typeA}} != {{typeB}}","db.messages.exec.error-function-expects-arguments-of-same-type":"{{func}} expects all arguments to be of the same type","db.messages.exec.error-case-when-condition-must-be-boolean":"the condition of a CASE WHEN must be of type boolean","db.messages.exec.error-case-when-expects-results-of-same-type":"CASE WHEN condition THEN result END expects all results to be of the same type","db.messages.exec.error-invalid-date-format":"\\"{{str}}\\" is not a valid date; expected format: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"could not find relation \\"{{name}}\\"","db.messages.translate.warning-distinct-missing":"DISTINCT is missing","db.messages.translate.warning-ignored-all-on-set-operators":"ignored ALL on set operation","db.messages.translate.error-variable-name-conflict":"name conflict: relation name \\"{{name}}\\" already exists","db.messages.translate.error-variable-cyclic-usage":"cyclic usage of variable \\"{{name}}\\" detected","editor.codemirror-placeholder":"your query goes here ...\\n\\nkeyboard shortcuts:\\n\\texecute statement: [CTRL]+[RETURN]\\n\\texecute selection: [CTRL]+[SHIFT]+[RETURN]\\n\\tautocomplete: [CTRL]+[SPACE]\\n","editor.alert-message-headers.success":"Success","editor.alert-message-headers.info":"Info","editor.alert-message-headers.warning":"Warning","editor.alert-message-headers.error":"Error","editor.inline-relation-editor.button-ok":"ok","editor.inline-relation-editor.button-cancel":"cancel","editor.inline-relation-editor.placeholder-column-name-and-types":"columnName:type","editor.inline-relation-editor.enter-your-data":"please enter your data","editor.inline-relation-editor.error-column-name-missing":"column name missing in column {{index}}","editor.inline-relation-editor.error-wrong-quoted-string":"string must not contain single and double quotes","editor.error-no-query-found":"no query found","editor.pegjs-error.or":"or","editor.pegjs-error.no-input-found":"no input found","editor.pegjs-error.end-of-input":"end of input","editor.pegjs-error.expected-found":"Expected {{expected}} but {{found}} found.","editor.error-at-line-x":"at line {{line}}","calc.messages.error-query-missing":"no query found","calc.messages.error-query-missing-assignments-found":"only assignments found; query is missing Help - Assignments","calc.messages.gist-load-success":"gist loaded successfully","calc.menu.headline":"load a Dataset","calc.menu.datasets":"Datasets","calc.menu.load-gist-headline":"Load dataset stored in a gist","calc.menu.load-gist-button":"load","calc.menu.load-gist-insert-placeholder":"gist ID","calc.menu.create-own-dataset-headline":"Create your own Dataset","calc.menu.create-own-dataset-text":"You can create your own dataset and share it with others. Learn more about it in the Maintainer Tutorial","calc.menu.create-own-dataset-text-link":"Maintainer Tutorial","calc.menu.create-own-dataset-button-new":"create new Dataset","calc.menu.create-own-dataset-button-modify":"modify current Dataset","calc.navigation.take-a-tour":"Take a Tour","calc.navigation.feedback":"Feedback","calc.navigation.help":"Help","calc.navigation.calc":"Calculate","calc.navigation.language":"Language","calc.maintainer-groups.misc":"Miscellaneous","calc.maintainer-groups.temp":"Temporary","calc.maintainer-groups.uibk":"University of Innsbruck","calc.maintainer-groups.karlsruhe":"University of Karlsruhe","calc.maintainer-groups.saarland":"University of Saarland","calc.editors.button-history":"history","calc.editors.insert-relation-title":"Insert","calc.editors.insert-relation-tooltip":"Insert relation or column names","calc.editors.group.tab-name":"Group Editor","calc.editors.group.tab-name-short":"GE","calc.editors.group.toolbar.import-sql":"import SQL-dump","calc.editors.group.toolbar.import-sql-content":"import SQL-dump","calc.editors.group.toolbar.add-new-relation":"add new relation","calc.editors.group.toolbar.add-new-relation-content":"open relation editor","calc.editors.group.button-download":"download","calc.editors.group.button-exec":"preview","calc.editors.group.button-use":"use Group in editor","calc.editors.group.button-use_plural":"use first Group in editor","calc.editors.group.sql-import-group-name-placeholder":"Name of the group (imported from SQL)","calc.editors.group.new-group-example-group":"-- this is an example\\n\\ngroup: nameOfTheNewGroup \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\texample, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"Import SQL-Dump","calc.editors.group.modal-sqldump.button-close":"Close","calc.editors.group.modal-sqldump.button-cancel":"cancel","calc.editors.group.modal-sqldump.button-import-sql":"import SQL","calc.editors.group.modal-sqldump.description":"Put your SQL-Dump here to create a group.","calc.editors.ra.tab-name":"Relational Algebra","calc.editors.ra.tab-name-short":"RelAlg","calc.editors.ra.button-execute-query":"execute query","calc.editors.ra.button-execute-selection":"execute selection","calc.editors.ra.button-download":"download","calc.editors.ra.toolbar.projection":"projection","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
              pi a, b A","calc.editors.ra.toolbar.selection":"selection","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
              sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"rename relation / rename columns","calc.editors.ra.toolbar.rename-content":"
              σ x.a > 1 ( ρ x ( A ) )
              \\n
              σ A.y > 2 ( rho ya ( A ) )
              ","calc.editors.ra.toolbar.right-arrow":"Right arrow","calc.editors.ra.toolbar.rename-columns-operator":"rename columns operator","calc.editors.ra.toolbar.rename-columns-operator-content":"
              σ A.y > 2 ( ρ ya ( A ) )
              ","calc.editors.ra.toolbar.orderBy":"order by","calc.editors.ra.toolbar.orderBy-content":"
              τ a asc, [2] desc ( A )
              tau a asc, [2] desc ( A )
              ","calc.editors.ra.toolbar.groupBy":"group by","calc.editors.ra.toolbar.groupBy-content":"
              γ a, b; count(c)→c ( A )
              \\n
              gamma count(a)->x, sum(b)->y ( A )
              ","calc.editors.ra.toolbar.and":"and","calc.editors.ra.toolbar.and-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.xor":"xor","calc.editors.ra.toolbar.xor-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.or":"or","calc.editors.ra.toolbar.or-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.not":"not","calc.editors.ra.toolbar.not-content":"
              &sigma","calc.editors.ra.toolbar.equals":"equals","calc.editors.ra.toolbar.equals-content":"
              &sigma","calc.editors.ra.toolbar.not-equals":"not equals","calc.editors.ra.toolbar.not-equals-content":"
              &sigma","calc.editors.ra.toolbar.greater-or-equals":"greater or equals","calc.editors.ra.toolbar.greater-or-equals-content":"
              &sigma","calc.editors.ra.toolbar.lesser-or-equals":"lesser or equals","calc.editors.ra.toolbar.lesser-or-equals-content":"
              &sigma","calc.editors.ra.toolbar.intersect":"intersect","calc.editors.ra.toolbar.intersect-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.union":"union","calc.editors.ra.toolbar.union-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.division":"division","calc.editors.ra.toolbar.division-content":"
              ( A ) ÷ ( B )
              ","calc.editors.ra.toolbar.subtraction":"subtraction","calc.editors.ra.toolbar.subtraction-content":"
              ( A ) - ( B )
              \\n
              ( A ) \\n ( B )
              ","calc.editors.ra.toolbar.cross-join":"cross join","calc.editors.ra.toolbar.cross-join-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.natural-join":"natural join / θ-join","calc.editors.ra.toolbar.natural-join-content":"
              ( A ) ( B )
              \\n
              ( A ) ⋈ A.a ≥ B.a ( B )
              ","calc.editors.ra.toolbar.left-outer-join":"left outer join","calc.editors.ra.toolbar.left-outer-join-content":"
              ( A ) ⟕ ( B )
              \\n
              ( A ) ⟕ A.a < B.a ( B )
              \\n","calc.editors.ra.toolbar.right-outer-join":"right outer join","calc.editors.ra.toolbar.right-outer-join-content":"
              ( A ) ⟖ ( B )
              \\n
              ( A ) ⟖ A.a < B.a ( B )
              \\n","calc.editors.ra.toolbar.full-outer-join":"full outer join","calc.editors.ra.toolbar.full-outer-join-content":"
              ( A ) ⟗ ( B )
              \\n
              ( A ) ⟗ A.a != B.a ( B )
              ","calc.editors.ra.toolbar.left-semi-join":"left semi join","calc.editors.ra.toolbar.left-semi-join-content":"
              ( A ) ⋉ ( B )
              ","calc.editors.ra.toolbar.right-semi-join":"right semi join","calc.editors.ra.toolbar.right-semi-join-content":"
              ( A ) ⋊ ( B )
              ","calc.editors.ra.toolbar.anti-join":"anti join","calc.editors.ra.toolbar.anti-join-content":"
              ( A ) ▷ ( B )
              ","calc.editors.ra.toolbar.assignment":"assignment","calc.editors.ra.toolbar.assignment-content":"
              X = pi a ( A )\\n
              Y = pi b ( b )\\n
              ( X ) ( Y )
              ","calc.editors.ra.toolbar.single-line-comment":"single-line comment","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- useful comment","calc.editors.ra.toolbar.multi-line-comment":"multi-line comment","calc.editors.ra.toolbar.multi-line-comment-content":"/* this is a very,
              very long comment */

              π a, b A","calc.editors.ra.toolbar.inline-relation":"inline-relation","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
              a:string, b:number, X.c:date
              a, 1, 1970-01-01
              }
              )","calc.editors.ra.toolbar.inline-relation-editor":"inline-relation (editor)","calc.editors.ra.toolbar.inline-relation-editor-content":"create a new inline-relation using a built in editor","calc.editors.ra.toolbar.insert-date":"insert date","calc.editors.ra.toolbar.insert-date-content":"σ a < date(\'1970-01-01\') ( A )","calc.editors.ra.toolbar.autoreplace-operators.title":"operator replacement","calc.editors.ra.toolbar.autoreplace-operators.header":"automatically replace operators","calc.editors.ra.toolbar.autoreplace-operators.none":"no replacement","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"pi => π","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"π => pi","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"execute query","calc.editors.sql.button-execute-selection":"execute selection","calc.editors.sql.button-download":"download","calc.editors.sql.toolbar.select":"select clause","calc.editors.sql.toolbar.select-content":"

              SELECT * FROM A

              SELECT a, A.b, A.c FROM A
              ","calc.editors.sql.toolbar.from":"from clause","calc.editors.sql.toolbar.from-content":"
              SELECT *
              FROM A, B as b
              INNER JOIN C NATURAL
              ","calc.editors.sql.toolbar.where":"where clause","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
              where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"group by clause","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
              FROM A
              GROUP BY a","calc.editors.sql.toolbar.having":"having clause","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
              FROM A
              GROUP BY a
              having sum > 10","calc.editors.sql.toolbar.order-by":"order by clause","calc.editors.sql.toolbar.order-by-content":"

              SELECT * FROM A ORDER BY a asc, b desc

              SELECT * FROM A ORDER BY 1, 2, 3
              ","calc.editors.sql.toolbar.limit":"limit clause","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
              LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"insert date","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Result","calc.result.modal.close":"Close","calc.editors.ra.inline-editor.title":"Relation Editor","calc.editors.ra.inline-editor.button-download-csv":"Download CSV","calc.editors.ra.inline-editor.button-upload-csv":"Upload CSV","calc.editors.ra.inline-editor.button-cancel":"Cancel","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Name","calc.editors.ra.inline-editor.row-type":"Type","calc.editors.ra.inline-editor.input-relation-name":"Relation Name","calc.navigation.imprint":"Imprint"}')},"./src/locales/es.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"nombre de variable duplicado: {{name}}","db.messages.parser.error-invalid-date-format":"\\"{{str}}\\" no es una fecha válida; formato esperado: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":"header duplicado {{name}}","db.messages.parser.error-group-unknown-header":"header desconocido {{name}}","db.messages.parser.error-group-header-name-missing":"el nombre del grupo no se ha encontrado (group: ....)","db.messages.parser.error-group-header-name-empty":"el nombre del grupo debe ser rellenado","db.messages.parser.error-group-non-unique-attribute":"atributo no único {{name}} en columna {{index}}","db.messages.parser.error-group-non-unique-group-name":"El nombre del grupo no es único.","db.messages.parser.error-sql-string-use-single-quotes":"utiliza comillas simples para cadenas de caracteres","db.messages.parser.error-sql-invalid-relation-name":"\\"{{str}}\\" no debe ser utilizado como nombre de relacion","db.messages.parser.error-sql-invalid-column-name":"\\"{{str}}\\" no debe ser utilizado como nombre de columna","db.messages.parser.error-sql-group-by-missing":"group by no se encuentra","db.messages.parser.error-sql-having-without-group-by":"se ha encontrado pero no se encuentra \\"group by\\" ó agregación","db.messages.parser.error-sql-negative-limit":"el límite dado debe ser >= 0","db.messages.parser.error-sqldump-invalid-column-number":"número inválido de columnas en línea {{line}}","db.messages.parser.error-sqldump-invalid-type":"tipo inválido en línea {{line}}","db.messages.parser.error-sqldump-insert-wrong-number-columns":"número de valores != número de columnas","db.messages.parser.error-valueexpr-like-operand-no-string":"operando derecho de LIKE debe ser una cadena literal","db.messages.exec.error-column-not-unique":"no se pude agregar columna \\"{{column}}\\" por ambiguedad","db.messages.exec.error-column-not-found-name":"no se pude encontrar columna \\"{{column}}\\" en esquema {{schema}}","db.messages.exec.error-column-not-found-index":"índice de columna \\"{{column}}\\" está fuera de rango en equema {{schema}}; index starts at 1","db.messages.exec.error-column-ambiguous":"columna \\"{{column}}\\" es ambigua en esquema {{schema}}","db.messages.exec.error-column-index-out-of-range":"índice de columna \\"{{column}}\\" está fuera de rango en equema {{schema}}; índice comienza en 1","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"no se pudo establecer relación alias \\"{{alias}}\\" por ambiguedad","db.messages.exec.error-could-not-rename-ambiguity":"no se pudo establecer nuevo nombre \\"{{newName}}\\" para \\"{{oldName}}\\" por ambiguedad en el equema {{schema}}","db.messages.exec.error-schema-a-not-part-of-schema-b":"esquema {{schemaA}} no es parte de {{schemaB}}","db.messages.exec.error-schemas-not-unifiable":"esquemas no son unificables: los tipos son diferentes ó los tamaño son diferentes: {{schemaA}} y {{schemaB}}","db.messages.exec.error-column-not-in-both-schemas":"columna \\"{{column}}\\" no se puede encontrar en ambos esquemas del join","db.messages.exec.error-condition-must-be-boolean":"condición debe ser una expresión booleana","db.messages.exec.error-func-not-defined-for-column-type":"{{func}} no está definido para {{colType}}","db.messages.exec.error-join-would-produce-non-unique-columns":"Join würde nicht eindeutige Spaltennamen erzeugen","db.messages.exec.error-no-columns-match-alias-star":" las siguientes columnas aparecen en ambas relaciones: {{conflicts}}","db.messages.exec.error-datatype-not-specified-for-col":"tipo de dato para columna {{index}} (\\"{{column}}\\") no está especificado","db.messages.exec.error-invalid-projection-error":"proyección inválida \\"{{argument}}\\": {{error}}","db.messages.exec.error-function-expects-type":"función \\"{{func}}\\" espera argumentos de tipo \\"{{expected}}\\" pero \\"{{given}}\\" fue dado","db.messages.exec.error-could-not-compare-different-types":"no se pudo comparar valor si tipos son diferentes: {{typeA}} != {{typeB}}","db.messages.exec.error-function-expects-arguments-of-same-type":"{{func}} espera que todos los argumentos sean del mismo tipo","db.messages.exec.error-case-when-condition-must-be-boolean":"la condición de un CASE WHEN debe ser de tipo booleano","db.messages.exec.error-case-when-expects-results-of-same-type":"CASE WHEN condition THEN result END espera todos results ser del mismo tipo","db.messages.exec.error-invalid-date-format":"\\"{{str}}\\" no es una fecha válido; formato esperado: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"no se pudo encontrar relación \\"{{name}}\\"","db.messages.translate.warning-distinct-missing":"DISTINCT fehlt","db.messages.translate.warning-ignored-all-on-set-operators":"TODOS los operadores de cantidad fueron ignorados","db.messages.translate.error-variable-name-conflict":"conflicto de nombre: nombre de relación \\"{{name}}\\" ya existe","db.messages.translate.error-variable-cyclic-usage":"uso de variable cíclico \\"{{name}}\\" detectado","editor.codemirror-placeholder":"tu consulta va aquí ...\\n\\natajos de teclado:\\n\\tejecutar declaración: [CTRL]+[RETURN]\\n\\ttejecutar selección: [CTRL]+[SHIFT]+[RETURN]\\n\\tautocompletar: [CTRL]+[SPACE]\\n","editor.alert-message-headers.success":"Éxito","editor.alert-message-headers.info":"Info","editor.alert-message-headers.warning":"Advertencia","editor.alert-message-headers.error":"Error","editor.inline-relation-editor.button-ok":"ok","editor.inline-relation-editor.button-cancel":"cancelar","editor.inline-relation-editor.placeholder-column-name-and-types":"nombreColumna:tipo","editor.inline-relation-editor.enter-your-data":"por favor ingrese los datos","editor.inline-relation-editor.error-column-name-missing":"nombre de columna ausente en columna {{index}}","editor.inline-relation-editor.error-wrong-quoted-string":"cadena de caracteres no debe contener comillas simples y dobles","editor.error-no-query-found":"no se encontró la consulta","editor.pegjs-error.or":"ó","editor.pegjs-error.no-input-found":"no se encontró la entrada","editor.pegjs-error.end-of-input":"fin de entrada","editor.pegjs-error.expected-found":"Se esperaba {{expected}} pero se encontró {{found}} .","editor.error-at-line-x":"en la línea {{line}}","calc.messages.error-query-missing":"no se encontró la consulta","calc.messages.error-query-missing-assignments-found":"solo se encontraron asignaciones; a la consulta le falta Help - Assignments","calc.messages.gist-load-success":"gist fue cargado con éxito","calc.menu.headline":"cargar un Dataset","calc.menu.datasets":"Datasets","calc.menu.load-gist-headline":"cargar dataset guardado en un gist","calc.menu.load-gist-button":"cargar","calc.menu.load-gist-insert-placeholder":"ID de gist","calc.menu.create-own-dataset-headline":"Crear tu propio Dataset","calc.menu.create-own-dataset-text":"Puedes crear tu propio dataset y compartirlo con otras personas. \\nAprende más acerca de ésto en Maintainer Tutorial","calc.menu.create-own-dataset-text-link":"Tutorial de mantenimiento (en)","calc.menu.create-own-dataset-button-new":"crear nuevo Dataset","calc.menu.create-own-dataset-button-modify":"modificar Dataset actual","calc.navigation.take-a-tour":"Haz un recorrido","calc.navigation.feedback":"Feedback","calc.navigation.help":"Ayuda (en)","calc.navigation.calc":"Calculadora","calc.navigation.language":"Lenguaje","calc.maintainer-groups.misc":"Misceláneo","calc.maintainer-groups.temp":"Temporal","calc.maintainer-groups.uibk":"Universidad de Innsbruck","calc.maintainer-groups.karlsruhe":"Universidad de Karlsruhe","calc.maintainer-groups.saarland":"Universidad de Saarland","calc.editors.button-history":"historia","calc.editors.insert-relation-title":"Insertar","calc.editors.insert-relation-tooltip":"Insertar nombres de relaciones o columnas","calc.editors.group.tab-name":"Editor de Grupo","calc.editors.group.tab-name-short":"EG","calc.editors.group.toolbar.import-sql":"importar SQL-dump","calc.editors.group.toolbar.import-sql-content":"importar SQL-dump","calc.editors.group.toolbar.add-new-relation":"agregar nueva relación","calc.editors.group.toolbar.add-new-relation-content":"abrir editor de relaciones","calc.editors.group.button-download":"descargar","calc.editors.group.button-exec":"vista previa","calc.editors.group.button-use":"utilizar Grupo en editor","calc.editors.group.button-use_plural":"utilizar Grupos en editor","calc.editors.group.sql-import-group-name-placeholder":"Nombre del grupo (importado de SQL)","calc.editors.group.new-group-example-group":"-- éste es un ejemplo\\n\\ngroup: nombreDeNuevoGrupo \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\tejemplo, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"Importar SQL-Dump","calc.editors.group.modal-sqldump.button-close":"Cerrar","calc.editors.group.modal-sqldump.button-cancel":"cancelar","calc.editors.group.modal-sqldump.button-import-sql":"importar SQL","calc.editors.group.modal-sqldump.description":"Ponga su SQL-Dump aquí para crear un grupo.","calc.editors.ra.tab-name":"Álgebra Relacional","calc.editors.ra.tab-name-short":"ÁlgRel","calc.editors.ra.button-execute-query":"executar consulta","calc.editors.ra.button-execute-selection":"executar selección","calc.editors.ra.button-download":"descargar","calc.editors.ra.toolbar.projection":"proyección","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
              pi a, b A","calc.editors.ra.toolbar.selection":"selección","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
              sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"renombrar relación / renombrar columnas","calc.editors.ra.toolbar.rename-content":"
              σ x.a > 1 ( ρ x ( A ) )
              \\n
              σ A.y > 2 ( rho ya ( A ) )
              ","calc.editors.ra.toolbar.right-arrow":"flecha derecha","calc.editors.ra.toolbar.rename-columns-operator":"renombrar operador de columnas","calc.editors.ra.toolbar.rename-columns-operator-content":"
              σ A.y > 2 ( ρ ya ( A ) )
              ","calc.editors.ra.toolbar.orderBy":"ordenar por","calc.editors.ra.toolbar.orderBy-content":"
              τ a asc, [2] desc ( A )
              tau a asc, [2] desc ( A )
              ","calc.editors.ra.toolbar.groupBy":"agrupar por","calc.editors.ra.toolbar.groupBy-content":"
              γ a, b; count(c)→c ( A )
              \\n
              gamma count(a)->x, sum(b)->y ( A )
              ","calc.editors.ra.toolbar.and":"y","calc.editors.ra.toolbar.and-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.xor":"xor","calc.editors.ra.toolbar.xor-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.or":"ó","calc.editors.ra.toolbar.or-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.not":"no","calc.editors.ra.toolbar.not-content":"
              &sigma","calc.editors.ra.toolbar.equals":"igual","calc.editors.ra.toolbar.equals-content":"
              &sigma","calc.editors.ra.toolbar.not-equals":"no es igual","calc.editors.ra.toolbar.not-equals-content":"
              &sigma","calc.editors.ra.toolbar.greater-or-equals":"mayor ó igual","calc.editors.ra.toolbar.greater-or-equals-content":"
              &sigma","calc.editors.ra.toolbar.lesser-or-equals":"menor ó igual","calc.editors.ra.toolbar.lesser-or-equals-content":"
              &sigma","calc.editors.ra.toolbar.intersect":"intersecta","calc.editors.ra.toolbar.intersect-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.union":"unión","calc.editors.ra.toolbar.union-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.division":"división","calc.editors.ra.toolbar.division-content":"
              ( A ) ÷ ( B )
              ","calc.editors.ra.toolbar.subtraction":"resta","calc.editors.ra.toolbar.subtraction-content":"
              ( A ) - ( B )
              \\n
              ( A ) \\\\ ( B )
              \\n","calc.editors.ra.toolbar.cross-join":"cross join (cruzado)","calc.editors.ra.toolbar.cross-join-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.natural-join":"natural join / θ-join","calc.editors.ra.toolbar.natural-join-content":"
              ( A ) ( B )
              \\n
              ( A ) ⋈ A.a ≥ B.a ( B )
              ","calc.editors.ra.toolbar.left-outer-join":"left outer join","calc.editors.ra.toolbar.left-outer-join-content":"
              ( A ) ⟕ ( B )
              \\n
              ( A ) ⟕ A.a < B.a ( B )
              ","calc.editors.ra.toolbar.right-outer-join":"right outer join","calc.editors.ra.toolbar.right-outer-join-content":"
              ( A ) ⟖ ( B )
              \\n
              ( A ) ⟖ A.a < B.a ( B )
              ","calc.editors.ra.toolbar.full-outer-join":"full outer join","calc.editors.ra.toolbar.full-outer-join-content":"
              ( A ) ⟗ ( B )
              \\n
              ( A ) ⟗ A.a != B.a ( B )
              ","calc.editors.ra.toolbar.left-semi-join":"left semi join","calc.editors.ra.toolbar.left-semi-join-content":"
              ( A ) ⋉ ( B )
              ","calc.editors.ra.toolbar.right-semi-join":"right semi join","calc.editors.ra.toolbar.right-semi-join-content":"
              ( A ) ⋊ ( B )
              ","calc.editors.ra.toolbar.anti-join":"anti join","calc.editors.ra.toolbar.anti-join-content":"
              ( A ) ▷ ( B )
              ","calc.editors.ra.toolbar.assignment":"asignación","calc.editors.ra.toolbar.assignment-content":"
              X = pi a ( A )\\n
              Y = pi b ( b )\\n
              ( X ) ( Y )
              ","calc.editors.ra.toolbar.single-line-comment":"comentario de una línea","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- useful comment","calc.editors.ra.toolbar.multi-line-comment":"comentario de múltiples líneas","calc.editors.ra.toolbar.multi-line-comment-content":"/* this is a very,
              very long comment */

              π a, b A","calc.editors.ra.toolbar.inline-relation":"inline-relation","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
              a:string, b:number, X.c:date
              a, 1, 1970-01-01
              }
              )","calc.editors.ra.toolbar.inline-relation-editor":"inline-relation (editor)","calc.editors.ra.toolbar.inline-relation-editor-content":"crear nuevo inline-relation utilizando editor incorporado","calc.editors.ra.toolbar.insert-date":"insertar fecha","calc.editors.ra.toolbar.insert-date-content":"","calc.editors.ra.toolbar.autoreplace-operators.title":"","calc.editors.ra.toolbar.autoreplace-operators.header":"","calc.editors.ra.toolbar.autoreplace-operators.none":"","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"ejecutar consulta","calc.editors.sql.button-execute-selection":"ejecutar selección","calc.editors.sql.button-download":"descargar","calc.editors.sql.toolbar.select":"seleccionar cláusula","calc.editors.sql.toolbar.select-content":"

              SELECT * FROM A

              SELECT a, A.b, A.c FROM A
              ","calc.editors.sql.toolbar.from":"cláusula from (desde)","calc.editors.sql.toolbar.from-content":"
              SELECT *
              FROM A, B as b
              INNER JOIN C NATURAL
              ","calc.editors.sql.toolbar.where":"cláusula where (donde)","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
              where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"cláusula agrupar por","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
              FROM A
              GROUP BY a","calc.editors.sql.toolbar.having":"teniendo cláusula","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
              FROM A
              GROUP BY a
              having sum > 10","calc.editors.sql.toolbar.order-by":"cláusula ordenar por","calc.editors.sql.toolbar.order-by-content":"

              SELECT * FROM A ORDER BY a asc, b desc

              SELECT * FROM A ORDER BY 1, 2, 3
              ","calc.editors.sql.toolbar.limit":"cláusula límite","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
              LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"insertar fecha","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Resultado","calc.result.modal.close":"Cerrar","calc.editors.ra.inline-editor.title":"Editor de relaciones","calc.editors.ra.inline-editor.button-download-csv":"Descargar CSV","calc.editors.ra.inline-editor.button-upload-csv":"Subir CSV","calc.editors.ra.inline-editor.button-cancel":"Cancelar","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Nombre","calc.editors.ra.inline-editor.row-type":"Escriba","calc.editors.ra.inline-editor.input-relation-name":"Nombre de la relación","calc.navigation.imprint":"Imprimir"}')},"./src/locales/kr.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"변수 이름 중복: {{name}}","db.messages.parser.error-invalid-date-format":"\\"__str__\\" 유효하지 않은 날짜; 형식: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":" 헤더 중복: {{name}}","db.messages.parser.error-group-unknown-header":"알 수 없는 헤더: {{name}}","db.messages.parser.error-group-header-name-missing":"그룹 이름이 없음(group: ....)","db.messages.parser.error-group-header-name-empty":"그룹 이름은 비어있으면 안됨","db.messages.parser.error-group-non-unique-attribute":"__index__ 열에서 고유하지 않은 속성 {{name}}","db.messages.parser.error-group-non-unique-group-name":"duplicate group name: {{name}}","db.messages.parser.error-sql-string-use-single-quotes":"문자열에 작은 따음표 사용","db.messages.parser.error-sql-invalid-relation-name":"\\"__str__\\"은 관계 이름으로 사용 할 수 없음","db.messages.parser.error-sql-invalid-column-name":"\\"__str__\\"은 열 이름으로 사용할 수 없음","db.messages.parser.error-sql-group-by-missing":"group by 없음","db.messages.parser.error-sql-having-without-group-by":"\\"group by\\" 또는 집계 없음","db.messages.parser.error-sql-negative-limit":"0 이상이어야 함","db.messages.parser.error-sqldump-invalid-column-number":"__line__ 에서 유효하지 않은 열","db.messages.parser.error-sqldump-invalid-type":"__line__ 에서 유효하지 않은 타입","db.messages.parser.error-sqldump-insert-wrong-number-columns":"값의 숫자 != 열의 숫자","db.messages.parser.error-valueexpr-like-operand-no-string":"LIKE의 오른쪽 피연산자는 문자열 리터럴이어야 함","db.messages.exec.error-column-not-unique":"모호성 때문에 열 \\"__column__\\" 을 추가할 수 없음","db.messages.exec.error-column-not-found-name":"스키마 __schema__ 에서 열 \\"__column__\\" 을 찾을 수 없음","db.messages.exec.error-column-not-found-index":"열 인덱스 \\"__column__\\" 는 범위를 벗어남; 인덱스는 1에서 시작","db.messages.exec.error-column-ambiguous":"열 \\"__column__\\" 는 스키마 __schema__ 에서 모호함","db.messages.exec.error-column-index-out-of-range":"열 인덱스 \\"__column__\\" 는 범위를 벗어남; 인덱스는 1에서 시작","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"모호성 때문에 릴레이션 가명 \\"__alias__\\"을 사용할 수 없음 ","db.messages.exec.error-could-not-rename-ambiguity":"스키마 __schema__ 에서의 모호성 때문에 \\"__oldName__\\"을 위한 새로운 이름 \\"__newName__\\" 을 설정 할 수 없음","db.messages.exec.error-schema-a-not-part-of-schema-b":"스키마 __schemaA__ 는 __schemaB__ 의 부분이 아님","db.messages.exec.error-schemas-not-unifiable":"스키마들은 통합될 수 없음: 타입들은 다르거나 사이즈들이 다르다: __schemaA__ 와 __schemaB__","db.messages.exec.error-column-not-in-both-schemas":"열 \\"__column__\\"은 두 스키마의 조인에서 찾을 수 없음","db.messages.exec.error-condition-must-be-boolean":"조건은 불린 대수여야만 함","db.messages.exec.error-func-not-defined-for-column-type":"__func_ _은 타입 __colType__ 을 위해 정의될 수 없음","db.messages.exec.error-join-would-produce-non-unique-columns":"조인은 고유하지 않은 열 이름에서 결과를 냄 조인은 고유하지 않은 열 이름에서 결과를 냄 이 열들은 두 릴레이션 사이에서 나타남: __conflicts__","db.messages.exec.error-no-columns-match-alias-star":"\\"__alias__.*\\"와 일치하는 열이 없음","db.messages.exec.error-datatype-not-specified-for-col":"열 __index__의 데이터 타입 (\\"__column__\\")이 구체화되지 않음","db.messages.exec.error-invalid-projection-error":"유효하지 않은 프로젝션 \\"__argument__\\": __error__","db.messages.exec.error-function-expects-type":"함수 \\"__func__\\"는 인자 타입 \\"__expected__\\" 으로 기대하지만 \\"__given__\\" 이 주어짐","db.messages.exec.error-could-not-compare-different-types":"타입이 다르면 비교할 수 없음: __typeA__ != __typeB__","db.messages.exec.error-function-expects-arguments-of-same-type":"__func__ 는 모든 인자가 같은 타입으로 기대함","db.messages.exec.error-case-when-condition-must-be-boolean":"CASE WHEN 조건은 불린 타입이어야 함","db.messages.exec.error-case-when-expects-results-of-same-type":"CASE WHEN condition THEN result END는 모든 결과가 같은 타입으로 기대함","db.messages.exec.error-invalid-date-format":"\\"__str__\\" 는 유효하지 않은 날짜; 형식: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"릴레이션 \\"{{name}}\\"을 찾을 수 없음","db.messages.translate.warning-distinct-missing":"DISTINCT 없음","db.messages.translate.warning-ignored-all-on-set-operators":"집합 연산에서 무시된 ALL","db.messages.translate.error-variable-name-conflict":"이름 충돌: 릴레이션 이름 \\"{{name}}\\" 은 이미 존재함","db.messages.translate.error-variable-cyclic-usage":"변수 \\"{{name}}\\"의 순환 사용이 감지됨","editor.codemirror-placeholder":"쿼리는 이곳에 표시된다 ...\\n\\n키보드 단축키:\\n\\tstatement 실행: [CTRL]+[RETURN]\\n\\tselection 실행: [CTRL]+[SHIFT]+[RETURN]\\n\\t자동 완성: [CTRL]+[SPACE]","editor.alert-message-headers.success":"성공","editor.alert-message-headers.info":"정보","editor.alert-message-headers.warning":"경고","editor.alert-message-headers.error":" 에러 ","editor.inline-relation-editor.button-ok":"ok","editor.inline-relation-editor.button-cancel":"취소","editor.inline-relation-editor.placeholder-column-name-and-types":"열 이름:타입","editor.inline-relation-editor.enter-your-data":"데이터를 입력하라","editor.inline-relation-editor.error-column-name-missing":"열 이름이 열 __index__에 없다","editor.inline-relation-editor.error-wrong-quoted-string":"문자열은 작은따음표와 큰따음표를 포함할 수 없다.","editor.error-no-query-found":"쿼리를 찾을 수 없다","editor.pegjs-error.or":"또는","editor.pegjs-error.no-input-found":"입력을 찾을 수 없음","editor.pegjs-error.end-of-input":"입력의 끝","editor.pegjs-error.expected-found":"예상 된 __expected__이지만 __found__이 발견됨.","editor.error-at-line-x":"__line__ 줄에서","calc.messages.error-query-missing":"쿼리를 찾을 수 없음","calc.messages.error-query-missing-assignments-found":"쿼리를 찾을 수 없음 Help - Assignments","calc.messages.gist-load-success":"gist 불러오기 완료","calc.menu.headline":"데이터셋 불러오기","calc.menu.datasets":"데이터셋 불러오기","calc.menu.load-gist-headline":"gist에 저장된 데이터셋 불러오기","calc.menu.load-gist-button":"불러오기","calc.menu.load-gist-insert-placeholder":"gist 아이디","calc.menu.create-own-dataset-headline":"데이터셋 생성하기","calc.menu.create-own-dataset-text":"You can create your own dataset and share it with others. Learn more about it in the Maintainer Tutorial","calc.menu.create-own-dataset-text-link":"Maintainer Tutorial","calc.menu.create-own-dataset-button-new":"새로운 데이터셋 생성","calc.menu.create-own-dataset-button-modify":"현재 데이터셋 수정","calc.navigation.take-a-tour":"둘러보기","calc.navigation.feedback":"피드백","calc.navigation.help":"도움말","calc.navigation.calc":"Calculate","calc.navigation.language":"언어","calc.maintainer-groups.misc":"다른 종류","calc.maintainer-groups.temp":"임시","calc.maintainer-groups.uibk":"Innsbruck 대학교","calc.maintainer-groups.karlsruhe":"Karlsruhe 대학교","calc.maintainer-groups.saarland":"Saarland 대학교","calc.editors.button-history":"기록","calc.editors.insert-relation-title":"Insert","calc.editors.insert-relation-tooltip":"Insert relation or column names","calc.editors.group.tab-name":"그룹 에디터","calc.editors.group.tab-name-short":"그룹 에디터","calc.editors.group.toolbar.import-sql":"SQL-덤프 가져오기","calc.editors.group.toolbar.import-sql-content":"SQL-컨텐트 가져오기","calc.editors.group.toolbar.add-new-relation":"새로운 릴레이션 추가","calc.editors.group.toolbar.add-new-relation-content":"릴레이션 에디터 열기","calc.editors.group.button-download":"다운로드","calc.editors.group.button-exec":"preview","calc.editors.group.button-use":"에디터에서 그룹 사용하기","calc.editors.group.button-use_plural":"에디터에서 여러 그룹 사용하기","calc.editors.group.sql-import-group-name-placeholder":"그룹 이름(SQL로부터 불러옴)","calc.editors.group.new-group-example-group":"-- 예시입니다\\n\\n그룹: nameOfTheNewGroup \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\texample, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"SQL-Dump 가져오기","calc.editors.group.modal-sqldump.button-close":"닫기","calc.editors.group.modal-sqldump.button-cancel":"취소","calc.editors.group.modal-sqldump.button-import-sql":"SQL 가져오기","calc.editors.group.modal-sqldump.description":"그룹을 생성하려면 SQL-Dump 이곳에 가져와라","calc.editors.ra.tab-name":"관계 대수","calc.editors.ra.tab-name-short":"관계 대수","calc.editors.ra.button-execute-query":"쿼리 실행","calc.editors.ra.button-execute-selection":"셀렉션 실행","calc.editors.ra.button-download":"다운로드","calc.editors.ra.toolbar.projection":"프로젝션","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
              pi a, b A","calc.editors.ra.toolbar.selection":"셀렉션","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
              sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"릴레이션 이름 변경 / 열 이름 변경","calc.editors.ra.toolbar.rename-content":"
              σ x.a > 1 ( ρ x ( A ) )
              \\n
              σ A.y > 2 ( rho ya ( A ) )
              ","calc.editors.ra.toolbar.right-arrow":"오른쪽 화살표","calc.editors.ra.toolbar.rename-columns-operator":"열 연산자 변경","calc.editors.ra.toolbar.rename-columns-operator-content":"
              σ A.y > 2 ( ρ ya ( A ) )
              ","calc.editors.ra.toolbar.orderBy":"정렬","calc.editors.ra.toolbar.orderBy-content":"
              τ a asc, [2] desc ( A )
              tau a asc, [2] desc ( A )
              ","calc.editors.ra.toolbar.groupBy":"그룹화","calc.editors.ra.toolbar.groupBy-content":"
              γ a, b; count(c)→c ( A )
              \\n
              gamma count(a)->x, sum(b)->y ( A )
              ","calc.editors.ra.toolbar.and":"논리곱","calc.editors.ra.toolbar.and-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.xor":"배타적 논리","calc.editors.ra.toolbar.xor-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.or":"논리합","calc.editors.ra.toolbar.or-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.not":"논리적 부정","calc.editors.ra.toolbar.not-content":" ¬(a < b) ( A )
              ","calc.editors.ra.toolbar.equals":"등호","calc.editors.ra.toolbar.equals-content":" a = b ( A )
              ","calc.editors.ra.toolbar.not-equals":"부등호","calc.editors.ra.toolbar.not-equals-content":" a \'text\' ( A )
              ","calc.editors.ra.toolbar.greater-or-equals":"크거나 같다","calc.editors.ra.toolbar.greater-or-equals-content":" a 42 ( A )
              ","calc.editors.ra.toolbar.lesser-or-equals":"작거나 같다","calc.editors.ra.toolbar.lesser-or-equals-content":" a 42 ( A )
              ","calc.editors.ra.toolbar.intersect":"교집합","calc.editors.ra.toolbar.intersect-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.union":"합집합","calc.editors.ra.toolbar.union-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.division":"디비전","calc.editors.ra.toolbar.division-content":"
              ( A ) ÷ ( B )
              ","calc.editors.ra.toolbar.subtraction":"차집합","calc.editors.ra.toolbar.subtraction-content":"
              ( A ) - ( B )
              \\n
              ( A ) \\\\ ( B )
              \\n","calc.editors.ra.toolbar.cross-join":"카디션 프로덕트","calc.editors.ra.toolbar.cross-join-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.natural-join":"자연 조인 / θ-조인","calc.editors.ra.toolbar.natural-join-content":"
              ( A ) ( B )
              \\n
              ( A ) ⋈ A.a ≥ B.a ( B )
              ","calc.editors.ra.toolbar.left-outer-join":"왼쪽 외부 조인","calc.editors.ra.toolbar.left-outer-join-content":"
              ( A ) ⟕ ( B )
              \\n
              ( A ) ⟕ A.a < B.a ( B )
              ","calc.editors.ra.toolbar.right-outer-join":"오른쪽 외부 조인","calc.editors.ra.toolbar.right-outer-join-content":"
              ( A ) ⟖ ( B )
              \\n
              ( A ) ⟖ A.a < B.a ( B )
              ","calc.editors.ra.toolbar.full-outer-join":"완전 외부 조인","calc.editors.ra.toolbar.full-outer-join-content":"
              ( A ) ⟗ ( B )
              \\n
              ( A ) ⟗ A.a != B.a ( B )
              ","calc.editors.ra.toolbar.left-semi-join":"왼쪽 세미 조인","calc.editors.ra.toolbar.left-semi-join-content":"
              ( A ) ⋉ ( B )
              ","calc.editors.ra.toolbar.right-semi-join":"오른쪽 세미 조인","calc.editors.ra.toolbar.right-semi-join-content":"
              ( A ) ⋊ ( B )
              ","calc.editors.ra.toolbar.anti-join":"안티 조인","calc.editors.ra.toolbar.anti-join-content":"
              ( A ) ▷ ( B )
              ","calc.editors.ra.toolbar.assignment":"할당","calc.editors.ra.toolbar.assignment-content":"
              X = pi a ( A )\\n
              Y = pi b ( b )\\n
              ( X ) ( Y )
              ","calc.editors.ra.toolbar.single-line-comment":"한 줄 주석","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- useful comment","calc.editors.ra.toolbar.multi-line-comment":"여러 줄 주석","calc.editors.ra.toolbar.multi-line-comment-content":"/* this is a very,
              very long comment */

              π a, b A","calc.editors.ra.toolbar.inline-relation":"인라인-릴레이션","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
              a:string, b:number, X.c:date
              a, 1, 1970-01-01
              }
              )","calc.editors.ra.toolbar.inline-relation-editor":"인라인-릴레이션 (에디터)","calc.editors.ra.toolbar.inline-relation-editor-content":"create a new inline-relation using a built in editor","calc.editors.ra.toolbar.insert-date":"날짜 삽입","calc.editors.ra.toolbar.insert-date-content":"σ a < date(\'1970-01-01\') ( A )","calc.editors.ra.toolbar.autoreplace-operators.title":"operator replacement","calc.editors.ra.toolbar.autoreplace-operators.header":"automatically replace operators","calc.editors.ra.toolbar.autoreplace-operators.none":"no replacement","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"pi => π","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"π => pi","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"쿼리 실행","calc.editors.sql.button-execute-selection":"셀렉션 실행","calc.editors.sql.button-download":"다운로드","calc.editors.sql.toolbar.select":"select 문","calc.editors.sql.toolbar.select-content":"

              SELECT * FROM A

              SELECT a, A.b, A.c FROM A
              ","calc.editors.sql.toolbar.from":"from 문","calc.editors.sql.toolbar.from-content":"
              SELECT *
              FROM A, B as b
              INNER JOIN C NATURAL
              ","calc.editors.sql.toolbar.where":"where 문","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
              where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"group by 문","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
              FROM A
              GROUP BY a","calc.editors.sql.toolbar.having":"having 문","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
              FROM A
              GROUP BY a
              having sum > 10","calc.editors.sql.toolbar.order-by":"order by 문","calc.editors.sql.toolbar.order-by-content":"

              SELECT * FROM A ORDER BY a asc, b desc

              SELECT * FROM A ORDER BY 1, 2, 3
              ","calc.editors.sql.toolbar.limit":"limit 문","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
              LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"insert date","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Result","calc.result.modal.close":"Close","calc.editors.ra.inline-editor.title":"Relation Editor","calc.editors.ra.inline-editor.button-download-csv":"Download CSV","calc.editors.ra.inline-editor.button-upload-csv":"upload CSV","calc.editors.ra.inline-editor.button-cancel":"Cancel","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Name","calc.editors.ra.inline-editor.row-type":"Type","calc.editors.ra.inline-editor.input-relation-name":"Relation Name","calc.navigation.imprint":"Imprint"}')},"./src/locales/pt.json":function(e){e.exports=JSON.parse('{"db.messages.parser.error-duplicate-variable":"nome de variável duplicado: {{name}}","db.messages.parser.error-invalid-date-format":"\\"{{str}}\\" não é uma data válida; formato esperado: YYYY-MM-DD","db.messages.parser.error-group-duplicate-header":"cabeçalho duplicado {{name}}","db.messages.parser.error-group-unknown-header":"cabeçalho desconhecido {{name}}","db.messages.parser.error-group-header-name-missing":"o nome do grupo está faltando (group: ....)","db.messages.parser.error-group-header-name-empty":"o nome do grupo não pode ser vazio","db.messages.parser.error-group-non-unique-attribute":"atributo não único {{name}} na coluna {{index}}","db.messages.parser.error-group-non-unique-group-name":"nome de grupo duplicado: {{name}}","db.messages.parser.error-sql-string-use-single-quotes":"use aspas simples para strings (caracteres/texto)","db.messages.parser.error-sql-invalid-relation-name":"\\"{{str}}\\" não pode ser usado como nome de relação","db.messages.parser.error-sql-invalid-column-name":"\\"{{str}}\\" não pode ser usado como nome de coluna","db.messages.parser.error-sql-group-by-missing":"group by está faltando","db.messages.parser.error-sql-having-without-group-by":"“having” encontrado, mas sem \\"group by\\" ou agregação","db.messages.parser.error-sql-negative-limit":"o limite dado precisa ser >= 0","db.messages.parser.error-sqldump-invalid-column-number":"número inválido de colunas na linha {{line}}","db.messages.parser.error-sqldump-invalid-type":"tipo inválido na linha {{line}}","db.messages.parser.error-sqldump-insert-wrong-number-columns":"número de valores != número de colunas","db.messages.parser.error-valueexpr-like-operand-no-string":"operando direito de LIKE deve ser uma string literal","db.messages.exec.error-column-not-unique":"não foi possível adicionar a coluna \\"{{column}}\\" devido a ambiguidade","db.messages.exec.error-column-not-found-name":"não foi possível encontrar a coluna \\"{{column}}\\" no esquema {{schema}}","db.messages.exec.error-column-not-found-index":"índice da coluna \\"{{column}}\\" está fora do intervalo no esquema {{schema}}; índice começa em 1","db.messages.exec.error-column-ambiguous":"coluna\\"{{column}}\\" é ambígua em {{schema}}","db.messages.exec.error-column-index-out-of-range":"índice da coluna \\"{{column}}\\" está fora do intervalo no esquema {{schema}}; índice começa em 1","db.messages.exec.error-could-not-change-rel-alias-ambiguity":"não foi possível definir o ”alias” da relação “{{alias}}” por causa da ambiguidade","db.messages.exec.error-could-not-rename-ambiguity":"não foi possível definir o novo nome \\"{{newName}}\\" para \\"{{oldName}}\\" devido a ambiguidade em {{schema}}","db.messages.exec.error-schema-a-not-part-of-schema-b":"esquema {{schemaA}} não é parte de {{schemaB}}","db.messages.exec.error-schemas-not-unifiable":"os esquemas não são unificáveis: os tipos ou o tamanho diferem: {{schemaA}} e {{schemaB}}","db.messages.exec.error-column-not-in-both-schemas":"coluna \\"{{column}}\\" não pode ser encontrada em ambos os esquemas de junção","db.messages.exec.error-condition-must-be-boolean":"condição deve ser uma expressão booleana","db.messages.exec.error-func-not-defined-for-column-type":"{{func}} não definida para o tipo {{colType}}","db.messages.exec.error-join-would-produce-non-unique-columns":"a junção resultaria em nomes de coluna não únicos {{conflicts}}","db.messages.exec.error-no-columns-match-alias-star":"nenhuma coluna corresponde a \\"{{alias}}.*\\"","db.messages.exec.error-datatype-not-specified-for-col":"tipo de dados para a coluna {{index}} (\\"{{column}}\\") não foi especificado","db.messages.exec.error-invalid-projection-error":"projeção inválida \\"{{argument}}\\": {{erro}}","db.messages.exec.error-function-expects-type":"a função \\"{{func}}\\" espera argumentos do tipo \\"{{expected}}\\" mas \\"{{given}}\\" foi dado","db.messages.exec.error-could-not-compare-different-types":"não foi possível comparar o valor se os tipos forem diferentes: {{typeA}}! = {{typeB}}","db.messages.exec.error-function-expects-arguments-of-same-type":"{{func}} espera que todos os argumentos sejam do mesmo tipo","db.messages.exec.error-case-when-condition-must-be-boolean":"a condição de um CASE WHEN deve ser do tipo booleano","db.messages.exec.error-case-when-expects-results-of-same-type":" CASE WHEN condição THEN resultado END espera que todos os resultados sejam do mesmo tipo","db.messages.exec.error-invalid-date-format":"\\"{{str}}\\" não é uma data válida; formato esperado: YYYY-MM-DD","db.messages.translate.error-relation-not-found":"não foi possível encontrar relação \\"{{name}}\\"","db.messages.translate.warning-distinct-missing":"DISTINCT está faltando","db.messages.translate.warning-ignored-all-on-set-operators":"ignorou ALL na operação definida","db.messages.translate.error-variable-name-conflict":"conflito de nomes: o nome da relação \\"{{name}}\\" já existe","db.messages.translate.error-variable-cyclic-usage":"uso cíclico da variável \\"{{name}}\\" detectado","editor.codemirror-placeholder":"Digite sua consulta aqui\\n\\nAtalhos do teclado:\\n\\texecutar declaraçãot: [CTRL]+[RETURN]\\n\\texecutar seleção: [CTRL]+[SHIFT]+[RETURN]\\n\\tautocompletar: [CTRL]+[SPACE]\\n","editor.alert-message-headers.success":"Sucesso","editor.alert-message-headers.info":"Info","editor.alert-message-headers.warning":"Perigo","editor.alert-message-headers.error":"Erro","editor.inline-relation-editor.button-ok":"Ok","editor.inline-relation-editor.button-cancel":"Cancelar","editor.inline-relation-editor.placeholder-column-name-and-types":"columnName:type","editor.inline-relation-editor.enter-your-data":"por favor, insira seus dados","editor.inline-relation-editor.error-column-name-missing":"nome da coluna ausente na coluna {{index}}","editor.inline-relation-editor.error-wrong-quoted-string":"string não deve conter aspas simples e duplas","editor.error-no-query-found":"nenhuma consulta encontrada","editor.pegjs-error.or":"ou","editor.pegjs-error.no-input-found":"nenhuma entrada encontrada","editor.pegjs-error.end-of-input":"fim da entrada","editor.pegjs-error.expected-found":"esperado {{expected}}, mas {{found}} encontrado.","editor.error-at-line-x":"na linha {{line}}","calc.messages.error-query-missing":"nenhuma consulta encontrada","calc.messages.error-query-missing-assignments-found":"apenas atribuições encontradas; falta a consulta Ajuda - Tarefas ","calc.messages.gist-load-success":"gist carregado com sucesso","calc.menu.headline":"Carregue um Dataset","calc.menu.datasets":"Datasets","calc.menu.load-gist-headline":"Carregar Dataset armazenado em um gist","calc.menu.load-gist-button":"Carregar","calc.menu.load-gist-insert-placeholder":"gist ID","calc.menu.create-own-dataset-headline":"Crie seu próprio Dataset","calc.menu.create-own-dataset-text":"Você pode criar seu próprio conjunto de dados e compartilhá-lo com outras pessoas. Saiba mais sobre isso no ","calc.menu.create-own-dataset-text-link":"Tutorial de manutenção","calc.menu.create-own-dataset-button-new":"Criar novo Dataset","calc.menu.create-own-dataset-button-modify":"Modificar Dataset","calc.navigation.take-a-tour":"Faça um Tour","calc.navigation.feedback":"Feedback","calc.navigation.help":"Ajuda","calc.navigation.calc":"Calcular","calc.navigation.language":"Linguagem","calc.maintainer-groups.misc":"Diversos","calc.maintainer-groups.temp":"Temporário","calc.maintainer-groups.uibk":"University of Innsbruck","calc.maintainer-groups.karlsruhe":"Universidade de Karlsruhe","calc.maintainer-groups.saarland":"University of Saarland","calc.editors.button-history":"Histórico","calc.editors.insert-relation-title":"Inserir","calc.editors.insert-relation-tooltip":"Inserir relação ou nomes de coluna","calc.editors.group.tab-name":"Editor de Grupo","calc.editors.group.tab-name-short":"EG","calc.editors.group.toolbar.import-sql":"Importar SQL-dump","calc.editors.group.toolbar.import-sql-content":"Importar SQL-dump","calc.editors.group.toolbar.add-new-relation":"+ nova relação","calc.editors.group.toolbar.add-new-relation-content":"Abrir editor de relações","calc.editors.group.button-download":"Download","calc.editors.group.button-exec":"Visualizar","calc.editors.group.button-use":"Use Grupo no Editor","calc.editors.group.button-use_plural":"Use o primeiro Grupo no Editor","calc.editors.group.sql-import-group-name-placeholder":"Nome do grupo (importado de SQL)","calc.editors.group.new-group-example-group":"– este é um exemplo\\n\\ngroup: nomeDoNovoGrupo \\n\\n\\nA = {\\n\\ta:string, b:number\\n\\texemplo, 42\\n}","calc.editors.group.modal-sqldump.modal-title":"Importar SQL-dump","calc.editors.group.modal-sqldump.button-close":"Fechar","calc.editors.group.modal-sqldump.button-cancel":"Cancelar","calc.editors.group.modal-sqldump.button-import-sql":"Importar SQL","calc.editors.group.modal-sqldump.description":"Coloque seu SQL-Dump aqui para criar um grupo.","calc.editors.ra.tab-name":"Álgebra Relacional","calc.editors.ra.tab-name-short":"AlgRel","calc.editors.ra.button-execute-query":"Executar consulta","calc.editors.ra.button-execute-selection":"Executar seleção","calc.editors.ra.button-download":"Download","calc.editors.ra.toolbar.projection":"Projeção","calc.editors.ra.toolbar.projection-content":"π a, b ( A )\\n
              pi a, b A","calc.editors.ra.toolbar.selection":"Seleção","calc.editors.ra.toolbar.selection-content":"σ a < b ∧ b c ( A )\\n
              sigma a < b and b != c A","calc.editors.ra.toolbar.rename":"renomear relação / renomear colunas","calc.editors.ra.toolbar.rename-content":"
              σ x.a > 1 ( ρ x ( A ) )
              \\n
              σ A.y > 2 ( rho ya ( A ) )
              ","calc.editors.ra.toolbar.right-arrow":"flecha derecha","calc.editors.ra.toolbar.rename-columns-operator":"operador renomear colunas","calc.editors.ra.toolbar.rename-columns-operator-content":"
              σ A.y > 2 ( ρ ya ( A ) )
              ","calc.editors.ra.toolbar.orderBy":"ordenar (order by)","calc.editors.ra.toolbar.orderBy-content":"
              τ a asc, [2] desc ( A )
              tau a asc, [2] desc ( A )
              ","calc.editors.ra.toolbar.groupBy":"agrupar (group by)","calc.editors.ra.toolbar.groupBy-content":"
              γ a, b; count(c)→c ( A )
              \\n
              gamma count(a)->x, sum(b)->y ( A )
              ","calc.editors.ra.toolbar.and":"e","calc.editors.ra.toolbar.and-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.xor":"ou exclusivo (xor)","calc.editors.ra.toolbar.xor-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.or":"ou","calc.editors.ra.toolbar.or-content":"
              σ a < b b c ( A )
              ","calc.editors.ra.toolbar.not":"não","calc.editors.ra.toolbar.not-content":"
              &sigma","calc.editors.ra.toolbar.equals":"igual","calc.editors.ra.toolbar.equals-content":"
              &sigma","calc.editors.ra.toolbar.not-equals":"não igual","calc.editors.ra.toolbar.not-equals-content":"
              &sigma","calc.editors.ra.toolbar.greater-or-equals":"maior ou igual","calc.editors.ra.toolbar.greater-or-equals-content":"
              &sigma","calc.editors.ra.toolbar.lesser-or-equals":"menor ou igual","calc.editors.ra.toolbar.lesser-or-equals-content":"
              &sigma","calc.editors.ra.toolbar.intersect":"intersecção","calc.editors.ra.toolbar.intersect-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.union":"união","calc.editors.ra.toolbar.union-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.division":"divisão","calc.editors.ra.toolbar.division-content":"
              ( A ) ÷ ( B )
              ","calc.editors.ra.toolbar.subtraction":"subtração","calc.editors.ra.toolbar.subtraction-content":"
              ( A ) - ( B )
              \\n
              ( A ) \\n ( B )
              ","calc.editors.ra.toolbar.cross-join":"junção cruzada (cross join)","calc.editors.ra.toolbar.cross-join-content":"
              ( A ) ( B )
              ","calc.editors.ra.toolbar.natural-join":"natural join / θ-join","calc.editors.ra.toolbar.natural-join-content":"
              ( A ) ( B )
              \\n
              ( A ) ⋈ A.a ≥ B.a ( B )
              ","calc.editors.ra.toolbar.left-outer-join":"left outer join","calc.editors.ra.toolbar.left-outer-join-content":"
              ( A ) ⟕ ( B )
              \\n
              ( A ) ⟕ A.a < B.a ( B )
              \\n","calc.editors.ra.toolbar.right-outer-join":"right outer join","calc.editors.ra.toolbar.right-outer-join-content":"
              ( A ) ⟖ ( B )
              \\n
              ( A ) ⟖ A.a < B.a ( B )
              \\n","calc.editors.ra.toolbar.full-outer-join":"full outer join","calc.editors.ra.toolbar.full-outer-join-content":"
              ( A ) ⟗ ( B )
              \\n
              ( A ) ⟗ A.a != B.a ( B )
              ","calc.editors.ra.toolbar.left-semi-join":"left semi join","calc.editors.ra.toolbar.left-semi-join-content":"
              ( A ) ⋉ ( B )
              ","calc.editors.ra.toolbar.right-semi-join":"right semi join","calc.editors.ra.toolbar.right-semi-join-content":"
              ( A ) ⋊ ( B )
              ","calc.editors.ra.toolbar.anti-join":"anti join","calc.editors.ra.toolbar.anti-join-content":"
              ( A ) ▷ ( B )
              ","calc.editors.ra.toolbar.assignment":"atribuição","calc.editors.ra.toolbar.assignment-content":"
              X = pi a ( A )\\n
              Y = pi b ( b )\\n
              ( X ) ( Y )
              ","calc.editors.ra.toolbar.single-line-comment":"comentário em linha","calc.editors.ra.toolbar.single-line-comment-content":"π a, b A -- comentário útil","calc.editors.ra.toolbar.multi-line-comment":"comentário multilinha","calc.editors.ra.toolbar.multi-line-comment-content":"/* este é um comentário longo,
              muito longo*/

              π a, b A","calc.editors.ra.toolbar.inline-relation":"relação aninhada","calc.editors.ra.toolbar.inline-relation-content":"σ a = \'test\' ({
              a:string, b:number, X.c:date
              a, 1, 1970-01-01
              }
              )","calc.editors.ra.toolbar.inline-relation-editor":"relação aninhada (editor)","calc.editors.ra.toolbar.inline-relation-editor-content":"criar uma nova relação aninhada usando o editor","calc.editors.ra.toolbar.insert-date":"inserir data","calc.editors.ra.toolbar.insert-date-content":"σ a < date(\'1970-01-01\') ( A )","calc.editors.ra.toolbar.autoreplace-operators.title":"substituição de operador","calc.editors.ra.toolbar.autoreplace-operators.header":"substituir operadores automaticamente","calc.editors.ra.toolbar.autoreplace-operators.none":"sem substituição","calc.editors.ra.toolbar.autoreplace-operators.plain2math":"pi => π","calc.editors.ra.toolbar.autoreplace-operators.math2plain":"π => pi","calc.editors.sql.tab-name":"SQL","calc.editors.sql.tab-name-short":"SQL","calc.editors.sql.button-execute-query":"Executar consulta","calc.editors.sql.button-execute-selection":"Executar seleção","calc.editors.sql.button-download":"Download","calc.editors.sql.toolbar.select":"cláusula select","calc.editors.sql.toolbar.select-content":"

              SELECT * FROM A

              SELECT a, A.b, A.c FROM A
              ","calc.editors.sql.toolbar.from":"cláusula from","calc.editors.sql.toolbar.from-content":"
              SELECT *
              FROM A, B as b
              INNER JOIN C NATURAL
              ","calc.editors.sql.toolbar.where":"cláusula where","calc.editors.sql.toolbar.where-content":"SELECT * FROM A, B
              where A.a = B.a or false","calc.editors.sql.toolbar.group-by":"cláusula group by","calc.editors.sql.toolbar.group-by-content":"SELECT a, COUNT(b) as num
              FROM A
              GROUP BY a","calc.editors.sql.toolbar.having":"cáusula having clause","calc.editors.sql.toolbar.having-content":"SELECT a, SUM(b) as sum
              FROM A
              GROUP BY a
              having sum > 10","calc.editors.sql.toolbar.order-by":"cláusula order by","calc.editors.sql.toolbar.order-by-content":"

              SELECT * FROM A ORDER BY a asc, b desc

              SELECT * FROM A ORDER BY 1, 2, 3
              ","calc.editors.sql.toolbar.limit":"cláusula limit","calc.editors.sql.toolbar.limit-content":"SELECT * FROM A
              LIMIT 10 OFFSET 0","calc.editors.sql.toolbar.insert-date":"inserir data","calc.editors.sql.toolbar.insert-date-content":"select * from A\\nwhere a < date(\\"1970-01-01\\")","calc.result.modal.title":"Resultado","calc.result.modal.close":"Fechar","calc.editors.ra.inline-editor.title":"Editor de Relação","calc.editors.ra.inline-editor.button-download-csv":"Download CSV","calc.editors.ra.inline-editor.button-upload-csv":"Upload CSV","calc.editors.ra.inline-editor.button-cancel":"Cancelar","calc.editors.ra.inline-editor.button-ok":"Ok","calc.editors.ra.inline-editor.row-name":"Nome","calc.editors.ra.inline-editor.row-type":"Tipo","calc.editors.ra.inline-editor.input-relation-name":"Nome da Relação","calc.navigation.imprint":"Impressão"}')},0:function(e,t,n){e.exports=n("./src/calc2/calculator.entry.tsx")}}); \ No newline at end of file diff --git a/js/calc.e900012b8e502c240f6c.bundle.js.gz b/js/calc.5f5c7fd49bb7b3aea41e.bundle.js.gz similarity index 84% rename from js/calc.e900012b8e502c240f6c.bundle.js.gz rename to js/calc.5f5c7fd49bb7b3aea41e.bundle.js.gz index 6921404797981fc2fb1373eeddcf70963993a47a..dd13f5c29d7c2246c05514a5f90b92f1f7cc66f9 100644 GIT binary patch delta 115618 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

              KhGzek)vrH_NjM3vs!+UXdjj|oAl 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

              >Kch==5FOUVG;Ay%b2RAR@kyc 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 PjGz90I%zC=Z*VRE>;vCF delta 115580 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 diff --git a/js/tests.e900012b8e502c240f6c.bundle.js b/js/tests.5f5c7fd49bb7b3aea41e.bundle.js similarity index 84% rename from js/tests.e900012b8e502c240f6c.bundle.js rename to js/tests.5f5c7fd49bb7b3aea41e.bundle.js index bf8f4bacb..a705668d2 100644 --- a/js/tests.e900012b8e502c240f6c.bundle.js +++ b/js/tests.5f5c7fd49bb7b3aea41e.bundle.js @@ -1,4 +1,4 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/relax/",n(n.s=1)}({"./node_modules/i18next-browser-languagedetector/dist/commonjs/browserLookups/cookie.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e,t,n,r){var o=void 0;if(n){var s=new Date;s.setTime(s.getTime()+60*n*1e3),o="; expires="+s.toGMTString()}else o="";r=r?"domain="+r+";":"",document.cookie=e+"="+t+o+";"+r+"path=/"},o=function(e){for(var t=e+"=",n=document.cookie.split(";"),r=0;r0?t:void 0}}},"./node_modules/i18next-browser-languagedetector/dist/commonjs/browserLookups/path.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"path",lookup:function(e){var t=void 0;if("undefined"!=typeof window){var n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(n instanceof Array)if("number"==typeof e.lookupFromPathIndex){if("string"!=typeof n[e.lookupFromPathIndex])return;t=n[e.lookupFromPathIndex].replace("/","")}else t=n[0].replace("/","")}return t}}},"./node_modules/i18next-browser-languagedetector/dist/commonjs/browserLookups/querystring.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"querystring",lookup:function(e){var t=void 0;if("undefined"!=typeof window)for(var n=window.location.search.substring(1).split("&"),r=0;r0)n[r].substring(0,o)===e.lookupQuerystring&&(t=n[r].substring(o+1))}return t}}},"./node_modules/i18next-browser-languagedetector/dist/commonjs/browserLookups/subdomain.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"subdomain",lookup:function(e){var t=void 0;if("undefined"!=typeof window){var n=window.location.href.match(/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/gi);n instanceof Array&&(t="number"==typeof e.lookupFromSubdomainIndex?n[e.lookupFromSubdomainIndex].replace("http://","").replace("https://","").replace(".",""):n[0].replace("http://","").replace("https://","").replace(".",""))}return t}}},"./node_modules/i18next-browser-languagedetector/dist/commonjs/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};h(this,e),this.type="languageDetector",this.detectors={},this.init(t,n)}return r(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.services=e,this.options=o.defaults(t,this.options||{},{order:["querystring","cookie","localStorage","navigator","htmlTag"],lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"]}),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(s.default),this.addDetector(a.default),this.addDetector(i.default),this.addDetector(u.default),this.addDetector(l.default),this.addDetector(c.default),this.addDetector(d.default)}},{key:"addDetector",value:function(e){this.detectors[e.name]=e}},{key:"detect",value:function(e){var t=this;e||(e=this.options.order);var n=[];e.forEach((function(e){if(t.detectors[e]){var r=t.detectors[e].lookup(t.options);r&&"string"==typeof r&&(r=[r]),r&&(n=n.concat(r))}}));var r=void 0;if(n.forEach((function(e){if(!r){var n=t.services.languageUtils.formatLanguageCode(e);t.services.languageUtils.isWhitelisted(n)&&(r=n)}})),!r){var o=this.i18nOptions.fallbackLng;"string"==typeof o&&(o=[o]),o||(o=[]),r="[object Array]"===Object.prototype.toString.apply(o)?o[0]:o[0]||o.default&&o.default[0]}return r}},{key:"cacheUserLanguage",value:function(e,t){var n=this;t||(t=this.options.caches),t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach((function(t){n.detectors[t]&&n.detectors[t].cacheUserLanguage(e,n.options)})))}}]),e}();p.type="languageDetector",t.default=p},"./node_modules/i18next-browser-languagedetector/dist/commonjs/utils.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaults=function(e){return o.call(s.call(arguments,1),(function(t){if(t)for(var n in t)void 0===e[n]&&(e[n]=t[n])})),e},t.extend=function(e){return o.call(s.call(arguments,1),(function(t){if(t)for(var n in t)e[n]=t[n]})),e};var r=[],o=r.forEach,s=r.slice},"./node_modules/i18next-browser-languagedetector/index.js":function(e,t,n){e.exports=n("./node_modules/i18next-browser-languagedetector/dist/commonjs/index.js").default},"./node_modules/i18next/dist/es/index.js":function(e,t,n){"use strict";n.d(t,"a",(function(){return Z})),n.d(t,"b",(function(){return ee}));var r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};o(this,e),this.init(t,n)}return e.prototype.init=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||s,this.options=t,this.debug=t.debug},e.prototype.setDebug=function(e){this.debug=e},e.prototype.log=function(){for(var e=arguments.length,t=Array(e),n=0;n-1&&n.observers[e].splice(r,1)}else delete n.observers[e]}))},e.prototype.emit=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r-1?e.replace(/###/g,"."):e}function o(){return!e||"string"==typeof e}for(var s="string"!=typeof t?[].concat(t):t.split(".");s.length>1;){if(o())return{};var a=r(s.shift());!e[a]&&n&&(e[a]=new n),e=e[a]}return o()?{}:{obj:e,k:r(s.shift())}}function d(e,t,n){var r=c(e,t,Object);r.obj[r.k]=n}function f(e,t){var n=c(e,t),r=n.obj,o=n.k;if(r)return r[o]}function h(e,t,n){for(var r in t)r in e?"string"==typeof e[r]||e[r]instanceof String||"string"==typeof t[r]||t[r]instanceof String?n&&(e[r]=t[r]):h(e[r],t[r],n):e[r]=t[r];return e}function p(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var m={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function g(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return m[e]})):e}var b=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};v(this,t);var o=y(this,e.call(this));return o.data=n||{},o.options=r,void 0===o.options.keySeparator&&(o.options.keySeparator="."),o}return w(t,e),t.prototype.addNamespaces=function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)},t.prototype.removeNamespaces=function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)},t.prototype.getResource=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=void 0!==r.keySeparator?r.keySeparator:this.options.keySeparator,s=[e,t];return n&&"string"!=typeof n&&(s=s.concat(n)),n&&"string"==typeof n&&(s=s.concat(o?n.split(o):n)),e.indexOf(".")>-1&&(s=e.split(".")),f(this.data,s)},t.prototype.addResource=function(e,t,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},s=this.options.keySeparator;void 0===s&&(s=".");var a=[e,t];n&&(a=a.concat(s?n.split(s):n)),e.indexOf(".")>-1&&(r=t,t=(a=e.split("."))[1]),this.addNamespaces(t),d(this.data,a,r),o.silent||this.emit("added",e,t,n,r)},t.prototype.addResources=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var o in n)"string"==typeof n[o]&&this.addResource(e,t,o,n[o],{silent:!0});r.silent||this.emit("added",e,t,n)},t.prototype.addResourceBundle=function(e,t,n,r,o){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},a=[e,t];e.indexOf(".")>-1&&(r=n,n=t,t=(a=e.split("."))[1]),this.addNamespaces(t);var i=f(this.data,a)||{};r?h(i,n,o):i=b({},i,n),d(this.data,a,i),s.silent||this.emit("added",e,t,n)},t.prototype.removeResourceBundle=function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)},t.prototype.hasResourceBundle=function(e,t){return void 0!==this.getResource(e,t)},t.prototype.getResourceBundle=function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?b({},this.getResource(e,t)):this.getResource(e,t)},t.prototype.getDataByLanguage=function(e){return this.data[e]},t.prototype.toJSON=function(){return this.data},t}(i),_={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,n,r,o){var s=this;return e.forEach((function(e){s.processors[e]&&(t=s.processors[e].process(t,n,r,o))})),t}},A=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};R(this,t);var o=S(this,e.call(this));return l(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat"],n,o),o.options=r,void 0===o.options.keySeparator&&(o.options.keySeparator="."),o.logger=a.create("translator"),o}return E(t,e),t.prototype.changeLanguage=function(e){e&&(this.language=e)},t.prototype.exists=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},n=this.resolve(e,t);return n&&void 0!==n.res},t.prototype.extractFromKey=function(e,t){var n=t.nsSeparator||this.options.nsSeparator;void 0===n&&(n=":");var r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,o=t.ns||this.options.defaultNS;if(n&&e.indexOf(n)>-1){var s=e.split(n);(n!==r||n===r&&this.options.ns.indexOf(s[0])>-1)&&(o=s.shift()),e=s.join(r)}return"string"==typeof o&&(o=[o]),{key:e,namespaces:o}},t.prototype.translate=function(e,t){var n=this;if("object"!==(void 0===t?"undefined":C(t))&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),t||(t={}),null==e||""===e)return"";"number"==typeof e&&(e=String(e)),"string"==typeof e&&(e=[e]);var r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,o=this.extractFromKey(e[e.length-1],t),s=o.key,a=o.namespaces,i=a[a.length-1],u=t.lng||this.language,l=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(u&&"cimode"===u.toLowerCase()){if(l){var c=t.nsSeparator||this.options.nsSeparator;return i+c+s}return s}var d=this.resolve(e,t),f=d&&d.res,h=d&&d.usedKey||s,p=Object.prototype.toString.apply(f),m=["[object Number]","[object Function]","[object RegExp]"],g=void 0!==t.joinArrays?t.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,v="string"!=typeof f&&"boolean"!=typeof f&&"number"!=typeof f;if(b&&f&&v&&m.indexOf(p)<0&&(!g||"[object Array]"!==p)){if(!t.returnObjects&&!this.options.returnObjects)return this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,f,t):"key '"+s+" ("+this.language+")' returned an object instead of string.";if(r){var y="[object Array]"===p?[]:{};for(var w in f)if(Object.prototype.hasOwnProperty.call(f,w)){var x=""+h+r+w;y[w]=this.translate(x,A({},t,{joinArrays:!1,ns:a})),y[w]===x&&(y[w]=f[w])}f=y}}else if(b&&g&&"[object Array]"===p)(f=f.join(g))&&(f=this.extendTranslation(f,e,t));else{var _=!1,R=!1;if(!this.isValidLookup(f)&&void 0!==t.defaultValue){if(_=!0,void 0!==t.count){var S=this.pluralResolver.getSuffix(u,t.count);f=t["defaultValue"+S]}f||(f=t.defaultValue)}this.isValidLookup(f)||(R=!0,f=s);var E=t.defaultValue&&t.defaultValue!==f&&this.options.updateMissing;if(R||_||E){this.logger.log(E?"updateKey":"missingKey",u,i,s,E?t.defaultValue:f);var k=[],j=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if("fallback"===this.options.saveMissingTo&&j&&j[0])for(var T=0;T1&&void 0!==arguments[1]?arguments[1]:{},r=void 0,o=void 0,s=void 0,a=void 0;return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!t.isValidLookup(r)){var i=t.extractFromKey(e,n),u=i.key;o=u;var l=i.namespaces;t.options.fallbackNS&&(l=l.concat(t.options.fallbackNS));var c=void 0!==n.count&&"string"!=typeof n.count,d=void 0!==n.context&&"string"==typeof n.context&&""!==n.context,f=n.lngs?n.lngs:t.languageUtils.toResolveHierarchy(n.lng||t.language,n.fallbackLng);l.forEach((function(e){t.isValidLookup(r)||(a=e,f.forEach((function(o){if(!t.isValidLookup(r)){s=o;var a=u,i=[a];if(t.i18nFormat&&t.i18nFormat.addLookupKeys)t.i18nFormat.addLookupKeys(i,u,o,e,n);else{var l=void 0;c&&(l=t.pluralResolver.getSuffix(o,n.count)),c&&d&&i.push(a+l),d&&i.push(a+=""+t.options.contextSeparator+n.context),c&&i.push(a+=l)}for(var f=void 0;f=i.pop();)t.isValidLookup(r)||(r=t.getResource(o,e,f,n))}})))}))}})),{res:r,usedKey:o,usedLng:s,usedNS:a}},t.prototype.isValidLookup=function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)},t.prototype.getResource=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)},t}(i);function j(e){return e.charAt(0).toUpperCase()+e.slice(1)}var T=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options=t,this.whitelist=this.options.whitelist||!1,this.logger=a.create("languageUtils")}return e.prototype.getScriptPartFromCode=function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length?null:(t.pop(),this.formatLanguageCode(t.join("-")))},e.prototype.getLanguagePartFromCode=function(e){if(!e||e.indexOf("-")<0)return e;var t=e.split("-");return this.formatLanguageCode(t[0])},e.prototype.formatLanguageCode=function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],n=e.split("-");return this.options.lowerCaseLng?n=n.map((function(e){return e.toLowerCase()})):2===n.length?(n[0]=n[0].toLowerCase(),n[1]=n[1].toUpperCase(),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=j(n[1].toLowerCase()))):3===n.length&&(n[0]=n[0].toLowerCase(),2===n[1].length&&(n[1]=n[1].toUpperCase()),"sgn"!==n[0]&&2===n[2].length&&(n[2]=n[2].toUpperCase()),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=j(n[1].toLowerCase())),t.indexOf(n[2].toLowerCase())>-1&&(n[2]=j(n[2].toLowerCase()))),n.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e},e.prototype.isWhitelisted=function(e){return("languageOnly"===this.options.load||this.options.nonExplicitWhitelist)&&(e=this.getLanguagePartFromCode(e)),!this.whitelist||!this.whitelist.length||this.whitelist.indexOf(e)>-1},e.prototype.getFallbackCodes=function(e,t){if(!e)return[];if("string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var n=e[t];return n||(n=e[this.getScriptPartFromCode(t)]),n||(n=e[this.formatLanguageCode(t)]),n||(n=e.default),n||[]},e.prototype.toResolveHierarchy=function(e,t){var n=this,r=this.getFallbackCodes(t||this.options.fallbackLng||[],e),o=[],s=function(e){e&&(n.isWhitelisted(e)?o.push(e):n.logger.warn("rejecting non-whitelisted language code: "+e))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&s(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&s(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&s(this.getLanguagePartFromCode(e))):"string"==typeof e&&s(this.formatLanguageCode(e)),r.forEach((function(e){o.indexOf(e)<0&&s(n.formatLanguageCode(e))})),o},e}();function q(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var P=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","he","hi","hu","hy","ia","it","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","id","ja","jbo","ka","kk","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21}],L={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0===e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0===e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1===e?0:2===e?1:(e<0||e>10)&&e%10==0?2:3)}};function O(){var e={};return P.forEach((function(t){t.lngs.forEach((function(n){e[n]={numbers:t.nr,plurals:L[t.fc]}}))})),e}var I=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};q(this,e),this.languageUtils=t,this.options=n,this.logger=a.create("pluralResolver"),this.rules=O()}return e.prototype.addRule=function(e,t){this.rules[e]=t},e.prototype.getRule=function(e){return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]},e.prototype.needsPlural=function(e){var t=this.getRule(e);return t&&t.numbers.length>1},e.prototype.getPluralFormsOfKey=function(e,t){var n=this,r=[],o=this.getRule(e);return o?(o.numbers.forEach((function(o){var s=n.getSuffix(e,o);r.push(""+t+s)})),r):r},e.prototype.getSuffix=function(e,t){var n=this,r=this.getRule(e);if(r){var o=r.noAbs?r.plurals(t):r.plurals(Math.abs(t)),s=r.numbers[o];this.options.simplifyPluralSuffix&&2===r.numbers.length&&1===r.numbers[0]&&(2===s?s="plural":1===s&&(s=""));var a=function(){return n.options.prepend&&s.toString()?n.options.prepend+s.toString():s.toString()};return"v1"===this.options.compatibilityJSON?1===s?"":"number"==typeof s?"_plural_"+s.toString():a():"v2"===this.options.compatibilityJSON&&2===r.numbers.length&&1===r.numbers[0]||this.options.simplifyPluralSuffix&&2===r.numbers.length&&1===r.numbers[0]?a():this.options.prepend&&o.toString()?this.options.prepend+o.toString():o.toString()}return this.logger.warn("no plural rule found for: "+e),""},e}(),N=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};D(this,e),this.logger=a.create("interpolator"),this.init(t,!0)}return e.prototype.init=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];t&&(this.options=e,this.format=e.interpolation&&e.interpolation.format||function(e){return e}),e.interpolation||(e.interpolation={escapeValue:!0});var n=e.interpolation;this.escape=void 0!==n.escape?n.escape:g,this.escapeValue=void 0===n.escapeValue||n.escapeValue,this.useRawValueToEscape=void 0!==n.useRawValueToEscape&&n.useRawValueToEscape,this.prefix=n.prefix?p(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?p(n.suffix):n.suffixEscaped||"}}",this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||",",this.unescapePrefix=n.unescapeSuffix?"":n.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":n.unescapeSuffix||"",this.nestingPrefix=n.nestingPrefix?p(n.nestingPrefix):n.nestingPrefixEscaped||p("$t("),this.nestingSuffix=n.nestingSuffix?p(n.nestingSuffix):n.nestingSuffixEscaped||p(")"),this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.resetRegExp()},e.prototype.reset=function(){this.options&&this.init(this.options)},e.prototype.resetRegExp=function(){var e=this.prefix+"(.+?)"+this.suffix;this.regexp=new RegExp(e,"g");var t=""+this.prefix+this.unescapePrefix+"(.+?)"+this.unescapeSuffix+this.suffix;this.regexpUnescape=new RegExp(t,"g");var n=this.nestingPrefix+"(.+?)"+this.nestingSuffix;this.nestingRegexp=new RegExp(n,"g")},e.prototype.interpolate=function(e,t,n,r){var o=this,s=void 0,a=void 0,i=void 0;function l(e){return e.replace(/\$/g,"$$$$")}var c=function(e){if(e.indexOf(o.formatSeparator)<0)return f(t,e);var r=e.split(o.formatSeparator),s=r.shift().trim(),a=r.join(o.formatSeparator).trim();return o.format(f(t,s),a,n)};this.resetRegExp();var d=r&&r.missingInterpolationHandler||this.options.missingInterpolationHandler;for(i=0;(s=this.regexpUnescape.exec(e))&&(a=c(s[1].trim()),e=e.replace(s[0],a),this.regexpUnescape.lastIndex=0,!(++i>=this.maxReplaces)););for(i=0;s=this.regexp.exec(e);){if(void 0===(a=c(s[1].trim())))if("function"==typeof d){var h=d(e,s);a="string"==typeof h?h:""}else this.logger.warn("missed to pass in variable "+s[1]+" for interpolating "+e),a="";else"string"==typeof a||this.useRawValueToEscape||(a=u(a));if(a=this.escapeValue?l(this.escape(a)):l(a),e=e.replace(s[0],a),this.regexp.lastIndex=0,++i>=this.maxReplaces)break}return e},e.prototype.nest=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=void 0,o=void 0,s=N({},n);function a(e,t){if(e.indexOf(",")<0)return e;var n=e.split(",");e=n.shift();var r=n.join(",");r=(r=this.interpolate(r,s)).replace(/'/g,'"');try{s=JSON.parse(r),t&&(s=N({},t,s))}catch(t){this.logger.error("failed parsing options string in nesting for key "+e,t)}return e}for(s.applyPostProcessor=!1;r=this.nestingRegexp.exec(e);){if((o=t(a.call(this,r[1].trim(),s),s))&&r[0]===e&&"string"!=typeof o)return o;"string"!=typeof o&&(o=u(o)),o||(this.logger.warn("missed to resolve "+r[1]+" for nesting "+e),o=""),e=e.replace(r[0],o),this.regexp.lastIndex=0}return e},e}(),B=Object.assign||function(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{};z(this,t);var i=F(this,e.call(this));return i.backend=n,i.store=r,i.languageUtils=o.languageUtils,i.options=s,i.logger=a.create("backendConnector"),i.state={},i.queue=[],i.backend&&i.backend.init&&i.backend.init(o,s.backend,s),i}return H(t,e),t.prototype.queueLoad=function(e,t,n,r){var o=this,s=[],a=[],i=[],u=[];return e.forEach((function(e){var r=!0;t.forEach((function(t){var i=e+"|"+t;!n.reload&&o.store.hasResourceBundle(e,t)?o.state[i]=2:o.state[i]<0||(1===o.state[i]?a.indexOf(i)<0&&a.push(i):(o.state[i]=1,r=!1,a.indexOf(i)<0&&a.push(i),s.indexOf(i)<0&&s.push(i),u.indexOf(t)<0&&u.push(t)))})),r||i.push(e)})),(s.length||a.length)&&this.queue.push({pending:a,loaded:{},errors:[],callback:r}),{toLoad:s,pending:a,toLoadLanguages:i,toLoadNamespaces:u}},t.prototype.loaded=function(e,t,n){var r=e.split("|"),o=U(r,2),s=o[0],a=o[1];t&&this.emit("failedLoading",s,a,t),n&&this.store.addResourceBundle(s,a,n),this.state[e]=t?-1:2;var i={};this.queue.forEach((function(n){var r,o,u,l,d,f;r=n.loaded,o=a,l=c(r,[s],Object),d=l.obj,f=l.k,d[f]=d[f]||[],u&&(d[f]=d[f].concat(o)),u||d[f].push(o),function(e,t){for(var n=e.indexOf(t);-1!==n;)e.splice(n,1),n=e.indexOf(t)}(n.pending,e),t&&n.errors.push(t),0!==n.pending.length||n.done||(Object.keys(n.loaded).forEach((function(e){i[e]||(i[e]=[]),n.loaded[e].length&&n.loaded[e].forEach((function(t){i[e].indexOf(t)<0&&i[e].push(t)}))})),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())})),this.emit("loaded",i),this.queue=this.queue.filter((function(e){return!e.done}))},t.prototype.read=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=this,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:250,a=arguments[5];return e.length?this.backend[n](e,t,(function(i,u){i&&u&&r<5?setTimeout((function(){o.read.call(o,e,t,n,r+1,2*s,a)}),s):a(i,u)})):a(null,{})},t.prototype.prepareLoading=function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments[3];if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),o&&o();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var s=this.queueLoad(e,t,r,o);if(!s.toLoad.length)return s.pending.length||o(),null;s.toLoad.forEach((function(e){n.loadOne(e)}))},t.prototype.load=function(e,t,n){this.prepareLoading(e,t,{},n)},t.prototype.reload=function(e,t,n){this.prepareLoading(e,t,{reload:!0},n)},t.prototype.loadOne=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=e.split("|"),o=U(r,2),s=o[0],a=o[1];this.read(s,a,"read",null,null,(function(r,o){r&&t.logger.warn(n+"loading namespace "+a+" for language "+s+" failed",r),!r&&o&&t.logger.log(n+"loaded namespace "+a+" for language "+s,o),t.loaded(e,r,o)}))},t.prototype.saveMissing=function(e,t,n,r,o){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.backend&&this.backend.create&&this.backend.create(e,t,n,r,null,B({},s,{isUpdate:o})),e&&e[0]&&this.store.addResource(e[0],t,n,r)},t}(i);function $(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.whitelist&&e.whitelist.indexOf("cimode")<0&&(e.whitelist=e.whitelist.concat(["cimode"])),e}var J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},W=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},r=arguments[1];Y(this,t);var o=V(this,e.call(this));if(o.options=$(n),o.services={},o.logger=a,o.modules={external:[]},r&&!o.isInitialized&&!n.isClone){var s;if(!o.options.initImmediate)return s=o.init(n,r),V(o,s);setTimeout((function(){o.init(n,r)}),0)}return o}return K(t,e),t.prototype.init=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments[1];function r(e){return e?"function"==typeof e?new e:e:null}if("function"==typeof t&&(n=t,t={}),this.options=W({},{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:function(){},parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};return e[1]&&(t.defaultValue=e[1]),e[2]&&(t.tDescription=e[2]),t},interpolation:{escapeValue:!0,format:function(e,t,n){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",maxReplaces:1e3}},this.options,$(t)),this.format=this.options.interpolation.format,n||(n=G),!this.options.isClone){this.modules.logger?a.init(r(this.modules.logger),this.options):a.init(null,this.options);var o=new T(this.options);this.store=new x(this.options.resources,this.options);var s=this.services;s.logger=a,s.resourceStore=this.store,s.languageUtils=o,s.pluralResolver=new I(o,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),s.interpolator=new M(this.options),s.backendConnector=new Q(r(this.modules.backend),s.resourceStore,s,this.options),s.backendConnector.on("*",(function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o1?n-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:G;if(this.options.resources)t(null);else{if(this.language&&"cimode"===this.language.toLowerCase())return t();var n=[],r=function(t){t&&e.services.languageUtils.toResolveHierarchy(t).forEach((function(e){n.indexOf(e)<0&&n.push(e)}))};if(this.language)r(this.language);else{var o=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);o.forEach((function(e){return r(e)}))}this.options.preload&&this.options.preload.forEach((function(e){return r(e)})),this.services.backendConnector.load(n,this.options.ns,t)}},t.prototype.reloadResources=function(e,t,n){e||(e=this.languages),t||(t=this.options.ns),n||(n=function(){}),this.services.backendConnector.reload(e,t,n)},t.prototype.use=function(e){return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&_.addPostProcessor(e),"3rdParty"===e.type&&this.modules.external.push(e),this},t.prototype.changeLanguage=function(e,t){var n=this,r=function(e){e&&(n.language=e,n.languages=n.services.languageUtils.toResolveHierarchy(e),n.translator.language||n.translator.changeLanguage(e),n.services.languageDetector&&n.services.languageDetector.cacheUserLanguage(e)),n.loadResources((function(r){!function(e,r){n.translator.changeLanguage(r),r&&(n.emit("languageChanged",r),n.logger.log("languageChanged",r)),t&&t(e,(function(){return n.t.apply(n,arguments)}))}(r,e)}))};e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(r):r(e):r(this.services.languageDetector.detect())},t.prototype.getFixedT=function(e,t){var n=this,r=function e(t,r){for(var o=arguments.length,s=Array(o>2?o-2:0),a=2;a0?this.languages[0]:this.language),!e)return"rtl";return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>=0?"rtl":"ltr"},t.prototype.createInstance=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments[1];return new t(e,n)},t.prototype.cloneInstance=function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:G,o=W({},this.options,n,{isClone:!0}),s=new t(o),a=["store","services","language"];return a.forEach((function(t){s[t]=e[t]})),s.translator=new k(s.services,s.options),s.translator.on("*",(function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?a(e)+t:t}function u(){return!0}function l(e,t,n){return(0===e&&!h(e)||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function c(e,t){return f(e,t,0)}function d(e,t){return f(e,t,t)}function f(e,t,n){return void 0===e?n:h(e)?t===1/0?t:0|Math.max(0,t+e):void 0===t||t===e?e:0|Math.min(t,e)}function h(e){return e<0||0===e&&1/e==-1/0}function p(e){return Boolean(e&&e["@@__IMMUTABLE_ITERABLE__@@"])}function m(e){return Boolean(e&&e["@@__IMMUTABLE_KEYED__@@"])}function g(e){return Boolean(e&&e["@@__IMMUTABLE_INDEXED__@@"])}function b(e){return m(e)||g(e)}var v=function(e){return p(e)?e:M(e)},y=function(e){function t(e){return m(e)?e:B(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(v),w=function(e){function t(e){return g(e)?e:U(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(v),x=function(e){function t(e){return p(e)&&!b(e)?e:z(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(v);v.Keyed=y,v.Indexed=w,v.Set=x;function _(e){return Boolean(e&&e["@@__IMMUTABLE_SEQ__@@"])}function A(e){return Boolean(e&&e["@@__IMMUTABLE_RECORD__@@"])}function C(e){return p(e)||A(e)}var R="@@__IMMUTABLE_ORDERED__@@";function S(e){return Boolean(e&&e[R])}var E="function"==typeof Symbol&&Symbol.iterator,k=E||"@@iterator",j=function(e){this.next=e};function T(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function q(){return{value:void 0,done:!0}}function P(e){return!!I(e)}function L(e){return e&&"function"==typeof e.next}function O(e){var t=I(e);return t&&t.call(e)}function I(e){var t=e&&(E&&e[E]||e["@@iterator"]);if("function"==typeof t)return t}j.prototype.toString=function(){return"[Iterator]"},j.KEYS=0,j.VALUES=1,j.ENTRIES=2,j.prototype.inspect=j.prototype.toSource=function(){return this.toString()},j.prototype[k]=function(){return this};var N=Object.prototype.hasOwnProperty;function D(e){return!(!Array.isArray(e)&&"string"!=typeof e)||e&&"object"==typeof e&&Number.isInteger(e.length)&&e.length>=0&&(0===e.length?1===Object.keys(e).length:e.hasOwnProperty(e.length-1))}var M=function(e){function t(e){return null==e?J():C(e)?e.toSeq():function(e){var t=V(e);if(t)return t;if("object"==typeof e)return new H(e);throw new TypeError("Expected Array or collection object of values, or keyed object: "+e)}(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq {","}")},t.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},t.prototype.__iterate=function(e,t){var n=this._cache;if(n){for(var r=n.length,o=0;o!==r;){var s=n[t?r-++o:o++];if(!1===e(s[1],s[0],this))break}return o}return this.__iterateUncached(e,t)},t.prototype.__iterator=function(e,t){var n=this._cache;if(n){var r=n.length,o=0;return new j((function(){if(o===r)return{value:void 0,done:!0};var s=n[t?r-++o:o++];return T(e,s[0],s[1])}))}return this.__iteratorUncached(e,t)},t}(v),B=function(e){function t(e){return null==e?J().toKeyedSeq():p(e)?m(e)?e.toSeq():e.fromEntrySeq():A(e)?e.toSeq():W(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toKeyedSeq=function(){return this},t}(M),U=function(e){function t(e){return null==e?J():p(e)?m(e)?e.entrySeq():e.toIndexedSeq():A(e)?e.toSeq().entrySeq():Y(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toIndexedSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq [","]")},t}(M),z=function(e){function t(e){return(p(e)&&!b(e)?e:U(e)).toSetSeq()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toSetSeq=function(){return this},t}(M);M.isSeq=_,M.Keyed=B,M.Set=z,M.Indexed=U,M.prototype["@@__IMMUTABLE_SEQ__@@"]=!0;var F=function(e){function t(e){this._array=e,this.size=e.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(e,t){return this.has(e)?this._array[i(this,e)]:t},t.prototype.__iterate=function(e,t){for(var n=this._array,r=n.length,o=0;o!==r;){var s=t?r-++o:o++;if(!1===e(n[s],s,this))break}return o},t.prototype.__iterator=function(e,t){var n=this._array,r=n.length,o=0;return new j((function(){if(o===r)return{value:void 0,done:!0};var s=t?r-++o:o++;return T(e,s,n[s])}))},t}(U),H=function(e){function t(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},t.prototype.has=function(e){return N.call(this._object,e)},t.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length,s=0;s!==o;){var a=r[t?o-++s:s++];if(!1===e(n[a],a,this))break}return s},t.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length,s=0;return new j((function(){if(s===o)return{value:void 0,done:!0};var a=r[t?o-++s:s++];return T(e,a,n[a])}))},t}(B);H.prototype[R]=!0;var Q,$=function(e){function t(e){this._collection=e,this.size=e.length||e.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=O(this._collection),r=0;if(L(n))for(var o;!(o=n.next()).done&&!1!==e(o.value,r++,this););return r},t.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=O(this._collection);if(!L(n))return new j(q);var r=0;return new j((function(){var t=n.next();return t.done?t:T(e,r++,t.value)}))},t}(U);function J(){return Q||(Q=new F([]))}function W(e){var t=Array.isArray(e)?new F(e):P(e)?new $(e):void 0;if(t)return t.fromEntrySeq();if("object"==typeof e)return new H(e);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+e)}function Y(e){var t=V(e);if(t)return t;throw new TypeError("Expected Array or collection object of values: "+e)}function V(e){return D(e)?new F(e):P(e)?new $(e):void 0}function K(e){return Boolean(e&&e["@@__IMMUTABLE_MAP__@@"])}function G(e){return K(e)&&S(e)}function X(e){return Boolean(e&&"function"==typeof e.equals&&"function"==typeof e.hashCode)}function Z(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if((e=e.valueOf())===(t=t.valueOf())||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!!(X(e)&&X(t)&&e.equals(t))}var ee="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var n=65535&(e|=0),r=65535&(t|=0);return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0};function te(e){return e>>>1&1073741824|3221225471&e}var ne=Object.prototype.valueOf;function re(e){switch(typeof e){case"boolean":return e?1108378657:1108378656;case"number":return function(e){if(e!=e||e===1/0)return 0;var t=0|e;t!==e&&(t^=4294967295*e);for(;e>4294967295;)t^=e/=4294967295;return te(t)}(e);case"string":return e.length>de?function(e){var t=pe[e];void 0===t&&(t=oe(e),he===fe&&(he=0,pe={}),he++,pe[e]=t);return t}(e):oe(e);case"object":case"function":return null===e?1108378658:"function"==typeof e.hashCode?te(e.hashCode(e)):(e.valueOf!==ne&&"function"==typeof e.valueOf&&(e=e.valueOf(e)),function(e){var t;if(ue&&void 0!==(t=ie.get(e)))return t;if(void 0!==(t=e[ce]))return t;if(!ae){if(void 0!==(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[ce]))return t;if(void 0!==(t=function(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}(e)))return t}t=++le,1073741824&le&&(le=0);if(ue)ie.set(e,t);else{if(void 0!==se&&!1===se(e))throw new Error("Non-extensible objects are not allowed as keys.");if(ae)Object.defineProperty(e,ce,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(void 0!==e.propertyIsEnumerable&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[ce]=t;else{if(void 0===e.nodeType)throw new Error("Unable to set a non-enumerable property on object.");e[ce]=t}}return t}(e));case"undefined":return 1108378659;default:if("function"==typeof e.toString)return oe(e.toString());throw new Error("Value type "+typeof e+" cannot be hashed.")}}function oe(e){for(var t=0,n=0;n=0&&(h.get=function(t,n){return(t=i(this,t))>=0&&tu)return{value:void 0,done:!0};var e=o.next();return r||1===t||e.done?e:T(t,i-1,0===t?void 0:e.value[1],e)}))},h}function Ce(e,t,n,r){var o=Oe(e);return o.__iterateUncached=function(o,s){var a=this;if(s)return this.cacheResult().__iterate(o,s);var i=!0,u=0;return e.__iterate((function(e,s,l){if(!i||!(i=t.call(n,e,s,l)))return u++,o(e,r?s:u-1,a)})),u},o.__iteratorUncached=function(o,s){var a=this;if(s)return this.cacheResult().__iterator(o,s);var i=e.__iterator(2,s),u=!0,l=0;return new j((function(){var e,s,c;do{if((e=i.next()).done)return r||1===o?e:T(o,l++,0===o?void 0:e.value[1],e);var d=e.value;s=d[0],c=d[1],u&&(u=t.call(n,c,s,a))}while(u);return 2===o?e:T(o,s,c,e)}))},o}function Re(e,t){var n=m(e),r=[e].concat(t).map((function(e){return p(e)?n&&(e=y(e)):e=n?W(e):Y(Array.isArray(e)?e:[e]),e})).filter((function(e){return 0!==e.size}));if(0===r.length)return e;if(1===r.length){var o=r[0];if(o===e||n&&m(o)||g(e)&&g(o))return o}var s=new F(r);return n?s=s.toKeyedSeq():g(e)||(s=s.toSetSeq()),(s=s.flatten(!0)).size=r.reduce((function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}}),0),s}function Se(e,t,n){var r=Oe(e);return r.__iterateUncached=function(o,s){if(s)return this.cacheResult().__iterate(o,s);var a=0,i=!1;return function e(u,l){u.__iterate((function(s,u){return(!t||l0}function Te(e,t,n,r){var o=Oe(e),s=new F(n).map((function(e){return e.size}));return o.size=r?s.max():s.min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(1,t),o=0;!(n=r.next()).done&&!1!==e(n.value,o++,this););return o},o.__iteratorUncached=function(e,o){var s=n.map((function(e){return e=v(e),O(o?e.reverse():e)})),a=0,i=!1;return new j((function(){var n;return i||(n=s.map((function(e){return e.next()})),i=r?n.every((function(e){return e.done})):n.some((function(e){return e.done}))),i?{value:void 0,done:!0}:T(e,a++,t.apply(null,n.map((function(e){return e.value}))))}))},o}function qe(e,t){return e===t?e:_(e)?t:e.constructor(t)}function Pe(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Le(e){return m(e)?y:g(e)?w:x}function Oe(e){return Object.create((m(e)?B:g(e)?U:z).prototype)}function Ie(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):M.prototype.cacheResult.call(this)}function Ne(e,t){return void 0===e&&void 0===t?0:void 0===e?1:void 0===t?-1:e>t?1:e0;)t[n]=arguments[n+1];if("function"!=typeof e)throw new TypeError("Invalid merger function: "+e);return st(this,t,e)}function st(e,t,n){for(var o=[],s=0;s0;)t[n]=arguments[n+1];return at(this,t,e)}function ct(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return Ve(this,e,kt(),(function(e){return it(e,t)}))}function dt(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return Ve(this,e,kt(),(function(e){return at(e,t)}))}function ft(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this}function ht(){return this.__ownerID?this:this.__ensureOwner(new s)}function pt(){return this.__ensureOwner()}function mt(){return this.__altered}ge.prototype.cacheResult=me.prototype.cacheResult=be.prototype.cacheResult=ve.prototype.cacheResult=Ie;var gt=function(e){function t(t){return null==t?kt():K(t)&&!S(t)?t:kt().withMutations((function(n){var r=e(t);Be(r.size),r.forEach((function(e,t){return n.set(t,e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return kt().withMutations((function(t){for(var n=0;n=e.length)throw new Error("Missing value for key: "+e[n]);t.set(e[n],e[n+1])}}))},t.prototype.toString=function(){return this.__toString("Map {","}")},t.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},t.prototype.set=function(e,t){return jt(this,e,t)},t.prototype.remove=function(e){return jt(this,e,r)},t.prototype.deleteAll=function(e){var t=v(e);return 0===t.size?this:this.withMutations((function(e){t.forEach((function(t){return e.remove(t)}))}))},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):kt()},t.prototype.sort=function(e){return Zt(Ee(this,e))},t.prototype.sortBy=function(e,t){return Zt(Ee(this,t,e))},t.prototype.map=function(e,t){return this.withMutations((function(n){n.forEach((function(r,o){n.set(o,e.call(t,r,o,n))}))}))},t.prototype.__iterator=function(e,t){return new Ct(this,e,t)},t.prototype.__iterate=function(e,t){var n=this,r=0;return this._root&&this._root.iterate((function(t){return r++,e(t[1],t[0],n)}),t),r},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Et(this.size,this._root,e,this.__hash):0===this.size?kt():(this.__ownerID=e,this.__altered=!1,this)},t}(y);gt.isMap=K;var bt=gt.prototype;bt["@@__IMMUTABLE_MAP__@@"]=!0,bt.delete=bt.remove,bt.removeAll=bt.deleteAll,bt.setIn=Ge,bt.removeIn=bt.deleteIn=Ze,bt.update=tt,bt.updateIn=nt,bt.merge=bt.concat=rt,bt.mergeWith=ot,bt.mergeDeep=ut,bt.mergeDeepWith=lt,bt.mergeIn=ct,bt.mergeDeepIn=dt,bt.withMutations=ft,bt.wasAltered=mt,bt.asImmutable=pt,bt["@@transducer/init"]=bt.asMutable=ht,bt["@@transducer/step"]=function(e,t){return e.set(t[0],t[1])},bt["@@transducer/result"]=function(e){return e.asImmutable()};var vt=function(e,t){this.ownerID=e,this.entries=t};vt.prototype.get=function(e,t,n,r){for(var o=this.entries,s=0,a=o.length;s=It)return function(e,t,n,r){e||(e=new s);for(var o=new _t(e,re(n),[n,r]),a=0;a>>e)),s=this.bitmap;return 0==(s&o)?r:this.nodes[Lt(s&o-1)].get(e+5,t,n,r)},yt.prototype.update=function(e,t,n,o,s,a,i){void 0===n&&(n=re(o));var u=31&(0===t?n:n>>>t),l=1<=Nt)return function(e,t,n,r,o){for(var s=0,a=new Array(32),i=0;0!==n;i++,n>>>=1)a[i]=1&n?t[s++]:void 0;return a[r]=o,new wt(e,s+1,a)}(e,h,c,u,m);if(d&&!m&&2===h.length&&qt(h[1^f]))return h[1^f];if(d&&m&&1===h.length&&qt(m))return m;var g=e&&e===this.ownerID,b=d?m?c:c^l:c|l,v=d?m?Ot(h,f,m,g):function(e,t,n){var r=e.length-1;if(n&&t===r)return e.pop(),e;for(var o=new Array(r),s=0,a=0;a>>e),s=this.nodes[o];return s?s.get(e+5,t,n,r):r},wt.prototype.update=function(e,t,n,o,s,a,i){void 0===n&&(n=re(o));var u=31&(0===t?n:n>>>t),l=s===r,c=this.nodes,d=c[u];if(l&&!d)return this;var f=Tt(d,e,t+5,n,o,s,a,i);if(f===d)return this;var h=this.count;if(d){if(!f&&--h>>n),i=31&(0===n?r:r>>>n),u=a===i?[Pt(e,t,n+5,r,o)]:(s=new _t(t,r,o),a>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)}function Ot(e,t,n,r){var o=r?e:De(e);return o[t]=n,o}var It=8,Nt=16,Dt=8;function Mt(e){return Boolean(e&&e["@@__IMMUTABLE_LIST__@@"])}var Bt=function(e){function t(t){var n=Jt();if(null==t)return n;if(Mt(t))return t;var r=e(t),o=r.size;return 0===o?n:(Be(o),o>0&&o<32?$t(0,o,5,null,new zt(r.toArray())):n.withMutations((function(e){e.setSize(o),r.forEach((function(t,n){return e.set(n,t)}))})))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("List [","]")},t.prototype.get=function(e,t){if((e=i(this,e))>=0&&e=e.size||t<0)return e.withMutations((function(e){t<0?Kt(e,t).set(0,n):Kt(e,0,t+1).set(t,n)}));t+=e._origin;var r=e._tail,o=e._root,s={value:!1};t>=Gt(e._capacity)?r=Wt(r,e.__ownerID,0,t,n,s):o=Wt(o,e.__ownerID,e._level,t,n,s);if(!s.value)return e;if(e.__ownerID)return e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e;return $t(e._origin,e._capacity,e._level,o,r)}(this,e,t)},t.prototype.remove=function(e){return this.has(e)?0===e?this.shift():e===this.size-1?this.pop():this.splice(e,1):this},t.prototype.insert=function(e,t){return this.splice(e,0,t)},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=5,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):Jt()},t.prototype.push=function(){var e=arguments,t=this.size;return this.withMutations((function(n){Kt(n,0,t+e.length);for(var r=0;r>>t&31;if(r>=this.array.length)return new zt([],e);var o,s=0===r;if(t>0){var a=this.array[r];if((o=a&&a.removeBefore(e,t-5,n))===a&&s)return this}if(s&&!o)return this;var i=Yt(this,e);if(!s)for(var u=0;u>>t&31;if(o>=this.array.length)return this;if(t>0){var s=this.array[o];if((r=s&&s.removeAfter(e,t-5,n))===s&&o===this.array.length-1)return this}var a=Yt(this,e);return a.array.splice(o+1),r&&(a.array[o]=r),a};var Ft,Ht={};function Qt(e,t){var n=e._origin,r=e._capacity,o=Gt(r),s=e._tail;return a(e._root,e._level,0);function a(e,i,u){return 0===i?function(e,a){var i=a===o?s&&s.array:e&&e.array,u=a>n?0:n-a,l=r-a;l>32&&(l=32);return function(){if(u===l)return Ht;var e=t?--l:u++;return i&&i[e]}}(e,u):function(e,o,s){var i,u=e&&e.array,l=s>n?0:n-s>>o,c=1+(r-s>>o);c>32&&(c=32);return function(){for(;;){if(i){var e=i();if(e!==Ht)return e;i=null}if(l===c)return Ht;var n=t?--c:l++;i=a(u&&u[n],o-5,s+(n<>>n&31,l=e&&u0){var c=e&&e.array[u],d=Wt(c,t,n-5,r,s,a);return d===c?e:((i=Yt(e,t)).array[u]=d,i)}return l&&e.array[u]===s?e:(a&&o(a),i=Yt(e,t),void 0===s&&u===i.array.length-1?i.array.pop():i.array[u]=s,i)}function Yt(e,t){return t&&e&&t===e.ownerID?e:new zt(e?e.array.slice():[],t)}function Vt(e,t){if(t>=Gt(e._capacity))return e._tail;if(t<1<0;)n=n.array[t>>>r&31],r-=5;return n}}function Kt(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new s,o=e._origin,a=e._capacity,i=o+t,u=void 0===n?a:n<0?a+n:o+n;if(i===o&&u===a)return e;if(i>=u)return e.clear();for(var l=e._level,c=e._root,d=0;i+d<0;)c=new zt(c&&c.array.length?[void 0,c]:[],r),d+=1<<(l+=5);d&&(i+=d,o+=d,u+=d,a+=d);for(var f=Gt(a),h=Gt(u);h>=1<f?new zt([],r):p;if(p&&h>f&&i5;b-=5){var v=f>>>b&31;g=g.array[v]=Yt(g.array[v],r)}g.array[f>>>5&31]=p}if(u=h)i-=h,u-=h,l=5,c=null,m=m&&m.removeBefore(r,0,i);else if(i>o||h>>l&31;if(y!==h>>>l&31)break;y&&(d+=(1<o&&(c=c.removeBefore(r,l,i-d)),c&&h>>5<<5}var Xt,Zt=function(e){function t(e){return null==e?tn():G(e)?e:tn().withMutations((function(t){var n=y(e);Be(n.size),n.forEach((function(e,n){return t.set(n,e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("OrderedMap {","}")},t.prototype.get=function(e,t){var n=this._map.get(e);return void 0!==n?this._list.get(n)[1]:t},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):tn()},t.prototype.set=function(e,t){return nn(this,e,t)},t.prototype.remove=function(e){return nn(this,e,r)},t.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},t.prototype.__iterate=function(e,t){var n=this;return this._list.__iterate((function(t){return t&&e(t[1],t[0],n)}),t)},t.prototype.__iterator=function(e,t){return this._list.fromEntrySeq().__iterator(e,t)},t.prototype.__ensureOwner=function(e){if(e===this.__ownerID)return this;var t=this._map.__ensureOwner(e),n=this._list.__ensureOwner(e);return e?en(t,n,e,this.__hash):0===this.size?tn():(this.__ownerID=e,this._map=t,this._list=n,this)},t}(gt);function en(e,t,n,r){var o=Object.create(Zt.prototype);return o.size=e?e.size:0,o._map=e,o._list=t,o.__ownerID=n,o.__hash=r,o}function tn(){return Xt||(Xt=en(kt(),Jt()))}function nn(e,t,n){var o,s,a=e._map,i=e._list,u=a.get(t),l=void 0!==u;if(n===r){if(!l)return e;i.size>=32&&i.size>=2*a.size?(o=(s=i.filter((function(e,t){return void 0!==e&&u!==t}))).toKeyedSeq().map((function(e){return e[0]})).flip().toMap(),e.__ownerID&&(o.__ownerID=s.__ownerID=e.__ownerID)):(o=a.remove(t),s=u===i.size-1?i.pop():i.set(u,void 0))}else if(l){if(n===i.get(u)[1])return e;o=a,s=i.set(u,[t,n])}else o=a.set(t,i.size),s=i.set(i.size,[t,n]);return e.__ownerID?(e.size=o.size,e._map=o,e._list=s,e.__hash=void 0,e):en(o,s)}Zt.isOrderedMap=G,Zt.prototype[R]=!0,Zt.prototype.delete=Zt.prototype.remove;function rn(e){return Boolean(e&&e["@@__IMMUTABLE_STACK__@@"])}var on=function(e){function t(e){return null==e?ln():rn(e)?e:ln().pushAll(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("Stack [","]")},t.prototype.get=function(e,t){var n=this._head;for(e=i(this,e);n&&e--;)n=n.next;return n?n.value:t},t.prototype.peek=function(){return this._head&&this._head.value},t.prototype.push=function(){var e=arguments;if(0===arguments.length)return this;for(var t=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:e[r],next:n};return this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):un(t,n)},t.prototype.pushAll=function(t){if(0===(t=e(t)).size)return this;if(0===this.size&&rn(t))return t;Be(t.size);var n=this.size,r=this._head;return t.__iterate((function(e){n++,r={value:e,next:r}}),!0),this.__ownerID?(this.size=n,this._head=r,this.__hash=void 0,this.__altered=!0,this):un(n,r)},t.prototype.pop=function(){return this.slice(1)},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):ln()},t.prototype.slice=function(t,n){if(l(t,n,this.size))return this;var r=c(t,this.size);if(d(n,this.size)!==this.size)return e.prototype.slice.call(this,t,n);for(var o=this.size-r,s=this._head;r--;)s=s.next;return this.__ownerID?(this.size=o,this._head=s,this.__hash=void 0,this.__altered=!0,this):un(o,s)},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?un(this.size,this._head,e,this.__hash):0===this.size?ln():(this.__ownerID=e,this.__altered=!1,this)},t.prototype.__iterate=function(e,t){var n=this;if(t)return new F(this.toArray()).__iterate((function(t,r){return e(t,r,n)}),t);for(var r=0,o=this._head;o&&!1!==e(o.value,r++,this);)o=o.next;return r},t.prototype.__iterator=function(e,t){if(t)return new F(this.toArray()).__iterator(e,t);var n=0,r=this._head;return new j((function(){if(r){var t=r.value;return r=r.next,T(e,n++,t)}return{value:void 0,done:!0}}))},t}(w);on.isStack=rn;var sn,an=on.prototype;function un(e,t,n,r){var o=Object.create(an);return o.size=e,o._head=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function ln(){return sn||(sn=un(0))}an["@@__IMMUTABLE_STACK__@@"]=!0,an.shift=an.pop,an.unshift=an.push,an.unshiftAll=an.pushAll,an.withMutations=ft,an.wasAltered=mt,an.asImmutable=pt,an["@@transducer/init"]=an.asMutable=ht,an["@@transducer/step"]=function(e,t){return e.unshift(t)},an["@@transducer/result"]=function(e){return e.asImmutable()};function cn(e){return Boolean(e&&e["@@__IMMUTABLE_SET__@@"])}function dn(e){return cn(e)&&S(e)}function fn(e,t){if(e===t)return!0;if(!p(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||m(e)!==m(t)||g(e)!==g(t)||S(e)!==S(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!b(e);if(S(e)){var o=e.entries();return t.every((function(e,t){var r=o.next().value;return r&&Z(r[1],e)&&(n||Z(r[0],t))}))&&o.next().done}var s=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{s=!0;var a=e;e=t,t=a}var i=!0,u=t.__iterate((function(t,o){if(n?!e.has(t):s?!Z(t,e.get(o,r)):!Z(e.get(o,r),t))return i=!1,!1}));return i&&e.size===u}function hn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(n),e}function pn(e){if(!e||"object"!=typeof e)return e;if(!p(e)){if(!Fe(e))return e;e=M(e)}if(m(e)){var t={};return e.__iterate((function(e,n){t[n]=pn(e)})),t}var n=[];return e.__iterate((function(e){n.push(pn(e))})),n}var mn=function(e){function t(t){return null==t?wn():cn(t)&&!S(t)?t:wn().withMutations((function(n){var r=e(t);Be(r.size),r.forEach((function(e){return n.add(e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(e){return this(y(e).keySeq())},t.intersect=function(e){return(e=v(e).toArray()).length?bn.intersect.apply(t(e.pop()),e):wn()},t.union=function(e){return(e=v(e).toArray()).length?bn.union.apply(t(e.pop()),e):wn()},t.prototype.toString=function(){return this.__toString("Set {","}")},t.prototype.has=function(e){return this._map.has(e)},t.prototype.add=function(e){return vn(this,this._map.set(e,e))},t.prototype.remove=function(e){return vn(this,this._map.remove(e))},t.prototype.clear=function(){return vn(this,this._map.clear())},t.prototype.map=function(e,t){var n=this,r=[],o=[];return this.forEach((function(s){var a=e.call(t,s,s,n);a!==s&&(r.push(s),o.push(a))})),this.withMutations((function(e){r.forEach((function(t){return e.remove(t)})),o.forEach((function(t){return e.add(t)}))}))},t.prototype.union=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return 0===(t=t.filter((function(e){return 0!==e.size}))).length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations((function(n){for(var r=0;r=0&&t=0&&n>>-15,461845907),t=ee(t<<13|t>>>-13,5),t=ee((t=(t+3864292196|0)^e)^t>>>16,2246822507),t=te((t=ee(t^t>>>13,3266489909))^t>>>16)}(e.__iterate(n?t?function(e,t){r=31*r+Dn(re(e),re(t))|0}:function(e,t){r=r+Dn(re(e),re(t))|0}:t?function(e){r=31*r+re(e)|0}:function(e){r=r+re(e)|0}),r)}(this))}});var En=v.prototype;En["@@__IMMUTABLE_ITERABLE__@@"]=!0,En[k]=En.values,En.toJSON=En.toArray,En.__toStringMapper=He,En.inspect=En.toSource=function(){return this.toString()},En.chain=En.flatMap,En.contains=En.includes,hn(y,{flip:function(){return qe(this,ye(this))},mapEntries:function(e,t){var n=this,r=0;return qe(this,this.toSeq().map((function(o,s){return e.call(t,[s,o],r++,n)})).fromEntrySeq())},mapKeys:function(e,t){var n=this;return qe(this,this.toSeq().flip().map((function(r,o){return e.call(t,r,o,n)})).flip())}});var kn=y.prototype;kn["@@__IMMUTABLE_KEYED__@@"]=!0,kn[k]=En.entries,kn.toJSON=Sn,kn.__toStringMapper=function(e,t){return He(t)+": "+He(e)},hn(w,{toKeyedSeq:function(){return new me(this,!1)},filter:function(e,t){return qe(this,_e(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.lastKeyOf(e);return void 0===t?-1:t},reverse:function(){return qe(this,xe(this,!1))},slice:function(e,t){return qe(this,Ae(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(t||0,0),0===n||2===n&&!t)return this;e=c(e,e<0?this.count():this.size);var r=this.slice(0,e);return qe(this,1===n?r:r.concat(De(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.findLastEntry(e,t);return n?n[0]:-1},first:function(e){return this.get(0,e)},flatten:function(e){return qe(this,Se(this,e,!1))},get:function(e,t){return(e=i(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find((function(t,n){return n===e}),void 0,t)},has:function(e){return(e=i(this,e))>=0&&(void 0!==this.size?this.size===1/0||et?-1:0}function Dn(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}jn["@@__IMMUTABLE_INDEXED__@@"]=!0,jn[R]=!0,hn(x,{get:function(e,t){return this.has(e)?e:t},includes:function(e){return this.has(e)},keySeq:function(){return this.valueSeq()}}),x.prototype.has=En.includes,x.prototype.contains=x.prototype.includes,hn(B,y.prototype),hn(U,w.prototype),hn(z,x.prototype);var Mn=function(e){function t(e){return null==e?Fn():dn(e)?e:Fn().withMutations((function(t){var n=x(e);Be(n.size),n.forEach((function(e){return t.add(e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(e){return this(y(e).keySeq())},t.prototype.toString=function(){return this.__toString("OrderedSet {","}")},t}(mn);Mn.isOrderedSet=dn;var Bn,Un=Mn.prototype;function zn(e,t){var n=Object.create(Un);return n.size=e?e.size:0,n._map=e,n.__ownerID=t,n}function Fn(){return Bn||(Bn=zn(tn()))}Un[R]=!0,Un.zip=jn.zip,Un.zipWith=jn.zipWith,Un.__empty=Fn,Un.__make=zn;var Hn=function(e,t){var n,r=function(s){var a=this;if(s instanceof r)return s;if(!(this instanceof r))return new r(s);if(!n){n=!0;var i=Object.keys(e),u=o._indices={};o._name=t,o._keys=i,o._defaultValues=e;for(var l=0;l0?t:void 0}}},"./node_modules/i18next-browser-languagedetector/dist/commonjs/browserLookups/path.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"path",lookup:function(e){var t=void 0;if("undefined"!=typeof window){var n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(n instanceof Array)if("number"==typeof e.lookupFromPathIndex){if("string"!=typeof n[e.lookupFromPathIndex])return;t=n[e.lookupFromPathIndex].replace("/","")}else t=n[0].replace("/","")}return t}}},"./node_modules/i18next-browser-languagedetector/dist/commonjs/browserLookups/querystring.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"querystring",lookup:function(e){var t=void 0;if("undefined"!=typeof window)for(var n=window.location.search.substring(1).split("&"),r=0;r0)n[r].substring(0,o)===e.lookupQuerystring&&(t=n[r].substring(o+1))}return t}}},"./node_modules/i18next-browser-languagedetector/dist/commonjs/browserLookups/subdomain.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"subdomain",lookup:function(e){var t=void 0;if("undefined"!=typeof window){var n=window.location.href.match(/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/gi);n instanceof Array&&(t="number"==typeof e.lookupFromSubdomainIndex?n[e.lookupFromSubdomainIndex].replace("http://","").replace("https://","").replace(".",""):n[0].replace("http://","").replace("https://","").replace(".",""))}return t}}},"./node_modules/i18next-browser-languagedetector/dist/commonjs/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};h(this,e),this.type="languageDetector",this.detectors={},this.init(t,n)}return r(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.services=e,this.options=o.defaults(t,this.options||{},{order:["querystring","cookie","localStorage","navigator","htmlTag"],lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"]}),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(s.default),this.addDetector(a.default),this.addDetector(i.default),this.addDetector(u.default),this.addDetector(l.default),this.addDetector(c.default),this.addDetector(d.default)}},{key:"addDetector",value:function(e){this.detectors[e.name]=e}},{key:"detect",value:function(e){var t=this;e||(e=this.options.order);var n=[];e.forEach((function(e){if(t.detectors[e]){var r=t.detectors[e].lookup(t.options);r&&"string"==typeof r&&(r=[r]),r&&(n=n.concat(r))}}));var r=void 0;if(n.forEach((function(e){if(!r){var n=t.services.languageUtils.formatLanguageCode(e);t.services.languageUtils.isWhitelisted(n)&&(r=n)}})),!r){var o=this.i18nOptions.fallbackLng;"string"==typeof o&&(o=[o]),o||(o=[]),r="[object Array]"===Object.prototype.toString.apply(o)?o[0]:o[0]||o.default&&o.default[0]}return r}},{key:"cacheUserLanguage",value:function(e,t){var n=this;t||(t=this.options.caches),t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach((function(t){n.detectors[t]&&n.detectors[t].cacheUserLanguage(e,n.options)})))}}]),e}();p.type="languageDetector",t.default=p},"./node_modules/i18next-browser-languagedetector/dist/commonjs/utils.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaults=function(e){return o.call(s.call(arguments,1),(function(t){if(t)for(var n in t)void 0===e[n]&&(e[n]=t[n])})),e},t.extend=function(e){return o.call(s.call(arguments,1),(function(t){if(t)for(var n in t)e[n]=t[n]})),e};var r=[],o=r.forEach,s=r.slice},"./node_modules/i18next-browser-languagedetector/index.js":function(e,t,n){e.exports=n("./node_modules/i18next-browser-languagedetector/dist/commonjs/index.js").default},"./node_modules/i18next/dist/es/index.js":function(e,t,n){"use strict";n.d(t,"a",(function(){return Z})),n.d(t,"b",(function(){return ee}));var r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};o(this,e),this.init(t,n)}return e.prototype.init=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||s,this.options=t,this.debug=t.debug},e.prototype.setDebug=function(e){this.debug=e},e.prototype.log=function(){for(var e=arguments.length,t=Array(e),n=0;n-1&&n.observers[e].splice(r,1)}else delete n.observers[e]}))},e.prototype.emit=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r-1?e.replace(/###/g,"."):e}function o(){return!e||"string"==typeof e}for(var s="string"!=typeof t?[].concat(t):t.split(".");s.length>1;){if(o())return{};var a=r(s.shift());!e[a]&&n&&(e[a]=new n),e=e[a]}return o()?{}:{obj:e,k:r(s.shift())}}function d(e,t,n){var r=c(e,t,Object);r.obj[r.k]=n}function f(e,t){var n=c(e,t),r=n.obj,o=n.k;if(r)return r[o]}function h(e,t,n){for(var r in t)r in e?"string"==typeof e[r]||e[r]instanceof String||"string"==typeof t[r]||t[r]instanceof String?n&&(e[r]=t[r]):h(e[r],t[r],n):e[r]=t[r];return e}function p(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var m={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function g(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return m[e]})):e}var b=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};v(this,t);var o=y(this,e.call(this));return o.data=n||{},o.options=r,void 0===o.options.keySeparator&&(o.options.keySeparator="."),o}return w(t,e),t.prototype.addNamespaces=function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)},t.prototype.removeNamespaces=function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)},t.prototype.getResource=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=void 0!==r.keySeparator?r.keySeparator:this.options.keySeparator,s=[e,t];return n&&"string"!=typeof n&&(s=s.concat(n)),n&&"string"==typeof n&&(s=s.concat(o?n.split(o):n)),e.indexOf(".")>-1&&(s=e.split(".")),f(this.data,s)},t.prototype.addResource=function(e,t,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},s=this.options.keySeparator;void 0===s&&(s=".");var a=[e,t];n&&(a=a.concat(s?n.split(s):n)),e.indexOf(".")>-1&&(r=t,t=(a=e.split("."))[1]),this.addNamespaces(t),d(this.data,a,r),o.silent||this.emit("added",e,t,n,r)},t.prototype.addResources=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var o in n)"string"==typeof n[o]&&this.addResource(e,t,o,n[o],{silent:!0});r.silent||this.emit("added",e,t,n)},t.prototype.addResourceBundle=function(e,t,n,r,o){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},a=[e,t];e.indexOf(".")>-1&&(r=n,n=t,t=(a=e.split("."))[1]),this.addNamespaces(t);var i=f(this.data,a)||{};r?h(i,n,o):i=b({},i,n),d(this.data,a,i),s.silent||this.emit("added",e,t,n)},t.prototype.removeResourceBundle=function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)},t.prototype.hasResourceBundle=function(e,t){return void 0!==this.getResource(e,t)},t.prototype.getResourceBundle=function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?b({},this.getResource(e,t)):this.getResource(e,t)},t.prototype.getDataByLanguage=function(e){return this.data[e]},t.prototype.toJSON=function(){return this.data},t}(i),_={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,n,r,o){var s=this;return e.forEach((function(e){s.processors[e]&&(t=s.processors[e].process(t,n,r,o))})),t}},A=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};R(this,t);var o=S(this,e.call(this));return l(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat"],n,o),o.options=r,void 0===o.options.keySeparator&&(o.options.keySeparator="."),o.logger=a.create("translator"),o}return E(t,e),t.prototype.changeLanguage=function(e){e&&(this.language=e)},t.prototype.exists=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},n=this.resolve(e,t);return n&&void 0!==n.res},t.prototype.extractFromKey=function(e,t){var n=t.nsSeparator||this.options.nsSeparator;void 0===n&&(n=":");var r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,o=t.ns||this.options.defaultNS;if(n&&e.indexOf(n)>-1){var s=e.split(n);(n!==r||n===r&&this.options.ns.indexOf(s[0])>-1)&&(o=s.shift()),e=s.join(r)}return"string"==typeof o&&(o=[o]),{key:e,namespaces:o}},t.prototype.translate=function(e,t){var n=this;if("object"!==(void 0===t?"undefined":C(t))&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),t||(t={}),null==e||""===e)return"";"number"==typeof e&&(e=String(e)),"string"==typeof e&&(e=[e]);var r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,o=this.extractFromKey(e[e.length-1],t),s=o.key,a=o.namespaces,i=a[a.length-1],u=t.lng||this.language,l=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(u&&"cimode"===u.toLowerCase()){if(l){var c=t.nsSeparator||this.options.nsSeparator;return i+c+s}return s}var d=this.resolve(e,t),f=d&&d.res,h=d&&d.usedKey||s,p=Object.prototype.toString.apply(f),m=["[object Number]","[object Function]","[object RegExp]"],g=void 0!==t.joinArrays?t.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,v="string"!=typeof f&&"boolean"!=typeof f&&"number"!=typeof f;if(b&&f&&v&&m.indexOf(p)<0&&(!g||"[object Array]"!==p)){if(!t.returnObjects&&!this.options.returnObjects)return this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,f,t):"key '"+s+" ("+this.language+")' returned an object instead of string.";if(r){var y="[object Array]"===p?[]:{};for(var w in f)if(Object.prototype.hasOwnProperty.call(f,w)){var x=""+h+r+w;y[w]=this.translate(x,A({},t,{joinArrays:!1,ns:a})),y[w]===x&&(y[w]=f[w])}f=y}}else if(b&&g&&"[object Array]"===p)(f=f.join(g))&&(f=this.extendTranslation(f,e,t));else{var _=!1,R=!1;if(!this.isValidLookup(f)&&void 0!==t.defaultValue){if(_=!0,void 0!==t.count){var S=this.pluralResolver.getSuffix(u,t.count);f=t["defaultValue"+S]}f||(f=t.defaultValue)}this.isValidLookup(f)||(R=!0,f=s);var E=t.defaultValue&&t.defaultValue!==f&&this.options.updateMissing;if(R||_||E){this.logger.log(E?"updateKey":"missingKey",u,i,s,E?t.defaultValue:f);var k=[],j=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if("fallback"===this.options.saveMissingTo&&j&&j[0])for(var T=0;T1&&void 0!==arguments[1]?arguments[1]:{},r=void 0,o=void 0,s=void 0,a=void 0;return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!t.isValidLookup(r)){var i=t.extractFromKey(e,n),u=i.key;o=u;var l=i.namespaces;t.options.fallbackNS&&(l=l.concat(t.options.fallbackNS));var c=void 0!==n.count&&"string"!=typeof n.count,d=void 0!==n.context&&"string"==typeof n.context&&""!==n.context,f=n.lngs?n.lngs:t.languageUtils.toResolveHierarchy(n.lng||t.language,n.fallbackLng);l.forEach((function(e){t.isValidLookup(r)||(a=e,f.forEach((function(o){if(!t.isValidLookup(r)){s=o;var a=u,i=[a];if(t.i18nFormat&&t.i18nFormat.addLookupKeys)t.i18nFormat.addLookupKeys(i,u,o,e,n);else{var l=void 0;c&&(l=t.pluralResolver.getSuffix(o,n.count)),c&&d&&i.push(a+l),d&&i.push(a+=""+t.options.contextSeparator+n.context),c&&i.push(a+=l)}for(var f=void 0;f=i.pop();)t.isValidLookup(r)||(r=t.getResource(o,e,f,n))}})))}))}})),{res:r,usedKey:o,usedLng:s,usedNS:a}},t.prototype.isValidLookup=function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)},t.prototype.getResource=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)},t}(i);function j(e){return e.charAt(0).toUpperCase()+e.slice(1)}var T=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options=t,this.whitelist=this.options.whitelist||!1,this.logger=a.create("languageUtils")}return e.prototype.getScriptPartFromCode=function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length?null:(t.pop(),this.formatLanguageCode(t.join("-")))},e.prototype.getLanguagePartFromCode=function(e){if(!e||e.indexOf("-")<0)return e;var t=e.split("-");return this.formatLanguageCode(t[0])},e.prototype.formatLanguageCode=function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],n=e.split("-");return this.options.lowerCaseLng?n=n.map((function(e){return e.toLowerCase()})):2===n.length?(n[0]=n[0].toLowerCase(),n[1]=n[1].toUpperCase(),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=j(n[1].toLowerCase()))):3===n.length&&(n[0]=n[0].toLowerCase(),2===n[1].length&&(n[1]=n[1].toUpperCase()),"sgn"!==n[0]&&2===n[2].length&&(n[2]=n[2].toUpperCase()),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=j(n[1].toLowerCase())),t.indexOf(n[2].toLowerCase())>-1&&(n[2]=j(n[2].toLowerCase()))),n.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e},e.prototype.isWhitelisted=function(e){return("languageOnly"===this.options.load||this.options.nonExplicitWhitelist)&&(e=this.getLanguagePartFromCode(e)),!this.whitelist||!this.whitelist.length||this.whitelist.indexOf(e)>-1},e.prototype.getFallbackCodes=function(e,t){if(!e)return[];if("string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var n=e[t];return n||(n=e[this.getScriptPartFromCode(t)]),n||(n=e[this.formatLanguageCode(t)]),n||(n=e.default),n||[]},e.prototype.toResolveHierarchy=function(e,t){var n=this,r=this.getFallbackCodes(t||this.options.fallbackLng||[],e),o=[],s=function(e){e&&(n.isWhitelisted(e)?o.push(e):n.logger.warn("rejecting non-whitelisted language code: "+e))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&s(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&s(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&s(this.getLanguagePartFromCode(e))):"string"==typeof e&&s(this.formatLanguageCode(e)),r.forEach((function(e){o.indexOf(e)<0&&s(n.formatLanguageCode(e))})),o},e}();function q(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var P=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","he","hi","hu","hy","ia","it","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","id","ja","jbo","ka","kk","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21}],L={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0===e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0===e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0===e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1===e?0:2===e?1:(e<0||e>10)&&e%10==0?2:3)}};function O(){var e={};return P.forEach((function(t){t.lngs.forEach((function(n){e[n]={numbers:t.nr,plurals:L[t.fc]}}))})),e}var I=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};q(this,e),this.languageUtils=t,this.options=n,this.logger=a.create("pluralResolver"),this.rules=O()}return e.prototype.addRule=function(e,t){this.rules[e]=t},e.prototype.getRule=function(e){return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]},e.prototype.needsPlural=function(e){var t=this.getRule(e);return t&&t.numbers.length>1},e.prototype.getPluralFormsOfKey=function(e,t){var n=this,r=[],o=this.getRule(e);return o?(o.numbers.forEach((function(o){var s=n.getSuffix(e,o);r.push(""+t+s)})),r):r},e.prototype.getSuffix=function(e,t){var n=this,r=this.getRule(e);if(r){var o=r.noAbs?r.plurals(t):r.plurals(Math.abs(t)),s=r.numbers[o];this.options.simplifyPluralSuffix&&2===r.numbers.length&&1===r.numbers[0]&&(2===s?s="plural":1===s&&(s=""));var a=function(){return n.options.prepend&&s.toString()?n.options.prepend+s.toString():s.toString()};return"v1"===this.options.compatibilityJSON?1===s?"":"number"==typeof s?"_plural_"+s.toString():a():"v2"===this.options.compatibilityJSON&&2===r.numbers.length&&1===r.numbers[0]||this.options.simplifyPluralSuffix&&2===r.numbers.length&&1===r.numbers[0]?a():this.options.prepend&&o.toString()?this.options.prepend+o.toString():o.toString()}return this.logger.warn("no plural rule found for: "+e),""},e}(),N=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};D(this,e),this.logger=a.create("interpolator"),this.init(t,!0)}return e.prototype.init=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];t&&(this.options=e,this.format=e.interpolation&&e.interpolation.format||function(e){return e}),e.interpolation||(e.interpolation={escapeValue:!0});var n=e.interpolation;this.escape=void 0!==n.escape?n.escape:g,this.escapeValue=void 0===n.escapeValue||n.escapeValue,this.useRawValueToEscape=void 0!==n.useRawValueToEscape&&n.useRawValueToEscape,this.prefix=n.prefix?p(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?p(n.suffix):n.suffixEscaped||"}}",this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||",",this.unescapePrefix=n.unescapeSuffix?"":n.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":n.unescapeSuffix||"",this.nestingPrefix=n.nestingPrefix?p(n.nestingPrefix):n.nestingPrefixEscaped||p("$t("),this.nestingSuffix=n.nestingSuffix?p(n.nestingSuffix):n.nestingSuffixEscaped||p(")"),this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.resetRegExp()},e.prototype.reset=function(){this.options&&this.init(this.options)},e.prototype.resetRegExp=function(){var e=this.prefix+"(.+?)"+this.suffix;this.regexp=new RegExp(e,"g");var t=""+this.prefix+this.unescapePrefix+"(.+?)"+this.unescapeSuffix+this.suffix;this.regexpUnescape=new RegExp(t,"g");var n=this.nestingPrefix+"(.+?)"+this.nestingSuffix;this.nestingRegexp=new RegExp(n,"g")},e.prototype.interpolate=function(e,t,n,r){var o=this,s=void 0,a=void 0,i=void 0;function l(e){return e.replace(/\$/g,"$$$$")}var c=function(e){if(e.indexOf(o.formatSeparator)<0)return f(t,e);var r=e.split(o.formatSeparator),s=r.shift().trim(),a=r.join(o.formatSeparator).trim();return o.format(f(t,s),a,n)};this.resetRegExp();var d=r&&r.missingInterpolationHandler||this.options.missingInterpolationHandler;for(i=0;(s=this.regexpUnescape.exec(e))&&(a=c(s[1].trim()),e=e.replace(s[0],a),this.regexpUnescape.lastIndex=0,!(++i>=this.maxReplaces)););for(i=0;s=this.regexp.exec(e);){if(void 0===(a=c(s[1].trim())))if("function"==typeof d){var h=d(e,s);a="string"==typeof h?h:""}else this.logger.warn("missed to pass in variable "+s[1]+" for interpolating "+e),a="";else"string"==typeof a||this.useRawValueToEscape||(a=u(a));if(a=this.escapeValue?l(this.escape(a)):l(a),e=e.replace(s[0],a),this.regexp.lastIndex=0,++i>=this.maxReplaces)break}return e},e.prototype.nest=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=void 0,o=void 0,s=N({},n);function a(e,t){if(e.indexOf(",")<0)return e;var n=e.split(",");e=n.shift();var r=n.join(",");r=(r=this.interpolate(r,s)).replace(/'/g,'"');try{s=JSON.parse(r),t&&(s=N({},t,s))}catch(t){this.logger.error("failed parsing options string in nesting for key "+e,t)}return e}for(s.applyPostProcessor=!1;r=this.nestingRegexp.exec(e);){if((o=t(a.call(this,r[1].trim(),s),s))&&r[0]===e&&"string"!=typeof o)return o;"string"!=typeof o&&(o=u(o)),o||(this.logger.warn("missed to resolve "+r[1]+" for nesting "+e),o=""),e=e.replace(r[0],o),this.regexp.lastIndex=0}return e},e}(),U=Object.assign||function(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{};z(this,t);var i=F(this,e.call(this));return i.backend=n,i.store=r,i.languageUtils=o.languageUtils,i.options=s,i.logger=a.create("backendConnector"),i.state={},i.queue=[],i.backend&&i.backend.init&&i.backend.init(o,s.backend,s),i}return H(t,e),t.prototype.queueLoad=function(e,t,n,r){var o=this,s=[],a=[],i=[],u=[];return e.forEach((function(e){var r=!0;t.forEach((function(t){var i=e+"|"+t;!n.reload&&o.store.hasResourceBundle(e,t)?o.state[i]=2:o.state[i]<0||(1===o.state[i]?a.indexOf(i)<0&&a.push(i):(o.state[i]=1,r=!1,a.indexOf(i)<0&&a.push(i),s.indexOf(i)<0&&s.push(i),u.indexOf(t)<0&&u.push(t)))})),r||i.push(e)})),(s.length||a.length)&&this.queue.push({pending:a,loaded:{},errors:[],callback:r}),{toLoad:s,pending:a,toLoadLanguages:i,toLoadNamespaces:u}},t.prototype.loaded=function(e,t,n){var r=e.split("|"),o=B(r,2),s=o[0],a=o[1];t&&this.emit("failedLoading",s,a,t),n&&this.store.addResourceBundle(s,a,n),this.state[e]=t?-1:2;var i={};this.queue.forEach((function(n){var r,o,u,l,d,f;r=n.loaded,o=a,l=c(r,[s],Object),d=l.obj,f=l.k,d[f]=d[f]||[],u&&(d[f]=d[f].concat(o)),u||d[f].push(o),function(e,t){for(var n=e.indexOf(t);-1!==n;)e.splice(n,1),n=e.indexOf(t)}(n.pending,e),t&&n.errors.push(t),0!==n.pending.length||n.done||(Object.keys(n.loaded).forEach((function(e){i[e]||(i[e]=[]),n.loaded[e].length&&n.loaded[e].forEach((function(t){i[e].indexOf(t)<0&&i[e].push(t)}))})),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())})),this.emit("loaded",i),this.queue=this.queue.filter((function(e){return!e.done}))},t.prototype.read=function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=this,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:250,a=arguments[5];return e.length?this.backend[n](e,t,(function(i,u){i&&u&&r<5?setTimeout((function(){o.read.call(o,e,t,n,r+1,2*s,a)}),s):a(i,u)})):a(null,{})},t.prototype.prepareLoading=function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments[3];if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),o&&o();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var s=this.queueLoad(e,t,r,o);if(!s.toLoad.length)return s.pending.length||o(),null;s.toLoad.forEach((function(e){n.loadOne(e)}))},t.prototype.load=function(e,t,n){this.prepareLoading(e,t,{},n)},t.prototype.reload=function(e,t,n){this.prepareLoading(e,t,{reload:!0},n)},t.prototype.loadOne=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=e.split("|"),o=B(r,2),s=o[0],a=o[1];this.read(s,a,"read",null,null,(function(r,o){r&&t.logger.warn(n+"loading namespace "+a+" for language "+s+" failed",r),!r&&o&&t.logger.log(n+"loaded namespace "+a+" for language "+s,o),t.loaded(e,r,o)}))},t.prototype.saveMissing=function(e,t,n,r,o){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.backend&&this.backend.create&&this.backend.create(e,t,n,r,null,U({},s,{isUpdate:o})),e&&e[0]&&this.store.addResource(e[0],t,n,r)},t}(i);function $(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.whitelist&&e.whitelist.indexOf("cimode")<0&&(e.whitelist=e.whitelist.concat(["cimode"])),e}var J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},W=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},r=arguments[1];Y(this,t);var o=V(this,e.call(this));if(o.options=$(n),o.services={},o.logger=a,o.modules={external:[]},r&&!o.isInitialized&&!n.isClone){var s;if(!o.options.initImmediate)return s=o.init(n,r),V(o,s);setTimeout((function(){o.init(n,r)}),0)}return o}return K(t,e),t.prototype.init=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments[1];function r(e){return e?"function"==typeof e?new e:e:null}if("function"==typeof t&&(n=t,t={}),this.options=W({},{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:function(){},parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};return e[1]&&(t.defaultValue=e[1]),e[2]&&(t.tDescription=e[2]),t},interpolation:{escapeValue:!0,format:function(e,t,n){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",maxReplaces:1e3}},this.options,$(t)),this.format=this.options.interpolation.format,n||(n=G),!this.options.isClone){this.modules.logger?a.init(r(this.modules.logger),this.options):a.init(null,this.options);var o=new T(this.options);this.store=new x(this.options.resources,this.options);var s=this.services;s.logger=a,s.resourceStore=this.store,s.languageUtils=o,s.pluralResolver=new I(o,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),s.interpolator=new M(this.options),s.backendConnector=new Q(r(this.modules.backend),s.resourceStore,s,this.options),s.backendConnector.on("*",(function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o1?n-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:G;if(this.options.resources)t(null);else{if(this.language&&"cimode"===this.language.toLowerCase())return t();var n=[],r=function(t){t&&e.services.languageUtils.toResolveHierarchy(t).forEach((function(e){n.indexOf(e)<0&&n.push(e)}))};if(this.language)r(this.language);else{var o=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);o.forEach((function(e){return r(e)}))}this.options.preload&&this.options.preload.forEach((function(e){return r(e)})),this.services.backendConnector.load(n,this.options.ns,t)}},t.prototype.reloadResources=function(e,t,n){e||(e=this.languages),t||(t=this.options.ns),n||(n=function(){}),this.services.backendConnector.reload(e,t,n)},t.prototype.use=function(e){return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&_.addPostProcessor(e),"3rdParty"===e.type&&this.modules.external.push(e),this},t.prototype.changeLanguage=function(e,t){var n=this,r=function(e){e&&(n.language=e,n.languages=n.services.languageUtils.toResolveHierarchy(e),n.translator.language||n.translator.changeLanguage(e),n.services.languageDetector&&n.services.languageDetector.cacheUserLanguage(e)),n.loadResources((function(r){!function(e,r){n.translator.changeLanguage(r),r&&(n.emit("languageChanged",r),n.logger.log("languageChanged",r)),t&&t(e,(function(){return n.t.apply(n,arguments)}))}(r,e)}))};e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(r):r(e):r(this.services.languageDetector.detect())},t.prototype.getFixedT=function(e,t){var n=this,r=function e(t,r){for(var o=arguments.length,s=Array(o>2?o-2:0),a=2;a0?this.languages[0]:this.language),!e)return"rtl";return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>=0?"rtl":"ltr"},t.prototype.createInstance=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments[1];return new t(e,n)},t.prototype.cloneInstance=function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:G,o=W({},this.options,n,{isClone:!0}),s=new t(o),a=["store","services","language"];return a.forEach((function(t){s[t]=e[t]})),s.translator=new k(s.services,s.options),s.translator.on("*",(function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?a(e)+t:t}function u(){return!0}function l(e,t,n){return(0===e&&!h(e)||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function c(e,t){return f(e,t,0)}function d(e,t){return f(e,t,t)}function f(e,t,n){return void 0===e?n:h(e)?t===1/0?t:0|Math.max(0,t+e):void 0===t||t===e?e:0|Math.min(t,e)}function h(e){return e<0||0===e&&1/e==-1/0}function p(e){return Boolean(e&&e["@@__IMMUTABLE_ITERABLE__@@"])}function m(e){return Boolean(e&&e["@@__IMMUTABLE_KEYED__@@"])}function g(e){return Boolean(e&&e["@@__IMMUTABLE_INDEXED__@@"])}function b(e){return m(e)||g(e)}var v=function(e){return p(e)?e:M(e)},y=function(e){function t(e){return m(e)?e:U(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(v),w=function(e){function t(e){return g(e)?e:B(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(v),x=function(e){function t(e){return p(e)&&!b(e)?e:z(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(v);v.Keyed=y,v.Indexed=w,v.Set=x;function _(e){return Boolean(e&&e["@@__IMMUTABLE_SEQ__@@"])}function A(e){return Boolean(e&&e["@@__IMMUTABLE_RECORD__@@"])}function C(e){return p(e)||A(e)}var R="@@__IMMUTABLE_ORDERED__@@";function S(e){return Boolean(e&&e[R])}var E="function"==typeof Symbol&&Symbol.iterator,k=E||"@@iterator",j=function(e){this.next=e};function T(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function q(){return{value:void 0,done:!0}}function P(e){return!!I(e)}function L(e){return e&&"function"==typeof e.next}function O(e){var t=I(e);return t&&t.call(e)}function I(e){var t=e&&(E&&e[E]||e["@@iterator"]);if("function"==typeof t)return t}j.prototype.toString=function(){return"[Iterator]"},j.KEYS=0,j.VALUES=1,j.ENTRIES=2,j.prototype.inspect=j.prototype.toSource=function(){return this.toString()},j.prototype[k]=function(){return this};var N=Object.prototype.hasOwnProperty;function D(e){return!(!Array.isArray(e)&&"string"!=typeof e)||e&&"object"==typeof e&&Number.isInteger(e.length)&&e.length>=0&&(0===e.length?1===Object.keys(e).length:e.hasOwnProperty(e.length-1))}var M=function(e){function t(e){return null==e?J():C(e)?e.toSeq():function(e){var t=V(e);if(t)return t;if("object"==typeof e)return new H(e);throw new TypeError("Expected Array or collection object of values, or keyed object: "+e)}(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq {","}")},t.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},t.prototype.__iterate=function(e,t){var n=this._cache;if(n){for(var r=n.length,o=0;o!==r;){var s=n[t?r-++o:o++];if(!1===e(s[1],s[0],this))break}return o}return this.__iterateUncached(e,t)},t.prototype.__iterator=function(e,t){var n=this._cache;if(n){var r=n.length,o=0;return new j((function(){if(o===r)return{value:void 0,done:!0};var s=n[t?r-++o:o++];return T(e,s[0],s[1])}))}return this.__iteratorUncached(e,t)},t}(v),U=function(e){function t(e){return null==e?J().toKeyedSeq():p(e)?m(e)?e.toSeq():e.fromEntrySeq():A(e)?e.toSeq():W(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.toKeyedSeq=function(){return this},t}(M),B=function(e){function t(e){return null==e?J():p(e)?m(e)?e.entrySeq():e.toIndexedSeq():A(e)?e.toSeq().entrySeq():Y(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toIndexedSeq=function(){return this},t.prototype.toString=function(){return this.__toString("Seq [","]")},t}(M),z=function(e){function t(e){return(p(e)&&!b(e)?e:B(e)).toSetSeq()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return t(arguments)},t.prototype.toSetSeq=function(){return this},t}(M);M.isSeq=_,M.Keyed=U,M.Set=z,M.Indexed=B,M.prototype["@@__IMMUTABLE_SEQ__@@"]=!0;var F=function(e){function t(e){this._array=e,this.size=e.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(e,t){return this.has(e)?this._array[i(this,e)]:t},t.prototype.__iterate=function(e,t){for(var n=this._array,r=n.length,o=0;o!==r;){var s=t?r-++o:o++;if(!1===e(n[s],s,this))break}return o},t.prototype.__iterator=function(e,t){var n=this._array,r=n.length,o=0;return new j((function(){if(o===r)return{value:void 0,done:!0};var s=t?r-++o:o++;return T(e,s,n[s])}))},t}(B),H=function(e){function t(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},t.prototype.has=function(e){return N.call(this._object,e)},t.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length,s=0;s!==o;){var a=r[t?o-++s:s++];if(!1===e(n[a],a,this))break}return s},t.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length,s=0;return new j((function(){if(s===o)return{value:void 0,done:!0};var a=r[t?o-++s:s++];return T(e,a,n[a])}))},t}(U);H.prototype[R]=!0;var Q,$=function(e){function t(e){this._collection=e,this.size=e.length||e.size}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=O(this._collection),r=0;if(L(n))for(var o;!(o=n.next()).done&&!1!==e(o.value,r++,this););return r},t.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=O(this._collection);if(!L(n))return new j(q);var r=0;return new j((function(){var t=n.next();return t.done?t:T(e,r++,t.value)}))},t}(B);function J(){return Q||(Q=new F([]))}function W(e){var t=Array.isArray(e)?new F(e):P(e)?new $(e):void 0;if(t)return t.fromEntrySeq();if("object"==typeof e)return new H(e);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+e)}function Y(e){var t=V(e);if(t)return t;throw new TypeError("Expected Array or collection object of values: "+e)}function V(e){return D(e)?new F(e):P(e)?new $(e):void 0}function K(e){return Boolean(e&&e["@@__IMMUTABLE_MAP__@@"])}function G(e){return K(e)&&S(e)}function X(e){return Boolean(e&&"function"==typeof e.equals&&"function"==typeof e.hashCode)}function Z(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if((e=e.valueOf())===(t=t.valueOf())||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!!(X(e)&&X(t)&&e.equals(t))}var ee="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var n=65535&(e|=0),r=65535&(t|=0);return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0};function te(e){return e>>>1&1073741824|3221225471&e}var ne=Object.prototype.valueOf;function re(e){switch(typeof e){case"boolean":return e?1108378657:1108378656;case"number":return function(e){if(e!=e||e===1/0)return 0;var t=0|e;t!==e&&(t^=4294967295*e);for(;e>4294967295;)t^=e/=4294967295;return te(t)}(e);case"string":return e.length>de?function(e){var t=pe[e];void 0===t&&(t=oe(e),he===fe&&(he=0,pe={}),he++,pe[e]=t);return t}(e):oe(e);case"object":case"function":return null===e?1108378658:"function"==typeof e.hashCode?te(e.hashCode(e)):(e.valueOf!==ne&&"function"==typeof e.valueOf&&(e=e.valueOf(e)),function(e){var t;if(ue&&void 0!==(t=ie.get(e)))return t;if(void 0!==(t=e[ce]))return t;if(!ae){if(void 0!==(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[ce]))return t;if(void 0!==(t=function(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}(e)))return t}t=++le,1073741824&le&&(le=0);if(ue)ie.set(e,t);else{if(void 0!==se&&!1===se(e))throw new Error("Non-extensible objects are not allowed as keys.");if(ae)Object.defineProperty(e,ce,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(void 0!==e.propertyIsEnumerable&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[ce]=t;else{if(void 0===e.nodeType)throw new Error("Unable to set a non-enumerable property on object.");e[ce]=t}}return t}(e));case"undefined":return 1108378659;default:if("function"==typeof e.toString)return oe(e.toString());throw new Error("Value type "+typeof e+" cannot be hashed.")}}function oe(e){for(var t=0,n=0;n=0&&(h.get=function(t,n){return(t=i(this,t))>=0&&tu)return{value:void 0,done:!0};var e=o.next();return r||1===t||e.done?e:T(t,i-1,0===t?void 0:e.value[1],e)}))},h}function Ce(e,t,n,r){var o=Oe(e);return o.__iterateUncached=function(o,s){var a=this;if(s)return this.cacheResult().__iterate(o,s);var i=!0,u=0;return e.__iterate((function(e,s,l){if(!i||!(i=t.call(n,e,s,l)))return u++,o(e,r?s:u-1,a)})),u},o.__iteratorUncached=function(o,s){var a=this;if(s)return this.cacheResult().__iterator(o,s);var i=e.__iterator(2,s),u=!0,l=0;return new j((function(){var e,s,c;do{if((e=i.next()).done)return r||1===o?e:T(o,l++,0===o?void 0:e.value[1],e);var d=e.value;s=d[0],c=d[1],u&&(u=t.call(n,c,s,a))}while(u);return 2===o?e:T(o,s,c,e)}))},o}function Re(e,t){var n=m(e),r=[e].concat(t).map((function(e){return p(e)?n&&(e=y(e)):e=n?W(e):Y(Array.isArray(e)?e:[e]),e})).filter((function(e){return 0!==e.size}));if(0===r.length)return e;if(1===r.length){var o=r[0];if(o===e||n&&m(o)||g(e)&&g(o))return o}var s=new F(r);return n?s=s.toKeyedSeq():g(e)||(s=s.toSetSeq()),(s=s.flatten(!0)).size=r.reduce((function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}}),0),s}function Se(e,t,n){var r=Oe(e);return r.__iterateUncached=function(o,s){if(s)return this.cacheResult().__iterate(o,s);var a=0,i=!1;return function e(u,l){u.__iterate((function(s,u){return(!t||l0}function Te(e,t,n,r){var o=Oe(e),s=new F(n).map((function(e){return e.size}));return o.size=r?s.max():s.min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(1,t),o=0;!(n=r.next()).done&&!1!==e(n.value,o++,this););return o},o.__iteratorUncached=function(e,o){var s=n.map((function(e){return e=v(e),O(o?e.reverse():e)})),a=0,i=!1;return new j((function(){var n;return i||(n=s.map((function(e){return e.next()})),i=r?n.every((function(e){return e.done})):n.some((function(e){return e.done}))),i?{value:void 0,done:!0}:T(e,a++,t.apply(null,n.map((function(e){return e.value}))))}))},o}function qe(e,t){return e===t?e:_(e)?t:e.constructor(t)}function Pe(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Le(e){return m(e)?y:g(e)?w:x}function Oe(e){return Object.create((m(e)?U:g(e)?B:z).prototype)}function Ie(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):M.prototype.cacheResult.call(this)}function Ne(e,t){return void 0===e&&void 0===t?0:void 0===e?1:void 0===t?-1:e>t?1:e0;)t[n]=arguments[n+1];if("function"!=typeof e)throw new TypeError("Invalid merger function: "+e);return st(this,t,e)}function st(e,t,n){for(var o=[],s=0;s0;)t[n]=arguments[n+1];return at(this,t,e)}function ct(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return Ve(this,e,kt(),(function(e){return it(e,t)}))}function dt(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return Ve(this,e,kt(),(function(e){return at(e,t)}))}function ft(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this}function ht(){return this.__ownerID?this:this.__ensureOwner(new s)}function pt(){return this.__ensureOwner()}function mt(){return this.__altered}ge.prototype.cacheResult=me.prototype.cacheResult=be.prototype.cacheResult=ve.prototype.cacheResult=Ie;var gt=function(e){function t(t){return null==t?kt():K(t)&&!S(t)?t:kt().withMutations((function(n){var r=e(t);Ue(r.size),r.forEach((function(e,t){return n.set(t,e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return kt().withMutations((function(t){for(var n=0;n=e.length)throw new Error("Missing value for key: "+e[n]);t.set(e[n],e[n+1])}}))},t.prototype.toString=function(){return this.__toString("Map {","}")},t.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},t.prototype.set=function(e,t){return jt(this,e,t)},t.prototype.remove=function(e){return jt(this,e,r)},t.prototype.deleteAll=function(e){var t=v(e);return 0===t.size?this:this.withMutations((function(e){t.forEach((function(t){return e.remove(t)}))}))},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):kt()},t.prototype.sort=function(e){return Zt(Ee(this,e))},t.prototype.sortBy=function(e,t){return Zt(Ee(this,t,e))},t.prototype.map=function(e,t){return this.withMutations((function(n){n.forEach((function(r,o){n.set(o,e.call(t,r,o,n))}))}))},t.prototype.__iterator=function(e,t){return new Ct(this,e,t)},t.prototype.__iterate=function(e,t){var n=this,r=0;return this._root&&this._root.iterate((function(t){return r++,e(t[1],t[0],n)}),t),r},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Et(this.size,this._root,e,this.__hash):0===this.size?kt():(this.__ownerID=e,this.__altered=!1,this)},t}(y);gt.isMap=K;var bt=gt.prototype;bt["@@__IMMUTABLE_MAP__@@"]=!0,bt.delete=bt.remove,bt.removeAll=bt.deleteAll,bt.setIn=Ge,bt.removeIn=bt.deleteIn=Ze,bt.update=tt,bt.updateIn=nt,bt.merge=bt.concat=rt,bt.mergeWith=ot,bt.mergeDeep=ut,bt.mergeDeepWith=lt,bt.mergeIn=ct,bt.mergeDeepIn=dt,bt.withMutations=ft,bt.wasAltered=mt,bt.asImmutable=pt,bt["@@transducer/init"]=bt.asMutable=ht,bt["@@transducer/step"]=function(e,t){return e.set(t[0],t[1])},bt["@@transducer/result"]=function(e){return e.asImmutable()};var vt=function(e,t){this.ownerID=e,this.entries=t};vt.prototype.get=function(e,t,n,r){for(var o=this.entries,s=0,a=o.length;s=It)return function(e,t,n,r){e||(e=new s);for(var o=new _t(e,re(n),[n,r]),a=0;a>>e)),s=this.bitmap;return 0==(s&o)?r:this.nodes[Lt(s&o-1)].get(e+5,t,n,r)},yt.prototype.update=function(e,t,n,o,s,a,i){void 0===n&&(n=re(o));var u=31&(0===t?n:n>>>t),l=1<=Nt)return function(e,t,n,r,o){for(var s=0,a=new Array(32),i=0;0!==n;i++,n>>>=1)a[i]=1&n?t[s++]:void 0;return a[r]=o,new wt(e,s+1,a)}(e,h,c,u,m);if(d&&!m&&2===h.length&&qt(h[1^f]))return h[1^f];if(d&&m&&1===h.length&&qt(m))return m;var g=e&&e===this.ownerID,b=d?m?c:c^l:c|l,v=d?m?Ot(h,f,m,g):function(e,t,n){var r=e.length-1;if(n&&t===r)return e.pop(),e;for(var o=new Array(r),s=0,a=0;a>>e),s=this.nodes[o];return s?s.get(e+5,t,n,r):r},wt.prototype.update=function(e,t,n,o,s,a,i){void 0===n&&(n=re(o));var u=31&(0===t?n:n>>>t),l=s===r,c=this.nodes,d=c[u];if(l&&!d)return this;var f=Tt(d,e,t+5,n,o,s,a,i);if(f===d)return this;var h=this.count;if(d){if(!f&&--h>>n),i=31&(0===n?r:r>>>n),u=a===i?[Pt(e,t,n+5,r,o)]:(s=new _t(t,r,o),a>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)}function Ot(e,t,n,r){var o=r?e:De(e);return o[t]=n,o}var It=8,Nt=16,Dt=8;function Mt(e){return Boolean(e&&e["@@__IMMUTABLE_LIST__@@"])}var Ut=function(e){function t(t){var n=Jt();if(null==t)return n;if(Mt(t))return t;var r=e(t),o=r.size;return 0===o?n:(Ue(o),o>0&&o<32?$t(0,o,5,null,new zt(r.toArray())):n.withMutations((function(e){e.setSize(o),r.forEach((function(t,n){return e.set(n,t)}))})))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("List [","]")},t.prototype.get=function(e,t){if((e=i(this,e))>=0&&e=e.size||t<0)return e.withMutations((function(e){t<0?Kt(e,t).set(0,n):Kt(e,0,t+1).set(t,n)}));t+=e._origin;var r=e._tail,o=e._root,s={value:!1};t>=Gt(e._capacity)?r=Wt(r,e.__ownerID,0,t,n,s):o=Wt(o,e.__ownerID,e._level,t,n,s);if(!s.value)return e;if(e.__ownerID)return e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e;return $t(e._origin,e._capacity,e._level,o,r)}(this,e,t)},t.prototype.remove=function(e){return this.has(e)?0===e?this.shift():e===this.size-1?this.pop():this.splice(e,1):this},t.prototype.insert=function(e,t){return this.splice(e,0,t)},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=5,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):Jt()},t.prototype.push=function(){var e=arguments,t=this.size;return this.withMutations((function(n){Kt(n,0,t+e.length);for(var r=0;r>>t&31;if(r>=this.array.length)return new zt([],e);var o,s=0===r;if(t>0){var a=this.array[r];if((o=a&&a.removeBefore(e,t-5,n))===a&&s)return this}if(s&&!o)return this;var i=Yt(this,e);if(!s)for(var u=0;u>>t&31;if(o>=this.array.length)return this;if(t>0){var s=this.array[o];if((r=s&&s.removeAfter(e,t-5,n))===s&&o===this.array.length-1)return this}var a=Yt(this,e);return a.array.splice(o+1),r&&(a.array[o]=r),a};var Ft,Ht={};function Qt(e,t){var n=e._origin,r=e._capacity,o=Gt(r),s=e._tail;return a(e._root,e._level,0);function a(e,i,u){return 0===i?function(e,a){var i=a===o?s&&s.array:e&&e.array,u=a>n?0:n-a,l=r-a;l>32&&(l=32);return function(){if(u===l)return Ht;var e=t?--l:u++;return i&&i[e]}}(e,u):function(e,o,s){var i,u=e&&e.array,l=s>n?0:n-s>>o,c=1+(r-s>>o);c>32&&(c=32);return function(){for(;;){if(i){var e=i();if(e!==Ht)return e;i=null}if(l===c)return Ht;var n=t?--c:l++;i=a(u&&u[n],o-5,s+(n<>>n&31,l=e&&u0){var c=e&&e.array[u],d=Wt(c,t,n-5,r,s,a);return d===c?e:((i=Yt(e,t)).array[u]=d,i)}return l&&e.array[u]===s?e:(a&&o(a),i=Yt(e,t),void 0===s&&u===i.array.length-1?i.array.pop():i.array[u]=s,i)}function Yt(e,t){return t&&e&&t===e.ownerID?e:new zt(e?e.array.slice():[],t)}function Vt(e,t){if(t>=Gt(e._capacity))return e._tail;if(t<1<0;)n=n.array[t>>>r&31],r-=5;return n}}function Kt(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new s,o=e._origin,a=e._capacity,i=o+t,u=void 0===n?a:n<0?a+n:o+n;if(i===o&&u===a)return e;if(i>=u)return e.clear();for(var l=e._level,c=e._root,d=0;i+d<0;)c=new zt(c&&c.array.length?[void 0,c]:[],r),d+=1<<(l+=5);d&&(i+=d,o+=d,u+=d,a+=d);for(var f=Gt(a),h=Gt(u);h>=1<f?new zt([],r):p;if(p&&h>f&&i5;b-=5){var v=f>>>b&31;g=g.array[v]=Yt(g.array[v],r)}g.array[f>>>5&31]=p}if(u=h)i-=h,u-=h,l=5,c=null,m=m&&m.removeBefore(r,0,i);else if(i>o||h>>l&31;if(y!==h>>>l&31)break;y&&(d+=(1<o&&(c=c.removeBefore(r,l,i-d)),c&&h>>5<<5}var Xt,Zt=function(e){function t(e){return null==e?tn():G(e)?e:tn().withMutations((function(t){var n=y(e);Ue(n.size),n.forEach((function(e,n){return t.set(n,e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("OrderedMap {","}")},t.prototype.get=function(e,t){var n=this._map.get(e);return void 0!==n?this._list.get(n)[1]:t},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):tn()},t.prototype.set=function(e,t){return nn(this,e,t)},t.prototype.remove=function(e){return nn(this,e,r)},t.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},t.prototype.__iterate=function(e,t){var n=this;return this._list.__iterate((function(t){return t&&e(t[1],t[0],n)}),t)},t.prototype.__iterator=function(e,t){return this._list.fromEntrySeq().__iterator(e,t)},t.prototype.__ensureOwner=function(e){if(e===this.__ownerID)return this;var t=this._map.__ensureOwner(e),n=this._list.__ensureOwner(e);return e?en(t,n,e,this.__hash):0===this.size?tn():(this.__ownerID=e,this._map=t,this._list=n,this)},t}(gt);function en(e,t,n,r){var o=Object.create(Zt.prototype);return o.size=e?e.size:0,o._map=e,o._list=t,o.__ownerID=n,o.__hash=r,o}function tn(){return Xt||(Xt=en(kt(),Jt()))}function nn(e,t,n){var o,s,a=e._map,i=e._list,u=a.get(t),l=void 0!==u;if(n===r){if(!l)return e;i.size>=32&&i.size>=2*a.size?(o=(s=i.filter((function(e,t){return void 0!==e&&u!==t}))).toKeyedSeq().map((function(e){return e[0]})).flip().toMap(),e.__ownerID&&(o.__ownerID=s.__ownerID=e.__ownerID)):(o=a.remove(t),s=u===i.size-1?i.pop():i.set(u,void 0))}else if(l){if(n===i.get(u)[1])return e;o=a,s=i.set(u,[t,n])}else o=a.set(t,i.size),s=i.set(i.size,[t,n]);return e.__ownerID?(e.size=o.size,e._map=o,e._list=s,e.__hash=void 0,e):en(o,s)}Zt.isOrderedMap=G,Zt.prototype[R]=!0,Zt.prototype.delete=Zt.prototype.remove;function rn(e){return Boolean(e&&e["@@__IMMUTABLE_STACK__@@"])}var on=function(e){function t(e){return null==e?ln():rn(e)?e:ln().pushAll(e)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.prototype.toString=function(){return this.__toString("Stack [","]")},t.prototype.get=function(e,t){var n=this._head;for(e=i(this,e);n&&e--;)n=n.next;return n?n.value:t},t.prototype.peek=function(){return this._head&&this._head.value},t.prototype.push=function(){var e=arguments;if(0===arguments.length)return this;for(var t=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:e[r],next:n};return this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):un(t,n)},t.prototype.pushAll=function(t){if(0===(t=e(t)).size)return this;if(0===this.size&&rn(t))return t;Ue(t.size);var n=this.size,r=this._head;return t.__iterate((function(e){n++,r={value:e,next:r}}),!0),this.__ownerID?(this.size=n,this._head=r,this.__hash=void 0,this.__altered=!0,this):un(n,r)},t.prototype.pop=function(){return this.slice(1)},t.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):ln()},t.prototype.slice=function(t,n){if(l(t,n,this.size))return this;var r=c(t,this.size);if(d(n,this.size)!==this.size)return e.prototype.slice.call(this,t,n);for(var o=this.size-r,s=this._head;r--;)s=s.next;return this.__ownerID?(this.size=o,this._head=s,this.__hash=void 0,this.__altered=!0,this):un(o,s)},t.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?un(this.size,this._head,e,this.__hash):0===this.size?ln():(this.__ownerID=e,this.__altered=!1,this)},t.prototype.__iterate=function(e,t){var n=this;if(t)return new F(this.toArray()).__iterate((function(t,r){return e(t,r,n)}),t);for(var r=0,o=this._head;o&&!1!==e(o.value,r++,this);)o=o.next;return r},t.prototype.__iterator=function(e,t){if(t)return new F(this.toArray()).__iterator(e,t);var n=0,r=this._head;return new j((function(){if(r){var t=r.value;return r=r.next,T(e,n++,t)}return{value:void 0,done:!0}}))},t}(w);on.isStack=rn;var sn,an=on.prototype;function un(e,t,n,r){var o=Object.create(an);return o.size=e,o._head=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function ln(){return sn||(sn=un(0))}an["@@__IMMUTABLE_STACK__@@"]=!0,an.shift=an.pop,an.unshift=an.push,an.unshiftAll=an.pushAll,an.withMutations=ft,an.wasAltered=mt,an.asImmutable=pt,an["@@transducer/init"]=an.asMutable=ht,an["@@transducer/step"]=function(e,t){return e.unshift(t)},an["@@transducer/result"]=function(e){return e.asImmutable()};function cn(e){return Boolean(e&&e["@@__IMMUTABLE_SET__@@"])}function dn(e){return cn(e)&&S(e)}function fn(e,t){if(e===t)return!0;if(!p(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||m(e)!==m(t)||g(e)!==g(t)||S(e)!==S(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!b(e);if(S(e)){var o=e.entries();return t.every((function(e,t){var r=o.next().value;return r&&Z(r[1],e)&&(n||Z(r[0],t))}))&&o.next().done}var s=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{s=!0;var a=e;e=t,t=a}var i=!0,u=t.__iterate((function(t,o){if(n?!e.has(t):s?!Z(t,e.get(o,r)):!Z(e.get(o,r),t))return i=!1,!1}));return i&&e.size===u}function hn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(n),e}function pn(e){if(!e||"object"!=typeof e)return e;if(!p(e)){if(!Fe(e))return e;e=M(e)}if(m(e)){var t={};return e.__iterate((function(e,n){t[n]=pn(e)})),t}var n=[];return e.__iterate((function(e){n.push(pn(e))})),n}var mn=function(e){function t(t){return null==t?wn():cn(t)&&!S(t)?t:wn().withMutations((function(n){var r=e(t);Ue(r.size),r.forEach((function(e){return n.add(e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(e){return this(y(e).keySeq())},t.intersect=function(e){return(e=v(e).toArray()).length?bn.intersect.apply(t(e.pop()),e):wn()},t.union=function(e){return(e=v(e).toArray()).length?bn.union.apply(t(e.pop()),e):wn()},t.prototype.toString=function(){return this.__toString("Set {","}")},t.prototype.has=function(e){return this._map.has(e)},t.prototype.add=function(e){return vn(this,this._map.set(e,e))},t.prototype.remove=function(e){return vn(this,this._map.remove(e))},t.prototype.clear=function(){return vn(this,this._map.clear())},t.prototype.map=function(e,t){var n=this,r=[],o=[];return this.forEach((function(s){var a=e.call(t,s,s,n);a!==s&&(r.push(s),o.push(a))})),this.withMutations((function(e){r.forEach((function(t){return e.remove(t)})),o.forEach((function(t){return e.add(t)}))}))},t.prototype.union=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];return 0===(t=t.filter((function(e){return 0!==e.size}))).length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations((function(n){for(var r=0;r=0&&t=0&&n>>-15,461845907),t=ee(t<<13|t>>>-13,5),t=ee((t=(t+3864292196|0)^e)^t>>>16,2246822507),t=te((t=ee(t^t>>>13,3266489909))^t>>>16)}(e.__iterate(n?t?function(e,t){r=31*r+Dn(re(e),re(t))|0}:function(e,t){r=r+Dn(re(e),re(t))|0}:t?function(e){r=31*r+re(e)|0}:function(e){r=r+re(e)|0}),r)}(this))}});var En=v.prototype;En["@@__IMMUTABLE_ITERABLE__@@"]=!0,En[k]=En.values,En.toJSON=En.toArray,En.__toStringMapper=He,En.inspect=En.toSource=function(){return this.toString()},En.chain=En.flatMap,En.contains=En.includes,hn(y,{flip:function(){return qe(this,ye(this))},mapEntries:function(e,t){var n=this,r=0;return qe(this,this.toSeq().map((function(o,s){return e.call(t,[s,o],r++,n)})).fromEntrySeq())},mapKeys:function(e,t){var n=this;return qe(this,this.toSeq().flip().map((function(r,o){return e.call(t,r,o,n)})).flip())}});var kn=y.prototype;kn["@@__IMMUTABLE_KEYED__@@"]=!0,kn[k]=En.entries,kn.toJSON=Sn,kn.__toStringMapper=function(e,t){return He(t)+": "+He(e)},hn(w,{toKeyedSeq:function(){return new me(this,!1)},filter:function(e,t){return qe(this,_e(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.lastKeyOf(e);return void 0===t?-1:t},reverse:function(){return qe(this,xe(this,!1))},slice:function(e,t){return qe(this,Ae(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(t||0,0),0===n||2===n&&!t)return this;e=c(e,e<0?this.count():this.size);var r=this.slice(0,e);return qe(this,1===n?r:r.concat(De(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.findLastEntry(e,t);return n?n[0]:-1},first:function(e){return this.get(0,e)},flatten:function(e){return qe(this,Se(this,e,!1))},get:function(e,t){return(e=i(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find((function(t,n){return n===e}),void 0,t)},has:function(e){return(e=i(this,e))>=0&&(void 0!==this.size?this.size===1/0||et?-1:0}function Dn(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}jn["@@__IMMUTABLE_INDEXED__@@"]=!0,jn[R]=!0,hn(x,{get:function(e,t){return this.has(e)?e:t},includes:function(e){return this.has(e)},keySeq:function(){return this.valueSeq()}}),x.prototype.has=En.includes,x.prototype.contains=x.prototype.includes,hn(U,y.prototype),hn(B,w.prototype),hn(z,x.prototype);var Mn=function(e){function t(e){return null==e?Fn():dn(e)?e:Fn().withMutations((function(t){var n=x(e);Ue(n.size),n.forEach((function(e){return t.add(e)}))}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.of=function(){return this(arguments)},t.fromKeys=function(e){return this(y(e).keySeq())},t.prototype.toString=function(){return this.__toString("OrderedSet {","}")},t}(mn);Mn.isOrderedSet=dn;var Un,Bn=Mn.prototype;function zn(e,t){var n=Object.create(Bn);return n.size=e?e.size:0,n._map=e,n.__ownerID=t,n}function Fn(){return Un||(Un=zn(tn()))}Bn[R]=!0,Bn.zip=jn.zip,Bn.zipWith=jn.zipWith,Bn.__empty=Fn,Bn.__make=zn;var Hn=function(e,t){var n,r=function(s){var a=this;if(s instanceof r)return s;if(!(this instanceof r))return new r(s);if(!n){n=!0;var i=Object.keys(e),u=o._indices={};o._name=t,o._keys=i,o._defaultValues=e;for(var l=0;l+~]|"+D+")"+D+"*"),$=new RegExp(D+"|>"),J=new RegExp(U),W=new RegExp("^"+M+"$"),Y={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+B),PSEUDO:new RegExp("^"+U),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+D+"*(even|odd|(([+-]|)(\\d*)n|)"+D+"*(?:([+-]|)"+D+"*(\\d+)|))"+D+"*\\)|)","i"),bool:new RegExp("^(?:"+N+")$","i"),needsContext:new RegExp("^"+D+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+D+"*((?:-\\d)?\\d*)"+D+"*\\)|)(?=[^-]|$)","i")},V=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,G=/^h\d$/i,X=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+D+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,oe=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},se=function(){f()},ae=we((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{L.apply(T=O.call(x.childNodes),x.childNodes),T[x.childNodes.length].nodeType}catch(e){L={apply:T.length?function(e,t){P.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function ie(e,t,r,o){var s,i,l,c,d,p,b,v=t&&t.ownerDocument,x=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==x&&9!==x&&11!==x)return r;if(!o&&(f(t),t=t||h,m)){if(11!==x&&(d=Z.exec(e)))if(s=d[1]){if(9===x){if(!(l=t.getElementById(s)))return r;if(l.id===s)return r.push(l),r}else if(v&&(l=v.getElementById(s))&&y(t,l)&&l.id===s)return r.push(l),r}else{if(d[2])return L.apply(r,t.getElementsByTagName(e)),r;if((s=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(s)),r}if(n.qsa&&!E[e+" "]&&(!g||!g.test(e))&&(1!==x||"object"!==t.nodeName.toLowerCase())){if(b=e,v=t,1===x&&($.test(e)||Q.test(e))){for((v=ee.test(e)&&be(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute("id"))?c=c.replace(re,oe):t.setAttribute("id",c=w)),i=(p=a(e)).length;i--;)p[i]=(c?"#"+c:":scope")+" "+ye(p[i]);b=p.join(",")}try{return L.apply(r,v.querySelectorAll(b)),r}catch(t){E(e,!0)}finally{c===w&&t.removeAttribute("id")}}}return u(e.replace(F,"$1"),t,r,o)}function ue(){var e=[];return function t(n,o){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=o}}function le(e){return e[w]=!0,e}function ce(e){var t=h.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){for(var n=e.split("|"),o=n.length;o--;)r.attrHandle[n[o]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function he(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ge(e){return le((function(t){return t=+t,le((function(n,r){for(var o,s=e([],n.length,t),a=s.length;a--;)n[o=s[a]]&&(n[o]=!(r[o]=n[o]))}))}))}function be(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=ie.support={},s=ie.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!V.test(t||n&&n.nodeName||"HTML")},f=ie.setDocument=function(e){var t,o,a=e?e.ownerDocument||e:x;return a!=h&&9===a.nodeType&&a.documentElement?(p=(h=a).documentElement,m=!s(h),x!=h&&(o=h.defaultView)&&o.top!==o&&(o.addEventListener?o.addEventListener("unload",se,!1):o.attachEvent&&o.attachEvent("onunload",se)),n.scope=ce((function(e){return p.appendChild(e).appendChild(h.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),n.attributes=ce((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ce((function(e){return e.appendChild(h.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=X.test(h.getElementsByClassName),n.getById=ce((function(e){return p.appendChild(e).id=w,!h.getElementsByName||!h.getElementsByName(w).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&m){var n,r,o,s=t.getElementById(e);if(s){if((n=s.getAttributeNode("id"))&&n.value===e)return[s];for(o=t.getElementsByName(e),r=0;s=o[r++];)if((n=s.getAttributeNode("id"))&&n.value===e)return[s]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,s=t.getElementsByTagName(e);if("*"===e){for(;n=s[o++];)1===n.nodeType&&r.push(n);return r}return s},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&m)return t.getElementsByClassName(e)},b=[],g=[],(n.qsa=X.test(h.querySelectorAll))&&(ce((function(e){var t;p.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+D+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+D+"*(?:value|"+N+")"),e.querySelectorAll("[id~="+w+"-]").length||g.push("~="),(t=h.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||g.push("\\["+D+"*name"+D+"*="+D+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||g.push(".#.+[+~]"),e.querySelectorAll("\\\f"),g.push("[\\r\\n\\f]")})),ce((function(e){e.innerHTML="";var t=h.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+D+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),p.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")}))),(n.matchesSelector=X.test(v=p.matches||p.webkitMatchesSelector||p.mozMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=v.call(e,"*"),v.call(e,"[s!='']:x"),b.push("!=",U)})),g=g.length&&new RegExp(g.join("|")),b=b.length&&new RegExp(b.join("|")),t=X.test(p.compareDocumentPosition),y=t||X.test(p.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},k=t?function(e,t){if(e===t)return d=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==h||e.ownerDocument==x&&y(x,e)?-1:t==h||t.ownerDocument==x&&y(x,t)?1:c?I(c,e)-I(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,r=0,o=e.parentNode,s=t.parentNode,a=[e],i=[t];if(!o||!s)return e==h?-1:t==h?1:o?-1:s?1:c?I(c,e)-I(c,t):0;if(o===s)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)i.unshift(n);for(;a[r]===i[r];)r++;return r?fe(a[r],i[r]):a[r]==x?-1:i[r]==x?1:0},h):h},ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){if(f(e),n.matchesSelector&&m&&!E[t+" "]&&(!b||!b.test(t))&&(!g||!g.test(t)))try{var r=v.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){E(t,!0)}return ie(t,h,null,[e]).length>0},ie.contains=function(e,t){return(e.ownerDocument||e)!=h&&f(e),y(e,t)},ie.attr=function(e,t){(e.ownerDocument||e)!=h&&f(e);var o=r.attrHandle[t.toLowerCase()],s=o&&j.call(r.attrHandle,t.toLowerCase())?o(e,t,!m):void 0;return void 0!==s?s:n.attributes||!m?e.getAttribute(t):(s=e.getAttributeNode(t))&&s.specified?s.value:null},ie.escape=function(e){return(e+"").replace(re,oe)},ie.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ie.uniqueSort=function(e){var t,r=[],o=0,s=0;if(d=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(k),d){for(;t=e[s++];)t===e[s]&&(o=r.push(s));for(;o--;)e.splice(r[o],1)}return c=null,e},o=ie.getText=function(e){var t,n="",r=0,s=e.nodeType;if(s){if(1===s||9===s||11===s){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===s||4===s)return e.nodeValue}else for(;t=e[r++];)n+=o(t);return n},(r=ie.selectors={cacheLength:50,createPseudo:le,match:Y,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ie.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Y.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&J.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=new RegExp("(^|"+D+")"+e+"("+D+"|$)"))&&C(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var o=ie.attr(r,e);return null==o?"!="===t:!t||(o+="","="===t?o===n:"!="===t?o!==n:"^="===t?n&&0===o.indexOf(n):"*="===t?n&&o.indexOf(n)>-1:"$="===t?n&&o.slice(-n.length)===n:"~="===t?(" "+o.replace(z," ")+" ").indexOf(n)>-1:"|="===t&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,o){var s="nth"!==e.slice(0,3),a="last"!==e.slice(-4),i="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var l,c,d,f,h,p,m=s!==a?"nextSibling":"previousSibling",g=t.parentNode,b=i&&t.nodeName.toLowerCase(),v=!u&&!i,y=!1;if(g){if(s){for(;m;){for(f=t;f=f[m];)if(i?f.nodeName.toLowerCase()===b:1===f.nodeType)return!1;p=m="only"===e&&!p&&"nextSibling"}return!0}if(p=[a?g.firstChild:g.lastChild],a&&v){for(y=(h=(l=(c=(d=(f=g)[w]||(f[w]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]||[])[0]===_&&l[1])&&l[2],f=h&&g.childNodes[h];f=++h&&f&&f[m]||(y=h=0)||p.pop();)if(1===f.nodeType&&++y&&f===t){c[e]=[_,h,y];break}}else if(v&&(y=h=(l=(c=(d=(f=t)[w]||(f[w]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]||[])[0]===_&&l[1]),!1===y)for(;(f=++h&&f&&f[m]||(y=h=0)||p.pop())&&((i?f.nodeName.toLowerCase()!==b:1!==f.nodeType)||!++y||(v&&((c=(d=f[w]||(f[w]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]=[_,y]),f!==t)););return(y-=o)===r||y%r==0&&y/r>=0}}},PSEUDO:function(e,t){var n,o=r.pseudos[e]||r.setFilters[e.toLowerCase()]||ie.error("unsupported pseudo: "+e);return o[w]?o(t):o.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,s=o(e,t),a=s.length;a--;)e[r=I(e,s[a])]=!(n[r]=s[a])})):function(e){return o(e,0,n)}):o}},pseudos:{not:le((function(e){var t=[],n=[],r=i(e.replace(F,"$1"));return r[w]?le((function(e,t,n,o){for(var s,a=r(e,null,o,[]),i=e.length;i--;)(s=a[i])&&(e[i]=!(t[i]=s))})):function(e,o,s){return t[0]=e,r(t,null,s,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return ie(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||o(t)).indexOf(e)>-1}})),lang:le((function(e){return W.test(e||"")||ie.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===p},focus:function(e){return e===h.activeElement&&(!h.hasFocus||h.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return G.test(e.nodeName)},input:function(e){return K.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ge((function(){return[0]})),last:ge((function(e,t){return[t-1]})),eq:ge((function(e,t,n){return[n<0?n+t:n]})),even:ge((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ge((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function _e(e,t,n,r,o){for(var s,a=[],i=0,u=e.length,l=null!=t;i-1&&(s[l]=!(a[l]=d))}}else b=_e(b===a?b.splice(p,b.length):b),o?o(null,a,b,u):L.apply(a,b)}))}function Ce(e){for(var t,n,o,s=e.length,a=r.relative[e[0].type],i=a||r.relative[" "],u=a?1:0,c=we((function(e){return e===t}),i,!0),d=we((function(e){return I(t,e)>-1}),i,!0),f=[function(e,n,r){var o=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):d(e,n,r));return t=null,o}];u1&&xe(f),u>1&&ye(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(F,"$1"),n,u0,o=e.length>0,s=function(s,a,i,u,c){var d,p,g,b=0,v="0",y=s&&[],w=[],x=l,A=s||o&&r.find.TAG("*",c),C=_+=null==x?1:Math.random()||.1,R=A.length;for(c&&(l=a==h||a||c);v!==R&&null!=(d=A[v]);v++){if(o&&d){for(p=0,a||d.ownerDocument==h||(f(d),i=!m);g=e[p++];)if(g(d,a||h,i)){u.push(d);break}c&&(_=C)}n&&((d=!g&&d)&&b--,s&&y.push(d))}if(b+=v,n&&v!==b){for(p=0;g=t[p++];)g(y,w,a,i);if(s){if(b>0)for(;v--;)y[v]||w[v]||(w[v]=q.call(u));w=_e(w)}L.apply(u,w),c&&!s&&w.length>0&&b+t.length>1&&ie.uniqueSort(u)}return c&&(_=C,l=x),y};return n?le(s):s}(s,o))).selector=e}return i},u=ie.select=function(e,t,n,o){var s,u,l,c,d,f="function"==typeof e&&e,h=!o&&a(e=f.selector||e);if(n=n||[],1===h.length){if((u=h[0]=h[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&m&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;f&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(s=Y.needsContext.test(e)?0:u.length;s--&&(l=u[s],!r.relative[c=l.type]);)if((d=r.find[c])&&(o=d(l.matches[0].replace(te,ne),ee.test(u[0].type)&&be(t.parentNode)||t))){if(u.splice(s,1),!(e=o.length&&ye(u)))return L.apply(n,o),n;break}}return(f||i(e,h))(o,t,!m,n,!t||ee.test(e)&&be(t.parentNode)||t),n},n.sortStable=w.split("").sort(k).join("")===w,n.detectDuplicates=!!d,f(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(h.createElement("fieldset"))})),ce((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||de("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||de("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute("disabled")}))||de(N,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),ie}(n);A.find=R,A.expr=R.selectors,A.expr[":"]=A.expr.pseudos,A.uniqueSort=A.unique=R.uniqueSort,A.text=R.getText,A.isXMLDoc=R.isXML,A.contains=R.contains,A.escapeSelector=R.escape;var S=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&A(e).is(n))break;r.push(e)}return r},E=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=A.expr.match.needsContext;function j(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var T=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function q(e,t,n){return b(t)?A.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?A.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?A.grep(e,(function(e){return c.call(t,e)>-1!==n})):A.filter(t,e,n)}A.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?A.find.matchesSelector(r,e)?[r]:[]:A.find.matches(e,A.grep(t,(function(e){return 1===e.nodeType})))},A.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(A(e).filter((function(){for(t=0;t1?A.uniqueSort(n):n},filter:function(e){return this.pushStack(q(this,e||[],!1))},not:function(e){return this.pushStack(q(this,e||[],!0))},is:function(e){return!!q(this,"string"==typeof e&&k.test(e)?A(e):e||[],!1).length}});var P,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(A.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||P,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof A?t[0]:t,A.merge(this,A.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:y,!0)),T.test(r[1])&&A.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(o=y.getElementById(r[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(A):A.makeArray(e,this)}).prototype=A.fn,P=A(y);var O=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};function N(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}A.fn.extend({has:function(e){var t=A(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&A.find.matchesSelector(n,e))){s.push(n);break}return this.pushStack(s.length>1?A.uniqueSort(s):s)},index:function(e){return e?"string"==typeof e?c.call(A(e),this[0]):c.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(A.uniqueSort(A.merge(this.get(),A(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),A.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return S(e,"parentNode")},parentsUntil:function(e,t,n){return S(e,"parentNode",n)},next:function(e){return N(e,"nextSibling")},prev:function(e){return N(e,"previousSibling")},nextAll:function(e){return S(e,"nextSibling")},prevAll:function(e){return S(e,"previousSibling")},nextUntil:function(e,t,n){return S(e,"nextSibling",n)},prevUntil:function(e,t,n){return S(e,"previousSibling",n)},siblings:function(e){return E((e.parentNode||{}).firstChild,e)},children:function(e){return E(e.firstChild)},contents:function(e){return null!=e.contentDocument&&a(e.contentDocument)?e.contentDocument:(j(e,"template")&&(e=e.content||e),A.merge([],e.childNodes))}},(function(e,t){A.fn[e]=function(n,r){var o=A.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=A.filter(r,o)),this.length>1&&(I[e]||A.uniqueSort(o),O.test(e)&&o.reverse()),this.pushStack(o)}}));var D=/[^\x20\t\r\n\f]+/g;function M(e){return e}function B(e){throw e}function U(e,t,n,r){var o;try{e&&b(o=e.promise)?o.call(e).done(t).fail(n):e&&b(o=e.then)?o.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}A.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return A.each(e.match(D)||[],(function(e,n){t[n]=!0})),t}(e):A.extend({},e);var t,n,r,o,s=[],a=[],i=-1,u=function(){for(o=o||e.once,r=t=!0;a.length;i=-1)for(n=a.shift();++i-1;)s.splice(n,1),n<=i&&i--})),this},has:function(e){return e?A.inArray(e,s)>-1:s.length>0},empty:function(){return s&&(s=[]),this},disable:function(){return o=a=[],s=n="",this},disabled:function(){return!s},lock:function(){return o=a=[],n||t||(s=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},A.extend({Deferred:function(e){var t=[["notify","progress",A.Callbacks("memory"),A.Callbacks("memory"),2],["resolve","done",A.Callbacks("once memory"),A.Callbacks("once memory"),0,"resolved"],["reject","fail",A.Callbacks("once memory"),A.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return A.Deferred((function(n){A.each(t,(function(t,r){var o=b(e[r[4]])&&e[r[4]];s[r[1]]((function(){var e=o&&o.apply(this,arguments);e&&b(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,o?[e]:arguments)}))})),e=null})).promise()},then:function(e,r,o){var s=0;function a(e,t,r,o){return function(){var i=this,u=arguments,l=function(){var n,l;if(!(e=s&&(r!==B&&(i=void 0,u=[n]),t.rejectWith(i,u))}};e?c():(A.Deferred.getStackHook&&(c.stackTrace=A.Deferred.getStackHook()),n.setTimeout(c))}}return A.Deferred((function(n){t[0][3].add(a(0,n,b(o)?o:M,n.notifyWith)),t[1][3].add(a(0,n,b(e)?e:M)),t[2][3].add(a(0,n,b(r)?r:B))})).promise()},promise:function(e){return null!=e?A.extend(e,o):o}},s={};return A.each(t,(function(e,n){var a=n[2],i=n[5];o[n[1]]=a.add,i&&a.add((function(){r=i}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),s[n[0]]=function(){return s[n[0]+"With"](this===s?void 0:this,arguments),this},s[n[0]+"With"]=a.fireWith})),o.promise(s),e&&e.call(s,s),s},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),s=A.Deferred(),a=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||s.resolveWith(r,o)}};if(t<=1&&(U(e,s.done(a(n)).resolve,s.reject,!t),"pending"===s.state()||b(o[n]&&o[n].then)))return s.then();for(;n--;)U(o[n],a(n),s.reject);return s.promise()}});var z=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;A.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&z.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},A.readyException=function(e){n.setTimeout((function(){throw e}))};var F=A.Deferred();function H(){y.removeEventListener("DOMContentLoaded",H),n.removeEventListener("load",H),A.ready()}A.fn.ready=function(e){return F.then(e).catch((function(e){A.readyException(e)})),this},A.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--A.readyWait:A.isReady)||(A.isReady=!0,!0!==e&&--A.readyWait>0||F.resolveWith(y,[A]))}}),A.ready.then=F.then,"complete"===y.readyState||"loading"!==y.readyState&&!y.documentElement.doScroll?n.setTimeout(A.ready):(y.addEventListener("DOMContentLoaded",H),n.addEventListener("load",H));var Q=function(e,t,n,r,o,s,a){var i=0,u=e.length,l=null==n;if("object"===_(n))for(i in o=!0,n)Q(e,t,i,n[i],!0,s,a);else if(void 0!==r&&(o=!0,b(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(A(e),n)})),t))for(;i1,null,!0)},removeData:function(e){return this.each((function(){X.remove(this,e)}))}}),A.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=G.get(e,t),n&&(!r||Array.isArray(n)?r=G.access(e,t,A.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=A.queue(e,t),r=n.length,o=n.shift(),s=A._queueHooks(e,t);"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete s.stop,o.call(e,(function(){A.dequeue(e,t)}),s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return G.get(e,n)||G.access(e,n,{empty:A.Callbacks("once memory").add((function(){G.remove(e,[t+"queue",n])}))})}}),A.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,be=/^$|^module$|\/(?:java|ecma)script/i;he=y.createDocumentFragment().appendChild(y.createElement("div")),(pe=y.createElement("input")).setAttribute("type","radio"),pe.setAttribute("checked","checked"),pe.setAttribute("name","t"),he.appendChild(pe),g.checkClone=he.cloneNode(!0).cloneNode(!0).lastChild.checked,he.innerHTML="",g.noCloneChecked=!!he.cloneNode(!0).lastChild.defaultValue,he.innerHTML="",g.option=!!he.lastChild;var ve={thead:[1,"","
              "],col:[2,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],_default:[0,"",""]};function ye(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&j(e,t)?A.merge([e],n):n}function we(e,t){for(var n=0,r=e.length;n",""]);var xe=/<|&#?\w+;/;function _e(e,t,n,r,o){for(var s,a,i,u,l,c,d=t.createDocumentFragment(),f=[],h=0,p=e.length;h-1)o&&o.push(s);else if(l=ae(s),a=ye(d.appendChild(s),"script"),l&&we(a),n)for(c=0;s=a[c++];)be.test(s.type||"")&&n.push(s);return d}var Ae=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Re=/^([^.]*)(?:\.(.+)|)/;function Se(){return!0}function Ee(){return!1}function ke(e,t){return e===function(){try{return y.activeElement}catch(e){}}()==("focus"===t)}function je(e,t,n,r,o,s){var a,i;if("object"==typeof t){for(i in"string"!=typeof n&&(r=r||n,n=void 0),t)je(e,i,n,r,t[i],s);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),!1===o)o=Ee;else if(!o)return e;return 1===s&&(a=o,(o=function(e){return A().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=A.guid++)),e.each((function(){A.event.add(this,t,o,r,n)}))}function Te(e,t,n){n?(G.set(e,t,!1),A.event.add(e,t,{namespace:!1,handler:function(e){var r,o,s=G.get(this,t);if(1&e.isTrigger&&this[t]){if(s.length)(A.event.special[t]||{}).delegateType&&e.stopPropagation();else if(s=i.call(arguments),G.set(this,t,s),r=n(this,t),this[t](),s!==(o=G.get(this,t))||r?G.set(this,t,!1):o={},s!==o)return e.stopImmediatePropagation(),e.preventDefault(),o.value}else s.length&&(G.set(this,t,{value:A.event.trigger(A.extend(s[0],A.Event.prototype),s.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,t)&&A.event.add(e,t,Se)}A.event={global:{},add:function(e,t,n,r,o){var s,a,i,u,l,c,d,f,h,p,m,g=G.get(e);if(V(e))for(n.handler&&(n=(s=n).handler,o=s.selector),o&&A.find.matchesSelector(se,o),n.guid||(n.guid=A.guid++),(u=g.events)||(u=g.events=Object.create(null)),(a=g.handle)||(a=g.handle=function(t){return void 0!==A&&A.event.triggered!==t.type?A.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(D)||[""]).length;l--;)h=m=(i=Re.exec(t[l])||[])[1],p=(i[2]||"").split(".").sort(),h&&(d=A.event.special[h]||{},h=(o?d.delegateType:d.bindType)||h,d=A.event.special[h]||{},c=A.extend({type:h,origType:m,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&A.expr.match.needsContext.test(o),namespace:p.join(".")},s),(f=u[h])||((f=u[h]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(e,r,p,a)||e.addEventListener&&e.addEventListener(h,a)),d.add&&(d.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),o?f.splice(f.delegateCount++,0,c):f.push(c),A.event.global[h]=!0)},remove:function(e,t,n,r,o){var s,a,i,u,l,c,d,f,h,p,m,g=G.hasData(e)&&G.get(e);if(g&&(u=g.events)){for(l=(t=(t||"").match(D)||[""]).length;l--;)if(h=m=(i=Re.exec(t[l])||[])[1],p=(i[2]||"").split(".").sort(),h){for(d=A.event.special[h]||{},f=u[h=(r?d.delegateType:d.bindType)||h]||[],i=i[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=s=f.length;s--;)c=f[s],!o&&m!==c.origType||n&&n.guid!==c.guid||i&&!i.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(s,1),c.selector&&f.delegateCount--,d.remove&&d.remove.call(e,c));a&&!f.length&&(d.teardown&&!1!==d.teardown.call(e,p,g.handle)||A.removeEvent(e,h,g.handle),delete u[h])}else for(h in u)A.event.remove(e,h+t[l],n,r,!0);A.isEmptyObject(u)&&G.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,s,a,i=new Array(arguments.length),u=A.event.fix(e),l=(G.get(this,"events")||Object.create(null))[u.type]||[],c=A.event.special[u.type]||{};for(i[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(s=[],a={},n=0;n-1:A.find(o,this,null,[l]).length),a[o]&&s.push(r);s.length&&i.push({elem:l,handlers:s})}return l=this,u\s*$/g;function Oe(e,t){return j(e,"table")&&j(11!==t.nodeType?t:t.firstChild,"tr")&&A(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ne(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function De(e,t){var n,r,o,s,a,i;if(1===t.nodeType){if(G.hasData(e)&&(i=G.get(e).events))for(o in G.remove(t,"handle events"),i)for(n=0,r=i[o].length;n1&&"string"==typeof p&&!g.checkClone&&Pe.test(p))return e.each((function(o){var s=e.eq(o);m&&(t[0]=p.call(this,o,s.html())),Be(s,t,n,r)}));if(f&&(s=(o=_e(t,e[0].ownerDocument,!1,e,r)).firstChild,1===o.childNodes.length&&(o=s),s||r)){for(i=(a=A.map(ye(o,"script"),Ie)).length;d0&&we(a,!u&&ye(e,"script")),i},cleanData:function(e){for(var t,n,r,o=A.event.special,s=0;void 0!==(n=e[s]);s++)if(V(n)){if(t=n[G.expando]){if(t.events)for(r in t.events)o[r]?A.event.remove(n,r):A.removeEvent(n,r,t.handle);n[G.expando]=void 0}n[X.expando]&&(n[X.expando]=void 0)}}}),A.fn.extend({detach:function(e){return Ue(this,e,!0)},remove:function(e){return Ue(this,e)},text:function(e){return Q(this,(function(e){return void 0===e?A.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Be(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)}))},prepend:function(){return Be(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Be(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Be(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(A.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return A.clone(this,e,t)}))},html:function(e){return Q(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ve[(ge.exec(e)||["",""])[1].toLowerCase()]){e=A.htmlPrefilter(e);try{for(;n3,se.removeChild(e)),i}}))}();var We=["Webkit","Moz","ms"],Ye=y.createElement("div").style,Ve={};function Ke(e){var t=A.cssProps[e]||Ve[e];return t||(e in Ye?e:Ve[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=We.length;n--;)if((e=We[n]+t)in Ye)return e}(e)||e)}var Ge=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ze={position:"absolute",visibility:"hidden",display:"block"},et={letterSpacing:"0",fontWeight:"400"};function tt(e,t,n){var r=re.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function nt(e,t,n,r,o,s){var a="width"===t?1:0,i=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=A.css(e,n+oe[a],!0,o)),r?("content"===n&&(u-=A.css(e,"padding"+oe[a],!0,o)),"margin"!==n&&(u-=A.css(e,"border"+oe[a]+"Width",!0,o))):(u+=A.css(e,"padding"+oe[a],!0,o),"padding"!==n?u+=A.css(e,"border"+oe[a]+"Width",!0,o):i+=A.css(e,"border"+oe[a]+"Width",!0,o));return!r&&s>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-s-u-i-.5))||0),u}function rt(e,t,n){var r=Fe(e),o=(!g.boxSizingReliable()||n)&&"border-box"===A.css(e,"boxSizing",!1,r),s=o,a=$e(e,t,r),i="offset"+t[0].toUpperCase()+t.slice(1);if(ze.test(a)){if(!n)return a;a="auto"}return(!g.boxSizingReliable()&&o||!g.reliableTrDimensions()&&j(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===A.css(e,"display",!1,r))&&e.getClientRects().length&&(o="border-box"===A.css(e,"boxSizing",!1,r),(s=i in e)&&(a=e[i])),(a=parseFloat(a)||0)+nt(e,t,n||(o?"border":"content"),s,r,a)+"px"}function ot(e,t,n,r,o){return new ot.prototype.init(e,t,n,r,o)}A.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=$e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,s,a,i=Y(t),u=Xe.test(t),l=e.style;if(u||(t=Ke(i)),a=A.cssHooks[t]||A.cssHooks[i],void 0===n)return a&&"get"in a&&void 0!==(o=a.get(e,!1,r))?o:l[t];"string"===(s=typeof n)&&(o=re.exec(n))&&o[1]&&(n=le(e,t,o),s="number"),null!=n&&n==n&&("number"!==s||u||(n+=o&&o[3]||(A.cssNumber[i]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var o,s,a,i=Y(t);return Xe.test(t)||(t=Ke(i)),(a=A.cssHooks[t]||A.cssHooks[i])&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=$e(e,t,r)),"normal"===o&&t in et&&(o=et[t]),""===n||n?(s=parseFloat(o),!0===n||isFinite(s)?s||0:o):o}}),A.each(["height","width"],(function(e,t){A.cssHooks[t]={get:function(e,n,r){if(n)return!Ge.test(A.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?rt(e,t,r):He(e,Ze,(function(){return rt(e,t,r)}))},set:function(e,n,r){var o,s=Fe(e),a=!g.scrollboxSize()&&"absolute"===s.position,i=(a||r)&&"border-box"===A.css(e,"boxSizing",!1,s),u=r?nt(e,t,r,i,s):0;return i&&a&&(u-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(s[t])-nt(e,t,"border",!1,s)-.5)),u&&(o=re.exec(n))&&"px"!==(o[3]||"px")&&(e.style[t]=n,n=A.css(e,t)),tt(0,n,u)}}})),A.cssHooks.marginLeft=Je(g.reliableMarginLeft,(function(e,t){if(t)return(parseFloat($e(e,"marginLeft"))||e.getBoundingClientRect().left-He(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),A.each({margin:"",padding:"",border:"Width"},(function(e,t){A.cssHooks[e+t]={expand:function(n){for(var r=0,o={},s="string"==typeof n?n.split(" "):[n];r<4;r++)o[e+oe[r]+t]=s[r]||s[r-2]||s[0];return o}},"margin"!==e&&(A.cssHooks[e+t].set=tt)})),A.fn.extend({css:function(e,t){return Q(this,(function(e,t,n){var r,o,s={},a=0;if(Array.isArray(t)){for(r=Fe(e),o=t.length;a1)}}),A.Tween=ot,ot.prototype={constructor:ot,init:function(e,t,n,r,o,s){this.elem=e,this.prop=n,this.easing=o||A.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(A.cssNumber[n]?"":"px")},cur:function(){var e=ot.propHooks[this.prop];return e&&e.get?e.get(this):ot.propHooks._default.get(this)},run:function(e){var t,n=ot.propHooks[this.prop];return this.options.duration?this.pos=t=A.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):ot.propHooks._default.set(this),this}},ot.prototype.init.prototype=ot.prototype,ot.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=A.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){A.fx.step[e.prop]?A.fx.step[e.prop](e):1!==e.elem.nodeType||!A.cssHooks[e.prop]&&null==e.elem.style[Ke(e.prop)]?e.elem[e.prop]=e.now:A.style(e.elem,e.prop,e.now+e.unit)}}},ot.propHooks.scrollTop=ot.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},A.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},A.fx=ot.prototype.init,A.fx.step={};var st,at,it=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){at&&(!1===y.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(lt):n.setTimeout(lt,A.fx.interval),A.fx.tick())}function ct(){return n.setTimeout((function(){st=void 0})),st=Date.now()}function dt(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)o["margin"+(n=oe[r])]=o["padding"+n]=e;return t&&(o.opacity=o.width=e),o}function ft(e,t,n){for(var r,o=(ht.tweeners[t]||[]).concat(ht.tweeners["*"]),s=0,a=o.length;s1)},removeAttr:function(e){return this.each((function(){A.removeAttr(this,e)}))}}),A.extend({attr:function(e,t,n){var r,o,s=e.nodeType;if(3!==s&&8!==s&&2!==s)return void 0===e.getAttribute?A.prop(e,t,n):(1===s&&A.isXMLDoc(e)||(o=A.attrHooks[t.toLowerCase()]||(A.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void A.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:null==(r=A.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&j(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(D);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?A.removeAttr(e,n):e.setAttribute(n,n),n}},A.each(A.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=mt[t]||A.find.attr;mt[t]=function(e,t,r){var o,s,a=t.toLowerCase();return r||(s=mt[a],mt[a]=o,o=null!=n(e,t,r)?a:null,mt[a]=s),o}}));var gt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;function vt(e){return(e.match(D)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function wt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}A.fn.extend({prop:function(e,t){return Q(this,A.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[A.propFix[e]||e]}))}}),A.extend({prop:function(e,t,n){var r,o,s=e.nodeType;if(3!==s&&8!==s&&2!==s)return 1===s&&A.isXMLDoc(e)||(t=A.propFix[t]||t,o=A.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=A.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(A.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),A.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){A.propFix[this.toLowerCase()]=this})),A.fn.extend({addClass:function(e){var t,n,r,o,s,a,i,u=0;if(b(e))return this.each((function(t){A(this).addClass(e.call(this,t,yt(this)))}));if((t=wt(e)).length)for(;n=this[u++];)if(o=yt(n),r=1===n.nodeType&&" "+vt(o)+" "){for(a=0;s=t[a++];)r.indexOf(" "+s+" ")<0&&(r+=s+" ");o!==(i=vt(r))&&n.setAttribute("class",i)}return this},removeClass:function(e){var t,n,r,o,s,a,i,u=0;if(b(e))return this.each((function(t){A(this).removeClass(e.call(this,t,yt(this)))}));if(!arguments.length)return this.attr("class","");if((t=wt(e)).length)for(;n=this[u++];)if(o=yt(n),r=1===n.nodeType&&" "+vt(o)+" "){for(a=0;s=t[a++];)for(;r.indexOf(" "+s+" ")>-1;)r=r.replace(" "+s+" "," ");o!==(i=vt(r))&&n.setAttribute("class",i)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):b(e)?this.each((function(n){A(this).toggleClass(e.call(this,n,yt(this),t),t)})):this.each((function(){var t,o,s,a;if(r)for(o=0,s=A(this),a=wt(e);t=a[o++];)s.hasClass(t)?s.removeClass(t):s.addClass(t);else void 0!==e&&"boolean"!==n||((t=yt(this))&&G.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":G.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+vt(yt(n))+" ").indexOf(t)>-1)return!0;return!1}});var xt=/\r/g;A.fn.extend({val:function(e){var t,n,r,o=this[0];return arguments.length?(r=b(e),this.each((function(n){var o;1===this.nodeType&&(null==(o=r?e.call(this,n,A(this).val()):e)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=A.map(o,(function(e){return null==e?"":e+""}))),(t=A.valHooks[this.type]||A.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))}))):o?(t=A.valHooks[o.type]||A.valHooks[o.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(xt,""):null==n?"":n:void 0}}),A.extend({valHooks:{option:{get:function(e){var t=A.find.attr(e,"value");return null!=t?t:vt(A.text(e))}},select:{get:function(e){var t,n,r,o=e.options,s=e.selectedIndex,a="select-one"===e.type,i=a?null:[],u=a?s+1:o.length;for(r=s<0?u:a?s:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),s}}}}),A.each(["radio","checkbox"],(function(){A.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=A.inArray(A(e).val(),t)>-1}},g.checkOn||(A.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),g.focusin="onfocusin"in n;var _t=/^(?:focusinfocus|focusoutblur)$/,At=function(e){e.stopPropagation()};A.extend(A.event,{trigger:function(e,t,r,o){var s,a,i,u,l,c,d,f,p=[r||y],m=h.call(e,"type")?e.type:e,g=h.call(e,"namespace")?e.namespace.split("."):[];if(a=f=i=r=r||y,3!==r.nodeType&&8!==r.nodeType&&!_t.test(m+A.event.triggered)&&(m.indexOf(".")>-1&&(g=m.split("."),m=g.shift(),g.sort()),l=m.indexOf(":")<0&&"on"+m,(e=e[A.expando]?e:new A.Event(m,"object"==typeof e&&e)).isTrigger=o?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:A.makeArray(t,[e]),d=A.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(r,t))){if(!o&&!d.noBubble&&!v(r)){for(u=d.delegateType||m,_t.test(u+m)||(a=a.parentNode);a;a=a.parentNode)p.push(a),i=a;i===(r.ownerDocument||y)&&p.push(i.defaultView||i.parentWindow||n)}for(s=0;(a=p[s++])&&!e.isPropagationStopped();)f=a,e.type=s>1?u:d.bindType||m,(c=(G.get(a,"events")||Object.create(null))[e.type]&&G.get(a,"handle"))&&c.apply(a,t),(c=l&&a[l])&&c.apply&&V(a)&&(e.result=c.apply(a,t),!1===e.result&&e.preventDefault());return e.type=m,o||e.isDefaultPrevented()||d._default&&!1!==d._default.apply(p.pop(),t)||!V(r)||l&&b(r[m])&&!v(r)&&((i=r[l])&&(r[l]=null),A.event.triggered=m,e.isPropagationStopped()&&f.addEventListener(m,At),r[m](),e.isPropagationStopped()&&f.removeEventListener(m,At),A.event.triggered=void 0,i&&(r[l]=i)),e.result}},simulate:function(e,t,n){var r=A.extend(new A.Event,n,{type:e,isSimulated:!0});A.event.trigger(r,null,t)}}),A.fn.extend({trigger:function(e,t){return this.each((function(){A.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return A.event.trigger(e,t,n,!0)}}),g.focusin||A.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){A.event.simulate(t,e.target,A.event.fix(e))};A.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,o=G.access(r,t);o||r.addEventListener(e,n,!0),G.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,o=G.access(r,t)-1;o?G.access(r,t,o):(r.removeEventListener(e,n,!0),G.remove(r,t))}}}));var Ct=n.location,Rt={guid:Date.now()},St=/\?/;A.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||A.error("Invalid XML: "+e),t};var Et=/\[\]$/,kt=/\r?\n/g,jt=/^(?:submit|button|image|reset|file)$/i,Tt=/^(?:input|select|textarea|keygen)/i;function qt(e,t,n,r){var o;if(Array.isArray(t))A.each(t,(function(t,o){n||Et.test(e)?r(e,o):qt(e+"["+("object"==typeof o&&null!=o?t:"")+"]",o,n,r)}));else if(n||"object"!==_(t))r(e,t);else for(o in t)qt(e+"["+o+"]",t[o],n,r)}A.param=function(e,t){var n,r=[],o=function(e,t){var n=b(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!A.isPlainObject(e))A.each(e,(function(){o(this.name,this.value)}));else for(n in e)qt(n,e[n],t,o);return r.join("&")},A.fn.extend({serialize:function(){return A.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=A.prop(this,"elements");return e?A.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!A(this).is(":disabled")&&Tt.test(this.nodeName)&&!jt.test(e)&&(this.checked||!me.test(e))})).map((function(e,t){var n=A(this).val();return null==n?null:Array.isArray(n)?A.map(n,(function(e){return{name:t.name,value:e.replace(kt,"\r\n")}})):{name:t.name,value:n.replace(kt,"\r\n")}})).get()}});var Pt=/%20/g,Lt=/#.*$/,Ot=/([?&])_=[^&]*/,It=/^(.*?):[ \t]*([^\r\n]*)$/gm,Nt=/^(?:GET|HEAD)$/,Dt=/^\/\//,Mt={},Bt={},Ut="*/".concat("*"),zt=y.createElement("a");function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,o=0,s=t.toLowerCase().match(D)||[];if(b(n))for(;r=s[o++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ht(e,t,n,r){var o={},s=e===Bt;function a(i){var u;return o[i]=!0,A.each(e[i]||[],(function(e,i){var l=i(t,n,r);return"string"!=typeof l||s||o[l]?s?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!o["*"]&&a("*")}function Qt(e,t){var n,r,o=A.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((o[n]?e:r||(r={}))[n]=t[n]);return r&&A.extend(!0,e,r),e}zt.href=Ct.href,A.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ut,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":A.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Qt(Qt(e,A.ajaxSettings),t):Qt(A.ajaxSettings,e)},ajaxPrefilter:Ft(Mt),ajaxTransport:Ft(Bt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var r,o,s,a,i,u,l,c,d,f,h=A.ajaxSetup({},t),p=h.context||h,m=h.context&&(p.nodeType||p.jquery)?A(p):A.event,g=A.Deferred(),b=A.Callbacks("once memory"),v=h.statusCode||{},w={},x={},_="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=It.exec(s);)a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return l?s:null},setRequestHeader:function(e,t){return null==l&&(e=x[e.toLowerCase()]=x[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==l&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)C.always(e[C.status]);else for(t in e)v[t]=[v[t],e[t]];return this},abort:function(e){var t=e||_;return r&&r.abort(t),R(0,t),this}};if(g.promise(C),h.url=((e||h.url||Ct.href)+"").replace(Dt,Ct.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(D)||[""],null==h.crossDomain){u=y.createElement("a");try{u.href=h.url,u.href=u.href,h.crossDomain=zt.protocol+"//"+zt.host!=u.protocol+"//"+u.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=A.param(h.data,h.traditional)),Ht(Mt,h,t,C),l)return C;for(d in(c=A.event&&h.global)&&0==A.active++&&A.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Nt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Pt,"+")):(f=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(St.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ot,"$1"),f=(St.test(o)?"&":"?")+"_="+Rt.guid+++f),h.url=o+f),h.ifModified&&(A.lastModified[o]&&C.setRequestHeader("If-Modified-Since",A.lastModified[o]),A.etag[o]&&C.setRequestHeader("If-None-Match",A.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||t.contentType)&&C.setRequestHeader("Content-Type",h.contentType),C.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+Ut+"; q=0.01":""):h.accepts["*"]),h.headers)C.setRequestHeader(d,h.headers[d]);if(h.beforeSend&&(!1===h.beforeSend.call(p,C,h)||l))return C.abort();if(_="abort",b.add(h.complete),C.done(h.success),C.fail(h.error),r=Ht(Bt,h,t,C)){if(C.readyState=1,c&&m.trigger("ajaxSend",[C,h]),l)return C;h.async&&h.timeout>0&&(i=n.setTimeout((function(){C.abort("timeout")}),h.timeout));try{l=!1,r.send(w,R)}catch(e){if(l)throw e;R(-1,e)}}else R(-1,"No Transport");function R(e,t,a,u){var d,f,y,w,x,_=t;l||(l=!0,i&&n.clearTimeout(i),r=void 0,s=u||"",C.readyState=e>0?4:0,d=e>=200&&e<300||304===e,a&&(w=function(e,t,n){for(var r,o,s,a,i=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(o in i)if(i[o]&&i[o].test(r)){u.unshift(o);break}if(u[0]in n)s=u[0];else{for(o in n){if(!u[0]||e.converters[o+" "+u[0]]){s=o;break}a||(a=o)}s=s||a}if(s)return s!==u[0]&&u.unshift(s),n[s]}(h,C,a)),!d&&A.inArray("script",h.dataTypes)>-1&&(h.converters["text script"]=function(){}),w=function(e,t,n,r){var o,s,a,i,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(s=c.shift();s;)if(e.responseFields[s]&&(n[e.responseFields[s]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=s,s=c.shift())if("*"===s)s=u;else if("*"!==u&&u!==s){if(!(a=l[u+" "+s]||l["* "+s]))for(o in l)if((i=o.split(" "))[1]===s&&(a=l[u+" "+i[0]]||l["* "+i[0]])){!0===a?a=l[o]:!0!==l[o]&&(s=i[0],c.unshift(i[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+s}}}return{state:"success",data:t}}(h,w,C,d),d?(h.ifModified&&((x=C.getResponseHeader("Last-Modified"))&&(A.lastModified[o]=x),(x=C.getResponseHeader("etag"))&&(A.etag[o]=x)),204===e||"HEAD"===h.type?_="nocontent":304===e?_="notmodified":(_=w.state,f=w.data,d=!(y=w.error))):(y=_,!e&&_||(_="error",e<0&&(e=0))),C.status=e,C.statusText=(t||_)+"",d?g.resolveWith(p,[f,_,C]):g.rejectWith(p,[C,_,y]),C.statusCode(v),v=void 0,c&&m.trigger(d?"ajaxSuccess":"ajaxError",[C,h,d?f:y]),b.fireWith(p,[C,_]),c&&(m.trigger("ajaxComplete",[C,h]),--A.active||A.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return A.get(e,t,n,"json")},getScript:function(e,t){return A.get(e,void 0,t,"script")}}),A.each(["get","post"],(function(e,t){A[t]=function(e,n,r,o){return b(n)&&(o=o||r,r=n,n=void 0),A.ajax(A.extend({url:e,type:t,dataType:o,data:n,success:r},A.isPlainObject(e)&&e))}})),A.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),A._evalUrl=function(e,t,n){return A.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){A.globalEval(e,t,n)}})},A.fn.extend({wrapAll:function(e){var t;return this[0]&&(b(e)&&(e=e.call(this[0])),t=A(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return b(e)?this.each((function(t){A(this).wrapInner(e.call(this,t))})):this.each((function(){var t=A(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=b(e);return this.each((function(n){A(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){A(this).replaceWith(this.childNodes)})),this}}),A.expr.pseudos.hidden=function(e){return!A.expr.pseudos.visible(e)},A.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},A.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var $t={0:200,1223:204},Jt=A.ajaxSettings.xhr();g.cors=!!Jt&&"withCredentials"in Jt,g.ajax=Jt=!!Jt,A.ajaxTransport((function(e){var t,r;if(g.cors||Jt&&!e.crossDomain)return{send:function(o,s){var a,i=e.xhr();if(i.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)i[a]=e.xhrFields[a];for(a in e.mimeType&&i.overrideMimeType&&i.overrideMimeType(e.mimeType),e.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)i.setRequestHeader(a,o[a]);t=function(e){return function(){t&&(t=r=i.onload=i.onerror=i.onabort=i.ontimeout=i.onreadystatechange=null,"abort"===e?i.abort():"error"===e?"number"!=typeof i.status?s(0,"error"):s(i.status,i.statusText):s($t[i.status]||i.status,i.statusText,"text"!==(i.responseType||"text")||"string"!=typeof i.responseText?{binary:i.response}:{text:i.responseText},i.getAllResponseHeaders()))}},i.onload=t(),r=i.onerror=i.ontimeout=t("error"),void 0!==i.onabort?i.onabort=r:i.onreadystatechange=function(){4===i.readyState&&n.setTimeout((function(){t&&r()}))},t=t("abort");try{i.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),A.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),A.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return A.globalEval(e),e}}}),A.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),A.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,o){t=A(" + diff --git a/test.html.gz b/test.html.gz index 1fbe22203e1cd2b0367ec2f01284fd8ff65f8cbd..c3e0e2baf20236f1908eb6bfd0b59811b7c45f3d 100644 GIT binary patch literal 421 zcmV;W0b2eaiwFP!000021AS6WZ`&{oJtx0{)p@qsu3h(G=aQ|!whjxh?9ihu)3q{L zaz#3g`|HQpZ7u@_2%z{xK9Y|r&OZNKZ|^r>pykf5mc^? zAsdP2KEubs?Mr22U<{n`*rS3MuT+c&)$YYWSIos9|{E9=e2O5Pnu@&8B=aQ|!whjxh?9ihu)3q{L zN<}(N_Vr`zHkSbd1WVkD+Y&yJv1 zSq96+VjcIV&&iEdxj3 z9)U3p1hJc(@9~fG-oR#TytBe`?<@wwH*mI$Opfo1qPQ-bTYOiPwtQQ3H#WCK3M8sl#3zr`BeGgmdfr*p#P)R7vULY=ZLOZh z;HGy0{=u`(9eGT6d9TPOw-@nbnJ+usnS+^81(fWi#U1^x%VrF%$9zX;>N#C5b90rR Ozu8{|-3Cp50ssJKnaiI5 diff --git a/tests.e900012b8e502c240f6c.css b/tests.5f5c7fd49bb7b3aea41e.css similarity index 100% rename from tests.e900012b8e502c240f6c.css rename to tests.5f5c7fd49bb7b3aea41e.css diff --git a/tests.e900012b8e502c240f6c.css.gz b/tests.5f5c7fd49bb7b3aea41e.css.gz similarity index 100% rename from tests.e900012b8e502c240f6c.css.gz rename to tests.5f5c7fd49bb7b3aea41e.css.gz