-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathohm.min.js
5 lines (5 loc) · 151 KB
/
ohm.min.js
1
2
3
4
5
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ohm=f()}})(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var ohm=require("..");module.exports=ohm.makeRecipe(function(){return new this.newGrammar("BuiltInRules").define("alnum",[],this.alt(this.app("letter"),this.app("digit")),"an alpha-numeric character").define("letter",[],this.alt(this.app("lower"),this.app("upper"),this.app("unicodeLtmo")),"a letter").define("digit",[],this.range("0","9"),"a digit").define("hexDigit",[],this.alt(this.app("digit"),this.range("a","f"),this.range("A","F")),"a hexadecimal digit").define("ListOf",["elem","sep"],this.alt(this.app("NonemptyListOf",[this.param(0),this.param(1)]),this.app("EmptyListOf",[this.param(0),this.param(1)]))).define("NonemptyListOf",["elem","sep"],this.seq(this.param(0),this.star(this.seq(this.param(1),this.param(0))))).define("EmptyListOf",["elem","sep"],this.seq()).define("listOf",["elem","sep"],this.alt(this.app("nonemptyListOf",[this.param(0),this.param(1)]),this.app("emptyListOf",[this.param(0),this.param(1)]))).define("nonemptyListOf",["elem","sep"],this.seq(this.param(0),this.star(this.seq(this.param(1),this.param(0))))).define("emptyListOf",["elem","sep"],this.seq()).build()})},{"..":40}],2:[function(require,module,exports){var ohm=require("..");module.exports=ohm.makeRecipe(function(){return new this.newGrammar("Ohm").withDefaultStartRule("Grammars").define("Grammars",[],this.star(this.app("Grammar"))).define("Grammar",[],this.seq(this.app("ident"),this.opt(this.app("SuperGrammar")),this.prim("{"),this.star(this.app("Rule")),this.prim("}"))).define("SuperGrammar",[],this.seq(this.prim("<:"),this.app("ident"))).define("Rule_define",[],this.seq(this.app("ident"),this.opt(this.app("Formals")),this.opt(this.app("ruleDescr")),this.prim("="),this.app("Alt"))).define("Rule_override",[],this.seq(this.app("ident"),this.opt(this.app("Formals")),this.prim(":="),this.app("Alt"))).define("Rule_extend",[],this.seq(this.app("ident"),this.opt(this.app("Formals")),this.prim("+="),this.app("Alt"))).define("Rule",[],this.alt(this.app("Rule_define"),this.app("Rule_override"),this.app("Rule_extend"))).define("Formals",[],this.seq(this.prim("<"),this.app("ListOf",[this.app("ident"),this.prim(",")]),this.prim(">"))).define("Params",[],this.seq(this.prim("<"),this.app("ListOf",[this.app("Seq"),this.prim(",")]),this.prim(">"))).define("Alt",[],this.seq(this.app("Term"),this.star(this.seq(this.prim("|"),this.app("Term"))))).define("Term_inline",[],this.seq(this.app("Seq"),this.app("caseName"))).define("Term",[],this.alt(this.app("Term_inline"),this.app("Seq"))).define("Seq",[],this.star(this.app("Iter"))).define("Iter_star",[],this.seq(this.app("Pred"),this.prim("*"))).define("Iter_plus",[],this.seq(this.app("Pred"),this.prim("+"))).define("Iter_opt",[],this.seq(this.app("Pred"),this.prim("?"))).define("Iter",[],this.alt(this.app("Iter_star"),this.app("Iter_plus"),this.app("Iter_opt"),this.app("Pred"))).define("Pred_not",[],this.seq(this.prim("~"),this.app("Lex"))).define("Pred_lookahead",[],this.seq(this.prim("&"),this.app("Lex"))).define("Pred",[],this.alt(this.app("Pred_not"),this.app("Pred_lookahead"),this.app("Lex"))).define("Lex_lex",[],this.seq(this.prim("#"),this.app("Base"))).define("Lex",[],this.alt(this.app("Lex_lex"),this.app("Base"))).define("Base_application",[],this.seq(this.app("ident"),this.opt(this.app("Params")),this.not(this.alt(this.seq(this.opt(this.app("ruleDescr")),this.prim("=")),this.prim(":="),this.prim("+="))))).define("Base_range",[],this.seq(this.app("Prim"),this.prim(".."),this.app("Prim"))).define("Base_prim",[],this.app("Prim")).define("Base_paren",[],this.seq(this.prim("("),this.app("Alt"),this.prim(")"))).define("Base_arr",[],this.seq(this.prim("["),this.app("Alt"),this.prim("]"))).define("Base_str",[],this.seq(this.prim("``"),this.app("Alt"),this.prim("''"))).define("Base_obj",[],this.seq(this.prim("{"),this.opt(this.prim("...")),this.prim("}"))).define("Base_objWithProps",[],this.seq(this.prim("{"),this.app("Props"),this.opt(this.seq(this.prim(","),this.prim("..."))),this.prim("}"))).define("Base",[],this.alt(this.app("Base_application"),this.app("Base_range"),this.app("Base_prim"),this.app("Base_paren"),this.app("Base_arr"),this.app("Base_str"),this.app("Base_obj"),this.app("Base_objWithProps"))).define("Prim",[],this.alt(this.app("keyword"),this.app("string"),this.app("number"))).define("Props",[],this.seq(this.app("Prop"),this.star(this.seq(this.prim(","),this.app("Prop"))))).define("Prop",[],this.seq(this.alt(this.app("name"),this.app("string")),this.prim(":"),this.app("Alt"))).define("ruleDescr",[],this.seq(this.prim("("),this.app("ruleDescrText"),this.prim(")")),"a rule description").define("ruleDescrText",[],this.star(this.seq(this.not(this.prim(")")),this.app("any")))).define("caseName",[],this.seq(this.prim("--"),this.star(this.seq(this.not(this.prim("\n")),this.app("space"))),this.app("name"),this.star(this.seq(this.not(this.prim("\n")),this.app("space"))),this.alt(this.prim("\n"),this.la(this.prim("}"))))).define("name",[],this.seq(this.app("nameFirst"),this.star(this.app("nameRest"))),"a name").define("nameFirst",[],this.alt(this.prim("_"),this.app("letter"))).define("nameRest",[],this.alt(this.prim("_"),this.app("alnum"))).define("ident",[],this.seq(this.not(this.app("keyword")),this.app("name")),"an identifier").define("keyword_null",[],this.seq(this.prim("null"),this.not(this.app("nameRest")))).define("keyword_true",[],this.seq(this.prim("true"),this.not(this.app("nameRest")))).define("keyword_false",[],this.seq(this.prim("false"),this.not(this.app("nameRest")))).define("keyword",[],this.alt(this.app("keyword_null"),this.app("keyword_true"),this.app("keyword_false"))).define("string",[],this.seq(this.prim('"'),this.star(this.app("strChar")),this.prim('"'))).define("strChar",[],this.alt(this.app("escapeChar"),this.seq(this.not(this.prim("\\")),this.not(this.prim('"')),this.not(this.prim("\n")),this.app("any")))).define("escapeChar_backslash",[],this.prim("\\\\")).define("escapeChar_doubleQuote",[],this.prim('\\"')).define("escapeChar_singleQuote",[],this.prim("\\'")).define("escapeChar_backspace",[],this.prim("\\b")).define("escapeChar_lineFeed",[],this.prim("\\n")).define("escapeChar_carriageReturn",[],this.prim("\\r")).define("escapeChar_tab",[],this.prim("\\t")).define("escapeChar_unicodeEscape",[],this.seq(this.prim("\\u"),this.app("hexDigit"),this.app("hexDigit"),this.app("hexDigit"),this.app("hexDigit"))).define("escapeChar_hexEscape",[],this.seq(this.prim("\\x"),this.app("hexDigit"),this.app("hexDigit"))).define("escapeChar",[],this.alt(this.app("escapeChar_backslash"),this.app("escapeChar_doubleQuote"),this.app("escapeChar_singleQuote"),this.app("escapeChar_backspace"),this.app("escapeChar_lineFeed"),this.app("escapeChar_carriageReturn"),this.app("escapeChar_tab"),this.app("escapeChar_unicodeEscape"),this.app("escapeChar_hexEscape")),"an escape sequence").define("number",[],this.seq(this.opt(this.prim("-")),this.plus(this.app("digit"))),"a number").extend("space",[],this.alt(this.app("comment"),this.range("\x00"," "))).define("comment_singleLine",[],this.seq(this.prim("//"),this.star(this.seq(this.not(this.prim("\n")),this.app("any"))),this.prim("\n"))).define("comment_multiLine",[],this.seq(this.prim("/*"),this.star(this.seq(this.not(this.prim("*/")),this.app("any"))),this.prim("*/"))).define("comment",[],this.alt(this.app("comment_singleLine"),this.app("comment_multiLine"))).build()})},{"..":40}],3:[function(require,module,exports){var ohm=require("..");module.exports=ohm.makeRecipe(function(){return new this.newGrammar("OperationsAndAttributes").withDefaultStartRule("NameNoFormals").define("NameNoFormals",[],this.app("name")).define("NameAndFormals",[],this.seq(this.app("name"),this.opt(this.app("Formals")))).define("Formals",[],this.seq(this.prim("("),this.app("ListOf",[this.app("name"),this.prim(",")]),this.prim(")"))).define("name",[],this.seq(this.app("nameFirst"),this.star(this.app("nameRest"))),"a name").define("nameFirst",[],this.alt(this.prim("_"),this.app("letter"))).define("nameRest",[],this.alt(this.prim("_"),this.app("alnum"))).build()})},{"..":40}],4:[function(require,module,exports){"use strict";module.exports=require("./is-implemented")()?Symbol:require("./polyfill")},{"./is-implemented":5,"./polyfill":20}],5:[function(require,module,exports){"use strict";module.exports=function(){var symbol;if(typeof Symbol!=="function")return false;symbol=Symbol("test symbol");try{String(symbol)}catch(e){return false}if(typeof Symbol.iterator==="symbol")return true;if(typeof Symbol.isConcatSpreadable!=="object")return false;if(typeof Symbol.iterator!=="object")return false;if(typeof Symbol.toPrimitive!=="object")return false;if(typeof Symbol.toStringTag!=="object")return false;if(typeof Symbol.unscopables!=="object")return false;return true}},{}],6:[function(require,module,exports){"use strict";module.exports=function(x){return x&&(typeof x==="symbol"||x["@@toStringTag"]==="Symbol")||false}},{}],7:[function(require,module,exports){"use strict";var assign=require("es5-ext/object/assign"),normalizeOpts=require("es5-ext/object/normalize-options"),isCallable=require("es5-ext/object/is-callable"),contains=require("es5-ext/string/#/contains"),d;d=module.exports=function(dscr,value){var c,e,w,options,desc;if(arguments.length<2||typeof dscr!=="string"){options=value;value=dscr;dscr=null}else{options=arguments[2]}if(dscr==null){c=w=true;e=false}else{c=contains.call(dscr,"c");e=contains.call(dscr,"e");w=contains.call(dscr,"w")}desc={value:value,configurable:c,enumerable:e,writable:w};return!options?desc:assign(normalizeOpts(options),desc)};d.gs=function(dscr,get,set){var c,e,options,desc;if(typeof dscr!=="string"){options=set;set=get;get=dscr;dscr=null}else{options=arguments[3]}if(get==null){get=undefined}else if(!isCallable(get)){options=get;get=set=undefined}else if(set==null){set=undefined}else if(!isCallable(set)){options=set;set=undefined}if(dscr==null){c=true;e=false}else{c=contains.call(dscr,"c");e=contains.call(dscr,"e")}desc={get:get,set:set,configurable:c,enumerable:e};return!options?desc:assign(normalizeOpts(options),desc)}},{"es5-ext/object/assign":8,"es5-ext/object/is-callable":11,"es5-ext/object/normalize-options":15,"es5-ext/string/#/contains":17}],8:[function(require,module,exports){"use strict";module.exports=require("./is-implemented")()?Object.assign:require("./shim")},{"./is-implemented":9,"./shim":10}],9:[function(require,module,exports){"use strict";module.exports=function(){var assign=Object.assign,obj;if(typeof assign!=="function")return false;obj={foo:"raz"};assign(obj,{bar:"dwa"},{trzy:"trzy"});return obj.foo+obj.bar+obj.trzy==="razdwatrzy"}},{}],10:[function(require,module,exports){"use strict";var keys=require("../keys"),value=require("../valid-value"),max=Math.max;module.exports=function(dest,src){var error,i,l=max(arguments.length,2),assign;dest=Object(value(dest));assign=function(key){try{dest[key]=src[key]}catch(e){if(!error)error=e}};for(i=1;i<l;++i){src=arguments[i];keys(src).forEach(assign)}if(error!==undefined)throw error;return dest}},{"../keys":12,"../valid-value":16}],11:[function(require,module,exports){"use strict";module.exports=function(obj){return typeof obj==="function"}},{}],12:[function(require,module,exports){"use strict";module.exports=require("./is-implemented")()?Object.keys:require("./shim")},{"./is-implemented":13,"./shim":14}],13:[function(require,module,exports){"use strict";module.exports=function(){try{Object.keys("primitive");return true}catch(e){return false}}},{}],14:[function(require,module,exports){"use strict";var keys=Object.keys;module.exports=function(object){return keys(object==null?object:Object(object))}},{}],15:[function(require,module,exports){"use strict";var forEach=Array.prototype.forEach,create=Object.create;var process=function(src,obj){var key;for(key in src)obj[key]=src[key]};module.exports=function(options){var result=create(null);forEach.call(arguments,function(options){if(options==null)return;process(Object(options),result)});return result}},{}],16:[function(require,module,exports){"use strict";module.exports=function(value){if(value==null)throw new TypeError("Cannot use null or undefined");return value}},{}],17:[function(require,module,exports){"use strict";module.exports=require("./is-implemented")()?String.prototype.contains:require("./shim")},{"./is-implemented":18,"./shim":19}],18:[function(require,module,exports){"use strict";var str="razdwatrzy";module.exports=function(){if(typeof str.contains!=="function")return false;return str.contains("dwa")===true&&str.contains("foo")===false}},{}],19:[function(require,module,exports){"use strict";var indexOf=String.prototype.indexOf;module.exports=function(searchString){return indexOf.call(this,searchString,arguments[1])>-1}},{}],20:[function(require,module,exports){"use strict";var d=require("d"),validateSymbol=require("./validate-symbol"),create=Object.create,defineProperties=Object.defineProperties,defineProperty=Object.defineProperty,objPrototype=Object.prototype,Symbol,HiddenSymbol,globalSymbols=create(null);var generateName=function(){var created=create(null);return function(desc){var postfix=0,name;while(created[desc+(postfix||"")])++postfix;desc+=postfix||"";created[desc]=true;name="@@"+desc;defineProperty(objPrototype,name,d.gs(null,function(value){defineProperty(this,name,d(value))}));return name}}();HiddenSymbol=function Symbol(description){if(this instanceof HiddenSymbol)throw new TypeError("TypeError: Symbol is not a constructor");return Symbol(description)};module.exports=Symbol=function Symbol(description){var symbol;if(this instanceof Symbol)throw new TypeError("TypeError: Symbol is not a constructor");symbol=create(HiddenSymbol.prototype);description=description===undefined?"":String(description);return defineProperties(symbol,{__description__:d("",description),__name__:d("",generateName(description))})};defineProperties(Symbol,{"for":d(function(key){if(globalSymbols[key])return globalSymbols[key];return globalSymbols[key]=Symbol(String(key))}),keyFor:d(function(s){var key;validateSymbol(s);for(key in globalSymbols)if(globalSymbols[key]===s)return key}),hasInstance:d("",Symbol("hasInstance")),isConcatSpreadable:d("",Symbol("isConcatSpreadable")),iterator:d("",Symbol("iterator")),match:d("",Symbol("match")),replace:d("",Symbol("replace")),search:d("",Symbol("search")),species:d("",Symbol("species")),split:d("",Symbol("split")),toPrimitive:d("",Symbol("toPrimitive")),toStringTag:d("",Symbol("toStringTag")),unscopables:d("",Symbol("unscopables"))});defineProperties(HiddenSymbol.prototype,{constructor:d(Symbol),toString:d("",function(){return this.__name__})});defineProperties(Symbol.prototype,{toString:d(function(){return"Symbol ("+validateSymbol(this).__description__+")"}),valueOf:d(function(){return validateSymbol(this)})});defineProperty(Symbol.prototype,Symbol.toPrimitive,d("",function(){return validateSymbol(this)}));defineProperty(Symbol.prototype,Symbol.toStringTag,d("c","Symbol"));defineProperty(HiddenSymbol.prototype,Symbol.toPrimitive,d("c",Symbol.prototype[Symbol.toPrimitive]));defineProperty(HiddenSymbol.prototype,Symbol.toStringTag,d("c",Symbol.prototype[Symbol.toStringTag]))},{"./validate-symbol":21,d:7}],21:[function(require,module,exports){"use strict";var isSymbol=require("./is-symbol");module.exports=function(value){if(!isSymbol(value))throw new TypeError(value+" is not a symbol");return value}},{"./is-symbol":6}],22:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],23:[function(require,module,exports){module.exports=function(obj){return!!(obj!=null&&obj.constructor&&typeof obj.constructor.isBuffer==="function"&&obj.constructor.isBuffer(obj))}},{}],24:[function(require,module,exports){module.exports=extend;function extend(origin,add){if(!add||typeof add!=="object")return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin}},{}],25:[function(require,module,exports){"use strict";var GrammarDecl=require("./GrammarDecl");var pexprs=require("./pexprs");function Builder(){}Builder.prototype={newGrammar:function(name){return new GrammarDecl(name)},prim:function(x){return new pexprs.Prim(x)},range:function(from,to){return new pexprs.Range(from,to)},param:function(index){return new pexprs.Param(index)},alt:function(){var terms=[];for(var idx=0;idx<arguments.length;idx++){var arg=arguments[idx];if(arg instanceof pexprs.Alt){terms=terms.concat(arg.terms)}else{terms.push(arg)}}return terms.length===1?terms[0]:new pexprs.Alt(terms)},seq:function(){var factors=[];for(var idx=0;idx<arguments.length;idx++){var arg=arguments[idx];if(arg instanceof pexprs.Seq){factors=factors.concat(arg.factors)}else{factors.push(arg)}}return factors.length===1?factors[0]:new pexprs.Seq(factors)},star:function(expr){return new pexprs.Star(expr)},plus:function(expr){return new pexprs.Plus(expr)},opt:function(expr){return new pexprs.Opt(expr)},not:function(expr){return new pexprs.Not(expr)},la:function(expr){return new pexprs.Lookahead(expr)},lex:function(expr){return new pexprs.Lex(expr)},arr:function(expr){return new pexprs.Arr(expr)},str:function(expr){return new pexprs.Str(expr)},obj:function(properties,isLenient){return new pexprs.Obj(properties,!!isLenient)},app:function(ruleName,optParams){return new pexprs.Apply(ruleName,optParams)}};module.exports=Builder},{"./GrammarDecl":28,"./pexprs":55}],26:[function(require,module,exports){"use strict";function isValidType(type){return type==="description"||type==="string"||type==="code"}function Failure(text,type){if(!isValidType(type)){throw new Error("invalid Failure type: "+type)}this.text=text;this.type=type;this.fluffy=false}Failure.prototype.getText=function(){return this.text};Failure.prototype.getType=function(){return this.type};Failure.prototype.isDescription=function(){return this.type==="description"};Failure.prototype.isStringTerminal=function(){return this.type==="string"};Failure.prototype.isCode=function(){return this.type==="code"};Failure.prototype.isFluffy=function(){return this.fluffy};Failure.prototype.makeFluffy=function(){this.fluffy=true};Failure.prototype.subsumes=function(that){return this.getText()===that.getText()&&this.type===that.type&&(!this.isFluffy()||this.isFluffy()&&that.isFluffy())};Failure.prototype.toString=function(){return this.type==="string"?JSON.stringify(this.getText()):this.getText()};module.exports=Failure},{}],27:[function(require,module,exports){"use strict";var InputStream=require("./InputStream");var MatchResult=require("./MatchResult");var Semantics=require("./Semantics");var State=require("./State");var common=require("./common");var errors=require("./errors");var pexprs=require("./pexprs");function Grammar(name,superGrammar,ruleBodies,ruleFormals,ruleDescriptions,optDefaultStartRule){this.name=name;this.superGrammar=superGrammar;this.ruleBodies=ruleBodies;this.ruleFormals=ruleFormals;this.ruleDescriptions=ruleDescriptions;if(optDefaultStartRule){if(!(optDefaultStartRule in ruleBodies)){throw new Error("Invalid start rule: '"+optDefaultStartRule+"' is not a rule in grammar '"+name+"'")}this.defaultStartRule=optDefaultStartRule}this.constructors=this.ctors=this.createConstructors()}Grammar.prototype={construct:function(ruleName,children){var body=this.ruleBodies[ruleName];if(!body){throw errors.undeclaredRule(ruleName,this.name)}var ans=this._constructByMatching(ruleName,children);if(!ans){throw errors.invalidConstructorCall(this,ruleName,children)}return ans},_constructByMatching:function(ruleName,ctorArgs){var input=ctorArgs;if(input.length===1&&typeof input[0]==="string"){input=input[0]}var state=new State(this,InputStream.newFor(input),ruleName,{matchNodes:true});if(!state.eval(new pexprs.Apply(ruleName))){return null}return state.bindings[0]},createConstructors:function(){var self=this;var constructors={};function makeConstructor(ruleName){return function(){return self.construct(ruleName,Array.prototype.slice.call(arguments))}}for(var ruleName in this.ruleBodies){constructors[ruleName]=makeConstructor(ruleName)}return constructors},isBuiltIn:function(){return this===Grammar.ProtoBuiltInRules||this===Grammar.BuiltInRules},match:function(obj,optStartRule){var startRule=optStartRule||this.defaultStartRule;if(!startRule){throw new Error("Missing start rule argument -- the grammar has no default start rule.")}var state=this._match(obj,startRule,{});return MatchResult.newFor(state)},_match:function(obj,startRule,opts){if(!(startRule in this.ruleBodies)){throw errors.undeclaredRule(startRule,this.name)}var inputStream=InputStream.newFor(typeof obj==="string"?obj:[obj]);var state=new State(this,inputStream,startRule,opts);state.eval(new pexprs.Apply(startRule));return state},trace:function(obj,optStartRule){var startRule=optStartRule||this.defaultStartRule;if(!startRule){throw new Error("Missing start rule argument -- the grammar has no default start rule.")}var state=this._match(obj,startRule,{trace:true});var rootTrace=state.trace[0];rootTrace.state=state;rootTrace.result=MatchResult.newFor(state);return rootTrace},semantics:function(){return Semantics.createSemantics(this)},extendSemantics:function(superSemantics){return Semantics.createSemantics(this,superSemantics._getSemantics())},_checkTopDownActionDict:function(what,name,actionDict){function isSpecialAction(a){return a==="_iter"||a==="_terminal"||a==="_nonterminal"||a==="_default"}var problems=[];for(var k in actionDict){var v=actionDict[k];if(!isSpecialAction(k)&&!(k in this.ruleBodies)){problems.push("'"+k+"' is not a valid semantic action for '"+this.name+"'")}else if(typeof v!=="function"){problems.push("'"+k+"' must be a function in an action dictionary for '"+this.name+"'")}else{var actual=v.length;var expected=this._topDownActionArity(k);if(actual!==expected){problems.push("Semantic action '"+k+"' has the wrong arity: "+"expected "+expected+", got "+actual)}}}if(problems.length>0){var prettyProblems=problems.map(function(problem){return"- "+problem});var error=new Error("Found errors in the action dictionary of the '"+name+"' "+what+":\n"+prettyProblems.join("\n"));error.problems=problems;throw error}},_topDownActionArity:function(actionName){if(actionName==="_iter"||actionName==="_nonterminal"||actionName==="_default"){return 1}else if(actionName==="_terminal"){return 0}return this.ruleBodies[actionName].getArity()},_inheritsFrom:function(grammar){var g=this.superGrammar;while(g){if(g===grammar){return true}g=g.superGrammar}return false},toRecipe:function(optVarName){if(this.isBuiltIn()){throw new Error("Why would anyone want to generate a recipe for the "+this.name+" grammar?!?!")}var sb=new common.StringBuffer;if(optVarName){sb.append("var "+optVarName+" = ")}sb.append("(function() {\n");var superGrammarDecl="";if(!this.superGrammar.isBuiltIn()){sb.append(this.superGrammar.toRecipe("buildSuperGrammar"));superGrammarDecl=" .withSuperGrammar(buildSuperGrammar.call(this))\n"}sb.append(" return new this.newGrammar("+JSON.stringify(this.name)+")\n");sb.append(superGrammarDecl);if(this.defaultStartRule){sb.append(" .withDefaultStartRule('"+this.defaultStartRule+"')\n")}var self=this;Object.keys(this.ruleBodies).forEach(function(ruleName){var body=self.ruleBodies[ruleName];sb.append(" .");if(self.superGrammar.ruleBodies[ruleName]){sb.append(body instanceof pexprs.Extend?"extend":"override")}else{sb.append("define")}var formals=self.ruleFormals[ruleName];var formalsString="["+formals.map(JSON.stringify).join(", ")+"]";sb.append("("+JSON.stringify(ruleName)+", "+formalsString+", ");body.outputRecipe(sb,formals);if(!self.superGrammar.ruleBodies[ruleName]&&self.ruleDescriptions[ruleName]){sb.append(", "+JSON.stringify(self.ruleDescriptions[ruleName]))}sb.append(")\n")});sb.append(" .build();\n});\n");return sb.contents()},toOperationActionDictionaryTemplate:function(){return this._toOperationOrAttributeActionDictionaryTemplate()},toAttributeActionDictionaryTemplate:function(){return this._toOperationOrAttributeActionDictionaryTemplate()},_toOperationOrAttributeActionDictionaryTemplate:function(){var sb=new common.StringBuffer;sb.append("{");var first=true;for(var ruleName in this.ruleBodies){var body=this.ruleBodies[ruleName];if(first){first=false}else{sb.append(",")}sb.append("\n");sb.append(" ");this.addSemanticActionTemplate(ruleName,body,sb)}sb.append("\n}");return sb.contents()},addSemanticActionTemplate:function(ruleName,body,sb){sb.append(ruleName);sb.append(": function(");var arity=this._topDownActionArity(ruleName);sb.append(common.repeat("_",arity).join(", "));sb.append(") {\n");sb.append(" }")}};Grammar.ProtoBuiltInRules=new Grammar("ProtoBuiltInRules",undefined,{any:pexprs.any,end:pexprs.end,lower:new pexprs.UnicodeChar("Ll"),spaces:new pexprs.Star(new pexprs.Apply("space")),space:new pexprs.Range("\x00"," "),unicodeLtmo:new pexprs.UnicodeChar("Ltmo"),upper:new pexprs.UnicodeChar("Lu"),Boolean:new pexprs.TypeCheck("boolean"),Number:new pexprs.TypeCheck("number"),String:new pexprs.TypeCheck("string")},{any:[],end:[],spaces:[],space:[],lower:[],unicodeLtmo:[],upper:[],Boolean:[],Number:[],String:[]},{any:"any object",end:"end of input",space:"a space",lower:"a lowercase letter",upper:"an uppercase letter"});module.exports=Grammar},{"./InputStream":29,"./MatchResult":31,"./Semantics":34,"./State":35,"./common":37,"./errors":38,"./pexprs":55}],28:[function(require,module,exports){"use strict";var Grammar=require("./Grammar");var common=require("./common");var errors=require("./errors");var pexprs=require("./pexprs");function GrammarDecl(name){this.name=name}GrammarDecl.prototype.ensureSuperGrammar=function(){if(!this.superGrammar){this.withSuperGrammar(this.name==="BuiltInRules"?Grammar.ProtoBuiltInRules:Grammar.BuiltInRules)}return this.superGrammar};GrammarDecl.prototype.installOverriddenOrExtendedRule=function(name,formals,body){var duplicateParameterNames=common.getDuplicates(formals);if(duplicateParameterNames.length>0){throw errors.duplicateParameterNames(name,duplicateParameterNames,body)}var expectedFormals=this.ensureSuperGrammar().ruleFormals[name];var expectedNumFormals=expectedFormals?expectedFormals.length:0;if(formals.length!==expectedNumFormals){throw errors.wrongNumberOfParameters(name,expectedNumFormals,formals.length,body)}return this.install(name,formals,body)};GrammarDecl.prototype.install=function(name,formals,body,optDescription){body=body.introduceParams(formals);this.ruleFormals[name]=formals;if(optDescription){this.ruleDescriptions[name]=optDescription}this.ruleBodies[name]=body;return this};GrammarDecl.prototype.withSuperGrammar=function(superGrammar){if(this.superGrammar){throw new Error("the super grammar of a GrammarDecl cannot be set more than once")}this.superGrammar=superGrammar;this.ruleBodies=Object.create(superGrammar.ruleBodies);this.ruleFormals=Object.create(superGrammar.ruleFormals);this.ruleDescriptions=Object.create(superGrammar.ruleDescriptions);if(!superGrammar.isBuiltIn()){this.defaultStartRule=superGrammar.defaultStartRule}return this};GrammarDecl.prototype.withDefaultStartRule=function(ruleName){this.defaultStartRule=ruleName;return this};GrammarDecl.prototype.build=function(){var grammar=new Grammar(this.name,this.ensureSuperGrammar(),this.ruleBodies,this.ruleFormals,this.ruleDescriptions,this.defaultStartRule);var grammarErrors=[];var grammarHasInvalidApplications=false;Object.keys(grammar.ruleBodies).forEach(function(ruleName){var body=grammar.ruleBodies[ruleName];try{body.assertChoicesHaveUniformArity(ruleName)}catch(e){grammarErrors.push(e)}try{body.assertAllApplicationsAreValid(ruleName,grammar)}catch(e){grammarErrors.push(e);grammarHasInvalidApplications=true}});if(!grammarHasInvalidApplications){Object.keys(grammar.ruleBodies).forEach(function(ruleName){var body=grammar.ruleBodies[ruleName];try{body.assertIteratedExprsAreNotNullable(grammar,ruleName)}catch(e){grammarErrors.push(e)}})}if(grammarErrors.length>0){errors.throwErrors(grammarErrors)}return grammar};GrammarDecl.prototype.define=function(name,formals,body,optDescr){this.ensureSuperGrammar();if(this.superGrammar.ruleBodies[name]){throw errors.duplicateRuleDeclaration(name,this.name,this.superGrammar.name,body)}else if(this.ruleBodies[name]){throw errors.duplicateRuleDeclaration(name,this.name,this.name,body)}var duplicateParameterNames=common.getDuplicates(formals);if(duplicateParameterNames.length>0){throw errors.duplicateParameterNames(name,duplicateParameterNames,body)}return this.install(name,formals,body,optDescr)};GrammarDecl.prototype.override=function(name,formals,body){var baseRule=this.ensureSuperGrammar().ruleBodies[name];if(!baseRule){throw errors.cannotOverrideUndeclaredRule(name,this.superGrammar.name,body)}this.installOverriddenOrExtendedRule(name,formals,body);return this};GrammarDecl.prototype.extend=function(name,formals,body){var baseRule=this.ensureSuperGrammar().ruleBodies[name];if(!baseRule){throw errors.cannotExtendUndeclaredRule(name,this.superGrammar.name,body)}this.installOverriddenOrExtendedRule(name,formals,new pexprs.Extend(this.superGrammar,name,body));return this};module.exports=GrammarDecl},{"./Grammar":27,"./common":37,"./errors":38,"./pexprs":55}],29:[function(require,module,exports){"use strict";var inherits=require("inherits");var common=require("./common");var Interval=require("./Interval");function InputStream(){throw new Error("InputStream cannot be instantiated -- it's abstract")}InputStream.newFor=function(obj){if(typeof obj==="string"){return new StringInputStream(obj)}else if(Array.isArray(obj)){return new ListInputStream(obj)}else if(obj instanceof InputStream){return obj}else{throw new Error("cannot make input stream for "+obj)}};InputStream.prototype={init:function(source){this.source=source;this.pos=0;this.posInfos=[]},atEnd:function(){return this.pos===this.source.length},next:function(){if(this.atEnd()){return common.fail}else{return this.source[this.pos++]}},matchExactly:function(x){return this.next()===x?true:common.fail},sourceSlice:function(startIdx,endIdx){return this.source.slice(startIdx,endIdx)},interval:function(startIdx,optEndIdx){return new Interval(this,startIdx,optEndIdx?optEndIdx:this.pos)}};function StringInputStream(source){this.init(source)}inherits(StringInputStream,InputStream);StringInputStream.prototype.matchString=function(s){for(var idx=0;idx<s.length;idx++){if(this.matchExactly(s[idx])===common.fail){return common.fail}}return true};StringInputStream.prototype.nextStringValue=function(){if(this.pos===0){this.pos=this.source.length;return this.sourceSlice(0)}return null};function ListInputStream(source){this.init(source)}inherits(ListInputStream,InputStream);ListInputStream.prototype.matchString=function(s){return this.matchExactly(s)};ListInputStream.prototype.nextStringValue=function(){
var value=this.next();return typeof value==="string"?value:null};module.exports=InputStream},{"./Interval":30,"./common":37,inherits:22}],30:[function(require,module,exports){"use strict";var errors=require("./errors");var util=require("./util");function Interval(inputStream,startIdx,endIdx){this.inputStream=inputStream;this.startIdx=startIdx;this.endIdx=endIdx}Interval.coverage=function(){var inputStream=arguments[0].inputStream;var startIdx=arguments[0].startIdx;var endIdx=arguments[0].endIdx;for(var idx=1;idx<arguments.length;idx++){var interval=arguments[idx];if(interval.inputStream!==inputStream){throw errors.intervalSourcesDontMatch()}else{startIdx=Math.min(startIdx,arguments[idx].startIdx);endIdx=Math.max(endIdx,arguments[idx].endIdx)}}return new Interval(inputStream,startIdx,endIdx)};Interval.prototype={coverageWith:function(){var intervals=Array.prototype.slice.call(arguments);intervals.push(this);return Interval.coverage.apply(undefined,intervals)},collapsedLeft:function(){return new Interval(this.inputStream,this.startIdx,this.startIdx)},collapsedRight:function(){return new Interval(this.inputStream,this.endIdx,this.endIdx)},getLineAndColumnMessage:function(){var range=[this.startIdx,this.endIdx];return util.getLineAndColumnMessage(this.inputStream.source,this.startIdx,range)},minus:function(that){if(this.inputStream!==that.inputStream){throw errors.intervalSourcesDontMatch()}else if(this.startIdx===that.startIdx&&this.endIdx===that.endIdx){return[]}else if(this.startIdx<that.startIdx&&that.endIdx<this.endIdx){return[new Interval(this.inputStream,this.startIdx,that.startIdx),new Interval(this.inputStream,that.endIdx,this.endIdx)]}else if(this.startIdx<that.endIdx&&that.endIdx<this.endIdx){return[new Interval(this.inputStream,that.endIdx,this.endIdx)]}else if(this.startIdx<that.startIdx&&that.startIdx<this.endIdx){return[new Interval(this.inputStream,this.startIdx,that.startIdx)]}else{return[this]}},trimmed:function(){var contents=this.contents;var startIdx=this.startIdx+contents.match(/^\s*/)[0].length;var endIdx=this.endIdx-contents.match(/\s*$/)[0].length;return new Interval(this.inputStream,startIdx,endIdx)}};Object.defineProperties(Interval.prototype,{contents:{get:function(){if(this._contents===undefined){this._contents=this.inputStream.sourceSlice(this.startIdx,this.endIdx)}return this._contents},enumerable:true}});module.exports=Interval},{"./errors":38,"./util":56}],31:[function(require,module,exports){"use strict";var inherits=require("inherits");var common=require("./common");var nodes=require("./nodes");var util=require("./util");var Interval=require("./Interval");function getShortMatchErrorMessage(pos,source,detail){var errorInfo=util.getLineAndColumn(source,pos);return"Line "+errorInfo.lineNum+", col "+errorInfo.colNum+": "+detail}function MatchResult(state){this.state=state;this._cst=state.bindings[0]}MatchResult.newFor=function(state){var succeeded=state.bindings.length===1;return succeeded?new MatchResult(state):new MatchFailure(state)};MatchResult.prototype.failed=function(){return false};MatchResult.prototype.succeeded=function(){return!this.failed()};MatchResult.prototype.getDiscardedSpaces=function(){if(this.failed()){return[]}var state=this.state;var grammar=state.grammar;var inputStream=state.inputStream;var intervals=[new Interval(inputStream,0,inputStream.source.length)];var s=grammar.semantics().addOperation("subtractTerminals",{_nonterminal:function(children){children.forEach(function(child){child.subtractTerminals()})},_terminal:function(){var t=this;intervals=intervals.map(function(interval){return interval.minus(t.interval)}).reduce(function(xs,ys){return xs.concat(ys)},[])}});s(this).subtractTerminals();s.addOperation("fixIntervals(idxOffset)",{_default:function(children){var idxOffset=this.args.idxOffset;this.interval.inputStream=inputStream;this.interval.startIdx+=idxOffset;this.interval.endIdx+=idxOffset;if(!this.isTerminal()){children.forEach(function(child){child.fixIntervals(idxOffset)})}}});var discardedNodes=intervals.map(function(interval){var r=grammar.match(interval.contents,"spaces");s(r).fixIntervals(interval.startIdx);return r._cst});discardedNodes=new nodes.IterationNode(grammar,discardedNodes,discardedNodes.length===0?new Interval(inputStream,0,0):new Interval(inputStream,discardedNodes[0].interval.startIdx,discardedNodes[discardedNodes.length-1].interval.endIdx));var r=Object.create(this);r._cst=discardedNodes;r.getDiscardedSpaces=function(){return r};return r};function MatchFailure(state){this.state=state;common.defineLazyProperty(this,"_failures",function(){return this.state.getFailures()});common.defineLazyProperty(this,"message",function(){var source=this.state.inputStream.source;if(typeof source!=="string"){return"match failed at position "+this.getRightmostFailurePosition()}var detail="Expected "+this.getExpectedText();return util.getLineAndColumnMessage(source,this.getRightmostFailurePosition())+detail});common.defineLazyProperty(this,"shortMessage",function(){if(typeof this.state.inputStream.source!=="string"){return"match failed at position "+this.getRightmostFailurePosition()}var detail="expected "+this.getExpectedText();return getShortMatchErrorMessage(this.getRightmostFailurePosition(),this.state.inputStream.source,detail)})}inherits(MatchFailure,MatchResult);MatchFailure.prototype.toString=function(){return"[MatchFailure at position "+this.getRightmostFailurePosition()+"]"};MatchFailure.prototype.failed=function(){return true};MatchFailure.prototype.getRightmostFailurePosition=function(){return this.state.getRightmostFailurePosition()};MatchFailure.prototype.getRightmostFailures=function(){return this._failures};MatchFailure.prototype.getExpectedText=function(){var sb=new common.StringBuffer;var failures=this.getRightmostFailures();failures=failures.filter(function(failure){return!failure.isFluffy()});for(var idx=0;idx<failures.length;idx++){if(idx>0){if(idx===failures.length-1){sb.append(failures.length>2?", or ":" or ")}else{sb.append(", ")}}sb.append(failures[idx].toString())}return sb.contents()};MatchFailure.prototype.getInterval=function(){var pos=this.state.getRightmostFailurePosition();return new Interval(this.state.inputStream,pos,pos)};module.exports=MatchResult},{"./Interval":30,"./common":37,"./nodes":41,"./util":56,inherits:22}],32:[function(require,module,exports){"use strict";var extend=require("util-extend");function Namespace(){}Namespace.prototype=Object.create(null);Namespace.asNamespace=function(objOrNamespace){if(objOrNamespace instanceof Namespace){return objOrNamespace}return Namespace.createNamespace(objOrNamespace)};Namespace.createNamespace=function(optProps){return Namespace.extend(Namespace.prototype,optProps)};Namespace.extend=function(namespace,optProps){if(namespace!==Namespace.prototype&&!(namespace instanceof Namespace)){throw new TypeError("not a Namespace object: "+namespace)}var ns=Object.create(namespace,{constructor:{value:Namespace,enumerable:false,writable:true,configurable:true}});return extend(ns,optProps)};Namespace.toString=function(ns){return Object.prototype.toString.call(ns)};module.exports=Namespace},{"util-extend":24}],33:[function(require,module,exports){"use strict";function PosInfo(state){this.state=state;this.applicationMemoKeyStack=[];this.memo={};this.currentLeftRecursion=undefined}PosInfo.prototype={isActive:function(application){return this.applicationMemoKeyStack.indexOf(application.toMemoKey())>=0},enter:function(application){this.state.enter(application);this.applicationMemoKeyStack.push(application.toMemoKey())},exit:function(){this.state.exit();this.applicationMemoKeyStack.pop()},startLeftRecursion:function(headApplication,memoRec){memoRec.isLeftRecursion=true;memoRec.headApplication=headApplication;memoRec.nextLeftRecursion=this.currentLeftRecursion;this.currentLeftRecursion=memoRec;var applicationMemoKeyStack=this.applicationMemoKeyStack;var indexOfFirstInvolvedRule=applicationMemoKeyStack.indexOf(headApplication.toMemoKey())+1;var involvedApplicationMemoKeys=applicationMemoKeyStack.slice(indexOfFirstInvolvedRule);memoRec.isInvolved=function(applicationMemoKey){return involvedApplicationMemoKeys.indexOf(applicationMemoKey)>=0};memoRec.updateInvolvedApplicationMemoKeys=function(){for(var idx=indexOfFirstInvolvedRule;idx<applicationMemoKeyStack.length;idx++){var applicationMemoKey=applicationMemoKeyStack[idx];if(!this.isInvolved(applicationMemoKey)){involvedApplicationMemoKeys.push(applicationMemoKey)}}}},endLeftRecursion:function(){this.currentLeftRecursion=this.currentLeftRecursion.nextLeftRecursion},shouldUseMemoizedResult:function(memoRec){if(!memoRec.isLeftRecursion){return true}var applicationMemoKeyStack=this.applicationMemoKeyStack;for(var idx=0;idx<applicationMemoKeyStack.length;idx++){var applicationMemoKey=applicationMemoKeyStack[idx];if(memoRec.isInvolved(applicationMemoKey)){return false}}return true}};module.exports=PosInfo},{}],34:[function(require,module,exports){"use strict";var Symbol=require("es6-symbol");var inherits=require("inherits");var MatchResult=require("./MatchResult");var common=require("./common");function Wrapper(){}Wrapper.prototype.toString=function(){return"[semantics wrapper for "+this._node.grammar.name+"]"};Wrapper.prototype.child=function(idx){if(!(0<=idx&&idx<this._node.numChildren())){return undefined}var childWrapper=this._childWrappers[idx];if(!childWrapper){childWrapper=this._childWrappers[idx]=this._semantics.wrap(this._node.childAt(idx))}return childWrapper};Wrapper.prototype._children=function(){for(var idx=0;idx<this._node.numChildren();idx++){this.child(idx)}return this._childWrappers};Wrapper.prototype.isIteration=function(){return this._node.isIteration()};Wrapper.prototype.isTerminal=function(){return this._node.isTerminal()};Wrapper.prototype.isNonterminal=function(){return this._node.isNonterminal()};Wrapper.prototype.isSyntactic=function(){return this.isNonterminal()&&this._node.isSyntactic()};Wrapper.prototype.isLexical=function(){return this.isNonterminal()&&this._node.isLexical()};Wrapper.prototype.isOptional=function(){return this._node.isOptional()};Object.defineProperties(Wrapper.prototype,{children:{get:function(){return this._children()}},ctorName:{get:function(){return this._node.ctorName}},interval:{get:function(){return this._node.interval}},numChildren:{get:function(){return this._node.numChildren()}},primitiveValue:{get:function(){if(this.isTerminal()){return this._node.primitiveValue}throw new TypeError("tried to access the 'primitiveValue' attribute of a non-terminal CST node")}}});function Semantics(grammar,optSuperSemantics){var self=this;this.grammar=grammar;this.checkedActionDicts=false;this.Wrapper=function(node){self.checkActionDictsIfHaventAlready();this._semantics=self;this._node=node;this._childWrappers=[]};if(optSuperSemantics){this.super=optSuperSemantics;if(grammar!==this.super.grammar&&!grammar._inheritsFrom(this.super.grammar)){throw new Error("Cannot extend a semantics for grammar '"+this.super.grammar.name+"' for use with grammar '"+grammar.name+"' (not a sub-grammar)")}inherits(this.Wrapper,this.super.Wrapper);this.operations=Object.create(this.super.operations);this.attributes=Object.create(this.super.attributes);this.attributeKeys=Object.create(null);for(var attributeName in this.attributes){this.attributeKeys[attributeName]=Symbol()}}else{inherits(this.Wrapper,Wrapper);this.operations=Object.create(null);this.attributes=Object.create(null);this.attributeKeys=Object.create(null)}}Semantics.prototype.toString=function(){return"[semantics for "+this.grammar.name+"]"};Semantics.prototype.checkActionDictsIfHaventAlready=function(){if(!this.checkedActionDicts){this.checkActionDicts();this.checkedActionDicts=true}};Semantics.prototype.checkActionDicts=function(){for(var name in this.operations){this.operations[name].checkActionDict(this.grammar)}for(name in this.attributes){this.attributes[name].checkActionDict(this.grammar)}};var prototypeGrammar;var prototypeGrammarSemantics;Semantics.initPrototypeParser=function(grammar){prototypeGrammarSemantics=grammar.semantics().addOperation("parse",{NameNoFormals:function(n){return{name:n.parse(),formals:[]}},NameAndFormals:function(n,fs){return{name:n.parse(),formals:fs.parse()[0]||[]}},Formals:function(oparen,fs,cparen){return fs.parse()},name:function(first,rest){return this.interval.contents},EmptyListOf:function(){return[]},NonemptyListOf:function(x,_,xs){return[x.parse()].concat(xs.parse())}});prototypeGrammar=grammar};function parsePrototype(nameAndFormalArgs,allowFormals){if(!prototypeGrammar){return{name:nameAndFormalArgs,formals:[]}}var r=prototypeGrammar.match(nameAndFormalArgs,allowFormals?"NameAndFormals":"NameNoFormals");if(r.failed()){throw new Error(r.message)}return prototypeGrammarSemantics(r).parse()}Semantics.prototype.addOperationOrAttribute=function(type,nameAndFormalArgs,actionDict){var typePlural=type+"s";var parsedNameAndFormalArgs=parsePrototype(nameAndFormalArgs,type==="operation");var name=parsedNameAndFormalArgs.name;var formals=parsedNameAndFormalArgs.formals;this.assertNewName(name,type);var realActionDict={_default:function(children){var self=this;var thisThing=this._semantics[typePlural][name];var args=thisThing.formals.map(function(formal){return self.args[formal]});if(this.isIteration()){return children.map(function(child){return doIt.apply(child,args)})}if(this.isTerminal()){return this.primitiveValue}if(children.length===1){return doIt.apply(children[0],args)}else{throw new Error("Missing semantic action for "+this.ctorName+" in "+name+" "+type)}}};Object.keys(actionDict).forEach(function(name){realActionDict[name]=actionDict[name]});this[typePlural][name]=type==="operation"?new Operation(name,formals,realActionDict):new Attribute(name,realActionDict);this[typePlural][name].checkActionDict(this.grammar);function doIt(){var thisThing=this._semantics[typePlural][name];if(arguments.length!==thisThing.formals.length){throw new Error("Invalid number of arguments passed to "+name+" "+type+" (expected "+thisThing.formals.length+", got "+arguments.length+")")}var args=Object.create(null);for(var idx=0;idx<arguments.length;idx++){var formal=thisThing.formals[idx];args[formal]=arguments[idx]}var oldArgs=this.args;this.args=args;var ans=thisThing.execute(this._semantics,this);this.args=oldArgs;return ans}if(type==="operation"){this.Wrapper.prototype[name]=doIt;this.Wrapper.prototype[name].toString=function(){return"["+name+" operation]"}}else{Object.defineProperty(this.Wrapper.prototype,name,{get:doIt});this.attributeKeys[name]=Symbol()}};Semantics.prototype.extendOperationOrAttribute=function(type,name,actionDict){var typePlural=type+"s";parsePrototype(name,false);if(!(this.super&&name in this.super[typePlural])){throw new Error("Cannot extend "+type+" '"+name+"': did not inherit an "+type+" with that name")}if(Object.prototype.hasOwnProperty.call(this[typePlural],name)){throw new Error("Cannot extend "+type+" '"+name+"' again")}var inheritedFormals=this[typePlural][name].formals;var inheritedActionDict=this[typePlural][name].actionDict;var newActionDict=Object.create(inheritedActionDict);Object.keys(actionDict).forEach(function(name){newActionDict[name]=actionDict[name]});this[typePlural][name]=type==="operation"?new Operation(name,inheritedFormals,newActionDict):new Attribute(name,newActionDict);this[typePlural][name].checkActionDict(this.grammar)};Semantics.prototype.assertNewName=function(name,type){if(Wrapper.prototype.hasOwnProperty(name)){throw new Error("Cannot add "+type+" '"+name+"': that's a reserved name")}if(name in this.operations){throw new Error("Cannot add "+type+" '"+name+"': an operation with that name already exists")}if(name in this.attributes){throw new Error("Cannot add "+type+" '"+name+"': an attribute with that name already exists")}};Semantics.prototype.wrap=function(node){return new this.Wrapper(node)};Semantics.createSemantics=function(grammar,optSuperSemantics){var s=new Semantics(grammar,optSuperSemantics);var proxy=function ASemantics(matchResult){if(!(matchResult instanceof MatchResult)){throw new TypeError("Semantics expected a MatchResult, but got "+common.unexpectedObjToString(matchResult))}if(!matchResult.succeeded()){throw new TypeError("cannot apply Semantics to "+matchResult.toString())}var cst=matchResult._cst;if(cst.grammar!==grammar){throw new Error("Cannot use a CST node created by grammar '"+cst.grammar.name+"' with a semantics for '"+grammar.name+"'")}return s.wrap(cst)};proxy.addOperation=function(nameAndFormalArgs,actionDict){s.addOperationOrAttribute.call(s,"operation",nameAndFormalArgs,actionDict);return proxy};proxy.extendOperation=function(name,actionDict){s.extendOperationOrAttribute.call(s,"operation",name,actionDict);return proxy};proxy.addAttribute=function(name,actionDict){s.addOperationOrAttribute.call(s,"attribute",name,actionDict);return proxy};proxy.extendAttribute=function(name,actionDict){s.extendOperationOrAttribute.call(s,"attribute",name,actionDict);return proxy};proxy.toString=s.toString.bind(s);proxy._getSemantics=function(){return s};return proxy};function Operation(name,formals,actionDict){this.name=name;this.formals=formals;this.actionDict=actionDict}Operation.prototype.typeName="operation";Operation.prototype.checkActionDict=function(grammar){grammar._checkTopDownActionDict(this.typeName,this.name,this.actionDict)};Operation.prototype.execute=function(semantics,nodeWrapper){var actionFn=this.actionDict[nodeWrapper._node.ctorName];if(actionFn){return this.doAction(semantics,nodeWrapper,actionFn,nodeWrapper.isIteration())}if(nodeWrapper.isNonterminal()){actionFn=this.actionDict._nonterminal;if(nodeWrapper.isLexical()&&this.actionDict._lexical){actionFn=this.actionDict._lexical}else if(nodeWrapper.isSyntactic()&&this.actionDict._syntactic){actionFn=this.actionDict._syntactic}if(actionFn){return this.doAction(semantics,nodeWrapper,actionFn,true)}}return this.doAction(semantics,nodeWrapper,this.actionDict._default,true)};Operation.prototype.doAction=function(semantics,nodeWrapper,actionFn,optPassChildrenAsArray){return optPassChildrenAsArray?actionFn.call(nodeWrapper,nodeWrapper._children()):actionFn.apply(nodeWrapper,nodeWrapper._children())};function Attribute(name,actionDict){this.name=name;this.formals=[];this.actionDict=actionDict}inherits(Attribute,Operation);Attribute.prototype.typeName="attribute";Attribute.prototype.execute=function(semantics,nodeWrapper){var node=nodeWrapper._node;var key=semantics.attributeKeys[this.name];if(!node.hasOwnProperty(key)){node[key]=Operation.prototype.execute.call(this,semantics,nodeWrapper)}return node[key]};module.exports=Semantics},{"./MatchResult":31,"./common":37,"es6-symbol":4,inherits:22}],35:[function(require,module,exports){"use strict";var PosInfo=require("./PosInfo");var Trace=require("./Trace");var fsets=require("./fsets");var pexprs=require("./pexprs");var RM_RIGHTMOST_FAILURE_POSITION=0;var RM_RIGHTMOST_FAILURES=1;var applySpaces=new pexprs.Apply("spaces");function State(grammar,inputStream,startRule,opts){this.grammar=grammar;this.origInputStream=inputStream;this.startRule=startRule;this.tracingEnabled=opts.trace||false;this.matchNodes=opts.matchNodes||false;this.init(RM_RIGHTMOST_FAILURE_POSITION)}State.prototype={init:function(recordingMode){this.bindings=[];this.inputStreamStack=[];this.posInfosStack=[];this.pushInputStream(this.origInputStream);this.applicationStack=[];this.inLexifiedContextStack=[false];this.recordingMode=recordingMode;if(recordingMode===RM_RIGHTMOST_FAILURE_POSITION){this.rightmostFailurePosition=-1}else if(recordingMode===RM_RIGHTMOST_FAILURES){this.rightmostFailures=fsets.empty;this.tracingEnabled=false}else{throw new Error("invalid recording mode: "+recordingMode)}if(this.isTracing()){this.trace=[]}},enter:function(app){this.applicationStack.push(app);this.inLexifiedContextStack.push(false)},exit:function(){this.applicationStack.pop();this.inLexifiedContextStack.pop()},enterLexifiedContext:function(){this.inLexifiedContextStack.push(true)},exitLexifiedContext:function(){this.inLexifiedContextStack.pop()},currentApplication:function(){return this.applicationStack[this.applicationStack.length-1]},inSyntacticRule:function(){if(typeof this.inputStream.source!=="string"){return false}var currentApplication=this.currentApplication();return currentApplication&¤tApplication.isSyntactic()},inSyntacticContext:function(){return this.inSyntacticRule()&&!this.inLexifiedContext()},inLexifiedContext:function(){return this.inLexifiedContextStack[this.inLexifiedContextStack.length-1]},skipSpaces:function(){var origFailuresInfo=this.getFailuresInfo();this.eval(applySpaces);this.bindings.pop();this.restoreFailuresInfo(origFailuresInfo);return this.inputStream.pos},skipSpacesIfInSyntacticContext:function(){return this.inSyntacticContext()?this.skipSpaces():this.inputStream.pos},truncateBindings:function(newLength){while(this.bindings.length>newLength){this.bindings.pop()}},pushInputStream:function(inputStream){this.inputStreamStack.push(this.inputStream);this.posInfosStack.push(this.posInfos);this.inputStream=inputStream;this.posInfos=[]},popInputStream:function(){this.inputStream=this.inputStreamStack.pop();this.posInfos=this.posInfosStack.pop()},getCurrentPosInfo:function(){return this.getPosInfo(this.inputStream.pos)},getPosInfo:function(pos){var posInfo=this.posInfos[pos];return posInfo||(this.posInfos[pos]=new PosInfo(this))},processFailure:function(pos,expr){if(this.recordingMode===RM_RIGHTMOST_FAILURE_POSITION){if(pos>this.rightmostFailurePosition){this.rightmostFailurePosition=pos}}else{if(pos===this.rightmostFailurePosition&&!this.rightmostFailures.includes(expr)){this.rightmostFailures=new fsets.Singleton(expr).union(this.rightmostFailures)}}},getRightmostFailurePosition:function(){return this.rightmostFailurePosition},getFailures:function(){if(!this.rightmostFailures){this.init(RM_RIGHTMOST_FAILURES);this.eval(new pexprs.Apply(this.startRule))}return this.rightmostFailures.toFailuresArray(this.grammar)},getMemoizedTraceEntry:function(pos,expr){var posInfo=this.posInfos[pos];if(posInfo&&expr.ruleName){var memoRec=posInfo.memo[expr.toMemoKey()];if(memoRec){return memoRec.traceEntry}}return null},getTraceEntry:function(pos,expr,result){var entry=this.getMemoizedTraceEntry(pos,expr);if(!entry){entry=new Trace(this.inputStream,pos,expr,result,this.trace)}return entry},isTracing:function(){return this.tracingEnabled},useMemoizedResult:function(memoRec){if(this.isTracing()){this.trace.push(memoRec.traceEntry)}if(this.recordingMode===RM_RIGHTMOST_FAILURES){this.rightmostFailures=this.rightmostFailures.union(memoRec.failuresAtRightmostPosition)}if(memoRec.value){this.inputStream.pos=memoRec.pos;this.bindings.push(memoRec.value);return true}return false},eval:function(expr){var inputStream=this.inputStream;var origPos=inputStream.pos;var origNumBindings=this.bindings.length;if(this.recordingMode===RM_RIGHTMOST_FAILURES){var origFailures=this.rightmostFailures;this.rightmostFailures=fsets.empty}if(this.isTracing()){var origTrace=this.trace;this.trace=[]}var ans=expr.eval(this);if(this.isTracing()){var traceEntry=this.getTraceEntry(origPos,expr,ans);origTrace.push(traceEntry);this.trace=origTrace}if(ans){if(this.recordingMode===RM_RIGHTMOST_FAILURES&&inputStream.pos===this.rightmostFailurePosition){this.rightmostFailures=this.rightmostFailures.asFluffy()}}else{inputStream.pos=origPos;this.truncateBindings(origNumBindings)}if(this.recordingMode===RM_RIGHTMOST_FAILURES){this.rightmostFailures=origFailures.union(this.rightmostFailures)}return ans},getFailuresInfo:function(){if(this.recordingMode===RM_RIGHTMOST_FAILURE_POSITION){return this.rightmostFailurePosition}else{return this.rightmostFailures}},restoreFailuresInfo:function(failuresInfo){if(this.recordingMode===RM_RIGHTMOST_FAILURE_POSITION){this.rightmostFailurePosition=failuresInfo}else{this.rightmostFailures=failuresInfo}},applySpaces:applySpaces};module.exports=State},{"./PosInfo":33,"./Trace":36,"./fsets":39,"./pexprs":55}],36:[function(require,module,exports){"use strict";var Interval=require("./Interval");var common=require("./common");var BALLOT_X="✗";var CHECK_MARK="✓";var DOT_OPERATOR="⋅";var RIGHTWARDS_DOUBLE_ARROW="⇒";var SYMBOL_FOR_HORIZONTAL_TABULATION="␉";var SYMBOL_FOR_LINE_FEED="␊";var SYMBOL_FOR_CARRIAGE_RETURN="␍";function linkLeftRecursiveChildren(children){for(var i=0;i<children.length;++i){var child=children[i];var nextChild=children[i+1];if(nextChild&&child.expr===nextChild.expr){child.replacedBy=nextChild}}}function spaces(n){return common.repeat(" ",n).join("")}function getInputExcerpt(inputStream,pos,len){var excerpt=asEscapedString(inputStream.sourceSlice(pos,pos+len));if(excerpt.length<len){return excerpt+common.repeat(" ",len-excerpt.length).join("")}return excerpt}function asEscapedString(obj){if(typeof obj==="string"){return obj.replace(/ /g,DOT_OPERATOR).replace(/\t/g,SYMBOL_FOR_HORIZONTAL_TABULATION).replace(/\n/g,SYMBOL_FOR_LINE_FEED).replace(/\r/g,SYMBOL_FOR_CARRIAGE_RETURN)}return String(obj)}function Trace(inputStream,pos,expr,ans,optChildren){this.children=optChildren||[];this.expr=expr;if(ans){this.interval=new Interval(inputStream,pos,inputStream.pos)}this.isLeftRecursive=false;this.pos=pos;this.inputStream=inputStream;this.succeeded=!!ans}Trace.prototype.SKIP={};Object.defineProperty(Trace.prototype,"displayString",{get:function(){return this.expr.toDisplayString()}});Trace.prototype.setLeftRecursive=function(leftRecursive){this.isLeftRecursive=leftRecursive;if(leftRecursive){linkLeftRecursiveChildren(this.children)}};Trace.prototype.walk=function(visitorObjOrFn,optThisArg){var visitor=visitorObjOrFn;if(typeof visitor==="function"){visitor={enter:visitor}}return function _walk(node,parent,depth){var recurse=true;if(visitor.enter){if(visitor.enter.call(optThisArg,node,parent,depth)===Trace.prototype.SKIP){recurse=false}}if(recurse){node.children.forEach(function(c){if(c&&"walk"in c){_walk(c,node,depth+1)}});if(visitor.exit){visitor.exit.call(optThisArg,node,parent,depth)}}}(this,null,0)};Trace.prototype.toString=function(){var sb=new common.StringBuffer;this.walk(function(node,parent,depth){var ctorName=node.expr.constructor.name;if(ctorName==="Alt"){return}sb.append(getInputExcerpt(node.inputStream,node.pos,10)+spaces(depth*2+1));sb.append((node.succeeded?CHECK_MARK:BALLOT_X)+" "+node.displayString);if(node.isLeftRecursive){sb.append(" (LR)")}if(node.succeeded){var contents=asEscapedString(node.interval.contents);sb.append(" "+RIGHTWARDS_DOUBLE_ARROW+" ");sb.append(typeof contents==="string"?'"'+contents+'"':contents)}sb.append("\n")});return sb.contents()};module.exports=Trace},{"./Interval":30,"./common":37}],37:[function(require,module,exports){"use strict";var extend=require("util-extend");var escapeStringFor={};for(var c=0;c<128;c++){escapeStringFor[c]=String.fromCharCode(c)}escapeStringFor["'".charCodeAt(0)]="\\'";escapeStringFor['"'.charCodeAt(0)]='\\"';escapeStringFor["\\".charCodeAt(0)]="\\\\";escapeStringFor["\b".charCodeAt(0)]="\\b";escapeStringFor["\f".charCodeAt(0)]="\\f";escapeStringFor["\n".charCodeAt(0)]="\\n";escapeStringFor["\r".charCodeAt(0)]="\\r";escapeStringFor[" ".charCodeAt(0)]="\\t";escapeStringFor["\x0B".charCodeAt(0)]="\\v";exports.abstract=function(){throw new Error("this method is abstract! "+"(it has no implementation in class "+this.constructor.name+")")};exports.assert=function(cond,message){if(!cond){throw new Error(message)}};exports.defineLazyProperty=function(obj,propName,getterFn){var memo;Object.defineProperty(obj,propName,{get:function(){if(!memo){memo=getterFn.call(this)}return memo}})};exports.clone=function(obj){if(obj){return extend({},obj)}return obj};exports.extend=extend;exports.repeatFn=function(fn,n){var arr=[];while(n-- >0){arr.push(fn())}return arr};exports.repeatStr=function(str,n){return new Array(n+1).join(str)};exports.repeat=function(x,n){return exports.repeatFn(function(){return x},n)};exports.getDuplicates=function(array){var duplicates=[];for(var idx=0;idx<array.length;idx++){var x=array[idx];if(array.lastIndexOf(x)!==idx&&duplicates.indexOf(x)<0){duplicates.push(x)}}return duplicates};exports.fail={};exports.isSyntactic=function(ruleName){var firstChar=ruleName[0];return firstChar===firstChar.toUpperCase()};exports.isLexical=function(ruleName){return!exports.isSyntactic(ruleName)};exports.padLeft=function(str,len,optChar){var ch=optChar||" ";if(str.length<len){return exports.repeatStr(ch,len-str.length)+str}return str};exports.StringBuffer=function(){this.strings=[]};exports.StringBuffer.prototype.append=function(str){this.strings.push(str)};exports.StringBuffer.prototype.contents=function(){return this.strings.join("")};exports.escapeChar=function(c,optDelim){var charCode=c.charCodeAt(0);if((c==='"'||c==="'")&&optDelim&&c!==optDelim){return c}else if(charCode<128){return escapeStringFor[charCode]}else if(128<=charCode&&charCode<256){return"\\x"+exports.padLeft(charCode.toString(16),2,"0")}else{return"\\u"+exports.padLeft(charCode.toString(16),4,"0")}};exports.unescapeChar=function(s){if(s.charAt(0)==="\\"){switch(s.charAt(1)){case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return" ";case"v":return"\x0B";case"x":return String.fromCharCode(parseInt(s.substring(2,4),16));case"u":return String.fromCharCode(parseInt(s.substring(2,6),16));default:return s.charAt(1)}}else{return s}};exports.unexpectedObjToString=function(obj){if(obj==null){return String(obj)}var baseToString=Object.prototype.toString.call(obj);try{var typeName;if(obj.constructor&&obj.constructor.name){typeName=obj.constructor.name}else if(baseToString.indexOf("[object ")===0){typeName=baseToString.slice(8,-1)}else{typeName=typeof obj}return typeName+": "+JSON.stringify(String(obj))}catch(e){return baseToString}}},{"util-extend":24}],38:[function(require,module,exports){"use strict";var Namespace=require("./Namespace");function createError(message,optInterval){var e;if(optInterval){e=new Error(optInterval.getLineAndColumnMessage()+message);e.shortMessage=message;e.interval=optInterval}else{e=new Error(message)}return e}function intervalSourcesDontMatch(){return createError("Interval sources don't match")}function grammarSyntaxError(matchFailure){var e=new Error;Object.defineProperty(e,"message",{get:function(){return matchFailure.message}});Object.defineProperty(e,"shortMessage",{get:function(){return"Expected "+matchFailure.getExpectedText()}});e.interval=matchFailure.getInterval();return e}function undeclaredGrammar(grammarName,namespace,interval){var message=namespace?"Grammar "+grammarName+" is not declared in namespace "+Namespace.toString(namespace):"Undeclared grammar "+grammarName;return createError(message,interval)}function duplicateGrammarDeclaration(grammar,namespace){return createError("Grammar "+grammar.name+" is already declared in this namespace")}function undeclaredRule(ruleName,grammarName,optInterval){return createError("Rule "+ruleName+" is not declared in grammar "+grammarName,optInterval)}function cannotOverrideUndeclaredRule(ruleName,grammarName,body){return createError("Cannot override rule "+ruleName+" because it is not declared in "+grammarName,body.definitionInterval)}function cannotExtendUndeclaredRule(ruleName,grammarName,body){return createError("Cannot extend rule "+ruleName+" because it is not declared in "+grammarName,body.definitionInterval)}function duplicateRuleDeclaration(ruleName,offendingGrammarName,declGrammarName,body){var message="Duplicate declaration for rule '"+ruleName+"' in grammar '"+offendingGrammarName+"'";if(offendingGrammarName!==declGrammarName){message+=" (originally declared in '"+declGrammarName+"')"}return createError(message,body.definitionInterval)}function wrongNumberOfParameters(ruleName,expected,actual,body){return createError("Wrong number of parameters for rule "+ruleName+" (expected "+expected+", got "+actual+")",body.definitionInterval)}function duplicateParameterNames(ruleName,duplicates,body){
return createError("Duplicate parameter names in rule "+ruleName+": "+duplicates.join(","),body.definitionInterval)}function invalidParameter(ruleName,expr){return createError("Invalid parameter to rule "+ruleName+": "+expr+" has arity "+expr.getArity()+", but parameter expressions "+"must have arity 1",expr.interval)}function applicationOfSyntacticRuleFromLexicalContext(ruleName,applyExpr){return createError("Cannot apply syntactic rule "+ruleName+" from here (inside a lexical context)",applyExpr.interval)}function kleeneExprHasNullableOperand(kleeneExpr){return createError("Nullable expression "+kleeneExpr.expr.interval.contents+" is not allowed inside '"+kleeneExpr.operator+"' (possible infinite loop)",kleeneExpr.expr.interval)}function inconsistentArity(ruleName,expected,actual,expr){return createError("Rule "+ruleName+" involves an alternation which has inconsistent arity "+"(expected "+expected+", got "+actual+")",expr.interval)}function duplicatePropertyNames(duplicates){return createError("Object pattern has duplicate property names: "+duplicates.join(", "))}function invalidConstructorCall(grammar,ctorName,children){return createError("Attempt to invoke constructor "+ctorName+" with invalid or unexpected arguments")}function multipleErrors(errors){var messages=errors.map(function(e){return e.message});return createError(["Errors:"].concat(messages).join("\n- "),errors[0].interval)}module.exports={applicationOfSyntacticRuleFromLexicalContext:applicationOfSyntacticRuleFromLexicalContext,cannotExtendUndeclaredRule:cannotExtendUndeclaredRule,cannotOverrideUndeclaredRule:cannotOverrideUndeclaredRule,duplicateGrammarDeclaration:duplicateGrammarDeclaration,duplicateParameterNames:duplicateParameterNames,duplicatePropertyNames:duplicatePropertyNames,duplicateRuleDeclaration:duplicateRuleDeclaration,inconsistentArity:inconsistentArity,intervalSourcesDontMatch:intervalSourcesDontMatch,invalidConstructorCall:invalidConstructorCall,invalidParameter:invalidParameter,grammarSyntaxError:grammarSyntaxError,kleeneExprHasNullableOperand:kleeneExprHasNullableOperand,undeclaredGrammar:undeclaredGrammar,undeclaredRule:undeclaredRule,wrongNumberOfParameters:wrongNumberOfParameters,throwErrors:function(errors){if(errors.length===1){throw errors[0]}if(errors.length>1){throw multipleErrors(errors)}}}},{"./Namespace":32}],39:[function(require,module,exports){"use strict";var empty;function FSet(){}FSet.prototype.asFluffy=function(){return new Fluffy(this)};FSet.prototype.union=function(fs){return fs===empty?this:new Union(fs,this)};empty=new FSet;empty.union=function(fs){return fs};empty.includes=function(pexpr){return false};empty.asFluffy=function(){return this};empty.isFluffy=function(pexpr){throw new Error("uh-oh")};empty.toFailuresArray=function(grammar){return[]};function Singleton(pexpr){this.pexpr=pexpr}Singleton.prototype=Object.create(FSet.prototype);Singleton.prototype.includes=function(pexpr){return pexpr===this.pexpr};Singleton.prototype.isFluffy=function(pexpr){return false};Singleton.prototype.toFailuresArray=function(grammar){return[this.pexpr.toFailure(grammar)]};function Fluffy(fs){this.fs=fs}Fluffy.prototype=Object.create(FSet.prototype);Fluffy.prototype.includes=function(pexpr){return this.fs.includes(pexpr)};Fluffy.prototype.asFluffy=function(){return this};Fluffy.prototype.isFluffy=function(pexpr){return true};Fluffy.prototype.toFailuresArray=function(grammar){var fs=this.fs.toFailuresArray(grammar);fs.forEach(function(f){f.makeFluffy()});return fs};function Union(fs1,fs2){this.fs1=fs1;this.fs2=fs2}Union.prototype=Object.create(FSet.prototype);Union.prototype.includes=function(pexpr){return this.fs1.includes(pexpr)||this.fs2.includes(pexpr)};Union.prototype.isFluffy=function(pexpr){return!(this.fs1.includes(pexpr)&&!this.fs1.isFluffy(pexpr)||this.fs2.includes(pexpr)&&!this.fs2.isFluffy(pexpr))};Union.prototype.toFailuresArray=function(grammar){var arr=this.fs1.toFailuresArray(grammar);var fs=this.fs2.toFailuresArray(grammar);fs.forEach(function(f){for(var idx=0;idx<arr.length;idx++){var otherF=arr[idx];if(f.subsumes(otherF)){arr[idx]=f;return}if(otherF.subsumes(f)){return}}arr.push(f)});return arr};exports.empty=empty;exports.Singleton=Singleton},{}],40:[function(require,module,exports){"use strict";var Builder=require("./Builder");var Grammar=require("./Grammar");var Namespace=require("./Namespace");var common=require("./common");var errors=require("./errors");var util=require("./util");var isBuffer=require("is-buffer");var ohmGrammar;var documentInterface={querySelector:function(sel){return document.querySelector(sel)},querySelectorAll:function(sel){return document.querySelectorAll(sel)}};function isElement(obj){return!!(obj&&obj.nodeType===1)}function isUndefined(obj){return obj===void 0}var MAX_ARRAY_INDEX=Math.pow(2,53)-1;function isArrayLike(obj){if(obj==null){return false}var length=obj.length;return typeof length==="number"&&length>=0&&length<=MAX_ARRAY_INDEX}function load(url){var req=new XMLHttpRequest;req.open("GET",url,false);try{req.send();if(req.status===0||req.status===200){return req.responseText}}catch(e){}throw new Error("unable to load url "+url)}function buildGrammar(match,namespace,optOhmGrammarForTesting){var builder;var decl;var currentRuleName;var currentRuleFormals;var overriding=false;var metaGrammar=optOhmGrammarForTesting||ohmGrammar;var helpers=metaGrammar.semantics().addOperation("visit",{Grammar:function(n,s,open,rs,close){builder=new Builder;var grammarName=n.visit();decl=builder.newGrammar(grammarName,namespace);s.visit();rs.visit();var g=decl.build();g.definitionInterval=this.interval.trimmed();if(grammarName in namespace){throw errors.duplicateGrammarDeclaration(g,namespace)}namespace[grammarName]=g;return g},SuperGrammar:function(_,n){var superGrammarName=n.visit();if(superGrammarName==="null"){decl.withSuperGrammar(null)}else{if(!namespace||!(superGrammarName in namespace)){throw errors.undeclaredGrammar(superGrammarName,namespace,n.interval)}decl.withSuperGrammar(namespace[superGrammarName])}},Rule_define:function(n,fs,d,_,b){currentRuleName=n.visit();currentRuleFormals=fs.visit()[0]||[];if(!decl.defaultStartRule&&decl.ensureSuperGrammar()!==Grammar.ProtoBuiltInRules){decl.withDefaultStartRule(currentRuleName)}var body=b.visit();body.definitionInterval=this.interval.trimmed();var description=d.visit()[0];return decl.define(currentRuleName,currentRuleFormals,body,description)},Rule_override:function(n,fs,_,b){currentRuleName=n.visit();currentRuleFormals=fs.visit()[0]||[];overriding=true;var body=b.visit();body.definitionInterval=this.interval.trimmed();var ans=decl.override(currentRuleName,currentRuleFormals,body);overriding=false;return ans},Rule_extend:function(n,fs,_,b){currentRuleName=n.visit();currentRuleFormals=fs.visit()[0]||[];var body=b.visit();var ans=decl.extend(currentRuleName,currentRuleFormals,body);decl.ruleBodies[currentRuleName].definitionInterval=this.interval.trimmed();return ans},Formals:function(opointy,fs,cpointy){return fs.visit()},Params:function(opointy,ps,cpointy){return ps.visit()},Alt:function(term,_,terms){var args=[term.visit()].concat(terms.visit());return builder.alt.apply(builder,args).withInterval(this.interval)},Term_inline:function(b,n){var inlineRuleName=currentRuleName+"_"+n.visit();var body=b.visit();body.definitionInterval=this.interval.trimmed();var isNewRuleDeclaration=!(decl.superGrammar&&decl.superGrammar.ruleBodies[inlineRuleName]);if(overriding&&!isNewRuleDeclaration){decl.override(inlineRuleName,currentRuleFormals,body)}else{decl.define(inlineRuleName,currentRuleFormals,body)}var params=currentRuleFormals.map(function(formal){return builder.app(formal)});return builder.app(inlineRuleName,params).withInterval(body.interval)},Seq:function(expr){return builder.seq.apply(builder,expr.visit()).withInterval(this.interval)},Iter_star:function(x,_){return builder.star(x.visit()).withInterval(this.interval)},Iter_plus:function(x,_){return builder.plus(x.visit()).withInterval(this.interval)},Iter_opt:function(x,_){return builder.opt(x.visit()).withInterval(this.interval)},Pred_not:function(_,x){return builder.not(x.visit()).withInterval(this.interval)},Pred_lookahead:function(_,x){return builder.la(x.visit()).withInterval(this.interval)},Lex_lex:function(_,x){return builder.lex(x.visit()).withInterval(this.interval)},Base_application:function(rule,ps){return builder.app(rule.visit(),ps.visit()[0]||[]).withInterval(this.interval)},Base_range:function(from,_,to){return builder.range(from.visit(),to.visit()).withInterval(this.interval)},Base_prim:function(expr){return builder.prim(expr.visit()).withInterval(this.interval)},Base_paren:function(open,x,close){return x.visit()},Base_arr:function(open,x,close){return builder.arr(x.visit()).withInterval(this.interval)},Base_str:function(open,x,close){return builder.str(x.visit())},Base_obj:function(open,lenient,close){return builder.obj([],lenient.visit()[0])},Base_objWithProps:function(open,ps,_,lenient,close){return builder.obj(ps.visit(),lenient.visit()[0]).withInterval(this.interval)},Props:function(p,_,ps){return[p.visit()].concat(ps.visit())},Prop:function(n,_,p){return{name:n.visit(),pattern:p.visit()}},ruleDescr:function(open,t,close){return t.visit()},ruleDescrText:function(_){return this.interval.contents.trim()},caseName:function(_,space1,n,space2,end){return n.visit()},name:function(first,rest){return this.interval.contents},nameFirst:function(expr){},nameRest:function(expr){},keyword_null:function(_){return null},keyword_true:function(_){return true},keyword_false:function(_){return false},string:function(open,cs,close){return cs.visit().map(function(c){return common.unescapeChar(c)}).join("")},strChar:function(_){return this.interval.contents},escapeChar:function(_){return this.interval.contents},number:function(_,digits){return parseInt(this.interval.contents)},NonemptyListOf:function(x,_,xs){return[x.visit()].concat(xs.visit())},EmptyListOf:function(){return[]}});return helpers(match).visit()}function compileAndLoad(source,namespace){var m=ohmGrammar.match(source,"Grammars");if(m.failed()){throw errors.grammarSyntaxError(m)}return buildGrammar(m,namespace)}function getScriptElementContents(el){if(!isElement(el)){throw new TypeError("Expected a DOM Node, got "+common.unexpectedObjToString(el))}if(el.type!=="text/ohm-js"){throw new Error('Expected a script tag with type="text/ohm-js", got '+el)}return el.getAttribute("src")?load(el.getAttribute("src")):el.innerHTML}function grammar(source,optNamespace){var ns=grammars(source,optNamespace);var grammarNames=Object.keys(ns);if(grammarNames.length===0){throw new Error("Missing grammar definition")}else if(grammarNames.length>1){var secondGrammar=ns[grammarNames[1]];var interval=secondGrammar.definitionInterval;throw new Error(util.getLineAndColumnMessage(interval.inputStream.source,interval.startIdx)+"Found more than one grammar definition -- use ohm.grammars() instead.")}return ns[grammarNames[0]]}function grammars(source,optNamespace){var ns=Namespace.extend(Namespace.asNamespace(optNamespace));if(typeof source!=="string"){if(isBuffer(source)){source=source.toString()}else{throw new TypeError("Expected string as first argument, got "+common.unexpectedObjToString(source))}}compileAndLoad(source,ns);return ns}function grammarFromScriptElement(optNode){var node=optNode;if(isUndefined(node)){var nodeList=documentInterface.querySelectorAll('script[type="text/ohm-js"]');if(nodeList.length!==1){throw new Error('Expected exactly one script tag with type="text/ohm-js", found '+nodeList.length)}node=nodeList[0]}return grammar(getScriptElementContents(node))}function grammarsFromScriptElements(optNodeOrNodeList){if(isElement(optNodeOrNodeList)){return grammars(optNodeOrNodeList)}var nodeList=optNodeOrNodeList;if(isUndefined(nodeList)){nodeList=documentInterface.querySelectorAll('script[type="text/ohm-js"]')}else if(typeof nodeList==="string"||!isElement(nodeList)&&!isArrayLike(nodeList)){throw new TypeError("Expected a Node, NodeList, or Array, but got "+nodeList)}var ns=Namespace.createNamespace();for(var i=0;i<nodeList.length;++i){common.extend(ns,grammars(getScriptElementContents(nodeList[i]),ns))}return ns}function makeRecipe(recipeFn){return recipeFn.call(new Builder)}module.exports={createNamespace:Namespace.createNamespace,grammar:grammar,grammars:grammars,grammarFromScriptElement:grammarFromScriptElement,grammarsFromScriptElements:grammarsFromScriptElements,makeRecipe:makeRecipe,util:util};Grammar.BuiltInRules=require("../dist/built-in-rules");var Semantics=require("./Semantics");var operationsAndAttributesGrammar=require("../dist/operations-and-attributes");Semantics.initPrototypeParser(operationsAndAttributesGrammar);ohmGrammar=require("../dist/ohm-grammar");module.exports._buildGrammar=buildGrammar;module.exports._setDocumentInterfaceForTesting=function(doc){documentInterface=doc};module.exports.ohmGrammar=ohmGrammar},{"../dist/built-in-rules":1,"../dist/ohm-grammar":2,"../dist/operations-and-attributes":3,"./Builder":25,"./Grammar":27,"./Namespace":32,"./Semantics":34,"./common":37,"./errors":38,"./util":56,"is-buffer":23}],41:[function(require,module,exports){"use strict";var inherits=require("inherits");var common=require("./common");function Node(grammar,ctorName,children,interval){this.grammar=grammar;this.ctorName=ctorName;this.children=children;this.interval=interval}Node.prototype.numChildren=function(){return this.children.length};Node.prototype.childAt=function(idx){return this.children[idx]};Node.prototype.indexOfChild=function(arg){return this.children.indexOf(arg)};Node.prototype.hasChildren=function(){return this.children.length>0};Node.prototype.hasNoChildren=function(){return!this.hasChildren()};Node.prototype.onlyChild=function(){if(this.children.length!==1){throw new Error("cannot get only child of a node of type "+this.ctorName+" (it has "+this.numChildren()+" children)")}else{return this.firstChild()}};Node.prototype.firstChild=function(){if(this.hasNoChildren()){throw new Error("cannot get first child of a "+this.ctorName+" node, which has no children")}else{return this.childAt(0)}};Node.prototype.lastChild=function(){if(this.hasNoChildren()){throw new Error("cannot get last child of a "+this.ctorName+" node, which has no children")}else{return this.childAt(this.numChildren()-1)}};Node.prototype.childBefore=function(child){var childIdx=this.indexOfChild(child);if(childIdx<0){throw new Error("Node.childBefore() called w/ an argument that is not a child")}else if(childIdx===0){throw new Error("cannot get child before first child")}else{return this.childAt(childIdx-1)}};Node.prototype.childAfter=function(child){var childIdx=this.indexOfChild(child);if(childIdx<0){throw new Error("Node.childAfter() called w/ an argument that is not a child")}else if(childIdx===this.numChildren()-1){throw new Error("cannot get child after last child")}else{return this.childAt(childIdx+1)}};Node.prototype.isTerminal=function(){return false};Node.prototype.isNonterminal=function(){return false};Node.prototype.isIteration=function(){return false};Node.prototype.isOptional=function(){return false};Node.prototype.toJSON=function(){var r={};r[this.ctorName]=this.children;return r};function TerminalNode(grammar,value,interval){Node.call(this,grammar,"_terminal",[],interval);this.primitiveValue=value}inherits(TerminalNode,Node);TerminalNode.prototype.isTerminal=function(){return true};function NonterminalNode(grammar,ruleName,children,interval){Node.call(this,grammar,ruleName,children,interval)}inherits(NonterminalNode,Node);NonterminalNode.prototype.isNonterminal=function(){return true};NonterminalNode.prototype.isLexical=function(){return common.isLexical(this.ctorName)};NonterminalNode.prototype.isSyntactic=function(){return common.isSyntactic(this.ctorName)};function IterationNode(grammar,children,interval,optional){Node.call(this,grammar,"_iter",children,interval);this.optional=optional}inherits(IterationNode,Node);IterationNode.prototype.isIteration=function(){return true};IterationNode.prototype.isOptional=function(){return this.optional};module.exports={Node:Node,TerminalNode:TerminalNode,NonterminalNode:NonterminalNode,IterationNode:IterationNode}},{"./common":37,inherits:22}],42:[function(require,module,exports){"use strict";var common=require("./common");var errors=require("./errors");var pexprs=require("./pexprs");var lexifyCount;pexprs.PExpr.prototype.assertAllApplicationsAreValid=function(ruleName,grammar){lexifyCount=0;this._assertAllApplicationsAreValid(ruleName,grammar)};pexprs.PExpr.prototype._assertAllApplicationsAreValid=common.abstract;pexprs.any._assertAllApplicationsAreValid=pexprs.end._assertAllApplicationsAreValid=pexprs.Prim.prototype._assertAllApplicationsAreValid=pexprs.Range.prototype._assertAllApplicationsAreValid=pexprs.Param.prototype._assertAllApplicationsAreValid=pexprs.TypeCheck.prototype._assertAllApplicationsAreValid=pexprs.UnicodeChar.prototype._assertAllApplicationsAreValid=function(ruleName,grammar){};pexprs.Lex.prototype._assertAllApplicationsAreValid=function(ruleName,grammar){lexifyCount++;this.expr._assertAllApplicationsAreValid(ruleName,grammar);lexifyCount--};pexprs.Alt.prototype._assertAllApplicationsAreValid=function(ruleName,grammar){for(var idx=0;idx<this.terms.length;idx++){this.terms[idx]._assertAllApplicationsAreValid(ruleName,grammar)}};pexprs.Seq.prototype._assertAllApplicationsAreValid=function(ruleName,grammar){for(var idx=0;idx<this.factors.length;idx++){this.factors[idx]._assertAllApplicationsAreValid(ruleName,grammar)}};pexprs.Iter.prototype._assertAllApplicationsAreValid=pexprs.Not.prototype._assertAllApplicationsAreValid=pexprs.Lookahead.prototype._assertAllApplicationsAreValid=pexprs.Arr.prototype._assertAllApplicationsAreValid=pexprs.Str.prototype._assertAllApplicationsAreValid=function(ruleName,grammar){this.expr._assertAllApplicationsAreValid(ruleName,grammar)};pexprs.Obj.prototype._assertAllApplicationsAreValid=function(ruleName,grammar){for(var idx=0;idx<this.properties.length;idx++){this.properties[idx].pattern._assertAllApplicationsAreValid(ruleName,grammar)}};pexprs.Apply.prototype._assertAllApplicationsAreValid=function(ruleName,grammar){var body=grammar.ruleBodies[this.ruleName];if(!body){throw errors.undeclaredRule(this.ruleName,grammar.name,this.interval)}if(common.isSyntactic(this.ruleName)&&(!common.isSyntactic(ruleName)||lexifyCount>0)){throw errors.applicationOfSyntacticRuleFromLexicalContext(this.ruleName,this)}var actual=this.params.length;var expected=grammar.ruleFormals[this.ruleName].length;if(actual!==expected){throw errors.wrongNumberOfParameters(this.ruleName,expected,actual,this)}var self=this;this.params.forEach(function(param){param._assertAllApplicationsAreValid(ruleName,grammar);if(param.getArity()!==1){throw errors.invalidParameter(self.ruleName,param)}})}},{"./common":37,"./errors":38,"./pexprs":55}],43:[function(require,module,exports){"use strict";var common=require("./common");var errors=require("./errors");var pexprs=require("./pexprs");pexprs.PExpr.prototype.assertChoicesHaveUniformArity=common.abstract;pexprs.any.assertChoicesHaveUniformArity=pexprs.end.assertChoicesHaveUniformArity=pexprs.Prim.prototype.assertChoicesHaveUniformArity=pexprs.Range.prototype.assertChoicesHaveUniformArity=pexprs.Param.prototype.assertChoicesHaveUniformArity=pexprs.Lex.prototype.assertChoicesHaveUniformArity=pexprs.TypeCheck.prototype.assertChoicesHaveUniformArity=pexprs.UnicodeChar.prototype.assertChoicesHaveUniformArity=function(ruleName){};pexprs.Alt.prototype.assertChoicesHaveUniformArity=function(ruleName){if(this.terms.length===0){return}var arity=this.terms[0].getArity();for(var idx=0;idx<this.terms.length;idx++){var term=this.terms[idx];term.assertChoicesHaveUniformArity();var otherArity=term.getArity();if(arity!==otherArity){throw errors.inconsistentArity(ruleName,arity,otherArity,this)}}};pexprs.Extend.prototype.assertChoicesHaveUniformArity=function(ruleName){var actualArity=this.terms[0].getArity();var expectedArity=this.terms[1].getArity();if(actualArity!==expectedArity){throw errors.inconsistentArity(ruleName,expectedArity,actualArity,this)}};pexprs.Seq.prototype.assertChoicesHaveUniformArity=function(ruleName){for(var idx=0;idx<this.factors.length;idx++){this.factors[idx].assertChoicesHaveUniformArity(ruleName)}};pexprs.Iter.prototype.assertChoicesHaveUniformArity=function(ruleName){this.expr.assertChoicesHaveUniformArity(ruleName)};pexprs.Not.prototype.assertChoicesHaveUniformArity=function(ruleName){};pexprs.Lookahead.prototype.assertChoicesHaveUniformArity=pexprs.Arr.prototype.assertChoicesHaveUniformArity=pexprs.Str.prototype.assertChoicesHaveUniformArity=function(ruleName){this.expr.assertChoicesHaveUniformArity(ruleName)};pexprs.Obj.prototype.assertChoicesHaveUniformArity=function(ruleName){for(var idx=0;idx<this.properties.length;idx++){this.properties[idx].pattern.assertChoicesHaveUniformArity(ruleName)}};pexprs.Apply.prototype.assertChoicesHaveUniformArity=function(ruleName){}},{"./common":37,"./errors":38,"./pexprs":55}],44:[function(require,module,exports){"use strict";var common=require("./common");var errors=require("./errors");var pexprs=require("./pexprs");pexprs.PExpr.prototype.assertIteratedExprsAreNotNullable=common.abstract;pexprs.any.assertIteratedExprsAreNotNullable=pexprs.end.assertIteratedExprsAreNotNullable=pexprs.Prim.prototype.assertIteratedExprsAreNotNullable=pexprs.Prim.prototype.assertIteratedExprsAreNotNullable=pexprs.Range.prototype.assertIteratedExprsAreNotNullable=pexprs.Param.prototype.assertIteratedExprsAreNotNullable=pexprs.TypeCheck.prototype.assertIteratedExprsAreNotNullable=pexprs.UnicodeChar.prototype.assertIteratedExprsAreNotNullable=function(grammar,ruleName){};pexprs.Alt.prototype.assertIteratedExprsAreNotNullable=function(grammar,ruleName){for(var idx=0;idx<this.terms.length;idx++){this.terms[idx].assertIteratedExprsAreNotNullable(grammar,ruleName)}};pexprs.Seq.prototype.assertIteratedExprsAreNotNullable=function(grammar,ruleName){for(var idx=0;idx<this.factors.length;idx++){this.factors[idx].assertIteratedExprsAreNotNullable(grammar,ruleName)}};pexprs.Iter.prototype.assertIteratedExprsAreNotNullable=function(grammar,ruleName){this.expr.assertIteratedExprsAreNotNullable(grammar,ruleName);if(this.expr.isNullable(grammar)){throw errors.kleeneExprHasNullableOperand(this,ruleName)}};pexprs.Opt.prototype.assertIteratedExprsAreNotNullable=pexprs.Not.prototype.assertIteratedExprsAreNotNullable=pexprs.Lookahead.prototype.assertIteratedExprsAreNotNullable=pexprs.Lex.prototype.assertIteratedExprsAreNotNullable=pexprs.Arr.prototype.assertIteratedExprsAreNotNullable=pexprs.Str.prototype.assertIteratedExprsAreNotNullable=function(grammar,ruleName){this.expr.assertIteratedExprsAreNotNullable(grammar,ruleName)};pexprs.Obj.prototype.assertIteratedExprsAreNotNullable=function(grammar,ruleName){for(var idx=0;idx<this.properties.length;idx++){this.properties[idx].pattern.assertIteratedExprsAreNotNullable(grammar,ruleName)}};pexprs.Apply.prototype.assertIteratedExprsAreNotNullable=function(grammar,ruleName){this.params.forEach(function(param){param.assertIteratedExprsAreNotNullable(grammar,ruleName)})}},{"./common":37,"./errors":38,"./pexprs":55}],45:[function(require,module,exports){"use strict";var common=require("./common");var nodes=require("./nodes");var pexprs=require("./pexprs");pexprs.PExpr.prototype.check=common.abstract;pexprs.any.check=function(grammar,vals){return vals.length>=1};pexprs.end.check=function(grammar,vals){return vals[0]instanceof nodes.Node&&vals[0].isTerminal()&&vals[0].primitiveValue===undefined};pexprs.Prim.prototype.check=function(grammar,vals){return vals[0]instanceof nodes.Node&&vals[0].isTerminal()&&vals[0].primitiveValue===this.obj};pexprs.Range.prototype.check=function(grammar,vals){return vals[0]instanceof nodes.Node&&vals[0].isTerminal()&&typeof vals[0].primitiveValue===typeof this.from};pexprs.Param.prototype.check=function(grammar,vals){return vals.length>=1};pexprs.Alt.prototype.check=function(grammar,vals){for(var i=0;i<this.terms.length;i++){var term=this.terms[i];if(term.check(grammar,vals)){return true}}return false};pexprs.Seq.prototype.check=function(grammar,vals){var pos=0;for(var i=0;i<this.factors.length;i++){var factor=this.factors[i];if(factor.check(grammar,vals.slice(pos))){pos+=factor.getArity()}else{return false}}return true};pexprs.Iter.prototype.check=function(grammar,vals){var arity=this.getArity();var columns=vals.slice(0,arity);if(columns.length!==arity){return false}var rowCount=columns[0].length;var i;for(i=1;i<arity;i++){if(columns[i].length!==rowCount){return false}}for(i=0;i<rowCount;i++){var row=[];for(var j=0;j<arity;j++){row.push(columns[j][i])}if(!this.expr.check(grammar,row)){return false}}return true};pexprs.Not.prototype.check=function(grammar,vals){return true};pexprs.Lookahead.prototype.check=pexprs.Lex.prototype.check=pexprs.Arr.prototype.check=pexprs.Str.prototype.check=function(grammar,vals){return this.expr.check(grammar,vals)};pexprs.Obj.prototype.check=function(grammar,vals){var fixedArity=this.getArity();if(this.isLenient){fixedArity--}var pos=0;for(var i=0;i<fixedArity;i++){var pattern=this.properties[i].pattern;if(pattern.check(grammar,vals.slice(pos))){pos+=pattern.getArity()}else{return false}}return this.isLenient?typeof vals[pos]==="object"&&vals[pos]:true};pexprs.Apply.prototype.check=function(grammar,vals){if(!(vals[0]instanceof nodes.Node&&vals[0].grammar===grammar&&vals[0].ctorName===this.ruleName)){return false}var ruleNode=vals[0];var body=grammar.ruleBodies[this.ruleName];return body.check(grammar,ruleNode.children)&&ruleNode.numChildren()===body.getArity()};pexprs.UnicodeChar.prototype.check=function(grammar,vals){return vals[0]instanceof nodes.Node&&vals[0].isTerminal()&&typeof vals[0].primitiveValue==="string"};pexprs.TypeCheck.prototype.check=function(grammar,vals){return vals[0]instanceof nodes.Node&&typeof vals[0].primitiveValue===this.type}},{"./common":37,"./nodes":41,"./pexprs":55}],46:[function(require,module,exports){"use strict";var InputStream=require("./InputStream");var Trace=require("./Trace");var common=require("./common");var fsets=require("./fsets");var nodes=require("./nodes");var pexprs=require("./pexprs");var TerminalNode=nodes.TerminalNode;var NonterminalNode=nodes.NonterminalNode;var IterationNode=nodes.IterationNode;var hasOwnProp=Object.prototype.hasOwnProperty;pexprs.PExpr.prototype.eval=common.abstract;pexprs.any.eval=function(state){var origPos=state.skipSpacesIfInSyntacticContext();var inputStream=state.inputStream;var value=inputStream.next();if(value===common.fail){state.processFailure(origPos,this);return false}else{var interval=inputStream.interval(origPos);state.bindings.push(new TerminalNode(state.grammar,value,interval));return true}};pexprs.end.eval=function(state){var origPos=state.skipSpacesIfInSyntacticContext();var inputStream=state.inputStream;if(inputStream.atEnd()){var interval=inputStream.interval(inputStream.pos);state.bindings.push(new TerminalNode(state.grammar,undefined,interval));return true}else{state.processFailure(origPos,this);return false}};pexprs.Prim.prototype.eval=function(state){var origPos=state.skipSpacesIfInSyntacticContext();var inputStream=state.inputStream;if(this.match(inputStream)===common.fail){state.processFailure(origPos,this);return false}else{var interval=inputStream.interval(origPos);var primitiveValue=this.obj;state.bindings.push(new TerminalNode(state.grammar,primitiveValue,interval));return true}};pexprs.Prim.prototype.match=function(inputStream){return typeof this.obj==="string"?inputStream.matchString(this.obj):inputStream.matchExactly(this.obj)};pexprs.Range.prototype.eval=function(state){var origPos=state.skipSpacesIfInSyntacticContext();var inputStream=state.inputStream;var obj=inputStream.next();if(typeof obj===typeof this.from&&this.from<=obj&&obj<=this.to){var interval=inputStream.interval(origPos);state.bindings.push(new TerminalNode(state.grammar,obj,interval));return true}else{state.processFailure(origPos,this);return false}};pexprs.Param.prototype.eval=function(state){return state.eval(state.currentApplication().params[this.index])};pexprs.Lex.prototype.eval=function(state){state.enterLexifiedContext();var ans=state.eval(this.expr);state.exitLexifiedContext();return ans};pexprs.Alt.prototype.eval=function(state){for(var idx=0;idx<this.terms.length;idx++){if(state.eval(this.terms[idx])){return true}}return false};pexprs.Seq.prototype.eval=function(state){for(var idx=0;idx<this.factors.length;idx++){var factor=this.factors[idx];if(!state.eval(factor)){return false}}return true};pexprs.Iter.prototype.eval=function(state){var inputStream=state.inputStream;var origPos=inputStream.pos;var arity=this.getArity();var cols=[];while(cols.length<arity){cols.push([])}var numMatches=0;var idx;while(numMatches<this.maxNumMatches&&state.eval(this.expr)){numMatches++;var row=state.bindings.splice(state.bindings.length-arity,arity);for(idx=0;idx<row.length;idx++){cols[idx].push(row[idx])}}if(numMatches<this.minNumMatches){return false}var interval;if(numMatches===0){interval=inputStream.interval(origPos,origPos)}else{var firstCol=cols[0];var lastCol=cols[cols.length-1];interval=inputStream.interval(firstCol[0].interval.startIdx,lastCol[lastCol.length-1].interval.endIdx)}for(idx=0;idx<cols.length;idx++){state.bindings.push(new IterationNode(state.grammar,cols[idx],interval,this instanceof pexprs.Opt))}return true};pexprs.Not.prototype.eval=function(state){var inputStream=state.inputStream;var origPos=inputStream.pos;var failuresInfo=state.getFailuresInfo();var ans=state.eval(this.expr);state.restoreFailuresInfo(failuresInfo);if(ans){state.processFailure(origPos,this);return false}inputStream.pos=origPos;return true};pexprs.Lookahead.prototype.eval=function(state){var inputStream=state.inputStream;var origPos=inputStream.pos;if(state.eval(this.expr)){inputStream.pos=origPos;return true}else{return false}};pexprs.Arr.prototype.eval=function(state){var obj=state.inputStream.next();if(Array.isArray(obj)){var objInputStream=InputStream.newFor(obj);state.pushInputStream(objInputStream);var ans=state.eval(this.expr)&&objInputStream.atEnd();state.popInputStream();return ans}else{return false}};pexprs.Str.prototype.eval=function(state){var obj=state.inputStream.next();if(typeof obj==="string"){var strInputStream=InputStream.newFor(obj);state.pushInputStream(strInputStream);var ans=state.eval(this.expr)&&state.eval(pexprs.end);if(ans){state.bindings.pop()}state.popInputStream();return ans}else{return false}};pexprs.Obj.prototype.eval=function(state){var inputStream=state.inputStream;var origPos=inputStream.pos;var obj=inputStream.next();if(obj!==common.fail&&obj&&(typeof obj==="object"||typeof obj==="function")){var numOwnPropertiesMatched=0;for(var idx=0;idx<this.properties.length;idx++){var property=this.properties[idx];if(!hasOwnProp.call(obj,property.name)){return false}var value=obj[property.name];var valueInputStream=InputStream.newFor([value]);state.pushInputStream(valueInputStream);var matched=state.eval(property.pattern)&&valueInputStream.atEnd();state.popInputStream();if(!matched){return false}numOwnPropertiesMatched++}if(this.isLenient){var remainder={};for(var p in obj){if(hasOwnProp.call(obj,p)&&this.properties.indexOf(p)<0){remainder[p]=obj[p]}}var interval=inputStream.interval(origPos);state.bindings.push(new TerminalNode(state.grammar,remainder,interval));return true}else{return numOwnPropertiesMatched===Object.keys(obj).length}}else{return false}};pexprs.Apply.prototype.eval=function(state){var caller=state.currentApplication();var actuals=caller?caller.params:[];var app=this.substituteParams(actuals);if(app!==state.applySpaces&&(app.isSyntactic()||state.inSyntacticContext())){state.skipSpaces()}var posInfo=state.getCurrentPosInfo();if(posInfo.isActive(app)){return app.handleCycle(state)}var memoKey=app.toMemoKey();var memoRec=posInfo.memo[memoKey];
return memoRec&&posInfo.shouldUseMemoizedResult(memoRec)?state.useMemoizedResult(memoRec):app.reallyEval(state,!caller)};pexprs.Apply.prototype.handleCycle=function(state){var posInfo=state.getCurrentPosInfo();var currentLeftRecursion=posInfo.currentLeftRecursion;var memoKey=this.toMemoKey();var memoRec=posInfo.memo[memoKey];if(currentLeftRecursion&¤tLeftRecursion.headApplication.toMemoKey()===memoKey){memoRec.updateInvolvedApplicationMemoKeys()}else if(!memoRec){memoRec=posInfo.memo[memoKey]={pos:-1,value:false,failuresAtRightmostPosition:fsets.empty};posInfo.startLeftRecursion(this,memoRec)}return state.useMemoizedResult(memoRec)};pexprs.Apply.prototype.reallyEval=function(state,isTopLevelApplication){var inputStream=state.inputStream;var origPos=inputStream.pos;var origPosInfo=state.getCurrentPosInfo();var body=state.grammar.ruleBodies[this.ruleName];var description=state.grammar.ruleDescriptions[this.ruleName];origPosInfo.enter(this);if(description){var origFailuresInfo=state.getFailuresInfo()}var value=this.evalOnce(body,state);var currentLR=origPosInfo.currentLeftRecursion;var memoKey=this.toMemoKey();var isHeadOfLeftRecursion=currentLR&¤tLR.headApplication.toMemoKey()===memoKey;var memoized=true;if(isHeadOfLeftRecursion){value=this.growSeedResult(body,state,origPos,currentLR,value);origPosInfo.endLeftRecursion()}else if(currentLR&¤tLR.isInvolved(memoKey)){memoized=false}else{origPosInfo.memo[memoKey]={pos:inputStream.pos,value:value,failuresAtRightmostPosition:state.rightmostFailures}}if(description){state.restoreFailuresInfo(origFailuresInfo);if(!value){state.processFailure(origPos,this)}if(memoized){origPosInfo.memo[memoKey].failuresAtRightmostPosition=state.rightmostFailures}}if(state.isTracing()&&origPosInfo.memo[memoKey]){var entry=state.getTraceEntry(origPos,this,value);entry.setLeftRecursive(isHeadOfLeftRecursion);origPosInfo.memo[memoKey].traceEntry=entry}origPosInfo.exit();if(value){state.bindings.push(value);return!isTopLevelApplication||this.entireInputWasConsumed(state)}else{return false}};pexprs.Apply.prototype.evalOnce=function(expr,state){var inputStream=state.inputStream;var origPos=inputStream.pos;if(state.matchNodes&&state.applicationStack.length>1){var node=inputStream.next();if(node instanceof nodes.Node&&node.grammar===state.grammar&&node.ctorName===this.ruleName){return node}else{inputStream.pos=origPos}}if(state.eval(expr)){var arity=expr.getArity();var bindings=state.bindings.splice(state.bindings.length-arity,arity);var ans=new NonterminalNode(state.grammar,this.ruleName,bindings,inputStream.interval(origPos));return ans}else{return false}};pexprs.Apply.prototype.growSeedResult=function(body,state,origPos,lrMemoRec,newValue){if(!newValue){return false}var inputStream=state.inputStream;while(true){lrMemoRec.pos=inputStream.pos;lrMemoRec.value=newValue;lrMemoRec.failuresAtRightmostPosition=state.rightmostFailures;if(state.isTracing()){var children=state.trace[state.trace.length-1].children.slice();lrMemoRec.traceEntry=new Trace(state.inputStream,origPos,this,newValue,children)}inputStream.pos=origPos;newValue=this.evalOnce(body,state);if(inputStream.pos<=lrMemoRec.pos){break}}if(state.isTracing()){state.trace.pop();lrMemoRec.traceEntry=null}inputStream.pos=lrMemoRec.pos;return lrMemoRec.value};pexprs.Apply.prototype.entireInputWasConsumed=function(state){if(this.isSyntactic()){state.skipSpaces()}if(!state.eval(pexprs.end)){return false}state.bindings.pop();return true};pexprs.UnicodeChar.prototype.eval=function(state){var origPos=state.skipSpacesIfInSyntacticContext();var inputStream=state.inputStream;var value=inputStream.next();if(value===common.fail||!this.pattern.test(value)){state.processFailure(origPos,this);return false}else{var interval=inputStream.interval(origPos);state.bindings.push(new TerminalNode(state.grammar,value,interval));return true}};pexprs.TypeCheck.prototype.eval=function(state){var inputStream=state.inputStream;var origPos=inputStream.pos;var value=this.type==="string"?inputStream.nextStringValue():inputStream.next();if(typeof value===this.type){var interval=inputStream.interval(origPos);state.bindings.push(new TerminalNode(state.grammar,value,interval));return true}else{state.processFailure(origPos,this);return false}}},{"./InputStream":29,"./Trace":36,"./common":37,"./fsets":39,"./nodes":41,"./pexprs":55}],47:[function(require,module,exports){"use strict";var common=require("./common");var pexprs=require("./pexprs");pexprs.PExpr.prototype.getArity=common.abstract;pexprs.any.getArity=pexprs.end.getArity=pexprs.Prim.prototype.getArity=pexprs.Range.prototype.getArity=pexprs.Param.prototype.getArity=pexprs.Apply.prototype.getArity=pexprs.TypeCheck.prototype.getArity=pexprs.UnicodeChar.prototype.getArity=function(){return 1};pexprs.Alt.prototype.getArity=function(){return this.terms.length===0?0:this.terms[0].getArity()};pexprs.Seq.prototype.getArity=function(){var arity=0;for(var idx=0;idx<this.factors.length;idx++){arity+=this.factors[idx].getArity()}return arity};pexprs.Iter.prototype.getArity=function(){return this.expr.getArity()};pexprs.Not.prototype.getArity=function(){return 0};pexprs.Lookahead.prototype.getArity=pexprs.Lex.prototype.getArity=pexprs.Arr.prototype.getArity=pexprs.Str.prototype.getArity=function(){return this.expr.getArity()};pexprs.Obj.prototype.getArity=function(){var arity=this.isLenient?1:0;for(var idx=0;idx<this.properties.length;idx++){arity+=this.properties[idx].pattern.getArity()}return arity}},{"./common":37,"./pexprs":55}],48:[function(require,module,exports){"use strict";var common=require("./common");var pexprs=require("./pexprs");pexprs.PExpr.prototype.introduceParams=common.abstract;pexprs.any.introduceParams=pexprs.end.introduceParams=pexprs.Prim.prototype.introduceParams=pexprs.Range.prototype.introduceParams=pexprs.Param.prototype.introduceParams=pexprs.TypeCheck.prototype.introduceParams=pexprs.UnicodeChar.prototype.introduceParams=function(formals){return this};pexprs.Alt.prototype.introduceParams=function(formals){this.terms.forEach(function(term,idx,terms){terms[idx]=term.introduceParams(formals)});return this};pexprs.Seq.prototype.introduceParams=function(formals){this.factors.forEach(function(factor,idx,factors){factors[idx]=factor.introduceParams(formals)});return this};pexprs.Iter.prototype.introduceParams=pexprs.Not.prototype.introduceParams=pexprs.Lookahead.prototype.introduceParams=pexprs.Lex.prototype.introduceParams=pexprs.Arr.prototype.introduceParams=pexprs.Str.prototype.introduceParams=function(formals){this.expr=this.expr.introduceParams(formals);return this};pexprs.Obj.prototype.introduceParams=function(formals){this.properties.forEach(function(property,idx){property.pattern=property.pattern.introduceParams(formals)});return this};pexprs.Apply.prototype.introduceParams=function(formals){var index=formals.indexOf(this.ruleName);if(index>=0){if(this.params.length>0){throw new Error("FIXME: should catch this earlier")}return new pexprs.Param(index)}else{this.params.forEach(function(param,idx,params){params[idx]=param.introduceParams(formals)});return this}}},{"./common":37,"./pexprs":55}],49:[function(require,module,exports){"use strict";var common=require("./common");var pexprs=require("./pexprs");pexprs.PExpr.prototype.isNullable=function(grammar){return this._isNullable(grammar,Object.create(null))};pexprs.PExpr.prototype._isNullable=common.abstract;pexprs.any._isNullable=pexprs.Range.prototype._isNullable=pexprs.Param.prototype._isNullable=pexprs.Plus.prototype._isNullable=pexprs.Arr.prototype._isNullable=pexprs.Obj.prototype._isNullable=pexprs.TypeCheck.prototype._isNullable=pexprs.UnicodeChar.prototype._isNullable=function(grammar,memo){return false};pexprs.end._isNullable=function(grammar,memo){return true};pexprs.Prim.prototype._isNullable=function(grammar,memo){if(typeof this.obj==="string"){return this.obj===""}else{return false}};pexprs.Alt.prototype._isNullable=function(grammar,memo){return this.terms.length===0||this.terms.some(function(term){return term._isNullable(grammar,memo)})};pexprs.Seq.prototype._isNullable=function(grammar,memo){return this.factors.every(function(factor){return factor._isNullable(grammar,memo)})};pexprs.Star.prototype._isNullable=pexprs.Opt.prototype._isNullable=pexprs.Not.prototype._isNullable=pexprs.Lookahead.prototype._isNullable=function(grammar,memo){return true};pexprs.Lex.prototype._isNullable=function(grammar,memo){return this.expr._isNullable(grammar,memo)};pexprs.Str.prototype._isNullable=function(grammar,memo){return this.expr._isNullable(grammar,memo)};pexprs.Apply.prototype._isNullable=function(grammar,memo){var key=this.toMemoKey();if(!Object.prototype.hasOwnProperty.call(memo,key)){var body=grammar.ruleBodies[this.ruleName];var inlined=body.substituteParams(this.params);memo[key]=false;memo[key]=inlined._isNullable(grammar,memo)}return memo[key]}},{"./common":37,"./pexprs":55}],50:[function(require,module,exports){"use strict";var common=require("./common");var pexprs=require("./pexprs");pexprs.PExpr.prototype.outputRecipe=common.abstract;pexprs.any.outputRecipe=function(sb,formals){throw new Error("should never output a recipe for `any` expression")};pexprs.end.outputRecipe=function(sb,formals){throw new Error("should never output a recipe for `end` expression")};pexprs.Prim.prototype.outputRecipe=function(sb,formals){sb.append("this.prim(");sb.append(typeof this.obj==="string"?JSON.stringify(this.obj):""+this.obj);sb.append(")")};pexprs.Range.prototype.outputRecipe=function(sb,formals){sb.append("this.range(");sb.append(JSON.stringify(this.from));sb.append(", ");sb.append(JSON.stringify(this.to));sb.append(")")};pexprs.Param.prototype.outputRecipe=function(sb,formals){sb.append("this.param("+this.index+")")};pexprs.Alt.prototype.outputRecipe=function(sb,formals){sb.append("this.alt(");for(var idx=0;idx<this.terms.length;idx++){if(idx>0){sb.append(", ")}this.terms[idx].outputRecipe(sb,formals)}sb.append(")")};pexprs.Seq.prototype.outputRecipe=function(sb,formals){sb.append("this.seq(");for(var idx=0;idx<this.factors.length;idx++){if(idx>0){sb.append(", ")}this.factors[idx].outputRecipe(sb,formals)}sb.append(")")};pexprs.Star.prototype.outputRecipe=function(sb,formals){sb.append("this.star(");this.expr.outputRecipe(sb,formals);sb.append(")")};pexprs.Plus.prototype.outputRecipe=function(sb,formals){sb.append("this.plus(");this.expr.outputRecipe(sb,formals);sb.append(")")};pexprs.Opt.prototype.outputRecipe=function(sb,formals){sb.append("this.opt(");this.expr.outputRecipe(sb,formals);sb.append(")")};pexprs.Not.prototype.outputRecipe=function(sb,formals){sb.append("this.not(");this.expr.outputRecipe(sb,formals);sb.append(")")};pexprs.Lookahead.prototype.outputRecipe=function(sb,formals){sb.append("this.la(");this.expr.outputRecipe(sb,formals);sb.append(")")};pexprs.Lex.prototype.outputRecipe=function(sb,formals){sb.append("this.lex(");this.expr.outputRecipe(sb,formals);sb.append(")")};pexprs.Arr.prototype.outputRecipe=function(sb,formals){sb.append("this.arr(");this.expr.outputRecipe(sb,formals);sb.append(")")};pexprs.Str.prototype.outputRecipe=function(sb,formals){sb.append("this.str(");this.expr.outputRecipe(sb,formals);sb.append(")")};pexprs.Obj.prototype.outputRecipe=function(sb,formals){function outputPropertyRecipe(prop){sb.append("{name: ");sb.append(JSON.stringify(prop.name));sb.append(", pattern: ");prop.pattern.outputRecipe(sb,formals);sb.append("}")}sb.append("this.obj([");for(var idx=0;idx<this.properties.length;idx++){if(idx>0){sb.append(", ")}outputPropertyRecipe(this.properties[idx])}sb.append("], ");sb.append(!!this.isLenient);sb.append(")")};pexprs.Apply.prototype.outputRecipe=function(sb,formals){sb.append("this.app(");sb.append(JSON.stringify(this.ruleName));if(this.ruleName.indexOf("_")>=0&&formals.length>0){var apps=formals.map(function(formal){return"this.app("+JSON.stringify(formal)+")"});sb.append(", ["+apps.join(", ")+"]")}else if(this.params.length>0){sb.append(", [");this.params.forEach(function(param,idx){if(idx>0){sb.append(", ")}param.outputRecipe(sb,formals)});sb.append("]")}sb.append(")")}},{"./common":37,"./pexprs":55}],51:[function(require,module,exports){"use strict";var common=require("./common");var pexprs=require("./pexprs");pexprs.PExpr.prototype.substituteParams=common.abstract;pexprs.any.substituteParams=pexprs.end.substituteParams=pexprs.Prim.prototype.substituteParams=pexprs.Range.prototype.substituteParams=pexprs.Prim.prototype.substituteParams=pexprs.TypeCheck.prototype.substituteParams=pexprs.UnicodeChar.prototype.substituteParams=function(actuals){return this};pexprs.Param.prototype.substituteParams=function(actuals){return actuals[this.index]};pexprs.Alt.prototype.substituteParams=function(actuals){return new pexprs.Alt(this.terms.map(function(term){return term.substituteParams(actuals)}))};pexprs.Seq.prototype.substituteParams=function(actuals){return new pexprs.Seq(this.factors.map(function(factor){return factor.substituteParams(actuals)}))};pexprs.Iter.prototype.substituteParams=pexprs.Not.prototype.substituteParams=pexprs.Lookahead.prototype.substituteParams=pexprs.Lex.prototype.substituteParams=pexprs.Arr.prototype.substituteParams=pexprs.Str.prototype.substituteParams=function(actuals){return new this.constructor(this.expr.substituteParams(actuals))};pexprs.Obj.prototype.substituteParams=function(actuals){var properties=this.properties.map(function(property){return{name:property.name,pattern:property.pattern.substituteParams(actuals)}});return new pexprs.Obj(properties,this.isLenient)};pexprs.Apply.prototype.substituteParams=function(actuals){if(this.params.length===0){return this}else{var params=this.params.map(function(param){return param.substituteParams(actuals)});return new pexprs.Apply(this.ruleName,params)}}},{"./common":37,"./pexprs":55}],52:[function(require,module,exports){"use strict";var common=require("./common");var pexprs=require("./pexprs");pexprs.PExpr.prototype.toDisplayString=common.abstract;pexprs.Alt.prototype.toDisplayString=pexprs.Seq.prototype.toDisplayString=pexprs.Iter.prototype.toDisplayString=pexprs.Not.prototype.toDisplayString=pexprs.Lookahead.prototype.toDisplayString=pexprs.Lex.prototype.toDisplayString=pexprs.Arr.prototype.toDisplayString=pexprs.Str.prototype.toDisplayString=pexprs.Obj.prototype.toDisplayString=function(){if(this.interval){return this.interval.trimmed().contents}return"["+this.constructor.name+"]"};pexprs.any.toDisplayString=function(){return"any"};pexprs.end.toDisplayString=function(){return"end"};pexprs.Prim.prototype.toDisplayString=function(){return JSON.stringify(this.obj)};pexprs.Range.prototype.toDisplayString=function(){return JSON.stringify(this.from)+".."+JSON.stringify(this.to)};pexprs.Param.prototype.toDisplayString=function(){return"#"+this.index};pexprs.Apply.prototype.toDisplayString=function(){return this.toString()};pexprs.UnicodeChar.prototype.toDisplayString=function(){return"Unicode {"+this.category+"} character"};pexprs.TypeCheck.prototype.toDisplayString=function(){return"TypeCheck("+JSON.stringify(this.type)+")"}},{"./common":37,"./pexprs":55}],53:[function(require,module,exports){"use strict";var Failure=require("./Failure");var common=require("./common");var pexprs=require("./pexprs");pexprs.PExpr.prototype.toFailure=common.abstract;pexprs.any.toFailure=function(grammar){return new Failure("any object","description")};pexprs.end.toFailure=function(grammar){return new Failure("end of input","description")};pexprs.Prim.prototype.toFailure=function(grammar){return typeof this.obj==="string"?new Failure(this.obj,"string"):new Failure(JSON.stringify(this.obj),"code")};pexprs.Range.prototype.toFailure=function(grammar){return new Failure(JSON.stringify(this.from)+".."+JSON.stringify(this.to),"code")};pexprs.Not.prototype.toFailure=function(grammar){var description=this.expr===pexprs.any?"nothing":"not "+this.expr.toFailure(grammar);return new Failure(description,"description")};pexprs.Apply.prototype.toFailure=function(grammar){var description=grammar.ruleDescriptions[this.ruleName];if(!description){var article=/^[aeiouAEIOU]/.test(this.ruleName)?"an":"a";description=article+" "+this.ruleName}return new Failure(description,"description")};pexprs.UnicodeChar.prototype.toFailure=function(grammar){return new Failure(this.toDisplayString(),"description")};pexprs.TypeCheck.prototype.toFailure=function(grammar){return new Failure("a value of type "+JSON.stringify(this.type),"description")}},{"./Failure":26,"./common":37,"./pexprs":55}],54:[function(require,module,exports){"use strict";var common=require("./common");var pexprs=require("./pexprs");pexprs.PExpr.prototype.toString=common.abstract;pexprs.any.toString=function(){return"any"};pexprs.end.toString=function(){return"end"};pexprs.Prim.prototype.toString=function(){return JSON.stringify(this.obj)};pexprs.Range.prototype.toString=function(){return JSON.stringify(this.from)+".."+JSON.stringify(this.to)};pexprs.Param.prototype.toString=function(){return"$"+this.index};pexprs.Lex.prototype.toString=function(){return"#("+this.expr.toString()+")"};pexprs.Alt.prototype.toString=function(){return this.terms.length===1?this.terms[0].toString():"("+this.terms.map(function(term){return term.toString()}).join(" | ")+")"};pexprs.Seq.prototype.toString=function(){return this.factors.length===1?this.factors[0].toString():"("+this.factors.map(function(factor){return factor.toString()}).join(" ")+")"};pexprs.Iter.prototype.toString=function(){return this.expr+this.operator};pexprs.Not.prototype.toString=function(){return"~"+this.expr};pexprs.Lookahead.prototype.toString=function(){return"&"+this.expr};pexprs.Arr.prototype.toString=function(){return"["+this.expr.toString()+"]"};pexprs.Str.prototype.toString=function(){return"``"+this.expr.toString()+"''"};pexprs.Obj.prototype.toString=function(){var parts=["{"];var first=true;function emit(part){if(first){first=false}else{parts.push(", ")}parts.push(part)}this.properties.forEach(function(property){emit(JSON.stringify(property.name)+": "+property.pattern.toString())});if(this.isLenient){emit("...")}parts.push("}");return parts.join("")};pexprs.Apply.prototype.toString=function(){if(this.params.length>0){var ps=this.params.map(function(param){return param.toString()});return this.ruleName+"<"+ps.join(",")+">"}else{return this.ruleName}};pexprs.UnicodeChar.prototype.toString=function(){return"\\p{"+this.category+"}"};pexprs.TypeCheck.prototype.toString=function(){return"TypeCheck("+JSON.stringify(this.type)+")"}},{"./common":37,"./pexprs":55}],55:[function(require,module,exports){"use strict";var UnicodeCategories=require("../third_party/UnicodeCategories");var common=require("./common");var errors=require("./errors");var inherits=require("inherits");function PExpr(){throw new Error("PExpr cannot be instantiated -- it's abstract")}PExpr.prototype.withInterval=function(interval){if(interval){this.interval=interval.trimmed()}return this};var any=Object.create(PExpr.prototype);var end=Object.create(PExpr.prototype);function Prim(obj){this.obj=obj}inherits(Prim,PExpr);function Range(from,to){this.from=from;this.to=to}inherits(Range,PExpr);function Param(index){this.index=index}inherits(Param,PExpr);function Alt(terms){this.terms=terms}inherits(Alt,PExpr);function Extend(superGrammar,name,body){this.superGrammar=superGrammar;this.name=name;this.body=body;var origBody=superGrammar.ruleBodies[name];this.terms=[body,origBody]}inherits(Extend,Alt);function Seq(factors){this.factors=factors}inherits(Seq,PExpr);function Iter(expr){this.expr=expr}inherits(Iter,PExpr);function Star(expr){this.expr=expr}inherits(Star,Iter);function Plus(expr){this.expr=expr}inherits(Plus,Iter);function Opt(expr){this.expr=expr}inherits(Opt,Iter);Star.prototype.operator="*";Plus.prototype.operator="+";Opt.prototype.operator="?";Star.prototype.minNumMatches=0;Plus.prototype.minNumMatches=1;Opt.prototype.minNumMatches=0;Star.prototype.maxNumMatches=Number.POSITIVE_INFINITY;Plus.prototype.maxNumMatches=Number.POSITIVE_INFINITY;Opt.prototype.maxNumMatches=1;function Not(expr){this.expr=expr}inherits(Not,PExpr);function Lookahead(expr){this.expr=expr}inherits(Lookahead,PExpr);function Lex(expr){this.expr=expr}inherits(Lex,PExpr);function Arr(expr){this.expr=expr}inherits(Arr,PExpr);function Str(expr){this.expr=expr}inherits(Str,PExpr);function Obj(properties,isLenient){var names=properties.map(function(property){return property.name});var duplicates=common.getDuplicates(names);if(duplicates.length>0){throw errors.duplicatePropertyNames(duplicates)}else{this.properties=properties;this.isLenient=isLenient}}inherits(Obj,PExpr);function Apply(ruleName,optParams){this.ruleName=ruleName;this.params=optParams||[]}inherits(Apply,PExpr);Apply.prototype.isSyntactic=function(){return common.isSyntactic(this.ruleName)};Apply.prototype.toMemoKey=function(){if(!this._memoKey){Object.defineProperty(this,"_memoKey",{value:this.toString()})}return this._memoKey};function UnicodeChar(category){this.category=category;this.pattern=UnicodeCategories[category]}inherits(UnicodeChar,PExpr);function TypeCheck(t){this.type=t}inherits(TypeCheck,PExpr);exports.PExpr=PExpr;exports.any=any;exports.end=end;exports.Prim=Prim;exports.Range=Range;exports.Param=Param;exports.Alt=Alt;exports.Extend=Extend;exports.Seq=Seq;exports.Iter=Iter;exports.Star=Star;exports.Plus=Plus;exports.Opt=Opt;exports.Not=Not;exports.Lookahead=Lookahead;exports.Lex=Lex;exports.Arr=Arr;exports.Str=Str;exports.Obj=Obj;exports.Apply=Apply;exports.UnicodeChar=UnicodeChar;exports.TypeCheck=TypeCheck;require("./pexprs-assertAllApplicationsAreValid");require("./pexprs-assertChoicesHaveUniformArity");require("./pexprs-assertIteratedExprsAreNotNullable");require("./pexprs-check");require("./pexprs-eval");require("./pexprs-getArity");require("./pexprs-outputRecipe");require("./pexprs-introduceParams");require("./pexprs-isNullable");require("./pexprs-substituteParams");require("./pexprs-toDisplayString");require("./pexprs-toFailure");require("./pexprs-toString")},{"../third_party/UnicodeCategories":57,"./common":37,"./errors":38,"./pexprs-assertAllApplicationsAreValid":42,"./pexprs-assertChoicesHaveUniformArity":43,"./pexprs-assertIteratedExprsAreNotNullable":44,"./pexprs-check":45,"./pexprs-eval":46,"./pexprs-getArity":47,"./pexprs-introduceParams":48,"./pexprs-isNullable":49,"./pexprs-outputRecipe":50,"./pexprs-substituteParams":51,"./pexprs-toDisplayString":52,"./pexprs-toFailure":53,"./pexprs-toString":54,inherits:22}],56:[function(require,module,exports){"use strict";var common=require("./common");function padNumbersToEqualLength(arr){var maxLen=0;var strings=arr.map(function(n){var str=n.toString();maxLen=Math.max(maxLen,str.length);return str});return strings.map(function(s){return common.padLeft(s,maxLen)})}function strcpy(dest,src,offset){var origDestLen=dest.length;var start=dest.slice(0,offset);var end=dest.slice(offset+src.length);return(start+src+end).substr(0,origDestLen)}exports.getLineAndColumn=function(str,offset){var lineNum=1;var colNum=1;var currOffset=0;var lineStartOffset=0;var nextLine=null;var prevLine=null;var prevLineStartOffset=-1;while(currOffset<offset){var c=str.charAt(currOffset++);if(c==="\n"){lineNum++;colNum=1;prevLineStartOffset=lineStartOffset;lineStartOffset=currOffset}else if(c!=="\r"){colNum++}}var lineEndOffset=str.indexOf("\n",lineStartOffset);if(lineEndOffset===-1){lineEndOffset=str.length}else{var nextLineEndOffset=str.indexOf("\n",lineEndOffset+1);nextLine=nextLineEndOffset===-1?str.slice(lineEndOffset):str.slice(lineEndOffset,nextLineEndOffset);nextLine=nextLine.replace(/^\r?\n/,"").replace(/\r$/,"")}if(prevLineStartOffset>=0){prevLine=str.slice(prevLineStartOffset,lineStartOffset).replace(/\r?\n$/,"")}var line=str.slice(lineStartOffset,lineEndOffset).replace(/\r$/,"");return{lineNum:lineNum,colNum:colNum,line:line,prevLine:prevLine,nextLine:nextLine}};exports.getLineAndColumnMessage=function(str,offset){var repeatStr=common.repeatStr;var lineAndCol=exports.getLineAndColumn(str,offset);var sb=new common.StringBuffer;sb.append("Line "+lineAndCol.lineNum+", col "+lineAndCol.colNum+":\n");var lineNumbers=padNumbersToEqualLength([lineAndCol.prevLine==null?0:lineAndCol.lineNum-1,lineAndCol.lineNum,lineAndCol.nextLine==null?0:lineAndCol.lineNum+1]);function appendLine(num,content,prefix){sb.append(prefix+lineNumbers[num]+" | "+content+"\n")}if(lineAndCol.prevLine!=null){appendLine(0,lineAndCol.prevLine," ")}appendLine(1,lineAndCol.line,"> ");var lineLen=lineAndCol.line.length;var indicationLine=repeatStr(" ",lineLen+1);var ranges=Array.prototype.slice.call(arguments,2);for(var i=0;i<ranges.length;++i){var startIdx=ranges[i][0];var endIdx=ranges[i][1];common.assert(startIdx>=0&&startIdx<=endIdx,"range start must be >= 0 and <= end");var lineStartOffset=offset-lineAndCol.colNum+1;startIdx=Math.max(0,startIdx-lineStartOffset);endIdx=Math.min(endIdx-lineStartOffset,lineLen);indicationLine=strcpy(indicationLine,repeatStr("~",endIdx-startIdx),startIdx)}var gutterWidth=2+lineNumbers[1].length+3;sb.append(repeatStr(" ",gutterWidth));indicationLine=strcpy(indicationLine,"^",lineAndCol.colNum-1);sb.append(indicationLine.replace(/ +$/,"")+"\n");if(lineAndCol.nextLine!=null){appendLine(2,lineAndCol.nextLine," ")}return sb.contents()}},{"./common":37}],57:[function(require,module,exports){module.exports={Lu:/[\u0041-\u005A]|[\u00C0-\u00D6]|[\u00D8-\u00DE]|[\u0100-\u0100]|[\u0102-\u0102]|[\u0104-\u0104]|[\u0106-\u0106]|[\u0108-\u0108]|[\u010A-\u010A]|[\u010C-\u010C]|[\u010E-\u010E]|[\u0110-\u0110]|[\u0112-\u0112]|[\u0114-\u0114]|[\u0116-\u0116]|[\u0118-\u0118]|[\u011A-\u011A]|[\u011C-\u011C]|[\u011E-\u011E]|[\u0120-\u0120]|[\u0122-\u0122]|[\u0124-\u0124]|[\u0126-\u0126]|[\u0128-\u0128]|[\u012A-\u012A]|[\u012C-\u012C]|[\u012E-\u012E]|[\u0130-\u0130]|[\u0132-\u0132]|[\u0134-\u0134]|[\u0136-\u0136]|[\u0139-\u0139]|[\u013B-\u013B]|[\u013D-\u013D]|[\u013F-\u013F]|[\u0141-\u0141]|[\u0143-\u0143]|[\u0145-\u0145]|[\u0147-\u0147]|[\u014A-\u014A]|[\u014C-\u014C]|[\u014E-\u014E]|[\u0150-\u0150]|[\u0152-\u0152]|[\u0154-\u0154]|[\u0156-\u0156]|[\u0158-\u0158]|[\u015A-\u015A]|[\u015C-\u015C]|[\u015E-\u015E]|[\u0160-\u0160]|[\u0162-\u0162]|[\u0164-\u0164]|[\u0166-\u0166]|[\u0168-\u0168]|[\u016A-\u016A]|[\u016C-\u016C]|[\u016E-\u016E]|[\u0170-\u0170]|[\u0172-\u0172]|[\u0174-\u0174]|[\u0176-\u0176]|[\u0178-\u0179]|[\u017B-\u017B]|[\u017D-\u017D]|[\u0181-\u0182]|[\u0184-\u0184]|[\u0186-\u0187]|[\u0189-\u018B]|[\u018E-\u0191]|[\u0193-\u0194]|[\u0196-\u0198]|[\u019C-\u019D]|[\u019F-\u01A0]|[\u01A2-\u01A2]|[\u01A4-\u01A4]|[\u01A6-\u01A7]|[\u01A9-\u01A9]|[\u01AC-\u01AC]|[\u01AE-\u01AF]|[\u01B1-\u01B3]|[\u01B5-\u01B5]|[\u01B7-\u01B8]|[\u01BC-\u01BC]|[\u01C4-\u01C4]|[\u01C7-\u01C7]|[\u01CA-\u01CA]|[\u01CD-\u01CD]|[\u01CF-\u01CF]|[\u01D1-\u01D1]|[\u01D3-\u01D3]|[\u01D5-\u01D5]|[\u01D7-\u01D7]|[\u01D9-\u01D9]|[\u01DB-\u01DB]|[\u01DE-\u01DE]|[\u01E0-\u01E0]|[\u01E2-\u01E2]|[\u01E4-\u01E4]|[\u01E6-\u01E6]|[\u01E8-\u01E8]|[\u01EA-\u01EA]|[\u01EC-\u01EC]|[\u01EE-\u01EE]|[\u01F1-\u01F1]|[\u01F4-\u01F4]|[\u01FA-\u01FA]|[\u01FC-\u01FC]|[\u01FE-\u01FE]|[\u0200-\u0200]|[\u0202-\u0202]|[\u0204-\u0204]|[\u0206-\u0206]|[\u0208-\u0208]|[\u020A-\u020A]|[\u020C-\u020C]|[\u020E-\u020E]|[\u0210-\u0210]|[\u0212-\u0212]|[\u0214-\u0214]|[\u0216-\u0216]|[\u0386-\u0386]|[\u0388-\u038A]|[\u038C-\u038C]|[\u038E-\u038F]|[\u0391-\u03A1]|[\u03A3-\u03AB]|[\u03D2-\u03D4]|[\u03DA-\u03DA]|[\u03DC-\u03DC]|[\u03DE-\u03DE]|[\u03E0-\u03E0]|[\u03E2-\u03E2]|[\u03E4-\u03E4]|[\u03E6-\u03E6]|[\u03E8-\u03E8]|[\u03EA-\u03EA]|[\u03EC-\u03EC]|[\u03EE-\u03EE]|[\u0401-\u040C]|[\u040E-\u042F]|[\u0460-\u0460]|[\u0462-\u0462]|[\u0464-\u0464]|[\u0466-\u0466]|[\u0468-\u0468]|[\u046A-\u046A]|[\u046C-\u046C]|[\u046E-\u046E]|[\u0470-\u0470]|[\u0472-\u0472]|[\u0474-\u0474]|[\u0476-\u0476]|[\u0478-\u0478]|[\u047A-\u047A]|[\u047C-\u047C]|[\u047E-\u047E]|[\u0480-\u0480]|[\u0490-\u0490]|[\u0492-\u0492]|[\u0494-\u0494]|[\u0496-\u0496]|[\u0498-\u0498]|[\u049A-\u049A]|[\u049C-\u049C]|[\u049E-\u049E]|[\u04A0-\u04A0]|[\u04A2-\u04A2]|[\u04A4-\u04A4]|[\u04A6-\u04A6]|[\u04A8-\u04A8]|[\u04AA-\u04AA]|[\u04AC-\u04AC]|[\u04AE-\u04AE]|[\u04B0-\u04B0]|[\u04B2-\u04B2]|[\u04B4-\u04B4]|[\u04B6-\u04B6]|[\u04B8-\u04B8]|[\u04BA-\u04BA]|[\u04BC-\u04BC]|[\u04BE-\u04BE]|[\u04C1-\u04C1]|[\u04C3-\u04C3]|[\u04C7-\u04C7]|[\u04CB-\u04CB]|[\u04D0-\u04D0]|[\u04D2-\u04D2]|[\u04D4-\u04D4]|[\u04D6-\u04D6]|[\u04D8-\u04D8]|[\u04DA-\u04DA]|[\u04DC-\u04DC]|[\u04DE-\u04DE]|[\u04E0-\u04E0]|[\u04E2-\u04E2]|[\u04E4-\u04E4]|[\u04E6-\u04E6]|[\u04E8-\u04E8]|[\u04EA-\u04EA]|[\u04EE-\u04EE]|[\u04F0-\u04F0]|[\u04F2-\u04F2]|[\u04F4-\u04F4]|[\u04F8-\u04F8]|[\u0531-\u0556]|[\u10A0-\u10C5]|[\u1E00-\u1E00]|[\u1E02-\u1E02]|[\u1E04-\u1E04]|[\u1E06-\u1E06]|[\u1E08-\u1E08]|[\u1E0A-\u1E0A]|[\u1E0C-\u1E0C]|[\u1E0E-\u1E0E]|[\u1E10-\u1E10]|[\u1E12-\u1E12]|[\u1E14-\u1E14]|[\u1E16-\u1E16]|[\u1E18-\u1E18]|[\u1E1A-\u1E1A]|[\u1E1C-\u1E1C]|[\u1E1E-\u1E1E]|[\u1E20-\u1E20]|[\u1E22-\u1E22]|[\u1E24-\u1E24]|[\u1E26-\u1E26]|[\u1E28-\u1E28]|[\u1E2A-\u1E2A]|[\u1E2C-\u1E2C]|[\u1E2E-\u1E2E]|[\u1E30-\u1E30]|[\u1E32-\u1E32]|[\u1E34-\u1E34]|[\u1E36-\u1E36]|[\u1E38-\u1E38]|[\u1E3A-\u1E3A]|[\u1E3C-\u1E3C]|[\u1E3E-\u1E3E]|[\u1E40-\u1E40]|[\u1E42-\u1E42]|[\u1E44-\u1E44]|[\u1E46-\u1E46]|[\u1E48-\u1E48]|[\u1E4A-\u1E4A]|[\u1E4C-\u1E4C]|[\u1E4E-\u1E4E]|[\u1E50-\u1E50]|[\u1E52-\u1E52]|[\u1E54-\u1E54]|[\u1E56-\u1E56]|[\u1E58-\u1E58]|[\u1E5A-\u1E5A]|[\u1E5C-\u1E5C]|[\u1E5E-\u1E5E]|[\u1E60-\u1E60]|[\u1E62-\u1E62]|[\u1E64-\u1E64]|[\u1E66-\u1E66]|[\u1E68-\u1E68]|[\u1E6A-\u1E6A]|[\u1E6C-\u1E6C]|[\u1E6E-\u1E6E]|[\u1E70-\u1E70]|[\u1E72-\u1E72]|[\u1E74-\u1E74]|[\u1E76-\u1E76]|[\u1E78-\u1E78]|[\u1E7A-\u1E7A]|[\u1E7C-\u1E7C]|[\u1E7E-\u1E7E]|[\u1E80-\u1E80]|[\u1E82-\u1E82]|[\u1E84-\u1E84]|[\u1E86-\u1E86]|[\u1E88-\u1E88]|[\u1E8A-\u1E8A]|[\u1E8C-\u1E8C]|[\u1E8E-\u1E8E]|[\u1E90-\u1E90]|[\u1E92-\u1E92]|[\u1E94-\u1E94]|[\u1EA0-\u1EA0]|[\u1EA2-\u1EA2]|[\u1EA4-\u1EA4]|[\u1EA6-\u1EA6]|[\u1EA8-\u1EA8]|[\u1EAA-\u1EAA]|[\u1EAC-\u1EAC]|[\u1EAE-\u1EAE]|[\u1EB0-\u1EB0]|[\u1EB2-\u1EB2]|[\u1EB4-\u1EB4]|[\u1EB6-\u1EB6]|[\u1EB8-\u1EB8]|[\u1EBA-\u1EBA]|[\u1EBC-\u1EBC]|[\u1EBE-\u1EBE]|[\u1EC0-\u1EC0]|[\u1EC2-\u1EC2]|[\u1EC4-\u1EC4]|[\u1EC6-\u1EC6]|[\u1EC8-\u1EC8]|[\u1ECA-\u1ECA]|[\u1ECC-\u1ECC]|[\u1ECE-\u1ECE]|[\u1ED0-\u1ED0]|[\u1ED2-\u1ED2]|[\u1ED4-\u1ED4]|[\u1ED6-\u1ED6]|[\u1ED8-\u1ED8]|[\u1EDA-\u1EDA]|[\u1EDC-\u1EDC]|[\u1EDE-\u1EDE]|[\u1EE0-\u1EE0]|[\u1EE2-\u1EE2]|[\u1EE4-\u1EE4]|[\u1EE6-\u1EE6]|[\u1EE8-\u1EE8]|[\u1EEA-\u1EEA]|[\u1EEC-\u1EEC]|[\u1EEE-\u1EEE]|[\u1EF0-\u1EF0]|[\u1EF2-\u1EF2]|[\u1EF4-\u1EF4]|[\u1EF6-\u1EF6]|[\u1EF8-\u1EF8]|[\u1F08-\u1F0F]|[\u1F18-\u1F1D]|[\u1F28-\u1F2F]|[\u1F38-\u1F3F]|[\u1F48-\u1F4D]|[\u1F59-\u1F59]|[\u1F5B-\u1F5B]|[\u1F5D-\u1F5D]|[\u1F5F-\u1F5F]|[\u1F68-\u1F6F]|[\u1F88-\u1F8F]|[\u1F98-\u1F9F]|[\u1FA8-\u1FAF]|[\u1FB8-\u1FBC]|[\u1FC8-\u1FCC]|[\u1FD8-\u1FDB]|[\u1FE8-\u1FEC]|[\u1FF8-\u1FFC]|[\u2102-\u2102]|[\u2107-\u2107]|[\u210B-\u210D]|[\u2110-\u2112]|[\u2115-\u2115]|[\u2119-\u211D]|[\u2124-\u2124]|[\u2126-\u2126]|[\u2128-\u2128]|[\u212A-\u212D]|[\u2130-\u2131]|[\u2133-\u2133]|[\uFF21-\uFF3A]/,Ll:/[\u0061-\u007A]|[\u00AA-\u00AA]|[\u00B5-\u00B5]|[\u00BA-\u00BA]|[\u00DF-\u00F6]|[\u00F8-\u00FF]|[\u0101-\u0101]|[\u0103-\u0103]|[\u0105-\u0105]|[\u0107-\u0107]|[\u0109-\u0109]|[\u010B-\u010B]|[\u010D-\u010D]|[\u010F-\u010F]|[\u0111-\u0111]|[\u0113-\u0113]|[\u0115-\u0115]|[\u0117-\u0117]|[\u0119-\u0119]|[\u011B-\u011B]|[\u011D-\u011D]|[\u011F-\u011F]|[\u0121-\u0121]|[\u0123-\u0123]|[\u0125-\u0125]|[\u0127-\u0127]|[\u0129-\u0129]|[\u012B-\u012B]|[\u012D-\u012D]|[\u012F-\u012F]|[\u0131-\u0131]|[\u0133-\u0133]|[\u0135-\u0135]|[\u0137-\u0138]|[\u013A-\u013A]|[\u013C-\u013C]|[\u013E-\u013E]|[\u0140-\u0140]|[\u0142-\u0142]|[\u0144-\u0144]|[\u0146-\u0146]|[\u0148-\u0149]|[\u014B-\u014B]|[\u014D-\u014D]|[\u014F-\u014F]|[\u0151-\u0151]|[\u0153-\u0153]|[\u0155-\u0155]|[\u0157-\u0157]|[\u0159-\u0159]|[\u015B-\u015B]|[\u015D-\u015D]|[\u015F-\u015F]|[\u0161-\u0161]|[\u0163-\u0163]|[\u0165-\u0165]|[\u0167-\u0167]|[\u0169-\u0169]|[\u016B-\u016B]|[\u016D-\u016D]|[\u016F-\u016F]|[\u0171-\u0171]|[\u0173-\u0173]|[\u0175-\u0175]|[\u0177-\u0177]|[\u017A-\u017A]|[\u017C-\u017C]|[\u017E-\u0180]|[\u0183-\u0183]|[\u0185-\u0185]|[\u0188-\u0188]|[\u018C-\u018D]|[\u0192-\u0192]|[\u0195-\u0195]|[\u0199-\u019B]|[\u019E-\u019E]|[\u01A1-\u01A1]|[\u01A3-\u01A3]|[\u01A5-\u01A5]|[\u01A8-\u01A8]|[\u01AB-\u01AB]|[\u01AD-\u01AD]|[\u01B0-\u01B0]|[\u01B4-\u01B4]|[\u01B6-\u01B6]|[\u01B9-\u01BA]|[\u01BD-\u01BD]|[\u01C6-\u01C6]|[\u01C9-\u01C9]|[\u01CC-\u01CC]|[\u01CE-\u01CE]|[\u01D0-\u01D0]|[\u01D2-\u01D2]|[\u01D4-\u01D4]|[\u01D6-\u01D6]|[\u01D8-\u01D8]|[\u01DA-\u01DA]|[\u01DC-\u01DD]|[\u01DF-\u01DF]|[\u01E1-\u01E1]|[\u01E3-\u01E3]|[\u01E5-\u01E5]|[\u01E7-\u01E7]|[\u01E9-\u01E9]|[\u01EB-\u01EB]|[\u01ED-\u01ED]|[\u01EF-\u01F0]|[\u01F3-\u01F3]|[\u01F5-\u01F5]|[\u01FB-\u01FB]|[\u01FD-\u01FD]|[\u01FF-\u01FF]|[\u0201-\u0201]|[\u0203-\u0203]|[\u0205-\u0205]|[\u0207-\u0207]|[\u0209-\u0209]|[\u020B-\u020B]|[\u020D-\u020D]|[\u020F-\u020F]|[\u0211-\u0211]|[\u0213-\u0213]|[\u0215-\u0215]|[\u0217-\u0217]|[\u0250-\u02A8]|[\u0390-\u0390]|[\u03AC-\u03CE]|[\u03D0-\u03D1]|[\u03D5-\u03D6]|[\u03E3-\u03E3]|[\u03E5-\u03E5]|[\u03E7-\u03E7]|[\u03E9-\u03E9]|[\u03EB-\u03EB]|[\u03ED-\u03ED]|[\u03EF-\u03F2]|[\u0430-\u044F]|[\u0451-\u045C]|[\u045E-\u045F]|[\u0461-\u0461]|[\u0463-\u0463]|[\u0465-\u0465]|[\u0467-\u0467]|[\u0469-\u0469]|[\u046B-\u046B]|[\u046D-\u046D]|[\u046F-\u046F]|[\u0471-\u0471]|[\u0473-\u0473]|[\u0475-\u0475]|[\u0477-\u0477]|[\u0479-\u0479]|[\u047B-\u047B]|[\u047D-\u047D]|[\u047F-\u047F]|[\u0481-\u0481]|[\u0491-\u0491]|[\u0493-\u0493]|[\u0495-\u0495]|[\u0497-\u0497]|[\u0499-\u0499]|[\u049B-\u049B]|[\u049D-\u049D]|[\u049F-\u049F]|[\u04A1-\u04A1]|[\u04A3-\u04A3]|[\u04A5-\u04A5]|[\u04A7-\u04A7]|[\u04A9-\u04A9]|[\u04AB-\u04AB]|[\u04AD-\u04AD]|[\u04AF-\u04AF]|[\u04B1-\u04B1]|[\u04B3-\u04B3]|[\u04B5-\u04B5]|[\u04B7-\u04B7]|[\u04B9-\u04B9]|[\u04BB-\u04BB]|[\u04BD-\u04BD]|[\u04BF-\u04BF]|[\u04C2-\u04C2]|[\u04C4-\u04C4]|[\u04C8-\u04C8]|[\u04CC-\u04CC]|[\u04D1-\u04D1]|[\u04D3-\u04D3]|[\u04D5-\u04D5]|[\u04D7-\u04D7]|[\u04D9-\u04D9]|[\u04DB-\u04DB]|[\u04DD-\u04DD]|[\u04DF-\u04DF]|[\u04E1-\u04E1]|[\u04E3-\u04E3]|[\u04E5-\u04E5]|[\u04E7-\u04E7]|[\u04E9-\u04E9]|[\u04EB-\u04EB]|[\u04EF-\u04EF]|[\u04F1-\u04F1]|[\u04F3-\u04F3]|[\u04F5-\u04F5]|[\u04F9-\u04F9]|[\u0561-\u0587]|[\u10D0-\u10F6]|[\u1E01-\u1E01]|[\u1E03-\u1E03]|[\u1E05-\u1E05]|[\u1E07-\u1E07]|[\u1E09-\u1E09]|[\u1E0B-\u1E0B]|[\u1E0D-\u1E0D]|[\u1E0F-\u1E0F]|[\u1E11-\u1E11]|[\u1E13-\u1E13]|[\u1E15-\u1E15]|[\u1E17-\u1E17]|[\u1E19-\u1E19]|[\u1E1B-\u1E1B]|[\u1E1D-\u1E1D]|[\u1E1F-\u1E1F]|[\u1E21-\u1E21]|[\u1E23-\u1E23]|[\u1E25-\u1E25]|[\u1E27-\u1E27]|[\u1E29-\u1E29]|[\u1E2B-\u1E2B]|[\u1E2D-\u1E2D]|[\u1E2F-\u1E2F]|[\u1E31-\u1E31]|[\u1E33-\u1E33]|[\u1E35-\u1E35]|[\u1E37-\u1E37]|[\u1E39-\u1E39]|[\u1E3B-\u1E3B]|[\u1E3D-\u1E3D]|[\u1E3F-\u1E3F]|[\u1E41-\u1E41]|[\u1E43-\u1E43]|[\u1E45-\u1E45]|[\u1E47-\u1E47]|[\u1E49-\u1E49]|[\u1E4B-\u1E4B]|[\u1E4D-\u1E4D]|[\u1E4F-\u1E4F]|[\u1E51-\u1E51]|[\u1E53-\u1E53]|[\u1E55-\u1E55]|[\u1E57-\u1E57]|[\u1E59-\u1E59]|[\u1E5B-\u1E5B]|[\u1E5D-\u1E5D]|[\u1E5F-\u1E5F]|[\u1E61-\u1E61]|[\u1E63-\u1E63]|[\u1E65-\u1E65]|[\u1E67-\u1E67]|[\u1E69-\u1E69]|[\u1E6B-\u1E6B]|[\u1E6D-\u1E6D]|[\u1E6F-\u1E6F]|[\u1E71-\u1E71]|[\u1E73-\u1E73]|[\u1E75-\u1E75]|[\u1E77-\u1E77]|[\u1E79-\u1E79]|[\u1E7B-\u1E7B]|[\u1E7D-\u1E7D]|[\u1E7F-\u1E7F]|[\u1E81-\u1E81]|[\u1E83-\u1E83]|[\u1E85-\u1E85]|[\u1E87-\u1E87]|[\u1E89-\u1E89]|[\u1E8B-\u1E8B]|[\u1E8D-\u1E8D]|[\u1E8F-\u1E8F]|[\u1E91-\u1E91]|[\u1E93-\u1E93]|[\u1E95-\u1E9B]|[\u1EA1-\u1EA1]|[\u1EA3-\u1EA3]|[\u1EA5-\u1EA5]|[\u1EA7-\u1EA7]|[\u1EA9-\u1EA9]|[\u1EAB-\u1EAB]|[\u1EAD-\u1EAD]|[\u1EAF-\u1EAF]|[\u1EB1-\u1EB1]|[\u1EB3-\u1EB3]|[\u1EB5-\u1EB5]|[\u1EB7-\u1EB7]|[\u1EB9-\u1EB9]|[\u1EBB-\u1EBB]|[\u1EBD-\u1EBD]|[\u1EBF-\u1EBF]|[\u1EC1-\u1EC1]|[\u1EC3-\u1EC3]|[\u1EC5-\u1EC5]|[\u1EC7-\u1EC7]|[\u1EC9-\u1EC9]|[\u1ECB-\u1ECB]|[\u1ECD-\u1ECD]|[\u1ECF-\u1ECF]|[\u1ED1-\u1ED1]|[\u1ED3-\u1ED3]|[\u1ED5-\u1ED5]|[\u1ED7-\u1ED7]|[\u1ED9-\u1ED9]|[\u1EDB-\u1EDB]|[\u1EDD-\u1EDD]|[\u1EDF-\u1EDF]|[\u1EE1-\u1EE1]|[\u1EE3-\u1EE3]|[\u1EE5-\u1EE5]|[\u1EE7-\u1EE7]|[\u1EE9-\u1EE9]|[\u1EEB-\u1EEB]|[\u1EED-\u1EED]|[\u1EEF-\u1EEF]|[\u1EF1-\u1EF1]|[\u1EF3-\u1EF3]|[\u1EF5-\u1EF5]|[\u1EF7-\u1EF7]|[\u1EF9-\u1EF9]|[\u1F00-\u1F07]|[\u1F10-\u1F15]|[\u1F20-\u1F27]|[\u1F30-\u1F37]|[\u1F40-\u1F45]|[\u1F50-\u1F57]|[\u1F60-\u1F67]|[\u1F70-\u1F7D]|[\u1F80-\u1F87]|[\u1F90-\u1F97]|[\u1FA0-\u1FA7]|[\u1FB0-\u1FB4]|[\u1FB6-\u1FB7]|[\u1FBE-\u1FBE]|[\u1FC2-\u1FC4]|[\u1FC6-\u1FC7]|[\u1FD0-\u1FD3]|[\u1FD6-\u1FD7]|[\u1FE0-\u1FE7]|[\u1FF2-\u1FF4]|[\u1FF6-\u1FF7]|[\u207F-\u207F]|[\u210A-\u210A]|[\u210E-\u210F]|[\u2113-\u2113]|[\u2118-\u2118]|[\u212E-\u212F]|[\u2134-\u2134]|[\uFB00-\uFB06]|[\uFB13-\uFB17]|[\uFF41-\uFF5A]/,
Lt:/[\u01C5-\u01C5]|[\u01C8-\u01C8]|[\u01CB-\u01CB]|[\u01F2-\u01F2]/,Lm:/[\u02B0-\u02B8]|[\u02BB-\u02C1]|[\u02D0-\u02D1]|[\u02E0-\u02E4]|[\u037A-\u037A]|[\u0559-\u0559]|[\u0640-\u0640]|[\u06E5-\u06E6]|[\u0E46-\u0E46]|[\u0EC6-\u0EC6]|[\u3005-\u3005]|[\u3031-\u3035]|[\u309D-\u309E]|[\u30FC-\u30FE]|[\uFF70-\uFF70]|[\uFF9E-\uFF9F]/,Lo:/[\u01AA-\u01AA]|[\u01BB-\u01BB]|[\u01BE-\u01C3]|[\u03F3-\u03F3]|[\u04C0-\u04C0]|[\u05D0-\u05EA]|[\u05F0-\u05F2]|[\u0621-\u063A]|[\u0641-\u064A]|[\u0671-\u06B7]|[\u06BA-\u06BE]|[\u06C0-\u06CE]|[\u06D0-\u06D3]|[\u06D5-\u06D5]|[\u0905-\u0939]|[\u093D-\u093D]|[\u0950-\u0950]|[\u0958-\u0961]|[\u0985-\u098C]|[\u098F-\u0990]|[\u0993-\u09A8]|[\u09AA-\u09B0]|[\u09B2-\u09B2]|[\u09B6-\u09B9]|[\u09DC-\u09DD]|[\u09DF-\u09E1]|[\u09F0-\u09F1]|[\u0A05-\u0A0A]|[\u0A0F-\u0A10]|[\u0A13-\u0A28]|[\u0A2A-\u0A30]|[\u0A32-\u0A33]|[\u0A35-\u0A36]|[\u0A38-\u0A39]|[\u0A59-\u0A5C]|[\u0A5E-\u0A5E]|[\u0A72-\u0A74]|[\u0A85-\u0A8B]|[\u0A8D-\u0A8D]|[\u0A8F-\u0A91]|[\u0A93-\u0AA8]|[\u0AAA-\u0AB0]|[\u0AB2-\u0AB3]|[\u0AB5-\u0AB9]|[\u0ABD-\u0ABD]|[\u0AD0-\u0AD0]|[\u0AE0-\u0AE0]|[\u0B05-\u0B0C]|[\u0B0F-\u0B10]|[\u0B13-\u0B28]|[\u0B2A-\u0B30]|[\u0B32-\u0B33]|[\u0B36-\u0B39]|[\u0B3D-\u0B3D]|[\u0B5C-\u0B5D]|[\u0B5F-\u0B61]|[\u0B85-\u0B8A]|[\u0B8E-\u0B90]|[\u0B92-\u0B95]|[\u0B99-\u0B9A]|[\u0B9C-\u0B9C]|[\u0B9E-\u0B9F]|[\u0BA3-\u0BA4]|[\u0BA8-\u0BAA]|[\u0BAE-\u0BB5]|[\u0BB7-\u0BB9]|[\u0C05-\u0C0C]|[\u0C0E-\u0C10]|[\u0C12-\u0C28]|[\u0C2A-\u0C33]|[\u0C35-\u0C39]|[\u0C60-\u0C61]|[\u0C85-\u0C8C]|[\u0C8E-\u0C90]|[\u0C92-\u0CA8]|[\u0CAA-\u0CB3]|[\u0CB5-\u0CB9]|[\u0CDE-\u0CDE]|[\u0CE0-\u0CE1]|[\u0D05-\u0D0C]|[\u0D0E-\u0D10]|[\u0D12-\u0D28]|[\u0D2A-\u0D39]|[\u0D60-\u0D61]|[\u0E01-\u0E30]|[\u0E32-\u0E33]|[\u0E40-\u0E45]|[\u0E81-\u0E82]|[\u0E84-\u0E84]|[\u0E87-\u0E88]|[\u0E8A-\u0E8A]|[\u0E8D-\u0E8D]|[\u0E94-\u0E97]|[\u0E99-\u0E9F]|[\u0EA1-\u0EA3]|[\u0EA5-\u0EA5]|[\u0EA7-\u0EA7]|[\u0EAA-\u0EAB]|[\u0EAD-\u0EB0]|[\u0EB2-\u0EB3]|[\u0EBD-\u0EBD]|[\u0EC0-\u0EC4]|[\u0EDC-\u0EDD]|[\u0F00-\u0F00]|[\u0F40-\u0F47]|[\u0F49-\u0F69]|[\u0F88-\u0F8B]|[\u1100-\u1159]|[\u115F-\u11A2]|[\u11A8-\u11F9]|[\u2135-\u2138]|[\u3006-\u3006]|[\u3041-\u3094]|[\u30A1-\u30FA]|[\u3105-\u312C]|[\u3131-\u318E]|[\u4E00-\u9FA5]|[\uAC00-\uD7A3]|[\uF900-\uFA2D]|[\uFB1F-\uFB28]|[\uFB2A-\uFB36]|[\uFB38-\uFB3C]|[\uFB3E-\uFB3E]|[\uFB40-\uFB41]|[\uFB43-\uFB44]|[\uFB46-\uFBB1]|[\uFBD3-\uFD3D]|[\uFD50-\uFD8F]|[\uFD92-\uFDC7]|[\uFDF0-\uFDFB]|[\uFE70-\uFE72]|[\uFE74-\uFE74]|[\uFE76-\uFEFC]|[\uFF66-\uFF6F]|[\uFF71-\uFF9D]|[\uFFA0-\uFFBE]|[\uFFC2-\uFFC7]|[\uFFCA-\uFFCF]|[\uFFD2-\uFFD7]|[\uFFDA-\uFFDC]/,Nl:/[\u2160-\u2182]|[\u3007-\u3007]|[\u3021-\u3029]/,Nd:/[\u0030-\u0039]|[\u0660-\u0669]|[\u06F0-\u06F9]|[\u0966-\u096F]|[\u09E6-\u09EF]|[\u0A66-\u0A6F]|[\u0AE6-\u0AEF]|[\u0B66-\u0B6F]|[\u0BE7-\u0BEF]|[\u0C66-\u0C6F]|[\u0CE6-\u0CEF]|[\u0D66-\u0D6F]|[\u0E50-\u0E59]|[\u0ED0-\u0ED9]|[\u0F20-\u0F29]|[\uFF10-\uFF19]/,Mn:/[\u0300-\u0345]|[\u0360-\u0361]|[\u0483-\u0486]|[\u0591-\u05A1]|[\u05A3-\u05B9]|[\u05BB-\u05BD]|[\u05BF-\u05BF]|[\u05C1-\u05C2]|[\u05C4-\u05C4]|[\u064B-\u0652]|[\u0670-\u0670]|[\u06D6-\u06DC]|[\u06DF-\u06E4]|[\u06E7-\u06E8]|[\u06EA-\u06ED]|[\u0901-\u0902]|[\u093C-\u093C]|[\u0941-\u0948]|[\u094D-\u094D]|[\u0951-\u0954]|[\u0962-\u0963]|[\u0981-\u0981]|[\u09BC-\u09BC]|[\u09C1-\u09C4]|[\u09CD-\u09CD]|[\u09E2-\u09E3]|[\u0A02-\u0A02]|[\u0A3C-\u0A3C]|[\u0A41-\u0A42]|[\u0A47-\u0A48]|[\u0A4B-\u0A4D]|[\u0A70-\u0A71]|[\u0A81-\u0A82]|[\u0ABC-\u0ABC]|[\u0AC1-\u0AC5]|[\u0AC7-\u0AC8]|[\u0ACD-\u0ACD]|[\u0B01-\u0B01]|[\u0B3C-\u0B3C]|[\u0B3F-\u0B3F]|[\u0B41-\u0B43]|[\u0B4D-\u0B4D]|[\u0B56-\u0B56]|[\u0B82-\u0B82]|[\u0BC0-\u0BC0]|[\u0BCD-\u0BCD]|[\u0C3E-\u0C40]|[\u0C46-\u0C48]|[\u0C4A-\u0C4D]|[\u0C55-\u0C56]|[\u0CBF-\u0CBF]|[\u0CC6-\u0CC6]|[\u0CCC-\u0CCD]|[\u0D41-\u0D43]|[\u0D4D-\u0D4D]|[\u0E31-\u0E31]|[\u0E34-\u0E3A]|[\u0E47-\u0E4E]|[\u0EB1-\u0EB1]|[\u0EB4-\u0EB9]|[\u0EBB-\u0EBC]|[\u0EC8-\u0ECD]|[\u0F18-\u0F19]|[\u0F35-\u0F35]|[\u0F37-\u0F37]|[\u0F39-\u0F39]|[\u0F71-\u0F7E]|[\u0F80-\u0F84]|[\u0F86-\u0F87]|[\u0F90-\u0F95]|[\u0F97-\u0F97]|[\u0F99-\u0FAD]|[\u0FB1-\u0FB7]|[\u0FB9-\u0FB9]|[\u20D0-\u20DC]|[\u20E1-\u20E1]|[\u302A-\u302F]|[\u3099-\u309A]|[\uFB1E-\uFB1E]|[\uFE20-\uFE23]/,Mc:/[\u0903-\u0903]|[\u093E-\u0940]|[\u0949-\u094C]|[\u0982-\u0983]|[\u09BE-\u09C0]|[\u09C7-\u09C8]|[\u09CB-\u09CC]|[\u09D7-\u09D7]|[\u0A3E-\u0A40]|[\u0A83-\u0A83]|[\u0ABE-\u0AC0]|[\u0AC9-\u0AC9]|[\u0ACB-\u0ACC]|[\u0B02-\u0B03]|[\u0B3E-\u0B3E]|[\u0B40-\u0B40]|[\u0B47-\u0B48]|[\u0B4B-\u0B4C]|[\u0B57-\u0B57]|[\u0B83-\u0B83]|[\u0BBE-\u0BBF]|[\u0BC1-\u0BC2]|[\u0BC6-\u0BC8]|[\u0BCA-\u0BCC]|[\u0BD7-\u0BD7]|[\u0C01-\u0C03]|[\u0C41-\u0C44]|[\u0C82-\u0C83]|[\u0CBE-\u0CBE]|[\u0CC0-\u0CC4]|[\u0CC7-\u0CC8]|[\u0CCA-\u0CCB]|[\u0CD5-\u0CD6]|[\u0D02-\u0D03]|[\u0D3E-\u0D40]|[\u0D46-\u0D48]|[\u0D4A-\u0D4C]|[\u0D57-\u0D57]|[\u0F3E-\u0F3F]|[\u0F7F-\u0F7F]/,Pc:/[\u005F-\u005F]|[\u203F-\u2040]|[\u30FB-\u30FB]|[\uFE33-\uFE34]|[\uFE4D-\uFE4F]|[\uFF3F-\uFF3F]|[\uFF65-\uFF65]/,Zs:/[\u2000-\u200B]|[\u3000-\u3000]/,L:/[\u0041-\u005A]|[\u00C0-\u00D6]|[\u00D8-\u00DE]|[\u0100-\u0100]|[\u0102-\u0102]|[\u0104-\u0104]|[\u0106-\u0106]|[\u0108-\u0108]|[\u010A-\u010A]|[\u010C-\u010C]|[\u010E-\u010E]|[\u0110-\u0110]|[\u0112-\u0112]|[\u0114-\u0114]|[\u0116-\u0116]|[\u0118-\u0118]|[\u011A-\u011A]|[\u011C-\u011C]|[\u011E-\u011E]|[\u0120-\u0120]|[\u0122-\u0122]|[\u0124-\u0124]|[\u0126-\u0126]|[\u0128-\u0128]|[\u012A-\u012A]|[\u012C-\u012C]|[\u012E-\u012E]|[\u0130-\u0130]|[\u0132-\u0132]|[\u0134-\u0134]|[\u0136-\u0136]|[\u0139-\u0139]|[\u013B-\u013B]|[\u013D-\u013D]|[\u013F-\u013F]|[\u0141-\u0141]|[\u0143-\u0143]|[\u0145-\u0145]|[\u0147-\u0147]|[\u014A-\u014A]|[\u014C-\u014C]|[\u014E-\u014E]|[\u0150-\u0150]|[\u0152-\u0152]|[\u0154-\u0154]|[\u0156-\u0156]|[\u0158-\u0158]|[\u015A-\u015A]|[\u015C-\u015C]|[\u015E-\u015E]|[\u0160-\u0160]|[\u0162-\u0162]|[\u0164-\u0164]|[\u0166-\u0166]|[\u0168-\u0168]|[\u016A-\u016A]|[\u016C-\u016C]|[\u016E-\u016E]|[\u0170-\u0170]|[\u0172-\u0172]|[\u0174-\u0174]|[\u0176-\u0176]|[\u0178-\u0179]|[\u017B-\u017B]|[\u017D-\u017D]|[\u0181-\u0182]|[\u0184-\u0184]|[\u0186-\u0187]|[\u0189-\u018B]|[\u018E-\u0191]|[\u0193-\u0194]|[\u0196-\u0198]|[\u019C-\u019D]|[\u019F-\u01A0]|[\u01A2-\u01A2]|[\u01A4-\u01A4]|[\u01A6-\u01A7]|[\u01A9-\u01A9]|[\u01AC-\u01AC]|[\u01AE-\u01AF]|[\u01B1-\u01B3]|[\u01B5-\u01B5]|[\u01B7-\u01B8]|[\u01BC-\u01BC]|[\u01C4-\u01C4]|[\u01C7-\u01C7]|[\u01CA-\u01CA]|[\u01CD-\u01CD]|[\u01CF-\u01CF]|[\u01D1-\u01D1]|[\u01D3-\u01D3]|[\u01D5-\u01D5]|[\u01D7-\u01D7]|[\u01D9-\u01D9]|[\u01DB-\u01DB]|[\u01DE-\u01DE]|[\u01E0-\u01E0]|[\u01E2-\u01E2]|[\u01E4-\u01E4]|[\u01E6-\u01E6]|[\u01E8-\u01E8]|[\u01EA-\u01EA]|[\u01EC-\u01EC]|[\u01EE-\u01EE]|[\u01F1-\u01F1]|[\u01F4-\u01F4]|[\u01FA-\u01FA]|[\u01FC-\u01FC]|[\u01FE-\u01FE]|[\u0200-\u0200]|[\u0202-\u0202]|[\u0204-\u0204]|[\u0206-\u0206]|[\u0208-\u0208]|[\u020A-\u020A]|[\u020C-\u020C]|[\u020E-\u020E]|[\u0210-\u0210]|[\u0212-\u0212]|[\u0214-\u0214]|[\u0216-\u0216]|[\u0386-\u0386]|[\u0388-\u038A]|[\u038C-\u038C]|[\u038E-\u038F]|[\u0391-\u03A1]|[\u03A3-\u03AB]|[\u03D2-\u03D4]|[\u03DA-\u03DA]|[\u03DC-\u03DC]|[\u03DE-\u03DE]|[\u03E0-\u03E0]|[\u03E2-\u03E2]|[\u03E4-\u03E4]|[\u03E6-\u03E6]|[\u03E8-\u03E8]|[\u03EA-\u03EA]|[\u03EC-\u03EC]|[\u03EE-\u03EE]|[\u0401-\u040C]|[\u040E-\u042F]|[\u0460-\u0460]|[\u0462-\u0462]|[\u0464-\u0464]|[\u0466-\u0466]|[\u0468-\u0468]|[\u046A-\u046A]|[\u046C-\u046C]|[\u046E-\u046E]|[\u0470-\u0470]|[\u0472-\u0472]|[\u0474-\u0474]|[\u0476-\u0476]|[\u0478-\u0478]|[\u047A-\u047A]|[\u047C-\u047C]|[\u047E-\u047E]|[\u0480-\u0480]|[\u0490-\u0490]|[\u0492-\u0492]|[\u0494-\u0494]|[\u0496-\u0496]|[\u0498-\u0498]|[\u049A-\u049A]|[\u049C-\u049C]|[\u049E-\u049E]|[\u04A0-\u04A0]|[\u04A2-\u04A2]|[\u04A4-\u04A4]|[\u04A6-\u04A6]|[\u04A8-\u04A8]|[\u04AA-\u04AA]|[\u04AC-\u04AC]|[\u04AE-\u04AE]|[\u04B0-\u04B0]|[\u04B2-\u04B2]|[\u04B4-\u04B4]|[\u04B6-\u04B6]|[\u04B8-\u04B8]|[\u04BA-\u04BA]|[\u04BC-\u04BC]|[\u04BE-\u04BE]|[\u04C1-\u04C1]|[\u04C3-\u04C3]|[\u04C7-\u04C7]|[\u04CB-\u04CB]|[\u04D0-\u04D0]|[\u04D2-\u04D2]|[\u04D4-\u04D4]|[\u04D6-\u04D6]|[\u04D8-\u04D8]|[\u04DA-\u04DA]|[\u04DC-\u04DC]|[\u04DE-\u04DE]|[\u04E0-\u04E0]|[\u04E2-\u04E2]|[\u04E4-\u04E4]|[\u04E6-\u04E6]|[\u04E8-\u04E8]|[\u04EA-\u04EA]|[\u04EE-\u04EE]|[\u04F0-\u04F0]|[\u04F2-\u04F2]|[\u04F4-\u04F4]|[\u04F8-\u04F8]|[\u0531-\u0556]|[\u10A0-\u10C5]|[\u1E00-\u1E00]|[\u1E02-\u1E02]|[\u1E04-\u1E04]|[\u1E06-\u1E06]|[\u1E08-\u1E08]|[\u1E0A-\u1E0A]|[\u1E0C-\u1E0C]|[\u1E0E-\u1E0E]|[\u1E10-\u1E10]|[\u1E12-\u1E12]|[\u1E14-\u1E14]|[\u1E16-\u1E16]|[\u1E18-\u1E18]|[\u1E1A-\u1E1A]|[\u1E1C-\u1E1C]|[\u1E1E-\u1E1E]|[\u1E20-\u1E20]|[\u1E22-\u1E22]|[\u1E24-\u1E24]|[\u1E26-\u1E26]|[\u1E28-\u1E28]|[\u1E2A-\u1E2A]|[\u1E2C-\u1E2C]|[\u1E2E-\u1E2E]|[\u1E30-\u1E30]|[\u1E32-\u1E32]|[\u1E34-\u1E34]|[\u1E36-\u1E36]|[\u1E38-\u1E38]|[\u1E3A-\u1E3A]|[\u1E3C-\u1E3C]|[\u1E3E-\u1E3E]|[\u1E40-\u1E40]|[\u1E42-\u1E42]|[\u1E44-\u1E44]|[\u1E46-\u1E46]|[\u1E48-\u1E48]|[\u1E4A-\u1E4A]|[\u1E4C-\u1E4C]|[\u1E4E-\u1E4E]|[\u1E50-\u1E50]|[\u1E52-\u1E52]|[\u1E54-\u1E54]|[\u1E56-\u1E56]|[\u1E58-\u1E58]|[\u1E5A-\u1E5A]|[\u1E5C-\u1E5C]|[\u1E5E-\u1E5E]|[\u1E60-\u1E60]|[\u1E62-\u1E62]|[\u1E64-\u1E64]|[\u1E66-\u1E66]|[\u1E68-\u1E68]|[\u1E6A-\u1E6A]|[\u1E6C-\u1E6C]|[\u1E6E-\u1E6E]|[\u1E70-\u1E70]|[\u1E72-\u1E72]|[\u1E74-\u1E74]|[\u1E76-\u1E76]|[\u1E78-\u1E78]|[\u1E7A-\u1E7A]|[\u1E7C-\u1E7C]|[\u1E7E-\u1E7E]|[\u1E80-\u1E80]|[\u1E82-\u1E82]|[\u1E84-\u1E84]|[\u1E86-\u1E86]|[\u1E88-\u1E88]|[\u1E8A-\u1E8A]|[\u1E8C-\u1E8C]|[\u1E8E-\u1E8E]|[\u1E90-\u1E90]|[\u1E92-\u1E92]|[\u1E94-\u1E94]|[\u1EA0-\u1EA0]|[\u1EA2-\u1EA2]|[\u1EA4-\u1EA4]|[\u1EA6-\u1EA6]|[\u1EA8-\u1EA8]|[\u1EAA-\u1EAA]|[\u1EAC-\u1EAC]|[\u1EAE-\u1EAE]|[\u1EB0-\u1EB0]|[\u1EB2-\u1EB2]|[\u1EB4-\u1EB4]|[\u1EB6-\u1EB6]|[\u1EB8-\u1EB8]|[\u1EBA-\u1EBA]|[\u1EBC-\u1EBC]|[\u1EBE-\u1EBE]|[\u1EC0-\u1EC0]|[\u1EC2-\u1EC2]|[\u1EC4-\u1EC4]|[\u1EC6-\u1EC6]|[\u1EC8-\u1EC8]|[\u1ECA-\u1ECA]|[\u1ECC-\u1ECC]|[\u1ECE-\u1ECE]|[\u1ED0-\u1ED0]|[\u1ED2-\u1ED2]|[\u1ED4-\u1ED4]|[\u1ED6-\u1ED6]|[\u1ED8-\u1ED8]|[\u1EDA-\u1EDA]|[\u1EDC-\u1EDC]|[\u1EDE-\u1EDE]|[\u1EE0-\u1EE0]|[\u1EE2-\u1EE2]|[\u1EE4-\u1EE4]|[\u1EE6-\u1EE6]|[\u1EE8-\u1EE8]|[\u1EEA-\u1EEA]|[\u1EEC-\u1EEC]|[\u1EEE-\u1EEE]|[\u1EF0-\u1EF0]|[\u1EF2-\u1EF2]|[\u1EF4-\u1EF4]|[\u1EF6-\u1EF6]|[\u1EF8-\u1EF8]|[\u1F08-\u1F0F]|[\u1F18-\u1F1D]|[\u1F28-\u1F2F]|[\u1F38-\u1F3F]|[\u1F48-\u1F4D]|[\u1F59-\u1F59]|[\u1F5B-\u1F5B]|[\u1F5D-\u1F5D]|[\u1F5F-\u1F5F]|[\u1F68-\u1F6F]|[\u1F88-\u1F8F]|[\u1F98-\u1F9F]|[\u1FA8-\u1FAF]|[\u1FB8-\u1FBC]|[\u1FC8-\u1FCC]|[\u1FD8-\u1FDB]|[\u1FE8-\u1FEC]|[\u1FF8-\u1FFC]|[\u2102-\u2102]|[\u2107-\u2107]|[\u210B-\u210D]|[\u2110-\u2112]|[\u2115-\u2115]|[\u2119-\u211D]|[\u2124-\u2124]|[\u2126-\u2126]|[\u2128-\u2128]|[\u212A-\u212D]|[\u2130-\u2131]|[\u2133-\u2133]|[\uFF21-\uFF3A]|[\u0061-\u007A]|[\u00AA-\u00AA]|[\u00B5-\u00B5]|[\u00BA-\u00BA]|[\u00DF-\u00F6]|[\u00F8-\u00FF]|[\u0101-\u0101]|[\u0103-\u0103]|[\u0105-\u0105]|[\u0107-\u0107]|[\u0109-\u0109]|[\u010B-\u010B]|[\u010D-\u010D]|[\u010F-\u010F]|[\u0111-\u0111]|[\u0113-\u0113]|[\u0115-\u0115]|[\u0117-\u0117]|[\u0119-\u0119]|[\u011B-\u011B]|[\u011D-\u011D]|[\u011F-\u011F]|[\u0121-\u0121]|[\u0123-\u0123]|[\u0125-\u0125]|[\u0127-\u0127]|[\u0129-\u0129]|[\u012B-\u012B]|[\u012D-\u012D]|[\u012F-\u012F]|[\u0131-\u0131]|[\u0133-\u0133]|[\u0135-\u0135]|[\u0137-\u0138]|[\u013A-\u013A]|[\u013C-\u013C]|[\u013E-\u013E]|[\u0140-\u0140]|[\u0142-\u0142]|[\u0144-\u0144]|[\u0146-\u0146]|[\u0148-\u0149]|[\u014B-\u014B]|[\u014D-\u014D]|[\u014F-\u014F]|[\u0151-\u0151]|[\u0153-\u0153]|[\u0155-\u0155]|[\u0157-\u0157]|[\u0159-\u0159]|[\u015B-\u015B]|[\u015D-\u015D]|[\u015F-\u015F]|[\u0161-\u0161]|[\u0163-\u0163]|[\u0165-\u0165]|[\u0167-\u0167]|[\u0169-\u0169]|[\u016B-\u016B]|[\u016D-\u016D]|[\u016F-\u016F]|[\u0171-\u0171]|[\u0173-\u0173]|[\u0175-\u0175]|[\u0177-\u0177]|[\u017A-\u017A]|[\u017C-\u017C]|[\u017E-\u0180]|[\u0183-\u0183]|[\u0185-\u0185]|[\u0188-\u0188]|[\u018C-\u018D]|[\u0192-\u0192]|[\u0195-\u0195]|[\u0199-\u019B]|[\u019E-\u019E]|[\u01A1-\u01A1]|[\u01A3-\u01A3]|[\u01A5-\u01A5]|[\u01A8-\u01A8]|[\u01AB-\u01AB]|[\u01AD-\u01AD]|[\u01B0-\u01B0]|[\u01B4-\u01B4]|[\u01B6-\u01B6]|[\u01B9-\u01BA]|[\u01BD-\u01BD]|[\u01C6-\u01C6]|[\u01C9-\u01C9]|[\u01CC-\u01CC]|[\u01CE-\u01CE]|[\u01D0-\u01D0]|[\u01D2-\u01D2]|[\u01D4-\u01D4]|[\u01D6-\u01D6]|[\u01D8-\u01D8]|[\u01DA-\u01DA]|[\u01DC-\u01DD]|[\u01DF-\u01DF]|[\u01E1-\u01E1]|[\u01E3-\u01E3]|[\u01E5-\u01E5]|[\u01E7-\u01E7]|[\u01E9-\u01E9]|[\u01EB-\u01EB]|[\u01ED-\u01ED]|[\u01EF-\u01F0]|[\u01F3-\u01F3]|[\u01F5-\u01F5]|[\u01FB-\u01FB]|[\u01FD-\u01FD]|[\u01FF-\u01FF]|[\u0201-\u0201]|[\u0203-\u0203]|[\u0205-\u0205]|[\u0207-\u0207]|[\u0209-\u0209]|[\u020B-\u020B]|[\u020D-\u020D]|[\u020F-\u020F]|[\u0211-\u0211]|[\u0213-\u0213]|[\u0215-\u0215]|[\u0217-\u0217]|[\u0250-\u02A8]|[\u0390-\u0390]|[\u03AC-\u03CE]|[\u03D0-\u03D1]|[\u03D5-\u03D6]|[\u03E3-\u03E3]|[\u03E5-\u03E5]|[\u03E7-\u03E7]|[\u03E9-\u03E9]|[\u03EB-\u03EB]|[\u03ED-\u03ED]|[\u03EF-\u03F2]|[\u0430-\u044F]|[\u0451-\u045C]|[\u045E-\u045F]|[\u0461-\u0461]|[\u0463-\u0463]|[\u0465-\u0465]|[\u0467-\u0467]|[\u0469-\u0469]|[\u046B-\u046B]|[\u046D-\u046D]|[\u046F-\u046F]|[\u0471-\u0471]|[\u0473-\u0473]|[\u0475-\u0475]|[\u0477-\u0477]|[\u0479-\u0479]|[\u047B-\u047B]|[\u047D-\u047D]|[\u047F-\u047F]|[\u0481-\u0481]|[\u0491-\u0491]|[\u0493-\u0493]|[\u0495-\u0495]|[\u0497-\u0497]|[\u0499-\u0499]|[\u049B-\u049B]|[\u049D-\u049D]|[\u049F-\u049F]|[\u04A1-\u04A1]|[\u04A3-\u04A3]|[\u04A5-\u04A5]|[\u04A7-\u04A7]|[\u04A9-\u04A9]|[\u04AB-\u04AB]|[\u04AD-\u04AD]|[\u04AF-\u04AF]|[\u04B1-\u04B1]|[\u04B3-\u04B3]|[\u04B5-\u04B5]|[\u04B7-\u04B7]|[\u04B9-\u04B9]|[\u04BB-\u04BB]|[\u04BD-\u04BD]|[\u04BF-\u04BF]|[\u04C2-\u04C2]|[\u04C4-\u04C4]|[\u04C8-\u04C8]|[\u04CC-\u04CC]|[\u04D1-\u04D1]|[\u04D3-\u04D3]|[\u04D5-\u04D5]|[\u04D7-\u04D7]|[\u04D9-\u04D9]|[\u04DB-\u04DB]|[\u04DD-\u04DD]|[\u04DF-\u04DF]|[\u04E1-\u04E1]|[\u04E3-\u04E3]|[\u04E5-\u04E5]|[\u04E7-\u04E7]|[\u04E9-\u04E9]|[\u04EB-\u04EB]|[\u04EF-\u04EF]|[\u04F1-\u04F1]|[\u04F3-\u04F3]|[\u04F5-\u04F5]|[\u04F9-\u04F9]|[\u0561-\u0587]|[\u10D0-\u10F6]|[\u1E01-\u1E01]|[\u1E03-\u1E03]|[\u1E05-\u1E05]|[\u1E07-\u1E07]|[\u1E09-\u1E09]|[\u1E0B-\u1E0B]|[\u1E0D-\u1E0D]|[\u1E0F-\u1E0F]|[\u1E11-\u1E11]|[\u1E13-\u1E13]|[\u1E15-\u1E15]|[\u1E17-\u1E17]|[\u1E19-\u1E19]|[\u1E1B-\u1E1B]|[\u1E1D-\u1E1D]|[\u1E1F-\u1E1F]|[\u1E21-\u1E21]|[\u1E23-\u1E23]|[\u1E25-\u1E25]|[\u1E27-\u1E27]|[\u1E29-\u1E29]|[\u1E2B-\u1E2B]|[\u1E2D-\u1E2D]|[\u1E2F-\u1E2F]|[\u1E31-\u1E31]|[\u1E33-\u1E33]|[\u1E35-\u1E35]|[\u1E37-\u1E37]|[\u1E39-\u1E39]|[\u1E3B-\u1E3B]|[\u1E3D-\u1E3D]|[\u1E3F-\u1E3F]|[\u1E41-\u1E41]|[\u1E43-\u1E43]|[\u1E45-\u1E45]|[\u1E47-\u1E47]|[\u1E49-\u1E49]|[\u1E4B-\u1E4B]|[\u1E4D-\u1E4D]|[\u1E4F-\u1E4F]|[\u1E51-\u1E51]|[\u1E53-\u1E53]|[\u1E55-\u1E55]|[\u1E57-\u1E57]|[\u1E59-\u1E59]|[\u1E5B-\u1E5B]|[\u1E5D-\u1E5D]|[\u1E5F-\u1E5F]|[\u1E61-\u1E61]|[\u1E63-\u1E63]|[\u1E65-\u1E65]|[\u1E67-\u1E67]|[\u1E69-\u1E69]|[\u1E6B-\u1E6B]|[\u1E6D-\u1E6D]|[\u1E6F-\u1E6F]|[\u1E71-\u1E71]|[\u1E73-\u1E73]|[\u1E75-\u1E75]|[\u1E77-\u1E77]|[\u1E79-\u1E79]|[\u1E7B-\u1E7B]|[\u1E7D-\u1E7D]|[\u1E7F-\u1E7F]|[\u1E81-\u1E81]|[\u1E83-\u1E83]|[\u1E85-\u1E85]|[\u1E87-\u1E87]|[\u1E89-\u1E89]|[\u1E8B-\u1E8B]|[\u1E8D-\u1E8D]|[\u1E8F-\u1E8F]|[\u1E91-\u1E91]|[\u1E93-\u1E93]|[\u1E95-\u1E9B]|[\u1EA1-\u1EA1]|[\u1EA3-\u1EA3]|[\u1EA5-\u1EA5]|[\u1EA7-\u1EA7]|[\u1EA9-\u1EA9]|[\u1EAB-\u1EAB]|[\u1EAD-\u1EAD]|[\u1EAF-\u1EAF]|[\u1EB1-\u1EB1]|[\u1EB3-\u1EB3]|[\u1EB5-\u1EB5]|[\u1EB7-\u1EB7]|[\u1EB9-\u1EB9]|[\u1EBB-\u1EBB]|[\u1EBD-\u1EBD]|[\u1EBF-\u1EBF]|[\u1EC1-\u1EC1]|[\u1EC3-\u1EC3]|[\u1EC5-\u1EC5]|[\u1EC7-\u1EC7]|[\u1EC9-\u1EC9]|[\u1ECB-\u1ECB]|[\u1ECD-\u1ECD]|[\u1ECF-\u1ECF]|[\u1ED1-\u1ED1]|[\u1ED3-\u1ED3]|[\u1ED5-\u1ED5]|[\u1ED7-\u1ED7]|[\u1ED9-\u1ED9]|[\u1EDB-\u1EDB]|[\u1EDD-\u1EDD]|[\u1EDF-\u1EDF]|[\u1EE1-\u1EE1]|[\u1EE3-\u1EE3]|[\u1EE5-\u1EE5]|[\u1EE7-\u1EE7]|[\u1EE9-\u1EE9]|[\u1EEB-\u1EEB]|[\u1EED-\u1EED]|[\u1EEF-\u1EEF]|[\u1EF1-\u1EF1]|[\u1EF3-\u1EF3]|[\u1EF5-\u1EF5]|[\u1EF7-\u1EF7]|[\u1EF9-\u1EF9]|[\u1F00-\u1F07]|[\u1F10-\u1F15]|[\u1F20-\u1F27]|[\u1F30-\u1F37]|[\u1F40-\u1F45]|[\u1F50-\u1F57]|[\u1F60-\u1F67]|[\u1F70-\u1F7D]|[\u1F80-\u1F87]|[\u1F90-\u1F97]|[\u1FA0-\u1FA7]|[\u1FB0-\u1FB4]|[\u1FB6-\u1FB7]|[\u1FBE-\u1FBE]|[\u1FC2-\u1FC4]|[\u1FC6-\u1FC7]|[\u1FD0-\u1FD3]|[\u1FD6-\u1FD7]|[\u1FE0-\u1FE7]|[\u1FF2-\u1FF4]|[\u1FF6-\u1FF7]|[\u207F-\u207F]|[\u210A-\u210A]|[\u210E-\u210F]|[\u2113-\u2113]|[\u2118-\u2118]|[\u212E-\u212F]|[\u2134-\u2134]|[\uFB00-\uFB06]|[\uFB13-\uFB17]|[\uFF41-\uFF5A]|[\u01C5-\u01C5]|[\u01C8-\u01C8]|[\u01CB-\u01CB]|[\u01F2-\u01F2]|[\u02B0-\u02B8]|[\u02BB-\u02C1]|[\u02D0-\u02D1]|[\u02E0-\u02E4]|[\u037A-\u037A]|[\u0559-\u0559]|[\u0640-\u0640]|[\u06E5-\u06E6]|[\u0E46-\u0E46]|[\u0EC6-\u0EC6]|[\u3005-\u3005]|[\u3031-\u3035]|[\u309D-\u309E]|[\u30FC-\u30FE]|[\uFF70-\uFF70]|[\uFF9E-\uFF9F]|[\u01AA-\u01AA]|[\u01BB-\u01BB]|[\u01BE-\u01C3]|[\u03F3-\u03F3]|[\u04C0-\u04C0]|[\u05D0-\u05EA]|[\u05F0-\u05F2]|[\u0621-\u063A]|[\u0641-\u064A]|[\u0671-\u06B7]|[\u06BA-\u06BE]|[\u06C0-\u06CE]|[\u06D0-\u06D3]|[\u06D5-\u06D5]|[\u0905-\u0939]|[\u093D-\u093D]|[\u0950-\u0950]|[\u0958-\u0961]|[\u0985-\u098C]|[\u098F-\u0990]|[\u0993-\u09A8]|[\u09AA-\u09B0]|[\u09B2-\u09B2]|[\u09B6-\u09B9]|[\u09DC-\u09DD]|[\u09DF-\u09E1]|[\u09F0-\u09F1]|[\u0A05-\u0A0A]|[\u0A0F-\u0A10]|[\u0A13-\u0A28]|[\u0A2A-\u0A30]|[\u0A32-\u0A33]|[\u0A35-\u0A36]|[\u0A38-\u0A39]|[\u0A59-\u0A5C]|[\u0A5E-\u0A5E]|[\u0A72-\u0A74]|[\u0A85-\u0A8B]|[\u0A8D-\u0A8D]|[\u0A8F-\u0A91]|[\u0A93-\u0AA8]|[\u0AAA-\u0AB0]|[\u0AB2-\u0AB3]|[\u0AB5-\u0AB9]|[\u0ABD-\u0ABD]|[\u0AD0-\u0AD0]|[\u0AE0-\u0AE0]|[\u0B05-\u0B0C]|[\u0B0F-\u0B10]|[\u0B13-\u0B28]|[\u0B2A-\u0B30]|[\u0B32-\u0B33]|[\u0B36-\u0B39]|[\u0B3D-\u0B3D]|[\u0B5C-\u0B5D]|[\u0B5F-\u0B61]|[\u0B85-\u0B8A]|[\u0B8E-\u0B90]|[\u0B92-\u0B95]|[\u0B99-\u0B9A]|[\u0B9C-\u0B9C]|[\u0B9E-\u0B9F]|[\u0BA3-\u0BA4]|[\u0BA8-\u0BAA]|[\u0BAE-\u0BB5]|[\u0BB7-\u0BB9]|[\u0C05-\u0C0C]|[\u0C0E-\u0C10]|[\u0C12-\u0C28]|[\u0C2A-\u0C33]|[\u0C35-\u0C39]|[\u0C60-\u0C61]|[\u0C85-\u0C8C]|[\u0C8E-\u0C90]|[\u0C92-\u0CA8]|[\u0CAA-\u0CB3]|[\u0CB5-\u0CB9]|[\u0CDE-\u0CDE]|[\u0CE0-\u0CE1]|[\u0D05-\u0D0C]|[\u0D0E-\u0D10]|[\u0D12-\u0D28]|[\u0D2A-\u0D39]|[\u0D60-\u0D61]|[\u0E01-\u0E30]|[\u0E32-\u0E33]|[\u0E40-\u0E45]|[\u0E81-\u0E82]|[\u0E84-\u0E84]|[\u0E87-\u0E88]|[\u0E8A-\u0E8A]|[\u0E8D-\u0E8D]|[\u0E94-\u0E97]|[\u0E99-\u0E9F]|[\u0EA1-\u0EA3]|[\u0EA5-\u0EA5]|[\u0EA7-\u0EA7]|[\u0EAA-\u0EAB]|[\u0EAD-\u0EB0]|[\u0EB2-\u0EB3]|[\u0EBD-\u0EBD]|[\u0EC0-\u0EC4]|[\u0EDC-\u0EDD]|[\u0F00-\u0F00]|[\u0F40-\u0F47]|[\u0F49-\u0F69]|[\u0F88-\u0F8B]|[\u1100-\u1159]|[\u115F-\u11A2]|[\u11A8-\u11F9]|[\u2135-\u2138]|[\u3006-\u3006]|[\u3041-\u3094]|[\u30A1-\u30FA]|[\u3105-\u312C]|[\u3131-\u318E]|[\u4E00-\u9FA5]|[\uAC00-\uD7A3]|[\uF900-\uFA2D]|[\uFB1F-\uFB28]|[\uFB2A-\uFB36]|[\uFB38-\uFB3C]|[\uFB3E-\uFB3E]|[\uFB40-\uFB41]|[\uFB43-\uFB44]|[\uFB46-\uFBB1]|[\uFBD3-\uFD3D]|[\uFD50-\uFD8F]|[\uFD92-\uFDC7]|[\uFDF0-\uFDFB]|[\uFE70-\uFE72]|[\uFE74-\uFE74]|[\uFE76-\uFEFC]|[\uFF66-\uFF6F]|[\uFF71-\uFF9D]|[\uFFA0-\uFFBE]|[\uFFC2-\uFFC7]|[\uFFCA-\uFFCF]|[\uFFD2-\uFFD7]|[\uFFDA-\uFFDC]/,Ltmo:/[\u01C5-\u01C5]|[\u01C8-\u01C8]|[\u01CB-\u01CB]|[\u01F2-\u01F2][\u02B0-\u02B8]|[\u02BB-\u02C1]|[\u02D0-\u02D1]|[\u02E0-\u02E4]|[\u037A-\u037A]|[\u0559-\u0559]|[\u0640-\u0640]|[\u06E5-\u06E6]|[\u0E46-\u0E46]|[\u0EC6-\u0EC6]|[\u3005-\u3005]|[\u3031-\u3035]|[\u309D-\u309E]|[\u30FC-\u30FE]|[\uFF70-\uFF70]|[\uFF9E-\uFF9F][\u01AA-\u01AA]|[\u01BB-\u01BB]|[\u01BE-\u01C3]|[\u03F3-\u03F3]|[\u04C0-\u04C0]|[\u05D0-\u05EA]|[\u05F0-\u05F2]|[\u0621-\u063A]|[\u0641-\u064A]|[\u0671-\u06B7]|[\u06BA-\u06BE]|[\u06C0-\u06CE]|[\u06D0-\u06D3]|[\u06D5-\u06D5]|[\u0905-\u0939]|[\u093D-\u093D]|[\u0950-\u0950]|[\u0958-\u0961]|[\u0985-\u098C]|[\u098F-\u0990]|[\u0993-\u09A8]|[\u09AA-\u09B0]|[\u09B2-\u09B2]|[\u09B6-\u09B9]|[\u09DC-\u09DD]|[\u09DF-\u09E1]|[\u09F0-\u09F1]|[\u0A05-\u0A0A]|[\u0A0F-\u0A10]|[\u0A13-\u0A28]|[\u0A2A-\u0A30]|[\u0A32-\u0A33]|[\u0A35-\u0A36]|[\u0A38-\u0A39]|[\u0A59-\u0A5C]|[\u0A5E-\u0A5E]|[\u0A72-\u0A74]|[\u0A85-\u0A8B]|[\u0A8D-\u0A8D]|[\u0A8F-\u0A91]|[\u0A93-\u0AA8]|[\u0AAA-\u0AB0]|[\u0AB2-\u0AB3]|[\u0AB5-\u0AB9]|[\u0ABD-\u0ABD]|[\u0AD0-\u0AD0]|[\u0AE0-\u0AE0]|[\u0B05-\u0B0C]|[\u0B0F-\u0B10]|[\u0B13-\u0B28]|[\u0B2A-\u0B30]|[\u0B32-\u0B33]|[\u0B36-\u0B39]|[\u0B3D-\u0B3D]|[\u0B5C-\u0B5D]|[\u0B5F-\u0B61]|[\u0B85-\u0B8A]|[\u0B8E-\u0B90]|[\u0B92-\u0B95]|[\u0B99-\u0B9A]|[\u0B9C-\u0B9C]|[\u0B9E-\u0B9F]|[\u0BA3-\u0BA4]|[\u0BA8-\u0BAA]|[\u0BAE-\u0BB5]|[\u0BB7-\u0BB9]|[\u0C05-\u0C0C]|[\u0C0E-\u0C10]|[\u0C12-\u0C28]|[\u0C2A-\u0C33]|[\u0C35-\u0C39]|[\u0C60-\u0C61]|[\u0C85-\u0C8C]|[\u0C8E-\u0C90]|[\u0C92-\u0CA8]|[\u0CAA-\u0CB3]|[\u0CB5-\u0CB9]|[\u0CDE-\u0CDE]|[\u0CE0-\u0CE1]|[\u0D05-\u0D0C]|[\u0D0E-\u0D10]|[\u0D12-\u0D28]|[\u0D2A-\u0D39]|[\u0D60-\u0D61]|[\u0E01-\u0E30]|[\u0E32-\u0E33]|[\u0E40-\u0E45]|[\u0E81-\u0E82]|[\u0E84-\u0E84]|[\u0E87-\u0E88]|[\u0E8A-\u0E8A]|[\u0E8D-\u0E8D]|[\u0E94-\u0E97]|[\u0E99-\u0E9F]|[\u0EA1-\u0EA3]|[\u0EA5-\u0EA5]|[\u0EA7-\u0EA7]|[\u0EAA-\u0EAB]|[\u0EAD-\u0EB0]|[\u0EB2-\u0EB3]|[\u0EBD-\u0EBD]|[\u0EC0-\u0EC4]|[\u0EDC-\u0EDD]|[\u0F00-\u0F00]|[\u0F40-\u0F47]|[\u0F49-\u0F69]|[\u0F88-\u0F8B]|[\u1100-\u1159]|[\u115F-\u11A2]|[\u11A8-\u11F9]|[\u2135-\u2138]|[\u3006-\u3006]|[\u3041-\u3094]|[\u30A1-\u30FA]|[\u3105-\u312C]|[\u3131-\u318E]|[\u4E00-\u9FA5]|[\uAC00-\uD7A3]|[\uF900-\uFA2D]|[\uFB1F-\uFB28]|[\uFB2A-\uFB36]|[\uFB38-\uFB3C]|[\uFB3E-\uFB3E]|[\uFB40-\uFB41]|[\uFB43-\uFB44]|[\uFB46-\uFBB1]|[\uFBD3-\uFD3D]|[\uFD50-\uFD8F]|[\uFD92-\uFDC7]|[\uFDF0-\uFDFB]|[\uFE70-\uFE72]|[\uFE74-\uFE74]|[\uFE76-\uFEFC]|[\uFF66-\uFF6F]|[\uFF71-\uFF9D]|[\uFFA0-\uFFBE]|[\uFFC2-\uFFC7]|[\uFFCA-\uFFCF]|[\uFFD2-\uFFD7]|[\uFFDA-\uFFDC]/}},{}]},{},[40])(40)});