2
0
Эх сурвалжийг харах

Editor: GLSL diagnostics in source code editor.

tschw 10 жил өмнө
parent
commit
113e2f06e7

+ 1 - 0
editor/index.html

@@ -44,6 +44,7 @@
 		<script src="js/libs/codemirror/mode/javascript.js"></script>
 		<script src="js/libs/esprima.js"></script>
 		<script src="js/libs/jsonlint.js"></script>
+		<script src="js/libs/glslprep.min.js"></script>
 
 		<script src="js/libs/codemirror/mode/glsl.js"></script>
 

+ 95 - 32
editor/js/Script.js

@@ -42,6 +42,16 @@ var Script = function ( editor ) {
 	} );
 	header.add( close );
 
+
+	var renderer;
+
+	signals.rendererChanged.add( function ( newRenderer ) {
+
+		renderer = newRenderer;
+
+	} );
+
+
 	var delay;
 	var currentMode;
 	var currentScript;
@@ -75,26 +85,12 @@ var Script = function ( editor ) {
 				return;
 			}
 
-			switch ( currentScript ) {
-
-				case 'vertexShader':
-
-					currentObject.vertexShader = value;
-					break;
-
-				case 'fragmentShader':
-
-					currentObject.fragmentShader = value;
-					break;
-
-				case 'programInfo':
+			if ( currentScript !== 'programInfo' ) return;
 
-					var json = JSON.parse( value );
-					currentObject.defines = json.defines;
-					currentObject.uniforms = json.uniforms;
-					currentObject.attributes = json.attributes;
-
-			}
+			var json = JSON.parse( value );
+			currentObject.defines = json.defines;
+			currentObject.uniforms = json.uniforms;
+			currentObject.attributes = json.attributes;
 
 			currentObject.needsUpdate = true;
 			signals.materialChanged.dispatch( currentObject );
