(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i{let item=new CacheItem;item.key=key;item.value=value;item.isHit=isHit;item.defaultLifetime=this.defaultLifetime;return item});_defineProperty(this,"get",(key,callback,beta=null,metadata=null)=>{let item=this.getItem(key);if(!item.isHit){let save=true;this.save(item.set(callback(item,save)))}return item.get()});_defineProperty(this,"getItem",key=>{let isHit=this.hasItem(key),value=null;if(!isHit){this.values[key]=null}else{value=this.values[key]}let f=this.createCacheItem;return f(key,value,isHit)});_defineProperty(this,"getItems",keys=>{for(let key of keys){if(typeof key!=="string"&&!this.expiries[key]){CacheItem.validateKey(key)}}return this.generateItems(keys,(new Date).getTime()/1e3,this.createCacheItem)});_defineProperty(this,"deleteItems",keys=>{for(let key of keys){this.deleteItem(key)}return true});_defineProperty(this,"save",item=>{if(!item instanceof CacheItem){return false}if(item.expiry!==null&&item.expiry<=(new Date).getTime()/1e3){this.deleteItem(item.key);return true}if(null===item.expiry&&0{return this.save(item)});_defineProperty(this,"commit",()=>{return true});_defineProperty(this,"delete",key=>{return this.deleteItem(key)});_defineProperty(this,"getValues",()=>{return this.values});_defineProperty(this,"hasItem",key=>{if(typeof key==="string"&&this.expiries[key]&&this.expiries[key]>(new Date).getTime()/1e3){return true}CacheItem.validateKey(key);return!!this.expiries[key]&&!this.deleteItem(key)});_defineProperty(this,"clear",()=>{this.values={};this.expiries={};return true});_defineProperty(this,"deleteItem",key=>{if(typeof key!=="string"||!this.expiries[key]){CacheItem.validateKey(key)}delete this.values[key];delete this.expiries[key];return true});_defineProperty(this,"reset",()=>{this.clear()});_defineProperty(this,"generateItems",(keys,now,f)=>{let generated=[];for(let key of keys){let value=null;let isHit=!!this.expiries[key];if(!isHit&&(this.expiries[key]>now||!this.deleteItem(key))){this.values[key]=null}else{value=this.values[key]}generated[key]=f(key,value,isHit)}return generated});this.defaultLifetime=defaultLifetime;this.values={};this.expiries={}}}exports.default=ArrayAdapter;class CacheItem{constructor(){_defineProperty(this,"getKey",()=>{return this.key});_defineProperty(this,"get",()=>{return this.value});_defineProperty(this,"set",value=>{this.value=value;return this});_defineProperty(this,"expiresAt",expiration=>{if(null===expiration){this.expiry=this.defaultLifetime>0?Date.now()/1e3+this.defaultLifetime:null}else if(expiration instanceof Date){this.expiry=expiration.getTime()/1e3}else{throw new Error(`Expiration date must be instance of Date or be null, "${expiration.name}" given`)}return this});_defineProperty(this,"expiresAfter",time=>{if(null===time){this.expiry=this.defaultLifetime>0?Date.now()/1e3+this.defaultLifetime:null}else if(Number.isInteger(time)){this.expiry=(new Date).getTime()/1e3+time}else{throw new Error(`Expiration date must be an integer or be null, "${time.name}" given`)}return this});_defineProperty(this,"tag",tags=>{if(!this.isTaggable){throw new Error(`Cache item "${this.key}" comes from a non tag-aware pool: you cannot tag it.`)}if(!Array.isArray(tags)){tags=[tags]}for(let tag of tags){if(typeof tag!=="string"){throw new Error(`Cache tag must by a string, "${typeof tag}" given.`)}if(this.newMetadata.tags[tag]){if(tag===""){throw new Error("Cache tag length must be greater than zero")}}this.newMetadata.tags[tag]=tag}return this});_defineProperty(this,"getMetadata",()=>{return this.metadata});this.key=null;this.value=null;this.isHit=false;this.expiry=null;this.defaultLifetime=null;this.metadata={};this.newMetadata={};this.innerItem=null;this.poolHash=null;this.isTaggable=false}}exports.CacheItem=CacheItem;_defineProperty(CacheItem,"METADATA_EXPIRY_OFFSET",1527506807);_defineProperty(CacheItem,"RESERVED_CHARACTERS",["{","}","(",")","/","\\","@",":"]);_defineProperty(CacheItem,"validateKey",key=>{if(typeof key!=="string"){throw new Error(`Cache key must be string, "${typeof key}" given.`)}if(""===key){throw new Error("Cache key length must be greater than zero")}for(let reserved of CacheItem.RESERVED_CHARACTERS){if(key.indexOf(reserved)>=0){throw new Error(`Cache key "${key}" contains reserved character "${reserved}".`)}}return key})},{}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _addcslashes=require("./lib/addcslashes");function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class Compiler{constructor(functions){_defineProperty(this,"getFunction",name=>{return this.functions[name]});_defineProperty(this,"getSource",()=>{return this.source});_defineProperty(this,"reset",()=>{this.source="";return this});_defineProperty(this,"compile",node=>{node.compile(this);return this});_defineProperty(this,"subcompile",node=>{let current=this.source;this.source="";node.compile(this);let source=this.source;this.source=current;return source});_defineProperty(this,"raw",str=>{this.source+=str;return this});_defineProperty(this,"string",value=>{this.source+='"'+(0,_addcslashes.addcslashes)(value,'\0\t"$\\')+'"';return this});_defineProperty(this,"repr",(value,isIdentifier=false)=>{if(isIdentifier){this.raw(value)}else if(Number.isInteger(value)||+value===value&&(!isFinite(value)||!!(value%1))){this.raw(value)}else if(null===value){this.raw("null")}else if(typeof value==="boolean"){this.raw(value?"true":"false")}else if(typeof value==="object"){this.raw("{");let first=true;for(let oneKey of Object.keys(value)){if(!first){this.raw(", ")}first=false;this.repr(oneKey);this.raw(":");this.repr(value[oneKey])}this.raw("}")}else if(Array.isArray(value)){this.raw("[");let first=true;for(let oneValue of value){if(!first){this.raw(", ")}first=false;this.repr(oneValue)}this.raw("]")}else{this.string(value)}return this});this.source="";this.functions=functions}}exports.default=Compiler},{"./lib/addcslashes":30}],4:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;class Expression{constructor(expression){this.expression=expression}toString(){return this.expression}}exports.default=Expression},{}],5:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class ExpressionFunction{constructor(name,compiler,evaluator){_defineProperty(this,"getName",()=>{return this.name});_defineProperty(this,"getCompiler",()=>{return this.compiler});_defineProperty(this,"getEvaluator",()=>{return this.evaluator});this.name=name;this.compiler=compiler;this.evaluator=evaluator}}exports.default=ExpressionFunction},{}],6:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Lexer=require("./Lexer");var _Parser=_interopRequireDefault(require("./Parser"));var _Compiler=_interopRequireDefault(require("./Compiler"));var _ParsedExpression=_interopRequireDefault(require("./ParsedExpression"));var _ArrayAdapter=_interopRequireDefault(require("./Cache/ArrayAdapter"));var _LogicException=_interopRequireDefault(require("./LogicException"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class ExpressionLanguage{constructor(cache=null,providers=[]){_defineProperty(this,"compile",(expression,names=[])=>{return this.getCompiler().compile(this.parse(expression,names).getNodes()).getSource()});_defineProperty(this,"evaluate",(expression,values={})=>{return this.parse(expression,Object.keys(values)).getNodes().evaluate(this.functions,values)});_defineProperty(this,"parse",(expression,names)=>{if(expression instanceof _ParsedExpression.default){return expression}names.sort((a,b)=>{let a_value=a,b_value=b;if(typeof a==="object"){a_value=Object.values(a)[0]}if(typeof b==="object"){b_value=Object.values(b)[0]}return a_value.localeCompare(b_value)});let cacheKeyItems=[];for(let name of names){let value=name;if(typeof name==="object"){let tmpName=Object.keys(name)[0],tmpValue=Object.values(name)[0];value=tmpName+":"+tmpValue}cacheKeyItems.push(value)}let cacheItem=this.cache.getItem(this.fixedEncodeURIComponent(expression+"//"+cacheKeyItems.join("|"))),parsedExpression=cacheItem.get();if(null===parsedExpression){let nodes=this.getParser().parse((0,_Lexer.tokenize)(expression),names);parsedExpression=new _ParsedExpression.default(expression,nodes);cacheItem.set(parsedExpression);this.cache.save(cacheItem)}return parsedExpression});_defineProperty(this,"fixedEncodeURIComponent",str=>{return encodeURIComponent(str).replace(/[!'()*]/g,function(c){return"%"+c.charCodeAt(0).toString(16)})});_defineProperty(this,"register",(name,compiler,evaluator)=>{if(null!==this.parser){throw new _LogicException.default("Registering functions after calling evaluate(), compile(), or parse() is not supported.")}this.functions[name]={compiler:compiler,evaluator:evaluator}});_defineProperty(this,"addFunction",expressionFunction=>{this.register(expressionFunction.getName(),expressionFunction.getCompiler(),expressionFunction.getEvaluator())});_defineProperty(this,"registerProvider",provider=>{for(let fn of provider.getFunctions()){this.addFunction(fn)}});_defineProperty(this,"getParser",()=>{if(null===this.parser){this.parser=new _Parser.default(this.functions)}return this.parser});_defineProperty(this,"getCompiler",()=>{if(null===this.compiler){this.compiler=new _Compiler.default(this.functions)}return this.compiler.reset()});this.functions=[];this.parser=null;this.compiler=null;this.cache=cache||new _ArrayAdapter.default;for(let provider of providers){this.registerProvider(provider)}}_registerFunctions(){}}exports.default=ExpressionLanguage},{"./Cache/ArrayAdapter":2,"./Compiler":3,"./Lexer":7,"./LogicException":8,"./ParsedExpression":19,"./Parser":20}],7:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.tokenize=tokenize;var _SyntaxError=_interopRequireDefault(require("./SyntaxError"));var _TokenStream=require("./TokenStream");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function tokenize(expression){expression=expression.replace(/\r|\n|\t|\v|\f/g," ");let cursor=0,tokens=[],brackets=[],end=expression.length;while(cursor=0){brackets.push([expression[cursor],cursor]);tokens.push(new _TokenStream.Token(_TokenStream.Token.PUNCTUATION_TYPE,expression[cursor],cursor+1));++cursor}else{if(")]}".indexOf(expression[cursor])>=0){if(brackets.length===0){throw new _SyntaxError.default(`Unexpected "${expression[cursor]}"`,cursor,expression)}let[expect,cur]=brackets.pop(),matchExpect=expect.replace("(",")").replace("{","}").replace("[","]");if(expression[cursor]!==matchExpect){throw new _SyntaxError.default(`Unclosed "${expect}"`,cur,expression)}tokens.push(new _TokenStream.Token(_TokenStream.Token.PUNCTUATION_TYPE,expression[cursor],cursor+1));++cursor}else{let str=extractString(expression.substr(cursor));if(str!==null){tokens.push(new _TokenStream.Token(_TokenStream.Token.STRING_TYPE,str.captured,cursor+1));cursor+=str.length}else{let operator=extractOperator(expression.substr(cursor));if(operator){tokens.push(new _TokenStream.Token(_TokenStream.Token.OPERATOR_TYPE,operator,cursor+1));cursor+=operator.length}else{if(".,?:".indexOf(expression[cursor])>=0){tokens.push(new _TokenStream.Token(_TokenStream.Token.PUNCTUATION_TYPE,expression[cursor],cursor+1));++cursor}else{let name=extractName(expression.substr(cursor));if(name){tokens.push(new _TokenStream.Token(_TokenStream.Token.NAME_TYPE,name,cursor+1));cursor+=name.length}else{throw new _SyntaxError.default(`Unexpected character "${expression[cursor]}"`,cursor,expression)}}}}}}}}tokens.push(new _TokenStream.Token(_TokenStream.Token.EOF_TYPE,null,cursor+1));if(brackets.length>0){let[expect,cur]=brackets.pop();throw new _SyntaxError.default(`Unclosed "${expect}"`,cur,expression)}return new _TokenStream.TokenStream(expression,tokens)}function extractNumber(str){let extracted=null;let matches=str.match(/^[0-9]+(?:.[0-9]+)?/);if(matches&&matches.length>0){extracted=matches[0];if(extracted.indexOf(".")===-1){extracted=parseInt(extracted)}else{extracted=parseFloat(extracted)}}return extracted}const strRegex=/^"([^"\\]*(?:\\.[^"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)'/s;function extractString(str){let extracted=null;if(["'",'"'].indexOf(str.substr(0,1))===-1){return extracted}let m=strRegex.exec(str);if(m!==null&&m.length>0){if(m[1]){extracted={captured:m[1]}}else{extracted={captured:m[2]}}extracted.length=m[0].length}return extracted}const operators=["&&","and","||","or","+","-","*","/","%","**","&","|","^","===","!==","!=","==","<=",">=","<",">","matches","not in","in","not","!","~",".."];const wordBasedOperators=["and","or","matches","not in","in","not"];function extractOperator(str){let extracted=null;for(let operator of operators){if(str.substr(0,operator.length)===operator){if(wordBasedOperators.indexOf(operator)>=0){if(str.substr(0,operator.length+1)===operator+" "){extracted=operator}}else{extracted=operator}break}}return extracted}function extractName(str){let extracted=null;let matches=str.match(/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/);if(matches&&matches.length>0){extracted=matches[0]}return extracted}},{"./SyntaxError":26,"./TokenStream":27}],8:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;class LogicException extends Error{constructor(message){super(message);this.name="LogicException"}toString(){return`${this.name}: ${this.message}`}}exports.default=LogicException},{}],9:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _ArrayNode=_interopRequireDefault(require("./ArrayNode"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class ArgumentsNode extends _ArrayNode.default{constructor(){super();_defineProperty(this,"compile",compiler=>{this.compileArguments(compiler,false)});this.name="ArgumentsNode"}toArray(){let array=[];for(let pair of this.getKeyValuePairs()){array.push(pair.value);array.push(", ")}array.pop();return array}}exports.default=ArgumentsNode},{"./ArrayNode":10}],10:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Node=_interopRequireDefault(require("./Node"));var _ConstantNode=_interopRequireDefault(require("./ConstantNode"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class ArrayNode extends _Node.default{constructor(){super();_defineProperty(this,"addElement",(value,key=null)=>{if(null===key){key=new _ConstantNode.default(++this.index)}else{if(this.type==="Array"){this.type="Object"}}this.nodes[(++this.keyIndex).toString()]=key;this.nodes[(++this.keyIndex).toString()]=value});_defineProperty(this,"compile",compiler=>{if(this.type==="Object"){compiler.raw("{")}else{compiler.raw("[")}this.compileArguments(compiler,this.type!=="Array");if(this.type==="Object"){compiler.raw("}")}else{compiler.raw("]")}});_defineProperty(this,"evaluate",(functions,values)=>{let result;if(this.type==="Array"){result=[];for(let pair of this.getKeyValuePairs()){result.push(pair.value.evaluate(functions,values))}}else{result={};for(let pair of this.getKeyValuePairs()){result[pair.key.evaluate(functions,values)]=pair.value.evaluate(functions,values)}}return result});_defineProperty(this,"getKeyValuePairs",()=>{let pairs=[];let nodes=Object.values(this.nodes);let i,j,pair,chunk=2;for(i=0,j=nodes.length;i{let first=true;for(let pair of this.getKeyValuePairs()){if(!first){compiler.raw(", ")}first=false;if(withKeys){compiler.compile(pair.key).raw(": ")}compiler.compile(pair.value)}});this.name="ArrayNode";this.type="Array";this.index=-1;this.keyIndex=-1}toArray(){let value={};for(let pair of this.getKeyValuePairs()){value[pair.key.attributes.value]=pair.value}let array=[];if(this.isHash(value)){for(let k of Object.keys(value)){array.push(", ");array.push(new _ConstantNode.default(k));array.push(": ");array.push(value[k])}array[0]="{";array.push("}")}else{for(let v of Object.values(value)){array.push(", ");array.push(v)}array[0]="[";array.push("]")}return array}}exports.default=ArrayNode},{"./ConstantNode":13,"./Node":17}],11:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Node=_interopRequireDefault(require("./Node"));var _range=require("../lib/range");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class BinaryNode extends _Node.default{constructor(_operator,_left,_right){super({left:_left,right:_right},{operator:_operator});_defineProperty(this,"compile",compiler=>{let operator=this.attributes.operator;if("matches"===operator){compiler.compile(this.nodes.right).raw(".test(").compile(this.nodes.left).raw(")");return}if(BinaryNode.functions[operator]!==undefined){compiler.raw(`${BinaryNode.functions[operator]}(`).compile(this.nodes.left).raw(", ").compile(this.nodes.right).raw(")");return}if(BinaryNode.operators[operator]!==undefined){operator=BinaryNode.operators[operator]}compiler.raw("(").compile(this.nodes.left).raw(" ").raw(operator).raw(" ").compile(this.nodes.right).raw(")")});_defineProperty(this,"evaluate",(functions,values)=>{let operator=this.attributes.operator,left=this.nodes.left.evaluate(functions,values);if(BinaryNode.functions[operator]!==undefined){let right=this.nodes.right.evaluate(functions,values);switch(operator){case"not in":return right.indexOf(left)===-1;case"in":return right.indexOf(left)>=0;case"..":return(0,_range.range)(left,right);case"**":return Math.pow(left,right)}}let right=null;switch(operator){case"or":case"||":if(!left){right=this.nodes.right.evaluate(functions,values)}return left||right;case"and":case"&&":if(left){right=this.nodes.right.evaluate(functions,values)}return left&&right}right=this.nodes.right.evaluate(functions,values);switch(operator){case"|":return left|right;case"^":return left^right;case"&":return left&right;case"==":return left==right;case"===":return left===right;case"!=":return left!=right;case"!==":return left!==right;case"<":return left":return left>right;case">=":return left>=right;case"<=":return left<=right;case"not in":return right.indexOf(left)===-1;case"in":return right.indexOf(left)>=0;case"+":return left+right;case"-":return left-right;case"~":return left.toString()+right.toString();case"*":return left*right;case"/":return left/right;case"%":return left%right;case"matches":let res=right.match(BinaryNode.regex_expression);let regexp=new RegExp(res[1],res[2]);return regexp.test(left)}});this.name="BinaryNode"}toArray(){return["(",this.nodes.left," "+this.attributes.operator+" ",this.nodes.right,")"]}}exports.default=BinaryNode;_defineProperty(BinaryNode,"regex_expression",/\/(.+)\/(.*)/);_defineProperty(BinaryNode,"operators",{"~":".",and:"&&",or:"||"});_defineProperty(BinaryNode,"functions",{"**":"Math.pow","..":"range",in:"includes","not in":"!includes"})},{"../lib/range":32,"./Node":17}],12:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Node=_interopRequireDefault(require("./Node"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class ConditionalNode extends _Node.default{constructor(expr1,expr2,expr3){super({expr1:expr1,expr2:expr2,expr3:expr3});_defineProperty(this,"compile",compiler=>{compiler.raw("((").compile(this.nodes.expr1).raw(") ? (").compile(this.nodes.expr2).raw(") : (").compile(this.nodes.expr3).raw("))")});_defineProperty(this,"evaluate",(functions,values)=>{if(this.nodes.expr1.evaluate(functions,values)){return this.nodes.expr2.evaluate(functions,values)}return this.nodes.expr3.evaluate(functions,values)});this.name="ConditionalNode"}toArray(){return["(",this.nodes.expr1," ? ",this.nodes.expr2," : ",this.nodes.expr3,")"]}}exports.default=ConditionalNode},{"./Node":17}],13:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Node=_interopRequireDefault(require("./Node"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class ConstantNode extends _Node.default{constructor(_value,isIdentifier=false){super({},{value:_value});_defineProperty(this,"compile",compiler=>{compiler.repr(this.attributes.value,this.isIdentifier)});_defineProperty(this,"evaluate",(functions,values)=>{return this.attributes.value});_defineProperty(this,"toArray",()=>{let array=[],value=this.attributes.value;if(this.isIdentifier){array.push(value)}else if(true===value){array.push("true")}else if(false===value){array.push("false")}else if(null===value){array.push("null")}else if(typeof value==="number"){array.push(value)}else if(typeof value==="string"){array.push(this.dumpString(value))}else if(Array.isArray(value)){for(let v of value){array.push(",");array.push(new ConstantNode(v))}array[0]="[";array.push("]")}else if(this.isHash(value)){for(let k of Object.keys(value)){array.push(", ");array.push(new ConstantNode(k));array.push(": ");array.push(new ConstantNode(value[k]))}array[0]="{";array.push("}")}return array});this.isIdentifier=isIdentifier;this.name="ConstantNode"}}exports.default=ConstantNode},{"./Node":17}],14:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Node=_interopRequireDefault(require("./Node"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class FunctionNode extends _Node.default{constructor(name,_arguments2){super({arguments:_arguments2},{name:name});_defineProperty(this,"compile",compiler=>{let _arguments=[];for(let node of Object.values(this.nodes.arguments.nodes)){_arguments.push(compiler.subcompile(node))}let fn=compiler.getFunction(this.attributes.name);compiler.raw(fn.compiler.apply(null,_arguments))});_defineProperty(this,"evaluate",(functions,values)=>{let _arguments=[values];for(let node of Object.values(this.nodes.arguments.nodes)){_arguments.push(node.evaluate(functions,values))}return functions[this.attributes.name]["evaluator"].apply(null,_arguments)});this.name="FunctionNode"}toArray(){let array=[];array.push(this.attributes.name);for(let node of Object.values(this.nodes.arguments.nodes)){array.push(", ");array.push(node)}array[1]="(";array.push(")");return array}}exports.default=FunctionNode},{"./Node":17}],15:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Node=_interopRequireDefault(require("./Node"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class GetAttrNode extends _Node.default{constructor(node,attribute,_arguments,type){super({node:node,attribute:attribute,arguments:_arguments},{type:type});_defineProperty(this,"compile",compiler=>{switch(this.attributes.type){case GetAttrNode.PROPERTY_CALL:compiler.compile(this.nodes.node).raw(".").raw(this.nodes.attribute.attributes.value);break;case GetAttrNode.METHOD_CALL:compiler.compile(this.nodes.node).raw(".").raw(this.nodes.attribute.attributes.value).raw("(").compile(this.nodes.arguments).raw(")");break;case GetAttrNode.ARRAY_CALL:compiler.compile(this.nodes.node).raw("[").compile(this.nodes.attribute).raw("]");break}});_defineProperty(this,"evaluate",(functions,values)=>{switch(this.attributes.type){case GetAttrNode.PROPERTY_CALL:let obj=this.nodes.node.evaluate(functions,values),property=this.nodes.attribute.attributes.value;if(typeof obj!=="object"){throw new Error(`Unable to get property "${property}" on a non-object: `+typeof obj)}return obj[property];case GetAttrNode.METHOD_CALL:let obj2=this.nodes.node.evaluate(functions,values),method=this.nodes.attribute.attributes.value;if(typeof obj2!=="object"){throw new Error(`Unable to call method "${method}" on a non-object: `+typeof obj2)}if(obj2[method]===undefined){throw new Error(`Method "${method}" is undefined on object.`)}if(typeof obj2[method]!="function"){throw new Error(`Method "${method}" is not a function on object.`)}let evaluatedArgs=this.nodes.arguments.evaluate(functions,values);return obj2[method].apply(null,evaluatedArgs);case GetAttrNode.ARRAY_CALL:let array=this.nodes.node.evaluate(functions,values);if(!Array.isArray(array)&&typeof array!=="object"){throw new Error(`Unable to get an item on a non-array: `+typeof array)}return array[this.nodes.attribute.evaluate(functions,values)]}});this.name="GetAttrNode"}toArray(){switch(this.attributes.type){case GetAttrNode.PROPERTY_CALL:return[this.nodes.node,".",this.nodes.attribute];case GetAttrNode.METHOD_CALL:return[this.nodes.node,".",this.nodes.attribute,"(",this.nodes.arguments,")"];case GetAttrNode.ARRAY_CALL:return[this.nodes.node,"[",this.nodes.attribute,"]"]}}}exports.default=GetAttrNode;_defineProperty(GetAttrNode,"PROPERTY_CALL",1);_defineProperty(GetAttrNode,"METHOD_CALL",2);_defineProperty(GetAttrNode,"ARRAY_CALL",3)},{"./Node":17}],16:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Node=_interopRequireDefault(require("./Node"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class NameNode extends _Node.default{constructor(name){super({},{name:name});_defineProperty(this,"compile",compiler=>{compiler.raw(this.attributes.name)});_defineProperty(this,"evaluate",(functions,values)=>{let value=values[this.attributes.name];return value});this.name="NameNode"}toArray(){return[this.attributes.name]}}exports.default=NameNode},{"./Node":17}],17:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _isScalar=require("../lib/is-scalar");var _addcslashes=require("../lib/addcslashes");function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class Node{constructor(nodes={},attributes={}){_defineProperty(this,"compile",compiler=>{for(let node of Object.values(this.nodes)){node.compile(compiler)}});_defineProperty(this,"evaluate",(functions,values)=>{let results=[];for(let node of Object.values(this.nodes)){results.push(node.evaluate(functions,values))}return results});_defineProperty(this,"dump",()=>{let dump="";for(let v of this.toArray()){dump+=(0,_isScalar.is_scalar)(v)?v:v.dump()}return dump});_defineProperty(this,"dumpString",value=>{return`"${(0,_addcslashes.addcslashes)(value,'\0\t"\\')}"`});_defineProperty(this,"isHash",value=>{let expectedKey=0;for(let key of Object.keys(value)){key=parseInt(key);if(key!==expectedKey++){return true}}return false});this.name="Node";this.nodes=nodes;this.attributes=attributes}toString(){let attributes=[];for(let name of Object.keys(this.attributes)){let oneAttribute="null";if(this.attributes[name]){oneAttribute=this.attributes[name].toString()}attributes.push(`${name}: '${oneAttribute}'`)}let repr=[this.name+"("+attributes.join(", ")];if(this.nodes.length>0){for(let node of Object.values(this.nodes)){let lines=node.toString().split("\n");for(let line of lines){repr.push(" "+line)}}repr.push(")")}else{repr[0]+=")"}return repr.join("\n")}toArray(){throw new Error(`Dumping a "${this.name}" instance is not supported yet.`)}}exports.default=Node},{"../lib/addcslashes":30,"../lib/is-scalar":31}],18:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Node=_interopRequireDefault(require("./Node"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class UnaryNode extends _Node.default{constructor(operator,node){super({node:node},{operator:operator});_defineProperty(this,"compile",compiler=>{compiler.raw("(").raw(UnaryNode.operators[this.attributes.operator]).compile(this.nodes.node).raw(")")});_defineProperty(this,"evaluate",(functions,values)=>{let value=this.nodes.node.evaluate(functions,values);switch(this.attributes.operator){case"not":case"!":return!value;case"-":return-value}return value});this.name="UnaryNode"}toArray(){return["(",this.attributes.operator+" ",this.nodes.node,")"]}}exports.default=UnaryNode;_defineProperty(UnaryNode,"operators",{"!":"!",not:"!","+":"+","-":"-"})},{"./Node":17}],19:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Expression=_interopRequireDefault(require("./Expression"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}class ParsedExpression extends _Expression.default{constructor(expression,nodes){super(expression);_defineProperty(this,"getNodes",()=>{return this.nodes});this.nodes=nodes}}exports.default=ParsedExpression},{"./Expression":4}],20:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.OPERATOR_RIGHT=exports.OPERATOR_LEFT=void 0;var _SyntaxError=_interopRequireDefault(require("./SyntaxError"));var _TokenStream=require("./TokenStream");var _Node=_interopRequireDefault(require("./Node/Node"));var _BinaryNode=_interopRequireDefault(require("./Node/BinaryNode"));var _UnaryNode=_interopRequireDefault(require("./Node/UnaryNode"));var _ConstantNode=_interopRequireDefault(require("./Node/ConstantNode"));var _ConditionalNode=_interopRequireDefault(require("./Node/ConditionalNode"));var _FunctionNode=_interopRequireDefault(require("./Node/FunctionNode"));var _NameNode=_interopRequireDefault(require("./Node/NameNode"));var _ArrayNode=_interopRequireDefault(require("./Node/ArrayNode"));var _ArgumentsNode=_interopRequireDefault(require("./Node/ArgumentsNode"));var _GetAttrNode=_interopRequireDefault(require("./Node/GetAttrNode"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}const OPERATOR_LEFT=1;exports.OPERATOR_LEFT=OPERATOR_LEFT;const OPERATOR_RIGHT=2;exports.OPERATOR_RIGHT=OPERATOR_RIGHT;class Parser{constructor(functions={}){_defineProperty(this,"functions",{});_defineProperty(this,"unaryOperators",{not:{precedence:50},"!":{precedence:50},"-":{precedence:500},"+":{precedence:500}});_defineProperty(this,"binaryOperators",{or:{precedence:10,associativity:OPERATOR_LEFT},"||":{precedence:10,associativity:OPERATOR_LEFT},and:{precedence:15,associativity:OPERATOR_LEFT},"&&":{precedence:15,associativity:OPERATOR_LEFT},"|":{precedence:16,associativity:OPERATOR_LEFT},"^":{precedence:17,associativity:OPERATOR_LEFT},"&":{precedence:18,associativity:OPERATOR_LEFT},"==":{precedence:20,associativity:OPERATOR_LEFT},"===":{precedence:20,associativity:OPERATOR_LEFT},"!=":{precedence:20,associativity:OPERATOR_LEFT},"!==":{precedence:20,associativity:OPERATOR_LEFT},"<":{precedence:20,associativity:OPERATOR_LEFT},">":{precedence:20,associativity:OPERATOR_LEFT},">=":{precedence:20,associativity:OPERATOR_LEFT},"<=":{precedence:20,associativity:OPERATOR_LEFT},"not in":{precedence:20,associativity:OPERATOR_LEFT},in:{precedence:20,associativity:OPERATOR_LEFT},matches:{precedence:20,associativity:OPERATOR_LEFT},"..":{precedence:25,associativity:OPERATOR_LEFT},"+":{precedence:30,associativity:OPERATOR_LEFT},"-":{precedence:30,associativity:OPERATOR_LEFT},"~":{precedence:40,associativity:OPERATOR_LEFT},"*":{precedence:60,associativity:OPERATOR_LEFT},"/":{precedence:60,associativity:OPERATOR_LEFT},"%":{precedence:60,associativity:OPERATOR_LEFT},"**":{precedence:200,associativity:OPERATOR_RIGHT}});_defineProperty(this,"parse",(tokenStream,names=[])=>{this.tokenStream=tokenStream;this.names=names;this.objectMatches={};this.cachedNames=null;this.nestedExecutions=0;let node=this.parseExpression();if(!this.tokenStream.isEOF()){throw new _SyntaxError.default(`Unexpected token "${this.tokenStream.current.type}" of value "${this.tokenStream.current.value}".`,this.tokenStream.current.cursor,this.tokenStream.expression)}return node});_defineProperty(this,"parseExpression",(precedence=0)=>{let expr=this.getPrimary();let token=this.tokenStream.current;this.nestedExecutions++;if(this.nestedExecutions>100){throw new Error("Way to many executions on '"+token.toString()+"' of '"+this.tokenStream.toString()+"'")}while(token.test(_TokenStream.Token.OPERATOR_TYPE)&&this.binaryOperators[token.value]!==undefined&&this.binaryOperators[token.value]!==null&&this.binaryOperators[token.value].precedence>=precedence){let op=this.binaryOperators[token.value];this.tokenStream.next();let expr1=this.parseExpression(OPERATOR_LEFT===op.associativity?op.precedence+1:op.precedence);expr=new _BinaryNode.default(token.value,expr,expr1);token=this.tokenStream.current}if(0===precedence){return this.parseConditionalExpression(expr)}return expr});_defineProperty(this,"getPrimary",()=>{let token=this.tokenStream.current;if(token.test(_TokenStream.Token.OPERATOR_TYPE)&&this.unaryOperators[token.value]!==undefined&&this.unaryOperators[token.value]!==null){let operator=this.unaryOperators[token.value];this.tokenStream.next();let expr=this.parseExpression(operator.precedence);return this.parsePostfixExpression(new _UnaryNode.default(token.value,expr))}if(token.test(_TokenStream.Token.PUNCTUATION_TYPE,"(")){this.tokenStream.next();let expr=this.parseExpression();this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,")","An opened parenthesis is not properly closed");return this.parsePostfixExpression(expr)}return this.parsePrimaryExpression()});_defineProperty(this,"hasVariable",name=>{return this.getNames().indexOf(name)>=0});_defineProperty(this,"getNames",()=>{if(this.cachedNames!==null){return this.cachedNames}if(this.names&&this.names.length>0){let names=[];let index=0;this.objectMatches={};for(let name of this.names){if(typeof name==="object"){this.objectMatches[Object.values(name)[0]]=index;names.push(Object.keys(name)[0]);names.push(Object.values(name)[0])}else{names.push(name)}index++}this.cachedNames=names;return names}return[]});_defineProperty(this,"parseArrayExpression",()=>{this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,"[","An array element was expected");let node=new _ArrayNode.default,first=true;while(!this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,"]")){if(!first){this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,",","An array element must be followed by a comma");if(this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,"]")){break}}first=false;node.addElement(this.parseExpression())}this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,"]","An opened array is not properly closed");return node});_defineProperty(this,"parseHashExpression",()=>{this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,"{","A hash element was expected");let node=new _ArrayNode.default,first=true;while(!this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,"}")){if(!first){this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,",","An array element must be followed by a comma");if(this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,"}")){break}}first=false;let key=null;if(this.tokenStream.current.test(_TokenStream.Token.STRING_TYPE)||this.tokenStream.current.test(_TokenStream.Token.NAME_TYPE)||this.tokenStream.current.test(_TokenStream.Token.NUMBER_TYPE)){key=new _ConstantNode.default(this.tokenStream.current.value);this.tokenStream.next()}else if(this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,"(")){key=this.parseExpression()}else{let current=this.tokenStream.current;throw new _SyntaxError.default(`A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "${current.type}" of value "${current.value}"`,current.cursor,this.tokenStream.expression)}this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,":","A hash key must be followed by a colon (:)");let value=this.parseExpression();node.addElement(value,key)}this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,"}","An opened hash is not properly closed");return node});_defineProperty(this,"parsePostfixExpression",node=>{let token=this.tokenStream.current;while(_TokenStream.Token.PUNCTUATION_TYPE===token.type){if("."===token.value){this.tokenStream.next();token=this.tokenStream.current;this.tokenStream.next();if(_TokenStream.Token.NAME_TYPE!==token.type&&(_TokenStream.Token.OPERATOR_TYPE!==token.type||!/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/.test(token.value))){throw new _SyntaxError.default("Expected name",token.cursor,this.tokenStream.expression)}let arg=new _ConstantNode.default(token.value,true),_arguments=new _ArgumentsNode.default,type=null;if(this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,"(")){type=_GetAttrNode.default.METHOD_CALL;for(let n of Object.values(this.parseArguments().nodes)){_arguments.addElement(n)}}else{type=_GetAttrNode.default.PROPERTY_CALL}node=new _GetAttrNode.default(node,arg,_arguments,type)}else if("["===token.value){this.tokenStream.next();let arg=this.parseExpression();this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,"]");node=new _GetAttrNode.default(node,arg,new _ArgumentsNode.default,_GetAttrNode.default.ARRAY_CALL)}else{break}token=this.tokenStream.current}return node});_defineProperty(this,"parseArguments",()=>{let args=[];this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,"(","A list of arguments must begin with an opening parenthesis");while(!this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,")")){if(args.length!==0){this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,",","Arguments must be separated by a comma")}args.push(this.parseExpression())}this.tokenStream.expect(_TokenStream.Token.PUNCTUATION_TYPE,")","A list of arguments must be closed by a parenthesis");return new _Node.default(args)});this.functions=functions;this.tokenStream=null;this.names=null;this.objectMatches={};this.cachedNames=null;this.nestedExecutions=0}parseConditionalExpression(expr){while(this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,"?")){this.tokenStream.next();let expr2,expr3;if(!this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,":")){expr2=this.parseExpression();if(this.tokenStream.current.test(_TokenStream.Token.PUNCTUATION_TYPE,":")){this.tokenStream.next();expr3=this.parseExpression()}else{expr3=new _ConstantNode.default(null)}}else{this.tokenStream.next();expr2=expr;expr3=this.parseExpression()}expr=new _ConditionalNode.default(expr,expr2,expr3)}return expr}parsePrimaryExpression(){let token=this.tokenStream.current,node=null;switch(token.type){case _TokenStream.Token.NAME_TYPE:this.tokenStream.next();switch(token.value){case"true":case"TRUE":return new _ConstantNode.default(true);case"false":case"FALSE":return new _ConstantNode.default(false);case"null":case"NULL":return new _ConstantNode.default(null);default:if("("===this.tokenStream.current.value){if(this.functions[token.value]===undefined){throw new _SyntaxError.default(`The function "${token.value}" does not exist`,token.cursor,this.tokenStream.expression,token.values,Object.keys(this.functions))}node=new _FunctionNode.default(token.value,this.parseArguments())}else{if(!this.hasVariable(token.value)){throw new _SyntaxError.default(`Variable "${token.value}" is not valid`,token.cursor,this.tokenStream.expression,token.value,this.getNames())}let name=token.value;if(this.objectMatches[name]!==undefined){name=this.getNames()[this.objectMatches[name]]}node=new _NameNode.default(name)}}break;case _TokenStream.Token.NUMBER_TYPE:case _TokenStream.Token.STRING_TYPE:this.tokenStream.next();return new _ConstantNode.default(token.value);default:if(token.test(_TokenStream.Token.PUNCTUATION_TYPE,"[")){node=this.parseArrayExpression()}else if(token.test(_TokenStream.Token.PUNCTUATION_TYPE,"{")){node=this.parseHashExpression()}else{throw new _SyntaxError.default(`Unexpected token "${token.type}" of value "${token.value}"`,token.cursor,this.tokenStream.expression)}}return this.parsePostfixExpression(node)}}exports.default=Parser},{"./Node/ArgumentsNode":9,"./Node/ArrayNode":10,"./Node/BinaryNode":11,"./Node/ConditionalNode":12,"./Node/ConstantNode":13,"./Node/FunctionNode":14,"./Node/GetAttrNode":15,"./Node/NameNode":16,"./Node/Node":17,"./Node/UnaryNode":18,"./SyntaxError":26,"./TokenStream":27}],21:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;class AbstractProvider{getFunctions(){throw new Error("getFunctions must be implemented by "+this.name)}}exports.default=AbstractProvider},{}],22:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.arrayIntersectFn=exports.countFn=exports.implodeFn=exports.default=void 0;var _ExpressionFunction=_interopRequireDefault(require("../ExpressionFunction"));var _AbstractProvider=_interopRequireDefault(require("./AbstractProvider"));var _array_intersect=_interopRequireDefault(require("locutus/php/array/array_intersect"));var _count=_interopRequireDefault(require("locutus/php/array/count"));var _implode=_interopRequireDefault(require("locutus/php/strings/implode"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}class ArrayProvider extends _AbstractProvider.default{getFunctions(){return[implodeFn,countFn,arrayIntersectFn]}}exports.default=ArrayProvider;const implodeFn=new _ExpressionFunction.default("implode",function compiler(glue,pieces){return`implode(${glue}, ${pieces})`},function evaluator(values,glue,pieces){return(0,_implode.default)(glue,pieces)});exports.implodeFn=implodeFn;const countFn=new _ExpressionFunction.default("count",function compiler(mixedVar,mode){let remaining="";if(mode){remaining=`, ${mode}`}return`count(${mixedVar}${remaining})`},function evaluator(values,mixedVar,mode){return(0,_count.default)(mixedVar,mode)});exports.countFn=countFn;const arrayIntersectFn=new _ExpressionFunction.default("array_intersect",function compiler(arr1,...rest){let remaining="";if(rest.length>0){remaining=", "+rest.join(", ")}return`array_intersect(${arr1}${remaining})`},function evaluator(values){let newArgs=[],allArrays=true;for(let i=1;i0){if(values[baseName]!==undefined){let baseVar=values[baseName];for(let part of parts){if(part.type==="array"){if(baseVar[part.index]===undefined){return false}baseVar=baseVar[part.index]}if(part.type==="object"){if(baseVar[part.attribute]===undefined){return false}baseVar=baseVar[part.attribute]}}return true}return false}else{return values[baseName]!==undefined}});exports.issetFn=issetFn},{"../ExpressionFunction":5,"./AbstractProvider":21}],24:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _AbstractProvider=_interopRequireDefault(require("./AbstractProvider"));var _ExpressionFunction=_interopRequireDefault(require("../ExpressionFunction"));var _date=_interopRequireDefault(require("locutus/php/datetime/date"));var _strtotime=_interopRequireDefault(require("locutus/php/datetime/strtotime"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}class DateProvider extends _AbstractProvider.default{getFunctions(){return[new _ExpressionFunction.default("date",function(format,timestamp){let remaining="";if(timestamp){remaining=`, ${timestamp}`}return`date(${format}${remaining})`},function(values,format,timestamp){return(0,_date.default)(format,timestamp)}),new _ExpressionFunction.default("strtotime",function(str,now){let remaining="";if(now){remaining=`, ${now}`}return`strtotime(${str}${remaining})`},function(values,str,now){return(0,_strtotime.default)(str,now)})]}}exports.default=DateProvider},{"../ExpressionFunction":5,"./AbstractProvider":21,"locutus/php/datetime/date":36,"locutus/php/datetime/strtotime":37}],25:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _ExpressionFunction=_interopRequireDefault(require("../ExpressionFunction"));var _AbstractProvider=_interopRequireDefault(require("./AbstractProvider"));var _explode=_interopRequireDefault(require("locutus/php/strings/explode"));var _strlen=_interopRequireDefault(require("locutus/php/strings/strlen"));var _strtolower=_interopRequireDefault(require("locutus/php/strings/strtolower"));var _strtoupper=_interopRequireDefault(require("locutus/php/strings/strtoupper"));var _substr=_interopRequireDefault(require("locutus/php/strings/substr"));var _strstr=_interopRequireDefault(require("locutus/php/strings/strstr"));var _stristr=_interopRequireDefault(require("locutus/php/strings/stristr"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}class StringProvider extends _AbstractProvider.default{getFunctions(){return[new _ExpressionFunction.default("strtolower",str=>{return"strtolower("+str+")"},(args,str)=>{return(0,_strtolower.default)(str)}),new _ExpressionFunction.default("strtoupper",str=>{return"strtoupper("+str+")"},(args,str)=>{return(0,_strtoupper.default)(str)}),new _ExpressionFunction.default("explode",(delimiter,string,limit="null")=>{return`explode(${delimiter}, ${string}, ${limit})`},(values,delimiter,string,limit=null)=>{return(0,_explode.default)(delimiter,string,limit)}),new _ExpressionFunction.default("strlen",function compiler(str){return`strlen(${str});`},function evaluator(values,str){return(0,_strlen.default)(str)}),new _ExpressionFunction.default("strstr",function compiler(haystack,needle,before_needle){let remaining="";if(before_needle){remaining=`, ${before_needle}`}return`strstr(${haystack}, ${needle}${remaining});`},function evaluator(values,haystack,needle,before_needle){return(0,_strstr.default)(haystack,needle,before_needle)}),new _ExpressionFunction.default("stristr",function compiler(haystack,needle,before_needle){let remaining="";if(before_needle){remaining=`, ${before_needle}`}return`stristr(${haystack}, ${needle}${remaining});`},function evaluator(values,haystack,needle,before_needle){return(0,_stristr.default)(haystack,needle,before_needle)}),new _ExpressionFunction.default("substr",function compiler(str,start,length){let remaining="";if(length){remaining=`, ${length}`}return`substr(${str}, ${start}${remaining});`},function evaluator(values,str,start,length){return(0,_substr.default)(str,start,length)})]}}exports.default=StringProvider},{"../ExpressionFunction":5,"./AbstractProvider":21,"locutus/php/strings/explode":39,"locutus/php/strings/stristr":41,"locutus/php/strings/strlen":42,"locutus/php/strings/strstr":43,"locutus/php/strings/strtolower":44,"locutus/php/strings/strtoupper":45,"locutus/php/strings/substr":46}],26:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _Levenshtein=require("./lib/Levenshtein");class SyntaxError extends Error{constructor(message,cursor,expression,subject,proposals){super(message);this.name="SyntaxError";this.cursor=cursor;this.expression=expression;this.subject=subject;this.proposals=proposals}toString(){let message=`${this.name}: ${this.message} around position ${this.cursor}`;if(this.expression){message=message+` for expression \`${this.expression}\``}message+=".";if(this.subject&&this.proposals){let minScore=Number.MAX_SAFE_INTEGER,guess=null;for(let proposal of this.proposals){let distance=(0,_Levenshtein.getEditDistance)(this.subject,proposal);if(distance{this.position+=1;if(this.tokens[this.position]===undefined){throw new _SyntaxError.default("Unexpected end of expression",this.last.cursor,this.expression)}});_defineProperty(this,"expect",(type,value,message)=>{let token=this.current;if(!token.test(type,value)){let compiledMessage="";if(message){compiledMessage=message+". "}let valueMessage="";if(value){valueMessage=` with value "${value}"`}compiledMessage+=`Unexpected token "${token.type}" of value "${token.value}" ("${type}" expected${valueMessage})`;throw new _SyntaxError.default(compiledMessage,token.cursor,this.expression)}this.next()});_defineProperty(this,"isEOF",()=>{return Token.EOF_TYPE===this.current.type});_defineProperty(this,"isEqualTo",ts=>{if(ts===null||ts===undefined||!ts instanceof TokenStream){return false}if(ts.tokens.length!==this.tokens.length){return false}let tsStartPosition=ts.position;ts.position=0;let allTokensMatch=true;for(let token of this.tokens){let match=ts.current.isEqualTo(token);if(!match){allTokensMatch=false;break}if(ts.position{let diff=[];if(!this.isEqualTo(ts)){let index=0;let tsStartPosition=ts.position;ts.position=0;for(let token of this.tokens){let tokenDiff=token.diff(ts.current);if(tokenDiff.length>0){diff.push({index:index,diff:tokenDiff})}if(ts.position{return this.type===type&&(null===value||this.value===value)});_defineProperty(this,"isEqualTo",t=>{if(t===null||t===undefined||!t instanceof Token){return false}return t.value==this.value&&t.type===this.type&&t.cursor===this.cursor});_defineProperty(this,"diff",t=>{let diff=[];if(!this.isEqualTo(t)){if(t.value!==this.value){diff.push(`Value: ${t.value} != ${this.value}`)}if(t.cursor!==this.cursor){diff.push(`Cursor: ${t.cursor} != ${this.cursor}`)}if(t.type!==this.type){diff.push(`Type: ${t.type} != ${this.type}`)}}return diff});this.value=_value;this.type=_type;this.cursor=cursor}toString(){return`${this.cursor} [${this.type}] ${this.value}`}}exports.Token=Token;_defineProperty(Token,"EOF_TYPE","end of expression");_defineProperty(Token,"NAME_TYPE","name");_defineProperty(Token,"NUMBER_TYPE","number");_defineProperty(Token,"STRING_TYPE","string");_defineProperty(Token,"OPERATOR_TYPE","operator");_defineProperty(Token,"PUNCTUATION_TYPE","punctuation")},{"./SyntaxError":26}],28:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ExpressionLanguage",{enumerable:true,get:function(){return _ExpressionLanguage.default}});Object.defineProperty(exports,"tokenize",{enumerable:true,get:function(){return _Lexer.tokenize}});Object.defineProperty(exports,"Parser",{enumerable:true,get:function(){return _Parser.default}});Object.defineProperty(exports,"ExpressionFunction",{enumerable:true,get:function(){return _ExpressionFunction.default}});Object.defineProperty(exports,"Compiler",{enumerable:true,get:function(){return _Compiler.default}});Object.defineProperty(exports,"ArrayAdapter",{enumerable:true,get:function(){return _ArrayAdapter.default}});Object.defineProperty(exports,"BasicProvider",{enumerable:true,get:function(){return _BasicProvider.default}});Object.defineProperty(exports,"StringProvider",{enumerable:true,get:function(){return _StringProvider.default}});Object.defineProperty(exports,"ArrayProvider",{enumerable:true,get:function(){return _ArrayProvider.default}});Object.defineProperty(exports,"DateProvider",{enumerable:true,get:function(){return _DateProvider.default}});exports.default=void 0;var _ExpressionLanguage=_interopRequireDefault(require("./ExpressionLanguage"));var _Lexer=require("./Lexer");var _Parser=_interopRequireDefault(require("./Parser"));var _ExpressionFunction=_interopRequireDefault(require("./ExpressionFunction"));var _Compiler=_interopRequireDefault(require("./Compiler"));var _ArrayAdapter=_interopRequireDefault(require("./Cache/ArrayAdapter"));var _BasicProvider=_interopRequireDefault(require("./Provider/BasicProvider"));var _StringProvider=_interopRequireDefault(require("./Provider/StringProvider"));var _ArrayProvider=_interopRequireDefault(require("./Provider/ArrayProvider"));var _DateProvider=_interopRequireDefault(require("./Provider/DateProvider"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var _default=_ExpressionLanguage.default;exports.default=_default},{"./Cache/ArrayAdapter":2,"./Compiler":3,"./ExpressionFunction":5,"./ExpressionLanguage":6,"./Lexer":7,"./Parser":20,"./Provider/ArrayProvider":22,"./Provider/BasicProvider":23,"./Provider/DateProvider":24,"./Provider/StringProvider":25}],29:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getEditDistance=void 0;const getEditDistance=function(a,b){if(a.length===0)return b.length;if(b.length===0)return a.length;let matrix=[];let i;for(i=0;i<=b.length;i++){matrix[i]=[i]}let j;for(j=0;j<=a.length;j++){if(matrix[0]===undefined){matrix[0]=[]}matrix[0][j]=j}for(i=1;i<=b.length;i++){for(j=1;j<=a.length;j++){if(b.charAt(i-1)===a.charAt(j-1)){matrix[i][j]=matrix[i-1][j-1]}else{matrix[i][j]=Math.min(matrix[i-1][j-1]+1,Math.min(matrix[i][j-1]+1,matrix[i-1][j]+1))}}}if(matrix[b.length]===undefined){matrix[b.length]=[]}return matrix[b.length][a.length]};exports.getEditDistance=getEditDistance},{}],30:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.addcslashes=addcslashes;function addcslashes(str,charlist){var target="";var chrs=[];var i=0;var j=0;var c="";var next="";var rangeBegin="";var rangeEnd="";var chr="";var begin=0;var end=0;var octalLength=0;var postOctalPos=0;var cca=0;var escHexGrp=[];var encoded="";var percentHex=/%([\dA-Fa-f]+)/g;var _pad=function(n,c){if((n=n+"").lengthbegin){for(j=begin;j<=end;j++){chrs.push(String.fromCharCode(j))}}else{chrs.push(".",rangeBegin,rangeEnd)}i+=rangeEnd.length+2}else{chr=String.fromCharCode(parseInt(rangeBegin,8));chrs.push(chr)}i+=octalLength}else if(next+charlist.charAt(i+2)===".."){rangeBegin=c;begin=rangeBegin.charCodeAt(0);if(/\\\d/.test(charlist.charAt(i+3)+charlist.charAt(i+4))){rangeEnd=charlist.slice(i+4).match(/^\d+/)[0];i+=1}else if(charlist.charAt(i+3)){rangeEnd=charlist.charAt(i+3)}else{throw new Error("Range with no end point")}end=rangeEnd.charCodeAt(0);if(end>begin){for(j=begin;j<=end;j++){chrs.push(String.fromCharCode(j))}}else{chrs.push(".",rangeBegin,rangeEnd)}i+=rangeEnd.length+2}else{chrs.push(c)}}for(i=0;i126){switch(c){case"\n":target+="n";break;case"\t":target+="t";break;case"\r":target+="r";break;case"":target+="a";break;case"\v":target+="v";break;case"\b":target+="b";break;case"\f":target+="f";break;default:encoded=encodeURIComponent(c);if((escHexGrp=percentHex.exec(encoded))!==null){target+=_pad(parseInt(escHexGrp[1],16).toString(8),3)}while((escHexGrp=percentHex.exec(encoded))!==null){target+="\\"+_pad(parseInt(escHexGrp[1],16).toString(8),3)}break}}else{target+=c}}else{target+=c}}return target}},{}],31:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.is_scalar=is_scalar;function is_scalar(mixedVar){return/boolean|number|string/.test(typeof mixedVar)}},{}],32:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.range=range;function range(start,end){let result=[];for(let i=start;i<=end;i++){result.push(i)}return result}},{}],33:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};module.exports=function _phpCastString(value){var type=typeof value==="undefined"?"undefined":_typeof(value);switch(type){case"boolean":return value?"1":"";case"string":return value;case"number":if(isNaN(value)){return"NAN"}if(!isFinite(value)){return(value<0?"-":"")+"INF"}return value+"";case"undefined":return"";case"object":if(Array.isArray(value)){return"Array"}if(value!==null){return"Object"}return"";case"function":default:throw new Error("Unsupported value type")}}},{}],34:[function(require,module,exports){"use strict";module.exports=function array_intersect(arr1){var retArr={};var argl=arguments.length;var arglm1=argl-1;var k1="";var arr={};var i=0;var k="";arr1keys:for(k1 in arr1){arrs:for(i=1;i9?-1:0)},Y:function Y(){return jsdate.getFullYear()},y:function y(){return f.Y().toString().slice(-2)},a:function a(){return jsdate.getHours()>11?"pm":"am"},A:function A(){return f.a().toUpperCase()},B:function B(){var H=jsdate.getUTCHours()*3600;var i=jsdate.getUTCMinutes()*60;var s=jsdate.getUTCSeconds();return _pad(Math.floor((H+i+s+3600)/86.4)%1e3,3)},g:function g(){return f.G()%12||12},G:function G(){return jsdate.getHours()},h:function h(){return _pad(f.g(),2)},H:function H(){return _pad(f.G(),2)},i:function i(){return _pad(jsdate.getMinutes(),2)},s:function s(){return _pad(jsdate.getSeconds(),2)},u:function u(){return _pad(jsdate.getMilliseconds()*1e3,6)},e:function e(){var msg="Not supported (see source code of date() for timezone on how to add support)";throw new Error(msg)},I:function I(){var a=new Date(f.Y(),0);var c=Date.UTC(f.Y(),0);var b=new Date(f.Y(),6);var d=Date.UTC(f.Y(),6);return a-c!==b-d?1:0},O:function O(){var tzo=jsdate.getTimezoneOffset();var a=Math.abs(tzo);return(tzo>0?"-":"+")+_pad(Math.floor(a/60)*100+a%60,4)},P:function P(){var O=f.O();return O.substr(0,3)+":"+O.substr(3,2)},T:function T(){return"UTC"},Z:function Z(){return-jsdate.getTimezoneOffset()*60},c:function c(){return"Y-m-d\\TH:i:sP".replace(formatChr,formatChrCb)},r:function r(){return"D, d M Y H:i:s O".replace(formatChr,formatChrCb)},U:function U(){return jsdate/1e3|0}};var _date=function _date(format,timestamp){jsdate=timestamp===undefined?new Date:timestamp instanceof Date?new Date(timestamp):new Date(timestamp*1e3);return format.replace(formatChr,formatChrCb)};return _date(format,timestamp)}},{}],37:[function(require,module,exports){"use strict";var reSpace="[ \\t]+";var reSpaceOpt="[ \\t]*";var reMeridian="(?:([ap])\\.?m\\.?([\\t ]|$))";var reHour24="(2[0-4]|[01]?[0-9])";var reHour24lz="([01][0-9]|2[0-4])";var reHour12="(0?[1-9]|1[0-2])";var reMinute="([0-5]?[0-9])";var reMinutelz="([0-5][0-9])";var reSecond="(60|[0-5]?[0-9])";var reSecondlz="(60|[0-5][0-9])";var reFrac="(?:\\.([0-9]+))";var reDayfull="sunday|monday|tuesday|wednesday|thursday|friday|saturday";var reDayabbr="sun|mon|tue|wed|thu|fri|sat";var reDaytext=reDayfull+"|"+reDayabbr+"|weekdays?";var reReltextnumber="first|second|third|fourth|fifth|sixth|seventh|eighth?|ninth|tenth|eleventh|twelfth";var reReltexttext="next|last|previous|this";var reReltextunit="(?:second|sec|minute|min|hour|day|fortnight|forthnight|month|year)s?|weeks|"+reDaytext;var reYear="([0-9]{1,4})";var reYear2="([0-9]{2})";var reYear4="([0-9]{4})";var reYear4withSign="([+-]?[0-9]{4})";var reMonth="(1[0-2]|0?[0-9])";var reMonthlz="(0[0-9]|1[0-2])";var reDay="(?:(3[01]|[0-2]?[0-9])(?:st|nd|rd|th)?)";var reDaylz="(0[0-9]|[1-2][0-9]|3[01])";var reMonthFull="january|february|march|april|may|june|july|august|september|october|november|december";var reMonthAbbr="jan|feb|mar|apr|may|jun|jul|aug|sept?|oct|nov|dec";var reMonthroman="i[vx]|vi{0,3}|xi{0,2}|i{1,3}";var reMonthText="("+reMonthFull+"|"+reMonthAbbr+"|"+reMonthroman+")";var reTzCorrection="((?:GMT)?([+-])"+reHour24+":?"+reMinute+"?)";var reDayOfYear="(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])";var reWeekOfYear="(0[1-9]|[1-4][0-9]|5[0-3])";var reDateNoYear=reMonthText+"[ .\\t-]*"+reDay+"[,.stndrh\\t ]*";function processMeridian(hour,meridian){meridian=meridian&&meridian.toLowerCase();switch(meridian){case"a":hour+=hour===12?-12:0;break;case"p":hour+=hour!==12?12:0;break}return hour}function processYear(yearStr){var year=+yearStr;if(yearStr.length<4&&year<100){year+=year<70?2e3:1900}return year}function lookupMonth(monthStr){return{jan:0,january:0,i:0,feb:1,february:1,ii:1,mar:2,march:2,iii:2,apr:3,april:3,iv:3,may:4,v:4,jun:5,june:5,vi:5,jul:6,july:6,vii:6,aug:7,august:7,viii:7,sep:8,sept:8,september:8,ix:8,oct:9,october:9,x:9,nov:10,november:10,xi:10,dec:11,december:11,xii:11}[monthStr.toLowerCase()]}function lookupWeekday(dayStr){var desiredSundayNumber=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var dayNumbers={mon:1,monday:1,tue:2,tuesday:2,wed:3,wednesday:3,thu:4,thursday:4,fri:5,friday:5,sat:6,saturday:6,sun:0,sunday:0};return dayNumbers[dayStr.toLowerCase()]||desiredSundayNumber}function lookupRelative(relText){var relativeNumbers={last:-1,previous:-1,this:0,first:1,next:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eight:8,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12};var relativeBehavior={this:1};var relTextLower=relText.toLowerCase();return{amount:relativeNumbers[relTextLower],behavior:relativeBehavior[relTextLower]||0}}function processTzCorrection(tzOffset,oldValue){var reTzCorrectionLoose=/(?:GMT)?([+-])(\d+)(:?)(\d{0,2})/i;tzOffset=tzOffset&&tzOffset.match(reTzCorrectionLoose);if(!tzOffset){return oldValue}var sign=tzOffset[1]==="-"?1:-1;var hours=+tzOffset[2];var minutes=+tzOffset[4];if(!tzOffset[4]&&!tzOffset[3]){minutes=Math.floor(hours%100);hours=Math.floor(hours/100)}return sign*(hours*60+minutes)}var formats={yesterday:{regex:/^yesterday/i,name:"yesterday",callback:function callback(){this.rd-=1;return this.resetTime()}},now:{regex:/^now/i,name:"now"},noon:{regex:/^noon/i,name:"noon",callback:function callback(){return this.resetTime()&&this.time(12,0,0,0)}},midnightOrToday:{regex:/^(midnight|today)/i,name:"midnight | today",callback:function callback(){return this.resetTime()}},tomorrow:{regex:/^tomorrow/i,name:"tomorrow",callback:function callback(){this.rd+=1;return this.resetTime()}},timestamp:{regex:/^@(-?\d+)/i,name:"timestamp",callback:function callback(match,timestamp){this.rs+=+timestamp;this.y=1970;this.m=0;this.d=1;this.dates=0;return this.resetTime()&&this.zone(0)}},firstOrLastDay:{regex:/^(first|last) day of/i,name:"firstdayof | lastdayof",callback:function callback(match,day){if(day.toLowerCase()==="first"){this.firstOrLastDayOfMonth=1}else{this.firstOrLastDayOfMonth=-1}}},backOrFrontOf:{regex:RegExp("^(back|front) of "+reHour24+reSpaceOpt+reMeridian+"?","i"),name:"backof | frontof",callback:function callback(match,side,hours,meridian){var back=side.toLowerCase()==="back";var hour=+hours;var minute=15;if(!back){hour-=1;minute=45}hour=processMeridian(hour,meridian);return this.resetTime()&&this.time(hour,minute,0,0)}},weekdayOf:{regex:RegExp("^("+reReltextnumber+"|"+reReltexttext+")"+reSpace+"("+reDayfull+"|"+reDayabbr+")"+reSpace+"of","i"),name:"weekdayof"},mssqltime:{regex:RegExp("^"+reHour12+":"+reMinutelz+":"+reSecondlz+"[:.]([0-9]+)"+reMeridian,"i"),name:"mssqltime",callback:function callback(match,hour,minute,second,frac,meridian){return this.time(processMeridian(+hour,meridian),+minute,+second,+frac.substr(0,3))}},timeLong12:{regex:RegExp("^"+reHour12+"[:.]"+reMinute+"[:.]"+reSecondlz+reSpaceOpt+reMeridian,"i"),name:"timelong12",callback:function callback(match,hour,minute,second,meridian){return this.time(processMeridian(+hour,meridian),+minute,+second,0)}},timeShort12:{regex:RegExp("^"+reHour12+"[:.]"+reMinutelz+reSpaceOpt+reMeridian,"i"),name:"timeshort12",callback:function callback(match,hour,minute,meridian){return this.time(processMeridian(+hour,meridian),+minute,0,0)}},timeTiny12:{regex:RegExp("^"+reHour12+reSpaceOpt+reMeridian,"i"),name:"timetiny12",callback:function callback(match,hour,meridian){return this.time(processMeridian(+hour,meridian),0,0,0)}},soap:{regex:RegExp("^"+reYear4+"-"+reMonthlz+"-"+reDaylz+"T"+reHour24lz+":"+reMinutelz+":"+reSecondlz+reFrac+reTzCorrection+"?","i"),name:"soap",callback:function callback(match,year,month,day,hour,minute,second,frac,tzCorrection){return this.ymd(+year,month-1,+day)&&this.time(+hour,+minute,+second,+frac.substr(0,3))&&this.zone(processTzCorrection(tzCorrection))}},wddx:{regex:RegExp("^"+reYear4+"-"+reMonth+"-"+reDay+"T"+reHour24+":"+reMinute+":"+reSecond),name:"wddx",callback:function callback(match,year,month,day,hour,minute,second){return this.ymd(+year,month-1,+day)&&this.time(+hour,+minute,+second,0)}},exif:{regex:RegExp("^"+reYear4+":"+reMonthlz+":"+reDaylz+" "+reHour24lz+":"+reMinutelz+":"+reSecondlz,"i"),name:"exif",callback:function callback(match,year,month,day,hour,minute,second){return this.ymd(+year,month-1,+day)&&this.time(+hour,+minute,+second,0)}},xmlRpc:{regex:RegExp("^"+reYear4+reMonthlz+reDaylz+"T"+reHour24+":"+reMinutelz+":"+reSecondlz),name:"xmlrpc",callback:function callback(match,year,month,day,hour,minute,second){return this.ymd(+year,month-1,+day)&&this.time(+hour,+minute,+second,0)}},xmlRpcNoColon:{regex:RegExp("^"+reYear4+reMonthlz+reDaylz+"[Tt]"+reHour24+reMinutelz+reSecondlz),name:"xmlrpcnocolon",callback:function callback(match,year,month,day,hour,minute,second){return this.ymd(+year,month-1,+day)&&this.time(+hour,+minute,+second,0)}},clf:{regex:RegExp("^"+reDay+"/("+reMonthAbbr+")/"+reYear4+":"+reHour24lz+":"+reMinutelz+":"+reSecondlz+reSpace+reTzCorrection,"i"),name:"clf",callback:function callback(match,day,month,year,hour,minute,second,tzCorrection){return this.ymd(+year,lookupMonth(month),+day)&&this.time(+hour,+minute,+second,0)&&this.zone(processTzCorrection(tzCorrection))}},iso8601long:{regex:RegExp("^t?"+reHour24+"[:.]"+reMinute+"[:.]"+reSecond+reFrac,"i"),name:"iso8601long",callback:function callback(match,hour,minute,second,frac){return this.time(+hour,+minute,+second,+frac.substr(0,3))}},dateTextual:{regex:RegExp("^"+reMonthText+"[ .\\t-]*"+reDay+"[,.stndrh\\t ]+"+reYear,"i"),name:"datetextual",callback:function callback(match,month,day,year){return this.ymd(processYear(year),lookupMonth(month),+day)}},pointedDate4:{regex:RegExp("^"+reDay+"[.\\t-]"+reMonth+"[.-]"+reYear4),name:"pointeddate4",callback:function callback(match,day,month,year){return this.ymd(+year,month-1,+day)}},pointedDate2:{regex:RegExp("^"+reDay+"[.\\t]"+reMonth+"\\."+reYear2),name:"pointeddate2",callback:function callback(match,day,month,year){return this.ymd(processYear(year),month-1,+day)}},timeLong24:{regex:RegExp("^t?"+reHour24+"[:.]"+reMinute+"[:.]"+reSecond),name:"timelong24",callback:function callback(match,hour,minute,second){return this.time(+hour,+minute,+second,0)}},dateNoColon:{regex:RegExp("^"+reYear4+reMonthlz+reDaylz),name:"datenocolon",callback:function callback(match,year,month,day){return this.ymd(+year,month-1,+day)}},pgydotd:{regex:RegExp("^"+reYear4+"\\.?"+reDayOfYear),name:"pgydotd",callback:function callback(match,year,day){return this.ymd(+year,0,+day)}},timeShort24:{regex:RegExp("^t?"+reHour24+"[:.]"+reMinute,"i"),name:"timeshort24",callback:function callback(match,hour,minute){return this.time(+hour,+minute,0,0)}},iso8601noColon:{regex:RegExp("^t?"+reHour24lz+reMinutelz+reSecondlz,"i"),name:"iso8601nocolon",callback:function callback(match,hour,minute,second){return this.time(+hour,+minute,+second,0)}},iso8601dateSlash:{regex:RegExp("^"+reYear4+"/"+reMonthlz+"/"+reDaylz+"/"),name:"iso8601dateslash",callback:function callback(match,year,month,day){return this.ymd(+year,month-1,+day)}},dateSlash:{regex:RegExp("^"+reYear4+"/"+reMonth+"/"+reDay),name:"dateslash",callback:function callback(match,year,month,day){return this.ymd(+year,month-1,+day)}},american:{regex:RegExp("^"+reMonth+"/"+reDay+"/"+reYear),name:"american",callback:function callback(match,month,day,year){return this.ymd(processYear(year),month-1,+day)}},americanShort:{regex:RegExp("^"+reMonth+"/"+reDay),name:"americanshort",callback:function callback(match,month,day){return this.ymd(this.y,month-1,+day)}},gnuDateShortOrIso8601date2:{regex:RegExp("^"+reYear+"-"+reMonth+"-"+reDay),name:"gnudateshort | iso8601date2",callback:function callback(match,year,month,day){return this.ymd(processYear(year),month-1,+day)}},iso8601date4:{regex:RegExp("^"+reYear4withSign+"-"+reMonthlz+"-"+reDaylz),name:"iso8601date4",callback:function callback(match,year,month,day){return this.ymd(+year,month-1,+day)}},gnuNoColon:{regex:RegExp("^t?"+reHour24lz+reMinutelz,"i"),name:"gnunocolon",callback:function callback(match,hour,minute){switch(this.times){case 0:return this.time(+hour,+minute,0,this.f);case 1:this.y=hour*100+ +minute;this.times++;return true;default:return false}}},gnuDateShorter:{regex:RegExp("^"+reYear4+"-"+reMonth),name:"gnudateshorter",callback:function callback(match,year,month){return this.ymd(+year,month-1,1)}},pgTextReverse:{regex:RegExp("^"+"(\\d{3,4}|[4-9]\\d|3[2-9])-("+reMonthAbbr+")-"+reDaylz,"i"),name:"pgtextreverse",callback:function callback(match,year,month,day){return this.ymd(processYear(year),lookupMonth(month),+day)}},dateFull:{regex:RegExp("^"+reDay+"[ \\t.-]*"+reMonthText+"[ \\t.-]*"+reYear,"i"),name:"datefull",callback:function callback(match,day,month,year){return this.ymd(processYear(year),lookupMonth(month),+day)}},dateNoDay:{regex:RegExp("^"+reMonthText+"[ .\\t-]*"+reYear4,"i"),name:"datenoday",callback:function callback(match,month,year){return this.ymd(+year,lookupMonth(month),1)}},dateNoDayRev:{regex:RegExp("^"+reYear4+"[ .\\t-]*"+reMonthText,"i"),name:"datenodayrev",callback:function callback(match,year,month){return this.ymd(+year,lookupMonth(month),1)}},pgTextShort:{regex:RegExp("^("+reMonthAbbr+")-"+reDaylz+"-"+reYear,"i"),name:"pgtextshort",callback:function callback(match,month,day,year){return this.ymd(processYear(year),lookupMonth(month),+day)}},dateNoYear:{regex:RegExp("^"+reDateNoYear,"i"),name:"datenoyear",callback:function callback(match,month,day){return this.ymd(this.y,lookupMonth(month),+day)}},dateNoYearRev:{regex:RegExp("^"+reDay+"[ .\\t-]*"+reMonthText,"i"),name:"datenoyearrev",callback:function callback(match,day,month){return this.ymd(this.y,lookupMonth(month),+day)}},isoWeekDay:{regex:RegExp("^"+reYear4+"-?W"+reWeekOfYear+"(?:-?([0-7]))?"),name:"isoweekday | isoweek",callback:function callback(match,year,week,day){day=day?+day:1;if(!this.ymd(+year,0,1)){return false}var dayOfWeek=new Date(this.y,this.m,this.d).getDay();dayOfWeek=0-(dayOfWeek>4?dayOfWeek-7:dayOfWeek);this.rd+=dayOfWeek+(week-1)*7+day}},relativeText:{regex:RegExp("^("+reReltextnumber+"|"+reReltexttext+")"+reSpace+"("+reReltextunit+")","i"),name:"relativetext",callback:function callback(match,relValue,relUnit){var _lookupRelative=lookupRelative(relValue),amount=_lookupRelative.amount,behavior=_lookupRelative.behavior;switch(relUnit.toLowerCase()){case"sec":case"secs":case"second":case"seconds":this.rs+=amount;break;case"min":case"mins":case"minute":case"minutes":this.ri+=amount;break;case"hour":case"hours":this.rh+=amount;break;case"day":case"days":this.rd+=amount;break;case"fortnight":case"fortnights":case"forthnight":case"forthnights":this.rd+=amount*14;break;case"week":case"weeks":this.rd+=amount*7;break;case"month":case"months":this.rm+=amount;break;case"year":case"years":this.ry+=amount;break;case"mon":case"monday":case"tue":case"tuesday":case"wed":case"wednesday":case"thu":case"thursday":case"fri":case"friday":case"sat":case"saturday":case"sun":case"sunday":this.resetTime();this.weekday=lookupWeekday(relUnit,7);this.weekdayBehavior=1;this.rd+=(amount>0?amount-1:amount)*7;break;case"weekday":case"weekdays":break}}},relative:{regex:RegExp("^([+-]*)[ \\t]*(\\d+)"+reSpaceOpt+"("+reReltextunit+"|week)","i"),name:"relative",callback:function callback(match,signs,relValue,relUnit){var minuses=signs.replace(/[^-]/g,"").length;var amount=+relValue*Math.pow(-1,minuses);switch(relUnit.toLowerCase()){case"sec":case"secs":case"second":case"seconds":this.rs+=amount;break;case"min":case"mins":case"minute":case"minutes":this.ri+=amount;break;case"hour":case"hours":this.rh+=amount;break;case"day":case"days":this.rd+=amount;break;case"fortnight":case"fortnights":case"forthnight":case"forthnights":this.rd+=amount*14;break;case"week":case"weeks":this.rd+=amount*7;break;case"month":case"months":this.rm+=amount;break;case"year":case"years":this.ry+=amount;break;case"mon":case"monday":case"tue":case"tuesday":case"wed":case"wednesday":case"thu":case"thursday":case"fri":case"friday":case"sat":case"saturday":case"sun":case"sunday":this.resetTime();this.weekday=lookupWeekday(relUnit,7);this.weekdayBehavior=1;this.rd+=(amount>0?amount-1:amount)*7;break;case"weekday":case"weekdays":break}}},dayText:{regex:RegExp("^("+reDaytext+")","i"),name:"daytext",callback:function callback(match,dayText){this.resetTime();this.weekday=lookupWeekday(dayText,0);if(this.weekdayBehavior!==2){this.weekdayBehavior=1}}},relativeTextWeek:{regex:RegExp("^("+reReltexttext+")"+reSpace+"week","i"),name:"relativetextweek",callback:function callback(match,relText){this.weekdayBehavior=2;switch(relText.toLowerCase()){case"this":this.rd+=0;break;case"next":this.rd+=7;break;case"last":case"previous":this.rd-=7;break}if(isNaN(this.weekday)){this.weekday=1}}},monthFullOrMonthAbbr:{regex:RegExp("^("+reMonthFull+"|"+reMonthAbbr+")","i"),name:"monthfull | monthabbr",callback:function callback(match,month){return this.ymd(this.y,lookupMonth(month),this.d)}},tzCorrection:{regex:RegExp("^"+reTzCorrection,"i"),name:"tzcorrection",callback:function callback(tzCorrection){return this.zone(processTzCorrection(tzCorrection))}},ago:{regex:/^ago/i,name:"ago",callback:function callback(){this.ry=-this.ry;this.rm=-this.rm;this.rd=-this.rd;this.rh=-this.rh;this.ri=-this.ri;this.rs=-this.rs;this.rf=-this.rf}},year4:{regex:RegExp("^"+reYear4),name:"year4",callback:function callback(match,year){this.y=+year;return true}},whitespace:{regex:/^[ .,\t]+/,name:"whitespace"},dateShortWithTimeLong:{regex:RegExp("^"+reDateNoYear+"t?"+reHour24+"[:.]"+reMinute+"[:.]"+reSecond,"i"),name:"dateshortwithtimelong",callback:function callback(match,month,day,hour,minute,second){return this.ymd(this.y,lookupMonth(month),+day)&&this.time(+hour,+minute,+second,0)}},dateShortWithTimeLong12:{regex:RegExp("^"+reDateNoYear+reHour12+"[:.]"+reMinute+"[:.]"+reSecondlz+reSpaceOpt+reMeridian,"i"),name:"dateshortwithtimelong12",callback:function callback(match,month,day,hour,minute,second,meridian){return this.ymd(this.y,lookupMonth(month),+day)&&this.time(processMeridian(+hour,meridian),+minute,+second,0)}},dateShortWithTimeShort:{regex:RegExp("^"+reDateNoYear+"t?"+reHour24+"[:.]"+reMinute,"i"),name:"dateshortwithtimeshort",callback:function callback(match,month,day,hour,minute){return this.ymd(this.y,lookupMonth(month),+day)&&this.time(+hour,+minute,0,0)}},dateShortWithTimeShort12:{regex:RegExp("^"+reDateNoYear+reHour12+"[:.]"+reMinutelz+reSpaceOpt+reMeridian,"i"),name:"dateshortwithtimeshort12",callback:function callback(match,month,day,hour,minute,meridian){return this.ymd(this.y,lookupMonth(month),+day)&&this.time(processMeridian(+hour,meridian),+minute,0,0)}}};var resultProto={y:NaN,m:NaN,d:NaN,h:NaN,i:NaN,s:NaN,f:NaN,ry:0,rm:0,rd:0,rh:0,ri:0,rs:0,rf:0,weekday:NaN,weekdayBehavior:0,firstOrLastDayOfMonth:0,z:NaN,dates:0,times:0,zones:0,ymd:function ymd(y,m,d){if(this.dates>0){return false}this.dates++;this.y=y;this.m=m;this.d=d;return true},time:function time(h,i,s,f){if(this.times>0){return false}this.times++;this.h=h;this.i=i;this.s=s;this.f=f;return true},resetTime:function resetTime(){this.h=0;this.i=0;this.s=0;this.f=0;this.times=0;return true},zone:function zone(minutes){if(this.zones<=1){this.zones++;this.z=minutes;return true}return false},toDate:function toDate(relativeTo){if(this.dates&&!this.times){this.h=this.i=this.s=this.f=0}if(isNaN(this.y)){this.y=relativeTo.getFullYear()}if(isNaN(this.m)){this.m=relativeTo.getMonth()}if(isNaN(this.d)){this.d=relativeTo.getDate()}if(isNaN(this.h)){this.h=relativeTo.getHours()}if(isNaN(this.i)){this.i=relativeTo.getMinutes()}if(isNaN(this.s)){this.s=relativeTo.getSeconds()}if(isNaN(this.f)){this.f=relativeTo.getMilliseconds()}switch(this.firstOrLastDayOfMonth){case 1:this.d=1;break;case-1:this.d=0;this.m+=1;break}if(!isNaN(this.weekday)){var date=new Date(relativeTo.getTime());date.setFullYear(this.y,this.m,this.d);date.setHours(this.h,this.i,this.s,this.f);var dow=date.getDay();if(this.weekdayBehavior===2){if(dow===0&&this.weekday!==0){this.weekday=-6}if(this.weekday===0&&dow!==0){this.weekday=7}this.d-=dow;this.d+=this.weekday}else{var diff=this.weekday-dow;if(this.rd<0&&diff<0||this.rd>=0&&diff<=-this.weekdayBehavior){diff+=7}if(this.weekday>=0){this.d+=diff}else{this.d-=7-(Math.abs(this.weekday)-dow)}this.weekday=NaN}}this.y+=this.ry;this.m+=this.rm;this.d+=this.rd;this.h+=this.rh;this.i+=this.ri;this.s+=this.rs;this.f+=this.rf;this.ry=this.rm=this.rd=0;this.rh=this.ri=this.rs=this.rf=0;var result=new Date(relativeTo.getTime());result.setFullYear(this.y,this.m,this.d);result.setHours(this.h,this.i,this.s,this.f);switch(this.firstOrLastDayOfMonth){case 1:result.setDate(1);break;case-1:result.setMonth(result.getMonth()+1,0);break}if(!isNaN(this.z)&&result.getTimezoneOffset()!==this.z){result.setUTCFullYear(result.getFullYear(),result.getMonth(),result.getDate());result.setUTCHours(result.getHours(),result.getMinutes()+this.z,result.getSeconds(),result.getMilliseconds())}return result}};module.exports=function strtotime(str,now){if(now==null){now=Math.floor(Date.now()/1e3)}var rules=[formats.yesterday,formats.now,formats.noon,formats.midnightOrToday,formats.tomorrow,formats.timestamp,formats.firstOrLastDay,formats.backOrFrontOf,formats.timeTiny12,formats.timeShort12,formats.timeLong12,formats.mssqltime,formats.timeShort24,formats.timeLong24,formats.iso8601long,formats.gnuNoColon,formats.iso8601noColon,formats.americanShort,formats.american,formats.iso8601date4,formats.iso8601dateSlash,formats.dateSlash,formats.gnuDateShortOrIso8601date2,formats.gnuDateShorter,formats.dateFull,formats.pointedDate4,formats.pointedDate2,formats.dateNoDay,formats.dateNoDayRev,formats.dateTextual,formats.dateNoYear,formats.dateNoYearRev,formats.dateNoColon,formats.xmlRpc,formats.xmlRpcNoColon,formats.soap,formats.wddx,formats.exif,formats.pgydotd,formats.isoWeekDay,formats.pgTextShort,formats.pgTextReverse,formats.clf,formats.year4,formats.ago,formats.dayText,formats.relativeTextWeek,formats.relativeText,formats.monthFullOrMonthAbbr,formats.tzCorrection,formats.dateShortWithTimeShort12,formats.dateShortWithTimeLong12,formats.dateShortWithTimeShort,formats.dateShortWithTimeLong,formats.relative,formats.whitespace];var result=Object.create(resultProto);while(str.length){var longestMatch=null;var finalRule=null;for(var i=0,l=rules.length;ilongestMatch[0].length){longestMatch=match;finalRule=format}}}if(!finalRule||finalRule.callback&&finalRule.callback.apply(result,longestMatch)===false){return false}str=str.substr(longestMatch[0].length);finalRule=null;longestMatch=null}return Math.floor(result.toDate(new Date(now*1e3))/1e3)}},{}],38:[function(require,module,exports){(function(global){(function(){"use strict";module.exports=function ini_get(varname){var $global=typeof window!=="undefined"?window:global;$global.$locutus=$global.$locutus||{};var $locutus=$global.$locutus;$locutus.php=$locutus.php||{};$locutus.php.ini=$locutus.php.ini||{};if($locutus.php.ini[varname]&&$locutus.php.ini[varname].local_value!==undefined){if($locutus.php.ini[varname].local_value===null){return""}return $locutus.php.ini[varname].local_value}return""}}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],39:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};module.exports=function explode(delimiter,string,limit){if(arguments.length<2||typeof delimiter==="undefined"||typeof string==="undefined"){return null}if(delimiter===""||delimiter===false||delimiter===null){return false}if(typeof delimiter==="function"||(typeof delimiter==="undefined"?"undefined":_typeof(delimiter))==="object"||typeof string==="function"||(typeof string==="undefined"?"undefined":_typeof(string))==="object"){return{0:""}}if(delimiter===true){delimiter="1"}delimiter+="";string+="";var s=string.split(delimiter);if(typeof limit==="undefined")return s;if(limit===0)limit=1;if(limit>0){if(limit>=s.length){return s}return s.slice(0,limit-1).concat([s.slice(limit-1).join(delimiter)])}if(-limit>=s.length){return[]}s.splice(s.length+limit);return s}},{}],40:[function(require,module,exports){"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};module.exports=function implode(glue,pieces){var i="";var retVal="";var tGlue="";if(arguments.length===1){pieces=glue;glue=""}if((typeof pieces==="undefined"?"undefined":_typeof(pieces))==="object"){if(Object.prototype.toString.call(pieces)==="[object Array]"){return pieces.join(glue)}for(i in pieces){retVal+=tGlue+pieces[i];tGlue=glue}return retVal}return pieces}},{}],41:[function(require,module,exports){"use strict";module.exports=function stristr(haystack,needle,bool){var pos=0;haystack+="";pos=haystack.toLowerCase().indexOf((needle+"").toLowerCase());if(pos===-1){return false}else{if(bool){return haystack.substr(0,pos)}else{return haystack.slice(pos)}}}},{}],42:[function(require,module,exports){"use strict";module.exports=function strlen(string){var str=string+"";var iniVal=(typeof require!=="undefined"?require("../info/ini_get")("unicode.semantics"):undefined)||"off";if(iniVal==="off"){return str.length}var i=0;var lgth=0;var getWholeChar=function getWholeChar(str,i){var code=str.charCodeAt(i);var next="";var prev="";if(code>=55296&&code<=56319){if(str.length<=i+1){throw new Error("High surrogate without following low surrogate")}next=str.charCodeAt(i+1);if(next<56320||next>57343){throw new Error("High surrogate without following low surrogate")}return str.charAt(i)+str.charAt(i+1)}else if(code>=56320&&code<=57343){if(i===0){throw new Error("Low surrogate without preceding high surrogate")}prev=str.charCodeAt(i-1);if(prev<55296||prev>56319){throw new Error("Low surrogate without preceding high surrogate")}return false}return str.charAt(i)};for(i=0,lgth=0;iinputLength||start<0||start>end){return false}if(multibyte){return input.slice(start,end).join("")}return input.slice(start,end)}},{"../_helpers/_phpCastString":33,"../info/ini_get":38}]},{},[1]);