UNPKG

twig

Version:

JS port of the Twig templating language.

9 lines 74.8 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Twig=t():e.Twig=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){/** * Twig.js 0.8.9 * * @copyright 2011-2016 John Roepke and the Twig.js Contributors * @license Available under the BSD 2-Clause License * @link https://github.com/twigjs/twig.js */ var n={VERSION:"0.8.9"};r(1)(n),r(2)(n),r(3)(n),r(5)(n),r(6)(n),r(7)(n),r(16)(n),r(17)(n),r(21)(n),r(22)(n),r(23)(n),r(24)(n),r(25)(n),r(26)(n),e.exports=n.exports},function(e,t){e.exports=function(e){"use strict";function t(e,t){var r=Object.prototype.toString.call(t).slice(8,-1);return void 0!==t&&null!==t&&r===e}return e.trace=!1,e.debug=!1,e.cache=!0,e.placeholders={parent:"{{|PARENT|}}"},e.indexOf=function(e,t){if(Array.prototype.hasOwnProperty("indexOf"))return e.indexOf(t);if(void 0===e||null===e)throw new TypeError;var r=Object(e),n=r.length>>>0;if(0===n)return-1;var o=0;if(arguments.length>0&&(o=Number(arguments[1]),o!==o?o=0:0!==o&&o!==1/0&&o!==-(1/0)&&(o=(o>0||-1)*Math.floor(Math.abs(o)))),o>=n)return-1;for(var i=o>=0?o:Math.max(n-Math.abs(o),0);n>i;i++)if(i in r&&r[i]===t)return i;return e==t?0:-1},e.forEach=function(e,t,r){if(Array.prototype.forEach)return e.forEach(t,r);var n,o;if(null==e)throw new TypeError(" this is null or not defined");var i=Object(e),s=i.length>>>0;if("[object Function]"!={}.toString.call(t))throw new TypeError(t+" is not a function");for(r&&(n=r),o=0;s>o;){var p;o in i&&(p=i[o],t.call(n,p,o,i)),o++}},e.merge=function(t,r,n){return e.forEach(Object.keys(r),function(e){(!n||e in t)&&(t[e]=r[e])}),t},e.Error=function(e){this.message=e,this.name="TwigException",this.type="TwigException"},e.Error.prototype.toString=function(){var e=this.name+": "+this.message;return e},e.log={trace:function(){e.trace&&console&&console.log(Array.prototype.slice.call(arguments))},debug:function(){e.debug&&console&&console.log(Array.prototype.slice.call(arguments))}},"undefined"!=typeof console?"undefined"!=typeof console.error?e.log.error=function(){console.error.apply(console,arguments)}:"undefined"!=typeof console.log&&(e.log.error=function(){console.log.apply(console,arguments)}):e.log.error=function(){},e.ChildContext=function(e){var t=function(){};return t.prototype=e,new t},e.token={},e.token.type={output:"output",logic:"logic",comment:"comment",raw:"raw",output_whitespace_pre:"output_whitespace_pre",output_whitespace_post:"output_whitespace_post",output_whitespace_both:"output_whitespace_both",logic_whitespace_pre:"logic_whitespace_pre",logic_whitespace_post:"logic_whitespace_post",logic_whitespace_both:"logic_whitespace_both"},e.token.definitions=[{type:e.token.type.raw,open:"{% raw %}",close:"{% endraw %}"},{type:e.token.type.raw,open:"{% verbatim %}",close:"{% endverbatim %}"},{type:e.token.type.output_whitespace_pre,open:"{{-",close:"}}"},{type:e.token.type.output_whitespace_post,open:"{{",close:"-}}"},{type:e.token.type.output_whitespace_both,open:"{{-",close:"-}}"},{type:e.token.type.logic_whitespace_pre,open:"{%-",close:"%}"},{type:e.token.type.logic_whitespace_post,open:"{%",close:"-%}"},{type:e.token.type.logic_whitespace_both,open:"{%-",close:"-%}"},{type:e.token.type.output,open:"{{",close:"}}"},{type:e.token.type.logic,open:"{%",close:"%}"},{type:e.token.type.comment,open:"{#",close:"#}"}],e.token.strings=['"',"'"],e.token.findStart=function(t){var r,n,o,i,s={position:null,close_position:null,def:null};for(r=0;r<e.token.definitions.length;r++)n=e.token.definitions[r],o=t.indexOf(n.open),i=t.indexOf(n.close),e.log.trace("Twig.token.findStart: ","Searching for ",n.open," found at ",o),o>=0&&n.open.length!==n.close.length&&0>i||(o>=0&&(null===s.position||o<s.position)?(s.position=o,s.def=n,s.close_position=i):o>=0&&null!==s.position&&o===s.position&&(n.open.length>s.def.open.length?(s.position=o,s.def=n,s.close_position=i):n.open.length===s.def.open.length&&(n.close.length>s.def.close.length?i>=0&&i<s.close_position&&(s.position=o,s.def=n,s.close_position=i):i>=0&&i<s.close_position&&(s.position=o,s.def=n,s.close_position=i))));return delete s.close_position,s},e.token.findEnd=function(t,r,n){for(var o,i,s=null,p=!1,a=0,l=null,c=null,u=null,f=null,h=null,d=null;!p;){if(l=null,c=null,u=t.indexOf(r.close,a),!(u>=0))throw new e.Error("Unable to find closing bracket '"+r.close+"' opened near template position "+n);if(s=u,p=!0,r.type===e.token.type.comment)break;if(r.type===e.token.type.raw)break;for(i=e.token.strings.length,o=0;i>o;o+=1)h=t.indexOf(e.token.strings[o],a),h>0&&u>h&&(null===l||l>h)&&(l=h,c=e.token.strings[o]);if(null!==l)for(f=l+1,s=null,p=!1;;){if(d=t.indexOf(c,f),0>d)throw"Unclosed string in template";if("\\"!==t.substr(d-1,1)){a=d+1;break}f=d+1}}return s},e.tokenize=function(t){for(var r=[],n=0,o=null,i=null;t.length>0;)if(o=e.token.findStart(t),e.log.trace("Twig.tokenize: ","Found token: ",o),null!==o.position){if(o.position>0&&r.push({type:e.token.type.raw,value:t.substring(0,o.position)}),t=t.substr(o.position+o.def.open.length),n+=o.position+o.def.open.length,i=e.token.findEnd(t,o.def,n),e.log.trace("Twig.tokenize: ","Token ends at ",i),r.push({type:o.def.type,value:t.substring(0,i).trim()}),"\n"===t.substr(i+o.def.close.length,1))switch(o.def.type){case"logic_whitespace_pre":case"logic_whitespace_post":case"logic_whitespace_both":case"logic":i+=1}t=t.substr(i+o.def.close.length),n+=i+o.def.close.length}else r.push({type:e.token.type.raw,value:t}),t="";return r},e.compile=function(t){try{for(var r=[],n=[],o=[],i=null,s=null,p=null,a=null,l=null,c=null,u=null,f=null,h=null,d=null,y=null,g=null,m=function(t){e.expression.compile.apply(this,[t]),n.length>0?o.push(t):r.push(t)},x=function(t){if(s=e.logic.compile.apply(this,[t]),d=s.type,y=e.logic.handler[d].open,g=e.logic.handler[d].next,e.log.trace("Twig.compile: ","Compiled logic token to ",s," next is: ",g," open is : ",y),void 0!==y&&!y){if(a=n.pop(),u=e.logic.handler[a.type],e.indexOf(u.next,d)<0)throw new Error(d+" not expected after a "+a.type);a.output=a.output||[],a.output=a.output.concat(o),o=[],h={type:e.token.type.logic,token:a},n.length>0?o.push(h):r.push(h)}void 0!==g&&g.length>0?(e.log.trace("Twig.compile: ","Pushing ",s," to logic stack."),n.length>0&&(a=n.pop(),a.output=a.output||[],a.output=a.output.concat(o),n.push(a),o=[]),n.push(s)):void 0!==y&&y&&(h={type:e.token.type.logic,token:s},n.length>0?o.push(h):r.push(h))};t.length>0;){switch(i=t.shift(),l=r[r.length-1],c=o[o.length-1],f=t[0],e.log.trace("Compiling token ",i),i.type){case e.token.type.raw:n.length>0?o.push(i):r.push(i);break;case e.token.type.logic:x.call(this,i);break;case e.token.type.comment:break;case e.token.type.output:m.call(this,i);break;case e.token.type.logic_whitespace_pre:case e.token.type.logic_whitespace_post:case e.token.type.logic_whitespace_both:case e.token.type.output_whitespace_pre:case e.token.type.output_whitespace_post:case e.token.type.output_whitespace_both:switch(i.type!==e.token.type.output_whitespace_post&&i.type!==e.token.type.logic_whitespace_post&&(l&&l.type===e.token.type.raw&&(r.pop(),null===l.value.match(/^\s*$/)&&(l.value=l.value.trim(),r.push(l))),c&&c.type===e.token.type.raw&&(o.pop(),null===c.value.match(/^\s*$/)&&(c.value=c.value.trim(),o.push(c)))),i.type){case e.token.type.output_whitespace_pre:case e.token.type.output_whitespace_post:case e.token.type.output_whitespace_both:m.call(this,i);break;case e.token.type.logic_whitespace_pre:case e.token.type.logic_whitespace_post:case e.token.type.logic_whitespace_both:x.call(this,i)}i.type!==e.token.type.output_whitespace_pre&&i.type!==e.token.type.logic_whitespace_pre&&f&&f.type===e.token.type.raw&&(t.shift(),null===f.value.match(/^\s*$/)&&(f.value=f.value.trim(),t.unshift(f)))}e.log.trace("Twig.compile: "," Output: ",r," Logic Stack: ",n," Pending Output: ",o)}if(n.length>0)throw p=n.pop(),new Error("Unable to find an end tag for "+p.type+", expecting one of "+p.next);return r}catch(v){if(e.log.error("Error compiling twig template "+this.id+": "),v.stack?e.log.error(v.stack):e.log.error(v.toString()),this.options.rethrow)throw v}},e.parse=function(t,r){try{var n=[],o=!0,i=this;return e.forEach(t,function(t){switch(e.log.debug("Twig.parse: ","Parsing token: ",t),t.type){case e.token.type.raw:n.push(e.filters.raw(t.value));break;case e.token.type.logic:var s=t.token,p=e.logic.parse.apply(i,[s,r,o]);void 0!==p.chain&&(o=p.chain),void 0!==p.context&&(r=p.context),void 0!==p.output&&n.push(p.output);break;case e.token.type.comment:break;case e.token.type.output_whitespace_pre:case e.token.type.output_whitespace_post:case e.token.type.output_whitespace_both:case e.token.type.output:e.log.debug("Twig.parse: ","Output token: ",t.stack),n.push(e.expression.parse.apply(i,[t.stack,r]))}}),e.output.apply(this,[n])}catch(s){if(e.log.error("Error parsing twig template "+this.id+": "),s.stack?e.log.error(s.stack):e.log.error(s.toString()),this.options.rethrow)throw s;if(e.debug)return s.toString()}},e.prepare=function(t){var r,n;return e.log.debug("Twig.prepare: ","Tokenizing ",t),n=e.tokenize.apply(this,[t]),e.log.debug("Twig.prepare: ","Compiling ",n),r=e.compile.apply(this,[n]),e.log.debug("Twig.prepare: ","Compiled ",r),r},e.output=function(t){if(!this.options.autoescape)return t.join("");var r="html";"string"==typeof this.options.autoescape&&(r=this.options.autoescape);var n=[];return e.forEach(t,function(t){t&&t.twig_markup!==!0&&t.twig_markup!=r&&(t=e.filters.escape(t,[r])),n.push(t)}),e.Markup(n.join(""))},e.Templates={loaders:{},parsers:{},registry:{}},e.validateId=function(t){if("prototype"===t)throw new e.Error(t+" is not a valid twig identifier");if(e.cache&&e.Templates.registry.hasOwnProperty(t))throw new e.Error("There is already a template with the ID "+t);return!0},e.Templates.registerLoader=function(t,r,n){if("function"!=typeof r)throw new e.Error("Unable to add loader for "+t+": Invalid function reference given.");n&&(r=r.bind(n)),this.loaders[t]=r},e.Templates.unRegisterLoader=function(e){this.isRegisteredLoader(e)&&delete this.loaders[e]},e.Templates.isRegisteredLoader=function(e){return this.loaders.hasOwnProperty(e)},e.Templates.registerParser=function(t,r,n){if("function"!=typeof r)throw new e.Error("Unable to add parser for "+t+": Invalid function regerence given.");n&&(r=r.bind(n)),this.parsers[t]=r},e.Templates.unRegisterParser=function(e){this.isRegisteredParser(e)&&delete this.parsers[e]},e.Templates.isRegisteredParser=function(e){return this.parsers.hasOwnProperty(e)},e.Templates.save=function(t){if(void 0===t.id)throw new e.Error("Unable to save template with no id");e.Templates.registry[t.id]=t},e.Templates.load=function(t){return e.Templates.registry.hasOwnProperty(t)?e.Templates.registry[t]:null},e.Templates.loadRemote=function(t,r,n,o){var i;return void 0===r.async&&(r.async=!0),void 0===r.id&&(r.id=t),e.cache&&e.Templates.registry.hasOwnProperty(r.id)?("function"==typeof n&&n(e.Templates.registry[r.id]),e.Templates.registry[r.id]):(r.parser=r.parser||"twig",i=this.loaders[r.method]||this.loaders.fs,i.apply(this,arguments))},e.Template=function(r){var n=r.data,o=r.id,i=r.blocks,s=r.macros||{},p=r.base,a=r.path,l=r.url,c=r.name,u=r.method,f=r.options;this.id=o,this.method=u,this.base=p,this.path=a,this.url=l,this.name=c,this.macros=s,this.options=f,this.reset(i),t("String",n)?this.tokens=e.prepare.apply(this,[n]):this.tokens=n,void 0!==o&&e.Templates.save(this)},e.Template.prototype.reset=function(t){e.log.debug("Twig.Template.reset","Reseting template "+this.id),this.blocks={},this.importedBlocks=[],this.originalBlockTokens={},this.child={blocks:t||{}},this.extend=null},e.Template.prototype.render=function(t,r){r=r||{};var n,o;if(this.context=t||{},this.reset(),r.blocks&&(this.blocks=r.blocks),r.macros&&(this.macros=r.macros),n=e.parse.apply(this,[this.tokens,this.context]),this.extend){var i;return this.options.allowInlineIncludes&&(i=e.Templates.load(this.extend),i&&(i.options=this.options)),i||(o=e.path.parsePath(this,this.extend),i=e.Templates.loadRemote(o,{method:this.getLoaderMethod(),base:this.base,async:!1,id:o,options:this.options})),this.parent=i,this.parent.render(this.context,{blocks:this.blocks})}return"blocks"==r.output?this.blocks:"macros"==r.output?this.macros:n},e.Template.prototype.importFile=function(t){var r,n;if(!this.url&&this.options.allowInlineIncludes){if(t=this.path?this.path+"/"+t:t,n=e.Templates.load(t),!n&&(n=e.Templates.loadRemote(r,{id:t,method:this.getLoaderMethod(),async:!1,options:this.options}),!n))throw new e.Error("Unable to find the template "+t);return n.options=this.options,n}return r=e.path.parsePath(this,t),n=e.Templates.loadRemote(r,{method:this.getLoaderMethod(),base:this.base,async:!1,options:this.options,id:r})},e.Template.prototype.importBlocks=function(t,r){var n=this.importFile(t),o=this.context,i=this;r=r||!1,n.render(o),e.forEach(Object.keys(n.blocks),function(e){(r||void 0===i.blocks[e])&&(i.blocks[e]=n.blocks[e],i.importedBlocks.push(e))})},e.Template.prototype.importMacros=function(t){var r=e.path.parsePath(this,t),n=e.Templates.loadRemote(r,{method:this.getLoaderMethod(),async:!1,id:r});return n},e.Template.prototype.getLoaderMethod=function(){return this.path?"fs":this.url?"ajax":this.method||"fs"},e.Template.prototype.compile=function(t){return e.compiler.compile(this,t)},e.Markup=function(e,t){return"undefined"==typeof t&&(t=!0),"string"==typeof e&&e.length>0&&(e=new String(e),e.twig_markup=t),e},e}},function(e,t){e.exports=function(e){return e.compiler={module:{}},e.compiler.compile=function(t,r){var n,o=JSON.stringify(t.tokens),i=t.id;if(r.module){if(void 0===e.compiler.module[r.module])throw new e.Error("Unable to find module type "+r.module);n=e.compiler.module[r.module](i,o,r.twig)}else n=e.compiler.wrap(i,o);return n},e.compiler.module={amd:function(t,r,n){return'define(["'+n+'"], function (Twig) {\n var twig, templates;\ntwig = Twig.twig;\ntemplates = '+e.compiler.wrap(t,r)+"\n return templates;\n});"},node:function(t,r){return'var twig = require("twig").twig;\nexports.template = '+e.compiler.wrap(t,r)},cjs2:function(t,r,n){return'module.declare([{ twig: "'+n+'" }], function (require, exports, module) {\n var twig = require("twig").twig;\n exports.template = '+e.compiler.wrap(t,r)+"\n});"}},e.compiler.wrap=function(e,t){return'twig({id:"'+e.replace('"','\\"')+'", data:'+t+", precompiled: true});\n"},e}},function(e,t,r){e.exports=function(e){"use strict";e.expression={},r(4)(e),e.expression.reservedWords=["true","false","null","TRUE","FALSE","NULL","_context"],e.expression.type={comma:"Twig.expression.type.comma",operator:{unary:"Twig.expression.type.operator.unary",binary:"Twig.expression.type.operator.binary"},string:"Twig.expression.type.string",bool:"Twig.expression.type.bool",slice:"Twig.expression.type.slice",array:{start:"Twig.expression.type.array.start",end:"Twig.expression.type.array.end"},object:{start:"Twig.expression.type.object.start",end:"Twig.expression.type.object.end"},parameter:{start:"Twig.expression.type.parameter.start",end:"Twig.expression.type.parameter.end"},key:{period:"Twig.expression.type.key.period",brackets:"Twig.expression.type.key.brackets"},filter:"Twig.expression.type.filter",_function:"Twig.expression.type._function",variable:"Twig.expression.type.variable",number:"Twig.expression.type.number",_null:"Twig.expression.type.null",context:"Twig.expression.type.context",test:"Twig.expression.type.test"},e.expression.set={operations:[e.expression.type.filter,e.expression.type.operator.unary,e.expression.type.operator.binary,e.expression.type.array.end,e.expression.type.object.end,e.expression.type.parameter.end,e.expression.type.comma,e.expression.type.test],expressions:[e.expression.type._function,e.expression.type.bool,e.expression.type.string,e.expression.type.variable,e.expression.type.number,e.expression.type._null,e.expression.type.context,e.expression.type.parameter.start,e.expression.type.array.start,e.expression.type.object.start]},e.expression.set.operations_extended=e.expression.set.operations.concat([e.expression.type.key.period,e.expression.type.key.brackets,e.expression.type.slice]),e.expression.fn={compile:{push:function(e,t,r){r.push(e)},push_both:function(e,t,r){r.push(e),t.push(e)}},parse:{push:function(e,t,r){t.push(e)},push_value:function(e,t,r){t.push(e.value)}}},e.expression.definitions=[{type:e.expression.type.test,regex:/^is\s+(not)?\s*([a-zA-Z_][a-zA-Z0-9_]*)/,next:e.expression.set.operations.concat([e.expression.type.parameter.start]),compile:function(e,t,r){e.filter=e.match[2],e.modifier=e.match[1],delete e.match,delete e.value,r.push(e)},parse:function(t,r,n){var o=r.pop(),i=t.params&&e.expression.parse.apply(this,[t.params,n]),s=e.test(t.filter,o,i);"not"==t.modifier?r.push(!s):r.push(s)}},{type:e.expression.type.comma,regex:/^,/,next:e.expression.set.expressions.concat([e.expression.type.array.end,e.expression.type.object.end]),compile:function(t,r,n){var o,i=r.length-1;for(delete t.match,delete t.value;i>=0;i--){if(o=r.pop(),o.type===e.expression.type.object.start||o.type===e.expression.type.parameter.start||o.type===e.expression.type.array.start){r.push(o);break}n.push(o)}n.push(t)}},{type:e.expression.type.number,regex:/^\-?\d+(\.\d+)?/,next:e.expression.set.operations,compile:function(e,t,r){e.value=Number(e.value),r.push(e)},parse:e.expression.fn.parse.push_value},{type:e.expression.type.operator.binary,regex:/(^\?\:|^[\+\-~%\?]|^[\:](?!\d\])|^[!=]==?|^[!<>]=?|^\*\*?|^\/\/?|^and\s+|^or\s+|^in\s+|^not in\s+|^\.\.)/,next:e.expression.set.expressions.concat([e.expression.type.operator.unary]),compile:function(t,r,n){delete t.match,t.value=t.value.trim();var o=t.value,i=e.expression.operator.lookup(o,t);for(e.log.trace("Twig.expression.compile: ","Operator: ",i," from ",o);r.length>0&&(r[r.length-1].type==e.expression.type.operator.unary||r[r.length-1].type==e.expression.type.operator.binary)&&(i.associativity===e.expression.operator.leftToRight&&i.precidence>=r[r.length-1].precidence||i.associativity===e.expression.operator.rightToLeft&&i.precidence>r[r.length-1].precidence);){var s=r.pop();n.push(s)}if(":"===o){if(!r[r.length-1]||"?"!==r[r.length-1].value){var p=n.pop();if(p.type===e.expression.type.string||p.type===e.expression.type.variable)t.key=p.value;else if(p.type===e.expression.type.number)t.key=p.value.toString();else{if(p.type!==e.expression.type.parameter.end||!p.expression)throw new e.Error("Unexpected value before ':' of "+p.type+" = "+p.value);t.params=p.params}return void n.push(t)}}else r.push(i)},parse:function(t,r,n){t.key?r.push(t):t.params?(t.key=e.expression.parse.apply(this,[t.params,n]),r.push(t),n.loop||delete t.params):e.expression.operator.parse(t.value,r)}},{type:e.expression.type.operator.unary,regex:/(^not\s+)/,next:e.expression.set.expressions,compile:function(t,r,n){delete t.match,t.value=t.value.trim();var o=t.value,i=e.expression.operator.lookup(o,t);for(e.log.trace("Twig.expression.compile: ","Operator: ",i," from ",o);r.length>0&&(r[r.length-1].type==e.expression.type.operator.unary||r[r.length-1].type==e.expression.type.operator.binary)&&(i.associativity===e.expression.operator.leftToRight&&i.precidence>=r[r.length-1].precidence||i.associativity===e.expression.operator.rightToLeft&&i.precidence>r[r.length-1].precidence);){var s=r.pop();n.push(s)}r.push(i)},parse:function(t,r,n){e.expression.operator.parse(t.value,r)}},{type:e.expression.type.string,regex:/^(["'])(?:(?=(\\?))\2[\s\S])*?\1/,next:e.expression.set.operations_extended,compile:function(t,r,n){var o=t.value;delete t.match,o='"'===o.substring(0,1)?o.replace('\\"','"'):o.replace("\\'","'"),t.value=o.substring(1,o.length-1).replace(/\\n/g,"\n").replace(/\\r/g,"\r"),e.log.trace("Twig.expression.compile: ","String value: ",t.value),n.push(t)},parse:e.expression.fn.parse.push_value},{type:e.expression.type.parameter.start,regex:/^\(/,next:e.expression.set.expressions.concat([e.expression.type.parameter.end]),compile:e.expression.fn.compile.push_both,parse:e.expression.fn.parse.push},{type:e.expression.type.parameter.end,regex:/^\)/,next:e.expression.set.operations_extended,compile:function(t,r,n){var o,i=t;for(o=r.pop();r.length>0&&o.type!=e.expression.type.parameter.start;)n.push(o),o=r.pop();for(var s=[];t.type!==e.expression.type.parameter.start;)s.unshift(t),t=n.pop();s.unshift(t);t=n[n.length-1],void 0===t||t.type!==e.expression.type._function&&t.type!==e.expression.type.filter&&t.type!==e.expression.type.test&&t.type!==e.expression.type.key.brackets?(i.expression=!0,s.pop(),s.shift(),i.params=s,n.push(i)):(i.expression=!1,t.params=s)},parse:function(t,r,n){var o=[],i=!1,s=null;if(t.expression)s=e.expression.parse.apply(this,[t.params,n]),r.push(s);else{for(;r.length>0;){if(s=r.pop(),s&&s.type&&s.type==e.expression.type.parameter.start){i=!0;break}o.unshift(s)}if(!i)throw new e.Error("Expected end of parameter set.");r.push(o)}}},{type:e.expression.type.slice,regex:/^\[(\d*\:\d*)\]/,next:e.expression.set.operations_extended,compile:function(e,t,r){var n=e.match[1].split(":"),o=n[0]?parseInt(n[0]):void 0,i=n[1]?parseInt(n[1]):void 0;e.value="slice",e.params=[o,i],i||(e.params=[o]),r.push(e)},parse:function(t,r,n){var o=r.pop(),i=t.params;r.push(e.filter.apply(this,[t.value,o,i]))}},{type:e.expression.type.array.start,regex:/^\[/,next:e.expression.set.expressions.concat([e.expression.type.array.end]),compile:e.expression.fn.compile.push_both,parse:e.expression.fn.parse.push},{type:e.expression.type.array.end,regex:/^\]/,next:e.expression.set.operations_extended,compile:function(t,r,n){for(var o,i=r.length-1;i>=0&&(o=r.pop(),o.type!==e.expression.type.array.start);i--)n.push(o);n.push(t)},parse:function(t,r,n){for(var o=[],i=!1,s=null;r.length>0;){if(s=r.pop(),s.type&&s.type==e.expression.type.array.start){i=!0;break}o.unshift(s)}if(!i)throw new e.Error("Expected end of array.");r.push(o)}},{type:e.expression.type.object.start,regex:/^\{/,next:e.expression.set.expressions.concat([e.expression.type.object.end]),compile:e.expression.fn.compile.push_both,parse:e.expression.fn.parse.push},{type:e.expression.type.object.end,regex:/^\}/,next:e.expression.set.operations_extended,compile:function(t,r,n){for(var o,i=r.length-1;i>=0&&(o=r.pop(),!o||o.type!==e.expression.type.object.start);i--)n.push(o);n.push(t)},parse:function(t,r,n){for(var o={},i=!1,s=null,p=!1,a=null;r.length>0;){if(s=r.pop(),s&&s.type&&s.type===e.expression.type.object.start){i=!0;break}if(s&&s.type&&(s.type===e.expression.type.operator.binary||s.type===e.expression.type.operator.unary)&&s.key){if(!p)throw new e.Error("Missing value for key '"+s.key+"' in object definition.");o[s.key]=a,void 0===o._keys&&(o._keys=[]),o._keys.unshift(s.key),a=null,p=!1}else p=!0,a=s}if(!i)throw new e.Error("Unexpected end of object.");r.push(o)}},{type:e.expression.type.filter,regex:/^\|\s?([a-zA-Z_][a-zA-Z0-9_\-]*)/,next:e.expression.set.operations_extended.concat([e.expression.type.parameter.start]),compile:function(e,t,r){e.value=e.match[1],r.push(e)},parse:function(t,r,n){var o=r.pop(),i=t.params&&e.expression.parse.apply(this,[t.params,n]);r.push(e.filter.apply(this,[t.value,o,i]))}},{type:e.expression.type._function,regex:/^([a-zA-Z_][a-zA-Z0-9_]*)\s*\(/,next:e.expression.type.parameter.start,transform:function(e,t){return"("},compile:function(e,t,r){var n=e.match[1];e.fn=n,delete e.match,delete e.value,r.push(e)},parse:function(t,r,n){var o,i=t.params&&e.expression.parse.apply(this,[t.params,n]),s=t.fn;if(e.functions[s])o=e.functions[s].apply(this,i);else{if("function"!=typeof n[s])throw new e.Error(s+" function does not exist and is not defined in the context");o=n[s].apply(n,i)}r.push(o)}},{type:e.expression.type.variable,regex:/^[a-zA-Z_][a-zA-Z0-9_]*/,next:e.expression.set.operations_extended.concat([e.expression.type.parameter.start]),compile:e.expression.fn.compile.push,validate:function(t,r){return e.indexOf(e.expression.reservedWords,t[0])<0},parse:function(t,r,n){var o=e.expression.resolve.apply(this,[n[t.value],n]);r.push(o)}},{type:e.expression.type.key.period,regex:/^\.([a-zA-Z0-9_]+)/,next:e.expression.set.operations_extended.concat([e.expression.type.parameter.start]),compile:function(e,t,r){e.key=e.match[1],delete e.match,delete e.value,r.push(e)},parse:function(t,r,n,o){var i,s=t.params&&e.expression.parse.apply(this,[t.params,n]),p=t.key,a=r.pop();if(null===a||void 0===a){if(this.options.strict_variables)throw new e.Error("Can't access a key "+p+" on an null or undefined object.");i=void 0}else{var l=function(e){return e.substr(0,1).toUpperCase()+e.substr(1)};i="object"==typeof a&&p in a?a[p]:void 0!==a["get"+l(p)]?a["get"+l(p)]:void 0!==a["is"+l(p)]?a["is"+l(p)]:void 0}r.push(e.expression.resolve.apply(this,[i,n,s,o]))}},{type:e.expression.type.key.brackets,regex:/^\[([^\]\:]*)\]/,next:e.expression.set.operations_extended.concat([e.expression.type.parameter.start]),compile:function(t,r,n){var o=t.match[1];delete t.value,delete t.match,t.stack=e.expression.compile({value:o}).stack,n.push(t)},parse:function(t,r,n,o){var i,s=t.params&&e.expression.parse.apply(this,[t.params,n]),p=e.expression.parse.apply(this,[t.stack,n]),a=r.pop();if(null===a||void 0===a){if(this.options.strict_variables)throw new e.Error("Can't access a key "+p+" on an null or undefined object.");return null}i="object"==typeof a&&p in a?a[p]:null,r.push(e.expression.resolve.apply(this,[i,a,s,o]))}},{type:e.expression.type._null,regex:/^(null|NULL|none|NONE)/,next:e.expression.set.operations,compile:function(e,t,r){delete e.match,e.value=null,r.push(e)},parse:e.expression.fn.parse.push_value},{type:e.expression.type.context,regex:/^_context/,next:e.expression.set.operations_extended.concat([e.expression.type.parameter.start]),compile:e.expression.fn.compile.push,parse:function(e,t,r){t.push(r)}},{type:e.expression.type.bool,regex:/^(true|TRUE|false|FALSE)/,next:e.expression.set.operations,compile:function(e,t,r){e.value="true"===e.match[0].toLowerCase(),delete e.match,r.push(e)},parse:e.expression.fn.parse.push_value}],e.expression.resolve=function(t,r,n,o){if("function"==typeof t){if(o&&o.type===e.expression.type.parameter.end){var i=!0;n=o.params&&e.expression.parse.apply(this,[o.params,r,i]),o.cleanup=!0}return t.apply(r,n||[])}return t},e.expression.handler={},e.expression.extendType=function(t){e.expression.type[t]="Twig.expression.type."+t},e.expression.extend=function(t){if(!t.type)throw new e.Error("Unable to extend logic definition. No type provided for "+t);e.expression.handler[t.type]=t};for(;e.expression.definitions.length>0;)e.expression.extend(e.expression.definitions.shift());return e.expression.tokenize=function(t){var r,n,o,i,s,p,a=[],l=0,c=null,u=[];for(p=function(){var t=Array.prototype.slice.apply(arguments);t.pop(),t.pop();return e.log.trace("Twig.expression.tokenize","Matched a ",r," regular expression of ",t),c&&e.indexOf(c,r)<0?(u.push(r+" cannot follow a "+a[a.length-1].type+" at template:"+l+" near '"+t[0].substring(0,20)+"...'"),t[0]):e.expression.handler[r].validate&&!e.expression.handler[r].validate(t,a)?t[0]:(u=[],a.push({type:r,value:t[0],match:t}),s=!0,c=i,l+=t[0].length,e.expression.handler[r].transform?e.expression.handler[r].transform(t,a):"")},e.log.debug("Twig.expression.tokenize","Tokenizing expression ",t);t.length>0;){t=t.trim();for(r in e.expression.handler)if(e.expression.handler.hasOwnProperty(r)){for(i=e.expression.handler[r].next,n=e.expression.handler[r].regex,o=n instanceof Array?n:[n],s=!1;o.length>0;)n=o.pop(),t=t.replace(n,p);if(s)break}if(!s)throw u.length>0?new e.Error(u.join(" OR ")):new e.Error("Unable to parse '"+t+"' at template position"+l)}return e.log.trace("Twig.expression.tokenize","Tokenized to ",a),a},e.expression.compile=function(t){var r=t.value,n=e.expression.tokenize(r),o=null,i=[],s=[],p=null;for(e.log.trace("Twig.expression.compile: ","Compiling ",r);n.length>0;)o=n.shift(),p=e.expression.handler[o.type],e.log.trace("Twig.expression.compile: ","Compiling ",o),p.compile&&p.compile(o,s,i),e.log.trace("Twig.expression.compile: ","Stack is",s),e.log.trace("Twig.expression.compile: ","Output is",i);for(;s.length>0;)i.push(s.pop());return e.log.trace("Twig.expression.compile: ","Final output is",i),t.stack=i,delete t.value,t},e.expression.parse=function(t,r,n){var o=this;t instanceof Array||(t=[t]);var i,s=[],p=null,a=[];if(e.forEach(t,function(n,l){n.cleanup||(t.length>l+1&&(i=t[l+1]),p=e.expression.handler[n.type],p.parse&&p.parse.apply(o,[n,s,r,i]),r.loop&&n.type===e.expression.type.operator.binary&&a.push(n))}),e.forEach(a,function(e){e.params&&e.key&&delete e.key}),n){for(var l=[];s.length>0;)l.unshift(s.pop());s.push(l)}return s.pop()},e}},function(e,t){e.exports=function(e){"use strict";e.expression.operator={leftToRight:"leftToRight",rightToLeft:"rightToLeft"};var t=function(e,t){if(void 0===t||null===t)return null;if(void 0!==t.indexOf)return e===t||""!==e&&t.indexOf(e)>-1;var r;for(r in t)if(t.hasOwnProperty(r)&&t[r]===e)return!0;return!1};return e.expression.operator.lookup=function(t,r){switch(t){case"..":r.precidence=20,r.associativity=e.expression.operator.leftToRight;break;case",":r.precidence=18,r.associativity=e.expression.operator.leftToRight;break;case"?:":case"?":case":":r.precidence=16,r.associativity=e.expression.operator.rightToLeft;break;case"or":r.precidence=14,r.associativity=e.expression.operator.leftToRight;break;case"and":r.precidence=13,r.associativity=e.expression.operator.leftToRight;break;case"==":case"!=":r.precidence=9,r.associativity=e.expression.operator.leftToRight;break;case"<":case"<=":case">":case">=":case"not in":case"in":r.precidence=8,r.associativity=e.expression.operator.leftToRight;break;case"~":case"+":case"-":r.precidence=6,r.associativity=e.expression.operator.leftToRight;break;case"//":case"**":case"*":case"/":case"%":r.precidence=5,r.associativity=e.expression.operator.leftToRight;break;case"not":r.precidence=3,r.associativity=e.expression.operator.rightToLeft;break;default:throw new e.Error("Failed to lookup operator: "+t+" is an unknown operator.")}return r.operator=t,r},e.expression.operator.parse=function(r,n){e.log.trace("Twig.expression.operator.parse: ","Handling ",r);var o,i,s;switch("?"===r&&(s=n.pop()),i=n.pop(),o=n.pop(),"in"!==r&&"not in"!==r&&(o&&Array.isArray(o)&&(o=o.length),i&&Array.isArray(i)&&(i=i.length)),r){case":":break;case"?:":o?n.push(o):n.push(i);break;case"?":void 0===o&&(o=i,i=s,s=void 0),o?n.push(i):n.push(s);break;case"+":i=parseFloat(i),o=parseFloat(o),n.push(o+i);break;case"-":i=parseFloat(i),o=parseFloat(o),n.push(o-i);break;case"*":i=parseFloat(i),o=parseFloat(o),n.push(o*i);break;case"/":i=parseFloat(i),o=parseFloat(o),n.push(o/i);break;case"//":i=parseFloat(i),o=parseFloat(o),n.push(Math.floor(o/i));break;case"%":i=parseFloat(i),o=parseFloat(o),n.push(o%i);break;case"~":n.push((null!=o?o.toString():"")+(null!=i?i.toString():""));break;case"not":case"!":n.push(!i);break;case"<":n.push(i>o);break;case"<=":n.push(i>=o);break;case">":n.push(o>i);break;case">=":n.push(o>=i);break;case"===":n.push(o===i);break;case"==":n.push(o==i);break;case"!==":n.push(o!==i);break;case"!=":n.push(o!=i);break;case"or":n.push(o||i);break;case"and":n.push(o&&i);break;case"**":n.push(Math.pow(o,i));break;case"not in":n.push(!t(o,i));break;case"in":n.push(t(o,i));break;case"..":n.push(e.functions.range(o,i));break;default:throw new e.Error("Failed to parse operator: "+r+" is an unknown operator.")}},e}},function(e,t){e.exports=function(e){function t(e,t){var r=Object.prototype.toString.call(t).slice(8,-1);return void 0!==t&&null!==t&&r===e}return e.filters={upper:function(e){return"string"!=typeof e?e:e.toUpperCase()},lower:function(e){return"string"!=typeof e?e:e.toLowerCase()},capitalize:function(e){return"string"!=typeof e?e:e.substr(0,1).toUpperCase()+e.toLowerCase().substr(1)},title:function(e){return"string"!=typeof e?e:e.toLowerCase().replace(/(^|\s)([a-z])/g,function(e,t,r){return t+r.toUpperCase()})},length:function(t){return e.lib.is("Array",t)||"string"==typeof t?t.length:e.lib.is("Object",t)?void 0===t._keys?Object.keys(t).length:t._keys.length:0},reverse:function(e){if(t("Array",e))return e.reverse();if(t("String",e))return e.split("").reverse().join("");if(t("Object",e)){var r=e._keys||Object.keys(e).reverse();return e._keys=r,e}},sort:function(e){if(t("Array",e))return e.sort();if(t("Object",e)){delete e._keys;var r=Object.keys(e),n=r.sort(function(t,r){ var n;return e[t]>e[r]==!(e[t]<=e[r])?e[t]>e[r]?1:e[t]<e[r]?-1:0:isNaN(n=parseFloat(e[t]))||isNaN(b1=parseFloat(e[r]))?"string"==typeof e[t]?e[t]>e[r].toString()?1:e[t]<e[r].toString()?-1:0:"string"==typeof e[r]?e[t].toString()>e[r]?1:e[t].toString()<e[r]?-1:0:null:n>b1?1:n<b1?-1:0});return e._keys=n,e}},keys:function(t){if(void 0!==t&&null!==t){var r=t._keys||Object.keys(t),n=[];return e.forEach(r,function(e){"_keys"!==e&&t.hasOwnProperty(e)&&n.push(e)}),n}},url_encode:function(e){if(void 0!==e&&null!==e){var t=encodeURIComponent(e);return t=t.replace("'","%27")}},join:function(r,n){if(void 0!==r&&null!==r){var o="",i=[],s=null;return n&&n[0]&&(o=n[0]),t("Array",r)?i=r:(s=r._keys||Object.keys(r),e.forEach(s,function(e){"_keys"!==e&&r.hasOwnProperty(e)&&i.push(r[e])})),i.join(o)}},"default":function(t,r){if(void 0!==r&&r.length>1)throw new e.Error("default filter expects one argument");return void 0===t||null===t||""===t?void 0===r?"":r[0]:t},json_encode:function(r){if(void 0===r||null===r)return"null";if("object"==typeof r&&t("Array",r))return o=[],e.forEach(r,function(t){o.push(e.filters.json_encode(t))}),"["+o.join(",")+"]";if("object"==typeof r){var n=r._keys||Object.keys(r),o=[];return e.forEach(n,function(t){o.push(JSON.stringify(t)+":"+e.filters.json_encode(r[t]))}),"{"+o.join(",")+"}"}return JSON.stringify(r)},merge:function(r,n){var o=[],i=0,s=[];if(t("Array",r)?e.forEach(n,function(e){t("Array",e)||(o={})}):o={},t("Array",o)||(o._keys=[]),t("Array",r)?e.forEach(r,function(e){o._keys&&o._keys.push(i),o[i]=e,i++}):(s=r._keys||Object.keys(r),e.forEach(s,function(e){o[e]=r[e],o._keys.push(e);var t=parseInt(e,10);!isNaN(t)&&t>=i&&(i=t+1)})),e.forEach(n,function(r){t("Array",r)?e.forEach(r,function(e){o._keys&&o._keys.push(i),o[i]=e,i++}):(s=r._keys||Object.keys(r),e.forEach(s,function(e){o[e]||o._keys.push(e),o[e]=r[e];var t=parseInt(e,10);!isNaN(t)&&t>=i&&(i=t+1)}))}),0===n.length)throw new e.Error("Filter merge expects at least one parameter");return o},date:function(t,r){var n=e.functions.date(t),o=r&&r.length?r[0]:"F j, Y H:i";return e.lib.date(o,n)},date_modify:function(t,r){if(void 0!==t&&null!==t){if(void 0===r||1!==r.length)throw new e.Error("date_modify filter expects 1 argument");var n,o=r[0];return e.lib.is("Date",t)&&(n=e.lib.strtotime(o,t.getTime()/1e3)),e.lib.is("String",t)&&(n=e.lib.strtotime(o,e.lib.strtotime(t))),e.lib.is("Number",t)&&(n=e.lib.strtotime(o,t)),new Date(1e3*n)}},replace:function(t,r){if(void 0!==t&&null!==t){var n,o=r[0];for(n in o)o.hasOwnProperty(n)&&"_keys"!==n&&(t=e.lib.replaceAll(t,n,o[n]));return t}},format:function(t,r){return void 0!==t&&null!==t?e.lib.vsprintf(t,r):void 0},striptags:function(t){return void 0!==t&&null!==t?e.lib.strip_tags(t):void 0},escape:function(t,r){if(void 0!==t&&null!==t){var n="html";if(r&&r.length&&r[0]!==!0&&(n=r[0]),"html"==n){var o=t.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;");return e.Markup(o,"html")}if("js"==n){for(var o=t.toString(),i="",s=0;s<o.length;s++)if(o[s].match(/^[a-zA-Z0-9,\._]$/))i+=o[s];else{var p=o.charCodeAt(s);i+=128>p?"\\x"+p.toString(16).toUpperCase():e.lib.sprintf("\\u%04s",p.toString(16).toUpperCase())}return e.Markup(i,"js")}if("css"==n){for(var o=t.toString(),i="",s=0;s<o.length;s++)if(o[s].match(/^[a-zA-Z0-9]$/))i+=o[s];else{var p=o.charCodeAt(s);i+="\\"+p.toString(16).toUpperCase()+" "}return e.Markup(i,"css")}if("url"==n){var i=e.filters.url_encode(t);return e.Markup(i,"url")}if("html_attr"==n){for(var o=t.toString(),i="",s=0;s<o.length;s++)if(o[s].match(/^[a-zA-Z0-9,\.\-_]$/))i+=o[s];else if(o[s].match(/^[&<>"]$/))i+=o[s].replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");else{var p=o.charCodeAt(s);i+=31>=p&&9!=p&&10!=p&&13!=p?"&#xFFFD;":128>p?e.lib.sprintf("&#x%02s;",p.toString(16).toUpperCase()):e.lib.sprintf("&#x%04s;",p.toString(16).toUpperCase())}return e.Markup(i,"html_attr")}throw new e.Error("escape strategy unsupported")}},e:function(t,r){return e.filters.escape(t,r)},nl2br:function(t){if(void 0!==t&&null!==t){var r="BACKSLASH_n_replace",n="<br />"+r;return t=e.filters.escape(t).replace(/\r\n/g,n).replace(/\r/g,n).replace(/\n/g,n),t=e.lib.replaceAll(t,r,"\n"),e.Markup(t)}},number_format:function(e,t){var r=e,n=t&&t[0]?t[0]:void 0,o=t&&void 0!==t[1]?t[1]:".",i=t&&void 0!==t[2]?t[2]:",";r=(r+"").replace(/[^0-9+\-Ee.]/g,"");var s=isFinite(+r)?+r:0,p=isFinite(+n)?Math.abs(n):0,a="",l=function(e,t){var r=Math.pow(10,t);return""+Math.round(e*r)/r};return a=(p?l(s,p):""+Math.round(s)).split("."),a[0].length>3&&(a[0]=a[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,i)),(a[1]||"").length<p&&(a[1]=a[1]||"",a[1]+=new Array(p-a[1].length+1).join("0")),a.join(o)},trim:function(t,r){if(void 0!==t&&null!==t){var n,o=e.filters.escape(""+t);n=r&&r[0]?""+r[0]:" \n\r \f\x0B            ​\u2028\u2029 ";for(var i=0;i<o.length;i++)if(-1===n.indexOf(o.charAt(i))){o=o.substring(i);break}for(i=o.length-1;i>=0;i--)if(-1===n.indexOf(o.charAt(i))){o=o.substring(0,i+1);break}return-1===n.indexOf(o.charAt(0))?o:""}},truncate:function(e,t){var r=30,n=!1,o="...";if(e+="",t&&(t[0]&&(r=t[0]),t[1]&&(n=t[1]),t[2]&&(o=t[2])),e.length>r){if(n&&(r=e.indexOf(" ",r),-1===r))return e;e=e.substr(0,r)+o}return e},slice:function(t,r){if(void 0!==t&&null!==t){if(void 0===r||r.length<1)throw new e.Error("slice filter expects at least 1 argument");var n=r[0]||0,o=r.length>1?r[1]:t.length,i=n>=0?n:Math.max(t.length+n,0);if(e.lib.is("Array",t)){for(var s=[],p=i;i+o>p&&p<t.length;p++)s.push(t[p]);return s}if(e.lib.is("String",t))return t.substr(i,o);throw new e.Error("slice filter expects value to be an array or string")}},abs:function(e){return void 0!==e&&null!==e?Math.abs(e):void 0},first:function(e){if(t("Array",e))return e[0];if(t("Object",e)){if("_keys"in e)return e[e._keys[0]]}else if("string"==typeof e)return e.substr(0,1)},split:function(t,r){if(void 0!==t&&null!==t){if(void 0===r||r.length<1||r.length>2)throw new e.Error("split filter expects 1 or 2 argument");if(e.lib.is("String",t)){var n=r[0],o=r[1],i=t.split(n);if(void 0===o)return i;if(0>o)return t.split(n,i.length+o);var s=[];if(""==n)for(;i.length>0;){for(var p="",a=0;o>a&&i.length>0;a++)p+=i.shift();s.push(p)}else{for(var a=0;o-1>a&&i.length>0;a++)s.push(i.shift());i.length>0&&s.push(i.join(n))}return s}throw new e.Error("split filter expects value to be a string")}},last:function(t){if(e.lib.is("Object",t)){var r;return r=void 0===t._keys?Object.keys(t):t._keys,t[r[r.length-1]]}return t[t.length-1]},raw:function(t){return e.Markup(t)},batch:function(t,r){var n,o,i,s=r.shift(),p=r.shift();if(!e.lib.is("Array",t))throw new e.Error("batch filter expects items to be an array");if(!e.lib.is("Number",s))throw new e.Error("batch filter expects size to be a number");if(s=Math.ceil(s),n=e.lib.chunkArray(t,s),p&&t.length%s!=0){for(o=n.pop(),i=s-o.length;i--;)o.push(p);n.push(o)}return n},round:function(t,r){r=r||[];var n=r.length>0?r[0]:0,o=r.length>1?r[1]:"common";if(t=parseFloat(t),n&&!e.lib.is("Number",n))throw new e.Error("round filter expects precision to be a number");if("common"===o)return e.lib.round(t,n);if(!e.lib.is("Function",Math[o]))throw new e.Error("round filter expects method to be 'floor', 'ceil', or 'common'");return Math[o](t*Math.pow(10,n))/Math.pow(10,n)}},e.filter=function(t,r,n){if(!e.filters[t])throw"Unable to find filter "+t;return e.filters[t].apply(this,[r,n])},e.filter.extend=function(t,r){e.filters[t]=r},e}},function(e,t){e.exports=function(t){var r='Template "{name}" is not defined.';return t.functions={range:function(e,t,r){var n,o,i,s=[],p=r||1,a=!1;if(isNaN(e)||isNaN(t)?isNaN(e)&&isNaN(t)?(a=!0,n=e.charCodeAt(0),o=t.charCodeAt(0)):(n=isNaN(e)?0:e,o=isNaN(t)?0:t):(n=parseInt(e,10),o=parseInt(t,10)),i=!(n>o))for(;o>=n;)s.push(a?String.fromCharCode(n):n),n+=p;else for(;n>=o;)s.push(a?String.fromCharCode(n):n),n-=p;return s},cycle:function(e,t){var r=t%e.length;return e[r]},dump:function(){var e="\n",r=" ",n=0,o="",i=Array.prototype.slice.call(arguments),s=function(e){for(var t="";e>0;)e--,t+=r;return t},p=function(t){o+=s(n),"object"==typeof t?a(t):"function"==typeof t?o+="function()"+e:"string"==typeof t?o+="string("+t.length+') "'+t+'"'+e:"number"==typeof t?o+="number("+t+")"+e:"boolean"==typeof t&&(o+="bool("+t+")"+e)},a=function(t){var r;if(null===t)o+="NULL"+e;else if(void 0===t)o+="undefined"+e;else if("object"==typeof t){o+=s(n)+typeof t,n++,o+="("+function(e){var t,r=0;for(t in e)e.hasOwnProperty(t)&&r++;return r}(t)+") {"+e;for(r in t)o+=s(n)+"["+r+"]=> "+e,p(t[r]);n--,o+=s(n)+"}"+e}else p(t)};return 0==i.length&&i.push(this.context),t.forEach(i,function(e){a(e)}),o},date:function(e,r){var n;if(void 0===e||null===e||""===e)n=new Date;else if(t.lib.is("Date",e))n=e;else if(t.lib.is("String",e))n=e.match(/^[0-9]+$/)?new Date(1e3*e):new Date(1e3*t.lib.strtotime(e));else{if(!t.lib.is("Number",e))throw new t.Error("Unable to parse date "+e);n=new Date(1e3*e)}return n},block:function(e){return this.originalBlockTokens[e]?t.logic.parse.apply(this,[this.originalBlockTokens[e],this.context]).output:this.blocks[e]},parent:function(){return t.placeholders.parent},attribute:function(e,r,n){return t.lib.is("Object",e)&&e.hasOwnProperty(r)?"function"==typeof e[r]?e[r].apply(void 0,n):e[r]:e[r]||void 0},max:function(e){return t.lib.is("Object",e)?(delete e._keys,t.lib.max(e)):t.lib.max.apply(null,arguments)},min:function(e){return t.lib.is("Object",e)?(delete e._keys,t.lib.min(e)):t.lib.min.apply(null,arguments)},template_from_string:function(e){return void 0===e&&(e=""),t.Templates.parsers.twig({options:this.options,data:e})},random:function(e){function r(e){var t=Math.floor(Math.random()*n),r=[0,e],o=Math.min.apply(null,r),i=Math.max.apply(null,r);return o+Math.floor((i-o+1)*t/n)}var n=2147483648;if(t.lib.is("Number",e))return r(e);if(t.lib.is("String",e))return e.charAt(r(e.length-1));if(t.lib.is("Array",e))return e[r(e.length-1)];if(t.lib.is("Object",e)){var o=Object.keys(e);return e[o[r(o.length-1)]]}return r(n-1)},source:function(n,o){var i,s,p,a=!1,l="undefined"!=typeof e&&"undefined"!=typeof e.exports&&"undefined"==typeof window;l?(s="fs",p=__dirname+"/"+n):(s="ajax",p=n);var c={id:n,path:p,method:s,parser:"source",async:!1,fetchTemplateSource:!0};"undefined"==typeof o&&(o=!1);try{i=t.Templates.loadRemote(n,c),"undefined"==typeof i||null===i?i="":a=!0}catch(u){t.log.debug("Twig.functions.source: ","Problem loading template ",u)}return a||o?i:r.replace("{name}",n)}},t._function=function(e,r,n){if(!t.functions[e])throw"Unable to find function "+e;return t.functions[e](r,n)},t._function.extend=function(e,r){t.functions[e]=r},t}},function(e,t,r){e.exports=function(e){return e.lib={},e.lib.sprintf=r(8),e.lib.vsprintf=r(9),e.lib.round=r(10),e.lib.max=r(11),e.lib.min=r(12),e.lib.strip_tags=r(13),e.lib.strtotime=r(14),e.lib.date=r(15),e.lib.is=function(e,t){var r=Object.prototype.toString.call(t).slice(8,-1);return void 0!==t&&null!==t&&r===e},e.lib.copy=function(e){var t,r={};for(t in e)r[t]=e[t];return r},e.lib.replaceAll=function(e,t,r){return e.split(t).join(r)},e.lib.chunkArray=function(t,r){var n=[],o=0,i=t.length;if(1>r||!e.lib.is("Array",t))return[];for(;i>o;)n.push(t.slice(o,o+=r));return n},e}},function(e,t){function r(){var e=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,t=arguments,r=0,n=t[r++],o=function(e,t,r,n){r||(r=" ");var o=e.length>=t?"":new Array(1+t-e.length>>>0).join(r);return n?e+o:o+e},i=function(e,t,r,n,i,s){var p=n-e.length;return p>0&&(e=r||!i?o(e,n,s,r):e.slice(0,t.length)+o("",p,"0",!0)+e.slice(t.length)),e},s=function(e,t,r,n,s,p,a){var l=e>>>0;return r=r&&l&&{2:"0b",8:"0",16:"0x"}[t]||"",e=r+o(l.toString(t),p||0,"0",!1),i(e,r,n,s,a)},p=function(e,t,r,n,o,s){return null!=n&&(e=e.slice(0,n)),i(e,"",t,r,o,s)},a=function(e,n,a,l,c,u,f){var h,d,y,g,m;if("%%"===e)return"%";for(var x=!1,v="",b=!1,w=!1,k=" ",_=a.length,T=0;a&&_>T;T++)switch(a.charAt(T)){case" ":v=" ";break;case"+":v="+";break;case"-":x=!0;break;case"'":k=a.charAt(T+1);break;case"0":b=!0,k="0";break;case"#":w=!0}if(l=l?"*"===l?+t[r++]:"*"==l.charAt(0)?+t[l.slice(1,-1)]:+l:0,0>l&&(l=-l,x=!0),!isFinite(l))throw new Error("sprintf: (minimum-)width must be finite");switch(u=u?"*"===u?+t[r++]:"*"==u.charAt(0)?+t[u.slice(1,-1)]:+u:"fFeE".indexOf(f)>-1?6:"d"===f?0:void 0,m=n?t[n.slice(0,-1)]:t[r++],f){case"s":return p(String(m),x,l,u,b,k);case"c":return p(String.fromCharCode(+m),x,l,u,b);case"b":return s(m,2,w,x,l,u,b);case"o":return s(m,8,w,x,l,u,b);case"x":return s(m,16,w,x,l,u,b);case"X":return s(m,16,w,x,l,u,b).toUpperCase();case"u":return s(m,10,w,x,l,u,b);case"i":case"d":return h=+m||0,h=Math.round(h-h%1),d=0>h?"-":v,m=d+o(String(Math.abs(h)),u,"0",!1),i(m,d,x,l,b);case"e":case"E":case"f":case"F":case"g":case"G":return h=+m,d=0>h?"-":v,y=["toExponential","toFixed","toPrecision"]["efg".indexOf(f.toLowerCase())],g=["toString","toUpperCase"]["eEfFgG".indexOf(f)%2],m=d+Math.abs(h)[y](u),i(m,d,x,l,b)[g]();default:return e}};return n.replace(e,a)}e.exports=r},function(e,t){function r(e,t){return this.sprintf.apply(this,[e].concat(t))}e.exports=r},function(e,t){function r(e,t,r){var n,o,i,s;if(t|=0,n=Math.pow(10,t),e*=n,s=e>0|-(0>e),i=e%1===.5*s,o=Math.floor(e),i)switch(r){case"PHP_ROUND_HALF_DOWN":e=o+(0>s);break;case"PHP_ROUND_HALF_EVEN":e=o+o%2*s;break;case"PHP_ROUND_HALF_ODD":e=o+!(o%2);break;default:e=o+(s>0)}return(i?e:Math.round(e))/n}e.exports=r},function(e,t){function r(){var e,t,r=0,n=0,o=arguments,i=o.length,s=function(e){if("[object Array]"===Object.prototype.toString.call(e))return e;var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t};if(_compare=function(e,t){var r=0,n=0,o=0,i=0,p=0;if(e===t)return 0;if("object"==typeof e){if("object"==typeof t){if(e=s(e),t=s(t),p=e.length,i=t.length,i>p)return 1;if(p>i)return-1;for(r=0,n=p;n>r;++r){if(o=_compare(e[r],t[r]),1==o)return 1;if(-1==o)return-1}return 0}return-1}return"object"==typeof t?1:isNaN(t)&&!isNaN(e)?0==e?0:0>e?1:-1:isNaN(e)&&!isNaN(t)?0==t?0:t>0?1:-1:t==e?0:t>e?1:-1},0===i)throw new Error("At least one value should be passed to max()");if(1===i){if("object"!=typeof o[0])throw new Error("Wrong parameter count for max()");if(e=s(o[0]),0===e.length)throw new Error("Array must contain at least one element for max()")}else e=o;for(t=e[0],r=1,n=e.length;n>r;++r)1==_compare(t,e[r])&&(t=e[r]);return t}e.exports=r},function(e,t){function r(){var e,t,r=0,n=0,o=arguments,i=o.length,s=function(e){if("[object Array]"===Object.prototype.toString.call(e))return e;var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t};if(_compare=function(e,t){var r=0,n=0,o=0,i=0,p=0;if(e===t)return 0;if("object"==typeof e){if("object"==typeof t){if(e=s(e),t=s(t),p=e.length,i=t.length,i>p)return 1;if(p>i)return-1;for(r=0,n=p;n>r;++r){if(o=_compare(e[r],t[r]),1==o)return 1;if(-1==o)return-1}return 0}return-1}return"object"==typeof t?1:isNaN(t)&&!isNaN(e)?0==e?0:0>e?1:-1:isNaN(e)&&!isNaN(t)?0==t?0:t>0?1:-1:t==e?0:t>e?1:-1},0===i)throw new Error("At least one value should be passed to min()");if(1===i){if("object"!=typeof o[0])throw new Error("Wrong parameter count for min()");if(e=s(o[0]),0===e.length)throw new Error("Array must contain at least one element for min()")}else e=o;for(t=e[0],r=1,n=e.length;n>r;++r)-1==_compare(t,e[r])&&(t=e[r]);return t}e.exports=r},function(e,t){function r(e,t){t=(((t||"")+"").toLowerCase().match(/<[a-z][a-z0-9]*>/g)||[]).join("");var r=/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,n=/<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;return e.replace(n,"").replace(r,function(e,r){return t.indexOf("<"+r.toLowerCase()+">")>-1?e:""})}e.exports=r},function(e,t){function r(e,t){function r(e,t,r){var n,o=l[t];"undefined"!=typeof o&&(n=o-a.getDay(),0===n?n=7*r:n>0&&"last"===e?n-=7:0>n&&"next"===e&&(n+=7),a.setDate(a.getDate()+n))}function n(e){var t=e.split(" "),n=t[0],o=t[1].substring(0,3),i=/\d+/.test(n),s="ago"===t[2],p=("last"===n?-1:1)*(s?-1:1);if(i&&(p*=parseInt(n,10)),c.hasOwnProperty(o)&&!t[1].match(/^mon(day|\.)?$/i))return a["set"+c[o]](a["get"+c[o]]()+p);if("wee"===o)return a.setDate(a.getDate()+7*p);if("next"===n||"last"===n)r(n,o,p);else if(!i)return!1;return!0}var o,i,s,p,a,l,c,u,f,h,d,y=!1;if(!e)return y;if(e=e.replace(/^\s+|\s+$/g,"").replace(/\s{2,}/g," ").replace(/[\t\r\n]/g,"").toLowerCase(),i=e.match(/^(\d{1,4})([\-\.\/\:])(\d{1,2})([\-\.\/\:])(\d{1,4})(?:\s(\d{1,2}):(\d{2})?:?(\d{2})?)?(?:\s([A-Z]+)?)?$/),i&&i[2]===i[4])if(i[1]>1901)switch(i[2]){case"-":return i[3]>12||i[5]>31?y:new Date(i[1],parseInt(i[3],10)-1,i[5],i[6]||0,i[7]||0,i[8]||0,i[9]||0)/1e3;case".":return y;case"/":return i[3]>12||i[5]>31?y:new Date(i[1],parseInt(i[3],10)-1,i[5],i[6]||0,i[7]||0,i[8]||0,i[9]||0)/1e3}else if(i[5]>1901)switch(i[2]){case"-":return i[3]>12||i[1]>31?y:new Date(i[5],parseInt(i[3],10)-1,i[1],i[6]||0,i[7]||0,i[8]||0,i[9]||0)/1e3;case".":return i[3]>12||i[1]>31?y:new Date(i[5],parseInt(i[3],10)-1,i[1],i[6]||0,i[7]||0,i[8]||0,i[9]||0)/1e3;case"/":return i[1]>12||i[3]>31?y:new Date(i[5],parseInt(i[1],10)-1,i[3],i[6]||0,i[7]||0,i[8]||0,i[9]||0)/1e3}else switch(i[2]){case"-":return i[3]>12||i[5]>31||i[1]<70&&i[1]>38?y:(p=i[1]>=0&&i[1]<=38?+i[1]+2e3:i[1],new Date(p,parseInt(i[3],10)-1,i[5],i[6]||0,i[7]||0,i[8]||0,i[9]||0)/1e3);case".":return i[5]>=70?i[3]>12||i[1]>31