@@ -118,7 +114,8 @@ var Script = function ( editor ) {
 
 	var validate = function ( string ) {
 
-		var errors;
+		var valid;
+		var errors = [];
 
 		return codemirror.operation( function () {
 
@@ -147,10 +144,12 @@ var Script = function ( editor ) {
 
 					} catch ( error ) {
 
-						errors = [
+						errors.push( {
+
+							lineNumber: error.lineNumber - 1,
+							message: error.message
 
-							{ lineNumber: error.lineNumber,message: error.message }
-						];
+						} );
 
 					}
 
@@ -171,10 +170,12 @@ var Script = function ( editor ) {
 
 						message = message.split('\n')[3];
 
-						errors.push({
-							lineNumber: info.loc.first_line,
+						errors.push( {
+
+							lineNumber: info.loc.first_line - 1,
 							message: message
-						});
+
+						} );
 
 					};
 
@@ -192,13 +193,75 @@ var Script = function ( editor ) {
 
 				case 'glsl':
 
-					// TODO validate GLSL (compiling shader?)
+					try {
+
+						var shaderType = currentScript === 'vertexShader' ?
+								glslprep.Shader.VERTEX : glslprep.Shader.FRAGMENT;
 
-				default:
+						glslprep.parseGlsl( string, shaderType );
 
-					errors = [];
+					} catch( error ) {
 
-			}
+						if ( error instanceof glslprep.SyntaxError ) {
+
+							errors.push( {
+
+								lineNumber: error.line,
+								message: "Syntax Error: " + error.message
+
+							} );
+
+						} else {
+
+							console.error( error.stack || error );
+
+						}
+
+					}
+
+					if ( errors.length !== 0 ) break;
+					if ( renderer instanceof THREE.WebGLRenderer === false ) break;
+
+					currentObject[ currentScript ] = string;
+					currentObject.needsUpdate = true;
+					signals.materialChanged.dispatch( currentObject );
+
+					var programs = renderer.info.programs;
+
+					valid = true;
+					var parseMessage = /^(?:ERROR|WARNING): \d+:(\d+): (.*)/g;
+
+					for ( var i = 0, n = programs.length; i !== n; ++ i ) {
+
+						var diagnostics = programs[i].diagnostics;
+
+						if ( diagnostics === undefined ||
+								diagnostics.material !== currentObject ) continue;
+
+						if ( ! diagnostics.runnable ) valid = false;
+
+						var shaderInfo = diagnostics[ currentScript ];
+						var lineOffset = shaderInfo.prefix.split(/\r\n|\r|\n/).length;
+
+						while ( true ) {
+
+							var parseResult = parseMessage.exec( shaderInfo.log );
+							if ( parseResult === null ) break;
+
+							errors.push( {
+
+								lineNumber: parseResult[ 1 ] - lineOffset,
+								message: parseResult[ 2 ]
+
+							} );
+
+						} // messages
+
+						break;
+
+					} // programs
+
+			} // mode switch
 
 			for ( var i = 0; i < errors.length; i ++ ) {
 
@@ -208,7 +271,7 @@ var Script = function ( editor ) {
 				message.className = 'esprima-error';
 				message.textContent = error.message;
 
-				var lineNumber = error.lineNumber - 1;
+				var lineNumber = Math.max( error.lineNumber, 0 );
 				errorLines.push( lineNumber );
 
 				codemirror.addLineClass( lineNumber, 'background', 'errorLine' );
@@ -219,7 +282,7 @@ var Script = function ( editor ) {
 
 			}
 
-			return errorLines.length === 0;
+			return valid !== undefined ? valid : errors.length === 0;
 
 		});
 

+ 201 - 0
editor/js/libs/glslprep.min.js

@@ -0,0 +1,201 @@
+/* Copyright 2011-2015 Roy Williams, Tobias Schwinger and the Closure team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var aa=this;function v(c){return void 0!==c}
+function da(c){var f=typeof c;if("object"==f)if(c){if(c instanceof Array)return"array";if(c instanceof Object)return f;var k=Object.prototype.toString.call(c);if("[object Window]"==k)return"object";if("[object Array]"==k||"number"==typeof c.length&&"undefined"!=typeof c.splice&&"undefined"!=typeof c.propertyIsEnumerable&&!c.propertyIsEnumerable("splice"))return"array";if("[object Function]"==k||"undefined"!=typeof c.call&&"undefined"!=typeof c.propertyIsEnumerable&&!c.propertyIsEnumerable("call"))return"function"}else return"null";
+else if("function"==f&&"undefined"==typeof c.call)return"object";return f}function ea(c,f,k){return c.call.apply(c.bind,arguments)}function fa(c,f,k){if(!c)throw Error();if(2<arguments.length){var n=Array.prototype.slice.call(arguments,2);return function(){var g=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(g,n);return c.apply(f,g)}}return function(){return c.apply(f,arguments)}}
+function ga(c,f,k){ga=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ea:fa;return ga.apply(null,arguments)}function ja(c,f){var k=c.split("."),n=aa;k[0]in n||!n.execScript||n.execScript("var "+k[0]);for(var g;k.length&&(g=k.shift());)!k.length&&v(f)?n[g]=f:n[g]?n=n[g]:n=n[g]={}}
+function A(c,f){function k(){}k.prototype=f.prototype;c.Ma=f.prototype;c.prototype=new k;c.prototype.constructor=c;c.La=function(c,g,k){for(var z=Array(arguments.length-2),q=2;q<arguments.length;q++)z[q-2]=arguments[q];return f.prototype[g].apply(c,z)}};var ka={};
+function D(c,f){function k(b){var a=b.charCodeAt(0),e;255>=a?(b="x",e=2):(b="u",e=4);var d=a.toString(16).toUpperCase(),a=d;e-=d.length;for(d=0;d<e;d++)a="0"+a;return"\\"+b+a}function n(b){return'"'+b.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-\x1F\x80-\uFFFF]/g,k)+'"'}function g(c){b<ta||(b>ta&&(ta=b,nb=[]),nb.push(c))}function u(){var w="newLine@"+b,a=p[w];if(a)return b=
+a.b,a.result;var e;e=b;/^[\n]/.test(c.charAt(b))?(a=c.charAt(b),b++):(a=null,0===l&&g("[\\n]"));null!==a&&(a="\n");null===a&&(b=e);p[w]={b:b,result:a};return a}function z(){var w="EOF@"+b,a=p[w];if(a)return b=a.b,a.result;var e;e=b;l++;c.length>b?(a=c.charAt(b),b++):(a=null,0===l&&g("any character"));l--;null===a?a="":(a=null,b=e);p[w]={b:b,result:a};return a}function q(){var w="_@"+b,a=p[w];if(a)return b=a.b,a.result;var e;l++;e=u();null===e&&(/^[\\\n]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,
+0===l&&g("[\\\\\\n]")),null===e&&(/^[\r\t\f\x0B ]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[\\r\\t\\f\\x0B ]")),null===e&&(e=C())));if(null!==e)for(a=[];null!==e;)a.push(e),e=u(),null===e&&(/^[\\\n]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[\\\\\\n]")),null===e&&(/^[\r\t\f\x0B ]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[\\r\\t\\f\\x0B ]")),null===e&&(e=C())));else a=null;l--;0===l&&null===a&&g("whitespace");p[w]={b:b,result:a};return a}function x(){var w=
+"noNewlineComment@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t;m=b;"/*"===c.substr(b,2)?(a="/*",b+=2):(a=null,0===l&&g('"/*"'));if(null!==a){e=[];h=t=b;l++;"*/"===c.substr(b,2)?(d="*/",b+=2):(d=null,0===l&&g('"*/"'));l--;null===d?d="":(d=null,b=h);null!==d?(c.length>b?(h=c.charAt(b),b++):(h=null,0===l&&g("any character")),null!==h?d=[d,h]:(d=null,b=t)):(d=null,b=t);for(;null!==d;)e.push(d),h=t=b,l++,"*/"===c.substr(b,2)?(d="*/",b+=2):(d=null,0===l&&g('"*/"')),l--,null===d?d="":(d=null,b=h),
+null!==d?(c.length>b?(h=c.charAt(b),b++):(h=null,0===l&&g("any character")),null!==h?d=[d,h]:(d=null,b=t)):(d=null,b=t);null!==e?("*/"===c.substr(b,2)?(d="*/",b+=2):(d=null,0===l&&g('"*/"')),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)}else a=null,b=m;if(null===a)if(m=b,"//"===c.substr(b,2)?(a="//",b+=2):(a=null,0===l&&g('"//"')),null!==a){e=[];/^[^\n]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[^\\n]"));for(;null!==d;)e.push(d),/^[^\n]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,
+0===l&&g("[^\\n]"));null!==e?a=[a,e]:(a=null,b=m)}else a=null,b=m;p[w]={b:b,result:a};return a}function ha(){var w="noNewlineWhitespace@"+b,a=p[w];if(a)return b=a.b,a.result;var e;/^[\r\t\f\x0B ]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[\\r\\t\\f\\x0B ]"));null===e&&(e=x());if(null!==e)for(a=[];null!==e;)a.push(e),/^[\r\t\f\x0B ]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[\\r\\t\\f\\x0B ]")),null===e&&(e=x());else a=null;p[w]={b:b,result:a};return a}function C(){var w=
+"comment@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t;l++;m=b;"/*"===c.substr(b,2)?(a="/*",b+=2):(a=null,0===l&&g('"/*"'));if(null!==a){e=[];h=t=b;l++;"*/"===c.substr(b,2)?(d="*/",b+=2):(d=null,0===l&&g('"*/"'));l--;null===d?d="":(d=null,b=h);null!==d?(c.length>b?(h=c.charAt(b),b++):(h=null,0===l&&g("any character")),null!==h?d=[d,h]:(d=null,b=t)):(d=null,b=t);for(;null!==d;)e.push(d),h=t=b,l++,"*/"===c.substr(b,2)?(d="*/",b+=2):(d=null,0===l&&g('"*/"')),l--,null===d?d="":(d=null,b=h),null!==
+d?(c.length>b?(h=c.charAt(b),b++):(h=null,0===l&&g("any character")),null!==h?d=[d,h]:(d=null,b=t)):(d=null,b=t);null!==e?("*/"===c.substr(b,2)?(d="*/",b+=2):(d=null,0===l&&g('"*/"')),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)}else a=null,b=m;if(null===a)if(m=b,"//"===c.substr(b,2)?(a="//",b+=2):(a=null,0===l&&g('"//"')),null!==a){e=[];/^[^\n]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[^\\n]"));for(;null!==d;)e.push(d),/^[^\n]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&
+g("[^\\n]"));null!==e?(d=u(),null===d&&(d=z()),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)}else a=null,b=m;l--;0===l&&null===a&&g("comment");p[w]={b:b,result:a};return a}function B(){var w="semicolon@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(59===c.charCodeAt(b)?(e=";",b+=1):(e=null,0===l&&g('";"')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,b=h)):(a=null,b=h);p[w]={b:b,result:a};return a}function H(){var w="comma@"+b,a=p[w];
+if(a)return b=a.b,a.result;var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(44===c.charCodeAt(b)?(e=",",b+=1):(e=null,0===l&&g('","')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,b=h)):(a=null,b=h);p[w]={b:b,result:a};return a}function ua(){var w="left_bracket@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(91===c.charCodeAt(b)?(e="[",b+=1):(e=null,0===l&&g('"["')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,
+b=h)):(a=null,b=h);p[w]={b:b,result:a};return a}function va(){var w="right_bracket@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(93===c.charCodeAt(b)?(e="]",b+=1):(e=null,0===l&&g('"]"')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,b=h)):(a=null,b=h);p[w]={b:b,result:a};return a}function bc(){var w="equals@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(61===c.charCodeAt(b)?(e="=",b+=1):(e=null,
+0===l&&g('"="')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,b=h)):(a=null,b=h);p[w]={b:b,result:a};return a}function ba(){var w="left_paren@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(40===c.charCodeAt(b)?(e="(",b+=1):(e=null,0===l&&g('"("')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,b=h)):(a=null,b=h);p[w]={b:b,result:a};return a}function ca(){var w="right_paren@"+b,a=p[w];if(a)return b=a.b,a.result;
+var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(41===c.charCodeAt(b)?(e=")",b+=1):(e=null,0===l&&g('")"')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,b=h)):(a=null,b=h);p[w]={b:b,result:a};return a}function ob(){var w="left_brace@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(123===c.charCodeAt(b)?(e="{",b+=1):(e=null,0===l&&g('"{"')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,b=h)):(a=null,b=h);p[w]={b:b,
+result:a};return a}function pb(){var w="right_brace@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h;h=b;a=q();a=null!==a?a:"";null!==a?(125===c.charCodeAt(b)?(e="}",b+=1):(e=null,0===l&&g('"}"')),null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=h)):(a=null,b=h)):(a=null,b=h);p[w]={b:b,result:a};return a}function ia(){var c="external_statement_list@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,a=b;e=[];for(d=qb();null!==d;)e.push(d),d=qb();if(null!==e){d=new y({type:"root",D:[]});for(var h=
+0;h<e.length;h++)e[h]&&(d.D=d.D.concat(e[h]));e=d}null===e&&(b=a);p[c]={b:b,result:e};return e}function qb(){var c="external_statement@"+b,a=p[c];if(a)return b=a.b,a.result;var e;e=b;a=cc();null===a&&(a=dc());null===a&&(b=e);null===a&&(e=b,a=q(),null!==a&&(a=""),null===a&&(b=e));p[c]={b:b,result:a};return a}function dc(){var c="external_declaration@"+b,a=p[c];if(a)return b=a.b,a.result;a=ec();null===a&&(a=fc(),null===a&&(a=rb(),null===a&&(a=sb(),null===a&&(a=gc(),null===a&&(a=Ma())))));p[c]={b:b,
+result:a};return a}function sb(){var w="preprocessor_operator@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t,f,k;f=t=b;35===c.charCodeAt(b)?(a="#",b+=1):(a=null,0===l&&g('"#"'));if(null!==a)if("undef"===c.substr(b,5)?(e="undef",b+=5):(e=null,0===l&&g('"undef"')),null===e&&("pragma"===c.substr(b,6)?(e="pragma",b+=6):(e=null,0===l&&g('"pragma"')),null===e&&("version"===c.substr(b,7)?(e="version",b+=7):(e=null,0===l&&g('"version"')),null===e&&("error"===c.substr(b,5)?(e="error",b+=5):(e=null,0===
+l&&g('"error"')),null===e&&("extension"===c.substr(b,9)?(e="extension",b+=9):(e=null,0===l&&g('"extension"')),null===e&&("line"===c.substr(b,4)?(e="line",b+=4):(e=null,0===l&&g('"line"'))))))),null!==e)if(d=q(),null!==d){k=b;h=[];/^[^\n]/.test(c.charAt(b))?(m=c.charAt(b),b++):(m=null,0===l&&g("[^\\n]"));for(;null!==m;)h.push(m),/^[^\n]/.test(c.charAt(b))?(m=c.charAt(b),b++):(m=null,0===l&&g("[^\\n]"));null!==h&&(h=h.join(""));null===h&&(b=k);null!==h?(m=u(),null===m&&(m=z()),null!==m?a=[a,e,d,h,m]:
+(a=null,b=f)):(a=null,b=f)}else a=null,b=f;else a=null,b=f;else a=null,b=f;null!==a&&(a=new y({type:"preprocessor",B:"#"+a[1],value:a[3]}));null===a&&(b=t);p[w]={b:b,result:a};return a}function la(){var w="macro_identifier@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m;m=h=b;/^[A-Za-z_]/.test(c.charAt(b))?(a=c.charAt(b),b++):(a=null,0===l&&g("[A-Za-z_]"));if(null!==a){e=[];/^[A-Za-z_0-9]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[A-Za-z_0-9]"));for(;null!==d;)e.push(d),/^[A-Za-z_0-9]/.test(c.charAt(b))?
+(d=c.charAt(b),b++):(d=null,0===l&&g("[A-Za-z_0-9]"));null!==e?a=[a,e]:(a=null,b=m)}else a=null,b=m;null!==a&&(a=new y({type:"identifier",name:a[0]+a[1].join("")}));null===a&&(b=h);p[w]={b:b,result:a};return a}function hc(){var w="preprocessor_parameter_list@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t,f,k;f=t=b;40===c.charCodeAt(b)?(a="(",b+=1):(a=null,0===l&&g('"("'));if(null!==a)if(e=la(),e=null!==e?e:"",null!==e){d=[];k=b;h=H();null!==h?(m=la(),null!==m?h=[h,m]:(h=null,b=k)):(h=null,b=
+k);for(;null!==h;)d.push(h),k=b,h=H(),null!==h?(m=la(),null!==m?h=[h,m]:(h=null,b=k)):(h=null,b=k);null!==d?(h=ca(),null!==h?a=[a,e,d,h]:(a=null,b=f)):(a=null,b=f)}else a=null,b=f;else a=null,b=f;null!==a&&(a=function(a,b){return a?[a].concat(b.map(function(a){return a[1]})):[]}(a[1],a[2]));null===a&&(b=t);p[w]={b:b,result:a};return a}function tb(){var w="macro_paren_parameter@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t,f,k,r;f=t=b;a=ba();if(null!==a){r=k=b;e=[];/^[^()]/.test(c.charAt(b))?
+(d=c.charAt(b),b++):(d=null,0===l&&g("[^()]"));for(;null!==d;)e.push(d),/^[^()]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[^()]"));if(null!==e)if(d=tb(),d=null!==d?d:"",null!==d){h=[];/^[^()]/.test(c.charAt(b))?(m=c.charAt(b),b++):(m=null,0===l&&g("[^()]"));for(;null!==m;)h.push(m),/^[^()]/.test(c.charAt(b))?(m=c.charAt(b),b++):(m=null,0===l&&g("[^()]"));null!==h?e=[e,d,h]:(e=null,b=r)}else e=null,b=r;else e=null,b=r;null!==e&&(e=e[0].join("")+e[1]+e[2].join(""));null===e&&(b=k);null!==
+e?(d=ca(),null!==d?a=[a,e,d]:(a=null,b=f)):(a=null,b=f)}else a=null,b=f;null!==a&&(a="("+a[1]+")");null===a&&(b=t);p[w]={b:b,result:a};return a}function Na(){var w="macro_call_parameter@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,a=tb();if(null===a){d=b;a=[];/^[^,)]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[^,)]"));for(;null!==e;)a.push(e),/^[^,)]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[^,)]"));null!==a&&(a=a.join(""));null===a&&(b=d)}p[w]={b:b,result:a};return a}
+function Ma(){var w="macro_call@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t,f;f=a=b;e=la();null!==e?(d=q(),d=null!==d?d:"",null!==d?(h=ba(),null!==h?(m=ub(),m=null!==m?m:"",null!==m?(41===c.charCodeAt(b)?(t=")",b+=1):(t=null,0===l&&g('")"')),null!==t?e=[e,d,h,m,t]:(e=null,b=f)):(e=null,b=f)):(e=null,b=f)):(e=null,b=f)):(e=null,b=f);null!==e&&(d=e[3],e=new y({type:"macro_call",oa:e[0],j:d}),d||(e.j=[]));null===e&&(b=a);p[w]={b:b,result:e};return e}function rb(){var w="preprocessor_define@"+
+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t,f,k,r,n,x,B;x=n=b;35===c.charCodeAt(b)?(a="#",b+=1):(a=null,0===l&&g('"#"'));if(null!==a)if(e=q(),e=null!==e?e:"",null!==e)if("define"===c.substr(b,6)?(d="define",b+=6):(d=null,0===l&&g('"define"')),null!==d)if(h=q(),null!==h)if(m=la(),null!==m)if(t=hc(),t=null!==t?t:"",null!==t){f=[];/^[ \t]/.test(c.charAt(b))?(k=c.charAt(b),b++):(k=null,0===l&&g("[ \\t]"));for(;null!==k;)f.push(k),/^[ \t]/.test(c.charAt(b))?(k=c.charAt(b),b++):(k=null,0===l&&g("[ \\t]"));
+if(null!==f){B=b;k=[];/^[^\n]/.test(c.charAt(b))?(r=c.charAt(b),b++):(r=null,0===l&&g("[^\\n]"));for(;null!==r;)k.push(r),/^[^\n]/.test(c.charAt(b))?(r=c.charAt(b),b++):(r=null,0===l&&g("[^\\n]"));null!==k&&(k=k.join(""));null===k&&(b=B);null!==k?(r=u(),null===r&&(r=z()),null!==r?a=[a,e,d,h,m,t,f,k,r]:(a=null,b=x)):(a=null,b=x)}else a=null,b=x}else a=null,b=x;else a=null,b=x;else a=null,b=x;else a=null,b=x;else a=null,b=x;else a=null,b=x;null!==a&&(a=new y({type:"preprocessor",B:"#define",identifier:a[4].name,
+pa:a[7],j:a[5]||null}));null===a&&(b=n);p[w]={b:b,result:a};return a}function vb(){var w="preprocessor_if@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t,f,k,r;k=f=b;35===c.charCodeAt(b)?(a="#",b+=1):(a=null,0===l&&g('"#"'));if(null!==a)if(e=q(),e=null!==e?e:"",null!==e)if("ifdef"===c.substr(b,5)?(d="ifdef",b+=5):(d=null,0===l&&g('"ifdef"')),null===d&&("ifndef"===c.substr(b,6)?(d="ifndef",b+=6):(d=null,0===l&&g('"ifndef"')),null===d&&("if"===c.substr(b,2)?(d="if",b+=2):(d=null,0===l&&g('"if"')))),
+null!==d)if(h=q(),null!==h){r=b;m=[];/^[^\n]/.test(c.charAt(b))?(t=c.charAt(b),b++):(t=null,0===l&&g("[^\\n]"));for(;null!==t;)m.push(t),/^[^\n]/.test(c.charAt(b))?(t=c.charAt(b),b++):(t=null,0===l&&g("[^\\n]"));null!==m&&(m=m.join(""));null===m&&(b=r);null!==m?(t=u(),null===t&&(t=z()),null!==t?a=[a,e,d,h,m,t]:(a=null,b=k)):(a=null,b=k)}else a=null,b=k;else a=null,b=k;else a=null,b=k;else a=null,b=k;null!==a&&(a=new y({type:"preprocessor",B:"#"+a[2],value:a[4]}));null===a&&(b=f);p[w]={b:b,result:a};
+return a}function wa(){var w="preprocessor_else_if@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t,f,k,r;k=f=b;35===c.charCodeAt(b)?(a="#",b+=1):(a=null,0===l&&g('"#"'));if(null!==a)if(e=q(),e=null!==e?e:"",null!==e)if("elif"===c.substr(b,4)?(d="elif",b+=4):(d=null,0===l&&g('"elif"')),null!==d)if(h=q(),null!==h){r=b;m=[];/^[^\n]/.test(c.charAt(b))?(t=c.charAt(b),b++):(t=null,0===l&&g("[^\\n]"));for(;null!==t;)m.push(t),/^[^\n]/.test(c.charAt(b))?(t=c.charAt(b),b++):(t=null,0===l&&g("[^\\n]"));
+null!==m&&(m=m.join(""));null===m&&(b=r);null!==m?(t=u(),null===t&&(t=z()),null!==t?a=[a,e,d,h,m,t]:(a=null,b=k)):(a=null,b=k)}else a=null,b=k;else a=null,b=k;else a=null,b=k;else a=null,b=k;null!==a&&(a=new y({type:"preprocessor",B:"#elif",value:a[4]}));null===a&&(b=f);p[w]={b:b,result:a};return a}function wb(){var w="preprocessor_else@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,t,f;f=t=b;35===c.charCodeAt(b)?(a="#",b+=1):(a=null,0===l&&g('"#"'));null!==a?(e=q(),e=null!==e?e:"",null!==e?("else"===
+c.substr(b,4)?(d="else",b+=4):(d=null,0===l&&g('"else"')),null!==d?(h=ha(),h=null!==h?h:"",null!==h?(m=u(),null!==m?a=[a,e,d,h,m]:(a=null,b=f)):(a=null,b=f)):(a=null,b=f)):(a=null,b=f)):(a=null,b=f);null!==a&&(a=new y({type:"preprocessor",B:"#else"}));null===a&&(b=t);p[w]={b:b,result:a};return a}function xb(){var w="preprocessor_end@"+b,a=p[w];if(a)return b=a.b,a.result;var e,d,h,m,f,k;k=b;35===c.charCodeAt(b)?(a="#",b+=1):(a=null,0===l&&g('"#"'));null!==a?(e=q(),e=null!==e?e:"",null!==e?("endif"===
+c.substr(b,5)?(d="endif",b+=5):(d=null,0===l&&g('"endif"')),null!==d?(h=ha(),h=null!==h?h:"",null!==h?(m=u(),null===m&&(m=z()),null!==m?(f=q(),f=null!==f?f:"",null!==f?a=[a,e,d,h,m,f]:(a=null,b=k)):(a=null,b=k)):(a=null,b=k)):(a=null,b=k)):(a=null,b=k)):(a=null,b=k);p[w]={b:b,result:a};return a}function cc(){var c="preprocessor_external_branch@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,g,f;f=g=m=b;a=vb();null!==a?(e=ia(),null!==e?a=[a,e]:(a=null,b=f)):(a=null,b=f);if(null!==a){e=[];f=b;d=wa();
+null!==d?(h=ia(),null!==h?d=[d,h]:(d=null,b=f)):(d=null,b=f);for(;null!==d;)e.push(d),f=b,d=wa(),null!==d?(h=ia(),null!==h?d=[d,h]:(d=null,b=f)):(d=null,b=f);null!==e?(f=b,d=wb(),null!==d?(h=ia(),null!==h?d=[d,h]:(d=null,b=f)):(d=null,b=f),d=null!==d?d:"",null!==d?(h=xb(),null!==h?a=[a,e,d,h]:(a=null,b=g)):(a=null,b=g)):(a=null,b=g)}else a=null,b=g;null!==a&&(a=ic(a[0],a[1],a[2]));null===a&&(b=m);p[c]={b:b,result:a};return a}function yb(){var c="preprocessor_statement_branch@"+b,a=p[c];if(a)return b=
+a.b,a.result;var e,d,h,m,g,f;f=g=m=b;a=vb();null!==a?(e=ma(),null!==e?a=[a,e]:(a=null,b=f)):(a=null,b=f);if(null!==a){e=[];f=b;d=wa();null!==d?(h=ma(),null!==h?d=[d,h]:(d=null,b=f)):(d=null,b=f);for(;null!==d;)e.push(d),f=b,d=wa(),null!==d?(h=ma(),null!==h?d=[d,h]:(d=null,b=f)):(d=null,b=f);null!==e?(f=b,d=wb(),null!==d?(h=ma(),null!==h?d=[d,h]:(d=null,b=f)):(d=null,b=f),d=null!==d?d:"",null!==d?(h=xb(),null!==h?a=[a,e,d,h]:(a=null,b=g)):(a=null,b=g)):(a=null,b=g)}else a=null,b=g;null!==a&&(a=ic(a[0],
+a[1],a[2]));null===a&&(b=m);p[c]={b:b,result:a};return a}function ec(){var c="function_definition@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h;h=d=b;a=zb();null!==a?(e=Oa(),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(e=a[0],a=L=new y({type:"function_declaration",name:e.name,ma:e.ma,j:e.j,body:a[1]}));null===a&&(b=d);p[c]={b:b,result:a};return a}function Oa(){var c="compound_statement@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m;m=a=b;e=ob();null!==e?(d=ma(),d=null!==d?d:"",null!==
+d?(h=pb(),null!==h?e=[e,d,h]:(e=null,b=m)):(e=null,b=m)):(e=null,b=m);null!==e&&(e=e[1],L=new y({type:"scope",D:[]}),e&&e.D&&(L.D=e.D),e=L);null===e&&(b=a);p[c]={b:b,result:e};return e}function ma(){var c="statement_list@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m;m=h=b;a=q();a=null!==a?a:"";if(null!==a){e=[];for(d=xa();null!==d;)e.push(d),d=xa();null!==e?(d=q(),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)}else a=null,b=m;null!==a&&(a={D:a[1]});null===a&&(b=h);p[c]={b:b,result:a};
+return a}function xa(){var c="statement_no_new_scope@"+b,a=p[c];if(a)return b=a.b,a.result;a=Oa();null===a&&(a=Ab(),null===a&&(a=yb()));p[c]={b:b,result:a};return a}function Pa(){var c="statement_with_scope@"+b,a=p[c];if(a)return b=a.b,a.result;a=Oa();null===a&&(a=Ab(),null===a&&(a=yb()));p[c]={b:b,result:a};return a}function Ab(){var c="simple_statement@"+b,a=p[c];if(a)return b=a.b,a.result;var e;e=b;a=Qa();null===a&&(a=Bb(),null===a&&(a=jc(),null===a&&(a=kc(),null===a&&(a=lc(),null===a&&(a=rb(),
+null===a&&(a=sb(),null===a&&(a=Ma())))))));null===a&&(b=e);p[c]={b:b,result:a};return a}function jc(){var f="selection_statement@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,t,k,n,r,u,x;u=r=b;"if"===c.substr(b,2)?(a="if",b+=2):(a=null,0===l&&g('"if"'));null!==a?(e=ba(),null!==e?(d=Q(),null!==d?(h=ca(),null!==h?(m=Pa(),null!==m?(x=b,"else"===c.substr(b,4)?(t="else",b+=4):(t=null,0===l&&g('"else"')),null!==t?(k=q(),k=null!==k?k:"",null!==k?(n=Pa(),null!==n?t=[t,k,n]:(t=null,b=x)):(t=null,b=x)):
+(t=null,b=x),t=null!==t?t:"",null!==t?a=[a,e,d,h,m,t]:(a=null,b=u)):(a=null,b=u)):(a=null,b=u)):(a=null,b=u)):(a=null,b=u)):(a=null,b=u);null!==a&&(e=a[5],L=new y({type:"if_statement",F:a[2],body:a[4]}),e&&(L.M=e[2]),a=L);null===a&&(b=r);p[f]={b:b,result:a};return a}function mc(){var f="for_loop@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,t,k,q,r,n;n=r=b;"for"===c.substr(b,3)?(a="for",b+=3):(a=null,0===l&&g('"for"'));null!==a?(e=ba(),null!==e?(d=Bb(),null===d&&(d=Qa()),null!==d?(h=Cb(),h=null!==
+h?h:"",null!==h?(m=B(),null!==m?(t=Q(),t=null!==t?t:"",null!==t?(k=ca(),null!==k?(q=xa(),null!==q?a=[a,e,d,h,m,t,k,q]:(a=null,b=n)):(a=null,b=n)):(a=null,b=n)):(a=null,b=n)):(a=null,b=n)):(a=null,b=n)):(a=null,b=n)):(a=null,b=n);null!==a&&(a=new y({type:"for_statement",H:a[2],F:a[3],Fa:a[5],body:a[7]}));null===a&&(b=r);p[f]={b:b,result:a};return a}function Db(){var f="while_statement@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,t;t=m=b;"while"===c.substr(b,5)?(a="while",b+=5):(a=null,0===l&&
+g('"while"'));null!==a?(e=ba(),null!==e?(d=Cb(),null!==d?(h=ca(),null!==h?a=[a,e,d,h]:(a=null,b=t)):(a=null,b=t)):(a=null,b=t)):(a=null,b=t);null!==a&&(a={F:a[2]});null===a&&(b=m);p[f]={b:b,result:a};return a}function nc(){var c="while_loop@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h;h=d=b;a=Db();null!==a?(e=xa(),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"while_statement",F:a[0].F,body:a[1]}));null===a&&(b=d);p[c]={b:b,result:a};return a}function oc(){var f="do_while@"+
+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;m=h=b;"do"===c.substr(b,2)?(a="do",b+=2):(a=null,0===l&&g('"do"'));null!==a?(e=Pa(),null!==e?(d=Db(),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m);null!==a&&(a=new y({type:"do_statement",F:a[2].F,body:a[1]}));null===a&&(b=h);p[f]={b:b,result:a};return a}function kc(){var c="iteration_statement@"+b,a=p[c];if(a)return b=a.b,a.result;a=nc();null===a&&(a=oc(),null===a&&(a=mc()));p[c]={b:b,result:a};return a}function lc(){var f="jump_statement@"+
+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,t;t=m=b;"return"===c.substr(b,6)?(a="return",b+=6):(a=null,0===l&&g('"return"'));null!==a?(e=q(),e=null!==e?e:"",null!==e?(d=Q(),null!==d?(h=B(),null!==h?a=[a,e,d,h]:(a=null,b=t)):(a=null,b=t)):(a=null,b=t)):(a=null,b=t);null!==a&&(a=new y({type:"return",value:a[2]}));null===a&&(b=m);null===a&&(t=m=b,"continue"===c.substr(b,8)?(a="continue",b+=8):(a=null,0===l&&g('"continue"')),null!==a?(e=B(),null!==e?a=[a,e]:(a=null,b=t)):(a=null,b=t),null===a&&(t=
+b,"break"===c.substr(b,5)?(a="break",b+=5):(a=null,0===l&&g('"break"')),null!==a?(e=B(),null!==e?a=[a,e]:(a=null,b=t)):(a=null,b=t),null===a&&(t=b,"return"===c.substr(b,6)?(a="return",b+=6):(a=null,0===l&&g('"return"')),null!==a?(e=B(),null!==e?a=[a,e]:(a=null,b=t)):(a=null,b=t),null===a&&(h=d=t=b,a="fs"==ya?"":null,null!==a?("discard"===c.substr(b,7)?(e="discard",b+=7):(e=null,0===l&&g('"discard"')),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h),null!==a&&(a="discard"),null===a&&(b=d),null!==a?(e=B(),
+null!==e?a=[a,e]:(a=null,b=t)):(a=null,b=t)))),null!==a&&(a=new y({type:a[0]})),null===a&&(b=m));p[f]={b:b,result:a};return a}function Bb(){var c="expression_statement@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h;h=d=b;a=Q();a=null!==a?a:"";null!==a?(e=B(),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"expression",N:a[0]}));null===a&&(b=d);p[c]={b:b,result:a};return a}function Qa(){var f="declaration@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,t,k,n,r,u;l++;r=n=b;a=
+zb();null!==a?(e=B(),null!==e?a=[a,e]:(a=null,b=r)):(a=null,b=r);null!==a&&(a=a[0]);null===a&&(b=n);if(null===a&&(r=n=b,a=za(),null!==a?(e=q(),null!==e?(d=Eb(),null!==d?(h=B(),null!==h?a=[a,e,d,h]:(a=null,b=r)):(a=null,b=r)):(a=null,b=r)):(a=null,b=r),null!==a&&(a=new y({type:"declarator",v:a[0],w:a[2]})),null===a&&(b=n),null===a)){r=n=b;a="vs"==ya?"":null;if(null!==a)if("invariant"===c.substr(b,9)?(e="invariant",b+=9):(e=null,0===l&&g('"invariant"')),null!==e)if(d=q(),null!==d)if(h=P(),null!==h){m=
+[];u=b;t=H();null!==t?(k=P(),null!==k?t=[t,k]:(t=null,b=u)):(t=null,b=u);for(;null!==t;)m.push(t),u=b,t=H(),null!==t?(k=P(),null!==k?t=[t,k]:(t=null,b=u)):(t=null,b=u);null!==m?(t=B(),null!==t?a=[a,e,d,h,m,t]:(a=null,b=r)):(a=null,b=r)}else a=null,b=r;else a=null,b=r;else a=null,b=r;else a=null,b=r;null!==a&&(a=function(a,b){var d=[a].concat(b.map(function(a){return a[1]}));return new y({type:"invariant",Ea:d})}(a[3],a[4]));null===a&&(b=n);null===a&&(r=n=b,"precision"===c.substr(b,9)?(a="precision",
+b+=9):(a=null,0===l&&g('"precision"')),null!==a?(e=q(),null!==e?(d=Ra(),null!==d?(h=q(),null!==h?(m=Aa(),null!==m?(t=B(),null!==t?a=[a,e,d,h,m,t]:(a=null,b=r)):(a=null,b=r)):(a=null,b=r)):(a=null,b=r)):(a=null,b=r)):(a=null,b=r),null!==a&&(a=new y({type:"precision",precision:a[2],typeName:a[4]})),null===a&&(b=n))}l--;0===l&&null===a&&g("declaration");p[f]={b:b,result:a};return a}function fc(){var c="global_declaration@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f,a=Qa();null===a&&(f=m=b,a=pc(),
+null!==a?(e=q(),null!==e?(d=Eb(),null!==d?(h=B(),null!==h?a=[a,e,d,h]:(a=null,b=f)):(a=null,b=f)):(a=null,b=f)):(a=null,b=f),null!==a&&(a=new y({type:"declarator",v:a[0],w:a[2]})),null===a&&(b=m),null===a&&(f=m=b,a=qc(),null!==a?(e=q(),null!==e?(d=rc(),null!==d?(h=B(),null!==h?a=[a,e,d,h]:(a=null,b=f)):(a=null,b=f)):(a=null,b=f)):(a=null,b=f),null!==a&&(a=new y({type:"declarator",v:a[0],w:a[2]})),null===a&&(b=m)));p[c]={b:b,result:a};return a}function sc(){var f="function_prototype_parameter_list@"+
+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,t,k;"void"===c.substr(b,4)?(a="void",b+=4):(a=null,0===l&&g('"void"'));if(null===a){t=m=b;a=Sa();if(null!==a){e=[];k=b;d=H();null!==d?(h=Sa(),null!==h?d=[d,h]:(d=null,b=k)):(d=null,b=k);for(;null!==d;)e.push(d),k=b,d=H(),null!==d?(h=Sa(),null!==h?d=[d,h]:(d=null,b=k)):(d=null,b=k);null!==e?a=[a,e]:(a=null,b=t)}else a=null,b=t;null!==a&&(a=function(a,b){return[a].concat(b.map(function(a){return a[1]}))}(a[0],a[1]));null===a&&(b=m)}p[f]={b:b,result:a};
+return a}function zb(){var c="function_prototype@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f,g,l;l=g=b;a=tc();null===a&&(a=Ba());null!==a?(e=q(),null!==e?(d=P(),null!==d?(h=ba(),null!==h?(m=sc(),m=null!==m?m:"",null!==m?(f=ca(),null!==f?a=[a,e,d,h,m,f]:(a=null,b=l)):(a=null,b=l)):(a=null,b=l)):(a=null,b=l)):(a=null,b=l)):(a=null,b=l);null!==a&&(e=a[4],L=new y({type:"function_prototype",name:a[2].name,ma:a[0],j:e}),"void"!=e&&e||(L.j=[]),a=L);null===a&&(b=g);p[c]={b:b,result:a};return a}function uc(){var f=
+"parameter_qualifier@"+b,a=p[f];if(a)return b=a.b,a.result;"inout"===c.substr(b,5)?(a="inout",b+=5):(a=null,0===l&&g('"inout"'));null===a&&("in"===c.substr(b,2)?(a="in",b+=2):(a=null,0===l&&g('"in"')),null===a&&("out"===c.substr(b,3)?(a="out",b+=3):(a=null,0===l&&g('"out"'))));p[f]={b:b,result:a};return a}function Sa(){var c="parameter_declaration@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f,g,l,k,n,u,x;x=u=a=b;e=Ta();null!==e?(d=q(),null!==d?e=[e,d]:(e=null,b=x)):(e=null,b=x);e=null!==e?e:
+"";null!==e?(x=b,d=uc(),null!==d?(h=q(),null!==h?d=[d,h]:(d=null,b=x)):(d=null,b=x),d=null!==d?d:"",null!==d?(x=b,h=Ra(),null!==h?(m=q(),null!==m?h=[h,m]:(h=null,b=x)):(h=null,b=x),h=null!==h?h:"",null!==h?(m=Aa(),null!==m?(f=q(),null!==f?(g=P(),null!==g?(x=b,l=ua(),null!==l?(k=na(),null!==k?(n=va(),null!==n?l=[l,k,n]:(l=null,b=x)):(l=null,b=x)):(l=null,b=x),l=null!==l?l:"",null!==l?e=[e,d,h,m,f,g,l]:(e=null,b=u)):(e=null,b=u)):(e=null,b=u)):(e=null,b=u)):(e=null,b=u)):(e=null,b=u)):(e=null,b=u);
+null!==e&&(d=e[0],h=e[1],m=e[2],f=e[6],e=new y({type:"parameter",Ka:e[3],name:e[5].name}),d&&(e.qa=d[0]),h&&(e.la=h[0]),m&&(e.precision=m[0]),f&&(e.$=f[1]),e=e.qa&&e.la&&"in"!=e.la?null:e);null===e&&(b=a);p[c]={b:b,result:e};return e}function Eb(){var c="init_declarator_list@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f,g;f=m=b;a=Ua();if(null!==a){e=[];g=b;d=H();null!==d?(h=Ua(),null!==h?d=[d,h]:(d=null,b=g)):(d=null,b=g);for(;null!==d;)e.push(d),g=b,d=H(),null!==d?(h=Ua(),null!==h?d=[d,h]:
+(d=null,b=g)):(d=null,b=g);null!==e?a=[a,e]:(a=null,b=f)}else a=null,b=f;null!==a&&(a=function(a,b){return[a].concat(b.map(function(a){return a[1]}))}(a[0],a[1]));null===a&&(b=m);p[c]={b:b,result:a};return a}function vc(){var c="declarator_list@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f,g;f=m=b;a=Ca();if(null!==a){e=[];g=b;d=H();null!==d?(h=Ca(),null!==h?d=[d,h]:(d=null,b=g)):(d=null,b=g);for(;null!==d;)e.push(d),g=b,d=H(),null!==d?(h=Ca(),null!==h?d=[d,h]:(d=null,b=g)):(d=null,b=g);null!==
+e?a=[a,e]:(a=null,b=f)}else a=null,b=f;null!==a&&(a=function(a,b){return[a].concat(b.map(function(a){return a[1]}))}(a[0],a[1]));null===a&&(b=m);p[c]={b:b,result:a};return a}function rc(){var c="declarator_list_no_array@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f,g;f=m=b;a=Da();if(null!==a){e=[];g=b;d=H();null!==d?(h=Da(),null!==h?d=[d,h]:(d=null,b=g)):(d=null,b=g);for(;null!==d;)e.push(d),g=b,d=H(),null!==d?(h=Da(),null!==h?d=[d,h]:(d=null,b=g)):(d=null,b=g);null!==e?a=[a,e]:(a=null,b=f)}else a=
+null,b=f;null!==a&&(a=function(a,b){return[a].concat(b.map(function(a){return a[1]}))}(a[0],a[1]));null===a&&(b=m);p[c]={b:b,result:a};return a}function Fb(){var c="declarator_list_arrays_have_size@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f,g;f=m=b;a=Ea();if(null!==a){e=[];g=b;d=H();null!==d?(h=Ea(),null!==h?d=[d,h]:(d=null,b=g)):(d=null,b=g);for(;null!==d;)e.push(d),g=b,d=H(),null!==d?(h=Ea(),null!==h?d=[d,h]:(d=null,b=g)):(d=null,b=g);null!==e?a=[a,e]:(a=null,b=f)}else a=null,b=f;null!==
+a&&(a=function(a,b){return[a].concat(b.map(function(a){return a[1]}))}(a[0],a[1]));null===a&&(b=m);p[c]={b:b,result:a};return a}function Da(){var c="declarator_no_array@"+b,a=p[c];if(a)return b=a.b,a.result;var e;e=b;a=P();null!==a&&(a=new y({type:"declarator_item",name:a}));null===a&&(b=e);p[c]={b:b,result:a};return a}function Ea(){var c="declarator_array_with_size@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f;f=m=b;a=P();null!==a?(e=ua(),null!==e?(d=na(),null!==d?(h=va(),null!==h?a=[a,e,d,
+h]:(a=null,b=f)):(a=null,b=f)):(a=null,b=f)):(a=null,b=f);null!==a&&(a=new y({type:"declarator_item",name:a[0],$:a[2],isArray:!0}));null===a&&(b=m);null===a&&(a=Da());p[c]={b:b,result:a};return a}function Ca(){var c="declarator@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m;m=h=b;a=P();null!==a?(e=ua(),null!==e?(d=va(),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m);null!==a&&(a=new y({type:"declarator_item",name:a[0],isArray:!0}));null===a&&(b=h);null===a&&(a=Ea());p[c]={b:b,result:a};
+return a}function Ua(){var c="init_declarator@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m;m=h=b;a=P();null!==a?(e=bc(),null!==e?(d=na(),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m);null!==a&&(a=new y({type:"declarator_item",name:a[0],H:a[2]}));null===a&&(b=h);null===a&&(a=Ca());p[c]={b:b,result:a};return a}function wc(){var c="member_list@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m,f,g;g=f=b;e=za();null!==e?(d=q(),null!==d?(h=Fb(),null!==h?(m=B(),null!==m?e=[e,d,h,m]:(e=
+null,b=g)):(e=null,b=g)):(e=null,b=g)):(e=null,b=g);if(null!==e)for(a=[];null!==e;)a.push(e),g=b,e=za(),null!==e?(d=q(),null!==d?(h=Fb(),null!==h?(m=B(),null!==m?e=[e,d,h,m]:(e=null,b=g)):(e=null,b=g)):(e=null,b=g)):(e=null,b=g);else a=null;null!==a&&(a=function(a){return a.map(function(a){return new y({type:"declarator",v:a[0],w:a[2]})})}(a));null===a&&(b=f);p[c]={b:b,result:a};return a}function gc(){var f="struct_definition@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,k,n,u,r,x;k=x=a=b;e=Gb();
+null===e&&(e=Hb());null!==e?(d=q(),null!==d?e=[e,d]:(e=null,b=k)):(e=null,b=k);e=null!==e?e:"";null!==e?("struct"===c.substr(b,6)?(d="struct",b+=6):(d=null,0===l&&g('"struct"')),null!==d?(k=b,h=q(),null!==h?(m=P(),null!==m?h=[h,m]:(h=null,b=k)):(h=null,b=k),h=null!==h?h:"",null!==h?(m=ob(),null!==m?(k=wc(),null!==k?(n=pb(),null!==n?(u=vc(),u=null!==u?u:"",null!==u?(r=B(),null!==r?e=[e,d,h,m,k,n,u,r]:(e=null,b=x)):(e=null,b=x)):(e=null,b=x)):(e=null,b=x)):(e=null,b=x)):(e=null,b=x)):(e=null,b=x)):
+(e=null,b=x);null!==e&&(d=e[0],h=e[2],m=e[6],e=new y({type:"struct_definition",Ia:e[4]}),d&&(e.qualifier=d[0]),h&&(e.name=h[1].name,xc[e.name]=e),m&&(e.w=m));null===e&&(b=a);p[f]={b:b,result:e};return e}function Ba(){var c="precision_type@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m;m=h=a=b;e=Ra();null!==e?(d=q(),null!==d?e=[e,d]:(e=null,b=m)):(e=null,b=m);e=null!==e?e:"";null!==e?(d=Aa(),null!==d?e=[e,d]:(e=null,b=h)):(e=null,b=h);null!==e&&(d=e[0],e=new y({type:"type",name:e[1]}),d&&(e.precision=
+d[0]));null===e&&(b=a);p[c]={b:b,result:e};return e}function za(){var c="locally_specified_type@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m;l++;m=h=a=b;e=Ta();null!==e?(d=q(),null!==d?e=[e,d]:(e=null,b=m)):(e=null,b=m);e=null!==e?e:"";null!==e?(d=Ba(),null!==d?e=[e,d]:(e=null,b=h)):(e=null,b=h);null!==e&&(d=e[0],e=e[1],d&&(e.qualifier=d[0]));null===e&&(b=a);l--;0===l&&null===e&&g("locally specified type");p[c]={b:b,result:e};return e}function Hb(){var f="attribute_qualifier@"+b,a=p[f];if(a)return b=
+a.b,a.result;var e,d,h;h=d=b;a="vs"==ya?"":null;null!==a?("attribute"===c.substr(b,9)?(e="attribute",b+=9):(e=null,0===l&&g('"attribute"')),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a="attribute");null===a&&(b=d);p[f]={b:b,result:a};return a}function qc(){var c="attribute_type@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m;l++;m=h=b;a=Hb();null!==a?(e=q(),null!==e?(d=Ba(),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m);null!==a&&(e=a[2],e.qualifier=a[0],a=e);null===a&&
+(b=h);l--;0===l&&null===a&&g("locally specified type");p[c]={b:b,result:a};return a}function pc(){var c="fully_specified_type@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,m;l++;m=h=a=b;e=Gb();null!==e?(d=q(),null!==d?e=[e,d]:(e=null,b=m)):(e=null,b=m);e=null!==e?e:"";null!==e?(d=Ba(),null!==d?e=[e,d]:(e=null,b=h)):(e=null,b=h);null!==e&&(d=e[0],e=e[1],d&&(e.qualifier=d[0]));null===e&&(b=a);l--;0===l&&null===e&&g("fully specified type");p[c]={b:b,result:e};return e}function Ra(){var f="precision_qualifier@"+
+b,a=p[f];if(a)return b=a.b,a.result;l++;"highp"===c.substr(b,5)?(a="highp",b+=5):(a=null,0===l&&g('"highp"'));null===a&&("mediump"===c.substr(b,7)?(a="mediump",b+=7):(a=null,0===l&&g('"mediump"')),null===a&&("lowp"===c.substr(b,4)?(a="lowp",b+=4):(a=null,0===l&&g('"lowp"'))));l--;0===l&&null===a&&g("precision qualifier");p[f]={b:b,result:a};return a}function Ta(){var f="const_qualifier@"+b,a=p[f];if(a)return b=a.b,a.result;"const"===c.substr(b,5)?(a="const",b+=5):(a=null,0===l&&g('"const"'));p[f]=
+{b:b,result:a};return a}function Gb(){var f="type_qualifier@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;l++;a=Ta();null===a&&("varying"===c.substr(b,7)?(a="varying",b+=7):(a=null,0===l&&g('"varying"')),null===a&&(m=h=b,"invariant"===c.substr(b,9)?(a="invariant",b+=9):(a=null,0===l&&g('"invariant"')),null!==a?(e=q(),null!==e?("varying"===c.substr(b,7)?(d="varying",b+=7):(d=null,0===l&&g('"varying"')),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m),null!==a&&(a="invariant varying"),
+null===a&&(b=h),null===a&&("uniform"===c.substr(b,7)?(a="uniform",b+=7):(a=null,0===l&&g('"uniform"')))));l--;0===l&&null===a&&g("type qualifier");p[f]={b:b,result:a};return a}function tc(){var f="void_type@"+b,a=p[f];if(a)return b=a.b,a.result;var e;l++;e=b;"void"===c.substr(b,4)?(a="void",b+=4):(a=null,0===l&&g('"void"'));null!==a&&(a=new y({type:"type",name:"void"}));null===a&&(b=e);l--;0===l&&null===a&&g("void");p[f]={b:b,result:a};return a}function Aa(){var f="type_name@"+b,a=p[f];if(a)return b=
+a.b,a.result;var e;l++;"float"===c.substr(b,5)?(a="float",b+=5):(a=null,0===l&&g('"float"'));null===a&&("int"===c.substr(b,3)?(a="int",b+=3):(a=null,0===l&&g('"int"')),null===a&&("bool"===c.substr(b,4)?(a="bool",b+=4):(a=null,0===l&&g('"bool"')),null===a&&("sampler2D"===c.substr(b,9)?(a="sampler2D",b+=9):(a=null,0===l&&g('"sampler2D"')),null===a&&("samplerCube"===c.substr(b,11)?(a="samplerCube",b+=11):(a=null,0===l&&g('"samplerCube"')),null===a&&(a=Ib(),null===a&&(a=Jb(),null===a&&(e=b,a=P(),null!==
+a&&(a=a.name in xc?a.name:null),null===a&&(b=e))))))));l--;0===l&&null===a&&g("type name");p[f]={b:b,result:a};return a}function P(){var f="identifier@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,k;l++;d=k=m=b;l++;h=b;a=yc();null!==a?(/^[^A-Za-z_0-9]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[^A-Za-z_0-9]")),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);l--;null===a?a="":(a=null,b=d);if(null!==a)if(/^[A-Za-z_]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[A-Za-z_]")),
+null!==e){d=[];/^[A-Za-z_0-9]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[A-Za-z_0-9]"));for(;null!==h;)d.push(h),/^[A-Za-z_0-9]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[A-Za-z_0-9]"));null!==d?a=[a,e,d]:(a=null,b=k)}else a=null,b=k;else a=null,b=k;null!==a&&(a=new y({type:"identifier",name:a[1]+a[2].join("")}));null===a&&(b=m);l--;0===l&&null===a&&g("identifier");p[f]={b:b,result:a};return a}function yc(){var f="keyword@"+b,a=p[f];if(a)return b=a.b,a.result;l++;"attribute"===
+c.substr(b,9)?(a="attribute",b+=9):(a=null,0===l&&g('"attribute"'));null===a&&("const"===c.substr(b,5)?(a="const",b+=5):(a=null,0===l&&g('"const"')),null===a&&("bool"===c.substr(b,4)?(a="bool",b+=4):(a=null,0===l&&g('"bool"')),null===a&&("float"===c.substr(b,5)?(a="float",b+=5):(a=null,0===l&&g('"float"')),null===a&&("int"===c.substr(b,3)?(a="int",b+=3):(a=null,0===l&&g('"int"')),null===a&&("break"===c.substr(b,5)?(a="break",b+=5):(a=null,0===l&&g('"break"')),null===a&&("continue"===c.substr(b,8)?
+(a="continue",b+=8):(a=null,0===l&&g('"continue"')),null===a&&("do"===c.substr(b,2)?(a="do",b+=2):(a=null,0===l&&g('"do"')),null===a&&("else"===c.substr(b,4)?(a="else",b+=4):(a=null,0===l&&g('"else"')),null===a&&("for"===c.substr(b,3)?(a="for",b+=3):(a=null,0===l&&g('"for"')),null===a&&("if"===c.substr(b,2)?(a="if",b+=2):(a=null,0===l&&g('"if"')),null===a&&("discard"===c.substr(b,7)?(a="discard",b+=7):(a=null,0===l&&g('"discard"')),null===a&&("return"===c.substr(b,6)?(a="return",b+=6):(a=null,0===
+l&&g('"return"')),null===a&&(a=Ib(),null===a&&(a=Jb(),null===a&&("in"===c.substr(b,2)?(a="in",b+=2):(a=null,0===l&&g('"in"')),null===a&&("out"===c.substr(b,3)?(a="out",b+=3):(a=null,0===l&&g('"out"')),null===a&&("inout"===c.substr(b,5)?(a="inout",b+=5):(a=null,0===l&&g('"inout"')),null===a&&("uniform"===c.substr(b,7)?(a="uniform",b+=7):(a=null,0===l&&g('"uniform"')),null===a&&("varying"===c.substr(b,7)?(a="varying",b+=7):(a=null,0===l&&g('"varying"')),null===a&&("sampler2D"===c.substr(b,9)?(a="sampler2D",
+b+=9):(a=null,0===l&&g('"sampler2D"')),null===a&&("samplerCube"===c.substr(b,11)?(a="samplerCube",b+=11):(a=null,0===l&&g('"samplerCube"')),null===a&&("struct"===c.substr(b,6)?(a="struct",b+=6):(a=null,0===l&&g('"struct"')),null===a&&("void"===c.substr(b,4)?(a="void",b+=4):(a=null,0===l&&g('"void"')),null===a&&("while"===c.substr(b,5)?(a="while",b+=5):(a=null,0===l&&g('"while"')),null===a&&("highp"===c.substr(b,5)?(a="highp",b+=5):(a=null,0===l&&g('"highp"')),null===a&&("mediump"===c.substr(b,7)?
+(a="mediump",b+=7):(a=null,0===l&&g('"mediump"')),null===a&&("lowp"===c.substr(b,4)?(a="lowp",b+=4):(a=null,0===l&&g('"lowp"')),null===a&&("true"===c.substr(b,4)?(a="true",b+=4):(a=null,0===l&&g('"true"')),null===a&&("false"===c.substr(b,5)?(a="false",b+=5):(a=null,0===l&&g('"false"')))))))))))))))))))))))))))))));l--;0===l&&null===a&&g("keyword");p[f]={b:b,result:a};return a}function Ib(){var f="vector@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;m=h=b;/^[bi]/.test(c.charAt(b))?(a=c.charAt(b),
+b++):(a=null,0===l&&g("[bi]"));a=null!==a?a:"";null!==a?("vec"===c.substr(b,3)?(e="vec",b+=3):(e=null,0===l&&g('"vec"')),null!==e?(/^[234]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[234]")),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m);null!==a&&(a=a.join(""));null===a&&(b=h);p[f]={b:b,result:a};return a}function Jb(){var f="matrix@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h;h=d=b;"mat"===c.substr(b,3)?(a="mat",b+=3):(a=null,0===l&&g('"mat"'));null!==a?(/^[234]/.test(c.charAt(b))?
+(e=c.charAt(b),b++):(e=null,0===l&&g("[234]")),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=a.join(""));null===a&&(b=d);p[f]={b:b,result:a};return a}function Kb(){var f="single_underscore_identifier@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;m=b;a=[];/^[A-Za-z0-9]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[A-Za-z0-9]"));for(;null!==e;)a.push(e),/^[A-Za-z0-9]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[A-Za-z0-9]"));if(null!==a)if(95===c.charCodeAt(b)?
+(e="_",b+=1):(e=null,0===l&&g('"_"')),null!==e){/^[A-Za-z0-9]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[A-Za-z0-9]"));if(null!==h)for(d=[];null!==h;)d.push(h),/^[A-Za-z0-9]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[A-Za-z0-9]"));else d=null;null!==d?a=[a,e,d]:(a=null,b=m)}else a=null,b=m;else a=null,b=m;p[f]={b:b,result:a};return a}function zc(){var f="int_constant@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,k;k=m=b;/^[1-9]/.test(c.charAt(b))?(a=c.charAt(b),b++):
+(a=null,0===l&&g("[1-9]"));if(null!==a){e=[];/^[0-9]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[0-9]"));for(;null!==d;)e.push(d),/^[0-9]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[0-9]"));null!==e?a=[a,e]:(a=null,b=k)}else a=null,b=k;null!==a&&(a=new y({type:"int",value:parseInt([a[0]].concat(a[1]).join(""),10)}));null===a&&(b=m);if(null===a){k=m=b;48===c.charCodeAt(b)?(a="0",b+=1):(a=null,0===l&&g('"0"'));if(null!==a)if(/^[Xx]/.test(c.charAt(b))?(e=c.charAt(b),b++):
+(e=null,0===l&&g("[Xx]")),null!==e){/^[0-9A-Fa-f]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[0-9A-Fa-f]"));if(null!==h)for(d=[];null!==h;)d.push(h),/^[0-9A-Fa-f]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[0-9A-Fa-f]"));else d=null;null!==d?a=[a,e,d]:(a=null,b=k)}else a=null,b=k;else a=null,b=k;null!==a&&(a=new y({type:"int",value:parseInt(a[2].join(""),16)}));null===a&&(b=m);if(null===a){k=m=b;48===c.charCodeAt(b)?(a="0",b+=1):(a=null,0===l&&g('"0"'));if(null!==a){/^[0-7]/.test(c.charAt(b))?
+(d=c.charAt(b),b++):(d=null,0===l&&g("[0-7]"));if(null!==d)for(e=[];null!==d;)e.push(d),/^[0-7]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[0-7]"));else e=null;null!==e?a=[a,e]:(a=null,b=k)}else a=null,b=k;null!==a&&(a=new y({type:"int",value:parseInt(a[1].join(""),8)}));null===a&&(b=m);null===a&&(m=b,48===c.charCodeAt(b)?(a="0",b+=1):(a=null,0===l&&g('"0"')),null!==a&&(a=new y({type:"int",value:0})),null===a&&(b=m))}}p[f]={b:b,result:a};return a}function Ac(){var f="float_constant@"+
+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,k;k=a=b;e=[];/^[0-9]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[0-9]"));for(;null!==d;)e.push(d),/^[0-9]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[0-9]"));if(null!==e)if(46===c.charCodeAt(b)?(d=".",b+=1):(d=null,0===l&&g('"."')),null!==d){/^[0-9]/.test(c.charAt(b))?(m=c.charAt(b),b++):(m=null,0===l&&g("[0-9]"));if(null!==m)for(h=[];null!==m;)h.push(m),/^[0-9]/.test(c.charAt(b))?(m=c.charAt(b),b++):(m=null,0===l&&g("[0-9]"));
+else h=null;null!==h?(m=Va(),m=null!==m?m:"",null!==m?e=[e,d,h,m]:(e=null,b=k)):(e=null,b=k)}else e=null,b=k;else e=null,b=k;if(null===e){k=b;/^[0-9]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[0-9]"));if(null!==d)for(e=[];null!==d;)e.push(d),/^[0-9]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[0-9]"));else e=null;if(null!==e)if(46===c.charCodeAt(b)?(d=".",b+=1):(d=null,0===l&&g('"."')),null!==d){h=[];/^[0-9]/.test(c.charAt(b))?(m=c.charAt(b),b++):(m=null,0===l&&g("[0-9]"));
+for(;null!==m;)h.push(m),/^[0-9]/.test(c.charAt(b))?(m=c.charAt(b),b++):(m=null,0===l&&g("[0-9]"));null!==h?(m=Va(),m=null!==m?m:"",null!==m?e=[e,d,h,m]:(e=null,b=k)):(e=null,b=k)}else e=null,b=k;else e=null,b=k}null!==e&&(e[0]=e[0].join(""),e[2]=e[2].join(""),e=new y({type:"float",value:parseFloat(e.join(""))}));null===e&&(b=a);if(null===e){k=a=b;/^[0-9]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[0-9]"));if(null!==d)for(e=[];null!==d;)e.push(d),/^[0-9]/.test(c.charAt(b))?(d=c.charAt(b),
+b++):(d=null,0===l&&g("[0-9]"));else e=null;null!==e?(d=Va(),null!==d?e=[e,d]:(e=null,b=k)):(e=null,b=k);null!==e&&(e=new y({type:"float",value:parseFloat(e[0].join("")+e[1])}));null===e&&(b=a)}p[f]={b:b,result:e};return e}function Va(){var f="float_exponent@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,k;k=m=b;/^[Ee]/.test(c.charAt(b))?(a=c.charAt(b),b++):(a=null,0===l&&g("[Ee]"));if(null!==a)if(/^[+\-]/.test(c.charAt(b))?(e=c.charAt(b),b++):(e=null,0===l&&g("[+\\-]")),e=null!==e?e:"",null!==
+e){/^[0-9]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[0-9]"));if(null!==h)for(d=[];null!==h;)d.push(h),/^[0-9]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[0-9]"));else d=null;null!==d?a=[a,e,d]:(a=null,b=k)}else a=null,b=k;else a=null,b=k;null!==a&&(a=["e",a[1]].concat(a[2]).join(""));null===a&&(b=m);p[f]={b:b,result:a};return a}function Bc(){var c="paren_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,f;f=h=b;a=ba();null!==a?(e=Q(),null!==e?(d=ca(),null!==
+d?a=[a,e,d]:(a=null,b=f)):(a=null,b=f)):(a=null,b=f);null!==a&&(a=a[1]);null===a&&(b=h);p[c]={b:b,result:a};return a}function Cc(){var f="bool_constant@"+b,a=p[f];if(a)return b=a.b,a.result;var e;e=b;"true"===c.substr(b,4)?(a="true",b+=4):(a=null,0===l&&g('"true"'));null===a&&("false"===c.substr(b,5)?(a="false",b+=5):(a=null,0===l&&g('"false"')));null!==a&&(a=new y({type:"bool",value:"true"==a}));null===a&&(b=e);p[f]={b:b,result:a};return a}function Dc(){var c="primary_expression@"+b,a=p[c];if(a)return b=
+a.b,a.result;a=Ec();null===a&&(a=P(),null===a&&(a=Ac(),null===a&&(a=zc(),null===a&&(a=Cc(),null===a&&(a=Bc())))));p[c]={b:b,result:a};return a}function Fa(){var c="index_accessor@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,f;f=h=b;a=ua();null!==a?(e=Q(),null!==e?(d=va(),null!==d?a=[a,e,d]:(a=null,b=f)):(a=null,b=f)):(a=null,b=f);null!==a&&(a=new y({type:"accessor",index:a[1]}));null===a&&(b=h);p[c]={b:b,result:a};return a}function Ga(){var f="field_selector@"+b,a=p[f];if(a)return b=a.b,a.result;
+var e,d,h;h=d=b;46===c.charCodeAt(b)?(a=".",b+=1):(a=null,0===l&&g('"."'));null!==a?(e=P(),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"field_selector",selection:a[1].name}));null===a&&(b=d);p[f]={b:b,result:a};return a}function Fc(){var c="postfix_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,f;f=a=b;e=Dc();if(null!==e){d=[];h=Ga();for(null===h&&(h=Fa());null!==h;)d.push(h),h=Ga(),null===h&&(h=Fa());null!==d?e=[e,d]:(e=null,b=f)}else e=null,b=f;if(null!==e)for(d=
+e[1],e=e[0],h=0;h<d.length;h++)e=new y({type:"postfix",h:d[h],N:e});null===e&&(b=a);p[c]={b:b,result:e};return e}function Gc(){var f="postfix_expression_no_repeat@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,k,n;n=a=b;e=Fc();if(null!==e)if(d=q(),d=null!==d?d:"",null!==d)if("++"===c.substr(b,2)?(h="++",b+=2):(h=null,0===l&&g('"++"')),null===h&&("--"===c.substr(b,2)?(h="--",b+=2):(h=null,0===l&&g('"--"'))),h=null!==h?h:"",null!==h){m=[];k=Ga();for(null===k&&(k=Fa());null!==k;)m.push(k),k=Ga(),
+null===k&&(k=Fa());null!==m?e=[e,d,h,m]:(e=null,b=n)}else e=null,b=n;else e=null,b=n;else e=null,b=n;if(null!==e)for(h=e[2],d=e[3],e=e[0],h&&(e=new y({type:"postfix",h:new y({id:Hc++,type:"operator",h:h}),N:e})),h=0;h<d.length;h++)e=new y({type:"postfix",h:d[h],N:e});null===e&&(b=a);p[f]={b:b,result:e};return e}function ub(){var f="parameter_list@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m,k,n;m=b;"void"===c.substr(b,4)?(a="void",b+=4):(a=null,0===l&&g('"void"'));null!==a&&(a=[]);null===a&&
+(b=m);if(null===a){k=m=b;a=Q();if(null!==a){e=[];n=b;d=H();null!==d?(h=Q(),null!==h?d=[d,h]:(d=null,b=n)):(d=null,b=n);for(;null!==d;)e.push(d),n=b,d=H(),null!==d?(h=Q(),null!==h?d=[d,h]:(d=null,b=n)):(d=null,b=n);null!==e?a=[a,e]:(a=null,b=k)}else a=null,b=k;null!==a&&(a=function(a,b){return[a].concat(b.map(function(a){return a[1]}))}(a[0],a[1]));null===a&&(b=m)}p[f]={b:b,result:a};return a}function Ec(){var c="function_call@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,f,g;g=a=b;e=Ic();null!==
+e?(d=ba(),null!==d?(h=ub(),h=null!==h?h:"",null!==h?(f=ca(),null!==f?e=[e,d,h,f]:(e=null,b=g)):(e=null,b=g)):(e=null,b=g)):(e=null,b=g);null!==e&&(d=e[2],e=new y({type:"function_call",I:e[0],j:d}),d||(e.j=[]));null===e&&(b=a);p[c]={b:b,result:e};return e}function Ic(){var c="function_identifier@"+b,a=p[c];if(a)return b=a.b,a.result;var e;e=b;a=P();null!==a&&(a=a.name);null===a&&(b=e);null===a&&(a=Aa());p[c]={b:b,result:a};return a}function Wa(){var f="unary_expression@"+b,a=p[f];if(a)return b=a.b,
+a.result;var e,d,h,m;m=h=b;"++"===c.substr(b,2)?(a="++",b+=2):(a=null,0===l&&g('"++"'));null===a&&("--"===c.substr(b,2)?(a="--",b+=2):(a=null,0===l&&g('"--"')),null===a&&(33===c.charCodeAt(b)?(a="!",b+=1):(a=null,0===l&&g('"!"')),null===a&&(126===c.charCodeAt(b)?(a="~",b+=1):(a=null,0===l&&g('"~"')),null===a&&(43===c.charCodeAt(b)?(a="+",b+=1):(a=null,0===l&&g('"+"')),null===a&&(45===c.charCodeAt(b)?(a="-",b+=1):(a=null,0===l&&g('"-"')))))));a=null!==a?a:"";null!==a?(e=q(),e=null!==e?e:"",null!==
+e?(d=Gc(),null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m);null!==a&&(e=a[0],L=a[2],e&&(L=new y({type:"unary",N:L,h:new y({type:"operator",h:e})})),a=L);null===a&&(b=h);p[f]={b:b,result:a};return a}function Lb(){var f="multiplicative_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;h=d=b;42===c.charCodeAt(b)?(a="*",b+=1):(a=null,0===l&&g('"*"'));null===a&&(47===c.charCodeAt(b)?(a="/",b+=1):(a=null,0===l&&g('"/"')),null===a&&(37===c.charCodeAt(b)?(a="%",b+=1):(a=null,0===l&&g('"%"'))));
+null!==a?(m=b,l++,61===c.charCodeAt(b)?(e="=",b+=1):(e=null,0===l&&g('"="')),l--,null===e?e="":(e=null,b=m),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"operator",h:a[0]}));null===a&&(b=d);p[f]={b:b,result:a};return a}function Xa(){var c="multiplicative_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,f,g,k,l,n;l=k=b;a=Wa();if(null!==a){e=[];n=b;d=q();d=null!==d?d:"";null!==d?(h=Lb(),null!==h?(f=q(),f=null!==f?f:"",null!==f?(g=Wa(),null!==g?d=[d,h,f,g]:(d=null,b=
+n)):(d=null,b=n)):(d=null,b=n)):(d=null,b=n);for(;null!==d;)e.push(d),n=b,d=q(),d=null!==d?d:"",null!==d?(h=Lb(),null!==h?(f=q(),f=null!==f?f:"",null!==f?(g=Wa(),null!==g?d=[d,h,f,g]:(d=null,b=n)):(d=null,b=n)):(d=null,b=n)):(d=null,b=n);null!==e?a=[a,e]:(a=null,b=l)}else a=null,b=l;null!==a&&(a=V(a[0],a[1]));null===a&&(b=k);p[c]={b:b,result:a};return a}function Mb(){var f="additive_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;h=d=b;43===c.charCodeAt(b)?(a="+",b+=1):(a=null,0===l&&g('"+"'));
+null!==a?(m=b,l++,43===c.charCodeAt(b)?(e="+",b+=1):(e=null,0===l&&g('"+"')),null===e&&(61===c.charCodeAt(b)?(e="=",b+=1):(e=null,0===l&&g('"="'))),l--,null===e?e="":(e=null,b=m),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"operator",h:"+"}));null===a&&(b=d);null===a&&(h=d=b,45===c.charCodeAt(b)?(a="-",b+=1):(a=null,0===l&&g('"-"')),null!==a?(m=b,l++,45===c.charCodeAt(b)?(e="-",b+=1):(e=null,0===l&&g('"-"')),null===e&&(61===c.charCodeAt(b)?(e="=",b+=1):(e=null,0===l&&g('"="'))),
+l--,null===e?e="":(e=null,b=m),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h),null!==a&&(a=new y({type:"operator",h:"-"})),null===a&&(b=d));p[f]={b:b,result:a};return a}function Ya(){var c="additive_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,f,g,k,l,n;l=k=b;a=Xa();if(null!==a){e=[];n=b;d=q();d=null!==d?d:"";null!==d?(h=Mb(),null!==h?(f=q(),f=null!==f?f:"",null!==f?(g=Xa(),null!==g?d=[d,h,f,g]:(d=null,b=n)):(d=null,b=n)):(d=null,b=n)):(d=null,b=n);for(;null!==d;)e.push(d),n=b,d=q(),d=
+null!==d?d:"",null!==d?(h=Mb(),null!==h?(f=q(),f=null!==f?f:"",null!==f?(g=Xa(),null!==g?d=[d,h,f,g]:(d=null,b=n)):(d=null,b=n)):(d=null,b=n)):(d=null,b=n);null!==e?a=[a,e]:(a=null,b=l)}else a=null,b=l;null!==a&&(a=V(a[0],a[1]));null===a&&(b=k);p[c]={b:b,result:a};return a}function Nb(){var f="shift_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;h=d=b;"<<"===c.substr(b,2)?(a="<<",b+=2):(a=null,0===l&&g('"<<"'));null===a&&(">>"===c.substr(b,2)?(a=">>",b+=2):(a=null,0===l&&g('">>"')));null!==
+a?(m=b,l++,61===c.charCodeAt(b)?(e="=",b+=1):(e=null,0===l&&g('"="')),l--,null===e?e="":(e=null,b=m),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"operator",h:a[0]}));null===a&&(b=d);p[f]={b:b,result:a};return a}function Za(){var c="shift_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,f,g,k,l,n;l=k=b;a=Ya();if(null!==a){e=[];n=b;d=q();d=null!==d?d:"";null!==d?(h=Nb(),null!==h?(f=q(),f=null!==f?f:"",null!==f?(g=Ya(),null!==g?d=[d,h,f,g]:(d=null,b=n)):(d=null,b=n)):
+(d=null,b=n)):(d=null,b=n);for(;null!==d;)e.push(d),n=b,d=q(),d=null!==d?d:"",null!==d?(h=Nb(),null!==h?(f=q(),f=null!==f?f:"",null!==f?(g=Ya(),null!==g?d=[d,h,f,g]:(d=null,b=n)):(d=null,b=n)):(d=null,b=n)):(d=null,b=n);null!==e?a=[a,e]:(a=null,b=l)}else a=null,b=l;null!==a&&(a=V(a[0],a[1]));null===a&&(b=k);p[c]={b:b,result:a};return a}function Ob(){var f="relational_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;m=h=b;60===c.charCodeAt(b)?(a="<",b+=1):(a=null,0===l&&g('"<"'));null!==
+a?(d=b,l++,60===c.charCodeAt(b)?(e="<",b+=1):(e=null,0===l&&g('"<"')),l--,null===e?e="":(e=null,b=d),null!==e?(61===c.charCodeAt(b)?(d="=",b+=1):(d=null,0===l&&g('"="')),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m);null!==a&&(a=new y({type:"operator",h:"<"+a[2]}));null===a&&(b=h);null===a&&(m=h=b,62===c.charCodeAt(b)?(a=">",b+=1):(a=null,0===l&&g('">"')),null!==a?(d=b,l++,62===c.charCodeAt(b)?(e=">",b+=1):(e=null,0===l&&g('">"')),l--,null===e?e="":(e=null,b=d),null!==
+e?(61===c.charCodeAt(b)?(d="=",b+=1):(d=null,0===l&&g('"="')),d=null!==d?d:"",null!==d?a=[a,e,d]:(a=null,b=m)):(a=null,b=m)):(a=null,b=m),null!==a&&(a=new y({type:"operator",h:">"+a[2]})),null===a&&(b=h));p[f]={b:b,result:a};return a}function $a(){var c="relational_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,h,f,g,k,l,n;l=k=b;a=Za();if(null!==a){e=[];n=b;d=q();d=null!==d?d:"";null!==d?(h=Ob(),null!==h?(f=q(),f=null!==f?f:"",null!==f?(g=Za(),null!==g?d=[d,h,f,g]:(d=null,b=n)):(d=null,
+b=n)):(d=null,b=n)):(d=null,b=n);for(;null!==d;)e.push(d),n=b,d=q(),d=null!==d?d:"",null!==d?(h=Ob(),null!==h?(f=q(),f=null!==f?f:"",null!==f?(g=Za(),null!==g?d=[d,h,f,g]:(d=null,b=n)):(d=null,b=n)):(d=null,b=n)):(d=null,b=n);null!==e?a=[a,e]:(a=null,b=l)}else a=null,b=l;null!==a&&(a=V(a[0],a[1]));null===a&&(b=k);p[c]={b:b,result:a};return a}function Pb(){var f="equality_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e;e=b;"=="===c.substr(b,2)?(a="==",b+=2):(a=null,0===l&&g('"=="'));null===a&&
+("!="===c.substr(b,2)?(a="!=",b+=2):(a=null,0===l&&g('"!="')));null!==a&&(a=new y({type:"operator",h:a}));null===a&&(b=e);p[f]={b:b,result:a};return a}function ab(){var c="equality_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f,g,k,l,n,r;n=l=b;a=$a();if(null!==a){e=[];r=b;d=q();d=null!==d?d:"";null!==d?(f=Pb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=$a(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);for(;null!==d;)e.push(d),r=b,d=q(),d=null!==d?d:"",null!==
+d?(f=Pb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=$a(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);null!==e?a=[a,e]:(a=null,b=n)}else a=null,b=n;null!==a&&(a=V(a[0],a[1]));null===a&&(b=l);p[c]={b:b,result:a};return a}function Qb(){var f="bitwise_and_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;h=d=b;38===c.charCodeAt(b)?(a="&",b+=1):(a=null,0===l&&g('"&"'));null!==a?(m=b,l++,61===c.charCodeAt(b)?(e="=",b+=1):(e=null,0===l&&g('"="')),null===e&&(38===
+c.charCodeAt(b)?(e="&",b+=1):(e=null,0===l&&g('"&"'))),l--,null===e?e="":(e=null,b=m),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"operator",h:"&"}));null===a&&(b=d);p[f]={b:b,result:a};return a}function bb(){var c="bitwise_and_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f,g,k,l,n,r;n=l=b;a=ab();if(null!==a){e=[];r=b;d=q();d=null!==d?d:"";null!==d?(f=Qb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=ab(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,
+b=r)):(d=null,b=r);for(;null!==d;)e.push(d),r=b,d=q(),d=null!==d?d:"",null!==d?(f=Qb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=ab(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);null!==e?a=[a,e]:(a=null,b=n)}else a=null,b=n;null!==a&&(a=V(a[0],a[1]));null===a&&(b=l);p[c]={b:b,result:a};return a}function Rb(){var f="bitwise_xor_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;h=d=b;94===c.charCodeAt(b)?(a="^",b+=1):(a=null,0===l&&g('"^"'));null!==a?(m=b,
+l++,61===c.charCodeAt(b)?(e="=",b+=1):(e=null,0===l&&g('"="')),null===e&&(94===c.charCodeAt(b)?(e="^",b+=1):(e=null,0===l&&g('"^"'))),l--,null===e?e="":(e=null,b=m),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"operator",h:"^"}));null===a&&(b=d);p[f]={b:b,result:a};return a}function cb(){var c="bitwise_xor_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f,g,k,l,n,r;n=l=b;a=bb();if(null!==a){e=[];r=b;d=q();d=null!==d?d:"";null!==d?(f=Rb(),null!==f?(g=q(),g=null!==g?
+g:"",null!==g?(k=bb(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);for(;null!==d;)e.push(d),r=b,d=q(),d=null!==d?d:"",null!==d?(f=Rb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=bb(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);null!==e?a=[a,e]:(a=null,b=n)}else a=null,b=n;null!==a&&(a=V(a[0],a[1]));null===a&&(b=l);p[c]={b:b,result:a};return a}function Sb(){var f="bitwise_or_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,m;h=
+d=b;124===c.charCodeAt(b)?(a="|",b+=1):(a=null,0===l&&g('"|"'));null!==a?(m=b,l++,61===c.charCodeAt(b)?(e="=",b+=1):(e=null,0===l&&g('"="')),null===e&&(124===c.charCodeAt(b)?(e="|",b+=1):(e=null,0===l&&g('"|"'))),l--,null===e?e="":(e=null,b=m),null!==e?a=[a,e]:(a=null,b=h)):(a=null,b=h);null!==a&&(a=new y({type:"operator",h:"|"}));null===a&&(b=d);p[f]={b:b,result:a};return a}function db(){var c="bitwise_or_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f,g,k,l,n,r;n=l=b;a=cb();if(null!==
+a){e=[];r=b;d=q();d=null!==d?d:"";null!==d?(f=Sb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=cb(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);for(;null!==d;)e.push(d),r=b,d=q(),d=null!==d?d:"",null!==d?(f=Sb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=cb(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);null!==e?a=[a,e]:(a=null,b=n)}else a=null,b=n;null!==a&&(a=V(a[0],a[1]));null===a&&(b=l);p[c]={b:b,result:a};return a}function Tb(){var f=
+"logical_and_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e;e=b;"&&"===c.substr(b,2)?(a="&&",b+=2):(a=null,0===l&&g('"&&"'));null!==a&&(a=new y({type:"operator",h:"&&"}));null===a&&(b=e);p[f]={b:b,result:a};return a}function eb(){var c="logical_and_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f,g,k,l,n,r;n=l=b;a=db();if(null!==a){e=[];r=b;d=q();d=null!==d?d:"";null!==d?(f=Tb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=db(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,
+b=r)):(d=null,b=r);for(;null!==d;)e.push(d),r=b,d=q(),d=null!==d?d:"",null!==d?(f=Tb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=db(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);null!==e?a=[a,e]:(a=null,b=n)}else a=null,b=n;null!==a&&(a=V(a[0],a[1]));null===a&&(b=l);p[c]={b:b,result:a};return a}function Ub(){var f="logical_xor_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e;e=b;"^^"===c.substr(b,2)?(a="^^",b+=2):(a=null,0===l&&g('"^^"'));null!==a&&(a=new y({type:"operator",
+h:"^^"}));null===a&&(b=e);p[f]={b:b,result:a};return a}function fb(){var c="logical_xor_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f,g,k,l,n,r;n=l=b;a=eb();if(null!==a){e=[];r=b;d=q();d=null!==d?d:"";null!==d?(f=Ub(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=eb(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);for(;null!==d;)e.push(d),r=b,d=q(),d=null!==d?d:"",null!==d?(f=Ub(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=eb(),null!==k?d=[d,f,g,k]:(d=null,
+b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);null!==e?a=[a,e]:(a=null,b=n)}else a=null,b=n;null!==a&&(a=V(a[0],a[1]));null===a&&(b=l);p[c]={b:b,result:a};return a}function Vb(){var f="logical_or_operator@"+b,a=p[f];if(a)return b=a.b,a.result;var e;e=b;"||"===c.substr(b,2)?(a="||",b+=2):(a=null,0===l&&g('"||"'));null!==a&&(a=new y({type:"operator",h:"||"}));null===a&&(b=e);p[f]={b:b,result:a};return a}function Jc(){var c="logical_or_expression@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f,g,k,
+l,n,r;n=l=b;a=fb();if(null!==a){e=[];r=b;d=q();d=null!==d?d:"";null!==d?(f=Vb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=fb(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);for(;null!==d;)e.push(d),r=b,d=q(),d=null!==d?d:"",null!==d?(f=Vb(),null!==f?(g=q(),g=null!==g?g:"",null!==g?(k=fb(),null!==k?d=[d,f,g,k]:(d=null,b=r)):(d=null,b=r)):(d=null,b=r)):(d=null,b=r);null!==e?a=[a,e]:(a=null,b=n)}else a=null,b=n;null!==a&&(a=V(a[0],a[1]));null===a&&(b=l);p[c]={b:b,result:a};
+return a}function na(){var f="conditional_expression@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,k,n,u,x,r,z,B,C;B=a=b;e=Jc();null!==e?(C=b,d=q(),d=null!==d?d:"",null!==d?(63===c.charCodeAt(b)?(h="?",b+=1):(h=null,0===l&&g('"?"')),null!==h?(k=q(),k=null!==k?k:"",null!==k?(n=Q(),null!==n?(u=q(),u=null!==u?u:"",null!==u?(58===c.charCodeAt(b)?(x=":",b+=1):(x=null,0===l&&g('":"')),null!==x?(r=q(),r=null!==r?r:"",null!==r?(z=Q(),null!==z?d=[d,h,k,n,u,x,r,z]:(d=null,b=C)):(d=null,b=C)):(d=null,b=C)):
+(d=null,b=C)):(d=null,b=C)):(d=null,b=C)):(d=null,b=C)):(d=null,b=C),d=null!==d?d:"",null!==d?e=[e,d]:(e=null,b=B)):(e=null,b=B);null!==e&&(d=e[0],e=e[1],L=d,e&&(L=new y({type:"ternary",F:d,Ha:e[3],Ga:e[7]})),e=L);null===e&&(b=a);p[f]={b:b,result:e};return e}function Q(){var f="assignment_expression@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,k,n,u;u=n=b;a=na();null!==a?(e=q(),e=null!==e?e:"",null!==e?(61===c.charCodeAt(b)?(d="=",b+=1):(d=null,0===l&&g('"="')),null===d&&("*="===c.substr(b,2)?
+(d="*=",b+=2):(d=null,0===l&&g('"*="')),null===d&&("/="===c.substr(b,2)?(d="/=",b+=2):(d=null,0===l&&g('"/="')),null===d&&("%="===c.substr(b,2)?(d="%=",b+=2):(d=null,0===l&&g('"%="')),null===d&&("+="===c.substr(b,2)?(d="+=",b+=2):(d=null,0===l&&g('"+="')),null===d&&("-="===c.substr(b,2)?(d="-=",b+=2):(d=null,0===l&&g('"-="')),null===d&&("<<="===c.substr(b,3)?(d="<<=",b+=3):(d=null,0===l&&g('"<<="')),null===d&&(">>="===c.substr(b,3)?(d=">>=",b+=3):(d=null,0===l&&g('">>="')),null===d&&("&="===c.substr(b,
+2)?(d="&=",b+=2):(d=null,0===l&&g('"&="')),null===d&&("^="===c.substr(b,2)?(d="^=",b+=2):(d=null,0===l&&g('"^="')),null===d&&("|="===c.substr(b,2)?(d="|=",b+=2):(d=null,0===l&&g('"|="')))))))))))),null!==d?(h=q(),h=null!==h?h:"",null!==h?(k=Q(),null!==k?a=[a,e,d,h,k]:(a=null,b=u)):(a=null,b=u)):(a=null,b=u)):(a=null,b=u)):(a=null,b=u);null!==a&&(e=a[0],d=a[4],a=new y({type:"binary",h:new y({type:"operator",h:a[2]}),left:e,right:d}));null===a&&(b=n);null===a&&(a=na());p[f]={b:b,result:a};return a}
+function Cb(){var f="condition@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,k,n,u,x;x=b;a=za();null!==a?(e=q(),null!==e?(d=P(),null!==d?(h=q(),h=null!==h?h:"",null!==h?(61===c.charCodeAt(b)?(k="=",b+=1):(k=null,0===l&&g('"="')),null!==k?(n=q(),n=null!==n?n:"",null!==n?(u=Q(),null!==u?a=[a,e,d,h,k,n,u]:(a=null,b=x)):(a=null,b=x)):(a=null,b=x)):(a=null,b=x)):(a=null,b=x)):(a=null,b=x)):(a=null,b=x);null===a&&(a=Q());p[f]={b:b,result:a};return a}function md(){var f;a:{f=nb;f.sort();for(var a=null,
+e=[],d=0;d<f.length;d++)f[d]!==a&&(e.push(f[d]),a=f[d]);switch(e.length){case 0:f="end of input";break a;case 1:f=e[0];break a;default:f=e.slice(0,e.length-1).join(", ")+" or "+e[e.length-1]}}a=Math.max(b,ta);a=a<c.length?n(c.charAt(a)):"end of input";return"Expected "+f+" but "+a+" found."}function Kc(){for(var f=1,a=1,e=!1,d=0;d<Math.max(b,ta);d++){var g=c.charAt(d);"\n"===g?(e||f++,a=1,e=!1):"\r"===g||"\u2028"===g||"\u2029"===g?(f++,a=1,e=!0):(a++,e=!1)}return{ka:f,Da:a}}function y(b){this.id=
+Hc++;this.ka=Kc().ka;for(var a in b)b.hasOwnProperty(a)&&(this[a]=b[a])}function V(b,a){for(var c=b,d=0;d<a.length;d++)c=new y({type:"binary",h:a[d][1],left:c,right:a[d][3]});return c}function ic(b,a,c){c&&(a=a.concat([c]));c=b[0];c.ia=b[1].D;b=c;for(var d=0;d<a.length;d++)b.M=a[d][0],b.M.ia=a[d][1].D,b=b.M;return c}var Lc={EOF:z,_:q,additive_expression:Ya,additive_operator:Mb,assignment_expression:Q,attribute_qualifier:Hb,attribute_type:qc,bitwise_and_expression:bb,bitwise_and_operator:Qb,bitwise_or_expression:db,
+bitwise_or_operator:Sb,bitwise_xor_expression:cb,bitwise_xor_operator:Rb,bool_constant:Cc,comma:H,comment:C,compound_statement:Oa,condition:Cb,conditional_expression:na,const_qualifier:Ta,declaration:Qa,declarator:Ca,declarator_array_with_size:Ea,declarator_list:vc,declarator_list_arrays_have_size:Fb,declarator_list_no_array:rc,declarator_no_array:Da,do_while:oc,equality_expression:ab,equality_operator:Pb,equals:bc,expression_statement:Bb,external_declaration:dc,external_statement:qb,external_statement_list:ia,
+field_selector:Ga,float_constant:Ac,float_exponent:Va,for_loop:mc,fragment_start:function(){var c="fragment_start@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f;f=d=b;ya="fs";a="";null!==a?(e=ia(),null!==e?a=[a,e]:(a=null,b=f)):(a=null,b=f);null!==a&&(a=a[1]);null===a&&(b=d);p[c]={b:b,result:a};return a},fully_specified_type:pc,function_call:Ec,function_definition:ec,function_identifier:Ic,function_prototype:zb,function_prototype_parameter_list:sc,global_declaration:fc,identifier:P,index_accessor:Fa,
+init_declarator:Ua,init_declarator_list:Eb,int_constant:zc,iteration_statement:kc,jump_statement:lc,keyword:yc,left_brace:ob,left_bracket:ua,left_paren:ba,locally_specified_type:za,logical_and_expression:eb,logical_and_operator:Tb,logical_or_expression:Jc,logical_or_operator:Vb,logical_xor_expression:fb,logical_xor_operator:Ub,macro_call:Ma,macro_call_line:function(){var f="macro_call_line@"+b,a=p[f];if(a)return b=a.b,a.result;var e,d,h,k;k=h=b;a=Ma();a=null!==a?a:"";if(null!==a){e=[];/^[^\n]/.test(c.charAt(b))?
+(d=c.charAt(b),b++):(d=null,0===l&&g("[^\\n]"));for(;null!==d;)e.push(d),/^[^\n]/.test(c.charAt(b))?(d=c.charAt(b),b++):(d=null,0===l&&g("[^\\n]"));null!==e?a=[a,e]:(a=null,b=k)}else a=null,b=k;null!==a&&(a={aa:a[0],Ja:a[1].join("")});null===a&&(b=h);p[f]={b:b,result:a};return a},macro_call_parameter:Na,macro_call_parameter_list:function(){var c="macro_call_parameter_list@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f,g,k,l;k=g=b;a=Na();if(null!==a){e=[];l=b;d=H();null!==d?(f=Na(),null!==f?d=[d,
+f]:(d=null,b=l)):(d=null,b=l);for(;null!==d;)e.push(d),l=b,d=H(),null!==d?(f=Na(),null!==f?d=[d,f]:(d=null,b=l)):(d=null,b=l);null!==e?a=[a,e]:(a=null,b=k)}else a=null,b=k;null!==a&&(a=function(a,b){return[a].concat(b.map(function(a){return a[1]}))}(a[0],a[1]));null===a&&(b=g);p[c]={b:b,result:a};return a},macro_identifier:la,macro_paren_parameter:tb,matrix:Jb,member_list:wc,multiplicative_expression:Xa,multiplicative_operator:Lb,newLine:u,noNewlineComment:x,noNewlineWhitespace:ha,parameter_declaration:Sa,
+parameter_list:ub,parameter_qualifier:uc,paren_expression:Bc,postfix_expression:Fc,postfix_expression_no_repeat:Gc,precision_qualifier:Ra,precision_type:Ba,preprocessor_define:rb,preprocessor_else:wb,preprocessor_else_if:wa,preprocessor_end:xb,preprocessor_external_branch:cc,preprocessor_if:vb,preprocessor_operator:sb,preprocessor_parameter_list:hc,preprocessor_statement_branch:yb,primary_expression:Dc,relational_expression:$a,relational_operator:Ob,reserved:function(){var f="reserved@"+b,a=p[f];
+if(a)return b=a.b,a.result;var e,d,h,k;l++;k=b;a=[];for(e=Kb();null!==e;)a.push(e),e=Kb();if(null!==a)if("__"===c.substr(b,2)?(e="__",b+=2):(e=null,0===l&&g('"__"')),null!==e){d=[];/^[A-Za-z_0-9]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[A-Za-z_0-9]"));for(;null!==h;)d.push(h),/^[A-Za-z_0-9]/.test(c.charAt(b))?(h=c.charAt(b),b++):(h=null,0===l&&g("[A-Za-z_0-9]"));null!==d?a=[a,e,d]:(a=null,b=k)}else a=null,b=k;else a=null,b=k;l--;0===l&&null===a&&g("reserved name");p[f]={b:b,result:a};
+return a},right_brace:pb,right_bracket:va,right_paren:ca,selection_statement:jc,semicolon:B,shift_expression:Za,shift_operator:Nb,simple_statement:Ab,single_underscore_identifier:Kb,statement_list:ma,statement_no_new_scope:xa,statement_with_scope:Pa,struct_definition:gc,type_name:Aa,type_qualifier:Gb,unary_expression:Wa,vector:Ib,vertex_start:function(){var c="vertex_start@"+b,a=p[c];if(a)return b=a.b,a.result;var e,d,f;f=d=b;ya="vs";a="";null!==a?(e=ia(),null!==e?a=[a,e]:(a=null,b=f)):(a=null,b=
+f);null!==a&&(a=a[1]);null===a&&(b=d);p[c]={b:b,result:a};return a},void_type:tc,while_loop:nc,while_statement:Db};if(void 0!==f){if(void 0===Lc[f])throw Error("Invalid rule name: "+n(f)+".");}else f="external_statement_list";var b=0,l=0,ta=0,nb=[],p={},xc={},Hc=0,ya="vs",L=Lc[f]();if(null===L||b!==c.length){var Mc=Kc();throw new ka.SyntaxError(md(),Mc.ka,Mc.Da);}return L}ja("glslunit.glsl.parser.parse",D);
+ka.SyntaxError=function(c,f,k){this.name="SyntaxError";this.message=c;this.line=f;this.column=k};ja("glslunit.glsl.parser.SyntaxError",ka.SyntaxError);ka.SyntaxError.prototype=Error.prototype;function oa(c){return c.split(/_/g).map(function(c){return c.slice(0,1).toUpperCase()+c.slice(1).toLowerCase()}).join("")}["varying mediump vec4 gl_FragCoord;","varying bool gl_FrontFacing;","varying mediump vec2 gl_PointCoord;"].map(function(c){return D(c,"global_declaration")});var pa=Array.prototype,E=pa.forEach?function(c,f,k){pa.forEach.call(c,f,k)}:function(c,f,k){for(var n=c.length,g="string"==typeof c?c.split(""):c,u=0;u<n;u++)u in g&&f.call(k,g[u],u,c)};function qa(c,f,k){for(var n="string"==typeof c?c.split(""):c,g=c.length-1;0<=g;--g)g in n&&f.call(k,n[g],g,c)}var ra=pa.every?function(c,f,k){return pa.every.call(c,f,k)}:function(c,f,k){for(var n=c.length,g="string"==typeof c?c.split(""):c,u=0;u<n;u++)if(u in g&&!f.call(k,g[u],u,c))return!1;return!0};
+function sa(c){var f=c.length;if(0<f){for(var k=Array(f),n=0;n<f;n++)k[n]=c[n];return k}return[]};function Ha(){}Ha.prototype.A=function(c){return this["beforeVisit"+oa(c.type)]};Ha.prototype.i=function(c){return this["afterVisit"+oa(c.type)]};Ha.prototype.m=function(c){return this["visit"+oa(c.type)]};function F(c,f){if(f&&f.type){var k=c.A(f);k&&k.apply(c,[f]);(k=c.m(f))?k.apply(c,[f]):Ia(c,f);(k=c.i(f))&&k.apply(c,[f])}}function Ja(c,f){E(f,function(c){F(this,c)},c)}
+function Ia(c,f){for(var k in f){var n=f[k];if("array"==da(n))Ja(c,n);else{var g=typeof n;("object"==g&&null!=n||"function"==g)&&n.type&&F(c,n)}}};function G(c,f){this.c=c||"\n";this.l=!!f;this.a="";this.g=0}A(G,Ha);ja("glslunit.Generator",G);function I(c,f,k,n){this.a=c;this.c=f||0;this.g=!!k;this.f=n||2}
+var Ka={function_call:new I(0,2),identifier:new I(0,2),"float":new I(0,2),"int":new I(0,2),bool:new I(0,2),postfix:new I(1,0,!1,1),unary:new I(2,1,!1,1),"*":new I(3,0,!0),"/":new I(3),"%":new I(3),"+":new I(4,0,!0),"-":new I(4),"<<":new I(5),">>":new I(5),"<":new I(6),">":new I(6),"<=":new I(6),">=":new I(6),"==":new I(7),"!=":new I(7),"&":new I(8,0,!0),"^":new I(9,0,!0),"|":new I(10,0,!0),"&&":new I(11,0,!0),"^^":new I(12,0,!0),"||":new I(13,0,!0),ternary:new I(14,1,!1,3),"=":new I(15),"-=":new I(15),
+"+=":new I(15),"*=":new I(15),"/=":new I(15),"%=":new I(15),"<<=":new I(15),">>=":new I(15),"&=":new I(15),"^=":new I(15),"|=":new I(15)};function La(c){return"binary"==c.type?c.h.h:c.type}function J(c,f,k){f=new G(f,k);F(f,c);return f.a}function gb(c,f,k){return f?c+f+k:""}function hb(c,f,k){for(var n=0;n<f.length;n++)0!=n&&(c.a+=k),F(c,f[n])}function ib(c){c.l&&(c.a+=c.c+Array(c.g+1).join("  "))}function jb(c){c.l&&"  "==c.a.slice(-2)&&(c.a=c.a.slice(0,-2))}
+G.prototype.za=function(c){this.a+=gb("",c.qualifier," ");this.a+="struct";this.a+=gb(" ",c.name,"");this.a+="{";this.g++;hb(this,c.Ia,"");this.g--;jb(this);this.a+="}";c.w&&hb(this,c.w,",");this.a+=";";ib(this)};G.prototype.visitStructDefinition=G.prototype.za;G.prototype.ya=function(c){this.a+="{";this.g++;ib(this);hb(this,c.D,"");this.g--;jb(this);this.a+="}";ib(this)};G.prototype.visitScope=G.prototype.ya;G.prototype.va=function(c){this.a+="precision "+c.precision+" "+c.typeName+";";ib(this)};
+G.prototype.visitPrecision=G.prototype.va;G.prototype.ha=function(c){this.a+="invariant ";hb(this,c.Ea,",");this.a+=";";ib(this)};G.prototype.visitInvariant=G.prototype.ha;G.prototype.ta=function(c){this.a+=gb("",c.qa," ");this.a+=gb("",c.la," ");this.a+=gb("",c.precision," ");this.a+=c.Ka+" "+c.name;c.$&&(this.a+="[",F(this,c.$),this.a+="]")};G.prototype.visitParameter=G.prototype.ta;function kb(c,f){F(c,f.ma);c.a+=" "+f.name+"(";hb(c,f.j,",");c.a+=")"}
+G.prototype.da=function(c){kb(this,c);this.a+=";";ib(this)};G.prototype.visitFunctionPrototype=G.prototype.da;G.prototype.ca=function(c){kb(this,c);F(this,c.body)};G.prototype.visitFunctionDeclaration=G.prototype.ca;
+G.prototype.wa=function(c){var f=this.a.slice(-1*this.c.length);f&&f!=this.c&&(this.a+=this.c);this.a+=c.B;"#define"==c.B?(this.a+=" "+c.identifier,c.j&&(this.a+="(",hb(this,c.j,","),this.a+=")"),this.a+=gb(" ",c.pa,"")):this.a+=gb(" ",c.value,"");this.a+=this.c;c.ia&&(hb(this,c.ia,""),c.M&&F(this,c.M),"#if"==c.B.slice(0,3)&&(f=this.a.slice(-1*this.c.length),f!=this.c&&(this.a+=this.c),this.a+="#endif"+this.c))};G.prototype.visitPreprocessor=G.prototype.wa;
+function lb(c,f){c.a+="while(";F(c,f.F);c.a+=")"}G.prototype.U=function(c){this.a+="do";"scope"!=c.body.type&&(this.a+=" ");F(this,c.body);lb(this,c)};G.prototype.visitDoStatement=G.prototype.U;G.prototype.Ca=function(c){lb(this,c);F(this,c.body)};G.prototype.visitWhileStatement=G.prototype.Ca;G.prototype.ba=function(c){this.a+="for(";F(this,c.H);F(this,c.F);this.a+=";";F(this,c.Fa);this.a+=")";F(this,c.body)};G.prototype.visitForStatement=G.prototype.ba;
+G.prototype.fa=function(c){this.a+="if(";F(this,c.F);this.a+=")";F(this,c.body);c.M&&(this.a+="else","scope"!=c.M.type&&(this.a+=" "),F(this,c.M))};G.prototype.visitIfStatement=G.prototype.fa;G.prototype.S=function(c){F(this,c.name);c.isArray&&(this.a+="[",c.$&&F(this,c.$),this.a+="]");c.H&&(this.a+="=",F(this,c.H))};G.prototype.visitDeclaratorItem=G.prototype.S;G.prototype.K=function(c){F(this,c.v);this.a+=" ";hb(this,c.w,",");this.a+=";";ib(this)};G.prototype.visitDeclarator=G.prototype.K;
+G.prototype.Ba=function(c){this.a+=gb("",c.qualifier," ");this.a+=gb("",c.precision," ");this.a+=c.name};G.prototype.visitType=G.prototype.Ba;G.prototype.X=function(c){F(this,c.N);this.a+=";";ib(this)};G.prototype.visitExpression=G.prototype.X;G.prototype.f=function(c){this.a+=c.type;c.value&&(this.a+=" ",F(this,c.value));this.a+=";";ib(this)};G.prototype.visitJump=G.prototype.f;G.prototype.xa=G.prototype.f;G.prototype.visitReturn=G.prototype.xa;G.prototype.W=G.prototype.f;
+G.prototype.visitBreak=G.prototype.W;G.prototype.T=G.prototype.f;G.prototype.visitDiscard=G.prototype.T;G.prototype.J=G.prototype.f;G.prototype.visitContinue=G.prototype.J;G.prototype.ra=function(c){this.a.slice(-1)==c.h.h&&(this.a+=" ");F(this,c.h);mb(this,c.N,c,0)};G.prototype.visitUnary=G.prototype.ra;G.prototype.ua=function(c){mb(this,c.N,c,0);F(this,c.h)};G.prototype.visitPostfix=G.prototype.ua;G.prototype.sa=function(c){this.a+=c.h};G.prototype.visitOperator=G.prototype.sa;
+G.prototype.Y=function(c){this.a+="."+c.selection};G.prototype.visitFieldSelector=G.prototype.Y;G.prototype.C=function(c){this.a+="[";F(this,c.index);this.a+="]"};G.prototype.visitAccessor=G.prototype.C;G.prototype.u=function(c){this.a+=c.I+"(";hb(this,c.j,",");this.a+=")"};G.prototype.visitFunctionCall=G.prototype.u;G.prototype.ea=function(c){this.a+=c.name};G.prototype.visitIdentifier=G.prototype.ea;
+function Wb(c){function f(c){return c.toLowerCase().replace(/^0*|\+/g,"").replace(/(?:(\.[1-9]+)|\.)0*e/g,"$1e")}if(0==c)return"0.";var k=f(""+c);c=f(c.toExponential());-1==k.indexOf(".")&&-1==k.indexOf("e")&&(k+=".");return k.length<=c.length?k:c}G.prototype.Z=function(c){this.a+=Wb(c.value)};G.prototype.visitFloat=G.prototype.Z;G.prototype.o=function(c){this.a+=c.value};G.prototype.visitValue=G.prototype.o;
+G.prototype.ga=function(c){var f=c.value;c=f.toString(10);f=(0>f?"-":"")+"0x"+Math.abs(f).toString(16).toLowerCase();this.a+=c.length<=f.length?c:f};G.prototype.visitInt=G.prototype.ga;G.prototype.P=G.prototype.o;G.prototype.visitBool=G.prototype.P;G.prototype.O=function(c){mb(this,c.left,c,0);F(this,c.h);mb(this,c.right,c,1)};G.prototype.visitBinary=G.prototype.O;G.prototype.Aa=function(c){mb(this,c.F,c,0);this.a+="?";mb(this,c.Ha,c,1);this.a+=":";mb(this,c.Ga,c,2)};G.prototype.visitTernary=G.prototype.Aa;
+function mb(c,f,k,n){var g=Ka[La(f)],u=Ka[La(k)],z=!1;g.a>u.a?z=!0:g.a==u.a?(z=La(f),k=La(k),z=0==u.c&&0==n||1==u.c&&n==u.f-1?!1:z==k&&g.g?!1:!0):z=!1;z&&(c.a+="(");F(c,f);z&&(c.a+=")")};function K(c,f){this.U=c||null;this.o=!!f;this.C={};this.l=[];this.a=[];this.u={};this.c=[]}A(K,Ha);ja("glslunit.VariableScopeVisitor",K);function Xb(c){var f={};qa(c.l.concat([c.a]),function(c){E(c,function(c){"declarator"==c.type?E(c.w,function(g){v(f[g.name.name])||(f[g.name.name]=c)},this):"parameter"==c.type&&(f[c.name]=c)},this)},c);return f}K.prototype.f=function(){this.l.push(this.a);this.a=[];[].push.apply(this.a,this.c);this.c=[]};K.prototype.beforeVisitScope=K.prototype.f;
+K.prototype.g=function(c){this.u[c.id]=this.a;c==this.U&&(this.C=Xb(this));this.a=this.l.pop()};K.prototype.afterVisitScope=K.prototype.g;K.prototype.K=K.prototype.f;K.prototype.beforeVisitRoot=K.prototype.K;K.prototype.O=function(c){this.o||this.g(c)};K.prototype.afterVisitPreprocessor=K.prototype.O;K.prototype.J=function(){this.o||this.f()};K.prototype.beforeVisitPreprocessor=K.prototype.J;K.prototype.P=K.prototype.g;K.prototype.afterVisitRoot=K.prototype.P;K.prototype.W=function(c){this.a.push(c)};
+K.prototype.beforeVisitDeclarator=K.prototype.W;K.prototype.T=function(c){this.c=c.j};K.prototype.beforeVisitFunctionDeclaration=K.prototype.T;K.prototype.S=function(){this.c=[]};K.prototype.afterVisitFunctionDeclaration=K.prototype.S;function Yb(c){var f=new K;F(f,c);return f.u}K.getScopeToDeclarationMap=Yb;function Zb(c,f){var k=new K(f,!0);F(k,c);return k.C};function $b(c){this.c=[];this.a=[];this.g=c}A($b,Ha);$b.prototype.f=function(c){this.g(c,this.a.slice(0,-1))&&this.c.push(c);Ia(this,c)};$b.prototype.A=function(){return ga(Array.prototype.push,this.a)};$b.prototype.i=function(){return ga(Array.prototype.pop,this.a)};$b.prototype.m=function(){return this.f};function ac(c,f){var k=new $b(f);F(k,c);return k.c};function M(){this.a={};this.a[Nc]=[];this.c=Nc}A(M,Ha);var Nc="#";M.prototype.f=function(c){c.name in this.a||(this.a[c.name]=[]);this.c=c.name};M.prototype.beforeVisitFunctionDeclaration=M.prototype.f;M.prototype.g=function(){this.c=Nc};M.prototype.afterVisitFunctionDeclaration=M.prototype.g;M.prototype.l=function(c){this.a[this.c].push(c.I);Ia(this,c)};M.prototype.visitFunctionCall=M.prototype.l;function Oc(c){c=ac(c,function(c,f){return"declarator"==c.type&&"struct_definition"==f.slice(-1)[0].type});var f=[];E(c,function(c){f[c.id]=!0});return f};function N(c){var f={},k;for(k in c)f[k]=c[k];return f};function O(){this.c=[]}var Pc=-1;function R(c){c=N(c);c.id=Pc--;return c}O.prototype.W=function(c){return this["transform"+oa(c.type)]};function Qc(c,f,k,n){var g=c[k+oa(f.type)];return ga(function(c){E(this.c,function(f){var g=n(f).apply(f,[c]);g&&g.apply(f,[c])});g&&g.apply(this,[c])},c)}O.prototype.P=function(c){return Qc(this,c,"beforeTransform",function(c){return c.A})};O.prototype.O=function(c){return Qc(this,c,"afterTransform",function(c){return c.i})};
+function S(c,f){var k=!1,n=c.P(f);n&&n.apply(c,[f]);var n=R(f),g;for(g in f){var u=f[g];if("array"==da(u)){n[g]=[];for(var z=0;z<u.length;z++){var q=u[z],x=S(c,q);x!=q&&(k=!0);null!=x&&Array.prototype.push.apply(n[g],"array"==da(x)?x:[x])}}else u&&u.type&&(x=S(c,u),x!=u&&(k=!0,null!=x?n[g]=x:delete n[g]))}g=c.W(f);n=k?n:f;g&&(n=g.apply(c,[n,f]));(k=c.O(f))&&k.apply(c,[f,n]);return n};function Rc(c,f,k,n,g){this.c=[];this.i=g;this.A=c;this.a=f;this.l=k;this.g=n}A(Rc,O);ja("glslunit.SpliceTransformer",Rc);Rc.prototype.f=function(c){if(c==this.A){c=R(c);if("array"==da(c[this.a])){var f=this.i.map(R);c[this.a]=sa(c[this.a]);[].splice.apply(c[this.a],[this.l,this.g].concat(f));return c}throw this.a+" wasn't an array.";}return c};Rc.prototype.W=function(){return this.f};function Sc(){this.s=this.a="";this.c=[]}Sc.prototype.clone=function(){var c=N(this);c.c=sa(this.c);return c};function Tc(){this.g=this.s="";this.c=this.a=this.f=0}function Uc(){this.type=this.a=this.s=""}function T(){this.A=[];this.g=[];this.l={};this.L={};this.R={};this.f=[];this.a={};this.c={};this.i={}}
+T.prototype.clone=function(){var c=N(this);c.L=N(this.L);c.R=N(this.R);c.l=N(this.l);c.A=sa(this.A);c.i=N(this.i);c.g=this.g.map(function(c){return N(c)});c.f=this.f.map(function(c){return c.clone()});return c};T.prototype.P=function(c){return J(this.c,c||"\\n",!1)};T.prototype.getVertexSource=T.prototype.P;T.prototype.o=function(c){return J(this.a,c||"\\n",!1)};T.prototype.getFragmentSource=T.prototype.o;T.prototype.u=function(c){return"".replace(/\n/g,c||"\\n").replace(/'/g,"\\'")};
+T.prototype.getOriginalFragmentSource=T.prototype.u;T.prototype.C=function(c){return"".replace(/\n/g,c||"\\n").replace(/'/g,"\\'")};T.prototype.getOriginalVertexSource=T.prototype.C;T.prototype.m=function(){var c=[],f;for(f in this.L)c.push(this.L[f]);0<c.length&&(c[c.length-1].last=!0);return c};T.prototype.getAttributes=T.prototype.m;T.prototype.O=function(){var c=[],f;for(f in this.R)c.push(this.R[f]);0<c.length&&(c[c.length-1].last=!0);return c};T.prototype.getUniforms=T.prototype.O;
+function Vc(c){E(c.g,function(c){""==c.s&&(c.s=c.a)});var f={},k;for(k in c.L){var n=c.L[k];f[n.s]=n}k={};for(var g in c.R)n=c.R[g],k[n.s]=n;Wc(c,c.c,f,k);Wc(c,c.a,f,k)}
+function Wc(c,f,k,n){f=ac(f,function(c){return"declarator"==c.type&&("attribute"==c.v.qualifier||"uniform"==c.v.qualifier)});E(f,function(c){E(c.w,function(f){f=f.name.name;var z=c.v.name;if("attribute"==c.v.qualifier){var q=k[f];if(!q){q=new Tc;q.s=f;q.g=f;var x=J(c),ha="".search(x),z=parseInt(z.slice(3,4),10);q.f=isNaN(z)?1:z;q.a=ha;q.c=x.length;this.L[f]=q}}else q=n[f],q||(q=new Uc,q.s=f,q.a=f,q.type=z,this.R[f]=q)},this)},c)};function U(){this.c=[];this.a=[]}A(U,O);var Xc={vec2:2,vec3:3,vec4:4,bvec2:2,bvec3:3,bvec4:4,ivec2:2,ivec3:3,ivec4:4,mat2:4,mat3:9,mat4:16,"float":1,"int":1,bool:1};U.prototype.P=function(){return ga(Array.prototype.push,this.a)};U.prototype.O=function(){return ga(Array.prototype.pop,this.a)};function Yc(c){c=c.a.slice(-2)[0];return"function_call"==c.type&&c.I in Xc}
+U.prototype.f=function(c){if(Yc(this)&&65536>Math.abs(c.value)&&c.value==Math.round(c.value)){var f=R(c);f.type="int";f.value=Number(c.value);return f}return c};U.prototype.o=U.prototype.f;U.prototype.transformFloat=U.prototype.o;U.prototype.m=U.prototype.f;U.prototype.transformBool=U.prototype.m;
+U.prototype.i=function(c){var f=Xc[c.I];if(f){if(Yc(this)&&c.j.length==f)return c.j;if(c.j&&1<c.j.length){var k=J(c.j[0]),n=!1;if("mat"==c.I.slice(0,3)){if(c.j.length==f){for(var f=!0,g=parseInt(c.I.slice(-1),10),u=0;u<g&&f;u++)for(var z=0;z<g&&f;z++)f=J(c.j[u*g+z])==(u==z?k:"0");f&&(n=!0)}}else ra(c.j,function(c){return J(c)==k})&&(n=!0);if(n)return n=R(c),n.j=[c.j[0]],n}}return c};U.prototype.transformFunctionCall=U.prototype.i;U.prototype.g=function(){return"ConstructorMinifier"};
+U.prototype.A=function(){return[]};U.prototype.l=function(c,f){var k=new U;f.c=S(new U,f.c);f.a=S(k,f.a);return[]};function W(){this.c=[];this.a={}}A(W,O);W.prototype.i=function(c){var f=new M;F(f,c);c=f.a;this.a={};for(var k in c)this.a[k]=!1;Zc(this,"main",c);Zc(this,Nc,c)};W.prototype.beforeTransformRoot=W.prototype.i;function Zc(c,f,k){f in c.a&&!c.a[f]&&(c.a[f]=!0,E(k[f],function(c){Zc(this,c,k)},c))}W.prototype.f=function(c){return this.a[c.name]?c:null};W.prototype.transformFunctionDeclaration=W.prototype.f;W.prototype.m=W.prototype.f;W.prototype.transformFunctionPrototype=W.prototype.m;W.prototype.g=function(){return"DeadFunctionRemover"};
+W.prototype.A=function(){return[]};W.prototype.l=function(c,f){var k=new W;f.c=S(new W,f.c);f.a=S(k,f.a);return[]};function X(c){this.c=[];this.J={};this.i=null;this.a=[];this.o=[];this.u=[];this.f=c}A(X,O);X.prototype.X=function(c){var f=ac(c,function(c){return"for_statement"==c.type});E(f,function(c){this.o[c.H.id]=!0},this);this.u=Oc(c);var f=Yb(c),k;for(k in f){var n={};E(f[+k],function(f){if("declarator"==f.type&&$c(this,f,k==c.id)){var u=J(f.v);n[u]||(n[u]=[]);E(f.w,function(c){var f=c;f.H&&(f=R(c),delete f.H);n[u].push(f)},this)}},this);this.J[+k]=n}this.m(c)};X.prototype.beforeTransformRoot=X.prototype.X;
+X.prototype.U=function(c){this.i=c};X.prototype.beforeTransformDeclarator=X.prototype.U;X.prototype.T=function(){this.i=null};X.prototype.afterTransformDeclarator=X.prototype.T;X.prototype.m=function(c){this.a.push(this.J[c.id])};X.prototype.beforeTransformScope=X.prototype.m;X.prototype.S=X.prototype.m;X.prototype.beforeTransformPreprocessor=X.prototype.S;X.prototype.C=function(){this.a.pop()};X.prototype.afterTransformScope=X.prototype.C;X.prototype.K=X.prototype.C;
+X.prototype.afterTransformPreprocessor=X.prototype.K;function $c(c,f,k){var n=J(f.v),g=null;0<c.a.length&&(g=c.a.slice(-1)[0][n]);return null!=f&&(c.f||"attribute"!=f.v.qualifier)&&"const"!=f.v.qualifier&&(!g||1<g.length)&&!(f.id in c.o)&&!(f.id in c.u)&&!(k&&!ra(f.w,function(c){return!v(c.H)}))}X.prototype.Z=function(c){return $c(this,this.i,1==this.a.length)?c.H?{id:Pc--,type:"expression",N:{id:Pc--,type:"binary",h:{id:Pc--,type:"operator",h:"="},left:c.name,right:c.H}}:null:c};
+X.prototype.transformDeclaratorItem=X.prototype.Z;X.prototype.Y=function(c){if(!$c(this,c,1==this.a.length))return c;var f=[],k=J(c.v),n=this.a.slice(-1)[0],g=n[k];g&&(f=R(c),f.w=g,f=[f],delete n[k]);c.w&&0!=c.w.length&&Array.prototype.push.apply(f,c.w);return f};X.prototype.transformDeclarator=X.prototype.Y;X.prototype.g=function(){return"DeclarationConsolidation"};X.prototype.A=function(){return[]};X.prototype.l=function(c,f){var k=new X(this.f);f.c=S(new X(this.f),f.c);f.a=S(k,f.a);return[]};function ad(c){this.a={};this.f=c;this.g={};this.c={};E(bd,function(c){this.a[c]=[]},this)}var bd=[0,1];function cd(c,f){c.c[f.g()]=f;c.a[1].push(f)}function dd(c){E(bd,function(c){E(this.a[c],function(c){ed(this,c,[])},this)},c);return c.f}function ed(c,f,k){var n=f.g(),g=k.concat(n);if(-1!=k.indexOf(n))throw"Circular dependcy in compiler steps.  "+g.join("->");n in c.g||(E(f.A(),function(c){c in this.c&&ed(this,this.c[c],g)},c),c.g[n]=f.l(c.g,c.f))};function fd(){this.c={};this.f={};this.g=this.a=0}function gd(c){var f="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[c%52];for(c=Math.floor(c/52);0<c;)--c,f+="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"[c%62],c=Math.floor(c/62);return f}function hd(c){return"_"+gd(c)}function id(c,f){if(c.c[f])return c.c[f];for(var k=null;!k||k in c.f;)k=gd(c.a++);c.f[k]=!0;return c.c[f]=k}function jd(c,f){return c.c[f]||f}
+fd.prototype.clone=function(){var c=new fd;c.c=N(this.c);c.f=N(this.f);c.a=this.a;c.g=this.g;return c};function Y(c){this.c=[];this.K=[];this.a=new fd;this.i=null;this.m=0;this.C=c;this.J=[]}A(Y,O);function kd(c,f){if(!f)return!1;var k=f.v.qualifier;return(c.C||"uniform"!=k&&"attribute"!=k)&&!(f.id in c.J)}Y.prototype.ea=function(c){this.J=Oc(c);var f=[];c=Zb(c,c);for(var k in c){var n=c[k];kd(this,n)&&(n=n.v.qualifier,"varying"==n||"uniform"==n?id(this.a,k):f.push(k))}this.u();E(f,function(c){id(this.a,c)},this)};Y.prototype.beforeTransformRoot=Y.prototype.ea;Y.prototype.ba=function(c){this.i=c};
+Y.prototype.beforeTransformDeclarator=Y.prototype.ba;Y.prototype.Y=function(){this.i=null};Y.prototype.afterTransformDeclarator=Y.prototype.Y;Y.prototype.ha=function(c){var f=R(c);f.name=id(this.a,c.name);return f};Y.prototype.transformParameter=Y.prototype.ha;Y.prototype.u=function(){this.K.push(this.a);this.a=this.a.clone()};Y.prototype.o=function(){this.m=Math.max(this.m,this.a.a);this.a=this.K.pop()};Y.prototype.fa=Y.prototype.u;Y.prototype.beforeTransformScope=Y.prototype.fa;Y.prototype.Z=Y.prototype.o;
+Y.prototype.afterTransformScope=Y.prototype.Z;Y.prototype.U=Y.prototype.o;Y.prototype.afterTransformRoot=Y.prototype.U;Y.prototype.ca=Y.prototype.u;Y.prototype.beforeTransformFunctionDeclaration=Y.prototype.ca;Y.prototype.S=Y.prototype.o;Y.prototype.afterTransformFunctionDeclaration=Y.prototype.S;Y.prototype.da=Y.prototype.u;Y.prototype.beforeTransformFunctionPrototype=Y.prototype.da;Y.prototype.T=Y.prototype.o;Y.prototype.afterTransformFunctionPrototype=Y.prototype.T;
+Y.prototype.X=function(c){var f=c.name.name,k;this.i&&(k=this.i.v.qualifier);kd(this,this.i)&&(f=id(this.a,c.name.name));this.f&&this.i&&("attribute"==k?this.f.L[c.name.name].s=f:"uniform"==k&&(this.f.R[c.name.name].s=f));return c};Y.prototype.beforeTransformDeclaratorItem=Y.prototype.X;Y.prototype.ga=function(c){var f=jd(this.a,c.name);c.name!=f&&(c=R(c),c.name=f);return c};Y.prototype.transformIdentifier=Y.prototype.ga;Y.prototype.g=function(){return"VariableMinifier"};Y.prototype.A=function(){return[]};
+Y.prototype.l=function(c,f){var k=new Y(this.C);k.f=f;f.c=S(k,f.c);var n=new Y(this.C);n.f=f;n.a=k.a;f.a=S(n,f.a);return{vertexMaxId:k.m,fragmentMaxId:n.m}};function Z(){this.c=[];this.a=new fd}A(Z,O);var ld={main:!0};Z.prototype.f=function(c){c.name in ld||id(this.a,c.name)};Z.prototype.beforeTransformFunctionDeclaration=Z.prototype.f;Z.prototype.i=function(c){var f=jd(this.a,c.name);f!=c.name&&(c=R(c),c.name=f);return c};Z.prototype.transformFunctionDeclaration=Z.prototype.i;Z.prototype.o=function(c){var f=jd(this.a,c.I);f!=c.I&&(c=R(c),c.I=f);return c};Z.prototype.transformFunctionCall=Z.prototype.o;Z.prototype.m=Z.prototype.f;
+Z.prototype.beforeTransformFunctionPrototype=Z.prototype.m;Z.prototype.u=Z.prototype.i;Z.prototype.transformFunctionPrototype=Z.prototype.u;Z.prototype.g=function(){return"Function Minifier"};Z.prototype.A=function(){return["VariableMinifier"]};Z.prototype.l=function(c,f){var k=0,n=0;"VariableMinifier"in c&&(k=c.VariableMinifier.vertexMaxId,n=c.VariableMinifier.fragmentMaxId);var g=new Z;g.a.a=k;k=new Z;f.c=S(g,f.c);k.a.a=n;f.a=S(k,f.a);return[]};function nd(c,f,k,n){this.c=c;this.a=f;this.f=k;this.i=n}function od(c){this.c=[];this.g=!1;this.f=c;this.a=!0}A(od,O);function pd(c,f){c.a&&(c.a=0==ac(f,ga(function(c,f){if("function_call"==c.type||"operator"==c.type||"int"==c.type||"binary"==c.type||"unary"==c.type)return!1;if("identifier"==c.type){var g=this.f[c.name];if(g=v(g)&&g.a)this.g=!0;return!(g||0<f.length&&"function_call"==f.slice(-1)[0].type)}return!0},c)).length)}
+function qd(c,f){var k=D(c,"condition"),n=new od(f),k=S(n,k),g="";n.a&&(g=rd(J(k),f),k=D(g,"condition"),pd(n,k));g={ja:n.a,G:n.g,value:0,na:g};if(n.a&&!n.g)try{g.value=Number(eval(J(k)))}catch(u){g.ja=!1}return g}var sd=/([\.=;,\(\)\[\]{}\+\-:?!\|&<>\/\*]|[ \t\n]+)/g,td=/[A-Za-z_][A-Za-z_0-9]*/g;function ud(c,f){this.name=c.identifier;this.arguments=c.j?c.j.map(function(c){return c.name}):null;this.c=c.pa.split(sd).filter(function(c){return 0<c.length});this.a=f||null}
+function vd(c,f,k){if(c in k)return c;var n=f[c],g=c;if(v(n))if(n.a)g=n.a.s||n.name;else if(!n.arguments){var u=N(k);u[c]=!0;g=n.c.map(function(c){return vd(c,f,u)}).join("")}return g}
+function wd(c,f,k,n){for(var g in c){var u=f[c[g]];if(v(u)&&u.arguments){var z=c.slice(g).join(""),z=D(z,"macro_call_line");if(z.aa&&z.aa.j.length==u.arguments.length&&!(z.aa.oa.name in n)){var q=z.aa,x=N(n);x[z.aa.oa.name]=!0;var q=q.j.map(function(c){return rd(J(c),f,k,x)}),ha={},C;for(C in u.arguments)ha[u.arguments[C]]=q[C];u=rd(u.c.join(""),f,ha,x);z=rd(z.Ja,f,k,n);return rd(c.slice(0,g).join("")+u+z,f,k,n)}}}return c.join("")}
+function rd(c,f,k,n){k=k||{};n=n||{};var g=N(f),u;for(u in k)g[u]=new ud(D("#define "+u+" "+k[u],"preprocessor_define"));c=c.split(sd).filter(function(c){return 0<c.length}).map(function(c){return vd(c,g,{})});return wd(c,f,k,n)}function xd(c,f,k){this.status=c;this.V=f;this.G=k}
+function yd(c,f,k){var n={};E(f,function(c){var f=D("#define "+c.a,"preprocessor_define");n[c.a]=new ud(f,c);c.s&&(f=D("#define "+c.s,"preprocessor_define"),n[c.s]=new ud(f,c))});c=J(c);var g=[new xd(1,!0,!1)],u=0,z=[];E(c.split(/\n/g),function(c){var f=g.slice(-1)[0],k=0==f.status;if(0!=c.search("#define")||k)if(0!=c.search("#undef")||k)if(0==c.search("#if")){f=c;c=D(f,"preprocessor_if");if(k)g.push(new xd(0,!1,!1)),f=!1;else{var C=!1,B=!1;if("#ifdef"==c.B||"#ifndef"==c.B){var H=c.value.match(td)[0];
+if(!v(H))throw"Invalid "+c.B+": "+f;H=n[H];v(H)&&H.a?(C=!0,f=c.B+" "+(H.a.s||H.name)):B=v(H)==("#ifndef"==c.B)}else{B=qd(c.value,n);if(!B.ja)throw"Invalid "+c.B+": "+f;f="#if "+B.na;C=B.G;B=0==B.value}C?g.push(new xd(2,!1,!0)):g.push(new xd(B?0:1,!B,!1));C&&z.push(f);f=C}u+=f&&!k}else if(0==c.search("#else"))k=!1,0!=g.slice(-2,-1)[0].status&&(f.G&&!f.V?(k=!0,C=1,B=f.V,f=!0):0!=f.status||f.V?(C=0,B=!0,f=f.G):(C=1,B=!0,f=!1),g[g.length-1]=new xd(C,B,f)),k&&z.push(c);else if(0==c.search("#elif")){k=
+c;c=!1;if(0!=g.slice(-2,-1)[0].status){B=D(k,"preprocessor_else_if");C=qd(B.value,n);if(!C.ja)throw"Invalid "+B.B+": "+k;k="#elif "+C.na;B=0==C.value;f.G&&!f.V?(f=!0,C.G?(C=2,B=!1):B?(C=0,B=!1):(k="#else",C=1,B=!0)):f.V?(C=0,B=f.V,f=f.G):C.G?(k=k.replace(/^#elif/,"#if"),C=2,B=!1,c=f=!0):(C=B?0:1,B=!B,f=f.G);g[g.length-1]=new xd(C,B,f);f&&0!=C&&z.push(k)}u+=c}else 0==c.search("#endif")?(g.pop(),f.G&&(u--,z.push(c))):k||(f=rd(c,n),z.push(f));else{if(0<u)throw"Definitions can not be changed inside of Modes: "+
+c;f=D(c,"preprocessor_operator");delete n[f.value]}else{if(0<u)throw"Definitions can not be changed inside of Modes: "+c;f=D(c,"preprocessor_define");f=new ud(f);n[f.name]=f}});return D(z.join("\n"),k)}nd.prototype.g=function(){return"Preprocessor"};nd.prototype.A=function(){return["VariableMinifier"]};function zd(c,f){var k="statements";for(k in c)if(c[k]===c.D)break;return S(new Rc(c,k,0,0,f.D),c)}
+nd.prototype.l=function(c,f){var k=this.a,n=new fd;if(this.i)for(var g in f.f){var u=hd(n.g++);f.f[g].s=u}if(this.f)for(g in f.g)u=hd(n.g++),k.push(f.g[g].a+" "+u),f.g[g].s=u;n=this.c.map(function(c){var f=new Sc;f.a=c;return f}).concat(f.f);k=D(k.map(function(c){return"#define "+c}).join("\n"));f.c=yd(zd(f.c,k),n,"vertex_start");f.a=yd(zd(f.a,k),n,"fragment_start");return[]};var Ad={};ja("glslprep.Shader",Ad);Ad.VERTEX=0;Ad.FRAGMENT=1;ja("glslprep.SyntaxError",ka.SyntaxError);ja("glslprep.parseGlsl",function(c,f){return D(c,0===f?"vertex_start":"fragment_start")});
+ja("glslprep.minifyGlsl",function(c,f){var k=new T;k.c=D(c[0],"vertex_start");k.a=D(c[1],"fragment_start");Vc(k);k=new ad(k);if(null!=f){var n=["GL_ES 1"],g=[],u;for(u in f){var z=f[u];null!=z?n.push(u+" "+z):g.push(u)}cd(k,new nd(g,n,!1,!1))}cd(k,new W);cd(k,new X(!0));cd(k,new Y(!1));cd(k,new Z);cd(k,new U);k=dd(k);c[0]=J(k.c);c[1]=J(k.a);return c});